ASEG NAME ('TRANSLATE') .Z80 ; ASSEMBLE USING M80 TITLE KEYBOARD TRANSLATION FOR BIG BOARD ; The code changes included in TABLE are for use with WORDMASTER and a ; HONEYWELL keyboard model 104SD30. ORG 0100H ;START WHERE CP/M LIKES TO NOP NOP NOP START: LD BC,0100H ;MOVE 256 BYTES (1 PAGE) LD DE,0FE00H ;MOVE TRANSLATE TABLE TO $FE00 (NOT USED BY MON) LD HL,TABLE ;MOVE THE 10 BYTE TRANSLATE PROG. LDIR ;MOVE IT LD BC,000AH ;MOVE THE TRANSLATE TABLE LD DE,0FD00H ;MOVE IT TO $FD00 LD HL,PROG ;POINT TO TRANSLATE PROG LDIR ;MOVE IT LD BC,0003H ;MOVE 3 BYTE ZAP THAT OVERLAYS MONITOR LD DE,0F468H ;OVERLAY ADDR $F468 'A CALL TO INDEX' LD HL,ZAP ;POINT TO ZAP LDIR ;MOVE IT WITH OVERKILL EXIT: JP 0 ;RETURN TO CP/M ZAP: CALL PROG1 ;CALL THE TRANSLATE ROUTINE AT $FD00 PROG1 EQU 0FD00H PROG: PUSH HL ;SAVE LD H,0FEH ;LOAD PAGE ADDRESS OF TABLE LD L,C ;LOAD THE CHAR TO TRANSLATE FROM KEYBOARD LD C,(HL) ;DO THE TRANSLATE POP HL ;RESTORE INDEX EQU 0F474H ;CALL INDEX ROUTINE AT $F474 CALL INDEX ;CALL IT BECAUSE WE ZAPPED THIS INSTRUCTION RET ;NOW BACK TO MONITOR AND CONTINUE KEYBOARD I/O TABLE: DEFB 000H DEFB 001H DEFB 002H DEFB 003H DEFB 004H DEFB 005H DEFB 006H DEFB 007H DEFB 008H DEFB 009H DEFB 00AH DEFB 00BH DEFB 00CH DEFB 00DH DEFB 00EH DEFB 00FH DEFB 010H DEFB 011H DEFB 012H DEFB 013H DEFB 014H DEFB 015H DEFB 016H DEFB 017H DEFB 018H DEFB 019H DEFB 01AH DEFB 01BH DEFB 01CH DEFB 01DH DEFB 01EH DEFB 01FH DEFB 020H DEFB 021H DEFB 022H DEFB 023H DEFB 024H DEFB 025H DEFB 026H DEFB 027H DEFB 028H DEFB 029H DEFB 02AH DEFB 02BH DEFB 02CH DEFB 02DH DEFB 02EH DEFB 02FH DEFB 030H DEFB 031H DEFB 032H DEFB 033H DEFB 034H DEFB 035H DEFB 036H DEFB 037H DEFB 038H DEFB 039H DEFB 03AH DEFB 03BH DEFB 03CH DEFB 03DH DEFB 03EH DEFB 03FH DEFB 040H DEFB 041H DEFB 042H DEFB 043H DEFB 044H DEFB 045H DEFB 046H DEFB 047H DEFB 048H DEFB 049H DEFB 04AH DEFB 04BH DEFB 04CH DEFB 04DH DEFB 04EH DEFB 04FH DEFB 050H DEFB 051H DEFB 052H DEFB 053H DEFB 054H DEFB 055H DEFB 056H DEFB 057H DEFB 058H DEFB 059H DEFB 05AH DEFB 05BH DEFB 05CH DEFB 05DH DEFB 05EH DEFB 05FH DEFB 060H DEFB 061H DEFB 062H DEFB 063H DEFB 064H DEFB 065H DEFB 066H DEFB 067H DEFB 068H DEFB 069H DEFB 06AH DEFB 06BH DEFB 06CH DEFB 06DH DEFB 06EH DEFB 06FH DEFB 070H DEFB 071H DEFB 072H DEFB 073H DEFB 074H DEFB 075H DEFB 076H DEFB 077H DEFB 078H DEFB 079H DEFB 07AH DEFB 07BH DEFB 07CH DEFB 07DH DEFB 07EH DEFB 07FH DEFB 00FH ;INSERT TOGGLE ON/OFF DEFB 005H ;CURSOR UP LINE DEFB 018H ;CURSOR DOWN LINE DEFB 004H ;CURSOR RIGHT CHARACTER DEFB 013H ;CURSOR LEFT CHARACTER DEFB 085H DEFB 086H DEFB 087H DEFB 01EH ;CUSOR TOP/BOTTOM OF SCREEN DEFB 089H DEFB 002H ;CURSOR LEFT/RIGHT OF LINE DEFB 00BH ;DELETE LINE RIGHT DEFB 014H ;INSERT CR LEAVE CURSOR BEFORE IT DEFB 019H ;DELETE LINE DEFB 003H ;FILE UP ONE SCREENFUL DEFB 012H ;FILE DOWN ONE SCREENFUL DEFB 07FH ;DELETE CHAR LEFT DEFB 091H DEFB 092H DEFB 093H DEFB 094H DEFB 095H DEFB 096H DEFB 097H DEFB 098H DEFB 01AH ;FILE UP ONE LINE DEFB 017H ;FILE DOWN ONE LINE DEFB 09BH DEFB 09CH DEFB 09DH DEFB 09EH DEFB 09FH DEFB 0A0H DEFB 0A1H DEFB 0A2H DEFB 0A3H DEFB 0A4H DEFB 0A5H DEFB 0A6H DEFB 0A7H DEFB 0A8H DEFB 0A9H DEFB 0AAH DEFB 0ABH DEFB 02EH ;CHANGES NUMERIC PAD , INTO . DEFB 0ADH DEFB 0AEH DEFB 0AFH DEFB 0B0H DEFB 0B1H DEFB 0B2H DEFB 0B3H DEFB 0B4H DEFB 0B5H DEFB 0B6H DEFB 0B7H DEFB 0B8H DEFB 0B9H DEFB 0BAH DEFB 0BBH DEFB 0BCH DEFB 0BDH DEFB 0BEH DEFB 0BFH DEFB 0C0H DEFB 0C1H DEFB 0C2H DEFB 0C3H DEFB 0C4H DEFB 0C5H DEFB 0C6H DEFB 0C7H DEFB 0C8H DEFB 0C9H DEFB 0CAH DEFB 0CBH DEFB 0CCH DEFB 0CDH DEFB 0CEH DEFB 0CFH DEFB 0D0H DEFB 0D1H DEFB 0D2H DEFB 0D3H DEFB 0D4H DEFB 0D5H DEFB 0D6H DEFB 0D7H DEFB 0D8H DEFB 0D9H DEFB 0DAH DEFB 0DBH DEFB 0DCH DEFB 0DDH DEFB 0DEH DEFB 0DFH DEFB 0E0H DEFB 0E1H DEFB 003H ;^C..WARM BOOT DEFB 0E3H DEFB 0E4H DEFB 0E5H DEFB 0E6H DEFB 0E7H DEFB 0E8H DEFB 0E9H DEFB 0EAH DEFB 0EBH DEFB 0ECH DEFB 0EDH DEFB 000H ;DO NEXT CHAR 4 TIMES DEFB 0EFH DEFB 0F0H DEFB 0F1H DEFB 0F2H DEFB 0F3H DEFB 0F4H DEFB 0F5H DEFB 0F6H DEFB 0F7H DEFB 0F8H DEFB 0F9H DEFB 0FAH DEFB 0FBH DEFB 0FCH DEFB 0FDH DEFB 0FEH DEFB 0FFH END