more sane directory name, updated binaries
This commit is contained in:
1 parent
d4d32095d1
commit
76aaf298b8
697 files changed
+56
-56
No files matched your search
@@ -0,0 +1,73 @@
|
||||
// #LAYOUT# STD * #TAKE
|
||||
// #LAYOUT# M65 KERNAL_1 #TAKE
|
||||
// #LAYOUT# * * #IGNORE
|
||||
|
||||
//
|
||||
// Tape (normal) helper routine - byte reading
|
||||
//
|
||||
// Returns byte in .A (also sotred in INBIT), Carry flag set = error
|
||||
//
|
||||
|
||||
|
||||
#if CONFIG_TAPE_NORMAL
|
||||
|
||||
|
||||
tape_normal_get_byte:
|
||||
|
||||
// Init parity bit and canary bit
|
||||
lda #$01
|
||||
sta PRTY
|
||||
lda #%01111111 // canary bit is 0
|
||||
sta INBIT
|
||||
|
||||
// Now fetch individual bits
|
||||
|
||||
tape_normal_get_byte_loop:
|
||||
|
||||
jsr tape_normal_get_bit
|
||||
bcs tape_normal_get_byte_error
|
||||
beq !+
|
||||
|
||||
// Handle parity bit
|
||||
lda #$01
|
||||
eor PRTY
|
||||
sta PRTY
|
||||
|
||||
sec
|
||||
!: // moved bit state from Zero to Carry flag
|
||||
|
||||
ror INBIT // put the bit in
|
||||
bcs tape_normal_get_byte_loop // loop if no canary bit reached
|
||||
|
||||
// Byte retrieved (on stack), now we need to validate the parity
|
||||
|
||||
jsr tape_normal_get_bit
|
||||
bcs tape_normal_get_byte_error
|
||||
beq !+
|
||||
lda #$01
|
||||
!:
|
||||
eor PRTY
|
||||
bne tape_normal_get_byte_error
|
||||
|
||||
// Checksum validated succesfully
|
||||
|
||||
ldx #$0B
|
||||
// Carry already clear
|
||||
|
||||
// FALLTROUGH
|
||||
|
||||
tape_normal_get_byte_done:
|
||||
|
||||
stx VIC_EXTCOL
|
||||
lda INBIT
|
||||
rts
|
||||
|
||||
|
||||
tape_normal_get_byte_error:
|
||||
|
||||
ldx #$09
|
||||
sec // make sure Carry is set to indicate error
|
||||
bcs tape_normal_get_byte_done
|
||||
|
||||
|
||||
#endif
|
||||
Reference in new issue
Block a user