mirror of
https://github.com/sehugg/8bitworkshop.git
synced 2024-11-24 12:31:25 +00:00
added category field to presets
This commit is contained in:
parent
19e3bbbea3
commit
73c7ac5941
30
presets/c64/cartheader.acme
Normal file
30
presets/c64/cartheader.acme
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
* = $7ffe
|
||||
; 2-byte load address for ROM image
|
||||
!word $8000
|
||||
; http://swut.net/c64cart-howto.html
|
||||
; https://codebase64.org/doku.php?id=base:assembling_your_own_cart_rom_image
|
||||
!word CartKReset ; cold start vector
|
||||
!word CartWStart ; warm start vector
|
||||
!byte $c3, $c2, $cd, $38, $30 ; "CBM80"
|
||||
CartKReset
|
||||
STX $D016 ; Turn on VIC for PAL / NTSC check
|
||||
JSR $FDA3 ; IOINIT - Init CIA chips
|
||||
JSR $FD50 ; RANTAM - Clear/test system RAM
|
||||
JSR $FD15 ; RESTOR - Init KERNAL RAM vectors
|
||||
JSR $FF5B ; CINT - Init VIC and screen editor
|
||||
CLI ; Re-enable IRQ interrupts
|
||||
CartBReset
|
||||
; init BASIC?
|
||||
!ifdef CART_INIT_BASIC {
|
||||
JSR $E453 ; Init BASIC RAM vectors
|
||||
JSR $E3BF ; Main BASIC RAM Init routine
|
||||
JSR $E422 ; Power-up message / NEW command
|
||||
LDX #$FB
|
||||
TXS ; Reduce stack pointer for BASIC
|
||||
; don't init BASIC, just NOP
|
||||
} else {
|
||||
!fill 12, $ea ; nop
|
||||
}
|
||||
CartWStart
|
||||
; should be * = $x025
|
42
presets/c64/hello.acme
Normal file
42
presets/c64/hello.acme
Normal file
@ -0,0 +1,42 @@
|
||||
|
||||
!src "cartheader.acme"
|
||||
|
||||
!address {
|
||||
Temp = $02
|
||||
}
|
||||
|
||||
Start:
|
||||
sei ; turn off interrupts
|
||||
ldy #0
|
||||
Loop:
|
||||
lda Message,y ; load message byte
|
||||
beq EOM ; 0 = end of string
|
||||
clc
|
||||
adc #$40
|
||||
sta $400+41,y ; store to screen
|
||||
iny
|
||||
bne Loop ; next character
|
||||
EOM:
|
||||
|
||||
Wait1:
|
||||
lda $d011
|
||||
bmi Wait1 ; wait for line < 256
|
||||
Wait2:
|
||||
lda $d012 ; get current scanline
|
||||
Wait3:
|
||||
cmp $d012
|
||||
beq Wait3 ; wait for scanline to change
|
||||
lsr ; divide by 2
|
||||
lsr ; divide by 2
|
||||
clc
|
||||
adc Temp ; add to frame counter
|
||||
sta $d020 ; set border color
|
||||
lda $d011 ; get status bits
|
||||
bpl Wait2 ; repeat until line >= 256
|
||||
sty $d020 ; reset border color
|
||||
dec Temp ; change frame counter
|
||||
jmp Wait1 ; endless loop
|
||||
|
||||
Message:
|
||||
!scr "HELLO WORLD", 0
|
||||
|
@ -158,6 +158,7 @@ export interface Preset {
|
||||
name : string;
|
||||
chapter? : number;
|
||||
title? : string;
|
||||
category?: string;
|
||||
}
|
||||
|
||||
export interface MemoryBus {
|
||||
|
@ -3,7 +3,7 @@
|
||||
|
||||
import * as localforage from "localforage";
|
||||
import { CodeProject, createNewPersistentStore, LocalForageFilesystem, OverlayFilesystem, ProjectFilesystem, WebPresetsFileSystem } from "./project";
|
||||
import { WorkerResult, WorkerOutputResult, WorkerError, FileData, WorkerErrorResult } from "../common/workertypes";
|
||||
import { WorkerResult, WorkerError, FileData } from "../common/workertypes";
|
||||
import { ProjectWindows } from "./windows";
|
||||
import { Platform, Preset, DebugSymbols, DebugEvalCondition, isDebuggable, EmuState } from "../common/baseplatform";
|
||||
import { PLATFORMS, EmuHalt } from "../common/emu";
|
||||
@ -15,7 +15,7 @@ import { GHSession, GithubService, getRepos, parseGithubURL } from "./services";
|
||||
import Split = require('split.js');
|
||||
import { importPlatform } from "../platform/_index";
|
||||
import { DisassemblerView, ListingView, PC_LINE_LOOKAHEAD , SourceEditor } from "./views/editors";
|
||||
import { AddressHeatMapView, BinaryFileView, MemoryMapView, MemoryView, ProbeLogView, ProbeSymbolView, RasterPCHeatMapView, RasterStackMapView, ScanlineIOView, VRAMMemoryView } from "./views/debugviews";
|
||||
import { AddressHeatMapView, BinaryFileView, MemoryMapView, MemoryView, ProbeLogView, ProbeSymbolView, RasterStackMapView, ScanlineIOView, VRAMMemoryView } from "./views/debugviews";
|
||||
import { AssetEditorView } from "./views/asseteditor";
|
||||
import { isMobileDevice } from "./views/baseviews";
|
||||
import { CallStackView, DebugBrowserView } from "./views/treeviews";
|
||||
@ -1221,11 +1221,16 @@ async function _downloadAllFilesZipFile(e) {
|
||||
|
||||
function populateExamples(sel) {
|
||||
let files = {};
|
||||
let optgroup = $("<optgroup />").attr('label','Examples').appendTo(sel);
|
||||
let optgroup;
|
||||
for (var i=0; i<PRESETS.length; i++) {
|
||||
var preset = PRESETS[i];
|
||||
var name = preset.chapter ? (preset.chapter + ". " + preset.name) : preset.name;
|
||||
var isCurrentPreset = preset.id==current_project.mainPath;
|
||||
if (preset.category) {
|
||||
optgroup = $("<optgroup />").attr('label','Examples: ' + preset.category).appendTo(sel);
|
||||
} else if (!optgroup) {
|
||||
optgroup = $("<optgroup />").attr('label','Examples').appendTo(sel);
|
||||
}
|
||||
optgroup.append($("<option />").val(preset.id).text(name).attr('selected',isCurrentPreset?'selected':null));
|
||||
if (isCurrentPreset) current_preset = preset;
|
||||
files[preset.id] = name;
|
||||
|
@ -224,6 +224,7 @@ export class AppleII extends BasicScanlineMachine implements AcceptsBIOS {
|
||||
if (address < 0xc000 || address >= 0xd000) {
|
||||
return this.readConst(address);
|
||||
} else if (address < 0xc100) {
|
||||
this.probe.logIORead(address, 0); // TODO: value
|
||||
var slot = (address >> 4) & 0x0f;
|
||||
switch (slot)
|
||||
{
|
||||
@ -280,6 +281,7 @@ export class AppleII extends BasicScanlineMachine implements AcceptsBIOS {
|
||||
if (address < 0xc000) {
|
||||
this.ram[address] = val;
|
||||
this.grdirty[address>>7] = 1;
|
||||
this.probe.logIOWrite(address, val);
|
||||
} else if (address < 0xc080) {
|
||||
this.read(address); // strobe address, discard result
|
||||
} else if (address < 0xc100) {
|
||||
|
@ -1,13 +1,13 @@
|
||||
|
||||
import { Platform, getOpcodeMetadata_6502, getToolForFilename_6502 } from "../common/baseplatform";
|
||||
import { Platform, Preset, getOpcodeMetadata_6502, getToolForFilename_6502 } from "../common/baseplatform";
|
||||
import { PLATFORMS } from "../common/emu";
|
||||
import { AppleII } from "../machine/apple2";
|
||||
import { Base6502MachinePlatform } from "../common/baseplatform";
|
||||
import { CodeAnalyzer_apple2 } from "../common/analysis";
|
||||
import { BaseMAME6502Platform } from "../common/mameplatform";
|
||||
|
||||
const APPLE2_PRESETS = [
|
||||
{id:'sieve.c', name:'Sieve'},
|
||||
const APPLE2_PRESETS : Preset[] = [
|
||||
{id:'sieve.c', name:'Sieve', category:"C"},
|
||||
{id:'keyboardtest.c', name:'Keyboard Test'},
|
||||
{id:'mandel.c', name:'Mandelbrot'},
|
||||
{id:'tgidemo.c', name:'TGI Graphics Demo'},
|
||||
@ -16,12 +16,12 @@ const APPLE2_PRESETS = [
|
||||
{id:'cosmic.c', name:'Cosmic Impalas'},
|
||||
{id:'farmhouse.c', name:"Farmhouse Adventure"},
|
||||
{id:'yum.c', name:"Yum Dice Game"},
|
||||
{id:'lzgtest.c', name:"LZG Decompressor (C)"},
|
||||
{id:'hgrtest.a', name:"HGR Test (ASM)"},
|
||||
{id:'conway.a', name:"Conway's Game of Life (ASM)"},
|
||||
{id:'lz4fh.a', name:"LZ4FH Decompressor (ASM)"},
|
||||
{id:'deltamod.dasm', name:"Delta Modulation (ASM)"},
|
||||
// {id:'zap.dasm', name:"ZAP! (ASM)"},
|
||||
{id:'lzgtest.c', name:"LZG Decompressor"},
|
||||
{id:'hgrtest.a', name:"HGR Test", category:"Assembly Language"},
|
||||
{id:'conway.a', name:"Conway's Game of Life"},
|
||||
{id:'lz4fh.a', name:"LZ4FH Decompressor"},
|
||||
{id:'deltamod.dasm', name:"Delta Modulation Audio"},
|
||||
// {id:'zap.dasm', name:"ZAP!"},
|
||||
// {id:'tb_6502.s', name:'Tom Bombem (assembler game)'},
|
||||
];
|
||||
|
||||
|
@ -1,12 +1,12 @@
|
||||
|
||||
import { Platform, getOpcodeMetadata_6502, getToolForFilename_6502, Base6502MachinePlatform } from "../common/baseplatform";
|
||||
import { Platform, getOpcodeMetadata_6502, getToolForFilename_6502, Base6502MachinePlatform, Preset } from "../common/baseplatform";
|
||||
import { PLATFORMS } from "../common/emu";
|
||||
import { BaseMAME6502Platform } from "../common/mameplatform";
|
||||
import { Atari5200, Atari800 } from "../machine/atari8";
|
||||
|
||||
declare var jt; // for 6502
|
||||
|
||||
var Atari8_PRESETS = [
|
||||
var Atari8_PRESETS : Preset[] = [
|
||||
{id:'hello.dasm', name:'Hello World (ASM)'},
|
||||
{id:'hellopm.dasm', name:'Hello Sprites (ASM)'},
|
||||
{id:'helloconio.c', name:'Text Mode (C)'},
|
||||
@ -16,7 +16,7 @@ var Atari8_PRESETS = [
|
||||
|
||||
var Atari800_PRESETS = Atari8_PRESETS.concat([
|
||||
{id:'testmusic.c', name:'POKEY Music (C)'},
|
||||
{id:'sieve.bas', name:'Benchmark (FastBasic)'},
|
||||
{id:'sieve.bas', name:'Benchmark (FastBasic)', category:'FastBasic'},
|
||||
{id:'pmtest.bas', name:'Sprites Test (FastBasic)'},
|
||||
{id:'dli.bas', name:'DLI Test (FastBasic)'},
|
||||
{id:'joyas.bas', name:'Match-3 Game (FastBasic)'},
|
||||
|
@ -1,11 +1,11 @@
|
||||
|
||||
import { C64_WASMMachine } from "../machine/c64";
|
||||
import { Platform, Base6502MachinePlatform, getToolForFilename_6502, getOpcodeMetadata_6502 } from "../common/baseplatform";
|
||||
import { Platform, Base6502MachinePlatform, getToolForFilename_6502, getOpcodeMetadata_6502, Preset } from "../common/baseplatform";
|
||||
import { PLATFORMS } from "../common/emu";
|
||||
import { BaseMAME6502Platform } from "../common/mameplatform";
|
||||
|
||||
const C64_PRESETS = [
|
||||
{id:'helloc.c', name:'Hello World'},
|
||||
const C64_PRESETS : Preset[] = [
|
||||
{id:'helloc.c', name:'Hello World', category:'C'},
|
||||
{id:'screen_ram.c', name:'Screen RAM'},
|
||||
{id:'joymove.c', name:'Sprite Movement'},
|
||||
{id:'sprite_collision.c', name:'Sprite Collision'},
|
||||
@ -35,7 +35,8 @@ const C64_PRESETS = [
|
||||
{id:'23matches.c', name:'23 Matches'},
|
||||
{id:'tgidemo.c', name:'TGI Graphics Demo'},
|
||||
{id:'upandaway.c', name:'Up, Up and Away'},
|
||||
{id:'hello.dasm', name:'Hello World (DASM)'},
|
||||
{id:'hello.dasm', name:'Hello World (DASM)', category:'Assembly Language'},
|
||||
{id:'hello.dasm', name:'Hello World (ACME)'},
|
||||
{id:'hello.wiz', name:'Hello Wiz (Wiz)'},
|
||||
];
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
import { Platform, Base6502Platform, getOpcodeMetadata_6502, getToolForFilename_6502 } from "../common/baseplatform";
|
||||
import { Platform, Base6502Platform, getOpcodeMetadata_6502, getToolForFilename_6502, Preset } from "../common/baseplatform";
|
||||
import { PLATFORMS, setKeyboardFromMap, AnimationTimer, RasterVideo, Keys, makeKeycodeMap, KeyFlags, EmuHalt, ControllerPoller } from "../common/emu";
|
||||
import { hex, byteArrayToString } from "../common/util";
|
||||
import { CodeAnalyzer_nes } from "../common/analysis";
|
||||
@ -10,7 +10,7 @@ import Mousetrap = require('mousetrap');
|
||||
import jsnes = require('../../jsnes');
|
||||
import { BaseMAME6502Platform } from "../common/mameplatform";
|
||||
|
||||
const JSNES_PRESETS = [
|
||||
const JSNES_PRESETS : Preset[] = [
|
||||
{id:'hello.c', name:'Hello World'},
|
||||
{id:'attributes.c', name:'Attribute Table'},
|
||||
{id:'scroll.c', name:'Scrolling'},
|
||||
@ -32,16 +32,16 @@ const JSNES_PRESETS = [
|
||||
{id:'climber.c', name:'Climber Game'},
|
||||
{id:'bankswitch.c', name:'Bank Switching'},
|
||||
{id:'irq.c', name:'IRQ Scanline Counter'},
|
||||
{id:'ex0.dasm', name:'Initialization (ASM)'},
|
||||
{id:'ex1.dasm', name:'Hello World (ASM)'},
|
||||
{id:'ex2.dasm', name:'Scrolling Demo (ASM)'},
|
||||
{id:'ex3.dasm', name:'Sprite Demo (ASM)'},
|
||||
{id:'ex4.dasm', name:'Controller Demo (ASM)'},
|
||||
{id:'musicdemo.dasm', name:'Famitone Demo (ASM)'},
|
||||
{id:'xyscroll.dasm', name:'XY Split Scrolling (ASM)'},
|
||||
// {id:'scrollrt.dasm', name:'Line-by-line Scrolling (ASM)'},
|
||||
{id:'road.dasm', name:'3-D Road Demo (ASM)'},
|
||||
{id:'chase/game.c', name:'Shiru\'s Chase Game'},
|
||||
{id:'ex0.dasm', name:'Initialization', category:'Assembly Language (ASM)'},
|
||||
{id:'ex1.dasm', name:'Hello World'},
|
||||
{id:'ex2.dasm', name:'Scrolling Demo'},
|
||||
{id:'ex3.dasm', name:'Sprite Demo'},
|
||||
{id:'ex4.dasm', name:'Controller Demo'},
|
||||
{id:'musicdemo.dasm', name:'Famitone Demo'},
|
||||
{id:'xyscroll.dasm', name:'XY Split Scrolling'},
|
||||
// {id:'scrollrt.dasm', name:'Line-by-line Scrolling'},
|
||||
{id:'road.dasm', name:'3-D Road Demo'},
|
||||
{id:'chase/game.c', name:'Shiru\'s Chase Game', category:'Other'},
|
||||
{id:'hello.wiz', name:'Hello (Wiz)'},
|
||||
];
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
import { Platform, BasePlatform, cpuStateToLongString_6502, dumpStackToString, DisasmLine, CpuState, getToolForFilename_6502 } from "../common/baseplatform";
|
||||
import { PLATFORMS, dumpRAM, EmuHalt, RasterVideo, __createCanvas, drawCrosshair } from "../common/emu";
|
||||
import { Platform, BasePlatform, cpuStateToLongString_6502, dumpStackToString, DisasmLine, CpuState, Preset } from "../common/baseplatform";
|
||||
import { PLATFORMS, dumpRAM, EmuHalt, __createCanvas, drawCrosshair } from "../common/emu";
|
||||
import { hex, loadScript, lpad, tobin } from "../common/util";
|
||||
import { CodeAnalyzer_vcs } from "../common/analysis";
|
||||
import { disassemble6502 } from "../common/cpu/disasm6502";
|
||||
@ -11,7 +11,7 @@ import { BaseMAME6502Platform } from "../common/mameplatform";
|
||||
declare var Javatari : any;
|
||||
declare var jt : any; // 6502
|
||||
|
||||
const VCS_PRESETS = [
|
||||
const VCS_PRESETS : Preset[] = [
|
||||
{id:'examples/hello.a', chapter:4, name:'Hello 6502 and TIA'},
|
||||
{id:'examples/vsync.a', chapter:5, name:'Painting on the CRT', title:'Color Bars'},
|
||||
{id:'examples/playfield.a', chapter:6, name:'Playfield Graphics'},
|
||||
@ -42,11 +42,11 @@ const VCS_PRESETS = [
|
||||
{id:'examples/road.a', chapter:33, name:'Pseudo 3D Road'},
|
||||
{id:'examples/bankswitching.a', chapter:35, name:'Bankswitching'},
|
||||
{id:'examples/wavetable.a', chapter:36, name:'Wavetable Sound'},
|
||||
{id:'examples/fracpitch.a', name:'Fractional Pitch'},
|
||||
{id:'examples/pal.a', name:'PAL Video Output'},
|
||||
// {id:'examples/testlibrary.a', name:'VCS Library Demo'},
|
||||
// {id:'examples/music2.a', name:'Pitch-Accurate Music'},
|
||||
// {id:'examples/fullgame.a', name:'Thru Hike: The Game', title:'Thru Hike'},
|
||||
{id:'examples/fracpitch.a', name:'Fractional Pitch', category:'BASIC and Other Languages'},
|
||||
{id:'bb/helloworld.bas', name:'Hello World (batariBASIC)'},
|
||||
{id:'bb/draw.bas', name:'Playfield Draw (batariBASIC)'},
|
||||
{id:'bb/sample.bas', name:'Sprite Test (batariBASIC)'},
|
||||
|
Loading…
Reference in New Issue
Block a user