disasm: softswitches and string wrapping

This commit is contained in:
Joshua Bell 2019-04-20 21:13:24 -07:00
parent e255e65dec
commit 7a7a3ffa33
3 changed files with 81 additions and 40 deletions

View File

@ -6,7 +6,20 @@
.org $2000 .org $2000
.setcpu "6502" .setcpu "6502"
LC300 := $C300 SLOT3_FIRMWARE := $C300
PORT2_ACIA_STATUS := $C0A9
PORT2_ACIA_COMMAND := $C0AA
PORT2_ACIA_CONTROL := $C0AB
DISXY := $C058
ENBXY := $C059
DISVBL := $C05A
ENVBL := $C05B
X0EDGE1 := $C05C
X0EDGE2 := $C05D
MOUSE_BTN := $C063
L2000: L2000:
L2001 := * + 1 L2001 := * + 1
@ -48,18 +61,24 @@ L2041: sty $07
lsr a lsr a
sta $09 sta $09
bne L206B bne L206B
lda #$8D lda #$8D
sta $2624 ; TODO: modifying string resource?
sta $26E3 ; ??? ;; Convert spaces to newlines if 40 Columns
sta $2700 ; ??? sta chain + (wrap1 - L1000)
sta $2716 ; ??? sta chain + (wrap4 - L1000)
sta $2684 ; ??? sta chain + (wrap5 - L1000)
sta chain + (wrap3 - L1000)
sta chain + (wrap2 - L1000)
inc L2095 inc L2095
inc L2099 inc L2099
bne L206E bne L206E
L206B: jsr LC300
L206B: jsr SLOT3_FIRMWARE
;; --------------------------------------------------
;; Copy to $1000 ;; Copy to $1000
@ -117,10 +136,12 @@ L20C2: asl a
asl a asl a
asl a asl a
bne L20CB bne L20CB
L20C8: lda DEVLST,x L20C8: lda DEVLST,x
L20CB: and #$70 L20CB: and #%01110000 ; slot
ora #$80 ora #$80
sta L22E3 sta L22E3 ; Set $C0nn address
lda $11FE lda $11FE
and #$03 and #$03
beq L20E3 beq L20E3
@ -187,7 +208,7 @@ L2156: lda #OPC_JMP_abs
lda MACHID lda MACHID
ora #%00000001 ; has clock ora #%00000001 ; has clock
sta MACHID sta MACHID
bit $C000 bit KBD
bmi L218C bmi L218C
lda $0A lda $0A
cmp #$0B cmp #$0B
@ -204,7 +225,7 @@ L2176: lda $1204
lda DATELO+1 lda DATELO+1
sbc $1204 sbc $1204
bcs L21DF bcs L21DF
L218C: bit $C010 L218C: bit KBDSTRB
rol $11FE rol $11FE
lda #$03 lda #$03
cmp $0A cmp $0A
@ -239,8 +260,8 @@ L21D3: lda $1204
jsr L2210 jsr L2210
jsr L238A jsr L238A
jsr L111A jsr L111A
L21DF: lda $C08B L21DF: lda RWRAM1
lda $C08B lda RWRAM1
lda DATETIME+1 lda DATETIME+1
sta L2202 sta L2202
clc clc
@ -250,6 +271,9 @@ L21DF: lda $C08B
sta L2203 sta L2203
adc #$00 adc #$00
sta L22B2 sta L22B2
;; Relocate clock driver
ldy #$7C ldy #$7C
L21FE: lda L2265,y L21FE: lda L2265,y
L2202 := * + 1 L2202 := * + 1
@ -316,20 +340,24 @@ L223F: jsr L238A
cmp #$3C cmp #$3C
L2264: rts L2264: rts
;;; ============================================================
;;; Clock Driver (Relocatable)
;;; ============================================================
L2265: cld L2265: cld
cld cld
php php
sei sei
L2269: L2269:
L226A := * + 1 L226A := * + 1
lda $C0AA lda PORT2_ACIA_COMMAND
pha pha
ldy #$03 ldy #$03
ldx #$16 ldx #$16
lda #$08 lda #$08
L2273: L2273:
L2274 := * + 1 L2274 := * + 1
sta $C0AA sta PORT2_ACIA_COMMAND
L2276: dex L2276: dex
bne L2276 bne L2276
eor #$0A eor #$0A
@ -345,7 +373,7 @@ L2286: .byte $3A
bne L2286 bne L2286
L2289: L2289:
L228A := * + 1 L228A := * + 1
lda $C0A9 lda PORT2_ACIA_STATUS
rol a rol a
rol a rol a
rol a rol a
@ -358,7 +386,7 @@ L228A := * + 1
bpl L2284 bpl L2284
pla pla
L229F := * + 1 L229F := * + 1
sta $C0AA sta PORT2_ACIA_COMMAND
ldx #$06 ldx #$06
L22A3: lda $0201,x L22A3: lda $0201,x
L22A6: dec $0200,x L22A6: dec $0200,x
@ -401,13 +429,13 @@ L22DB := * + 1
.byte $62 .byte $62
L22E2: L22E2:
L22E3 := * + 1 L22E3 := * + 1
lda $C0E0 lda $C0E0 ; Set to $C0x0, n=slot+8
lda $C05A lda DISVBL
ldy #$01 ldy #$01
ldx #$16 ldx #$16
L22EC: dex L22EC: dex
bne L22EC bne L22EC
lda $C05A,y lda DISVBL,y
ldx #$0B ldx #$0B
dey dey
bpl L22EC bpl L22EC
@ -420,7 +448,7 @@ L2300: lda #$5D
sec sec
L2303: sbc #$01 L2303: sbc #$01
bne L2303 bne L2303
L2307: lda $C063 L2307: lda MOUSE_BTN
rol a rol a
ror $0200,x ror $0200,x
lsr $0201,x lsr $0201,x
@ -430,12 +458,12 @@ L2307: lda $C063
ldy #$04 ldy #$04
dex dex
bpl L2300 bpl L2300
lda $C0AA lda PORT2_ACIA_COMMAND
nop nop
ldy #$03 ldy #$03
ldx #$16 ldx #$16
lda #$02 lda #$02
L2324: sta $C0AA L2324: sta PORT2_ACIA_COMMAND
L2327: dex L2327: dex
bne L2327 bne L2327
eor #$0A eor #$0A
@ -449,7 +477,7 @@ L2336 := * + 1
lda #$5D lda #$5D
L2337: .byte $3A L2337: .byte $3A
bne L2337 bne L2337
L233A: lda $C0A9 L233A: lda PORT2_ACIA_STATUS
eor #$20 eor #$20
rol a rol a
rol a rol a
@ -463,36 +491,36 @@ L233A: lda $C0A9
bpl L2335 bpl L2335
nop nop
nop nop
lda $C05B lda ENVBL
sta $C059 sta ENBXY
sta $C05C sta X0EDGE1
nop nop
nop nop
nop nop
nop nop
lda $C058 lda DISXY
ldx #$15 ldx #$15
L2364: dex L2364: dex
bne L2364 bne L2364
ldx #$09 ldx #$09
L2369: ldy #$04 L2369: ldy #$04
L236B: lda $C063 L236B: lda MOUSE_BTN
rol a rol a
ror $0200,x ror $0200,x
lsr $0201,x lsr $0201,x
sta $C05D sta X0EDGE2
nop nop
nop nop
nop nop
nop nop
nop nop
nop nop
sta $C05C sta X0EDGE1
dey dey
bne L236B bne L236B
dex dex
bpl L2369 bpl L2369
lda $C05A lda DISVBL
L238A: jsr L2265 L238A: jsr L2265
rts rts
@ -507,7 +535,7 @@ L239C: .byte $DF
.byte $FF .byte $FF
chain:
L239E: L239E:
;; Relocated to $1000 ;; Relocated to $1000
@ -732,10 +760,10 @@ L11C3: lda #$20
sta $0C sta $0C
L11C7: lda #$02 L11C7: lda #$02
jsr WAIT jsr WAIT
sta $C030 sta SPKR
lda #$24 lda #$24
jsr WAIT jsr WAIT
sta $C030 sta SPKR
dec $0C dec $0C
bne L11C7 bne L11C7
rts rts
@ -765,15 +793,27 @@ L11C7: lda #$02
L1272: .byte $A0 L1272: .byte $A0
HIASCIIZ "\rCopyright (c) 1986 Creative Peripherals Unlimited, Inc." HIASCII "\rCopyright (c) 1986 "
wrap1 := *-1
HIASCIIZ "Creative Peripherals Unlimited, Inc."
HIASCIIZ "Unable to find a '.SYSTEM' file!" HIASCIIZ "Unable to find a '.SYSTEM' file!"
HIASCIIZ "Remove Write-Protect tab, Replace disk, and Press a key..."
HIASCII "Remove Write-Protect tab, "
wrap2 := *-1
HIASCIIZ "Replace disk, and Press a key..."
HIASCIIZ "Disk error! Unable to continue!!!" HIASCIIZ "Disk error! Unable to continue!!!"
HIASCIIZ "Seiko //c driver installed. " HIASCIIZ "Seiko //c driver installed. "
wrap4 := *-2
HIASCIIZ "Seiko //e driver installed. " HIASCIIZ "Seiko //e driver installed. "
wrap5 := *-2
HIASCII "Current year is 19" HIASCII "Current year is 19"
.byte 0 .byte 0, $AE
HIASCIIZ ". OK? (Y/N) " wrap3 := *
HIASCIIZ " OK? (Y/N) "
HIASCIIZ "No clock! Driver not installed...\r" HIASCIIZ "No clock! Driver not installed...\r"
HIASCIIZ "Running " HIASCIIZ "Running "

View File

@ -15,6 +15,7 @@ MAX_DW := $FFFF
;;; Softswitches ;;; Softswitches
CLR80VID := $C00C ; 40 Columns CLR80VID := $C00C ; 40 Columns
SPKR := $C030 ; Toggle speaker
ROMIN2 := $C082 ; Read ROM; no write ROMIN2 := $C082 ; Read ROM; no write
RWRAM1 := $C08B ; Read/write RAM bank 1 RWRAM1 := $C08B ; Read/write RAM bank 1

View File

@ -1,5 +1,5 @@
GLOBAL { GLOBAL {
OUTPUTNAME "clock.system.s"; OUTPUTNAME "tmp.s";
INPUTNAME "orig/CLOCK.SYSTEM.SYS"; INPUTNAME "orig/CLOCK.SYSTEM.SYS";
STARTADDR $2000; STARTADDR $2000;
CPU "6502"; CPU "6502";