ovl1c: sector format

This commit is contained in:
Joshua Bell 2018-04-01 20:36:02 -07:00
parent 177e988398
commit 5f09da834a
2 changed files with 113 additions and 62 deletions

View File

@ -10,7 +10,7 @@
L0000 := $0000 L0000 := $0000
L0080 := $0080 L0080 := $0080
L0CAF := $0CAF L0CAF := $0CAF
L0CED := $0CED eject_disk := $0CED
L0D26 := $0D26 L0D26 := $0D26
L0D51 := $0D51 L0D51 := $0D51
L0D5F := $0D5F L0D5F := $0D5F
@ -995,7 +995,7 @@ LD8A9: lda winfo_dialog::window_id
tax tax
lda LD3F7,x lda LD3F7,x
pha pha
jsr L0CED jsr eject_disk
pla pla
tay tay
ldx #$80 ldx #$80
@ -1026,7 +1026,7 @@ LD8FB: jsr LE4A8
tax tax
lda LD3F7,x lda LD3F7,x
pha pha
jsr L0CED jsr eject_disk
pla pla
tay tay
ldx #$80 ldx #$80
@ -1047,7 +1047,7 @@ LD928: jsr LE491
tax tax
lda LD3F7,x lda LD3F7,x
pha pha
jsr L0CED jsr eject_disk
pla pla
tay tay
ldx #$80 ldx #$80
@ -1060,12 +1060,12 @@ LD955: jsr LE507
jsr L10FB jsr L10FB
ldx LD417 ldx LD417
lda LD3F7,x lda LD3F7,x
jsr L0CED jsr eject_disk
ldx LD418 ldx LD418
cpx LD417 cpx LD417
beq LD972 beq LD972
lda LD3F7,x lda LD3F7,x
jsr L0CED jsr eject_disk
LD972: lda #$09 LD972: lda #$09
jsr LEB84 jsr LEB84
jmp LD61C jmp LD61C

View File

