mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-25 18:33:11 +00:00
making astro c pgms
This commit is contained in:
parent
9e900a5a26
commit
132147b1a4
@ -58,6 +58,8 @@ TODO:
|
||||
- bring back the profiler!
|
||||
- vcs disasm is broken
|
||||
- links to external tools in ide
|
||||
- error msg when #link doesn't work
|
||||
- figure out folders for projects for real
|
||||
|
||||
On the website the additional grey spacing next to the program line numbers is not dynamically resized when the web browser window size is changed. Intentional?
|
||||
|
||||
|
@ -318,7 +318,7 @@ function require(modname) {
|
||||
<script src="gen/ui.js"></script>
|
||||
<!-- <script src="src/audio/votrax.js"></script> -->
|
||||
|
||||
<script src="local/lzg.js"></script>
|
||||
<!--<script src="local/lzg.js"></script>-->
|
||||
|
||||
<script>
|
||||
startUI(true);
|
||||
|
@ -29,7 +29,7 @@ PrgStart: DI ; Disable interrupts
|
||||
DB 32 ; ... and 32 pixels from the top of the screen
|
||||
DB 00001100b ; ... with no enlargement, foreground color = 11, background color = 00
|
||||
DW PrgName ; ... to show string at PrgName
|
||||
; EXIT ; Exit interpreter mode
|
||||
EXIT ; Exit interpreter mode
|
||||
Loop: JP Loop ; Play infinite loop
|
||||
Palettes: DB $BF,$00,$00,$00 ; Left color palette (11b, 10b, 01b, 00b)
|
||||
DB $E7,$9A,$39,$19 ; Right color palette (11b, 10b, 01b, 00b)
|
||||
|
11
presets/astrocade/acheader.s
Normal file
11
presets/astrocade/acheader.s
Normal file
@ -0,0 +1,11 @@
|
||||
|
||||
; Minimal header file for use with Astrocade C programs
|
||||
|
||||
.area _CODE
|
||||
|
||||
.byte 0x55 ; ... with the code for a normal menued cartridge
|
||||
.word 0x0218 ; Initialize menu
|
||||
.word PrgName ; ... with string at PrgName
|
||||
.word _main ; ... such that selecting the program enters PrgStart
|
||||
PrgName: .ascii "8BITWORKSHOP" ; String
|
||||
.byte 0 ; ... which must be followed by 0
|
8
presets/astrocade/skeleton.sdcc
Normal file
8
presets/astrocade/skeleton.sdcc
Normal file
@ -0,0 +1,8 @@
|
||||
|
||||
//#link "acheader.s"
|
||||
|
||||
#include <string.h>
|
||||
|
||||
void main() {
|
||||
memset((void*)0x4000, 0, 0xe00); // clear screen, avoid vars and stack (1e00-1fff)
|
||||
}
|
35
presets/astrocade/skeleton.zmac
Normal file
35
presets/astrocade/skeleton.zmac
Normal file
@ -0,0 +1,35 @@
|
||||
; Demo 1: HELLO, WORLDS! / 2018 hxlnt
|
||||
; Inspired by Adam Trionfo's Hello World
|
||||
; http://www.ballyalley.com/ml/ml_homebrew/helloworld/hello.asm
|
||||
; Assemble with Zmac 1.3
|
||||
; From: https://github.com/hxlnt/astrocade
|
||||
|
||||
INCLUDE "hvglib.h" ; Include HVGLIB library
|
||||
ORG FIRSTC ; Initialize at beginning of cartridge ROM area
|
||||
DB $55 ; ... with the code for a normal menued cartridge
|
||||
DW MENUST ; Initialize menu
|
||||
DW PrgName ; ... with string at PrgName
|
||||
DW PrgStart ; ... such that selecting the program enters PrgStart
|
||||
PrgName: DB "HELLO, WORLDS!"; String
|
||||
DB 0 ; ... which must be followed by 0
|
||||
PrgStart: DI ; Disable interrupts
|
||||
SYSTEM INTPC ; Begin interpreter mode
|
||||
DO SETOUT ; Set output ports
|
||||
DB 100*2 ; ... with VBLANK line set to line 100
|
||||
DB 112/4 ; ... with color boundary 112 pixels from the left of the screen
|
||||
DB 00001000b ; ... with screen interrupts reenabled
|
||||
DO COLSET ; Set color palettes
|
||||
DW Palettes ; ... with the values at Palettes
|
||||
DO FILL ; Set background fill
|
||||
DW NORMEM ; ... starting at the beginning of screen RAM
|
||||
DW 100*BYTEPL ; ... and going for 100 lines
|
||||
DB 00010010b ; ... with a fill pattern of three different colored pixels
|
||||
DO STRDIS ; Set string display
|
||||
DB 0 ; ... starting 0 pixels from the left of the screen
|
||||
DB 32 ; ... and 32 pixels from the top of the screen
|
||||
DB 00001100b ; ... with no enlargement, foreground color = 11, background color = 00
|
||||
DW PrgName ; ... to show string at PrgName
|
||||
EXIT ; Exit interpreter mode
|
||||
Loop: JP Loop ; Play infinite loop
|
||||
Palettes: DB $BF,$00,$00,$00 ; Left color palette (11b, 10b, 01b, 00b)
|
||||
DB $E7,$9A,$39,$19 ; Right color palette (11b, 10b, 01b, 00b)
|
@ -11,7 +11,7 @@ const ASTROCADE_PRESETS = [
|
||||
{id:'03-horcbpal.asm', name:'Paddle Demo'},
|
||||
];
|
||||
|
||||
// TODO: fix keys, more controllers, paddles, vibrato/noise, border color
|
||||
// TODO: fix keys, more controllers, paddles, vibrato/noise, border color, full refresh
|
||||
|
||||
const ASTROCADE_KEYCODE_MAP = makeKeycodeMap([
|
||||
// player 1
|
||||
@ -53,10 +53,8 @@ const ASTROCADE_KEYCODE_MAP = makeKeycodeMap([
|
||||
const _BallyAstrocadePlatform = function(mainElement) {
|
||||
|
||||
var cpu, ram, membus, iobus, rom, bios;
|
||||
var probe;
|
||||
var video, timer, pixels;
|
||||
var audio, psg;
|
||||
var inputs = new Uint8Array(0x20);
|
||||
//var watchdog_counter;
|
||||
const swidth = 160;
|
||||
const sheight = 102;
|
||||
@ -66,6 +64,8 @@ const _BallyAstrocadePlatform = function(mainElement) {
|
||||
const PIXEL_ON = 0xffeeeeee;
|
||||
const PIXEL_OFF = 0xff000000;
|
||||
|
||||
// state variables
|
||||
var inputs = new Uint8Array(0x20);
|
||||
var magicop = 0;
|
||||
var xpand = 0;
|
||||
var xplower = false;
|
||||
@ -157,8 +157,11 @@ const _BallyAstrocadePlatform = function(mainElement) {
|
||||
|
||||
start = function() {
|
||||
ram = new RAM(0x2000);
|
||||
bios = new lzgmini().decode(stringToByteArray(atob(window['ASTROCADE_LZGROM'])));
|
||||
//displayPCs = new Uint16Array(new ArrayBuffer(0x2000*2));
|
||||
var lzgrom = window['ASTROCADE_LZGROM'];
|
||||
if (lzgrom)
|
||||
bios = new lzgmini().decode(stringToByteArray(atob(lzgrom)));
|
||||
else
|
||||
bios = padBytes([0xf3, 0x31, 0x00, 0x50, 0x21, 0x05, 0x20, 0x7e, 0x23, 0x66, 0x6f, 0xe9], 0x2000); // SP=$5000, jump to ($2005)
|
||||
membus = {
|
||||
read: newAddressDecoder([
|
||||
[0x0000, 0x1fff, 0x1fff, function(a) { return bios ? bios[a] : 0; }],
|
||||
@ -281,14 +284,32 @@ const _BallyAstrocadePlatform = function(mainElement) {
|
||||
cpu.loadState(state.c);
|
||||
ram.mem.set(state.b);
|
||||
palette.set(state.palette);
|
||||
magicop = state.magicop;
|
||||
xpand = state.xpand;
|
||||
xplower = state.xplower;
|
||||
shift2 = state.shift2;
|
||||
horcb = state.horcb;
|
||||
inmod = state.inmod;
|
||||
inlin = state.inlin;
|
||||
infbk = state.infbk;
|
||||
verbl = state.verbl;
|
||||
this.loadControlsState(state);
|
||||
}
|
||||
saveState() {
|
||||
return {
|
||||
c:this.getCPUState(),
|
||||
b:ram.mem.slice(0),
|
||||
in:inputs.slice(0),
|
||||
palette:palette.slice(0),
|
||||
c: this.getCPUState(),
|
||||
b: ram.mem.slice(0),
|
||||
in: inputs.slice(0),
|
||||
palette: palette.slice(0),
|
||||
magicop: magicop,
|
||||
xpand: xpand,
|
||||
xplower: xplower,
|
||||
shift2: shift2,
|
||||
horcb: horcb,
|
||||
inmod: inmod,
|
||||
inlin: inlin,
|
||||
infbk: infbk,
|
||||
verbl: verbl,
|
||||
};
|
||||
}
|
||||
loadControlsState(state) {
|
||||
|
@ -917,6 +917,9 @@ function assembleSDASZ80(step) {
|
||||
path:step.path,
|
||||
msg:matches[1]
|
||||
});
|
||||
} else {
|
||||
// ?ASxxxx-Error-<q> in line 1627 of cosmic.asm
|
||||
// <q> missing or improper operators, terminators, or delimiters
|
||||
}
|
||||
}
|
||||
var ASZ80 = sdasz80({
|
||||
|
Loading…
Reference in New Issue
Block a user