; THIS IS SOURCE FOR A PROGRAM TO ALLOW EDITING THE SANYO FUNCTION KEYS ; IN MEMORY, AS WELL AS THE FUNCTION KEYS IN THE SYSTEM IMAGE SYSGENNED ; INTO RAM AT THE SAME TIME. THE FUNCTION KEYS ARE DEFINED IN THE BIOS ; AS AN EIGHT BYTE STRING FOR EACH KEY. THE CODE MAKES NO ASSUMPTION AS ; TO THE WHERE THE BIOS IS RELOCATED, BUT INSTEAD LOOKS FOR THE WARM ; BOOT VECTOR AT ADDRESS 1, SO IF YOU HAVE ANY PROGRAM THAT INTERCEPTS ; THE WARM BOOT VECTOR, YOU MAY HAVE PROBLEMS, IF IT CHANGES THE WORD ; AT ADDRESSES 1 AND 2. THIS CODE WAS ASSEMBLED WITH LASM3. IT USES ; SOME EXTENDED 8080 (Z80) CODES, SO ASM WILL NOT WORK. ; ; USE ^@ TO FILL STRING SPACES NOT USED. FOR EXAMPLE IF YOU WISH TO ; PATCH THE INSERT KEY TO ^V, YOU WOULD PICK 'A' FROM THE MENU, AND ; TYPE: '^V' '^@' '^@' '^@' '^@' '^@' '^@' '^@' ; PLEASE SEND ALL COMMENTS, COMPLAINTS, ETC. TO : ; MIKE GOINS ; P.O. BOX 3341 ; BRISTOL, TENNESSEE 37625 ; ORG 0100H LHLD 0001 ; WARM BOOT ADDRESS INX H INX H INX H SHLD (POLL1+1) INX H INX H INX H SHLD (BIOIN+1) LXI D,2AH ; OFFSET TO TABLE ADDRESS POINTER DAD D MOV E,M INX H MOV D,M ; DE CONTAINS TABLE ADDRESS SDED TABPT ; A REMINDER OF THE TABLE ADDRESS LHLD 1 MOV A,L CMA MOV L,A MOV A,H CMA MOV H,A INX H LXI D,1F83H DAD D SHLD OFFST ; OFFSET FOR SYSTEM IMAGE STOVR: MVI E,26 ;CLEAR SCREEN MVI C,2 CALL 5 ;BDOS LBCD TABPT MVI H,43H ; FIRST PF KEY IS C PUSH H PUSH B LXI D,STR2 MVI C,9 CALL 5 POP B CALL STSHO PUSH B LXI D,STR3 MVI C,9 CALL 5 POP B CALL STSHO POP H ANOPF: PUSH H MVI A,20H STA (STR4+25) MOV A,H LXI D,STR4 STAX D CPI 'L' JM STLOW MVI A,31H STA (STR4+25) MOV A,H SUI 0AH ;ADJUST FOR DECADE STLOW: SUI 12H ;'C'-'1' STA (STR4+26) PUSH B MVI C,9 CALL 5 POP B CALL STSHO POP H INR H MVI A,'R' ;Q IS LAST PF KEY CMP H JNZ ANOPF ;THE NEXT PROG FUNCTION KEY PUSH H PUSH B MVI C,9 LXI D,STR5 CALL 5 POP B CALL STSHO PUSH B MVI C,9 LXI D,STR6 CALL 5 POP B CALL STSHO PUSH B MVI C,9 LXI D,STR7 CALL 5 POP B CALL STSHO PUSH B MVI C,9 LXI D,STR8 CALL 5 POP B CALL STSHO PUSH B MVI C,9 LXI D,STR9 CALL 5 POP B CALL STSHO MVI C,9 LXI D,STR10 CALL 5 LXI D,STR11 MVI C,9 CALL 5 LXI D,STR1 ;"WHICH STRING" MVI C,9 CALL 5 MVI C,1 CALL 5 SUI 41H JM STOVR CPI 22 ;W-41H JZ 0 JP STOVR ADD A ADD A ADD A ;MULTIPLY TIMES 8 MOV E,A MVI D,0 LHLD TABPT DAD D PUSH H PUSH H LXI D,STR11 MVI C,9 CALL 5 LXI D,STR11 MVI C,9 CALL 5 LXI D,STR11 MVI C,9 CALL 5 LXI D,STR13 MVI C,9 CALL 5 POP B CALL STSHO LXI D,STR11 MVI C,9 CALL 5 LXI D,STR13 MVI C,9 CALL 5 LXI D,STR12 MVI C,9 CALL 5 LXI D,STR12 MVI C,9 CALL 5 MVI E,0DH ; MVI C,2 CALL 5 LXI D,STR13 MVI C,9 CALL 5 MVI H,8 ;8 CHARACTERS MAX PER STRING POP B AGA: PUSH H PUSH B POLL1: CALL 0F206H ORA A ; CHECK FOR ZERO JRZ POLL1 BIOIN: CALL 0F209H POP B STAX B PUSH B LHLD OFFST DAD B MOV M,A CPI 20H JM CRL MOV E,A MVI C,2 CALL 5 MVI E,20H MVI C,2 CALL 5 SPAC2: LXI D,STR14 MVI C,9 CALL 5 POP B POP H INX B DCR H JNZ AGA JMP 100H CRL: ADI 40H PUSH PSW MVI E,'^' MVI C,2 CALL 5 POP PSW MOV E,A MVI C,2 CALL 5 JMP SPAC2 JMP 0 ;******************************************************* STSHO: MVI L,8 AGAIN: LDAX B PUSH B PUSH H CPI 20H ; EVERYTHING BELOW 20 IS A CONTROL CHAR JM CTRL MOV E,A MVI C,2 CALL 5 MVI C,2 MVI E,20H CALL 5 SPACE: MVI C,9 LXI D,STR14 CALL 5 POP H POP B INX B DCR L JRNZ AGAIN PUSH B PUSH H LXI D,STR11 ; MVI C,9 CALL 5 POP H POP B RET CTRL: PUSH PSW MVI E,'^' MVI C,02 CALL 5 POP PSW ADI 40H ; ^A BECOMES A MOV E,A MVI C,2 CALL 5 JMP SPACE STR1: DB ' ENTER WHICH STRING TO MODIFY ... $ ' STR3: DB 'B: ENTER KEY = .................. $' STR2: DB 'A: INSERT KEY = ................. $' STR4: DB 'C: PROGRAMMABLE FUNCTION 01 = ... $' STR5: DB 'R: LEFT ARROW KEY = ............. $' STR6: DB 'S: RIGHT ARROW KEY = ............ $' STR7: DB 'T: UP ARROW KEY = ............... $' STR8: DB 'U: DOWN ARROW KEY = ............. $' STR9: DB 'V: DIAGONAL ARROW KEY = ......... $' STR10: DB 'W: EXIT PROGRAM $' STR11 DB 0DH,0AH,'$' STR12: DB 95,95,27,116,52,32,27,116,49,95,95,27,116,52,32,27,116,49,95,95,27,116,52,32,27,116,49 DB 95,95,27,116,52,32,27,116,49,'$' STR13: DB 32,32,32,32,32,'$' STR14: DB 27,116,52,32,27,116,49,'$' TABPT: DW 0F404H OFFST: DW 2184H END