burn 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. data/LICENSE +621 -0
  2. data/README.md +467 -0
  3. data/Rakefile +1 -0
  4. data/bin/burn +14 -0
  5. data/lib/burn/builder.rb +65 -0
  6. data/lib/burn/cli.rb +187 -0
  7. data/lib/burn/debug.rb +25 -0
  8. data/lib/burn/dsl/channel_stream.rb +105 -0
  9. data/lib/burn/dsl/declare.rb +42 -0
  10. data/lib/burn/dsl/dsl_base.rb +31 -0
  11. data/lib/burn/dsl/music.rb +36 -0
  12. data/lib/burn/dsl/note.rb +125 -0
  13. data/lib/burn/dsl/scene.rb +278 -0
  14. data/lib/burn/dsl/sound.rb +30 -0
  15. data/lib/burn/dsl/sound_effect.rb +91 -0
  16. data/lib/burn/dsl.rb +8 -0
  17. data/lib/burn/generator/assembly_music.rb +47 -0
  18. data/lib/burn/generator/assembly_sound_effect.rb +33 -0
  19. data/lib/burn/generator/c_source.rb +54 -0
  20. data/lib/burn/generator/template/mus_template.s +49 -0
  21. data/lib/burn/generator/template/template.c +88 -0
  22. data/lib/burn/generator.rb +3 -0
  23. data/lib/burn/tools/mac/cc65/asminc/_file.inc +27 -0
  24. data/lib/burn/tools/mac/cc65/asminc/_heap.inc +35 -0
  25. data/lib/burn/tools/mac/cc65/asminc/apple2.inc +64 -0
  26. data/lib/burn/tools/mac/cc65/asminc/atari.inc +1175 -0
  27. data/lib/burn/tools/mac/cc65/asminc/atari.mac +59 -0
  28. data/lib/burn/tools/mac/cc65/asminc/atmos.inc +110 -0
  29. data/lib/burn/tools/mac/cc65/asminc/c128.inc +214 -0
  30. data/lib/burn/tools/mac/cc65/asminc/c16.inc +9 -0
  31. data/lib/burn/tools/mac/cc65/asminc/c64.inc +212 -0
  32. data/lib/burn/tools/mac/cc65/asminc/cbm.mac +50 -0
  33. data/lib/burn/tools/mac/cc65/asminc/cbm510.inc +182 -0
  34. data/lib/burn/tools/mac/cc65/asminc/cbm610.inc +110 -0
  35. data/lib/burn/tools/mac/cc65/asminc/cbm_filetype.inc +34 -0
  36. data/lib/burn/tools/mac/cc65/asminc/cpu.mac +24 -0
  37. data/lib/burn/tools/mac/cc65/asminc/ctype.inc +29 -0
  38. data/lib/burn/tools/mac/cc65/asminc/em-error.inc +49 -0
  39. data/lib/burn/tools/mac/cc65/asminc/em-kernel.inc +106 -0
  40. data/lib/burn/tools/mac/cc65/asminc/errno.inc +36 -0
  41. data/lib/burn/tools/mac/cc65/asminc/fcntl.inc +21 -0
  42. data/lib/burn/tools/mac/cc65/asminc/generic.mac +55 -0
  43. data/lib/burn/tools/mac/cc65/asminc/get_tv.inc +22 -0
  44. data/lib/burn/tools/mac/cc65/asminc/joy-error.inc +44 -0
  45. data/lib/burn/tools/mac/cc65/asminc/joy-kernel.inc +85 -0
  46. data/lib/burn/tools/mac/cc65/asminc/longbranch.mac +88 -0
  47. data/lib/burn/tools/mac/cc65/asminc/lynx.inc +279 -0
  48. data/lib/burn/tools/mac/cc65/asminc/modload.inc +78 -0
  49. data/lib/burn/tools/mac/cc65/asminc/mouse-kernel.inc +180 -0
  50. data/lib/burn/tools/mac/cc65/asminc/nes.inc +93 -0
  51. data/lib/burn/tools/mac/cc65/asminc/o65.inc +150 -0
  52. data/lib/burn/tools/mac/cc65/asminc/opcodes.inc +509 -0
  53. data/lib/burn/tools/mac/cc65/asminc/pet.inc +54 -0
  54. data/lib/burn/tools/mac/cc65/asminc/plus4.inc +86 -0
  55. data/lib/burn/tools/mac/cc65/asminc/ser-error.inc +54 -0
  56. data/lib/burn/tools/mac/cc65/asminc/ser-kernel.inc +162 -0
  57. data/lib/burn/tools/mac/cc65/asminc/signal.inc +57 -0
  58. data/lib/burn/tools/mac/cc65/asminc/smc.inc +245 -0
  59. data/lib/burn/tools/mac/cc65/asminc/stdio.inc +70 -0
  60. data/lib/burn/tools/mac/cc65/asminc/supervision.inc +76 -0
  61. data/lib/burn/tools/mac/cc65/asminc/tgi-error.inc +52 -0
  62. data/lib/burn/tools/mac/cc65/asminc/tgi-kernel.inc +234 -0
  63. data/lib/burn/tools/mac/cc65/asminc/tgi-vectorfont.inc +70 -0
  64. data/lib/burn/tools/mac/cc65/asminc/time.inc +59 -0
  65. data/lib/burn/tools/mac/cc65/asminc/utsname.inc +46 -0
  66. data/lib/burn/tools/mac/cc65/asminc/vic20.inc +75 -0
  67. data/lib/burn/tools/mac/cc65/asminc/zeropage.inc +26 -0
  68. data/lib/burn/tools/mac/cc65/bin/ca65 +0 -0
  69. data/lib/burn/tools/mac/cc65/bin/cc65 +0 -0
  70. data/lib/burn/tools/mac/cc65/bin/ld65 +0 -0
  71. data/lib/burn/tools/other/cc65/asminc/_file.inc +27 -0
  72. data/lib/burn/tools/other/cc65/asminc/_heap.inc +35 -0
  73. data/lib/burn/tools/other/cc65/asminc/apple2.inc +64 -0
  74. data/lib/burn/tools/other/cc65/asminc/atari.inc +1175 -0
  75. data/lib/burn/tools/other/cc65/asminc/atari.mac +59 -0
  76. data/lib/burn/tools/other/cc65/asminc/atmos.inc +110 -0
  77. data/lib/burn/tools/other/cc65/asminc/c128.inc +214 -0
  78. data/lib/burn/tools/other/cc65/asminc/c16.inc +9 -0
  79. data/lib/burn/tools/other/cc65/asminc/c64.inc +212 -0
  80. data/lib/burn/tools/other/cc65/asminc/cbm.mac +50 -0
  81. data/lib/burn/tools/other/cc65/asminc/cbm510.inc +182 -0
  82. data/lib/burn/tools/other/cc65/asminc/cbm610.inc +110 -0
  83. data/lib/burn/tools/other/cc65/asminc/cbm_filetype.inc +34 -0
  84. data/lib/burn/tools/other/cc65/asminc/cpu.mac +24 -0
  85. data/lib/burn/tools/other/cc65/asminc/ctype.inc +29 -0
  86. data/lib/burn/tools/other/cc65/asminc/em-error.inc +49 -0
  87. data/lib/burn/tools/other/cc65/asminc/em-kernel.inc +106 -0
  88. data/lib/burn/tools/other/cc65/asminc/errno.inc +36 -0
  89. data/lib/burn/tools/other/cc65/asminc/fcntl.inc +21 -0
  90. data/lib/burn/tools/other/cc65/asminc/generic.mac +55 -0
  91. data/lib/burn/tools/other/cc65/asminc/get_tv.inc +22 -0
  92. data/lib/burn/tools/other/cc65/asminc/joy-error.inc +44 -0
  93. data/lib/burn/tools/other/cc65/asminc/joy-kernel.inc +85 -0
  94. data/lib/burn/tools/other/cc65/asminc/longbranch.mac +88 -0
  95. data/lib/burn/tools/other/cc65/asminc/lynx.inc +279 -0
  96. data/lib/burn/tools/other/cc65/asminc/modload.inc +78 -0
  97. data/lib/burn/tools/other/cc65/asminc/mouse-kernel.inc +180 -0
  98. data/lib/burn/tools/other/cc65/asminc/nes.inc +93 -0
  99. data/lib/burn/tools/other/cc65/asminc/o65.inc +150 -0
  100. data/lib/burn/tools/other/cc65/asminc/opcodes.inc +509 -0
  101. data/lib/burn/tools/other/cc65/asminc/pet.inc +54 -0
  102. data/lib/burn/tools/other/cc65/asminc/plus4.inc +86 -0
  103. data/lib/burn/tools/other/cc65/asminc/ser-error.inc +54 -0
  104. data/lib/burn/tools/other/cc65/asminc/ser-kernel.inc +162 -0
  105. data/lib/burn/tools/other/cc65/asminc/signal.inc +57 -0
  106. data/lib/burn/tools/other/cc65/asminc/smc.inc +245 -0
  107. data/lib/burn/tools/other/cc65/asminc/stdio.inc +70 -0
  108. data/lib/burn/tools/other/cc65/asminc/supervision.inc +76 -0
  109. data/lib/burn/tools/other/cc65/asminc/tgi-error.inc +52 -0
  110. data/lib/burn/tools/other/cc65/asminc/tgi-kernel.inc +234 -0
  111. data/lib/burn/tools/other/cc65/asminc/tgi-vectorfont.inc +70 -0
  112. data/lib/burn/tools/other/cc65/asminc/time.inc +59 -0
  113. data/lib/burn/tools/other/cc65/asminc/utsname.inc +46 -0
  114. data/lib/burn/tools/other/cc65/asminc/vic20.inc +75 -0
  115. data/lib/burn/tools/other/cc65/asminc/zeropage.inc +26 -0
  116. data/lib/burn/tools/other/cc65/bin/ca65 +0 -0
  117. data/lib/burn/tools/other/cc65/bin/cc65 +0 -0
  118. data/lib/burn/tools/other/cc65/bin/ld65 +0 -0
  119. data/lib/burn/tools/win/cc65/asminc/_file.inc +27 -0
  120. data/lib/burn/tools/win/cc65/asminc/_heap.inc +35 -0
  121. data/lib/burn/tools/win/cc65/asminc/apple2.inc +64 -0
  122. data/lib/burn/tools/win/cc65/asminc/atari.inc +1101 -0
  123. data/lib/burn/tools/win/cc65/asminc/atmos.inc +31 -0
  124. data/lib/burn/tools/win/cc65/asminc/c128.inc +213 -0
  125. data/lib/burn/tools/win/cc65/asminc/c16.inc +9 -0
  126. data/lib/burn/tools/win/cc65/asminc/c64.inc +212 -0
  127. data/lib/burn/tools/win/cc65/asminc/cbm510.inc +182 -0
  128. data/lib/burn/tools/win/cc65/asminc/cbm610.inc +110 -0
  129. data/lib/burn/tools/win/cc65/asminc/ctype.inc +29 -0
  130. data/lib/burn/tools/win/cc65/asminc/em-error.inc +44 -0
  131. data/lib/burn/tools/win/cc65/asminc/em-kernel.inc +100 -0
  132. data/lib/burn/tools/win/cc65/asminc/errno.inc +36 -0
  133. data/lib/burn/tools/win/cc65/asminc/fcntl.inc +21 -0
  134. data/lib/burn/tools/win/cc65/asminc/get_tv.inc +22 -0
  135. data/lib/burn/tools/win/cc65/asminc/joy-error.inc +44 -0
  136. data/lib/burn/tools/win/cc65/asminc/joy-kernel.inc +85 -0
  137. data/lib/burn/tools/win/cc65/asminc/lynx.inc +273 -0
  138. data/lib/burn/tools/win/cc65/asminc/modload.inc +78 -0
  139. data/lib/burn/tools/win/cc65/asminc/mouse-kernel.inc +179 -0
  140. data/lib/burn/tools/win/cc65/asminc/nes.inc +93 -0
  141. data/lib/burn/tools/win/cc65/asminc/o65.inc +135 -0
  142. data/lib/burn/tools/win/cc65/asminc/pet.inc +45 -0
  143. data/lib/burn/tools/win/cc65/asminc/plus4.inc +87 -0
  144. data/lib/burn/tools/win/cc65/asminc/rs232.inc +19 -0
  145. data/lib/burn/tools/win/cc65/asminc/ser-error.inc +50 -0
  146. data/lib/burn/tools/win/cc65/asminc/ser-kernel.inc +161 -0
  147. data/lib/burn/tools/win/cc65/asminc/signal.inc +57 -0
  148. data/lib/burn/tools/win/cc65/asminc/stdio.inc +70 -0
  149. data/lib/burn/tools/win/cc65/asminc/supervision.inc +76 -0
  150. data/lib/burn/tools/win/cc65/asminc/tgi-error.inc +48 -0
  151. data/lib/burn/tools/win/cc65/asminc/tgi-kernel.inc +183 -0
  152. data/lib/burn/tools/win/cc65/asminc/tgi-mode.inc +48 -0
  153. data/lib/burn/tools/win/cc65/asminc/time.inc +59 -0
  154. data/lib/burn/tools/win/cc65/asminc/utsname.inc +46 -0
  155. data/lib/burn/tools/win/cc65/asminc/vic20.inc +77 -0
  156. data/lib/burn/tools/win/cc65/asminc/zeropage.inc +22 -0
  157. data/lib/burn/tools/win/cc65/bin/ca65.exe +0 -0
  158. data/lib/burn/tools/win/cc65/bin/cc65.exe +0 -0
  159. data/lib/burn/tools/win/cc65/bin/ld65.exe +0 -0
  160. data/lib/burn/util/os.rb +38 -0
  161. data/lib/burn/util/patternizer.rb +62 -0
  162. data/lib/burn/util/pxes.rb +180 -0
  163. data/lib/burn/util/server.rb +21 -0
  164. data/lib/burn/util.rb +4 -0
  165. data/lib/burn/version.rb +3 -0
  166. data/lib/burn/workspace_default/asset/crt0.s +260 -0
  167. data/lib/burn/workspace_default/asset/famitone.s +1031 -0
  168. data/lib/burn/workspace_default/asset/mus_instruments.s +50 -0
  169. data/lib/burn/workspace_default/asset/music.s +3 -0
  170. data/lib/burn/workspace_default/asset/nes.cfg +83 -0
  171. data/lib/burn/workspace_default/asset/neslib.h +213 -0
  172. data/lib/burn/workspace_default/asset/neslib.s +923 -0
  173. data/lib/burn/workspace_default/asset/runtime.lib +0 -0
  174. data/lib/burn/workspace_default/asset/sounds.s +143 -0
  175. data/lib/burn/workspace_default/asset/test.h +22 -0
  176. data/lib/burn/workspace_default/asset/tileset.chr +0 -0
  177. data/lib/burn/workspace_default/release/js/emulator.html +42 -0
  178. data/lib/burn/workspace_default/release/js/js/dynamicaudio-89ba58da476270a9b630.min.js +1 -0
  179. data/lib/burn/workspace_default/release/js/js/jquery-1.4.2.min.js +154 -0
  180. data/lib/burn/workspace_default/release/js/js/jsnes-4e7a7260aa.js +7149 -0
  181. data/lib/burn/workspace_default/release/js/swf/dynamicaudio.swf +0 -0
  182. data/lib/burn/workspace_default/scripts/compile.bat +30 -0
  183. data/lib/burn/workspace_default/scripts/compile.sh +30 -0
  184. data/lib/burn.rb +11 -0
  185. data/test/helper.rb +8 -0
  186. data/test/runner.rb +2 -0
  187. data/test/test_burn.rb +14 -0
  188. data/test/test_dsl.rb +22 -0
  189. data/test/test_pxes.rb +48 -0
  190. metadata +270 -0
