diff clojure/com/aurellem/gb/rlm_assembly.clj @ 398:0591dcddf831

fixed bug where variables would be overwritten.
author Robert McIntyre <rlm@mit.edu>
date Fri, 13 Apr 2012 05:28:17 -0500
parents 9b0d79cad624
children ddb3c6299619
line wrap: on
line diff
     1.1 --- a/clojure/com/aurellem/gb/rlm_assembly.clj	Fri Apr 13 04:56:01 2012 -0500
     1.2 +++ b/clojure/com/aurellem/gb/rlm_assembly.clj	Fri Apr 13 05:28:17 2012 -0500
     1.3 @@ -208,7 +208,7 @@
     1.4                           (count (read-user-input)))
     1.5  
     1.6          init
     1.7 -        [0xAF 0x5F 0x57 0x47] ;; 0->A; 0->E; 0->D; 0->B
     1.8 +        [0xAF 0x4F 0x57 0x47] ;; 0->A; 0->C; 0->D; 0->B
     1.9  
    1.10          input
    1.11          [0xC1  ;; pop BC so it's not volatile
    1.12 @@ -217,15 +217,24 @@
    1.13           0xAF  ;; test for output-mode (bytes-to-write > 0)
    1.14           0x00  ;; (cp A B)
    1.15           0x7B  ;; E->A
    1.16 -         
    1.17           0x20  ;; skip input section if
    1.18           :to-output ;; we're not in input mode 
    1.19 -                  
    1.20 +       
    1.21           :to-be-executed
    1.22  
    1.23           ;; write mode to instruction-to-be-executed (pun)
    1.24           0xEA
    1.25           :to-be-executed-address
    1.26 +
    1.27 +         0x0C ;; inc C
    1.28 +         0xCB
    1.29 +         0x41 ;; test bit 0 of C
    1.30 +         0x20 ;; if (0 == (C % 2))
    1.31 +         0x04
    1.32 +         0xAF ;; put a no op (0x00) in to-be-executed
    1.33 +         0xEA
    1.34 +         :to-be-executed-address
    1.35 +         
    1.36           0x18           ;; return
    1.37           :to-beginning-1]
    1.38          
    1.39 @@ -243,9 +252,7 @@
    1.40          ;;  0x05 ;; DEC bytes-to-write (B)
    1.41          ;;  0x20 ;; if there are no more bytes to write,
    1.42          ;;  0x04
    1.43 -        ;;  0xAF ;; put a no op (0x00) in to-be-executed
    1.44 -        ;;  0xEA
    1.45 -        ;;  :to-be-executed-address
    1.46 +        ;; 
    1.47                    
    1.48          ;;  0x18
    1.49          ;;  :to-beginning-2]
    1.50 @@ -328,6 +335,7 @@
    1.51    (let [after
    1.52          (-> (bootstrap-base)
    1.53              (step [])
    1.54 +            (step [])
    1.55              (step (buttons 0x67))
    1.56              (step (buttons n))
    1.57              )]