sync latest, hook up seek, now Lode Runner can start

use of $1Fxx causes conflict, though
This commit is contained in:
Peter Ferrie 2018-10-31 22:48:35 -07:00
parent 27e9821b11
commit 73f8a2d635
4 changed files with 250 additions and 99 deletions

View File

@ -4,4 +4,4 @@ c = b.read(0x40)
b.skip(0x200)
d = b.read(0x1fff600)
b.close()
b=a.createtextfile(WScript.Arguments(0), 1).write(c+a.opentextfile("res\\proboothd").read(512)+d)
b=a.createtextfile(WScript.Arguments(0), 1).write(c+a.opentextfile(WScript.Arguments(1)).read(512)+d)

View File

@ -73,6 +73,7 @@ LoadDHRFile
lda #$20 ; read next $2000 bytes
sta sizehi
dec auxreq ; 0 = read into main memory
clc ; not a subdirectory
jmp hddrdwrpart ; call ProRWTS2
traverse
@ -194,8 +195,6 @@ traverse
; stack set to next instruction after parameters
;
; to do: preserve non-$4x zpage locations for titles that open files after start
; enable seek
; enable < 512 bytes reads
;------------------------------------------------------------------------------
packet = $40 ;word
buffer = $42 ;word
@ -230,8 +229,8 @@ ProDOS_enter
beq @do_write
cmp #$cc
beq @do_close
;; cmp #$ce
;; beq @do_seek
cmp #$ce
beq @do_seek
;;any others??
jmp ProDOS_fatal
@do_prefix
@ -249,9 +248,9 @@ ProDOS_enter
@do_close
jsr @imp_close
jmp ProDOS_exit
;;@do_seek
;; jsr @imp_seek
;; jmp ProDOS_exit
@do_seek
jsr @imp_seek
jmp ProDOS_exit
PREV_BLOCK_LO = $0 ;ProDOS constant
@ -306,11 +305,25 @@ PREV_BLOCK_HI = $1 ;ProDOS constant
iny
lda (packet), y
sta @handle-1, x
tax
jsr @patch_buffer
iny
txa
lda #1
sta (packet), y
rts
lda #0
sta reqcmd
sta sizehi
sta sizelo
jsr hddopendir
ldx encbufpatch1+1
inx
stx @block_index2+2
lda #0
beq @block_index2 ;always
@imp_seek
lda #cmdseek
!byte $2c
@imp_read
lda #cmdread
!byte $2c
@ -318,34 +331,42 @@ PREV_BLOCK_HI = $1 ;ProDOS constant
lda #cmdwrite
sta reqcmd
jsr @set_rdwrbuff
jmp hddopendir
ldx encbufpatch1+1
inx
stx @block_index1+2
stx @block_index2+2
@block_index1
lda $d1ff
sta blkidx
clc ;not a subdirectory
jsr hddrdwrpart
lda blkidx
@block_index2
sta $d1ff
rts
@imp_close
dec @handles+1
bne @close_ret
lda #$b1
sta overridepatch1
sta overridepatch2
lda #bloklo
sta overridepatch1+1
sta overridepatch2+1
lda #>hdddirbuf
lda #>hddencbuf
@patch_buffer
sta bufferpatch2+2
sta bufferpatch3+2
sta bufferpatch4+2
sta bufferpatch6+1
sta bufferpatch7+2
sta bufferpatch9+2
sta bufferpatch10+1
sta encbufpatch1+1
sta encbufpatch2+1
tax
inx
stx bufferpatch5+2
stx bufferpatch8+2
dex
dex
stx bufferpatch1+1
stx dirbufpatch1+1
inx
stx dirbufpatch2+2
stx dirbufpatch3+2
stx dirbufpatch4+2
stx dirbufpatch6+1
stx dirbufpatch7+2
stx dirbufpatch9+2
stx dirbufpatch10+1
inx
stx dirbufpatch5+2
stx dirbufpatch8+2
@close_ret
rts
@ -361,17 +382,12 @@ PREV_BLOCK_HI = $1 ;ProDOS constant
ldy #1
lda (packet), y
tax
lda @handle-1,x
lda @handle-1, x
tax
jsr @patch_buffer
lda #$a9
sta overridepatch1
sta overridepatch2
ldx #ldrlo
iny
lda (packet), y
sta overridepatch1+1
iny
lda (packet), y
sta overridepatch2+1
jsr @setbuffer
ldx #sizelo
iny
!byte $2c

