diff --git a/bin/extract.js b/bin/extract.js deleted file mode 100644 index 1179e9a08..000000000 --- a/bin/extract.js +++ /dev/null @@ -1,8 +0,0 @@ -a = new ActiveXObject("scripting.filesystemobject") -for (b = new Enumerator(a.GetFolder(WScript.Arguments(0)).files); !b.atEnd(); b.moveNext()) -{ - if (a.GetExtensionName(b.item()).toLowerCase() == "po") - { - new ActiveXObject("WScript.Shell").run("cadius.exe EXTRACTVOLUME " + '"' + b.item() + '"' + " build/X/", 0) - } -} diff --git a/src/constants.a b/src/constants.a index d527a87ac..825208f1b 100644 --- a/src/constants.a +++ b/src/constants.a @@ -9,14 +9,14 @@ ; D000..E5F4 - persistent data structures (per-game cheat categories, ; gGlobalPrefsStore, gGamesListStore) ; ...unused... -; EAAE..FFF9 - main program code +; EA5C..FFF9 - main program code ; FFFA..FFFF - NMI, reset, IRQ vectors ; ; LC RAM BANK 2 ; D000..D3FF - ProRWTS data ; D400..D5FF - ProRWTS code ; D600..D9FF - HGR font data -; DA00..DF83 - HGR font code & ProRWTS glue code +; DA00..DF2F - HGR font code & ProRWTS glue code ; ...unused... ; DFF0..DFFF - backup of stack (during gameplay and self-running demos) ;------------------------------------------------------------------------------ diff --git a/src/glue.launch.a b/src/glue.launch.a index aa6c0174c..0d2b02f06 100644 --- a/src/glue.launch.a +++ b/src/glue.launch.a @@ -215,10 +215,10 @@ gCurrentlyVisibleSlideshowIndex=*+1 Launch jsr SwitchToBank2 jsr SaveOrRestoreScreenHoles ; save screen hole contents - ldx #$F1 -- lda $100,x - sta $DF00,x ; back up stack - inx + ldy #$F1 +- lda $100,y + sta $DF00,y ; back up stack + iny bne - tsx ; back up stack pointer stx $DFF0 @@ -230,5 +230,10 @@ Launch sta $bf00,x dex bpl - + tya + ldy #$18 +- sta $bf57,y + dey + bne - jmp $106 ; jump to pre-launch code } diff --git a/src/prodos.impl.a b/src/prodos.impl.a index 69970c5cd..99335a644 100644 --- a/src/prodos.impl.a +++ b/src/prodos.impl.a @@ -21,11 +21,8 @@ ProDOS_enter !set CloseHandles = @imp_close stx ProDOS_savedX+1 sty ProDOS_savedY+1 - pha jsr @swap_zp pla - tax - pla tay pla sta @fetchaddr+1 @@ -43,14 +40,11 @@ ProDOS_enter pha tya pha - php - txa - pha @request lda #$d1 cmp #$80 beq @do_readblock - cmp #$81 ;I don't remember if I used this, but it's cheap to add + cmp #$81 beq @do_writeblock cmp #$c4 beq @do_getattrib @@ -69,9 +63,9 @@ ProDOS_enter cmp #$ce beq @do_seek cmp #$d1 - beq @do_eof - ;;any others?? - jmp ProDOS_fatal + ;;bne @do_fatal +@do_eof + jmp @imp_eof @do_readblock @do_writeblock jmp @imp_rdwrblock @@ -92,8 +86,8 @@ ProDOS_enter jmp @restore_zp @do_seek jmp @imp_seek -@do_eof - jmp @imp_eof +@do_fatal + ;;jmp ProDOS_fatal @imp_rdwrblock and #$7f @@ -345,15 +339,6 @@ ProDOS_enter @restore_zp jsr @swap_zp - pla - lsr - lsr - lsr - lsr - and #8 - plp - adc #0 - tax jmp ProDOS_exit @handle @@ -492,54 +477,52 @@ promote !pseudopc $bf00 { php sei - lda $c012 + bit $c083 !byte $24 !if * != $bf06 { !error "$BF06 misplaced (",*,")" } rts ;clock interface, must be RTS on real ProDOS if program uses $20x - asl - lda $c011 bit $c083 - jmp ProDOS_LC - !text "4Q" + jmp ProDOS_enter +ProDOS_exit +ProDOS_savedX + ldx #$d1 + plp + clc + bcc ProDOS_savedY !if * != $bf13 { !error "$BF13 misplaced (",*,")" } !byte $c1 !word $c2d1, $c3d1, $c4d1, $c5d1, $c6d1, $c7d1 -ProDOS_LC - bit $c083 - jmp ProDOS_enter -ProDOS_exit - sta $c082, x -ProDOS_savedX - ldx #$d1 ProDOS_savedY ldy #$d1 - plp - clc - !byte $24 -ProDOS_unit - !if * != $bf30 { - !error "$BF30 misplaced (",*,")" - } - !byte $d1 - + sta $c081 lda #0 rts +ProDOS_unit + !if * > $bf30 { + !error "$BF30 misplaced (",*,")" + } else { + !if * != $bf30 { + !fill $bf30-* + } + } + !byte $d1 + ProDOS_fatal ;only for debugging, will be removed - bit $c081 - pha - jsr $fe89 - jsr $fe93 - pla - jsr $fdda - jmp $ff65 -*=$bf58 - !fill $18 +;; bit $c081 +;; pha +;; jsr $fe89 +;; jsr $fe93 +;; pla +;; jsr $fdda +;; jmp $ff65 +;;*=$bf58 +;; !fill $18 ;filled by init instead ProDOS_prefix=$bfd0 ; !fill $2e diff --git a/winmake.bat b/winmake.bat index d63980a72..eb5dc6db8 100644 --- a/winmake.bat +++ b/winmake.bat @@ -20,11 +20,9 @@ set CADIUS=cadius if "%1" equ "asm" ( :asm call :md +call :asmlauncher call :asmfx call :asmprelaunch -2>build\relbase.log %ACME% src\4cade.a -for /f "tokens=*" %%q in (build\relbase.log) do set _make=%%q -%ACME% -DRELBASE=$!_make:~-5,4! -r build\4cade.lst src\4cade.a goto :EOF ) @@ -93,7 +91,7 @@ cscript /nologo bin\rsync.js res\fx\* build\FX >>build\log %CADIUS% CREATEFOLDER "build\%DISK%" "/%VOLUME%/X/" >>build\log cscript /nologo bin\do2po.js res\dsk build\po cscript /nologo bin\rsync.js res\dsk\*.po build\po -cscript /nologo bin\extract.js build\po >>build\log +for %%q in (build\po\*.po) do %CADIUS% EXTRACTVOLUME "%%q" build\X\ >>build\log echo y|1>nul 2>nul del /s build\X\.DS_Store echo y|1>nul 2>nul del /s build\X\PRODOS echo y|1>nul 2>nul del /s build\X\LOADER.SYSTEM @@ -130,6 +128,12 @@ goto :EOF 2>nul md build\PRELAUNCH goto :EOF +:asmlauncher +2>build\relbase.log %ACME% src\4cade.a +for /f "tokens=*" %%q in (build\relbase.log) do set _make=%%q +%ACME% -DRELBASE=$!_make:~-5,4! -r build\4cade.lst src\4cade.a +goto :EOF + :asmfx for %%q in (src\fx\*.a) do ( for /f "tokens=* usebackq" %%k in (`find "^!to" %%q`) do set _to=%%k