apple1serial/src/tests.a65

71 lines
1.5 KiB
Plaintext

#define echo $FFEF
#define kbd_data $D010
#define kbd_cr $D011
#define serial_ready BASE + $000 + OFFSET
#define serial_read BASE + $080 + OFFSET
#define serial_write BASE + $081 + OFFSET
; How to store INTEGER BASIC progams?
; C100( + OFFSET)R - run serial monitor
; 004A.00FFW 0800.0FFFW - write data for default LOMEM & HIMEM
; E2B3R - warm entry point
* = BASE + $300 + OFFSET
.dsb (*-end_of_apple1serial), 0
; teletype on apple-1
; the data from remote appears on apple-1 screen
* = BASE + $300 + OFFSET
teletype_apple1 = BASE + $300 + OFFSET
jsr reset_serial
lda serial_read
teletype_apple1_wait
lda serial_ready
beq teletype_apple1_wait
lda serial_read
jsr echo
jmp teletype_apple1_wait
end_of_teletype_apple1
; teletype on remote
; the data from apple-1 appears on remote
* = BASE + $400 + OFFSET
.dsb (*-end_of_teletype_apple1), 0
* = BASE + $400 + OFFSET
teletype_remote = BASE + $400 + OFFSET
jsr reset_serial
lda #$FF
sta serial_write
get_key
lda kbd_cr
bpl get_key
lda kbd_data
and #$7F
tay
teletype_remote_wait
lda serial_ready
beq teletype_remote_wait
tya
sta serial_write
jmp get_key
end_of_teletype_remote
; 0-255 repeating counter over TXD
* = BASE + $500 + OFFSET
.dsb (*-end_of_teletype_remote), 0
* = BASE + $500 + OFFSET
counter_remote = BASE + $500 + OFFSET
jsr reset_serial
ldy #$00
sta serial_write
counter_wait
lda serial_ready
beq counter_wait
tya
sta serial_write
iny
jmp counter_wait
end_of_counter_remote