HDI High Speed SIO#

Manual:#

HDI Manual: HDI Interface/HDI_Manual.pdf(info)

01000 * High-Speed SIO-Driver, will
01010 * be relocated by HDI and
01020 * send to computer.
01030 ;
01040 USIOA    LDA $0301     ;DUNIT
01050          BNE SIO2
01060          LDX #$08
01070 DLWTBLL  STA LWTBL-1,X ;$F614
01080          DEX
01090          BNE DLWTBLL
01100          RTS
01110 SIO2     TAX
01120 REL01    LDA LWTBL-1,X ;$F614
01130          BNE SIO3
01140          LDA #$28
01150 REL02    STA LWTBL-1,X ;$F614
01160          LDY #$07
01170 SIOCL    LDA $0302,Y   ;DCOMND
01180          PHA
01190 REL03    LDA C3F,Y     ;$F60D
01200          STA $0302,Y   ;DCOMND
01210          DEY
01220          BPL SIOCL
01230 REL04    JSR SIO3      ;$F450
01240          LDX $0301     ;DUNIT
01250          LDY $0303     ;DSTATS
01260          BMI SIO21
01270          LDA $01
01280 REL05    STA LWTBL-1,X ;$F614
01290 SIO21    LDY #$00
01300 SIO21CL  PLA
01310          STA $0302,Y   ;DCOMND
01320          INY
01330          CPY #$08
01340          BCC SIO21CL
01350 SIO3     SEI
01360          TXA
01370          ORA #$30
01380          STA $023A     ;CDEVIC
01390          LDA $0302     ;DCOMND
01400          STA $023B     ;CCOMND
01410          LDA $030A     ;DAUX1
01420          STA $023C     ;CAUX1
01430          LDA $030B     ;DAUX2
01440          STA $023D     ;CAUX2
01450 REL06    LDA LWTBL-1,X ;$F614
01460          STA $D204     ;AUDF3
01470          TSX
01480          STX $3F       ;FEOF
01490          LDA #$02
01500          STA $37       ;DRETRY
01510 IO11     LDA #$07
01520          STA $36       ;CRETRY
01530 IO12     LDA #$34
01540          STA $D303
01550          LDA #$00
01560          STA $30       ;STATUS
01570          STA $3E       ;FTYPE
01580          STA $35       ;BUFEND+1
01590          STA $D206     ;AUDF4
01600          LDA #$3A
01610          STA $32       ;BUFADR
01620          LDA #$02
01630          STA $33       ;BUFADR+1
01640          ASL
01650          STA $34       ;BUFEND
01660 REL07    JSR SEND1     ;$F4DC
01670          LDA $0304     ;DBUFLO
01680          STA $32       ;BUFADR
01690          LDA $0305     ;DBUFHI
01700          STA $33       ;BUFADR+1
01710          LDA $0308     ;DBYTLO
01720          STA $34       ;BUFEND
01730          LDA $0309     ;DBYTHI
01740          STA $35       ;BUFEND+1
01750          LDA $0303     ;DSTATS
01760          BPL IO2
01770 REL08    JSR SEND1     ;$F4DC
01780 IO2      DEC $3E       ;FTYPE
01790 REL09    JSR SETTI1    ;$F544
01800          BIT $0303     ;DSTATS
01810          BVC IO3
01820 REL10    JSR GETA1     ;$F521
01830 IO3      LDA #$A0
01840          STA $D207     ;AUDC4
01850          LDA $10
01860          STA $D20E     ;IRQEN
01870 REL11    JSR CLRTI1    ;$F576
01880          LDA $30       ;STATUS
01890          BEQ IO4
01900          DEC $37       ;DRETRY
01910          BNE IO11
01920 IO4      TAY
01930          BNE IO5
01940          INY
01950 IO5      STY $0303     ;DSTATS
01960          CLI
01970          RTS
01980 SEND1    LDY #$00
01990 SE1      INY
02000          BNE SE1
02010          LDA #$23
02020 REL12    JSR POKEY     ;$F5F7
02030          LDA ($32),Y   ;BUFADR
02040          STA $31       ;CHKSUM
02050          STA $D20D     ;SEROUT
02060          INY
02070          BNE SE3
02080 SE2      LDA ($32),Y   ;BUFADR
02090 REL13    JSR PUTBYTE   ;$F5D4
02100          INY
02110          BNE SE3
02120          INC $33       ;BUFADR+1
02130          DEC $35       ;BUFEND+1
02140          LDX #$E0
02150 SEWL     INX
02160          BNE SEWL
02170 SE3      CPY $34       ;BUFEND
02180          BNE SE2
02190          LDA $35       ;BUFEND+1
02200          BNE SE2
02210          LDA $31       ;CHKSUM
02220 REL14    JSR PUTBYTE   ;$F5D4
02230 SEO1     LDA $D20E     ;IRQST
02240          AND #$08
02250          BNE SEO1
02260          LDY #$03
02270 REL15    JSR STOUTX0   ;$F578
02280          LDA #$C0
02290          STA $D20E     ;IRQEN
02300          BNE RDQUIT
02310 GETA1    LDY #$00
02320          STY $31       ;CHKSUM
02330 GE1      JSR GETBYTE   ;$F5B1
02340          STA ($32),Y   ;BUFADR
02350 REL16    JSR ADDSUM    ;$F5EF
02360          INY
02370          BNE GE2
02380          INC $33       ;BUFADR+1
02390          DEC $35       ;BUFEND+1
02400 GE2      CPY $34       ;BUFEND
02410          BNE GE1
02420          LDA $35       ;BUFEND+1
02430          BNE GE1
02440 REL17    JSR GETBYTE   ;$F5B1
02450          CMP $31       ;CHKSUM
02460          BNE ERR8F
02470          RTS
02480 SETTI1   LDA $0306     ;DTIMLO
02490          ROR
02500          ROR
02510          TAY
02520          AND #$3F
02530          TAX
02540          TYA
02550          ROR
02560          AND #$C0
02570          TAY
02580 REL18    JSR STOUT     ;$F57A
02590 RDQUIT   LDA #$3C
02600          STA $D303
02610          LDA #$13
02620 REL19    JSR POKEY     ;$F5F7
02630 REL20    JSR GETBYTE   ;$F5B1
02640          CMP #$41
02650          BEQ CLRTI1
02660          CMP #$43
02670          BEQ CLRTI1
02680          CMP #$45
02690          BEQ ERR90
02700          LDA #$8B
02710          BNE ERR
02720 ERR90    LDA #$90
02730          STA $30       ;STATUS
02740 CLRTI1   LDY #$00
02750 STOUTX0  LDX #$00
02760 STOUT    LDA ERRABS    ;$F
02770          STA $0226     ;CDTMA1
02780 STOU2    LDA ERRABS+1  ;$F
02790          STA $0227     ;CDTMA1+1
02800          LDA #$01
02810          JMP $E45C     ;Setze CDTMV1
02820 ERRABS   .DA ERR8A     ;$F
02830 IOER80   LDX $3F       ;FEOF
02840          TXS
02850          LDA #$80
02860          STA $30       ;STATUS
02870          BNE EABS3
02880 ERR8F    LDA #$8F
02890          .HX 2C
02900 ERR8A    LDA #$8A      ;Timeout
02910 ERR      STA $30       ;STATUS
02920          LDX $3F       ;FEOF
02930          TXS
02940          LDA $3E       ;FTYPE
02950          BMI ERRA
02960          DEC $36       ;CRETRY
02970          BEQ ERRA
02980 REL21    JMP IO12      ;$F47A
02990 ERRA     LDA #$28
03000          STA $D204     ;AUDF3
03010 EABS3    JMP IO3       ;$F4C1
03020 GETBYTE  LDA $D20E     ;IRQST
03030          BPL IOER80
03040          AND #$20
03050          BNE GETBYTE
03060          LDA #$DF
03070          STA $D20E     ;IRQEN
03080          LDA #$E0
03090          STA $D20E     ;IRQEN
03100          LDA $D20F     ;SKSTAT
03110          STA $D20A     ;SKRES
03120          BPL ERR8A
03130          AND #$20
03140          BEQ ERR8A
03150          LDA $D20D     ;SERIN
03160          RTS
03170 PUTBYTE  TAX
03180 PUTA1    LDA $D20E     ;IRQST
03190          AND #$10
03200          BNE PUTA1
03210          LDA #$EF
03220          STA $D20E     ;IRQEN
03230          LDA #$D0
03240          STA $D20E     ;IRQEN
03250          TXA
03260          STA $D20D     ;SEROUT
03270          LDX $D20E     ;IRQST
03280          BPL IOER80
03290 ADDSUM   CLC
03300          ADC $31       ;CHKSUM
03310          ADC #$00
03320          STA $31       ;CHKSUM
03330          RTS
03340 POKEY    STA $D20F     ;SKCTL
03350          STA $D20A     ;SKRES
03360          LDA #$28
03370          STA $D208     ;AUDCTL
03380          LDA #$A8
03390          STA $D207     ;AUDC4
03400          LDA #$F8
03410          STA $D20E     ;IRQEN
03420          RTS
03430 C3F      .HX 3F40
03440          .DA $0001
03450          .DA $0001
03460          .DA $0001
03470 LWTBL    .BL 8,0
03480 USIOE
03490 ABSTBL   .DA DLWTBLL+1,REL01+1,REL02+1,REL03+1,REL04+1,REL05+1,REL06+1
03500          .DA REL07+1,REL08+1,REL09+1,REL10+1,REL11+1,REL12+1,REL13+1
03510          .DA REL14+1,REL15+1,GE1+1,REL16+1,REL17+1,REL18+1,REL19+1
03520          .DA REL20+1,STOUT+1,STOU2+1,ERRABS,REL21+1,EABS3+1