;= COMANDOS CALL BASIC PARA TECLADO PC CON GRAFICOS EUROPEOS =
;
ORG &H4000
;== DATOS CABECERA:=
DB "AB"			;INDICADOR DE EXPANSION
DW INIT			;APUNTA A RUTINA DE INICIALIZACION
DW STATEMENT		;APUNTA A RUTINA DE RECONOCIMIENTO DE COMANDOS
DW 0			;NO DEVICE
DW 0			;NO TEXT
DS 6,0			;RESERVADOS
DS 496,255		;RESERVADO, EN ALTA, PARA OCUPAR HASTA &H41FF.
;
DB " (c)PADIAL/ZORITA 1999 "
;
INIT:	;PONER NUEVA DIR DE CARACTERES, Y IMPRIMIR UN MENSAJE
	;
	LD HL,GRAFS+7;SALTA CABECERA BLOAD
	CALL FIXCHR
	LD HL,MES0	;IMPRIME UN MENSAJE
	CALL PRTMES	;
	XOR A
	RET
;
STATEMENT:		;RUTINA DE RECONOCIMIENTO Y EJECUCION DE COMANDOS
	EI
	PUSH HL
	LD HL,INDEX
RELOP:	LD DE,&HFD89
CMPB:	LD A,(DE)
	CP (HL)
	JR NZ,DIF1
	INC DE
	INC HL
	AND A
	JR NZ,CMPB
	LD E,(HL)
	INC HL
	LD D,(HL)
	POP HL
	CALL SALTO
	AND A
	RET
SALTO:	PUSH DE
	RET
DIF1:	LD C,&HFF
	XOR A
	CPIR
	INC HL
	INC HL
	CP (HL)
	JR NZ,RELOP
	POP HL
	SCF
	RET
;
;==== LISTA DE COMANDOS ===
;
INDEX:	DB "PCK",0
	DW DIR1
	DB "PCKINFO",0
	DW DIR2
	DB "PCKIOS",0
	DW DIR3
	DB "HELP",0
	DW RHELP
	DB "INIT",0
	DW RINIT
	DB "SPAIN",0
	DW RSPAIN
	DB "JAPAN",0
	DW RJAPAN
	DB "INTERNAL",0
	DW RINTER
	DB "MIXED",0
	DW RMIXED
	DB "SPECIAL",0
	DW RSPEC
	DW 0
;
RINIT:	PUSH HL
	CALL INIT
	POP HL
	XOR A
	RET
	;
RSPAIN:	PUSH HL
	LD HL,GRAFS+7
RCC:	CALL FIXCHR
RCC2:	LD A,(&HFCAF) ;REINICIA SCREEN SI 0 O 1
	CP 2
	CALL C,&H5F;SCREEN
	POP HL
	XOR A
	RET
RJAPAN:	PUSH HL
	LD HL,GRAFJ+7
	JR RCC
RMIXED:	PUSH HL
	LD HL,GRAFM+7
	JR RCC
RSPEC:	PUSH HL
	LD HL,GRAFW+7
	JR RCC
RINTER:	PUSH HL
	LD A,(&HFCC1)
	LD (&HF91F),A
	LD HL,(&H0004)
	LD (&HF920),HL
	JR RCC2
;
RHELP:	LD DE,MESHLP	;IMPRIME AYUDA
	JR COMUN
DIR1:	LD DE,MES1	;IMPRIME MENSAJE MES1
	JR COMUN
DIR2:	LD DE,MES2	;IMPRIME MENSAJE MES2
	JR COMUN
DIR3:	LD DE,MES3	;IMPRIME MENSAJE MES3
	;
COMUN:	PUSH HL;HAY QUE GUARDAR HL PUES ES EL APUNTADOR DEL BASIC
	EX DE,HL
	CALL PRTMES
	POP HL
	XOR A;DESACTIVA CARRY AL SALIR, PARA NO DAR ERROR
	RET
;
FIXCHR:	;
	IN A,(&HA8)
	AND &B00001100
	RRCA
	RRCA
	LD E,A
	LD A,(&HFFFF)
	CPL
	AND &B00001100
	OR E
	OR 128;INDICA EXPANDIDO
	LD (&HF91F),A
	LD (&HF920),HL
	RET
;
;=== MENSAJES DE TEXTO ==
;
MES0:	;EL MENSAJE 0 COINCIDE CON EL UNO.
MES1:	DB "Teclado PC Instalado",13,10,0
MES2:	DB "Seleccionar Modelo de MSX y conexion sin cable",13,10
	DB "o DIRECTA en SWITCH de 8 posiciones",13,10,0
MES3:	DB "&HAA en WR peticion Fila Teclado",13,10
	DB "&HA9 en RD recoge Columna Teclado",13,10
	DB "&HAB en RD recoge SWITCH de Seleccion de Teclado",13,10,0
MESHLP:	DB "PROGRAMA ROM DE TECLADO MSX. (c) Padial,Zorita 1999",13,10
	DB "Lista de comandos CALL implementados:",13,10
	DB "- CALL HELP     Muestra esta informacion.",13,10
	DB "- CALL INIT     Ejecuta otra vez la rutina de inicializ.",13,10
	DB "- CALL SPAIN    Pone graf. espanol,(y hace SCREEN si 0 o 1).",13,10
	DB "- CALL SPECIAL  Pone espanol, con aspecto distinto.",13,10
	DB "- CALL JAPAN    Pone graf. japones.",13,10
	DB "- CALL MIXED    Pone japones+espanol (ASCII 1..15).",13,10
	DB "- CALL INTERNAL Repone graf. de la ROM del MSX.",13,10
	DB "- CALL PCK      Muestra mensaje inicial.",13,10
	DB "- CALL PCKINFO  Muestra info de seleccion de teclado.",13,10
	DB "- CALL PCKIOS   Muestra info de uso I/O del teclado.",13,10
	DB "<Fin>",13,10,0
;
PRTMES:	LD A,(HL)	;RUTINA SENCILLA QUE IMPRIME EL TEXTO
	AND A		; APUNTADO POR HL,HASTA ENCONTRAR UN CERO.
	RET Z
	RST &H18	;USA LLAMADA &H18 DE LA BIOS PRINCIPAL
	INC HL
	JR PRTMES
;
GRAFS:	FDATA "SPAIN   CHR"
GRAFJ:	FDATA "JAPAN   CHR"
GRAFM:	FDATA "MIXED   CHR"
GRAFW:	FDATA "WINSP   CHR"
;
END
