Start from .bas source code, tokenize it, and embed.
This commit is contained in:
parent
ba41f285d4
commit
4a2b889b86
6
Makefile
6
Makefile
@ -4,9 +4,13 @@
|
||||
|
||||
ASM=$(wildcard src/*asm)
|
||||
|
||||
vic20term.prg: env $(ASM)
|
||||
vic20term.bin: env $(ASM) build/demo.raw
|
||||
dasm src/main.asm -Isrc/ -f3 -T1 -sbuild/vic20term.prg.symbols.txt -obin/vic20term.bin
|
||||
|
||||
build/demo.raw: env src/demo.bas
|
||||
petcat -w2 -l 1001 -o build/demo.prg -- src/demo.bas
|
||||
dd if=build/demo.prg of=build/demo.raw bs=1 skip=2
|
||||
|
||||
env:
|
||||
mkdir -p {bin,build}
|
||||
|
||||
|
9
README.md
Normal file
9
README.md
Normal file
@ -0,0 +1,9 @@
|
||||
- From .prg to .BAS
|
||||
```
|
||||
petcat -2 -o program.bas -- program.prg
|
||||
```
|
||||
|
||||
- From .bas to .prg
|
||||
```
|
||||
petcat -w2 -l 1001 -o program.prg -- program.bas
|
||||
```
|
73
src/demo.bas
Normal file
73
src/demo.bas
Normal file
@ -0,0 +1,73 @@
|
||||
5 print"merry christmas"
|
||||
10 data"vs g3a1g2e6, c3a1g2e6"
|
||||
12 data"vs d3r1d2b6, c3r1c2g6"
|
||||
14 data"vs a3r1a2c3b1a2, g3a1g2e4r2"
|
||||
16 data"vs a3r1a2c3b1a2, g3a1g2e5r1"
|
||||
18 data"vs d3r1d2f3d1b2, c6e4r2"
|
||||
20 data"vs c3g1e2g3f1d2, c6c4r2"
|
||||
22 data"vt c3r1c1r1c5r1, c3r1c1r1c6"
|
||||
24 data"vt g3r1g1r1g6, c3r1c1r1c6"
|
||||
26 data"vt f3r1f1r1f6, c3r1c1r1c5r1"
|
||||
28 data"vt f3r1f1r1f6, c3r1c1r1c6"
|
||||
30 data"vt g3r1g1r1g6, c6c5r1"
|
||||
32 data"vt g3r1g1r1g6, c6c4r2"
|
||||
34 data"va e3f1e2c6, e3f1e2c6"
|
||||
36 data"va f6d6, e6e6"
|
||||
38 data"va f4c2a3g1f2, e3f1e2c6"
|
||||
40 data"va f6a3g1f2, e3f1e2c6"
|
||||
42 data"va f6d3f1d2, e6g5r1"
|
||||
44 data"va e4c2e3d1b2, e6e4r2"
|
||||
46 data"x"
|
||||
100 ns%=2:vt=36874:dimn%(ns%,80),tm%(ns%),sp%(ns%)
|
||||
160 fori=0tons%:n%(i,0)=0:next
|
||||
190 sh%=16:cv=2:in$="":c$=""
|
||||
230 gosub800
|
||||
240 ifc$="x"then510
|
||||
250 ifc$<>"v"then340
|
||||
260 gosub800
|
||||
280 ifc$="s"thencv=2
|
||||
290 ifc$="a"thencv=1
|
||||
300 ifc$="t"thencv=0
|
||||
310 goto230
|
||||
340 fr=-1
|
||||
350 ifc$="c"thenfr=225
|
||||
360 ifc$="d"thenfr=228
|
||||
370 ifc$="e"thenfr=231
|
||||
380 ifc$="f"thenfr=232
|
||||
390 ifc$="g"thenfr=235
|
||||
400 ifc$="a"thenfr=237
|
||||
410 ifc$="b"thenfr=239
|
||||
420 ifc$="r"thenfr=0
|
||||
430 iffr=-1thenprint"?";c$;"in";in$:stop
|
||||
440 gosub800
|
||||
450 i%=n%(cv,0)+1:n%(cv,0)=i%
|
||||
480 n%(cv,i%)=val(c$)+sh%*fr
|
||||
490 goto230
|
||||
510 fori=0tons%
|
||||
520 sp%(i)=1:tm%(i)=0
|
||||
550 nexti
|
||||
570 fori=0to4:pokevt+i,8:nexti
|
||||
580 ford=0to1
|
||||
590 fori=0tons%
|
||||
600 j=sp%(i)
|
||||
610 ifj>n%(i,0)then670
|
||||
620 d=0
|
||||
630 nt%=(n%(i,j)/sh%-int(n%(i,j)/sh%))*sh%
|
||||
640 iftm%(i)>=nt%then750
|
||||
650 tm%(i)=tm%(i)+1
|
||||
660 pokevt+i,int(n%(i,j)/sh%)
|
||||
670 nexti
|
||||
680 forj=0to70:nextj
|
||||
690 nextd
|
||||
700 fori=0to4
|
||||
710 pokevt+1,0:nexti
|
||||
730 printfre(x);"bytes left"
|
||||
740 sys49148
|
||||
750 sp%(i)=j+1
|
||||
760 tm%(i)=0:goto600
|
||||
800 ifc$="x"thenreturn
|
||||
810 iflen(in$)=0thenreadin$
|
||||
820 c$=left$(in$,1)
|
||||
830 in$=right$(in$,len(in$)-1)
|
||||
850 ifc$=" "orc$=","thengoto800
|
||||
860 return
|
@ -154,9 +154,10 @@ message:
|
||||
|
||||
; https://www.commodore.ca/manuals/funet/cbm/vic20/demos.basic/unexpanded/Stillenacht.prg
|
||||
demo_start:
|
||||
.incbin "res/stillenacht.raw"
|
||||
.incbin "build/demo.raw"
|
||||
demo_end:
|
||||
DEMO_LEN SET demo_end - demo_start
|
||||
ECHO DEMO_LEN
|
||||
|
||||
. = $bffc
|
||||
jmp coldstart
|
||||
|
Loading…
Reference in New Issue
Block a user