View File

@ -16,12 +16,15 @@ ver_02 = 1
verbose_info = 0 ;set to 1 to enable display of memory usage
enable_floppy = 0 ;set to 1 to enable floppy drive support
poll_drive = 0 ;set to 1 to check if disk is in drive, recommended if allow_multi is enabled
allow_extend = 0 ;enable support for more than four partitions (note: it has overhead)
override_adr = 0 ;set to 1 to require an explicit load address
aligned_read = 1 ;set to 1 if all reads can be a multiple of block size
aligned_read = 0 ;set to 1 if all reads can be a multiple of block size
enable_readseq=0 ;set to 1 to enable reading multiple sequential times from the same file without seek
;(exposes a fixed address that can be called for either floppy or hard disk support)
enable_write = 1 ;set to 1 to enable write support
;file must exist already and its size cannot be altered
;writes occur in multiples of block size
enable_seek = 0 ;set to 1 to enable seek support
enable_seek = 1 ;set to 1 to enable seek support
;seeking with aligned_read=1 requires non-zero offset
allow_multi = 0 ;set to 1 to allow multiple floppies
check_chksum = 0 ;set to 1 to enforce checksum verification for floppies
@ -55,14 +58,14 @@ ver_02 = 1
load_aux = 0 ;load to aux memory
load_banked = 1 ;set to 1 to load into banked RAM instead of main RAM (can be combined with load_aux for aux banked)
lc_bank = 1 ;load into specified bank (1 or 2) if load_banked=1
one_page = 1 ;set to 1 if verbose mode says that you should (smaller code)
one_page = 0 ;set to 1 if verbose mode says that you should (smaller code)
;user-defined driver load address
!if load_banked = 1 {
!if load_high = 1 {
!ifdef PASS2 {
} else { ;PASS2 not defined
reloc = $ff00 ;page-aligned, as high as possible, the ideal value will be shown on mismatch
reloc = $fe00 ;page-aligned, as high as possible, the ideal value will be shown on mismatch
} ;PASS2
} else { ;load_high = 0
reloc = $d000 ;page-aligned, but otherwise wherever you want
@ -202,7 +205,7 @@ init jsr SETKBD
jsr SETVID
lda DEVNUM
sta x80_parms + 1
sta unrunit + 1
sta unrunit1 + 1
and #$70
!if (enable_floppy + enable_write) > 1 {
sta unrslot1 + 1
@ -221,14 +224,19 @@ init jsr SETKBD
!if (might_exist + poll_drive) > 0 {
sta unrdrvoff2 + 1
} ;might_exist or poll_drive
!if (aligned_read + allow_aux) = 0 {
sta unrdrvoff3 + 1
} ;not aligned_read and not allow_aux
sta unrdrvoff4 + 1
tax
inx ;MOTORON
!if allow_multi = 1 {
stx unrdrvon1 + 1
} ;allow_multi
stx unrdrvon2 + 1
!if aligned_read = 0 {
stx unrdrvon3 + 1
} ;aligned_read
stx unrdrvon4 + 1
inx ;DRV0EN
!if allow_multi = 1 {
@ -395,7 +403,63 @@ adjpath tya
beq -
set_slot stx slot + 2
stx unrentry + 2
!if allow_extend = 1 {
stx unrentry1 + 2
} ;allow_extend
stx unrentry2 + 2
!if allow_extend = 1 {
stx unrentry3 + 2
} ;allow_extend
slot ldx $cfff
!if enable_floppy = 1 {
php
beq bankram
} ;enable_floppy
stx unrentry2 + 1
!if allow_extend = 1 {
;use ProDOS entrypoint instead
inx
inx
inx
stx unrentry1 + 1
stx unrentry3 + 1
;detect extended remapping and update unit accordingly
lda #<(readbuff + $200)
sta adrlo
ldy #>(readbuff + $200)
ldx #2
stx x80_parms + 4
lda #0
sta x80_parms + 5
jsr unrhddrd
jsr MLI
!byte $80
!word x80_parms
bcc + ;always
iterunit inc iterunit + 1
;enable use of ProDOS SmartPort entrypoint
lda #$2c
sta unrentry2
unrentry1 jsr $d1d1
!byte cmdread
!word unrpacket
bcs iterunit
+ ldy #$0f
- lda readbuff + 4, y
cmp readbuff + $204, y
bne iterunit
dey
bpl -
} ;allow_extend
bankram
!if load_banked = 1 {
lda LCBANK2 - ((lc_bank - 1) * 8)
lda LCBANK2 - ((lc_bank - 1) * 8)
@ -406,8 +470,7 @@ set_slot stx slot + 2
!if enable_floppy = 1 {
ldx #>unrelocdsk
ldy #<unrelocdsk
slot lda $cfff
sta unrentry + 1
plp
php
beq copydrv
ldx #>unrelochdd
@ -476,8 +539,6 @@ unrdrvsel1 lda DRV0EN + 1
unrdrvoff1 lda MOTOROFF
++
} else { ;enable_floppy = 0
slot lda $cfff
sta unrentry + 1
ldy #0
- lda unrelochdd, y
sta reloc, y
@ -608,11 +669,9 @@ x80_parms !byte 3, $d1
unrelocdsk
!pseudopc reloc {
rdwrpart
!if (override_adr + allow_subdir) > 0 {
;only available when load address is specified
!if (enable_readseq + allow_subdir) > 0 {
jmp rdwrfile
} ;override_adr or allow_subdir
} ;enable_readseq or allow_subdir
opendir
!if no_interrupts = 1 {
!if detect_err = 1 {
@ -902,7 +961,7 @@ unrdrvon2 = unrelocdsk + (* - reloc)
} ;no_interrupts
rdwrfilei
!if (allow_subdir + allow_saplings + allow_trees + (aligned_read xor 1)) > 0 {
!if (override_adr + allow_subdir + allow_saplings + allow_trees + (aligned_read xor 1)) > 0 {
;restore load offset
ldx ldrhi
@ -922,12 +981,12 @@ rdwrfilei
} ;allow_subdir
sta adrlo
stx adrhi
} else { ;allow_subdir = 0 and allow_saplings = 0 and allow_trees = 0 and aligned_read = 1
} else { ;override_adr = 0 and allow_subdir = 0 and allow_saplings = 0 and allow_trees = 0 and aligned_read = 1
pla
sta adrhi
pla
sta adrlo
} ;allow_subdir or allow_saplings or allow_trees
} ;override_adr or allow_subdir or allow_saplings or allow_trees and not aligned_read
;set requested size to min(length, requested size)
@ -1012,9 +1071,11 @@ unrdrvon3 = unrelocdsk + (* - reloc)
ora sizelo
bne rdwrfilei
!if allow_aux = 0 {
unrdrvoff3 = unrelocdsk + (* - reloc)
lda MOTOROFF
rts
} else { ;allow_aux = 1
beq rdwrdone
beq rdwrdonedrv
} ;allow_aux
} else { ;aligned_read = 1
!if bounds_check = 1 {
@ -1177,7 +1238,8 @@ resparse
dec sizehi
bne rdwrloop
unrdrvoff3 = unrelocdsk + (* - reloc)
rdwrdonedrv
unrdrvoff4 = unrelocdsk + (* - reloc)
lda MOTOROFF
!if aligned_read = 0 {
bcc +
@ -1405,7 +1467,6 @@ readdirsel
pha
phx
} ;ver_02
;;; jsr poll
unrdrvon4 = unrelocdsk + (* - reloc)
lda MOTORON
@ -1517,7 +1578,7 @@ cmpsecrd jsr readadr
jsr readd5aa
eor #$ad ;zero A if match
;; bne * ;lock if read failure
bne cmdsecrd
unrread4 = unrelocdsk + (* - reloc)
- ldx Q6L
bpl -
@ -1577,8 +1638,9 @@ cmpsecwr jsr readadr
;skip tail #$DE #$AA #$EB some #$FFs ...
ldy #$24
- dey
ldy #6
- jsr readnib
dey
bpl -
;write sector data
@ -1590,12 +1652,17 @@ unrslot1 = unrelocdsk + (* - reloc)
tya
sta Q7H, x
ora Q6L, x
pha ;3 cycles
pla ;4 cycles
nop ;2 cycles
;40 cycles
ldy #4 ;2 cycles
cmp $ea ;3 cycles
cmp ($ea, x) ;6 cycles
pha ;3 cycles
pla ;4 cycles
nop ;2 cycles
loopchk1
- jsr writenib1 ;(29 cycles)
;+6 cycles
@ -1606,8 +1673,15 @@ unrslot1 = unrelocdsk + (* - reloc)
;+10 cycles
ldy #(prolog_e - prolog)
;2 cycles
!if >loopchk1 != >* {
!serious "loop1 crosses a page"
}
cmp $ea ;3 cycles
loopchk2
- lda prolog - 1, y ;4 cycles
!if >(prolog - 1) != >prolog_e {
!serious "prologue crosses a page"
}
jsr writenib2 ;(17 cycles)
;32 cycles if branch taken
@ -1618,7 +1692,11 @@ unrslot1 = unrelocdsk + (* - reloc)
;36 cycles on first pass
;+10 cycles
tya ;2 cycles
!if >loopchk2 != >* {
!serious "loop2 crosses a page"
}
ldy #$56 ;2 cycles
loopchk3
- eor bit2tbl - 1, y ;5 cycles
tax ;2 cycles
lda xlattbl, x ;4 cycles
@ -1636,7 +1714,12 @@ unrslot2 = unrelocdsk + (* - reloc)
;32 cycles
;+9 cycles
clc ;2 cycles
!if >loopchk3 != >* {
!serious "loop3 crosses a page"
}
loopchk4
-- eor encbuf, y ;4 cycles
loopchk5
- tax ;2 cycles
lda xlattbl, x ;4 cycles
unrslot3 = unrelocdsk + (* - reloc)
@ -1648,20 +1731,36 @@ unrslot3 = unrelocdsk + (* - reloc)
;32 cycles if branch taken
lda encbuf, y ;4 cycles
loopchk6 ;belongs to the "bcs +" above
iny ;2 cycles
bne -- ;3 cycles if taken, 2 if not
;32 cycles
;+10 cycles
sec ;2 cycles
!if >loopchk4 != >* {
!serious "loop4 crosses a page"
}
bcs - ;3 cycles
;32 cycles
;+3 cycles
!if >loopchk6 != >* {
!serious "loop6 crosses a page"
}
+ ldy #(epilog_e - epilog)
;2 cycles
cmp ($ea, x) ;6 cycles
!if >loopchk5 != >* {
!serious "loop5 crosses a page"
}
nop ;2 cycles
nop ;2 cycles
nop ;2 cycles
loopchk7
- lda epilog - 1, y ;4 cycles
!if >(epilog - 1) != >epilog_e {
!serious "epilogue crosses a page"
}
jsr writenib2 ;(17 cycles)
;32 cycles if branch taken
@ -1670,6 +1769,9 @@ unrslot3 = unrelocdsk + (* - reloc)
bne - ;3 cycles if branch taken, 2 if not
lda Q7L, x
!if >loopchk7 != >* {
!serious "loop7 crosses a page"
}
lda Q6L, x ;flush final value
inc adrhi
rts
@ -1885,9 +1987,9 @@ seek1 sta blkidx
lda #1
sta sizehi
} else { ;rwts_mode
!if (override_adr + allow_subdir) > 0 {
!if (enable_readseq + allow_subdir) > 0 {
hddrdwrpart jmp hddrdwrfile
} ;override_adr or allow_subdir
} ;enable_readseq or allow_subdir
hddopendir
!if no_interrupts = 1 {
!if detect_err = 1 {
@ -1925,7 +2027,7 @@ unrhddblockhi = unrelochdd + (* - reloc)
hddreaddir ;note that calling this location directly limits subdirectories to 14 entries!
lda #NAME_LENGTH + ENTRY_SIZE
hddfirstent sta bloklo
bufferpatch1
dirbufpatch1
lda #>(hdddirbuf - 1)
sta blokhi
@ -2000,9 +2102,9 @@ hddnextent ldy #0
;read next directory block when we reach the end of this block
bufferpatch2
dirbufpatch2
ldx hdddirbuf + NEXT_BLOCK_LO
bufferpatch3
dirbufpatch3
lda hdddirbuf + NEXT_BLOCK_HI
jsr hddreaddirsec
lda #NAME_LENGTH
@ -2091,13 +2193,11 @@ hddfoundname iny
!if override_adr = 0 {
ldy #AUX_TYPE
overridepatch1
lda (bloklo), y
!if (allow_subdir + allow_saplings + allow_trees + (aligned_read xor 1)) > 0 {
sta ldrlo
sta ldrlo2
iny
overridepatch2
lda (bloklo), y
sta ldrhi
sta ldrhi2
@ -2115,14 +2215,14 @@ overridepatch2
lda (bloklo), y
tax
!if (allow_subdir + allow_saplings + allow_trees) > 0 {
bufferpatch4
dirbufpatch4
sta hdddirbuf
!if (allow_trees + (fast_trees xor 1)) > 1 {
sta treeblklo
} ;allow_trees = 1 and fast_trees = 0
iny
lda (bloklo), y
bufferpatch5
dirbufpatch5
sta hdddirbuf + 256
!if (allow_trees + (fast_trees xor 1)) > 1 {
sta treeblkhi
@ -2183,7 +2283,7 @@ hddrdwrfile
hddrdwrfilei
!if rwts_mode = 0 {
!if (allow_subdir + allow_saplings + allow_trees + (aligned_read xor 1)) > 0 {
!if (override_adr + allow_subdir + allow_saplings + allow_trees + (aligned_read xor 1)) > 0 {
;restore load offset
ldx ldrhi
@ -2194,7 +2294,7 @@ hddrdwrfilei
bcc +
ldy #2
sty sizehi
bufferpatch6
dirbufpatch6
ldx #>hdddirbuf
lda #0
!if aligned_read = 0 {
@ -2204,12 +2304,12 @@ bufferpatch6
} ;allow_subdir
sta adrlo
stx adrhi
} else { ;allow_subdir = 0 and allow_saplings = 0 and allow_trees = 0 and aligned_read = 1
} else { ;override_adr = 0 and allow_subdir = 0 and allow_saplings = 0 and allow_trees = 0 and aligned_read = 1
pla
sta adrhi
pla
sta adrlo
} ;allow_subdir or allow_saplings or allow_trees
} ;override_adr or allow_subdir or allow_saplings or allow_trees and not aligned_read
;set requested size to min(length, requested size)
@ -2240,7 +2340,7 @@ hddcopyblock
lda blkofflo
tax
ora blkofflo
ora blkoffhi
beq hddrdwrloop
lda sizehi
pha
@ -2251,6 +2351,7 @@ hddcopyblock
lda adrlo
sta bloklo
stx adrlo
encbufpatch1
lda #>hddencbuf
clc
adc blkoffhi
@ -2340,6 +2441,7 @@ hddrdwrloop
lda #2
sta sizehi
} ;rwts_mode
encbufpatch2
lda #>hddencbuf
sta adrhi
!if ver_02 = 1 {
@ -2369,7 +2471,7 @@ hddrdwrloop
beq +
} ;always_trees
} else { ;rwts_mode = 1
ldy istree
ldy #>hddtreebuf
} ;rwts_mode
lda adrhi
pha
@ -2486,9 +2588,9 @@ skiptree
sty lastblk
} ;rwts_mode
bufferpatch7
dirbufpatch7
ldx hdddirbuf, y
bufferpatch8
dirbufpatch8
lda hdddirbuf + 256, y
!if detect_treof = 1 {
bne noteof2
@ -2502,7 +2604,7 @@ noteof2
} ;detect_treof
!if allow_sparse = 1 {
pha
bufferpatch9
dirbufpatch9
ora hdddirbuf, y
tay
pla
@ -2546,7 +2648,7 @@ hddresparse
dec sizehi
bne hddrdwrloop
!if aligned_read = 0 {
!if bounds_check = 0 {
!if bounds_check = 1 {
bcc +
} ;bounds_check
lda sizelo
@ -2649,7 +2751,7 @@ hddcopycache
sta blkoffhi
bcc hddrdwrdone ;always
} else { ;rwts_mode = 1
rts
hddrdwrdone rts
} ;rwts_mode
} ;aligned_read
@ -2674,12 +2776,13 @@ hddreaddirsel
hddreaddirsec
!if allow_trees = 0 {
bufferpatch10
dirbufpatch10
hddreaddirsect ldy #>hdddirbuf
} else { ;allow_trees = 1
ldy #>hdddirbuf
hddreaddirsect
} ;allow_trees
unrhddrd = unrelochdd + (* - reloc)
sty adrhi
hddseekrd ldy #cmdread
!if (aligned_read + enable_write) > 1 {
@ -2692,12 +2795,35 @@ hddseekrdwr
stx bloklo
sta blokhi
unrunit=unrelochdd+(*-reloc)
unrunit1 = unrelochdd + (* - reloc)
lda #$d1
sta unit
unrentry=unrelochdd+(*-reloc)
unrentry2 = unrelochdd + (* - reloc)
jmp $d1d1
!if allow_extend = 1 {
ldx #4
- lda command + 1, x
sta packet + 1, x
dex
bne -
lda command
sta pcommand
unrentry3 = unrelochdd + (* - reloc)
jsr $d1d1
pcommand !byte 0
!word packet
rts
unrpacket = unrelochdd + (* - reloc)
packet !byte 3
unrunit2 = unrelochdd + (* - reloc)
!byte 0
!word readbuff + $200
!word 2
} ;allow_extend
!if rwts_mode = 1 {
vollist_b
!byte D1S1
@ -2733,7 +2859,7 @@ hdddataend
!pseudopc ((dataend + $ff) & -256) {
dirbuf = *
}
encbuf=dirbuf + $200
encbuf = dirbuf + $200
!if allow_trees = 1 {
treebuf = encbuf + $200
} ;allow_trees
@ -2801,7 +2927,7 @@ hdddataend
}
!if aligned_read = 0 {
hddencbuf = hdddirbuf + $200
!if hddencbuf >= $c000 {
!if (hddencbuf + $200) > $c000 {
!if hddencbuf < $d000 {
!set hddencbuf = reloc - $200
}
@ -2813,10 +2939,20 @@ hdddataend
!if hddtreebuf >= reloc {
!if hddencbuf < hddcodeend {
!set hddtreebuf = hddencbuf - $200
!if (hddtreebuf + $200) > $c000 {
!if hddtreebuf < $d000 {
!set hddtreebuf = reloc - $200
}
}
}
}
} else { ;aligned_read = 1
hddtreebuf = hdddirbuf + $200
!if (hddtreebuf + $200) > $c000 {
!if hddtreebuf < $d000 {
!set hddtreebuf = reloc - $200
}
}
} ;aligned_read
} ;allow_trees
} ;load_high

View File

@ -38,6 +38,7 @@ if "%1" equ "asm" (
%ACME% src\fx\fx.hgr.block.fizzle.a
%ACME% src\fx\fx.hgr.block.mosaic.a
%ACME% src\fx\fx.hgr.2pass.lr.a
%ACME% src\fx\fx.hgr.crystal.a
goto :EOF
)
@ -53,15 +54,11 @@ call :asm
2>nul del build\log
%CADIUS% CREATEVOLUME "build\%DISK%" "%VOLUME%" 32766KB >>build\log
1>nul copy /y res\_FileInformation.txt build\ >>build\log
cscript /nologo bin/buildproboot.js "build\%DISK%"
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\PRODOS" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "build\LAUNCHER.SYSTEM" >>build\log
%CADIUS% CREATEFOLDER "build\%DISK%" "/%VOLUME%/X/" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\GAMES.CONF" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\ATTRACT.CONF" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\FX.CONF" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\COVER" >>build\log
%CADIUS% ADDFILE "build\%DISK%" "/%VOLUME%/" "res\COVER.A2FC" >>build\log
1>nul copy /y res\hgr\* build\HGR >>build\log
cscript /nologo bin/buildfileinfo.js build\HGR >>build\log
%CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/HGR" "build/HGR" >>build/log
@ -75,6 +72,8 @@ cscript /nologo bin/buildfileinfo.js build\DHGR >>build\log
1>nul copy /y res\fx\* build\FX >>build\log
%CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/FX" "build/FX" >>build\log
cscript /nologo bin/do2po.js res\dsk\ build\po\
%CADIUS% ADDFOLDER "build\%DISK%" "/%VOLUME%/X" "build/X" >>build\log
cscript /nologo bin/changebootloader.js "build\%DISK%" res\proboothd
goto :EOF
)