mirror of
https://github.com/smartykit/apple1.git
synced 2024-09-27 11:56:44 +00:00
4f19769784
SmartyKit 1 ROM assembler (asm) source and make file for cc65. Easy-to-use development tool to write your own software for SmartyKLit 1 (you need just run make in your Terminal) and learn how ROM is organized.
526 lines
8.0 KiB
NASM
526 lines
8.0 KiB
NASM
;SYMBOLS_TABLE = $031D
|
|
;INSTRUCTIONS_TABLE = $032D
|
|
|
|
VAR_X = $0006
|
|
VAR_Y = $0007
|
|
|
|
;addresses from Woz Monitor
|
|
;ECHO = $FFEF
|
|
;KBD = $D010
|
|
;KBDCR = $D011
|
|
|
|
SCREEN_WIDTH = $28
|
|
|
|
LDA #$FF
|
|
PHA
|
|
LDA #$00
|
|
PHA
|
|
A_0286: LDA #<INSTRUCTIONS
|
|
STA VAR_X ;zp
|
|
LDA #>INSTRUCTIONS
|
|
STA VAR_Y ;zp
|
|
A_028R: JSR ECHO_CR
|
|
|
|
A_0291: LDY #$00
|
|
LDA (VAR_X),Y
|
|
BEQ A_02B2
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
LSR A
|
|
TAX
|
|
LDA (VAR_X),Y
|
|
AND #$0F
|
|
TAY
|
|
LDA SYMBOLS,Y
|
|
A_02A4: JSR ECHO
|
|
DEX
|
|
BNE A_02A4
|
|
INC VAR_X ;zp
|
|
BNE A_0291
|
|
INC VAR_Y ;zp
|
|
BNE A_0291
|
|
A_02B2: INY
|
|
SEC
|
|
LDA #SCREEN_WIDTH
|
|
SBC (VAR_X),Y
|
|
LSR A
|
|
TAX
|
|
LDA #$A0
|
|
A_02BC: JSR ECHO
|
|
DEX
|
|
BNE A_02BC
|
|
LDA (VAR_X),Y
|
|
TAX
|
|
A_02C5: INY
|
|
LDA (VAR_X),Y
|
|
JSR ECHO
|
|
DEX
|
|
BNE A_02C5
|
|
INY
|
|
TYA
|
|
CLC
|
|
ADC VAR_X ;zp
|
|
STA VAR_X ;zp
|
|
LDA #$00
|
|
ADC VAR_Y ;zp
|
|
STA VAR_Y ;zp
|
|
LDA #$10
|
|
JSR FUNC_WAIT
|
|
JSR ECHO_CR
|
|
LDY #$00
|
|
LDA (VAR_X),Y
|
|
BEQ A_0286
|
|
BNE A_028R
|
|
|
|
FUNC_WAIT: PHA
|
|
TXA
|
|
PHA
|
|
TYA
|
|
PHA
|
|
LDY #$FF
|
|
A_02F2: LDX #$FF
|
|
A_02F4: LDA KBDCR
|
|
BPL A_0302
|
|
PLA
|
|
TAY
|
|
PLA
|
|
TAX
|
|
PLA
|
|
LDA KBD
|
|
RTS
|
|
|
|
A_0302: DEX
|
|
BNE A_02F4
|
|
DEY
|
|
BNE A_02F2
|
|
PLA
|
|
TAY
|
|
PLA
|
|
TAX
|
|
PLA
|
|
SEC
|
|
SBC #$01
|
|
BNE FUNC_WAIT
|
|
LDA #$00
|
|
RTS
|
|
|
|
ECHO_CR: PHA
|
|
LDA #$8D
|
|
JSR ECHO
|
|
PLA
|
|
RTS
|
|
|
|
SYMBOLS:
|
|
.BYTE $A0
|
|
.BYTE $AE
|
|
.BYTE $BA
|
|
.BYTE $AC
|
|
.BYTE $BB
|
|
.BYTE $A1
|
|
.BYTE $AD
|
|
.BYTE $DE
|
|
.BYTE $AB
|
|
.BYTE $BD
|
|
.BYTE $BF
|
|
.BYTE $A6
|
|
.BYTE $AA
|
|
.BYTE $A5
|
|
.BYTE $A3
|
|
.BYTE $C0
|
|
|
|
INSTRUCTIONS:
|
|
.BYTE $FF
|
|
.BYTE $1F
|
|
.BYTE $1B
|
|
.BYTE $17
|
|
.BYTE $16
|
|
.BYTE $14
|
|
.BYTE $13
|
|
.BYTE $14
|
|
.BYTE $17
|
|
.BYTE $1B
|
|
.BYTE $1E
|
|
.BYTE $FF
|
|
.BYTE $CF
|
|
.BYTE $1E
|
|
.BYTE $2C
|
|
.BYTE $18
|
|
.BYTE $50
|
|
.BYTE $21
|
|
.BYTE $12
|
|
.BYTE $14
|
|
.BYTE $17
|
|
.BYTE $1C
|
|
.BYTE $FF
|
|
.BYTE $8F
|
|
.BYTE $1B
|
|
.BYTE $16
|
|
.BYTE $12
|
|
.BYTE $21
|
|
.BYTE $70
|
|
.BYTE $31
|
|
.BYTE $10
|
|
.BYTE $11
|
|
.BYTE $18
|
|
.BYTE $FF
|
|
.BYTE $5F
|
|
.BYTE $1D
|
|
.BYTE $15
|
|
.BYTE $50
|
|
.BYTE $21
|
|
.BYTE $70
|
|
.BYTE $41
|
|
.BYTE $18
|
|
.BYTE $1D
|
|
.BYTE $FF
|
|
.BYTE $2F
|
|
.BYTE $1E
|
|
.BYTE $14
|
|
.BYTE $F0
|
|
.BYTE $30
|
|
.BYTE $11
|
|
.BYTE $10
|
|
.BYTE $12
|
|
.BYTE $17
|
|
.BYTE $1E
|
|
.BYTE $FF
|
|
.BYTE $19
|
|
.BYTE $E0
|
|
.BYTE $11
|
|
.BYTE $12
|
|
.BYTE $24
|
|
.BYTE $12
|
|
.BYTE $40
|
|
.BYTE $19
|
|
.BYTE $FF
|
|
.BYTE $14
|
|
.BYTE $50
|
|
.BYTE $23
|
|
.BYTE $11
|
|
.BYTE $20
|
|
.BYTE $21
|
|
.BYTE $20
|
|
.BYTE $12
|
|
.BYTE $15
|
|
.BYTE $18
|
|
.BYTE $19
|
|
.BYTE $16
|
|
.BYTE $12
|
|
.BYTE $30
|
|
.BYTE $12
|
|
.BYTE $19
|
|
.BYTE $DF
|
|
.BYTE $1C
|
|
.BYTE $11
|
|
.BYTE $40
|
|
.BYTE $12
|
|
.BYTE $19
|
|
.BYTE $1A
|
|
.BYTE $17
|
|
.BYTE $25
|
|
.BYTE $26
|
|
.BYTE $34
|
|
.BYTE $17
|
|
.BYTE $2A
|
|
.BYTE $19
|
|
.BYTE $17
|
|
.BYTE $13
|
|
.BYTE $30
|
|
.BYTE $11
|
|
.BYTE $1B
|
|
.BYTE $CF
|
|
.BYTE $18
|
|
.BYTE $50
|
|
.BYTE $13
|
|
.BYTE $2A
|
|
.BYTE $19
|
|
.BYTE $38
|
|
.BYTE $19
|
|
.BYTE $18
|
|
.BYTE $27
|
|
.BYTE $28
|
|
.BYTE $27
|
|
.BYTE $18
|
|
.BYTE $17
|
|
.BYTE $12
|
|
.BYTE $30
|
|
.BYTE $18
|
|
.BYTE $CF
|
|
.BYTE $1A
|
|
.BYTE $50
|
|
.BYTE $15
|
|
.BYTE $19
|
|
.BYTE $17
|
|
.BYTE $14
|
|
.BYTE $13
|
|
.BYTE $22
|
|
.BYTE $13
|
|
.BYTE $16
|
|
.BYTE $17
|
|
.BYTE $16
|
|
.BYTE $13
|
|
.BYTE $21
|
|
.BYTE $12
|
|
.BYTE $14
|
|
.BYTE $17
|
|
.BYTE $15
|
|
.BYTE $20
|
|
.BYTE $13
|
|
.BYTE $1D
|
|
.BYTE $CF
|
|
.BYTE $1C
|
|
.BYTE $40
|
|
.BYTE $12
|
|
.BYTE $28
|
|
.BYTE $15
|
|
.BYTE $13
|
|
.BYTE $11
|
|
.BYTE $30
|
|
.BYTE $12
|
|
.BYTE $28
|
|
.BYTE $12
|
|
.BYTE $10
|
|
.BYTE $11
|
|
.BYTE $12
|
|
.BYTE $14
|
|
.BYTE $17
|
|
.BYTE $18
|
|
.BYTE $12
|
|
.BYTE $10
|
|
.BYTE $1A
|
|
.BYTE $DF
|
|
.BYTE $1D
|
|
.BYTE $12
|
|
.BYTE $30
|
|
.BYTE $14
|
|
.BYTE $1A
|
|
.BYTE $19
|
|
.BYTE $18
|
|
.BYTE $17
|
|
.BYTE $45
|
|
.BYTE $16
|
|
.BYTE $1B
|
|
.BYTE $1D
|
|
.BYTE $18
|
|
.BYTE $26
|
|
.BYTE $17
|
|
.BYTE $18
|
|
.BYTE $1A
|
|
.BYTE $1B
|
|
.BYTE $15
|
|
.BYTE $11
|
|
.BYTE $1C
|
|
.BYTE $EF
|
|
.BYTE $18
|
|
.BYTE $10
|
|
.BYTE $13
|
|
.BYTE $12
|
|
.BYTE $13
|
|
.BYTE $59
|
|
.BYTE $18
|
|
.BYTE $27
|
|
.BYTE $19
|
|
.BYTE $1B
|
|
.BYTE $2C
|
|
.BYTE $1A
|
|
.BYTE $27
|
|
.BYTE $19
|
|
.BYTE $2A
|
|
.BYTE $17
|
|
.BYTE $12
|
|
.BYTE $18
|
|
.BYTE $EF
|
|
.BYTE $1E
|
|
.BYTE $12
|
|
.BYTE $23
|
|
.BYTE $11
|
|
.BYTE $15
|
|
.BYTE $16
|
|
.BYTE $35
|
|
.BYTE $24
|
|
.BYTE $35
|
|
.BYTE $16
|
|
.BYTE $17
|
|
.BYTE $16
|
|
.BYTE $14
|
|
.BYTE $13
|
|
.BYTE $14
|
|
.BYTE $15
|
|
.BYTE $16
|
|
.BYTE $15
|
|
.BYTE $11
|
|
.BYTE $18
|
|
.BYTE $FF
|
|
.BYTE $17
|
|
.BYTE $30
|
|
.BYTE $12
|
|
.BYTE $24
|
|
.BYTE $13
|
|
.BYTE $21
|
|
.BYTE $23
|
|
.BYTE $11
|
|
.BYTE $10
|
|
.BYTE $21
|
|
.BYTE $22
|
|
.BYTE $21
|
|
.BYTE $13
|
|
.BYTE $14
|
|
.BYTE $12
|
|
.BYTE $13
|
|
.BYTE $1D
|
|
.BYTE $FF
|
|
.BYTE $1D
|
|
.BYTE $16
|
|
.BYTE $11
|
|
.BYTE $10
|
|
.BYTE $21
|
|
.BYTE $22
|
|
.BYTE $11
|
|
.BYTE $22
|
|
.BYTE $13
|
|
.BYTE $24
|
|
.BYTE $25
|
|
.BYTE $14
|
|
.BYTE $23
|
|
.BYTE $41
|
|
.BYTE $1A
|
|
.BYTE $FF
|
|
.BYTE $2F
|
|
.BYTE $1D
|
|
.BYTE $16
|
|
.BYTE $15
|
|
.BYTE $20
|
|
.BYTE $31
|
|
.BYTE $13
|
|
.BYTE $24
|
|
.BYTE $15
|
|
.BYTE $16
|
|
.BYTE $47
|
|
.BYTE $13
|
|
.BYTE $11
|
|
.BYTE $10
|
|
.BYTE $12
|
|
.BYTE $19
|
|
.BYTE $FF
|
|
.BYTE $2F
|
|
.BYTE $1D
|
|
.BYTE $1A
|
|
.BYTE $1C
|
|
.BYTE $19
|
|
.BYTE $13
|
|
.BYTE $11
|
|
.BYTE $20
|
|
.BYTE $21
|
|
.BYTE $13
|
|
.BYTE $24
|
|
.BYTE $33
|
|
.BYTE $24
|
|
.BYTE $21
|
|
.BYTE $13
|
|
.BYTE $1A
|
|
.BYTE $EF
|
|
.BYTE $2E
|
|
.BYTE $1D
|
|
.BYTE $1C
|
|
.BYTE $1B
|
|
.BYTE $1D
|
|
.BYTE $1E
|
|
.BYTE $1B
|
|
.BYTE $16
|
|
.BYTE $13
|
|
.BYTE $51
|
|
.BYTE $12
|
|
.BYTE $41
|
|
.BYTE $12
|
|
.BYTE $21
|
|
.BYTE $12
|
|
.BYTE $18
|
|
.BYTE $1A
|
|
.BYTE $1D
|
|
.BYTE $AF
|
|
.BYTE $1E
|
|
.BYTE $1D
|
|
.BYTE $3C
|
|
.BYTE $2D
|
|
.BYTE $4E
|
|
.BYTE $1A
|
|
.BYTE $14
|
|
.BYTE $22
|
|
.BYTE $11
|
|
.BYTE $20
|
|
.BYTE $71
|
|
.BYTE $13
|
|
.BYTE $15
|
|
.BYTE $17
|
|
.BYTE $2C
|
|
.BYTE $1D
|
|
.BYTE $1E
|
|
.BYTE $7F
|
|
.BYTE $4D
|
|
.BYTE $2E
|
|
.BYTE $2D
|
|
.BYTE $2E
|
|
.BYTE $1D
|
|
.BYTE $2E
|
|
.BYTE $19
|
|
.BYTE $23
|
|
.BYTE $32
|
|
.BYTE $31
|
|
.BYTE $22
|
|
.BYTE $13
|
|
.BYTE $15
|
|
.BYTE $16
|
|
.BYTE $14
|
|
.BYTE $17
|
|
.BYTE $2E
|
|
.BYTE $3D
|
|
.BYTE $2E
|
|
.BYTE $4F
|
|
.BYTE $2E
|
|
.BYTE $7D
|
|
.BYTE $2E
|
|
.BYTE $1D
|
|
.BYTE $2E
|
|
.BYTE $1A
|
|
.BYTE $14
|
|
.BYTE $43
|
|
.BYTE $14
|
|
.BYTE $13
|
|
.BYTE $14
|
|
.BYTE $15
|
|
.BYTE $16
|
|
.BYTE $17
|
|
.BYTE $15
|
|
.BYTE $14
|
|
.BYTE $18
|
|
.BYTE $1D
|
|
.BYTE $4E
|
|
.BYTE $2D
|
|
.BYTE $4E
|
|
.BYTE $9D
|
|
.BYTE $4E
|
|
.BYTE $1C
|
|
.BYTE $1A
|
|
.BYTE $18
|
|
.BYTE $15
|
|
.BYTE $14
|
|
.BYTE $43
|
|
.BYTE $15
|
|
.BYTE $26
|
|
.BYTE $15
|
|
.BYTE $13
|
|
.BYTE $16
|
|
.BYTE $1A
|
|
.BYTE $3E
|
|
.BYTE $8D
|
|
.BYTE $00
|
|
.BYTE $04
|
|
.BYTE $57
|
|
.BYTE $4F
|
|
.BYTE $5A
|
|
.BYTE $20
|
|
.BYTE $00
|
|
|
|
.byte "Woz face program end", $0d, $00
|