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
/
PERHNDLR.TXT
next >
Wrap
Text File
|
2002-05-26
|
6KB
|
1 lines
09 .OPT NO LIST¢10 ; SAVE #D1:PERHNDLR.M65¢20 ;¢30 ;¢40 ; LOAD #D1:SIO.M65¢50 ;¢60 ; *= $E739¢70 .PAGE "Peripheral Handler"¢80 LIST ¢90 .LOCAL ¢059193 PHR LDA WARMST Per.Hndlr init¢059195 BEQ ?POWRUP Go if powerup¢059197 LDA # <CHLINK-18 On reset¢059199 STA ZCHAIN¢059201 LDA # >CHLINK-18¢059203 STA ZCHAIN+1¢059205 ?59205 LDY #18 Point Chlink¢059207 CLC Check if more¢059208 LDA (ZCHAIN),Y handler to¢059210 TAX load¢059211 INY ¢059212 ADC (ZCHAIN),Y¢059214 BEQ ?EXIT1 None¢059216 LDA (ZCHAIN),Y Add 18 bytes¢059218 STA ZCHAIN+1 from Chlink¢059220 STX ZCHAIN Return complement¢059222 JSR ADD18 of sum, c=0 y=$ff¢059225 BNE ?EXIT1¢059227 JSR ?59540 a=0 y=$ff x=lsb¢059230 BCS ?EXIT1¢059232 BCC ?59205¢059234 ?POWRUP LDA #0¢059236 STA CHLINK¢059239 STA CHLINK+1¢059242 LDA #$4F Are you there?¢059244 BNE ?59291 Always to set dcb¢059246 ?59246 LDA #0 Daux1/2 to get¢059248 TAY handler info¢059249 JSR POLL.PD Daux1/2=0¢059252 BPL ?59255 Flag from sio¢059254 ?EXIT1 RTS No pd¢059255 ?59255 CLC Got a pd¢059256 LDA MEMLO¢059259 ADC DVSTAT lsb handler size¢059262 STA TEMP1¢059265 LDA MEMLO+1¢059268 ADC DVSTAT+1 msb¢059271 STA TEMP2¢059274 SEC ¢059275 LDA MEMTOP Check if under¢059278 SBC TEMP1 memtop¢059281 LDA MEMTOP+1¢059284 SBC TEMP2¢059287 BCS ?59298 Yes, ok¢059289 ?59289 LDA #$4E Else null poll¢059291 ?59291 TAY ¢059292 JSR POLL.PD¢059295 JMP ?59246¢059298 ?59298 LDA DVSTAT+2 sio address¢059301 LDX MEMLO¢059304 STX DVSTAT+2¢059307 LDX MEMLO+1¢059310 STX DVSTAT+3¢059313 JSR PHDLOD¢059316 BMI ?59289¢059318 SEC ¢059319 JSR L59550¢059322 BCS ?59289¢059324 BCC ?59246¢059326 POLL.PD PHA Exec poll¢059327 LDX #9¢059329 ?POLL.2 LDA ?DCBDAT.1,X¢059332 STA DDEVIC,X Get 4 bytes¢059335 DEX into dvstat¢059336 BPL ?POLL.2¢059338 STY DAUX2 Set daux from¢059341 PLA a and y entry¢059342 STA DAUX1 values¢059345 JMP SIOV¢059348 ?DCBDAT.1 .BYTE $4F ddevic¢059349 .BYTE 1 dunit¢059350 .BYTE $40 dcomnd¢059351 .BYTE $40 dstats¢059352 .WORD DVSTAT dbuflo/hi¢059354 .WORD 30 dtimlo/hi¢059356 .WORD 4 dbytlo/hi¢059358 PHDLOD STA TEMP2 Load handler¢059361 LDX #0 Temp2=sio addr¢059363 STX TEMP1¢059366 DEX ¢059367 STX TEMP3 Temp3=$FF¢059370 LDA DVSTAT+2 memlo¢059373 ROR A¢059374 BCC ?59384 must be even¢059376 INC DVSTAT+2¢059379 BNE ?59384¢059381 INC DVSTAT+3 memlo+1¢059384 ?59384 LDA DVSTAT+2 memlo¢059387 STA LOADAD¢059390 LDA DVSTAT+3 memlo+1¢059393 STA LOADAD+1¢059396 LDA # <?GET1 Set up¢059398 STA GBYTEA indirect¢059401 LDA # >?GET1 subroutine¢059403 STA GBYTEA+1¢059406 LDA #$80¢059408 STA ZLOADA¢059411 JMP PDRELOC¢059414 ?GET1 LDX TEMP3 Get byte¢059417 INX routine¢059418 STX TEMP3¢059421 BEQ ?59431¢059423 ?59423 LDX TEMP3 Error exit?¢059426 LDA ICAX4+$30,X¢059429 CLC ¢059430 RTS ¢059431 ?59431 LDA #$80¢059433 STA TEMP3¢059436 JSR ?GETBLOCK¢059439 BPL ?59423¢059441 SEC ¢059442 RTS ¢059443 ?GETBLOCK LDX #11 Get next¢059445 ?BLOCK.2 LDA ?DCBDAT.2,X load¢059448 STA DDEVIC,X block¢059451 DEX ¢059452 BPL ?BLOCK.2¢059454 LDX TEMP1 new memlo¢059457 STX DAUX1¢059460 INX ¢059461 STX TEMP1¢059464 LDA TEMP2¢059467 STA DDEVIC¢059470 JMP SIOV¢059473 ?DCBDAT.2 .BYTE 0 ddevic¢059474 .BYTE 1 dunit¢059475 .BYTE '& dcomnd¢059476 .BYTE $40 dstats¢059477 .WORD CASBUF dbuflo/hi¢059479 .WORD 30 dtimlo/hi¢059481 .WORD 128 dbytlo/hi¢059483 .WORD 0 daux1/2¢059485 ?59485 STY TEMP1 Search¢059488 STA TEMP2 handler chain¢059491 LDA # <CHLINK-18¢059493 STA ZCHAIN¢059495 LDA # >CHLINK-18¢059497 STA ZCHAIN+1¢059499 ?59499 LDY #$12¢059501 LDA (ZCHAIN),Y¢059503 TAX ¢059504 INY ¢059505 LDA (ZCHAIN),Y¢059507 CMP TEMP2¢059510 BNE ?59519¢059512 CPX TEMP1¢059515 BNE ?59519¢059517 CLC ¢059518 RTS ¢059519 ?59519 CMP #0¢059521 BNE ?59529¢059523 CPX #0¢059525 BNE ?59529¢059527 ?59527 SEC ¢059528 RTS ¢059529 ?59529 STX ZCHAIN¢059531 STA ZCHAIN+1¢059533 JSR ADD18¢059536 BNE ?59527¢059538 BEQ ?59499 Always¢059540 ?59540 SEC Handler¢059541 PHP warmstart init¢059542 BCS ?59584 Always¢059544 PDWARM STA DVSTAT+3 Warmstart¢059547 STY DVSTAT+2 with chaining¢059550 L59550 PHP Cold start init¢059551 LDA #0¢059553 TAY ¢059554 JSR ?59485¢059557 BCS ?59598¢059559 LDY #$12¢059561 LDA DVSTAT+2¢059564 STA (ZCHAIN),Y¢059566 TAX ¢059567 INY ¢059568 LDA DVSTAT+3¢059571 STA (ZCHAIN),Y¢059573 STX ZCHAIN¢059575 STA ZCHAIN+1¢059577 LDA #0¢059579 STA (ZCHAIN),Y¢059581 DEY ¢059582 STA (ZCHAIN),Y¢059584 ?59584 JSR ?JINIT Init handler¢059587 BCC ?59601 and update memlo¢059589 LDA DVSTAT+3¢059592 LDY DVSTAT+2¢059595 JSR PDUNLINK¢059598 ?59598 PLP ¢059599 SEC ¢059600 RTS ¢059601 ?59601 PLP ¢059602 BCS ?59613¢059604 LDA #0¢059606 LDY #$10¢059608 STA (ZCHAIN),Y¢059610 INY ¢059611 STA (ZCHAIN),Y¢059613 ?59613 CLC ¢059614 LDY #16¢059616 LDA MEMLO¢059619 ADC (ZCHAIN),Y¢059621 STA MEMLO¢059624 INY ¢059625 LDA MEMLO+1¢059628 ADC (ZCHAIN),Y¢059630 STA MEMLO+1¢059633 LDY #15¢059635 LDA #0¢059637 STA (ZCHAIN),Y¢059639 JSR ADD18¢059642 LDY #15¢059644 STA (ZCHAIN),Y¢059646 CLC ¢059647 RTS ¢059648 ?JINIT CLC Init handler¢059649 LDA ZCHAIN Get init address¢059651 ADC #12¢059653 STA TEMP1¢059656 LDA ZCHAIN+1¢059658 ADC #0¢059660 STA TEMP2¢059663 JMP (TEMP1) To handler init¢059666 JMP DOSETBV Not ref?¢059669 PDUNLINK JSR ?59485 Handler¢059672 BCS ?59733 unlinking¢059674 TAY ¢059675 LDA ZCHAIN¢059677 PHA ¢059678 LDA ZCHAIN+1¢059680 PHA ¢059681 STX ZCHAIN¢059683 STY ZCHAIN+1¢059685 LDA COLDST¢059688 BNE ?59705¢059690 LDY #16¢059692 CLC ¢059693 LDA (ZCHAIN),Y¢059695 INY ¢059696 ADC (ZCHAIN),Y¢059698 BNE ?59731¢059700 JSR ADD18¢059703 BNE ?59731¢059705 ?59705 LDY #$12¢059707 LDA (ZCHAIN),Y¢059709 TAX ¢059710 INY ¢059711 LDA (ZCHAIN),Y¢059713 TAY ¢059714 PLA ¢059715 STA ZCHAIN+1¢059717 PLA ¢059718 STA ZCHAIN¢059720 TYA ¢059721 LDY #$13¢059723 STA (ZCHAIN),Y¢059725 DEY ¢059726 TXA ¢059727 STA (ZCHAIN),Y¢059729 CLC ¢059730 RTS ¢059731 ?59731 PLA ¢059732 PLA ¢059733 ?59733 SEC ¢059734 RTS ¢059735 .BYTE 0 Following was 800¢059736 .BYTE 0 entry to Sioutl¢059737 JMP SIOUTL Not referenced¢