;04.12.1999
;IDE READ/WRITE PRIMITIVE
;BY MACIEJ WITKOWIAK
;   (YTM/ALLIANCE)
;
;TURNING SCREEN OFF IS NOT NECCESSARY
;ONLY 'SEI' IS REQUIRED
;
;IDE INTERFACE BY: CHRIS WARD
;$DX00 - DATA LOW
;$DX01 - ERROR REGISTER
;$DX02 - SECTOR COUNT
;$DX03 - SECTOR
;$DX04 - CYLINDER LOW
;$DX05 - CYLINDER HIGH
;$DX06 - HEAD
;$DX07 - STATUS/COMMAND
;$DX0E - 2ND STATUS
;$DX0F - ACTIVE STATUS

;(DATA HIGH BYTE WILL BE ADDED WHEN
; 16BIT VERSION WILL BE BUILT)
; PROBABLY $DX08

;HARDWIRED IN $DX00-$DX0F (A4=0)

         *= $1000

MAIN
         LDA #$01
         STA $D102
         LDA #2
         STA $D103

CYL      = *+1
         LDA #0
         STA $D104
         LDA #0
         STA $D105

         LDA #%10100000
         STA $D106

         LDA #$20
         STA $D107

         LDA $D107
         BMI *-3

         LDA #$FF
RAS1     CMP $D012
         BNE RAS1
         LDA #$00
         STA $D011
         SEI

         LDY #0
LOOP
         LDX $D012
         CPX $D012
         BEQ *-6
         LDA $D100
         STA $0400,Y
         INY
         BNE LOOP

         LDA #$FF
RAS2     CMP $D012
         BNE RAS2

         LDA #$1B
         STA $D011

         CLI

KEY      JSR $FFE4
         BEQ *-3
         CMP #32
         BEQ DMAIN
         CMP #3
         BEQ FIN
         CMP #"+"
         BEQ PLUS
         CMP #"-"
         BEQ MINUS
         JMP KEY
FIN      RTS
PLUS     INC CYL
DMAIN    JMP MAIN
MINUS    DEC CYL
         JMP MAIN


         *= $2000

         LDA #$01
         STA $D102
         LDA #2
         STA $D103

         LDA #0
         STA $D104
         STA $D105
         LDA #%10100000
         STA $D106

         LDA #$30
         STA $D107

DRQ      LDA $D107
         AND #%00001000
         BEQ DRQ

         SEI
         LDX #0
WRLP
         LDA $8000,X
         STA $D100
         INX
         BNE WRLP

         CLI
         LDA $D107
         BMI *-3

         RTS

