Compare commits
2 commits
5c41b48664
...
17560c4b78
Author | SHA1 | Date | |
---|---|---|---|
17560c4b78 | |||
f81c0f7e65 |
2 changed files with 34 additions and 27 deletions
|
@ -1,13 +1,13 @@
|
|||
;;; -*- Mode: asm; indent-tabs-mode: t; tab-width: 8 -*-
|
||||
|
||||
;;This program reads a data stream from the joystick port and saves it in memory.
|
||||
;;The datastream format is as sutch:
|
||||
;; This program reads a data stream from the joystick port and saves it in memory.
|
||||
;; The datastream format is as sutch:
|
||||
;;
|
||||
;;############################################
|
||||
;; 16-bit byte-length (big endian) | data
|
||||
;;############################################
|
||||
;; ############################################
|
||||
;; 16-bit byte-length (big endian) | data
|
||||
;; ############################################
|
||||
|
||||
;; The data comes from CTRL2 bit 0 and the clock is at bit 1
|
||||
;; The data comes from CTRL1 bit 0 and the clock is at bit 1
|
||||
|
||||
;; The stream starts when the clock is pulled high, after that comes a
|
||||
;; 16-bit big endian number that matches the byte-lenght of the data that will get sent.
|
||||
|
@ -21,41 +21,44 @@
|
|||
;; More documentation on the Joystick port can be found here: https://www.c64-wiki.com/wiki/Joystick
|
||||
|
||||
|
||||
CLKMASK = %00000010
|
||||
CTRL2 = $DC00
|
||||
progdest = $fe
|
||||
CLKMASK = %00000010
|
||||
CTRL1 = $DC01
|
||||
|
||||
.org $80d
|
||||
coldstart: ;; Draw a dollar sign on screen to show that program has loaded
|
||||
coldstart: ;; Draw an at sign on screen to show that program has loaded
|
||||
lda #$0
|
||||
sta $400
|
||||
waitstart: ;; Wait until joystick 1 has been pulled forwards to start this program
|
||||
lda $dc01
|
||||
and #$01
|
||||
sta progdest
|
||||
lda #$c0
|
||||
sta progdest+1
|
||||
waitstart: ;; Wait until joystick 2 has been pulled down to start the program
|
||||
lda $dc00
|
||||
and #$02
|
||||
bne waitstart
|
||||
|
||||
;; Change boarder colour for debuging
|
||||
lda #$00
|
||||
;; Change border colour for debugging
|
||||
lda #$03
|
||||
sta $d020
|
||||
teststart:
|
||||
jsr check_for_load_start ; Check if start_bit is correct
|
||||
bcs @error ; Idk why C=1 ask john
|
||||
bcs @error ; The routine sets carry in the event of an error
|
||||
beq teststart
|
||||
@doneforever:
|
||||
jmp $c000 ; starts the program?
|
||||
jmp $c000
|
||||
@error:
|
||||
lda #1
|
||||
sta $0400 ;lets store 1 att this address for debuging purposes
|
||||
rts
|
||||
|
||||
check_for_load_start:
|
||||
lda #CLKMASK
|
||||
bit CTRL2
|
||||
bne start ; branch if Z ==0 <--> CTRL2 and CLKMASK ==0 <---> CTRL2 bit 2 == 0
|
||||
bit CTRL1
|
||||
bne start
|
||||
lda #$00
|
||||
rts
|
||||
start:
|
||||
sei
|
||||
;; change boarder collor for debuging purposes
|
||||
;; change border color for debugging purposes
|
||||
ldx #$02
|
||||
stx $d020
|
||||
ldy #$00
|
||||
|
@ -64,13 +67,13 @@ start:
|
|||
wait_for_bit_start:
|
||||
lda #CLKMASK
|
||||
@loop:
|
||||
bit CTRL2
|
||||
bit CTRL1
|
||||
beq @loop
|
||||
|
||||
lda #CLKMASK
|
||||
bit CTRL2
|
||||
bit CTRL1
|
||||
beq error
|
||||
lda CTRL2
|
||||
lda CTRL1
|
||||
|
||||
lsr
|
||||
ror BYTE
|
||||
|
@ -109,15 +112,19 @@ wait_for_bit_start:
|
|||
jmp done
|
||||
@notdone:
|
||||
new_byte:
|
||||
;; BYTE is the byte beaing read from the stream. The bits are shifted from the left
|
||||
;; When we shift out this 1 in BYTE bellow we save the BYTE to memory.
|
||||
;; BYTE is the byte being read from the stream. The bits are shifted from the left
|
||||
;; When we shift out this 1 in BYTE below we save the BYTE to memory.
|
||||
lda #%10000000
|
||||
sta BYTE
|
||||
wait_for_bit_end:
|
||||
lda #CLKMASK
|
||||
@loop:
|
||||
bit CTRL2
|
||||
bit CTRL1
|
||||
bne @loop
|
||||
;; Debug show the clock is low
|
||||
lda #$00
|
||||
sta $d020
|
||||
|
||||
jmp wait_for_bit_start
|
||||
|
||||
done:
|
||||
|
@ -134,6 +141,5 @@ error:
|
|||
|
||||
BYTE = $400
|
||||
LEN = $402
|
||||
progdest = $fe
|
||||
stop: .word $0000
|
||||
loaded: .byte 0
|
||||
|
|
|
@ -222,6 +222,7 @@
|
|||
output-filepath))))
|
||||
|
||||
(defun send-data-to-c64 (data)
|
||||
(declare (type vector data))
|
||||
(with-open-file (stream "/dev/ttyACM0"
|
||||
:direction :io
|
||||
:element-type '(unsigned-byte 8)
|
||||
|
|
Loading…
Add table
Reference in a new issue