High-Density Disk Interface#

The HDI is the interface for connecting up to 4 standard drives to the XL/XE. You can mix 3,5" and 5,25" floppies at will. Required is that the drive supports the Disk Change signal at pin 34 of the Shugart bus. It doesn't support Medium Density (128 bytes/sector in MFM mode and 1.2 MB drives). Maximum transfer rate: 500 Kbit/s (1.44 MByte disks).

The HDI has been developed in 1991 by Erhard Pütz (FloppyDoc).

HDI Interface/HDI-CAS.jpg

Manual:#

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

HDI Schematics HDI Interface/sch_hdi.png (PDF: HDI Interface/sch_hdi.pdf(info))


HDI High Speed SIO#


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