; getbyte LEC8B STX $BA BIT $F9 BVS LEC96 ; 1551 getbyte LDX $BA JMP LE252 ; IEC ACPTR LEC96 LDA $F9 ; IEC flag AND #$30 ; clear LSB TAX ; x-reg : 48 = #8, 0 = #9 LDA #$84 ; $80: 1551 wake up $4: Job4= Computer receives STA $FEC0,x ; PortA LECA0 LDA $FEC2,x ; Read ST BMI LECA0 ; wait for ST >0 LDA #$00 STA $FEC3,x ; DDRA = 0 :in STA $FEC2,x ; clear DAV:0 LECAD LDA $FEC2,x BPL LECAD ; wait for ACK:0 LDA $FEC1,x ; read ST AND #$03 CMP #$03 BNE LECBD ; check Status-Bits LDA #$40 LECBD JSR LF41E ; and write new Status to $90 LDA $FEC0,x ; get Byte PHA ; and push to stack LDA #$40 ; Set Bit 6 = DAV:1 STA $FEC2,x LECC9 LDA $FEC2,x ; read ST BMI LECC9 ; wait for ST >0 LDA #$FF STA $FEC3,x ; DDRA to output LDA #$00 STA $FEC0,x ; PortA = $00 STA $FEC2,x ; clear DAV:0 JMP LEDD4 ; finish (IEC) LECE6 PHA ; push to stack STA $05E8 LDA #$83 LECEC STX $BA PHA LDA $F9 ; flag AND #$30 TAX PLA STA $FEC0,x ; write to PortA LECF8 LDA $FEC2,x ; wait for ST >0 BMI LECF8 LDA $05E8 ; get databyte STA $FEC0,x ; write to PortA LDA #$00 STA $FEC2,x ; DAV = 0 LED08 LDA $FEC2,x ; wait for ACK = 1 BPL LED08 LDA $FEC1,x ; read status-bits AND #$03 JSR LF41E ; set status JMP LEDDB ;--------------------------------------------------------------------------------------------------- LEDD4 LDA $FEC2,x ; read ST BPL LEDD4 BMI LEDE0 ; wait for ACK:0 LEDDB LDA #$00 STA $FEC0,x ; set port to #$00 LEDE0 LDA #$40 STA $FEC2,x ; Set Bit 6 = DAV:1 LDX $BA PLA CLC RTS ; --------------------------------------------------------------------------------------------------- ;part of ioinit LEDEA STA $FEF2 ; TIA-Copy , Akku #$40 STA $FEC5 ; set DDRC STA $FEC2 ; set DAV DEX STX $FEC3 ; set DDRA to output JMP LCFEA ;---------------------------------------------------------------------------------------------------- LF41E ORA $90 STA $90 RTS ;----------------------------------------------------------------------------------------------------
Letzte Änderung: 2022-04-18 10:32:57