home *** CD-ROM | disk | FTP | other *** search
/ Serious Magazine 11 / Serious_Magazine_11_2002_Dial_pl_Disk_2_of_2_Side_B.atr / rom_01.lzh / KEYBDIRQ.TXT < prev    next >
Text File  |  2002-05-26  |  4KB  |  1 lines

  1. 09       .OPT NO LIST¢10 ;  SAVE #D1:KEYBDIRQ.M65¢20 ;¢30 ;¢40 ;  LOAD #D1:CASSETTE.M65¢50 ;¢52       .PAGE "Keyboard IRQ Handler"¢60 ;  *= $FC19¢61        LIST  ¢63       .LOCAL ¢70 ;¢80 ; Keyboard IRQ processing routines¢0100 ; Note all references to f1, f2,¢0110 ; etc. and LED's are to 1200xl.¢0120 ; The code for these is in all¢0130 ; xl/xe rom's even though the¢0140 ; hardware is not.¢0150 ;¢0160 ; On the 1200xl, bits 2 and 3 of¢0170 ; PortB control LED's 1 (kbd)¢0180 ; and 2 (charset). LED's are on¢0190 ; when bits are off.¢0200 ;¢0210 ; A program using 130xe bank¢0220 ; switching should be unaffected¢0230 ; as long as the OS is in ROM.¢0240 ; A custom OS which accesses the¢0250 ; 1200xl functions, however, may¢0260 ; result in unwanted changes in¢0270 ; PortB.¢0280 ;¢064537 KIR TXA       Save registers¢064538   PHA ¢064539   TYA ¢064540   PHA ¢064541   LDY PORTB   For led's¢064544   LDA KBCODE  Is key same as¢064547   CMP CH1     last accepted?¢064550   BNE ?GOTKEY Go if not.¢064552   LDX KEYDEL  Exit if bounce¢064555   BNE ?RESET  time not done.¢064557 ?GOTKEY LDX KEYDIS¢064560   CMP #$83    Control f1?¢064562   BNE ?NOTCF1¢064564   TXA         Toggle keyboard¢064565   EOR #$FF    disable flag.¢064567   STA KEYDIS  Nonzero=kbd off¢064570   BNE ?LED1ON Go if now off.¢064572   TYA         PortB to a¢064573   ORA #4      Set b2 (LED off)¢064575   BNE ?GOTCF1 Go always.¢064577 ?LED1ON TYA   PortB to a. Kill¢064578   AND #$FB    bit2 (LED1 on)¢064580 ?GOTCF1 TAY   New PortB to y¢064581   BCS ?VALID  Go always¢064583 ?NOTCF1 TXA   Recheck delay¢064584   BNE ?EXIT   Go if not done¢064586   LDA KBCODE  Get key again¢064589   TAX         and copy in x¢064590   CMP #159    Control 1?¢064592   BNE ?HELP?¢064594   LDA SSFLAG  Yes, toggle flag¢064597   EOR #$FF    (nonzero=freeze)¢064599   STA SSFLAG¢064602   BCS ?VALID  Go always¢064604 ?HELP? AND #$3F Mask Shft/Ctrl¢064606   CMP #17     If not Help, go¢064608   BNE ?SCREN? check others¢064609 ;      else save actual¢064610   STX HELPFG  key press here¢064613   BEQ ?VALID  only. Go always.¢064615 ?STOWIT STX CH Update user and¢064618   STX CH1     last key reg's¢064621 ?VALID LDA #3 Valid key exit.¢064623   STA KEYDEL  Set bounce delay¢064626   LDA #0      and kill attract¢064628   STA ATRACT  mode¢064630 ?RESET LDA KRPDEL Reset key¢064633   STA SRTIMR  repeat timer¢064636   LDA SDMCTL  Is screen on?¢064639   BNE ?EXIT   If so, exit¢064641   LDA DMASAV  Restore screen¢064644   STA SDMCTL  on any keypress¢064647 ?EXIT STY PORTB Enable led's¢064650   PLA         Restore reg's¢064651   TAY ¢064652   PLA ¢064653   TAX ¢064654   PLA ¢064655   RTI ¢064656 ?SCREN? CPX #$84 Control f2?¢064658   BEQ ?GOTCF2¢064660   CPX #$94    Control f4?¢064662   BNE ?STOWIT Go if not.¢064664   LDA CHBAS   Else switch the¢064667   LDX CHSALT  character sets¢064670   STA CHSALT  Alt.=Old Active¢064673   STX CHBAS   Active=Old Alt.¢064676   CPX # >CHARSET2 Go if alt.¢064678   BEQ ?LED2ON set now active¢064680   TYA         PortB to a¢064681   ORA #8      Set bit3¢064683   TAY         Back to y¢064684   BNE ?VALID  Go always.¢064686 ?LED2ON TYA   PortB to a¢064687   AND #$F7    Kill b3 (LED on)¢064689   TAY         Back to y¢064690   JMP ?VALID¢064693 ?GOTCF2 LDA SDMCTL Toggle S:¢064696   BEQ ?EXIT   Go if off¢064698   STA DMASAV  Else save value¢064701   LDA #0      for auto restore¢064703   STA SDMCTL  and kill screen¢064706   BEQ ?EXIT   Go always¢064708 FDL PHA       Display list¢064709   LDA COLOR2  interrupt code¢064712    AEOR  COLRSH for fine scroll¢064715    AAND  DRKMSK¢064718   STA WSYNC¢064721   STA COLPF1¢064724   PLA ¢064725   RTI ¢064726   .BYTE 0,0   Unused bytes¢