!!!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).
[{Image src='hdi.jpg'}]
!!Manual:
HDI Manual: [HDI Interface/HDI_Manual.pdf]
\\
HDI Schematics [HDI Interface/sch_hdi.png] (PDF: [HDI Interface/sch_hdi.pdf])
\\
!!! 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
}}}