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

  1. 09       .OPT NO LIST¢10 ; SAVE #D1:PHENTRY.M65¢20 ;¢30 ;¢40 ; LOAD #D1:SCREEN1.M65¢50 ;¢60 ; *= $EEBC 07 Oct 94¢62       .PAGE "Peripheral Handler Entry"¢70        LIST  ¢72       .LOCAL ¢80 ; Peripheral handler entry:¢81 ;  install device in hatabs if¢82 ; not already there and if room¢83 ; Entry: ascii name in x¢84 ;  table addr in y,a (lsb,msb)¢85 ; Returns:¢86 ;  already installed: a=a y=y¢87 ;   x points name+1 in Hatabs¢88 ;   c=1 s=0¢89 ;¢90 ;  newly installed:  a=a¢91 ;   x points name y=ascii name¢92 ;   c=0 s=?¢93 ;¢94 ;  no room: a=a y=$ff x=34¢95 ;   c=1 s=1¢96 ;¢061116 PHE PHA       Pointed to by Pentv¢061117   TYA         Table address¢061118   PHA         to stack¢061119   TXA         Device name to a¢061120   LDX #0¢061122 ?FINDDEV CMP HATABS,X¢061125   BEQ ?FOUND¢061127   INX ¢061128   INX ¢061129   INX ¢061130   CPX #34¢061132   BMI ?FINDDEV¢061134   LDX #0      Not found,¢061136   TAY         save device and¢061137   LDA #0      find empty slot¢061139 ?FINDMT CMP HATABS,X¢061142   BEQ ?INSTALL Got one¢061144   INX ¢061145   INX ¢061146   INX ¢061147   CPX #34¢061149   BMI ?FINDMT¢061151   PLA         Clear stack¢061152   PLA ¢061153   LDY #255    Flag no free¢061155   SEC         return -ve and c=1¢061156   RTS ¢061157 ?FOUND PLA    Restore address¢061158   TAY         to y,a¢061159   PLA ¢061160   INX         x points address¢061161   SEC         return +ve and c=1¢061162   RTS ¢061163 ?INSTALL TYA ¢061164   STA HATABS,X Device name¢061167   PLA ¢061168   STA HATABS+1,X Addr lsb¢061171   PLA ¢061172   STA HATABS+2,X Addr msb¢061175   CLC         return +/- and c=0¢061176   RTS         ; ----------------¢061177 PDOPENPOLL LDY #0 Poll at open¢061179   LDA (ICBALZ),Y to Daux1¢061181   LDY ICDNOZ  dev# to Daux2¢061183   JSR POLL.PD Poll it¢061186   BPL ?POLLEDOK go if good¢061188   LDY #130    Else, no device¢061190   RTS ¢061191 ?POLLEDOK LDA #$7F¢061193   STA ICHIDZ¢061195   LDA # <?PUT-1 Put byte¢061197   STA ICPTLZ  address-1¢061199   LDA # >?PUT-1¢061201   STA ICPTHZ¢061203   LDA DVSTAT+2 Device Sio addr¢061206    ALDX  ICAX5Z Recover channel¢061209   STA ICAX4,X¢061212   LDY #0¢061214   LDA (ICBALZ),Y¢061216   STA ICAX3,X¢061219   LDY #1¢061221   RTS ¢061222 ?PUT PHA      Put byte routine¢061223   TXA         for provisionally¢061224   PHA         open iocb.¢061225   AND #$0F    Verify iocb#¢061227   BNE ?BADCH¢061229   CPX #$80¢061231   BPL ?BADCH¢061233   LDA HNDLOD  Was handler loaded?¢061236   BNE ?HNDLOD Yes¢061238   LDY #130    Else, no device¢061240 ?EREXIT PLA ¢061241   PLA ¢061242   CPY #0¢061244   RTS ¢061245 ?BADCH LDY #134 invalid iocb#¢061247   BMI ?EREXIT Always¢061249 ?HNDLOD  ASTX  ICAX5Z¢061252   LDY #0¢061254 ?COPY LDA ICHID,X Copy iocb¢061257   STA ICHIDZ,Y to ziocb¢061260   INX ¢061261   INY ¢061262   CPY #12¢061264   BMI ?COPY¢061266   JSR INITPD  Initialize device¢061269   BMI ?EREXIT¢061271   PLA         recover x¢061272   TAX ¢061273   PLA         recover a¢061274   TAY         save a¢061275   LDA ICPTHZ  Do indirect jsr¢061277   PHA         to put byte¢061278   LDA ICPTLZ¢061280   PHA ¢061281   TYA         recover byte¢061282   LDY #146    invalid xio code¢061284   RTS ¢061285   .BYTE 0,0,0,0 Unused¢061289   .BYTE 0,0¢061291   JMP MOTORON Not referenced¢