@ -322,12 +322,12 @@ L09F8: cmp #$0C
tay tay
L09FD: sec L09FD: sec
jsr L0A1D jsr L0A1D
lda L0B4B,y lda phase_on_table,y
jsr L0B3A jsr L0B3A
lda L0C39 lda L0C39
clc clc
jsr motor jsr motor
lda L0B57,y lda phase_off_table,y
jsr L0B3A jsr L0B3A
inc L0C38 inc L0C38
bne L09D6 bne L09D6
@ -347,21 +347,26 @@ done: rts
;;; ============================================================ ;;; ============================================================
L0A2E: jsr L0C0E .proc format_sector
jsr rts2
lda TESTWP,x ; Check write protect ??? lda TESTWP,x ; Check write protect ???
lda WPRES,x lda WPRES,x
lda #$FF
lda #$FF ; Self-sync data
sta WRMODE,x ; Turn on write mode sta WRMODE,x ; Turn on write mode
cmp XMIT,x ; Start sending bits to disk cmp XMIT,x ; Start sending bits to disk
pha ; 32 cycles... pha ; 32 cycles...
pla pla
nop nop
ldy #$04 ldy #4
L0A44: pha
sync: pha
pla pla
jsr write2 jsr write2
dey dey
bne L0A44 bne sync
;; Address marks
lda #$D5 lda #$D5
jsr write jsr write
lda #$AA lda #$AA
@ -372,25 +377,31 @@ L0A44: pha
nop nop
nop nop
nop nop
bne L0A65 bne :+
L0A62: jsr L0C0E
L0A65: nop ;; Data
loop: jsr rts2
: nop
nop nop
lda #$96 lda #$96
sta DATA,x sta DATA,x
cmp XMIT,x cmp XMIT,x
dey dey
bne L0A62 bne loop
;; Checksum
bit $00 bit $00
nop nop
L0A75: jsr L0C0E check: jsr rts2
lda #$96 lda #$96
sta DATA,x sta DATA,x
cmp XMIT,x cmp XMIT,x
lda #$96 lda #$96
nop nop
iny iny
bne L0A75 bne check
;; Slip marks
jsr write jsr write
lda #$DE lda #$DE
jsr write jsr write
@ -404,13 +415,14 @@ L0A75: jsr L0C0E
lda XMIT,x lda XMIT,x
rts rts
;;; Write, with appropriate cycle counts ;; Write with appropriate cycle counts
write: nop write: nop
write2: pha write2: pha
pla pla
sta DATA,x sta DATA,x
cmp XMIT,x cmp XMIT,x
rts rts
.endproc
;;; ============================================================ ;;; ============================================================
@ -501,8 +513,9 @@ start: ldx #$11
rts rts
.endproc .endproc
L0B4B: .byte $01, $30, $28, $24, $20, $1E, $1D, $1C, $1C, $1C, $1C, $1C ;;; Timing (100-usecs)
L0B57: .byte $70, $2C, $26, $22, $1F, $1E, $1D, $1C, $1C, $1C, $1C, $1C 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 L0B63: lda L0C21
sta $D6 sta $D6
@ -515,10 +528,10 @@ L0B71: ldy $D4
L0B73: ldx L0C23 L0B73: ldx L0C23
jsr L0AAE jsr L0AAE
bcc L0B7E bcc L0B7E
jmp L0C0E jmp rts2
L0B7E: ldx L0C23 L0B7E: ldx L0C23
jsr L0A2E jsr format_sector
inc $D2 inc $D2
lda $D2 lda $D2
cmp #$10 cmp #$10
@ -534,8 +547,8 @@ L0B96: sta L0C26,y
sec sec
sbc #$05 sbc #$05
tay tay
L0BA2: jsr L0C0E L0BA2: jsr rts2
jsr L0C0E jsr rts2
pha pha
pla pla
nop nop
@ -589,11 +602,11 @@ L0BFA: ldx L0C23
L0C08: dec L0C25 L0C08: dec L0C25
bne L0BFA bne L0BFA
sec sec
L0C0E: rts rts2: rts
L0C0F: ldx #$D6 L0C0F: ldx #$D6
L0C11: jsr L0C0E L0C11: jsr rts2
jsr L0C0E jsr rts2
bit $00 bit $00
dex dex
bne L0C11 bne L0C11
@ -722,63 +735,84 @@ L0CD3: lda L0CEC
L0CEC: .byte 0 L0CEC: .byte 0
;;; ============================================================ ;;; ============================================================
;;; Eject Disk via SmartPort
.proc eject_disk
sta L0D24 sta L0D24
jsr L0D26 jsr L0D26 ; Point $06 at $Cn00
ldy #$07
lda (L0006),y ldy #$07 ; Check firmware bytes
bne L0D19 lda (L0006),y ; $Cn07 = $00 ??
bne done
ldy #$FB ldy #$FB
lda (L0006),y lda (L0006),y ; $CnFB = $7F ??
and #$7F and #$7F
bne L0D19 bne done
ldy #$FF ldy #$FF
lda (L0006),y lda (L0006),y
clc clc
adc #$03 adc #3 ; Locate dispatch routine (offset $CnFF + 3)
sta L0006 sta L0006
lda L0D24 lda L0D24
jsr L0D51 jsr L0D51
sta L0D1E sta control_params_unit_number
jsr L0D1A
.byte $04
.byte $1D
.byte $0D
L0D19: rts
L0D1A: jmp (L0006) ;; Do SmartPort call
jsr smartport_call
.byte $04 ; SmartPort: CONTROL
.addr $0D1D
.byte $03 done: rts
L0D1E: .byte 0
.byte $22 smartport_call:
ora a:$04 jmp (L0006)
.byte 0
.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 L0D24: .byte 0
.byte 0 .byte 0
.endproc
;;; ============================================================
L0D26: sta L0D50 L0D26: sta L0D50
ldx #$11 ldx #$11
lda L0D50 lda L0D50
and #$80 and #$80
beq L0D34 beq L0D34
ldx #$21 ldx #$21
L0D34: stx L0D47 L0D34: stx load_addr
lda L0D50 lda L0D50
and #$70 and #$70
lsr a lsr a
lsr a lsr a
lsr a lsr a
clc clc
adc L0D47 adc load_addr
sta L0D47 sta load_addr
.byte $AD
L0D47: .byte 0 load_addr := * + 1
.byte $BF lda $BF00 ; self-modified
sta $07 sta $07
lda #$00 lda #$00
sta L0006 sta L0006
rts rts
L0D50: .byte 0 L0D50: .byte 0
;;; ============================================================
L0D51: pha L0D51: pha
rol a rol a
pla pla
@ -792,7 +826,9 @@ L0D51: pha
adc #$01 adc #$01
rts rts
ldx $D417 ;;; ============================================================
L0D5F: ldx $D417
lda $D3F7,x lda $D3F7,x
sta block_params::unit_num sta block_params::unit_num
lda #$00 lda #$00
@ -829,7 +865,9 @@ L0DA4: cmp #$A5
sta $D44D sta $D44D
rts rts
lda #$14 ;;; ============================================================
L0DB5: lda #$14
jsr L1133 jsr L1133
lda $D417 lda $D417
asl a asl a
@ -930,7 +968,11 @@ L0EAD: jmp L0E70
L0EB0: .byte 0 L0EB0: .byte 0
L0EB1: .byte 0 L0EB1: .byte 0
and #$F0
;;; ============================================================
L0EB2: and #$F0
sta L0ED6 sta L0ED6
ldx DEVCNT ldx DEVCNT
L0EBA: lda DEVLST,x L0EBA: lda DEVLST,x
@ -948,7 +990,10 @@ L0ECA: lda DEVLST,x
return #$80 return #$80
L0ED6: .byte 0 L0ED6: .byte 0
bit $C010
;;; ============================================================
L0ED7: bit $C010
sta L0FE6 sta L0FE6
and #$FF and #$FF
bpl L0EFF bpl L0EFF
@ -1209,7 +1254,9 @@ L10ED: sec
L10F3: L10F3:
.byte $0E, $0C, $0A, $08, $06, $04, $02, $00 .byte $0E, $0C, $0A, $08, $06, $04, $02, $00
lda #$14 ;;; ============================================================
L10FB: lda #$14
sta L0006 sta L0006
lda #$00 lda #$00
sta L111E sta L111E
@ -1390,7 +1437,9 @@ L126F: jsr L12A5
bpl L126F bpl L126F
L127D: rts L127D: rts
sta ALTZPOFF ;;; ============================================================
L127E: sta ALTZPOFF
sta ROMIN2 sta ROMIN2
jsr BELL1 jsr BELL1
sta ALTZPON sta ALTZPON
@ -1398,10 +1447,10 @@ L127D: rts
lda LCBANK1 lda LCBANK1
rts rts
yax_call MLI_RELAY, ON_LINE, on_line_params2 L1291: yax_call MLI_RELAY, ON_LINE, on_line_params2
rts rts
yax_call MLI_RELAY, ON_LINE, on_line_params L129B: yax_call MLI_RELAY, ON_LINE, on_line_params
rts rts
L12A5: yax_call MLI_RELAY, WRITE_BLOCK, block_params 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 L12AF: yax_call MLI_RELAY, READ_BLOCK, block_params
rts rts
;;; ============================================================
L12B9: .byte 0 L12B9: .byte 0
.byte $3C .byte $3C
.byte 0 .byte 0