burn 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +621 -0
- data/README.md +467 -0
- data/Rakefile +1 -0
- data/bin/burn +14 -0
- data/lib/burn/builder.rb +65 -0
- data/lib/burn/cli.rb +187 -0
- data/lib/burn/debug.rb +25 -0
- data/lib/burn/dsl/channel_stream.rb +105 -0
- data/lib/burn/dsl/declare.rb +42 -0
- data/lib/burn/dsl/dsl_base.rb +31 -0
- data/lib/burn/dsl/music.rb +36 -0
- data/lib/burn/dsl/note.rb +125 -0
- data/lib/burn/dsl/scene.rb +278 -0
- data/lib/burn/dsl/sound.rb +30 -0
- data/lib/burn/dsl/sound_effect.rb +91 -0
- data/lib/burn/dsl.rb +8 -0
- data/lib/burn/generator/assembly_music.rb +47 -0
- data/lib/burn/generator/assembly_sound_effect.rb +33 -0
- data/lib/burn/generator/c_source.rb +54 -0
- data/lib/burn/generator/template/mus_template.s +49 -0
- data/lib/burn/generator/template/template.c +88 -0
- data/lib/burn/generator.rb +3 -0
- data/lib/burn/tools/mac/cc65/asminc/_file.inc +27 -0
- data/lib/burn/tools/mac/cc65/asminc/_heap.inc +35 -0
- data/lib/burn/tools/mac/cc65/asminc/apple2.inc +64 -0
- data/lib/burn/tools/mac/cc65/asminc/atari.inc +1175 -0
- data/lib/burn/tools/mac/cc65/asminc/atari.mac +59 -0
- data/lib/burn/tools/mac/cc65/asminc/atmos.inc +110 -0
- data/lib/burn/tools/mac/cc65/asminc/c128.inc +214 -0
- data/lib/burn/tools/mac/cc65/asminc/c16.inc +9 -0
- data/lib/burn/tools/mac/cc65/asminc/c64.inc +212 -0
- data/lib/burn/tools/mac/cc65/asminc/cbm.mac +50 -0
- data/lib/burn/tools/mac/cc65/asminc/cbm510.inc +182 -0
- data/lib/burn/tools/mac/cc65/asminc/cbm610.inc +110 -0
- data/lib/burn/tools/mac/cc65/asminc/cbm_filetype.inc +34 -0
- data/lib/burn/tools/mac/cc65/asminc/cpu.mac +24 -0
- data/lib/burn/tools/mac/cc65/asminc/ctype.inc +29 -0
- data/lib/burn/tools/mac/cc65/asminc/em-error.inc +49 -0
- data/lib/burn/tools/mac/cc65/asminc/em-kernel.inc +106 -0
- data/lib/burn/tools/mac/cc65/asminc/errno.inc +36 -0
- data/lib/burn/tools/mac/cc65/asminc/fcntl.inc +21 -0
- data/lib/burn/tools/mac/cc65/asminc/generic.mac +55 -0
- data/lib/burn/tools/mac/cc65/asminc/get_tv.inc +22 -0
- data/lib/burn/tools/mac/cc65/asminc/joy-error.inc +44 -0
- data/lib/burn/tools/mac/cc65/asminc/joy-kernel.inc +85 -0
- data/lib/burn/tools/mac/cc65/asminc/longbranch.mac +88 -0
- data/lib/burn/tools/mac/cc65/asminc/lynx.inc +279 -0
- data/lib/burn/tools/mac/cc65/asminc/modload.inc +78 -0
- data/lib/burn/tools/mac/cc65/asminc/mouse-kernel.inc +180 -0
- data/lib/burn/tools/mac/cc65/asminc/nes.inc +93 -0
- data/lib/burn/tools/mac/cc65/asminc/o65.inc +150 -0
- data/lib/burn/tools/mac/cc65/asminc/opcodes.inc +509 -0
- data/lib/burn/tools/mac/cc65/asminc/pet.inc +54 -0
- data/lib/burn/tools/mac/cc65/asminc/plus4.inc +86 -0
- data/lib/burn/tools/mac/cc65/asminc/ser-error.inc +54 -0
- data/lib/burn/tools/mac/cc65/asminc/ser-kernel.inc +162 -0
- data/lib/burn/tools/mac/cc65/asminc/signal.inc +57 -0
- data/lib/burn/tools/mac/cc65/asminc/smc.inc +245 -0
- data/lib/burn/tools/mac/cc65/asminc/stdio.inc +70 -0
- data/lib/burn/tools/mac/cc65/asminc/supervision.inc +76 -0
- data/lib/burn/tools/mac/cc65/asminc/tgi-error.inc +52 -0
- data/lib/burn/tools/mac/cc65/asminc/tgi-kernel.inc +234 -0
- data/lib/burn/tools/mac/cc65/asminc/tgi-vectorfont.inc +70 -0
- data/lib/burn/tools/mac/cc65/asminc/time.inc +59 -0
- data/lib/burn/tools/mac/cc65/asminc/utsname.inc +46 -0
- data/lib/burn/tools/mac/cc65/asminc/vic20.inc +75 -0
- data/lib/burn/tools/mac/cc65/asminc/zeropage.inc +26 -0
- data/lib/burn/tools/mac/cc65/bin/ca65 +0 -0
- data/lib/burn/tools/mac/cc65/bin/cc65 +0 -0
- data/lib/burn/tools/mac/cc65/bin/ld65 +0 -0
- data/lib/burn/tools/other/cc65/asminc/_file.inc +27 -0
- data/lib/burn/tools/other/cc65/asminc/_heap.inc +35 -0
- data/lib/burn/tools/other/cc65/asminc/apple2.inc +64 -0
- data/lib/burn/tools/other/cc65/asminc/atari.inc +1175 -0
- data/lib/burn/tools/other/cc65/asminc/atari.mac +59 -0
- data/lib/burn/tools/other/cc65/asminc/atmos.inc +110 -0
- data/lib/burn/tools/other/cc65/asminc/c128.inc +214 -0
- data/lib/burn/tools/other/cc65/asminc/c16.inc +9 -0
- data/lib/burn/tools/other/cc65/asminc/c64.inc +212 -0
- data/lib/burn/tools/other/cc65/asminc/cbm.mac +50 -0
- data/lib/burn/tools/other/cc65/asminc/cbm510.inc +182 -0
- data/lib/burn/tools/other/cc65/asminc/cbm610.inc +110 -0
- data/lib/burn/tools/other/cc65/asminc/cbm_filetype.inc +34 -0
- data/lib/burn/tools/other/cc65/asminc/cpu.mac +24 -0
- data/lib/burn/tools/other/cc65/asminc/ctype.inc +29 -0
- data/lib/burn/tools/other/cc65/asminc/em-error.inc +49 -0
- data/lib/burn/tools/other/cc65/asminc/em-kernel.inc +106 -0
- data/lib/burn/tools/other/cc65/asminc/errno.inc +36 -0
- data/lib/burn/tools/other/cc65/asminc/fcntl.inc +21 -0
- data/lib/burn/tools/other/cc65/asminc/generic.mac +55 -0
- data/lib/burn/tools/other/cc65/asminc/get_tv.inc +22 -0
- data/lib/burn/tools/other/cc65/asminc/joy-error.inc +44 -0
- data/lib/burn/tools/other/cc65/asminc/joy-kernel.inc +85 -0
- data/lib/burn/tools/other/cc65/asminc/longbranch.mac +88 -0
- data/lib/burn/tools/other/cc65/asminc/lynx.inc +279 -0
- data/lib/burn/tools/other/cc65/asminc/modload.inc +78 -0
- data/lib/burn/tools/other/cc65/asminc/mouse-kernel.inc +180 -0
- data/lib/burn/tools/other/cc65/asminc/nes.inc +93 -0
- data/lib/burn/tools/other/cc65/asminc/o65.inc +150 -0
- data/lib/burn/tools/other/cc65/asminc/opcodes.inc +509 -0
- data/lib/burn/tools/other/cc65/asminc/pet.inc +54 -0
- data/lib/burn/tools/other/cc65/asminc/plus4.inc +86 -0
- data/lib/burn/tools/other/cc65/asminc/ser-error.inc +54 -0
- data/lib/burn/tools/other/cc65/asminc/ser-kernel.inc +162 -0
- data/lib/burn/tools/other/cc65/asminc/signal.inc +57 -0
- data/lib/burn/tools/other/cc65/asminc/smc.inc +245 -0
- data/lib/burn/tools/other/cc65/asminc/stdio.inc +70 -0
- data/lib/burn/tools/other/cc65/asminc/supervision.inc +76 -0
- data/lib/burn/tools/other/cc65/asminc/tgi-error.inc +52 -0
- data/lib/burn/tools/other/cc65/asminc/tgi-kernel.inc +234 -0
- data/lib/burn/tools/other/cc65/asminc/tgi-vectorfont.inc +70 -0
- data/lib/burn/tools/other/cc65/asminc/time.inc +59 -0
- data/lib/burn/tools/other/cc65/asminc/utsname.inc +46 -0
- data/lib/burn/tools/other/cc65/asminc/vic20.inc +75 -0
- data/lib/burn/tools/other/cc65/asminc/zeropage.inc +26 -0
- data/lib/burn/tools/other/cc65/bin/ca65 +0 -0
- data/lib/burn/tools/other/cc65/bin/cc65 +0 -0
- data/lib/burn/tools/other/cc65/bin/ld65 +0 -0
- data/lib/burn/tools/win/cc65/asminc/_file.inc +27 -0
- data/lib/burn/tools/win/cc65/asminc/_heap.inc +35 -0
- data/lib/burn/tools/win/cc65/asminc/apple2.inc +64 -0
- data/lib/burn/tools/win/cc65/asminc/atari.inc +1101 -0
- data/lib/burn/tools/win/cc65/asminc/atmos.inc +31 -0
- data/lib/burn/tools/win/cc65/asminc/c128.inc +213 -0
- data/lib/burn/tools/win/cc65/asminc/c16.inc +9 -0
- data/lib/burn/tools/win/cc65/asminc/c64.inc +212 -0
- data/lib/burn/tools/win/cc65/asminc/cbm510.inc +182 -0
- data/lib/burn/tools/win/cc65/asminc/cbm610.inc +110 -0
- data/lib/burn/tools/win/cc65/asminc/ctype.inc +29 -0
- data/lib/burn/tools/win/cc65/asminc/em-error.inc +44 -0
- data/lib/burn/tools/win/cc65/asminc/em-kernel.inc +100 -0
- data/lib/burn/tools/win/cc65/asminc/errno.inc +36 -0
- data/lib/burn/tools/win/cc65/asminc/fcntl.inc +21 -0
- data/lib/burn/tools/win/cc65/asminc/get_tv.inc +22 -0
- data/lib/burn/tools/win/cc65/asminc/joy-error.inc +44 -0
- data/lib/burn/tools/win/cc65/asminc/joy-kernel.inc +85 -0
- data/lib/burn/tools/win/cc65/asminc/lynx.inc +273 -0
- data/lib/burn/tools/win/cc65/asminc/modload.inc +78 -0
- data/lib/burn/tools/win/cc65/asminc/mouse-kernel.inc +179 -0
- data/lib/burn/tools/win/cc65/asminc/nes.inc +93 -0
- data/lib/burn/tools/win/cc65/asminc/o65.inc +135 -0
- data/lib/burn/tools/win/cc65/asminc/pet.inc +45 -0
- data/lib/burn/tools/win/cc65/asminc/plus4.inc +87 -0
- data/lib/burn/tools/win/cc65/asminc/rs232.inc +19 -0
- data/lib/burn/tools/win/cc65/asminc/ser-error.inc +50 -0
- data/lib/burn/tools/win/cc65/asminc/ser-kernel.inc +161 -0
- data/lib/burn/tools/win/cc65/asminc/signal.inc +57 -0
- data/lib/burn/tools/win/cc65/asminc/stdio.inc +70 -0
- data/lib/burn/tools/win/cc65/asminc/supervision.inc +76 -0
- data/lib/burn/tools/win/cc65/asminc/tgi-error.inc +48 -0
- data/lib/burn/tools/win/cc65/asminc/tgi-kernel.inc +183 -0
- data/lib/burn/tools/win/cc65/asminc/tgi-mode.inc +48 -0
- data/lib/burn/tools/win/cc65/asminc/time.inc +59 -0
- data/lib/burn/tools/win/cc65/asminc/utsname.inc +46 -0
- data/lib/burn/tools/win/cc65/asminc/vic20.inc +77 -0
- data/lib/burn/tools/win/cc65/asminc/zeropage.inc +22 -0
- data/lib/burn/tools/win/cc65/bin/ca65.exe +0 -0
- data/lib/burn/tools/win/cc65/bin/cc65.exe +0 -0
- data/lib/burn/tools/win/cc65/bin/ld65.exe +0 -0
- data/lib/burn/util/os.rb +38 -0
- data/lib/burn/util/patternizer.rb +62 -0
- data/lib/burn/util/pxes.rb +180 -0
- data/lib/burn/util/server.rb +21 -0
- data/lib/burn/util.rb +4 -0
- data/lib/burn/version.rb +3 -0
- data/lib/burn/workspace_default/asset/crt0.s +260 -0
- data/lib/burn/workspace_default/asset/famitone.s +1031 -0
- data/lib/burn/workspace_default/asset/mus_instruments.s +50 -0
- data/lib/burn/workspace_default/asset/music.s +3 -0
- data/lib/burn/workspace_default/asset/nes.cfg +83 -0
- data/lib/burn/workspace_default/asset/neslib.h +213 -0
- data/lib/burn/workspace_default/asset/neslib.s +923 -0
- data/lib/burn/workspace_default/asset/runtime.lib +0 -0
- data/lib/burn/workspace_default/asset/sounds.s +143 -0
- data/lib/burn/workspace_default/asset/test.h +22 -0
- data/lib/burn/workspace_default/asset/tileset.chr +0 -0
- data/lib/burn/workspace_default/release/js/emulator.html +42 -0
- data/lib/burn/workspace_default/release/js/js/dynamicaudio-89ba58da476270a9b630.min.js +1 -0
- data/lib/burn/workspace_default/release/js/js/jquery-1.4.2.min.js +154 -0
- data/lib/burn/workspace_default/release/js/js/jsnes-4e7a7260aa.js +7149 -0
- data/lib/burn/workspace_default/release/js/swf/dynamicaudio.swf +0 -0
- data/lib/burn/workspace_default/scripts/compile.bat +30 -0
- data/lib/burn/workspace_default/scripts/compile.sh +30 -0
- data/lib/burn.rb +11 -0
- data/test/helper.rb +8 -0
- data/test/runner.rb +2 -0
- data/test/test_burn.rb +14 -0
- data/test/test_dsl.rb +22 -0
- data/test/test_pxes.rb +48 -0
- 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,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
|
+
|