@@ -0,0 +1,59 @@
1
+ ; Convert characters to screen codes
2
+
3
+ ; Helper macro that converts and outputs one character
4
+ .macro _scrcode char
5
+ .if (char >= 0) .and (char <= 31)
6
+ .byte (char + 64)
7
+ .elseif (char >= 32) .and (char <= 95)
8
+ .byte (char - 32)
9
+ .elseif (char >= 96) .and (char <= 127)
10
+ .byte char
11
+ .elseif (char >= 128) .and (char <= 159)
12
+ .byte (char + 64)
13
+ .elseif (char >= 160) .and (char <= 223)
14
+ .byte (char - 32)
15
+ .elseif (char >= 224) .and (char <= 255)
16
+ .byte char
17
+ .else
18
+ .error "scrcode: Character constant out of range"
19
+ .endif
20
+ .endmacro
21
+
22
+ .macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
23
+
24
+ ; Bail out if next argument is empty
25
+ .if .blank (arg1)
26
+ .exitmacro
27
+ .endif
28
+
29
+ ; Check for a string
30
+ .if .match ({arg1}, "")
31
+
32
+ ; Walk over all string chars
33
+ .repeat .strlen (arg1), i
34
+ _scrcode {.strat (arg1, i)}
35
+ .endrepeat
36
+
37
+ ; Check for a number
38
+ .elseif .match (.left (1, {arg1}), 0)
39
+
40
+ ; Just output the number
41
+ _scrcode arg1
42
+
43
+ ; Check for a character
44
+ .elseif .match (.left (1, {arg1}), 'a')
45
+
46
+ ; Just output the character
47
+ _scrcode arg1
48
+
49
+ ; Anything else is an error
50
+ .else
51
+
52
+ .error "scrcode: invalid argument type"
53
+
54
+ .endif
55
+
56
+ ; Call the macro recursively with the remaining args
57
+ scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
58
+ .endmacro
59
+
@@ -0,0 +1,110 @@
1
+ ;
2
+ ; Oric Atmos definitions
3
+ ; BASIC 1.1 addresses
4
+ ;
5
+
6
+
7
+ ; ---------------------------------------------------------------------------
8
+ ; Constants
9
+
10
+ SCREEN_XSIZE = 40 ; screen columns
11
+ SCREEN_YSIZE = 28 ; screen rows
12
+
13
+ FUNCTKEY = $A5
14
+
15
+ FNAME_LEN = 16 ; maximum length of file-name
16
+
17
+
18
+ ; ---------------------------------------------------------------------------
19
+ ; Zero page
20
+
21
+ SCRPTR := $12
22
+ BASIC_BUF := $35
23
+ CHARGOT := $E8
24
+ TXTPTR := $E9
25
+
26
+
27
+ ; ---------------------------------------------------------------------------
28
+ ; Low memory
29
+
30
+ MODEKEY := $0209
31
+ CAPSLOCK := $020C ; $7F = not locked, $FF = locked
32
+ PATTERN := $0213
33
+ IRQVec := $0245 ; "fast" interrupt vector
34
+ JOINFLAG := $025A ; 0 = don't joiu, $4A = join BASIC programs
35
+ VERIFYFLAG := $025B ; 0 = load, 1 = verify
36
+ CURS_Y := $0268
37
+ CURS_X := $0269
38
+ STATUS := $026A
39
+ BACKGRND := $026B
40
+ FOREGRND := $026C
41
+ TIMER3 := $0276
42
+ CFILE_NAME := $027F
43
+ CFOUND_NAME := $0293
44
+ FILESTART := $02A9
45
+ FILEEND := $02AB
46
+ AUTORUN := $02AD ; $00 = only load, $C7 = autorun
47
+ LANGFLAG := $02AE ; $00 = BASIC, $80 = machine code
48
+ LOADERR := $02B1
49
+ KEYBUF := $02DF
50
+ PARMERR := $02E0
51
+ PARAM1 := $02E1 ; & $02E2
52
+ PARAM2 := $02E3 ; & $02E4
53
+ PARAM3 := $02E5 ; & $02E6
54
+ BANGVEC := $02F5
55
+
56
+
57
+ ; ---------------------------------------------------------------------------
58
+ ; I/O locations
59
+
60
+ ; 6522
61
+ .struct VIA ; Versatile Interface Adapter
62
+ .res $0300
63
+ PRB .byte ; Port Register B
64
+ PRA .byte ; Port Register A
65
+ DDRB .byte ; Data Direction Register B
66
+ DDRA .byte ; Data Direction Register A
67
+ T1 .word ; Timer 1
68
+ T1L .word ; Timer 1 Latch
69
+ T2 .word ; Timer 2
70
+ SR .byte ; Shift Register
71
+ ACR .byte ; Auxiliary Control Register
72
+ PCR .byte ; Peripheral Control Register
73
+ IFR .byte ; Interrupt Flags Register
74
+ IER .byte ; Interrupt Enable Register
75
+ PRA2 .byte ; Port Register A without handshaking
76
+ .endstruct
77
+
78
+ ; 6551
79
+ .struct ACIA ; Asynchronous Communications Interface Adapter
80
+ .res $031C
81
+ DATA .byte
82
+ STATUS .byte
83
+ CMD .byte ; Command register
84
+ CTRL .byte ; Control register
85
+ .endstruct
86
+
87
+ SCREEN := $BB80
88
+
89
+
90
+ ; ---------------------------------------------------------------------------
91
+ ; ROM entries
92
+
93
+ TEXT := $EC21
94
+ HIRES := $EC33
95
+ CURSET := $F0C8
96
+ CURMOV := $F0FD
97
+ DRAW := $F110
98
+ CHAR := $F12D
99
+ POINT := $F1C8
100
+ PAPER := $F204
101
+ INK := $F210
102
+ PRINT := $F77C
103
+
104
+ ; Sound Effects
105
+ PING := $FA9F
106
+ SHOOT := $FAB5
107
+ EXPLODE := $FACB
108
+ ZAP := $FAE1
109
+ TICK := $FB14
110
+ TOCK := $FB2A
@@ -0,0 +1,214 @@
1
+ ;
2
+ ; C128 generic definitions. Stolen from Elite128
3
+ ;
4
+
5
+
6
+ ; ---------------------------------------------------------------------------
7
+ ; Zero page, Commodore stuff
8
+
9
+ TIME := $A0 ; 60HZ clock
10
+ FNAM_LEN := $B7 ; Length of filename
11
+ SECADR := $B9 ; Secondary address
12
+ DEVNUM := $BA ; Device number
13
+ FNAM := $BB ; Address of filename
14
+ FNAM_BANK := $C7 ; Bank for filename
15
+ KEY_COUNT := $D0 ; Number of keys in input buffer
16
+ FKEY_COUNT := $D1 ; Characters for function key
17
+ MODE := $D7 ; 40/80 column mode flag
18
+ CURS_X := $EC ; Cursor column
19
+ CURS_Y := $EB ; Cursor row
20
+ SCREEN_PTR := $E0 ; Pointer to current char in text screen
21
+ CRAM_PTR := $E2 ; Pointer to current char in color RAM
22
+
23
+ CHARCOLOR := $F1
24
+ RVS := $F3 ; Reverse output flag
25
+ SCROLL := $F8 ; Disable scrolling flag
26
+
27
+ BASIC_BUF := $200 ; Location of command-line
28
+ BASIC_BUF_LEN = 162 ; Maximum length of command-line
29
+
30
+ FETCH := $2A2 ; Fetch subroutine in RAM
31
+ FETVEC := $2AA ; Vector patch location for FETCH
32
+ STASH := $2AF ; Stash routine in RAM
33
+ STAVEC := $2B9 ; Vector patch location for STASH
34
+ PALFLAG := $A03 ; $FF=PAL, $00=NTSC
35
+ INIT_STATUS := $A04 ; Flags: Reset/Restore initiation status
36
+ FKEY_LEN := $1000 ; Function key lengths
37
+ FKEY_TEXT := $100A ; Function key texts
38
+
39
+ ; ---------------------------------------------------------------------------
40
+ ; Kernal routines
41
+
42
+ ; Direct entries
43
+ CURS_SET := $CD57
44
+ CURS_ON := $CD6F
45
+ CURS_OFF := $CD9F
46
+ CLRSCR := $C142
47
+ KBDREAD := $C006
48
+ NEWLINE := $C363
49
+ PRINT := $C322
50
+ NMIEXIT := $FF33
51
+ INDFET := $FF74
52
+
53
+ ; ---------------------------------------------------------------------------
54
+ ; Vectors
55
+
56
+ IRQVec := $0314
57
+ BRKVec := $0316
58
+ NMIVec := $0318
59
+ KeyStoreVec := $033C
60
+
61
+ ; ---------------------------------------------------------------------------
62
+ ; I/O: VIC
63
+
64
+ VIC := $D000
65
+ VIC_SPR0_X := $D000
66
+ VIC_SPR0_Y := $D001
67
+ VIC_SPR1_X := $D002
68
+ VIC_SPR1_Y := $D003
69
+ VIC_SPR2_X := $D004
70
+ VIC_SPR2_Y := $D005
71
+ VIC_SPR3_X := $D006
72
+ VIC_SPR3_Y := $D007
73
+ VIC_SPR4_X := $D008
74
+ VIC_SPR4_Y := $D009
75
+ VIC_SPR5_X := $D00A
76
+ VIC_SPR5_Y := $D00B
77
+ VIC_SPR6_X := $D00C
78
+ VIC_SPR6_Y := $D00D
79
+ VIC_SPR7_X := $D00E
80
+ VIC_SPR7_Y := $D00F
81
+ VIC_SPR_HI_X := $D010
82
+ VIC_SPR_ENA := $D015
83
+ VIC_SPR_EXP_Y := $D017
84
+ VIC_SPR_EXP_X := $D01D
85
+ VIC_SPR_MCOLOR := $D01C
86
+ VIC_SPR_BG_PRIO := $D01B
87
+
88
+ VIC_SPR_MCOLOR0 := $D025
89
+ VIC_SPR_MCOLOR1 := $D026
90
+
91
+ VIC_SPR0_COLOR := $D027
92
+ VIC_SPR1_COLOR := $D028
93
+ VIC_SPR2_COLOR := $D029
94
+ VIC_SPR3_COLOR := $D02A
95
+ VIC_SPR4_COLOR := $D02B
96
+ VIC_SPR5_COLOR := $D02C
97
+ VIC_SPR6_COLOR := $D02D
98
+ VIC_SPR7_COLOR := $D02E
99
+
100
+ VIC_CTRL1 := $D011
101
+ VIC_CTRL2 := $D016
102
+
103
+ VIC_HLINE := $D012
104
+
105
+ VIC_LPEN_X := $D013
106
+ VIC_LPEN_Y := $D014
107
+
108
+ VIC_VIDEO_ADR := $D018
109
+
110
+ VIC_IRR := $D019 ; Interrupt request register
111
+ VIC_IMR := $D01A ; Interrupt mask register
112
+
113
+ VIC_BORDERCOLOR := $D020
114
+ VIC_BG_COLOR0 := $D021
115
+ VIC_BG_COLOR1 := $D022
116
+ VIC_BG_COLOR2 := $D023
117
+ VIC_BG_COLOR3 := $D024
118
+
119
+ ; 128 stuff:
120
+ VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode)
121
+ VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode)
122
+
123
+
124
+ ; ---------------------------------------------------------------------------
125
+ ; I/O: SID
126
+
127
+ SID := $D400
128
+ SID_S1Lo := $D400
129
+ SID_S1Hi := $D401
130
+ SID_PB1Lo := $D402
131
+ SID_PB1Hi := $D403
132
+ SID_Ctl1 := $D404
133
+ SID_AD1 := $D405
134
+ SID_SUR1 := $D406
135
+
136
+ SID_S2Lo := $D407
137
+ SID_S2Hi := $D408
138
+ SID_PB2Lo := $D409
139
+ SID_PB2Hi := $D40A
140
+ SID_Ctl2 := $D40B
141
+ SID_AD2 := $D40C
142
+ SID_SUR2 := $D40D
143
+
144
+ SID_S3Lo := $D40E
145
+ SID_S3Hi := $D40F
146
+ SID_PB3Lo := $D410
147
+ SID_PB3Hi := $D411
148
+ SID_Ctl3 := $D412
149
+ SID_AD3 := $D413
150
+ SID_SUR3 := $D414
151
+
152
+ SID_FltLo := $D415
153
+ SID_FltHi := $D416
154
+ SID_FltCtl := $D417
155
+ SID_Amp := $D418
156
+ SID_ADConv1 := $D419
157
+ SID_ADConv2 := $D41A
158
+ SID_Noise := $D41B
159
+ SID_Read3 := $D41C
160
+
161
+ ; ---------------------------------------------------------------------------
162
+ ; I/O: VDC (128 only)
163
+
164
+ VDC_INDEX := $D600
165
+ VDC_DATA := $D601
166
+
167
+ ; ---------------------------------------------------------------------------
168
+ ; I/O: CIAs
169
+
170
+ CIA1 := $DC00
171
+ CIA1_PRA := $DC00
172
+ CIA1_PRB := $DC01
173
+ CIA1_DDRA := $DC02
174
+ CIA1_DDRB := $DC03
175
+ CIA1_TOD10 := $DC08
176
+ CIA1_TODSEC := $DC09
177
+ CIA1_TODMIN := $DC0A
178
+ CIA1_TODHR := $DC0B
179
+ CIA1_ICR := $DC0D
180
+ CIA1_CRA := $DC0E
181
+ CIA1_CRB := $DC0F
182
+
183
+ CIA2 := $DD00
184
+ CIA2_PRA := $DD00
185
+ CIA2_PRB := $DD01
186
+ CIA2_DDRA := $DD02
187
+ CIA2_DDRB := $DD03
188
+ CIA2_TOD10 := $DD08
189
+ CIA2_TODSEC := $DD09
190
+ CIA2_TODMIN := $DD0A
191
+ CIA2_TODHR := $DD0B
192
+ CIA2_ICR := $DD0D
193
+ CIA2_CRA := $DD0E
194
+ CIA2_CRB := $DD0F
195
+
196
+ ; ---------------------------------------------------------------------------
197
+ ; I/O: MMU
198
+
199
+ MMU_CR := $FF00
200
+ MMU_CFG_CC65 := %00001110 ; Bank 0 with kernal ROM
201
+ MMU_CFG_RAM0 := %00111111 ; Bank 0 full RAM
202
+ MMU_CFG_RAM1 := %01111111 ; Bank 1 full RAM
203
+ MMU_CFG_RAM2 := %10111111 ; Bank 2 full RAM
204
+ MMU_CFG_RAM3 := %11111111 ; Bank 3 full RAM
205
+
206
+ ; ---------------------------------------------------------------------------
207
+ ; Super CPU
208
+
209
+ SCPU_VIC_Bank1 := $D075
210
+ SCPU_Slow := $D07A
211
+ SCPU_Fast := $D07B
212
+ SCPU_EnableRegs := $D07E
213
+ SCPU_DisableRegs:= $D07F
214
+ SCPU_Detect := $D0BC
@@ -0,0 +1,9 @@
1
+ ;
2
+ ; C16 generic definitions.
3
+ ;
4
+ ; The C16 and Plus/4 are identical, so just include the Plus/4 include file.
5
+
6
+
7
+ .include "plus4.inc"
8
+
9
+
@@ -0,0 +1,212 @@
1
+ ;
2
+ ; C64 generic definitions. Stolen from Elite128
3
+ ;
4
+
5
+
6
+ ; ---------------------------------------------------------------------------
7
+ ; Zero page, Commodore stuff
8
+
9
+ TIME := $A0 ; 60 HZ clock
10
+ FNAM_LEN := $B7 ; Length of filename
11
+ SECADR := $B9 ; Secondary address
12
+ DEVNUM := $BA ; Device number
13
+ FNAM := $BB ; Pointer to filename
14
+ KEY_COUNT := $C6 ; Number of keys in input buffer
15
+ RVS := $C7 ; Reverse flag
16
+ CURS_FLAG := $CC ; 1 = cursor off
17
+ CURS_BLINK := $CD ; Blink counter
18
+ CURS_CHAR := $CE ; Character under the cursor
19
+ CURS_STATE := $CF ; Cursor blink state
20
+ SCREEN_PTR := $D1 ; Pointer to current char in text screen
21
+ CURS_X := $D3 ; Cursor column
22
+ CURS_Y := $D6 ; Cursor row
23
+ CRAM_PTR := $F3 ; Pointer to current char in color RAM
24
+
25
+ BASIC_BUF := $200 ; Location of command-line
26
+ BASIC_BUF_LEN = 89 ; Maximum length of command-line
27
+
28
+ CHARCOLOR := $286
29
+ CURS_COLOR := $287 ; Color under the cursor
30
+ PALFLAG := $2A6 ; $01 = PAL, $00 = NTSC
31
+
32
+
33
+ ; ---------------------------------------------------------------------------
34
+ ; Kernal routines
35
+
36
+ ; Direct entries
37
+ CLRSCR := $E544
38
+ KBDREAD := $E5B4
39
+ NMIEXIT := $FEBC
40
+
41
+ ; ---------------------------------------------------------------------------
42
+ ; Vector and other locations
43
+
44
+ IRQVec := $0314
45
+ BRKVec := $0316
46
+ NMIVec := $0318
47
+
48
+ ; ---------------------------------------------------------------------------
49
+ ; Screen size
50
+
51
+ XSIZE = 40
52
+ YSIZE = 25
53
+
54
+ ; ---------------------------------------------------------------------------
55
+ ; I/O: VIC
56
+
57
+ VIC := $D000
58
+ VIC_SPR0_X := $D000
59
+ VIC_SPR0_Y := $D001
60
+ VIC_SPR1_X := $D002
61
+ VIC_SPR1_Y := $D003
62
+ VIC_SPR2_X := $D004
63
+ VIC_SPR2_Y := $D005
64
+ VIC_SPR3_X := $D006
65
+ VIC_SPR3_Y := $D007
66
+ VIC_SPR4_X := $D008
67
+ VIC_SPR4_Y := $D009
68
+ VIC_SPR5_X := $D00A
69
+ VIC_SPR5_Y := $D00B
70
+ VIC_SPR6_X := $D00C
71
+ VIC_SPR6_Y := $D00D
72
+ VIC_SPR7_X := $D00E
73
+ VIC_SPR7_Y := $D00F
74
+ VIC_SPR_HI_X := $D010
75
+ VIC_SPR_ENA := $D015
76
+ VIC_SPR_EXP_Y := $D017
77
+ VIC_SPR_EXP_X := $D01D
78
+ VIC_SPR_MCOLOR := $D01C
79
+ VIC_SPR_BG_PRIO := $D01B
80
+
81
+ VIC_SPR_MCOLOR0 := $D025
82
+ VIC_SPR_MCOLOR1 := $D026
83
+
84
+ VIC_SPR0_COLOR := $D027
85
+ VIC_SPR1_COLOR := $D028
86
+ VIC_SPR2_COLOR := $D029
87
+ VIC_SPR3_COLOR := $D02A
88
+ VIC_SPR4_COLOR := $D02B
89
+ VIC_SPR5_COLOR := $D02C
90
+ VIC_SPR6_COLOR := $D02D
91
+ VIC_SPR7_COLOR := $D02E
92
+
93
+ VIC_CTRL1 := $D011
94
+ VIC_CTRL2 := $D016
95
+
96
+ VIC_HLINE := $D012
97
+
98
+ VIC_LPEN_X := $D013
99
+ VIC_LPEN_Y := $D014
100
+
101
+ VIC_VIDEO_ADR := $D018
102
+
103
+ VIC_IRR := $D019 ; Interrupt request register
104
+ VIC_IMR := $D01A ; Interrupt mask register
105
+
106
+ VIC_BORDERCOLOR := $D020
107
+ VIC_BG_COLOR0 := $D021
108
+ VIC_BG_COLOR1 := $D022
109
+ VIC_BG_COLOR2 := $D023
110
+ VIC_BG_COLOR3 := $D024
111
+
112
+ ; 128 stuff:
113
+ VIC_KBD_128 := $D02F ; Extended kbd bits (visible in 64 mode)
114
+ VIC_CLK_128 := $D030 ; Clock rate register (visible in 64 mode)
115
+
116
+
117
+ ; ---------------------------------------------------------------------------
118
+ ; I/O: SID
119
+
120
+ SID := $D400
121
+ SID_S1Lo := $D400
122
+ SID_S1Hi := $D401
123
+ SID_PB1Lo := $D402
124
+ SID_PB1Hi := $D403
125
+ SID_Ctl1 := $D404
126
+ SID_AD1 := $D405
127
+ SID_SUR1 := $D406
128
+
129
+ SID_S2Lo := $D407
130
+ SID_S2Hi := $D408
131
+ SID_PB2Lo := $D409
132
+ SID_PB2Hi := $D40A
133
+ SID_Ctl2 := $D40B
134
+ SID_AD2 := $D40C
135
+ SID_SUR2 := $D40D
136
+
137
+ SID_S3Lo := $D40E
138
+ SID_S3Hi := $D40F
139
+ SID_PB3Lo := $D410
140
+ SID_PB3Hi := $D411
141
+ SID_Ctl3 := $D412
142
+ SID_AD3 := $D413
143
+ SID_SUR3 := $D414
144
+
145
+ SID_FltLo := $D415
146
+ SID_FltHi := $D416
147
+ SID_FltCtl := $D417
148
+ SID_Amp := $D418
149
+ SID_ADConv1 := $D419
150
+ SID_ADConv2 := $D41A
151
+ SID_Noise := $D41B
152
+ SID_Read3 := $D41C
153
+
154
+ ; ---------------------------------------------------------------------------
155
+ ; I/O: VDC (128 only)
156
+
157
+ VDC_INDEX := $D600
158
+ VDC_DATA := $D601
159
+
160
+ ; ---------------------------------------------------------------------------
161
+ ; I/O: CIAs
162
+
163
+ CIA1 := $DC00
164
+ CIA1_PRA := $DC00
165
+ CIA1_PRB := $DC01
166
+ CIA1_DDRA := $DC02
167
+ CIA1_DDRB := $DC03
168
+ CIA1_TOD10 := $DC08
169
+ CIA1_TODSEC := $DC09
170
+ CIA1_TODMIN := $DC0A
171
+ CIA1_TODHR := $DC0B
172
+ CIA1_ICR := $DC0D
173
+ CIA1_CRA := $DC0E
174
+ CIA1_CRB := $DC0F
175
+
176
+ CIA2 := $DD00
177
+ CIA2_PRA := $DD00
178
+ CIA2_PRB := $DD01
179
+ CIA2_DDRA := $DD02
180
+ CIA2_DDRB := $DD03
181
+ CIA2_TOD10 := $DD08
182
+ CIA2_TODSEC := $DD09
183
+ CIA2_TODMIN := $DD0A
184
+ CIA2_TODHR := $DD0B
185
+ CIA2_ICR := $DD0D
186
+ CIA2_CRA := $DD0E
187
+ CIA2_CRB := $DD0F
188
+
189
+ ; ---------------------------------------------------------------------------
190
+ ; Super CPU
191
+
192
+ SCPU_VIC_Bank1 := $D075
193
+ SCPU_Slow := $D07A
194
+ SCPU_Fast := $D07B
195
+ SCPU_EnableRegs := $D07E
196
+ SCPU_DisableRegs:= $D07F
197
+ SCPU_Detect := $D0BC
198
+
199
+
200
+ ; ---------------------------------------------------------------------------
201
+ ; Processor Port at $01
202
+
203
+ LORAM = $01 ; Enable the basic rom
204
+ HIRAM = $02 ; Enable the kernal rom
205
+ IOEN = $04 ; Enable I/O
206
+ CASSDATA = $08 ; Cassette data
207
+ CASSPLAY = $10 ; Cassette: Play
208
+ CASSMOT = $20 ; Cassette motor on
209
+ TP_FAST = $80 ; Switch Rossmoeller TurboProcess to fast mode
210
+
211
+ RAMONLY = $F8 ; (~(LORAM | HIRAM | IOEN)) & $FF
212
+
@@ -0,0 +1,50 @@
1
+ ; Convert characters to screen codes
2
+
3
+ ; Helper macro that converts and outputs one character
4
+ .macro _scrcode char
5
+ .if (char < 256)
6
+ .byte <(.strat ("h@dbdlhh", char >> 5) << 4) ^ char
7
+ .else
8
+ .error "scrcode: Character constant out of range"
9
+ .endif
10
+ .endmacro
11
+
12
+ .macro scrcode arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
13
+
14
+ ; Bail out if next argument is empty
15
+ .if .blank ({arg1})
16
+ .exitmacro
17
+ .endif
18
+
19
+ ; Check for a string
20
+ .if .match ({arg1}, "")
21
+
22
+ ; Walk over all string chars
23
+ .repeat .strlen (arg1), i
24
+ _scrcode {.strat (arg1, i)}
25
+ .endrepeat
26
+
27
+ ; Check for a number
28
+ .elseif .match (.left (1, {arg1}), 0)
29
+
30
+ ; Just output the number
31
+ _scrcode arg1
32
+
33
+ ; Check for a character
34
+ .elseif .match (.left (1, {arg1}), 'a')
35
+
36
+ ; Just output the character
37
+ _scrcode arg1
38
+
39
+ ; Anything else is an error
40
+ .else
41
+
42
+ .error "scrcode: invalid argument type"
43
+
44
+ .endif
45
+
46
+ ; Call the macro recursively with the remaining args
47
+ scrcode arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9
48
+ .endmacro
49
+
50
+