mirror of
https://github.com/michaelcmartin/Ophis.git
synced 2024-12-22 03:29:55 +00:00
14a37ca879
Full PEP8 compliance. Also, booleans have been inserted where they make sense (introduced in 2.3!) and I haven't knowingly added anything that will break 2.3 compatibility. At this point the code really doesn't look like it was written ten years ago. Hooray!
103 lines
1.5 KiB
Plaintext
103 lines
1.5 KiB
Plaintext
.include "c64-1.oph"
|
|
|
|
.data
|
|
.org $C000
|
|
.space cache 2
|
|
.text
|
|
|
|
.macro print
|
|
lda #<_1
|
|
ldx #>_1
|
|
jsr printstr
|
|
.macend
|
|
|
|
.macro greet
|
|
lda #30
|
|
jsr delay
|
|
`print hello1
|
|
`print _1
|
|
`print hello2
|
|
.macend
|
|
|
|
; Save the zero page locations that PRINTSTR uses.
|
|
lda $10
|
|
sta cache
|
|
lda $11
|
|
sta cache+1
|
|
|
|
lda #147
|
|
jsr chrout
|
|
`greet target1
|
|
`greet target2
|
|
`greet target3
|
|
`greet target4
|
|
`greet target5
|
|
`greet target6
|
|
`greet target7
|
|
`greet target8
|
|
`greet target9
|
|
`greet target10
|
|
|
|
; Restore the zero page values printstr uses.
|
|
lda cache
|
|
sta $10
|
|
lda cache+1
|
|
sta $11
|
|
|
|
rts
|
|
|
|
hello1: .byte "HELLO, ",0
|
|
hello2: .byte "!", 13, 0
|
|
|
|
target1: .byte "PROGRAMMER", 0
|
|
target2: .byte "ROOM", 0
|
|
target3: .byte "BUILDING", 0
|
|
target4: .byte "NEIGHBORHOOD", 0
|
|
target5: .byte "CITY", 0
|
|
target6: .byte "NATION", 0
|
|
target7: .byte "WORLD", 0
|
|
target8: .byte "SOLAR SYSTEM", 0
|
|
target9: .byte "GALAXY", 0
|
|
target10: .byte "UNIVERSE", 0
|
|
|
|
; DELAY routine. Takes values from the Accumulator and pauses
|
|
; for that many jiffies (1/60th of a second).
|
|
.scope
|
|
.data
|
|
.space _tmp 1
|
|
.space _target 1
|
|
|
|
.text
|
|
|
|
delay: sta _tmp ; save argument (rdtim destroys it)
|
|
jsr rdtim
|
|
clc
|
|
adc _tmp ; add current time to get target
|
|
sta _target
|
|
* jsr rdtim
|
|
cmp _target
|
|
bmi - ; Buzz until target reached
|
|
rts
|
|
.scend
|
|
|
|
; PRINTSTR routine. Accumulator stores the low byte of the address,
|
|
; X register stores the high byte. Destroys the values of $10 and
|
|
; $11.
|
|
|
|
.scope
|
|
printstr:
|
|
sta $10
|
|
stx $11
|
|
ldy #$00
|
|
_lp: lda ($10),y
|
|
beq _done
|
|
jsr chrout
|
|
iny
|
|
bne _lp
|
|
_done: rts
|
|
.scend
|
|
|
|
.checkpc $A000
|
|
.data
|
|
.checkpc $D000
|