* * I'm fEDD up ;-) * * (c) 2012-2017, Brutal Deluxe Software * *---------------------------- dftSTART = $00 dftEND = $88 ; $22 to $27 ($9C) dftSTEP = $04 maxEND = $9C ; for 40-track *---------- CSLT = $10 CDRV = $11 CTRK = $12 *---------------------------- ds \ initEDD lda POS ; slot*16 asl asl asl asl sta CSLT lda POD ; drive sta CDRV lda #dftSTART ; default sta STARTTRK ; start track *---------- Get current phase lda POS ; 0..7 asl ; 0..14 clc adc POD ; 1..16 sec sbc #1 ; 0..15 tax lda tblPHASE,x sta CTRK rts *--- All current phase of each slot/drive tblPHASE ds 16,-1 ; 8*2 *---------- resetEDD lda #dftSTART sta STARTTRK lda #dftEND sta ENDTRK resetSTEP lda #dftSTEP sta STEP rts *---------------------------- MTRON ldx CSLT lda $c089,x txa clc adc CDRV tax lda $c089,x jsr W3 rts *---------------------------- MTROFF ldx CSLT lda $c088,x lda POS ; 0..7 asl ; 0..14 clc adc POD ; 1..15 or 2..16 sec sbc #1 ; 0..14 or 1..15 tax lda CTRK sta tblPHASE,x rts *---------------------------- W1 lda ARMWAITR beq W1S ldx ARMCVH ldy ARMCVL jmp WTIN W1S ldx #$00 ldy #$DC jmp WTIN W2 ldx #$04 ldy #$00 jmp WTIN W3 ldx #$20 ldy #$00 jmp WTIN WTIN lda #2 sta WRKSPC WL lda $c0ec dec WRKSPC bne WL dey cpy #$ff bne WTIN dex cpx #$ff bne WTIN rts *---------- NTRKCALC lda STEP beq NTD1 lda CTRK cmp ENDTRK beq NTD1 bcs NTDWN adc STEP cmp ENDTRK beq NTD bcs NTD1 cmp CTRK bcc NTD1 NTD clc rts NTDWN sbc STEP cmp CTRK bcs NTD1 cmp ENDTRK bcc NTD NTD1 sec rts *---------- * Other options moved to UP.OPTIONS ARMWAITR DS 1 ARMCVH DS 1 ARMCVL DS 1 WRKSPC DS 1 WANTTRK DS 1 WANTHALF DS 1 PHSLST DS 1 ds \ *---------- DCCDUMP LDA DCCSLOT ASL ASL ASL ASL TAX LDA #>L4000 STA $00+1 LDY #E4000 BEQ DNDUMP CHKRDY LDA $C081,X BPL CHKRDY LDA $C080,X STA ($00),Y INY BNE LOOP1 INC $00+1 BNE CHKRDY DNDUMP RTS *---------------------------- DCC2NIB LDA #>L4000 STA $04+1 STA $06+1 LDA #>LB000-1 STA $08+1 LDY #L7800 BNE DCL2 LDA #>LB000-1 ; sort data STA $08+1 DCL1 LDA ($06),Y TAX LDA ($08),Y STA ($06),Y TXA STA ($08),Y INY BNE DCL1 INC $06+1 DEC $08+1 LDA $06+1 CMP $08+1 BCC DCL1 RTS ds \ *---------------------------- TDUMPW LDA #>L4000 ; read from $4000 to $7FFF JSR TDS1 ; not useful, but... LDA #>L4000 ; read $4000-$77FF STA $00+1 ; set $7800-$AFFF lda #L7800 ; STA $02+1 ; if high nibble, save $80 LDA #LB000 BNE TCL1 RTS TCS1 ORA #$80 ; force bit 7 of source STA ($00),Y LDA TIMEBITS ; otherwise, store 1 JMP TCL2 *---------- *TDS LDA #$60 TDS1 STA $00+1 LDY #