1 REM Ins{nd av Hans Holmberg <2838> 1987-06-14 22.48.21 (DUMP) ; ; SOFTKEY.ASM v2.0, (C) Hans Holmberg <2838> 1985-08-06 ; ; SoftKey definierar om alla tangenter p} tangentbordet till ; valfria ascii-v{rden. Den fungerar {ven tillsammans ; med SUPERSMARTIAD och den p}verkar ->OCKS]<- INP(56)! ; ; Z=CALL(49159) Startar SoftKey-rutinen, men se upp, ; du m}ste ha definierat alla tangenter f|rst! ; Z=CALL(49189) St{nger av SoftKey rutinen och startar den ; tidigare interrupt rutinen. ; Z=CALL(49263) S{tter alla tangenter till standard, och om ; SoftKey ej {r initierat s} initieras det. ; ; Om man vill tex. g|ra 'A' till ett 'B': ; POKE 49280+ASC('A'),ASC('B') ; Sedan n{r man trycker p} 'A' s} blir det ett 'B'. ; Men om man har sm} bokst{ver s} blir det 'a' och ; inte 'b', detta beroende p} att rutinen skiljer p} ; alla tecken, s}som CTRL-A, lilla 'a' och stora 'A'. ; S} vill man definiera om lilla 'a' till lilla 'b' ; s} skriver man POKE 49280+ASC('a'),ASC('b'). ; ; ORG 49152 INTV: DEFW INTER DEFW 1428 OLDINTV: DEFB 0 OLDINTA: DEFW 0 ; ; Initiera den nya interruptrutinen. ; INIT: DI LD A,I LD (OLDINTV),A LD H,A LD L,52 LD A,(HL) INC HL LD H,(HL) LD L,A LD (OLDINTA),HL LD A,192 LD I,A XOR A OUT (17),A LD A,201 LD (INIT),A EI RET ; ; St{nga av det nya interruptet och initiera ; den gamla rutinen. ; RESET: DI XOR A DEC A OUT (17),A OUT (17),A LD A,183 OUT (17),A LD A,127 OUT (17),A LD A,52 OUT (17),A LD A,(OLDINTV) LD I,A LD A,243 LD (INIT),A EI RET ; ; SoftKey rutinen. ; INTER: DI PUSH AF PUSH HL PUSH BC XOR A LD B,A DEC A OUT (17),A OUT (17),A IN A,(16) AND 127 LD C,A LD HL,KEYTAB ADD HL,BC LD A,(HL) POP BC POP HL PUSH AF XOR A DEC A OUT (17),A LD A,127 OUT (17),A POP AF OUT (16),A POP AF PUSH HL LD HL,(OLDINTA) EX (SP),HL EI RET ; ; Denna rutin g|r s} att man f}r 'normala' tangenter. ; INIT2: LD L,128 LD A,0 LOOP: LD (HL),A INC A INC L JR NZ,LOOP JP INIT ; ; H{r ska tabellen med de nya ascii-v{rdena ligga. ; KEYTAB: ORG 49280 END