/little_brick_out/little_brick_out_tone.asm
/little_brick_out/little_brick_out_patched.bas
/little_brick_out/little_brick_out_patched.dsk
-/orig/apple2.rom
-/orig/apple_ii+_rom.zip
+/orig/APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip
/orig/Apple_DOS_3.3_Master.dsk
/orig/Apple_DOS_v3.3_1980_Apple.do
/orig/DOS_Tool_Kit_v1.0_1980_Apple.do
.PHONY: all
all: \
+APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip \
Apple_DOS_3.3_Master.dsk \
Apple_DOS_v3.3_1980_Apple.do \
DOS_Tool_Kit_v1.0_1980_Apple.do \
Lemonade_Stand_1979_Apple.do \
-apple2.rom
+
+# Apple II+ - 341-0020 - Applesoft BASIC Autostart Monitor F800 - 2716.bin
+# Apple II+ - 7341-0036 - Character Generator Rev7+ - 2716.bin
+APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip:
+ rm -f $@
+ wget https://mirrors.apple2.org.za/ftp.apple.asimov.net/emulators/rom_images/APPLE%20Computer%20and%20Peripheral%20Card%20Roms%20Collection.zip
# little brick out
Apple_DOS_3.3_Master.dsk:
rm -f $@
wget https://archive.org/download/a2_Apple_DOS_v3.3_1980_Apple/$@
+# edasm, ribbit
DOS_Tool_Kit_v1.0_1980_Apple.do:
rm -f $@
wget https://archive.org/download/a2_DOS_Tool_Kit_v1.0_1980_Apple/$@
rm -f $@
wget https://archive.org/download/Lemonade_Stand_1979_Apple/$@
-apple2.rom: apple_ii+_rom.zip
- rm -f $@
- unzip -L $< $@
- touch $@
-
-apple_ii+_rom.zip:
- rm -f $@
- wget -O $@ https://mirrors.apple2.org.za/ftp.apple.asimov.net/emulators/rom_images/apple_ii%2B_rom.zip
-
+# avoid hitting archive.org every time, use "make realclean" to really delete
clean:
- # avoid hitting archive.org every time
- # they can be deleted manually if needed
+
+realclean:
rm -f \
-apple2.rom \
-#Apple_DOS_3.3_Master.dsk \
-#Apple_DOS_v3.3_1980_Apple.do \
-#DOS_Tool_Kit_v1.0_1980_Apple.do \
-#Lemonade_Stand_1979_Apple.do \
-#apple_ii+_rom.zip
+APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip \
+Apple_DOS_3.3_Master.dsk \
+Apple_DOS_v3.3_1980_Apple.do \
+DOS_Tool_Kit_v1.0_1980_Apple.do \
+Lemonade_Stand_1979_Apple.do
all: \
emu_65c02 \
hrcg.obj \
-monitor_rom.obj \
+gr_terminal.obj \
hrcg_terminal.obj \
frogs1.set \
frogs2.set \
-lily_pad.pic
+lily_pad.pic \
+Apple\ II+\ -\ 341-0020\ -\ Applesoft\ BASIC\ Autostart\ Monitor\ F800\ -\ 2716.bin \
+Apple\ II+\ -\ 7341-0036\ -\ Character\ Generator\ Rev7+\ -\ 2716.bin
emu_65c02: emu_65c02.o stty_sane.o vrEmu6502/src/vrEmu6502.o
${CC} ${LDFLAGS} -o $@ $^ -lSDL2
+gr_terminal.obj: \
+gr_terminal.asm \
+gr_terminal_asm.txt \
+bootable.dsk \
+../orig/DOS_Tool_Kit_v1.0_1980_Apple.do
+ cp ../orig/DOS_Tool_Kit_v1.0_1980_Apple.do .
+ tr '\t\na-z' ' \rA-Z' <gr_terminal.asm |\
+LC_ALL=C tr '\000-\177' '\200-\377' >__temp__.asm
+ ${MKDOS33FS} __temp__.dsk
+ ${DOS33} __temp__.dsk SAVE T __temp__.asm "GR TERMINAL.ASM"
+ rm -f ../linapple-pie/Printer.txt
+ tr '\n' '\r' <gr_terminal_asm.txt |\
+( \
+ cd ../linapple-pie && \
+ ./linapple -b -1 ../terminal/DOS_Tool_Kit_v1.0_1980_Apple.do -2 ../terminal/__temp__.dsk \
+)
+ tr -d '\r' <../linapple-pie/Printer.txt >gr_terminal.lst
+ ${DOS33} __temp__.dsk LOAD "GR TERMINAL.OBJ" $@
+ rm DOS_Tool_Kit_v1.0_1980_Apple.do __temp__.asm __temp__.dsk
+
hrcg.obj: \
bootable.dsk \
../orig/DOS_Tool_Kit_v1.0_1980_Apple.do
${DOS33} __temp__.dsk LOAD HRCG.OBJ $@
rm __temp__.dsk
-monitor_rom.obj: ../orig/apple2.rom monitor_rom_obj_header.txt
- ( \
- xxd -r <monitor_rom_obj_header.txt; \
- dd if=$< bs=1024 skip=18 count=2 \
-) >$@
-
hrcg_terminal.obj: \
hrcg_terminal.asm \
hrcg_terminal_asm.txt \
./linapple -b -1 ../orig/Apple_DOS_v3.3_1980_Apple.do -2 ../terminal/$@ \
)
+Apple\ II+\ -\ 341-0020\ -\ Applesoft\ BASIC\ Autostart\ Monitor\ F800\ -\ 2716.bin: \
+../orig/APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip
+ rm -f "$@"
+ unzip "$<" "$@"
+ touch "$@"
+
+Apple\ II+\ -\ 7341-0036\ -\ Character\ Generator\ Rev7+\ -\ 2716.bin: \
+../orig/APPLE\ Computer\ and\ Peripheral\ Card\ Roms\ Collection.zip
+ rm -f "$@"
+ unzip "$<" "$@"
+ touch "$@"
+
clean:
rm -f \
*.o \
vrEmu6502/src/*.o \
emu_65c02 \
hrcg.obj \
-monitor_rom.obj \
hrcg_terminal.obj \
bootable.dsk \
__temp__.asm \
__temp__.dsk \
__defs__.txt \
-__refs__.txt
+__refs__.txt \
+Apple\ II+\ -\ 341-0020\ -\ Applesoft\ BASIC\ Autostart\ Monitor\ F800\ -\ 2716.bin \
+Apple\ II+\ -\ 7341-0036\ -\ Character\ Generator\ Rev7+\ -\ 2716.bin
#!/bin/sh
-./emu_65c02 monitor_rom.obj hrcg.obj terminal.obj -- /bin/busybox sh
+./emu_65c02 hrcg.obj terminal.obj -- /bin/busybox sh
VrEmu6502 *cpu;
+#define ROM_SIZE 0x800
+
+#define CG_ROM_SIZE 0x800
+uint8_t cg_rom[CG_ROM_SIZE];
+
#define MEM_SIZE 0x10000
uint8_t mem[MEM_SIZE];
int hires = APPLE_HIRES0;
int usleep_count, exit_flag;
-int bload(char *name) {
+void rom_load(char *name, uint8_t *data, int size) {
+ int fd = open(name, O_RDONLY);
+ if (fd == -1) {
+ perror(name);
+ exit(EXIT_FAILURE);
+ }
+ if (read(fd, data, size) != size) {
+ perror("read()");
+ exit(EXIT_FAILURE);
+ }
+ close(fd);
+}
+
+int obj_load(char *name) {
int load_address = -1;
char *p;
for (p = name; *p && *p != ','; ++p)
*q = '_';
else if (*q >= 'A' && *q <= 'Z')
*q += 'a' - 'A';
- bload(p);
+ obj_load(p);
}
}
else {
int main(int argc, char **argv) {
int argn = 1;
+ char *cg_rom_file =
+ "Apple II+ - 7341-0036 - Character Generator Rev7+ - 2716.bin";
+ char *f8_rom_file =
+ "Apple II+ - 341-0020 - Applesoft BASIC Autostart Monitor F800 - 2716.bin";
bool timing = false;
- if (argn < argc && strcmp(argv[argn], "-t") == 0) {
- timing = true;
+ while (argn < argc) {
+ if (memcmp(argv[argn], "--cg_rom=", 9) == 0)
+ cg_rom_file = argv[argn] + 9;
+ else if (memcmp(argv[argn], "--f8_rom=", 9) == 0)
+ f8_rom_file = argv[argn] + 9;
+ else if (strcmp(argv[argn], "--timing") == 0)
+ timing = true;
+ else
+ break;
++argn;
}
if (argn >= argc) {
- printf("usage: %s [-t] [utility.obj ...] program.obj [-- child_executable [child_argument ...]]\n", argv[0]);
+ printf("usage: %s [--cg_rom=file.bin] [--f8_rom=file.bin] [--timing] [utility.obj[,aNNNN] ...] program.obj[,aNNNN] [-- child_executable [child_argument ...]]\n", argv[0]);
exit(EXIT_FAILURE);
}
+ rom_load(cg_rom_file, cg_rom, CG_ROM_SIZE);
+ rom_load(f8_rom_file, mem + 0xf800, ROM_SIZE);
+
int load_address = 0;
while (argn < argc) {
char *p = argv[argn++];
if (strcmp(p, "--") == 0)
break;
- load_address = bload(p);
+ load_address = obj_load(p);
}
// open pty and child process if requested
+++ /dev/null
-00000000: 00f8 0008
#!/bin/sh
-./emu_65c02 monitor_rom.obj hrcg.obj terminal.obj -- ../applesoft_basic.py --hrcg --joystick=/dev/input/by-id/usb-Madcatz_Mad_Catz_V.1_Stick-event-joystick,flip_y,swap_buttons ../ribbit/ribbit_patched.tok
+./emu_65c02 hrcg.obj terminal.obj -- ../applesoft_basic.py --hrcg --joystick=/dev/input/by-id/usb-Madcatz_Mad_Catz_V.1_Stick-event-joystick,flip_y,swap_buttons ../ribbit/ribbit_patched.tok