mirror of
https://github.com/flowenol/applesoft-lite.git
synced 2024-12-12 23:29:12 +00:00
Added support for alternative memory locations of Apple-1 Serial Interface Card
This commit is contained in:
parent
943d2298f4
commit
db624e519d
@ -1,5 +1,5 @@
|
|||||||
MEMORY {
|
MEMORY {
|
||||||
BASROM: start = $6000, size = $2000, fill = yes, file = %O;
|
BASROM: start = $6000, size = $203F, fill = yes, file = %O;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
||||||
|
113
apple1serial.s
113
apple1serial.s
@ -7,11 +7,26 @@
|
|||||||
.import ERROR, FIX_LINKS, OUTDO
|
.import ERROR, FIX_LINKS, OUTDO
|
||||||
.export SerialLoad, SerialSave, SerialMenu
|
.export SerialLoad, SerialSave, SerialMenu
|
||||||
|
|
||||||
SERIAL_MONITOR := $C100
|
SERIAL_MONITOR_C000 := $C100
|
||||||
SERIAL_READY := $C000
|
SERIAL_READY_C000 := $C000
|
||||||
SERIAL_ID := $C0FC
|
SERIAL_ID_C000 := $C0FC
|
||||||
SERIAL_API_READ := $C1EC
|
SERIAL_API_READ_C000 := $C1EC
|
||||||
SERIAL_API_WRITE := $C213
|
SERIAL_API_WRITE_C000 := $C213
|
||||||
|
|
||||||
|
SERIAL_MONITOR_C300 := $C400
|
||||||
|
SERIAL_READY_C300 := $C300
|
||||||
|
SERIAL_ID_C300 := $C3FC
|
||||||
|
SERIAL_API_READ_C300 := $C4EC
|
||||||
|
SERIAL_API_WRITE_C300 := $C513
|
||||||
|
|
||||||
|
SERIAL_MONITOR_C600 := $C700
|
||||||
|
SERIAL_READY_C600 := $C600
|
||||||
|
SERIAL_ID_C600 := $C6FC
|
||||||
|
SERIAL_API_READ_C600 := $C7EC
|
||||||
|
SERIAL_API_WRITE_C600 := $C813
|
||||||
|
|
||||||
|
; 0 - $C000, 1 - $C300, 2 - $C600
|
||||||
|
SERIAL_VARIANT := $40
|
||||||
|
|
||||||
; ZP locations get backed up here
|
; ZP locations get backed up here
|
||||||
ZPTemp := $0380
|
ZPTemp := $0380
|
||||||
@ -34,18 +49,54 @@ STR2INT_END := $0A
|
|||||||
; See if Apple-1 Serial Interface card is present and display error if not
|
; See if Apple-1 Serial Interface card is present and display error if not
|
||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
CheckSerial:
|
CheckSerial:
|
||||||
ldy SERIAL_ID
|
ldy SERIAL_ID_C000
|
||||||
|
cpy #'A'
|
||||||
|
bne @1
|
||||||
|
ldy SERIAL_ID_C000 + 1
|
||||||
|
cpy #'1'
|
||||||
|
bne @1
|
||||||
|
ldy SERIAL_ID_C000 + 2
|
||||||
|
cpy #'S'
|
||||||
|
bne @1
|
||||||
|
ldy SERIAL_ID_C000 + 3
|
||||||
|
cpy #'I'
|
||||||
|
bne @1
|
||||||
|
lda #$00
|
||||||
|
sta SERIAL_VARIANT
|
||||||
|
rts
|
||||||
|
|
||||||
|
@1:
|
||||||
|
ldy SERIAL_ID_C300
|
||||||
|
cpy #'A'
|
||||||
|
bne @2
|
||||||
|
ldy SERIAL_ID_C300 + 1
|
||||||
|
cpy #'1'
|
||||||
|
bne @2
|
||||||
|
ldy SERIAL_ID_C300 + 2
|
||||||
|
cpy #'S'
|
||||||
|
bne @2
|
||||||
|
ldy SERIAL_ID_C300 + 3
|
||||||
|
cpy #'I'
|
||||||
|
bne @2
|
||||||
|
lda #$01
|
||||||
|
sta SERIAL_VARIANT
|
||||||
|
rts
|
||||||
|
|
||||||
|
@2:
|
||||||
|
ldy SERIAL_ID_C600
|
||||||
cpy #'A'
|
cpy #'A'
|
||||||
bne SerialErr
|
bne SerialErr
|
||||||
ldy SERIAL_ID + 1
|
ldy SERIAL_ID_C600 + 1
|
||||||
cpy #'1'
|
cpy #'1'
|
||||||
bne SerialErr
|
bne SerialErr
|
||||||
ldy SERIAL_ID + 2
|
ldy SERIAL_ID_C600 + 2
|
||||||
cpy #'S'
|
cpy #'S'
|
||||||
bne SerialErr
|
bne SerialErr
|
||||||
ldy SERIAL_ID + 3
|
ldy SERIAL_ID_C600 + 3
|
||||||
cpy #'I'
|
cpy #'I'
|
||||||
bne SerialErr
|
bne SerialErr
|
||||||
|
lda #$02
|
||||||
|
sta SERIAL_VARIANT
|
||||||
rts
|
rts
|
||||||
|
|
||||||
SerialErr:
|
SerialErr:
|
||||||
@ -61,8 +112,13 @@ SynErr:
|
|||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
SerialMenu:
|
SerialMenu:
|
||||||
jsr CheckSerial
|
jsr CheckSerial
|
||||||
jsr SERIAL_MONITOR
|
lda SERIAL_VARIANT
|
||||||
|
bne @1
|
||||||
|
jsr SERIAL_MONITOR_C000
|
||||||
|
rts
|
||||||
|
@1:
|
||||||
|
jsr SERIAL_MONITOR_C300
|
||||||
|
rts
|
||||||
|
|
||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
; Save program via the Apple-1 Serial Interface
|
; Save program via the Apple-1 Serial Interface
|
||||||
@ -87,10 +143,20 @@ SerialSave:
|
|||||||
lda TXTTAB+1
|
lda TXTTAB+1
|
||||||
sta BEG_ADDR_H
|
sta BEG_ADDR_H
|
||||||
|
|
||||||
jsr SERIAL_API_WRITE
|
lda SERIAL_VARIANT
|
||||||
|
bne @2
|
||||||
|
jsr SERIAL_API_WRITE_C000
|
||||||
|
jmp @4
|
||||||
|
@2:
|
||||||
|
cmp #$01
|
||||||
|
bne @3
|
||||||
|
jsr SERIAL_API_WRITE_C300
|
||||||
|
jmp @4
|
||||||
|
@3:
|
||||||
|
jsr SERIAL_API_WRITE_C600
|
||||||
|
@4:
|
||||||
jsr RestoreZPForSave ; Put the zero page back
|
jsr RestoreZPForSave ; Put the zero page back
|
||||||
rts
|
rts
|
||||||
|
|
||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
; Restores the 4 bytes of the ZP which were saved during SerialSave
|
; Restores the 4 bytes of the ZP which were saved during SerialSave
|
||||||
; ----------------------------------------------------------------------------
|
; ----------------------------------------------------------------------------
|
||||||
@ -137,15 +203,17 @@ GetLength: ; Get file name from input line
|
|||||||
|
|
||||||
@2:
|
@2:
|
||||||
cpy #0 ; Read 6 chars or EOL, did we get anything?
|
cpy #0 ; Read 6 chars or EOL, did we get anything?
|
||||||
beq SynErr
|
bne @3
|
||||||
|
jmp SynErr
|
||||||
|
|
||||||
|
@3:
|
||||||
lda #STR2INT_END ; append integer string end marker
|
lda #STR2INT_END ; append integer string end marker
|
||||||
sta STR2INT_BUF,y
|
sta STR2INT_BUF,y
|
||||||
jsr String2Int
|
jsr String2Int
|
||||||
lda STR2INT_INT
|
lda STR2INT_INT
|
||||||
bne @3
|
bne @4
|
||||||
dec STR2INT_INT+1
|
dec STR2INT_INT+1
|
||||||
@3:
|
@4:
|
||||||
dec STR2INT_INT
|
dec STR2INT_INT
|
||||||
clc
|
clc
|
||||||
SetLoadAddresses:
|
SetLoadAddresses:
|
||||||
@ -164,7 +232,18 @@ SetLoadAddresses:
|
|||||||
lda TXTTAB+1
|
lda TXTTAB+1
|
||||||
sta BEG_ADDR_H
|
sta BEG_ADDR_H
|
||||||
|
|
||||||
jsr SERIAL_API_READ
|
lda SERIAL_VARIANT
|
||||||
|
bne @1
|
||||||
|
jsr SERIAL_API_READ_C000
|
||||||
|
jmp @3
|
||||||
|
@1:
|
||||||
|
cmp #$01
|
||||||
|
bne @2
|
||||||
|
jsr SERIAL_API_READ_C300
|
||||||
|
jmp @3
|
||||||
|
@2:
|
||||||
|
jsr SERIAL_API_READ_C600
|
||||||
|
@3:
|
||||||
jsr RestoreZPForLoad ; Put the zero page back
|
jsr RestoreZPForLoad ; Put the zero page back
|
||||||
|
|
||||||
jmp FIX_LINKS
|
jmp FIX_LINKS
|
||||||
|
Loading…
Reference in New Issue
Block a user