Mercurial > vba-clojure
diff clojure/com/aurellem/run/bootstrap_0.clj @ 340:dea7e476eba7
preliminary item-writer complete
author | Robert McIntyre <rlm@mit.edu> |
---|---|
date | Sun, 08 Apr 2012 04:10:49 -0500 |
parents | 93e74ed34305 |
children | bf9b9777c3ce |
line wrap: on
line diff
1.1 --- a/clojure/com/aurellem/run/bootstrap_0.clj Sun Apr 08 03:00:51 2012 -0500 1.2 +++ b/clojure/com/aurellem/run/bootstrap_0.clj Sun Apr 08 04:10:49 2012 -0500 1.3 @@ -760,11 +760,7 @@ 1.4 [return-high return-low] (disect-bytes-2 return-address)] 1.5 (flatten 1.6 [0xF3 ;; disable interrupts 1.7 - ;;0xC5 ;; push junk onto stack 1.8 - ;;0xD5 1.9 - ;;0xE5 1.10 - ;;0xF5 1.11 - 1.12 + 1.13 0x1E ;; load limit into E 1.14 limit 1.15 1.16 @@ -776,7 +772,6 @@ 1.17 0x0E ;; C == 1 means input-first nybble 1.18 0x01 ;; C == 0 means input-second nybble 1.19 1.20 - 1.21 ;; Input Section 1.22 1.23 0x3E ;; load 0x20 into A, to measure dpad 1.24 @@ -831,12 +826,6 @@ 1.25 0x20 ;; jump back to input section if not done 1.26 0xE4 ;; literal -28 1.27 1.28 - ;; cleanup 1.29 - ;;0xF1 1.30 - ;;0xE1 1.31 - ;;0xD1 1.32 - ;;0xC1 1.33 - 1.34 0xFB ;; re-enable interrupts 1.35 1.36 0xC3 1.37 @@ -936,9 +925,12 @@ 1.38 0x3F ;; (item-hack) set carry flag no-op 1.39 1.40 ;; load 1 into C. 1.41 - 0x0E ;; C == 1 means input-first nybble 1.42 - 0x01 ;; C == 0 means input-second nybble 1.43 - 1.44 + 0x0E ;; C == 0 means input-first nybble 1.45 + 0x01 ;; C == 0xFF means input-second nybble 1.46 + 1.47 + 0x0D ;; (item-hack) (dec C) 1.48 + 0x2B ;; (item-hack) (dec HL) no-op 1.49 + 1.50 0x21 ;; load target into HL 1.51 target-low 1.52 target-high 1.53 @@ -976,45 +968,58 @@ 1.54 0x47 ;; load A into B 1.55 1.56 0x0D ;; dec C 1.57 + 0x37 ;; (item-hack) set-carry flag 1.58 ;; branch based on C: 1.59 0x20 ;; JR NZ 1.60 - 0x07 ;; skip "input first nybble" below 1.61 - 1.62 + 0x08 ;; skip "input first nybble" below 1.63 1.64 - ;; input first nybble 1.65 - 1.66 - 0xCB 1.67 - 0x37 ;; swap nybbles on A 1.68 - 1.69 - 0x57 ;; A -> D 1.70 - 1.71 - 0x18 1.72 - 0xEC ;; literal -20 -- go back to input section 1.73 - 1.74 ;; input second nybble 1.75 1.76 0x0C ;; inc C 1.77 - 1.78 + 0x37 ;; (item-hack) set-carry flag no-op 1.79 + 1.80 + 0x00 ;; (item-hack) no-op 1.81 0xE6 ;; select bottom bits 1.82 0x0F 1.83 + 0x37 ;; (item-hack) set-carry flag no-op 1.84 1.85 + 0x00 ;; (item-hack) no-op 1.86 0xB2 ;; (OR A D) -> A 1.87 1.88 0x22 ;; (do (A -> (HL)) (INC HL)) 1.89 1.90 0x1D ;; (DEC E) 1.91 1.92 + 0x00 ;; (item-hack) 1.93 0x20 ;; jump back to input section if not done 1.94 - 0xE4 ;; literal -28 1.95 + 0xDA ;; literal -36 == TM 18 (counter) 1.96 + 0x01 ;; (item-hack) will never reach this instruction 1.97 1.98 + ;; input first nybble 1.99 + 0x00 1.100 + 0xCB 1.101 + 0x37 ;; swap nybbles on A 1.102 + 1.103 + 0x57 ;; A -> D 1.104 + 1.105 + 0x37 1.106 + 0x18 1.107 + 0xD5 ;; literal -20 == TM13; go back to input section 1.108 + 0x01 1.109 + 1.110 + 0x3A ;; (item-hack) these two bytes can be anything. 1.111 + 0x01 1.112 ;; cleanup 1.113 ;;0xF1 1.114 ;;0xE1 1.115 ;;0xD1 1.116 ;;0xC1 1.117 - 1.118 - 0xFB ;; re-enable interrupts 1.119 - 1.120 - 0xC3 1.121 + 0x00 ;; (item-hack) no-op 1.122 + 0xBF ;; (CP A A) ensures Z 1.123 + ;;0xFB ;; re-enable interrupts;; unnecessary 1.124 + 0xCA ;; (item-hack) jump if Z 1.125 return-low 1.126 - return-high ]))) 1.127 + return-high 1.128 + 1.129 + 0x01 ;; (item-hack) will never be reached. 1.130 + ])))