Specifications

CONSTRUCTION
03CA 3A 29 11 THIRL: LDA CHAR_NUMB
03CD CD 29 11 CALL CHAR_NUMB
03D0 5F MOV E,A
03D1 16 14 MVI D,14H
03D3 3A 28 11 LDA ROW_NUMB
03D6 17 RAL
03D7 17 RAL
03D8 17 RAL
03D9 17 RAL
03DA E6 F0 ANI F0H
03DC 47 MOV B,A
03DD 3E 0C MVI A,0CH
03DF B0 ORA B
03E0 32 00 18 STA 1800H ;STORE IN VIDEO LATCH
03E3 3A 25 11 LDA NIB_FL
03E6 1F RAR
03E7 DA F1 03 JC R
03EA 7E MOV A,M ;LOAD FIRST ONE BYTE
03EB 12 STAX D
03EC 23 INX H
03ED 7E MOV A,M
03EE 13 INX D
03EF 12 STAX D ;THEN NEXT BYTE
03F0 C9 RET
03F1 7E R: MOV A,M ;fills as for right nible store
03F2 0F RRC
03F3 0F RRC
03F4 0F RRC
03F5 0F RRC
03F6 E6 0F ANI 0FH
03F8 47 MOV B,A
03F9 1A LDAX D ;read video ram
03FA E6 F0 ANI F0H ;DO NOT DISTURB LEFT NIBBLE
03FC B0 ORA B
03FD 12 STAX D ;COMBINE AND STORE
03FE 13 INX D
03FF 7E MOV A,M ;NEXT BYTE NIBBLE BY NIBBLE
0400 07 RLC
0401 07 RLC
0402 07 RLC
0403 07 RLC
0404 E6 F0 ANI F0H
0406 47 MOV B,A
0407 23 INX H
0408 7E MOV A,M
0409 0F RRC
040A 0F RRC
040B 0F RRC
040C 0F RRC
040D E6 0F ANI 0FH
040F B0 ORA B
0410 12 STAX D ;STORE IN VIDEO RAM
0411 C9 RET
;KEYBOARD ROUTINE
0412 E5 KBD: PUSH H
0413 D5 PUSH D
0414 C5 PUSH B
0415 CD AE 04 CALL PULSE_READ
0418 79 MOV A,C
0419 FE 12 CPI 12H
041B CA 57 04 JZ SH_PRES
041E FE 59 CPI 59H ;IS IT SHIFTT RIGHT KEY?
0420 CA 57 04 JZ SH_PRES
0423 FE 2D CPI 2DH ;IS IT CONTROL KEY ?
0425 CA 5C 04 JZ CONTROL
0428 CD AE 04 PK: CALL PULSE_READ
042B 79 MOV A,C
042C FE F0 CPI F0H
042E C2 28 04 JNZ PK
0431 CD AE 04 CALL PULSE_READ
0434 FE 12 CPI 12H
0436 CC 4D 04 CZ SH_REL
0439 FE 59 CPI 59H
043B CC 4D 04 CZ SH_REL
043E FE 2D CPI 2DH
0440 CC 52 04 CZ CONT_REL
0443 CD 61 04 CALL LANGCH ;CHECK IF LANGUAGE CHANGING
F1.. KEYS PRESS’D
0446 CD 8B 04 CALL ASCII_CONV
0449 C1 POP B
044A D1 POP D
044B E1 POP H
044C C9 RET
044D 7A SH_REL: MOV A,D
044E E6 FE ANI FEH
0450 57 MOV D,A
0451 C9 RET
0452 7A CONT_REL: MOV A,D
0453 E6 FD ANI FDH
0455 57 MOV D,A
0456 C9 RET
0457 16 01 SH_PRES: MVI D,01H
0459 C3 28 04 JMP PK
045C 16 02 CONTROL:MVI D,02H
045E C3 28 04 JMP PK
0461 79 LANGCH: MOV A,C
0462 FE 05 CPI F1KEY
0464 CA 77 04 JZ L1
0467 FE D6 CPI F2KEY
0469 CA 7C 04 JZ L2
046C FE 04 CPI F3KEY
046E CA 81 04 JZ L3
0471 FE DC CPI F4KEY
0473 CA 86 04 JZ L4
0476 C9 RET
0477 3E 00 L1: MVI A,0 ;OUTPUT 0 ON leds
0479 D3 80 OUT 80H
047B C9 RET
047C 3E 01 L2: MVI A,1 1
047E D3 80 OUT 80H
0480 C9 RET
0481 3E 02 L3: MVI A,2 2
0483 D3 80 OUT 80H
0485 C9 RET
0486 3E 03 L4: MVI A,3 3
0488 D3 80 OUT 80H
048A C9 RET
048B 7A ASCII_C
ONV: MOV A,D
048C E6 01 ANI 01H
048E CA 9E 04 JZ SHIFT_CODE
0491 E6 02 ANI 02H
0493 CA A4 04 JZ CONT_CODE
0496 21 00 07 LXI H,TABLE1 ;TABLE1 FOR LOWER CASE
NORMAL
0499 79 SA1: MOV A,C
049A 85 ADD L
049B 6F MOV L,A
049C 7E MOV A,M
049D C9 RET
049E 21 80 07 SHIFT_
CODE: LXI H,TABLE2 ;TABLE2 FOR SHIFT CODE
04A1 C3 99 04 JMP SA1
04A4 21 00 07 CONT_
CODE: LXI H,TABLE1 ;TABLE3 FOR CONTROL CODE
04A7 79 MOV A,C
04A8 85 ADD L
04A9 6F MOV L,A
04AA 7E MOV A,M
04AB E6 3F ANI 3FH
04AD C9 RET
04AE 06 08 PULSE_
READ: MVI B,08H
04B0 0E 00 MVI C,00
04B2 DB 80 PP: IN 80H
04B4 E6 20 ANI 20H
04B6 C2 B2 04 JNZ PP
04B9 DB 80 QQ: IN 80H
04BB E6 20 ANI 20H
04BD CA B9 04 JZ QQ
04C0 DB 80 PK1: IN 80H
04C2 E6 20 ANI 20H
04C4 C2 C0 04 JNZ PK1
04C7 DB 80 IN 80H
04C9 17 RAL
04CA 17 RAL
04CB 17 RAL
04CC 17 RAL
04CD 79 MOV A,C
04CE 1F RAR
04CF 4F MOV C,A
04D0 DB 80 QQ1: IN 80H
04D2 E6 20 ANI 20H
04D4 CA D0 04 JZ QQ1
04D7 05 DCR B
04D8 C2 C0 04 JNZ PK1
04DB CD DF 04 CALL DELAY
04DE C9 RET
04DF 1E 20 DELAY: MVI E,20H
04E1 1D D1: DCR E
04E2 C2 E1 04 JNZ D1
04E5 C9 RET
;6845 INITIALISE ROUTINE
04E6 11 FB 04 CRTCON_
INIT: LXI D,TABLEINIT
04E9 06 00 MVI B,0
04EB 21 00 1C IP: LXI H,1C00H
04EE 70 MOV M,B
04EF 23 INX H
04F0 1A LDAX D
144