diff --git a/.gitignore b/.gitignore index 49cb04c..a65b33b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,9 @@ *.bin +*.jar *.kicad_prl *.o .vscode +AppleIIVGA-Config.dsk build fp-info-cache /.vs diff --git a/config-disk/DOS_3.3_boot.dsk b/config-disk/DOS_3.3_boot.dsk new file mode 100644 index 0000000..09d9afd Binary files /dev/null and b/config-disk/DOS_3.3_boot.dsk differ diff --git a/config-disk/Makefile b/config-disk/Makefile new file mode 100644 index 0000000..5868cb8 --- /dev/null +++ b/config-disk/Makefile @@ -0,0 +1,13 @@ +# Download AppleCommander from https://applecommander.github.io/install/ +AC ?= java -jar AppleCommander-ac-1.9.0.jar + +BASIC_SRCS = STARTUP.bas + +AppleIIVGA-Config.dsk: STARTUP.bas + cp DOS_3.3_boot.dsk $@~ + $(AC) -d $@~ STARTUP + $(AC) -bas $@~ STARTUP < STARTUP.bas + mv $@~ $@ + +clean: + rm -f AppleIIVGA-Config.dsk *~ diff --git a/config-disk/STARTUP.bas b/config-disk/STARTUP.bas new file mode 100644 index 0000000..aed8dfd --- /dev/null +++ b/config-disk/STARTUP.bas @@ -0,0 +1,123 @@ + 5 TEXT : GOSUB 1450: VTAB 13: HTAB 8 + 10 D$ = CHR$ (4):SLOT = 0 + 20 REM '''GET SLOT NUMBER + 30 GOSUB 1450 + 40 VTAB 21: GOSUB 1400: INPUT "APPLE II VGA CARD SLOT (1-7): ";SLOT + 50 IF SLOT < 1 THEN GOTO 1500 + 60 IF SLOT > 7 THEN GOTO 1500 + 70 BASEADDR = 49280 + 16 * SLOT + 100 REM '''MAIN MENU + 110 GOSUB 1450 + 120 VTAB 7: GOSUB 1400: PRINT "" + 130 PRINT "1 SCANLINES ON 2 SCANLINES OFF" + 140 PRINT "3 MONOCHROME ON 4 MONOCHROME OFF" + 150 PRINT "5 MONOCHROME CFG 6 CHARSET CFG" + 170 PRINT "7 COLOR PATTERNS": PRINT "" + 180 PRINT "11 ABOUT": PRINT "12 LOAD DEFAULT CONFIG" + 180 PRINT "13 QUIT W/OUT SAVING": PRINT"14 SAVE AND QUIT": PRINT "" + 190 VTAB 22: GOSUB 1400: INPUT "PLEASE ENTER YOUR SELECTION: ";CH + 200 IF CH < 1 THEN GOSUB 1550 + 210 IF CH = 1 THEN GOSUB 500 + 220 IF CH = 2 THEN GOSUB 550 + 230 IF CH = 3 THEN GOSUB 600 + 240 IF CH = 4 THEN GOSUB 650 + 250 IF CH = 5 THEN GOSUB 2000 + 260 IF CH = 6 THEN GOSUB 3000 + 270 IF CH = 7 THEN GOSUB 700 + 280 IF CH = 8 THEN GOSUB 1550 + 290 IF CH = 9 THEN GOSUB 1550 + 300 IF CH = 10 THEN GOSUB 1550 + 310 IF CH = 11 THEN GOSUB 1650 + 320 IF CH = 12 THEN GOSUB 800 + 330 IF CH = 13 THEN GOTO 4050 + 340 IF CH = 14 THEN GOTO 4000 + 350 IF CH > 14 THEN GOSUB 1550 + 360 GOTO 100 + 500 REM '''SCANLINES ON + 510 POKE BASEADDR + 0,1: RETURN + 550 REM '''SCANLINES OFF + 560 POKE BASEADDR + 0,2: RETURN + 600 REM '''MONOCHROME ON + 610 POKE 49185,128: RETURN + 650 REM '''MONOCHROME OFF + 660 POKE 49185,0: RETURN + 700 REM '''COLOR PATTERN + 710 GR : HOME + 720 FOR I = 0 TO 31: COLOR= I / 2: VLIN 0,39 AT I: NEXT I: FOR I = 0 TO 14 STEP 2: PRINT TAB( I * 2 + 1);I;: NEXT I: PRINT : FOR I = 1 TO 15 STEP 2: PRINT TAB( I * 2 + 1);I;: NEXT I + 730 PRINT "": GET A$: TEXT : RETURN + 800 REM '''LOAD DEFAULT CONFIGURATION + 810 POKE BASEADDR + 4,1: RETURN + 1400 REM STRING ROUTINES + 1410 PRINT "---------------------------------------": RETURN + 1450 HOME : PRINT "APPLE II VGA": GOSUB 1400: PRINT "COPYRIGHT (C) 2021-2023 MARK AIKENS": PRINT "COPYRIGHT (C) 2022-2023 DAVID KUDER": RETURN + 1500 REM '''ERROR HANDLING ROUTINES + 1510 GOSUB 1450: VTAB 13: HTAB 13: PRINT "[INVALID SLOT]" + 1520 GOSUB 1600: GOTO 20 + 1550 GOSUB 1450: VTAB 13: HTAB 11: PRINT "[INVALID OPTION]" + 1560 GOSUB 1600: RETURN + 1600 FOR I = 1 TO 1000: NEXT I: RETURN + 1650 GOSUB 1450: PRINT "": PRINT "": PRINT "THIS PROJECT IS A VGA CARD FOR APPLE II": PRINT "COMPUTERS TO OUPUT A CRISP RGB SIGNAL": PRINT "TO A VGA MONITOR INSTEAD OF HAVING TO": PRINT "RELY ON THE COMPOSITE OUTPUT. THIS IS" + 1660 PRINT "ACCOMPLISHED BY SNOOPING THE 6502 BUS": PRINT "AND CREATING A SHADOW COPY OF THE VIDEO": PRINT "MEMORY WITHIN A RASPBERRY PI PICO, THEN": PRINT "PROCESSING THE VIDEO MEMORY CONTENTS TO" + 1670 PRINT "OUTPUT A 'PERFECT' SIGNAL.": PRINT "": PRINT "": HTAB 6: PRINT "[MORE DETAILS AVAILABLE AT]": PRINT "HTTPS://GITHUB.COM/MARKADEV/APPLEII-VGA" + 1680 VTAB 21: GOSUB 1400: PRINT "PRESS ANY KEY TO CONTINUE...": GET A$ + 1690 RETURN + 2000 REM '''MONOCHROME CONFIG MENU + 2010 HOME: PRINT "MONOCHROME CONFIGURATION OPTIONS": GOSUB 1400: PRINT "" + 2020 PRINT "FOREGROUND COLOR" + 2030 PRINT " 1 WHITE": PRINT " 2 GREEN": PRINT " 3 AMBER": PRINT "" + 2040 PRINT "BACKGROUND COLOR" + 2050 PRINT " 4 BLACK": PRINT " 5 GREEN": PRINT " 6 AMBER": PRINT "" + 2060 VTAB 20: PRINT "7 RETURN TO MAIN MENU" + 2100 VTAB 22: GOSUB 1400: INPUT "PLEASE ENTER YOUR SELECTION: ";CI + 2110 IF CI < 1 THEN GOSUB 1550 + 2120 IF CI = 1 THEN GOSUB 2300 + 2130 IF CI = 2 THEN GOSUB 2350 + 2140 IF CI = 3 THEN GOSUB 2400 + 2150 IF CI = 4 THEN GOSUB 2500 + 2160 IF CI = 5 THEN GOSUB 2550 + 2170 IF CI = 6 THEN GOSUB 2600 + 2180 IF CI = 7 THEN RETURN + 2190 IF CI > 7 THEN GOSUB 1550 + 2200 GOTO 2000 + 2300 REM '''MONOCHROME FOREGROUND WHITE + 2310 POKE BASEADDR + 1,1: RETURN + 2350 REM '''MONOCHROME FOREGROUND GREEN + 2360 POKE BASEADDR + 1,2: RETURN + 2400 REM '''MONOCHROME FOREGROUND AMBER + 2410 POKE BASEADDR + 1,3: RETURN + 2500 REM '''MONOCHROME BACKGROUND BLACK + 2510 POKE BASEADDR + 1,16: RETURN + 2550 REM '''MONOCHROME BACKGROUND GREEN + 2560 POKE BASEADDR + 1,32: RETURN + 2600 REM '''MONOCHROME BACKGROUND AMBER + 2610 POKE BASEADDR + 1,48: RETURN + 3000 REM '''CHARSET CONFIG MENU + 3010 HOME: PRINT "CHARSET CONFIGURATION OPTIONS": GOSUB 1400: PRINT "" + 3020 PRINT "1 CHARACTER SET VIEWER" + 3030 PRINT "2 LOAD A BUILT-IN CHARSET" + 3070 VTAB 20: PRINT "7 RETURN TO MAIN MENU" + 3080 VTAB 22: GOSUB 1400: INPUT "PLEASE ENTER YOUR SELECTION: ";CI + 3110 IF CI = 1 THEN GOSUB 3300 + 3120 IF CI = 2 THEN GOSUB 3400 + 3170 IF CI = 7 THEN RETURN + 3180 GOTO 3000 + 3300 REM '''CHARACTER SET VIEWER + 3310 HOME + 3320 FOR R = 0 TO 7 + 3330 FOR C = 0 TO 31 + 3340 POKE R * 128 + 1024 + C,R * 32 + C + 3350 NEXT C,R + 3360 VTAB 21: GOSUB 1400: PRINT "PRESS ANY KEY TO CONTINUE...": GET A$ + 3370 RETURN + 3400 REM '''LOAD A BUILT-IN CHARSET + 3410 HOME : INPUT "ENTER CHARSET (0-15): ";CS + 3420 IF CS < 0 THEN RETURN + 3420 IF CS > 15 THEN RETURN + 3430 POKE BASEADDR + 4,16+CS: RETURN + 4000 REM '''SAVE AND EXIT + 4010 POKE BASEADDR + 4,2 + 4020 FOR I = 1 TO 500: NEXT I + 4030 HOME : PRINT "YOUR SETTINGS WERE SAVED TO FLASH": GOTO 4100 + 4050 REM ''' EXIT W/OUT SAVING + 4060 HOME : PRINT "YOUR SETTINGS WERE NOT SAVED TO FLASH": PRINT "BUT WILL REMAIN ACTIVE UNTIL THE NEXT": PRINT "POWER CYCLE" + 4100 REM '''END