From 5f09da834affdbb0441847ab67467e79131e7c9a Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Sun, 1 Apr 2018 20:36:02 -0700 Subject: [PATCH] ovl1c: sector format --- desktop/ovl1b.s | 12 ++-- desktop/ovl1c.s | 163 +++++++++++++++++++++++++++++++----------------- 2 files changed, 113 insertions(+), 62 deletions(-) diff --git a/desktop/ovl1b.s b/desktop/ovl1b.s index e35380c..fc1ecf7 100644 --- a/desktop/ovl1b.s +++ b/desktop/ovl1b.s @@ -10,7 +10,7 @@ L0000 := $0000 L0080 := $0080 L0CAF := $0CAF -L0CED := $0CED +eject_disk := $0CED L0D26 := $0D26 L0D51 := $0D51 L0D5F := $0D5F @@ -995,7 +995,7 @@ LD8A9: lda winfo_dialog::window_id tax lda LD3F7,x pha - jsr L0CED + jsr eject_disk pla tay ldx #$80 @@ -1026,7 +1026,7 @@ LD8FB: jsr LE4A8 tax lda LD3F7,x pha - jsr L0CED + jsr eject_disk pla tay ldx #$80 @@ -1047,7 +1047,7 @@ LD928: jsr LE491 tax lda LD3F7,x pha - jsr L0CED + jsr eject_disk pla tay ldx #$80 @@ -1060,12 +1060,12 @@ LD955: jsr LE507 jsr L10FB ldx LD417 lda LD3F7,x - jsr L0CED + jsr eject_disk ldx LD418 cpx LD417 beq LD972 lda LD3F7,x - jsr L0CED + jsr eject_disk LD972: lda #$09 jsr LEB84 jmp LD61C diff --git a/desktop/ovl1c.s b/desktop/ovl1c.s index c79d273..f0b0711 100644 --- a/desktop/ovl1c.s +++ b/desktop/ovl1c.s @@ -322,12 +322,12 @@ L09F8: cmp #$0C tay L09FD: sec jsr L0A1D - lda L0B4B,y + lda phase_on_table,y jsr L0B3A lda L0C39 clc jsr motor - lda L0B57,y + lda phase_off_table,y jsr L0B3A inc L0C38 bne L09D6 @@ -347,21 +347,26 @@ done: rts ;;; ============================================================ -L0A2E: jsr L0C0E +.proc format_sector + jsr rts2 lda TESTWP,x ; Check write protect ??? lda WPRES,x - lda #$FF + + lda #$FF ; Self-sync data sta WRMODE,x ; Turn on write mode cmp XMIT,x ; Start sending bits to disk pha ; 32 cycles... pla nop - ldy #$04 -L0A44: pha + ldy #4 + +sync: pha pla jsr write2 dey - bne L0A44 + bne sync + + ;; Address marks lda #$D5 jsr write lda #$AA @@ -372,25 +377,31 @@ L0A44: pha nop nop nop - bne L0A65 -L0A62: jsr L0C0E -L0A65: nop + bne :+ + + ;; Data +loop: jsr rts2 +: nop nop lda #$96 sta DATA,x cmp XMIT,x dey - bne L0A62 + bne loop + + ;; Checksum bit $00 nop -L0A75: jsr L0C0E +check: jsr rts2 lda #$96 sta DATA,x cmp XMIT,x lda #$96 nop iny - bne L0A75 + bne check + + ;; Slip marks jsr write lda #$DE jsr write @@ -404,13 +415,14 @@ L0A75: jsr L0C0E lda XMIT,x rts -;;; Write, with appropriate cycle counts + ;; Write with appropriate cycle counts write: nop write2: pha pla sta DATA,x cmp XMIT,x rts +.endproc ;;; ============================================================ @@ -501,8 +513,9 @@ start: ldx #$11 rts .endproc -L0B4B: .byte $01, $30, $28, $24, $20, $1E, $1D, $1C, $1C, $1C, $1C, $1C -L0B57: .byte $70, $2C, $26, $22, $1F, $1E, $1D, $1C, $1C, $1C, $1C, $1C +;;; Timing (100-usecs) +phase_on_table: .byte $01, $30, $28, $24, $20, $1E, $1D, $1C, $1C, $1C, $1C, $1C +phase_off_table: .byte $70, $2C, $26, $22, $1F, $1E, $1D, $1C, $1C, $1C, $1C, $1C L0B63: lda L0C21 sta $D6 @@ -515,10 +528,10 @@ L0B71: ldy $D4 L0B73: ldx L0C23 jsr L0AAE bcc L0B7E - jmp L0C0E + jmp rts2 L0B7E: ldx L0C23 - jsr L0A2E + jsr format_sector inc $D2 lda $D2 cmp #$10 @@ -534,8 +547,8 @@ L0B96: sta L0C26,y sec sbc #$05 tay -L0BA2: jsr L0C0E - jsr L0C0E +L0BA2: jsr rts2 + jsr rts2 pha pla nop @@ -589,11 +602,11 @@ L0BFA: ldx L0C23 L0C08: dec L0C25 bne L0BFA sec -L0C0E: rts +rts2: rts L0C0F: ldx #$D6 -L0C11: jsr L0C0E - jsr L0C0E +L0C11: jsr rts2 + jsr rts2 bit $00 dex bne L0C11 @@ -722,63 +735,84 @@ L0CD3: lda L0CEC L0CEC: .byte 0 ;;; ============================================================ +;;; Eject Disk via SmartPort +.proc eject_disk sta L0D24 - jsr L0D26 - ldy #$07 - lda (L0006),y - bne L0D19 + jsr L0D26 ; Point $06 at $Cn00 + + ldy #$07 ; Check firmware bytes + lda (L0006),y ; $Cn07 = $00 ?? + bne done + ldy #$FB - lda (L0006),y + lda (L0006),y ; $CnFB = $7F ?? and #$7F - bne L0D19 + bne done + ldy #$FF lda (L0006),y clc - adc #$03 + adc #3 ; Locate dispatch routine (offset $CnFF + 3) sta L0006 + lda L0D24 jsr L0D51 - sta L0D1E - jsr L0D1A - .byte $04 - .byte $1D - .byte $0D -L0D19: rts + sta control_params_unit_number -L0D1A: jmp (L0006) + ;; Do SmartPort call + jsr smartport_call + .byte $04 ; SmartPort: CONTROL + .addr $0D1D - .byte $03 -L0D1E: .byte 0 - .byte $22 - ora a:$04 - .byte 0 +done: rts + +smartport_call: + jmp (L0006) + +.proc control_params +param_count: .byte 3 +unit_number: .byte 0 +control_list: .addr L0D22 +control_code: .byte $04 ; Control Code: Eject disk +.endproc +control_params_unit_number := control_params::unit_number + +L0D22: .byte 0, 0 L0D24: .byte 0 .byte 0 + +.endproc + +;;; ============================================================ + L0D26: sta L0D50 ldx #$11 lda L0D50 and #$80 beq L0D34 ldx #$21 -L0D34: stx L0D47 +L0D34: stx load_addr lda L0D50 and #$70 lsr a lsr a lsr a clc - adc L0D47 - sta L0D47 - .byte $AD -L0D47: .byte 0 - .byte $BF + adc load_addr + sta load_addr + + load_addr := * + 1 + lda $BF00 ; self-modified sta $07 lda #$00 sta L0006 rts L0D50: .byte 0 + +;;; ============================================================ + L0D51: pha rol a pla @@ -792,7 +826,9 @@ L0D51: pha adc #$01 rts - ldx $D417 +;;; ============================================================ + +L0D5F: ldx $D417 lda $D3F7,x sta block_params::unit_num lda #$00 @@ -829,7 +865,9 @@ L0DA4: cmp #$A5 sta $D44D rts - lda #$14 +;;; ============================================================ + +L0DB5: lda #$14 jsr L1133 lda $D417 asl a @@ -930,7 +968,11 @@ L0EAD: jmp L0E70 L0EB0: .byte 0 L0EB1: .byte 0 - and #$F0 + + +;;; ============================================================ + +L0EB2: and #$F0 sta L0ED6 ldx DEVCNT L0EBA: lda DEVLST,x @@ -948,7 +990,10 @@ L0ECA: lda DEVLST,x return #$80 L0ED6: .byte 0 - bit $C010 + +;;; ============================================================ + +L0ED7: bit $C010 sta L0FE6 and #$FF bpl L0EFF @@ -1209,7 +1254,9 @@ L10ED: sec L10F3: .byte $0E, $0C, $0A, $08, $06, $04, $02, $00 - lda #$14 +;;; ============================================================ + +L10FB: lda #$14 sta L0006 lda #$00 sta L111E @@ -1390,7 +1437,9 @@ L126F: jsr L12A5 bpl L126F L127D: rts - sta ALTZPOFF +;;; ============================================================ + +L127E: sta ALTZPOFF sta ROMIN2 jsr BELL1 sta ALTZPON @@ -1398,10 +1447,10 @@ L127D: rts lda LCBANK1 rts - yax_call MLI_RELAY, ON_LINE, on_line_params2 +L1291: yax_call MLI_RELAY, ON_LINE, on_line_params2 rts - yax_call MLI_RELAY, ON_LINE, on_line_params +L129B: yax_call MLI_RELAY, ON_LINE, on_line_params rts L12A5: yax_call MLI_RELAY, WRITE_BLOCK, block_params @@ -1410,6 +1459,8 @@ L12A5: yax_call MLI_RELAY, WRITE_BLOCK, block_params L12AF: yax_call MLI_RELAY, READ_BLOCK, block_params rts +;;; ============================================================ + L12B9: .byte 0 .byte $3C .byte 0