diff --git a/wip-duuqnd/loader.s b/wip-duuqnd/loader.s index 5c4515a..d1a16c3 100644 --- a/wip-duuqnd/loader.s +++ b/wip-duuqnd/loader.s @@ -7,7 +7,7 @@ ;; 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. @@ -23,35 +23,37 @@ progdest = $fe CLKMASK = %00000010 - CTRL2 = $DC00 + CTRL1 = $DC01 .org $80d 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 the 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 border colour for debugging - lda #$00 + 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: @@ -65,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 @@ -117,8 +119,12 @@ new_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: diff --git a/wip-duuqnd/user-side-compiler/interface.lisp b/wip-duuqnd/user-side-compiler/interface.lisp index e7b1f64..145ab1a 100644 --- a/wip-duuqnd/user-side-compiler/interface.lisp +++ b/wip-duuqnd/user-side-compiler/interface.lisp @@ -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)