From 35b2aa3080d0f2fcbcc8b04d1a23d089697cae5d Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Fri, 15 Dec 2023 11:45:50 -0800 Subject: [PATCH] Fix check for last character of number --- .DS_Store | Bin 0 -> 8196 bytes images/.DS_Store | Bin 0 -> 6148 bytes images/apple/PLASMA2-A3MAME.PO | Bin 0 -> 143360 bytes src/.DS_Store | Bin 0 -> 6148 bytes src/TEST#FE1000 | Bin 0 -> 3517 bytes src/TESTLIB#FE1000 | Bin 0 -> 246 bytes src/libsrc/apple/conio.a | 1932 +++ src/libsrc/apple/dgrlib.a | 1839 +++ src/libsrc/apple/fileio.a | 2550 ++++ src/libsrc/apple/grafix.a | 1327 ++ src/libsrc/apple/grlib.a | 1512 ++ src/libsrc/apple/hgrfont.a | 2275 +++ src/libsrc/apple/hgrlib.a | 3962 +++++ src/libsrc/apple/hgrsprite.a | 2340 +++ src/libsrc/apple/hgrtile.a | 1532 ++ src/libsrc/apple/jit.a | 7080 +++++++++ src/libsrc/apple/jit16.a | 5445 +++++++ src/libsrc/apple/joybuzz.a | 143 + src/libsrc/apple/matchfiles.a | 945 ++ src/libsrc/apple/mouse.a | 1232 ++ src/libsrc/apple/portio.a | 386 + src/libsrc/apple/sdfat.a | 951 ++ src/libsrc/apple/sndseq.a | 3984 +++++ src/libsrc/apple/spiport.a | 1369 ++ src/libsrc/apple/uthernet.a | 1192 ++ src/libsrc/apple/uthernet2.a | 3876 +++++ src/libsrc/args.a | 325 + src/libsrc/dhcp.a | 1261 ++ src/libsrc/etherip.a | 2483 ++++ src/libsrc/fiber.a | 1213 ++ src/libsrc/fpstr.a | 1596 ++ src/libsrc/fpu.a | 3871 +++++ src/libsrc/inet.a | 1090 ++ src/libsrc/int32.a | 1700 +++ src/libsrc/lines.a | 1945 +++ src/libsrc/longjmp.a | 173 + src/libsrc/lz4.a | 489 + src/libsrc/memmgr.a | 4063 ++++++ src/libsrc/sane.a | 2830 ++++ src/makefile.hgr | 526 + src/mockingboard/LLtitle.mid | Bin 0 -> 4729 bytes src/mockingboard/LLtitle.s | 1159 ++ src/mockingboard/LLtitle.seq | Bin 0 -> 3477 bytes src/plasm | Bin 0 -> 108728 bytes src/plvm | Bin 0 -> 68072 bytes src/prodos | 1 + src/rel/ARGS#FE1000 | Bin 0 -> 199 bytes src/rel/CODEOPT#FE1000 | Bin 0 -> 3074 bytes src/rel/DHCP#FE1000 | Bin 0 -> 1308 bytes src/rel/ED#FE1000 | Bin 0 -> 12248 bytes src/rel/ETHERIP#FE1000 | Bin 0 -> 2377 bytes src/rel/FIBER#FE1000 | Bin 0 -> 1236 bytes src/rel/FIBERTEST#FE1000 | Bin 0 -> 212 bytes src/rel/FPSTR#FE1000 | Bin 0 -> 1225 bytes src/rel/FPU#FE1000 | Bin 0 -> 4108 bytes src/rel/HTTPD#FE1000 | Bin 0 -> 2019 bytes src/rel/INET#FE1000 | Bin 0 -> 999 bytes src/rel/INT32#FE1000 | Bin 0 -> 1531 bytes src/rel/INT32TEST#FE1000 | Bin 0 -> 769 bytes src/rel/LINES#FE1000 | Bin 0 -> 1919 bytes src/rel/LONGJMP#FE1000 | Bin 0 -> 133 bytes src/rel/LZ4#FE1000 | Bin 0 -> 365 bytes src/rel/LZ4CAT#FE1000 | Bin 0 -> 807 bytes src/rel/MEMMGR#FE1000 | Bin 0 -> 4199 bytes src/rel/MEMTEST#FE1000 | Bin 0 -> 1079 bytes src/rel/PLASM#FE1000 | Bin 0 -> 24297 bytes src/rel/PLFORTH#FE1000 | Bin 0 -> 917 bytes src/rel/PRIMEGAP#FE1000 | Bin 0 -> 629 bytes src/rel/ROGUE#FE1000 | Bin 0 -> 4150 bytes src/rel/ROGUECOMBAT#FE1000 | Bin 0 -> 1526 bytes src/rel/ROGUEMAP#FE1000 | Bin 0 -> 7952 bytes src/rel/RPNCALC#FE1000 | Bin 0 -> 3456 bytes src/rel/SANE#FE1000 | Bin 0 -> 2529 bytes src/rel/SANITY#FE1000 | Bin 0 -> 2638 bytes src/rel/SIEVE#FE1000 | Bin 0 -> 412 bytes src/rel/TFTPD#FE1000 | Bin 0 -> 3162 bytes src/rel/apple/A1PLASMA#060280 | Bin 0 -> 5087 bytes src/rel/apple/CAT#FE1000 | Bin 0 -> 1396 bytes src/rel/apple/CMD#061000 | Bin 0 -> 3800 bytes src/rel/apple/CMD128#061000 | Bin 0 -> 4128 bytes src/rel/apple/CONIO#FE1000 | Bin 0 -> 1815 bytes src/rel/apple/CONIOTST#FE1000 | Bin 0 -> 1393 bytes src/rel/apple/COPY#FE1000 | Bin 0 -> 2787 bytes src/rel/apple/DEL#FE1000 | Bin 0 -> 1408 bytes src/rel/apple/DGRLIB#FE1000 | Bin 0 -> 1733 bytes src/rel/apple/DGRTEST#FE1000 | Bin 0 -> 541 bytes src/rel/apple/FATCAT#FE1000 | Bin 0 -> 705 bytes src/rel/apple/FATGET#FE1000 | Bin 0 -> 1472 bytes src/rel/apple/FATPUT#FE1000 | Bin 0 -> 1109 bytes src/rel/apple/FATREADDSK#FE1000 | Bin 0 -> 1475 bytes src/rel/apple/FATWRITEDSK#FE1000 | Bin 0 -> 1477 bytes src/rel/apple/FILEIO#FE1000 | Bin 0 -> 2420 bytes src/rel/apple/GFXDEMO#FE1000 | Bin 0 -> 389 bytes src/rel/apple/GRAFIX#FE1000 | Bin 0 -> 1493 bytes src/rel/apple/GRLIB#FE1000 | Bin 0 -> 1369 bytes src/rel/apple/GRTEST#FE1000 | Bin 0 -> 531 bytes src/rel/apple/HGRFONT#FE1000 | Bin 0 -> 2132 bytes src/rel/apple/HGRLIB#FE1000 | Bin 0 -> 3665 bytes src/rel/apple/HGRSPRITE#FE1000 | Bin 0 -> 2585 bytes src/rel/apple/HGRTEST#FE1000 | Bin 0 -> 891 bytes src/rel/apple/HGRTILE#FE1000 | Bin 0 -> 1451 bytes src/rel/apple/JIT#FE1000 | Bin 0 -> 8411 bytes src/rel/apple/JIT16#FE1000 | Bin 0 -> 6130 bytes src/rel/apple/JITUNE#FE1000 | Bin 0 -> 496 bytes src/rel/apple/JOYBUZZ#FE1000 | Bin 0 -> 109 bytes src/rel/apple/MATCHFILES#FE1000 | Bin 0 -> 752 bytes src/rel/apple/MON#FE1000 | Bin 0 -> 87 bytes src/rel/apple/MOUSE#FE1000 | Bin 0 -> 1225 bytes src/rel/apple/NEWDIR#FE1000 | Bin 0 -> 402 bytes src/rel/apple/PLASMA.SYSTEM#FF2000 | Bin 0 -> 2637 bytes src/rel/apple/PLAYSEQ#FE1000 | Bin 0 -> 421 bytes src/rel/apple/PLVM.128#FF2000 | Bin 0 -> 4471 bytes src/rel/apple/PLVM16#FF2000 | Bin 0 -> 3062 bytes src/rel/apple/PORTIO#FE1000 | Bin 0 -> 296 bytes src/rel/apple/REN#FE1000 | Bin 0 -> 553 bytes src/rel/apple/ROD#FE1000 | Bin 0 -> 375 bytes src/rel/apple/SDFAT#FE1000 | Bin 0 -> 796 bytes src/rel/apple/SFM#FE1000 | Bin 0 -> 4538 bytes src/rel/apple/SFMSPRT#FE1000 | Bin 0 -> 2125 bytes src/rel/apple/SNDSEQ#FE1000 | Bin 0 -> 3857 bytes src/rel/apple/SOS#FE1000 | Bin 0 -> 777 bytes src/rel/apple/SOS.CMD#FE1000 | Bin 0 -> 1321 bytes src/rel/apple/SOS.CMDJIT#FE1000 | Bin 0 -> 9690 bytes src/rel/apple/SOS.INTERP#050000 | Bin 0 -> 5877 bytes src/rel/apple/SOS.INTERPJIT#050000 | Bin 0 -> 6073 bytes src/rel/apple/SPIPORT#FE1000 | Bin 0 -> 1325 bytes src/rel/apple/TILETEST#FE1000 | Bin 0 -> 174 bytes src/rel/apple/TYPE#FE1000 | Bin 0 -> 911 bytes src/rel/apple/UTHERNET#FE1000 | Bin 0 -> 1145 bytes src/rel/apple/UTHERNET2#FE1000 | Bin 0 -> 3767 bytes src/rel/apple/ZIPCHIP#FE1000 | Bin 0 -> 539 bytes src/samplesrc/coniotst.a | 456 + src/samplesrc/dgrtest.a | 639 + src/samplesrc/fatcat.a | 690 + src/samplesrc/fatget.a | 1471 ++ src/samplesrc/fatput.a | 1204 ++ src/samplesrc/fatreaddsk.a | 1435 ++ src/samplesrc/fatwritedsk.a | 1438 ++ src/samplesrc/fibertest.a | 329 + src/samplesrc/gfxdemo.a | 599 + src/samplesrc/grtest.a | 639 + src/samplesrc/hgrogue.combat.pla | 212 + src/samplesrc/hgrogue.map.pla | 464 + src/samplesrc/hgrogue.pla | 662 + src/samplesrc/hgrtest.a | 883 ++ src/samplesrc/httpd.a | 1643 +++ src/samplesrc/int32test.a | 747 + src/samplesrc/lz4cat.a | 926 ++ src/samplesrc/memtest.a | 959 ++ src/samplesrc/playseq.a | 585 + src/samplesrc/primegap.a | 610 + src/samplesrc/rod.a | 489 + src/samplesrc/rogue.a | 3855 +++++ src/samplesrc/rogue.combat.a | 1246 ++ src/samplesrc/rogue.map.a | 6180 ++++++++ src/samplesrc/rpncalc.a | 3233 +++++ src/samplesrc/sanity.a | 2574 ++++ src/samplesrc/sfm.a | 3916 +++++ src/samplesrc/sfmsprt.a | 2284 +++ src/samplesrc/sieve.a | 487 + src/samplesrc/test.a | 2678 ++++ src/samplesrc/test.pla | 2 + src/samplesrc/testlib.a | 341 + src/samplesrc/tiletest.a | 283 + src/toolsrc/codeopt.a | 3135 ++++ src/toolsrc/ed.a | 10959 ++++++++++++++ src/toolsrc/plasm.a | 20990 +++++++++++++++++++++++++++ src/toolsrc/plforth.a | 1037 ++ src/toolsrc/plforth.pla | 137 +- src/utilsrc/apple/cat.a | 1340 ++ src/utilsrc/apple/copy.a | 2341 +++ src/utilsrc/apple/del.a | 1352 ++ src/utilsrc/apple/jitune.a | 511 + src/utilsrc/apple/mon.a | 227 + src/utilsrc/apple/newdir.a | 504 + src/utilsrc/apple/ren.a | 577 + src/utilsrc/apple/sos.a | 916 ++ src/utilsrc/apple/type.a | 902 ++ src/utilsrc/apple/zipchip.a | 549 + src/utilsrc/tftpd.a | 2676 ++++ src/vmsrc/apple/a1cmd.a | 3370 +++++ src/vmsrc/apple/cmd.a | 3913 +++++ src/vmsrc/apple/cmdjit.a | 4201 ++++++ src/vmsrc/apple/plvm01.sym | 644 + src/vmsrc/apple/plvm02.s | 48 +- src/vmsrc/apple/plvm02.sym | 175 + src/vmsrc/apple/plvm03.sym | 668 + src/vmsrc/apple/plvm802.sym | 220 + src/vmsrc/apple/plvmjit02.s | 48 +- src/vmsrc/apple/plvmjit02.sym | 262 + src/vmsrc/apple/plvmjit03.s | 48 +- src/vmsrc/apple/plvmjit03.sym | 677 + src/vmsrc/apple/soscmd.a | 1341 ++ src/vmsrc/apple/soscmdjit.a | 8288 +++++++++++ src/vmsrc/apple/sossys.a | 3484 +++++ src/vmsrc/apple/sossysjit.a | 3564 +++++ 196 files changed, 193761 insertions(+), 99 deletions(-) create mode 100644 .DS_Store create mode 100644 images/.DS_Store create mode 100644 images/apple/PLASMA2-A3MAME.PO create mode 100644 src/.DS_Store create mode 100644 src/TEST#FE1000 create mode 100644 src/TESTLIB#FE1000 create mode 100644 src/libsrc/apple/conio.a create mode 100644 src/libsrc/apple/dgrlib.a create mode 100644 src/libsrc/apple/fileio.a create mode 100644 src/libsrc/apple/grafix.a create mode 100644 src/libsrc/apple/grlib.a create mode 100644 src/libsrc/apple/hgrfont.a create mode 100644 src/libsrc/apple/hgrlib.a create mode 100644 src/libsrc/apple/hgrsprite.a create mode 100644 src/libsrc/apple/hgrtile.a create mode 100644 src/libsrc/apple/jit.a create mode 100644 src/libsrc/apple/jit16.a create mode 100644 src/libsrc/apple/joybuzz.a create mode 100644 src/libsrc/apple/matchfiles.a create mode 100644 src/libsrc/apple/mouse.a create mode 100644 src/libsrc/apple/portio.a create mode 100644 src/libsrc/apple/sdfat.a create mode 100644 src/libsrc/apple/sndseq.a create mode 100644 src/libsrc/apple/spiport.a create mode 100644 src/libsrc/apple/uthernet.a create mode 100644 src/libsrc/apple/uthernet2.a create mode 100644 src/libsrc/args.a create mode 100644 src/libsrc/dhcp.a create mode 100644 src/libsrc/etherip.a create mode 100644 src/libsrc/fiber.a create mode 100644 src/libsrc/fpstr.a create mode 100644 src/libsrc/fpu.a create mode 100644 src/libsrc/inet.a create mode 100644 src/libsrc/int32.a create mode 100644 src/libsrc/lines.a create mode 100644 src/libsrc/longjmp.a create mode 100644 src/libsrc/lz4.a create mode 100644 src/libsrc/memmgr.a create mode 100644 src/libsrc/sane.a create mode 100755 src/makefile.hgr create mode 100644 src/mockingboard/LLtitle.mid create mode 100644 src/mockingboard/LLtitle.s create mode 100644 src/mockingboard/LLtitle.seq create mode 100755 src/plasm create mode 100755 src/plvm create mode 120000 src/prodos create mode 100644 src/rel/ARGS#FE1000 create mode 100644 src/rel/CODEOPT#FE1000 create mode 100644 src/rel/DHCP#FE1000 create mode 100644 src/rel/ED#FE1000 create mode 100644 src/rel/ETHERIP#FE1000 create mode 100644 src/rel/FIBER#FE1000 create mode 100644 src/rel/FIBERTEST#FE1000 create mode 100644 src/rel/FPSTR#FE1000 create mode 100644 src/rel/FPU#FE1000 create mode 100644 src/rel/HTTPD#FE1000 create mode 100644 src/rel/INET#FE1000 create mode 100644 src/rel/INT32#FE1000 create mode 100644 src/rel/INT32TEST#FE1000 create mode 100644 src/rel/LINES#FE1000 create mode 100644 src/rel/LONGJMP#FE1000 create mode 100644 src/rel/LZ4#FE1000 create mode 100644 src/rel/LZ4CAT#FE1000 create mode 100644 src/rel/MEMMGR#FE1000 create mode 100644 src/rel/MEMTEST#FE1000 create mode 100644 src/rel/PLASM#FE1000 create mode 100644 src/rel/PLFORTH#FE1000 create mode 100644 src/rel/PRIMEGAP#FE1000 create mode 100644 src/rel/ROGUE#FE1000 create mode 100644 src/rel/ROGUECOMBAT#FE1000 create mode 100644 src/rel/ROGUEMAP#FE1000 create mode 100644 src/rel/RPNCALC#FE1000 create mode 100644 src/rel/SANE#FE1000 create mode 100644 src/rel/SANITY#FE1000 create mode 100644 src/rel/SIEVE#FE1000 create mode 100644 src/rel/TFTPD#FE1000 create mode 100644 src/rel/apple/A1PLASMA#060280 create mode 100644 src/rel/apple/CAT#FE1000 create mode 100644 src/rel/apple/CMD#061000 create mode 100644 src/rel/apple/CMD128#061000 create mode 100644 src/rel/apple/CONIO#FE1000 create mode 100644 src/rel/apple/CONIOTST#FE1000 create mode 100644 src/rel/apple/COPY#FE1000 create mode 100644 src/rel/apple/DEL#FE1000 create mode 100644 src/rel/apple/DGRLIB#FE1000 create mode 100644 src/rel/apple/DGRTEST#FE1000 create mode 100644 src/rel/apple/FATCAT#FE1000 create mode 100644 src/rel/apple/FATGET#FE1000 create mode 100644 src/rel/apple/FATPUT#FE1000 create mode 100644 src/rel/apple/FATREADDSK#FE1000 create mode 100644 src/rel/apple/FATWRITEDSK#FE1000 create mode 100644 src/rel/apple/FILEIO#FE1000 create mode 100644 src/rel/apple/GFXDEMO#FE1000 create mode 100644 src/rel/apple/GRAFIX#FE1000 create mode 100644 src/rel/apple/GRLIB#FE1000 create mode 100644 src/rel/apple/GRTEST#FE1000 create mode 100644 src/rel/apple/HGRFONT#FE1000 create mode 100644 src/rel/apple/HGRLIB#FE1000 create mode 100644 src/rel/apple/HGRSPRITE#FE1000 create mode 100644 src/rel/apple/HGRTEST#FE1000 create mode 100644 src/rel/apple/HGRTILE#FE1000 create mode 100644 src/rel/apple/JIT#FE1000 create mode 100644 src/rel/apple/JIT16#FE1000 create mode 100644 src/rel/apple/JITUNE#FE1000 create mode 100644 src/rel/apple/JOYBUZZ#FE1000 create mode 100644 src/rel/apple/MATCHFILES#FE1000 create mode 100644 src/rel/apple/MON#FE1000 create mode 100644 src/rel/apple/MOUSE#FE1000 create mode 100644 src/rel/apple/NEWDIR#FE1000 create mode 100644 src/rel/apple/PLASMA.SYSTEM#FF2000 create mode 100644 src/rel/apple/PLAYSEQ#FE1000 create mode 100644 src/rel/apple/PLVM.128#FF2000 create mode 100644 src/rel/apple/PLVM16#FF2000 create mode 100644 src/rel/apple/PORTIO#FE1000 create mode 100644 src/rel/apple/REN#FE1000 create mode 100644 src/rel/apple/ROD#FE1000 create mode 100644 src/rel/apple/SDFAT#FE1000 create mode 100644 src/rel/apple/SFM#FE1000 create mode 100644 src/rel/apple/SFMSPRT#FE1000 create mode 100644 src/rel/apple/SNDSEQ#FE1000 create mode 100644 src/rel/apple/SOS#FE1000 create mode 100644 src/rel/apple/SOS.CMD#FE1000 create mode 100644 src/rel/apple/SOS.CMDJIT#FE1000 create mode 100644 src/rel/apple/SOS.INTERP#050000 create mode 100644 src/rel/apple/SOS.INTERPJIT#050000 create mode 100644 src/rel/apple/SPIPORT#FE1000 create mode 100644 src/rel/apple/TILETEST#FE1000 create mode 100644 src/rel/apple/TYPE#FE1000 create mode 100644 src/rel/apple/UTHERNET#FE1000 create mode 100644 src/rel/apple/UTHERNET2#FE1000 create mode 100644 src/rel/apple/ZIPCHIP#FE1000 create mode 100644 src/samplesrc/coniotst.a create mode 100644 src/samplesrc/dgrtest.a create mode 100644 src/samplesrc/fatcat.a create mode 100644 src/samplesrc/fatget.a create mode 100644 src/samplesrc/fatput.a create mode 100644 src/samplesrc/fatreaddsk.a create mode 100644 src/samplesrc/fatwritedsk.a create mode 100644 src/samplesrc/fibertest.a create mode 100644 src/samplesrc/gfxdemo.a create mode 100644 src/samplesrc/grtest.a create mode 100644 src/samplesrc/hgrogue.combat.pla create mode 100644 src/samplesrc/hgrogue.map.pla create mode 100755 src/samplesrc/hgrogue.pla create mode 100644 src/samplesrc/hgrtest.a create mode 100644 src/samplesrc/httpd.a create mode 100644 src/samplesrc/int32test.a create mode 100644 src/samplesrc/lz4cat.a create mode 100644 src/samplesrc/memtest.a create mode 100644 src/samplesrc/playseq.a create mode 100644 src/samplesrc/primegap.a create mode 100644 src/samplesrc/rod.a create mode 100644 src/samplesrc/rogue.a create mode 100644 src/samplesrc/rogue.combat.a create mode 100644 src/samplesrc/rogue.map.a create mode 100644 src/samplesrc/rpncalc.a create mode 100644 src/samplesrc/sanity.a create mode 100644 src/samplesrc/sfm.a create mode 100644 src/samplesrc/sfmsprt.a create mode 100644 src/samplesrc/sieve.a create mode 100644 src/samplesrc/test.a create mode 100644 src/samplesrc/testlib.a create mode 100644 src/samplesrc/tiletest.a create mode 100644 src/toolsrc/codeopt.a create mode 100644 src/toolsrc/ed.a create mode 100644 src/toolsrc/plasm.a create mode 100644 src/toolsrc/plforth.a create mode 100644 src/utilsrc/apple/cat.a create mode 100644 src/utilsrc/apple/copy.a create mode 100644 src/utilsrc/apple/del.a create mode 100644 src/utilsrc/apple/jitune.a create mode 100644 src/utilsrc/apple/mon.a create mode 100644 src/utilsrc/apple/newdir.a create mode 100644 src/utilsrc/apple/ren.a create mode 100644 src/utilsrc/apple/sos.a create mode 100644 src/utilsrc/apple/type.a create mode 100644 src/utilsrc/apple/zipchip.a create mode 100644 src/utilsrc/tftpd.a create mode 100644 src/vmsrc/apple/a1cmd.a create mode 100644 src/vmsrc/apple/cmd.a create mode 100644 src/vmsrc/apple/cmdjit.a create mode 100644 src/vmsrc/apple/plvm01.sym create mode 100644 src/vmsrc/apple/plvm02.sym create mode 100644 src/vmsrc/apple/plvm03.sym create mode 100644 src/vmsrc/apple/plvm802.sym create mode 100644 src/vmsrc/apple/plvmjit02.sym create mode 100644 src/vmsrc/apple/plvmjit03.sym create mode 100644 src/vmsrc/apple/soscmd.a create mode 100644 src/vmsrc/apple/soscmdjit.a create mode 100644 src/vmsrc/apple/sossys.a create mode 100644 src/vmsrc/apple/sossysjit.a diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e02b0c7e5ad294448ebe5ec3b4f6c5b8e875b924 GIT binary patch literal 8196 zcmeHM&1(}u6o1pixUq;i6kDX=Uc5+@q&1`pLQLbK7ZD;VsI?@9jt41^`I0>tq2I z0KmY`Fg1(A0gcI7kF*)NvWQ5~9^6{CT%pZ&L{l$l1~dbj0nLDBKr`^SFo5rD){F`7 zeIeDOWeo1&M(`{^-DgmjH-yT;>huDKQZ)pCckFx#+;$Tz+rxPMpk* zY)Z;lO6BH8$x`+k%Eqv0jg{3roV_r7F)MCR=}OH&R2t&`S%6MQA?#z_K-RagZ{mI9 zvU?^J4|zR@mJuB_vL7c_zb~%wE93yZ@!dO3FBC2L$)W}Q{^vC4K{Ie@24X^Ufz|)l zCx8Dxv_Gw=8PE*;dkm0xsaz^z-0XM8L5+x~zX3?7JnH}e literal 0 HcmV?d00001 diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..782a7fe87523b76dc584a3abeb83264ccf13ea71 GIT binary patch literal 6148 zcmeHK%}&BV5Z>iS+ZZDU6Flz48wY-j#)C{hf54~vAjE12X%Xw@yAQx(v z%4u5PZ&XBMZ(I@SVZB-r2epIo*fh$!wWHI{!_#y6GJbti#B%rtO4-slfp;)wcId^o zfeX)w;WO?#@Go&c+Ji8N!g~mw%s-izkQg8ah=J8*K%Z#F#_Dc?o}3sU27ZVEJRbxo zqNOoYD31pOI3)###b%ghoqarVvIzxJm_7sa%&BT&06w=r~Jbrck9bu8R+@ zSLV7x;c|7DU&wIAErrw)1H`~Q19{ag;r)N|ef>Y5L_K1F82DEV@IuROHDOEoZe7?M v-n9a>1B!xinZjub81gEHSiFjNK&60RpaE!U%oKtLggyi$4b%_=zskTDoxoeK literal 0 HcmV?d00001 diff --git a/images/apple/PLASMA2-A3MAME.PO b/images/apple/PLASMA2-A3MAME.PO new file mode 100644 index 0000000000000000000000000000000000000000..0aa04aae274953357c3e83642a0b5ab13f6a36ab GIT binary patch literal 143360 zcmeFa3t&@4_CG$kNt2s2xw(0?2@fGaEhQER=xRlj@+cMzr9x#9S&dk-1%a(>$s+56 zVuKZ1Y?UgmuUJWGN{cO07ZjwZumweKdH8k(gtqu1JPM-N{6BMVlD0h5{eJiV`+a}k zrEu=doH=vmoHJ+6%)Oc1$Wm(M&Y>?a9lb-&E*p?L9)Icv?>JwmAU&zEE?pQ_%LU}c zgl)djKQ29RN4m?K>P`3EQHl$SAnEv0zkV!PtP-d$;!%n^9ex(|kAnjrEV+p)5I8L$o@X zR+t-52#kNcb#6axWr?o&7XK~dYn3}R!P|U_g7GzsdVs#NZu}>VTKKGxKRqD0!zSF| z;CtKgP`yBiB8(4H)`r&Srv8I+{X>Al%7UTAR=n{$LZ zF>}(yF%u`-B7c6DcZ~mTZ`z!6!uCoSk#@7^)JILP-?F~C;wr1lxk(*(DLoKM56H@i z^Zrw|spot>H)g7zT^m!#pK(r5S5;N{_J6ST?f19&_U-n)zkBPuK4H)9cX#jgp~gRX zfZQH)Rn_Lj4T0ox!%pGnqcY)4#Z@l<*a4~?iUD#~lVtba=)ZZqf9&k>kOW9%(02c+TA6F@P@hi?i3(a$ z0!c?&##?8$RBj&NdvaSK=g7$uMh==VazfhV2s)hh zBk%Oru|!F%vVnBO$7N)tP0AcUE{l*Dmgvay7Gh5t!uKOz5i!FMJ0%-EVT?!vF70u| zOuoAEqGS>`v8$K?61U`}ScAxoW*8#68MsBnYR@4GGBoCVZpmTUGA2sh#>@e?bMfbs ziL#BEG;T`TB$1)^ev(Yc6q1~zj&!OiXpw>YIvW?(YAiIE!fjKY#{pVUh4)3}A_n&Kl%d`JKckDYfmxt(I zdj|qJ5k)Uuu$K$}yDWfxlPx1_QYN&rEw}je0rJ*8wx^Fhdn~??Z!32$Z7yz&FIL4D ztK*BmiZ4DGADHV^25erHj})*0pI2R{EM*&ov(2hzwO_qsgK#WBick28Px^{aVNZ^o zd`WQ|_T}D#<)Oco^UkAz*2ayYkoU|Sa=}LQf0tn|rOn$f?|(V?^4IvgX4UXt{AXX~ zsa#q)cU7`KYt@6R9$$5g)K+}*%D3f5UODxOe3fCd=U-m&_#)q&M-u3lC7bmf}L zqpN2Ih6PFk?*={&+`Q`Cs#t%jKg<8I|9k(}6+c%zS@B}U`igB8SFCod&RBiV>K?1Q zzhYOZHL+S9r{@hu)1^edjQ`(jfmfa`7s@{^SH7ZuWoP+>SEj#m?<9{mHvAFn2JAEd=kj9&XRdgmJxjCUR< zIo_5WZ>vvU*HU~kzOb&vdy-yG6n0c8>RM8c%1T>=Pis#2yvmxBKCh~=PAQTrDY?>n zVy7Q8OnRB%Z#_!V%Nl&dMp?Il`&tfr^1Vmnnu3Gs8~7NMn~%mfUAwign#Q)eTWYmsTkC}dO=V5>4GXr$3)eOj3N2+@R~>d9Bj~{y zB(|H&#~!UcDdqevRQR$6|53-mNL`7XiWaF+9(DW!HKzrEIo*IvJu)9Qd?<)nYow#H zt>9nZL=|qT-wK7rvY@%Pp({xsbQ?8E=r)*ya%lRU*x+~J22F8dF)mUBG1!5avMV@T zFYI7TH0zsIZ1s^9O-I?vpr*b_Lv8Y7S(B(@n1)}!bwyLdVjn4y6|UHtLMgTNTX!s; z?P)3$eh8amXMIzdP`_0aq_OUVbpa$Rk(6w#7gCO&C=+U-D#S$X@5GUe(8i%88X&GA zsDbGPv0`T+6v;)>@pSyf%0OsmSpyh}4FjZ8VWoBE3Gay#run2V)aW?AlhRN^+Vf7a zMYOasg^~tH<;;`blm0{A7XMe?)@=t%SYe32W!r(;tLj>sP6*aYG0_zYXCk90490V$ zmXw(--j)EF+3IZ-cGR7y92c_AJmft@2V~|~-ml6U>Q0m%Dr^V|XV7D%s9@Qam$yW9 zs28N-=`GY5P(ejJPyD(QJFPPh&?YkviuGVsaJX`3oro)Iz%Yphjo=zl(HU8HAUY78 zNW)kVFM#KCsqhg^3DYPxT6saG#@m86b~=MZ3V&;7lCrm`Ww*Ti*3PJkK+q;9ysemF zFd1qZ>smUxj5di%DXHUC(ncz=ky5Nfu()Vnl;q+Pci|yQuDqz^bQtQJ^0&0oITy~? zZ;A`t6ElxOA@qcd>XBXxN zon5UpC*!fFtZTuPIROvAoHIDRnk*$J*W`vYhp?_;@ z{RjJZ3%%>#+P@{(U$BJBSJ1Lx394G_x5VuhxW-1udKgJ6o%k&Z(B2|y597Bu-iw+g znXhwf{t!mPhZKqr8>0A6`PGhRr1&3gxt)K?@kp0=-zt1iFLVm_t-_vqp*Sm0-%xy8 zKs0T-|Ku!^4!fq?LZKWiq&eP`Io=aK0+HYW#ft;)o9@vXprKJNfp>$_XP!r;i(>LU!~>r&A$bGH=To9fONALxJmLdKpJAqv$1F zadTSMXnL8f%9?mvW@g$X<>ahMqcd+8laX0$dfLd$2_q-n!qE(vP6X3&H)p7$#aNn~ zl;%tuIXO+jP8m7Qshp5DVRBj)O~5Q>+~nJC&JwR_^y(Dz&NRj3w5eIjG2^C8z_Zu^ zRo@1#t6H>XL{-_EF;&{yaaE4miB%c3SylJd-d?q@_Rgx)wf9t|)aF#ZTsybw@tQ}f z=GQ$}6<=3Wbz_~s>i)XADz@&;s-0`zuKIb+f~sKM16A5}JF42NcUOH_y}ydD`K;>e z>VsANYnrS2);OvRRfK#GAhwHbUF(JQ4aG%kii+2?!j&FhLuq_iY*#e6*m~@T>KnY6 z7D9UKdZD$xDIFue^hi}slC7DrUgc6%0h{AhR~!i_r8Y^f`aNE@{%x;%y%1EK#%8U) zA=txO-&D$eC;XyzO}X01*qQ@w>g+gXJh?aZCgr`>vx08 z7O%Sg1Fy3FEw5_*E^yn7wL-kbR5YubRUhsWj(@mW_|8?oYXPO+ya4o86ljyp3(#o0 zdb`ROs^1l4PH(0S>7uKkNHjf$rr)^4knlTt|62dHb(RbL?Xk{!7&o}}O<=Ost2*7# zxkmv#HVF8H1{73qP_gw}yEKHtLMdAmsh5IfAT*1N6T>Rngu~^fa5T_T`MIF##h!UZN)W$N=(#? z3rktyRGl*1V!*>Y?k-X8_-ie5w0D`{63x>fX(@CyPaPZNo0Nj3QB!-Wjzzd&D|5tt zMH8WA9ox(zTGXBiFf&;%Tk=7(x^^eV{yXYgtx!OP41A|f$;*mVggs^00Jpb{VEU!SnEusS6T8= zvr5>zg1R&9i8dE4kOpCu*wF0tve-hr<5lMj-~~rz9ShtZZ%ZA!;O+feOSIU-^}szs zQ*E5T6%OQYDP{f2Sqkud6MX-U9S^#rTYI*w$*(TkithKI`?p;fuBmDno5#3`M^5r$ zh(}5CSbJj9%ZApKOz!Li>0+nnIbBoy+9Pe0m+oK zjvy6sg*4yt-oDYLG5)iI5sZFsphERF)b zF&;JX#1fB= zEN$&{%0x!QDkh72)sanxKRiuFv5X8@Hz{%x7j5Du*SMCrx+f@!8SNx#8JU}qu}&?q z4+PFlN<73(%;`=wO$xK_1IoNC#nFWx1@KMo@*E* zgnH3{)DGYl?o}K}1(VsGZ@5=gl4X$pI>xN2n^k^LhtWz~{fnrG~5-UjDOxE$5 zc?#!1;#SP|tjT)5W}Y&mC$Z;ahPf3jx3f}N3B~q%}S!v2?1r*%bMVf_d7U_P}_jmCXLp=VpuM=lmQ%g)-NzMWV{J+uWMm z*+2N)nxgq=qDhg@cQZ(0a=|Bs&2?*}33^CI@&>s{(nu-_u1#y_F^j8JBzvTtAM5Of ziliBd-&JJ=>rkm(hZH0p44`uKn{ zwGR7u%=VILhulok4ACn+3ik|;GU*;qqFb3v_$3}K$s0^Oyj#JJsb+~gJDHi8>U@M` zyJyc>^Yo$_YqI}1T$bl>=XkX4*&fb4$HOPh^CV_oOWcW)RWoep%NZN)kU+k~to`dS zcUY1m^__T4(h#V)1brsDG8#i}PWiW@toXWlHcwyT?wjjoGK|y;RR0b!6N~00CS@0R zy1SL`?gbttEZMza7y|{Aw5`>h=vGkQuzJjH^Ew5tjN1&AF!eyAAmg1!Ly{5T3)ZZn zI=2-J=5+^2fv2b2x=!io<<_q2iDB(EFUe!ig!c9ng~#r;yE0CP-1Z`5IVV1~cPF{o zf|L;de9nS3DaNdKUUhg965VUoFIbZc4WoLZwrJskHQ5O%59bYbC)`O^Boo(?dGToM z(YWK?+5(T3@i3V^VXExG?xdm_>$FLIv;MTsk?nxhlF)aOJIST!doYwainzPGd%9V7 zQdag_kI`eEm*k?Joa7qLJ59uGp5eBmh1``jc-@jr7~i-~=k8;Y`6v`X{ zr98=Qdw2-u*+YAt(;T(ZTMQ1)P_fw&VOjuK!k zD9HLtb*7To$L0;n9^{0>4x%o`X5C-sAReQecU~c>$cGi2GS4XbgWFg_C!cZJAv(#r z$rxH92wS(;IH%J1*Ci9%Sm*V`9Y^Df34tinOkn5bu(LD*uB?+- zYZk1@_&OYNXe@DC;J6TwfK2qkZs?Ejb^{%|MV>VdcrJzqJf(0%+hq13vt4UuKnO_V zK!Q>VGXs{O8O0(OMa;MUWZQ`*$%*Wv(j{=uuf_R^zaxFpLsUXwh+zOzU%)=fj zD-NLz1Ts_+51aXCnOm`rb!E6^ZY9#;?UP<22-?_3Wlok+2Vch)xt1U%uth+n0);h_ zVrL*!ibxc+uA69cZEj}oE(BOS(aMG%G`XnPxbjR`13VfLGas>^nWv$6kyj@+9rYef zwrP2uDch9sekk*8lDUNp?n@pBC6I-oL^3s$gzb!-WQUT8Gc<_Y8cG3f7|99^Cz+v} zfO8_vK$=O?LzBqNP!>rDO(nL_G~x)|Ns>d^BndW52;~rMXf|O(bBHxGkC;Pwgb#Uu zTS!i|FCxMA2gtYW50Tb(A3okKC+FH%5p%r7+O2z!o>%nhZR^vwU&57%{r}xAcA4M* zU<>@vUIE{zgl|;AH>%+qYsumETJmxGI^fi$+iLEdfOM5^20B9-mZ zgki)46nQb1PcsNWgqZ@zu1n@N#l zCKb&T84MmtuaxkTh@ z61j5x-ZpDBl&pbd~l6sUhq;ylyW8X@L6FYmU_e`+DxTM5T zY2c*EGY_6GGAb}iaK+4--9<5fQ9g`|Jz)U(EzX6TvP<~{WTNw=vr^Pe4tMKpCkUpg zHOnlSsd(#TEf=H`kp zm*|C>XjHdsb4ENoHDYzzmhPduUve@gua8WL`Qp6nn1s1!!KVt2yJ}h075JMR1 zFd3NS=XWW3fqhokHQ)&)3}lhdPd**#FFNX!dExoYm;WO36u6lEXb1D!F!K*D%KWM@ z^9w`HC1fAaY5Xr@5GwFTmasQoOnGCc_RCf=O-7^DW{pAydsJe0}JB5=s4lwRsKflF5V{sOEnWu7V=4awjltao&(rG(O$5F54yGoZ6f5~}&o=ubMJ8ZH) zG7qR3>pRQW7PS_H6oqBO!fNRHH8v`&wnJD5DVmb&EG$ojHFg#D%{chR`P*P>?5@iR zT^P_9^D{XP%L47!N&6KS6GrS;TtpaYxllxx3o%?Oqsv81=j8%XltzM-ONbDa;DQC8 zMxICycn$-(Xa^kDqoU6I{AOE-bdvyukJ*yvWgoRWusLvR&-yyqgCxs^URXc)3+m^)ylY zsXOZzi_z%BqvHl+VJKoD%?!G*9HvRHeOWecJh(Y&lB4eKB^;w{OEkv49Ldu89NjH;+02YE{)=on zb|~kdR? zL$;~wn$e-R=z_4Pv^kIekn_-7j3-;oNkwy^ilX2p8KHDe}y8L)#bM zXF6{Hs3nq1I|kt*-g?0}WWKBK+9g8l#qNG+kH5+I(P=$j6a_vXF@AKjg%ObIq+Ozi zfl8Uf^}jv^qKhP*N%>K)SI|W$HzAh5vba0Q9D|KrblJp|=$Idv7vlWDl<1frm=Ybl zB2$9iM@ie$SGcYQy4cp~R|f=F>YPgw;F8A;GYh zMFDY9b56-(F>Rl?3MGN8zjiop`YB}iZ;`6D~ ze$S5E0_qBF(QO~P>*yQZbvQG+Yl~{7?%cO{Gmg9NXy4z){>sv3gRg|w$7Iq_YlIY$ z*c9FZ1Y$2G{>4UkCG>!JQ7usDyh@3;&`PKom7m%!T8P+=I^YoWdolN>1KXJ?3LV4p zOXE(Ney+je7JNVTcX_7FD~LS~2_ooiNc2R$g0zO7Cf|fslJ7$o?>igYp~Iix zdWRJd;5wWWQLe)|yWBldgS@9kT)W7A|I%A3>a@^zKc2VI01UUJ(~XX(IN#2@AxY-x zvm~u_8^A@kv3fce`RF!Q-+3ErkoH+aeoe9rgLvy6xe>{XlO7aweHKV>`J~YirELpK zD@qBQh41ksDK(Om+NhK|DkT?{QrB5Zy(H!1^y7o`>~{&@G1^xpq!KB@%)%Wc4KC4n zg4td|;}<4+$C?y=eiGT=X5JQV9rc0#dVGTag@^cG98br8bv*A@UCdG!4~$s1Difw) zJTDdiXsFChK6()g)`l(kVPx7woImd`+752?9ErF|qicPXLu9R|qQ&5}N@tT^d{&7@ z{nzf;#8rp}CPbP>aRtKC5)E1iRvi&cHD6rZ)mWmUGSamtT8OMY;eExe^8dEXkdE$| z=#vDxd89)b6TZDeY`0fZ)6Gxz(`w8jD!vxdMa9>37GE!kZ|E$(v9tI%ZNa3(N1kqE zKFOT#4VN-{*L&bjcYIWQtmtCg$FPg`h1?wiQh$s}3k_C=HHey&Y7i}mYbqAcuzin< zAAA4$r!E%?B-#_7!PTHUdeVt*%CSuo?FknY?HMcCQ`gy^c(~XhE-#5|>}*d{XK~}G zJuOjjN69ir$R^sz>BD`=z#|D{z>!3<<46**HQUKM&B zq>!sxhmnHT;pB_fo5;YUsbu=mQDo}TG33P2v83qhbW-^Bc+z~-Nd|tCK?Z!2Nh-gY zL=@ju~DklEi&BU`?kPGY{llibtnB3FGsgXDjoO~^4fnSU&Ye1B{<`TE!#vLHB* z91iA^oa6IJ_VGM&_PB?%9bZU1Cl-tLHTfKO#64zd-PBT74!Fddi z+`e6EOHWpjtiyvT6U|h;g2nkylBdQQPz_FQL^P<#ynq$e@C*2iSaeRIhirCaTCPA9ky*SpoZZZ#Fd zhQqpQY;Ng&#^5{^z0Vkk1os(NA;Eoy9`_mT=Qe?i%}5VrGqW{hiUZ`ZBqIZRj5J0c!{GuF*X81|8do(v z$6DmF+s0)46DLAk(-=xlkx>dfGZD|l+HK=Aj)r~%tMOn3K5}Yc#@B<)L9ew8`WTPX zf!Pf08KSN_8p>m+C&)obsH0?kIRq`7I2H$qDB@xggD9Ipn>0F@vlaB}8SNhJa(+nM zqqA-uit?lan%(Zmd>*N&;b>?$coafyk{mVgVth^$$tKCO7>6S>mt@PA=gE`gwQ|rV zoD5~lnK3xh7p}gQvIO01hC1*d1-?^49my9 z3k@b~LZiu_aSZ1#p~>W}&=j&aG>93YL(3eV;AAJRd7}r#;5}J597aes6%N)P#7w*e zIs8ZWhiOOlH*oQchQeV5bRjY=Ezvu4QP4O0v~Q7t$2rqQCO+{oe$fe^-L?=Xr(6q- zgiL29@`QN|aCk6b7zbf)2Dkx_0JZ~ahY;pVK>wkHxfS3YO7e>dDP2LdrOy(+)K9wS z{~hH9Vko_ZG33u-NPY!iyPTAM8`Gn7veJ|vry=>zXz+!C*dF<#VoAP1OY$ED)Byy* zX+V>S{5`;Z4EV~XEj@wshCYhYd3~7D2LY@5kkaZt z^3tt+jHTMX#{6l0N$H=FK8*CSzS`0vq)+rUmn0BiaYBAuk;2@&@18;zGXA$dQ8m(z4IuOR=}hD1e6qj;9={bcVu zTi<_V-(CGb?EMc(_N$Ty4jL?e74P4z z>Scca^DS`s{SP?deEIzkm*4+z`TY-<-~SMK=fmaqKj5Vhm*4;3y!`%$%kO`<{Qif_ z?|-=b{)bMl$GH6dhs*DOxcvTy%kO`Pyz}Am`yVd9|KalcA8_LK^7|hyzyIO?x%WRz zwhbONaq?j4Jr}zF`Om8_OZe}#zz-_C|AVyh>EyIU`qXmo)(_IQ3w!rXB7e8E@;~!h zLtjIRA;S=`)LLd5PZ=LE8O_g`pD`wy>P@4}4d(U6(WX77JIx=O_ZjaooiIIMZZ@wp zY&2vW9y0VdDvjyJb7pf~a@?4>>2Y~+OXF6?t%=jd_l|Ff+Z)#$cQ!61{+9SVO?E{e5W6x*#cc6KvA`v5=t z5I_4czo?mCgzF)G(E*-JmvB=3c{LYn^N`5JjKc$$Zc3RQ<|P^`y4dT5JxFB#sulmY z(O;W#{jeK`-+0rA|80u>Mt!K8;Lr|3z2rdDE5mLRL5Kvu=8kxIAn_1!LM3wwFvGj$ za0W}7XO!W^7+?-`YJn-!r3Ia?$vjSt(a968$@;>8!$=Bg=Axs-1H79VE`M=Gr^bqC zJ#8GNh_Jw`hJIBX23>aINRLrTg7P$eTv8k++F7T@oy0-oD8;`bj_i`+;8fP7#gRoj zySO-L9Hsc};`F?PFm`IOOPHo-w4aMfLR&@&ev=?#Pw-v%0!y8Zz84U0l2ZajJ%knC zCJ2^q;8kCsQcTsv&=Lzbi4soJh(k&w-;Z>Q=F>&I;u3iF5_s(;@YYMv`~`G&^Mxqm1t=DnYa*(Ld36yi;`nweC_9avGyx^~aG;V- z^Ulq?qC~~Iq9{9h60@Tr9mcL0?FAUozq+)d3UqBH>fMD#G-4NwxEy!ETqsYMR#7w1 zmM{YsiEN^)*hRx4gaVyqHo}EE)RM;G5_RIRT~HV8%!Z!AQchzMSMga!^Yp~EVlq{Z za4VaQUoUisA}GlmlDL7-Cg!C};OQI4d?`3?ATyF=bbuYJzQp^$97GJravUUV12|4Y&vJ2%sLY z2XF#l#NpvlfI9&X0G0n-3@|6l%{02g2eARB-e<>lu9Fz)$t0P_I3fcbztfCsP; zun6z~;32?bz!E?KU@4#wunbTHSPm!wJPB9j=mSUs zTm={e7y`Hka2;S6;6^|ygM+4wv2-HSGynI;(mnt?%GaQL9r8CIKLYuikxoQ94Y)f2e?<8{louiY5b}?L z*D^pcpak#~;Az0KfagK?5@=Q{^*Q}oP_SCIT}fS!QffWCk$0ZD+XKsN|9*C4$f^fv;=qC64hNytw@ej4&Kkmex$ zGjM+aEJpb;l%GWYY2;r5uX2DNPzhKASPQ5FtOsla?IuO9{CAP=R`kx_1Kj7x9|G=c zq(3Nnm;MYs@)(k@jDhSikUgenz5)3-q&)M|0LiUlwUyEhx{r)0OeOvUWfeafHzUzit@Y2Hv)E{ycgvUk^dC% zCCW!oZbklEz;Tq%p!_59?Etx|XTDlRO0_D)JU|@EJy7n2d|!YaMB{zEMwBZa^AHGxZ7#uom=FQiPEeC_WXk@Ekklwei(@BPUh{qME^f3Nk(s|ODm zGz8nu%YP(Q{NwN4d?9$chWO94~%x zQRY+Ek!Q=eLjDIoDc;TbWyJzl^8{DCm#Zn^iuZ9frCjlTuI5Ru_(QIykmKj(c$plp zyyj7E2OG4ZHS_Fhu{GmW`sH4gZ7o?=`~K1`QR@ZWJ3TikmopOz|Gh`6=R!T_bQHuW91&>ymr8aG#~<^GU8|DVJX31uO>?bLr^;3uS~B>1dl?Qv`S%uotio zupjUt;0bO=J8vpi;D;!;$jccYeuL7sLgvhrL4VX}X-$BmsMr|juBqHOLzcerZdtl3 zBS!kSL%Bowi0ToQhiy|2irpFe2h*qg&4wc5gXYLAT)eoULCkxVo7GJEW|m3ch;$=T zXbim}sOutiib!3g6{uH=#AxnSp*>#LE~`_f7Xku`^krgQgg8uE#;xWya_?~;ai4L= zIk`Sg-(TNDcf0O>-7C6xbh~sP=??0?(Y5J9IyGnFuHgD}L%18bG;ShyJ9iH^m-`Es zrvH=vS^Ycu@AMXaB)@QgdW?~)oXmP^c#vXlu@kr`6T3?96U^Gz?0vwa~8ce^g!EmE-sQn3Zn z&MkV-7BHw+1$%mx9p=Q`p)cj<&$xI#{t@pH~qlTVQ~OGM#s z(0f@J)~iNy_SrZ+W_&sC)7##c*`8A5UK#9Hp5WsH3|u^7{^&GZ$;)kD$Zhv4D5WYG zQ=Z_wLxIMc0B@_k6nVs2(Lq$C2dtvq#Ew{W`r9fD*tH zfX4wvfZYIuz1^IbMhY4fH0(vmCpUr!3du@Fo)~W8&yGh5l@3XbOiw2Oqo*^-&tV4ERB)J$wsZ0@ z1)3#F{QCxNnZ3}jR_r$rN>2xEI$F{AAq|r#6?F%6NjsM)WmIohWAvblI5s@u03BQmk`*%?W5Y$phVyloFc@D+Z92kXVj}8K6^NJDyvOO@ zr}LpsoB`uerlIJ48j3PL=jMIJ)vC}R4L?9)ps=iBr40pnV5vW?1nvceb2XhLk@7YL zCJp5@QcpRJqF260XVwT)HHd_$M_fexD7~PxU8|PHRAiGL?zLR$W8h}BGMk{z;k6m> zaV1nBI*}x5>c6&tno39QO!oyYYCwuEmJ53LnV=CJgO0L`x)~gnT8ftc6)Dk+GffTN z)U%wM)DT0mX~sx>2`yi=pjSS&BaBBPzl+yMG(9N|6-Y3GZBHpmsd8h) z#t=#=E;RuIR#YsebZNwtPsCJ-#r0n?HgyTP^IA3Jx1vLgKCU#!%P~`3*yr_ieB z)wwyA%0xAQ8$$!R6E66ILPQ3?;o~GV<&>_3n}GO#2muEy!Xu=-^ax4rVylq{tyEul z9b%{MKs(&^4mufV$U=}v>^xvm*&HpojPR8sKG!T5C0UH<-yur(rX(FihMeMzis7$x z8nv(?bzLx}iX1{QtmiJYTdi>Jr|tN@VLh7QjbZ>-V4hQdrj9K&kEo~c8G%3-f(l-D zzN&N{mCrzJFc$80mIiR=lUnc;eN?P9!gVQYOdD7u?70Zc*wj~qH}!A_(Hr|6?w-(R=&2QFM?AG~%qQ~4p85Qz5iwWn{QcPL zUwkPv;%}dSJ9gN%dw0ni4xDR#qve@L*30maKm4~iG~$XoH6Oh5JL?A0@O1Z6UvOXE z^kWDQ((ixH)}yhcF!cSF!Tn7ejulM*^z4YVpY=a{{l?yB`{h=|OidIHO7J=qH-n63LNBZ9^p29@3>2WdHN*)h8A8p%D?f_7M?W zdldI`B-aqd9cUjBIf@mE=GsTlLs?VBLs`}L?`}F{nO_%e5$-@t7Do!9hoiYr=wZAX zC;ay~7s+)^%PzpLz5ufknD;tiKSKVqPGyPXmlt4;Ux2|Yd(Qidy8zR_3kDy>N`Dw@ z$F$0dF&jQERHfSb-LD?EEN&T>dew=0+7sIYKblhIr0u=7(QB7xzTLj1{N9$g+~0a$ zRHn+R-hKDOmv4Pl+wj5ZX9DlG_gHNJWd~31(_j8nHv5wbRqDNQe`uZg_3D3csp}?L z{@U}=d3(&Docht}ijS-h?f+@ZeBrgB4?UIrl{_`A;ohlJQU_LO8Wt7lC*{04u88l< zbIWb&hDQ?QruvxF-3Mm;e$={9le%Gz+w+wAsgi>lP^Kh3_t8C9pQ}5%rOEk^n?Anp zg{q%Ny!qhFjS0(l9hEm+YrW-#+-v_9RHZ6N%^!ZWukE#WWoX1F$9BE;vGe{X8Z+kxGT?N{7=;q*_>}{HJLphWBr}SYz-gtZC zJCOa8wl7k0)-I8!MhNk4phGM3lZWkks(r+a?9cA1TWbIO#}UiwW}iM)?szQXsTq&x z#1`$LQ0R(OEOKG)CW86zQ!Di$nQPEZKBF2=?M_ zV*`y>UtozDt)GhxiP+Cv>`BJxU4c=yw+sk(;SDg|G0<(ci((NWBg;9BuCC&bI7kxS zj7r-8(1^zUMICf5hQ`ITtBo_bdf(S75BIsuOdqFIimUa{HAhg*O*s z&s2R=^rB!%b-%g58M)U=x${ml>cp0lBI5RxRHO=t zOE}7sLXrEv@<|II1(a_sqH0TVmh9CK}{0aUT-^?H35Agf=-FzdzmEXkI z^K1FlxJQ18U&%kim+{N_$N6RaWBgM75q=4u&oAa5v%06 z%WHTwujFHRhL`c}`k(dZ^groO>A%r`tv{-7)wk%I^+)uF^-8!6YxD#4 z$#{;OsJ~L*OK;U%^k#jmUae>KGCk3UxOVPm?i_cP`++;do#xuOQ`|}J1b3VZa>ux@ zxue`6?jZLuo=ETJc5?4AuI)@UL}8b%%6c z=swqdru$g8SNDPLAG)`7n{}IXZ|dIAy{4^JP!>{0dz`%m^Gc0c<8yMz4)`!@R~`#Sq7Tg?X8 zN_I87ihY^=8~Zf-1Y5{H%r0dA%+A5f*Y9Gdv6ERRo5tS6Ue69?9qeE>nH|6;vHjV; zY;U#~dj;E*jbnK>mQ}EF_MGY`)eoxUs;^ZCRiCOpQteT_r+QblS@pW=RaK?xWz|cn zr&VRD<*H)UGL=_VfRAS$Q2kZ4P<5YbwrZxzrMg{}rJA5hSB+Gqs%}tSqZ+JAQuR@F zSD93tN~I#IpOvST$CRzggUSQSPn1pgi05tPX61V2Ys#tem%2~wUf1oJZiU_Eb$iZQ zV4ZHg#u{%OWRY18$J^sa#@P)9tZR#V5W*0d?ElvIkIlq~_Cv?pq}x>)iF}S9OJw5S zJ5pAL%M!g!q&EPUsku(+j44svrx>M}Do>Gf^25w~%xT%DvK@HhtdPAaa_P84&INQ} zF6aJlTHtO4{r*=x-c5Ozx#Rm^giKAw?=^|<>CKB}@?w}gMJ9d^Tv0^d;ajVqFMq9O zQN{~i>04wa+(5iJ9xwM5sqjVUkH;%jMSN0hEq*8_w#XBk9aEGSlNqGdgA&}5M46K$sta28>eM-As}S$HM>9 z|8AWOgZ&5pN#D;(o_bx3Td_`=r*pHzW%G>GtCX1vlCATYMR$o$ig%MFBYg`s{r-R> zJ02wVfgqv3*jJRB)E&MyE}=KE(_do3&*scSBG0wEktlLm{Dy~{nRcB>l|iX8B&xe5 zDq1>^%8}5EWO5|Cdr@9@xNY~^?z!3B-O8~U__dzyB_3;b_jOhem)$*2>$Z}y)%YDl zb~xkgOYpOB+1lk4TLdDln;U~jgXUUsDjW&9ttHvIF>CQVv)Xl5x2UK>R5Ts0IR_7g z^COTKxg_}piSj8i)s)0%C37@l6iMoy!qjR&QX8AQ>f2DB#zC_#1SEtlIx$5mdzwff z#T{<>JPwl;Z*d+dV%=Pchr_Sk+OG;1@dK7pE0I?&$?q@l>d6sZ}_FQdO%Z7!V0EXiC*$ z=0mMa6YBAsyq&uS)!2-$L)lu!H=sk~h`!knA|WCx_)rskc2N_A#~fcYiN}{rVvMA; zn8cO72M}b&(i8YHz&QZH!Sp_Wfq)@Qr-P~;FEplKNbWeY%Et5IBdaWUUjF+xSU^Vh zUGZOK6WPy2_Jxu1|Ecuy`OklSo&+=<60_#_J z8Gnpdo~yGNV*>0z;Ktj&mq|1=wU+UwP=KEYhJVLI2VlD@pI5zv%!Ky zwd0&H#8$>QV;NjKaB7tN+HKuSnw?Fu0jYwHR-Fs(N0WW{Ab-7O!bVH+TbAk?%f_GM z(>I=rPj>}uRGrwG%@&8;wwbeCZ}7{~{Up8SRZDWf5;Uz{Z4qMDR$7AUwSG%=g=Nla zi>}I2TxD6i#*$oZsjjxT_$y%_>DX&#cgX-5u%3PyY(_K6954Q>B)+uoUY7KYP|$_b zud6LM{aR^pp_^)&1T5867MD*}Q)MY-3Tpzm76mLtz=1eGiIGJm#_Ls!Eg*ARWvF=7 zBBleYER{H+u=zF13!5!F`7<~!qr(vnb%my0QkL z#1sR!GeF7`13wpUwzvW^-K!R8g^U2N!I0tLo`{bW+i4NQU%k;1WPFQ@sx50bSeCD` zxN>qLzJrh9YAtn&pscazEsIZq+#AJbEsX{2jw?#!fu7b`3NH>B?{EZP8Sv$falz_x z+0w+FOZ)H05bkJBT$&_GvWk6IU3-O3VT(7cQg5f^BTJZB>;Sz6e=+^N{Y$!qBZ%+)QUfDmWN&^LT$s|D$i1Q}7oU0ihQ>Q3yvozv*+G4FaZQ=jC z3Va9Xg?qQFgZ~W3=C)Z-A0Ts2TR>5A$XYU~rpKsx-4DF#%#NQLbWXmlcVWrbHJY zJB79ms*;z`kwcAMgNg=QNxr{7KB-#G_!FUX@m9+RTOnO>gQa+j#WtD+sjkf;$XwD? zFIO%9*0TAv_~Lbznr|${K`L|c8H>Z}ldb*661<`2EsLN$APWu@1|E7LnfSs^V15vt#J1aPbH%Ow-qImM z&{F)3rDi*w^)+WKyxh50?Hr+AmDr%GH8v+!ByLQE)9ox2&QRxb1q{x7d}39!!BVu* zQuKzU=uHdM+O#G<`8x~$*K$%|Ev!>Gk^~-!5Q`JGaLWxASDm7@%!8!fBY!r-2A(%QJuO3JM7T1(oNT5Gq~ zh=K8+0mf?$5O24D+1nj%h#thlKk`~Qie}J8%lHxw{v+m!-?Ts$^jKI1kfEVxYHsE0|2tlIQZWT`Zt-*2rZu}g_1e}CQgS|Gl#P33b zVW>!s5U;o5%K$$QNDV4|=hC`)yB%Ok6#njl5z_+qW{3fh&DSn4z7UM>Ld(-B8$XGk zyU7C8HhvmE_e~2l4TNTq;y0*eH@+87E8dS6vB3FcXy@m@s{WpUc-N}9I?7`O!p_-+S6 zK_enK%)r)cq^&nv5QMPURDWyP_*%S|-S|$t7a=WWbG_w-Eta3r^V@LGI?D9HGh2}6@qHbNvE`#@Y)wVTkfB2 z8sTh3A{Mi1%%u^K-&(I(AclZ5B?DWRc@onSg&#^xV95q#ahTw>Z0pj*z~ZvRlyU^q z2e(iOO60JGvxr6W>N-m>Ml?i9y{1iKRBMLfBCaA49^58{5<1-k!}dhsH0JgWCMb87 zGtL(=Vf_6aqlJFuvex~H!Jl?6Wm_BT6Q4~ahZBXig2Vth!a}b~5b3Ou5asV59ve}b z$k4q z^;UaXx1GWd%k0!U8+pmggQqGnwXIdH9_z9+tMEgia0-sA+>VA&<6R4OH^J*yS*?DyR?I4KiqaT?m6Tm-4ahJelqcqpi~5dD@*ULyL?pyX z_=w#3Iul^wG{}D^oIt&!&2QbNsg+~ED>N7l8g+!9s55$5A3oS9(N<{aI7)^tqyh>| zNg^VICvllLphm1LwJLEWv6_ejyHeQhw+e4ySmAEe%eTPSPEna?kMc@B0WPe@Avr@p z0bvj^dHA>rLLGygI4AH713_(%YHYQdfXtg{%R)r;vt^0sg|1`AaHe32CWUSv1jSC_ ztkuuXo;|w)GNxcKS*$+ddLwpEU0v)RPUVCDdRc$$wr(XfPEe=PAe7Wsp4OMT(R|af!!&8>%WreFCD6H#c>552Q6VfHt#=zud z)<`s^b3X>I;qSJse+kGSGu`|NXDSj)I5-CN+>&^4Cn0VHuiD~etKqFN$(TvEG@J{@uYJvO;9OAO@N-ac;Aed6qQ5qg6$E60T@8(Vp%T#hjh#w;5bs%l-Tepl_7DBKocgsCuiP(`ao2x&+LqKzWZ zfbY1xVcAu0aSRX!*Su-j^}3~`H=_I|%dWp$O5%hbm~i#h{hAVuz#rBGSp?o=fyILI zur;_QkebFqT#ThF;KN;#?LqB;hTtp**3WEdT%5 zdlT@cs;z%`pCKpbWN6YhO#(7RETt_4f+7|~D5EV#s8A45uR&=n$aE1ZjudRT6&p;i zqBx+nG}sh^ty&eO5=Pq!?P-}&q)cs5hEN8ta zwfA0oUVH7ezqG8_WC1mEJE3Bxp*ea!wk*@+YFk!RSUjIvJfB%?oEnRdz=xIuArzUw z%4)hE(HePllbEp4`Td|s+OF;0&?tQT?9XT*A9nnU+GYd6r4 z7FW5^LOYqOB}RP__eUq*f*J#qn4E34U>4`MU`ppm645bW=au#d0oGB@`Z+pp0;=2p zGO}4wcW9g03M908ZME2=zWUN!gB$`YhUqUX7{5?AH?1+3vuQa6tWz;1EH+-E20j7x zEU>|nkc^(UwB1W3dJiBTiu>#qi(A5+Fo=4A&t^Jj`;=9Q)D})LVq2liLghJ_mf63? zA_?WtNuxhwNldJc@UjV9$yevhm;;8FC1?S5&auouCs*pw6-^0R7UmDXZMIa^tQ6%- z{x-y7e_n}#!Lq_9%Dhhs&GNUQE64+6OCu*=YHu}FYeiYuE_vBvX_Z@|gGYaBW?X4; z+%h_qq@89=C=w=&BX~;;M!_nXr|k>_$dOe_ukVvEbn$etK-15ovSL_vONb%J$YLSR z2}HvD)jBg8;rtdehVDeSh>=mfyagk{6)Sv}#l?xC$v#OkV!H4KOQ+U)%%?}yEWa1k z-XPyOMhx9irlyT{thcW+hARyeE%0(#L^!72SVq`FkyckP5Ts*XfFce1>I=D!{yk5= z?31da&<5YY5`!j$4$I(3g+UYR}^iYTC(N~!Z7qNg(qlHTGuGowq;jFU$s|rc6 z`fNiFjfyDc0g#7hq(mBCdc%TCX~l)~lGW zIKfOotj4a0Lkr#phN9eFRk?A9+6>}iS+>O@Ct%Foa!rXfu*Gui zkQqRMpyk?OGrSsExtGvu97fG8mYIcI0gDQOsau(*r6P_d=u$}Ckut2s1_D$WOI*DQ zxv=SmNlJKrf*xN!32Yi5omr>`jtyvvh){7TVBtj(zgftY3vXVqVC4k%k8Lw1lIYnB z*i}^k!EAdNy7bETErqHAwh^7Hx3khYqs@)A?T)IjCK&L+B>Bfxr};v@fCUSrT2sbL zb}u_)GEg}G<688BMK%R4VXz5Yw8)e&mnY{MkS#c10e$rjJrx zJ0;_ZB!KNaSjZ=@ntcs@d4(p(%X~s8q^AWa*{imTWnBx{3Qd9`Y%vzFHS(e4KME6t zvf~eqlL75YyP?KXS!2PpLs{^DXi1(8s{RBb&jwMiS{yy21D7och7#MRm?D1M70aB< z7R*pE-~~Fk6t;I`AoaQ_#t{dI%7YX?@D~!u~ zCLE@Ne-=*D5ep5570Oj04~J-vZnYzx4d>#|A;P(!At*!czsY1fzmBGkGV{Vb4_Yy4 z0uh*Cg0TW~j*dA-o_%Q0ST=YSmRmuw%=*;>bmCD&N;XcjfJ0G*kNndzt21qJ$yd|D zUU^|J`oa3<1SWxcJUN6pRFMcHW>w+u7nULhc3<3DsnO=urnRAje7(}z%2bL0<>tg9L8|T^68vqW zF~DOMs`K^Al-#|1aWfFNE6&xcMn3J7)SQY@>-D0V<5^LslSE#{NqT+C?N*yH#pz5< zw#8dhv$B{V`|Hv+Cb+tdzDbb$n$t#Lqi^WbSxm^{#SF_a49l>1IF42SEDV(zq~~ z_}RDEw~?HboUK9J1D=zY!{GNh$>9V^Z;ZBdE+qWs>YG;FUPTJ~`yV;c|7VhO$<|cS z_nj1y*qmF?ds{j&`u4W;x)e)NJ{$Q(?5fvu$TfE5&0lS@k@zRhb+xCB8~1?)QT<L&j&`73~Y(`o3q zK4m&-I$=6)I%aA#eQP>s+G*Nh+G^Tj`pWdBX@hBu z`+?E9l8LmoRe z>XxXkkiNbt${Zy@hxhr&A0TtRK5|`TE@Y;2pbz}2@v`xZvDtXicm%S~Z!2=mi;d4f zu6c&>AxJJyG2U;SY`o8Sw{ZmImAe|dKw{Z%D1p3jk>Pzqq2axDY2$oDuHi+)Qp2-` zMbIBH2U5mahD=BoPk~hNy@tCCgCR*g&|rYvuxR)t;^%fL;d77cF*ct^v%#_u~q*Sq;%Ko z*C`UZ9n!gP>tEM<^{?nxKuR}X|FV9m{wYZ4F3``?KcSzlf2>_b_iy_9^~3c;73thT z`ec27yOR(eq$}5z=|0r0*R9jNuPfBOpGYWh1R28u6;?Ht(~iVR69*ONt>>{ zTRR3aymxAowRdO-X!~fBw7s>7+Fsh5wKlCqYl392POH}P+TS#-8gLagyEQvCJ2a&l zzotm@hURrmu4b0z3C%>!1kG?wie``|S#yVGpyqbX08JlFl19*|G(^)TwMb3U_tFvR zTj_wbTdJ0-q#e>%(&tjK^q%ypv{YImZ6+*j-^CW>)lPcc@sDH6n;M5|~K&59hcS`^)o-d-sozkfi>X|34y20bL#lYTI!pba z+OAGgCqR<8r#cqW#AdZYtyAX<|MS1)Lin${a6%E^-32KQDogx7DgO@nUn<`#V2J6E zGO&T!at z5lAzlj1-Axih&mwh%T}~a zE$CyP+INZp^2W|_f24>iNS?)x;}JK&vi0l&ZaVAIClQwFU&beP4RPs{c}Nd)j;_>r z3q*zSiFGbe;nVZcY>4BQQGeBRu5dQQm|c?7@eqV_okI*RX`V}>$*?U@yQE~JbAkm) zTA)tv3VA?$%#Z`b$3SrOxTWoP(u%2BbK7(^4H5+mg*q}zOtjGqTy0w*+FjZe9nlrP z(Y8RalLcJ53hCCmwBu6Srn6K|(++S@l4XG2Me8C-!jI2@D&c=W z|G%XGY6gV)M~(X)GW<>`(?@lYZmc0%SOz$kQh|Rer~ltor7)_oKm|M;ZD4HSO=K2o zT^UQmJG5jvOKTpgYVql|1uX3eI6xBGQDo?&5W;~=w2&g|@SoLK08M8RW;AWgxU~iE z?2)dKPKQifBQq99!9L*yYP@7je;r?1!(Ahh!+s+idJ@mU2fbK2B!b(G@mz-8XiuL> zrgJM6aPeFj2iVw)ZPPh+ltToV;(ZTA3AmXo?ZEo-6CapJI~05Rtt6w|n4UzvCq+#i zo!)~8y~)M4ex$r@Bzd|mojl(*k!)|9Ob)g6WryhzCd){0r~&T$MI_>Y{3tN zTY^bI0S1GDNJdv+!*>S57reu;1?%vmsT)}xr^A3hu>^!KMejncezMrwWf-mr` zWTThV;JcfRS+Wn`^Q@`hXSiW%v7|eG@lf%cgl|85lQ|PrFTLb$m}hZ(!CZV7;>x#rIW?Te1pnZ^K;3sSA8CmvYfdKEYHaJbD=kk@xK#X=LeV*El0bzY~o-`FaOF zYHAx{6v>`Ld$w)a-^j!O;EieXEJ(M0}`M*d&c zQ%oE`(Kaq)LOQZ#J7+F5_{mrI+g?Ba=6Q3T@p6%4S(B&5>`|L>|EuSO*>lY7pXL_8 z6ryZr(O(D&DyW*PlCL$XnO&er$$z5j#q{J7@gfBScAO`npxN@9yo6l;qI6ptuAPaa?EU9+a>oi*#$e6gl# z&A<=t`5@T(`j@4z%6;+YjMqS zExzV`vajWG&?~uNzAU?&lLt~?`FKn5Ns7)`QJ>c4Zm!sZcMC)p>c_OWn#*)6w^Yar z>sQuS1Q%{G%L9XXa`Vb9#U~x-31V=Bi0$|H$DA&^7&iGj?sGnEKi1*r}JSh35Rfx$n6_}eB?lC(_%NhpT; z+m!&fw+E)FvpF*07dJUz?&nxSdEVjcK zKiTqHeK4nxc$vJ{wj@(XUB#B_oSE76dGghEa@17RuaqmcC<&=5Z?!H&%DmxBR#nK! z7g|@!WymU$3E$h5lI(zuflVPmOfW>Hab(4##^2Uq>iCYO<*#^Re|2RLh?IbkANa$v z%9`2gZuPQF7Yo~}>=$Y%3r_!iGN9cd25X|vyleLJf`>qRqn}> znsUW$We~-r5VXUs3LZB)mN#B6h#NrLT>-ohHRn$rg+$|JtCT>i{)4B+-Hb4av;`>; zzLpz7R(?e(yZQaEYOZGy4m3!sy9F%_B!f>?dGjApUJr6TmEr8T1sX`L1QHa#s&e5! zjf;Z(=PCXZ4khKnf0}Yy3>EcDHn-3=*KV%Z5-yamE7Ah`R>%d7#V75Z0QQGNRYg#7 z<>0ys5~Ce;?@vIq&fY*|il{x@e^%h_G^vo6d=jVylq%)yp?k1ov%`W6-|p+j|x`UQir=1devc`h955mxJ?o<9_>TW3yeRVJm`{ zx6ErbZnqz}ZsYBr8msMJ8_Oy>LbTe8ji0qBtqbjgwyu`IMKh*<<;`d^t*8NLGZ*vn z;eeDjwaRF$6?OHkAydWXstc`lb5+&O=1^jl{6o`4xk+&g%{Tsl{=Q{rv#(hb*Mfga zX@AX3=Y`mbbw#@3PT!N$$@Z?2Oi$yjc$+z+Bb9*W-|yzYM3_<{Y6 zaQ}ZjsA$zp`il9g5S4f-cyEp@fOD>vIZEbB?7%sEi z7qi^0g#<}L4e;FIr|)Dx&BcEQ>pPa}YfJ@fT3a&hzA)ofx-a)JxP=Uwl8RtnL1Ts7 zg13CJkPD+nr{q3PJ0`K<%LZk# zWAA_KZ3Au}ct`S};fliiR6JdxOe!-)U;7* z7)K6wIC$liJ}G0Q3NObv9`A|tl}2A9=qr`KdvwM~`kJWD7(XdJee?ujV#b7#=?^HM z;TdA;=;7)24xfPC9T(o{4}SQY|Kx{UDO)C% z_AJwv=9NX2mX=vc&wSXWbW+*PrNaVul*W~hFRdv{DZNnkKxv=y%+gI|b4y=Xmt9)E zE}^uz++G?if4=mi^)Hq#U;k3+_VurnzPo;9>9_0OD&4>Sq#x2Aq^J}mwkc%(%d0~E zBP({#ClP}$a;rbt4Q!PdD3qlj-y}7u z_wSZ3?5~v1IxBWBq|lWM0dIwc2B}<#Ks%+K>cX~)-68f$rJ}AJBQ8%J5%fHQ{^(Tt zgWKskvtp}th7<8MSZ6H8LbReDNVd4uSAsXjC?m$8d=>&Xl9?tPP-4ZFKLtdFiu^Tbf3IYwH4kE$r38kc|&PiBY zRUnpKMz2>OwkT!zSGX1m7&4cX3%20_S*?5|NQOa3v0P{mk+8UWnpdcPwv0X9eWmPF z$P*0bQvNe}%EgeeUXU$SnzBpfBKiukBuj}`ArV5BWAhAMMcGe&HWT6(-r6RqtOjL& zmR7A6WIzoA>Q1>}YOeJ+IN~Ok<+K6$*?-Vg<}*_P9mNAGW!r ztOTQMFDVz{*5Ga~7Z+~bx5cZ&1nwp*5bDcfd@ay-?`tj)eF9E(3EnS(_cKg)5M9g4 zpif*`?~_(;LG%rXeybD3HAP~?@b&~*pd#4VV|P!xmw)6ozM%EsOb(}SMASmZ&>uHpBj37xac!~QjR{G zWPRr6<4K0}p*;&;4Spe`WrKYxOT!pBU3+qP#KvYz*e<|M2U%c99Nv-i=?0h9rJrh~ z@PFif^q+Ijg~`%6Rzs5Xnrwn(BC>ceca_LE1n!&>{O}=)gdvI-o3V9+eL5Mkcq&6( zSq82Ohu2AiggMNeV+CSDxNvG&@QlZj+IE3t#AcgGERO7$BroCK1V9VcZL|2IuTZ}wVOL2 zrZX9NhzhT;3qx?Lv2|T;I3GL%b2f|DN8|? zCIigH&u3liTPv~!Y7t(~pCg7tiZrAO8#Wr3I8_50!CxUDr30|F$Ep-0&q8rTR^qyu zN$bEd&zQL$hWux!C7%+>IV5M?@wOZN!{&UH&&>5!7(hS48>*b;zWhc|&P4Cm4tK&%MvVl#Y!IlQ9}aq%+~*JY#!<_P1uki;cu zVJ;pUeW%vj6NiEBFtTMR7?&{BN~T(A1<`?GkIoU31rQ7hM#OnDuNJz*{Q0=LS4`&S z1G$*2nn&NlJP=H2O~}BNU!7={|0;FShQX5)ML<{ zGfk;u*}Q97wh;elcAQH{BF3fJIULui7PHlopCnAf<2OOR0JuD%eem|v;mQ1g=38y5N}83mLj$| z=eVjiSA=d^enw5%99wn|;_3kvE90VQ{%OwtNMKz4oVfVMa^GoX!Br&FBy5y*gr#`f2 z$HsMD_esLKdC1}Qe8M+>QNp_EvB`@U^mE1jjl7mboJ;4J5g1#=W|uBETZfIP>HS>s z`Hz02i|>(f%SU!sJfe(u#XI>P&28x;h^w=!i%WFHXIM96M`fGl;P5RfV!U&R(E*(& zrbk_g2*EisPLwZA2hF2C(zt9HM*=R>{Og#;ZE8y&hP-4axf0tcKPS;SM0CW$5ixg} zV{$3&Ru6>j;X%D5mx&T7F_{aKU~}8_eo*}4ibZk+{H(dT8NJu13nX#Og1*!HLXXb$ zzO+t>8GXv_Bs!9u>+%M3Mz-2)_ zMe+#1l#160@eyNUBrULK64%*LT~Q{$`A3-an{lo1x<`=+q{fa9Y{|HJJEfc&_-9Pi z;n8v5wUI^dm!c6q#{npBcmJ^f-is)Q)u76&kq}IvNJ=4 zlQTwF+&CN(_@=kC5!|o)?}zUHjG8ccLJt*BCT0vDH){BVQ5`Zql2)G(AD>JFCNb&G z_;}?Tjjx*NonTSE+#rk52s;hem#~YPzH2gW0N-K)V^b0GscfG}^*zpBkPSx|a z_+%SFIwcw}!YB1s@ZOZrJ>E+3_Ut<#mZmRZn3Dd^NjJeA_WlOZj_++!B=88#9eT5Z z?>2pmlHS|(7JNG%kv>Eu$d%%R%;C>O#37n4@!gRAIHSnlYA3u#!zV^15eiKok%yQu zkB~-C6q}A>Vi&PXBK$=~Xe^7K zdG@*IUs#;8Wa*2!?q&bTdujR0`JNT8cnkjd>T4@se`D2~Z@pbrUGvSZ-L-Wc3H ze-Q)1fB@igLI+Q7xh=^R}ij86of~kdf+y8`V1vK1|}v_xE?*?5^tsO zu+Vx-BLje9r|pW`X*k5+h1Pd8BKpvH6nN!hQtXL|11UZeO}g@>a7w$N=@jUL9HVg> zZOFZyK9m9g$GiPm9HtGmb+HXWevmyx(G7N*!y(Ae5ZH%M{~kkOx5o0_XuG3!w74!| z_#S9;v;m{N5-Yl~C>@9w6@h#x%^L26fB=a!W{RJFDFvu|m;#88;m^_Zo6eb?10$Yd*0r2;NJ#zyCd$7xa7p- z#6j_c;_V6cgg%e->3&!5yLvzLT$jZc?u(54>3)ml)M%BebwX6sr3{nl+5??BU7i#Z zb2?3u&W|@3Lg_~1gU{Y{)5Fhq?dp8N`NFZ`40CZ}bo9wlJl`}%5Ss5+t6Ne<@rSV* z&5!qJwPzeU-JOH)9Neo%uO2^7?cDk56sz^bNRGQQ*=#;Of@RN*i-FShNV8(PZsn%g--M`sDLuGIH*mC+E(}w2hiSBRg}xtxq4@$hq^Lo4md0_7LVaO{4OHBfK-z6GUN<4*O2a*&1 zi!TZPrOV+zo>!>^L9PDlcSOeIiRq41F-EK5Sf)$Y?mAJ@YKp+LTeZ5z)X0|!l|9JH znpHK%kS|y*m1%KivkUIUyb1SW`faxOPX1f)x{GV(52z1`&|c1bs=cDM=!%#C3EKG; zXWN_!i#^jwKn$i0@jOc4u)-L$M+T;mYQ6loz@sFAm+yD9FbM;pP>O?r`rPil0%cD^ zr?ec8(8*anP}YIt^%(JF5)W3#)px*?rJgK2lVJh>FUKKD8`?j_|D9+85jh;eKJ*OgdGD~ZLZr3ny2{Bnt*_Ha_+WW*hG(}V zN(p+qo_maJa1jJuO=6IO)j2UOXHa!Q*DAi%QirTk23&=o5A$kT5a=o65)a~=mS*o=^9jz0njVf4wm#d!5MBdlhmKs zy9S;hsdkkg;W=zB?e*<|PMYo2jI43(wF|!O3BS9y2L_RZ9M2$#AGjObd&EVcqLO5P z4rm+iYuK^fx98LjFX!0K+h(w3SAo|UkqXZ2)~e+NTX80NB~O!jE68K)lis6H)4_C2 zIC^Lw3E^_hs}X}pnXs{uAQg^$uKFffHD?g9Uy9vp@0oN5G1{s{xr?tswI>wqYmnKU zdv-SXw&J^O=T@7Ah5%qjQZg})ueQqfP%_xlyDRW_{uLfjG)Pb0{}9cxp1w4ACHuCX zYH)A$Z9BEcy)B$m;HBw~N*YLv`sx^2vc>5&)hRR6a+J(bKWQEhT5}W$lWNUua5rH8 zZBLdpbE|u+*U+@hx2?L(t3I9M-ga)ADJ$t#VpQ$E4Y$<*HENGiX`t|>p`fbDx2K?r z7Kkp9}ZH6t(u77+9+ z6{^&YpQuuuQqH|INoo?RvkujIY>8K&g*vNUKZFG4lY(7Y1vN=?iIH=>CpfVn`P0MV zXdtT`4&)TCi>gbip2A4s0pW3Bq41*c58++mGoem637zl13Or72#Hepk_g4>AkA$Z9 z0-X0)tNu)VQMFB7t=^^Ht9BM@HVz_hjwBF5plxjSP~2Wi0(X(wDa3OZDyIhyDFny1 zhY`iZ-@!1Hqfsoni| z)bw*m!C-yTEMlDEM<6}iLqhF!$C3UVI4Xf?S_g-XNpsLU014cMPDmUQrF;VmiDxj) z5l!FGaQbE{sYPFBC)eP)tt5eIkLgMt_jNz?2 z&J+#8jRp7M^wIs|CH14?Z1EW}2j`LU#ea&c#COF~@pI8xzO6dGOy%!EN5%MpZ6zCf zl7ejz)NuxGg`p~N8{W=9f8{-0c|S(qg{qCc@kNK^EaY)YJ8VR=Ps_RY35@GB&;aFq zyYe2Wyzfxn$;x|>@*aYB6$%yb*ZYic=)sE5Jmvj&y!|9;2JMYC2E+w$P{3%pp8elM z=v5R`%S1HuZBBIAj?3zsapEgqS|z=Ub76<1OX_C)E=#{ij7F`|YoaxmHMeU!X#(fk zaC0)s3$+BJ(+xu)hQm1G!MOM&!8nb+90gevU3o8AZ6`S2ZM#f|5_CRU2{>y81kURC zP?(Z%FN`nWmIpN)@>N^1E)3^P$no5Y?e=Y++XyxH$JoEb8xB##tT@+}{}{>7qyp$j zNYN5FIIkz}y4Ur{#6^Xw@@;Qoa%H?4?}UwqEiP;W@&Sk<=($~qXrN-gLwP4FE`!kA zK+T)0?j20*rt)p5i?SXmLnTCW$^ntfw^c=MlcCsx)(mJ!c!4Bvou1Y}?d1z(?ARcm zD2Xe%z+$q5t>DshE4lY!xtl z@%E-V=*aU2J&4h(6eLr|IIE@hvT-*6AI1!}X*(MB3#i>F!o{TBg>%<|3>r;b9sb?5 zg=&fwI{J{IqFQ7S^xDx-cF-?oZgX$Ln74grgIwv)L0n1SQqr7lOKNOOSJ9s03M}CS z(8{gy$I?cr+OUkQ|A*4e#3I<^#MVO!=lp`iqOXZZX~HRo#cg?(7|&lA5P;j;MrM!uie8CABK~_FtU3nHDa{~^H~fu^T_TY)MW_qTXqkp zrr{(ooa|1a#uR`JCucD({hjQ-i@MxJ0wW2!+mR$Nf__JUv>J_mB=O8A%JfoWPf{kA zWh}bzqisq;y{tsL_^}C0iJv5vR;C9xP6#Gt1d}EQ<86cW&ZH-Zu`|XRIy`H~dPU4O zp(1FP6EjVGYv?dkLj6RH+k82un&mZ4D|)5bDWsH+jnt1BD?aZd?i%;5%1RRN<#*Pk z>D=Gox7&$9-d~8}-@T6l+E>Yu=+?)U`1X0(f?WkQ^h)$)`>ki^kqy=8-Dzh3hc`t!;$fmZdKwXNHp&Z!5+(_km>K4yVU`&~;!# z3W+_C&TSY@L17Zlq>xa*8l!*^p=A_ z?<_u?eq-8v-_jt4Khe^z2MyaP28ELfX$q10Lb7cC+Qa3w1vNExv0MgupO*z0T^BVT5dJQ@xVV&8Ut@hqH*Q zs9D_u&FCu5^RZ+p$tBCka^fMclXuBgXmHXqH!)qA?##{1Elf|Q7n8vBX6|H0GUJ#@ z%tK5jlf~pPFG5Ac+e{(zG4nOEpJ`%FGa=?ObCvlG^GOw}XQNmP+nMdo_Fxm)KCGR+ zjUC7iVMnkIc04-)XRaQ>F62yhDf}te_+qEt?Xs? zS60pGxk%2$S-Ci_H+LH@+_{q*#*O0c<{VrGHFkIJjH}Bx@;~(c|@^kq`{4&0P|D3PnxAHsqgZy#+6n~mO z$6w$Ls$QxjRX^3Os@qkARU=e)tL{;aS4~hopn6C(O_iydrJAQ&s9K`RRpqM+RG+9m zRei4dLbXZtl`5#(s@ksFsj5=dsCKDpRkErZGbk)uQ@A zbw+hg6;idTuBv`fv4Tnv1+5SvL<(l1lh94LS%?+lh2BD6p}#OdxI-8s3=>8OV}vxp zA&eI$2$O^-m zq&7*V(P|FzoJCp^aX~sc)z$2RFntwt^&|8}KpjhAoC>SW$e5%=~*`(Q` z*{=CU)1cX>`APG;My1tg`$B2K1nmPj$NH=`NBg4oE$!#p?b@%k_1eAKtJ>eRL}$=N zK?TCix>(%+-5}ia6xpm8RujpQbB89hf z@9Ea)*6RFFu28P~M7L45Nw-B;1qBSpb(~%eH4O%+Z|IFH*M{jw;rg|4`boH!?Fn4Z zwg}1~{Q3?0PxTw2G$IJ~5mmV8ZLj`-{utCr{HSl$|ExDg#7FdwNQoF7krpulSIsSm zcp4Ycy%h0E#Oo2OBep_G#R({^P(g)--eANvc;j$YUOq0|TWMHr7)0)#KW$#tjK`k* zA9EGo#|2{DSasjKCk!8xHl>}ZXv-nw(J)t$M88g%d&*;h(`JZj5*<;CIqi-lvi+fK zXZqaM{)}pWCbd7V_UEbgC$If^v;8S;f4*#gcC|l8+Mjdn5ANkvo{sqc^8No-BI8FU zDE!;MaCVVq%3}Xl9$E~9pmEcW#nSKP&EPOlGi5YzIJ5Yd?|;F5r6mhJM^0M`9x#0g z)6GfLiwyG!Hzb8XISPFkWiulsCniEoA|kp#S5g;W2hVjdo4Rojdn3eMJ!-2g&n|BKRY#Gt;Z>>+O+C=aK;u}(?!!>08IGehwx! zW(Y;M`w95kHO8O)uXw&Od3KweMG=@je6CC%0$&p-PWzgaByjG1r5l?V&q8M7ImVL> z^`IWC4c0OKkXsJy56`3blhlv~3f#n+YNzUHvq(YGw&EFlMdYS0f9aXBf|O z4Agq>Uv^;G!9W$oUPZ>b_TxWxe>!hu)0nZY0|>jgP&{&k$XckF{3-c#WLd~7_zp-Z z?gLmUNUPstkYLYKjAs!OI7B>qO@V`?S|`WAA{*TY4hvf@2v!?z?9V-38=%m$LDn7|@t1_81f`NtxmvKEtdP-Qn+T}wct^F;#K z5bK#EyUE6K=C@i>rh^UMuqhCB5!(Xa7w_{PhU&9A0=P<|j$CuYZAg^981A)sZh%Wqke%j5F{&1Fq!r49t!p0%f&2zEzc0 zeyIxSRy+^2VN}Pz2XKUu1iB@UPJs3UP)Ziw+k z!-}=ciV|kS0kUk*hJ$3;-VKMyioK@NP-m-e4+_Y=$G3O(BF4SfE1cVF!hen2WZNiN zQO9Q=CZ1}7rh($CAx`kBQiarwcMGY`Ww^jnquwJdmX-+}e;+HRotQnX1>@7Ij>GKc zb+uP<-JuR(hO$qfOc)6SQT|9@>^Ydx^71 ztbBo4y^Ho32v)SXGMTJC(vBqXB7+s|i;S{@eUX9b^CAP1s`1{HT4)F?fuUDw{$gf% zDj>!!X7r1(p>u@X`yx|@YZ6cfAsB%zt28UmE(O(cU0^AbUXxX0mm1ab#y}2}{z*9V zh-M%1vzW%WpVFa-qq(W33Bg(;Y+iYJWr!*mJgG&;>NHUIYO*ra;fdWc>Lu8m2FH#F zXOX6&CYAO%A@m}FJ+#A0#^-E34%Rf`%%l6V`w9rSzLxf2?$)*Y(5vu%gIg}*D{5Ds z#{C?=1FHR~9{@UAhhv+8T5?tx+11d< zdDT9-dXd8~`s%7vfHF;8BJ)i@83pJ!W_SLyDs*!K2h{E>%Zv01;eq=jGJi3w_F34%$5Tp3i>mN9u7qgkhIw!t1{8f z{M~y{E8Kfgx6tFF0RlPvS{gOppR(KsQRFDjbqp={%NSXbQ8uS8yAPpgkhjD3TayDm z=F}mNj|r@0P965FW$aS{;=T+3_m$X##z<@6eJ1me=Y1wn#AF`!6fsuc<=H;QeaLrZ z_FBe$IN5iI7WN_EVOrLQ?Oo3K7@0e_miZ5ujf@j?KD&nkUp>2*0^gn-_<%p z(U&mxZ)FwSLVHp3+&={Xb=4YJLsPJZ2^7;56f+bHt(3shK-{P8CDh>qnxv~|OWKnJ zf0`utA2#w$EwVn@*K+C*!kj*J*nPUAs{4LICHGw}zJeNky%y6PD>+1tl`O)Zpmv}4 z9m4wpEOUyOnH@j(Io~1I;hEuocL+&E`iq%RZ`w<~7w#nsZ|EffkbIg6X9j&zG2@8W zB4(v#T`NA9+giQ{N^#GJcuk9Z)qQE%#gi9g!PmMY6iOse`B@&O(E2o6dcy&_qAieAiT$ za9Ip%b^0##yp~`HvB@yu+XV{84Yn@&A{8LJ=xwRGvZf+Kp$6tqjgLZZ2L$y31O=oJ z+lx$v8b=qs@6_lYdY+=)qx)#jA3{do4~Ro7(iEz!@J)8QzjYsp`_^|Xv&sFV?|5eO zJQnAO-Dg}sy1tD&;yZzZfoFXuGf#(|&$-UJjv!(r_k7P&h}cj>5TEZH#A^)k5-V#Yn=D91 z`MAV$7%9ow) zL&^Tlrw*0SX$>@_CUoigDN~|f$hf~*rO#&EyDMuM%2Zs|>`V?t=Y@pA)ESIdD!gR| z@8zmatMOmm2K@bu~DRL#)1U zlDe{ToKRB+xkEOjn$bPEENaFrslJ*SWo7J)kh>-epYE=jwKdCj&G^;*O+t5fvyv7k z!p`7n=pTd{Z|50})}$_M$b^9DX`v9ChM>N05*nfDxG@~syLBGtm>HpTzt*yTW9qz- zc}6j=t}3_IS=h^;;;w@MuD?*DW;AwvjiJ2UTH}vn8j{Nnu0_&iCa_gU^E z$`DY-Q%Co=u0zGOYrmKI9Y@NBE<3(_tox+z2*#4*?qf6ECwwQ8Pkrk?Q5L=Pq|uOh z1P&)NzX!x2+uQosLpE&$`s|&@^HXHfv zr$TqY-+dI2?ndx~yCGPr(lsR8=0v)WDnpEw8XL3FU-%kn<5L~=lrn4UXbk?4m&G7n z*Qb=RJz-2*#~4kDGiD=LM%4M*J(ks#*Qn|?_?Zwpx(;#~A$N1`DJRnNOr%X4S?a3` zseDImsYYL2s!t9X-F4MY5hcAGIO9<+S?)S#Y=iw4aH0`DcE8;)Pr9$BXWe}@V8%z* z%)6F;IjwDUUH_VS=l=w<3n06|w~yR)9c0(M^C%oT`MAYb2b_HW8ZX;_R|vUi1UuAO zTE43h*Ce3zjZH8(%MpqDC?*I>a{BM0iCJ6UB2#~7i!8()jXRnM15&RzXc80Q5O>sf z6pkzf(FsR|qlw{vC!A?$VcAho5uTc{rG7GVru*n}SOnUuQG;>W(XlT2Kjvtu@8~j$ ziq|Nghz=jc(@BfR*^vt)%|*1|ARDkD(Vl)IXWM9We}@t=3MgiWClck1sKO8~j`RYA9Rx@g@8^egnT*;TBi% zyP?{94}X9^%pc(!`IG#wd_UCy)g7w4z%71AwMg}>>IKz{s%5H|RbJI=sy9{dsNPep zRh6nf1h2SBbsF5?^ANT8N%ga;O~ngF!6Nj!&g~rpUhhcZZt!~V5$*-I_da1F_`UZ- zDC0r!d>;{}36BYx5YU(*JR!^$<_doY|92rcz)uU$3eO9R!3Ta3M-5+sdd*jae+nyw zRl?hX54_-y+Bw0S!3nMszEOC=2ZX~yqtGn;Aew> z@v>-!0@N;2Pbm>9Qip>_dyh0#%7$9i=fRzQS$akKCpOtvOGQ!%IJ93$TcjGP9%@+| zr4vxndRA(cew7#vuaPtcjak!8(-TTu`$L`UV9i~c5t@6T=5;D~wU25Z*UZs8sad3X zLGz+!ndW6pfo2u>wtjGJKi3@A9MhcBT+m$6Tm#2etBue`Y0cUM@NEZb@6wKi(%FgH zDcT3MZ-8^V0jg=g)Na+*X}{MV(>80*X(M%3@NQ#ux9JA!?gH<2x^A_uRJR#QaQ8qd z?kOFsm!MjAgg#Y&ul`B>i~2nM`%uxlSAP_I)`$paL}tWu5${EO84-+#GxRp}1s8R) z;Q_;AhM9(ihNlfL7~F>ChF1;mLdo!Y!$*cs4V8v1hOZ3`h69EZh9<*l!#TsRhBkv} z>A$cN6&X=73Xpiz^mQX=@jCl1o1|`BNN!}`ogg7ngYBi6WG1$% zHe<^QLW0lVSX_p1#XMv(O*mHlcnHf(>SGBGKhAKT(>Hp4)GMaMIS-8f*ted zo-PFefZs_aX0XE_4o|oIhf{%%dBh)w038_OFic@X=1w|t~Ep01Kw-tYb2}q5n zv8^a&$|79rdA2QG4}noJ&=_`(54BhWEp0Ov06cKIZN>=C={8(FwR4wIo&pi9#RJg+puTPUvU-M@fyI#wkk1R}|jN^P?k z|M%C!{0Ng3QNYjH4hFh%)V?a7edJ(c1VwPtnDe7LCV_Ka?DsomQfc?~3xB3sb-}0xs^Zms36ytjfe38kQ9KSG&z-oB~ z4f|zG^7r^l!Nb0VSZA>Ay>PGh)fYJdUE~bYt|XkfRYnzrXkTS*U$R~-6N>ll>Ooh= zJevndGf_@iU#>sg`#%u_3hn_>?9>S z!>*n1K^miqS8aR-(y;zEVAjU9@^(F<(6_S+?#lZ|9<1p;Sd?JQNM>&O7CP_&cNY{ZyQAA zeA_*}NMO6k6HnG|X|Z{z4?tN^w>OYMR9fZl1%q`4<$f!IWkA<~2|ZgIWC5{LV|Dhp z-u`d3bv!wQxuN}!x(;z$2LOgY_67(-I{J_SH$ZSVLaaq=X9>%w7!%Wp=>|!Qc%~0z zEK-?!nF-7aT)6QT^8rM`zF@XO!s0vT7-TH2F&v~Sda*+>ryk4R$4+J+W}WQgm`yKa z-RwJ%p!k6Oko|<+#D0x=^d3l3oMA7pzp(_f<^;~p-NB9JGPx{n9``J_n9JjqbNSo~ z&WpM7YuxMHDsCP33Ad5k%R$WfP{<<~@#nKb-w6|G=#D3ckjL8R4$(Ri-XVyNJer%X%p->X>5$3w zGbXn=FxT*@ZtOI%)%)+~-xT-@1+I55D=<&-V4m{FF&rDWmy74$SNDA2nkb{ z`{5kxn4MIF_uxN10ppEYjkT&+3Qi4hI5Epwk^HrJF%KlZb6QkE!N; z9aGKw=u|V04a_2X%=@ll%8An{Idm{;4JL#U|JjQ(-x^7P7 zp2Q??I|L-#M(=R%Xxfe)g&m>i0&^Kz4LMrl75ltGvi5l8e5PP)Dz@&Zw5X8mQg-f+ z*Un{{PGCplWWYss&t<%KBxMkLV$x(B@%VE}S|t_Ig3L@NNT4!W#ydX6W-!gsJ?gBa z2~d5o8phjn&K=)AGaZK|`&|BcUfCnx{SeLx zg@uI;;-ZZY(am?`)vEj_NId)l6JW0jOr#s}w4=AZ!J{lndr;7X1^`ezdEz557O|b0+)0h#T{Q* zQG|i`Hz?Dr#q#6=%Ep;LldQriFWsty$MsLpL^^h;RwX#w&9j7#Ol}BWpIa?YdK8sv zH_k+fpv?WmF-yQ%D4cbnnGG%6Fqb)#Nxb*b`sXN0S&>2H(dkhXVrbxTN({g~_bYU5F5gjRQXrF8sc?8r00Z_x|tmfB*mI^ZR^W zlUQAK*K^Ok_uO;OJ@*_+nn^BKCHEzcCEKM@X(&z}l)y+})?6dArf-mDA}wTJd{zLq zl(5ow6b0`pI#((>-%+?0lku9aBZUqjgPweVV@kB*wi;&RL`$lUHzvPHi4g7T09r;U zDw|K?>X+q~79DFG0I(L2iS1fOf{+O}Ko(I*je#uvEO{Z7@;VxxVRpTMO z@M2#H4KGloZ&Q^ksfM?x&bO(OezdKZJk8-?V_&5#F}mguyjkV9FuW}xBc?y03p64y zGp#=kBEtcC_h?f}C>^Kk$3}wn-xW$Koti~`p!`r4tT~i_Qf^TGRhh5+o3a27c0X5^ z!ROaEO0RN17=)wB6SA1?9271kC|hgZ(>ID$0y`_Fn z{l5D5P`CVpdOcJw|E%7mE>gSIJJc2GUFvVt9$BPTuRf@5RG(0PtG+BNVP03?RR5s9 zqoy<}jaFmOglPt9qBLgBC{3(pJd`psG|y{Z(Ja$sLfH0+raXpNAaVrkWmE*J%AzE9keF*}!We}&m31Qm15TyMEBD9bC zR4Iw*%qa`czJT~_hjyp-Ywb7MYHh972k}{x_PF*m?neDsd=>`pHiLE1IvO{nX6feX zo}v0Vr*~Jp{hw`0`y?ih(*LoP3~u$Gy%pb5nNFV z2_t{^_q_iP#RroA51;oI+HWAdsr-@f<~i))=R?V>#0*@mra6GjoL0*B$ynL9VONdlweE(8Ao-DOHspN+P1o=#F ziA*wVS3T=-8T4Luvc`@lYwXTG;ZFa@PYbb9K@Ud5?Zw^!$4%7_TnkL)-)^ltFoCk) zVyV(cp(RuB7}ehVHo1c8-CJkBvi?yJSTimwEw97n8o;p1j7uF4lc}60gR$kRhi*}1 z+5n1~+q1k5R}YnK)v4Ux);ead@KJ4zWr?DHl7rTYi}P@)cB(6dP@EK8FH@py>FLr( zsLIDEo8;-Md;KF+!vx$6mP~@#7lH%dIH(^%)hQHvT|tEnp)G|XRHWIUBP3%0a3cl2 zL&YUTUNETZ2gE3x&9fBMjMFAIk(g+%=GwvvbH_F1Le z0qCGdC|ov@SDkwuLHbz=kDPgr-O_#S$FDPDBFp6~w2b9x`6kjMx z6+0Ar73UN;6}KTYQYv-I5Lq=n9!lvGm8r_<*hal5E2F=MZPc%oe^9OmwIsB%P+6ob zR(_$}io=Oo(91*0|LLsZE=|>2Pf>Y%Z-c?>2U;r2^uk&Gb0@AywQ>D*%AH&@PSoY#Cs~Rlp(S2-^4erMk!38><)H*ea?Uzb zLq8IO!cTPCR$Z};8_ef3$$UFA&XO>y^F(LqiO%L|yUw{6E@{ujp;ZM>T`_aXE7S!i zJGpTysDf*qsjSkSd{I#lb_G>jqzdA$u!G&n1q-jRL)^*6sNBv~S4vl1X%0szC)vR$ zrC`++E0O%EfLyX8dy5I-M>3&wMGVTPw~fRTtBfK##JoanqoV0g|Na@f$+@|ZEBd^c zFZp7NtMp63y>;969c5qbEU)-_SLHXmJymeES923Imz@_L0Q{KS|NFBotC8?tmZ0{!6ev^PG z4XIGg4`4J@-8&?So`nzQII8~r1l;IUpIDM0YI3m8*Et_&&4}RdVt@}|$X+FMFh)6A zqeN?<&}&l-HgjW^$ChyM%i~(8R)u7+>zs4tT%aYG3tOHTS^h*HbbSE5!A3m@(0>fW zihD5ph8;v;FflRE)ff%j#qwdm8=NKcYPd_LPzfK4$U%LPL;4~WeUWU4TMbkK*to$= zET>}Pd@RnuSSAh-GD-B^82Wdkg(5x>!0oj!R03ag83F_#u2Jk2WgX^obvu zSI~@si>-;_;#v({QmbCjIX{ux!6g9zx@V+?eTekdn{l)Uz(Ea{s$G|Wd;GT1gGmpo z<<3UOL&zV?vq1T;9fWimdkD3x6Q#Bo@pik|102JkN-a>&P}8h zI|Z87B+)&I^kYdhokV9Q(M5@5IDJi0lEndm zxq@Os&0GlHW4KU!jCO?%Mk8_L7&q7*!o+&!MmmGZCDLiR7Y~L9VF5wn2jv zgb7H7+xi(1sa#}hj3d&^4Qd_jh_pe$*ObXYW|2Z@#= zQV{_KvgnIc2{-g2-7=;%UeF^^EE6Zu2yY#OX*IMJECDxIGeincg<=_*X>qNXiqe zeaM~&?-6M8NM<-`^hjm|!Ndp*IJ0~B@>s`kFMi@2!!3z%R%#NHz#DCA6KpvNn0g;4 z6e;MnaYZUTtev?DTRu+6S@(y8^&clRvqG%v4+)?IBXZN6EJ8@uOyuA{v;84~@Ii7R zB-9GfF)#ze39eJ>O|Vj59u;T%T>>@vg9J-MoHcuVDxc6gKHa>0d~u~_O#bJ(x}4ha z;&uK#%qZ6+k3~6V#>2B|_@bK~*iXZZKG{`IpJACs&ze1-o<4iQtf@0*Jr9ffQ|SO} zct6FASyN`u%$PiX#xqF$KxBX={7(vbAo77%dj9O$v}N+#XQ$1bJu?8$<20QioAf7u z%$UBIUOaojTzcxX$(CtzN$Q!CXD!C(^E0MQn|JT~8F&YHu0M3z%#8U+A~UEmG_0Zg zFY)$J%ZF~IsZSibW`DgKltb9S6BX+R~bp=ciAeHGSGMaFPH& z2s0-yPG2x9eSu~2f@kMV%a}c7{;b*0Pn|ZUxSDsD?-aJ+;UBpswnJ2jCm8 zrjhkERF|qBN}xt0;P_ulv1{1_l`OlNWjC^GSoR=Go*P)!PWXI=u=`|-@O$!`#j>R= z`@PKlBL>?5zNx<7!Cb$gQ4~t)uM*uDExZ5*{?r4hfg=#~NrDPn5XD~-7UOT`%&Ais zrlp~^^JdPR$=18s*4=Cadmo+}0!izC1y3=7=fFL9N(nq{MIKwbmR-$v+xDKp!jfk2 zU>-m&0v(XXURzTy=BB@w|CQ}jFaM$Kbg%8(Uj8HUc-nTZmmg?5PZB^$W+^c*^C2{4 zVADZXA4xv$fsKviQ=a5+Jw&pBWU6R(NPf*394TYzJb1>bsr+4H!4JKa*@*>py|@%_ zEj;^Zdq%UR@T?`HnFVpnk86hL*$Hz>wuI(l^9pVLnC3e1hLsl?3Cqq^aAa3aJVzXc zxTXB+mT7RO;`M~szds~NAbU9o5`T~zMdZUgu4VK(Bi4((wpAYI;K1)X5q?L`^ji5W zr?FtsHC!yQR%0WA?Z|p{60c`GE_D)9MgR6ngE~pPVnx$db~%lFR>3P>b>a`}w{^j? z1;qK?uyXNsH#>^Y%C~pt!Ak*taQn4jxE8ajSb@IcRulW&7 zC1`U6v&;6i$yRA9&Zms|RD`3#vCE4i_NO;c1)uqG8v;~vFvSnY@io8GHj?5iY_TY2 zJ?Z@#j7Fb48h_mT7=j{uhzvq98Vktp?|=g=tSDq z7;U{D@L#{}^gMgFliHawh%VUa`rA$^+z!77=jjnU5eUY@3Z6fWEH_tr%`W9o7-zVY z=28t^K{1!p$RscoUP5= zd&o*FvSJHwuzk9dUfAKZ(wcJNWhhc8F>n-gTzSz&ZsUgL+KVZs&QEu`KHZ5FeaY-+ zgvVr^5zLFkf5Xs6F0H8Nnx~y5YCk-N7Huqtw6y%HrShu0k1ElZAC2K{ABem zX*3(*E(7B~EXQ5OOr%46ATJM}w%_2ViL@NG+fhb;y30P;H(neV2rw!QlN@ChY8O4E z)B4s~|5eXBCo@kNPked&+uizap8Q5Q_^0FZ4=rjsa%9HQt@VGaw;%i6aU#FU)@XG( zGt!?+2HnhA6CxNO)QCkKBrfj#UuQi#axu^#+!!_GC zZH0FqTDt6e(XLH=)%T)s$T!)3K!}mU`@<@IlLe#iaY5}%5%hrF1lV~qz^*k(`nIiN zW7{^d0fpHkeMSMY$kgTAneFz!@&m94OFD#wdO?=AZxSTjA+xNkL>6V+HY>W)KA;3_ z#U@FaYqdpzDsqB&rf|F2Er{xzJW;iLd-053L@?Xkf@3>`17;XVih}Q?70Q~;b`?Jx zsBmm5&XIva-?wgcE_efNxCXt%X4fpTcL3XZUCGBmk3Uva8t@} zay&-i9o)*oA5Mb4M$9IbI#eMpW<%W-&Rz7{8^Qv(DXL_)al4qUu1eCcSZpe6+x-k~ z<(E_%BaoVAhgOavFHz_V$w+H<<5L<=&pBlu!pB=#MJ{9|_C{FG1VchOD)=d&|BF(s zYs<)Z2dC1)RP%mlmk{$?m;h?VLqB!UN{8^=QfEYj@i|uu0Lx7ygFebPO^T(L?-hpO9-PuEgk~0%Sy^*t307F&LeWr? znVV|OfhT$pRcM5w|<*h3})hHm(7yTY2H;TKuzJ%JK&Vn>hk@zW5F z{*ciCNbM?1gNOd!YuC{iJ@y;I1a_3W%s7ZOy31-NLg8W|@&l=szkB+E7LwU(RPzhP z59E`vGHxP$!;e8Bi&*4hF|^90a$4uU-5z;sp8=j8xX-DDyhX z7&W7zExw{MOt;7g2iNZPsIg;0nZ@oh$7V7b?O3z>iVq2ZLr4iJ?IJ%{JkOO8Ia!&t zb4U&Sr@exje-_xEF8;uUiE4fZvKqjC7ZLSOsJZfmoMg=L7|?=wR`+H(yc@L%#cmnslYYM1cHHmU;kTXfyUP5wWVv2TWp8?>BWqK`@$yr--PJ3#CFgxD($*9XkK{R6nU^_3%z-KnS2TfWJL^XhsLIw zgZhTI-J7k=C6gq)!f&hauhqfvD6Yr*88xR^flKm!MpL@o4@3!nqCc$@7TWgv8Rfcq zf3}L=yN3?hPaoP-q^pzC>!ha&wK>`9Y%TqEosdGWs~5(i{|6QhbZ=!q4)9dfZmZQw zLlCN_f4)ZuqgU4py0(F|z21HT&FBm6BEb@jXr&f364t$w_lx13C4M=?PeKShE&GM{ zX{p+Z>Nz!IBz5kBHrD`DQ!7`tuXYC0BHc&lxj{8PKliUVP&{qE&lnk{{O z@CEd$OMr9OZIEuu=nFw-U`8GEqj%(yCLARg0}ed|hem?K2-m@C8x`pit8I!%RxN7F zzw+nDN0uL|&Zi@Dj8|Qs`)x^)t_pv#q1mR6%rl7SqVfuVzB&?HdKn|bBV{yoVS8zc zL@US9+pC3i)WjK4G8ch@xkw1=1~Czc9Y|u60hTh-rizsObak~b!ZKS1D++<@RFO<% z_8=gw7DrV3Ec5HFGFuTJ4ixR+)urWrbDd=P`R9InciRr(8nfMM%D?hjvh zf(%_kM_pg}nOfIQKeLZsR4;6!k5+H_+@FIM5OUv*(Opw3>M*=(_DLqvU0V@^3}t;8 zHnWOy-k%=_T-3eA>)4__jsY zAV+_Jd-u4^HDt&{*Pv$!%3ekROl|3~nzf`lc97eZx`J}Jyl$wiJ6t&1b3wEI-Zyd} zE3*%!Fttc;8D3-i$`4>|JN;M;%Kc23Oq9HCAyrcGQ?2}TD_)li#pZHY@m!oOaN8Ld z2Unh4EjTxBA9y!p*q$i)MDYNKL+0jvoyX!C7lVr2@`U zL2Z8^be)-q#op^Kvwh|Vp30b70FKXo$nBwNgzAT63KPUCTDwmgATI)CgySsZr{NlX z`LM|R&-|#=g*D#bD)BQRxxf`8m_al^+Dm3)SPm3J+`DnVo2^cYR|1=Yp41M}1sEwSQ!CF?!deuS zaZfR2Yo8)DB2PH_nIH>bWBiaPjG`!aSx!Wm_!9bs^o^*HjVPrv;h^E?{k9fAIXWUe zQbLx*>FiK4jO8&*rruBJYF}-5ilMC*CvN*JAN$zhTv*Bov>^)28d~f+kEgpVwN;Hg ztr|NRc*0V!xC#_0spu|WIW;oweB&gcOAJXl296K@T`T@e3 zRM|xgYC#7iUc_i7Xxh@^$4qfz@YRfvLTW~18h^Oo-eGlW*M@B$ZVX@hBt5%cNGy61 zj<$!xiXgRN1hbXdSvitow&l*yGDAzqYdJRz+Y(#32}1!WC-`QEA1agPxWRj(%Ko0W ze7K)XWT#dPAwf>+$OtiP?a=MRQw9K=c7wIf7~|AhnEgdV+2J5*jJdz`auYBJ(H!aa z)S{u1#vD7`xGgrut~I*x#yctK;AsQU>I2Z)Kee`u5Vc5{a@N{1T2#lzq#P#{uV#d( zL!dHygtcb0cniTdvqxJujJRJHseHpjW_IX1WgA8TTPvsyH0t+o6VrB#U?%Pu#nkSg znSIDmG>m?;K9iYf#r3U6>Uo8T`Ga(|wqMm_Y4~+LAL)c;iw4A)w7ZAiZrh$irC{}aS_Ym#7Y2;;XplhD^4Xl zWJl7W3j4F7HU~zKQ=aB$TDc-I(RqiB{q}I5QZR7I*ifo0^NB_23MoeB=(8Kh z<`eWgKv$y(MKtzPL~MiQoh3=n=vckG0x}Q{oqbSPg25N4gi9uM*oUJ6GdObbm)zKN zO|tkB8-_d}2^E&~203RIa{l?C5MQK|Eh{9a>v>&*_%i)LL!GprmKs1)2Y}dB5Mozh zACJZQg9Z|OgG){?c4Ll#c@D+>FCF-1mBrM+)CQPn`gnuTh&0^TH~W*NBH3fSqIMgr zkEn1|q^Hx5G}s^gF*6M`5b6zi{jIi2`KPuLRML%E3j+fhLnbPb;liI3~NKb;B1+^MJ;YY%5BdPjp0 z(-sQT$Xi$?`G~3w6}zO*+`E9IL%T#hAXf91R4W4Zkr4+;!GMFT(LR7IWFF^Md zAP7``D~svNcw{uAV+|;xZ*x(>?Aw9iNmm}(pj6((D?EMtIxLCMrGkMVCXUj88C zL-xHkpNX5uRN*kuL*=hHNYq=1m<-1zc8za5kt-u=#ld_JHk3ClGY%d;M9#`=~rn$e<`JHyWI~SR+gZ-DnVKez%1`_&@?&o+ROV9yb0api``L)?T~XH%ZjdH$=Od z&%jn}7o;VX%-6ugGpLrV&=puUS#9|?Ki_`YHDq(ew3hr|$0&6TMg^oM!Kg3A} zeiqpCvjmYb4m}@_Z1nyn+J%|&ff9L4s%`q9zU2zxb`xZ@5Ks_%A&*`aENdRi|pkBk4ax*Jjz@2FVc`X zGmZXPBRU1LNUpGToTJFgajoMWMHa(>R8Bx+VGOC(E#u5+mUO95imG5z3X=%YC>m$Y zg`utS(zCVW>)hWsgj^|FNUFneA-B8D4M3G`$!)u*RZ8b~X2c^|lozS-4V}>OIhJjW z?r)~0h@w~2_a{!)Hf1NRQnarfr#I&j<{xZ}JAq6h0YJM6aRM%7p(76b2x1-ypfTeb zT45jUv!sfn==lwxjbLUg(sJ;R%s8*3qBzsBE7R-P1uk=0V_*y@17m<*eMI=-zc~=1 z`v!uUjD&o@AHyRs!>;~l2rNC^KLohV0DH3xwmebL^-IVQ5Mt%-)=BTOls8?xogEON zVZqR2=t9Cm?>}r$Ov4=Z_tkKNjVwPazekBT&|w+n@)+09nj^w7df}0K3x>?Ol@Qhq z6x*?tH3Gt1OjHzX$VvoBcM2Gm1aGe&&L~Ge2m0_S(uacMn_OwISM2(S4s6|-@en$2 z;Ey`+*N6YH>(Fmn;$tF#IfX2Q02AQeV>sD? zj*8qI(3A3_Wd|GJR&?r7UDEHTLq?K8sStc`m?cA+qO*7dOS!G z5v-0^yaVbiL#790R>I^CW6f^R22fNxc+H9x7$tH7V9Oj>{3Os#LhR)g#sgBchu;MW z^pQRZG!_)H$Y4LgX^NL53H zbAdW8_1AHxzYgT0*>CLO_{Hi8cyWq!xsR~=!F*Pv$bFr-N;=TTXsLN{I0T9P9MvxQ zqmN1Yl91^9ZIBJ&Cj5Qblq}mK8>~+t$bgJ%%TE7+9k6FuU*?x|4ERsPLDoexdr5~u z9EfH@lq%1^3ctL#kFj}OKal5a4?G%e#ke4Bm#8ehZz49D#ca; z*QLN)N9-V5h@oT)p~p4^TL`nYXcJC`&}OT=3dsi|R(ZJyEOyuX(C{509T(UkgrO>s z{9vYTg8vncgKc-S?Dk~*Fl4wK&QdoX< z%<{qUz9IjwK9zJ8d!3@>!m(VE7y`^`nqkPSE+;oV?@jv2tZ%d;mpA@EW+iL{z zU0Fb-;xn)^y0;e_B>K^lm~!MD=Vg$5U{^v?Mp_aCMUc>yMo3$OJTIQYto=-;+{z=Sf#{0#a3(MNE`RBDMpi&7wFA zY#vh!9xosW-Vgw%t^kCKtqtH)~S5CsR zHrtOQ3}HYZAO*4loJE+eK3bfKg9X405=Ce{cvH}3$PI9qA@e8%44t`u=OYX!w7^Tx zJti%|^C~{WIIh9?4;k;6_e9QD|e?T5>JtU=v%<`U?NTHkDR; zOOUe$TMl-8>29I}=c|JL9^0GE_U_)uHk8nxo?1(!kHS=W5KiGH5-EgaaBA^XSspzF zk~M_vYQyDSE&aFCblE8g!6stg!pV}2R6|x8EuP9GLOR4@iozddgmfJxW4x3}spQO1 zdL$r!Orvl6As+bW0!bo5EXp#?D2$s3NuFF7(KhsPWwyVb;=Z!wo#HBN`KP$AZ5xrq z_P0}3*I!RDWv;wa%vY}bQ%r?x<0OjRq{d)#}nnVVqhS_>gwoCOpp?wKAK32k^CswBm)L6_5v>kI#nP> z1rpDgksf9&$)$_jbORPTeBf>j#po(`onf?Aeaa%3+M$iz>%dOf+KiSk_78 z3~Xsr6YG_u*08;s*xrxWKbH{2-8(qn;)pncsLygln-^c#psveSv(WYZgawHqW&Vu} z0`#)G*U54vY!1sx$lQ?iQSBc#)}Rdh-^5llvZNA@M00FfZdzViMKhFx;1V>c6P9t0 zqb((gDF$-YBNzU94Y?KTdlk;R8%uK2Fe=hyB}31dwB+7{$uyW?o97I z2tmef*PguRj1<+LTzv+njzb{JfOd%r zkGJknl{IIKot3B0Fn31WI3u-G-Z;bDtsKw{jY`+vGrlzYv5Pd+keS{R`lYk0WeClP zSP=-sY&qQv$o~PS|1S_4XnS*S3he?wgX!C6SEF3l=`*&jGcFmNx4O>AfCtn)X(pN^ zknOXODVj<1=ZO|)CQz7Zpy7%k1zz8Zv5VBKJJTyp&Meu8Uzaz!bWHQ<_+}vmc)s7c z-sm*ic5Zd1%^UsCg`jkcYlZ0k?ja;7&g@g_o0Oy!tn+n8ooLUX~G=Jg59mGRBU zj!G)W66{qbHK$c3HmB`MXx5|4)AA;*F~iMo9r1T;^Fr*x$hVKPntvt6BOP^2YT|GRLMG@FHZFBu>Y9qJKBc=1OnZQD}US5MLX zdQydapGGjDg`P9eSKoaeGlk5TUf4k?J=2@4iZ;gNf(FT2=Le!~4bdcMVCR8o@kVDu zw0MGYon-$~|AFb#ik!rk_{xNzZX$rn=2k+tY;Dh+Q zm3RM>+g%a0(@&n7@Ok-Z63OgW`pvZxEsPVT4T9`(ckHo@Na_U8$PcQsn^R_@A zU&LA7A*}U>h(3N3_7>GG4slu&(DZTJ|jxC6G|On9!`VpLGr(vHM#L^@!}0U(?g&52C|Q@Mryx>zM`}`U5Ra zy?%9FN_3!xg2U!O+0u6j4F_6`=V1KJIWQ2Hnv~Qa_KpKkr_AtWaM%p=5Y{HzR^QTJ z6B_|v3e_z{lx#?GRJG@%MBo$aF+PA>@q9b33sBU)EJn;)KfCQ7T!hHpYkwRZcV@K7 za5by!DSeR5YU_jSQbI#Un-K#e&^WjPsck8k(*{sV_qSMlZLms;HUmrd050iIn~OfO z&1-WlXu}KX9LZnB72d4yC8IPRan46T(5abtsYh(!p*yxD#spr#|0}t&{@P@pzF>-VIYo7%ft^2 zQ_ytGIzN_wTti6+Tqm)H5xt&p@)$rKBZ^Vam_MIJC4i#_SduaK8l@$v$B zdC{X^l>Cy1zivC;3zd-*y|9dW8orQMr}CL{Q1Z(jy7;<1Y|-lE*FDB2`itwr^@JI{ zDTA0pc{6&aA9_>%U(~(10w?15zt_5&pJc1+<=-FxkTtbb5zX%gn^nc^!L5AoU{yKd zt=c`}P4Ho?Hb28d6gWnezu%re7T26^^1nt#%dgvg4NWzThuNkRO^0g^uzP(?`)dv# zu3?MV#+p3`4<0UWA90b~1|r;N|6dkGo$WI{8gU{Jf8TH(62Ua#z4)F${C%s0a=h|h zJVnXn-?vF9$E)te!)#0h!Sfm0_Z{T-O5mFFagRRpP5d!_&XY1ln(hk`p7a^S!7izz zrb-;=y4oSBeF`y_@nBnrQxH*QS$h$;6vDVY;AS4OT)br2b0wLUY(+c*-mR~*XKqzh4Sm~q0qytZhch>JCXQc(M%ktCTU@z}0*fEG#wK$-f} zBfg_geJ74Cs=7;c;(y#gwsw#ZoOu;i<#%`R38c#LB=a7ok*j8!T-7F9lZmT^d(C|? z=jj2gD$5@)6`p{tET|k>7F?3|9$uI>qw_lG0hfi5ZAb9mr{r}IHX&Z3vE-%w9pV{y z21olYUP3~GGGb;FW<^OtI*{idLPJQd#{OKmq#@g14S{u3o=Qr>WU7|qT-Q5N{*|{f zYd|-zcVNs(9W2=3{F@#5w>t8BJ95PD?;+sScR;h=cDny0UMj)ac?O-;hS_`X4+nIc3BN;;xrAG*R-rWK0(%$bZKl`q{ zyF-ljP!cYchu`W5|Dhwir$aKgoeablc`Ca)QhRQ92)ILF`Q>-$vD+PTAk55CsjVBC zjUI(yfB{?AVc4+!&UM-2!Fju@(c?NqzD0wp$>S2`D7+lJI`L?oH4To- zZgxlmGt62$z7R;SSKS{^p=poZ~2mkIyr(%00D$G{ft?2bXM6c_KhIQfF(b&Vuymogq7JA#w zXl#RQH}2(GeH^?3r6{0=pdVa|J+9Lp*BOuNRgdch53U^Zzrf6MWq4e3J+9|HuK6Bb zi7mydfl|0@p2un8>4Nj2xR{7C)SU(Ab?wcA#4gvZXfs)*>HVGUcuyRN7rxH+LoeTH zyVYyi*EtEKSiK^}u3YgGQc6;=@0!oW9*1q+0W&j@jmQ!ZESTb+r(|l`pe!g z?e%2u+t`@T*5?zEMq>l(V0^G&!>~u}2YSoEU$X1jCMR2uLXJTA#=3t`_P&SN#@?ph zyZd4Frg5VWENE5fk(#{_*d4iu1X&~j**)V0ImqrB`(%o3X0gVRT{y>rB&qFCHM9(o zd>UzvF9btN2Tr)CO459Hq7z>cAWD@BuP{}>ZyJ9kjrXQiK6Qm`fa0#CRfb(5ET+sf z%j^T$B$FLhf0zBZ96C*Mi^Xt{ya%!jKEk{lOe{`64;9u*19Ci}b|ns8MaN!Q?uyLU(w2jqxXa|vCBj)rKqwi6(a@pV*@ z``(Vb6Lf5|F_~+I$@=DuNEj$M?|g-o_(8Pms_?9(3oh*uQi>1_37Kg5?Uju2xPb_N zKg|hPU`T9jf9w#;A6u~4op*lQAEL3$?UDCDYg@8gYnlZ$udw4XCES{{p$)Aj=0dUi zY+>7>7BoVQMlhG#F0{3A%|+)oQ0>^Jv~%q<@Dz=OZSEH4VqyxJN6aOok-JEoRbGvf-%bcGjy4Z+ynb^-s_UY0Z|Dog8Cv(%^C^9!tEF~E;i_58@ z8>n){&<%=m#o*!{3eP9@0XU9?FyFq=w^NvBp8*;d4hCcf3~!A0@*j$+IGUP_=u|{M z2Iq(gX|CJwvL|XX*-yk_hOFYu)QdE&cQrbNDqI6nO;-6Xeqxpayc8 zA)N}21zT^FB79-?BIe_*<>a1crx=h5h+}On@H27d(;PVImlPn zWBU8_(lDPvdd3$b{md5%GLUc`*6MK1ab50hy85~hhvVPxuL~oc)SAs6g=hf7;UVY2 z@H3eeErCLA+Ds4WvhvWR<2KPxcL@(c5UqqDdI3|-U+X(Z=A5<#*SO8L=dU5F747Ly zoXAw+E`W2x9^xdhi1BitGd`k9P;GK?CR>fk^|=X(PJv8{{!GIj$n;?1Kr$UkhC}8d zU4ove!nH9H%u~2wUO*`cO*d99x>k&>cescyw)Mq9%!#l%@p}OJ zB{Ei0N~1A1Z7n$n&nzMBRx)4KiS68%qC#fc)TGY9MJIk?pxuEBPw2V51bji8qINC3 z2K9J!lG9iW5K{DY&?}sb?>yXsN4FKMxCYTBJ)tYpkY%>wB3^_ru!JNu5aE+q&@G93c!Z*w$675M)Yx8fq2*d?3J; z&pfelDR*>%!en)U!mR9qbq|Hfx&@_;lu5sHRr$8AV&p_+o2YzeSHre0#EKWJ#Znv~ zd5AzV9ELei_9QU^M?6-P$1I`e_6QpKNnBfy>tZPkStJ2VS((*!BCD%%WmnJ2E`Ik2D$aN6E6b^+cJ~wb(1aAWP8(u8eDU`tTF-ulZgx)v(-b319L^S^OKYaLsm&0o0S5$@mVDh zozlft!UWZP$$|%}X4#4(gh9d!1~HDCnsMBO;|9W`Wf6LLq!Xu}V7kaz2L8Z65k8FF zLl`F(e3}!X8z*hsiG z{Evbf*(?)@;sTr5at zpHdnE?TW$Bf{X%pXOd~UWlfJ|^beMYZ(F=~Eb(_OZ`>_fQurFZ=dN90UArXvHRhS3 zrG?AzEl6vZW-qIGMtqlBTC;>(*7}+~(@AYv*)2U@E_K%|DL3{YXnbBtxxKqs9KbC- z4e8XfJ7Twes4(^Zmymitwa}PL|EgCQTf!|VK;qX5u#sI_AR$`;$p7+!lpdDKb-a%8 z(M;y$S@JlC2Uwn^%oHykQ$+(eMbz*YNEF3Pze=WBP^#WT9D5GX+6Y?MJx9ty7qV+zYK!nMG|2u~AvXO<@*r zQ<>+v7Xc|yQUWMbdbouI-bDo7#RT3L051V`1-HPl)XP2ZSX#8Oa1pKP&0`ggI zsCT|Sikm|~1cWv70AK5Txk*q)nv+^7bd!XYVz-=f za6b;Du=}ZnV^(=AyhO&r%SB5hLo+RCfGeYhKaVj`_?kyy50@r-RQ9RT0=^AFW|X`9 zCFT{ByZmM5RY5N86;k)BLI_GmjIoD#)sl9HK+qaU*-BDAZBHktlrtN9NM?Jo@Y7TT z$*E8R2@2z0IgPRL>K(BgDXRDEn*&WuMvjO3Fgz%bGvjBwPiB3 z_Lb~ci#w^;PnXcqtHX?2+Tq zG!jpc<8>^B2Gi1-mvUQQ7Bup}m4Q`qXqI3o5W3+Qz1wUpknlnjh0q(%qc_ONO_{k% z>;^7M`ewjum;tX9E!k!40rL6-mmzRj(UQuP9!DlYDnKnp&A?-cS5&m;VUzc|H$V+Y z*Y;5NMw5@f1bLV$hEKAc-}8olruatnHb%uvg}+$A$~sTu5Mi=1By1$eUv zcr%QnFzqDsT2i~uh@do#!wq*cB@MHrM7#vOG9bJ}(&ZJ{yDgvJUAMA3Pg3XRuj+Qa z-CeWqSF4@>frigP^!rBFc&g>K8pUgS^9E6FUjuFvRMH>ZdH z@IXcnukV=CV}Ht((c`0Cb9yf7?P^{rCi9<>I30ztNUvN{j$nVMGbc@2YMz*;3LA%pia?oL~Y8B|RP`c?AeS;|Xmh zo814=U(k{_1x=Z1Yx4hMOWxC|XJC11-l~-=-&*nZ8+67$Smvh_mL|gd)W68)_@7z% z8vG)@{T}=tt$3WCJ&T^7Hh0>zWZ4tZc!+6!4rhq-GG@=V;5a4lm(^#N|ItT@GenAd zLauD#jQLa2V87}=D|` z-lvmZ_GzUl;J4ld-}P_czh3iE(j1;94z5O%M=TytZUE)zHG#>!3l^n!ODyHSdmuE0PuSsDQ&K;>T~w^y!oD`Iw@A{q73*^n06lNSM0ht>yH*@pSr< zr9XRb<=b@X!zroB^v_o=Tk-me<;&z0^t`2+KVSa#&k#3Z!iR=9YMn|C_X)FQ8;^b6 zq@WIw{z;!2Vj?0rY6cSN#!s0(W9qbfhiq92#l1vIh|+$3Kh3>^wk(D6!8A(8{WSLu z+p-j@2h*r_+)p#{-ndbyA55b@aX-yZ?x)c_m_~Ewewv@&PosS>jh4EfCiQ+A-Gga# z)aK%CJFC4-$BVuw`?_}jQGf40{1F8GxBlX0{M@nQ#GPLd38ws~ptA10_lE_4|94?v zp8lx*ulh#~q}8rR6uwmHt)i-3Zz{@TaNL%NGf2Y#qQHP7S#oAMxDrWvaS!XRhECBI zRgq64t|hgoimEtI!Q%?+Om#LqGn+NnRo7MU45e1V?F_PpK#Qih{16-oiYjQ)$h0uk z_K1Q{Ahhro3MgAgQHeSz1N}k)k09?Vw!EjH2Sp1f5lrg0J*1##>4g2b-qM@@h(f-7 zi|QX&04ONET3S>x8Kg_KJPr5n6mx)SD0YyOV(zf!h%|`4qotpNIxTkqfn0;bD`>3< zu>T-?A0*jQ;K`gM)sv(RdZEqA?Ge?*pp>BC3qZ+ZLD9ppgHG_>l^&PmZm&QDN|MO!7?64!|6&4xP2tabX1$MZRzuA2(8{~<|wz9IY#^=9y9UZ z0dNI#7{DK~e4xf5{Xo?GY+sE7EMKV!2EZmh3Y0l@fj+7^DQe&%^btj!5dx2*D)}8d zqiTq`tC1vsG?kej14a+3P}TV&j0fVx7@LahBWA98g$8ogy(=ij$9Y#M0gDgsGBiE{ z5GjV$o~Y1BTC5VNpE;O^PTZqOE3eX|Sygn(qzwCa4VwAtKdLWj{-|!yglp(BNOlUc zJlw&8Pdt^Mcv5b`WFi`W)G}GePoi(?WqC$t8LH<_Cf>HaufPS-_Z9hv$OTmh zcYq4?A^m|GS1Y;2Sqks__$S`L8`EHw8_u0P5krYdT!Z*f`DhA?P(zt|`c17c2raIB zO_4v0s(e9_Ka}F?jW{`#vE#EA)|ba9ipxJzKu-Qx`1^{2XB6dY6b0#u=#Lc9SqkZ) z@+?KcTm_OPAsOCZP(-g$NFgNAYl;+X+OgN(D;jY4S%b4sI}{(#5zt*YihevsbQg}9 za2{TJ;sph_uje&|0Lu^W&xM~-Zr}Uq3Z}9A83oXL$jXmHwzdZRcZ@qGX?%ACoRViT z#~O~AT*pkl4kVX*J2X)*g~%zPs0>X7v0%N2^#)=t z;-(1(Eh#2P{EmJ`$3KGhr(vLQO$C4SaE%4)Jlr98o8=A{sGe0uRGaL?*E z>aEPeQx1hSine3_K_GooTYFfntvzDggJxo2-Y?_(2aRi-1&yg0~_=q5-skbio6#DWvcJA-~rP za~;PXtd4}B%0OXq`}$j^khY_^H^BfXsW^D|nL#}Vj(H{Jp#B6d@GI&B<%c()cNM== zWWm#GwhE&K&PelBg6b<(1)P!Ast%|`RUn2ulfLdi+!s;t8P^f(IjccX&%=+ zshO^st9e;t)hvVWuoBHyO_`=jQ?04d?9=!(`!xqNqUNHeQ`4iltx;+9+M(Kq;5BTl z_EBxBcCt2IJ6k(fyFj~0`=WLk{D!@wU9J5<`#bF#ZMODf?K`bmgtu0-q5|NTd8|j_eDK77bsy{gs@tsl zLbqM_m2Q{rfbNn`()H*@>c{FQ=zpqzQa?pMLqAJDNB^<@-}M{xRr-4UA^lj z5X3+b13?S~F%ZN+5CcIB1ThfAKoA2#3j5X3+b13?S~F%ZN+5CcIB z1ThfAKoA2#3j5X3+b13?S~F%ZN+5CcIB1ThfAKoA2#3j5X3+b13?S~F%ZN+5CcIB1ThfAKoA2#3j5X3+b13?S~F%ZN+ z5CcIB1ThfAKoA2#3j5X3+b13?S~F%ZN+5CcIB1ThfAKoA2#3j5X3+b13?S~F%ZN+5CcIB1ThfAKoA2#3j5X3+b13?S~ eF%ZN+5CcIB1ThfAKoA2#3x= literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f788e8f96c198e925986a2498cefd273060f435b GIT binary patch literal 6148 zcmeHK!Ab)$5S_GDcTuqiQIENJ>!DSOco3Fa58i|oJ*c$1ZqdcMk#=j*TG_wQKk^g& z9cPlXSZZ$~Qf6TCCX<TH8PE$giW`GLb*Ch&)nQ2v_IJu9xwl&x4qaz+yK->cynlKgybNF8495aLM=fg> zNAQlu%AW;cDiD63KbgcmW`G%(D+WZN?$>L$C0kpkHb=EqqBc=U pC@wQNPC-MLVvMCyyoIU-{gMns&thf}Jt+JmplRTS8TeBMz5oPsRUQBU literal 0 HcmV?d00001 diff --git a/src/TEST#FE1000 b/src/TEST#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..b3d7349af2bd46707e725e669d6f397ea2616b01 GIT binary patch literal 3517 zcmb7`4R93Y8OPsyclS7M61yQsMN8VX)ivbfasg~82@y)nKur@S2{AnhBT4Sa=UvEM z4uUPREra01DXX@%AKF^zOl|3CTN&-gbj*aRp`-?hj*PabgDw5Q%G4?2bTIwx-X)+h zhR)n`|KIa}pXYsd-|V}W?LHY1Vw;{N76(Sgj-EW#F!B476URqCFS6G~dV1nT#+tsq zo`~Tol`Xd`Ew>jcB_$D}jVSr}+ITFH+!9L~ksW>gkwl_19y3-M3mTIB18vEH{)iEe zMiY@_Vx>p;MY}kw=r;<{?Da%NN}58X)Tr!|qA92thSB8}O;H(DTbsI6hXVUjGAe8T zJQ?;jdqjbe6dSUbqfziRl;o>mcXjRClVMM@#(W2&;)l5+Mh69aq9U;GC+8& z7)z&o`MtDnE^@j$gs6C~euXeiC)@BvVdlF~CCow>%7t0t!ct)_b76@v%Um#oSBUXR zpBR~3Ely1C7B5Zi6R%7@Enb@}xH-LuRLwKFjlmrBoTKK2+>}rCMtzx^YOKo%g;LUy zlo~=(-cTs$-%@0>78z|*m&{y2S>)c9dKr7uYXtp9nNeaG%hKg;MYd6H;NCFpX8v}W z+Tu*@=J%ZGvNE+(?sRSO3q;KAFcOE1hM=%yI_;X)n02p>u02 z(r&a4CL=~$=1sPeL3fAI;9~a`Xhi$ty+&uOxTiA~F%rrC&e+!L?#iYheWyXySmhq) zuBbCTX=lPnkK$aPC4yRG{l;6eH~2-+TfL^H;gN%S;d+k1Cm+$rRE8XdtomaZgGdr(%muI$K@gC1?z2Y67 z**fd~`Z<0<^`?T5^P9#Y3^}LBeVlJ9D9w16oTV9O`B$gClJ{2`&V2sjQhx3DNv55GDN7$eAX!dm;#kwB85iam3cBMzP z*TJ{qw@?=$IvDR}Y>=_tjC~EZ;RoUGQui?9kB}eoc&x+lV;RzjChVKZ*TJ{KweW3lSQAzY z`2f5Fy%T>Ad^da#d_Vk6YQ9bWbNC7LN&Khb5%?MSdH4ltUL=1DK99bGe-Y+?L|gG{ zc9vJQKIRqH0`fvQh?e57gjd0<;q`D0HFe}2a5oym-wyADzXI=t_fs=O{v-Iu=uh#V zfS-ha4UfRjz^BnS&^Phkg3rV6z!zaLPuSPYQ?145r{-yPK3oU~;WBt7+=$+WhVk0q zDBKD6!vpZw(fiPE;5`gK0w02Z20soTL&wl@yi@S2@M-ug{0~_3sn&d-uos{U(QAF0 zo##_*lY9wz5qSyu3i5LD)#Pi*Ysl-!>&Z9z6zfZH2VOVYhnMgvVr+QixzQ@#O5-n1 stmV)n$7^-P(FR?0WWBD5qoXg4Jzu3?EyiCM{bQq^N84zvk9Xz&00UzhSpWb4 literal 0 HcmV?d00001 diff --git a/src/TESTLIB#FE1000 b/src/TESTLIB#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..db5864a44508b5d43cecc027b7529b8822f10d55 GIT binary patch literal 246 zcmZo=U`l0Run}Nls1i7Q_Q>U%!3-cSkN^S$LnC7oQ!{f5OGhVX7gsm_lGNgooXjMJ zoczR;)D%UA2qs1?l@JC7HEDq~28lT~{7nfEUJ4_EoyNd{B$LJfm5E|f(-r`#1|o(S zCZLrQ1sPZyg&7zoiZU=y6lY+WD9OMy(TRbn(G@5b0HlFVn-~M6 X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/conio.pla: 0001: +; libsrc/apple/conio.pla: 0002: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; libsrc/apple/conio.pla: 0002: +; libsrc/apple/conio.pla: 0003: sysflags nojitc // Keep tone() from compiling and sounding different + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; libsrc/apple/conio.pla: 0004: // +; libsrc/apple/conio.pla: 0005: // Handy constants. +; libsrc/apple/conio.pla: 0006: // +; libsrc/apple/conio.pla: 0007: const FULLMODE = 0 + ; FULLMODE = 0 +; libsrc/apple/conio.pla: 0008: const MIXMODE = 1 + ; MIXMODE = 1 +; libsrc/apple/conio.pla: 0009: // +; libsrc/apple/conio.pla: 0010: // Apple II ZP locations. +; libsrc/apple/conio.pla: 0011: // +; libsrc/apple/conio.pla: 0012: const a2rndnum = $4E // ZP location of RND + ; a2rndnum = 78 +; libsrc/apple/conio.pla: 0013: const a2rndl = $4E + ; a2rndl = 78 +; libsrc/apple/conio.pla: 0014: const a2rndh = $4F + ; a2rndh = 79 +; libsrc/apple/conio.pla: 0015: // +; libsrc/apple/conio.pla: 0016: // Apple II hardware constants. +; libsrc/apple/conio.pla: 0017: // +; libsrc/apple/conio.pla: 0018: const speaker = $C030 + ; speaker = 49200 +; libsrc/apple/conio.pla: 0019: const showgraphics = $C050 + ; showgraphics = 49232 +; libsrc/apple/conio.pla: 0020: const showtext = $C051 + ; showtext = 49233 +; libsrc/apple/conio.pla: 0021: const showfull = $C052 + ; showfull = 49234 +; libsrc/apple/conio.pla: 0022: const showmix = $C053 + ; showmix = 49235 +; libsrc/apple/conio.pla: 0023: const showpage1 = $C054 + ; showpage1 = 49236 +; libsrc/apple/conio.pla: 0024: const showpage2 = $C055 + ; showpage2 = 49237 +; libsrc/apple/conio.pla: 0025: const showlores = $C056 + ; showlores = 49238 +; libsrc/apple/conio.pla: 0026: const showhires = $C057 + ; showhires = 49239 +; libsrc/apple/conio.pla: 0027: const keyboard = $C000 + ; keyboard = 49152 +; libsrc/apple/conio.pla: 0028: const keystrobe = $C010 + ; keystrobe = 49168 +; libsrc/apple/conio.pla: 0029: const hgr1 = $2000 + ; hgr1 = 8192 +; libsrc/apple/conio.pla: 0030: const hgr2 = $4000 + ; hgr2 = 16384 +; libsrc/apple/conio.pla: 0031: const page1 = 0 + ; page1 = 0 +; libsrc/apple/conio.pla: 0032: const page2 = 1 + ; page2 = 1 +; libsrc/apple/conio.pla: 0033: // +; libsrc/apple/conio.pla: 0034: // Apple III hardware constants. +; libsrc/apple/conio.pla: 0035: // +; libsrc/apple/conio.pla: 0036: const ENV_REG = $FFDF + ; ENV_REG = 65503 +; libsrc/apple/conio.pla: 0037: // +; libsrc/apple/conio.pla: 0038: // Predefined functions. +; libsrc/apple/conio.pla: 0039: // +; libsrc/apple/conio.pla: 0040: predef a2keypressed,a2home,a12echo(state),a2gotoxy(x,y),a2viewport(left, top, width, height),a2texttype(type) +; libsrc/apple/conio.pla: 0041: predef a2textmode(cols),a2grmode(mix),a2grcolor(color),a2grplot(x,y),a2tone(duration, delay),a2rnd +; libsrc/apple/conio.pla: 0042: // +; libsrc/apple/conio.pla: 0043: // Exported function table. +; libsrc/apple/conio.pla: 0044: // +; libsrc/apple/conio.pla: 0045: word conio[] +_D040 ; conio[] +; libsrc/apple/conio.pla: 0046: // +; libsrc/apple/conio.pla: 0047: // Function pointers. +; libsrc/apple/conio.pla: 0048: // +; libsrc/apple/conio.pla: 0049: word = @a2keypressed +_F000 !WORD _P000 +; libsrc/apple/conio.pla: 0050: word = @getc +_F001 !WORD 0 ; _X006 +; libsrc/apple/conio.pla: 0051: word = @a12echo +_F002 !WORD _P002 +; libsrc/apple/conio.pla: 0052: word = @a2home +_F003 !WORD _P001 +; libsrc/apple/conio.pla: 0053: word = @a2gotoxy +_F004 !WORD _P003 +; libsrc/apple/conio.pla: 0054: word = @a2viewport +_F005 !WORD _P004 +; libsrc/apple/conio.pla: 0055: word = @a2texttype +_F006 !WORD _P005 +; libsrc/apple/conio.pla: 0056: word = @a2textmode +_F007 !WORD _P006 +; libsrc/apple/conio.pla: 0057: word = @a2grmode +_F008 !WORD _P007 +; libsrc/apple/conio.pla: 0058: word = @a2grcolor +_F009 !WORD _P008 +; libsrc/apple/conio.pla: 0059: word = @a2grplot +_F010 !WORD _P009 +; libsrc/apple/conio.pla: 0060: word = @a2tone +_F011 !WORD _P010 +; libsrc/apple/conio.pla: 0061: word = @a2rnd +_F012 !WORD _P011 +; libsrc/apple/conio.pla: 0062: // +; libsrc/apple/conio.pla: 0063: // Screen row address arrays. +; libsrc/apple/conio.pla: 0064: // +; libsrc/apple/conio.pla: 0065: word txt1scrn[] = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 +_D041 ; txt1scrn[] = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 + !WORD $0400 + !WORD $0480 + !WORD $0500 + !WORD $0580 + !WORD $0600 + !WORD $0680 + !WORD $0700 + !WORD $0780 +; libsrc/apple/conio.pla: 0066: word = $0428,$04A8,$0528,$05A8,$0628,$06A8,$0728,$07A8 + !WORD $0428 + !WORD $04A8 + !WORD $0528 + !WORD $05A8 + !WORD $0628 + !WORD $06A8 + !WORD $0728 + !WORD $07A8 +; libsrc/apple/conio.pla: 0067: word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0 + !WORD $0450 + !WORD $04D0 + !WORD $0550 + !WORD $05D0 + !WORD $0650 + !WORD $06D0 + !WORD $0750 + !WORD $07D0 +; libsrc/apple/conio.pla: 0068: word txt2scrn[] = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 +_D042 ; txt2scrn[] = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 + !WORD $0800 + !WORD $0880 + !WORD $0900 + !WORD $0980 + !WORD $0A00 + !WORD $0A80 + !WORD $0B00 + !WORD $0B80 +; libsrc/apple/conio.pla: 0069: word = $0828,$08A8,$0928,$09A8,$0A28,$0AA8,$0B28,$0BA8 + !WORD $0828 + !WORD $08A8 + !WORD $0928 + !WORD $09A8 + !WORD $0A28 + !WORD $0AA8 + !WORD $0B28 + !WORD $0BA8 +; libsrc/apple/conio.pla: 0070: word = $0850,$08D0,$0950,$09D0,$0A50,$0AD0,$0B50,$0BD0 + !WORD $0850 + !WORD $08D0 + !WORD $0950 + !WORD $09D0 + !WORD $0A50 + !WORD $0AD0 + !WORD $0B50 + !WORD $0BD0 +; libsrc/apple/conio.pla: 0071: // +; libsrc/apple/conio.pla: 0072: // Text screen parameters. +; libsrc/apple/conio.pla: 0073: // +; libsrc/apple/conio.pla: 0074: //byte textcols = 40 +; libsrc/apple/conio.pla: 0075: //byte curshpos = 0 +; libsrc/apple/conio.pla: 0076: //byte cursvpos = 0 +; libsrc/apple/conio.pla: 0077: // +; libsrc/apple/conio.pla: 0078: // Apple 3 console codes. +; libsrc/apple/conio.pla: 0079: // +; libsrc/apple/conio.pla: 0080: byte textbwmode[] = 2, 16, 0 +_D043 ; textbwmode[] = 2, 16, 0 + !BYTE $02 + !BYTE $10 + !BYTE $00 +; libsrc/apple/conio.pla: 0081: byte textclrmode[] = 2, 16, 1 +_D044 ; textclrmode[] = 2, 16, 1 + !BYTE $02 + !BYTE $10 + !BYTE $01 +; libsrc/apple/conio.pla: 0082: byte grcharset[] = 1, 0, $7F, $7F, $7F, $7F, $00, $00, $00, $00 +_D045 ; grcharset[] = 1, 0, $7F, $7F, $7F, $7F, $00, $00, $00, $00 + !BYTE $01 + !BYTE $00 + !BYTE $7F + !BYTE $7F + !BYTE $7F + !BYTE $7F + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/conio.pla: 0083: // +; libsrc/apple/conio.pla: 0084: // Random number for Apple 1 and III. +; libsrc/apple/conio.pla: 0085: // +; libsrc/apple/conio.pla: 0086: word randnum = 12345 +_D046 ; randnum = 12345 + !WORD $3039 +; libsrc/apple/conio.pla: 0087: // +; libsrc/apple/conio.pla: 0088: // Native routines. +; libsrc/apple/conio.pla: 0089: // +; libsrc/apple/conio.pla: 0090: asm equates +_A000 ; equates() +; libsrc/apple/conio.pla: 0091: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/conio.pla: 0092: end +; libsrc/apple/conio.pla: 0093: // +; libsrc/apple/conio.pla: 0094: // def grscrn(rowaddrs) +; libsrc/apple/conio.pla: 0095: // +; libsrc/apple/conio.pla: 0096: asm a2grscrn(rowaddrs) +_A001 ; a2grscrn() +; libsrc/apple/conio.pla: 0097: GRSCRN = $26 +GRSCRN = $26 +; libsrc/apple/conio.pla: 0098: GRSCRNL = GRSCRN +GRSCRNL = GRSCRN +; libsrc/apple/conio.pla: 0099: GRSCRNH = GRSCRNL+1 +GRSCRNH = GRSCRNL+1 +; libsrc/apple/conio.pla: 0100: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/conio.pla: 0101: STA GRSCRNL + STA GRSCRNL +; libsrc/apple/conio.pla: 0102: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/conio.pla: 0103: STA GRSCRNH + STA GRSCRNH +; libsrc/apple/conio.pla: 0104: RTS + RTS +; libsrc/apple/conio.pla: 0105: end +; libsrc/apple/conio.pla: 0106: // +; libsrc/apple/conio.pla: 0107: // def grcolor(color) +; libsrc/apple/conio.pla: 0108: // +; libsrc/apple/conio.pla: 0109: asm a2grcolor(color) +_P008 ; a2grcolor(color)() +_A002 ; a2grcolor() +; libsrc/apple/conio.pla: 0110: GRCLR = $30 +GRCLR = $30 +; libsrc/apple/conio.pla: 0111: LDA #$0F + LDA #$0F +; libsrc/apple/conio.pla: 0112: AND ESTKL,X + AND ESTKL,X +; libsrc/apple/conio.pla: 0113: STA GRCLR + STA GRCLR +; libsrc/apple/conio.pla: 0114: ASL + ASL +; libsrc/apple/conio.pla: 0115: ASL + ASL +; libsrc/apple/conio.pla: 0116: ASL + ASL +; libsrc/apple/conio.pla: 0117: ASL + ASL +; libsrc/apple/conio.pla: 0118: ORA GRCLR + ORA GRCLR +; libsrc/apple/conio.pla: 0119: STA GRCLR + STA GRCLR +; libsrc/apple/conio.pla: 0120: RTS + RTS +; libsrc/apple/conio.pla: 0121: end +; libsrc/apple/conio.pla: 0122: // +; libsrc/apple/conio.pla: 0123: // def grplot(x, y) +; libsrc/apple/conio.pla: 0124: // +; libsrc/apple/conio.pla: 0125: asm a2grplot(x, y) +_P009 ; a2grplot(x, y)() +_A003 ; a2grplot() +; libsrc/apple/conio.pla: 0126: STY IPY + STY IPY +; libsrc/apple/conio.pla: 0127: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/conio.pla: 0128: AND #$FE + AND #$FE +; libsrc/apple/conio.pla: 0129: CMP ESTKL,X + CMP ESTKL,X +; libsrc/apple/conio.pla: 0130: TAY + TAY +; libsrc/apple/conio.pla: 0131: LDA (GRSCRN),Y + LDA (GRSCRN),Y +; libsrc/apple/conio.pla: 0132: STA DSTL + STA DSTL +; libsrc/apple/conio.pla: 0133: INY + INY +; libsrc/apple/conio.pla: 0134: LDA (GRSCRN),Y + LDA (GRSCRN),Y +; libsrc/apple/conio.pla: 0135: STA DSTH + STA DSTH +; libsrc/apple/conio.pla: 0136: LDY ESTKL+1,X + LDY ESTKL+1,X +; libsrc/apple/conio.pla: 0137: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/conio.pla: 0138: EOR GRCLR + EOR GRCLR +; libsrc/apple/conio.pla: 0139: STA TMPL + STA TMPL +; libsrc/apple/conio.pla: 0140: LDA #$FF + LDA #$FF +; libsrc/apple/conio.pla: 0141: ADC #$00 + ADC #$00 +; libsrc/apple/conio.pla: 0142: EOR #$F0 + EOR #$F0 +; libsrc/apple/conio.pla: 0143: AND TMPL + AND TMPL +; libsrc/apple/conio.pla: 0144: EOR GRCLR + EOR GRCLR +; libsrc/apple/conio.pla: 0145: STA (DST),Y + STA (DST),Y +; libsrc/apple/conio.pla: 0146: LDY IPY + LDY IPY +; libsrc/apple/conio.pla: 0147: INX + INX +; libsrc/apple/conio.pla: 0148: RTS + RTS +; libsrc/apple/conio.pla: 0149: end +; libsrc/apple/conio.pla: 0150: // +; libsrc/apple/conio.pla: 0151: // Apple 1 routines. +; libsrc/apple/conio.pla: 0152: // +; libsrc/apple/conio.pla: 0153: def a1keypressed + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; a1keypressed() +; libsrc/apple/conio.pla: 0154: return ^$D011 >= 128 + !BYTE $68,$11,$D0 ; LAB 53265 + !BYTE $2A,$80 ; CB 128 + !BYTE $48 ; ISGE + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0155: end +; libsrc/apple/conio.pla: 0156: def a12echo(state) + ; state -> [0] +_P002 ; a12echo(state)() +_C001 ; a12echo() +; libsrc/apple/conio.pla: 0157: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0158: end +; libsrc/apple/conio.pla: 0159: def a1home +_C002 ; a1home() +; libsrc/apple/conio.pla: 0160: byte l + ; l -> [0] +; libsrc/apple/conio.pla: 0161: for l = 0 to 23 + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/conio.pla: 0162: putln +; libsrc/apple/conio.pla: 0163: next + !BYTE $54 ; CALL _X003 +_F013 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/conio.pla: 0164: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$01 ; LEAVE 1 +; libsrc/apple/conio.pla: 0165: end +; libsrc/apple/conio.pla: 0166: def a1gotoxy(x, y) + ; x -> [0] + ; y -> [2] +_C003 ; a1gotoxy() +; libsrc/apple/conio.pla: 0167: //curshpos = x +; libsrc/apple/conio.pla: 0168: //cursvpos = y +; libsrc/apple/conio.pla: 0169: putln + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/conio.pla: 0170: while x + !BYTE $54 ; CALL _X003 +_F014 !WORD 0 + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/apple/conio.pla: 0171: putc(' ') +; libsrc/apple/conio.pla: 0172: x = x - 1 +; libsrc/apple/conio.pla: 0173: loop + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F015 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $76,$00 ; SLW [0] +_B006 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/apple/conio.pla: 0174: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/conio.pla: 0175: end +; libsrc/apple/conio.pla: 0176: def a1viewport(left, top, width, height) + ; left -> [0] + ; top -> [2] + ; width -> [4] + ; height -> [6] +_C004 ; a1viewport() +; libsrc/apple/conio.pla: 0177: return 0 + !BYTE $58,$08,$04 ; ENTER 8,4 + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/conio.pla: 0178: end +; libsrc/apple/conio.pla: 0179: def a1texttype(type) + ; type -> [0] +_C005 ; a1texttype() +; libsrc/apple/conio.pla: 0180: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0181: end +; libsrc/apple/conio.pla: 0182: def a1textmode(columns) + ; columns -> [0] +_C006 ; a1textmode() +; libsrc/apple/conio.pla: 0183: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0184: end +; libsrc/apple/conio.pla: 0185: def a1grmode(mix) + ; mix -> [0] +_C007 ; a1grmode() +; libsrc/apple/conio.pla: 0186: return 0 // not supported + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0187: end +; libsrc/apple/conio.pla: 0188: def a1tone(duration, delay) + ; duration -> [0] + ; delay -> [2] +_C008 ; a1tone() +; libsrc/apple/conio.pla: 0189: byte i + ; i -> [4] +; libsrc/apple/conio.pla: 0190: +; libsrc/apple/conio.pla: 0191: while duration + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +_B007 +; libsrc/apple/conio.pla: 0192: for i = delay downto 0; next + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $A2 ; BRLT _B010 + !WORD _B010-* +_B011 + !BYTE $6C,$04 ; DLB [4] +_B012 + !BYTE $A8 ; DECBRGE _B011 + !WORD _B011-* +_B010 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/conio.pla: 0193: duration-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; libsrc/apple/conio.pla: 0194: loop + !BYTE $76,$00 ; SLW [0] +_B009 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B007 + !WORD _B007-* +_B008 +; libsrc/apple/conio.pla: 0195: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/conio.pla: 0196: end +; libsrc/apple/conio.pla: 0197: // +; libsrc/apple/conio.pla: 0198: // Apple II routines. +; libsrc/apple/conio.pla: 0199: // +; libsrc/apple/conio.pla: 0200: def a2keypressed +_P000 ; a2keypressed() +_C009 ; a2keypressed() +; libsrc/apple/conio.pla: 0201: return ^keyboard >= 128 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$80 ; CB 128 + !BYTE $48 ; ISGE + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0202: end +; libsrc/apple/conio.pla: 0203: def a2home +_P001 ; a2home() +_C010 ; a2home() +; libsrc/apple/conio.pla: 0204: //curshpos = 0 +; libsrc/apple/conio.pla: 0205: //cursvpos = 0 +; libsrc/apple/conio.pla: 0206: return call($FC58, 0, 0, 0, 0) // home() + !BYTE $2C,$58,$FC ; CW 64600 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F016 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0207: end +; libsrc/apple/conio.pla: 0208: def a2gotoxy(x, y) + ; x -> [0] + ; y -> [2] +_P003 ; a2gotoxy(x, y)() +_C011 ; a2gotoxy() +; libsrc/apple/conio.pla: 0209: //curshpos = x +; libsrc/apple/conio.pla: 0210: //cursvpos = y +; libsrc/apple/conio.pla: 0211: ^$24 = x + ^$20 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/conio.pla: 0212: return call($FB5B, y + ^$22, 0, 0, 0) + !BYTE $66,$00 ; LLW [0] + !BYTE $B4,$20,$00 ; ADDAB 32 + !BYTE $78,$24,$00 ; SAB 36 + !BYTE $2C,$5B,$FB ; CW 64347 + !BYTE $66,$02 ; LLW [2] + !BYTE $B4,$22,$00 ; ADDAB 34 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F017 !WORD 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/conio.pla: 0213: end +; libsrc/apple/conio.pla: 0214: def a2viewport(left, top, width, height) + ; left -> [0] + ; top -> [2] + ; width -> [4] + ; height -> [6] +_P004 ; a2viewport(left, top, width, height)() +_C012 ; a2viewport() +; libsrc/apple/conio.pla: 0215: if !width or !height + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/conio.pla: 0216: left = 0 +; libsrc/apple/conio.pla: 0217: top = 0 +; libsrc/apple/conio.pla: 0218: width = 40 +; libsrc/apple/conio.pla: 0219: height = 24 +; libsrc/apple/conio.pla: 0220: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B013 + !WORD _B013-* + !BYTE $66,$06 ; LLW [6] + !BYTE $80 ; NOT +_B013 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$28 ; CB 40 + !BYTE $76,$04 ; SLW [4] + !BYTE $2A,$18 ; CB 24 + !BYTE $76,$06 ; SLW [6] +_B014 +_B015 +; libsrc/apple/conio.pla: 0221: ^$20 = left +; libsrc/apple/conio.pla: 0222: ^$21 = width +; libsrc/apple/conio.pla: 0223: ^$22 = top +; libsrc/apple/conio.pla: 0224: ^$23 = height + top - 1 +; libsrc/apple/conio.pla: 0225: return a2gotoxy(0, 0) + !BYTE $66,$00 ; LLW [0] + !BYTE $78,$20,$00 ; SAB 32 + !BYTE $66,$04 ; LLW [4] + !BYTE $78,$21,$00 ; SAB 33 + !BYTE $66,$02 ; LLW [2] + !BYTE $78,$22,$00 ; SAB 34 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $8E ; DECR + !BYTE $78,$23,$00 ; SAB 35 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C011 +_F018 !WORD _C011 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/conio.pla: 0226: end +; libsrc/apple/conio.pla: 0227: def a2texttype(type) + ; type -> [0] +_P005 ; a2texttype(type)() +_C013 ; a2texttype() +; libsrc/apple/conio.pla: 0228: ^$32 = type + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/conio.pla: 0229: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $78,$32,$00 ; SAB 50 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0230: end +; libsrc/apple/conio.pla: 0231: def a2textmode(columns) + ; columns -> [0] +_P006 ; a2textmode(columns)() +_C014 ; a2textmode() +; libsrc/apple/conio.pla: 0232: call($FB39, 0, 0, 0, 0) // textmode() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/conio.pla: 0233: return a2home + !BYTE $2C,$39,$FB ; CW 64313 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F019 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C010 +_F020 !WORD _C010 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0234: end +; libsrc/apple/conio.pla: 0235: def a2grmode(mix) + ; mix -> [0] +_P007 ; a2grmode(mix)() +_C015 ; a2grmode() +; libsrc/apple/conio.pla: 0236: call($FB2F, 0, 0, 0, 0) // initmode() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/conio.pla: 0237: call($FB40, 0, 0, 0, 0) // grmode() +; libsrc/apple/conio.pla: 0238: if !mix +; libsrc/apple/conio.pla: 0239: ^showfull +; libsrc/apple/conio.pla: 0240: fin + !BYTE $2C,$2F,$FB ; CW 64303 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F021 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2C,$40,$FB ; CW 64320 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B016 + !WORD _B016-* + !BYTE $68,$52,$C0 ; LAB 49234 + !BYTE $30 ; DROP +_B016 +_B017 +; libsrc/apple/conio.pla: 0241: a2home +; libsrc/apple/conio.pla: 0242: return a2grscrn(@txt1scrn) // point to lo-res screen + !BYTE $54 ; CALL _C010 +_F023 !WORD _C010 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D041+0 +_F024 !WORD _D041+0 + !BYTE $54 ; CALL _A001 +_F025 !WORD _A001 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0243: end +; libsrc/apple/conio.pla: 0244: def a2tone(duration, delay) + ; duration -> [0] + ; delay -> [2] +_P010 ; a2tone(duration, delay)() +_C016 ; a2tone() +; libsrc/apple/conio.pla: 0245: byte i + ; i -> [4] +; libsrc/apple/conio.pla: 0246: +; libsrc/apple/conio.pla: 0247: while duration + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $50 ; BRNCH _B020 + !WORD _B020-* +_B018 +; libsrc/apple/conio.pla: 0248: ^speaker // toggle speaker +; libsrc/apple/conio.pla: 0249: for i = delay downto 0; next + !BYTE $68,$30,$C0 ; LAB 49200 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $A2 ; BRLT _B021 + !WORD _B021-* +_B022 + !BYTE $6C,$04 ; DLB [4] +_B023 + !BYTE $A8 ; DECBRGE _B022 + !WORD _B022-* +_B021 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/conio.pla: 0250: duration-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; libsrc/apple/conio.pla: 0251: loop + !BYTE $76,$00 ; SLW [0] +_B020 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B018 + !WORD _B018-* +_B019 +; libsrc/apple/conio.pla: 0252: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/conio.pla: 0253: end +; libsrc/apple/conio.pla: 0254: def a2rnd +_P011 ; a2rnd() +_C017 ; a2rnd() +; libsrc/apple/conio.pla: 0255: *a2rndnum = (*a2rndnum << 1) + *a2rndnum + 123 +; libsrc/apple/conio.pla: 0256: return *a2rndnum & $7FFF + !BYTE $6A,$4E,$00 ; LAW 78 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $B6,$4E,$00 ; ADDAW 78 + !BYTE $38,$7B ; ADDI 123 + !BYTE $7E,$4E,$00 ; DAW 78 + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $94 ; AND + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0257: end +; libsrc/apple/conio.pla: 0258: // +; libsrc/apple/conio.pla: 0259: // Apple III routines. +; libsrc/apple/conio.pla: 0260: // +; libsrc/apple/conio.pla: 0261: def dev_control(devnum, code, list) + ; devnum -> [0] + ; code -> [2] + ; list -> [4] +_C018 ; dev_control() +; libsrc/apple/conio.pla: 0262: byte params[5] + ; params -> [6] +; libsrc/apple/conio.pla: 0263: +; libsrc/apple/conio.pla: 0264: params.0 = 3 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; libsrc/apple/conio.pla: 0265: params.1 = devnum +; libsrc/apple/conio.pla: 0266: params.2 = code +; libsrc/apple/conio.pla: 0267: params:3 = list +; libsrc/apple/conio.pla: 0268: return syscall($83, @params) + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$83 ; CB 131 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F026 !WORD 0 + !BYTE $5A,$0B ; LEAVE 11 +; libsrc/apple/conio.pla: 0269: end +; libsrc/apple/conio.pla: 0270: def dev_status(devnum, code, list) + ; devnum -> [0] + ; code -> [2] + ; list -> [4] +_C019 ; dev_status() +; libsrc/apple/conio.pla: 0271: byte params[5] + ; params -> [6] +; libsrc/apple/conio.pla: 0272: +; libsrc/apple/conio.pla: 0273: params.0 = 3 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; libsrc/apple/conio.pla: 0274: params.1 = devnum +; libsrc/apple/conio.pla: 0275: params.2 = code +; libsrc/apple/conio.pla: 0276: params:3 = list +; libsrc/apple/conio.pla: 0277: return syscall($82, @params) + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$82 ; CB 130 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F027 !WORD 0 + !BYTE $5A,$0B ; LEAVE 11 +; libsrc/apple/conio.pla: 0278: end +; libsrc/apple/conio.pla: 0279: def a3keypressed +_C020 ; a3keypressed() +; libsrc/apple/conio.pla: 0280: byte count + ; count -> [0] +; libsrc/apple/conio.pla: 0281: dev_status(cmdsys.devcons, 5, @count) + !BYTE $58,$01,$00 ; ENTER 1,0 +; libsrc/apple/conio.pla: 0282: return count + !BYTE $68 ; LAB _X000+20 +_F028 !WORD 0+20 + !BYTE $0A ; CN 5 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C019 +_F029 !WORD _C019 + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$01 ; LEAVE 1 +; libsrc/apple/conio.pla: 0283: end +; libsrc/apple/conio.pla: 0284: def a3echo(state) + ; state -> [0] +_C021 ; a3echo() +; libsrc/apple/conio.pla: 0285: return dev_control(cmdsys.devcons, 11, @state) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $68 ; LAB _X000+20 +_F030 !WORD 0+20 + !BYTE $16 ; CN 11 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C018 +_F031 !WORD _C018 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0286: end +; libsrc/apple/conio.pla: 0287: def a3home +_C022 ; a3home() +; libsrc/apple/conio.pla: 0288: //curshpos = 0 +; libsrc/apple/conio.pla: 0289: //cursvpos = 0 +; libsrc/apple/conio.pla: 0290: putc(28) +; libsrc/apple/conio.pla: 0291: return 0 + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _X002 +_F032 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0292: end +; libsrc/apple/conio.pla: 0293: def a3gotoxy(x, y) + ; x -> [0] + ; y -> [2] +_C023 ; a3gotoxy() +; libsrc/apple/conio.pla: 0294: //curshpos = x +; libsrc/apple/conio.pla: 0295: //cursvpos = y +; libsrc/apple/conio.pla: 0296: putc(24) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/conio.pla: 0297: putc(x) +; libsrc/apple/conio.pla: 0298: putc(25) +; libsrc/apple/conio.pla: 0299: putc(y) +; libsrc/apple/conio.pla: 0300: return 0 + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _X002 +_F033 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X002 +_F034 !WORD 0 + !BYTE $2A,$19 ; CB 25 + !BYTE $54 ; CALL _X002 +_F035 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X002 +_F036 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/conio.pla: 0301: end +; libsrc/apple/conio.pla: 0302: def a3viewport(left, top, width, height) + ; left -> [0] + ; top -> [2] + ; width -> [4] + ; height -> [6] +_C024 ; a3viewport() +; libsrc/apple/conio.pla: 0303: if !width or !height + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/conio.pla: 0304: // +; libsrc/apple/conio.pla: 0305: // Reset the full-screen viewport +; libsrc/apple/conio.pla: 0306: // +; libsrc/apple/conio.pla: 0307: left = 0 +; libsrc/apple/conio.pla: 0308: top = 0 +; libsrc/apple/conio.pla: 0309: width = 40//textcols +; libsrc/apple/conio.pla: 0310: height = 24 +; libsrc/apple/conio.pla: 0311: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B024 + !WORD _B024-* + !BYTE $66,$06 ; LLW [6] + !BYTE $80 ; NOT +_B024 + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$28 ; CB 40 + !BYTE $76,$04 ; SLW [4] + !BYTE $2A,$18 ; CB 24 + !BYTE $76,$06 ; SLW [6] +_B025 +_B026 +; libsrc/apple/conio.pla: 0312: putc(1) // Reset viewport +; libsrc/apple/conio.pla: 0313: putc(26) +; libsrc/apple/conio.pla: 0314: putc(left) +; libsrc/apple/conio.pla: 0315: putc(top) +; libsrc/apple/conio.pla: 0316: putc(2) +; libsrc/apple/conio.pla: 0317: putc(26) +; libsrc/apple/conio.pla: 0318: putc(left + width - 1) +; libsrc/apple/conio.pla: 0319: putc(top + height - 1) +; libsrc/apple/conio.pla: 0320: putc(3) +; libsrc/apple/conio.pla: 0321: return a3gotoxy(0, 0) + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X002 +_F037 !WORD 0 + !BYTE $2A,$1A ; CB 26 + !BYTE $54 ; CALL _X002 +_F038 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X002 +_F039 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X002 +_F040 !WORD 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X002 +_F041 !WORD 0 + !BYTE $2A,$1A ; CB 26 + !BYTE $54 ; CALL _X002 +_F042 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X002 +_F043 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X002 +_F044 !WORD 0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X002 +_F045 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C023 +_F046 !WORD _C023 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/conio.pla: 0322: end +; libsrc/apple/conio.pla: 0323: def a3texttype(type) + ; type -> [0] +_C025 ; a3texttype() +; libsrc/apple/conio.pla: 0324: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0325: end +; libsrc/apple/conio.pla: 0326: def a3textmode(columns) + ; columns -> [0] +_C026 ; a3textmode() +; libsrc/apple/conio.pla: 0327: puts(@textbwmode) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/conio.pla: 0328: if columns > 40 +; libsrc/apple/conio.pla: 0329: a3viewport(0, 0, 80, 24) +; libsrc/apple/conio.pla: 0330: else + !BYTE $26 ; LA _D043+0 +_F047 !WORD _D043+0 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$28 ; CB 40 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$50 ; CB 80 + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _C024 +_F049 !WORD _C024 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B027 +; libsrc/apple/conio.pla: 0331: a3viewport(0, 0, 40, 24) +; libsrc/apple/conio.pla: 0332: fin + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$28 ; CB 40 + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _C024 +_F050 !WORD _C024 + !BYTE $30 ; DROP +_B028 +; libsrc/apple/conio.pla: 0333: putc(28) +; libsrc/apple/conio.pla: 0334: return 0 + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _X002 +_F051 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/conio.pla: 0335: end +; libsrc/apple/conio.pla: 0336: def a3grmode(mix) + ; mix -> [0] +_C027 ; a3grmode() +; libsrc/apple/conio.pla: 0337: byte i + ; i -> [2] +; libsrc/apple/conio.pla: 0338: if mix + !BYTE $58,$03,$01 ; ENTER 3,1 +; libsrc/apple/conio.pla: 0339: mix = 19 +; libsrc/apple/conio.pla: 0340: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $2A,$13 ; CB 19 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +_B029 +; libsrc/apple/conio.pla: 0341: mix = 23 +; libsrc/apple/conio.pla: 0342: fin + !BYTE $2A,$17 ; CB 23 + !BYTE $76,$00 ; SLW [0] +_B030 +; libsrc/apple/conio.pla: 0343: puts(@textclrmode) +; libsrc/apple/conio.pla: 0344: dev_control(cmdsys.devcons, 17, @grcharset) +; libsrc/apple/conio.pla: 0345: a3viewport(0, 20, 40, 4) +; libsrc/apple/conio.pla: 0346: putc(28) +; libsrc/apple/conio.pla: 0347: for i = 0 to mix + !BYTE $26 ; LA _D044+0 +_F052 !WORD _D044+0 + !BYTE $54 ; CALL _X004 +_F053 !WORD 0 + !BYTE $68 ; LAB _X000+20 +_F054 !WORD 0+20 + !BYTE $2A,$11 ; CB 17 + !BYTE $26 ; LA _D045+0 +_F055 !WORD _D045+0 + !BYTE $54 ; CALL _C018 +_F056 !WORD _C018 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $2A,$14 ; CB 20 + !BYTE $2A,$28 ; CB 40 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C024 +_F057 !WORD _C024 + !BYTE $30 ; DROP + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _X002 +_F058 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B031 + !WORD _B031-* +_B032 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/conio.pla: 0348: memset(txt1scrn[i], $0000, 40) // text screen +; libsrc/apple/conio.pla: 0349: memset(txt2scrn[i], $0000, 40) // color screen +; libsrc/apple/conio.pla: 0350: next + !BYTE $26 ; LA _D041+0 +_F059 !WORD _D041+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $2A,$28 ; CB 40 + !BYTE $54 ; CALL _X017 +_F060 !WORD 0 + !BYTE $26 ; LA _D042+0 +_F061 !WORD _D042+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $2A,$28 ; CB 40 + !BYTE $54 ; CALL _X017 +_F062 !WORD 0 +_B033 + !BYTE $A4 ; INCBRLE _B032 + !WORD _B032-* +_B031 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/conio.pla: 0351: return a2grscrn(@txt2scrn) // point to color screen + !BYTE $26 ; LA _D042+0 +_F063 !WORD _D042+0 + !BYTE $54 ; CALL _A001 +_F064 !WORD _A001 + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/conio.pla: 0352: end +; libsrc/apple/conio.pla: 0353: def a3tone(duration, pitch) + ; duration -> [0] + ; pitch -> [2] +_C028 ; a3tone() +; libsrc/apple/conio.pla: 0354: byte env + ; env -> [4] +; libsrc/apple/conio.pla: 0355: +; libsrc/apple/conio.pla: 0356: env = ^ENV_REG + !BYTE $58,$05,$02 ; ENTER 5,2 +; libsrc/apple/conio.pla: 0357: ^ENV_REG = env | $C0 +; libsrc/apple/conio.pla: 0358: a2tone(duration, pitch) +; libsrc/apple/conio.pla: 0359: ^ENV_REG = env +; libsrc/apple/conio.pla: 0360: return 0 + !BYTE $68,$DF,$FF ; LAB 65503 + !BYTE $6C,$04 ; DLB [4] + !BYTE $3E,$C0 ; ORI 192 + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C016 +_F065 !WORD _C016 + !BYTE $30 ; DROP + !BYTE $64,$04 ; LLB [4] + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/conio.pla: 0361: end +; libsrc/apple/conio.pla: 0362: // +; libsrc/apple/conio.pla: 0363: // Apple 1 and III combined routines. +; libsrc/apple/conio.pla: 0364: // +; libsrc/apple/conio.pla: 0365: def a13getkey +_C029 ; a13getkey() +; libsrc/apple/conio.pla: 0366: while not conio:keypressed() + !BYTE $50 ; BRNCH _B036 + !WORD _B036-* +_B034 +; libsrc/apple/conio.pla: 0367: randnum = randnum + 123 +; libsrc/apple/conio.pla: 0368: loop + !BYTE $6A ; LAW _D046+0 +_F066 !WORD _D046+0 + !BYTE $38,$7B ; ADDI 123 + !BYTE $7A ; SAW _D046+0 +_F067 !WORD _D046+0 +_B036 + !BYTE $6A ; LAW _D040+0 +_F068 !WORD _D040+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* +_B035 +; libsrc/apple/conio.pla: 0369: return getc() + !BYTE $54 ; CALL _X006 +_F069 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0370: end +; libsrc/apple/conio.pla: 0371: def a13rnd +_C030 ; a13rnd() +; libsrc/apple/conio.pla: 0372: randnum = (randnum << 1) + randnum + 123 +; libsrc/apple/conio.pla: 0373: return randnum & $7FFF + !BYTE $6A ; LAW _D046+0 +_F070 !WORD _D046+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $B6 ; ADDAW _D046+0 +_F071 !WORD _D046+0 + !BYTE $38,$7B ; ADDI 123 + !BYTE $7E ; DAW _D046+0 +_F072 !WORD _D046+0 + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $94 ; AND + !BYTE $5C ; RET +; libsrc/apple/conio.pla: 0374: end +; libsrc/apple/conio.pla: 0375: // +; libsrc/apple/conio.pla: 0376: // Machine specific initialization. +; libsrc/apple/conio.pla: 0377: // +; libsrc/apple/conio.pla: 0378: when MACHID & MACHID_MODEL +_INIT + !BYTE $68 ; LAB _X001+0 +_F073 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $52 ; SEL + !WORD _B038-* +; libsrc/apple/conio.pla: 0379: is MACHID_III +_B039 +; libsrc/apple/conio.pla: 0380: conio:keypressed = @a3keypressed +; libsrc/apple/conio.pla: 0381: conio:getkey = @a13getkey +; libsrc/apple/conio.pla: 0382: conio:echo = @a3echo +; libsrc/apple/conio.pla: 0383: conio:home = @a3home +; libsrc/apple/conio.pla: 0384: conio:gotoxy = @a3gotoxy +; libsrc/apple/conio.pla: 0385: conio:viewport = @a3viewport +; libsrc/apple/conio.pla: 0386: conio:texttype = @a3texttype +; libsrc/apple/conio.pla: 0387: conio:textmode = @a3textmode +; libsrc/apple/conio.pla: 0388: conio:grmode = @a3grmode +; libsrc/apple/conio.pla: 0389: conio:tone = @a3tone +; libsrc/apple/conio.pla: 0390: conio:rnd = @a13rnd +; libsrc/apple/conio.pla: 0391: break + !BYTE $26 ; LA _C020+0 +_F074 !WORD _C020+0 + !BYTE $7A ; SAW _D040+0 +_F075 !WORD _D040+0 + !BYTE $26 ; LA _C029+0 +_F076 !WORD _C029+0 + !BYTE $7A ; SAW _D040+2 +_F077 !WORD _D040+2 + !BYTE $26 ; LA _C021+0 +_F078 !WORD _C021+0 + !BYTE $7A ; SAW _D040+4 +_F079 !WORD _D040+4 + !BYTE $26 ; LA _C022+0 +_F080 !WORD _C022+0 + !BYTE $7A ; SAW _D040+6 +_F081 !WORD _D040+6 + !BYTE $26 ; LA _C023+0 +_F082 !WORD _C023+0 + !BYTE $7A ; SAW _D040+8 +_F083 !WORD _D040+8 + !BYTE $26 ; LA _C024+0 +_F084 !WORD _C024+0 + !BYTE $7A ; SAW _D040+10 +_F085 !WORD _D040+10 + !BYTE $26 ; LA _C025+0 +_F086 !WORD _C025+0 + !BYTE $7A ; SAW _D040+12 +_F087 !WORD _D040+12 + !BYTE $26 ; LA _C026+0 +_F088 !WORD _C026+0 + !BYTE $7A ; SAW _D040+14 +_F089 !WORD _D040+14 + !BYTE $26 ; LA _C027+0 +_F090 !WORD _C027+0 + !BYTE $7A ; SAW _D040+16 +_F091 !WORD _D040+16 + !BYTE $26 ; LA _C028+0 +_F092 !WORD _C028+0 + !BYTE $7A ; SAW _D040+22 +_F093 !WORD _D040+22 + !BYTE $26 ; LA _C030+0 +_F094 !WORD _C030+0 + !BYTE $7A ; SAW _D040+24 +_F095 !WORD _D040+24 + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +; libsrc/apple/conio.pla: 0392: is MACHID_I +_B040 +; libsrc/apple/conio.pla: 0393: conio:keypressed = @a1keypressed +; libsrc/apple/conio.pla: 0394: conio:getkey = @a13getkey +; libsrc/apple/conio.pla: 0395: conio:home = @a1home +; libsrc/apple/conio.pla: 0396: conio:gotoxy = @a1gotoxy +; libsrc/apple/conio.pla: 0397: conio:viewport = @a1viewport +; libsrc/apple/conio.pla: 0398: conio:texttype = @a1texttype +; libsrc/apple/conio.pla: 0399: conio:textmode = @a1textmode +; libsrc/apple/conio.pla: 0400: conio:grmode = @a1grmode +; libsrc/apple/conio.pla: 0401: conio:tone = @a1tone +; libsrc/apple/conio.pla: 0402: conio:rnd = @a13rnd +; libsrc/apple/conio.pla: 0403: break + !BYTE $26 ; LA _C000+0 +_F096 !WORD _C000+0 + !BYTE $7A ; SAW _D040+0 +_F097 !WORD _D040+0 + !BYTE $26 ; LA _C029+0 +_F098 !WORD _C029+0 + !BYTE $7A ; SAW _D040+2 +_F099 !WORD _D040+2 + !BYTE $26 ; LA _C002+0 +_F100 !WORD _C002+0 + !BYTE $7A ; SAW _D040+6 +_F101 !WORD _D040+6 + !BYTE $26 ; LA _C003+0 +_F102 !WORD _C003+0 + !BYTE $7A ; SAW _D040+8 +_F103 !WORD _D040+8 + !BYTE $26 ; LA _C004+0 +_F104 !WORD _C004+0 + !BYTE $7A ; SAW _D040+10 +_F105 !WORD _D040+10 + !BYTE $26 ; LA _C005+0 +_F106 !WORD _C005+0 + !BYTE $7A ; SAW _D040+12 +_F107 !WORD _D040+12 + !BYTE $26 ; LA _C006+0 +_F108 !WORD _C006+0 + !BYTE $7A ; SAW _D040+14 +_F109 !WORD _D040+14 + !BYTE $26 ; LA _C007+0 +_F110 !WORD _C007+0 + !BYTE $7A ; SAW _D040+16 +_F111 !WORD _D040+16 + !BYTE $26 ; LA _C008+0 +_F112 !WORD _C008+0 + !BYTE $7A ; SAW _D040+22 +_F113 !WORD _D040+22 + !BYTE $26 ; LA _C030+0 +_F114 !WORD _C030+0 + !BYTE $7A ; SAW _D040+24 +_F115 !WORD _D040+24 + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +; libsrc/apple/conio.pla: 0404: otherwise // MACHID_II puts("Found MACHID_MODEL = $"); putb(MACHID & MACHID_MODEL); putln +_B038 + !BYTE $02 ; CASEBLOCK + !WORD $0008 + !WORD _B040-* + !WORD $00C0 + !WORD _B039-* +; libsrc/apple/conio.pla: 0405: wend +_B037 +; libsrc/apple/conio.pla: 0406: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 32 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C024 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C025 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C026 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C027 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C028 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C029 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C030 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/dgrlib.a b/src/libsrc/apple/dgrlib.a new file mode 100644 index 0000000..65dc9b8 --- /dev/null +++ b/src/libsrc/apple/dgrlib.a @@ -0,0 +1,1839 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/dgrlib.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/dgrlib.pla: 0001: +; libsrc/apple/dgrlib.pla: 0002: // +; libsrc/apple/dgrlib.pla: 0003: // Apple II hardware constants. +; libsrc/apple/dgrlib.pla: 0004: // +; libsrc/apple/dgrlib.pla: 0005: const showgraphics = $C050 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; showgraphics = 49232 +; libsrc/apple/dgrlib.pla: 0006: const showtext = $C051 + ; showtext = 49233 +; libsrc/apple/dgrlib.pla: 0007: const showfull = $C052 + ; showfull = 49234 +; libsrc/apple/dgrlib.pla: 0008: const showmix = $C053 + ; showmix = 49235 +; libsrc/apple/dgrlib.pla: 0009: const showpage1 = $C054 + ; showpage1 = 49236 +; libsrc/apple/dgrlib.pla: 0010: const showpage2 = $C055 + ; showpage2 = 49237 +; libsrc/apple/dgrlib.pla: 0011: const showlores = $C056 + ; showlores = 49238 +; libsrc/apple/dgrlib.pla: 0012: const showhires = $C057 + ; showhires = 49239 +; libsrc/apple/dgrlib.pla: 0013: const show40 = $C00C + ; show40 = 49164 +; libsrc/apple/dgrlib.pla: 0014: const show80 = $C00D + ; show80 = 49165 +; libsrc/apple/dgrlib.pla: 0015: const mapmain = $C000 + ; mapmain = 49152 +; libsrc/apple/dgrlib.pla: 0016: const mapaux = $C001 + ; mapaux = 49153 +; libsrc/apple/dgrlib.pla: 0017: const an3on = $C05E + ; an3on = 49246 +; libsrc/apple/dgrlib.pla: 0018: const an3off = $C05F + ; an3off = 49247 +; libsrc/apple/dgrlib.pla: 0019: const ena80 = $C07E + ; ena80 = 49278 +; libsrc/apple/dgrlib.pla: 0020: const dis80 = $C07F + ; dis80 = 49279 +; libsrc/apple/dgrlib.pla: 0021: const page1 = 0 + ; page1 = 0 +; libsrc/apple/dgrlib.pla: 0022: const page2 = 1 + ; page2 = 1 +; libsrc/apple/dgrlib.pla: 0023: // +; libsrc/apple/dgrlib.pla: 0024: // Screen row address arrays. +; libsrc/apple/dgrlib.pla: 0025: // +; libsrc/apple/dgrlib.pla: 0026: word[] dgr1row = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 +_D028 ; dgr1row = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 + !WORD $0400 + !WORD $0480 + !WORD $0500 + !WORD $0580 + !WORD $0600 + !WORD $0680 + !WORD $0700 + !WORD $0780 +; libsrc/apple/dgrlib.pla: 0027: word = $0428,$04A8,$0528,$05A8,$0628,$06A8,$0728,$07A8 + !WORD $0428 + !WORD $04A8 + !WORD $0528 + !WORD $05A8 + !WORD $0628 + !WORD $06A8 + !WORD $0728 + !WORD $07A8 +; libsrc/apple/dgrlib.pla: 0028: word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0 + !WORD $0450 + !WORD $04D0 + !WORD $0550 + !WORD $05D0 + !WORD $0650 + !WORD $06D0 + !WORD $0750 + !WORD $07D0 +; libsrc/apple/dgrlib.pla: 0029: word[] dgr2row = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 +_D029 ; dgr2row = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 + !WORD $0800 + !WORD $0880 + !WORD $0900 + !WORD $0980 + !WORD $0A00 + !WORD $0A80 + !WORD $0B00 + !WORD $0B80 +; libsrc/apple/dgrlib.pla: 0030: word = $0828,$08A8,$0928,$09A8,$0A28,$0AA8,$0B28,$0BA8 + !WORD $0828 + !WORD $08A8 + !WORD $0928 + !WORD $09A8 + !WORD $0A28 + !WORD $0AA8 + !WORD $0B28 + !WORD $0BA8 +; libsrc/apple/dgrlib.pla: 0031: word = $0850,$08D0,$0950,$09D0,$0A50,$0AD0,$0B50,$0BD0 + !WORD $0850 + !WORD $08D0 + !WORD $0950 + !WORD $09D0 + !WORD $0A50 + !WORD $0AD0 + !WORD $0B50 + !WORD $0BD0 +; libsrc/apple/dgrlib.pla: 0032: word[] dgrbuff = @dgr1row, @dgr2row +_D030 ; dgrbuff = @dgr1row, @dgr2row +_F000 !WORD _D028 +_F001 !WORD _D029 +; libsrc/apple/dgrlib.pla: 0033: word drawbuff +_D031 !FILL 2 ; drawbuff +; libsrc/apple/dgrlib.pla: 0034: byte drawpage +_D032 !FILL 1 ; drawpage +; libsrc/apple/dgrlib.pla: 0035: // +; libsrc/apple/dgrlib.pla: 0036: // Color mapping. +; libsrc/apple/dgrlib.pla: 0037: // +; libsrc/apple/dgrlib.pla: 0038: byte[] evnclr = $00,$88,$11,$99,$22,$AA,$33,$BB +_D033 ; evnclr = $00,$88,$11,$99,$22,$AA,$33,$BB + !BYTE $00 + !BYTE $88 + !BYTE $11 + !BYTE $99 + !BYTE $22 + !BYTE $AA + !BYTE $33 + !BYTE $BB +; libsrc/apple/dgrlib.pla: 0039: byte[] = $44,$CC,$55,$DD,$66,$EE,$77,$FF + !BYTE $44 + !BYTE $CC + !BYTE $55 + !BYTE $DD + !BYTE $66 + !BYTE $EE + !BYTE $77 + !BYTE $FF +; libsrc/apple/dgrlib.pla: 0040: byte[] oddclr = $00,$11,$22,$33,$44,$55,$66,$77 +_D034 ; oddclr = $00,$11,$22,$33,$44,$55,$66,$77 + !BYTE $00 + !BYTE $11 + !BYTE $22 + !BYTE $33 + !BYTE $44 + !BYTE $55 + !BYTE $66 + !BYTE $77 +; libsrc/apple/dgrlib.pla: 0041: byte[] = $88,$99,$AA,$BB,$CC,$DD,$EE,$FF + !BYTE $88 + !BYTE $99 + !BYTE $AA + !BYTE $BB + !BYTE $CC + !BYTE $DD + !BYTE $EE + !BYTE $FF +; libsrc/apple/dgrlib.pla: 0042: +; libsrc/apple/dgrlib.pla: 0043: asm dgrInc(buff) +_A000 ; dgrInc() +; libsrc/apple/dgrlib.pla: 0044: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/dgrlib.pla: 0045: GBASL = $26 +GBASL = $26 +; libsrc/apple/dgrlib.pla: 0046: GBASH = $27 +GBASH = $27 +; libsrc/apple/dgrlib.pla: 0047: GBASE = GBASL +GBASE = GBASL +; libsrc/apple/dgrlib.pla: 0048: GCLR = $30 +GCLR = $30 +; libsrc/apple/dgrlib.pla: 0049: end +; libsrc/apple/dgrlib.pla: 0050: // +; libsrc/apple/dgrlib.pla: 0051: // Plot pixel +; libsrc/apple/dgrlib.pla: 0052: // +; libsrc/apple/dgrlib.pla: 0053: export asm dgrPlot(x, y)#0 +_A001 ; dgrPlot() +; libsrc/apple/dgrlib.pla: 0054: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/dgrlib.pla: 0055: LDA $3000 + LDA $3000 +; libsrc/apple/dgrlib.pla: 0056: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0057: LDA $3001 + LDA $3001 +; libsrc/apple/dgrlib.pla: 0058: STA SRCH + STA SRCH +; libsrc/apple/dgrlib.pla: 0059: STX ESP + STX ESP +; libsrc/apple/dgrlib.pla: 0060: LDA ESTKL,X ; Y COORD + LDA ESTKL,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0061: AND #$FE + AND #$FE +; libsrc/apple/dgrlib.pla: 0062: TAY + TAY +; libsrc/apple/dgrlib.pla: 0063: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0064: STA GBASL + STA GBASL +; libsrc/apple/dgrlib.pla: 0065: INY + INY +; libsrc/apple/dgrlib.pla: 0066: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0067: STA GBASH + STA GBASH +; libsrc/apple/dgrlib.pla: 0068: LDA ESTKL+1,X ; X COORD + LDA ESTKL+1,X ; X COORD +; libsrc/apple/dgrlib.pla: 0069: LSR ESTKL,X + LSR ESTKL,X +; libsrc/apple/dgrlib.pla: 0070: LDX GCLR ; COLOR + LDX GCLR ; COLOR +; libsrc/apple/dgrlib.pla: 0071: PHP + PHP +; libsrc/apple/dgrlib.pla: 0072: SEI + SEI +; libsrc/apple/dgrlib.pla: 0073: end +; libsrc/apple/dgrlib.pla: 0074: asm _dgrPlotPix +_A002 ; _dgrPlotPix() +; libsrc/apple/dgrlib.pla: 0075: JSR $3000 ; _dgrSetPix + JSR $3000 ; _dgrSetPix +; libsrc/apple/dgrlib.pla: 0076: PLP + PLP +; libsrc/apple/dgrlib.pla: 0077: LDX ESP + LDX ESP +; libsrc/apple/dgrlib.pla: 0078: INX + INX +; libsrc/apple/dgrlib.pla: 0079: INX + INX +; libsrc/apple/dgrlib.pla: 0080: RTS + RTS +; libsrc/apple/dgrlib.pla: 0081: end +; libsrc/apple/dgrlib.pla: 0082: // +; libsrc/apple/dgrlib.pla: 0083: // Plot horizontal row of pixels +; libsrc/apple/dgrlib.pla: 0084: // +; libsrc/apple/dgrlib.pla: 0085: export asm dgrHLin(x1, x2, y)#0 +_A003 ; dgrHLin() +; libsrc/apple/dgrlib.pla: 0086: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/dgrlib.pla: 0087: LDA $3000 + LDA $3000 +; libsrc/apple/dgrlib.pla: 0088: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0089: LDA $3001 + LDA $3001 +; libsrc/apple/dgrlib.pla: 0090: STA SRCH + STA SRCH +; libsrc/apple/dgrlib.pla: 0091: STX ESP + STX ESP +; libsrc/apple/dgrlib.pla: 0092: LDA ESTKL+1,X ; X2 COORD + LDA ESTKL+1,X ; X2 COORD +; libsrc/apple/dgrlib.pla: 0093: STA TMPH + STA TMPH +; libsrc/apple/dgrlib.pla: 0094: LDA ESTKL+0,X ; Y COORD + LDA ESTKL+0,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0095: AND #$FE + AND #$FE +; libsrc/apple/dgrlib.pla: 0096: TAY + TAY +; libsrc/apple/dgrlib.pla: 0097: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0098: STA GBASL + STA GBASL +; libsrc/apple/dgrlib.pla: 0099: INY + INY +; libsrc/apple/dgrlib.pla: 0100: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0101: STA GBASH + STA GBASH +; libsrc/apple/dgrlib.pla: 0102: LDY ESTKL+2,X ; X1 COORD + LDY ESTKL+2,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0103: PHP + PHP +; libsrc/apple/dgrlib.pla: 0104: SEI + SEI +; libsrc/apple/dgrlib.pla: 0105: - LDA ESTKL+0,X ; Y COORD +- LDA ESTKL+0,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0106: LSR + LSR +; libsrc/apple/dgrlib.pla: 0107: TYA + TYA +; libsrc/apple/dgrlib.pla: 0108: LDX GCLR ; COLOR + LDX GCLR ; COLOR +; libsrc/apple/dgrlib.pla: 0109: end +; libsrc/apple/dgrlib.pla: 0110: asm _dgrHLinPix +_A004 ; _dgrHLinPix() +; libsrc/apple/dgrlib.pla: 0111: JSR $3000 ; _dgrSetPix + JSR $3000 ; _dgrSetPix +; libsrc/apple/dgrlib.pla: 0112: LDX ESP + LDX ESP +; libsrc/apple/dgrlib.pla: 0113: INC ESTKL+2,X ; X1 COORD + INC ESTKL+2,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0114: LDY ESTKL+2,X + LDY ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0115: CPY TMPH ; X2 COORD + CPY TMPH ; X2 COORD +; libsrc/apple/dgrlib.pla: 0116: BCC - + BCC - +; libsrc/apple/dgrlib.pla: 0117: BEQ - + BEQ - +; libsrc/apple/dgrlib.pla: 0118: PLP + PLP +; libsrc/apple/dgrlib.pla: 0119: INX + INX +; libsrc/apple/dgrlib.pla: 0120: INX + INX +; libsrc/apple/dgrlib.pla: 0121: INX + INX +; libsrc/apple/dgrlib.pla: 0122: RTS + RTS +; libsrc/apple/dgrlib.pla: 0123: end +; libsrc/apple/dgrlib.pla: 0124: // +; libsrc/apple/dgrlib.pla: 0125: // Plot horizontal row of pixels +; libsrc/apple/dgrlib.pla: 0126: // +; libsrc/apple/dgrlib.pla: 0127: export asm dgrVLin(y1, y2, x)#0 +_A005 ; dgrVLin() +; libsrc/apple/dgrlib.pla: 0128: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/dgrlib.pla: 0129: LDA $3000 + LDA $3000 +; libsrc/apple/dgrlib.pla: 0130: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0131: LDA $3001 + LDA $3001 +; libsrc/apple/dgrlib.pla: 0132: STA SRCH + STA SRCH +; libsrc/apple/dgrlib.pla: 0133: STX ESP + STX ESP +; libsrc/apple/dgrlib.pla: 0134: LDA ESTKL+2,X ; Y1 COORD + LDA ESTKL+2,X ; Y1 COORD +; libsrc/apple/dgrlib.pla: 0135: PHP + PHP +; libsrc/apple/dgrlib.pla: 0136: SEI + SEI +; libsrc/apple/dgrlib.pla: 0137: - AND #$FE +- AND #$FE +; libsrc/apple/dgrlib.pla: 0138: TAY + TAY +; libsrc/apple/dgrlib.pla: 0139: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0140: STA GBASL + STA GBASL +; libsrc/apple/dgrlib.pla: 0141: INY + INY +; libsrc/apple/dgrlib.pla: 0142: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0143: STA GBASH + STA GBASH +; libsrc/apple/dgrlib.pla: 0144: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0145: LSR + LSR +; libsrc/apple/dgrlib.pla: 0146: LDA ESTKL+0,X ; X COORD + LDA ESTKL+0,X ; X COORD +; libsrc/apple/dgrlib.pla: 0147: LDX GCLR ; COLOR + LDX GCLR ; COLOR +; libsrc/apple/dgrlib.pla: 0148: end +; libsrc/apple/dgrlib.pla: 0149: asm _dgrVLinPix +_A006 ; _dgrVLinPix() +; libsrc/apple/dgrlib.pla: 0150: JSR $3000 ; _dgrSetPix + JSR $3000 ; _dgrSetPix +; libsrc/apple/dgrlib.pla: 0151: LDX ESP + LDX ESP +; libsrc/apple/dgrlib.pla: 0152: INC ESTKL+2,X ; Y1 COORD + INC ESTKL+2,X ; Y1 COORD +; libsrc/apple/dgrlib.pla: 0153: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0154: CMP ESTKL+1,X ; Y2 COORD + CMP ESTKL+1,X ; Y2 COORD +; libsrc/apple/dgrlib.pla: 0155: BCC - + BCC - +; libsrc/apple/dgrlib.pla: 0156: BEQ - + BEQ - +; libsrc/apple/dgrlib.pla: 0157: PLP + PLP +; libsrc/apple/dgrlib.pla: 0158: INX + INX +; libsrc/apple/dgrlib.pla: 0159: INX + INX +; libsrc/apple/dgrlib.pla: 0160: INX + INX +; libsrc/apple/dgrlib.pla: 0161: RTS + RTS +; libsrc/apple/dgrlib.pla: 0162: end +; libsrc/apple/dgrlib.pla: 0163: // +; libsrc/apple/dgrlib.pla: 0164: // Draw sprite +; libsrc/apple/dgrlib.pla: 0165: // +; libsrc/apple/dgrlib.pla: 0166: export asm dgrBLT(x, y, width, height, src)#0 +_A007 ; dgrBLT() +; libsrc/apple/dgrlib.pla: 0167: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/dgrlib.pla: 0168: LDA $3000 + LDA $3000 +; libsrc/apple/dgrlib.pla: 0169: STA DSTL + STA DSTL +; libsrc/apple/dgrlib.pla: 0170: LDA $3001 + LDA $3001 +; libsrc/apple/dgrlib.pla: 0171: STA DSTH + STA DSTH +; libsrc/apple/dgrlib.pla: 0172: LDA ESTKL,X ; SPRITE + LDA ESTKL,X ; SPRITE +; libsrc/apple/dgrlib.pla: 0173: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0174: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/dgrlib.pla: 0175: STA SRCH + STA SRCH +; libsrc/apple/dgrlib.pla: 0176: LDA ESTKL+4,X ; X1 COORD + LDA ESTKL+4,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0177: CMP #80 + CMP #80 +; libsrc/apple/dgrlib.pla: 0178: BPL ++++ + BPL ++++ +; libsrc/apple/dgrlib.pla: 0179: CLC + CLC +; libsrc/apple/dgrlib.pla: 0180: ADC ESTKL+2,X + ADC ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0181: BMI ++++ + BMI ++++ +; libsrc/apple/dgrlib.pla: 0182: STA ESTKH+2,X ; X2 COORD + STA ESTKH+2,X ; X2 COORD +; libsrc/apple/dgrlib.pla: 0183: LDA ESTKL+3,X ; Y1 COORD + LDA ESTKL+3,X ; Y1 COORD +; libsrc/apple/dgrlib.pla: 0184: CMP #48 + CMP #48 +; libsrc/apple/dgrlib.pla: 0185: BPL ++++ + BPL ++++ +; libsrc/apple/dgrlib.pla: 0186: STA ESTKH+3,X ; Y COORD + STA ESTKH+3,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0187: CLC + CLC +; libsrc/apple/dgrlib.pla: 0188: ADC ESTKL+1,X + ADC ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0189: BMI ++++ + BMI ++++ +; libsrc/apple/dgrlib.pla: 0190: STA ESTKH+1,X ; Y2 COORD + STA ESTKH+1,X ; Y2 COORD +; libsrc/apple/dgrlib.pla: 0191: STX ESP + STX ESP +; libsrc/apple/dgrlib.pla: 0192: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/apple/dgrlib.pla: 0193: - CMP #48 +- CMP #48 +; libsrc/apple/dgrlib.pla: 0194: BCC + + BCC + +; libsrc/apple/dgrlib.pla: 0195: LDA SRCL ; SKIP TO NEXT ROW + LDA SRCL ; SKIP TO NEXT ROW +; libsrc/apple/dgrlib.pla: 0196: CLC + CLC +; libsrc/apple/dgrlib.pla: 0197: ADC ESTKL+2,X ; WIDTH + ADC ESTKL+2,X ; WIDTH +; libsrc/apple/dgrlib.pla: 0198: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0199: BCC +++ + BCC +++ +; libsrc/apple/dgrlib.pla: 0200: INC SRCH + INC SRCH +; libsrc/apple/dgrlib.pla: 0201: BNE +++ + BNE +++ +; libsrc/apple/dgrlib.pla: 0202: + AND #$FE ++ AND #$FE +; libsrc/apple/dgrlib.pla: 0203: TAY + TAY +; libsrc/apple/dgrlib.pla: 0204: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/dgrlib.pla: 0205: STA GBASL + STA GBASL +; libsrc/apple/dgrlib.pla: 0206: INY + INY +; libsrc/apple/dgrlib.pla: 0207: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/dgrlib.pla: 0208: STA GBASH + STA GBASH +; libsrc/apple/dgrlib.pla: 0209: LDA ESTKL+4,X ; X1 COORD + LDA ESTKL+4,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0210: STA ESTKH+4,X ; X COORD + STA ESTKH+4,X ; X COORD +; libsrc/apple/dgrlib.pla: 0211: PHP + PHP +; libsrc/apple/dgrlib.pla: 0212: SEI + SEI +; libsrc/apple/dgrlib.pla: 0213: -- CMP #80 +-- CMP #80 +; libsrc/apple/dgrlib.pla: 0214: BCS ++ + BCS ++ +; libsrc/apple/dgrlib.pla: 0215: STA TMP + STA TMP +; libsrc/apple/dgrlib.pla: 0216: LDA ESTKH+3,X ; Y COORD + LDA ESTKH+3,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0217: LSR + LSR +; libsrc/apple/dgrlib.pla: 0218: LDY #$00 + LDY #$00 +; libsrc/apple/dgrlib.pla: 0219: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/dgrlib.pla: 0220: BMI ++ + BMI ++ +; libsrc/apple/dgrlib.pla: 0221: TAX + TAX +; libsrc/apple/dgrlib.pla: 0222: LDA TMP + LDA TMP +; libsrc/apple/dgrlib.pla: 0223: end +; libsrc/apple/dgrlib.pla: 0224: asm _dgrBLTPix +_A008 ; _dgrBLTPix() +; libsrc/apple/dgrlib.pla: 0225: JSR $4000 ; _dgrSetPix + JSR $4000 ; _dgrSetPix +; libsrc/apple/dgrlib.pla: 0226: LDX ESP + LDX ESP +; libsrc/apple/dgrlib.pla: 0227: ++ INC SRCL +++ INC SRCL +; libsrc/apple/dgrlib.pla: 0228: BNE + + BNE + +; libsrc/apple/dgrlib.pla: 0229: INC SRCH + INC SRCH +; libsrc/apple/dgrlib.pla: 0230: + INC ESTKH+4,X ; X COORD ++ INC ESTKH+4,X ; X COORD +; libsrc/apple/dgrlib.pla: 0231: LDA ESTKH+4,X + LDA ESTKH+4,X +; libsrc/apple/dgrlib.pla: 0232: BMI -- + BMI -- +; libsrc/apple/dgrlib.pla: 0233: CMP ESTKH+2,X ; X2 COORD + CMP ESTKH+2,X ; X2 COORD +; libsrc/apple/dgrlib.pla: 0234: BCC -- + BCC -- +; libsrc/apple/dgrlib.pla: 0235: PLP + PLP +; libsrc/apple/dgrlib.pla: 0236: +++ INC ESTKH+3,X ; Y COORD ++++ INC ESTKH+3,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0237: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/apple/dgrlib.pla: 0238: BMI - + BMI - +; libsrc/apple/dgrlib.pla: 0239: CMP ESTKH+1,X ; Y2 COORD + CMP ESTKH+1,X ; Y2 COORD +; libsrc/apple/dgrlib.pla: 0240: BCC - + BCC - +; libsrc/apple/dgrlib.pla: 0241: ++++ INX +++++ INX +; libsrc/apple/dgrlib.pla: 0242: INX + INX +; libsrc/apple/dgrlib.pla: 0243: INX + INX +; libsrc/apple/dgrlib.pla: 0244: INX + INX +; libsrc/apple/dgrlib.pla: 0245: INX + INX +; libsrc/apple/dgrlib.pla: 0246: RTS + RTS +; libsrc/apple/dgrlib.pla: 0247: end +; libsrc/apple/dgrlib.pla: 0248: // +; libsrc/apple/dgrlib.pla: 0249: // Internal set pixel routine +; libsrc/apple/dgrlib.pla: 0250: // - It expects the carry to be set for even or odd scanlines. Bad. +; libsrc/apple/dgrlib.pla: 0251: // - ACCUM has horizontal coordinate +; libsrc/apple/dgrlib.pla: 0252: // - X_REG has color +; libsrc/apple/dgrlib.pla: 0253: // - GBASE points to scanline +; libsrc/apple/dgrlib.pla: 0254: // +; libsrc/apple/dgrlib.pla: 0255: asm _dgrSetPix +_A009 ; _dgrSetPix() +; libsrc/apple/dgrlib.pla: 0256: BCS ++ + BCS ++ +; libsrc/apple/dgrlib.pla: 0257: ; EVEN ROW + ; EVEN ROW +; libsrc/apple/dgrlib.pla: 0258: LSR + LSR +; libsrc/apple/dgrlib.pla: 0259: TAY + TAY +; libsrc/apple/dgrlib.pla: 0260: BCS + + BCS + +; libsrc/apple/dgrlib.pla: 0261: end +; libsrc/apple/dgrlib.pla: 0262: asm _dgrSetEvnEvn +_A010 ; _dgrSetEvnEvn() +; libsrc/apple/dgrlib.pla: 0263: ; EVEN PIXEL + ; EVEN PIXEL +; libsrc/apple/dgrlib.pla: 0264: LDA $2000,X + LDA $2000,X +; libsrc/apple/dgrlib.pla: 0265: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0266: STA TMP + STA TMP +; libsrc/apple/dgrlib.pla: 0267: JSR $0100 ; LDA AUX (DST),Y + JSR $0100 ; LDA AUX (DST),Y +; libsrc/apple/dgrlib.pla: 0268: AND #$F0 + AND #$F0 +; libsrc/apple/dgrlib.pla: 0269: ORA TMP + ORA TMP +; libsrc/apple/dgrlib.pla: 0270: STA $C005 ; WRITE AUX MEM + STA $C005 ; WRITE AUX MEM +; libsrc/apple/dgrlib.pla: 0271: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0272: STA $C004 ; WRITE MAIN MEM + STA $C004 ; WRITE MAIN MEM +; libsrc/apple/dgrlib.pla: 0273: RTS + RTS +; libsrc/apple/dgrlib.pla: 0274: end +; libsrc/apple/dgrlib.pla: 0275: asm _dgrSetEvnOdd +_A011 ; _dgrSetEvnOdd() +; libsrc/apple/dgrlib.pla: 0276: ; ODD PIXEL + ; ODD PIXEL +; libsrc/apple/dgrlib.pla: 0277: + LDA $1000,X ++ LDA $1000,X +; libsrc/apple/dgrlib.pla: 0278: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0279: STA TMP + STA TMP +; libsrc/apple/dgrlib.pla: 0280: LDA (GBASE),Y + LDA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0281: AND #$F0 + AND #$F0 +; libsrc/apple/dgrlib.pla: 0282: ORA TMP + ORA TMP +; libsrc/apple/dgrlib.pla: 0283: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0284: RTS + RTS +; libsrc/apple/dgrlib.pla: 0285: ; ODD ROW + ; ODD ROW +; libsrc/apple/dgrlib.pla: 0286: ++ LSR +++ LSR +; libsrc/apple/dgrlib.pla: 0287: TAY + TAY +; libsrc/apple/dgrlib.pla: 0288: BCS +++ + BCS +++ +; libsrc/apple/dgrlib.pla: 0289: end +; libsrc/apple/dgrlib.pla: 0290: asm _dgrSetOddEvn +_A012 ; _dgrSetOddEvn() +; libsrc/apple/dgrlib.pla: 0291: ; EVEN PIXEL + ; EVEN PIXEL +; libsrc/apple/dgrlib.pla: 0292: LDA $2000,X + LDA $2000,X +; libsrc/apple/dgrlib.pla: 0293: AND #$F0 + AND #$F0 +; libsrc/apple/dgrlib.pla: 0294: STA TMP + STA TMP +; libsrc/apple/dgrlib.pla: 0295: JSR $0100 ; LDA AUX (DST),Y + JSR $0100 ; LDA AUX (DST),Y +; libsrc/apple/dgrlib.pla: 0296: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0297: ORA TMP + ORA TMP +; libsrc/apple/dgrlib.pla: 0298: STA $C005 ; WRITE AUX MEM + STA $C005 ; WRITE AUX MEM +; libsrc/apple/dgrlib.pla: 0299: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0300: STA $C004 ; WRITE MAIN MEM + STA $C004 ; WRITE MAIN MEM +; libsrc/apple/dgrlib.pla: 0301: RTS + RTS +; libsrc/apple/dgrlib.pla: 0302: end +; libsrc/apple/dgrlib.pla: 0303: asm _dgrSetOddOdd +_A013 ; _dgrSetOddOdd() +; libsrc/apple/dgrlib.pla: 0304: ; ODD PIXEL + ; ODD PIXEL +; libsrc/apple/dgrlib.pla: 0305: +++ LDA $1000,X ++++ LDA $1000,X +; libsrc/apple/dgrlib.pla: 0306: AND #$F0 + AND #$F0 +; libsrc/apple/dgrlib.pla: 0307: STA TMP + STA TMP +; libsrc/apple/dgrlib.pla: 0308: LDA (GBASE),Y + LDA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0309: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0310: ORA TMP + ORA TMP +; libsrc/apple/dgrlib.pla: 0311: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0312: RTS + RTS +; libsrc/apple/dgrlib.pla: 0313: end +; libsrc/apple/dgrlib.pla: 0314: // +; libsrc/apple/dgrlib.pla: 0315: // This gets copied to $0100!!! +; libsrc/apple/dgrlib.pla: 0316: // +; libsrc/apple/dgrlib.pla: 0317: asm auxRead +_A014 ; auxRead() +; libsrc/apple/dgrlib.pla: 0318: STA $C003 ; READ AUX MEM + STA $C003 ; READ AUX MEM +; libsrc/apple/dgrlib.pla: 0319: LDA (GBASE),Y + LDA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0320: STA $C002 ; READ MAIN MEM + STA $C002 ; READ MAIN MEM +; libsrc/apple/dgrlib.pla: 0321: RTS + RTS +; libsrc/apple/dgrlib.pla: 0322: end +; libsrc/apple/dgrlib.pla: 0323: // +; libsrc/apple/dgrlib.pla: 0324: // Draw 8x8 tile (forced to 2x2 block address) +; libsrc/apple/dgrlib.pla: 0325: // +; libsrc/apple/dgrlib.pla: 0326: export asm dgrTile(x, y, src)#0 +_A015 ; dgrTile() +; libsrc/apple/dgrlib.pla: 0327: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/dgrlib.pla: 0328: LDA $3000 + LDA $3000 +; libsrc/apple/dgrlib.pla: 0329: STA DSTL + STA DSTL +; libsrc/apple/dgrlib.pla: 0330: LDA $3001 + LDA $3001 +; libsrc/apple/dgrlib.pla: 0331: STA DSTH + STA DSTH +; libsrc/apple/dgrlib.pla: 0332: STX ESP + STX ESP +; libsrc/apple/dgrlib.pla: 0333: LDA ESTKL,X ; TILE + LDA ESTKL,X ; TILE +; libsrc/apple/dgrlib.pla: 0334: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0335: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/dgrlib.pla: 0336: STA SRCH + STA SRCH +; libsrc/apple/dgrlib.pla: 0337: LDA ESTKL+2,X ; X1 COORD + LDA ESTKL+2,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0338: CMP #80 + CMP #80 +; libsrc/apple/dgrlib.pla: 0339: BPL ++++ + BPL ++++ +; libsrc/apple/dgrlib.pla: 0340: CLC + CLC +; libsrc/apple/dgrlib.pla: 0341: ADC #$08 + ADC #$08 +; libsrc/apple/dgrlib.pla: 0342: BMI ++++ + BMI ++++ +; libsrc/apple/dgrlib.pla: 0343: STA ESTKH+2,X ; X2 COORD + STA ESTKH+2,X ; X2 COORD +; libsrc/apple/dgrlib.pla: 0344: LDA ESTKL+1,X ; Y1 COORD + LDA ESTKL+1,X ; Y1 COORD +; libsrc/apple/dgrlib.pla: 0345: CMP #48 + CMP #48 +; libsrc/apple/dgrlib.pla: 0346: BPL ++++ + BPL ++++ +; libsrc/apple/dgrlib.pla: 0347: STA TMPL ; Y COORD + STA TMPL ; Y COORD +; libsrc/apple/dgrlib.pla: 0348: CLC + CLC +; libsrc/apple/dgrlib.pla: 0349: ADC #$08 + ADC #$08 +; libsrc/apple/dgrlib.pla: 0350: BMI ++++ + BMI ++++ +; libsrc/apple/dgrlib.pla: 0351: STA ESTKH+1,X ; Y2 COORD + STA ESTKH+1,X ; Y2 COORD +; libsrc/apple/dgrlib.pla: 0352: LDA TMPL ; Y COORD + LDA TMPL ; Y COORD +; libsrc/apple/dgrlib.pla: 0353: - CMP #48 +- CMP #48 +; libsrc/apple/dgrlib.pla: 0354: BCC + + BCC + +; libsrc/apple/dgrlib.pla: 0355: LDA SRCL ; SKIP TO NEXT ROW + LDA SRCL ; SKIP TO NEXT ROW +; libsrc/apple/dgrlib.pla: 0356: ADC #$07 ; CARRY = 1 + ADC #$07 ; CARRY = 1 +; libsrc/apple/dgrlib.pla: 0357: STA SRCL + STA SRCL +; libsrc/apple/dgrlib.pla: 0358: BCC +++ + BCC +++ +; libsrc/apple/dgrlib.pla: 0359: INC SRCH + INC SRCH +; libsrc/apple/dgrlib.pla: 0360: BNE +++ + BNE +++ +; libsrc/apple/dgrlib.pla: 0361: + AND #$FE ++ AND #$FE +; libsrc/apple/dgrlib.pla: 0362: TAY + TAY +; libsrc/apple/dgrlib.pla: 0363: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/dgrlib.pla: 0364: STA GBASL + STA GBASL +; libsrc/apple/dgrlib.pla: 0365: INY + INY +; libsrc/apple/dgrlib.pla: 0366: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/dgrlib.pla: 0367: STA GBASH + STA GBASH +; libsrc/apple/dgrlib.pla: 0368: LDA ESTKL+2,X ; X1 COORD + LDA ESTKL+2,X ; X1 COORD +; libsrc/apple/dgrlib.pla: 0369: STA TMPH ; X COORD + STA TMPH ; X COORD +; libsrc/apple/dgrlib.pla: 0370: PHP + PHP +; libsrc/apple/dgrlib.pla: 0371: SEI + SEI +; libsrc/apple/dgrlib.pla: 0372: -- LSR +-- LSR +; libsrc/apple/dgrlib.pla: 0373: TAY + TAY +; libsrc/apple/dgrlib.pla: 0374: CMP #40 + CMP #40 +; libsrc/apple/dgrlib.pla: 0375: LDX #$00 + LDX #$00 +; libsrc/apple/dgrlib.pla: 0376: LDA (SRC,X) + LDA (SRC,X) +; libsrc/apple/dgrlib.pla: 0377: INC SRCL + INC SRCL +; libsrc/apple/dgrlib.pla: 0378: BNE + + BNE + +; libsrc/apple/dgrlib.pla: 0379: INC SRCH + INC SRCH +; libsrc/apple/dgrlib.pla: 0380: + BCS + ++ BCS + +; libsrc/apple/dgrlib.pla: 0381: STA $C005 ; WRITE AUX MEM + STA $C005 ; WRITE AUX MEM +; libsrc/apple/dgrlib.pla: 0382: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0383: STA $C004 ; WRITE MAIN MEM + STA $C004 ; WRITE MAIN MEM +; libsrc/apple/dgrlib.pla: 0384: + LDA (SRC,X) ++ LDA (SRC,X) +; libsrc/apple/dgrlib.pla: 0385: INC SRCL + INC SRCL +; libsrc/apple/dgrlib.pla: 0386: BNE + + BNE + +; libsrc/apple/dgrlib.pla: 0387: INC SRCH + INC SRCH +; libsrc/apple/dgrlib.pla: 0388: + BCS ++ ++ BCS ++ +; libsrc/apple/dgrlib.pla: 0389: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/dgrlib.pla: 0390: ++ INC TMPH ; X COORD +++ INC TMPH ; X COORD +; libsrc/apple/dgrlib.pla: 0391: INC TMPH ; X COORD + INC TMPH ; X COORD +; libsrc/apple/dgrlib.pla: 0392: LDA TMPH + LDA TMPH +; libsrc/apple/dgrlib.pla: 0393: BMI -- + BMI -- +; libsrc/apple/dgrlib.pla: 0394: LDX ESP + LDX ESP +; libsrc/apple/dgrlib.pla: 0395: CMP ESTKH+2,X ; X2 COORD + CMP ESTKH+2,X ; X2 COORD +; libsrc/apple/dgrlib.pla: 0396: BCC -- + BCC -- +; libsrc/apple/dgrlib.pla: 0397: PLP + PLP +; libsrc/apple/dgrlib.pla: 0398: +++ INC TMPL ; Y COORD ++++ INC TMPL ; Y COORD +; libsrc/apple/dgrlib.pla: 0399: INC TMPL ; Y COORD + INC TMPL ; Y COORD +; libsrc/apple/dgrlib.pla: 0400: LDA TMPL + LDA TMPL +; libsrc/apple/dgrlib.pla: 0401: BMI - + BMI - +; libsrc/apple/dgrlib.pla: 0402: CMP ESTKH+1,X ; Y2 COORD + CMP ESTKH+1,X ; Y2 COORD +; libsrc/apple/dgrlib.pla: 0403: BCC - + BCC - +; libsrc/apple/dgrlib.pla: 0404: ++++ INX +++++ INX +; libsrc/apple/dgrlib.pla: 0405: INX + INX +; libsrc/apple/dgrlib.pla: 0406: INX + INX +; libsrc/apple/dgrlib.pla: 0407: RTS + RTS +; libsrc/apple/dgrlib.pla: 0408: end +; libsrc/apple/dgrlib.pla: 0409: // +; libsrc/apple/dgrlib.pla: 0410: // Draw a string of tiles +; libsrc/apple/dgrlib.pla: 0411: // +; libsrc/apple/dgrlib.pla: 0412: export asm dgrTileStr(x, y, tilestr, strlen, tilebuff)#0 +_A016 ; dgrTileStr() +; libsrc/apple/dgrlib.pla: 0413: - DEX +- DEX +; libsrc/apple/dgrlib.pla: 0414: DEX + DEX +; libsrc/apple/dgrlib.pla: 0415: DEX + DEX +; libsrc/apple/dgrlib.pla: 0416: LDA ESTKL+7,X ; X COORD + LDA ESTKL+7,X ; X COORD +; libsrc/apple/dgrlib.pla: 0417: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0418: LDA ESTKL+6,X ; Y COORD + LDA ESTKL+6,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0419: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0420: LDA ESTKL+3,X ; TILE + LDA ESTKL+3,X ; TILE +; libsrc/apple/dgrlib.pla: 0421: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/dgrlib.pla: 0422: LDA ESTKH+3,X ; TILE + LDA ESTKH+3,X ; TILE +; libsrc/apple/dgrlib.pla: 0423: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/dgrlib.pla: 0424: end +; libsrc/apple/dgrlib.pla: 0425: asm _dgrTileTile +_A017 ; _dgrTileTile() +; libsrc/apple/dgrlib.pla: 0426: JSR $5000 + JSR $5000 +; libsrc/apple/dgrlib.pla: 0427: LDA ESTKL+4,X ; UPDATE X COORD + LDA ESTKL+4,X ; UPDATE X COORD +; libsrc/apple/dgrlib.pla: 0428: CLC + CLC +; libsrc/apple/dgrlib.pla: 0429: ADC #$08 + ADC #$08 +; libsrc/apple/dgrlib.pla: 0430: CMP #80 ; OFF RIGHT SIDE + CMP #80 ; OFF RIGHT SIDE +; libsrc/apple/dgrlib.pla: 0431: BPL + + BPL + +; libsrc/apple/dgrlib.pla: 0432: STA ESTKL+4,X + STA ESTKL+4,X +; libsrc/apple/dgrlib.pla: 0433: DEC ESTKL+1,X ; DEC STRLEN + DEC ESTKL+1,X ; DEC STRLEN +; libsrc/apple/dgrlib.pla: 0434: BNE - + BNE - +; libsrc/apple/dgrlib.pla: 0435: + INX ++ INX +; libsrc/apple/dgrlib.pla: 0436: INX + INX +; libsrc/apple/dgrlib.pla: 0437: INX + INX +; libsrc/apple/dgrlib.pla: 0438: INX + INX +; libsrc/apple/dgrlib.pla: 0439: INX + INX +; libsrc/apple/dgrlib.pla: 0440: RTS + RTS +; libsrc/apple/dgrlib.pla: 0441: end +; libsrc/apple/dgrlib.pla: 0442: // +; libsrc/apple/dgrlib.pla: 0443: // Fill a buffer with tiles +; libsrc/apple/dgrlib.pla: 0444: // +; libsrc/apple/dgrlib.pla: 0445: export asm dgrFill(x, y, tile)#0 +_A018 ; dgrFill() +; libsrc/apple/dgrlib.pla: 0446: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0447: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0448: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0449: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0450: AND #$0F + AND #$0F +; libsrc/apple/dgrlib.pla: 0451: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0452: LDA #$00 + LDA #$00 +; libsrc/apple/dgrlib.pla: 0453: SEC + SEC +; libsrc/apple/dgrlib.pla: 0454: SBC ESTKL+2,X ; ORIGINAL X + SBC ESTKL+2,X ; ORIGINAL X +; libsrc/apple/dgrlib.pla: 0455: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0456: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/apple/dgrlib.pla: 0457: LDA #$00 + LDA #$00 +; libsrc/apple/dgrlib.pla: 0458: SEC + SEC +; libsrc/apple/dgrlib.pla: 0459: SBC ESTKL+1,X + SBC ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0460: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0461: - DEX +- DEX +; libsrc/apple/dgrlib.pla: 0462: DEX + DEX +; libsrc/apple/dgrlib.pla: 0463: DEX + DEX +; libsrc/apple/dgrlib.pla: 0464: LDA ESTKL+5,X ; X COORD + LDA ESTKL+5,X ; X COORD +; libsrc/apple/dgrlib.pla: 0465: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0466: LDA ESTKL+4,X ; Y COORD + LDA ESTKL+4,X ; Y COORD +; libsrc/apple/dgrlib.pla: 0467: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0468: LDA ESTKL+3,X ; TILE + LDA ESTKL+3,X ; TILE +; libsrc/apple/dgrlib.pla: 0469: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/dgrlib.pla: 0470: LDA ESTKH+3,X ; TILE + LDA ESTKH+3,X ; TILE +; libsrc/apple/dgrlib.pla: 0471: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/dgrlib.pla: 0472: end +; libsrc/apple/dgrlib.pla: 0473: asm _dgrFillTile +_A019 ; _dgrFillTile() +; libsrc/apple/dgrlib.pla: 0474: JSR $5000 + JSR $5000 +; libsrc/apple/dgrlib.pla: 0475: LDA ESTKL+2,X ; UPDATE X COORD + LDA ESTKL+2,X ; UPDATE X COORD +; libsrc/apple/dgrlib.pla: 0476: CLC + CLC +; libsrc/apple/dgrlib.pla: 0477: ADC #$08 + ADC #$08 +; libsrc/apple/dgrlib.pla: 0478: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0479: CMP #80 ; OFF RIGHT SIDE? + CMP #80 ; OFF RIGHT SIDE? +; libsrc/apple/dgrlib.pla: 0480: BMI - + BMI - +; libsrc/apple/dgrlib.pla: 0481: LDA ESTKH+2,X ; RESTORE X COORD + LDA ESTKH+2,X ; RESTORE X COORD +; libsrc/apple/dgrlib.pla: 0482: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/dgrlib.pla: 0483: LDA ESTKL+1,X ; UPDATE Y COORD + LDA ESTKL+1,X ; UPDATE Y COORD +; libsrc/apple/dgrlib.pla: 0484: CLC + CLC +; libsrc/apple/dgrlib.pla: 0485: ADC #$08 + ADC #$08 +; libsrc/apple/dgrlib.pla: 0486: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/dgrlib.pla: 0487: CMP #48 ; OFF BOTTOM? + CMP #48 ; OFF BOTTOM? +; libsrc/apple/dgrlib.pla: 0488: BMI - + BMI - +; libsrc/apple/dgrlib.pla: 0489: INX + INX +; libsrc/apple/dgrlib.pla: 0490: INX + INX +; libsrc/apple/dgrlib.pla: 0491: INX + INX +; libsrc/apple/dgrlib.pla: 0492: RTS + RTS +; libsrc/apple/dgrlib.pla: 0493: end +; libsrc/apple/dgrlib.pla: 0494: // +; libsrc/apple/dgrlib.pla: 0495: // Wait for VLB +; libsrc/apple/dgrlib.pla: 0496: // +; libsrc/apple/dgrlib.pla: 0497: export asm dgrVLB#0 +_A020 ; dgrVLB() +; libsrc/apple/dgrlib.pla: 0498: PHP + PHP +; libsrc/apple/dgrlib.pla: 0499: SEI + SEI +; libsrc/apple/dgrlib.pla: 0500: STA $C079 ; Enable IOU access and reset VBL int on //c + STA $C079 ; Enable IOU access and reset VBL int on //c +; libsrc/apple/dgrlib.pla: 0501: STA $C05B ; Enable VBL int + STA $C05B ; Enable VBL int +; libsrc/apple/dgrlib.pla: 0502: - LDA $C019 +- LDA $C019 +; libsrc/apple/dgrlib.pla: 0503: STA $C079 ; Reset VBL int on //c + STA $C079 ; Reset VBL int on //c +; libsrc/apple/dgrlib.pla: 0504: BMI - + BMI - +; libsrc/apple/dgrlib.pla: 0505: - LDA $C019 +- LDA $C019 +; libsrc/apple/dgrlib.pla: 0506: BPL - + BPL - +; libsrc/apple/dgrlib.pla: 0507: STA $C05A ; Disable VBL int on //c + STA $C05A ; Disable VBL int on //c +; libsrc/apple/dgrlib.pla: 0508: STA $C078 ; Disable IOU access on //c + STA $C078 ; Disable IOU access on //c +; libsrc/apple/dgrlib.pla: 0509: PLP + PLP +; libsrc/apple/dgrlib.pla: 0510: RTS + RTS +; libsrc/apple/dgrlib.pla: 0511: end +; libsrc/apple/dgrlib.pla: 0512: // +; libsrc/apple/dgrlib.pla: 0513: // Clear the buffer +; libsrc/apple/dgrlib.pla: 0514: // +; libsrc/apple/dgrlib.pla: 0515: export def dgrClear(clr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; clr -> [0] +_C000 ; dgrClear() +; libsrc/apple/dgrlib.pla: 0516: byte[32] clrtile + ; clrtile -> [2] +; libsrc/apple/dgrlib.pla: 0517: +; libsrc/apple/dgrlib.pla: 0518: clr = evnclr[clr&$0F] | (oddclr[clr&$0F] << 8) + !BYTE $58,$22,$01 ; ENTER 34,1 +; libsrc/apple/dgrlib.pla: 0519: memset(@clrtile, clr, 32) +; libsrc/apple/dgrlib.pla: 0520: dgrFill(0, 0, @clrtile) +; libsrc/apple/dgrlib.pla: 0521: end + !BYTE $26 ; LA _D033+0 +_F002 !WORD _D033+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F003 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $76,$00 ; SLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X017 +_F004 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A018 +_F005 !WORD _A018 + !BYTE $5A,$22 ; LEAVE 34 +; libsrc/apple/dgrlib.pla: 0522: export def dgrMode(mode)#1 + ; mode -> [0] +_C001 ; dgrMode() +; libsrc/apple/dgrlib.pla: 0523: if mode + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/dgrlib.pla: 0524: // +; libsrc/apple/dgrlib.pla: 0525: // Set double lores graphics, return draw buffer +; libsrc/apple/dgrlib.pla: 0526: // +; libsrc/apple/dgrlib.pla: 0527: ^showlores +; libsrc/apple/dgrlib.pla: 0528: ^showfull +; libsrc/apple/dgrlib.pla: 0529: ^showgraphics +; libsrc/apple/dgrlib.pla: 0530: ^showpage1 +; libsrc/apple/dgrlib.pla: 0531: ^ena80 = 0 +; libsrc/apple/dgrlib.pla: 0532: ^show80 = 0 +; libsrc/apple/dgrlib.pla: 0533: ^an3on +; libsrc/apple/dgrlib.pla: 0534: drawpage = 1 +; libsrc/apple/dgrlib.pla: 0535: drawbuff = dgrbuff[1] +; libsrc/apple/dgrlib.pla: 0536: return 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $68,$56,$C0 ; LAB 49238 + !BYTE $30 ; DROP + !BYTE $68,$52,$C0 ; LAB 49234 + !BYTE $30 ; DROP + !BYTE $68,$50,$C0 ; LAB 49232 + !BYTE $30 ; DROP + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78,$7E,$C0 ; SAB 49278 + !BYTE $00 ; CN 0 + !BYTE $78,$0D,$C0 ; SAB 49165 + !BYTE $68,$5E,$C0 ; LAB 49246 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D032+0 +_F006 !WORD _D032+0 + !BYTE $6A ; LAW _D030+2 +_F007 !WORD _D030+2 + !BYTE $7A ; SAW _D031+0 +_F008 !WORD _D031+0 + !BYTE $02 ; CN 1 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/dgrlib.pla: 0537: fin +_B001 +_B002 +; libsrc/apple/dgrlib.pla: 0538: // +; libsrc/apple/dgrlib.pla: 0539: // Set text mode +; libsrc/apple/dgrlib.pla: 0540: // +; libsrc/apple/dgrlib.pla: 0541: ^showtext +; libsrc/apple/dgrlib.pla: 0542: ^showpage1 +; libsrc/apple/dgrlib.pla: 0543: ^ena80 = 0 +; libsrc/apple/dgrlib.pla: 0544: ^show40 = 0 +; libsrc/apple/dgrlib.pla: 0545: ^mapmain = 0 +; libsrc/apple/dgrlib.pla: 0546: ^an3off +; libsrc/apple/dgrlib.pla: 0547: call($FC58, 0, 0, 0, 0) // home() +; libsrc/apple/dgrlib.pla: 0548: return 0 + !BYTE $68,$51,$C0 ; LAB 49233 + !BYTE $30 ; DROP + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78,$7E,$C0 ; SAB 49278 + !BYTE $00 ; CN 0 + !BYTE $78,$0C,$C0 ; SAB 49164 + !BYTE $00 ; CN 0 + !BYTE $78,$00,$C0 ; SAB 49152 + !BYTE $68,$5F,$C0 ; LAB 49247 + !BYTE $30 ; DROP + !BYTE $2C,$58,$FC ; CW 64600 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F009 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/dgrlib.pla: 0549: end +; libsrc/apple/dgrlib.pla: 0550: // +; libsrc/apple/dgrlib.pla: 0551: // Set display page, return other page +; libsrc/apple/dgrlib.pla: 0552: // +; libsrc/apple/dgrlib.pla: 0553: export def dgrShow(page)#1 + ; page -> [0] +_C002 ; dgrShow() +; libsrc/apple/dgrlib.pla: 0554: page = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/dgrlib.pla: 0555: ^(showpage1 + page) +; libsrc/apple/dgrlib.pla: 0556: return page ^ 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $76,$00 ; SLW [0] + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/dgrlib.pla: 0557: end +; libsrc/apple/dgrlib.pla: 0558: export def dgrSwap#0 +_C003 ; dgrSwap() +; libsrc/apple/dgrlib.pla: 0559: ^(showpage1 + drawpage) +; libsrc/apple/dgrlib.pla: 0560: drawpage = drawpage ^ 1 +; libsrc/apple/dgrlib.pla: 0561: drawbuff = dgrbuff[drawpage] +; libsrc/apple/dgrlib.pla: 0562: end + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B4 ; ADDAB _D032+0 +_F010 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D032+0 +_F011 !WORD _D032+0 + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D032+0 +_F012 !WORD _D032+0 + !BYTE $26 ; LA _D030+0 +_F013 !WORD _D030+0 + !BYTE $BC ; IDXAB _D032+0 +_F014 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D031+0 +_F015 !WORD _D031+0 + !BYTE $5C ; RET +; libsrc/apple/dgrlib.pla: 0563: export def dgrDrawBuf(page)#0 + ; page -> [0] +_C004 ; dgrDrawBuf() +; libsrc/apple/dgrlib.pla: 0564: drawpage = page + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/dgrlib.pla: 0565: drawbuff = dgrbuff[drawpage] +; libsrc/apple/dgrlib.pla: 0566: end + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D032+0 +_F016 !WORD _D032+0 + !BYTE $26 ; LA _D030+0 +_F017 !WORD _D030+0 + !BYTE $BC ; IDXAB _D032+0 +_F018 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D031+0 +_F019 !WORD _D031+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/dgrlib.pla: 0567: // +; libsrc/apple/dgrlib.pla: 0568: // Set color for clear & plot routines +; libsrc/apple/dgrlib.pla: 0569: // +; libsrc/apple/dgrlib.pla: 0570: export def dgrColor(clr)#0 + ; clr -> [0] +_C005 ; dgrColor() +; libsrc/apple/dgrlib.pla: 0571: ^$30 = clr & $0F + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/dgrlib.pla: 0572: end + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $78,$30,$00 ; SAB 48 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/dgrlib.pla: 0573: // +; libsrc/apple/dgrlib.pla: 0574: // Make sure we are a 128K //e or //c +; libsrc/apple/dgrlib.pla: 0575: // +; libsrc/apple/dgrlib.pla: 0576: if MACHID & $F0 <> $B0 +_INIT +; libsrc/apple/dgrlib.pla: 0577: puts("\n128K required for double-lores.\n") + !BYTE $68 ; LAB _X001+0 +_F020 !WORD 0+0 + !BYTE $3C,$F0 ; ANDI 240 + !BYTE $2A,$B0 ; CB 176 + !BYTE $22 ; BREQ _B003 + !WORD _B003-* + !BYTE $2E ; CS + !BYTE $21 + !BYTE $0D,$31,$32,$38,$4B,$20,$72,$65 + !BYTE $71,$75,$69,$72,$65,$64,$20,$66 + !BYTE $6F,$72,$20,$64,$6F,$75,$62,$6C + !BYTE $65,$2D,$6C,$6F,$72,$65,$73,$2E + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F021 !WORD 0 +; libsrc/apple/dgrlib.pla: 0578: ^$C010 +; libsrc/apple/dgrlib.pla: 0579: while ^$C000 < 128; loop + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B005 +_B007 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B005 + !WORD _B005-* +_B006 +; libsrc/apple/dgrlib.pla: 0580: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/dgrlib.pla: 0581: fin +_B003 +_B004 +; libsrc/apple/dgrlib.pla: 0582: // +; libsrc/apple/dgrlib.pla: 0583: // Assembly fixups +; libsrc/apple/dgrlib.pla: 0584: // +; libsrc/apple/dgrlib.pla: 0585: _dgrPlotPix:1 = @_dgrSetPix +; libsrc/apple/dgrlib.pla: 0586: _dgrHLinPix:1 = @_dgrSetPix +; libsrc/apple/dgrlib.pla: 0587: _dgrVLinPix:1 = @_dgrSetPix +; libsrc/apple/dgrlib.pla: 0588: _dgrBLTPix:1 = @_dgrSetPix +; libsrc/apple/dgrlib.pla: 0589: _dgrTileTile:1 = @dgrTile +; libsrc/apple/dgrlib.pla: 0590: _dgrFillTile:1 = @dgrTile +; libsrc/apple/dgrlib.pla: 0591: _dgrSetEvnEvn:1 = @evnclr +; libsrc/apple/dgrlib.pla: 0592: _dgrSetEvnOdd:1 = @oddclr +; libsrc/apple/dgrlib.pla: 0593: _dgrSetOddEvn:1 = @evnclr +; libsrc/apple/dgrlib.pla: 0594: _dgrSetOddOdd:1 = @oddclr +; libsrc/apple/dgrlib.pla: 0595: // +; libsrc/apple/dgrlib.pla: 0596: // Fixups for drawbuff +; libsrc/apple/dgrlib.pla: 0597: // +; libsrc/apple/dgrlib.pla: 0598: dgrPlot:1 = @drawbuff +; libsrc/apple/dgrlib.pla: 0599: dgrPlot:6 = @drawbuff+1 +; libsrc/apple/dgrlib.pla: 0600: dgrHLin:1 = @drawbuff +; libsrc/apple/dgrlib.pla: 0601: dgrHLin:6 = @drawbuff+1 +; libsrc/apple/dgrlib.pla: 0602: dgrVLin:1 = @drawbuff +; libsrc/apple/dgrlib.pla: 0603: dgrVLin:6 = @drawbuff+1 +; libsrc/apple/dgrlib.pla: 0604: dgrBLT:1 = @drawbuff +; libsrc/apple/dgrlib.pla: 0605: dgrBLT:6 = @drawbuff+1 +; libsrc/apple/dgrlib.pla: 0606: dgrTile:1 = @drawbuff +; libsrc/apple/dgrlib.pla: 0607: dgrTile:6 = @drawbuff+1 +; libsrc/apple/dgrlib.pla: 0608: // Put read AUX mem routine in scary location +; libsrc/apple/dgrlib.pla: 0609: memcpy($0100, @auxRead, 9) +; libsrc/apple/dgrlib.pla: 0610: done + !BYTE $26 ; LA _A009+0 +_F022 !WORD _A009+0 + !BYTE $7A ; SAW _A002+1 +_F023 !WORD _A002+1 + !BYTE $26 ; LA _A009+0 +_F024 !WORD _A009+0 + !BYTE $7A ; SAW _A004+1 +_F025 !WORD _A004+1 + !BYTE $26 ; LA _A009+0 +_F026 !WORD _A009+0 + !BYTE $7A ; SAW _A006+1 +_F027 !WORD _A006+1 + !BYTE $26 ; LA _A009+0 +_F028 !WORD _A009+0 + !BYTE $7A ; SAW _A008+1 +_F029 !WORD _A008+1 + !BYTE $26 ; LA _A015+0 +_F030 !WORD _A015+0 + !BYTE $7A ; SAW _A017+1 +_F031 !WORD _A017+1 + !BYTE $26 ; LA _A015+0 +_F032 !WORD _A015+0 + !BYTE $7A ; SAW _A019+1 +_F033 !WORD _A019+1 + !BYTE $26 ; LA _D033+0 +_F034 !WORD _D033+0 + !BYTE $7A ; SAW _A010+1 +_F035 !WORD _A010+1 + !BYTE $26 ; LA _D034+0 +_F036 !WORD _D034+0 + !BYTE $7A ; SAW _A011+1 +_F037 !WORD _A011+1 + !BYTE $26 ; LA _D033+0 +_F038 !WORD _D033+0 + !BYTE $7A ; SAW _A012+1 +_F039 !WORD _A012+1 + !BYTE $26 ; LA _D034+0 +_F040 !WORD _D034+0 + !BYTE $7A ; SAW _A013+1 +_F041 !WORD _A013+1 + !BYTE $26 ; LA _D031+0 +_F042 !WORD _D031+0 + !BYTE $7A ; SAW _A001+1 +_F043 !WORD _A001+1 + !BYTE $26 ; LA _D031+1 +_F044 !WORD _D031+1 + !BYTE $7A ; SAW _A001+6 +_F045 !WORD _A001+6 + !BYTE $26 ; LA _D031+0 +_F046 !WORD _D031+0 + !BYTE $7A ; SAW _A003+1 +_F047 !WORD _A003+1 + !BYTE $26 ; LA _D031+1 +_F048 !WORD _D031+1 + !BYTE $7A ; SAW _A003+6 +_F049 !WORD _A003+6 + !BYTE $26 ; LA _D031+0 +_F050 !WORD _D031+0 + !BYTE $7A ; SAW _A005+1 +_F051 !WORD _A005+1 + !BYTE $26 ; LA _D031+1 +_F052 !WORD _D031+1 + !BYTE $7A ; SAW _A005+6 +_F053 !WORD _A005+6 + !BYTE $26 ; LA _D031+0 +_F054 !WORD _D031+0 + !BYTE $7A ; SAW _A007+1 +_F055 !WORD _A007+1 + !BYTE $26 ; LA _D031+1 +_F056 !WORD _D031+1 + !BYTE $7A ; SAW _A007+6 +_F057 !WORD _A007+6 + !BYTE $26 ; LA _D031+0 +_F058 !WORD _D031+0 + !BYTE $7A ; SAW _A015+1 +_F059 !WORD _A015+1 + !BYTE $26 ; LA _D031+1 +_F060 !WORD _D031+1 + !BYTE $7A ; SAW _A015+6 +_F061 !WORD _A015+6 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $26 ; LA _A014+0 +_F062 !WORD _A014+0 + !BYTE $12 ; CN 9 + !BYTE $54 ; CALL _X018 +_F063 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: DGRPLOT + !BYTE $C4,$C7,$D2,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + ; DCI STRING: DGRHLIN + !BYTE $C4,$C7,$D2,$C8,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A003 + ; DCI STRING: DGRVLIN + !BYTE $C4,$C7,$D2,$D6,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A005 + ; DCI STRING: DGRBLT + !BYTE $C4,$C7,$D2,$C2,$CC,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A007 + ; DCI STRING: DGRTILE + !BYTE $C4,$C7,$D2,$D4,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A015 + ; DCI STRING: DGRTILESTR + !BYTE $C4,$C7,$D2,$D4,$C9,$CC,$C5,$D3,$D4,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A016 + ; DCI STRING: DGRFILL + !BYTE $C4,$C7,$D2,$C6,$C9,$CC,$4C + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A018 + ; DCI STRING: DGRVLB + !BYTE $C4,$C7,$D2,$D6,$CC,$42 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A020 + ; DCI STRING: DGRCLEAR + !BYTE $C4,$C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: DGRMODE + !BYTE $C4,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: DGRSHOW + !BYTE $C4,$C7,$D2,$D3,$C8,$CF,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: DGRSWAP + !BYTE $C4,$C7,$D2,$D3,$D7,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: DGRDRAWBUF + !BYTE $C4,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: DGRCOLOR + !BYTE $C4,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/fileio.a b/src/libsrc/apple/fileio.a new file mode 100644 index 0000000..bc9efe4 --- /dev/null +++ b/src/libsrc/apple/fileio.a @@ -0,0 +1,2550 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/fileio.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/fileio.pla: 0001: +; libsrc/apple/fileio.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr +; inc/fileio.plh: 0080: end +; libsrc/apple/fileio.pla: 0002: +; libsrc/apple/fileio.pla: 0003: // +; libsrc/apple/fileio.pla: 0004: // CFFA1 addresses. +; libsrc/apple/fileio.pla: 0005: // +; libsrc/apple/fileio.pla: 0006: const CFFA1Dest = $00 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; CFFA1Dest = 0 +; libsrc/apple/fileio.pla: 0007: const CFFA1FileName = $02 + ; CFFA1FileName = 2 +; libsrc/apple/fileio.pla: 0008: const CFFA1OldName = $04 + ; CFFA1OldName = 4 +; libsrc/apple/fileio.pla: 0009: const CFFA1FileType = $06 + ; CFFA1FileType = 6 +; libsrc/apple/fileio.pla: 0010: const CFFA1AuxType = $07 + ; CFFA1AuxType = 7 +; libsrc/apple/fileio.pla: 0011: const CFFA1FileSize = $09 + ; CFFA1FileSize = 9 +; libsrc/apple/fileio.pla: 0012: const CFFA1EntryPtr = $0B + ; CFFA1EntryPtr = 11 +; libsrc/apple/fileio.pla: 0013: // +; libsrc/apple/fileio.pla: 0014: // SOS access modes +; libsrc/apple/fileio.pla: 0015: // +; libsrc/apple/fileio.pla: 0016: const O_READ = 1 + ; O_READ = 1 +; libsrc/apple/fileio.pla: 0017: const O_WRITE = 2 + ; O_WRITE = 2 +; libsrc/apple/fileio.pla: 0018: const O_READ_WRITE = 3 + ; O_READ_WRITE = 3 +; libsrc/apple/fileio.pla: 0019: // +; libsrc/apple/fileio.pla: 0020: // System I/O buffer for PLASMA. Used when loading modules, free otherwise +; libsrc/apple/fileio.pla: 0021: // +; libsrc/apple/fileio.pla: 0022: const sysbuf = $0800 + ; sysbuf = 2048 +; libsrc/apple/fileio.pla: 0023: // +; libsrc/apple/fileio.pla: 0024: // External interface +; libsrc/apple/fileio.pla: 0025: // +; libsrc/apple/fileio.pla: 0026: predef a2getpfx(path), a23setpfx(path), a2getfileinfo(path, fileinfo), a2setfileinfo(path, fileinfo), a23geteof(refnum)#2, a23seteof(refnum, eofl, eofh), a2iobufs(iobufs), a2open(path), a2close(refnum) +; libsrc/apple/fileio.pla: 0027: predef a23read(refnum, buf, len), a2write(refnum, buf, len), a2create(path, type, aux), a23destroy(path), a23rename(path, newpath) +; libsrc/apple/fileio.pla: 0028: predef a2newline(refnum, emask, nlchar), a2online(unit, buf), a2readblock(unit, buf, block), a2writeblock(unit, buf, block) +; libsrc/apple/fileio.pla: 0029: // +; libsrc/apple/fileio.pla: 0030: // Exported function table. +; libsrc/apple/fileio.pla: 0031: // +; libsrc/apple/fileio.pla: 0032: word fileio[] +_D046 ; fileio[] +; libsrc/apple/fileio.pla: 0033: word = @a2getpfx, @a23setpfx, @a2getfileinfo, @a2setfileinfo, @a23geteof, @a23seteof, @a2iobufs, @a2open, @a2close +_F000 !WORD _P000 +_F001 !WORD _P001 +_F002 !WORD _P002 +_F003 !WORD _P003 +_F004 !WORD _P004 +_F005 !WORD _P005 +_F006 !WORD _P006 +_F007 !WORD _P007 +_F008 !WORD _P008 +; libsrc/apple/fileio.pla: 0034: word = @a23read, @a2write, @a2create, @a23destroy, @a23rename +_F009 !WORD _P009 +_F010 !WORD _P010 +_F011 !WORD _P011 +_F012 !WORD _P012 +_F013 !WORD _P013 +; libsrc/apple/fileio.pla: 0035: word = @a2newline, @a2online, @a2readblock, @a2writeblock +_F014 !WORD _P014 +_F015 !WORD _P015 +_F016 !WORD _P016 +_F017 !WORD _P017 +; libsrc/apple/fileio.pla: 0036: // +; libsrc/apple/fileio.pla: 0037: // SOS/ProDOS error code +; libsrc/apple/fileio.pla: 0038: // +; libsrc/apple/fileio.pla: 0039: export byte perr +_D047 !FILL 1 ; perr +; libsrc/apple/fileio.pla: 0040: // +; libsrc/apple/fileio.pla: 0041: // I/O buffers +; libsrc/apple/fileio.pla: 0042: // +; libsrc/apple/fileio.pla: 0043: const MAX_IOBUFS = 4 + ; MAX_IOBUFS = 4 +; libsrc/apple/fileio.pla: 0044: byte iobuf_ref[MAX_IOBUFS] +_D048 !FILL 4 ; iobuf_ref[MAX_IOBUFS] +; libsrc/apple/fileio.pla: 0045: word iobuf_addr[MAX_IOBUFS] = sysbuf +_D049 ; iobuf_addr[MAX_IOBUFS] = sysbuf + !WORD $0800 + !FILL $06 +; libsrc/apple/fileio.pla: 0046: // +; libsrc/apple/fileio.pla: 0047: // ProDOS/SOS routines +; libsrc/apple/fileio.pla: 0048: // +; libsrc/apple/fileio.pla: 0049: def a1getpfx(path) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; path -> [0] +_C000 ; a1getpfx() +; libsrc/apple/fileio.pla: 0050: ^path = 0 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/fileio.pla: 0051: return path + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0052: end +; libsrc/apple/fileio.pla: 0053: def a2getpfx(path) + ; path -> [0] +_P000 ; a2getpfx(path)() +_C001 ; a2getpfx() +; libsrc/apple/fileio.pla: 0054: byte params[3] + ; params -> [2] +; libsrc/apple/fileio.pla: 0055: +; libsrc/apple/fileio.pla: 0056: ^path = 0 + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/apple/fileio.pla: 0057: params.0 = 1 +; libsrc/apple/fileio.pla: 0058: params:1 = path +; libsrc/apple/fileio.pla: 0059: perr = syscall($C7, @params) +; libsrc/apple/fileio.pla: 0060: return path + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$C7 ; CB 199 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F018 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F019 !WORD _D047+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0061: end +; libsrc/apple/fileio.pla: 0062: def a3getpfx(path) + ; path -> [0] +_C002 ; a3getpfx() +; libsrc/apple/fileio.pla: 0063: byte params[3] + ; params -> [2] +; libsrc/apple/fileio.pla: 0064: +; libsrc/apple/fileio.pla: 0065: params.0 = 2 + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/apple/fileio.pla: 0066: params:1 = path +; libsrc/apple/fileio.pla: 0067: params.3 = 64 +; libsrc/apple/fileio.pla: 0068: perr = syscall($C7, @params) +; libsrc/apple/fileio.pla: 0069: return path + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$40 ; CB 64 + !BYTE $74,$05 ; SLB [5] + !BYTE $2A,$C7 ; CB 199 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F020 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F021 !WORD _D047+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0070: end +; libsrc/apple/fileio.pla: 0071: def a1setpfx(path) + ; path -> [0] +_C003 ; a1setpfx() +; libsrc/apple/fileio.pla: 0072: return path + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0073: end +; libsrc/apple/fileio.pla: 0074: def a23setpfx(path) + ; path -> [0] +_P001 ; a23setpfx(path)() +_C004 ; a23setpfx() +; libsrc/apple/fileio.pla: 0075: byte params[3] + ; params -> [2] +; libsrc/apple/fileio.pla: 0076: +; libsrc/apple/fileio.pla: 0077: params.0 = 1 + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/apple/fileio.pla: 0078: params:1 = path +; libsrc/apple/fileio.pla: 0079: perr = syscall($C6, @params) +; libsrc/apple/fileio.pla: 0080: return path + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$C6 ; CB 198 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F022 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F023 !WORD _D047+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0081: end +; libsrc/apple/fileio.pla: 0082: def a1getfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_C005 ; a1getfileinfo() +; libsrc/apple/fileio.pla: 0083: perr = $01 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/fileio.pla: 0084: return perr + !BYTE $02 ; CN 1 + !BYTE $7C ; DAB _D047+0 +_F024 !WORD _D047+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/fileio.pla: 0085: end +; libsrc/apple/fileio.pla: 0086: def a2getfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_P002 ; a2getfileinfo(path, fileinfo)() +_C006 ; a2getfileinfo() +; libsrc/apple/fileio.pla: 0087: byte params[18] + ; params -> [4] +; libsrc/apple/fileio.pla: 0088: +; libsrc/apple/fileio.pla: 0089: params.0 = 10 + !BYTE $58,$16,$02 ; ENTER 22,2 +; libsrc/apple/fileio.pla: 0090: params:1 = path +; libsrc/apple/fileio.pla: 0091: perr = syscall($C4, @params) +; libsrc/apple/fileio.pla: 0092: memcpy(fileinfo, @params + 3, 15) +; libsrc/apple/fileio.pla: 0093: return perr + !BYTE $14 ; CN 10 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F025 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F026 !WORD _D047+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$07 ; LLA [7] + !BYTE $1E ; CN 15 + !BYTE $54 ; CALL _X018 +_F027 !WORD 0 + !BYTE $68 ; LAB _D047+0 +_F028 !WORD _D047+0 + !BYTE $5A,$16 ; LEAVE 22 +; libsrc/apple/fileio.pla: 0094: end +; libsrc/apple/fileio.pla: 0095: def a3getfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_C007 ; a3getfileinfo() +; libsrc/apple/fileio.pla: 0096: byte params[6] + ; params -> [4] +; libsrc/apple/fileio.pla: 0097: +; libsrc/apple/fileio.pla: 0098: params.0 = 3 + !BYTE $58,$0A,$02 ; ENTER 10,2 +; libsrc/apple/fileio.pla: 0099: params:1 = path +; libsrc/apple/fileio.pla: 0100: params:3 = fileinfo +; libsrc/apple/fileio.pla: 0101: params.5 = 15 +; libsrc/apple/fileio.pla: 0102: perr = syscall($C4, @params) +; libsrc/apple/fileio.pla: 0103: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$07 ; SLW [7] + !BYTE $1E ; CN 15 + !BYTE $74,$09 ; SLB [9] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F029 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F030 !WORD _D047+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/fileio.pla: 0104: end +; libsrc/apple/fileio.pla: 0105: def a1setfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_C008 ; a1setfileinfo() +; libsrc/apple/fileio.pla: 0106: perr = $01 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/fileio.pla: 0107: return perr + !BYTE $02 ; CN 1 + !BYTE $7C ; DAB _D047+0 +_F031 !WORD _D047+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/fileio.pla: 0108: end +; libsrc/apple/fileio.pla: 0109: def a2setfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_P003 ; a2setfileinfo(path, fileinfo)() +_C009 ; a2setfileinfo() +; libsrc/apple/fileio.pla: 0110: byte params[14] + ; params -> [4] +; libsrc/apple/fileio.pla: 0111: +; libsrc/apple/fileio.pla: 0112: params.0 = 7 + !BYTE $58,$12,$02 ; ENTER 18,2 +; libsrc/apple/fileio.pla: 0113: params:1 = path +; libsrc/apple/fileio.pla: 0114: memcpy(@params + 3, fileinfo, 11) +; libsrc/apple/fileio.pla: 0115: perr = syscall($C3, @params) +; libsrc/apple/fileio.pla: 0116: return perr + !BYTE $0E ; CN 7 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $28,$07 ; LLA [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $16 ; CN 11 + !BYTE $54 ; CALL _X018 +_F032 !WORD 0 + !BYTE $2A,$C3 ; CB 195 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F033 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F034 !WORD _D047+0 + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/apple/fileio.pla: 0117: end +; libsrc/apple/fileio.pla: 0118: def a3setfileinfo(path, fileinfo) + ; path -> [0] + ; fileinfo -> [2] +_C010 ; a3setfileinfo() +; libsrc/apple/fileio.pla: 0119: byte params[6] + ; params -> [4] +; libsrc/apple/fileio.pla: 0120: +; libsrc/apple/fileio.pla: 0121: params.0 = 3 + !BYTE $58,$0A,$02 ; ENTER 10,2 +; libsrc/apple/fileio.pla: 0122: params:1 = path +; libsrc/apple/fileio.pla: 0123: params:3 = fileinfo +; libsrc/apple/fileio.pla: 0124: params.5 = 15 +; libsrc/apple/fileio.pla: 0125: perr = syscall($C3, @params) +; libsrc/apple/fileio.pla: 0126: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$07 ; SLW [7] + !BYTE $1E ; CN 15 + !BYTE $74,$09 ; SLB [9] + !BYTE $2A,$C3 ; CB 195 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F035 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F036 !WORD _D047+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/fileio.pla: 0127: end +; libsrc/apple/fileio.pla: 0128: def a1geteof(refnum)#2 + ; refnum -> [0] +_C011 ; a1geteof() +; libsrc/apple/fileio.pla: 0129: return 0, 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0130: end +; libsrc/apple/fileio.pla: 0131: def a23geteof(refnum)#2 + ; refnum -> [0] +_P004 ; a23geteof(refnum)#2() +_C012 ; a23geteof() +; libsrc/apple/fileio.pla: 0132: byte params[5] + ; params -> [2] +; libsrc/apple/fileio.pla: 0133: +; libsrc/apple/fileio.pla: 0134: params.0 = 2 + !BYTE $58,$07,$01 ; ENTER 7,1 +; libsrc/apple/fileio.pla: 0135: params.1 = refnum +; libsrc/apple/fileio.pla: 0136: params:2 = 0 +; libsrc/apple/fileio.pla: 0137: params.4 = 0 +; libsrc/apple/fileio.pla: 0138: syscall($D1, @params) +; libsrc/apple/fileio.pla: 0139: return params:2, params.4 + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $00 ; CN 0 + !BYTE $74,$06 ; SLB [6] + !BYTE $2A,$D1 ; CB 209 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F037 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $64,$06 ; LLB [6] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/fileio.pla: 0140: end +; libsrc/apple/fileio.pla: 0141: def a1seteof(refnum, eofl, eofh) + ; refnum -> [0] + ; eofl -> [2] + ; eofh -> [4] +_C013 ; a1seteof() +; libsrc/apple/fileio.pla: 0142: return 0 + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0143: end +; libsrc/apple/fileio.pla: 0144: def a23seteof(refnum, eofl, eofh) + ; refnum -> [0] + ; eofl -> [2] + ; eofh -> [4] +_P005 ; a23seteof(refnum, eofl, eofh)() +_C014 ; a23seteof() +; libsrc/apple/fileio.pla: 0145: byte params[5] + ; params -> [6] +; libsrc/apple/fileio.pla: 0146: +; libsrc/apple/fileio.pla: 0147: params.0 = 2 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; libsrc/apple/fileio.pla: 0148: params.1 = refnum +; libsrc/apple/fileio.pla: 0149: params:2 = eofl +; libsrc/apple/fileio.pla: 0150: params.4 = eofh +; libsrc/apple/fileio.pla: 0151: syscall($D0, @params) +; libsrc/apple/fileio.pla: 0152: return params:2 + !BYTE $04 ; CN 2 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$0A ; SLB [10] + !BYTE $2A,$D0 ; CB 208 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F038 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0B ; LEAVE 11 +; libsrc/apple/fileio.pla: 0153: end +; libsrc/apple/fileio.pla: 0154: def a1open(path) + ; path -> [0] +_C015 ; a1open() +; libsrc/apple/fileio.pla: 0155: *CFFA1FileName = path + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/fileio.pla: 0156: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A,$02,$00 ; SAW 2 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0157: end +; libsrc/apple/fileio.pla: 0158: def a2iobufs(iobufs) + ; iobufs -> [0] +_P006 ; a2iobufs(iobufs)() +_C016 ; a2iobufs() +; libsrc/apple/fileio.pla: 0159: byte i + ; i -> [2] +; libsrc/apple/fileio.pla: 0160: word freebuf, bufaddr + ; freebuf -> [3] + ; bufaddr -> [5] +; libsrc/apple/fileio.pla: 0161: +; libsrc/apple/fileio.pla: 0162: if iobufs > MAX_IOBUFS + !BYTE $58,$07,$01 ; ENTER 7,1 +; libsrc/apple/fileio.pla: 0163: iobufs = MAX_IOBUFS +; libsrc/apple/fileio.pla: 0164: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $08 ; CN 4 + !BYTE $76,$00 ; SLW [0] +_B001 +_B002 +; libsrc/apple/fileio.pla: 0165: if iobufs +; libsrc/apple/fileio.pla: 0166: iobufs-- // Subtract off system I/O buffer + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; libsrc/apple/fileio.pla: 0167: if iobufs +; libsrc/apple/fileio.pla: 0168: bufaddr = heapallocalign(1024 * iobufs, 8, @freebuf) +; libsrc/apple/fileio.pla: 0169: for i = 1 to MAX_IOBUFS-1 + !BYTE $6E,$00 ; DLW [0] + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $66,$00 ; LLW [0] + !BYTE $86 ; MUL + !BYTE $10 ; CN 8 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _X013 +_F039 !WORD 0 + !BYTE $76,$05 ; SLW [5] + !BYTE $06 ; CN 3 + !BYTE $02 ; CN 1 +_B008 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/fileio.pla: 0170: if not iobuf_addr[i] +; libsrc/apple/fileio.pla: 0171: iobuf_addr[i] = bufaddr +; libsrc/apple/fileio.pla: 0172: bufaddr = bufaddr + 1024 +; libsrc/apple/fileio.pla: 0173: iobufs-- + !BYTE $26 ; LA _D049+0 +_F040 !WORD _D049+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* + !BYTE $66,$05 ; LLW [5] + !BYTE $26 ; LA _D049+0 +_F041 !WORD _D049+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $72 ; SW + !BYTE $66,$05 ; LLW [5] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $82 ; ADD + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; libsrc/apple/fileio.pla: 0174: if not iobufs +; libsrc/apple/fileio.pla: 0175: return freebuf + !BYTE $6E,$00 ; DLW [0] + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* + !BYTE $32 ; DROP2 + !BYTE $66,$03 ; LLW [3] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/fileio.pla: 0176: fin +_B012 +_B013 +; libsrc/apple/fileio.pla: 0177: fin +_B010 +_B011 +; libsrc/apple/fileio.pla: 0178: next +_B009 + !BYTE $A4 ; INCBRLE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/fileio.pla: 0179: return freebuf + !BYTE $66,$03 ; LLW [3] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/fileio.pla: 0180: fin +_B005 +_B006 +; libsrc/apple/fileio.pla: 0181: else + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; libsrc/apple/fileio.pla: 0182: for i = 1 to MAX_IOBUFS-1 + !BYTE $06 ; CN 3 + !BYTE $02 ; CN 1 +_B015 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/fileio.pla: 0183: iobuf_addr[i] = 0 // Free I/O buffers if 0 passed in +; libsrc/apple/fileio.pla: 0184: next + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D049+0 +_F042 !WORD _D049+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $72 ; SW +_B016 + !BYTE $A4 ; INCBRLE _B015 + !WORD _B015-* +_B014 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/fileio.pla: 0185: fin +_B004 +; libsrc/apple/fileio.pla: 0186: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/fileio.pla: 0187: end +; libsrc/apple/fileio.pla: 0188: def a13iobufs(iobufs) + ; iobufs -> [0] +_C017 ; a13iobufs() +; libsrc/apple/fileio.pla: 0189: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0190: end +; libsrc/apple/fileio.pla: 0191: def a2open(path) + ; path -> [0] +_P007 ; a2open(path)() +_C018 ; a2open() +; libsrc/apple/fileio.pla: 0192: byte i, params[6] + ; i -> [2] + ; params -> [3] +; libsrc/apple/fileio.pla: 0193: +; libsrc/apple/fileio.pla: 0194: for i = 0 to MAX_IOBUFS-1 + !BYTE $58,$09,$01 ; ENTER 9,1 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B018 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/fileio.pla: 0195: if iobuf_addr[i] and not iobuf_ref[i] +; libsrc/apple/fileio.pla: 0196: params.0 = 3 +; libsrc/apple/fileio.pla: 0197: params:1 = path +; libsrc/apple/fileio.pla: 0198: params:3 = iobuf_addr[i] +; libsrc/apple/fileio.pla: 0199: params.5 = 0 +; libsrc/apple/fileio.pla: 0200: perr = syscall($C8, @params) +; libsrc/apple/fileio.pla: 0201: iobuf_ref[i] = params.5 +; libsrc/apple/fileio.pla: 0202: return params.5 + !BYTE $26 ; LA _D049+0 +_F043 !WORD _D049+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $AC ; BRAND _B020 + !WORD _B020-* + !BYTE $26 ; LA _D048+0 +_F044 !WORD _D048+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $80 ; NOT +_B020 + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $06 ; CN 3 + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $26 ; LA _D049+0 +_F045 !WORD _D049+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _X011 +_F046 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F047 !WORD _D047+0 + !BYTE $64,$08 ; LLB [8] + !BYTE $26 ; LA _D048+0 +_F048 !WORD _D048+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $32 ; DROP2 + !BYTE $64,$08 ; LLB [8] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/fileio.pla: 0203: fin +_B021 +_B022 +; libsrc/apple/fileio.pla: 0204: next +_B019 + !BYTE $A4 ; INCBRLE _B018 + !WORD _B018-* +_B017 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/fileio.pla: 0205: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/fileio.pla: 0206: end +; libsrc/apple/fileio.pla: 0207: def a3open(path) + ; path -> [0] +_C019 ; a3open() +; libsrc/apple/fileio.pla: 0208: byte params[7] + ; params -> [2] +; libsrc/apple/fileio.pla: 0209: +; libsrc/apple/fileio.pla: 0210: params.0 = 4 + !BYTE $58,$09,$01 ; ENTER 9,1 +; libsrc/apple/fileio.pla: 0211: params:1 = path +; libsrc/apple/fileio.pla: 0212: params.3 = 0 +; libsrc/apple/fileio.pla: 0213: params:4 = 0 +; libsrc/apple/fileio.pla: 0214: params.6 = 0 +; libsrc/apple/fileio.pla: 0215: perr = syscall($C8, @params) +; libsrc/apple/fileio.pla: 0216: return params.3 + !BYTE $08 ; CN 4 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F049 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F050 !WORD _D047+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/fileio.pla: 0217: end +; libsrc/apple/fileio.pla: 0218: def a1close(refnum) + ; refnum -> [0] +_C020 ; a1close() +; libsrc/apple/fileio.pla: 0219: return perr + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $68 ; LAB _D047+0 +_F051 !WORD _D047+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0220: end +; libsrc/apple/fileio.pla: 0221: def a2close(refnum) + ; refnum -> [0] +_P008 ; a2close(refnum)() +_C021 ; a2close() +; libsrc/apple/fileio.pla: 0222: byte i, params[2] + ; i -> [2] + ; params -> [3] +; libsrc/apple/fileio.pla: 0223: +; libsrc/apple/fileio.pla: 0224: for i = 0 to MAX_IOBUFS-1 + !BYTE $58,$05,$01 ; ENTER 5,1 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B024 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/fileio.pla: 0225: if refnum == iobuf_ref[i] +; libsrc/apple/fileio.pla: 0226: iobuf_ref[i] = 0 +; libsrc/apple/fileio.pla: 0227: params.0 = 1 +; libsrc/apple/fileio.pla: 0228: params.1 = refnum +; libsrc/apple/fileio.pla: 0229: perr = syscall($CC, @params) +; libsrc/apple/fileio.pla: 0230: return perr + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D048+0 +_F052 !WORD _D048+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B026 + !WORD _B026-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D048+0 +_F053 !WORD _D048+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$04 ; SLB [4] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _X011 +_F054 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F055 !WORD _D047+0 + !BYTE $32 ; DROP2 + !BYTE $68 ; LAB _D047+0 +_F056 !WORD _D047+0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0231: fin +_B026 +_B027 +; libsrc/apple/fileio.pla: 0232: next +_B025 + !BYTE $A4 ; INCBRLE _B024 + !WORD _B024-* +_B023 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/fileio.pla: 0233: perr = $45 +; libsrc/apple/fileio.pla: 0234: return perr + !BYTE $2A,$45 ; CB 69 + !BYTE $7C ; DAB _D047+0 +_F057 !WORD _D047+0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0235: end +; libsrc/apple/fileio.pla: 0236: def a3close(refnum) + ; refnum -> [0] +_C022 ; a3close() +; libsrc/apple/fileio.pla: 0237: byte params[2] + ; params -> [2] +; libsrc/apple/fileio.pla: 0238: +; libsrc/apple/fileio.pla: 0239: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/apple/fileio.pla: 0240: params.1 = refnum +; libsrc/apple/fileio.pla: 0241: perr = syscall($CC, @params) +; libsrc/apple/fileio.pla: 0242: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F058 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F059 !WORD _D047+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/fileio.pla: 0243: end +; libsrc/apple/fileio.pla: 0244: def a1read(refnum, buf, len) + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_C023 ; a1read() +; libsrc/apple/fileio.pla: 0245: *CFFA1Dest = buf + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/fileio.pla: 0246: perr = syscall($22, 0) // This reads the entire file from CFFA +; libsrc/apple/fileio.pla: 0247: return perr + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$00,$00 ; SAW 0 + !BYTE $2A,$22 ; CB 34 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X011 +_F060 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F061 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0248: end +; libsrc/apple/fileio.pla: 0249: def a23read(refnum, buf, len) + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_P009 ; a23read(refnum, buf, len)() +_C024 ; a23read() +; libsrc/apple/fileio.pla: 0250: byte params[8] + ; params -> [6] +; libsrc/apple/fileio.pla: 0251: +; libsrc/apple/fileio.pla: 0252: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; libsrc/apple/fileio.pla: 0253: params.1 = refnum +; libsrc/apple/fileio.pla: 0254: params:2 = buf +; libsrc/apple/fileio.pla: 0255: params:4 = len +; libsrc/apple/fileio.pla: 0256: params:6 = 0 +; libsrc/apple/fileio.pla: 0257: perr = syscall($CA, @params) +; libsrc/apple/fileio.pla: 0258: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F062 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F063 !WORD _D047+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/apple/fileio.pla: 0259: end +; libsrc/apple/fileio.pla: 0260: def a1write(refnum, buf, len) + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_C025 ; a1write() +; libsrc/apple/fileio.pla: 0261: return perr + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $68 ; LAB _D047+0 +_F064 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0262: end +; libsrc/apple/fileio.pla: 0263: def a2write(refnum, buf, len) + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_P010 ; a2write(refnum, buf, len)() +_C026 ; a2write() +; libsrc/apple/fileio.pla: 0264: byte params[8] + ; params -> [6] +; libsrc/apple/fileio.pla: 0265: +; libsrc/apple/fileio.pla: 0266: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; libsrc/apple/fileio.pla: 0267: params.1 = refnum +; libsrc/apple/fileio.pla: 0268: params:2 = buf +; libsrc/apple/fileio.pla: 0269: params:4 = len +; libsrc/apple/fileio.pla: 0270: params:6 = 0 +; libsrc/apple/fileio.pla: 0271: perr = syscall($CB, @params) +; libsrc/apple/fileio.pla: 0272: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CB ; CB 203 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F065 !WORD 0 + !BYTE $78 ; SAB _D047+0 +_F066 !WORD _D047+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/apple/fileio.pla: 0273: end +; libsrc/apple/fileio.pla: 0274: def a3write(refnum, buff, len) + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_C027 ; a3write() +; libsrc/apple/fileio.pla: 0275: byte params[6] + ; params -> [6] +; libsrc/apple/fileio.pla: 0276: +; libsrc/apple/fileio.pla: 0277: params.0 = 3 + !BYTE $58,$0C,$03 ; ENTER 12,3 +; libsrc/apple/fileio.pla: 0278: params.1 = refnum +; libsrc/apple/fileio.pla: 0279: params:2 = buff +; libsrc/apple/fileio.pla: 0280: params:4 = len +; libsrc/apple/fileio.pla: 0281: perr = syscall($CB, @params) +; libsrc/apple/fileio.pla: 0282: return perr ?? 0 :: len + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $2A,$CB ; CB 203 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F067 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F068 !WORD _D047+0 + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $00 ; CN 0 + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 + !BYTE $66,$04 ; LLW [4] +_B029 + !BYTE $5A,$0C ; LEAVE 12 +; libsrc/apple/fileio.pla: 0283: end +; libsrc/apple/fileio.pla: 0284: def a1create(path, type, aux) + ; path -> [0] + ; type -> [2] + ; aux -> [4] +_C028 ; a1create() +; libsrc/apple/fileio.pla: 0285: return perr + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $68 ; LAB _D047+0 +_F069 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0286: end +; libsrc/apple/fileio.pla: 0287: def a2create(path, type, aux) + ; path -> [0] + ; type -> [2] + ; aux -> [4] +_P011 ; a2create(path, type, aux)() +_C029 ; a2create() +; libsrc/apple/fileio.pla: 0288: byte params[12] + ; params -> [6] +; libsrc/apple/fileio.pla: 0289: +; libsrc/apple/fileio.pla: 0290: params.0 = 7 + !BYTE $58,$12,$03 ; ENTER 18,3 +; libsrc/apple/fileio.pla: 0291: params:1 = path +; libsrc/apple/fileio.pla: 0292: params.3 = $C3 +; libsrc/apple/fileio.pla: 0293: params.4 = type +; libsrc/apple/fileio.pla: 0294: params:5 = aux +; libsrc/apple/fileio.pla: 0295: params.7 = type == $0F ?? $0D :: $01 +; libsrc/apple/fileio.pla: 0296: params:8 = 0 +; libsrc/apple/fileio.pla: 0297: params:10 = 0 +; libsrc/apple/fileio.pla: 0298: perr = syscall($C0, @params) +; libsrc/apple/fileio.pla: 0299: return perr + !BYTE $0E ; CN 7 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$07 ; SLW [7] + !BYTE $2A,$C3 ; CB 195 + !BYTE $74,$09 ; SLB [9] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$0A ; SLB [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0B ; SLW [11] + !BYTE $66,$02 ; LLW [2] + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B030 + !WORD _B030-* + !BYTE $1A ; CN 13 + !BYTE $50 ; BRNCH _B031 + !WORD _B031-* +_B030 + !BYTE $02 ; CN 1 +_B031 + !BYTE $74,$0D ; SLB [13] + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $2A,$C0 ; CB 192 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F070 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F071 !WORD _D047+0 + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/apple/fileio.pla: 0300: end +; libsrc/apple/fileio.pla: 0301: def a3create(path, type, aux) + ; path -> [0] + ; type -> [2] + ; aux -> [4] +_C030 ; a3create() +; libsrc/apple/fileio.pla: 0302: byte params[6] + ; params -> [6] +; libsrc/apple/fileio.pla: 0303: byte options[4] + ; options -> [12] +; libsrc/apple/fileio.pla: 0304: +; libsrc/apple/fileio.pla: 0305: params.0 = 3 + !BYTE $58,$10,$03 ; ENTER 16,3 +; libsrc/apple/fileio.pla: 0306: params:1 = path +; libsrc/apple/fileio.pla: 0307: params:3 = @options +; libsrc/apple/fileio.pla: 0308: params.5 = 4 +; libsrc/apple/fileio.pla: 0309: options.0 = type +; libsrc/apple/fileio.pla: 0310: options:1 = aux +; libsrc/apple/fileio.pla: 0311: options.3 = type == $0F ?? $0D :: $01 +; libsrc/apple/fileio.pla: 0312: perr = syscall($C0, @params) +; libsrc/apple/fileio.pla: 0313: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$07 ; SLW [7] + !BYTE $28,$0C ; LLA [12] + !BYTE $76,$09 ; SLW [9] + !BYTE $08 ; CN 4 + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$0C ; SLB [12] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0D ; SLW [13] + !BYTE $66,$02 ; LLW [2] + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B032 + !WORD _B032-* + !BYTE $1A ; CN 13 + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +_B032 + !BYTE $02 ; CN 1 +_B033 + !BYTE $74,$0F ; SLB [15] + !BYTE $2A,$C0 ; CB 192 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F072 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F073 !WORD _D047+0 + !BYTE $5A,$10 ; LEAVE 16 +; libsrc/apple/fileio.pla: 0314: end +; libsrc/apple/fileio.pla: 0315: def a1destroy(path) + ; path -> [0] +_C031 ; a1destroy() +; libsrc/apple/fileio.pla: 0316: perr = $01 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/fileio.pla: 0317: return perr + !BYTE $02 ; CN 1 + !BYTE $7C ; DAB _D047+0 +_F074 !WORD _D047+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/fileio.pla: 0318: end +; libsrc/apple/fileio.pla: 0319: def a23destroy(path) + ; path -> [0] +_P012 ; a23destroy(path)() +_C032 ; a23destroy() +; libsrc/apple/fileio.pla: 0320: byte params[3] + ; params -> [2] +; libsrc/apple/fileio.pla: 0321: +; libsrc/apple/fileio.pla: 0322: params.0 = 1 + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/apple/fileio.pla: 0323: params:1 = path +; libsrc/apple/fileio.pla: 0324: perr = syscall($C1, @params) +; libsrc/apple/fileio.pla: 0325: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$C1 ; CB 193 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F075 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F076 !WORD _D047+0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/fileio.pla: 0326: end +; libsrc/apple/fileio.pla: 0327: def a1rename(oldpath, newpath) + ; oldpath -> [0] + ; newpath -> [2] +_C033 ; a1rename() +; libsrc/apple/fileio.pla: 0328: perr = $01 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/fileio.pla: 0329: return perr + !BYTE $02 ; CN 1 + !BYTE $7C ; DAB _D047+0 +_F077 !WORD _D047+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/fileio.pla: 0330: end +; libsrc/apple/fileio.pla: 0331: def a23rename(path, newpath) + ; path -> [0] + ; newpath -> [2] +_P013 ; a23rename(path, newpath)() +_C034 ; a23rename() +; libsrc/apple/fileio.pla: 0332: byte params[5] + ; params -> [4] +; libsrc/apple/fileio.pla: 0333: +; libsrc/apple/fileio.pla: 0334: params.0 = 2 + !BYTE $58,$09,$02 ; ENTER 9,2 +; libsrc/apple/fileio.pla: 0335: params:1 = path +; libsrc/apple/fileio.pla: 0336: params:3 = newpath +; libsrc/apple/fileio.pla: 0337: perr = syscall($C2, @params) +; libsrc/apple/fileio.pla: 0338: return perr + !BYTE $04 ; CN 2 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$07 ; SLW [7] + !BYTE $2A,$C2 ; CB 194 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F078 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F079 !WORD _D047+0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/fileio.pla: 0339: end +; libsrc/apple/fileio.pla: 0340: def a1newline(refnum, emask, nlchar) + ; refnum -> [0] + ; emask -> [2] + ; nlchar -> [4] +_C035 ; a1newline() +; libsrc/apple/fileio.pla: 0341: return perr + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $68 ; LAB _D047+0 +_F080 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0342: end +; libsrc/apple/fileio.pla: 0343: def a2newline(refnum, emask, nlchar) + ; refnum -> [0] + ; emask -> [2] + ; nlchar -> [4] +_P014 ; a2newline(refnum, emask, nlchar)() +_C036 ; a2newline() +; libsrc/apple/fileio.pla: 0344: byte params[4] + ; params -> [6] +; libsrc/apple/fileio.pla: 0345: +; libsrc/apple/fileio.pla: 0346: params.0 = 3 + !BYTE $58,$0A,$03 ; ENTER 10,3 +; libsrc/apple/fileio.pla: 0347: params.1 = refnum +; libsrc/apple/fileio.pla: 0348: params.2 = emask +; libsrc/apple/fileio.pla: 0349: params.3 = nlchar +; libsrc/apple/fileio.pla: 0350: perr = syscall($C9, @params) +; libsrc/apple/fileio.pla: 0351: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$09 ; SLB [9] + !BYTE $2A,$C9 ; CB 201 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F081 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F082 !WORD _D047+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/fileio.pla: 0352: end +; libsrc/apple/fileio.pla: 0353: def a3newline(refnum, emask, nlchar) + ; refnum -> [0] + ; emask -> [2] + ; nlchar -> [4] +_C037 ; a3newline() +; libsrc/apple/fileio.pla: 0354: byte params[4] + ; params -> [6] +; libsrc/apple/fileio.pla: 0355: +; libsrc/apple/fileio.pla: 0356: params.0 = 3 + !BYTE $58,$0A,$03 ; ENTER 10,3 +; libsrc/apple/fileio.pla: 0357: params.1 = refnum +; libsrc/apple/fileio.pla: 0358: params.2 = emask ?? $FF :: $00 +; libsrc/apple/fileio.pla: 0359: params.3 = nlchar +; libsrc/apple/fileio.pla: 0360: perr = syscall($C9, @params) +; libsrc/apple/fileio.pla: 0361: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $2A,$FF ; CB 255 + !BYTE $50 ; BRNCH _B035 + !WORD _B035-* +_B034 + !BYTE $00 ; CN 0 +_B035 + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$09 ; SLB [9] + !BYTE $2A,$C9 ; CB 201 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F083 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F084 !WORD _D047+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/fileio.pla: 0362: end +; libsrc/apple/fileio.pla: 0363: def a1online(unit, buf) + ; unit -> [0] + ; buf -> [2] +_C038 ; a1online() +; libsrc/apple/fileio.pla: 0364: perr = $27 // IOERR + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/fileio.pla: 0365: return perr + !BYTE $2A,$27 ; CB 39 + !BYTE $7C ; DAB _D047+0 +_F085 !WORD _D047+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/fileio.pla: 0366: end +; libsrc/apple/fileio.pla: 0367: def a2online(unit, buf) + ; unit -> [0] + ; buf -> [2] +_P015 ; a2online(unit, buf)() +_C039 ; a2online() +; libsrc/apple/fileio.pla: 0368: byte params[4] + ; params -> [4] +; libsrc/apple/fileio.pla: 0369: +; libsrc/apple/fileio.pla: 0370: params.0 = 2 + !BYTE $58,$08,$02 ; ENTER 8,2 +; libsrc/apple/fileio.pla: 0371: params.1 = unit +; libsrc/apple/fileio.pla: 0372: params:2 = buf +; libsrc/apple/fileio.pla: 0373: perr = syscall($C5, @params) +; libsrc/apple/fileio.pla: 0374: return perr + !BYTE $04 ; CN 2 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F086 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F087 !WORD _D047+0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/fileio.pla: 0375: end +; libsrc/apple/fileio.pla: 0376: def a3volume(unit, volname) + ; unit -> [0] + ; volname -> [2] +_C040 ; a3volume() +; libsrc/apple/fileio.pla: 0377: byte devname[17] + ; devname -> [4] +; libsrc/apple/fileio.pla: 0378: byte info[11] + ; info -> [21] +; libsrc/apple/fileio.pla: 0379: byte params[9] + ; params -> [32] +; libsrc/apple/fileio.pla: 0380: +; libsrc/apple/fileio.pla: 0381: ^volname = 0 + !BYTE $58,$29,$02 ; ENTER 41,2 +; libsrc/apple/fileio.pla: 0382: params.0 = 4 +; libsrc/apple/fileio.pla: 0383: params.1 = unit +; libsrc/apple/fileio.pla: 0384: params:2 = @devname +; libsrc/apple/fileio.pla: 0385: params:4 = @info +; libsrc/apple/fileio.pla: 0386: params.6 = 11 +; libsrc/apple/fileio.pla: 0387: if syscall($85, @params) == 0 +; libsrc/apple/fileio.pla: 0388: params.0 = 4 +; libsrc/apple/fileio.pla: 0389: params:1 = @devname +; libsrc/apple/fileio.pla: 0390: params:3 = volname +; libsrc/apple/fileio.pla: 0391: params:5 = 0 +; libsrc/apple/fileio.pla: 0392: params:7 = 0 +; libsrc/apple/fileio.pla: 0393: return syscall($C5, @params) + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $74,$20 ; SLB [32] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$21 ; SLB [33] + !BYTE $28,$04 ; LLA [4] + !BYTE $76,$22 ; SLW [34] + !BYTE $28,$15 ; LLA [21] + !BYTE $76,$24 ; SLW [36] + !BYTE $16 ; CN 11 + !BYTE $74,$26 ; SLB [38] + !BYTE $2A,$85 ; CB 133 + !BYTE $28,$20 ; LLA [32] + !BYTE $54 ; CALL _X011 +_F088 !WORD 0 + !BYTE $4E ; BRTRU _B036 + !WORD _B036-* + !BYTE $08 ; CN 4 + !BYTE $74,$20 ; SLB [32] + !BYTE $28,$04 ; LLA [4] + !BYTE $76,$21 ; SLW [33] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$23 ; SLW [35] + !BYTE $00 ; CN 0 + !BYTE $76,$25 ; SLW [37] + !BYTE $00 ; CN 0 + !BYTE $76,$27 ; SLW [39] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$20 ; LLA [32] + !BYTE $54 ; CALL _X011 +_F089 !WORD 0 + !BYTE $5A,$29 ; LEAVE 41 +; libsrc/apple/fileio.pla: 0394: fin +_B036 +_B037 +; libsrc/apple/fileio.pla: 0395: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$29 ; LEAVE 41 +; libsrc/apple/fileio.pla: 0396: end +; libsrc/apple/fileio.pla: 0397: def a3online(unit, buf) + ; unit -> [0] + ; buf -> [2] +_C041 ; a3online() +; libsrc/apple/fileio.pla: 0398: byte info[11] + ; info -> [4] +; libsrc/apple/fileio.pla: 0399: byte volname[17] + ; volname -> [15] +; libsrc/apple/fileio.pla: 0400: byte i + ; i -> [32] +; libsrc/apple/fileio.pla: 0401: +; libsrc/apple/fileio.pla: 0402: if unit == 0 + !BYTE $58,$21,$02 ; ENTER 33,2 +; libsrc/apple/fileio.pla: 0403: for i = $01 to $0F + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* + !BYTE $1E ; CN 15 + !BYTE $02 ; CN 1 +_B041 + !BYTE $6C,$20 ; DLB [32] +; libsrc/apple/fileio.pla: 0404: if a3volume(i, buf) == 0 +; libsrc/apple/fileio.pla: 0405: ^buf = ^buf | (i << 4) +; libsrc/apple/fileio.pla: 0406: fin + !BYTE $64,$20 ; LLB [32] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C040 +_F090 !WORD _C040 + !BYTE $4E ; BRTRU _B043 + !WORD _B043-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $64,$20 ; LLB [32] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB +_B043 +_B044 +; libsrc/apple/fileio.pla: 0407: buf = buf + 16 +; libsrc/apple/fileio.pla: 0408: next + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] +_B042 + !BYTE $A4 ; INCBRLE _B041 + !WORD _B041-* +_B040 + !BYTE $74,$20 ; SLB [32] + !BYTE $30 ; DROP +; libsrc/apple/fileio.pla: 0409: else + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +_B038 +; libsrc/apple/fileio.pla: 0410: return a3volume(unit, buf) + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C040 +_F091 !WORD _C040 + !BYTE $5A,$21 ; LEAVE 33 +; libsrc/apple/fileio.pla: 0411: fin +_B039 +; libsrc/apple/fileio.pla: 0412: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$21 ; LEAVE 33 +; libsrc/apple/fileio.pla: 0413: end +; libsrc/apple/fileio.pla: 0414: def a13readblock(unit, buf, block) + ; unit -> [0] + ; buf -> [2] + ; block -> [4] +_C042 ; a13readblock() +; libsrc/apple/fileio.pla: 0415: perr = $27 // IOERR + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/fileio.pla: 0416: return perr + !BYTE $2A,$27 ; CB 39 + !BYTE $7C ; DAB _D047+0 +_F092 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0417: end +; libsrc/apple/fileio.pla: 0418: def a2readblock(unit, buf, block) + ; unit -> [0] + ; buf -> [2] + ; block -> [4] +_P016 ; a2readblock(unit, buf, block)() +_C043 ; a2readblock() +; libsrc/apple/fileio.pla: 0419: byte params[6] + ; params -> [6] +; libsrc/apple/fileio.pla: 0420: +; libsrc/apple/fileio.pla: 0421: params.0 = 3 + !BYTE $58,$0C,$03 ; ENTER 12,3 +; libsrc/apple/fileio.pla: 0422: params.1 = unit +; libsrc/apple/fileio.pla: 0423: params:2 = buf +; libsrc/apple/fileio.pla: 0424: params:4 = block +; libsrc/apple/fileio.pla: 0425: perr = syscall($80, @params) +; libsrc/apple/fileio.pla: 0426: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $2A,$80 ; CB 128 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F093 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F094 !WORD _D047+0 + !BYTE $5A,$0C ; LEAVE 12 +; libsrc/apple/fileio.pla: 0427: end +; libsrc/apple/fileio.pla: 0428: def a13writeblock(unit, buf, block) + ; unit -> [0] + ; buf -> [2] + ; block -> [4] +_C044 ; a13writeblock() +; libsrc/apple/fileio.pla: 0429: perr = $27 // IOERR + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/fileio.pla: 0430: return perr + !BYTE $2A,$27 ; CB 39 + !BYTE $7C ; DAB _D047+0 +_F095 !WORD _D047+0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/fileio.pla: 0431: end +; libsrc/apple/fileio.pla: 0432: def a2writeblock(unit, buf, block) + ; unit -> [0] + ; buf -> [2] + ; block -> [4] +_P017 ; a2writeblock(unit, buf, block)() +_C045 ; a2writeblock() +; libsrc/apple/fileio.pla: 0433: byte params[6] + ; params -> [6] +; libsrc/apple/fileio.pla: 0434: +; libsrc/apple/fileio.pla: 0435: params.0 = 3 + !BYTE $58,$0C,$03 ; ENTER 12,3 +; libsrc/apple/fileio.pla: 0436: params.1 = unit +; libsrc/apple/fileio.pla: 0437: params:2 = buf +; libsrc/apple/fileio.pla: 0438: params:4 = block +; libsrc/apple/fileio.pla: 0439: perr = syscall($81, @params) +; libsrc/apple/fileio.pla: 0440: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $2A,$81 ; CB 129 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F096 !WORD 0 + !BYTE $7C ; DAB _D047+0 +_F097 !WORD _D047+0 + !BYTE $5A,$0C ; LEAVE 12 +; libsrc/apple/fileio.pla: 0441: end +; libsrc/apple/fileio.pla: 0442: // +; libsrc/apple/fileio.pla: 0443: // Machine specific initialization. +; libsrc/apple/fileio.pla: 0444: // +; libsrc/apple/fileio.pla: 0445: when MACHID & MACHID_MODEL +_INIT + !BYTE $68 ; LAB _X001+0 +_F098 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $52 ; SEL + !WORD _B046-* +; libsrc/apple/fileio.pla: 0446: is MACHID_III +_B047 +; libsrc/apple/fileio.pla: 0447: fileio:getpfx = @a3getpfx +; libsrc/apple/fileio.pla: 0448: fileio:getfileinfo = @a3getfileinfo +; libsrc/apple/fileio.pla: 0449: fileio:setfileinfo = @a3setfileinfo +; libsrc/apple/fileio.pla: 0450: fileio:iobufalloc = @a13iobufs +; libsrc/apple/fileio.pla: 0451: fileio:open = @a3open +; libsrc/apple/fileio.pla: 0452: fileio:close = @a3close +; libsrc/apple/fileio.pla: 0453: fileio:write = @a3write +; libsrc/apple/fileio.pla: 0454: fileio:create = @a3create +; libsrc/apple/fileio.pla: 0455: fileio:newline = @a3newline +; libsrc/apple/fileio.pla: 0456: fileio:online = @a3online +; libsrc/apple/fileio.pla: 0457: fileio:readblock = @a13readblock +; libsrc/apple/fileio.pla: 0458: fileio:writeblock = @a13writeblock +; libsrc/apple/fileio.pla: 0459: break + !BYTE $26 ; LA _C002+0 +_F099 !WORD _C002+0 + !BYTE $7A ; SAW _D046+0 +_F100 !WORD _D046+0 + !BYTE $26 ; LA _C007+0 +_F101 !WORD _C007+0 + !BYTE $7A ; SAW _D046+4 +_F102 !WORD _D046+4 + !BYTE $26 ; LA _C010+0 +_F103 !WORD _C010+0 + !BYTE $7A ; SAW _D046+6 +_F104 !WORD _D046+6 + !BYTE $26 ; LA _C017+0 +_F105 !WORD _C017+0 + !BYTE $7A ; SAW _D046+12 +_F106 !WORD _D046+12 + !BYTE $26 ; LA _C019+0 +_F107 !WORD _C019+0 + !BYTE $7A ; SAW _D046+14 +_F108 !WORD _D046+14 + !BYTE $26 ; LA _C022+0 +_F109 !WORD _C022+0 + !BYTE $7A ; SAW _D046+16 +_F110 !WORD _D046+16 + !BYTE $26 ; LA _C027+0 +_F111 !WORD _C027+0 + !BYTE $7A ; SAW _D046+20 +_F112 !WORD _D046+20 + !BYTE $26 ; LA _C030+0 +_F113 !WORD _C030+0 + !BYTE $7A ; SAW _D046+22 +_F114 !WORD _D046+22 + !BYTE $26 ; LA _C037+0 +_F115 !WORD _C037+0 + !BYTE $7A ; SAW _D046+28 +_F116 !WORD _D046+28 + !BYTE $26 ; LA _C041+0 +_F117 !WORD _C041+0 + !BYTE $7A ; SAW _D046+30 +_F118 !WORD _D046+30 + !BYTE $26 ; LA _C042+0 +_F119 !WORD _C042+0 + !BYTE $7A ; SAW _D046+32 +_F120 !WORD _D046+32 + !BYTE $26 ; LA _C044+0 +_F121 !WORD _C044+0 + !BYTE $7A ; SAW _D046+34 +_F122 !WORD _D046+34 + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +; libsrc/apple/fileio.pla: 0460: is MACHID_I +_B048 +; libsrc/apple/fileio.pla: 0461: fileio:getpfx = @a1getpfx +; libsrc/apple/fileio.pla: 0462: fileio:setpfx = @a1setpfx +; libsrc/apple/fileio.pla: 0463: fileio:getfileinfo = @a1getfileinfo +; libsrc/apple/fileio.pla: 0464: fileio:setfileinfo = @a1setfileinfo +; libsrc/apple/fileio.pla: 0465: fileio:geteof = @a1geteof +; libsrc/apple/fileio.pla: 0466: fileio:seteof = @a1seteof +; libsrc/apple/fileio.pla: 0467: fileio:iobufalloc = @a13iobufs +; libsrc/apple/fileio.pla: 0468: fileio:open = @a1open +; libsrc/apple/fileio.pla: 0469: fileio:close = @a1close +; libsrc/apple/fileio.pla: 0470: fileio:read = @a1read +; libsrc/apple/fileio.pla: 0471: fileio:write = @a1write +; libsrc/apple/fileio.pla: 0472: fileio:create = @a1create +; libsrc/apple/fileio.pla: 0473: fileio:destroy = @a1destroy +; libsrc/apple/fileio.pla: 0474: fileio:rename = @a1rename +; libsrc/apple/fileio.pla: 0475: fileio:newline = @a1newline +; libsrc/apple/fileio.pla: 0476: fileio:online = @a1online +; libsrc/apple/fileio.pla: 0477: fileio:readblock = @a13readblock +; libsrc/apple/fileio.pla: 0478: fileio:writeblock = @a13writeblock +; libsrc/apple/fileio.pla: 0479: break + !BYTE $26 ; LA _C000+0 +_F123 !WORD _C000+0 + !BYTE $7A ; SAW _D046+0 +_F124 !WORD _D046+0 + !BYTE $26 ; LA _C003+0 +_F125 !WORD _C003+0 + !BYTE $7A ; SAW _D046+2 +_F126 !WORD _D046+2 + !BYTE $26 ; LA _C005+0 +_F127 !WORD _C005+0 + !BYTE $7A ; SAW _D046+4 +_F128 !WORD _D046+4 + !BYTE $26 ; LA _C008+0 +_F129 !WORD _C008+0 + !BYTE $7A ; SAW _D046+6 +_F130 !WORD _D046+6 + !BYTE $26 ; LA _C011+0 +_F131 !WORD _C011+0 + !BYTE $7A ; SAW _D046+8 +_F132 !WORD _D046+8 + !BYTE $26 ; LA _C013+0 +_F133 !WORD _C013+0 + !BYTE $7A ; SAW _D046+10 +_F134 !WORD _D046+10 + !BYTE $26 ; LA _C017+0 +_F135 !WORD _C017+0 + !BYTE $7A ; SAW _D046+12 +_F136 !WORD _D046+12 + !BYTE $26 ; LA _C015+0 +_F137 !WORD _C015+0 + !BYTE $7A ; SAW _D046+14 +_F138 !WORD _D046+14 + !BYTE $26 ; LA _C020+0 +_F139 !WORD _C020+0 + !BYTE $7A ; SAW _D046+16 +_F140 !WORD _D046+16 + !BYTE $26 ; LA _C023+0 +_F141 !WORD _C023+0 + !BYTE $7A ; SAW _D046+18 +_F142 !WORD _D046+18 + !BYTE $26 ; LA _C025+0 +_F143 !WORD _C025+0 + !BYTE $7A ; SAW _D046+20 +_F144 !WORD _D046+20 + !BYTE $26 ; LA _C028+0 +_F145 !WORD _C028+0 + !BYTE $7A ; SAW _D046+22 +_F146 !WORD _D046+22 + !BYTE $26 ; LA _C031+0 +_F147 !WORD _C031+0 + !BYTE $7A ; SAW _D046+24 +_F148 !WORD _D046+24 + !BYTE $26 ; LA _C033+0 +_F149 !WORD _C033+0 + !BYTE $7A ; SAW _D046+26 +_F150 !WORD _D046+26 + !BYTE $26 ; LA _C035+0 +_F151 !WORD _C035+0 + !BYTE $7A ; SAW _D046+28 +_F152 !WORD _D046+28 + !BYTE $26 ; LA _C038+0 +_F153 !WORD _C038+0 + !BYTE $7A ; SAW _D046+30 +_F154 !WORD _D046+30 + !BYTE $26 ; LA _C042+0 +_F155 !WORD _C042+0 + !BYTE $7A ; SAW _D046+32 +_F156 !WORD _D046+32 + !BYTE $26 ; LA _C044+0 +_F157 !WORD _C044+0 + !BYTE $7A ; SAW _D046+34 +_F158 !WORD _D046+34 + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +; libsrc/apple/fileio.pla: 0480: otherwise // Apple ][ +_B046 + !BYTE $02 ; CASEBLOCK + !WORD $0008 + !WORD _B048-* + !WORD $00C0 + !WORD _B047-* +; libsrc/apple/fileio.pla: 0481: wend +_B045 +; libsrc/apple/fileio.pla: 0482: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 47 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C024 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C025 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C026 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C027 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C028 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C029 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C030 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C031 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C032 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C033 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C034 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C035 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C036 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C037 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C038 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C039 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C040 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C041 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C042 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C043 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C044 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C045 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D047 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/grafix.a b/src/libsrc/apple/grafix.a new file mode 100644 index 0000000..265cc6f --- /dev/null +++ b/src/libsrc/apple/grafix.a @@ -0,0 +1,1327 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/grafix.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/grafix.pla: 0001: +; libsrc/apple/grafix.pla: 0002: +; libsrc/apple/grafix.pla: 0003: byte gfxref, gfxseg + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D028 !FILL 1 ; gfxref, gfxseg +_D029 !FILL 1 ; gfxseg +; libsrc/apple/grafix.pla: 0004: byte params[8], cmd[16] +_D030 !FILL 8 ; params[8], cmd[16] +_D031 !FILL 16 ; cmd[16] +; libsrc/apple/grafix.pla: 0005: +; libsrc/apple/grafix.pla: 0006: export def pencolor(clr)#0 +_SUBSEG ; BYTECODE STARTS + ; clr -> [0] +_C000 ; pencolor() +; libsrc/apple/grafix.pla: 0007: params:4 = 2 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grafix.pla: 0008: cmd.0 = 19 // Pen color +; libsrc/apple/grafix.pla: 0009: cmd.1 = clr +; libsrc/apple/grafix.pla: 0010: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0011: end + !BYTE $04 ; CN 2 + !BYTE $7A ; SAW _D030+4 +_F000 !WORD _D030+4 + !BYTE $2A,$13 ; CB 19 + !BYTE $78 ; SAB _D031+0 +_F001 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D031+1 +_F002 !WORD _D031+1 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F003 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F004 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grafix.pla: 0012: +; libsrc/apple/grafix.pla: 0013: export def fillcolor(clr)#0 + ; clr -> [0] +_C001 ; fillcolor() +; libsrc/apple/grafix.pla: 0014: params:4 = 2 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grafix.pla: 0015: cmd.0 = 20 // Fill color +; libsrc/apple/grafix.pla: 0016: cmd.1 = clr +; libsrc/apple/grafix.pla: 0017: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0018: end + !BYTE $04 ; CN 2 + !BYTE $7A ; SAW _D030+4 +_F005 !WORD _D030+4 + !BYTE $2A,$14 ; CB 20 + !BYTE $78 ; SAB _D031+0 +_F006 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D031+1 +_F007 !WORD _D031+1 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F008 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F009 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grafix.pla: 0019: +; libsrc/apple/grafix.pla: 0020: export def fillscreen()#0 +_C002 ; fillscreen() +; libsrc/apple/grafix.pla: 0021: params:4 = 1 +; libsrc/apple/grafix.pla: 0022: cmd.9 = 28 // Clear viewport +; libsrc/apple/grafix.pla: 0023: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0024: end + !BYTE $02 ; CN 1 + !BYTE $7A ; SAW _D030+4 +_F010 !WORD _D030+4 + !BYTE $2A,$1C ; CB 28 + !BYTE $78 ; SAB _D031+9 +_F011 !WORD _D031+9 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F012 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F013 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5C ; RET +; libsrc/apple/grafix.pla: 0025: +; libsrc/apple/grafix.pla: 0026: export def penmove(x, y)#0 + ; x -> [0] + ; y -> [2] +_C003 ; penmove() +; libsrc/apple/grafix.pla: 0027: params:4 = 5 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/grafix.pla: 0028: cmd.0 = 26 // Move pen +; libsrc/apple/grafix.pla: 0029: cmd:1 = x +; libsrc/apple/grafix.pla: 0030: cmd:3 = y +; libsrc/apple/grafix.pla: 0031: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0032: end + !BYTE $0A ; CN 5 + !BYTE $7A ; SAW _D030+4 +_F014 !WORD _D030+4 + !BYTE $2A,$1A ; CB 26 + !BYTE $78 ; SAB _D031+0 +_F015 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F016 !WORD _D031+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+3 +_F017 !WORD _D031+3 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F018 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F019 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/grafix.pla: 0033: +; libsrc/apple/grafix.pla: 0034: export def plot(x, y)#0 + ; x -> [0] + ; y -> [2] +_C004 ; plot() +; libsrc/apple/grafix.pla: 0035: params:4 = 5 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/grafix.pla: 0036: cmd.0 = 25 // Plot +; libsrc/apple/grafix.pla: 0037: cmd:1 = x +; libsrc/apple/grafix.pla: 0038: cmd:3 = y +; libsrc/apple/grafix.pla: 0039: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0040: end + !BYTE $0A ; CN 5 + !BYTE $7A ; SAW _D030+4 +_F020 !WORD _D030+4 + !BYTE $2A,$19 ; CB 25 + !BYTE $78 ; SAB _D031+0 +_F021 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F022 !WORD _D031+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+3 +_F023 !WORD _D031+3 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F024 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F025 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/grafix.pla: 0041: +; libsrc/apple/grafix.pla: 0042: export def line(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C005 ; line() +; libsrc/apple/grafix.pla: 0043: params:4 = 10 + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/grafix.pla: 0044: cmd.0 = 26 // Move pen +; libsrc/apple/grafix.pla: 0045: cmd:1 = x1 +; libsrc/apple/grafix.pla: 0046: cmd:3 = y1 +; libsrc/apple/grafix.pla: 0047: cmd.5 = 24 // Line +; libsrc/apple/grafix.pla: 0048: cmd:6 = x2 +; libsrc/apple/grafix.pla: 0049: cmd:8 = y2 +; libsrc/apple/grafix.pla: 0050: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0051: end + !BYTE $14 ; CN 10 + !BYTE $7A ; SAW _D030+4 +_F026 !WORD _D030+4 + !BYTE $2A,$1A ; CB 26 + !BYTE $78 ; SAB _D031+0 +_F027 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F028 !WORD _D031+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+3 +_F029 !WORD _D031+3 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+5 +_F030 !WORD _D031+5 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D031+6 +_F031 !WORD _D031+6 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D031+8 +_F032 !WORD _D031+8 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F033 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F034 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/grafix.pla: 0052: +; libsrc/apple/grafix.pla: 0053: export def lineto(x, y)#0 + ; x -> [0] + ; y -> [2] +_C006 ; lineto() +; libsrc/apple/grafix.pla: 0054: params:4 = 5 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/grafix.pla: 0055: cmd.0 = 24 // Line +; libsrc/apple/grafix.pla: 0056: cmd:1 = x +; libsrc/apple/grafix.pla: 0057: cmd:3 = y +; libsrc/apple/grafix.pla: 0058: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0059: end + !BYTE $0A ; CN 5 + !BYTE $7A ; SAW _D030+4 +_F035 !WORD _D030+4 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+0 +_F036 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F037 !WORD _D031+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+3 +_F038 !WORD _D031+3 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F039 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F040 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/grafix.pla: 0060: +; libsrc/apple/grafix.pla: 0061: export def rect(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C007 ; rect() +; libsrc/apple/grafix.pla: 0062: params:4 = 10 + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/grafix.pla: 0063: cmd.0 = 26 // Move pen +; libsrc/apple/grafix.pla: 0064: cmd:1 = x1 +; libsrc/apple/grafix.pla: 0065: cmd:3 = y1 +; libsrc/apple/grafix.pla: 0066: cmd.5 = 24 // Line +; libsrc/apple/grafix.pla: 0067: cmd:6 = x2 +; libsrc/apple/grafix.pla: 0068: cmd:8 = y1 +; libsrc/apple/grafix.pla: 0069: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0070: params:4 = 15 +; libsrc/apple/grafix.pla: 0071: cmd.0 = 24 // Line +; libsrc/apple/grafix.pla: 0072: cmd:1 = x2 +; libsrc/apple/grafix.pla: 0073: cmd:3 = y2 +; libsrc/apple/grafix.pla: 0074: cmd.5 = 24 // Line +; libsrc/apple/grafix.pla: 0075: cmd:6 = x1 +; libsrc/apple/grafix.pla: 0076: cmd:8 = y2 +; libsrc/apple/grafix.pla: 0077: cmd.10 = 24 // Line +; libsrc/apple/grafix.pla: 0078: cmd:11 = x1 +; libsrc/apple/grafix.pla: 0079: cmd:13 = y1 +; libsrc/apple/grafix.pla: 0080: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0081: end + !BYTE $14 ; CN 10 + !BYTE $7A ; SAW _D030+4 +_F041 !WORD _D030+4 + !BYTE $2A,$1A ; CB 26 + !BYTE $78 ; SAB _D031+0 +_F042 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F043 !WORD _D031+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+3 +_F044 !WORD _D031+3 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+5 +_F045 !WORD _D031+5 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D031+6 +_F046 !WORD _D031+6 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+8 +_F047 !WORD _D031+8 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F048 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F049 !WORD 0 + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $7A ; SAW _D030+4 +_F050 !WORD _D030+4 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+0 +_F051 !WORD _D031+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D031+1 +_F052 !WORD _D031+1 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D031+3 +_F053 !WORD _D031+3 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+5 +_F054 !WORD _D031+5 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+6 +_F055 !WORD _D031+6 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D031+8 +_F056 !WORD _D031+8 + !BYTE $2A,$18 ; CB 24 + !BYTE $78 ; SAB _D031+10 +_F057 !WORD _D031+10 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+11 +_F058 !WORD _D031+11 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+13 +_F059 !WORD _D031+13 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F060 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F061 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/grafix.pla: 0082: +; libsrc/apple/grafix.pla: 0083: export def fillrect(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C008 ; fillrect() +; libsrc/apple/grafix.pla: 0084: params:4 = 11 + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/grafix.pla: 0085: cmd.0 = 2 // Set viewport +; libsrc/apple/grafix.pla: 0086: cmd:1 = x1 +; libsrc/apple/grafix.pla: 0087: cmd:3 = x2 +; libsrc/apple/grafix.pla: 0088: cmd:5 = y1 +; libsrc/apple/grafix.pla: 0089: cmd:7 = y2 +; libsrc/apple/grafix.pla: 0090: cmd.9 = 28 // Clear viewport +; libsrc/apple/grafix.pla: 0091: cmd.10 = 1 // Reset viewport +; libsrc/apple/grafix.pla: 0092: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0093: end + !BYTE $16 ; CN 11 + !BYTE $7A ; SAW _D030+4 +_F062 !WORD _D030+4 + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D031+0 +_F063 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F064 !WORD _D031+1 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D031+3 +_F065 !WORD _D031+3 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+5 +_F066 !WORD _D031+5 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D031+7 +_F067 !WORD _D031+7 + !BYTE $2A,$1C ; CB 28 + !BYTE $78 ; SAB _D031+9 +_F068 !WORD _D031+9 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D031+10 +_F069 !WORD _D031+10 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F070 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F071 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/grafix.pla: 0094: +; libsrc/apple/grafix.pla: 0095: export def bitblt(bits, pitch, x, y, width, height)#0 + ; bits -> [0] + ; pitch -> [2] + ; x -> [4] + ; y -> [6] + ; width -> [8] + ; height -> [10] +_C009 ; bitblt() +; libsrc/apple/grafix.pla: 0096: params:4 = 14 + !BYTE $58,$0C,$06 ; ENTER 12,6 +; libsrc/apple/grafix.pla: 0097: cmd.0 = 4 // Draw block +; libsrc/apple/grafix.pla: 0098: cmd:1 = bits +; libsrc/apple/grafix.pla: 0099: cmd.3 = ^$FFED & $8F +; libsrc/apple/grafix.pla: 0100: cmd:4 = pitch +; libsrc/apple/grafix.pla: 0101: cmd:6 = x +; libsrc/apple/grafix.pla: 0102: cmd:8 = y +; libsrc/apple/grafix.pla: 0103: cmd:10 = width +; libsrc/apple/grafix.pla: 0104: cmd:12 = height +; libsrc/apple/grafix.pla: 0105: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0106: end + !BYTE $1C ; CN 14 + !BYTE $7A ; SAW _D030+4 +_F072 !WORD _D030+4 + !BYTE $08 ; CN 4 + !BYTE $78 ; SAB _D031+0 +_F073 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+1 +_F074 !WORD _D031+1 + !BYTE $68,$ED,$FF ; LAB 65517 + !BYTE $3C,$8F ; ANDI 143 + !BYTE $78 ; SAB _D031+3 +_F075 !WORD _D031+3 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D031+4 +_F076 !WORD _D031+4 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D031+6 +_F077 !WORD _D031+6 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D031+8 +_F078 !WORD _D031+8 + !BYTE $66,$08 ; LLW [8] + !BYTE $7A ; SAW _D031+10 +_F079 !WORD _D031+10 + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D031+12 +_F080 !WORD _D031+12 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F081 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F082 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$0C ; LEAVE 12 +; libsrc/apple/grafix.pla: 0107: +; libsrc/apple/grafix.pla: 0108: export def drawmode(mode)#0 + ; mode -> [0] +_C010 ; drawmode() +; libsrc/apple/grafix.pla: 0109: params:4 = 2 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grafix.pla: 0110: cmd.0 = 21 // Transfer mode +; libsrc/apple/grafix.pla: 0111: cmd.1 = mode +; libsrc/apple/grafix.pla: 0112: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0113: end + !BYTE $04 ; CN 2 + !BYTE $7A ; SAW _D030+4 +_F083 !WORD _D030+4 + !BYTE $2A,$15 ; CB 21 + !BYTE $78 ; SAB _D031+0 +_F084 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D031+1 +_F085 !WORD _D031+1 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F086 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F087 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grafix.pla: 0114: +; libsrc/apple/grafix.pla: 0115: export def setmode(mode)#0 + ; mode -> [0] +_C011 ; setmode() +; libsrc/apple/grafix.pla: 0116: if mode < 0 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grafix.pla: 0117: // +; libsrc/apple/grafix.pla: 0118: // Free driver +; libsrc/apple/grafix.pla: 0119: // +; libsrc/apple/grafix.pla: 0120: params.0 = 1 +; libsrc/apple/grafix.pla: 0121: params.1 = gfxref +; libsrc/apple/grafix.pla: 0122: syscall($CC, @params) +; libsrc/apple/grafix.pla: 0123: gfxref = 0 +; libsrc/apple/grafix.pla: 0124: // +; libsrc/apple/grafix.pla: 0125: // Deaalocate bank 0 +; libsrc/apple/grafix.pla: 0126: // +; libsrc/apple/grafix.pla: 0127: params.0 = 1 +; libsrc/apple/grafix.pla: 0128: params.1 = gfxseg +; libsrc/apple/grafix.pla: 0129: syscall($45, @params) +; libsrc/apple/grafix.pla: 0130: ^$1907 = $00 // Unset graphics pages allocated +; libsrc/apple/grafix.pla: 0131: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D030+0 +_F088 !WORD _D030+0 + !BYTE $68 ; LAB _D028+0 +_F089 !WORD _D028+0 + !BYTE $78 ; SAB _D030+1 +_F090 !WORD _D030+1 + !BYTE $2A,$CC ; CB 204 + !BYTE $26 ; LA _D030+0 +_F091 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F092 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D028+0 +_F093 !WORD _D028+0 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D030+0 +_F094 !WORD _D030+0 + !BYTE $68 ; LAB _D029+0 +_F095 !WORD _D029+0 + !BYTE $78 ; SAB _D030+1 +_F096 !WORD _D030+1 + !BYTE $2A,$45 ; CB 69 + !BYTE $26 ; LA _D030+0 +_F097 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F098 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78,$07,$19 ; SAB 6407 +_B001 +_B002 +; libsrc/apple/grafix.pla: 0132: if not gfxref +; libsrc/apple/grafix.pla: 0133: return + !BYTE $68 ; LAB _D028+0 +_F099 !WORD _D028+0 + !BYTE $4E ; BRTRU _B003 + !WORD _B003-* + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grafix.pla: 0134: fin +_B003 +_B004 +; libsrc/apple/grafix.pla: 0135: params.0 = 3 +; libsrc/apple/grafix.pla: 0136: params.1 = gfxref +; libsrc/apple/grafix.pla: 0137: params:2 = @cmd +; libsrc/apple/grafix.pla: 0138: params:4 = 8 +; libsrc/apple/grafix.pla: 0139: cmd.0 = 16 // Set mode +; libsrc/apple/grafix.pla: 0140: cmd.1 = mode +; libsrc/apple/grafix.pla: 0141: cmd.2 = 19 // Pen color +; libsrc/apple/grafix.pla: 0142: cmd.3 = 0 +; libsrc/apple/grafix.pla: 0143: cmd.4 = 1 // Reset viewport +; libsrc/apple/grafix.pla: 0144: cmd.5 = 28 // Clear viewport +; libsrc/apple/grafix.pla: 0145: cmd.7 = 15 // Turn on screen +; libsrc/apple/grafix.pla: 0146: syscall($CB, @params) +; libsrc/apple/grafix.pla: 0147: end + !BYTE $06 ; CN 3 + !BYTE $78 ; SAB _D030+0 +_F100 !WORD _D030+0 + !BYTE $68 ; LAB _D028+0 +_F101 !WORD _D028+0 + !BYTE $78 ; SAB _D030+1 +_F102 !WORD _D030+1 + !BYTE $26 ; LA _D031+0 +_F103 !WORD _D031+0 + !BYTE $7A ; SAW _D030+2 +_F104 !WORD _D030+2 + !BYTE $10 ; CN 8 + !BYTE $7A ; SAW _D030+4 +_F105 !WORD _D030+4 + !BYTE $2A,$10 ; CB 16 + !BYTE $78 ; SAB _D031+0 +_F106 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D031+1 +_F107 !WORD _D031+1 + !BYTE $2A,$13 ; CB 19 + !BYTE $78 ; SAB _D031+2 +_F108 !WORD _D031+2 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D031+3 +_F109 !WORD _D031+3 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D031+4 +_F110 !WORD _D031+4 + !BYTE $2A,$1C ; CB 28 + !BYTE $78 ; SAB _D031+5 +_F111 !WORD _D031+5 + !BYTE $1E ; CN 15 + !BYTE $78 ; SAB _D031+7 +_F112 !WORD _D031+7 + !BYTE $2A,$CB ; CB 203 + !BYTE $26 ; LA _D030+0 +_F113 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F114 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grafix.pla: 0148: +; libsrc/apple/grafix.pla: 0149: if MACHID <> $F2 +_INIT +; libsrc/apple/grafix.pla: 0150: puts("Apple /// only.\n") + !BYTE $68 ; LAB _X001+0 +_F115 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $22 ; BREQ _B005 + !WORD _B005-* + !BYTE $2E ; CS + !BYTE $10 + !BYTE $41,$70,$70,$6C,$65,$20,$2F,$2F + !BYTE $2F,$20,$6F,$6E,$6C,$79,$2E,$0D + !BYTE $54 ; CALL _X004 +_F116 !WORD 0 +; libsrc/apple/grafix.pla: 0151: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/grafix.pla: 0152: fin +_B005 +_B006 +; libsrc/apple/grafix.pla: 0153: // +; libsrc/apple/grafix.pla: 0154: // Allocate bank 0 +; libsrc/apple/grafix.pla: 0155: // +; libsrc/apple/grafix.pla: 0156: params.0 = 4 +; libsrc/apple/grafix.pla: 0157: params:1 = $2000 +; libsrc/apple/grafix.pla: 0158: params:3 = $9F00 +; libsrc/apple/grafix.pla: 0159: params.5 = $10 +; libsrc/apple/grafix.pla: 0160: params.6 = $00 +; libsrc/apple/grafix.pla: 0161: syscall($40, @params) +; libsrc/apple/grafix.pla: 0162: gfxseg = params.6 +; libsrc/apple/grafix.pla: 0163: ^$1907 = $80 // Set graphics pages allocated +; libsrc/apple/grafix.pla: 0164: // +; libsrc/apple/grafix.pla: 0165: // Open graphics driver +; libsrc/apple/grafix.pla: 0166: // +; libsrc/apple/grafix.pla: 0167: params.0 = 4 +; libsrc/apple/grafix.pla: 0168: params:1 = ".GRAFIX" + !BYTE $08 ; CN 4 + !BYTE $78 ; SAB _D030+0 +_F117 !WORD _D030+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $7A ; SAW _D030+1 +_F118 !WORD _D030+1 + !BYTE $2C,$00,$9F ; CW 40704 + !BYTE $7A ; SAW _D030+3 +_F119 !WORD _D030+3 + !BYTE $2A,$10 ; CB 16 + !BYTE $78 ; SAB _D030+5 +_F120 !WORD _D030+5 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D030+6 +_F121 !WORD _D030+6 + !BYTE $2A,$40 ; CB 64 + !BYTE $26 ; LA _D030+0 +_F122 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F123 !WORD 0 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D030+6 +_F124 !WORD _D030+6 + !BYTE $78 ; SAB _D029+0 +_F125 !WORD _D029+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $78,$07,$19 ; SAB 6407 + !BYTE $08 ; CN 4 + !BYTE $78 ; SAB _D030+0 +_F126 !WORD _D030+0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $2E,$47,$52,$41,$46,$49,$58 + !BYTE $7A ; SAW _D030+1 +_F127 !WORD _D030+1 +; libsrc/apple/grafix.pla: 0169: params.3 = 0 +; libsrc/apple/grafix.pla: 0170: params:4 = 0 +; libsrc/apple/grafix.pla: 0171: params.6 = 0 +; libsrc/apple/grafix.pla: 0172: syscall($C8, @params) +; libsrc/apple/grafix.pla: 0173: gfxref = params.3 +; libsrc/apple/grafix.pla: 0174: done + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D030+3 +_F128 !WORD _D030+3 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D030+4 +_F129 !WORD _D030+4 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D030+6 +_F130 !WORD _D030+6 + !BYTE $2A,$C8 ; CB 200 + !BYTE $26 ; LA _D030+0 +_F131 !WORD _D030+0 + !BYTE $54 ; CALL _X011 +_F132 !WORD 0 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D030+3 +_F133 !WORD _D030+3 + !BYTE $78 ; SAB _D028+0 +_F134 !WORD _D028+0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 13 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: PENCOLOR + !BYTE $D0,$C5,$CE,$C3,$CF,$CC,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: FILLCOLOR + !BYTE $C6,$C9,$CC,$CC,$C3,$CF,$CC,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: FILLSCREEN + !BYTE $C6,$C9,$CC,$CC,$D3,$C3,$D2,$C5,$C5,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: PENMOVE + !BYTE $D0,$C5,$CE,$CD,$CF,$D6,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: PLOT + !BYTE $D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: LINE + !BYTE $CC,$C9,$CE,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: LINETO + !BYTE $CC,$C9,$CE,$C5,$D4,$4F + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + ; DCI STRING: RECT + !BYTE $D2,$C5,$C3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C007 + ; DCI STRING: FILLRECT + !BYTE $C6,$C9,$CC,$CC,$D2,$C5,$C3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C008 + ; DCI STRING: BITBLT + !BYTE $C2,$C9,$D4,$C2,$CC,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C009 + ; DCI STRING: DRAWMODE + !BYTE $C4,$D2,$C1,$D7,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C010 + ; DCI STRING: SETMODE + !BYTE $D3,$C5,$D4,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C011 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/grlib.a b/src/libsrc/apple/grlib.a new file mode 100644 index 0000000..3532da6 --- /dev/null +++ b/src/libsrc/apple/grlib.a @@ -0,0 +1,1512 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/grlib.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/grlib.pla: 0001: +; libsrc/apple/grlib.pla: 0002: // +; libsrc/apple/grlib.pla: 0003: // Apple II hardware constants. +; libsrc/apple/grlib.pla: 0004: // +; libsrc/apple/grlib.pla: 0005: const showgraphics = $C050 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; showgraphics = 49232 +; libsrc/apple/grlib.pla: 0006: const showtext = $C051 + ; showtext = 49233 +; libsrc/apple/grlib.pla: 0007: const showfull = $C052 + ; showfull = 49234 +; libsrc/apple/grlib.pla: 0008: const showmix = $C053 + ; showmix = 49235 +; libsrc/apple/grlib.pla: 0009: const showpage1 = $C054 + ; showpage1 = 49236 +; libsrc/apple/grlib.pla: 0010: const showpage2 = $C055 + ; showpage2 = 49237 +; libsrc/apple/grlib.pla: 0011: const showlores = $C056 + ; showlores = 49238 +; libsrc/apple/grlib.pla: 0012: const showhires = $C057 + ; showhires = 49239 +; libsrc/apple/grlib.pla: 0013: const show40 = $C00C + ; show40 = 49164 +; libsrc/apple/grlib.pla: 0014: const show80 = $C00D + ; show80 = 49165 +; libsrc/apple/grlib.pla: 0015: const mapmain = $C000 + ; mapmain = 49152 +; libsrc/apple/grlib.pla: 0016: const mapaux = $C001 + ; mapaux = 49153 +; libsrc/apple/grlib.pla: 0017: const an3on = $C05E + ; an3on = 49246 +; libsrc/apple/grlib.pla: 0018: const an3off = $C05F + ; an3off = 49247 +; libsrc/apple/grlib.pla: 0019: const ena80 = $C07E + ; ena80 = 49278 +; libsrc/apple/grlib.pla: 0020: const dis80 = $C07F + ; dis80 = 49279 +; libsrc/apple/grlib.pla: 0021: const page1 = 0 + ; page1 = 0 +; libsrc/apple/grlib.pla: 0022: const page2 = 1 + ; page2 = 1 +; libsrc/apple/grlib.pla: 0023: // +; libsrc/apple/grlib.pla: 0024: // Screen row address arrays. +; libsrc/apple/grlib.pla: 0025: // +; libsrc/apple/grlib.pla: 0026: word[] gr1row = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 +_D028 ; gr1row = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 + !WORD $0400 + !WORD $0480 + !WORD $0500 + !WORD $0580 + !WORD $0600 + !WORD $0680 + !WORD $0700 + !WORD $0780 +; libsrc/apple/grlib.pla: 0027: word = $0428,$04A8,$0528,$05A8,$0628,$06A8,$0728,$07A8 + !WORD $0428 + !WORD $04A8 + !WORD $0528 + !WORD $05A8 + !WORD $0628 + !WORD $06A8 + !WORD $0728 + !WORD $07A8 +; libsrc/apple/grlib.pla: 0028: word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0 + !WORD $0450 + !WORD $04D0 + !WORD $0550 + !WORD $05D0 + !WORD $0650 + !WORD $06D0 + !WORD $0750 + !WORD $07D0 +; libsrc/apple/grlib.pla: 0029: word[] gr2row = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 +_D029 ; gr2row = $0800,$0880,$0900,$0980,$0A00,$0A80,$0B00,$0B80 + !WORD $0800 + !WORD $0880 + !WORD $0900 + !WORD $0980 + !WORD $0A00 + !WORD $0A80 + !WORD $0B00 + !WORD $0B80 +; libsrc/apple/grlib.pla: 0030: word = $0828,$08A8,$0928,$09A8,$0A28,$0AA8,$0B28,$0BA8 + !WORD $0828 + !WORD $08A8 + !WORD $0928 + !WORD $09A8 + !WORD $0A28 + !WORD $0AA8 + !WORD $0B28 + !WORD $0BA8 +; libsrc/apple/grlib.pla: 0031: word = $0850,$08D0,$0950,$09D0,$0A50,$0AD0,$0B50,$0BD0 + !WORD $0850 + !WORD $08D0 + !WORD $0950 + !WORD $09D0 + !WORD $0A50 + !WORD $0AD0 + !WORD $0B50 + !WORD $0BD0 +; libsrc/apple/grlib.pla: 0032: word[] grbuff = @gr1row, @gr2row +_D030 ; grbuff = @gr1row, @gr2row +_F000 !WORD _D028 +_F001 !WORD _D029 +; libsrc/apple/grlib.pla: 0033: word drawbuff +_D031 !FILL 2 ; drawbuff +; libsrc/apple/grlib.pla: 0034: byte drawpage +_D032 !FILL 1 ; drawpage +; libsrc/apple/grlib.pla: 0035: +; libsrc/apple/grlib.pla: 0036: asm grInc(buff) +_A000 ; grInc() +; libsrc/apple/grlib.pla: 0037: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/grlib.pla: 0038: GBASL = $26 +GBASL = $26 +; libsrc/apple/grlib.pla: 0039: GBASH = $27 +GBASH = $27 +; libsrc/apple/grlib.pla: 0040: GBASE = GBASL +GBASE = GBASL +; libsrc/apple/grlib.pla: 0041: GCLR = $30 +GCLR = $30 +; libsrc/apple/grlib.pla: 0042: end +; libsrc/apple/grlib.pla: 0043: // +; libsrc/apple/grlib.pla: 0044: // Plot pixel +; libsrc/apple/grlib.pla: 0045: // +; libsrc/apple/grlib.pla: 0046: export asm grPlot(x, y)#0 +_A001 ; grPlot() +; libsrc/apple/grlib.pla: 0047: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/grlib.pla: 0048: LDA $3000 + LDA $3000 +; libsrc/apple/grlib.pla: 0049: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0050: LDA $3001 + LDA $3001 +; libsrc/apple/grlib.pla: 0051: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0052: LDA ESTKL,X ; Y COORD + LDA ESTKL,X ; Y COORD +; libsrc/apple/grlib.pla: 0053: AND #$FE + AND #$FE +; libsrc/apple/grlib.pla: 0054: TAY + TAY +; libsrc/apple/grlib.pla: 0055: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0056: STA GBASL + STA GBASL +; libsrc/apple/grlib.pla: 0057: INY + INY +; libsrc/apple/grlib.pla: 0058: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0059: STA GBASH + STA GBASH +; libsrc/apple/grlib.pla: 0060: LDY ESTKL+1,X ; X COORD + LDY ESTKL+1,X ; X COORD +; libsrc/apple/grlib.pla: 0061: LSR ESTKL,X + LSR ESTKL,X +; libsrc/apple/grlib.pla: 0062: LDA GCLR ; COLOR + LDA GCLR ; COLOR +; libsrc/apple/grlib.pla: 0063: EOR (GBASE),Y + EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0064: BCS + + BCS + +; libsrc/apple/grlib.pla: 0065: ; EVEN ROW + ; EVEN ROW +; libsrc/apple/grlib.pla: 0066: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0067: BCC ++ + BCC ++ +; libsrc/apple/grlib.pla: 0068: ; ODD ROW + ; ODD ROW +; libsrc/apple/grlib.pla: 0069: + AND #$F0 ++ AND #$F0 +; libsrc/apple/grlib.pla: 0070: ++ EOR (GBASE),Y +++ EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0071: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/grlib.pla: 0072: INX + INX +; libsrc/apple/grlib.pla: 0073: INX + INX +; libsrc/apple/grlib.pla: 0074: RTS + RTS +; libsrc/apple/grlib.pla: 0075: end +; libsrc/apple/grlib.pla: 0076: // +; libsrc/apple/grlib.pla: 0077: // Plot horizontal row of pixels +; libsrc/apple/grlib.pla: 0078: // +; libsrc/apple/grlib.pla: 0079: export asm grHLin(x1, x2, y)#0 +_A002 ; grHLin() +; libsrc/apple/grlib.pla: 0080: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/grlib.pla: 0081: LDA $3000 + LDA $3000 +; libsrc/apple/grlib.pla: 0082: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0083: LDA $3001 + LDA $3001 +; libsrc/apple/grlib.pla: 0084: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0085: LDA ESTKL+1,X ; X2 COORD + LDA ESTKL+1,X ; X2 COORD +; libsrc/apple/grlib.pla: 0086: STA TMPH + STA TMPH +; libsrc/apple/grlib.pla: 0087: LDA ESTKL+0,X ; Y COORD + LDA ESTKL+0,X ; Y COORD +; libsrc/apple/grlib.pla: 0088: AND #$FE + AND #$FE +; libsrc/apple/grlib.pla: 0089: TAY + TAY +; libsrc/apple/grlib.pla: 0090: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0091: STA GBASL + STA GBASL +; libsrc/apple/grlib.pla: 0092: INY + INY +; libsrc/apple/grlib.pla: 0093: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0094: STA GBASH + STA GBASH +; libsrc/apple/grlib.pla: 0095: LDY ESTKL+2,X ; X1 COORD + LDY ESTKL+2,X ; X1 COORD +; libsrc/apple/grlib.pla: 0096: - LDA ESTKL+0,X ; Y COORD +- LDA ESTKL+0,X ; Y COORD +; libsrc/apple/grlib.pla: 0097: LSR + LSR +; libsrc/apple/grlib.pla: 0098: LDA GCLR ; COLOR + LDA GCLR ; COLOR +; libsrc/apple/grlib.pla: 0099: ; EVEN ROW + ; EVEN ROW +; libsrc/apple/grlib.pla: 0100: EOR (GBASE),Y + EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0101: BCS + + BCS + +; libsrc/apple/grlib.pla: 0102: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0103: BCC ++ + BCC ++ +; libsrc/apple/grlib.pla: 0104: ; ODD ROW + ; ODD ROW +; libsrc/apple/grlib.pla: 0105: + AND #$F0 ++ AND #$F0 +; libsrc/apple/grlib.pla: 0106: ++ EOR (GBASE),Y +++ EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0107: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/grlib.pla: 0108: INC ESTKL+2,X ; X1 COORD + INC ESTKL+2,X ; X1 COORD +; libsrc/apple/grlib.pla: 0109: LDY ESTKL+2,X + LDY ESTKL+2,X +; libsrc/apple/grlib.pla: 0110: CPY TMPH ; X2 COORD + CPY TMPH ; X2 COORD +; libsrc/apple/grlib.pla: 0111: BCC - + BCC - +; libsrc/apple/grlib.pla: 0112: BEQ - + BEQ - +; libsrc/apple/grlib.pla: 0113: INX + INX +; libsrc/apple/grlib.pla: 0114: INX + INX +; libsrc/apple/grlib.pla: 0115: INX + INX +; libsrc/apple/grlib.pla: 0116: RTS + RTS +; libsrc/apple/grlib.pla: 0117: end +; libsrc/apple/grlib.pla: 0118: // +; libsrc/apple/grlib.pla: 0119: // Plot horizontal row of pixels +; libsrc/apple/grlib.pla: 0120: // +; libsrc/apple/grlib.pla: 0121: export asm grVLin(y1, y2, x)#0 +_A003 ; grVLin() +; libsrc/apple/grlib.pla: 0122: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/grlib.pla: 0123: LDA $3000 + LDA $3000 +; libsrc/apple/grlib.pla: 0124: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0125: LDA $3001 + LDA $3001 +; libsrc/apple/grlib.pla: 0126: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0127: LDA ESTKL+2,X ; Y1 COORD + LDA ESTKL+2,X ; Y1 COORD +; libsrc/apple/grlib.pla: 0128: - AND #$FE +- AND #$FE +; libsrc/apple/grlib.pla: 0129: TAY + TAY +; libsrc/apple/grlib.pla: 0130: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0131: STA GBASL + STA GBASL +; libsrc/apple/grlib.pla: 0132: INY + INY +; libsrc/apple/grlib.pla: 0133: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0134: STA GBASH + STA GBASH +; libsrc/apple/grlib.pla: 0135: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/grlib.pla: 0136: LSR + LSR +; libsrc/apple/grlib.pla: 0137: LDY ESTKL+0,X ; X COORD + LDY ESTKL+0,X ; X COORD +; libsrc/apple/grlib.pla: 0138: LDA GCLR ; COLOR + LDA GCLR ; COLOR +; libsrc/apple/grlib.pla: 0139: ; EVEN ROW + ; EVEN ROW +; libsrc/apple/grlib.pla: 0140: EOR (GBASE),Y + EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0141: BCS + + BCS + +; libsrc/apple/grlib.pla: 0142: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0143: BCC ++ + BCC ++ +; libsrc/apple/grlib.pla: 0144: ; ODD ROW + ; ODD ROW +; libsrc/apple/grlib.pla: 0145: + AND #$F0 ++ AND #$F0 +; libsrc/apple/grlib.pla: 0146: ++ EOR (GBASE),Y +++ EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0147: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/grlib.pla: 0148: INC ESTKL+2,X ; Y1 COORD + INC ESTKL+2,X ; Y1 COORD +; libsrc/apple/grlib.pla: 0149: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/grlib.pla: 0150: CMP ESTKL+1,X ; Y2 COORD + CMP ESTKL+1,X ; Y2 COORD +; libsrc/apple/grlib.pla: 0151: BCC - + BCC - +; libsrc/apple/grlib.pla: 0152: BEQ - + BEQ - +; libsrc/apple/grlib.pla: 0153: INX + INX +; libsrc/apple/grlib.pla: 0154: INX + INX +; libsrc/apple/grlib.pla: 0155: INX + INX +; libsrc/apple/grlib.pla: 0156: RTS + RTS +; libsrc/apple/grlib.pla: 0157: end +; libsrc/apple/grlib.pla: 0158: // +; libsrc/apple/grlib.pla: 0159: // Draw sprite +; libsrc/apple/grlib.pla: 0160: // +; libsrc/apple/grlib.pla: 0161: export asm grBLT(x, y, width, height, src)#0 +_A004 ; grBLT() +; libsrc/apple/grlib.pla: 0162: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/grlib.pla: 0163: LDA $3000 + LDA $3000 +; libsrc/apple/grlib.pla: 0164: STA DSTL + STA DSTL +; libsrc/apple/grlib.pla: 0165: LDA $3001 + LDA $3001 +; libsrc/apple/grlib.pla: 0166: STA DSTH + STA DSTH +; libsrc/apple/grlib.pla: 0167: LDA ESTKL,X ; SPRITE + LDA ESTKL,X ; SPRITE +; libsrc/apple/grlib.pla: 0168: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0169: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/grlib.pla: 0170: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0171: LDA ESTKL+4,X ; X1 COORD + LDA ESTKL+4,X ; X1 COORD +; libsrc/apple/grlib.pla: 0172: CMP #40 + CMP #40 +; libsrc/apple/grlib.pla: 0173: BPL ++++ + BPL ++++ +; libsrc/apple/grlib.pla: 0174: CLC + CLC +; libsrc/apple/grlib.pla: 0175: ADC ESTKL+2,X + ADC ESTKL+2,X +; libsrc/apple/grlib.pla: 0176: BMI ++++ + BMI ++++ +; libsrc/apple/grlib.pla: 0177: STA ESTKH+2,X ; X2 COORD + STA ESTKH+2,X ; X2 COORD +; libsrc/apple/grlib.pla: 0178: LDA ESTKL+3,X ; Y1 COORD + LDA ESTKL+3,X ; Y1 COORD +; libsrc/apple/grlib.pla: 0179: CMP #48 + CMP #48 +; libsrc/apple/grlib.pla: 0180: BPL ++++ + BPL ++++ +; libsrc/apple/grlib.pla: 0181: STA ESTKH+3,X ; Y COORD + STA ESTKH+3,X ; Y COORD +; libsrc/apple/grlib.pla: 0182: CLC + CLC +; libsrc/apple/grlib.pla: 0183: ADC ESTKL+1,X + ADC ESTKL+1,X +; libsrc/apple/grlib.pla: 0184: BMI ++++ + BMI ++++ +; libsrc/apple/grlib.pla: 0185: STA ESTKH+1,X ; Y2 COORD + STA ESTKH+1,X ; Y2 COORD +; libsrc/apple/grlib.pla: 0186: STX ESP + STX ESP +; libsrc/apple/grlib.pla: 0187: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/apple/grlib.pla: 0188: - CMP #48 +- CMP #48 +; libsrc/apple/grlib.pla: 0189: BCC + + BCC + +; libsrc/apple/grlib.pla: 0190: LDA SRCL ; SKIP TO NEXT ROW + LDA SRCL ; SKIP TO NEXT ROW +; libsrc/apple/grlib.pla: 0191: CLC + CLC +; libsrc/apple/grlib.pla: 0192: ADC ESTKL+2,X ; WIDTH + ADC ESTKL+2,X ; WIDTH +; libsrc/apple/grlib.pla: 0193: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0194: LDA SRCH + LDA SRCH +; libsrc/apple/grlib.pla: 0195: ADC #$00 + ADC #$00 +; libsrc/apple/grlib.pla: 0196: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0197: BNE +++ + BNE +++ +; libsrc/apple/grlib.pla: 0198: + AND #$FE ++ AND #$FE +; libsrc/apple/grlib.pla: 0199: TAY + TAY +; libsrc/apple/grlib.pla: 0200: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/grlib.pla: 0201: STA GBASL + STA GBASL +; libsrc/apple/grlib.pla: 0202: INY + INY +; libsrc/apple/grlib.pla: 0203: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/grlib.pla: 0204: STA GBASH + STA GBASH +; libsrc/apple/grlib.pla: 0205: LDA ESTKL+4,X ; X1 COORD + LDA ESTKL+4,X ; X1 COORD +; libsrc/apple/grlib.pla: 0206: STA ESTKH+4,X ; X COORD + STA ESTKH+4,X ; X COORD +; libsrc/apple/grlib.pla: 0207: -- CMP #40 +-- CMP #40 +; libsrc/apple/grlib.pla: 0208: BCS ++ + BCS ++ +; libsrc/apple/grlib.pla: 0209: STA TMP + STA TMP +; libsrc/apple/grlib.pla: 0210: LDA ESTKH+3,X ; Y COORD + LDA ESTKH+3,X ; Y COORD +; libsrc/apple/grlib.pla: 0211: LSR + LSR +; libsrc/apple/grlib.pla: 0212: LDY #$00 + LDY #$00 +; libsrc/apple/grlib.pla: 0213: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/grlib.pla: 0214: BMI ++ + BMI ++ +; libsrc/apple/grlib.pla: 0215: LDY TMP + LDY TMP +; libsrc/apple/grlib.pla: 0216: BCS oddBLT + BCS oddBLT +; libsrc/apple/grlib.pla: 0217: ; EVEN ROW + ; EVEN ROW +; libsrc/apple/grlib.pla: 0218: EOR (GBASE),Y + EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0219: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0220: BCC evnBLT + BCC evnBLT +; libsrc/apple/grlib.pla: 0221: ; ODD ROW + ; ODD ROW +; libsrc/apple/grlib.pla: 0222: oddBLT ASL +oddBLT ASL +; libsrc/apple/grlib.pla: 0223: ASL + ASL +; libsrc/apple/grlib.pla: 0224: ASL + ASL +; libsrc/apple/grlib.pla: 0225: ASL + ASL +; libsrc/apple/grlib.pla: 0226: EOR (GBASE),Y + EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0227: AND #$F0 + AND #$F0 +; libsrc/apple/grlib.pla: 0228: evnBLT EOR (GBASE),Y +evnBLT EOR (GBASE),Y +; libsrc/apple/grlib.pla: 0229: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/grlib.pla: 0230: ++ INC SRCL +++ INC SRCL +; libsrc/apple/grlib.pla: 0231: BNE + + BNE + +; libsrc/apple/grlib.pla: 0232: INC SRCH + INC SRCH +; libsrc/apple/grlib.pla: 0233: + INC ESTKH+4,X ; X COORD ++ INC ESTKH+4,X ; X COORD +; libsrc/apple/grlib.pla: 0234: LDA ESTKH+4,X + LDA ESTKH+4,X +; libsrc/apple/grlib.pla: 0235: BMI -- + BMI -- +; libsrc/apple/grlib.pla: 0236: CMP ESTKH+2,X ; X2 COORD + CMP ESTKH+2,X ; X2 COORD +; libsrc/apple/grlib.pla: 0237: BCC -- + BCC -- +; libsrc/apple/grlib.pla: 0238: +++ INC ESTKH+3,X ; Y COORD ++++ INC ESTKH+3,X ; Y COORD +; libsrc/apple/grlib.pla: 0239: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/apple/grlib.pla: 0240: BMI - + BMI - +; libsrc/apple/grlib.pla: 0241: CMP ESTKH+1,X ; Y2 COORD + CMP ESTKH+1,X ; Y2 COORD +; libsrc/apple/grlib.pla: 0242: BCC - + BCC - +; libsrc/apple/grlib.pla: 0243: ++++ INX +++++ INX +; libsrc/apple/grlib.pla: 0244: INX + INX +; libsrc/apple/grlib.pla: 0245: INX + INX +; libsrc/apple/grlib.pla: 0246: INX + INX +; libsrc/apple/grlib.pla: 0247: INX + INX +; libsrc/apple/grlib.pla: 0248: RTS + RTS +; libsrc/apple/grlib.pla: 0249: end +; libsrc/apple/grlib.pla: 0250: // +; libsrc/apple/grlib.pla: 0251: // Draw 8x8 tile (forced to 1x2 block address) +; libsrc/apple/grlib.pla: 0252: // +; libsrc/apple/grlib.pla: 0253: export asm grTile(x, y, src)#0 +_A005 ; grTile() +; libsrc/apple/grlib.pla: 0254: ; GET ROW BUFFER ADDRESSES + ; GET ROW BUFFER ADDRESSES +; libsrc/apple/grlib.pla: 0255: LDA $3000 + LDA $3000 +; libsrc/apple/grlib.pla: 0256: STA DSTL + STA DSTL +; libsrc/apple/grlib.pla: 0257: LDA $3001 + LDA $3001 +; libsrc/apple/grlib.pla: 0258: STA DSTH + STA DSTH +; libsrc/apple/grlib.pla: 0259: STX ESP + STX ESP +; libsrc/apple/grlib.pla: 0260: LDA ESTKL,X ; TILE + LDA ESTKL,X ; TILE +; libsrc/apple/grlib.pla: 0261: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0262: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/grlib.pla: 0263: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0264: LDA ESTKL+2,X ; X1 COORD + LDA ESTKL+2,X ; X1 COORD +; libsrc/apple/grlib.pla: 0265: CMP #40 + CMP #40 +; libsrc/apple/grlib.pla: 0266: BPL ++++ + BPL ++++ +; libsrc/apple/grlib.pla: 0267: CLC + CLC +; libsrc/apple/grlib.pla: 0268: ADC #$08 + ADC #$08 +; libsrc/apple/grlib.pla: 0269: BMI ++++ + BMI ++++ +; libsrc/apple/grlib.pla: 0270: STA ESTKH+2,X ; X2 COORD + STA ESTKH+2,X ; X2 COORD +; libsrc/apple/grlib.pla: 0271: LDA ESTKL+1,X ; Y1 COORD + LDA ESTKL+1,X ; Y1 COORD +; libsrc/apple/grlib.pla: 0272: CMP #48 + CMP #48 +; libsrc/apple/grlib.pla: 0273: BPL ++++ + BPL ++++ +; libsrc/apple/grlib.pla: 0274: STA TMPL ; Y COORD + STA TMPL ; Y COORD +; libsrc/apple/grlib.pla: 0275: CLC + CLC +; libsrc/apple/grlib.pla: 0276: ADC #$08 + ADC #$08 +; libsrc/apple/grlib.pla: 0277: BMI ++++ + BMI ++++ +; libsrc/apple/grlib.pla: 0278: STA ESTKH+1,X ; Y2 COORD + STA ESTKH+1,X ; Y2 COORD +; libsrc/apple/grlib.pla: 0279: LDA TMPL ; Y COORD + LDA TMPL ; Y COORD +; libsrc/apple/grlib.pla: 0280: - CMP #48 +- CMP #48 +; libsrc/apple/grlib.pla: 0281: BCC + + BCC + +; libsrc/apple/grlib.pla: 0282: LDA SRCL ; SKIP TO NEXT ROW + LDA SRCL ; SKIP TO NEXT ROW +; libsrc/apple/grlib.pla: 0283: ADC #$07 ; CARRY = 1 + ADC #$07 ; CARRY = 1 +; libsrc/apple/grlib.pla: 0284: STA SRCL + STA SRCL +; libsrc/apple/grlib.pla: 0285: LDA SRCH + LDA SRCH +; libsrc/apple/grlib.pla: 0286: ADC #$00 + ADC #$00 +; libsrc/apple/grlib.pla: 0287: STA SRCH + STA SRCH +; libsrc/apple/grlib.pla: 0288: BNE +++ + BNE +++ +; libsrc/apple/grlib.pla: 0289: + AND #$FE ++ AND #$FE +; libsrc/apple/grlib.pla: 0290: TAY + TAY +; libsrc/apple/grlib.pla: 0291: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/grlib.pla: 0292: STA GBASL + STA GBASL +; libsrc/apple/grlib.pla: 0293: INY + INY +; libsrc/apple/grlib.pla: 0294: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/grlib.pla: 0295: STA GBASH + STA GBASH +; libsrc/apple/grlib.pla: 0296: LDA ESTKL+2,X ; X1 COORD + LDA ESTKL+2,X ; X1 COORD +; libsrc/apple/grlib.pla: 0297: STA TMPH ; X COORD + STA TMPH ; X COORD +; libsrc/apple/grlib.pla: 0298: -- TAY +-- TAY +; libsrc/apple/grlib.pla: 0299: CMP #40 + CMP #40 +; libsrc/apple/grlib.pla: 0300: LDX #$00 + LDX #$00 +; libsrc/apple/grlib.pla: 0301: LDA (SRC,X) + LDA (SRC,X) +; libsrc/apple/grlib.pla: 0302: INC SRCL + INC SRCL +; libsrc/apple/grlib.pla: 0303: BNE + + BNE + +; libsrc/apple/grlib.pla: 0304: INC SRCH + INC SRCH +; libsrc/apple/grlib.pla: 0305: + BCS ++ ++ BCS ++ +; libsrc/apple/grlib.pla: 0306: STA (GBASE),Y + STA (GBASE),Y +; libsrc/apple/grlib.pla: 0307: ++ INC TMPH ; X COORD +++ INC TMPH ; X COORD +; libsrc/apple/grlib.pla: 0308: LDA TMPH + LDA TMPH +; libsrc/apple/grlib.pla: 0309: BMI -- + BMI -- +; libsrc/apple/grlib.pla: 0310: LDX ESP + LDX ESP +; libsrc/apple/grlib.pla: 0311: CMP ESTKH+2,X ; X2 COORD + CMP ESTKH+2,X ; X2 COORD +; libsrc/apple/grlib.pla: 0312: BCC -- + BCC -- +; libsrc/apple/grlib.pla: 0313: +++ INC TMPL ; Y COORD ++++ INC TMPL ; Y COORD +; libsrc/apple/grlib.pla: 0314: INC TMPL ; Y COORD + INC TMPL ; Y COORD +; libsrc/apple/grlib.pla: 0315: LDA TMPL + LDA TMPL +; libsrc/apple/grlib.pla: 0316: BMI - + BMI - +; libsrc/apple/grlib.pla: 0317: CMP ESTKH+1,X ; Y2 COORD + CMP ESTKH+1,X ; Y2 COORD +; libsrc/apple/grlib.pla: 0318: BCC - + BCC - +; libsrc/apple/grlib.pla: 0319: ++++ INX +++++ INX +; libsrc/apple/grlib.pla: 0320: INX + INX +; libsrc/apple/grlib.pla: 0321: INX + INX +; libsrc/apple/grlib.pla: 0322: RTS + RTS +; libsrc/apple/grlib.pla: 0323: end +; libsrc/apple/grlib.pla: 0324: // +; libsrc/apple/grlib.pla: 0325: // Draw a string of tiles +; libsrc/apple/grlib.pla: 0326: // +; libsrc/apple/grlib.pla: 0327: export asm grTileStr(x, y, tilestr, strlen, tilebuff)#0 +_A006 ; grTileStr() +; libsrc/apple/grlib.pla: 0328: - DEX +- DEX +; libsrc/apple/grlib.pla: 0329: DEX + DEX +; libsrc/apple/grlib.pla: 0330: DEX + DEX +; libsrc/apple/grlib.pla: 0331: LDA ESTKL+7,X ; X COORD + LDA ESTKL+7,X ; X COORD +; libsrc/apple/grlib.pla: 0332: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0333: LDA ESTKL+6,X ; Y COORD + LDA ESTKL+6,X ; Y COORD +; libsrc/apple/grlib.pla: 0334: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/grlib.pla: 0335: LDA ESTKL+3,X ; TILE + LDA ESTKL+3,X ; TILE +; libsrc/apple/grlib.pla: 0336: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/grlib.pla: 0337: LDA ESTKH+3,X ; TILE + LDA ESTKH+3,X ; TILE +; libsrc/apple/grlib.pla: 0338: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/grlib.pla: 0339: end +; libsrc/apple/grlib.pla: 0340: asm _grTileTile +_A007 ; _grTileTile() +; libsrc/apple/grlib.pla: 0341: JSR $5000 + JSR $5000 +; libsrc/apple/grlib.pla: 0342: LDA ESTKL+4,X ; UPDATE X COORD + LDA ESTKL+4,X ; UPDATE X COORD +; libsrc/apple/grlib.pla: 0343: CLC + CLC +; libsrc/apple/grlib.pla: 0344: ADC #$08 + ADC #$08 +; libsrc/apple/grlib.pla: 0345: CMP #40 ; OFF RIGHT SIDE + CMP #40 ; OFF RIGHT SIDE +; libsrc/apple/grlib.pla: 0346: BPL + + BPL + +; libsrc/apple/grlib.pla: 0347: STA ESTKL+4,X + STA ESTKL+4,X +; libsrc/apple/grlib.pla: 0348: DEC ESTKL+1,X ; DEC STRLEN + DEC ESTKL+1,X ; DEC STRLEN +; libsrc/apple/grlib.pla: 0349: BNE - + BNE - +; libsrc/apple/grlib.pla: 0350: + INX ++ INX +; libsrc/apple/grlib.pla: 0351: INX + INX +; libsrc/apple/grlib.pla: 0352: INX + INX +; libsrc/apple/grlib.pla: 0353: INX + INX +; libsrc/apple/grlib.pla: 0354: INX + INX +; libsrc/apple/grlib.pla: 0355: RTS + RTS +; libsrc/apple/grlib.pla: 0356: end +; libsrc/apple/grlib.pla: 0357: // +; libsrc/apple/grlib.pla: 0358: // Fill a buffer with tiles +; libsrc/apple/grlib.pla: 0359: // +; libsrc/apple/grlib.pla: 0360: export asm grFill(x, y, tile)#0 +_A008 ; grFill() +; libsrc/apple/grlib.pla: 0361: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/grlib.pla: 0362: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0363: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0364: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/grlib.pla: 0365: AND #$0F + AND #$0F +; libsrc/apple/grlib.pla: 0366: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/grlib.pla: 0367: LDA #$00 + LDA #$00 +; libsrc/apple/grlib.pla: 0368: SEC + SEC +; libsrc/apple/grlib.pla: 0369: SBC ESTKL+2,X ; ORIGINAL X + SBC ESTKL+2,X ; ORIGINAL X +; libsrc/apple/grlib.pla: 0370: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0371: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/apple/grlib.pla: 0372: LDA #$00 + LDA #$00 +; libsrc/apple/grlib.pla: 0373: SEC + SEC +; libsrc/apple/grlib.pla: 0374: SBC ESTKL+1,X + SBC ESTKL+1,X +; libsrc/apple/grlib.pla: 0375: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/grlib.pla: 0376: - DEX +- DEX +; libsrc/apple/grlib.pla: 0377: DEX + DEX +; libsrc/apple/grlib.pla: 0378: DEX + DEX +; libsrc/apple/grlib.pla: 0379: LDA ESTKL+5,X ; X COORD + LDA ESTKL+5,X ; X COORD +; libsrc/apple/grlib.pla: 0380: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0381: LDA ESTKL+4,X ; Y COORD + LDA ESTKL+4,X ; Y COORD +; libsrc/apple/grlib.pla: 0382: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/grlib.pla: 0383: LDA ESTKL+3,X ; TILE + LDA ESTKL+3,X ; TILE +; libsrc/apple/grlib.pla: 0384: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/grlib.pla: 0385: LDA ESTKH+3,X ; TILE + LDA ESTKH+3,X ; TILE +; libsrc/apple/grlib.pla: 0386: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/grlib.pla: 0387: end +; libsrc/apple/grlib.pla: 0388: asm _grFillTile +_A009 ; _grFillTile() +; libsrc/apple/grlib.pla: 0389: JSR $5000 + JSR $5000 +; libsrc/apple/grlib.pla: 0390: LDA ESTKL+2,X ; UPDATE X COORD + LDA ESTKL+2,X ; UPDATE X COORD +; libsrc/apple/grlib.pla: 0391: CLC + CLC +; libsrc/apple/grlib.pla: 0392: ADC #$08 + ADC #$08 +; libsrc/apple/grlib.pla: 0393: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0394: CMP #40 ; OFF RIGHT SIDE? + CMP #40 ; OFF RIGHT SIDE? +; libsrc/apple/grlib.pla: 0395: BMI - + BMI - +; libsrc/apple/grlib.pla: 0396: LDA ESTKH+2,X ; RESTORE X COORD + LDA ESTKH+2,X ; RESTORE X COORD +; libsrc/apple/grlib.pla: 0397: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/grlib.pla: 0398: LDA ESTKL+1,X ; UPDATE Y COORD + LDA ESTKL+1,X ; UPDATE Y COORD +; libsrc/apple/grlib.pla: 0399: CLC + CLC +; libsrc/apple/grlib.pla: 0400: ADC #$08 + ADC #$08 +; libsrc/apple/grlib.pla: 0401: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/grlib.pla: 0402: CMP #48 ; OFF BOTTOM? + CMP #48 ; OFF BOTTOM? +; libsrc/apple/grlib.pla: 0403: BMI - + BMI - +; libsrc/apple/grlib.pla: 0404: INX + INX +; libsrc/apple/grlib.pla: 0405: INX + INX +; libsrc/apple/grlib.pla: 0406: INX + INX +; libsrc/apple/grlib.pla: 0407: RTS + RTS +; libsrc/apple/grlib.pla: 0408: end +; libsrc/apple/grlib.pla: 0409: // +; libsrc/apple/grlib.pla: 0410: // Wait for VLB +; libsrc/apple/grlib.pla: 0411: // +; libsrc/apple/grlib.pla: 0412: export asm grVLB#0 +_A010 ; grVLB() +; libsrc/apple/grlib.pla: 0413: LDA $BF98 + LDA $BF98 +; libsrc/apple/grlib.pla: 0414: AND #$C0 + AND #$C0 +; libsrc/apple/grlib.pla: 0415: CMP #$80 + CMP #$80 +; libsrc/apple/grlib.pla: 0416: BNE + + BNE + +; libsrc/apple/grlib.pla: 0417: PHP + PHP +; libsrc/apple/grlib.pla: 0418: SEI + SEI +; libsrc/apple/grlib.pla: 0419: STA $C079 ; Enable IOU access and reset VBL int on //c + STA $C079 ; Enable IOU access and reset VBL int on //c +; libsrc/apple/grlib.pla: 0420: STA $C05B ; Enable VBL int + STA $C05B ; Enable VBL int +; libsrc/apple/grlib.pla: 0421: - LDA $C019 +- LDA $C019 +; libsrc/apple/grlib.pla: 0422: STA $C079 ; Reset VBL int on //c + STA $C079 ; Reset VBL int on //c +; libsrc/apple/grlib.pla: 0423: BMI - + BMI - +; libsrc/apple/grlib.pla: 0424: - LDA $C019 +- LDA $C019 +; libsrc/apple/grlib.pla: 0425: BPL - + BPL - +; libsrc/apple/grlib.pla: 0426: STA $C05A ; Disable VBL int on //c + STA $C05A ; Disable VBL int on //c +; libsrc/apple/grlib.pla: 0427: STA $C078 ; Disable IOU access on //c + STA $C078 ; Disable IOU access on //c +; libsrc/apple/grlib.pla: 0428: PLP + PLP +; libsrc/apple/grlib.pla: 0429: + RTS ++ RTS +; libsrc/apple/grlib.pla: 0430: end +; libsrc/apple/grlib.pla: 0431: // +; libsrc/apple/grlib.pla: 0432: // Clear the buffer +; libsrc/apple/grlib.pla: 0433: // +; libsrc/apple/grlib.pla: 0434: export def grClear(clr)#0 +_SUBSEG ; BYTECODE STARTS + ; clr -> [0] +_C000 ; grClear() +; libsrc/apple/grlib.pla: 0435: byte[32] clrtile + ; clrtile -> [2] +; libsrc/apple/grlib.pla: 0436: +; libsrc/apple/grlib.pla: 0437: clr = (clr & $0F) | (clr << 4) + !BYTE $58,$22,$01 ; ENTER 34,1 +; libsrc/apple/grlib.pla: 0438: clr = (clr & $FF) | (clr << 8) +; libsrc/apple/grlib.pla: 0439: memset(@clrtile, clr, 32) +; libsrc/apple/grlib.pla: 0440: grFill(0, 0, @clrtile) +; libsrc/apple/grlib.pla: 0441: end + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $6E,$00 ; DLW [0] + !BYTE $3C,$FF ; ANDI 255 + !BYTE $66,$00 ; LLW [0] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $76,$00 ; SLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X017 +_F002 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A008 +_F003 !WORD _A008 + !BYTE $5A,$22 ; LEAVE 34 +; libsrc/apple/grlib.pla: 0442: // +; libsrc/apple/grlib.pla: 0443: // Set lores graphics, return draw buffer +; libsrc/apple/grlib.pla: 0444: // +; libsrc/apple/grlib.pla: 0445: export def grMode(mode)#1 + ; mode -> [0] +_C001 ; grMode() +; libsrc/apple/grlib.pla: 0446: if mode + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grlib.pla: 0447: // +; libsrc/apple/grlib.pla: 0448: // Set GR mode +; libsrc/apple/grlib.pla: 0449: // +; libsrc/apple/grlib.pla: 0450: ^showlores +; libsrc/apple/grlib.pla: 0451: ^showfull +; libsrc/apple/grlib.pla: 0452: ^showgraphics +; libsrc/apple/grlib.pla: 0453: ^showpage1 +; libsrc/apple/grlib.pla: 0454: ^ena80 = 0 +; libsrc/apple/grlib.pla: 0455: ^show40 = 0 +; libsrc/apple/grlib.pla: 0456: ^mapmain = 0 +; libsrc/apple/grlib.pla: 0457: ^an3off +; libsrc/apple/grlib.pla: 0458: drawpage = 1 +; libsrc/apple/grlib.pla: 0459: drawbuff = grbuff[1] +; libsrc/apple/grlib.pla: 0460: return 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $68,$56,$C0 ; LAB 49238 + !BYTE $30 ; DROP + !BYTE $68,$52,$C0 ; LAB 49234 + !BYTE $30 ; DROP + !BYTE $68,$50,$C0 ; LAB 49232 + !BYTE $30 ; DROP + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78,$7E,$C0 ; SAB 49278 + !BYTE $00 ; CN 0 + !BYTE $78,$0C,$C0 ; SAB 49164 + !BYTE $00 ; CN 0 + !BYTE $78,$00,$C0 ; SAB 49152 + !BYTE $68,$5F,$C0 ; LAB 49247 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D032+0 +_F004 !WORD _D032+0 + !BYTE $6A ; LAW _D030+2 +_F005 !WORD _D030+2 + !BYTE $7A ; SAW _D031+0 +_F006 !WORD _D031+0 + !BYTE $02 ; CN 1 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grlib.pla: 0461: fin +_B001 +_B002 +; libsrc/apple/grlib.pla: 0462: // +; libsrc/apple/grlib.pla: 0463: // Set text mode +; libsrc/apple/grlib.pla: 0464: // +; libsrc/apple/grlib.pla: 0465: ^showtext +; libsrc/apple/grlib.pla: 0466: ^showpage1 +; libsrc/apple/grlib.pla: 0467: ^ena80 = 0 +; libsrc/apple/grlib.pla: 0468: ^show40 = 0 +; libsrc/apple/grlib.pla: 0469: ^mapmain = 0 +; libsrc/apple/grlib.pla: 0470: ^an3off +; libsrc/apple/grlib.pla: 0471: call($FC58, 0, 0, 0, 0) // home() +; libsrc/apple/grlib.pla: 0472: return 0 + !BYTE $68,$51,$C0 ; LAB 49233 + !BYTE $30 ; DROP + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78,$7E,$C0 ; SAB 49278 + !BYTE $00 ; CN 0 + !BYTE $78,$0C,$C0 ; SAB 49164 + !BYTE $00 ; CN 0 + !BYTE $78,$00,$C0 ; SAB 49152 + !BYTE $68,$5F,$C0 ; LAB 49247 + !BYTE $30 ; DROP + !BYTE $2C,$58,$FC ; CW 64600 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F007 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grlib.pla: 0473: end +; libsrc/apple/grlib.pla: 0474: // +; libsrc/apple/grlib.pla: 0475: // Set display page, return other page +; libsrc/apple/grlib.pla: 0476: // +; libsrc/apple/grlib.pla: 0477: export def grShow(page)#1 + ; page -> [0] +_C002 ; grShow() +; libsrc/apple/grlib.pla: 0478: page = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grlib.pla: 0479: ^(showpage1 + page) +; libsrc/apple/grlib.pla: 0480: return page ^ 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $76,$00 ; SLW [0] + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grlib.pla: 0481: end +; libsrc/apple/grlib.pla: 0482: export def grSwap#0 +_C003 ; grSwap() +; libsrc/apple/grlib.pla: 0483: //vlbWait +; libsrc/apple/grlib.pla: 0484: ^(showpage1 + drawpage) +; libsrc/apple/grlib.pla: 0485: drawpage = drawpage ^ 1 +; libsrc/apple/grlib.pla: 0486: drawbuff = grbuff[drawpage] +; libsrc/apple/grlib.pla: 0487: end + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B4 ; ADDAB _D032+0 +_F008 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D032+0 +_F009 !WORD _D032+0 + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D032+0 +_F010 !WORD _D032+0 + !BYTE $26 ; LA _D030+0 +_F011 !WORD _D030+0 + !BYTE $BC ; IDXAB _D032+0 +_F012 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D031+0 +_F013 !WORD _D031+0 + !BYTE $5C ; RET +; libsrc/apple/grlib.pla: 0488: export def grDrawBuf(page)#0 + ; page -> [0] +_C004 ; grDrawBuf() +; libsrc/apple/grlib.pla: 0489: drawpage = page + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grlib.pla: 0490: drawbuff = grbuff[drawpage] +; libsrc/apple/grlib.pla: 0491: end + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _D032+0 +_F014 !WORD _D032+0 + !BYTE $26 ; LA _D030+0 +_F015 !WORD _D030+0 + !BYTE $BC ; IDXAB _D032+0 +_F016 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D031+0 +_F017 !WORD _D031+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grlib.pla: 0492: // +; libsrc/apple/grlib.pla: 0493: // Set color for clear & plot routines +; libsrc/apple/grlib.pla: 0494: // +; libsrc/apple/grlib.pla: 0495: export def grColor(clr)#0 + ; clr -> [0] +_C005 ; grColor() +; libsrc/apple/grlib.pla: 0496: ^$30 = (clr & $0F) | (clr << 4) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/grlib.pla: 0497: end + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $78,$30,$00 ; SAB 48 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/grlib.pla: 0498: // +; libsrc/apple/grlib.pla: 0499: // Assembly fixups +; libsrc/apple/grlib.pla: 0500: // +; libsrc/apple/grlib.pla: 0501: _grTileTile:1 = @grTile +_INIT +; libsrc/apple/grlib.pla: 0502: _grFillTile:1 = @grTile +; libsrc/apple/grlib.pla: 0503: // +; libsrc/apple/grlib.pla: 0504: // Fixups for drawbuff +; libsrc/apple/grlib.pla: 0505: // +; libsrc/apple/grlib.pla: 0506: grPlot:1 = @drawbuff +; libsrc/apple/grlib.pla: 0507: grPlot:6 = @drawbuff+1 +; libsrc/apple/grlib.pla: 0508: grHLin:1 = @drawbuff +; libsrc/apple/grlib.pla: 0509: grHLin:6 = @drawbuff+1 +; libsrc/apple/grlib.pla: 0510: grVLin:1 = @drawbuff +; libsrc/apple/grlib.pla: 0511: grVLin:6 = @drawbuff+1 +; libsrc/apple/grlib.pla: 0512: grBLT:1 = @drawbuff +; libsrc/apple/grlib.pla: 0513: grBLT:6 = @drawbuff+1 +; libsrc/apple/grlib.pla: 0514: grTile:1 = @drawbuff +; libsrc/apple/grlib.pla: 0515: grTile:6 = @drawbuff+1 +; libsrc/apple/grlib.pla: 0516: done + !BYTE $26 ; LA _A005+0 +_F018 !WORD _A005+0 + !BYTE $7A ; SAW _A007+1 +_F019 !WORD _A007+1 + !BYTE $26 ; LA _A005+0 +_F020 !WORD _A005+0 + !BYTE $7A ; SAW _A009+1 +_F021 !WORD _A009+1 + !BYTE $26 ; LA _D031+0 +_F022 !WORD _D031+0 + !BYTE $7A ; SAW _A001+1 +_F023 !WORD _A001+1 + !BYTE $26 ; LA _D031+1 +_F024 !WORD _D031+1 + !BYTE $7A ; SAW _A001+6 +_F025 !WORD _A001+6 + !BYTE $26 ; LA _D031+0 +_F026 !WORD _D031+0 + !BYTE $7A ; SAW _A002+1 +_F027 !WORD _A002+1 + !BYTE $26 ; LA _D031+1 +_F028 !WORD _D031+1 + !BYTE $7A ; SAW _A002+6 +_F029 !WORD _A002+6 + !BYTE $26 ; LA _D031+0 +_F030 !WORD _D031+0 + !BYTE $7A ; SAW _A003+1 +_F031 !WORD _A003+1 + !BYTE $26 ; LA _D031+1 +_F032 !WORD _D031+1 + !BYTE $7A ; SAW _A003+6 +_F033 !WORD _A003+6 + !BYTE $26 ; LA _D031+0 +_F034 !WORD _D031+0 + !BYTE $7A ; SAW _A004+1 +_F035 !WORD _A004+1 + !BYTE $26 ; LA _D031+1 +_F036 !WORD _D031+1 + !BYTE $7A ; SAW _A004+6 +_F037 !WORD _A004+6 + !BYTE $26 ; LA _D031+0 +_F038 !WORD _D031+0 + !BYTE $7A ; SAW _A005+1 +_F039 !WORD _A005+1 + !BYTE $26 ; LA _D031+1 +_F040 !WORD _D031+1 + !BYTE $7A ; SAW _A005+6 +_F041 !WORD _A005+6 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: GRPLOT + !BYTE $C7,$D2,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + ; DCI STRING: GRHLIN + !BYTE $C7,$D2,$C8,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A002 + ; DCI STRING: GRVLIN + !BYTE $C7,$D2,$D6,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A003 + ; DCI STRING: GRBLT + !BYTE $C7,$D2,$C2,$CC,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A004 + ; DCI STRING: GRTILE + !BYTE $C7,$D2,$D4,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A005 + ; DCI STRING: GRTILESTR + !BYTE $C7,$D2,$D4,$C9,$CC,$C5,$D3,$D4,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A006 + ; DCI STRING: GRFILL + !BYTE $C7,$D2,$C6,$C9,$CC,$4C + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A008 + ; DCI STRING: GRVLB + !BYTE $C7,$D2,$D6,$CC,$42 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A010 + ; DCI STRING: GRCLEAR + !BYTE $C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: GRMODE + !BYTE $C7,$D2,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: GRSHOW + !BYTE $C7,$D2,$D3,$C8,$CF,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: GRSWAP + !BYTE $C7,$D2,$D3,$D7,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: GRDRAWBUF + !BYTE $C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: GRCOLOR + !BYTE $C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/hgrfont.a b/src/libsrc/apple/hgrfont.a new file mode 100644 index 0000000..5835748 --- /dev/null +++ b/src/libsrc/apple/hgrfont.a @@ -0,0 +1,2275 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/hgrfont.pla: 0001: include "inc/hgrtile.plh" +; inc/hgrtile.plh: 0001: import hgrtile + ; DCI STRING: HGRTILE + !BYTE $C8,$C7,$D2,$D4,$C9,$CC,$45 + ; HGRTILE -> X000 +; inc/hgrtile.plh: 0002: predef tileDraw(x, y, tileptr)#0 + ; TILEDRAW -> X001 +; inc/hgrtile.plh: 0003: predef tileXorDraw(x, y, tileptr)#0 + ; TILEXORDRAW -> X002 +; inc/hgrtile.plh: 0004: predef tileOrDraw(x, y, tileptr)#0 + ; TILEORDRAW -> X003 +; inc/hgrtile.plh: 0005: predef tileAndDraw(x, y, tileptr)#0 + ; TILEANDDRAW -> X004 +; inc/hgrtile.plh: 0006: predef tileDrawStr(x, y, strptr, strlen, tileset)#0 + ; TILEDRAWSTR -> X005 +; inc/hgrtile.plh: 0007: predef tileFromText(txtpage, tileset)#0 + ; TILEFROMTEXT -> X006 +; inc/hgrtile.plh: 0008: predef tileMode(mode)#1 + ; TILEMODE -> X007 +; inc/hgrtile.plh: 0009: predef tileClear#0 + ; TILECLEAR -> X008 +; inc/hgrtile.plh: 0010: predef tileShow(page)#1 + ; TILESHOW -> X009 +; inc/hgrtile.plh: 0011: predef tileSwap#1 + ; TILESWAP -> X010 +; inc/hgrtile.plh: 0012: predef tileDrawBuf(page)#1 + ; TILEDRAWBUF -> X011 +; inc/hgrtile.plh: 0013: end +; libsrc/apple/hgrfont.pla: 0001: +; libsrc/apple/hgrfont.pla: 0002: // +; libsrc/apple/hgrfont.pla: 0003: // Apple //e hires character font +; libsrc/apple/hgrfont.pla: 0004: // +; libsrc/apple/hgrfont.pla: 0005: byte hgrFont[] + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D012 ; hgrFont[] +; libsrc/apple/hgrfont.pla: 0006: byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 + !BYTE $1C + !BYTE $22 + !BYTE $2A + !BYTE $3A + !BYTE $1A + !BYTE $02 + !BYTE $3C + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0007: byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0008: byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0009: byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $32 + !BYTE $22 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0010: byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0011: byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $22 + !BYTE $12 + !BYTE $0A + !BYTE $06 + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0012: byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $22 + !BYTE $36 + !BYTE $2A + !BYTE $2A + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0013: byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $26 + !BYTE $2A + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0014: byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0015: byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $1C + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0016: byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0017: byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $36 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0018: byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0019: byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0020: byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 + !BYTE $00 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0021: byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $7F +; libsrc/apple/hgrfont.pla: 0022: byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0023: byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $14 + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $14 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0024: byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 + !BYTE $08 + !BYTE $3C + !BYTE $0A + !BYTE $1C + !BYTE $28 + !BYTE $1E + !BYTE $08 + !BYTE $00 + !BYTE $06 + !BYTE $26 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $32 + !BYTE $30 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0025: byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 + !BYTE $04 + !BYTE $0A + !BYTE $0A + !BYTE $04 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0026: byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0027: byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 + !BYTE $08 + !BYTE $2A + !BYTE $1C + !BYTE $08 + !BYTE $1C + !BYTE $2A + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0028: byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0029: byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0030: byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $32 + !BYTE $2A + !BYTE $26 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $08 + !BYTE $0C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0031: byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $20 + !BYTE $18 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $18 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0032: byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 + !BYTE $10 + !BYTE $18 + !BYTE $14 + !BYTE $12 + !BYTE $3E + !BYTE $10 + !BYTE $10 + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $1E + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0033: byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 + !BYTE $38 + !BYTE $04 + !BYTE $02 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $04 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0034: byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $10 + !BYTE $0E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0035: byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0036: byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0037: byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $10 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0038: byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 + !BYTE $1C + !BYTE $22 + !BYTE $2A + !BYTE $3A + !BYTE $1A + !BYTE $02 + !BYTE $3C + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0039: byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0040: byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0041: byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $32 + !BYTE $22 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0042: byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0043: byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $22 + !BYTE $12 + !BYTE $0A + !BYTE $06 + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0044: byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $22 + !BYTE $36 + !BYTE $2A + !BYTE $2A + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0045: byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $26 + !BYTE $2A + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0046: byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0047: byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $1C + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0048: byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0049: byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $36 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0050: byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0051: byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0052: byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 + !BYTE $00 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0053: byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $7F +; libsrc/apple/hgrfont.pla: 0054: byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0055: byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $14 + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $14 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0056: byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 + !BYTE $08 + !BYTE $3C + !BYTE $0A + !BYTE $1C + !BYTE $28 + !BYTE $1E + !BYTE $08 + !BYTE $00 + !BYTE $06 + !BYTE $26 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $32 + !BYTE $30 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0057: byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 + !BYTE $04 + !BYTE $0A + !BYTE $0A + !BYTE $04 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0058: byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0059: byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 + !BYTE $08 + !BYTE $2A + !BYTE $1C + !BYTE $08 + !BYTE $1C + !BYTE $2A + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0060: byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0061: byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0062: byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $32 + !BYTE $2A + !BYTE $26 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $08 + !BYTE $0C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0063: byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $20 + !BYTE $18 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $18 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0064: byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 + !BYTE $10 + !BYTE $18 + !BYTE $14 + !BYTE $12 + !BYTE $3E + !BYTE $10 + !BYTE $10 + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $1E + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0065: byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 + !BYTE $38 + !BYTE $04 + !BYTE $02 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $04 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0066: byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $10 + !BYTE $0E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0067: byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0068: byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0069: byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $10 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0070: byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 + !BYTE $1C + !BYTE $22 + !BYTE $2A + !BYTE $3A + !BYTE $1A + !BYTE $02 + !BYTE $3C + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0071: byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0072: byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0073: byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $32 + !BYTE $22 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0074: byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0075: byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $22 + !BYTE $12 + !BYTE $0A + !BYTE $06 + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0076: byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $22 + !BYTE $36 + !BYTE $2A + !BYTE $2A + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0077: byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $26 + !BYTE $2A + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0078: byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0079: byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $1C + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0080: byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0081: byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $36 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0082: byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0083: byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0084: byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 + !BYTE $00 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0085: byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $7F +; libsrc/apple/hgrfont.pla: 0086: byte = $00,$00,$00,$00,$00,$00,$00,$00,$08,$08,$08,$08,$08,$00,$08,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0087: byte = $14,$14,$14,$00,$00,$00,$00,$00,$14,$14,$3E,$14,$3E,$14,$14,$00 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $14 + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $3E + !BYTE $14 + !BYTE $14 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0088: byte = $08,$3C,$0A,$1C,$28,$1E,$08,$00,$06,$26,$10,$08,$04,$32,$30,$00 + !BYTE $08 + !BYTE $3C + !BYTE $0A + !BYTE $1C + !BYTE $28 + !BYTE $1E + !BYTE $08 + !BYTE $00 + !BYTE $06 + !BYTE $26 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $32 + !BYTE $30 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0089: byte = $04,$0A,$0A,$04,$2A,$12,$2C,$00,$08,$08,$08,$00,$00,$00,$00,$00 + !BYTE $04 + !BYTE $0A + !BYTE $0A + !BYTE $04 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0090: byte = $08,$04,$02,$02,$02,$04,$08,$00,$08,$10,$20,$20,$20,$10,$08,$00 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0091: byte = $08,$2A,$1C,$08,$1C,$2A,$08,$00,$00,$08,$08,$3E,$08,$08,$00,$00 + !BYTE $08 + !BYTE $2A + !BYTE $1C + !BYTE $08 + !BYTE $1C + !BYTE $2A + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0092: byte = $00,$00,$00,$00,$08,$08,$04,$00,$00,$00,$00,$3E,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0093: byte = $00,$00,$00,$00,$00,$00,$08,$00,$00,$20,$10,$08,$04,$02,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0094: byte = $1C,$22,$32,$2A,$26,$22,$1C,$00,$08,$0C,$08,$08,$08,$08,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $32 + !BYTE $2A + !BYTE $26 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $08 + !BYTE $0C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0095: byte = $1C,$22,$20,$18,$04,$02,$3E,$00,$3E,$20,$10,$18,$20,$22,$1C,$00 + !BYTE $1C + !BYTE $22 + !BYTE $20 + !BYTE $18 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $18 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0096: byte = $10,$18,$14,$12,$3E,$10,$10,$00,$3E,$02,$1E,$20,$20,$22,$1C,$00 + !BYTE $10 + !BYTE $18 + !BYTE $14 + !BYTE $12 + !BYTE $3E + !BYTE $10 + !BYTE $10 + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $1E + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0097: byte = $38,$04,$02,$1E,$22,$22,$1C,$00,$3E,$20,$10,$08,$04,$04,$04,$00 + !BYTE $38 + !BYTE $04 + !BYTE $02 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $04 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0098: byte = $1C,$22,$22,$1C,$22,$22,$1C,$00,$1C,$22,$22,$3C,$20,$10,$0E,$00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $10 + !BYTE $0E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0099: byte = $00,$00,$08,$00,$08,$00,$00,$00,$00,$00,$08,$00,$08,$08,$04,$00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $08 + !BYTE $04 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0100: byte = $10,$08,$04,$02,$04,$08,$10,$00,$00,$00,$3E,$00,$3E,$00,$00,$00 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0101: byte = $04,$08,$10,$20,$10,$08,$04,$00,$1C,$22,$10,$08,$08,$00,$08,$00 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $10 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0102: byte = $1C,$22,$2A,$3A,$1A,$02,$3C,$00,$08,$14,$22,$22,$3E,$22,$22,$00 + !BYTE $1C + !BYTE $22 + !BYTE $2A + !BYTE $3A + !BYTE $1A + !BYTE $02 + !BYTE $3C + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0103: byte = $1E,$22,$22,$1E,$22,$22,$1E,$00,$1C,$22,$02,$02,$02,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0104: byte = $1E,$22,$22,$22,$22,$22,$1E,$00,$3E,$02,$02,$1E,$02,$02,$3E,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0105: byte = $3E,$02,$02,$1E,$02,$02,$02,$00,$3C,$02,$02,$02,$32,$22,$3C,$00 + !BYTE $3E + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $32 + !BYTE $22 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0106: byte = $22,$22,$22,$3E,$22,$22,$22,$00,$1C,$08,$08,$08,$08,$08,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0107: byte = $20,$20,$20,$20,$20,$22,$1C,$00,$22,$12,$0A,$06,$0A,$12,$22,$00 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 + !BYTE $22 + !BYTE $12 + !BYTE $0A + !BYTE $06 + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0108: byte = $02,$02,$02,$02,$02,$02,$3E,$00,$22,$36,$2A,$2A,$22,$22,$22,$00 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $22 + !BYTE $36 + !BYTE $2A + !BYTE $2A + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0109: byte = $22,$22,$26,$2A,$32,$22,$22,$00,$1C,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $22 + !BYTE $22 + !BYTE $26 + !BYTE $2A + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0110: byte = $1E,$22,$22,$1E,$02,$02,$02,$00,$1C,$22,$22,$22,$2A,$12,$2C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $12 + !BYTE $2C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0111: byte = $1E,$22,$22,$1E,$0A,$12,$22,$00,$1C,$22,$02,$1C,$20,$22,$1C,$00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $0A + !BYTE $12 + !BYTE $22 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $02 + !BYTE $1C + !BYTE $20 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0112: byte = $3E,$08,$08,$08,$08,$08,$08,$00,$22,$22,$22,$22,$22,$22,$1C,$00 + !BYTE $3E + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0113: byte = $22,$22,$22,$22,$22,$14,$08,$00,$22,$22,$22,$2A,$2A,$36,$22,$00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $36 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0114: byte = $22,$22,$14,$08,$14,$22,$22,$00,$22,$22,$14,$08,$08,$08,$08,$00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0115: byte = $3E,$20,$10,$08,$04,$02,$3E,$00,$3E,$06,$06,$06,$06,$06,$3E,$00 + !BYTE $3E + !BYTE $20 + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $02 + !BYTE $3E + !BYTE $00 + !BYTE $3E + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $06 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0116: byte = $00,$02,$04,$08,$10,$20,$00,$00,$3E,$30,$30,$30,$30,$30,$3E,$00 + !BYTE $00 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $20 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $30 + !BYTE $3E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0117: byte = $00,$00,$08,$14,$22,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$7F + !BYTE $00 + !BYTE $00 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $7F +; libsrc/apple/hgrfont.pla: 0118: byte = $04,$08,$10,$00,$00,$00,$00,$00,$00,$00,$1C,$20,$3C,$22,$3C,$00 + !BYTE $04 + !BYTE $08 + !BYTE $10 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $1C + !BYTE $20 + !BYTE $3C + !BYTE $22 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0119: byte = $02,$02,$1E,$22,$22,$22,$1E,$00,$00,$00,$3C,$02,$02,$02,$3C,$00 + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0120: byte = $20,$20,$3C,$22,$22,$22,$3C,$00,$00,$00,$1C,$22,$3E,$02,$3C,$00 + !BYTE $20 + !BYTE $20 + !BYTE $3C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $3E + !BYTE $02 + !BYTE $3C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0121: byte = $18,$24,$04,$1E,$04,$04,$04,$00,$00,$00,$1C,$22,$22,$3C,$20,$1C + !BYTE $18 + !BYTE $24 + !BYTE $04 + !BYTE $1E + !BYTE $04 + !BYTE $04 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $1C +; libsrc/apple/hgrfont.pla: 0122: byte = $02,$02,$1E,$22,$22,$22,$22,$00,$08,$00,$0C,$08,$08,$08,$1C,$00 + !BYTE $02 + !BYTE $02 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $08 + !BYTE $00 + !BYTE $0C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0123: byte = $10,$00,$18,$10,$10,$10,$12,$0C,$02,$02,$22,$12,$0E,$12,$22,$00 + !BYTE $10 + !BYTE $00 + !BYTE $18 + !BYTE $10 + !BYTE $10 + !BYTE $10 + !BYTE $12 + !BYTE $0C + !BYTE $02 + !BYTE $02 + !BYTE $22 + !BYTE $12 + !BYTE $0E + !BYTE $12 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0124: byte = $0C,$08,$08,$08,$08,$08,$1C,$00,$00,$00,$36,$2A,$2A,$22,$22,$00 + !BYTE $0C + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $1C + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $36 + !BYTE $2A + !BYTE $2A + !BYTE $22 + !BYTE $22 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0125: byte = $00,$00,$1E,$22,$22,$22,$22,$00,$00,$00,$1C,$22,$22,$22,$1C,$00 + !BYTE $00 + !BYTE $00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $1C + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $1C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0126: byte = $00,$00,$1E,$22,$22,$1E,$02,$02,$00,$00,$3C,$22,$22,$3C,$20,$20 + !BYTE $00 + !BYTE $00 + !BYTE $1E + !BYTE $22 + !BYTE $22 + !BYTE $1E + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $00 + !BYTE $3C + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $20 +; libsrc/apple/hgrfont.pla: 0127: byte = $00,$00,$3A,$06,$02,$02,$02,$00,$00,$00,$3C,$02,$1C,$20,$1E,$00 + !BYTE $00 + !BYTE $00 + !BYTE $3A + !BYTE $06 + !BYTE $02 + !BYTE $02 + !BYTE $02 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $3C + !BYTE $02 + !BYTE $1C + !BYTE $20 + !BYTE $1E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0128: byte = $04,$04,$1E,$04,$04,$24,$18,$00,$00,$00,$22,$22,$22,$32,$2C,$00 + !BYTE $04 + !BYTE $04 + !BYTE $1E + !BYTE $04 + !BYTE $04 + !BYTE $24 + !BYTE $18 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $32 + !BYTE $2C + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0129: byte = $00,$00,$22,$22,$22,$14,$08,$00,$00,$00,$22,$22,$2A,$2A,$36,$00 + !BYTE $00 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $36 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0130: byte = $00,$00,$22,$14,$08,$14,$22,$00,$00,$00,$22,$22,$22,$3C,$20,$1C + !BYTE $00 + !BYTE $00 + !BYTE $22 + !BYTE $14 + !BYTE $08 + !BYTE $14 + !BYTE $22 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $3C + !BYTE $20 + !BYTE $1C +; libsrc/apple/hgrfont.pla: 0131: byte = $00,$00,$3E,$10,$08,$04,$3E,$00,$38,$0C,$0C,$06,$0C,$0C,$38,$00 + !BYTE $00 + !BYTE $00 + !BYTE $3E + !BYTE $10 + !BYTE $08 + !BYTE $04 + !BYTE $3E + !BYTE $00 + !BYTE $38 + !BYTE $0C + !BYTE $0C + !BYTE $06 + !BYTE $0C + !BYTE $0C + !BYTE $38 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0132: byte = $08,$08,$08,$08,$08,$08,$08,$08,$0E,$18,$18,$30,$18,$18,$0E,$00 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $0E + !BYTE $18 + !BYTE $18 + !BYTE $30 + !BYTE $18 + !BYTE $18 + !BYTE $0E + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0133: byte = $00,$2C,$1A,$00,$00,$00,$00,$00,$00,$2A,$14,$2A,$14,$2A,$00,$00 + !BYTE $00 + !BYTE $2C + !BYTE $1A + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $2A + !BYTE $14 + !BYTE $2A + !BYTE $14 + !BYTE $2A + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrfont.pla: 0134: // +; libsrc/apple/hgrfont.pla: 0135: // Print string with HGR tile library +; libsrc/apple/hgrfont.pla: 0136: // +; libsrc/apple/hgrfont.pla: 0137: export def hgrPutStr(x, y, strptr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; x -> [0] + ; y -> [2] + ; strptr -> [4] +_C000 ; hgrPutStr() +; libsrc/apple/hgrfont.pla: 0138: tileDrawStr(x, y, strptr + 1, ^strptr, @hgrFont + 1024) // Offset into regular char + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/hgrfont.pla: 0139: end + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $26 ; LA _D012+1024 +_F000 !WORD _D012+1024 + !BYTE $54 ; CALL _X005 +_F001 !WORD 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/hgrfont.pla: 0140: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: TILEDRAWSTR + !BYTE $D4,$C9,$CC,$C5,$C4,$D2,$C1,$D7,$D3,$D4,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: HGRPUTSTR + !BYTE $C8,$C7,$D2,$D0,$D5,$D4,$D3,$D4,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/hgrlib.a b/src/libsrc/apple/hgrlib.a new file mode 100644 index 0000000..4b22d44 --- /dev/null +++ b/src/libsrc/apple/hgrlib.a @@ -0,0 +1,3962 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/hgrlib.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/hgrlib.pla: 0001: +; libsrc/apple/hgrlib.pla: 0002: // +; libsrc/apple/hgrlib.pla: 0003: // Hardware addresses +; libsrc/apple/hgrlib.pla: 0004: // +; libsrc/apple/hgrlib.pla: 0005: const showgraphics = $C050 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; showgraphics = 49232 +; libsrc/apple/hgrlib.pla: 0006: const showtext = $C051 + ; showtext = 49233 +; libsrc/apple/hgrlib.pla: 0007: const showfull = $C052 + ; showfull = 49234 +; libsrc/apple/hgrlib.pla: 0008: const showmix = $C053 + ; showmix = 49235 +; libsrc/apple/hgrlib.pla: 0009: const showpage1 = $C054 + ; showpage1 = 49236 +; libsrc/apple/hgrlib.pla: 0010: const showpage2 = $C055 + ; showpage2 = 49237 +; libsrc/apple/hgrlib.pla: 0011: const showlores = $C056 + ; showlores = 49238 +; libsrc/apple/hgrlib.pla: 0012: const showhires = $C057 + ; showhires = 49239 +; libsrc/apple/hgrlib.pla: 0013: const keyboard = $C000 + ; keyboard = 49152 +; libsrc/apple/hgrlib.pla: 0014: const keystrobe = $C010 + ; keystrobe = 49168 +; libsrc/apple/hgrlib.pla: 0015: const hgr1 = $2000 + ; hgr1 = 8192 +; libsrc/apple/hgrlib.pla: 0016: const hgr2 = $4000 + ; hgr2 = 16384 +; libsrc/apple/hgrlib.pla: 0017: const page1 = 0 + ; page1 = 0 +; libsrc/apple/hgrlib.pla: 0018: const page2 = 1 + ; page2 = 1 +; libsrc/apple/hgrlib.pla: 0019: // +; libsrc/apple/hgrlib.pla: 0020: // Apple III hardware constants. +; libsrc/apple/hgrlib.pla: 0021: // +; libsrc/apple/hgrlib.pla: 0022: const ENV_REG = $FFDF + ; ENV_REG = 65503 +; libsrc/apple/hgrlib.pla: 0023: // +; libsrc/apple/hgrlib.pla: 0024: // Screen addresses +; libsrc/apple/hgrlib.pla: 0025: // +; libsrc/apple/hgrlib.pla: 0026: word hgrbuff[] = hgr1, hgr2 +_D028 ; hgrbuff[] = hgr1, hgr2 + !WORD $2000 + !WORD $4000 +; libsrc/apple/hgrlib.pla: 0027: //word hgrscan[] = $0000,$0400,$0800,$0C00,$1000,$1400,$1800,$1C00 +; libsrc/apple/hgrlib.pla: 0028: //word = $0080,$0480,$0880,$0C80,$1080,$1480,$1880,$1C80 +; libsrc/apple/hgrlib.pla: 0029: //word = $0100,$0500,$0900,$0D00,$1100,$1500,$1900,$1D00 +; libsrc/apple/hgrlib.pla: 0030: //word = $0180,$0580,$0980,$0D80,$1180,$1580,$1980,$1D80 +; libsrc/apple/hgrlib.pla: 0031: //word = $0200,$0600,$0A00,$0E00,$1200,$1600,$1A00,$1E00 +; libsrc/apple/hgrlib.pla: 0032: //word = $0280,$0680,$0A80,$0E80,$1280,$1680,$1A80,$1E80 +; libsrc/apple/hgrlib.pla: 0033: //word = $0300,$0700,$0B00,$0F00,$1300,$1700,$1B00,$1F00 +; libsrc/apple/hgrlib.pla: 0034: //word = $0380,$0780,$0B80,$0F80,$1380,$1780,$1B80,$1F80 +; libsrc/apple/hgrlib.pla: 0035: //word = $0028,$0428,$0828,$0C28,$1028,$1428,$1828,$1C28 +; libsrc/apple/hgrlib.pla: 0036: //word = $00A8,$04A8,$08A8,$0CA8,$10A8,$14A8,$18A8,$1CA8 +; libsrc/apple/hgrlib.pla: 0037: //word = $0128,$0528,$0928,$0D28,$1128,$1528,$1928,$1D28 +; libsrc/apple/hgrlib.pla: 0038: //word = $01A8,$05A8,$09A8,$0DA8,$11A8,$15A8,$19A8,$1DA8 +; libsrc/apple/hgrlib.pla: 0039: //word = $0228,$0628,$0A28,$0E28,$1228,$1628,$1A28,$1E28 +; libsrc/apple/hgrlib.pla: 0040: //word = $02A8,$06A8,$0AA8,$0EA8,$12A8,$16A8,$1AA8,$1EA8 +; libsrc/apple/hgrlib.pla: 0041: //word = $0328,$0728,$0B28,$0F28,$1328,$1728,$1B28,$1F28 +; libsrc/apple/hgrlib.pla: 0042: //word = $03A8,$07A8,$0BA8,$0FA8,$13A8,$17A8,$1BA8,$1FA8 +; libsrc/apple/hgrlib.pla: 0043: //word = $0050,$0450,$0850,$0C50,$1050,$1450,$1850,$1C50 +; libsrc/apple/hgrlib.pla: 0044: //word = $00D0,$04D0,$08D0,$0CD0,$10D0,$14D0,$18D0,$1CD0 +; libsrc/apple/hgrlib.pla: 0045: //word = $0150,$0550,$0950,$0D50,$1150,$1550,$1950,$1D50 +; libsrc/apple/hgrlib.pla: 0046: //word = $01D0,$05D0,$09D0,$0DD0,$11D0,$15D0,$19D0,$1DD0 +; libsrc/apple/hgrlib.pla: 0047: //word = $0250,$0650,$0A50,$0E50,$1250,$1650,$1A50,$1E50 +; libsrc/apple/hgrlib.pla: 0048: //word = $02D0,$06D0,$0AD0,$0ED0,$12D0,$16D0,$1AD0,$1ED0 +; libsrc/apple/hgrlib.pla: 0049: //word = $0350,$0750,$0B50,$0F50,$1350,$1750,$1B50,$1F50 +; libsrc/apple/hgrlib.pla: 0050: //word = $03D0,$07D0,$0BD0,$0FD0,$13D0,$17D0,$1BD0,$1FD0 +; libsrc/apple/hgrlib.pla: 0051: //word hmask = $8081,$8082,$8084,$8088,$8090,$80A0,$80C0 +; libsrc/apple/hgrlib.pla: 0052: //word = $8180,$8280,$8480,$8880,$9080,$A080,$C080 +; libsrc/apple/hgrlib.pla: 0053: byte hgrscanl[]= $00,$00,$00,$00,$00,$00,$00,$00 +_D029 ; hgrscanl[]= $00,$00,$00,$00,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrlib.pla: 0054: byte = $80,$80,$80,$80,$80,$80,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 +; libsrc/apple/hgrlib.pla: 0055: byte = $00,$00,$00,$00,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrlib.pla: 0056: byte = $80,$80,$80,$80,$80,$80,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 +; libsrc/apple/hgrlib.pla: 0057: byte = $00,$00,$00,$00,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrlib.pla: 0058: byte = $80,$80,$80,$80,$80,$80,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 +; libsrc/apple/hgrlib.pla: 0059: byte = $00,$00,$00,$00,$00,$00,$00,$00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/apple/hgrlib.pla: 0060: byte = $80,$80,$80,$80,$80,$80,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 + !BYTE $80 +; libsrc/apple/hgrlib.pla: 0061: byte = $28,$28,$28,$28,$28,$28,$28,$28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 +; libsrc/apple/hgrlib.pla: 0062: byte = $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 +; libsrc/apple/hgrlib.pla: 0063: byte = $28,$28,$28,$28,$28,$28,$28,$28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 +; libsrc/apple/hgrlib.pla: 0064: byte = $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 +; libsrc/apple/hgrlib.pla: 0065: byte = $28,$28,$28,$28,$28,$28,$28,$28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 +; libsrc/apple/hgrlib.pla: 0066: byte = $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 +; libsrc/apple/hgrlib.pla: 0067: byte = $28,$28,$28,$28,$28,$28,$28,$28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 + !BYTE $28 +; libsrc/apple/hgrlib.pla: 0068: byte = $A8,$A8,$A8,$A8,$A8,$A8,$A8,$A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 + !BYTE $A8 +; libsrc/apple/hgrlib.pla: 0069: byte = $50,$50,$50,$50,$50,$50,$50,$50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 +; libsrc/apple/hgrlib.pla: 0070: byte = $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 +; libsrc/apple/hgrlib.pla: 0071: byte = $50,$50,$50,$50,$50,$50,$50,$50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 +; libsrc/apple/hgrlib.pla: 0072: byte = $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 +; libsrc/apple/hgrlib.pla: 0073: byte = $50,$50,$50,$50,$50,$50,$50,$50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 +; libsrc/apple/hgrlib.pla: 0074: byte = $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 +; libsrc/apple/hgrlib.pla: 0075: byte = $50,$50,$50,$50,$50,$50,$50,$50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 + !BYTE $50 +; libsrc/apple/hgrlib.pla: 0076: byte = $D0,$D0,$D0,$D0,$D0,$D0,$D0,$D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 + !BYTE $D0 +; libsrc/apple/hgrlib.pla: 0077: byte hgrscanh[]= $00,$04,$08,$0C,$10,$14,$18,$1C +_D030 ; hgrscanh[]= $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0078: byte = $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0079: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0080: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0081: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0082: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0083: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0084: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0085: byte = $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0086: byte = $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0087: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0088: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0089: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0090: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0091: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0092: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0093: byte = $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0094: byte = $00,$04,$08,$0C,$10,$14,$18,$1C + !BYTE $00 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $10 + !BYTE $14 + !BYTE $18 + !BYTE $1C +; libsrc/apple/hgrlib.pla: 0095: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0096: byte = $01,$05,$09,$0D,$11,$15,$19,$1D + !BYTE $01 + !BYTE $05 + !BYTE $09 + !BYTE $0D + !BYTE $11 + !BYTE $15 + !BYTE $19 + !BYTE $1D +; libsrc/apple/hgrlib.pla: 0097: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0098: byte = $02,$06,$0A,$0E,$12,$16,$1A,$1E + !BYTE $02 + !BYTE $06 + !BYTE $0A + !BYTE $0E + !BYTE $12 + !BYTE $16 + !BYTE $1A + !BYTE $1E +; libsrc/apple/hgrlib.pla: 0099: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0100: byte = $03,$07,$0B,$0F,$13,$17,$1B,$1F + !BYTE $03 + !BYTE $07 + !BYTE $0B + !BYTE $0F + !BYTE $13 + !BYTE $17 + !BYTE $1B + !BYTE $1F +; libsrc/apple/hgrlib.pla: 0101: byte hbmask = $81,$82,$84,$88,$90,$A0,$C0 +_D031 ; hbmask = $81,$82,$84,$88,$90,$A0,$C0 + !BYTE $81 + !BYTE $82 + !BYTE $84 + !BYTE $88 + !BYTE $90 + !BYTE $A0 + !BYTE $C0 +; libsrc/apple/hgrlib.pla: 0102: byte hlmask = $FF,$FE,$FC,$F8,$F0,$E0,$C0 +_D032 ; hlmask = $FF,$FE,$FC,$F8,$F0,$E0,$C0 + !BYTE $FF + !BYTE $FE + !BYTE $FC + !BYTE $F8 + !BYTE $F0 + !BYTE $E0 + !BYTE $C0 +; libsrc/apple/hgrlib.pla: 0103: byte hrmask = $81,$83,$87,$8F,$9F,$BF,$FF +_D033 ; hrmask = $81,$83,$87,$8F,$9F,$BF,$FF + !BYTE $81 + !BYTE $83 + !BYTE $87 + !BYTE $8F + !BYTE $9F + !BYTE $BF + !BYTE $FF +; libsrc/apple/hgrlib.pla: 0104: word hcolor[] = $0000,$552A,$2A55,$7F7F,$8080,$D5AA,$AAD5,$FFFF +_D034 ; hcolor[] = $0000,$552A,$2A55,$7F7F,$8080,$D5AA,$AAD5,$FFFF + !WORD $0000 + !WORD $552A + !WORD $2A55 + !WORD $7F7F + !WORD $8080 + !WORD $D5AA + !WORD $AAD5 + !WORD $FFFF +; libsrc/apple/hgrlib.pla: 0105: word curhclr +_D035 !FILL 2 ; curhclr +; libsrc/apple/hgrlib.pla: 0106: byte drawpage = 1 +_D036 ; drawpage = 1 + !BYTE $01 +; libsrc/apple/hgrlib.pla: 0107: word drawbuff = hgr2 +_D037 ; drawbuff = hgr2 + !WORD $4000 +; libsrc/apple/hgrlib.pla: 0108: +; libsrc/apple/hgrlib.pla: 0109: export asm divmod7(x)#2 +_A000 ; divmod7() +; libsrc/apple/hgrlib.pla: 0110: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/hgrlib.pla: 0111: LDA ESTKL+0,X ; X COORDL + LDA ESTKL+0,X ; X COORDL +; libsrc/apple/hgrlib.pla: 0112: LDY ESTKH+0,X ; X COORDH + LDY ESTKH+0,X ; X COORDH +; libsrc/apple/hgrlib.pla: 0113: BPL + + BPL + +; libsrc/apple/hgrlib.pla: 0114: TYA ; DEAL WITH NEG X COORD + TYA ; DEAL WITH NEG X COORD +; libsrc/apple/hgrlib.pla: 0115: EOR #$FF + EOR #$FF +; libsrc/apple/hgrlib.pla: 0116: TAY + TAY +; libsrc/apple/hgrlib.pla: 0117: LDA ESTKL+0,X + LDA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0118: EOR #$FF + EOR #$FF +; libsrc/apple/hgrlib.pla: 0119: + CPY #$01 ++ CPY #$01 +; libsrc/apple/hgrlib.pla: 0120: BEQ ++ ; MUST BE >= 140 + BEQ ++ ; MUST BE >= 140 +; libsrc/apple/hgrlib.pla: 0121: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0122: LDY #40 ; > 512 SO CLIP AT MAX + LDY #40 ; > 512 SO CLIP AT MAX +; libsrc/apple/hgrlib.pla: 0123: LDA #00 + LDA #00 +; libsrc/apple/hgrlib.pla: 0124: BEQ +++ + BEQ +++ +; libsrc/apple/hgrlib.pla: 0125: + CMP #140 ++ CMP #140 +; libsrc/apple/hgrlib.pla: 0126: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0127: ++ SEC +++ SEC +; libsrc/apple/hgrlib.pla: 0128: SBC #140 + SBC #140 +; libsrc/apple/hgrlib.pla: 0129: LDY #20 + LDY #20 +; libsrc/apple/hgrlib.pla: 0130: + CMP #70 ++ CMP #70 +; libsrc/apple/hgrlib.pla: 0131: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0132: SBC #70 + SBC #70 +; libsrc/apple/hgrlib.pla: 0133: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0134: TYA + TYA +; libsrc/apple/hgrlib.pla: 0135: ADC #9 + ADC #9 +; libsrc/apple/hgrlib.pla: 0136: TAY + TAY +; libsrc/apple/hgrlib.pla: 0137: LDA ESTKL+0,X + LDA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0138: + CMP #35 ++ CMP #35 +; libsrc/apple/hgrlib.pla: 0139: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0140: SBC #35 + SBC #35 +; libsrc/apple/hgrlib.pla: 0141: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0142: TYA + TYA +; libsrc/apple/hgrlib.pla: 0143: ADC #4 + ADC #4 +; libsrc/apple/hgrlib.pla: 0144: TAY + TAY +; libsrc/apple/hgrlib.pla: 0145: LDA ESTKL+0,X + LDA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0146: + ++ +; libsrc/apple/hgrlib.pla: 0147: - CMP #7 +- CMP #7 +; libsrc/apple/hgrlib.pla: 0148: BCC +++ + BCC +++ +; libsrc/apple/hgrlib.pla: 0149: SBC #7 + SBC #7 +; libsrc/apple/hgrlib.pla: 0150: INY + INY +; libsrc/apple/hgrlib.pla: 0151: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 0152: +++ DEX ++++ DEX +; libsrc/apple/hgrlib.pla: 0153: ASL ESTKH+1,X ; CHECK SIGN OF XCOORD + ASL ESTKH+1,X ; CHECK SIGN OF XCOORD +; libsrc/apple/hgrlib.pla: 0154: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0155: STA ESTKL+0,X ; REMAINDERL + STA ESTKL+0,X ; REMAINDERL +; libsrc/apple/hgrlib.pla: 0156: STY ESTKL+1,X ; QUOTIENTL + STY ESTKL+1,X ; QUOTIENTL +; libsrc/apple/hgrlib.pla: 0157: LDY #$00 + LDY #$00 +; libsrc/apple/hgrlib.pla: 0158: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0159: STY ESTKH+1,X + STY ESTKH+1,X +; libsrc/apple/hgrlib.pla: 0160: RTS + RTS +; libsrc/apple/hgrlib.pla: 0161: + EOR #$07 ++ EOR #$07 +; libsrc/apple/hgrlib.pla: 0162: SBC #$01 + SBC #$01 +; libsrc/apple/hgrlib.pla: 0163: STA ESTKL+0,X ; REMAINDERL + STA ESTKL+0,X ; REMAINDERL +; libsrc/apple/hgrlib.pla: 0164: TYA + TYA +; libsrc/apple/hgrlib.pla: 0165: EOR #$FF + EOR #$FF +; libsrc/apple/hgrlib.pla: 0166: STA ESTKL+1,X ; QUOTIENTL + STA ESTKL+1,X ; QUOTIENTL +; libsrc/apple/hgrlib.pla: 0167: LDY #$00 + LDY #$00 +; libsrc/apple/hgrlib.pla: 0168: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0169: DEY + DEY +; libsrc/apple/hgrlib.pla: 0170: STY ESTKH+1,X + STY ESTKH+1,X +; libsrc/apple/hgrlib.pla: 0171: RTS + RTS +; libsrc/apple/hgrlib.pla: 0172: end +; libsrc/apple/hgrlib.pla: 0173: asm clipsrc(ofst, y, w, h, srcptr)#0 +_A001 ; clipsrc() +; libsrc/apple/hgrlib.pla: 0174: LDA ESTKL+0,X ; SRC PTR + LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0175: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0176: LDA ESTKH+0,X + LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0177: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0178: LDA ESTKL+2,X ; WIDTH (SRC PITCH) + LDA ESTKL+2,X ; WIDTH (SRC PITCH) +; libsrc/apple/hgrlib.pla: 0179: STA TMPH ; WIDTH (DRAW WIDTH) + STA TMPH ; WIDTH (DRAW WIDTH) +; libsrc/apple/hgrlib.pla: 0180: ; CLPTOP +; CLPTOP +; libsrc/apple/hgrlib.pla: 0181: LDY ESTKH+3,X ; Y COORDH + LDY ESTKH+3,X ; Y COORDH +; libsrc/apple/hgrlib.pla: 0182: BPL CLPBOTM + BPL CLPBOTM +; libsrc/apple/hgrlib.pla: 0183: INY + INY +; libsrc/apple/hgrlib.pla: 0184: ; STY ESTKH+3,X ; Y COORDH +; STY ESTKH+3,X ; Y COORDH +; libsrc/apple/hgrlib.pla: 0185: BNE CLPPED + BNE CLPPED +; libsrc/apple/hgrlib.pla: 0186: LDY ESTKL+3,X ; Y COORDL + LDY ESTKL+3,X ; Y COORDL +; libsrc/apple/hgrlib.pla: 0187: - LDA SRCL +- LDA SRCL +; libsrc/apple/hgrlib.pla: 0188: CLC + CLC +; libsrc/apple/hgrlib.pla: 0189: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0190: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0191: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0192: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0193: + DEC ESTKL+1,X ; HEIGHT ++ DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0194: BEQ CLPPED + BEQ CLPPED +; libsrc/apple/hgrlib.pla: 0195: INY ; Y COORDL + INY ; Y COORDL +; libsrc/apple/hgrlib.pla: 0196: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 0197: STY ESTKL+3,X ; Y COORDL + STY ESTKL+3,X ; Y COORDL +; libsrc/apple/hgrlib.pla: 0198: BEQ CLPLEFT ; BETTER BE ZERO + BEQ CLPLEFT ; BETTER BE ZERO +; libsrc/apple/hgrlib.pla: 0199: CLPBOTM BNE CLPPED +CLPBOTM BNE CLPPED +; libsrc/apple/hgrlib.pla: 0200: LDA ESTKL+3,X ; YCOORDL + LDA ESTKL+3,X ; YCOORDL +; libsrc/apple/hgrlib.pla: 0201: CMP #192 + CMP #192 +; libsrc/apple/hgrlib.pla: 0202: BCS CLPPED + BCS CLPPED +; libsrc/apple/hgrlib.pla: 0203: ; CLC +; CLC +; libsrc/apple/hgrlib.pla: 0204: ADC ESTKL+1,X ; HEIGHT + ADC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0205: SBC #191 + SBC #191 +; libsrc/apple/hgrlib.pla: 0206: BCC CLPLEFT + BCC CLPLEFT +; libsrc/apple/hgrlib.pla: 0207: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0208: LDA ESTKL+1,X ; HEIGHT + LDA ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0209: SBC TMPL + SBC TMPL +; libsrc/apple/hgrlib.pla: 0210: STA ESTKL+1,X ; HEIGHT + STA ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0211: BEQ CLPPED + BEQ CLPPED +; libsrc/apple/hgrlib.pla: 0212: CLPLEFT LDY ESTKH+4,X ; HORIZ OFFSETH +CLPLEFT LDY ESTKH+4,X ; HORIZ OFFSETH +; libsrc/apple/hgrlib.pla: 0213: BPL CLPRGHT + BPL CLPRGHT +; libsrc/apple/hgrlib.pla: 0214: INY + INY +; libsrc/apple/hgrlib.pla: 0215: ; STY ESTKH+4,X +; STY ESTKH+4,X +; libsrc/apple/hgrlib.pla: 0216: BNE CLPPED + BNE CLPPED +; libsrc/apple/hgrlib.pla: 0217: LDY ESTKL+4,X ; HORIZ OFFSETL + LDY ESTKL+4,X ; HORIZ OFFSETL +; libsrc/apple/hgrlib.pla: 0218: - INC SRCL +- INC SRCL +; libsrc/apple/hgrlib.pla: 0219: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0220: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0221: + DEC TMPH ; WIDTH ++ DEC TMPH ; WIDTH +; libsrc/apple/hgrlib.pla: 0222: BEQ CLPPED + BEQ CLPPED +; libsrc/apple/hgrlib.pla: 0223: INY ; HORIZ OFFSETL + INY ; HORIZ OFFSETL +; libsrc/apple/hgrlib.pla: 0224: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 0225: STY ESTKL+4,X ; HORIZ OFFSETL + STY ESTKL+4,X ; HORIZ OFFSETL +; libsrc/apple/hgrlib.pla: 0226: BEQ CLPDONE ; BETTER BE ZERO + BEQ CLPDONE ; BETTER BE ZERO +; libsrc/apple/hgrlib.pla: 0227: CLPRGHT BNE CLPPED +CLPRGHT BNE CLPPED +; libsrc/apple/hgrlib.pla: 0228: LDA ESTKL+4,X ; HORIZ OFFSETL + LDA ESTKL+4,X ; HORIZ OFFSETL +; libsrc/apple/hgrlib.pla: 0229: CMP #40 + CMP #40 +; libsrc/apple/hgrlib.pla: 0230: BCS CLPPED + BCS CLPPED +; libsrc/apple/hgrlib.pla: 0231: ; CLC +; CLC +; libsrc/apple/hgrlib.pla: 0232: ADC TMPH ; WIDTH + ADC TMPH ; WIDTH +; libsrc/apple/hgrlib.pla: 0233: SBC #39 + SBC #39 +; libsrc/apple/hgrlib.pla: 0234: BCC CLPDONE + BCC CLPDONE +; libsrc/apple/hgrlib.pla: 0235: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0236: LDA TMPH ; WIDTH + LDA TMPH ; WIDTH +; libsrc/apple/hgrlib.pla: 0237: SBC TMPL + SBC TMPL +; libsrc/apple/hgrlib.pla: 0238: STA TMPH ; WIDTH + STA TMPH ; WIDTH +; libsrc/apple/hgrlib.pla: 0239: CLPDONE LDA TMPH +CLPDONE LDA TMPH +; libsrc/apple/hgrlib.pla: 0240: STA ESTKH+2,X ; WIDTH (DRAW WIDTH) + STA ESTKH+2,X ; WIDTH (DRAW WIDTH) +; libsrc/apple/hgrlib.pla: 0241: ; LDA SRCL +; LDA SRCL +; libsrc/apple/hgrlib.pla: 0242: ; STA ESTKL+0,X ; SRC PTR +; STA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0243: ; LDA SRCH +; LDA SRCH +; libsrc/apple/hgrlib.pla: 0244: ; STA ESTKH+0,X +; STA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0245: RTS + RTS +; libsrc/apple/hgrlib.pla: 0246: CLPPED INX +CLPPED INX +; libsrc/apple/hgrlib.pla: 0247: INX + INX +; libsrc/apple/hgrlib.pla: 0248: INX + INX +; libsrc/apple/hgrlib.pla: 0249: INX + INX +; libsrc/apple/hgrlib.pla: 0250: INX + INX +; libsrc/apple/hgrlib.pla: 0251: PLA + PLA +; libsrc/apple/hgrlib.pla: 0252: PLA + PLA +; libsrc/apple/hgrlib.pla: 0253: RTS + RTS +; libsrc/apple/hgrlib.pla: 0254: end +; libsrc/apple/hgrlib.pla: 0255: //export def hgrColor(c)#0 +; libsrc/apple/hgrlib.pla: 0256: // curhclr = hcolor[c & $07] +; libsrc/apple/hgrlib.pla: 0257: //end +; libsrc/apple/hgrlib.pla: 0258: export asm hgrColor(c)#0 +_A002 ; hgrColor() +; libsrc/apple/hgrlib.pla: 0259: LDA ESTKL+0,X ; COLOR + LDA ESTKL+0,X ; COLOR +; libsrc/apple/hgrlib.pla: 0260: AND #$07 + AND #$07 +; libsrc/apple/hgrlib.pla: 0261: ASL + ASL +; libsrc/apple/hgrlib.pla: 0262: TAY + TAY +; libsrc/apple/hgrlib.pla: 0263: LDA $1000,Y ; HCOLORL + LDA $1000,Y ; HCOLORL +; libsrc/apple/hgrlib.pla: 0264: STA $2000 ; CURHCLRL + STA $2000 ; CURHCLRL +; libsrc/apple/hgrlib.pla: 0265: LDA $1001,Y ; HCOLORH + LDA $1001,Y ; HCOLORH +; libsrc/apple/hgrlib.pla: 0266: STA $2001 ; CRHCLRH + STA $2001 ; CRHCLRH +; libsrc/apple/hgrlib.pla: 0267: INX + INX +; libsrc/apple/hgrlib.pla: 0268: RTS + RTS +; libsrc/apple/hgrlib.pla: 0269: end +; libsrc/apple/hgrlib.pla: 0270: //export def hgrCopyDst(ofst, y, w, h, dstptr)#0 +; libsrc/apple/hgrlib.pla: 0271: // word j, srcptr +; libsrc/apple/hgrlib.pla: 0272: // +; libsrc/apple/hgrlib.pla: 0273: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0274: // for j = y to y + h - 1 +; libsrc/apple/hgrlib.pla: 0275: // srcptr = hgrscan[j] + ofst +; libsrc/apple/hgrlib.pla: 0276: // memcpy(dstptr, srcptr, w) +; libsrc/apple/hgrlib.pla: 0277: // dstptr = dstptr + w +; libsrc/apple/hgrlib.pla: 0278: // next +; libsrc/apple/hgrlib.pla: 0279: //end +; libsrc/apple/hgrlib.pla: 0280: export asm hgrCopyDst(ofst, y, w, h, dstptr)#0 +_A003 ; hgrCopyDst() +; libsrc/apple/hgrlib.pla: 0281: JSR $C000 ; CLIPSRC + JSR $C000 ; CLIPSRC +; libsrc/apple/hgrlib.pla: 0282: ; LDA ESTKL+0,X ; DST PTR +; LDA ESTKL+0,X ; DST PTR +; libsrc/apple/hgrlib.pla: 0283: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0284: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0285: ; LDA ESTKH+0,X +; LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0286: LDA SRCH + LDA SRCH +; libsrc/apple/hgrlib.pla: 0287: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0288: -- LDY ESTKL+3,X ; Y COORD +-- LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0289: LDA ESTKL+4,X ; HORIZ OFFSET + LDA ESTKL+4,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0290: CLC + CLC +; libsrc/apple/hgrlib.pla: 0291: end +; libsrc/apple/hgrlib.pla: 0292: asm _hgrCopyDst +_A004 ; _hgrCopyDst() +; libsrc/apple/hgrlib.pla: 0293: ADC $8000,Y ; HGRSCANL + ADC $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0294: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0295: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0296: ADC $9000,Y ; HGRSCANH + ADC $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0297: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0298: LDY ESTKH+2,X ; WIDTH + LDY ESTKH+2,X ; WIDTH +; libsrc/apple/hgrlib.pla: 0299: DEY + DEY +; libsrc/apple/hgrlib.pla: 0300: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 0301: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0302: DEY + DEY +; libsrc/apple/hgrlib.pla: 0303: BPL - + BPL - +; libsrc/apple/hgrlib.pla: 0304: LDA DSTL + LDA DSTL +; libsrc/apple/hgrlib.pla: 0305: CLC + CLC +; libsrc/apple/hgrlib.pla: 0306: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0307: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0308: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0309: INC DSTH + INC DSTH +; libsrc/apple/hgrlib.pla: 0310: + INC ESTKL+3,X ; Y COORD ++ INC ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0311: DEC ESTKL+1,X ; HEIGHT + DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0312: BNE -- + BNE -- +; libsrc/apple/hgrlib.pla: 0313: INX + INX +; libsrc/apple/hgrlib.pla: 0314: INX + INX +; libsrc/apple/hgrlib.pla: 0315: INX + INX +; libsrc/apple/hgrlib.pla: 0316: INX + INX +; libsrc/apple/hgrlib.pla: 0317: INX + INX +; libsrc/apple/hgrlib.pla: 0318: RTS + RTS +; libsrc/apple/hgrlib.pla: 0319: end +; libsrc/apple/hgrlib.pla: 0320: //export def hgrCopySrc(ofst, y, w, h, srcptr)#0 +; libsrc/apple/hgrlib.pla: 0321: // word j, dstptr +; libsrc/apple/hgrlib.pla: 0322: // +; libsrc/apple/hgrlib.pla: 0323: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0324: // for j = y to y + h - 1 +; libsrc/apple/hgrlib.pla: 0325: // dstptr = hgrscan[j] + ofst +; libsrc/apple/hgrlib.pla: 0326: // memcpy(dstptr, srcptr, w) +; libsrc/apple/hgrlib.pla: 0327: // srcptr = srcptr + w +; libsrc/apple/hgrlib.pla: 0328: // next +; libsrc/apple/hgrlib.pla: 0329: //end +; libsrc/apple/hgrlib.pla: 0330: export asm hgrCopySrc(ofst, y, w, h, srcptr)#0 +_A005 ; hgrCopySrc() +; libsrc/apple/hgrlib.pla: 0331: JSR $C000 ; CLIPSRC + JSR $C000 ; CLIPSRC +; libsrc/apple/hgrlib.pla: 0332: ; LDA ESTKL+0,X ; SRC PTR +; LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0333: ; STA SRCL +; STA SRCL +; libsrc/apple/hgrlib.pla: 0334: ; LDA ESTKH+0,X +; LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0335: ; STA SRCH +; STA SRCH +; libsrc/apple/hgrlib.pla: 0336: -- LDY ESTKL+3,X ; Y COORD +-- LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0337: LDA ESTKL+4,X ; HORIZ OFFSET + LDA ESTKL+4,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0338: CLC + CLC +; libsrc/apple/hgrlib.pla: 0339: end +; libsrc/apple/hgrlib.pla: 0340: asm _hgrCopySrc +_A006 ; _hgrCopySrc() +; libsrc/apple/hgrlib.pla: 0341: ADC $8000,Y ; HGRSCANL + ADC $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0342: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0343: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0344: ADC $9000,Y ; HGRSCANH + ADC $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0345: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0346: LDY ESTKH+2,X ; WIDTH + LDY ESTKH+2,X ; WIDTH +; libsrc/apple/hgrlib.pla: 0347: DEY + DEY +; libsrc/apple/hgrlib.pla: 0348: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 0349: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0350: DEY + DEY +; libsrc/apple/hgrlib.pla: 0351: BPL - + BPL - +; libsrc/apple/hgrlib.pla: 0352: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0353: CLC + CLC +; libsrc/apple/hgrlib.pla: 0354: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0355: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0356: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0357: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0358: + INC ESTKL+3,X ; Y COORD ++ INC ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0359: DEC ESTKL+1,X ; HEIGHT + DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0360: BNE -- + BNE -- +; libsrc/apple/hgrlib.pla: 0361: INX + INX +; libsrc/apple/hgrlib.pla: 0362: INX + INX +; libsrc/apple/hgrlib.pla: 0363: INX + INX +; libsrc/apple/hgrlib.pla: 0364: INX + INX +; libsrc/apple/hgrlib.pla: 0365: INX + INX +; libsrc/apple/hgrlib.pla: 0366: RTS + RTS +; libsrc/apple/hgrlib.pla: 0367: end +; libsrc/apple/hgrlib.pla: 0368: //export def hgrAndSrc(ofst, y, w, h, srcptr)#0 +; libsrc/apple/hgrlib.pla: 0369: // word j, dstptr +; libsrc/apple/hgrlib.pla: 0370: // byte i +; libsrc/apple/hgrlib.pla: 0371: // +; libsrc/apple/hgrlib.pla: 0372: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0373: // for j = y to y + h - 1 +; libsrc/apple/hgrlib.pla: 0374: // dstptr = hgrscan[j] + ofst +; libsrc/apple/hgrlib.pla: 0375: // for i = 0 to w - 1 +; libsrc/apple/hgrlib.pla: 0376: // dstptr->[i] = dstptr->[i] & srcptr->[i] +; libsrc/apple/hgrlib.pla: 0377: // next +; libsrc/apple/hgrlib.pla: 0378: // srcptr = srcptr + w +; libsrc/apple/hgrlib.pla: 0379: // next +; libsrc/apple/hgrlib.pla: 0380: //end +; libsrc/apple/hgrlib.pla: 0381: export asm hgrAndSrc(ofst, y, w, h, srcptr)#0 +_A007 ; hgrAndSrc() +; libsrc/apple/hgrlib.pla: 0382: JSR $C000 ; CLIPSRC + JSR $C000 ; CLIPSRC +; libsrc/apple/hgrlib.pla: 0383: ; LDA ESTKL+0,X ; SRC PTR +; LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0384: ; STA SRCL +; STA SRCL +; libsrc/apple/hgrlib.pla: 0385: ; LDA ESTKH+0,X +; LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0386: ; STA SRCH +; STA SRCH +; libsrc/apple/hgrlib.pla: 0387: -- LDY ESTKL+3,X ; Y COORD +-- LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0388: LDA ESTKL+4,X ; HORIZ OFFSET + LDA ESTKL+4,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0389: CLC + CLC +; libsrc/apple/hgrlib.pla: 0390: end +; libsrc/apple/hgrlib.pla: 0391: asm _hgrAndSrc +_A008 ; _hgrAndSrc() +; libsrc/apple/hgrlib.pla: 0392: ADC $8000,Y ; HGRSCANL + ADC $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0393: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0394: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0395: ADC $9000,Y ; HGRSCANH + ADC $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0396: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0397: LDY ESTKH+2,X ; WIDTH + LDY ESTKH+2,X ; WIDTH +; libsrc/apple/hgrlib.pla: 0398: DEY + DEY +; libsrc/apple/hgrlib.pla: 0399: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 0400: AND (DST),Y + AND (DST),Y +; libsrc/apple/hgrlib.pla: 0401: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0402: DEY + DEY +; libsrc/apple/hgrlib.pla: 0403: BPL - + BPL - +; libsrc/apple/hgrlib.pla: 0404: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0405: CLC + CLC +; libsrc/apple/hgrlib.pla: 0406: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0407: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0408: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0409: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0410: + INC ESTKL+3,X ; Y COORD ++ INC ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0411: DEC ESTKL+1,X ; HEIGHT + DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0412: BNE -- + BNE -- +; libsrc/apple/hgrlib.pla: 0413: INX + INX +; libsrc/apple/hgrlib.pla: 0414: INX + INX +; libsrc/apple/hgrlib.pla: 0415: INX + INX +; libsrc/apple/hgrlib.pla: 0416: INX + INX +; libsrc/apple/hgrlib.pla: 0417: INX + INX +; libsrc/apple/hgrlib.pla: 0418: RTS + RTS +; libsrc/apple/hgrlib.pla: 0419: end +; libsrc/apple/hgrlib.pla: 0420: //export def hgrXorSrc(ofst, y, w, h, srcptr)#0 +; libsrc/apple/hgrlib.pla: 0421: // word j, dstptr +; libsrc/apple/hgrlib.pla: 0422: // byte i +; libsrc/apple/hgrlib.pla: 0423: // +; libsrc/apple/hgrlib.pla: 0424: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0425: // for j = y to y + h - 1 +; libsrc/apple/hgrlib.pla: 0426: // dstptr = hgrscan[j] + ofst +; libsrc/apple/hgrlib.pla: 0427: // for i = 0 to w - 1 +; libsrc/apple/hgrlib.pla: 0428: // dstptr->[i] = dstptr->[i] ^ srcptr->[i] +; libsrc/apple/hgrlib.pla: 0429: // next +; libsrc/apple/hgrlib.pla: 0430: // srcptr = srcptr + w +; libsrc/apple/hgrlib.pla: 0431: // next +; libsrc/apple/hgrlib.pla: 0432: //end +; libsrc/apple/hgrlib.pla: 0433: export asm hgrXorSrc(ofst, y, w, h, srcptr)#0 +_A009 ; hgrXorSrc() +; libsrc/apple/hgrlib.pla: 0434: JSR $C000 ; CLIPSRC + JSR $C000 ; CLIPSRC +; libsrc/apple/hgrlib.pla: 0435: ; LDA ESTKL+0,X ; SRC PTR +; LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0436: ; STA SRCL +; STA SRCL +; libsrc/apple/hgrlib.pla: 0437: ; LDA ESTKH+0,X +; LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0438: ; STA SRCH +; STA SRCH +; libsrc/apple/hgrlib.pla: 0439: -- LDY ESTKL+3,X ; Y COORD +-- LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0440: LDA ESTKL+4,X ; HORIZ OFFSET + LDA ESTKL+4,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0441: CLC + CLC +; libsrc/apple/hgrlib.pla: 0442: end +; libsrc/apple/hgrlib.pla: 0443: asm _hgrXorSrc +_A010 ; _hgrXorSrc() +; libsrc/apple/hgrlib.pla: 0444: ADC $8000,Y ; HGRSCANL + ADC $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0445: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0446: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0447: ADC $9000,Y ; HGRSCANH + ADC $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0448: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0449: LDY ESTKH+2,X ; WIDTH + LDY ESTKH+2,X ; WIDTH +; libsrc/apple/hgrlib.pla: 0450: DEY + DEY +; libsrc/apple/hgrlib.pla: 0451: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 0452: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0453: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0454: DEY + DEY +; libsrc/apple/hgrlib.pla: 0455: BPL - + BPL - +; libsrc/apple/hgrlib.pla: 0456: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0457: CLC + CLC +; libsrc/apple/hgrlib.pla: 0458: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0459: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0460: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0461: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0462: + INC ESTKL+3,X ; Y COORD ++ INC ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0463: DEC ESTKL+1,X ; HEIGHT + DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0464: BNE -- + BNE -- +; libsrc/apple/hgrlib.pla: 0465: INX + INX +; libsrc/apple/hgrlib.pla: 0466: INX + INX +; libsrc/apple/hgrlib.pla: 0467: INX + INX +; libsrc/apple/hgrlib.pla: 0468: INX + INX +; libsrc/apple/hgrlib.pla: 0469: INX + INX +; libsrc/apple/hgrlib.pla: 0470: RTS + RTS +; libsrc/apple/hgrlib.pla: 0471: end +; libsrc/apple/hgrlib.pla: 0472: //export def hgrOrSrc(ofst, y, w, h, srcptr)#0 +; libsrc/apple/hgrlib.pla: 0473: // word j, dstptr +; libsrc/apple/hgrlib.pla: 0474: // byte i +; libsrc/apple/hgrlib.pla: 0475: // +; libsrc/apple/hgrlib.pla: 0476: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0477: // for j = y to y + h - 1 +; libsrc/apple/hgrlib.pla: 0478: // dstptr = hgrscan[j] + ofst +; libsrc/apple/hgrlib.pla: 0479: // for i = 0 to w - 1 +; libsrc/apple/hgrlib.pla: 0480: // dstptr->[i] = dstptr->[i] ^ srcptr->[i] +; libsrc/apple/hgrlib.pla: 0481: // next +; libsrc/apple/hgrlib.pla: 0482: // srcptr = srcptr + w +; libsrc/apple/hgrlib.pla: 0483: // next +; libsrc/apple/hgrlib.pla: 0484: //end +; libsrc/apple/hgrlib.pla: 0485: export asm hgrOrSrc(ofst, y, w, h, srcptr)#0 +_A011 ; hgrOrSrc() +; libsrc/apple/hgrlib.pla: 0486: JSR $C000 ; CLIPSRC + JSR $C000 ; CLIPSRC +; libsrc/apple/hgrlib.pla: 0487: ; LDA ESTKL+0,X ; SRC PTR +; LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 0488: ; STA SRCL +; STA SRCL +; libsrc/apple/hgrlib.pla: 0489: ; LDA ESTKH+0,X +; LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0490: ; STA SRCH +; STA SRCH +; libsrc/apple/hgrlib.pla: 0491: -- LDY ESTKL+3,X ; Y COORD +-- LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0492: LDA ESTKL+4,X ; HORIZ OFFSET + LDA ESTKL+4,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0493: CLC + CLC +; libsrc/apple/hgrlib.pla: 0494: end +; libsrc/apple/hgrlib.pla: 0495: asm _hgrOrSrc +_A012 ; _hgrOrSrc() +; libsrc/apple/hgrlib.pla: 0496: ADC $8000,Y ; HGRSCANL + ADC $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0497: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0498: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0499: ADC $9000,Y ; HGRSCANH + ADC $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0500: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0501: LDY ESTKH+2,X ; WIDTH + LDY ESTKH+2,X ; WIDTH +; libsrc/apple/hgrlib.pla: 0502: DEY + DEY +; libsrc/apple/hgrlib.pla: 0503: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 0504: ORA (DST),Y + ORA (DST),Y +; libsrc/apple/hgrlib.pla: 0505: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0506: DEY + DEY +; libsrc/apple/hgrlib.pla: 0507: BPL - + BPL - +; libsrc/apple/hgrlib.pla: 0508: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0509: CLC + CLC +; libsrc/apple/hgrlib.pla: 0510: ADC ESTKL+2,X ; PITCH + ADC ESTKL+2,X ; PITCH +; libsrc/apple/hgrlib.pla: 0511: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0512: BCC + + BCC + +; libsrc/apple/hgrlib.pla: 0513: INC SRCH + INC SRCH +; libsrc/apple/hgrlib.pla: 0514: + INC ESTKL+3,X ; Y COORD ++ INC ESTKL+3,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0515: DEC ESTKL+1,X ; HEIGHT + DEC ESTKL+1,X ; HEIGHT +; libsrc/apple/hgrlib.pla: 0516: BNE -- + BNE -- +; libsrc/apple/hgrlib.pla: 0517: INX + INX +; libsrc/apple/hgrlib.pla: 0518: INX + INX +; libsrc/apple/hgrlib.pla: 0519: INX + INX +; libsrc/apple/hgrlib.pla: 0520: INX + INX +; libsrc/apple/hgrlib.pla: 0521: INX + INX +; libsrc/apple/hgrlib.pla: 0522: RTS + RTS +; libsrc/apple/hgrlib.pla: 0523: end +; libsrc/apple/hgrlib.pla: 0524: //export def hgrPlot(x, y)#0 +; libsrc/apple/hgrlib.pla: 0525: // word pixptr +; libsrc/apple/hgrlib.pla: 0526: // byte ofst, pixofst, pmask +; libsrc/apple/hgrlib.pla: 0527: // +; libsrc/apple/hgrlib.pla: 0528: // ofst, pixofst = divmod7(x) +; libsrc/apple/hgrlib.pla: 0529: // pixptr = hgrscan[y] + drawbuff + ofst +; libsrc/apple/hgrlib.pla: 0530: // pmask = hbmask[pixofst] +; libsrc/apple/hgrlib.pla: 0531: // ^pixptr = (^pixptr & ~pmask) | (curhclr.[ofst & 1] & pmask) +; libsrc/apple/hgrlib.pla: 0532: //end +; libsrc/apple/hgrlib.pla: 0533: export asm hgrPlot(x, y)#0 +_A013 ; hgrPlot() +; libsrc/apple/hgrlib.pla: 0534: LDY ESTKL+0,X ; Y COORD + LDY ESTKL+0,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0535: CPY #192 + CPY #192 +; libsrc/apple/hgrlib.pla: 0536: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0537: end +; libsrc/apple/hgrlib.pla: 0538: asm _hgrPlotA +_A014 ; _hgrPlotA() +; libsrc/apple/hgrlib.pla: 0539: LDA $8000,Y ; HGRSCANL + LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0540: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0541: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0542: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0543: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0544: INX + INX +; libsrc/apple/hgrlib.pla: 0545: end +; libsrc/apple/hgrlib.pla: 0546: asm _hgrPlotB +_A015 ; _hgrPlotB() +; libsrc/apple/hgrlib.pla: 0547: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0548: LDY ESTKL+0,X ; PIXEL OFFSET + LDY ESTKL+0,X ; PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0549: end +; libsrc/apple/hgrlib.pla: 0550: asm _hgrPlotC +_A016 ; _hgrPlotC() +; libsrc/apple/hgrlib.pla: 0551: LDA $1000,Y ; HBMASK + LDA $1000,Y ; HBMASK +; libsrc/apple/hgrlib.pla: 0552: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0553: LDA ESTKL+1,X ; HORIZ OFFSET + LDA ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0554: CMP #40 + CMP #40 +; libsrc/apple/hgrlib.pla: 0555: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0556: AND #$01 + AND #$01 +; libsrc/apple/hgrlib.pla: 0557: TAY + TAY +; libsrc/apple/hgrlib.pla: 0558: end +; libsrc/apple/hgrlib.pla: 0559: asm _hgrPlotD +_A017 ; _hgrPlotD() +; libsrc/apple/hgrlib.pla: 0560: LDA $2000,Y ; CURHCLR + LDA $2000,Y ; CURHCLR +; libsrc/apple/hgrlib.pla: 0561: LDY ESTKL+1,X ; HORIZ OFFSET + LDY ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0562: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0563: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0564: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0565: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0566: + INX ++ INX +; libsrc/apple/hgrlib.pla: 0567: INX + INX +; libsrc/apple/hgrlib.pla: 0568: RTS + RTS +; libsrc/apple/hgrlib.pla: 0569: end +; libsrc/apple/hgrlib.pla: 0570: //export def hgrXorPlot(x, y)#0 +; libsrc/apple/hgrlib.pla: 0571: // word pixptr +; libsrc/apple/hgrlib.pla: 0572: // byte ofst, pixofst, pmask +; libsrc/apple/hgrlib.pla: 0573: // +; libsrc/apple/hgrlib.pla: 0574: // ofst, pixofst = divmod7(x) +; libsrc/apple/hgrlib.pla: 0575: // pixptr = hgrscan[y] + drawbuff + ofst +; libsrc/apple/hgrlib.pla: 0576: // pmask = hbmask[pixofst] +; libsrc/apple/hgrlib.pla: 0577: // ^pixptr = ^pixptr ^ (curhclr.[ofst & 1] & pmask) +; libsrc/apple/hgrlib.pla: 0578: //end +; libsrc/apple/hgrlib.pla: 0579: export asm hgrXorPlot(x, y)#0 +_A018 ; hgrXorPlot() +; libsrc/apple/hgrlib.pla: 0580: LDY ESTKL+0,X ; Y COORD + LDY ESTKL+0,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0581: CPY #192 + CPY #192 +; libsrc/apple/hgrlib.pla: 0582: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0583: end +; libsrc/apple/hgrlib.pla: 0584: asm _hgrXorPlotA +_A019 ; _hgrXorPlotA() +; libsrc/apple/hgrlib.pla: 0585: LDA $8000,Y ; HGRSCANL + LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0586: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0587: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0588: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0589: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0590: INX + INX +; libsrc/apple/hgrlib.pla: 0591: end +; libsrc/apple/hgrlib.pla: 0592: asm _hgrXorPlotB +_A020 ; _hgrXorPlotB() +; libsrc/apple/hgrlib.pla: 0593: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0594: LDY ESTKL+0,X ; PIXEL OFFSET + LDY ESTKL+0,X ; PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0595: end +; libsrc/apple/hgrlib.pla: 0596: asm _hgrXorPlotC +_A021 ; _hgrXorPlotC() +; libsrc/apple/hgrlib.pla: 0597: LDA $1000,Y ; HBMASK + LDA $1000,Y ; HBMASK +; libsrc/apple/hgrlib.pla: 0598: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0599: LDA ESTKL+1,X ; HORIZ OFFSET + LDA ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0600: CMP #40 + CMP #40 +; libsrc/apple/hgrlib.pla: 0601: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0602: AND #$01 + AND #$01 +; libsrc/apple/hgrlib.pla: 0603: TAY + TAY +; libsrc/apple/hgrlib.pla: 0604: end +; libsrc/apple/hgrlib.pla: 0605: asm _hgrXorPlotD +_A022 ; _hgrXorPlotD() +; libsrc/apple/hgrlib.pla: 0606: LDA $2000,Y ; CURHCLR + LDA $2000,Y ; CURHCLR +; libsrc/apple/hgrlib.pla: 0607: LDY ESTKL+1,X ; HORIZ OFFSET + LDY ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0608: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0609: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0610: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0611: + INX ++ INX +; libsrc/apple/hgrlib.pla: 0612: INX + INX +; libsrc/apple/hgrlib.pla: 0613: RTS + RTS +; libsrc/apple/hgrlib.pla: 0614: end +; libsrc/apple/hgrlib.pla: 0615: //export def hgrOrPlot(x, y)#0 +; libsrc/apple/hgrlib.pla: 0616: // word pixptr +; libsrc/apple/hgrlib.pla: 0617: // byte ofst, pixofst, pmask +; libsrc/apple/hgrlib.pla: 0618: // +; libsrc/apple/hgrlib.pla: 0619: // ofst, pixofst = divmod7(x) +; libsrc/apple/hgrlib.pla: 0620: // pixptr = hgrscan[y] + drawbuff + ofst +; libsrc/apple/hgrlib.pla: 0621: // pmask = hbmask[pixofst] +; libsrc/apple/hgrlib.pla: 0622: // ^pixptr = ^pixptr | (curhclr.[ofst & 1] & pmask) +; libsrc/apple/hgrlib.pla: 0623: //end +; libsrc/apple/hgrlib.pla: 0624: export asm hgrOrPlot(x, y)#0 +_A023 ; hgrOrPlot() +; libsrc/apple/hgrlib.pla: 0625: LDY ESTKL+0,X ; Y COORD + LDY ESTKL+0,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0626: CPY #192 + CPY #192 +; libsrc/apple/hgrlib.pla: 0627: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0628: end +; libsrc/apple/hgrlib.pla: 0629: asm _hgrOrPlotA +_A024 ; _hgrOrPlotA() +; libsrc/apple/hgrlib.pla: 0630: LDA $8000,Y ; HGRSCANL + LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0631: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0632: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0633: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0634: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0635: INX + INX +; libsrc/apple/hgrlib.pla: 0636: end +; libsrc/apple/hgrlib.pla: 0637: asm _hgrOrPlotB +_A025 ; _hgrOrPlotB() +; libsrc/apple/hgrlib.pla: 0638: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0639: LDY ESTKL+0,X ; PIXEL OFFSET + LDY ESTKL+0,X ; PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0640: end +; libsrc/apple/hgrlib.pla: 0641: asm _hgrOrPlotC +_A026 ; _hgrOrPlotC() +; libsrc/apple/hgrlib.pla: 0642: LDA $1000,Y ; HBMASK + LDA $1000,Y ; HBMASK +; libsrc/apple/hgrlib.pla: 0643: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0644: LDA ESTKL+1,X ; HORIZ OFFSET + LDA ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0645: CMP #40 + CMP #40 +; libsrc/apple/hgrlib.pla: 0646: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0647: AND #$01 + AND #$01 +; libsrc/apple/hgrlib.pla: 0648: TAY + TAY +; libsrc/apple/hgrlib.pla: 0649: end +; libsrc/apple/hgrlib.pla: 0650: asm _hgrOrPlotD +_A027 ; _hgrOrPlotD() +; libsrc/apple/hgrlib.pla: 0651: LDA $2000,Y ; CURHCLR + LDA $2000,Y ; CURHCLR +; libsrc/apple/hgrlib.pla: 0652: LDY ESTKL+1,X ; HORIZ OFFSET + LDY ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0653: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0654: ORA (DST),Y + ORA (DST),Y +; libsrc/apple/hgrlib.pla: 0655: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0656: + INX ++ INX +; libsrc/apple/hgrlib.pla: 0657: INX + INX +; libsrc/apple/hgrlib.pla: 0658: RTS + RTS +; libsrc/apple/hgrlib.pla: 0659: end +; libsrc/apple/hgrlib.pla: 0660: //export def hgrHLin(x1, x2, y)#0 +; libsrc/apple/hgrlib.pla: 0661: // word pixptr, x +; libsrc/apple/hgrlib.pla: 0662: // byte lofst, lpixofst, lpmask +; libsrc/apple/hgrlib.pla: 0663: // byte rofst, rpixofst, rpmask +; libsrc/apple/hgrlib.pla: 0664: // +; libsrc/apple/hgrlib.pla: 0665: // if x1 == x2 +; libsrc/apple/hgrlib.pla: 0666: // hgrPlot(x1, y) +; libsrc/apple/hgrlib.pla: 0667: // else +; libsrc/apple/hgrlib.pla: 0668: // lofst, lpixofst = divmod7(x1) +; libsrc/apple/hgrlib.pla: 0669: // pixptr = hgrscan[y] + drawbuff + lofst +; libsrc/apple/hgrlib.pla: 0670: // rofst, rpixofst = divmod7(x2) +; libsrc/apple/hgrlib.pla: 0671: // lpmask = hlmask[lpixofst] +; libsrc/apple/hgrlib.pla: 0672: // rpmask = hrmask[rpixofst] +; libsrc/apple/hgrlib.pla: 0673: // if lofst == rofst +; libsrc/apple/hgrlib.pla: 0674: // lpmask = lpmask & rpmask +; libsrc/apple/hgrlib.pla: 0675: // ^pixptr = (^pixptr & ~lpmask) | (curhclr.[pixptr.0 & 1] & lpmask) +; libsrc/apple/hgrlib.pla: 0676: // else +; libsrc/apple/hgrlib.pla: 0677: // ^pixptr = (^pixptr & ~lpmask) | (curhclr.[pixptr.0 & 1] & lpmask) +; libsrc/apple/hgrlib.pla: 0678: // pixptr++ +; libsrc/apple/hgrlib.pla: 0679: // for x = lofst + 1 to rofst - 1 +; libsrc/apple/hgrlib.pla: 0680: // ^pixptr = curhclr.[pixptr.0 & 1] +; libsrc/apple/hgrlib.pla: 0681: // pixptr++ +; libsrc/apple/hgrlib.pla: 0682: // next +; libsrc/apple/hgrlib.pla: 0683: // ^pixptr = (^pixptr & ~rpmask) | (curhclr.[pixptr.0 & 1] & rpmask) +; libsrc/apple/hgrlib.pla: 0684: // fin +; libsrc/apple/hgrlib.pla: 0685: // fin +; libsrc/apple/hgrlib.pla: 0686: //end +; libsrc/apple/hgrlib.pla: 0687: export asm hgrHLin(x1, x2, y)#0 +_A028 ; hgrHLin() +; libsrc/apple/hgrlib.pla: 0688: LDA ESTKL+1 + LDA ESTKL+1 +; libsrc/apple/hgrlib.pla: 0689: CMP ESTKL+2 + CMP ESTKL+2 +; libsrc/apple/hgrlib.pla: 0690: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0691: LDA ESTKH+1 + LDA ESTKH+1 +; libsrc/apple/hgrlib.pla: 0692: CMP ESTKH+2 + CMP ESTKH+2 +; libsrc/apple/hgrlib.pla: 0693: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0694: end +; libsrc/apple/hgrlib.pla: 0695: asm _hgrHLinA +_A029 ; _hgrHLinA() +; libsrc/apple/hgrlib.pla: 0696: JSR $F000 + JSR $F000 +; libsrc/apple/hgrlib.pla: 0697: INX + INX +; libsrc/apple/hgrlib.pla: 0698: RTS + RTS +; libsrc/apple/hgrlib.pla: 0699: + LDY ESTKL+0,X ; Y COORD ++ LDY ESTKL+0,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0700: end +; libsrc/apple/hgrlib.pla: 0701: asm _hgrHLinB +_A030 ; _hgrHLinB() +; libsrc/apple/hgrlib.pla: 0702: LDA $8000,Y ; HGRSCANL + LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0703: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0704: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0705: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0706: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0707: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrlib.pla: 0708: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0709: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/hgrlib.pla: 0710: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0711: end +; libsrc/apple/hgrlib.pla: 0712: asm _hgrHLinC +_A031 ; _hgrHLinC() +; libsrc/apple/hgrlib.pla: 0713: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0714: LDY ESTKL+0,X ; RIGHT PIXEL OFFSET + LDY ESTKL+0,X ; RIGHT PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0715: end +; libsrc/apple/hgrlib.pla: 0716: asm _hgrHLinD +_A032 ; _hgrHLinD() +; libsrc/apple/hgrlib.pla: 0717: LDA $1000,Y ; HRMASK + LDA $1000,Y ; HRMASK +; libsrc/apple/hgrlib.pla: 0718: STA TMPH + STA TMPH +; libsrc/apple/hgrlib.pla: 0719: LDY ESTKL+1,X ; RIGHT HORIZ OFFSET + LDY ESTKL+1,X ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0720: STY IPY ; STEAL THIS ZP FOR A MOMENT + STY IPY ; STEAL THIS ZP FOR A MOMENT +; libsrc/apple/hgrlib.pla: 0721: INX + INX +; libsrc/apple/hgrlib.pla: 0722: INX + INX +; libsrc/apple/hgrlib.pla: 0723: INX + INX +; libsrc/apple/hgrlib.pla: 0724: end +; libsrc/apple/hgrlib.pla: 0725: asm _hgrHLinE +_A033 ; _hgrHLinE() +; libsrc/apple/hgrlib.pla: 0726: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0727: LDY ESTKL+0,X ; LEFT PIXEL OFFSET + LDY ESTKL+0,X ; LEFT PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0728: end +; libsrc/apple/hgrlib.pla: 0729: asm _hgrHLinF +_A034 ; _hgrHLinF() +; libsrc/apple/hgrlib.pla: 0730: LDA $1000,Y ; HLMASK + LDA $1000,Y ; HLMASK +; libsrc/apple/hgrlib.pla: 0731: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0732: LDY ESTKL+1,X ; LEFT HORIZ OFFSET + LDY ESTKL+1,X ; LEFT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0733: TYA + TYA +; libsrc/apple/hgrlib.pla: 0734: LSR + LSR +; libsrc/apple/hgrlib.pla: 0735: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0736: end +; libsrc/apple/hgrlib.pla: 0737: asm _hgrHLinG +_A035 ; _hgrHLinG() +; libsrc/apple/hgrlib.pla: 0738: LDA $2001 ; CURHCLRH + LDA $2001 ; CURHCLRH +; libsrc/apple/hgrlib.pla: 0739: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0740: LDA $2000 ; CURHCLRL + LDA $2000 ; CURHCLRL +; libsrc/apple/hgrlib.pla: 0741: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0742: BCC ++ + BCC ++ +; libsrc/apple/hgrlib.pla: 0743: + LDA $2000 ; CURHCLRL ++ LDA $2000 ; CURHCLRL +; libsrc/apple/hgrlib.pla: 0744: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0745: LDA $2001 ; CURHCLRH + LDA $2001 ; CURHCLRH +; libsrc/apple/hgrlib.pla: 0746: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0747: ++ CPY IPY ; RIGHT HORIZ OFFSET +++ CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0748: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0749: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0750: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0751: AND TMPH + AND TMPH +; libsrc/apple/hgrlib.pla: 0752: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0753: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0754: INX + INX +; libsrc/apple/hgrlib.pla: 0755: INX + INX +; libsrc/apple/hgrlib.pla: 0756: RTS + RTS +; libsrc/apple/hgrlib.pla: 0757: + EOR (DST),Y ++ EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0758: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0759: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0760: - STA (DST),Y +- STA (DST),Y +; libsrc/apple/hgrlib.pla: 0761: LDA SRCH + LDA SRCH +; libsrc/apple/hgrlib.pla: 0762: INY + INY +; libsrc/apple/hgrlib.pla: 0763: CPY IPY ; RIGHT HORIZ OFFSET + CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0764: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0765: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0766: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0767: INY + INY +; libsrc/apple/hgrlib.pla: 0768: CPY IPY ; RIGHT HORIZ OFFSET + CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0769: BCC - + BCC - +; libsrc/apple/hgrlib.pla: 0770: + EOR (DST),Y ++ EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0771: AND TMPH + AND TMPH +; libsrc/apple/hgrlib.pla: 0772: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0773: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0774: INX + INX +; libsrc/apple/hgrlib.pla: 0775: INX + INX +; libsrc/apple/hgrlib.pla: 0776: RTS + RTS +; libsrc/apple/hgrlib.pla: 0777: end +; libsrc/apple/hgrlib.pla: 0778: //export def hgrXorHLin(x1, x2, y)#0 +; libsrc/apple/hgrlib.pla: 0779: // word pixptr, x +; libsrc/apple/hgrlib.pla: 0780: // byte lofst, lpixofst, lpmask +; libsrc/apple/hgrlib.pla: 0781: // byte rofst, rpixofst, rpmask +; libsrc/apple/hgrlib.pla: 0782: // +; libsrc/apple/hgrlib.pla: 0783: // if x1 == x2 +; libsrc/apple/hgrlib.pla: 0784: // hgrPlot(x1, y) +; libsrc/apple/hgrlib.pla: 0785: // else +; libsrc/apple/hgrlib.pla: 0786: // lofst, lpixofst = divmod7(x1) +; libsrc/apple/hgrlib.pla: 0787: // pixptr = hgrscan[y] + drawbuff + lofst +; libsrc/apple/hgrlib.pla: 0788: // rofst, rpixofst = divmod7(x2) +; libsrc/apple/hgrlib.pla: 0789: // lpmask = hlmask[lpixofst] +; libsrc/apple/hgrlib.pla: 0790: // rpmask = hrmask[rpixofst] +; libsrc/apple/hgrlib.pla: 0791: // if lofst == rofst +; libsrc/apple/hgrlib.pla: 0792: // lpmask = lpmask & rpmask +; libsrc/apple/hgrlib.pla: 0793: // ^pixptr = ^pixptr ^ (curhclr.[pixptr.0 & 1] & lpmask) +; libsrc/apple/hgrlib.pla: 0794: // else +; libsrc/apple/hgrlib.pla: 0795: // ^pixptr = ^pixptr ^ (curhclr.[pixptr.0 & 1] & lpmask) +; libsrc/apple/hgrlib.pla: 0796: // pixptr++ +; libsrc/apple/hgrlib.pla: 0797: // for x = lofst + 1 to rofst - 1 +; libsrc/apple/hgrlib.pla: 0798: // ^pixptr = ^pixptr ^ curhclr.[pixptr.0 & 1] +; libsrc/apple/hgrlib.pla: 0799: // pixptr++ +; libsrc/apple/hgrlib.pla: 0800: // next +; libsrc/apple/hgrlib.pla: 0801: // ^pixptr = ^pixptr ^ (curhclr.[pixptr.0 & 1] & rpmask) +; libsrc/apple/hgrlib.pla: 0802: // fin +; libsrc/apple/hgrlib.pla: 0803: // fin +; libsrc/apple/hgrlib.pla: 0804: //end +; libsrc/apple/hgrlib.pla: 0805: export asm hgrXorHLin(x1, x2, y)#0 +_A036 ; hgrXorHLin() +; libsrc/apple/hgrlib.pla: 0806: LDA ESTKL+1 + LDA ESTKL+1 +; libsrc/apple/hgrlib.pla: 0807: CMP ESTKL+2 + CMP ESTKL+2 +; libsrc/apple/hgrlib.pla: 0808: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0809: LDA ESTKH+1 + LDA ESTKH+1 +; libsrc/apple/hgrlib.pla: 0810: CMP ESTKH+2 + CMP ESTKH+2 +; libsrc/apple/hgrlib.pla: 0811: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0812: end +; libsrc/apple/hgrlib.pla: 0813: asm _hgrXHLinA +_A037 ; _hgrXHLinA() +; libsrc/apple/hgrlib.pla: 0814: JSR $F000 + JSR $F000 +; libsrc/apple/hgrlib.pla: 0815: INX + INX +; libsrc/apple/hgrlib.pla: 0816: RTS + RTS +; libsrc/apple/hgrlib.pla: 0817: + LDY ESTKL+0,X ; Y COORD ++ LDY ESTKL+0,X ; Y COORD +; libsrc/apple/hgrlib.pla: 0818: end +; libsrc/apple/hgrlib.pla: 0819: asm _hgrXHLinB +_A038 ; _hgrXHLinB() +; libsrc/apple/hgrlib.pla: 0820: LDA $8000,Y ; HGRSCANL + LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0821: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0822: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0823: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0824: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0825: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrlib.pla: 0826: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 0827: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/hgrlib.pla: 0828: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 0829: end +; libsrc/apple/hgrlib.pla: 0830: asm _hgrXHLinC +_A039 ; _hgrXHLinC() +; libsrc/apple/hgrlib.pla: 0831: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0832: LDY ESTKL+0,X ; RIGHT PIXEL OFFSET + LDY ESTKL+0,X ; RIGHT PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0833: end +; libsrc/apple/hgrlib.pla: 0834: asm _hgrXHLinD +_A040 ; _hgrXHLinD() +; libsrc/apple/hgrlib.pla: 0835: LDA $1000,Y ; HRMASK + LDA $1000,Y ; HRMASK +; libsrc/apple/hgrlib.pla: 0836: STA TMPH + STA TMPH +; libsrc/apple/hgrlib.pla: 0837: LDY ESTKL+1,X ; RIGHT HORIZ OFFSET + LDY ESTKL+1,X ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0838: STY IPY ; STEAL THIS ZP FOR A MOMENT + STY IPY ; STEAL THIS ZP FOR A MOMENT +; libsrc/apple/hgrlib.pla: 0839: INX + INX +; libsrc/apple/hgrlib.pla: 0840: INX + INX +; libsrc/apple/hgrlib.pla: 0841: INX + INX +; libsrc/apple/hgrlib.pla: 0842: end +; libsrc/apple/hgrlib.pla: 0843: asm _hgrXHLinE +_A041 ; _hgrXHLinE() +; libsrc/apple/hgrlib.pla: 0844: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0845: LDY ESTKL+0,X ; LEFT PIXEL OFFSET + LDY ESTKL+0,X ; LEFT PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0846: end +; libsrc/apple/hgrlib.pla: 0847: asm _hgrXHLinF +_A042 ; _hgrXHLinF() +; libsrc/apple/hgrlib.pla: 0848: LDA $1000,Y ; HLMASK + LDA $1000,Y ; HLMASK +; libsrc/apple/hgrlib.pla: 0849: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0850: LDY ESTKL+1,X ; LEFT HORIZ OFFSET + LDY ESTKL+1,X ; LEFT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0851: TYA + TYA +; libsrc/apple/hgrlib.pla: 0852: LSR + LSR +; libsrc/apple/hgrlib.pla: 0853: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0854: end +; libsrc/apple/hgrlib.pla: 0855: asm _hgrXHLinG +_A043 ; _hgrXHLinG() +; libsrc/apple/hgrlib.pla: 0856: LDA $2001 ; CURHCLRH + LDA $2001 ; CURHCLRH +; libsrc/apple/hgrlib.pla: 0857: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0858: LDA $2000 ; CURHCLRH + LDA $2000 ; CURHCLRH +; libsrc/apple/hgrlib.pla: 0859: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0860: BCC ++ + BCC ++ +; libsrc/apple/hgrlib.pla: 0861: + LDA $2000 ; CURHCLRL ++ LDA $2000 ; CURHCLRL +; libsrc/apple/hgrlib.pla: 0862: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 0863: LDA $2001 ; CURHCLRH + LDA $2001 ; CURHCLRH +; libsrc/apple/hgrlib.pla: 0864: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 0865: ++ CPY IPY ; RIGHT HORIZ OFFSET +++ CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0866: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 0867: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0868: AND TMPH + AND TMPH +; libsrc/apple/hgrlib.pla: 0869: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0870: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0871: INX + INX +; libsrc/apple/hgrlib.pla: 0872: INX + INX +; libsrc/apple/hgrlib.pla: 0873: RTS + RTS +; libsrc/apple/hgrlib.pla: 0874: + AND TMPL ++ AND TMPL +; libsrc/apple/hgrlib.pla: 0875: - EOR (DST),Y +- EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0876: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0877: LDA SRCH + LDA SRCH +; libsrc/apple/hgrlib.pla: 0878: INY + INY +; libsrc/apple/hgrlib.pla: 0879: CPY IPY ; RIGHT HORIZ OFFSET + CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0880: BCS + + BCS + +; libsrc/apple/hgrlib.pla: 0881: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0882: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0883: LDA SRCL + LDA SRCL +; libsrc/apple/hgrlib.pla: 0884: INY + INY +; libsrc/apple/hgrlib.pla: 0885: CPY IPY ; RIGHT HORIZ OFFSET + CPY IPY ; RIGHT HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0886: BCC - + BCC - +; libsrc/apple/hgrlib.pla: 0887: + AND TMPH ++ AND TMPH +; libsrc/apple/hgrlib.pla: 0888: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 0889: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0890: INX + INX +; libsrc/apple/hgrlib.pla: 0891: INX + INX +; libsrc/apple/hgrlib.pla: 0892: RTS + RTS +; libsrc/apple/hgrlib.pla: 0893: end +; libsrc/apple/hgrlib.pla: 0894: //export def hgrVlin(y1, y2, x)#0 +; libsrc/apple/hgrlib.pla: 0895: // word pixptr, y, ofst +; libsrc/apple/hgrlib.pla: 0896: // byte pixofst, pmask, cmask +; libsrc/apple/hgrlib.pla: 0897: // +; libsrc/apple/hgrlib.pla: 0898: // if y1 == y2 +; libsrc/apple/hgrlib.pla: 0899: // hgrPlot(x, y1) +; libsrc/apple/hgrlib.pla: 0900: // else +; libsrc/apple/hgrlib.pla: 0901: // ofst, pixofst = divmod7(x) +; libsrc/apple/hgrlib.pla: 0902: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0903: // pmask = hbmask[pixofst] +; libsrc/apple/hgrlib.pla: 0904: // cmask = curhclr.[ofst & 1] & pmask +; libsrc/apple/hgrlib.pla: 0905: // pmask = ~pmask +; libsrc/apple/hgrlib.pla: 0906: // for y = y1 to y2 +; libsrc/apple/hgrlib.pla: 0907: // pixptr = hgrscan[y] + ofst +; libsrc/apple/hgrlib.pla: 0908: // ^pixptr = (^pixptr & pmask) | cmask +; libsrc/apple/hgrlib.pla: 0909: // next +; libsrc/apple/hgrlib.pla: 0910: // fin +; libsrc/apple/hgrlib.pla: 0911: //end +; libsrc/apple/hgrlib.pla: 0912: export asm hgrVlin(y1, y2, x)#0 +_A044 ; hgrVlin() +; libsrc/apple/hgrlib.pla: 0913: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0914: LDY ESTKL+0,X ; PIXEL OFFSET + LDY ESTKL+0,X ; PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0915: end +; libsrc/apple/hgrlib.pla: 0916: asm _hgrVLinA +_A045 ; _hgrVLinA() +; libsrc/apple/hgrlib.pla: 0917: LDA $1000,Y ; HBMASK + LDA $1000,Y ; HBMASK +; libsrc/apple/hgrlib.pla: 0918: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0919: EOR #$FF + EOR #$FF +; libsrc/apple/hgrlib.pla: 0920: STA TMPH + STA TMPH +; libsrc/apple/hgrlib.pla: 0921: LDA ESTKL+1,X ; HORIZ OFFSET + LDA ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0922: AND #$01 + AND #$01 +; libsrc/apple/hgrlib.pla: 0923: TAY + TAY +; libsrc/apple/hgrlib.pla: 0924: end +; libsrc/apple/hgrlib.pla: 0925: asm _hgrVLinB +_A046 ; _hgrVLinB() +; libsrc/apple/hgrlib.pla: 0926: LDA $2000,Y ; CURHCLR + LDA $2000,Y ; CURHCLR +; libsrc/apple/hgrlib.pla: 0927: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0928: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0929: LDY ESTKL+3,X ; Y1 COORD + LDY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 0930: end +; libsrc/apple/hgrlib.pla: 0931: asm _hgrVLinC +_A047 ; _hgrVLinC() +; libsrc/apple/hgrlib.pla: 0932: - LDA $8000,Y ; HGRSCANL +- LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0933: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0934: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0935: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0936: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0937: LDY ESTKL+1,X ; HORIZ OFFSET + LDY ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0938: LDA (DST),Y + LDA (DST),Y +; libsrc/apple/hgrlib.pla: 0939: AND TMPH + AND TMPH +; libsrc/apple/hgrlib.pla: 0940: ORA TMPL + ORA TMPL +; libsrc/apple/hgrlib.pla: 0941: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 0942: LDY ESTKL+3,X ; Y1 COORD + LDY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 0943: TYA + TYA +; libsrc/apple/hgrlib.pla: 0944: INY + INY +; libsrc/apple/hgrlib.pla: 0945: STY ESTKL+3,X ; Y1 COORD + STY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 0946: CMP ESTKL+2,X ; Y2 COORD + CMP ESTKL+2,X ; Y2 COORD +; libsrc/apple/hgrlib.pla: 0947: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 0948: INX + INX +; libsrc/apple/hgrlib.pla: 0949: INX + INX +; libsrc/apple/hgrlib.pla: 0950: INX + INX +; libsrc/apple/hgrlib.pla: 0951: INX + INX +; libsrc/apple/hgrlib.pla: 0952: RTS + RTS +; libsrc/apple/hgrlib.pla: 0953: end +; libsrc/apple/hgrlib.pla: 0954: //export def hgrXVlin(y1, y2, x)#0 +; libsrc/apple/hgrlib.pla: 0955: // word pixptr, y, ofst +; libsrc/apple/hgrlib.pla: 0956: // byte pixofst, pmask, cmask +; libsrc/apple/hgrlib.pla: 0957: // +; libsrc/apple/hgrlib.pla: 0958: // if y1 == y2 +; libsrc/apple/hgrlib.pla: 0959: // hgrXorPlot(x, y1) +; libsrc/apple/hgrlib.pla: 0960: // else +; libsrc/apple/hgrlib.pla: 0961: // ofst, pixofst = divmod7(x) +; libsrc/apple/hgrlib.pla: 0962: // ofst = ofst + drawbuff +; libsrc/apple/hgrlib.pla: 0963: // pmask = hbmask[pixofst] +; libsrc/apple/hgrlib.pla: 0964: // cmask = curhclr.[ofst & 1] & pmask +; libsrc/apple/hgrlib.pla: 0965: // pmask = ~pmask +; libsrc/apple/hgrlib.pla: 0966: // for y = y1 to y2 +; libsrc/apple/hgrlib.pla: 0967: // pixptr = hgrscan[y] + ofst +; libsrc/apple/hgrlib.pla: 0968: // ^pixptr = ^pixptr ^ cmask +; libsrc/apple/hgrlib.pla: 0969: // next +; libsrc/apple/hgrlib.pla: 0970: // fin +; libsrc/apple/hgrlib.pla: 0971: //end +; libsrc/apple/hgrlib.pla: 0972: export asm hgrXorVlin(y1, y2, x)#0 +_A048 ; hgrXorVlin() +; libsrc/apple/hgrlib.pla: 0973: JSR 1000 ; DIVMOD7 + JSR 1000 ; DIVMOD7 +; libsrc/apple/hgrlib.pla: 0974: LDY ESTKL+0,X ; PIXEL OFFSET + LDY ESTKL+0,X ; PIXEL OFFSET +; libsrc/apple/hgrlib.pla: 0975: end +; libsrc/apple/hgrlib.pla: 0976: asm _hgrXVLinA +_A049 ; _hgrXVLinA() +; libsrc/apple/hgrlib.pla: 0977: LDA $1000,Y ; HBMASK + LDA $1000,Y ; HBMASK +; libsrc/apple/hgrlib.pla: 0978: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0979: EOR #$FF + EOR #$FF +; libsrc/apple/hgrlib.pla: 0980: STA TMPH + STA TMPH +; libsrc/apple/hgrlib.pla: 0981: LDA ESTKL+1,X ; HORIZ OFFSET + LDA ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0982: AND #$01 + AND #$01 +; libsrc/apple/hgrlib.pla: 0983: TAY + TAY +; libsrc/apple/hgrlib.pla: 0984: end +; libsrc/apple/hgrlib.pla: 0985: asm _hgrXVLinB +_A050 ; _hgrXVLinB() +; libsrc/apple/hgrlib.pla: 0986: LDA $2000,Y ; CURHCLR + LDA $2000,Y ; CURHCLR +; libsrc/apple/hgrlib.pla: 0987: AND TMPL + AND TMPL +; libsrc/apple/hgrlib.pla: 0988: STA TMPL + STA TMPL +; libsrc/apple/hgrlib.pla: 0989: LDY ESTKL+3,X ; Y1 COORD + LDY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 0990: end +; libsrc/apple/hgrlib.pla: 0991: asm _hgrXVLinC +_A051 ; _hgrXVLinC() +; libsrc/apple/hgrlib.pla: 0992: - LDA $8000,Y ; HGRSCANL +- LDA $8000,Y ; HGRSCANL +; libsrc/apple/hgrlib.pla: 0993: STA DSTL + STA DSTL +; libsrc/apple/hgrlib.pla: 0994: LDA $1000 ; DRAWBUFFH + LDA $1000 ; DRAWBUFFH +; libsrc/apple/hgrlib.pla: 0995: ORA $9000,Y ; HGRSCANH + ORA $9000,Y ; HGRSCANH +; libsrc/apple/hgrlib.pla: 0996: STA DSTH + STA DSTH +; libsrc/apple/hgrlib.pla: 0997: LDY ESTKL+1,X ; HORIZ OFFSET + LDY ESTKL+1,X ; HORIZ OFFSET +; libsrc/apple/hgrlib.pla: 0998: LDA TMPL + LDA TMPL +; libsrc/apple/hgrlib.pla: 0999: EOR (DST),Y + EOR (DST),Y +; libsrc/apple/hgrlib.pla: 1000: STA (DST),Y + STA (DST),Y +; libsrc/apple/hgrlib.pla: 1001: LDY ESTKL+3,X ; Y1 COORD + LDY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 1002: TYA + TYA +; libsrc/apple/hgrlib.pla: 1003: INY + INY +; libsrc/apple/hgrlib.pla: 1004: STY ESTKL+3,X ; Y1 COORD + STY ESTKL+3,X ; Y1 COORD +; libsrc/apple/hgrlib.pla: 1005: CMP ESTKL+2,X ; Y2 COORD + CMP ESTKL+2,X ; Y2 COORD +; libsrc/apple/hgrlib.pla: 1006: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 1007: INX + INX +; libsrc/apple/hgrlib.pla: 1008: INX + INX +; libsrc/apple/hgrlib.pla: 1009: INX + INX +; libsrc/apple/hgrlib.pla: 1010: INX + INX +; libsrc/apple/hgrlib.pla: 1011: RTS + RTS +; libsrc/apple/hgrlib.pla: 1012: end +; libsrc/apple/hgrlib.pla: 1013: // +; libsrc/apple/hgrlib.pla: 1014: // Masked BLT scanline of pixmap +; libsrc/apple/hgrlib.pla: 1015: // +; libsrc/apple/hgrlib.pla: 1016: asm scanBLT(x, y, w, srcptr)#0 +_A052 ; scanBLT() +; libsrc/apple/hgrlib.pla: 1017: LDA ESTKL+0,X ; SRC PTR + LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrlib.pla: 1018: STA SRCL + STA SRCL +; libsrc/apple/hgrlib.pla: 1019: LDA ESTKH+0,X + LDA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 1020: STA SRCH + STA SRCH +; libsrc/apple/hgrlib.pla: 1021: LDA #$00 + LDA #$00 +; libsrc/apple/hgrlib.pla: 1022: - PHA +- PHA +; libsrc/apple/hgrlib.pla: 1023: LSR + LSR +; libsrc/apple/hgrlib.pla: 1024: TAY + TAY +; libsrc/apple/hgrlib.pla: 1025: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 1026: LSR + LSR +; libsrc/apple/hgrlib.pla: 1027: LSR + LSR +; libsrc/apple/hgrlib.pla: 1028: LSR + LSR +; libsrc/apple/hgrlib.pla: 1029: LSR + LSR +; libsrc/apple/hgrlib.pla: 1030: PHA + PHA +; libsrc/apple/hgrlib.pla: 1031: DEX + DEX +; libsrc/apple/hgrlib.pla: 1032: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 1033: end +; libsrc/apple/hgrlib.pla: 1034: asm _scanBLTA +_A053 ; _scanBLTA() +; libsrc/apple/hgrlib.pla: 1035: JSR $C000 ; HCOLOR + JSR $C000 ; HCOLOR +; libsrc/apple/hgrlib.pla: 1036: DEX + DEX +; libsrc/apple/hgrlib.pla: 1037: DEX + DEX +; libsrc/apple/hgrlib.pla: 1038: LDA ESTKL+5,X ; X COORDL + LDA ESTKL+5,X ; X COORDL +; libsrc/apple/hgrlib.pla: 1039: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrlib.pla: 1040: LDA ESTKH+5,X ; X COORDH + LDA ESTKH+5,X ; X COORDH +; libsrc/apple/hgrlib.pla: 1041: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/apple/hgrlib.pla: 1042: LDA ESTKL+4,X ; Y COORDL + LDA ESTKL+4,X ; Y COORDL +; libsrc/apple/hgrlib.pla: 1043: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 1044: LDA ESTKH+4,X ; Y COORDH + LDA ESTKH+4,X ; Y COORDH +; libsrc/apple/hgrlib.pla: 1045: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 1046: PLA + PLA +; libsrc/apple/hgrlib.pla: 1047: AND #$08 + AND #$08 +; libsrc/apple/hgrlib.pla: 1048: BEQ + + BEQ + +; libsrc/apple/hgrlib.pla: 1049: end +; libsrc/apple/hgrlib.pla: 1050: asm _scanBLTB +_A054 ; _scanBLTB() +; libsrc/apple/hgrlib.pla: 1051: JSR $D000 ; HPLOT + JSR $D000 ; HPLOT +; libsrc/apple/hgrlib.pla: 1052: BEQ ++ + BEQ ++ +; libsrc/apple/hgrlib.pla: 1053: BNE ++ + BNE ++ +; libsrc/apple/hgrlib.pla: 1054: + JSR $E000 ; HPLOTOR ++ JSR $E000 ; HPLOTOR +; libsrc/apple/hgrlib.pla: 1055: ++ INC ESTKL+3,X ; X COORDL +++ INC ESTKL+3,X ; X COORDL +; libsrc/apple/hgrlib.pla: 1056: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 1057: INC ESTKH+3,X ; X COORDH + INC ESTKH+3,X ; X COORDH +; libsrc/apple/hgrlib.pla: 1058: + PLA ++ PLA +; libsrc/apple/hgrlib.pla: 1059: CLC + CLC +; libsrc/apple/hgrlib.pla: 1060: ADC #$01 + ADC #$01 +; libsrc/apple/hgrlib.pla: 1061: CMP ESTKL+1,X ; WIDTH + CMP ESTKL+1,X ; WIDTH +; libsrc/apple/hgrlib.pla: 1062: BEQ BLTDONE + BEQ BLTDONE +; libsrc/apple/hgrlib.pla: 1063: PHA + PHA +; libsrc/apple/hgrlib.pla: 1064: LSR + LSR +; libsrc/apple/hgrlib.pla: 1065: TAY + TAY +; libsrc/apple/hgrlib.pla: 1066: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrlib.pla: 1067: PHA + PHA +; libsrc/apple/hgrlib.pla: 1068: DEX + DEX +; libsrc/apple/hgrlib.pla: 1069: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 1070: end +; libsrc/apple/hgrlib.pla: 1071: asm _scanBLTC +_A055 ; _scanBLTC() +; libsrc/apple/hgrlib.pla: 1072: JSR $C000 ; HCOLOR + JSR $C000 ; HCOLOR +; libsrc/apple/hgrlib.pla: 1073: DEX + DEX +; libsrc/apple/hgrlib.pla: 1074: DEX + DEX +; libsrc/apple/hgrlib.pla: 1075: LDA ESTKL+5,X ; X COORDL + LDA ESTKL+5,X ; X COORDL +; libsrc/apple/hgrlib.pla: 1076: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrlib.pla: 1077: LDA ESTKH+5,X ; X COORDH + LDA ESTKH+5,X ; X COORDH +; libsrc/apple/hgrlib.pla: 1078: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/apple/hgrlib.pla: 1079: LDA ESTKL+4,X ; Y COORDL + LDA ESTKL+4,X ; Y COORDL +; libsrc/apple/hgrlib.pla: 1080: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrlib.pla: 1081: LDA ESTKH+4,X ; Y COORDH + LDA ESTKH+4,X ; Y COORDH +; libsrc/apple/hgrlib.pla: 1082: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrlib.pla: 1083: PLA + PLA +; libsrc/apple/hgrlib.pla: 1084: AND #$08 + AND #$08 +; libsrc/apple/hgrlib.pla: 1085: BEQ + + BEQ + +; libsrc/apple/hgrlib.pla: 1086: end +; libsrc/apple/hgrlib.pla: 1087: asm _scanBLTD +_A056 ; _scanBLTD() +; libsrc/apple/hgrlib.pla: 1088: JSR $D000 ; HPLOT + JSR $D000 ; HPLOT +; libsrc/apple/hgrlib.pla: 1089: BEQ ++ + BEQ ++ +; libsrc/apple/hgrlib.pla: 1090: BNE ++ + BNE ++ +; libsrc/apple/hgrlib.pla: 1091: + JSR $E000 ; HPLOTOR ++ JSR $E000 ; HPLOTOR +; libsrc/apple/hgrlib.pla: 1092: ++ INC ESTKL+3,X ; X COORDL +++ INC ESTKL+3,X ; X COORDL +; libsrc/apple/hgrlib.pla: 1093: BNE + + BNE + +; libsrc/apple/hgrlib.pla: 1094: INC ESTKH+3,X ; X COORDH + INC ESTKH+3,X ; X COORDH +; libsrc/apple/hgrlib.pla: 1095: + PLA ++ PLA +; libsrc/apple/hgrlib.pla: 1096: CLC + CLC +; libsrc/apple/hgrlib.pla: 1097: ADC #$01 + ADC #$01 +; libsrc/apple/hgrlib.pla: 1098: CMP ESTKL+1,X ; WIDTH + CMP ESTKL+1,X ; WIDTH +; libsrc/apple/hgrlib.pla: 1099: BNE - + BNE - +; libsrc/apple/hgrlib.pla: 1100: BLTDONE INX +BLTDONE INX +; libsrc/apple/hgrlib.pla: 1101: INX + INX +; libsrc/apple/hgrlib.pla: 1102: INX + INX +; libsrc/apple/hgrlib.pla: 1103: INX + INX +; libsrc/apple/hgrlib.pla: 1104: RTS + RTS +; libsrc/apple/hgrlib.pla: 1105: end +; libsrc/apple/hgrlib.pla: 1106: export def hgrRect(x1, y1, x2, y2)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C000 ; hgrRect() +; libsrc/apple/hgrlib.pla: 1107: word y + ; y -> [8] +; libsrc/apple/hgrlib.pla: 1108: +; libsrc/apple/hgrlib.pla: 1109: if x1 == x2 + !BYTE $58,$0A,$04 ; ENTER 10,4 +; libsrc/apple/hgrlib.pla: 1110: hgrVLin(y1, y2, x1) +; libsrc/apple/hgrlib.pla: 1111: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $24 ; BRNE _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A044 +_F000 !WORD _A044 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B001 +; libsrc/apple/hgrlib.pla: 1112: for y = y1 to y2 + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $A0 ; BRGT _B003 + !WORD _B003-* +_B004 + !BYTE $6E,$08 ; DLW [8] +; libsrc/apple/hgrlib.pla: 1113: hgrHLin(x1, x2, y) +; libsrc/apple/hgrlib.pla: 1114: next + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A028 +_F001 !WORD _A028 +_B005 + !BYTE $A4 ; INCBRLE _B004 + !WORD _B004-* +_B003 + !BYTE $76,$08 ; SLW [8] + !BYTE $30 ; DROP +; libsrc/apple/hgrlib.pla: 1115: fin +_B002 +; libsrc/apple/hgrlib.pla: 1116: end + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/hgrlib.pla: 1117: export def hgrXorRect(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C001 ; hgrXorRect() +; libsrc/apple/hgrlib.pla: 1118: word y + ; y -> [8] +; libsrc/apple/hgrlib.pla: 1119: +; libsrc/apple/hgrlib.pla: 1120: if x1 == x2 + !BYTE $58,$0A,$04 ; ENTER 10,4 +; libsrc/apple/hgrlib.pla: 1121: hgrXorVLin(y1, y2, x1) +; libsrc/apple/hgrlib.pla: 1122: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $24 ; BRNE _B006 + !WORD _B006-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A048 +_F002 !WORD _A048 + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 +; libsrc/apple/hgrlib.pla: 1123: for y = y1 to y2 + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $A0 ; BRGT _B008 + !WORD _B008-* +_B009 + !BYTE $6E,$08 ; DLW [8] +; libsrc/apple/hgrlib.pla: 1124: hgrXorHLin(x1, x2, y) +; libsrc/apple/hgrlib.pla: 1125: next + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A036 +_F003 !WORD _A036 +_B010 + !BYTE $A4 ; INCBRLE _B009 + !WORD _B009-* +_B008 + !BYTE $76,$08 ; SLW [8] + !BYTE $30 ; DROP +; libsrc/apple/hgrlib.pla: 1126: fin +_B007 +; libsrc/apple/hgrlib.pla: 1127: end + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/apple/hgrlib.pla: 1128: export def hgrBLT(x, y, w, h, srcptr)#0 + ; x -> [0] + ; y -> [2] + ; w -> [4] + ; h -> [6] + ; srcptr -> [8] +_C002 ; hgrBLT() +; libsrc/apple/hgrlib.pla: 1129: word i, j + ; i -> [10] + ; j -> [12] +; libsrc/apple/hgrlib.pla: 1130: word saveclr + ; saveclr -> [14] +; libsrc/apple/hgrlib.pla: 1131: byte c + ; c -> [16] +; libsrc/apple/hgrlib.pla: 1132: +; libsrc/apple/hgrlib.pla: 1133: saveclr = curhclr + !BYTE $58,$11,$05 ; ENTER 17,5 +; libsrc/apple/hgrlib.pla: 1134: for j = y to y + h - 1 + !BYTE $6A ; LAW _D035+0 +_F004 !WORD _D035+0 + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $A0 ; BRGT _B011 + !WORD _B011-* +_B012 + !BYTE $6E,$0C ; DLW [12] +; libsrc/apple/hgrlib.pla: 1135: scanBLT(x, j, w, srcptr) +; libsrc/apple/hgrlib.pla: 1136: // for i = 0 to w - 1 +; libsrc/apple/hgrlib.pla: 1137: // c = srcptr->[i >> 1] +; libsrc/apple/hgrlib.pla: 1138: // if i & 1 +; libsrc/apple/hgrlib.pla: 1139: // hgrColor(c) +; libsrc/apple/hgrlib.pla: 1140: // if c & $08 +; libsrc/apple/hgrlib.pla: 1141: // hgrOrPlot(x + i, j) +; libsrc/apple/hgrlib.pla: 1142: // else +; libsrc/apple/hgrlib.pla: 1143: // hgrPlot(x + i, j) +; libsrc/apple/hgrlib.pla: 1144: // fin +; libsrc/apple/hgrlib.pla: 1145: // else +; libsrc/apple/hgrlib.pla: 1146: // hgrColor(c >> 4) +; libsrc/apple/hgrlib.pla: 1147: // if c & $80 +; libsrc/apple/hgrlib.pla: 1148: // hgrXorPlot(x + i, j) +; libsrc/apple/hgrlib.pla: 1149: // else +; libsrc/apple/hgrlib.pla: 1150: // hgrPlot(x + i, j) +; libsrc/apple/hgrlib.pla: 1151: // fin +; libsrc/apple/hgrlib.pla: 1152: // fin +; libsrc/apple/hgrlib.pla: 1153: // next +; libsrc/apple/hgrlib.pla: 1154: srcptr = srcptr + (w + 1) / 2 +; libsrc/apple/hgrlib.pla: 1155: next + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A052 +_F005 !WORD _A052 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] +_B013 + !BYTE $A4 ; INCBRLE _B012 + !WORD _B012-* +_B011 + !BYTE $76,$0C ; SLW [12] + !BYTE $30 ; DROP +; libsrc/apple/hgrlib.pla: 1156: curhclr = saveclr +; libsrc/apple/hgrlib.pla: 1157: end + !BYTE $66,$0E ; LLW [14] + !BYTE $7A ; SAW _D035+0 +_F006 !WORD _D035+0 + !BYTE $5A,$11 ; LEAVE 17 +; libsrc/apple/hgrlib.pla: 1158: export def hgrMode(mode)#1 + ; mode -> [0] +_C003 ; hgrMode() +; libsrc/apple/hgrlib.pla: 1159: if mode + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrlib.pla: 1160: // +; libsrc/apple/hgrlib.pla: 1161: // Set HGR mode +; libsrc/apple/hgrlib.pla: 1162: // +; libsrc/apple/hgrlib.pla: 1163: memset(hgr1, 0, $2000) // Clear HGR page 1 +; libsrc/apple/hgrlib.pla: 1164: ^showpage1 +; libsrc/apple/hgrlib.pla: 1165: ^showfull +; libsrc/apple/hgrlib.pla: 1166: ^showhires +; libsrc/apple/hgrlib.pla: 1167: ^showgraphics +; libsrc/apple/hgrlib.pla: 1168: drawpage = 1 +; libsrc/apple/hgrlib.pla: 1169: drawbuff = hgrbuff[1] +; libsrc/apple/hgrlib.pla: 1170: return 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X017 +_F007 !WORD 0 + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $68,$52,$C0 ; LAB 49234 + !BYTE $30 ; DROP + !BYTE $68,$57,$C0 ; LAB 49239 + !BYTE $30 ; DROP + !BYTE $68,$50,$C0 ; LAB 49232 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D036+0 +_F008 !WORD _D036+0 + !BYTE $6A ; LAW _D028+2 +_F009 !WORD _D028+2 + !BYTE $7A ; SAW _D037+0 +_F010 !WORD _D037+0 + !BYTE $02 ; CN 1 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrlib.pla: 1171: fin +_B014 +_B015 +; libsrc/apple/hgrlib.pla: 1172: // +; libsrc/apple/hgrlib.pla: 1173: // Show text mode +; libsrc/apple/hgrlib.pla: 1174: // +; libsrc/apple/hgrlib.pla: 1175: ^showpage1 +; libsrc/apple/hgrlib.pla: 1176: ^showtext +; libsrc/apple/hgrlib.pla: 1177: return 0 + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $68,$51,$C0 ; LAB 49233 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrlib.pla: 1178: end +; libsrc/apple/hgrlib.pla: 1179: export def hgrClear#0 +_C004 ; hgrClear() +; libsrc/apple/hgrlib.pla: 1180: memset(drawbuff, curhclr, drawbuff) // Clear current HGR page +; libsrc/apple/hgrlib.pla: 1181: end + !BYTE $6A ; LAW _D037+0 +_F011 !WORD _D037+0 + !BYTE $6A ; LAW _D035+0 +_F012 !WORD _D035+0 + !BYTE $6A ; LAW _D037+0 +_F013 !WORD _D037+0 + !BYTE $54 ; CALL _X017 +_F014 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/hgrlib.pla: 1182: // +; libsrc/apple/hgrlib.pla: 1183: // Set display page, return other page +; libsrc/apple/hgrlib.pla: 1184: // +; libsrc/apple/hgrlib.pla: 1185: export def hgrShow(page)#1 + ; page -> [0] +_C005 ; hgrShow() +; libsrc/apple/hgrlib.pla: 1186: page = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrlib.pla: 1187: ^(showpage1 + page) +; libsrc/apple/hgrlib.pla: 1188: return page ^ 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $76,$00 ; SLW [0] + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrlib.pla: 1189: end +; libsrc/apple/hgrlib.pla: 1190: export def hgrSwap#1 +_C006 ; hgrSwap() +; libsrc/apple/hgrlib.pla: 1191: ^(showpage1 + drawpage) +; libsrc/apple/hgrlib.pla: 1192: drawpage = drawpage ^ 1 +; libsrc/apple/hgrlib.pla: 1193: drawbuff = hgrbuff[drawpage] +; libsrc/apple/hgrlib.pla: 1194: return drawpage + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B4 ; ADDAB _D036+0 +_F015 !WORD _D036+0 + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D036+0 +_F016 !WORD _D036+0 + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D036+0 +_F017 !WORD _D036+0 + !BYTE $26 ; LA _D028+0 +_F018 !WORD _D028+0 + !BYTE $BC ; IDXAB _D036+0 +_F019 !WORD _D036+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D037+0 +_F020 !WORD _D037+0 + !BYTE $68 ; LAB _D036+0 +_F021 !WORD _D036+0 + !BYTE $5C ; RET +; libsrc/apple/hgrlib.pla: 1195: end +; libsrc/apple/hgrlib.pla: 1196: export def hgrDrawBuf(page)#1 + ; page -> [0] +_C007 ; hgrDrawBuf() +; libsrc/apple/hgrlib.pla: 1197: drawpage = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrlib.pla: 1198: drawbuff = hgrbuff[drawpage] +; libsrc/apple/hgrlib.pla: 1199: return drawpage + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $78 ; SAB _D036+0 +_F022 !WORD _D036+0 + !BYTE $26 ; LA _D028+0 +_F023 !WORD _D028+0 + !BYTE $BC ; IDXAB _D036+0 +_F024 !WORD _D036+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D037+0 +_F025 !WORD _D037+0 + !BYTE $68 ; LAB _D036+0 +_F026 !WORD _D036+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrlib.pla: 1200: end +; libsrc/apple/hgrlib.pla: 1201: // +; libsrc/apple/hgrlib.pla: 1202: // Machine compatibility check +; libsrc/apple/hgrlib.pla: 1203: // +; libsrc/apple/hgrlib.pla: 1204: if MACHID & MACHID_MODEL == MACHID_III or MACHID & MACHID_MODEL == MACHID_I +_INIT +; libsrc/apple/hgrlib.pla: 1205: puts("Apple II compatible only.\n") + !BYTE $68 ; LAB _X001+0 +_F027 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $2A,$C0 ; CB 192 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B016 + !WORD _B016-* + !BYTE $68 ; LAB _X001+0 +_F028 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $10 ; CN 8 + !BYTE $40 ; ISEQ +_B016 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2E ; CS + !BYTE $1A + !BYTE $41,$70,$70,$6C,$65,$20,$49,$49 + !BYTE $20,$63,$6F,$6D,$70,$61,$74,$69 + !BYTE $62,$6C,$65,$20,$6F,$6E,$6C,$79 + !BYTE $2E,$0D + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 +; libsrc/apple/hgrlib.pla: 1206: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/hgrlib.pla: 1207: fin +_B017 +_B018 +; libsrc/apple/hgrlib.pla: 1208: // +; libsrc/apple/hgrlib.pla: 1209: // Assembly fixups +; libsrc/apple/hgrlib.pla: 1210: // +; libsrc/apple/hgrlib.pla: 1211: hgrCopyDst:1 = @clipsrc +; libsrc/apple/hgrlib.pla: 1212: _hgrCopyDst:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1213: _hgrCopyDst:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1214: _hgrCopyDst:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1215: hgrCopySrc:1 = @clipsrc +; libsrc/apple/hgrlib.pla: 1216: _hgrCopySrc:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1217: _hgrCopySrc:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1218: _hgrCopySrc:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1219: hgrAndSrc:1 = @clipsrc +; libsrc/apple/hgrlib.pla: 1220: _hgrAndSrc:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1221: _hgrAndSrc:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1222: _hgrAndSrc:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1223: hgrXorSrc:1 = @clipsrc +; libsrc/apple/hgrlib.pla: 1224: _hgrXorSrc:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1225: _hgrXorSrc:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1226: _hgrXorSrc:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1227: hgrOrSrc:1 = @clipsrc +; libsrc/apple/hgrlib.pla: 1228: _hgrOrSrc:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1229: _hgrOrSrc:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1230: _hgrOrSrc:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1231: _hgrPlotA:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1232: _hgrPlotA:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1233: _hgrPlotA:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1234: _hgrPlotB:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1235: _hgrPlotC:1 = @hbmask +; libsrc/apple/hgrlib.pla: 1236: _hgrPlotD:1 = @curhclr +; libsrc/apple/hgrlib.pla: 1237: _hgrXorPlotA:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1238: _hgrXorPlotA:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1239: _hgrXorPlotA:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1240: _hgrXorPlotB:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1241: _hgrXorPlotC:1 = @hbmask +; libsrc/apple/hgrlib.pla: 1242: _hgrXorPlotD:1 = @curhclr +; libsrc/apple/hgrlib.pla: 1243: _hgrOrPlotA:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1244: _hgrOrPlotA:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1245: _hgrOrPlotA:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1246: _hgrOrPlotB:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1247: _hgrOrPlotC:1 = @hbmask +; libsrc/apple/hgrlib.pla: 1248: _hgrOrPlotD:1 = @curhclr +; libsrc/apple/hgrlib.pla: 1249: _hgrHLinA:1 = @hgrPlot +; libsrc/apple/hgrlib.pla: 1250: _hgrHLinB:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1251: _hgrHLinB:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1252: _hgrHLinB:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1253: _hgrHLinC:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1254: _hgrHLinD:1 = @hrmask +; libsrc/apple/hgrlib.pla: 1255: _hgrHLinE:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1256: _hgrHLinF:1 = @hlmask +; libsrc/apple/hgrlib.pla: 1257: _hgrHLinG:1 = @curhclr.1 +; libsrc/apple/hgrlib.pla: 1258: _hgrHLinG:6 = @curhclr +; libsrc/apple/hgrlib.pla: 1259: _hgrHLinG:13 = @curhclr +; libsrc/apple/hgrlib.pla: 1260: _hgrHLinG:18 = @curhclr.1 +; libsrc/apple/hgrlib.pla: 1261: _hgrXHLinA:1 = @hgrXorPlot +; libsrc/apple/hgrlib.pla: 1262: _hgrXHLinB:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1263: _hgrXHLinB:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1264: _hgrXHLinB:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1265: _hgrXHLinC:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1266: _hgrXHLinD:1 = @hrmask +; libsrc/apple/hgrlib.pla: 1267: _hgrXHLinE:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1268: _hgrXHLinF:1 = @hlmask +; libsrc/apple/hgrlib.pla: 1269: _hgrXHLinG:1 = @curhclr.1 +; libsrc/apple/hgrlib.pla: 1270: _hgrXHLinG:6 = @curhclr +; libsrc/apple/hgrlib.pla: 1271: _hgrXHLinG:13 = @curhclr +; libsrc/apple/hgrlib.pla: 1272: _hgrXHLinG:18 = @curhclr.1 +; libsrc/apple/hgrlib.pla: 1273: hgrVLin:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1274: _hgrVLinA:1 = @hbmask +; libsrc/apple/hgrlib.pla: 1275: _hgrVLinB:1 = @curhclr +; libsrc/apple/hgrlib.pla: 1276: _hgrVLinC:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1277: _hgrVLinC:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1278: _hgrVLinC:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1279: hgrXorVLin:1 = @divmod7 +; libsrc/apple/hgrlib.pla: 1280: _hgrXVLinA:1 = @hbmask +; libsrc/apple/hgrlib.pla: 1281: _hgrXVLinB:1 = @curhclr +; libsrc/apple/hgrlib.pla: 1282: _hgrXVLinC:1 = @hgrscanl +; libsrc/apple/hgrlib.pla: 1283: _hgrXVLinC:6 = @drawbuff.1 +; libsrc/apple/hgrlib.pla: 1284: _hgrXVLinC:9 = @hgrscanh +; libsrc/apple/hgrlib.pla: 1285: hgrColor:7 = @hcolor +; libsrc/apple/hgrlib.pla: 1286: hgrColor:10 = @curhclr +; libsrc/apple/hgrlib.pla: 1287: hgrColor:13 = @hcolor.1 +; libsrc/apple/hgrlib.pla: 1288: hgrColor:16 = @curhclr.1 +; libsrc/apple/hgrlib.pla: 1289: _scanBLTA:1 = @hgrColor +; libsrc/apple/hgrlib.pla: 1290: _scanBLTB:1 = @hgrPlot +; libsrc/apple/hgrlib.pla: 1291: _scanBLTB:8 = @hgrOrPlot +; libsrc/apple/hgrlib.pla: 1292: _scanBLTC:1 = @hgrColor +; libsrc/apple/hgrlib.pla: 1293: _scanBLTD:1 = @hgrPlot +; libsrc/apple/hgrlib.pla: 1294: _scanBLTD:8 = @hgrOrPlot +; libsrc/apple/hgrlib.pla: 1295: done + !BYTE $26 ; LA _A001+0 +_F030 !WORD _A001+0 + !BYTE $7A ; SAW _A003+1 +_F031 !WORD _A003+1 + !BYTE $26 ; LA _D029+0 +_F032 !WORD _D029+0 + !BYTE $7A ; SAW _A004+1 +_F033 !WORD _A004+1 + !BYTE $26 ; LA _D037+1 +_F034 !WORD _D037+1 + !BYTE $7A ; SAW _A004+6 +_F035 !WORD _A004+6 + !BYTE $26 ; LA _D030+0 +_F036 !WORD _D030+0 + !BYTE $7A ; SAW _A004+9 +_F037 !WORD _A004+9 + !BYTE $26 ; LA _A001+0 +_F038 !WORD _A001+0 + !BYTE $7A ; SAW _A005+1 +_F039 !WORD _A005+1 + !BYTE $26 ; LA _D029+0 +_F040 !WORD _D029+0 + !BYTE $7A ; SAW _A006+1 +_F041 !WORD _A006+1 + !BYTE $26 ; LA _D037+1 +_F042 !WORD _D037+1 + !BYTE $7A ; SAW _A006+6 +_F043 !WORD _A006+6 + !BYTE $26 ; LA _D030+0 +_F044 !WORD _D030+0 + !BYTE $7A ; SAW _A006+9 +_F045 !WORD _A006+9 + !BYTE $26 ; LA _A001+0 +_F046 !WORD _A001+0 + !BYTE $7A ; SAW _A007+1 +_F047 !WORD _A007+1 + !BYTE $26 ; LA _D029+0 +_F048 !WORD _D029+0 + !BYTE $7A ; SAW _A008+1 +_F049 !WORD _A008+1 + !BYTE $26 ; LA _D037+1 +_F050 !WORD _D037+1 + !BYTE $7A ; SAW _A008+6 +_F051 !WORD _A008+6 + !BYTE $26 ; LA _D030+0 +_F052 !WORD _D030+0 + !BYTE $7A ; SAW _A008+9 +_F053 !WORD _A008+9 + !BYTE $26 ; LA _A001+0 +_F054 !WORD _A001+0 + !BYTE $7A ; SAW _A009+1 +_F055 !WORD _A009+1 + !BYTE $26 ; LA _D029+0 +_F056 !WORD _D029+0 + !BYTE $7A ; SAW _A010+1 +_F057 !WORD _A010+1 + !BYTE $26 ; LA _D037+1 +_F058 !WORD _D037+1 + !BYTE $7A ; SAW _A010+6 +_F059 !WORD _A010+6 + !BYTE $26 ; LA _D030+0 +_F060 !WORD _D030+0 + !BYTE $7A ; SAW _A010+9 +_F061 !WORD _A010+9 + !BYTE $26 ; LA _A001+0 +_F062 !WORD _A001+0 + !BYTE $7A ; SAW _A011+1 +_F063 !WORD _A011+1 + !BYTE $26 ; LA _D029+0 +_F064 !WORD _D029+0 + !BYTE $7A ; SAW _A012+1 +_F065 !WORD _A012+1 + !BYTE $26 ; LA _D037+1 +_F066 !WORD _D037+1 + !BYTE $7A ; SAW _A012+6 +_F067 !WORD _A012+6 + !BYTE $26 ; LA _D030+0 +_F068 !WORD _D030+0 + !BYTE $7A ; SAW _A012+9 +_F069 !WORD _A012+9 + !BYTE $26 ; LA _D029+0 +_F070 !WORD _D029+0 + !BYTE $7A ; SAW _A014+1 +_F071 !WORD _A014+1 + !BYTE $26 ; LA _D037+1 +_F072 !WORD _D037+1 + !BYTE $7A ; SAW _A014+6 +_F073 !WORD _A014+6 + !BYTE $26 ; LA _D030+0 +_F074 !WORD _D030+0 + !BYTE $7A ; SAW _A014+9 +_F075 !WORD _A014+9 + !BYTE $26 ; LA _A000+0 +_F076 !WORD _A000+0 + !BYTE $7A ; SAW _A015+1 +_F077 !WORD _A015+1 + !BYTE $26 ; LA _D031+0 +_F078 !WORD _D031+0 + !BYTE $7A ; SAW _A016+1 +_F079 !WORD _A016+1 + !BYTE $26 ; LA _D035+0 +_F080 !WORD _D035+0 + !BYTE $7A ; SAW _A017+1 +_F081 !WORD _A017+1 + !BYTE $26 ; LA _D029+0 +_F082 !WORD _D029+0 + !BYTE $7A ; SAW _A019+1 +_F083 !WORD _A019+1 + !BYTE $26 ; LA _D037+1 +_F084 !WORD _D037+1 + !BYTE $7A ; SAW _A019+6 +_F085 !WORD _A019+6 + !BYTE $26 ; LA _D030+0 +_F086 !WORD _D030+0 + !BYTE $7A ; SAW _A019+9 +_F087 !WORD _A019+9 + !BYTE $26 ; LA _A000+0 +_F088 !WORD _A000+0 + !BYTE $7A ; SAW _A020+1 +_F089 !WORD _A020+1 + !BYTE $26 ; LA _D031+0 +_F090 !WORD _D031+0 + !BYTE $7A ; SAW _A021+1 +_F091 !WORD _A021+1 + !BYTE $26 ; LA _D035+0 +_F092 !WORD _D035+0 + !BYTE $7A ; SAW _A022+1 +_F093 !WORD _A022+1 + !BYTE $26 ; LA _D029+0 +_F094 !WORD _D029+0 + !BYTE $7A ; SAW _A024+1 +_F095 !WORD _A024+1 + !BYTE $26 ; LA _D037+1 +_F096 !WORD _D037+1 + !BYTE $7A ; SAW _A024+6 +_F097 !WORD _A024+6 + !BYTE $26 ; LA _D030+0 +_F098 !WORD _D030+0 + !BYTE $7A ; SAW _A024+9 +_F099 !WORD _A024+9 + !BYTE $26 ; LA _A000+0 +_F100 !WORD _A000+0 + !BYTE $7A ; SAW _A025+1 +_F101 !WORD _A025+1 + !BYTE $26 ; LA _D031+0 +_F102 !WORD _D031+0 + !BYTE $7A ; SAW _A026+1 +_F103 !WORD _A026+1 + !BYTE $26 ; LA _D035+0 +_F104 !WORD _D035+0 + !BYTE $7A ; SAW _A027+1 +_F105 !WORD _A027+1 + !BYTE $26 ; LA _A013+0 +_F106 !WORD _A013+0 + !BYTE $7A ; SAW _A029+1 +_F107 !WORD _A029+1 + !BYTE $26 ; LA _D029+0 +_F108 !WORD _D029+0 + !BYTE $7A ; SAW _A030+1 +_F109 !WORD _A030+1 + !BYTE $26 ; LA _D037+1 +_F110 !WORD _D037+1 + !BYTE $7A ; SAW _A030+6 +_F111 !WORD _A030+6 + !BYTE $26 ; LA _D030+0 +_F112 !WORD _D030+0 + !BYTE $7A ; SAW _A030+9 +_F113 !WORD _A030+9 + !BYTE $26 ; LA _A000+0 +_F114 !WORD _A000+0 + !BYTE $7A ; SAW _A031+1 +_F115 !WORD _A031+1 + !BYTE $26 ; LA _D033+0 +_F116 !WORD _D033+0 + !BYTE $7A ; SAW _A032+1 +_F117 !WORD _A032+1 + !BYTE $26 ; LA _A000+0 +_F118 !WORD _A000+0 + !BYTE $7A ; SAW _A033+1 +_F119 !WORD _A033+1 + !BYTE $26 ; LA _D032+0 +_F120 !WORD _D032+0 + !BYTE $7A ; SAW _A034+1 +_F121 !WORD _A034+1 + !BYTE $26 ; LA _D035+1 +_F122 !WORD _D035+1 + !BYTE $7A ; SAW _A035+1 +_F123 !WORD _A035+1 + !BYTE $26 ; LA _D035+0 +_F124 !WORD _D035+0 + !BYTE $7A ; SAW _A035+6 +_F125 !WORD _A035+6 + !BYTE $26 ; LA _D035+0 +_F126 !WORD _D035+0 + !BYTE $7A ; SAW _A035+13 +_F127 !WORD _A035+13 + !BYTE $26 ; LA _D035+1 +_F128 !WORD _D035+1 + !BYTE $7A ; SAW _A035+18 +_F129 !WORD _A035+18 + !BYTE $26 ; LA _A018+0 +_F130 !WORD _A018+0 + !BYTE $7A ; SAW _A037+1 +_F131 !WORD _A037+1 + !BYTE $26 ; LA _D029+0 +_F132 !WORD _D029+0 + !BYTE $7A ; SAW _A038+1 +_F133 !WORD _A038+1 + !BYTE $26 ; LA _D037+1 +_F134 !WORD _D037+1 + !BYTE $7A ; SAW _A038+6 +_F135 !WORD _A038+6 + !BYTE $26 ; LA _D030+0 +_F136 !WORD _D030+0 + !BYTE $7A ; SAW _A038+9 +_F137 !WORD _A038+9 + !BYTE $26 ; LA _A000+0 +_F138 !WORD _A000+0 + !BYTE $7A ; SAW _A039+1 +_F139 !WORD _A039+1 + !BYTE $26 ; LA _D033+0 +_F140 !WORD _D033+0 + !BYTE $7A ; SAW _A040+1 +_F141 !WORD _A040+1 + !BYTE $26 ; LA _A000+0 +_F142 !WORD _A000+0 + !BYTE $7A ; SAW _A041+1 +_F143 !WORD _A041+1 + !BYTE $26 ; LA _D032+0 +_F144 !WORD _D032+0 + !BYTE $7A ; SAW _A042+1 +_F145 !WORD _A042+1 + !BYTE $26 ; LA _D035+1 +_F146 !WORD _D035+1 + !BYTE $7A ; SAW _A043+1 +_F147 !WORD _A043+1 + !BYTE $26 ; LA _D035+0 +_F148 !WORD _D035+0 + !BYTE $7A ; SAW _A043+6 +_F149 !WORD _A043+6 + !BYTE $26 ; LA _D035+0 +_F150 !WORD _D035+0 + !BYTE $7A ; SAW _A043+13 +_F151 !WORD _A043+13 + !BYTE $26 ; LA _D035+1 +_F152 !WORD _D035+1 + !BYTE $7A ; SAW _A043+18 +_F153 !WORD _A043+18 + !BYTE $26 ; LA _A000+0 +_F154 !WORD _A000+0 + !BYTE $7A ; SAW _A044+1 +_F155 !WORD _A044+1 + !BYTE $26 ; LA _D031+0 +_F156 !WORD _D031+0 + !BYTE $7A ; SAW _A045+1 +_F157 !WORD _A045+1 + !BYTE $26 ; LA _D035+0 +_F158 !WORD _D035+0 + !BYTE $7A ; SAW _A046+1 +_F159 !WORD _A046+1 + !BYTE $26 ; LA _D029+0 +_F160 !WORD _D029+0 + !BYTE $7A ; SAW _A047+1 +_F161 !WORD _A047+1 + !BYTE $26 ; LA _D037+1 +_F162 !WORD _D037+1 + !BYTE $7A ; SAW _A047+6 +_F163 !WORD _A047+6 + !BYTE $26 ; LA _D030+0 +_F164 !WORD _D030+0 + !BYTE $7A ; SAW _A047+9 +_F165 !WORD _A047+9 + !BYTE $26 ; LA _A000+0 +_F166 !WORD _A000+0 + !BYTE $7A ; SAW _A048+1 +_F167 !WORD _A048+1 + !BYTE $26 ; LA _D031+0 +_F168 !WORD _D031+0 + !BYTE $7A ; SAW _A049+1 +_F169 !WORD _A049+1 + !BYTE $26 ; LA _D035+0 +_F170 !WORD _D035+0 + !BYTE $7A ; SAW _A050+1 +_F171 !WORD _A050+1 + !BYTE $26 ; LA _D029+0 +_F172 !WORD _D029+0 + !BYTE $7A ; SAW _A051+1 +_F173 !WORD _A051+1 + !BYTE $26 ; LA _D037+1 +_F174 !WORD _D037+1 + !BYTE $7A ; SAW _A051+6 +_F175 !WORD _A051+6 + !BYTE $26 ; LA _D030+0 +_F176 !WORD _D030+0 + !BYTE $7A ; SAW _A051+9 +_F177 !WORD _A051+9 + !BYTE $26 ; LA _D034+0 +_F178 !WORD _D034+0 + !BYTE $7A ; SAW _A002+7 +_F179 !WORD _A002+7 + !BYTE $26 ; LA _D035+0 +_F180 !WORD _D035+0 + !BYTE $7A ; SAW _A002+10 +_F181 !WORD _A002+10 + !BYTE $26 ; LA _D034+1 +_F182 !WORD _D034+1 + !BYTE $7A ; SAW _A002+13 +_F183 !WORD _A002+13 + !BYTE $26 ; LA _D035+1 +_F184 !WORD _D035+1 + !BYTE $7A ; SAW _A002+16 +_F185 !WORD _A002+16 + !BYTE $26 ; LA _A002+0 +_F186 !WORD _A002+0 + !BYTE $7A ; SAW _A053+1 +_F187 !WORD _A053+1 + !BYTE $26 ; LA _A013+0 +_F188 !WORD _A013+0 + !BYTE $7A ; SAW _A054+1 +_F189 !WORD _A054+1 + !BYTE $26 ; LA _A023+0 +_F190 !WORD _A023+0 + !BYTE $7A ; SAW _A054+8 +_F191 !WORD _A054+8 + !BYTE $26 ; LA _A002+0 +_F192 !WORD _A002+0 + !BYTE $7A ; SAW _A055+1 +_F193 !WORD _A055+1 + !BYTE $26 ; LA _A013+0 +_F194 !WORD _A013+0 + !BYTE $7A ; SAW _A056+1 +_F195 !WORD _A056+1 + !BYTE $26 ; LA _A023+0 +_F196 !WORD _A023+0 + !BYTE $7A ; SAW _A056+8 +_F197 !WORD _A056+8 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 9 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: DIVMOD7 + !BYTE $C4,$C9,$D6,$CD,$CF,$C4,$37 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A000 + ; DCI STRING: HGRCOLOR + !BYTE $C8,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A002 + ; DCI STRING: HGRCOPYDST + !BYTE $C8,$C7,$D2,$C3,$CF,$D0,$D9,$C4,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A003 + ; DCI STRING: HGRCOPYSRC + !BYTE $C8,$C7,$D2,$C3,$CF,$D0,$D9,$D3,$D2,$43 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A005 + ; DCI STRING: HGRANDSRC + !BYTE $C8,$C7,$D2,$C1,$CE,$C4,$D3,$D2,$43 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A007 + ; DCI STRING: HGRXORSRC + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D3,$D2,$43 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A009 + ; DCI STRING: HGRORSRC + !BYTE $C8,$C7,$D2,$CF,$D2,$D3,$D2,$43 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A011 + ; DCI STRING: HGRPLOT + !BYTE $C8,$C7,$D2,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A013 + ; DCI STRING: HGRXORPLOT + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A018 + ; DCI STRING: HGRORPLOT + !BYTE $C8,$C7,$D2,$CF,$D2,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A023 + ; DCI STRING: HGRHLIN + !BYTE $C8,$C7,$D2,$C8,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A028 + ; DCI STRING: HGRXORHLIN + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$C8,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A036 + ; DCI STRING: HGRVLIN + !BYTE $C8,$C7,$D2,$D6,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A044 + ; DCI STRING: HGRXORVLIN + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D6,$CC,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A048 + ; DCI STRING: HGRRECT + !BYTE $C8,$C7,$D2,$D2,$C5,$C3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: HGRXORRECT + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D2,$C5,$C3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: HGRBLT + !BYTE $C8,$C7,$D2,$C2,$CC,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: HGRMODE + !BYTE $C8,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: HGRCLEAR + !BYTE $C8,$C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: HGRSHOW + !BYTE $C8,$C7,$D2,$D3,$C8,$CF,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: HGRSWAP + !BYTE $C8,$C7,$D2,$D3,$D7,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + ; DCI STRING: HGRDRAWBUF + !BYTE $C8,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C007 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/hgrsprite.a b/src/libsrc/apple/hgrsprite.a new file mode 100644 index 0000000..ce713f2 --- /dev/null +++ b/src/libsrc/apple/hgrsprite.a @@ -0,0 +1,2340 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/hgrsprite.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/hgrsprite.pla: 0001: +; libsrc/apple/hgrsprite.pla: 0002: include "inc/hgrlib.plh" +; inc/hgrlib.plh: 0001: import hgrlib + ; DCI STRING: HGRLIB + !BYTE $C8,$C7,$D2,$CC,$C9,$42 + ; HGRLIB -> X028 +; inc/hgrlib.plh: 0002: predef divmod7(x)#2 + ; DIVMOD7 -> X029 +; inc/hgrlib.plh: 0003: predef hgrPlot(x, y)#0 + ; HGRPLOT -> X030 +; inc/hgrlib.plh: 0004: predef hgrOrPlot(x, y)#0 + ; HGRORPLOT -> X031 +; inc/hgrlib.plh: 0005: predef hgrXorPlot(x, y)#0 + ; HGRXORPLOT -> X032 +; inc/hgrlib.plh: 0006: predef hgrHLin(x1, x2, y)#0 + ; HGRHLIN -> X033 +; inc/hgrlib.plh: 0007: predef hgrVLin(y1, y2, x)#0 + ; HGRVLIN -> X034 +; inc/hgrlib.plh: 0008: predef hgrXorHLin(x1, x2, y)#0 + ; HGRXORHLIN -> X035 +; inc/hgrlib.plh: 0009: predef hgrXorVLin(y1, y2, x)#0 + ; HGRXORVLIN -> X036 +; inc/hgrlib.plh: 0010: predef hgrRect(x1, y1, x2, y2)#0 + ; HGRRECT -> X037 +; inc/hgrlib.plh: 0011: predef hgrXorRect(x1, y1, x2, y2)#0 + ; HGRXORRECT -> X038 +; inc/hgrlib.plh: 0012: predef hgrBLT(x, y, width, height, srcptr)#0 + ; HGRBLT -> X039 +; inc/hgrlib.plh: 0013: predef hgrCopySrc(ofst, y, w, h, srcptr)#0 + ; HGRCOPYSRC -> X040 +; inc/hgrlib.plh: 0014: predef hgrAndSrc(ofst, y, w, h, srcptr)#0 + ; HGRANDSRC -> X041 +; inc/hgrlib.plh: 0015: predef hgrXorSrc(ofst, y, w, h, srcptr)#0 + ; HGRXORSRC -> X042 +; inc/hgrlib.plh: 0016: predef hgrOrSrc(ofst, y, w, h, srcptr)#0 + ; HGRORSRC -> X043 +; inc/hgrlib.plh: 0017: predef hgrCopyDst(ofst, y, w, h, dstptr)#0 + ; HGRCOPYDST -> X044 +; inc/hgrlib.plh: 0018: predef hgrMode(mode)#1 + ; HGRMODE -> X045 +; inc/hgrlib.plh: 0019: predef hgrClear#0 + ; HGRCLEAR -> X046 +; inc/hgrlib.plh: 0020: predef hgrShow(page)#1 + ; HGRSHOW -> X047 +; inc/hgrlib.plh: 0021: predef hgrSwap#1 + ; HGRSWAP -> X048 +; inc/hgrlib.plh: 0022: predef hgrDrawBuf(page)#1 + ; HGRDRAWBUF -> X049 +; inc/hgrlib.plh: 0023: predef hgrColor(clr)#0 + ; HGRCOLOR -> X050 +; inc/hgrlib.plh: 0024: end +; libsrc/apple/hgrsprite.pla: 0002: +; libsrc/apple/hgrsprite.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X051 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X052 +; inc/fileio.plh: 0080: end +; libsrc/apple/hgrsprite.pla: 0003: +; libsrc/apple/hgrsprite.pla: 0004: +; libsrc/apple/hgrsprite.pla: 0005: struc t_sprite + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/apple/hgrsprite.pla: 0006: var s_xpos + ; s_xpos = 0 +; libsrc/apple/hgrsprite.pla: 0007: var s_ypos + ; s_ypos = 2 +; libsrc/apple/hgrsprite.pla: 0008: var s_undery[2] + ; s_undery = 4 +; libsrc/apple/hgrsprite.pla: 0009: var s_underofst[2] + ; s_underofst = 8 +; libsrc/apple/hgrsprite.pla: 0010: byte s_undermap[2] + ; s_undermap = 12 +; libsrc/apple/hgrsprite.pla: 0011: byte s_xcenter + ; s_xcenter = 14 +; libsrc/apple/hgrsprite.pla: 0012: byte s_ycenter + ; s_ycenter = 15 +; libsrc/apple/hgrsprite.pla: 0013: byte s_pitch + ; s_pitch = 16 +; libsrc/apple/hgrsprite.pla: 0014: byte s_height + ; s_height = 17 +; libsrc/apple/hgrsprite.pla: 0015: var s_size + ; s_size = 18 +; libsrc/apple/hgrsprite.pla: 0016: var s_mask[14] + ; s_mask = 20 +; libsrc/apple/hgrsprite.pla: 0017: var s_map[14] + ; s_map = 48 +; libsrc/apple/hgrsprite.pla: 0018: var s_under[14] + ; s_under = 76 +; libsrc/apple/hgrsprite.pla: 0019: end + ; t_sprite = 104 +; libsrc/apple/hgrsprite.pla: 0020: +; libsrc/apple/hgrsprite.pla: 0021: var drawList[16] +_D053 !FILL 32 ; drawList[16] +; libsrc/apple/hgrsprite.pla: 0022: var undrawList0[16] +_D054 !FILL 32 ; undrawList0[16] +; libsrc/apple/hgrsprite.pla: 0023: var undrawList1[16] +_D055 !FILL 32 ; undrawList1[16] +; libsrc/apple/hgrsprite.pla: 0024: var undrawList[2] = @undrawList0, @undrawList1 +_D056 ; undrawList[2] = @undrawList0, @undrawList1 +_F000 !WORD _D054 +_F001 !WORD _D055 +; libsrc/apple/hgrsprite.pla: 0025: byte drawpage +_D057 !FILL 1 ; drawpage +; libsrc/apple/hgrsprite.pla: 0026: // +; libsrc/apple/hgrsprite.pla: 0027: // Sprite routines +; libsrc/apple/hgrsprite.pla: 0028: // +; libsrc/apple/hgrsprite.pla: 0029: asm scanMask(x, y, w, srcptr)#0 +_A000 ; scanMask() +; libsrc/apple/hgrsprite.pla: 0030: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/hgrsprite.pla: 0031: LDA ESTKL+0,X ; SRC PTR + LDA ESTKL+0,X ; SRC PTR +; libsrc/apple/hgrsprite.pla: 0032: STA SRCL + STA SRCL +; libsrc/apple/hgrsprite.pla: 0033: LDA ESTKH+0,X + LDA ESTKH+0,X +; libsrc/apple/hgrsprite.pla: 0034: STA SRCH + STA SRCH +; libsrc/apple/hgrsprite.pla: 0035: LDA #$00 + LDA #$00 +; libsrc/apple/hgrsprite.pla: 0036: - PHA +- PHA +; libsrc/apple/hgrsprite.pla: 0037: LSR + LSR +; libsrc/apple/hgrsprite.pla: 0038: TAY + TAY +; libsrc/apple/hgrsprite.pla: 0039: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrsprite.pla: 0040: AND #$80 + AND #$80 +; libsrc/apple/hgrsprite.pla: 0041: BEQ + + BEQ + +; libsrc/apple/hgrsprite.pla: 0042: LDA #$03 + LDA #$03 +; libsrc/apple/hgrsprite.pla: 0043: + DEX ++ DEX +; libsrc/apple/hgrsprite.pla: 0044: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrsprite.pla: 0045: end +; libsrc/apple/hgrsprite.pla: 0046: asm _scanMaskA +_A001 ; _scanMaskA() +; libsrc/apple/hgrsprite.pla: 0047: JSR $C000 ; HCOLOR + JSR $C000 ; HCOLOR +; libsrc/apple/hgrsprite.pla: 0048: DEX + DEX +; libsrc/apple/hgrsprite.pla: 0049: DEX + DEX +; libsrc/apple/hgrsprite.pla: 0050: LDA ESTKL+5,X ; X COORDL + LDA ESTKL+5,X ; X COORDL +; libsrc/apple/hgrsprite.pla: 0051: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrsprite.pla: 0052: LDA ESTKH+5,X ; X COORDH + LDA ESTKH+5,X ; X COORDH +; libsrc/apple/hgrsprite.pla: 0053: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/apple/hgrsprite.pla: 0054: LDA ESTKL+4,X ; Y COORDL + LDA ESTKL+4,X ; Y COORDL +; libsrc/apple/hgrsprite.pla: 0055: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrsprite.pla: 0056: LDA ESTKH+4,X ; Y COORDH + LDA ESTKH+4,X ; Y COORDH +; libsrc/apple/hgrsprite.pla: 0057: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrsprite.pla: 0058: end +; libsrc/apple/hgrsprite.pla: 0059: asm _scanMaskB +_A002 ; _scanMaskB() +; libsrc/apple/hgrsprite.pla: 0060: JSR $D000 ; HPLOT + JSR $D000 ; HPLOT +; libsrc/apple/hgrsprite.pla: 0061: INC ESTKL+3,X ; X COORDL + INC ESTKL+3,X ; X COORDL +; libsrc/apple/hgrsprite.pla: 0062: BNE + + BNE + +; libsrc/apple/hgrsprite.pla: 0063: INC ESTKH+3,X ; X COORDH + INC ESTKH+3,X ; X COORDH +; libsrc/apple/hgrsprite.pla: 0064: + PLA ++ PLA +; libsrc/apple/hgrsprite.pla: 0065: CLC + CLC +; libsrc/apple/hgrsprite.pla: 0066: ADC #$01 + ADC #$01 +; libsrc/apple/hgrsprite.pla: 0067: CMP ESTKL+1,X ; WIDTH + CMP ESTKL+1,X ; WIDTH +; libsrc/apple/hgrsprite.pla: 0068: BEQ BLTDONE + BEQ BLTDONE +; libsrc/apple/hgrsprite.pla: 0069: PHA + PHA +; libsrc/apple/hgrsprite.pla: 0070: LSR + LSR +; libsrc/apple/hgrsprite.pla: 0071: TAY + TAY +; libsrc/apple/hgrsprite.pla: 0072: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrsprite.pla: 0073: AND #$08 + AND #$08 +; libsrc/apple/hgrsprite.pla: 0074: BEQ + + BEQ + +; libsrc/apple/hgrsprite.pla: 0075: LDA #$03 + LDA #$03 +; libsrc/apple/hgrsprite.pla: 0076: + DEX ++ DEX +; libsrc/apple/hgrsprite.pla: 0077: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrsprite.pla: 0078: end +; libsrc/apple/hgrsprite.pla: 0079: asm _scanMaskC +_A003 ; _scanMaskC() +; libsrc/apple/hgrsprite.pla: 0080: JSR $C000 ; HCOLOR + JSR $C000 ; HCOLOR +; libsrc/apple/hgrsprite.pla: 0081: DEX + DEX +; libsrc/apple/hgrsprite.pla: 0082: DEX + DEX +; libsrc/apple/hgrsprite.pla: 0083: LDA ESTKL+5,X ; X COORDL + LDA ESTKL+5,X ; X COORDL +; libsrc/apple/hgrsprite.pla: 0084: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrsprite.pla: 0085: LDA ESTKH+5,X ; X COORDH + LDA ESTKH+5,X ; X COORDH +; libsrc/apple/hgrsprite.pla: 0086: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/apple/hgrsprite.pla: 0087: LDA ESTKL+4,X ; Y COORDL + LDA ESTKL+4,X ; Y COORDL +; libsrc/apple/hgrsprite.pla: 0088: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/apple/hgrsprite.pla: 0089: LDA ESTKH+4,X ; Y COORDH + LDA ESTKH+4,X ; Y COORDH +; libsrc/apple/hgrsprite.pla: 0090: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/apple/hgrsprite.pla: 0091: end +; libsrc/apple/hgrsprite.pla: 0092: asm _scanMaskD +_A004 ; _scanMaskD() +; libsrc/apple/hgrsprite.pla: 0093: JSR $D000 ; HPLOT + JSR $D000 ; HPLOT +; libsrc/apple/hgrsprite.pla: 0094: INC ESTKL+3,X ; X COORDL + INC ESTKL+3,X ; X COORDL +; libsrc/apple/hgrsprite.pla: 0095: BNE + + BNE + +; libsrc/apple/hgrsprite.pla: 0096: INC ESTKH+3,X ; X COORDH + INC ESTKH+3,X ; X COORDH +; libsrc/apple/hgrsprite.pla: 0097: + PLA ++ PLA +; libsrc/apple/hgrsprite.pla: 0098: CLC + CLC +; libsrc/apple/hgrsprite.pla: 0099: ADC #$01 + ADC #$01 +; libsrc/apple/hgrsprite.pla: 0100: CMP ESTKL+1,X ; WIDTH + CMP ESTKL+1,X ; WIDTH +; libsrc/apple/hgrsprite.pla: 0101: BNE - + BNE - +; libsrc/apple/hgrsprite.pla: 0102: BLTDONE INX +BLTDONE INX +; libsrc/apple/hgrsprite.pla: 0103: INX + INX +; libsrc/apple/hgrsprite.pla: 0104: INX + INX +; libsrc/apple/hgrsprite.pla: 0105: INX + INX +; libsrc/apple/hgrsprite.pla: 0106: RTS + RTS +; libsrc/apple/hgrsprite.pla: 0107: end +; libsrc/apple/hgrsprite.pla: 0108: def spriteBLTMask(x, y, w, h, srcptr)#0 +_SUBSEG ; BYTECODE STARTS + ; x -> [0] + ; y -> [2] + ; w -> [4] + ; h -> [6] + ; srcptr -> [8] +_C000 ; spriteBLTMask() +; libsrc/apple/hgrsprite.pla: 0109: word i, j + ; i -> [10] + ; j -> [12] +; libsrc/apple/hgrsprite.pla: 0110: byte pitch + ; pitch -> [14] +; libsrc/apple/hgrsprite.pla: 0111: byte c + ; c -> [15] +; libsrc/apple/hgrsprite.pla: 0112: +; libsrc/apple/hgrsprite.pla: 0113: pitch = (w + 1) / 2 + !BYTE $58,$10,$05 ; ENTER 16,5 +; libsrc/apple/hgrsprite.pla: 0114: for j = y to y + h - 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $74,$0E ; SLB [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $6E,$0C ; DLW [12] +; libsrc/apple/hgrsprite.pla: 0115: scanMask(x, j, w, srcptr) +; libsrc/apple/hgrsprite.pla: 0116: // for i = 0 to w - 1 +; libsrc/apple/hgrsprite.pla: 0117: // c = srcptr->[i >> 1] +; libsrc/apple/hgrsprite.pla: 0118: // if i & 1 +; libsrc/apple/hgrsprite.pla: 0119: // hgrColor(c & $08 ?? 3 :: 0) +; libsrc/apple/hgrsprite.pla: 0120: // else +; libsrc/apple/hgrsprite.pla: 0121: // hgrColor(c & $80 ?? 3 :: 0) +; libsrc/apple/hgrsprite.pla: 0122: // fin +; libsrc/apple/hgrsprite.pla: 0123: // hgrPlot(x + i, j) +; libsrc/apple/hgrsprite.pla: 0124: // next +; libsrc/apple/hgrsprite.pla: 0125: srcptr = srcptr + pitch +; libsrc/apple/hgrsprite.pla: 0126: next + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A000 +_F002 !WORD _A000 + !BYTE $66,$08 ; LLW [8] + !BYTE $B0,$0E ; ADDLB [14] + !BYTE $76,$08 ; SLW [8] +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $76,$0C ; SLW [12] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0127: end + !BYTE $5A,$10 ; LEAVE 16 +; libsrc/apple/hgrsprite.pla: 0128: export def spriteCompile(w, h, xcenter, ycenter, srcptr)#1 + ; w -> [0] + ; h -> [2] + ; xcenter -> [4] + ; ycenter -> [6] + ; srcptr -> [8] +_C001 ; spriteCompile() +; libsrc/apple/hgrsprite.pla: 0129: var sprtptr, bytewidth, spritesize, i + ; sprtptr -> [10] + ; bytewidth -> [12] + ; spritesize -> [14] + ; i -> [16] +; libsrc/apple/hgrsprite.pla: 0130: +; libsrc/apple/hgrsprite.pla: 0131: sprtptr = heapalloc(t_sprite) + !BYTE $58,$12,$05 ; ENTER 18,5 +; libsrc/apple/hgrsprite.pla: 0132: if not sprtptr; return 0; fin + !BYTE $2A,$68 ; CB 104 + !BYTE $54 ; CALL _X014 +_F003 !WORD 0 + !BYTE $6E,$0A ; DLW [10] + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* + !BYTE $00 ; CN 0 + !BYTE $5A,$12 ; LEAVE 18 +_B004 +_B005 +; libsrc/apple/hgrsprite.pla: 0133: bytewidth = (w + 13) / 7 +; libsrc/apple/hgrsprite.pla: 0134: sprtptr->s_pitch = bytewidth +; libsrc/apple/hgrsprite.pla: 0135: spritesize = bytewidth * h +; libsrc/apple/hgrsprite.pla: 0136: sprtptr=>s_size = spritesize +; libsrc/apple/hgrsprite.pla: 0137: sprtptr->s_height = h +; libsrc/apple/hgrsprite.pla: 0138: sprtptr->s_xcenter = xcenter +; libsrc/apple/hgrsprite.pla: 0139: sprtptr->s_ycenter = ycenter +; libsrc/apple/hgrsprite.pla: 0140: sprtptr=>s_under[0] = 0 +; libsrc/apple/hgrsprite.pla: 0141: sprtptr=>s_under[1] = 0 +; libsrc/apple/hgrsprite.pla: 0142: for i = 0 to 13 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0D ; ADDI 13 + !BYTE $0E ; CN 7 + !BYTE $88 ; DIV + !BYTE $6E,$0C ; DLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$10 ; ADDI 16 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $86 ; MUL + !BYTE $6E,$0E ; DLW [14] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$11 ; ADDI 17 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0F ; ADDI 15 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$4C ; ADDI 76 + !BYTE $00 ; CN 0 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$4C ; ADDI 76 + !BYTE $02 ; CN 1 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $1A ; CN 13 + !BYTE $00 ; CN 0 +_B007 + !BYTE $6E,$10 ; DLW [16] +; libsrc/apple/hgrsprite.pla: 0143: sprtptr=>s_map[i] = heapalloc(spritesize) +; libsrc/apple/hgrsprite.pla: 0144: sprtptr=>s_mask[i] = heapalloc(spritesize) +; libsrc/apple/hgrsprite.pla: 0145: if not sprtptr=>s_map[i] or not sprtptr=>s_mask[i] +; libsrc/apple/hgrsprite.pla: 0146: heaprelease(sprtptr) +; libsrc/apple/hgrsprite.pla: 0147: return 0 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X014 +_F004 !WORD 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$30 ; ADDI 48 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $72 ; SW + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X014 +_F005 !WORD 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$14 ; ADDI 20 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$30 ; ADDI 48 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $62 ; LW + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B009 + !WORD _B009-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$14 ; ADDI 20 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $62 ; LW + !BYTE $80 ; NOT +_B009 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _X015 +_F006 !WORD 0 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $00 ; CN 0 + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/apple/hgrsprite.pla: 0148: fin +_B010 +_B011 +; libsrc/apple/hgrsprite.pla: 0149: hgrColor(7) +; libsrc/apple/hgrsprite.pla: 0150: hgrRect(0, 0, w + 21, h - 1) +; libsrc/apple/hgrsprite.pla: 0151: spriteBLTMask(i, 0, w, h, srcptr) +; libsrc/apple/hgrsprite.pla: 0152: hgrCopyDst(i > 6 ?? 1 :: 0, 0, bytewidth, h, sprtptr=>s_mask[i]) +; libsrc/apple/hgrsprite.pla: 0153: hgrColor(0) +; libsrc/apple/hgrsprite.pla: 0154: hgrRect(0, h, w + 21, h * 2 - 1) +; libsrc/apple/hgrsprite.pla: 0155: hgrBLT(i, h, w, h, srcptr) +; libsrc/apple/hgrsprite.pla: 0156: hgrCopyDst(i > 6 ?? 1 :: 0, h, bytewidth, h, sprtptr=>s_map[i]) +; libsrc/apple/hgrsprite.pla: 0157: next + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X050 +_F007 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$15 ; ADDI 21 + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X037 +_F008 !WORD 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C000 +_F009 !WORD _C000 + !BYTE $66,$10 ; LLW [16] + !BYTE $0C ; CN 6 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $02 ; CN 1 + !BYTE $50 ; BRNCH _B015 + !WORD _B015-* +_B014 + !BYTE $00 ; CN 0 +_B015 + !BYTE $00 ; CN 0 + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$14 ; ADDI 20 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X044 +_F010 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X050 +_F011 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$15 ; ADDI 21 + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X037 +_F012 !WORD 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _X039 +_F013 !WORD 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $0C ; CN 6 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B018 + !WORD _B018-* + !BYTE $02 ; CN 1 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B018 + !BYTE $00 ; CN 0 +_B019 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$30 ; ADDI 48 + !BYTE $BA,$10 ; IDXLW [16] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X044 +_F014 !WORD 0 +_B008 + !BYTE $A4 ; INCBRLE _B007 + !WORD _B007-* +_B006 + !BYTE $76,$10 ; SLW [16] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0158: return sprtptr + !BYTE $66,$0A ; LLW [10] + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/apple/hgrsprite.pla: 0159: end +; libsrc/apple/hgrsprite.pla: 0160: export def spriteDup(sprtsrc)#1 + ; sprtsrc -> [0] +_C002 ; spriteDup() +; libsrc/apple/hgrsprite.pla: 0161: var sprtdup + ; sprtdup -> [2] +; libsrc/apple/hgrsprite.pla: 0162: byte i + ; i -> [4] +; libsrc/apple/hgrsprite.pla: 0163: +; libsrc/apple/hgrsprite.pla: 0164: sprtdup = heapalloc(t_sprite) + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/apple/hgrsprite.pla: 0165: if not sprtdup; return 0; fin + !BYTE $2A,$68 ; CB 104 + !BYTE $54 ; CALL _X014 +_F015 !WORD 0 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B020 + !WORD _B020-* + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +_B020 +_B021 +; libsrc/apple/hgrsprite.pla: 0166: memcpy(sprtdup, sprtsrc, t_sprite) +; libsrc/apple/hgrsprite.pla: 0167: sprtdup=>s_under[0] = 0 +; libsrc/apple/hgrsprite.pla: 0168: sprtdup=>s_under[1] = 0 +; libsrc/apple/hgrsprite.pla: 0169: return sprtdup + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$68 ; CB 104 + !BYTE $54 ; CALL _X018 +_F016 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$4C ; ADDI 76 + !BYTE $00 ; CN 0 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$4C ; ADDI 76 + !BYTE $02 ; CN 1 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/hgrsprite.pla: 0170: end +; libsrc/apple/hgrsprite.pla: 0171: export def spriteRead(filestr)#1 + ; filestr -> [0] +_C003 ; spriteRead() +; libsrc/apple/hgrsprite.pla: 0172: var sprtptr, spritesize + ; sprtptr -> [2] + ; spritesize -> [4] +; libsrc/apple/hgrsprite.pla: 0173: byte refnum, i + ; refnum -> [6] + ; i -> [7] +; libsrc/apple/hgrsprite.pla: 0174: +; libsrc/apple/hgrsprite.pla: 0175: sprtptr = heapalloc(t_sprite) + !BYTE $58,$08,$01 ; ENTER 8,1 +; libsrc/apple/hgrsprite.pla: 0176: if not sprtptr; return 0; fin + !BYTE $2A,$68 ; CB 104 + !BYTE $54 ; CALL _X014 +_F017 !WORD 0 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +_B022 +_B023 +; libsrc/apple/hgrsprite.pla: 0177: refnum = fileio:open(filestr) +; libsrc/apple/hgrsprite.pla: 0178: if refnum +; libsrc/apple/hgrsprite.pla: 0179: if fileio:read(refnum, sprtptr, t_sprite) == t_sprite +; libsrc/apple/hgrsprite.pla: 0180: spritesize = sprtptr=>s_size +; libsrc/apple/hgrsprite.pla: 0181: sprtptr=>s_under[0] = 0 +; libsrc/apple/hgrsprite.pla: 0182: sprtptr=>s_under[1] = 0 +; libsrc/apple/hgrsprite.pla: 0183: for i = 0 to 13 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X051+14 +_F018 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$06 ; DLB [6] + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$68 ; CB 104 + !BYTE $6A ; LAW _X051+18 +_F019 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $2A,$68 ; CB 104 + !BYTE $24 ; BRNE _B026 + !WORD _B026-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$4C ; ADDI 76 + !BYTE $00 ; CN 0 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$4C ; ADDI 76 + !BYTE $02 ; CN 1 + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $1A ; CN 13 + !BYTE $00 ; CN 0 +_B029 + !BYTE $6C,$07 ; DLB [7] +; libsrc/apple/hgrsprite.pla: 0184: sprtptr=>s_map[i] = heapalloc(spritesize) +; libsrc/apple/hgrsprite.pla: 0185: sprtptr=>s_mask[i] = heapalloc(spritesize) +; libsrc/apple/hgrsprite.pla: 0186: if not sprtptr=>s_map[i] or not sprtptr=>s_mask[i] +; libsrc/apple/hgrsprite.pla: 0187: heaprelease(sprtptr) +; libsrc/apple/hgrsprite.pla: 0188: fileio:close(refnum) +; libsrc/apple/hgrsprite.pla: 0189: return 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X014 +_F020 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X014 +_F021 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B031 + !WORD _B031-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $80 ; NOT +_B031 + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X015 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$06 ; LLB [6] + !BYTE $6A ; LAW _X051+16 +_F023 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/hgrsprite.pla: 0190: fin +_B032 +_B033 +; libsrc/apple/hgrsprite.pla: 0191: fileio:read(refnum, sprtptr=>s_map[i], spritesize) +; libsrc/apple/hgrsprite.pla: 0192: fileio:read(refnum, sprtptr=>s_mask[i], spritesize) +; libsrc/apple/hgrsprite.pla: 0193: next + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X051+18 +_F024 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X051+18 +_F025 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B030 + !BYTE $A4 ; INCBRLE _B029 + !WORD _B029-* +_B028 + !BYTE $74,$07 ; SLB [7] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0194: else + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B026 +; libsrc/apple/hgrsprite.pla: 0195: heaprelease(sprtptr) +; libsrc/apple/hgrsprite.pla: 0196: sprtptr = 0 +; libsrc/apple/hgrsprite.pla: 0197: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X015 +_F026 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B027 +; libsrc/apple/hgrsprite.pla: 0198: fileio:close(refnum) +; libsrc/apple/hgrsprite.pla: 0199: else + !BYTE $64,$06 ; LLB [6] + !BYTE $6A ; LAW _X051+16 +_F027 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B025 + !WORD _B025-* +_B024 +; libsrc/apple/hgrsprite.pla: 0200: heaprelease(sprtptr) +; libsrc/apple/hgrsprite.pla: 0201: sprtptr = 0 +; libsrc/apple/hgrsprite.pla: 0202: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X015 +_F028 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B025 +; libsrc/apple/hgrsprite.pla: 0203: return sprtptr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/hgrsprite.pla: 0204: end +; libsrc/apple/hgrsprite.pla: 0205: export def spriteSave(filestr, sprtptr)#1 + ; filestr -> [0] + ; sprtptr -> [2] +_C004 ; spriteSave() +; libsrc/apple/hgrsprite.pla: 0206: var spritesize + ; spritesize -> [4] +; libsrc/apple/hgrsprite.pla: 0207: byte refnum, i + ; refnum -> [6] + ; i -> [7] +; libsrc/apple/hgrsprite.pla: 0208: +; libsrc/apple/hgrsprite.pla: 0209: fileio:destroy(filestr) + !BYTE $58,$08,$02 ; ENTER 8,2 +; libsrc/apple/hgrsprite.pla: 0210: if fileio:create(filestr, $06, $0000) == FILE_ERR_OK +; libsrc/apple/hgrsprite.pla: 0211: refnum = fileio:open(filestr) +; libsrc/apple/hgrsprite.pla: 0212: if refnum +; libsrc/apple/hgrsprite.pla: 0213: if fileio:write(refnum, sprtptr, t_sprite) == t_sprite +; libsrc/apple/hgrsprite.pla: 0214: spritesize = sprtptr=>s_size +; libsrc/apple/hgrsprite.pla: 0215: for i = 0 to 13 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X051+24 +_F029 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $0C ; CN 6 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X051+22 +_F030 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B034 + !WORD _B034-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X051+14 +_F031 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$06 ; DLB [6] + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$68 ; CB 104 + !BYTE $6A ; LAW _X051+20 +_F032 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $2A,$68 ; CB 104 + !BYTE $24 ; BRNE _B038 + !WORD _B038-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $1A ; CN 13 + !BYTE $00 ; CN 0 +_B041 + !BYTE $6C,$07 ; DLB [7] +; libsrc/apple/hgrsprite.pla: 0216: fileio:write(refnum, sprtptr=>s_map[i], spritesize) +; libsrc/apple/hgrsprite.pla: 0217: fileio:write(refnum, sprtptr=>s_mask[i], spritesize) +; libsrc/apple/hgrsprite.pla: 0218: next + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X051+20 +_F033 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $B8,$07 ; IDXLB [7] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X051+20 +_F034 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B042 + !BYTE $A4 ; INCBRLE _B041 + !WORD _B041-* +_B040 + !BYTE $74,$07 ; SLB [7] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0219: fin +_B038 +_B039 +; libsrc/apple/hgrsprite.pla: 0220: fileio:close(refnum) +; libsrc/apple/hgrsprite.pla: 0221: return 0 + !BYTE $64,$06 ; LLB [6] + !BYTE $6A ; LAW _X051+16 +_F035 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/hgrsprite.pla: 0222: fin +_B036 +_B037 +; libsrc/apple/hgrsprite.pla: 0223: fin +_B034 +_B035 +; libsrc/apple/hgrsprite.pla: 0224: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/hgrsprite.pla: 0225: end +; libsrc/apple/hgrsprite.pla: 0226: export def spriteDraw(sprtptr)#0 + ; sprtptr -> [0] +_C005 ; spriteDraw() +; libsrc/apple/hgrsprite.pla: 0227: byte map, pitch, height + ; map -> [2] + ; pitch -> [3] + ; height -> [4] +; libsrc/apple/hgrsprite.pla: 0228: var ofst, y + ; ofst -> [5] + ; y -> [7] +; libsrc/apple/hgrsprite.pla: 0229: +; libsrc/apple/hgrsprite.pla: 0230: y = sprtptr=>s_ypos + !BYTE $58,$09,$01 ; ENTER 9,1 +; libsrc/apple/hgrsprite.pla: 0231: ofst, map = divmod7(sprtptr=>s_xpos) +; libsrc/apple/hgrsprite.pla: 0232: if ofst & 1 +; libsrc/apple/hgrsprite.pla: 0233: map = map + 7 +; libsrc/apple/hgrsprite.pla: 0234: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$07 ; SLW [7] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X029 +_F036 !WORD 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $6E,$05 ; DLW [5] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B043 +_B044 +; libsrc/apple/hgrsprite.pla: 0235: sprtptr=>s_underofst[drawpage] = ofst +; libsrc/apple/hgrsprite.pla: 0236: sprtptr=>s_undery[drawpage] = y +; libsrc/apple/hgrsprite.pla: 0237: pitch = sprtptr->s_pitch +; libsrc/apple/hgrsprite.pla: 0238: height = sprtptr->s_height +; libsrc/apple/hgrsprite.pla: 0239: if not sprtptr=>s_under[drawpage] +; libsrc/apple/hgrsprite.pla: 0240: sprtptr=>s_under[drawpage] = heapalloc(sprtptr=>s_size) +; libsrc/apple/hgrsprite.pla: 0241: if not sprtptr=>s_under[drawpage]; return; fin + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $BC ; IDXAB _D057+0 +_F037 !WORD _D057+0 + !BYTE $72 ; SW + !BYTE $66,$07 ; LLW [7] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $BC ; IDXAB _D057+0 +_F038 !WORD _D057+0 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F039 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B045 + !WORD _B045-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X014 +_F040 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F041 !WORD _D057+0 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F042 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B047 + !WORD _B047-* + !BYTE $5A,$09 ; LEAVE 9 +_B047 +_B048 +; libsrc/apple/hgrsprite.pla: 0242: fin +_B045 +_B046 +; libsrc/apple/hgrsprite.pla: 0243: hgrCopyDst(ofst, y, pitch, height, sprtptr=>s_under[drawpage]) +; libsrc/apple/hgrsprite.pla: 0244: hgrAndSrc( ofst, y, pitch, height, sprtptr=>s_mask[map]) +; libsrc/apple/hgrsprite.pla: 0245: hgrXorSrc( ofst, y, pitch, height, sprtptr=>s_map[map]) +; libsrc/apple/hgrsprite.pla: 0246: end + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$07 ; LLW [7] + !BYTE $64,$03 ; LLB [3] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F043 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X044 +_F044 !WORD 0 + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$07 ; LLW [7] + !BYTE $64,$03 ; LLB [3] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$14 ; ADDI 20 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X041 +_F045 !WORD 0 + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$07 ; LLW [7] + !BYTE $64,$03 ; LLB [3] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X042 +_F046 !WORD 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/hgrsprite.pla: 0247: export def spriteUnDraw(sprtptr)#0 + ; sprtptr -> [0] +_C006 ; spriteUnDraw() +; libsrc/apple/hgrsprite.pla: 0248: if sprtptr=>s_under[drawpage] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrsprite.pla: 0249: hgrCopySrc(sprtptr=>s_underofst[drawpage], sprtptr=>s_undery[drawpage], sprtptr->s_pitch, sprtptr->s_height, sprtptr=>s_under[drawpage]) +; libsrc/apple/hgrsprite.pla: 0250: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F047 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $BC ; IDXAB _D057+0 +_F048 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $BC ; IDXAB _D057+0 +_F049 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$4C ; ADDI 76 + !BYTE $BC ; IDXAB _D057+0 +_F050 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X040 +_F051 !WORD 0 +_B049 +_B050 +; libsrc/apple/hgrsprite.pla: 0251: end + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrsprite.pla: 0252: export def spriteDrawXor(sprtptr)#0 + ; sprtptr -> [0] +_C007 ; spriteDrawXor() +; libsrc/apple/hgrsprite.pla: 0253: byte map, pitch, height + ; map -> [2] + ; pitch -> [3] + ; height -> [4] +; libsrc/apple/hgrsprite.pla: 0254: var ofst, y + ; ofst -> [5] + ; y -> [7] +; libsrc/apple/hgrsprite.pla: 0255: +; libsrc/apple/hgrsprite.pla: 0256: y = sprtptr=>s_ypos + !BYTE $58,$09,$01 ; ENTER 9,1 +; libsrc/apple/hgrsprite.pla: 0257: ofst, map = divmod7(sprtptr=>s_xpos) +; libsrc/apple/hgrsprite.pla: 0258: if ofst & 1 +; libsrc/apple/hgrsprite.pla: 0259: map = map + 7 +; libsrc/apple/hgrsprite.pla: 0260: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$07 ; SLW [7] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X029 +_F052 !WORD 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $6E,$05 ; DLW [5] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B051 +_B052 +; libsrc/apple/hgrsprite.pla: 0261: sprtptr->s_undermap[drawpage] = map +; libsrc/apple/hgrsprite.pla: 0262: sprtptr=>s_underofst[drawpage] = ofst +; libsrc/apple/hgrsprite.pla: 0263: sprtptr=>s_undery[drawpage] = y +; libsrc/apple/hgrsprite.pla: 0264: pitch = sprtptr->s_pitch +; libsrc/apple/hgrsprite.pla: 0265: height = sprtptr->s_height +; libsrc/apple/hgrsprite.pla: 0266: hgrXorSrc( ofst, y, pitch, height, sprtptr=>s_map[map]) +; libsrc/apple/hgrsprite.pla: 0267: end + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $B4 ; ADDAB _D057+0 +_F053 !WORD _D057+0 + !BYTE $70 ; SB + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $BC ; IDXAB _D057+0 +_F054 !WORD _D057+0 + !BYTE $72 ; SW + !BYTE $66,$07 ; LLW [7] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $BC ; IDXAB _D057+0 +_F055 !WORD _D057+0 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$05 ; LLW [5] + !BYTE $66,$07 ; LLW [7] + !BYTE $64,$03 ; LLB [3] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X042 +_F056 !WORD 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/hgrsprite.pla: 0268: export def spriteUnDrawXor(sprtptr)#0 + ; sprtptr -> [0] +_C008 ; spriteUnDrawXor() +; libsrc/apple/hgrsprite.pla: 0269: hgrXorSrc(sprtptr=>s_underofst[drawpage], sprtptr=>s_undery[drawpage], sprtptr->s_pitch, sprtptr->s_height, sprtptr=>s_map[sprtptr->s_undermap[drawpage]]) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrsprite.pla: 0270: end + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $BC ; IDXAB _D057+0 +_F057 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $BC ; IDXAB _D057+0 +_F058 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $B4 ; ADDAB _D057+0 +_F059 !WORD _D057+0 + !BYTE $60 ; LB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $54 ; CALL _X042 +_F060 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrsprite.pla: 0271: export def spritePos(x, y, sprtptr)#0 + ; x -> [0] + ; y -> [2] + ; sprtptr -> [4] +_C009 ; spritePos() +; libsrc/apple/hgrsprite.pla: 0272: sprtptr=>s_ypos = y - sprtptr->s_ycenter + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/hgrsprite.pla: 0273: sprtptr=>s_xpos = x - sprtptr->s_xcenter +; libsrc/apple/hgrsprite.pla: 0274: end + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$0F ; ADDI 15 + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/hgrsprite.pla: 0275: export def spritePosIndex(x, y, i)#0 + ; x -> [0] + ; y -> [2] + ; i -> [4] +_C010 ; spritePosIndex() +; libsrc/apple/hgrsprite.pla: 0276: i = i & 15 + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/hgrsprite.pla: 0277: if drawList[i] +; libsrc/apple/hgrsprite.pla: 0278: drawList[i]=>s_ypos = y - drawList[i]->s_ycenter +; libsrc/apple/hgrsprite.pla: 0279: drawList[i]=>s_xpos = x - drawList[i]->s_xcenter +; libsrc/apple/hgrsprite.pla: 0280: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $76,$04 ; SLW [4] + !BYTE $26 ; LA _D053+0 +_F061 !WORD _D053+0 + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B053 + !WORD _B053-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D053+0 +_F062 !WORD _D053+0 + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $62 ; LW + !BYTE $38,$0F ; ADDI 15 + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $26 ; LA _D053+0 +_F063 !WORD _D053+0 + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $62 ; LW + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D053+0 +_F064 !WORD _D053+0 + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $62 ; LW + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $26 ; LA _D053+0 +_F065 !WORD _D053+0 + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $62 ; LW + !BYTE $72 ; SW +_B053 +_B054 +; libsrc/apple/hgrsprite.pla: 0281: end + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/hgrsprite.pla: 0282: export def spriteUnDrawList#0 +_C011 ; spriteUnDrawList() +; libsrc/apple/hgrsprite.pla: 0283: byte i + ; i -> [0] +; libsrc/apple/hgrsprite.pla: 0284: var undrawptr + ; undrawptr -> [1] +; libsrc/apple/hgrsprite.pla: 0285: +; libsrc/apple/hgrsprite.pla: 0286: undrawptr = undrawList[drawpage] + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/apple/hgrsprite.pla: 0287: for i = 15 downto 0 + !BYTE $26 ; LA _D056+0 +_F066 !WORD _D056+0 + !BYTE $BC ; IDXAB _D057+0 +_F067 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $76,$01 ; SLW [1] + !BYTE $00 ; CN 0 + !BYTE $1E ; CN 15 +_B056 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/hgrsprite.pla: 0288: if undrawptr=>[i] +; libsrc/apple/hgrsprite.pla: 0289: spriteUnDraw(undrawptr=>[i]) +; libsrc/apple/hgrsprite.pla: 0290: undrawptr=>[i] = 0 +; libsrc/apple/hgrsprite.pla: 0291: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F068 !WORD _C006 + !BYTE $00 ; CN 0 + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $72 ; SW +_B058 +_B059 +; libsrc/apple/hgrsprite.pla: 0292: next +_B057 + !BYTE $A8 ; DECBRGE _B056 + !WORD _B056-* +_B055 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0293: end + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/hgrsprite.pla: 0294: export def spriteDrawList#0 +_C012 ; spriteDrawList() +; libsrc/apple/hgrsprite.pla: 0295: byte i + ; i -> [0] +; libsrc/apple/hgrsprite.pla: 0296: var undrawptr + ; undrawptr -> [1] +; libsrc/apple/hgrsprite.pla: 0297: +; libsrc/apple/hgrsprite.pla: 0298: undrawptr = undrawList[drawpage] + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/apple/hgrsprite.pla: 0299: for i = 15 downto 0 + !BYTE $26 ; LA _D056+0 +_F069 !WORD _D056+0 + !BYTE $BC ; IDXAB _D057+0 +_F070 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $76,$01 ; SLW [1] + !BYTE $00 ; CN 0 + !BYTE $1E ; CN 15 +_B061 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/hgrsprite.pla: 0300: if undrawptr=>[i] +; libsrc/apple/hgrsprite.pla: 0301: spriteUnDraw(undrawptr=>[i]) +; libsrc/apple/hgrsprite.pla: 0302: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F071 !WORD _C006 +_B063 +_B064 +; libsrc/apple/hgrsprite.pla: 0303: next +_B062 + !BYTE $A8 ; DECBRGE _B061 + !WORD _B061-* +_B060 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0304: for i = 0 to 15 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B066 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/hgrsprite.pla: 0305: if drawList[i] +; libsrc/apple/hgrsprite.pla: 0306: spriteDraw(drawList[i]) +; libsrc/apple/hgrsprite.pla: 0307: fin + !BYTE $26 ; LA _D053+0 +_F072 !WORD _D053+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $26 ; LA _D053+0 +_F073 !WORD _D053+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C005 +_F074 !WORD _C005 +_B068 +_B069 +; libsrc/apple/hgrsprite.pla: 0308: next +_B067 + !BYTE $A4 ; INCBRLE _B066 + !WORD _B066-* +_B065 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0309: memcpy(undrawptr, @drawList, 16*2) +; libsrc/apple/hgrsprite.pla: 0310: end + !BYTE $66,$01 ; LLW [1] + !BYTE $26 ; LA _D053+0 +_F075 !WORD _D053+0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X018 +_F076 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/hgrsprite.pla: 0311: export def spriteUnDrawXorList#0 +_C013 ; spriteUnDrawXorList() +; libsrc/apple/hgrsprite.pla: 0312: byte i + ; i -> [0] +; libsrc/apple/hgrsprite.pla: 0313: var undrawptr + ; undrawptr -> [1] +; libsrc/apple/hgrsprite.pla: 0314: +; libsrc/apple/hgrsprite.pla: 0315: undrawptr = undrawList[drawpage] + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/apple/hgrsprite.pla: 0316: for i = 0 to 15 + !BYTE $26 ; LA _D056+0 +_F077 !WORD _D056+0 + !BYTE $BC ; IDXAB _D057+0 +_F078 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $76,$01 ; SLW [1] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B071 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/hgrsprite.pla: 0317: if undrawptr=>[i] +; libsrc/apple/hgrsprite.pla: 0318: spriteUnDrawXor(undrawptr=>[i]) +; libsrc/apple/hgrsprite.pla: 0319: undrawptr=>[i] = 0 +; libsrc/apple/hgrsprite.pla: 0320: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C008 +_F079 !WORD _C008 + !BYTE $00 ; CN 0 + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $72 ; SW +_B073 +_B074 +; libsrc/apple/hgrsprite.pla: 0321: next +_B072 + !BYTE $A4 ; INCBRLE _B071 + !WORD _B071-* +_B070 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0322: end + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/hgrsprite.pla: 0323: export def spriteDrawXorList#0 +_C014 ; spriteDrawXorList() +; libsrc/apple/hgrsprite.pla: 0324: byte i + ; i -> [0] +; libsrc/apple/hgrsprite.pla: 0325: var undrawptr + ; undrawptr -> [1] +; libsrc/apple/hgrsprite.pla: 0326: +; libsrc/apple/hgrsprite.pla: 0327: undrawptr = undrawList[drawpage] + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/apple/hgrsprite.pla: 0328: for i = 0 to 15 + !BYTE $26 ; LA _D056+0 +_F080 !WORD _D056+0 + !BYTE $BC ; IDXAB _D057+0 +_F081 !WORD _D057+0 + !BYTE $62 ; LW + !BYTE $76,$01 ; SLW [1] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B076 + !BYTE $6C,$00 ; DLB [0] +; libsrc/apple/hgrsprite.pla: 0329: if undrawptr=>[i] +; libsrc/apple/hgrsprite.pla: 0330: spriteUnDrawXor(undrawptr=>[i]) +; libsrc/apple/hgrsprite.pla: 0331: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B078 + !WORD _B078-* + !BYTE $66,$01 ; LLW [1] + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C008 +_F082 !WORD _C008 +_B078 +_B079 +; libsrc/apple/hgrsprite.pla: 0332: if drawList[i] +; libsrc/apple/hgrsprite.pla: 0333: spriteDrawXor(drawList[i]) +; libsrc/apple/hgrsprite.pla: 0334: fin + !BYTE $26 ; LA _D053+0 +_F083 !WORD _D053+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $26 ; LA _D053+0 +_F084 !WORD _D053+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C007 +_F085 !WORD _C007 +_B080 +_B081 +; libsrc/apple/hgrsprite.pla: 0335: next +_B077 + !BYTE $A4 ; INCBRLE _B076 + !WORD _B076-* +_B075 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/apple/hgrsprite.pla: 0336: memcpy(undrawptr, @drawList, 16*2) +; libsrc/apple/hgrsprite.pla: 0337: end + !BYTE $66,$01 ; LLW [1] + !BYTE $26 ; LA _D053+0 +_F086 !WORD _D053+0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X018 +_F087 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/hgrsprite.pla: 0338: export def spriteAdd(i, sprtptr)#1 + ; i -> [0] + ; sprtptr -> [2] +_C015 ; spriteAdd() +; libsrc/apple/hgrsprite.pla: 0339: var sprtprev + ; sprtprev -> [4] +; libsrc/apple/hgrsprite.pla: 0340: +; libsrc/apple/hgrsprite.pla: 0341: i = i & 15 + !BYTE $58,$06,$02 ; ENTER 6,2 +; libsrc/apple/hgrsprite.pla: 0342: sprtprev = drawList[i] +; libsrc/apple/hgrsprite.pla: 0343: drawList[i] = sprtptr +; libsrc/apple/hgrsprite.pla: 0344: return sprtprev + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $76,$00 ; SLW [0] + !BYTE $26 ; LA _D053+0 +_F088 !WORD _D053+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D053+0 +_F089 !WORD _D053+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/hgrsprite.pla: 0345: end +; libsrc/apple/hgrsprite.pla: 0346: export def spriteDel(i)#1 + ; i -> [0] +_C016 ; spriteDel() +; libsrc/apple/hgrsprite.pla: 0347: var sprtprev + ; sprtprev -> [2] +; libsrc/apple/hgrsprite.pla: 0348: +; libsrc/apple/hgrsprite.pla: 0349: i = i & 15 + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/apple/hgrsprite.pla: 0350: sprtprev = drawList[i] +; libsrc/apple/hgrsprite.pla: 0351: drawList[i] = 0 +; libsrc/apple/hgrsprite.pla: 0352: return sprtprev + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $76,$00 ; SLW [0] + !BYTE $26 ; LA _D053+0 +_F090 !WORD _D053+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D053+0 +_F091 !WORD _D053+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/hgrsprite.pla: 0353: end +; libsrc/apple/hgrsprite.pla: 0354: export def spriteDrawBuf(page)#1 + ; page -> [0] +_C017 ; spriteDrawBuf() +; libsrc/apple/hgrsprite.pla: 0355: drawpage = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrsprite.pla: 0356: return drawpage + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $7C ; DAB _D057+0 +_F092 !WORD _D057+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrsprite.pla: 0357: end +; libsrc/apple/hgrsprite.pla: 0358: // +; libsrc/apple/hgrsprite.pla: 0359: // Assembly fixups +; libsrc/apple/hgrsprite.pla: 0360: // +; libsrc/apple/hgrsprite.pla: 0361: _scanMaskA:1 = @hgrColor +_INIT +; libsrc/apple/hgrsprite.pla: 0362: _scanMaskB:1 = @hgrPlot +; libsrc/apple/hgrsprite.pla: 0363: _scanMaskC:1 = @hgrColor +; libsrc/apple/hgrsprite.pla: 0364: _scanMaskD:1 = @hgrPlot +; libsrc/apple/hgrsprite.pla: 0365: done + !BYTE $26 ; LA _X050+0 +_F093 !WORD 0+0 + !BYTE $7A ; SAW _A001+1 +_F094 !WORD _A001+1 + !BYTE $26 ; LA _X030+0 +_F095 !WORD 0+0 + !BYTE $7A ; SAW _A002+1 +_F096 !WORD _A002+1 + !BYTE $26 ; LA _X050+0 +_F097 !WORD 0+0 + !BYTE $7A ; SAW _A003+1 +_F098 !WORD _A003+1 + !BYTE $26 ; LA _X030+0 +_F099 !WORD 0+0 + !BYTE $7A ; SAW _A004+1 +_F100 !WORD _A004+1 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 19 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 51 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: DIVMOD7 + !BYTE $C4,$C9,$D6,$CD,$CF,$C4,$37 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: HGRPLOT + !BYTE $C8,$C7,$D2,$D0,$CC,$CF,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: HGRRECT + !BYTE $C8,$C7,$D2,$D2,$C5,$C3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: HGRBLT + !BYTE $C8,$C7,$D2,$C2,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 39 ; ESD INDEX + ; DCI STRING: HGRCOPYSRC + !BYTE $C8,$C7,$D2,$C3,$CF,$D0,$D9,$D3,$D2,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + ; DCI STRING: HGRANDSRC + !BYTE $C8,$C7,$D2,$C1,$CE,$C4,$D3,$D2,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 41 ; ESD INDEX + ; DCI STRING: HGRXORSRC + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D3,$D2,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 42 ; ESD INDEX + ; DCI STRING: HGRCOPYDST + !BYTE $C8,$C7,$D2,$C3,$CF,$D0,$D9,$C4,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 44 ; ESD INDEX + ; DCI STRING: HGRCOLOR + !BYTE $C8,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 50 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 51 ; ESD INDEX + ; DCI STRING: SPRITECOMPILE + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C3,$CF,$CD,$D0,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: SPRITEDUP + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D5,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: SPRITEREAD + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D2,$C5,$C1,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: SPRITESAVE + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D3,$C1,$D6,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: SPRITEDRAW + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: SPRITEUNDRAW + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D5,$CE,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + ; DCI STRING: SPRITEDRAWXOR + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$D8,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C007 + ; DCI STRING: SPRITEUNDRAWXOR + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D5,$CE,$C4,$D2,$C1,$D7,$D8,$CF,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C008 + ; DCI STRING: SPRITEPOS + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D0,$CF,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C009 + ; DCI STRING: SPRITEPOSINDEX + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D0,$CF,$D3,$C9,$CE,$C4,$C5,$58 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C010 + ; DCI STRING: SPRITEUNDRAWLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D5,$CE,$C4,$D2,$C1,$D7,$CC,$C9,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C011 + ; DCI STRING: SPRITEDRAWLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$CC,$C9,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C012 + ; DCI STRING: SPRITEUNDRAWXORLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D5,$CE,$C4,$D2,$C1,$D7,$D8,$CF,$D2,$CC,$C9,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C013 + ; DCI STRING: SPRITEDRAWXORLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$D8,$CF,$D2,$CC,$C9,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C014 + ; DCI STRING: SPRITEADD + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C1,$C4,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C015 + ; DCI STRING: SPRITEDEL + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$C5,$4C + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C016 + ; DCI STRING: SPRITEDRAWBUF + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C017 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/hgrtile.a b/src/libsrc/apple/hgrtile.a new file mode 100644 index 0000000..5dc018a --- /dev/null +++ b/src/libsrc/apple/hgrtile.a @@ -0,0 +1,1532 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/hgrtile.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/hgrtile.pla: 0001: +; libsrc/apple/hgrtile.pla: 0002: // +; libsrc/apple/hgrtile.pla: 0003: // Hardware addresses +; libsrc/apple/hgrtile.pla: 0004: // +; libsrc/apple/hgrtile.pla: 0005: const showgraphics = $C050 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; showgraphics = 49232 +; libsrc/apple/hgrtile.pla: 0006: const showtext = $C051 + ; showtext = 49233 +; libsrc/apple/hgrtile.pla: 0007: const showfull = $C052 + ; showfull = 49234 +; libsrc/apple/hgrtile.pla: 0008: const showmix = $C053 + ; showmix = 49235 +; libsrc/apple/hgrtile.pla: 0009: const showpage1 = $C054 + ; showpage1 = 49236 +; libsrc/apple/hgrtile.pla: 0010: const showpage2 = $C055 + ; showpage2 = 49237 +; libsrc/apple/hgrtile.pla: 0011: const showlores = $C056 + ; showlores = 49238 +; libsrc/apple/hgrtile.pla: 0012: const showhires = $C057 + ; showhires = 49239 +; libsrc/apple/hgrtile.pla: 0013: const keyboard = $C000 + ; keyboard = 49152 +; libsrc/apple/hgrtile.pla: 0014: const keystrobe = $C010 + ; keystrobe = 49168 +; libsrc/apple/hgrtile.pla: 0015: const txt1 = $0400 + ; txt1 = 1024 +; libsrc/apple/hgrtile.pla: 0016: const txt2 = $0800 + ; txt2 = 2048 +; libsrc/apple/hgrtile.pla: 0017: const hgr1 = $2000 + ; hgr1 = 8192 +; libsrc/apple/hgrtile.pla: 0018: const hgr2 = $4000 + ; hgr2 = 16384 +; libsrc/apple/hgrtile.pla: 0019: const page1 = 0 + ; page1 = 0 +; libsrc/apple/hgrtile.pla: 0020: const page2 = 1 + ; page2 = 1 +; libsrc/apple/hgrtile.pla: 0021: +; libsrc/apple/hgrtile.pla: 0022: word txtbuff[] = txt1, txt2 +_D028 ; txtbuff[] = txt1, txt2 + !WORD $0400 + !WORD $0800 +; libsrc/apple/hgrtile.pla: 0023: word hgrbuff[] = hgr1, hgr2 +_D029 ; hgrbuff[] = hgr1, hgr2 + !WORD $2000 + !WORD $4000 +; libsrc/apple/hgrtile.pla: 0024: // +; libsrc/apple/hgrtile.pla: 0025: // Screen tile scanline addresses. +; libsrc/apple/hgrtile.pla: 0026: // +; libsrc/apple/hgrtile.pla: 0027: word[] rowaddr = $0000,$0080,$0100,$0180,$0200,$0280,$0300,$0380 +_D030 ; rowaddr = $0000,$0080,$0100,$0180,$0200,$0280,$0300,$0380 + !WORD $0000 + !WORD $0080 + !WORD $0100 + !WORD $0180 + !WORD $0200 + !WORD $0280 + !WORD $0300 + !WORD $0380 +; libsrc/apple/hgrtile.pla: 0028: word = $0028,$00A8,$0128,$01A8,$0228,$02A8,$0328,$03A8 + !WORD $0028 + !WORD $00A8 + !WORD $0128 + !WORD $01A8 + !WORD $0228 + !WORD $02A8 + !WORD $0328 + !WORD $03A8 +; libsrc/apple/hgrtile.pla: 0029: word = $0050,$00D0,$0150,$01D0,$0250,$02D0,$0350,$03D0 + !WORD $0050 + !WORD $00D0 + !WORD $0150 + !WORD $01D0 + !WORD $0250 + !WORD $02D0 + !WORD $0350 + !WORD $03D0 +; libsrc/apple/hgrtile.pla: 0030: byte[] scanbttml = $00,$80,$00,$80,$00,$80,$00,$80 +_D031 ; scanbttml = $00,$80,$00,$80,$00,$80,$00,$80 + !BYTE $00 + !BYTE $80 + !BYTE $00 + !BYTE $80 + !BYTE $00 + !BYTE $80 + !BYTE $00 + !BYTE $80 +; libsrc/apple/hgrtile.pla: 0031: byte = $28,$A8,$28,$A8,$28,$A8,$28,$A8 + !BYTE $28 + !BYTE $A8 + !BYTE $28 + !BYTE $A8 + !BYTE $28 + !BYTE $A8 + !BYTE $28 + !BYTE $A8 +; libsrc/apple/hgrtile.pla: 0032: byte = $50,$D0,$50,$D0,$50,$D0,$50,$D0 + !BYTE $50 + !BYTE $D0 + !BYTE $50 + !BYTE $D0 + !BYTE $50 + !BYTE $D0 + !BYTE $50 + !BYTE $D0 +; libsrc/apple/hgrtile.pla: 0033: byte[] scanbttmh = $1C,$1C,$1D,$1D,$1E,$1E,$1F,$1F +_D032 ; scanbttmh = $1C,$1C,$1D,$1D,$1E,$1E,$1F,$1F + !BYTE $1C + !BYTE $1C + !BYTE $1D + !BYTE $1D + !BYTE $1E + !BYTE $1E + !BYTE $1F + !BYTE $1F +; libsrc/apple/hgrtile.pla: 0034: byte = $1C,$1C,$1D,$1D,$1E,$1E,$1F,$1F + !BYTE $1C + !BYTE $1C + !BYTE $1D + !BYTE $1D + !BYTE $1E + !BYTE $1E + !BYTE $1F + !BYTE $1F +; libsrc/apple/hgrtile.pla: 0035: byte = $1C,$1C,$1D,$1D,$1E,$1E,$1F,$1F + !BYTE $1C + !BYTE $1C + !BYTE $1D + !BYTE $1D + !BYTE $1E + !BYTE $1E + !BYTE $1F + !BYTE $1F +; libsrc/apple/hgrtile.pla: 0036: +; libsrc/apple/hgrtile.pla: 0037: byte hbmask = $81,$82,$84,$88,$90,$A0,$C0 +_D033 ; hbmask = $81,$82,$84,$88,$90,$A0,$C0 + !BYTE $81 + !BYTE $82 + !BYTE $84 + !BYTE $88 + !BYTE $90 + !BYTE $A0 + !BYTE $C0 +; libsrc/apple/hgrtile.pla: 0038: word hcolor[] = $0000,$552A,$2A55,$7F7F,$8080,$D5AA,$AAD5,$FFFF +_D034 ; hcolor[] = $0000,$552A,$2A55,$7F7F,$8080,$D5AA,$AAD5,$FFFF + !WORD $0000 + !WORD $552A + !WORD $2A55 + !WORD $7F7F + !WORD $8080 + !WORD $D5AA + !WORD $AAD5 + !WORD $FFFF +; libsrc/apple/hgrtile.pla: 0039: byte drawpage = 0 +_D035 ; drawpage = 0 + !BYTE $00 +; libsrc/apple/hgrtile.pla: 0040: word drawbuff = hgr1 +_D036 ; drawbuff = hgr1 + !WORD $2000 +; libsrc/apple/hgrtile.pla: 0041: +; libsrc/apple/hgrtile.pla: 0042: asm tileInc#0 +_A000 ; tileInc() +; libsrc/apple/hgrtile.pla: 0043: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/hgrtile.pla: 0044: CURSH = $24 +CURSH = $24 +; libsrc/apple/hgrtile.pla: 0045: CURSV = $25 +CURSV = $25 +; libsrc/apple/hgrtile.pla: 0046: GBASL = $26 +GBASL = $26 +; libsrc/apple/hgrtile.pla: 0047: GBASH = $27 +GBASH = $27 +; libsrc/apple/hgrtile.pla: 0048: GBASE = GBASL +GBASE = GBASL +; libsrc/apple/hgrtile.pla: 0049: TBASL = $28 +TBASL = $28 +; libsrc/apple/hgrtile.pla: 0050: TBASH = $29 +TBASH = $29 +; libsrc/apple/hgrtile.pla: 0051: TBASE = TBASL +TBASE = TBASL +; libsrc/apple/hgrtile.pla: 0052: TBAS2L = $2A +TBAS2L = $2A +; libsrc/apple/hgrtile.pla: 0053: TBAS2H = $2B +TBAS2H = $2B +; libsrc/apple/hgrtile.pla: 0054: TBAS2E = TBAS2L +TBAS2E = TBAS2L +; libsrc/apple/hgrtile.pla: 0055: end +; libsrc/apple/hgrtile.pla: 0056: //export def tileDraw(x, y, tileptr)#0 +; libsrc/apple/hgrtile.pla: 0057: // var scrnptr +; libsrc/apple/hgrtile.pla: 0058: // +; libsrc/apple/hgrtile.pla: 0059: // scrnptr = (scanaddr[y] | drawbuff) + x +; libsrc/apple/hgrtile.pla: 0060: // scrnptr->[$1C00] = tileptr->[7] +; libsrc/apple/hgrtile.pla: 0061: // scrnptr->[$1800] = tileptr->[6] +; libsrc/apple/hgrtile.pla: 0062: // scrnptr->[$1400] = tileptr->[5] +; libsrc/apple/hgrtile.pla: 0063: // scrnptr->[$1000] = tileptr->[4] +; libsrc/apple/hgrtile.pla: 0064: // scrnptr->[$0C00] = tileptr->[3] +; libsrc/apple/hgrtile.pla: 0065: // scrnptr->[$0800] = tileptr->[2] +; libsrc/apple/hgrtile.pla: 0066: // scrnptr->[$0400] = tileptr->[1] +; libsrc/apple/hgrtile.pla: 0067: // scrnptr->[$0000] = tileptr->[0] +; libsrc/apple/hgrtile.pla: 0068: //end +; libsrc/apple/hgrtile.pla: 0069: export asm tileDraw(x, y, tileptr)#0 +_A001 ; tileDraw() +; libsrc/apple/hgrtile.pla: 0070: LDA ESTKL+0,X ; TILEPTRL + LDA ESTKL+0,X ; TILEPTRL +; libsrc/apple/hgrtile.pla: 0071: STA SRCL + STA SRCL +; libsrc/apple/hgrtile.pla: 0072: LDA ESTKH+0,X ; TILEPTRH + LDA ESTKH+0,X ; TILEPTRH +; libsrc/apple/hgrtile.pla: 0073: STA SRCH + STA SRCH +; libsrc/apple/hgrtile.pla: 0074: LDY ESTKL+1,X ; Y COORD + LDY ESTKL+1,X ; Y COORD +; libsrc/apple/hgrtile.pla: 0075: LDA ESTKL+2,X ; X COORD + LDA ESTKL+2,X ; X COORD +; libsrc/apple/hgrtile.pla: 0076: CLC + CLC +; libsrc/apple/hgrtile.pla: 0077: end +; libsrc/apple/hgrtile.pla: 0078: asm _tileDraw +_A002 ; _tileDraw() +; libsrc/apple/hgrtile.pla: 0079: ADC $1000,Y ; SCANBTTML + ADC $1000,Y ; SCANBTTML +; libsrc/apple/hgrtile.pla: 0080: STA ESTKL+0,X ; USE ESTK AS POINTER + STA ESTKL+0,X ; USE ESTK AS POINTER +; libsrc/apple/hgrtile.pla: 0081: LDA $3001 ; DRAWBUFFH + LDA $3001 ; DRAWBUFFH +; libsrc/apple/hgrtile.pla: 0082: ADC $2000,Y ; SCANBTTMH + ADC $2000,Y ; SCANBTTMH +; libsrc/apple/hgrtile.pla: 0083: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0084: LDY #$07 ; DRAW BOTTOM UP + LDY #$07 ; DRAW BOTTOM UP +; libsrc/apple/hgrtile.pla: 0085: SEC + SEC +; libsrc/apple/hgrtile.pla: 0086: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0087: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0088: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0089: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0090: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0091: DEY + DEY +; libsrc/apple/hgrtile.pla: 0092: BNE - + BNE - +; libsrc/apple/hgrtile.pla: 0093: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0094: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0095: INX + INX +; libsrc/apple/hgrtile.pla: 0096: INX + INX +; libsrc/apple/hgrtile.pla: 0097: INX + INX +; libsrc/apple/hgrtile.pla: 0098: RTS + RTS +; libsrc/apple/hgrtile.pla: 0099: end +; libsrc/apple/hgrtile.pla: 0100: //export def tileXorDraw(x, y, tileptr)#0 +; libsrc/apple/hgrtile.pla: 0101: // var scrnptr +; libsrc/apple/hgrtile.pla: 0102: // +; libsrc/apple/hgrtile.pla: 0103: // scrnptr = (scanaddr[y] | drawbuff) + x +; libsrc/apple/hgrtile.pla: 0104: // scrnptr->[$1C00] = tileptr->[7] +; libsrc/apple/hgrtile.pla: 0105: // scrnptr->[$1800] = tileptr->[6] +; libsrc/apple/hgrtile.pla: 0106: // scrnptr->[$1400] = tileptr->[5] +; libsrc/apple/hgrtile.pla: 0107: // scrnptr->[$1000] = tileptr->[4] +; libsrc/apple/hgrtile.pla: 0108: // scrnptr->[$0C00] = tileptr->[3] +; libsrc/apple/hgrtile.pla: 0109: // scrnptr->[$0800] = tileptr->[2] +; libsrc/apple/hgrtile.pla: 0110: // scrnptr->[$0400] = tileptr->[1] +; libsrc/apple/hgrtile.pla: 0111: // scrnptr->[$0000] = tileptr->[0] +; libsrc/apple/hgrtile.pla: 0112: //end +; libsrc/apple/hgrtile.pla: 0113: export asm tileXorDraw(x, y, tileptr)#0 +_A003 ; tileXorDraw() +; libsrc/apple/hgrtile.pla: 0114: LDA ESTKL+0,X ; TILEPTRL + LDA ESTKL+0,X ; TILEPTRL +; libsrc/apple/hgrtile.pla: 0115: STA SRCL + STA SRCL +; libsrc/apple/hgrtile.pla: 0116: LDA ESTKH+0,X ; TILEPTRH + LDA ESTKH+0,X ; TILEPTRH +; libsrc/apple/hgrtile.pla: 0117: STA SRCH + STA SRCH +; libsrc/apple/hgrtile.pla: 0118: LDY ESTKL+1,X ; Y COORD + LDY ESTKL+1,X ; Y COORD +; libsrc/apple/hgrtile.pla: 0119: LDA ESTKL+2,X ; X COORD + LDA ESTKL+2,X ; X COORD +; libsrc/apple/hgrtile.pla: 0120: CLC + CLC +; libsrc/apple/hgrtile.pla: 0121: end +; libsrc/apple/hgrtile.pla: 0122: asm _tileXDraw +_A004 ; _tileXDraw() +; libsrc/apple/hgrtile.pla: 0123: ADC $1000,Y ; SCANBTTML + ADC $1000,Y ; SCANBTTML +; libsrc/apple/hgrtile.pla: 0124: STA ESTKL+0,X ; USE ESTK AS POINTER + STA ESTKL+0,X ; USE ESTK AS POINTER +; libsrc/apple/hgrtile.pla: 0125: LDA $3001 ; DRAWBUFFH + LDA $3001 ; DRAWBUFFH +; libsrc/apple/hgrtile.pla: 0126: ADC $2000,Y ; SCANBTTMH + ADC $2000,Y ; SCANBTTMH +; libsrc/apple/hgrtile.pla: 0127: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0128: LDY #$07 ; DRAW BOTTOM UP + LDY #$07 ; DRAW BOTTOM UP +; libsrc/apple/hgrtile.pla: 0129: SEC + SEC +; libsrc/apple/hgrtile.pla: 0130: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0131: EOR (ESTKL,X) + EOR (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0132: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0133: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0134: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0135: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0136: DEY + DEY +; libsrc/apple/hgrtile.pla: 0137: BNE - + BNE - +; libsrc/apple/hgrtile.pla: 0138: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0139: EOR (ESTKL,X) + EOR (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0140: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0141: INX + INX +; libsrc/apple/hgrtile.pla: 0142: INX + INX +; libsrc/apple/hgrtile.pla: 0143: INX + INX +; libsrc/apple/hgrtile.pla: 0144: RTS + RTS +; libsrc/apple/hgrtile.pla: 0145: end +; libsrc/apple/hgrtile.pla: 0146: //export def tileOrDraw(x, y, tileptr)#0 +; libsrc/apple/hgrtile.pla: 0147: // var scrnptr +; libsrc/apple/hgrtile.pla: 0148: // +; libsrc/apple/hgrtile.pla: 0149: // scrnptr = (scanaddr[y] | drawbuff) + x +; libsrc/apple/hgrtile.pla: 0150: // scrnptr->[$1C00] = tileptr->[7] +; libsrc/apple/hgrtile.pla: 0151: // scrnptr->[$1800] = tileptr->[6] +; libsrc/apple/hgrtile.pla: 0152: // scrnptr->[$1400] = tileptr->[5] +; libsrc/apple/hgrtile.pla: 0153: // scrnptr->[$1000] = tileptr->[4] +; libsrc/apple/hgrtile.pla: 0154: // scrnptr->[$0C00] = tileptr->[3] +; libsrc/apple/hgrtile.pla: 0155: // scrnptr->[$0800] = tileptr->[2] +; libsrc/apple/hgrtile.pla: 0156: // scrnptr->[$0400] = tileptr->[1] +; libsrc/apple/hgrtile.pla: 0157: // scrnptr->[$0000] = tileptr->[0] +; libsrc/apple/hgrtile.pla: 0158: //end +; libsrc/apple/hgrtile.pla: 0159: export asm tileOrDraw(x, y, tileptr)#0 +_A005 ; tileOrDraw() +; libsrc/apple/hgrtile.pla: 0160: LDA ESTKL+0,X ; TILEPTRL + LDA ESTKL+0,X ; TILEPTRL +; libsrc/apple/hgrtile.pla: 0161: STA SRCL + STA SRCL +; libsrc/apple/hgrtile.pla: 0162: LDA ESTKH+0,X ; TILEPTRH + LDA ESTKH+0,X ; TILEPTRH +; libsrc/apple/hgrtile.pla: 0163: STA SRCH + STA SRCH +; libsrc/apple/hgrtile.pla: 0164: LDY ESTKL+1,X ; Y COORD + LDY ESTKL+1,X ; Y COORD +; libsrc/apple/hgrtile.pla: 0165: LDA ESTKL+2,X ; X COORD + LDA ESTKL+2,X ; X COORD +; libsrc/apple/hgrtile.pla: 0166: CLC + CLC +; libsrc/apple/hgrtile.pla: 0167: end +; libsrc/apple/hgrtile.pla: 0168: asm _tileODraw +_A006 ; _tileODraw() +; libsrc/apple/hgrtile.pla: 0169: ADC $1000,Y ; SCANBTTML + ADC $1000,Y ; SCANBTTML +; libsrc/apple/hgrtile.pla: 0170: STA ESTKL+0,X ; USE ESTK AS POINTER + STA ESTKL+0,X ; USE ESTK AS POINTER +; libsrc/apple/hgrtile.pla: 0171: LDA $3001 ; DRAWBUFFH + LDA $3001 ; DRAWBUFFH +; libsrc/apple/hgrtile.pla: 0172: ADC $2000,Y ; SCANBTTMH + ADC $2000,Y ; SCANBTTMH +; libsrc/apple/hgrtile.pla: 0173: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0174: LDY #$07 ; DRAW BOTTOM UP + LDY #$07 ; DRAW BOTTOM UP +; libsrc/apple/hgrtile.pla: 0175: SEC + SEC +; libsrc/apple/hgrtile.pla: 0176: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0177: ORA (ESTKL,X) + ORA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0178: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0179: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0180: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0181: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0182: DEY + DEY +; libsrc/apple/hgrtile.pla: 0183: BNE - + BNE - +; libsrc/apple/hgrtile.pla: 0184: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0185: ORA (ESTKL,X) + ORA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0186: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0187: INX + INX +; libsrc/apple/hgrtile.pla: 0188: INX + INX +; libsrc/apple/hgrtile.pla: 0189: INX + INX +; libsrc/apple/hgrtile.pla: 0190: RTS + RTS +; libsrc/apple/hgrtile.pla: 0191: end +; libsrc/apple/hgrtile.pla: 0192: //export def tileAndDraw(x, y, tileptr)#0 +; libsrc/apple/hgrtile.pla: 0193: // var scrnptr +; libsrc/apple/hgrtile.pla: 0194: // +; libsrc/apple/hgrtile.pla: 0195: // scrnptr = (scanaddr[y] | drawbuff) + x +; libsrc/apple/hgrtile.pla: 0196: // scrnptr->[$1C00] = tileptr->[7] +; libsrc/apple/hgrtile.pla: 0197: // scrnptr->[$1800] = tileptr->[6] +; libsrc/apple/hgrtile.pla: 0198: // scrnptr->[$1400] = tileptr->[5] +; libsrc/apple/hgrtile.pla: 0199: // scrnptr->[$1000] = tileptr->[4] +; libsrc/apple/hgrtile.pla: 0200: // scrnptr->[$0C00] = tileptr->[3] +; libsrc/apple/hgrtile.pla: 0201: // scrnptr->[$0800] = tileptr->[2] +; libsrc/apple/hgrtile.pla: 0202: // scrnptr->[$0400] = tileptr->[1] +; libsrc/apple/hgrtile.pla: 0203: // scrnptr->[$0000] = tileptr->[0] +; libsrc/apple/hgrtile.pla: 0204: //end +; libsrc/apple/hgrtile.pla: 0205: export asm tileAndDraw(x, y, tileptr)#0 +_A007 ; tileAndDraw() +; libsrc/apple/hgrtile.pla: 0206: LDA ESTKL+0,X ; TILEPTRL + LDA ESTKL+0,X ; TILEPTRL +; libsrc/apple/hgrtile.pla: 0207: STA SRCL + STA SRCL +; libsrc/apple/hgrtile.pla: 0208: LDA ESTKH+0,X ; TILEPTRH + LDA ESTKH+0,X ; TILEPTRH +; libsrc/apple/hgrtile.pla: 0209: STA SRCH + STA SRCH +; libsrc/apple/hgrtile.pla: 0210: LDY ESTKL+1,X ; Y COORD + LDY ESTKL+1,X ; Y COORD +; libsrc/apple/hgrtile.pla: 0211: LDA ESTKL+2,X ; X COORD + LDA ESTKL+2,X ; X COORD +; libsrc/apple/hgrtile.pla: 0212: CLC + CLC +; libsrc/apple/hgrtile.pla: 0213: end +; libsrc/apple/hgrtile.pla: 0214: asm _tileADraw +_A008 ; _tileADraw() +; libsrc/apple/hgrtile.pla: 0215: ADC $1000,Y ; SCANBTTML + ADC $1000,Y ; SCANBTTML +; libsrc/apple/hgrtile.pla: 0216: STA ESTKL+0,X ; USE ESTK AS POINTER + STA ESTKL+0,X ; USE ESTK AS POINTER +; libsrc/apple/hgrtile.pla: 0217: LDA $3001 ; DRAWBUFFH + LDA $3001 ; DRAWBUFFH +; libsrc/apple/hgrtile.pla: 0218: ADC $2000,Y ; SCANBTTMH + ADC $2000,Y ; SCANBTTMH +; libsrc/apple/hgrtile.pla: 0219: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0220: LDY #$07 ; DRAW BOTTOM UP + LDY #$07 ; DRAW BOTTOM UP +; libsrc/apple/hgrtile.pla: 0221: SEC + SEC +; libsrc/apple/hgrtile.pla: 0222: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0223: AND (ESTKL,X) + AND (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0224: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0225: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0226: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0227: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/hgrtile.pla: 0228: DEY + DEY +; libsrc/apple/hgrtile.pla: 0229: BNE - + BNE - +; libsrc/apple/hgrtile.pla: 0230: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0231: AND (ESTKL,X) + AND (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0232: STA (ESTKL,X) + STA (ESTKL,X) +; libsrc/apple/hgrtile.pla: 0233: INX + INX +; libsrc/apple/hgrtile.pla: 0234: INX + INX +; libsrc/apple/hgrtile.pla: 0235: INX + INX +; libsrc/apple/hgrtile.pla: 0236: RTS + RTS +; libsrc/apple/hgrtile.pla: 0237: end +; libsrc/apple/hgrtile.pla: 0238: //export def tileDrawStr(x, y, strptr, strlen, tileset)#0 +; libsrc/apple/hgrtile.pla: 0239: // while strlen +; libsrc/apple/hgrtile.pla: 0240: // tileDraw(x, y, tileset + ^strptr * 8) +; libsrc/apple/hgrtile.pla: 0241: // x++ +; libsrc/apple/hgrtile.pla: 0242: // strptr++ +; libsrc/apple/hgrtile.pla: 0243: // strlen-- +; libsrc/apple/hgrtile.pla: 0244: // loop +; libsrc/apple/hgrtile.pla: 0245: //end +; libsrc/apple/hgrtile.pla: 0246: export asm tileDrawStr(x, y, strptr, strlen, tileset)#0 +_A009 ; tileDrawStr() +; libsrc/apple/hgrtile.pla: 0247: LDA ESTKL+0,X ; TILESETPTRL + LDA ESTKL+0,X ; TILESETPTRL +; libsrc/apple/hgrtile.pla: 0248: STA DSTL + STA DSTL +; libsrc/apple/hgrtile.pla: 0249: LDA ESTKH+0,X ; TILESETPTRH + LDA ESTKH+0,X ; TILESETPTRH +; libsrc/apple/hgrtile.pla: 0250: STA DSTH + STA DSTH +; libsrc/apple/hgrtile.pla: 0251: LDA ESTKL+2,X ; STRPTRL + LDA ESTKL+2,X ; STRPTRL +; libsrc/apple/hgrtile.pla: 0252: STA TMPL + STA TMPL +; libsrc/apple/hgrtile.pla: 0253: LDA ESTKH+2,X ; STRPTRH + LDA ESTKH+2,X ; STRPTRH +; libsrc/apple/hgrtile.pla: 0254: STA TMPH + STA TMPH +; libsrc/apple/hgrtile.pla: 0255: LDY ESTKL+3,X ; Y COORD + LDY ESTKL+3,X ; Y COORD +; libsrc/apple/hgrtile.pla: 0256: LDA ESTKL+4,X ; X COORD + LDA ESTKL+4,X ; X COORD +; libsrc/apple/hgrtile.pla: 0257: CLC + CLC +; libsrc/apple/hgrtile.pla: 0258: end +; libsrc/apple/hgrtile.pla: 0259: asm _tileDSa +_A010 ; _tileDSa() +; libsrc/apple/hgrtile.pla: 0260: ADC $1000,Y ; SCANBTTML + ADC $1000,Y ; SCANBTTML +; libsrc/apple/hgrtile.pla: 0261: STA $D000 ; SELF MODIFY LOOP + STA $D000 ; SELF MODIFY LOOP +; libsrc/apple/hgrtile.pla: 0262: STA $D001 + STA $D001 +; libsrc/apple/hgrtile.pla: 0263: STA $D002 + STA $D002 +; libsrc/apple/hgrtile.pla: 0264: STA $D003 + STA $D003 +; libsrc/apple/hgrtile.pla: 0265: STA $D004 + STA $D004 +; libsrc/apple/hgrtile.pla: 0266: STA $D005 + STA $D005 +; libsrc/apple/hgrtile.pla: 0267: STA $D006 + STA $D006 +; libsrc/apple/hgrtile.pla: 0268: STA $D007 + STA $D007 +; libsrc/apple/hgrtile.pla: 0269: end +; libsrc/apple/hgrtile.pla: 0270: asm _tileDSb +_A011 ; _tileDSb() +; libsrc/apple/hgrtile.pla: 0271: LDA $3001 ; DRAWBUFFH + LDA $3001 ; DRAWBUFFH +; libsrc/apple/hgrtile.pla: 0272: ADC $2000,Y ; SCANBTTMH + ADC $2000,Y ; SCANBTTMH +; libsrc/apple/hgrtile.pla: 0273: STA $D008 ; SELF MODIFY LOOP + STA $D008 ; SELF MODIFY LOOP +; libsrc/apple/hgrtile.pla: 0274: SEC + SEC +; libsrc/apple/hgrtile.pla: 0275: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0276: STA $D009 + STA $D009 +; libsrc/apple/hgrtile.pla: 0277: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0278: STA $D00A + STA $D00A +; libsrc/apple/hgrtile.pla: 0279: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0280: STA $D00B + STA $D00B +; libsrc/apple/hgrtile.pla: 0281: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0282: STA $D00C + STA $D00C +; libsrc/apple/hgrtile.pla: 0283: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0284: STA $D00D + STA $D00D +; libsrc/apple/hgrtile.pla: 0285: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0286: STA $D00E + STA $D00E +; libsrc/apple/hgrtile.pla: 0287: SBC #$04 + SBC #$04 +; libsrc/apple/hgrtile.pla: 0288: STA $D00F + STA $D00F +; libsrc/apple/hgrtile.pla: 0289: LDA ESTKL+1,X ; STRLEN + LDA ESTKL+1,X ; STRLEN +; libsrc/apple/hgrtile.pla: 0290: STX IPY + STX IPY +; libsrc/apple/hgrtile.pla: 0291: TAX ; DRAW RIGHT TO LEFT + TAX ; DRAW RIGHT TO LEFT +; libsrc/apple/hgrtile.pla: 0292: BEQ + + BEQ + +; libsrc/apple/hgrtile.pla: 0293: DEX + DEX +; libsrc/apple/hgrtile.pla: 0294: LDY #$00 + LDY #$00 +; libsrc/apple/hgrtile.pla: 0295: - STY SRCH +- STY SRCH +; libsrc/apple/hgrtile.pla: 0296: TXA + TXA +; libsrc/apple/hgrtile.pla: 0297: TAY + TAY +; libsrc/apple/hgrtile.pla: 0298: LDA (TMP),Y ; TILE INDEX * 8 + LDA (TMP),Y ; TILE INDEX * 8 +; libsrc/apple/hgrtile.pla: 0299: ASL + ASL +; libsrc/apple/hgrtile.pla: 0300: ROL SRCH + ROL SRCH +; libsrc/apple/hgrtile.pla: 0301: ASL + ASL +; libsrc/apple/hgrtile.pla: 0302: ROL SRCH + ROL SRCH +; libsrc/apple/hgrtile.pla: 0303: ASL + ASL +; libsrc/apple/hgrtile.pla: 0304: ROL SRCH + ROL SRCH +; libsrc/apple/hgrtile.pla: 0305: ; CLC ; CARRY IS CLEAR FROM ABOVE +; CLC ; CARRY IS CLEAR FROM ABOVE +; libsrc/apple/hgrtile.pla: 0306: ADC DSTL ; ADD TO TILESETPTR + ADC DSTL ; ADD TO TILESETPTR +; libsrc/apple/hgrtile.pla: 0307: STA SRCL + STA SRCL +; libsrc/apple/hgrtile.pla: 0308: LDA SRCH + LDA SRCH +; libsrc/apple/hgrtile.pla: 0309: ADC DSTH + ADC DSTH +; libsrc/apple/hgrtile.pla: 0310: STA SRCH + STA SRCH +; libsrc/apple/hgrtile.pla: 0311: LDY #$07 ; DRAW BOTTOM UP + LDY #$07 ; DRAW BOTTOM UP +; libsrc/apple/hgrtile.pla: 0312: end +; libsrc/apple/hgrtile.pla: 0313: asm _tileDSc +_A012 ; _tileDSc() +; libsrc/apple/hgrtile.pla: 0314: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0315: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0316: DEY + DEY +; libsrc/apple/hgrtile.pla: 0317: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0318: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0319: DEY + DEY +; libsrc/apple/hgrtile.pla: 0320: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0321: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0322: DEY + DEY +; libsrc/apple/hgrtile.pla: 0323: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0324: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0325: DEY + DEY +; libsrc/apple/hgrtile.pla: 0326: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0327: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0328: DEY + DEY +; libsrc/apple/hgrtile.pla: 0329: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0330: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0331: DEY + DEY +; libsrc/apple/hgrtile.pla: 0332: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0333: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0334: DEY + DEY +; libsrc/apple/hgrtile.pla: 0335: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/hgrtile.pla: 0336: STA $4000,X + STA $4000,X +; libsrc/apple/hgrtile.pla: 0337: DEX + DEX +; libsrc/apple/hgrtile.pla: 0338: BPL - + BPL - +; libsrc/apple/hgrtile.pla: 0339: LDX IPY + LDX IPY +; libsrc/apple/hgrtile.pla: 0340: + INX ++ INX +; libsrc/apple/hgrtile.pla: 0341: INX + INX +; libsrc/apple/hgrtile.pla: 0342: INX + INX +; libsrc/apple/hgrtile.pla: 0343: INX + INX +; libsrc/apple/hgrtile.pla: 0344: INX + INX +; libsrc/apple/hgrtile.pla: 0345: RTS + RTS +; libsrc/apple/hgrtile.pla: 0346: end +; libsrc/apple/hgrtile.pla: 0347: export def tileFromText(txtpage, tileset)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; txtpage -> [0] + ; tileset -> [2] +_C000 ; tileFromText() +; libsrc/apple/hgrtile.pla: 0348: byte y + ; y -> [4] +; libsrc/apple/hgrtile.pla: 0349: word txtptr + ; txtptr -> [5] +; libsrc/apple/hgrtile.pla: 0350: +; libsrc/apple/hgrtile.pla: 0351: txtptr = txtbuff[txtpage & 1] + !BYTE $58,$07,$02 ; ENTER 7,2 +; libsrc/apple/hgrtile.pla: 0352: for y = 0 to 23 + !BYTE $26 ; LA _D028+0 +_F000 !WORD _D028+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $76,$05 ; SLW [5] + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$04 ; DLB [4] +; libsrc/apple/hgrtile.pla: 0353: tileDrawStr(0, y, rowaddr[y] | txtptr, 40, tileset) +; libsrc/apple/hgrtile.pla: 0354: next + !BYTE $00 ; CN 0 + !BYTE $64,$04 ; LLB [4] + !BYTE $26 ; LA _D030+0 +_F001 !WORD _D030+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $66,$05 ; LLW [5] + !BYTE $96 ; OR + !BYTE $2A,$28 ; CB 40 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A009 +_F002 !WORD _A009 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/hgrtile.pla: 0355: end + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/hgrtile.pla: 0356: export def tileMode(mode)#1 + ; mode -> [0] +_C001 ; tileMode() +; libsrc/apple/hgrtile.pla: 0357: if mode + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrtile.pla: 0358: // +; libsrc/apple/hgrtile.pla: 0359: // Set HGR mode +; libsrc/apple/hgrtile.pla: 0360: // +; libsrc/apple/hgrtile.pla: 0361: memset(hgr1, 0, $2000) // Clear HGR page 1 +; libsrc/apple/hgrtile.pla: 0362: ^showpage1 +; libsrc/apple/hgrtile.pla: 0363: ^showfull +; libsrc/apple/hgrtile.pla: 0364: ^showhires +; libsrc/apple/hgrtile.pla: 0365: ^showgraphics +; libsrc/apple/hgrtile.pla: 0366: drawpage = 0 +; libsrc/apple/hgrtile.pla: 0367: drawbuff = hgr1 +; libsrc/apple/hgrtile.pla: 0368: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X017 +_F003 !WORD 0 + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $68,$52,$C0 ; LAB 49234 + !BYTE $30 ; DROP + !BYTE $68,$57,$C0 ; LAB 49239 + !BYTE $30 ; DROP + !BYTE $68,$50,$C0 ; LAB 49232 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D035+0 +_F004 !WORD _D035+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $7A ; SAW _D036+0 +_F005 !WORD _D036+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrtile.pla: 0369: fin +_B004 +_B005 +; libsrc/apple/hgrtile.pla: 0370: // +; libsrc/apple/hgrtile.pla: 0371: // Show text mode +; libsrc/apple/hgrtile.pla: 0372: // +; libsrc/apple/hgrtile.pla: 0373: ^showpage1 +; libsrc/apple/hgrtile.pla: 0374: ^showtext +; libsrc/apple/hgrtile.pla: 0375: return 0 + !BYTE $68,$54,$C0 ; LAB 49236 + !BYTE $30 ; DROP + !BYTE $68,$51,$C0 ; LAB 49233 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrtile.pla: 0376: end +; libsrc/apple/hgrtile.pla: 0377: export def tileClear#0 +_C002 ; tileClear() +; libsrc/apple/hgrtile.pla: 0378: memset(drawbuff, $0000, drawbuff) // Clear current HGR page +; libsrc/apple/hgrtile.pla: 0379: end + !BYTE $6A ; LAW _D036+0 +_F006 !WORD _D036+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D036+0 +_F007 !WORD _D036+0 + !BYTE $54 ; CALL _X017 +_F008 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/hgrtile.pla: 0380: // +; libsrc/apple/hgrtile.pla: 0381: // Set display page, return other page +; libsrc/apple/hgrtile.pla: 0382: // +; libsrc/apple/hgrtile.pla: 0383: export def tileShow(page)#1 + ; page -> [0] +_C003 ; tileShow() +; libsrc/apple/hgrtile.pla: 0384: page = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrtile.pla: 0385: ^(showpage1 + page) +; libsrc/apple/hgrtile.pla: 0386: return page ^ 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $76,$00 ; SLW [0] + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrtile.pla: 0387: end +; libsrc/apple/hgrtile.pla: 0388: export def tileSwap#1 +_C004 ; tileSwap() +; libsrc/apple/hgrtile.pla: 0389: ^(showpage1 + drawpage) +; libsrc/apple/hgrtile.pla: 0390: drawpage = drawpage ^ 1 +; libsrc/apple/hgrtile.pla: 0391: drawbuff = hgrbuff[drawpage] +; libsrc/apple/hgrtile.pla: 0392: return drawpage + !BYTE $2C,$54,$C0 ; CW 49236 + !BYTE $B4 ; ADDAB _D035+0 +_F009 !WORD _D035+0 + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D035+0 +_F010 !WORD _D035+0 + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D035+0 +_F011 !WORD _D035+0 + !BYTE $26 ; LA _D029+0 +_F012 !WORD _D029+0 + !BYTE $BC ; IDXAB _D035+0 +_F013 !WORD _D035+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D036+0 +_F014 !WORD _D036+0 + !BYTE $68 ; LAB _D035+0 +_F015 !WORD _D035+0 + !BYTE $5C ; RET +; libsrc/apple/hgrtile.pla: 0393: end +; libsrc/apple/hgrtile.pla: 0394: export def tileDrawBuf(page)#1 + ; page -> [0] +_C005 ; tileDrawBuf() +; libsrc/apple/hgrtile.pla: 0395: drawpage = page & 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/hgrtile.pla: 0396: drawbuff = hgrbuff[drawpage] +; libsrc/apple/hgrtile.pla: 0397: return drawpage + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $78 ; SAB _D035+0 +_F016 !WORD _D035+0 + !BYTE $26 ; LA _D029+0 +_F017 !WORD _D029+0 + !BYTE $BC ; IDXAB _D035+0 +_F018 !WORD _D035+0 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D036+0 +_F019 !WORD _D036+0 + !BYTE $68 ; LAB _D035+0 +_F020 !WORD _D035+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/hgrtile.pla: 0398: end +; libsrc/apple/hgrtile.pla: 0399: // +; libsrc/apple/hgrtile.pla: 0400: // Assembly fixups +; libsrc/apple/hgrtile.pla: 0401: // +; libsrc/apple/hgrtile.pla: 0402: _tileDraw:1 = @scanbttml +_INIT +; libsrc/apple/hgrtile.pla: 0403: _tileDraw:6 = @drawbuff.1 +; libsrc/apple/hgrtile.pla: 0404: _tileDraw:9 = @scanbttmh +; libsrc/apple/hgrtile.pla: 0405: _tileXDraw:1 = @scanbttml +; libsrc/apple/hgrtile.pla: 0406: _tileXDraw:6 = @drawbuff.1 +; libsrc/apple/hgrtile.pla: 0407: _tileXDraw:9 = @scanbttmh +; libsrc/apple/hgrtile.pla: 0408: _tileODraw:1 = @scanbttml +; libsrc/apple/hgrtile.pla: 0409: _tileODraw:6 = @drawbuff.1 +; libsrc/apple/hgrtile.pla: 0410: _tileODraw:9 = @scanbttmh +; libsrc/apple/hgrtile.pla: 0411: _tileADraw:1 = @scanbttml +; libsrc/apple/hgrtile.pla: 0412: _tileADraw:6 = @drawbuff.1 +; libsrc/apple/hgrtile.pla: 0413: _tileADraw:9 = @scanbttmh +; libsrc/apple/hgrtile.pla: 0414: _tileDSa:1 = @scanbttml +; libsrc/apple/hgrtile.pla: 0415: _tileDSa:4 = @_tileDSc.3 +; libsrc/apple/hgrtile.pla: 0416: _tileDSa:7 = @_tileDSc.9 +; libsrc/apple/hgrtile.pla: 0417: _tileDSa:10 = @_tileDSc.15 +; libsrc/apple/hgrtile.pla: 0418: _tileDSa:13 = @_tileDSc.21 +; libsrc/apple/hgrtile.pla: 0419: _tileDSa:16 = @_tileDSc.27 +; libsrc/apple/hgrtile.pla: 0420: _tileDSa:19 = @_tileDSc.33 +; libsrc/apple/hgrtile.pla: 0421: _tileDSa:22 = @_tileDSc.39 +; libsrc/apple/hgrtile.pla: 0422: _tileDSa:25 = @_tileDSc.45 +; libsrc/apple/hgrtile.pla: 0423: _tileDSa:28 = @_tileDSc.51 +; libsrc/apple/hgrtile.pla: 0424: _tileDSb:1 = @drawbuff.1 +; libsrc/apple/hgrtile.pla: 0425: _tileDSb:4 = @scanbttmh +; libsrc/apple/hgrtile.pla: 0426: _tileDSb:7 = @_tileDSc.4 +; libsrc/apple/hgrtile.pla: 0427: _tileDSb:13 = @_tileDSc.10 +; libsrc/apple/hgrtile.pla: 0428: _tileDSb:18 = @_tileDSc.16 +; libsrc/apple/hgrtile.pla: 0429: _tileDSb:23 = @_tileDSc.22 +; libsrc/apple/hgrtile.pla: 0430: _tileDSb:28 = @_tileDSc.28 +; libsrc/apple/hgrtile.pla: 0431: _tileDSb:33 = @_tileDSc.34 +; libsrc/apple/hgrtile.pla: 0432: _tileDSb:38 = @_tileDSc.40 +; libsrc/apple/hgrtile.pla: 0433: _tileDSb:43 = @_tileDSc.46 +; libsrc/apple/hgrtile.pla: 0434: done + !BYTE $26 ; LA _D031+0 +_F021 !WORD _D031+0 + !BYTE $7A ; SAW _A002+1 +_F022 !WORD _A002+1 + !BYTE $26 ; LA _D036+1 +_F023 !WORD _D036+1 + !BYTE $7A ; SAW _A002+6 +_F024 !WORD _A002+6 + !BYTE $26 ; LA _D032+0 +_F025 !WORD _D032+0 + !BYTE $7A ; SAW _A002+9 +_F026 !WORD _A002+9 + !BYTE $26 ; LA _D031+0 +_F027 !WORD _D031+0 + !BYTE $7A ; SAW _A004+1 +_F028 !WORD _A004+1 + !BYTE $26 ; LA _D036+1 +_F029 !WORD _D036+1 + !BYTE $7A ; SAW _A004+6 +_F030 !WORD _A004+6 + !BYTE $26 ; LA _D032+0 +_F031 !WORD _D032+0 + !BYTE $7A ; SAW _A004+9 +_F032 !WORD _A004+9 + !BYTE $26 ; LA _D031+0 +_F033 !WORD _D031+0 + !BYTE $7A ; SAW _A006+1 +_F034 !WORD _A006+1 + !BYTE $26 ; LA _D036+1 +_F035 !WORD _D036+1 + !BYTE $7A ; SAW _A006+6 +_F036 !WORD _A006+6 + !BYTE $26 ; LA _D032+0 +_F037 !WORD _D032+0 + !BYTE $7A ; SAW _A006+9 +_F038 !WORD _A006+9 + !BYTE $26 ; LA _D031+0 +_F039 !WORD _D031+0 + !BYTE $7A ; SAW _A008+1 +_F040 !WORD _A008+1 + !BYTE $26 ; LA _D036+1 +_F041 !WORD _D036+1 + !BYTE $7A ; SAW _A008+6 +_F042 !WORD _A008+6 + !BYTE $26 ; LA _D032+0 +_F043 !WORD _D032+0 + !BYTE $7A ; SAW _A008+9 +_F044 !WORD _A008+9 + !BYTE $26 ; LA _D031+0 +_F045 !WORD _D031+0 + !BYTE $7A ; SAW _A010+1 +_F046 !WORD _A010+1 + !BYTE $26 ; LA _A012+3 +_F047 !WORD _A012+3 + !BYTE $7A ; SAW _A010+4 +_F048 !WORD _A010+4 + !BYTE $26 ; LA _A012+9 +_F049 !WORD _A012+9 + !BYTE $7A ; SAW _A010+7 +_F050 !WORD _A010+7 + !BYTE $26 ; LA _A012+15 +_F051 !WORD _A012+15 + !BYTE $7A ; SAW _A010+10 +_F052 !WORD _A010+10 + !BYTE $26 ; LA _A012+21 +_F053 !WORD _A012+21 + !BYTE $7A ; SAW _A010+13 +_F054 !WORD _A010+13 + !BYTE $26 ; LA _A012+27 +_F055 !WORD _A012+27 + !BYTE $7A ; SAW _A010+16 +_F056 !WORD _A010+16 + !BYTE $26 ; LA _A012+33 +_F057 !WORD _A012+33 + !BYTE $7A ; SAW _A010+19 +_F058 !WORD _A010+19 + !BYTE $26 ; LA _A012+39 +_F059 !WORD _A012+39 + !BYTE $7A ; SAW _A010+22 +_F060 !WORD _A010+22 + !BYTE $26 ; LA _A012+45 +_F061 !WORD _A012+45 + !BYTE $7A ; SAW _A010+25 +_F062 !WORD _A010+25 + !BYTE $26 ; LA _A012+51 +_F063 !WORD _A012+51 + !BYTE $7A ; SAW _A010+28 +_F064 !WORD _A010+28 + !BYTE $26 ; LA _D036+1 +_F065 !WORD _D036+1 + !BYTE $7A ; SAW _A011+1 +_F066 !WORD _A011+1 + !BYTE $26 ; LA _D032+0 +_F067 !WORD _D032+0 + !BYTE $7A ; SAW _A011+4 +_F068 !WORD _A011+4 + !BYTE $26 ; LA _A012+4 +_F069 !WORD _A012+4 + !BYTE $7A ; SAW _A011+7 +_F070 !WORD _A011+7 + !BYTE $26 ; LA _A012+10 +_F071 !WORD _A012+10 + !BYTE $7A ; SAW _A011+13 +_F072 !WORD _A011+13 + !BYTE $26 ; LA _A012+16 +_F073 !WORD _A012+16 + !BYTE $7A ; SAW _A011+18 +_F074 !WORD _A011+18 + !BYTE $26 ; LA _A012+22 +_F075 !WORD _A012+22 + !BYTE $7A ; SAW _A011+23 +_F076 !WORD _A011+23 + !BYTE $26 ; LA _A012+28 +_F077 !WORD _A012+28 + !BYTE $7A ; SAW _A011+28 +_F078 !WORD _A011+28 + !BYTE $26 ; LA _A012+34 +_F079 !WORD _A012+34 + !BYTE $7A ; SAW _A011+33 +_F080 !WORD _A011+33 + !BYTE $26 ; LA _A012+40 +_F081 !WORD _A012+40 + !BYTE $7A ; SAW _A011+38 +_F082 !WORD _A011+38 + !BYTE $26 ; LA _A012+46 +_F083 !WORD _A012+46 + !BYTE $7A ; SAW _A011+43 +_F084 !WORD _A011+43 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: TILEDRAW + !BYTE $D4,$C9,$CC,$C5,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + ; DCI STRING: TILEXORDRAW + !BYTE $D4,$C9,$CC,$C5,$D8,$CF,$D2,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A003 + ; DCI STRING: TILEORDRAW + !BYTE $D4,$C9,$CC,$C5,$CF,$D2,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A005 + ; DCI STRING: TILEANDDRAW + !BYTE $D4,$C9,$CC,$C5,$C1,$CE,$C4,$C4,$D2,$C1,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A007 + ; DCI STRING: TILEDRAWSTR + !BYTE $D4,$C9,$CC,$C5,$C4,$D2,$C1,$D7,$D3,$D4,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A009 + ; DCI STRING: TILEFROMTEXT + !BYTE $D4,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D4,$C5,$D8,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: TILEMODE + !BYTE $D4,$C9,$CC,$C5,$CD,$CF,$C4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: TILECLEAR + !BYTE $D4,$C9,$CC,$C5,$C3,$CC,$C5,$C1,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: TILESHOW + !BYTE $D4,$C9,$CC,$C5,$D3,$C8,$CF,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: TILESWAP + !BYTE $D4,$C9,$CC,$C5,$D3,$D7,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: TILEDRAWBUF + !BYTE $D4,$C9,$CC,$C5,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/jit.a b/src/libsrc/apple/jit.a new file mode 100644 index 0000000..f9bb193 --- /dev/null +++ b/src/libsrc/apple/jit.a @@ -0,0 +1,7080 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/jit.pla: 0001: // +; libsrc/apple/jit.pla: 0002: // PLASMA JIT bytecode compiler +; libsrc/apple/jit.pla: 0003: // +; libsrc/apple/jit.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/jit.pla: 0004: +; libsrc/apple/jit.pla: 0005: // +; libsrc/apple/jit.pla: 0006: // Indirect interpreter DEFinition entrypoint +; libsrc/apple/jit.pla: 0007: // +; libsrc/apple/jit.pla: 0008: struc t_defentry + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/apple/jit.pla: 0009: byte interpjsr + ; interpjsr = 0 +; libsrc/apple/jit.pla: 0010: word interpaddr + ; interpaddr = 1 +; libsrc/apple/jit.pla: 0011: word bytecodeaddr + ; bytecodeaddr = 3 +; libsrc/apple/jit.pla: 0012: byte callcount + ; callcount = 5 +; libsrc/apple/jit.pla: 0013: byte bytecodesize + ; bytecodesize = 6 +; libsrc/apple/jit.pla: 0014: end + ; t_defentry = 7 +; libsrc/apple/jit.pla: 0015: // +; libsrc/apple/jit.pla: 0016: // JIT compiler constants +; libsrc/apple/jit.pla: 0017: // +; libsrc/apple/jit.pla: 0018: const jitcomp = $03E2 + ; jitcomp = 994 +; libsrc/apple/jit.pla: 0019: const jitcodeptr = $03E4 + ; jitcodeptr = 996 +; libsrc/apple/jit.pla: 0020: const codemax = $BEE0 + ; codemax = 48864 +; libsrc/apple/jit.pla: 0021: const estkh8 = $C000 + ; estkh8 = 49152 +; libsrc/apple/jit.pla: 0022: const estkh = $00C0 + ; estkh = 192 +; libsrc/apple/jit.pla: 0023: const estkl8 = $D000 + ; estkl8 = 53248 +; libsrc/apple/jit.pla: 0024: const estkl = $00D0 + ; estkl = 208 +; libsrc/apple/jit.pla: 0025: const ifpl8 = $E000 + ; ifpl8 = 57344 +; libsrc/apple/jit.pla: 0026: const ifph8 = $E100 + ; ifph8 = 57600 +; libsrc/apple/jit.pla: 0027: const jmptmp = $00E6 + ; jmptmp = 230 +; libsrc/apple/jit.pla: 0028: const tmpl8 = $E700 + ; tmpl8 = 59136 +; libsrc/apple/jit.pla: 0029: const tmph8 = $E800 + ; tmph8 = 59392 +; libsrc/apple/jit.pla: 0030: // +; libsrc/apple/jit.pla: 0031: // Bytecode interpreter entrypoints +; libsrc/apple/jit.pla: 0032: // +; libsrc/apple/jit.pla: 0033: const indirectentry = $03DC + ; indirectentry = 988 +; libsrc/apple/jit.pla: 0034: const directentry = $03D0 + ; directentry = 976 +; libsrc/apple/jit.pla: 0035: // +; libsrc/apple/jit.pla: 0036: // Copy bytecode DEF to main memory +; libsrc/apple/jit.pla: 0037: // +; libsrc/apple/jit.pla: 0038: def defcpy(dst, defptr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; dst -> [0] + ; defptr -> [2] +_C000 ; defcpy() +; libsrc/apple/jit.pla: 0039: *$003C = defptr=>bytecodeaddr + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/jit.pla: 0040: *$003E = *$003C + defptr->bytecodesize +; libsrc/apple/jit.pla: 0041: *$0042 = dst +; libsrc/apple/jit.pla: 0042: call($C311, 0, 0, 0, $04) // CALL XMOVE with carry clear (AUX->MAIN) and ints disabled +; libsrc/apple/jit.pla: 0043: end + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $62 ; LW + !BYTE $7E,$3C,$00 ; DAW 60 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A,$3E,$00 ; SAW 62 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A,$42,$00 ; SAW 66 + !BYTE $2C,$11,$C3 ; CW 49937 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/jit.pla: 0044: include "libsrc/jitcore.pla" +; libsrc/jitcore.pla: 0001: // +; libsrc/jitcore.pla: 0002: // TOS caching values +; libsrc/jitcore.pla: 0003: // +; libsrc/jitcore.pla: 0004: const TOS_DIRTY = 1 + ; TOS_DIRTY = 1 +; libsrc/jitcore.pla: 0005: const TOS_CLEAN = 2 + ; TOS_CLEAN = 2 +; libsrc/jitcore.pla: 0006: // +; libsrc/jitcore.pla: 0007: // Y unknown value +; libsrc/jitcore.pla: 0008: // +; libsrc/jitcore.pla: 0009: const UNKNOWN = -1 + ; UNKNOWN = -1 +; libsrc/jitcore.pla: 0010: // +; libsrc/jitcore.pla: 0011: // Resolve virtual X with real X +; libsrc/jitcore.pla: 0012: // +; libsrc/jitcore.pla: 0013: def resolveX(codeptr, VX)#2 + ; codeptr -> [0] + ; VX -> [2] +_C001 ; resolveX() +; libsrc/jitcore.pla: 0014: while VX > 0 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; libsrc/jitcore.pla: 0015: ^codeptr = $E8; codeptr++ // INX + !BYTE $2A,$E8 ; CB 232 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0016: VX-- + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0017: loop + !BYTE $76,$02 ; SLW [2] +_B003 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/jitcore.pla: 0018: while VX < 0 + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/jitcore.pla: 0019: ^codeptr = $CA; codeptr++ // DEX + !BYTE $2A,$CA ; CB 202 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0020: VX++ + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0021: loop + !BYTE $76,$02 ; SLW [2] +_B006 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/jitcore.pla: 0022: return codeptr, 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/jitcore.pla: 0023: end +; libsrc/jitcore.pla: 0024: // +; libsrc/jitcore.pla: 0025: // JIT compiler entry +; libsrc/jitcore.pla: 0026: // +; libsrc/jitcore.pla: 0027: def compiler(defptr)#0 + ; defptr -> [0] +_C002 ; compiler() +; libsrc/jitcore.pla: 0028: word codeptr, isdata[], addrxlate, bytecode, i, case, dest, VX, VY + ; codeptr -> [2] + ; isdata -> [4] + ; addrxlate -> [4] + ; bytecode -> [6] + ; i -> [8] + ; case -> [10] + ; dest -> [12] + ; VX -> [14] + ; VY -> [16] +; libsrc/jitcore.pla: 0029: byte opcode, j, A_IS_TOSL + ; opcode -> [18] + ; j -> [19] + ; A_IS_TOSL -> [20] +; libsrc/jitcore.pla: 0030: +; libsrc/jitcore.pla: 0031: defptr=>interpaddr = indirectentry // assume compile will fail + !BYTE $58,$15,$01 ; ENTER 21,1 +; libsrc/jitcore.pla: 0032: addrxlate = heapmark // heapalloc(512 + defptr->bytecodesize) +; libsrc/jitcore.pla: 0033: if isult(heapavail, 512 + defptr->bytecodesize) // 256 * sizeof(word) address xlate +; libsrc/jitcore.pla: 0034: // +; libsrc/jitcore.pla: 0035: // Not enough heap available +; libsrc/jitcore.pla: 0036: // +; libsrc/jitcore.pla: 0037: //puts("Not enough free heap\n") +; libsrc/jitcore.pla: 0038: return + !BYTE $2C,$DC,$03 ; CW 988 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $54 ; CALL _X012 +_F001 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $54 ; CALL _X016 +_F002 !WORD 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X026 +_F003 !WORD 0 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $5A,$15 ; LEAVE 21 +; libsrc/jitcore.pla: 0039: fin +_B007 +_B008 +; libsrc/jitcore.pla: 0040: // +; libsrc/jitcore.pla: 0041: // Copy bytecode def from AUX to heap for compiling +; libsrc/jitcore.pla: 0042: // +; libsrc/jitcore.pla: 0043: bytecode = addrxlate + 512 // def bytecode +; libsrc/jitcore.pla: 0044: defcpy(bytecode, defptr) +; libsrc/jitcore.pla: 0045: //puts("JITC:$"); puth(defptr=>bytecodeaddr); puts("=>$"); puth(bytecode) +; libsrc/jitcore.pla: 0046: //puts(",$"); puth(defptr->bytecodesize); putln +; libsrc/jitcore.pla: 0047: // +; libsrc/jitcore.pla: 0048: // Find all branch targets and optimization fences. Tag the opcode with the LSB set +; libsrc/jitcore.pla: 0049: // +; libsrc/jitcore.pla: 0050: // All PLASMA ops are even (LSB clear), so this will flag when to fence optimizations +; libsrc/jitcore.pla: 0051: // During compiling. +; libsrc/jitcore.pla: 0052: // +; libsrc/jitcore.pla: 0053: //isdata = addrxlate // Use this buffer +; libsrc/jitcore.pla: 0054: memset(isdata, 0, 256) // Clear isdata buffer +; libsrc/jitcore.pla: 0055: i = 0 +; libsrc/jitcore.pla: 0056: while i < defptr->bytecodesize + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $6E,$06 ; DLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F004 !WORD _C000 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _X017 +_F005 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B009 +; libsrc/jitcore.pla: 0057: if not ^(isdata+i) +; libsrc/jitcore.pla: 0058: //puth(bytecode+i); putc(':'); putb(^(bytecode+i) & $FE); putln; getc +; libsrc/jitcore.pla: 0059: when ^(bytecode+i) & $FE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $3C,$FE ; ANDI 254 + !BYTE $52 ; SEL + !WORD _B015-* +; libsrc/jitcore.pla: 0060: // +; libsrc/jitcore.pla: 0061: // Double byte operands +; libsrc/jitcore.pla: 0062: // +; libsrc/jitcore.pla: 0063: is $26 // LA +_B016 +; libsrc/jitcore.pla: 0064: is $2C // CW +_B017 +; libsrc/jitcore.pla: 0065: is $54 // CALL +_B018 +; libsrc/jitcore.pla: 0066: is $58 // ENTER +_B019 +; libsrc/jitcore.pla: 0067: is $68 // LAB +_B020 +; libsrc/jitcore.pla: 0068: is $6A // LAW +_B021 +; libsrc/jitcore.pla: 0069: is $78 // SAB +_B022 +; libsrc/jitcore.pla: 0070: is $7A // SAW +_B023 +; libsrc/jitcore.pla: 0071: is $7C // DAB +_B024 +; libsrc/jitcore.pla: 0072: is $7E // DAW +_B025 +; libsrc/jitcore.pla: 0073: is $B4 // ADDAB +_B026 +; libsrc/jitcore.pla: 0074: is $B6 // ADDAW +_B027 +; libsrc/jitcore.pla: 0075: is $BC // IDXAB +_B028 +; libsrc/jitcore.pla: 0076: is $BE // IDXAW +_B029 +; libsrc/jitcore.pla: 0077: i = i + 2 +; libsrc/jitcore.pla: 0078: break + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0079: // +; libsrc/jitcore.pla: 0080: // Multi-byte operands +; libsrc/jitcore.pla: 0081: // +; libsrc/jitcore.pla: 0082: is $2E // CS +_B030 +; libsrc/jitcore.pla: 0083: i = i + ^(bytecode+i+1) +; libsrc/jitcore.pla: 0084: // +; libsrc/jitcore.pla: 0085: // Single byte operands +; libsrc/jitcore.pla: 0086: // +; libsrc/jitcore.pla: 0087: is $2A // CB + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] +_B031 +; libsrc/jitcore.pla: 0088: is $28 // LLA +_B032 +; libsrc/jitcore.pla: 0089: is $38 // ADDI +_B033 +; libsrc/jitcore.pla: 0090: is $3A // SUBI +_B034 +; libsrc/jitcore.pla: 0091: is $3C // ANDI +_B035 +; libsrc/jitcore.pla: 0092: is $3E // ORI +_B036 +; libsrc/jitcore.pla: 0093: is $5A // LEAVE +_B037 +; libsrc/jitcore.pla: 0094: is $5E // CFFB +_B038 +; libsrc/jitcore.pla: 0095: is $64 // LLB +_B039 +; libsrc/jitcore.pla: 0096: is $66 // LLW +_B040 +; libsrc/jitcore.pla: 0097: is $6C // DLB +_B041 +; libsrc/jitcore.pla: 0098: is $6E // DLW +_B042 +; libsrc/jitcore.pla: 0099: is $74 // SLB +_B043 +; libsrc/jitcore.pla: 0100: is $76 // SLW +_B044 +; libsrc/jitcore.pla: 0101: is $B0 // ADDLB +_B045 +; libsrc/jitcore.pla: 0102: is $B2 // ADDLW +_B046 +; libsrc/jitcore.pla: 0103: is $B8 // IDXLB +_B047 +; libsrc/jitcore.pla: 0104: is $BA // IDXLW +_B048 +; libsrc/jitcore.pla: 0105: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0106: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0107: // +; libsrc/jitcore.pla: 0108: // Branches +; libsrc/jitcore.pla: 0109: // +; libsrc/jitcore.pla: 0110: is $50 // BRNCH +_B049 +; libsrc/jitcore.pla: 0111: is $22 // BREQ +_B050 +; libsrc/jitcore.pla: 0112: is $24 // BRNE +_B051 +; libsrc/jitcore.pla: 0113: is $4C // BRFLS +_B052 +; libsrc/jitcore.pla: 0114: is $4E // BRTRU +_B053 +; libsrc/jitcore.pla: 0115: is $A0 // BRGT +_B054 +; libsrc/jitcore.pla: 0116: is $A2 // BRLT +_B055 +; libsrc/jitcore.pla: 0117: is $A4 // INCBRLE +_B056 +; libsrc/jitcore.pla: 0118: is $A6 // ADDBRLE +_B057 +; libsrc/jitcore.pla: 0119: is $A8 // DECBRGE +_B058 +; libsrc/jitcore.pla: 0120: is $AA // SUBBRGE +_B059 +; libsrc/jitcore.pla: 0121: is $AC // BRAND +_B060 +; libsrc/jitcore.pla: 0122: is $AE // BROR +_B061 +; libsrc/jitcore.pla: 0123: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0124: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0125: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0126: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jitcore.pla: 0127: break + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0128: // +; libsrc/jitcore.pla: 0129: // SELect/caseblock +; libsrc/jitcore.pla: 0130: // +; libsrc/jitcore.pla: 0131: is $52 // SEL +_B062 +; libsrc/jitcore.pla: 0132: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0133: case = i + *(bytecode+i) +; libsrc/jitcore.pla: 0134: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0135: ^(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0136: j = ^(bytecode+case) +; libsrc/jitcore.pla: 0137: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0138: repeat + !BYTE $76,$0A ; SLW [10] +_B064 +; libsrc/jitcore.pla: 0139: *(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0140: case = case + 2 +; libsrc/jitcore.pla: 0141: dest = case + *(bytecode+case) +; libsrc/jitcore.pla: 0142: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jitcore.pla: 0143: *(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0144: case = case + 2 +; libsrc/jitcore.pla: 0145: j-- + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$13 ; LLB [19] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0146: until not j + !BYTE $74,$13 ; SLB [19] +_B065 + !BYTE $64,$13 ; LLB [19] + !BYTE $4E ; BRTRU _B064 + !WORD _B064-* +_B063 +; libsrc/jitcore.pla: 0147: break + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0148: wend + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B015 + !BYTE $2F ; CASEBLOCK + !WORD $0022 + !WORD _B050-* + !WORD $0024 + !WORD _B051-* + !WORD $0026 + !WORD _B016-* + !WORD $0028 + !WORD _B032-* + !WORD $002A + !WORD _B031-* + !WORD $002C + !WORD _B017-* + !WORD $002E + !WORD _B030-* + !WORD $0038 + !WORD _B033-* + !WORD $003A + !WORD _B034-* + !WORD $003C + !WORD _B035-* + !WORD $003E + !WORD _B036-* + !WORD $004C + !WORD _B052-* + !WORD $004E + !WORD _B053-* + !WORD $0050 + !WORD _B049-* + !WORD $0052 + !WORD _B062-* + !WORD $0054 + !WORD _B018-* + !WORD $0058 + !WORD _B019-* + !WORD $005A + !WORD _B037-* + !WORD $005E + !WORD _B038-* + !WORD $0064 + !WORD _B039-* + !WORD $0066 + !WORD _B040-* + !WORD $0068 + !WORD _B020-* + !WORD $006A + !WORD _B021-* + !WORD $006C + !WORD _B041-* + !WORD $006E + !WORD _B042-* + !WORD $0074 + !WORD _B043-* + !WORD $0076 + !WORD _B044-* + !WORD $0078 + !WORD _B022-* + !WORD $007A + !WORD _B023-* + !WORD $007C + !WORD _B024-* + !WORD $007E + !WORD _B025-* + !WORD $00A0 + !WORD _B054-* + !WORD $00A2 + !WORD _B055-* + !WORD $00A4 + !WORD _B056-* + !WORD $00A6 + !WORD _B057-* + !WORD $00A8 + !WORD _B058-* + !WORD $00AA + !WORD _B059-* + !WORD $00AC + !WORD _B060-* + !WORD $00AE + !WORD _B061-* + !WORD $00B0 + !WORD _B045-* + !WORD $00B2 + !WORD _B046-* + !WORD $00B4 + !WORD _B026-* + !WORD $00B6 + !WORD _B027-* + !WORD $00B8 + !WORD _B047-* + !WORD $00BA + !WORD _B048-* + !WORD $00BC + !WORD _B028-* + !WORD $00BE + !WORD _B029-* +_B014 +; libsrc/jitcore.pla: 0149: fin +_B012 +_B013 +; libsrc/jitcore.pla: 0150: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0151: loop + !BYTE $76,$08 ; SLW [8] +_B011 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B009 + !WORD _B009-* +_B010 +; libsrc/jitcore.pla: 0152: // +; libsrc/jitcore.pla: 0153: // Compile the bytecodes +; libsrc/jitcore.pla: 0154: // +; libsrc/jitcore.pla: 0155: memset(addrxlate, 0, 512) // Clear xlate buffer +; libsrc/jitcore.pla: 0156: //puts("Bytecode: $"); puth(bytecode); putln; getc +; libsrc/jitcore.pla: 0157: codeptr = *jitcodeptr +; libsrc/jitcore.pla: 0158: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0159: VY = UNKNOWN // Virtual Y register +; libsrc/jitcore.pla: 0160: VX = 0 // Virtual X register +; libsrc/jitcore.pla: 0161: i = 0 +; libsrc/jitcore.pla: 0162: if ^bytecode == $58 +; libsrc/jitcore.pla: 0163: //putc('$'); puth(codeptr);//puts(":[0] ENTER "); puti(^(bytecode+1)); putc(',');puti(^(bytecode+2)); putln +; libsrc/jitcore.pla: 0164: // +; libsrc/jitcore.pla: 0165: // Call into VM +; libsrc/jitcore.pla: 0166: // +; libsrc/jitcore.pla: 0167: codeptr->0 = $20 // JSR INTERP +; libsrc/jitcore.pla: 0168: codeptr=>1 = directentry +; libsrc/jitcore.pla: 0169: codeptr->3 = $58 // ENTER CODE +; libsrc/jitcore.pla: 0170: codeptr=>4 = *(bytecode+1) // ENTER FRAME SIZE & ARG COUNT +; libsrc/jitcore.pla: 0171: codeptr->6 = $C0 // NATV CODE +; libsrc/jitcore.pla: 0172: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0173: i = 3 +; libsrc/jitcore.pla: 0174: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X017 +_F006 !WORD 0 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$58 ; CB 88 + !BYTE $24 ; BRNE _B066 + !WORD _B066-* + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$58 ; CB 88 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $06 ; CN 3 + !BYTE $76,$08 ; SLW [8] +_B066 +_B067 +; libsrc/jitcore.pla: 0175: while isule(codeptr, codemax) + !BYTE $50 ; BRNCH _B070 + !WORD _B070-* +_B068 +; libsrc/jitcore.pla: 0176: //putc('$'); puth(codeptr); putc(':') +; libsrc/jitcore.pla: 0177: //putc('['); puti(i); //puts("] ") +; libsrc/jitcore.pla: 0178: opcode = ^(bytecode+i) +; libsrc/jitcore.pla: 0179: if opcode & 1 +; libsrc/jitcore.pla: 0180: // +; libsrc/jitcore.pla: 0181: // Optimization fence. Sync A and X registers +; libsrc/jitcore.pla: 0182: // +; libsrc/jitcore.pla: 0183: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0184: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0185: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0186: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0187: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $6C,$12 ; DLB [18] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F007 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B073 +_B074 +; libsrc/jitcore.pla: 0188: VY = UNKNOWN +; libsrc/jitcore.pla: 0189: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0190: opcode = opcode & $FE +; libsrc/jitcore.pla: 0191: fin + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$FE ; ANDI 254 + !BYTE $74,$12 ; SLB [18] +_B071 +_B072 +; libsrc/jitcore.pla: 0192: // +; libsrc/jitcore.pla: 0193: // Update bytecode->native code address translation. +; libsrc/jitcore.pla: 0194: // +; libsrc/jitcore.pla: 0195: // Here's how it works: +; libsrc/jitcore.pla: 0196: // +; libsrc/jitcore.pla: 0197: // The code buffer is above address $8000 so MSBit set. +; libsrc/jitcore.pla: 0198: // When we compile a bytecode, update the destination address in +; libsrc/jitcore.pla: 0199: // the address xlate buffer with actual address (MSBit set). But, if a branch +; libsrc/jitcore.pla: 0200: // opcode jumps to a bytecode address that hasn't been compiled yet, add the +; libsrc/jitcore.pla: 0201: // address offset in the code buffer to the list of addresses needing resolution. +; libsrc/jitcore.pla: 0202: // The offset will be less than $8000, so MSBit clear. This is how we know if +; libsrc/jitcore.pla: 0203: // an address has been resolved or is a list of addresses needing resolution. +; libsrc/jitcore.pla: 0204: // Before updating the address xlate buffer with the known address as we +; libsrc/jitcore.pla: 0205: // compile, look for existing resolution list and traverse it if there. +; libsrc/jitcore.pla: 0206: // +; libsrc/jitcore.pla: 0207: if addrxlate=>[i] +; libsrc/jitcore.pla: 0208: // +; libsrc/jitcore.pla: 0209: // Address list awaiting resolution +; libsrc/jitcore.pla: 0210: // +; libsrc/jitcore.pla: 0211: dest = addrxlate=>[i] + *jitcodeptr +; libsrc/jitcore.pla: 0212: repeat + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $B6,$E4,$03 ; ADDAW 996 + !BYTE $76,$0C ; SLW [12] +_B078 +; libsrc/jitcore.pla: 0213: case = *dest +; libsrc/jitcore.pla: 0214: *dest = codeptr +; libsrc/jitcore.pla: 0215: dest = case + *jitcodeptr +; libsrc/jitcore.pla: 0216: until not case + !BYTE $66,$0C ; LLW [12] + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0C ; LLW [12] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $B6,$E4,$03 ; ADDAW 996 + !BYTE $76,$0C ; SLW [12] +_B079 + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B078 + !WORD _B078-* +_B077 +; libsrc/jitcore.pla: 0217: fin +_B075 +_B076 +; libsrc/jitcore.pla: 0218: // +; libsrc/jitcore.pla: 0219: // Update address translate buffer with bytecode->native address +; libsrc/jitcore.pla: 0220: // +; libsrc/jitcore.pla: 0221: addrxlate=>[i] = codeptr +; libsrc/jitcore.pla: 0222: // +; libsrc/jitcore.pla: 0223: // Compile this bad boy... +; libsrc/jitcore.pla: 0224: // +; libsrc/jitcore.pla: 0225: if opcode < $20 // CONSTANT NYBBLE +; libsrc/jitcore.pla: 0226: //puts("CN $"); putb(opcode/2) +; libsrc/jitcore.pla: 0227: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0228: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0229: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0230: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$20 ; CB 32 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B082 +_B083 +; libsrc/jitcore.pla: 0231: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0232: if VY <> 0 +; libsrc/jitcore.pla: 0233: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0234: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0235: VY = 0 +; libsrc/jitcore.pla: 0236: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B084 +_B085 +; libsrc/jitcore.pla: 0237: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0238: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0239: if opcode == 0 +; libsrc/jitcore.pla: 0240: ^codeptr = $98; codeptr++ // TYA -> LDA #$00 + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$12 ; LLB [18] + !BYTE $4E ; BRTRU _B086 + !WORD _B086-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0241: else + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B087 + !WORD _B087-* +_B086 +; libsrc/jitcore.pla: 0242: *codeptr = $A9+(opcode/2<<8) // LDA #(CN/2) +; libsrc/jitcore.pla: 0243: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0244: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $64,$12 ; LLB [18] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B087 +; libsrc/jitcore.pla: 0245: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0246: else + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B080 +; libsrc/jitcore.pla: 0247: when opcode + !BYTE $64,$12 ; LLB [18] + !BYTE $52 ; SEL + !WORD _B089-* +; libsrc/jitcore.pla: 0248: is $20 // MINUS ONE +_B090 +; libsrc/jitcore.pla: 0249: //puts("MINUS_ONE") +; libsrc/jitcore.pla: 0250: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0251: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0252: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0253: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B091 +_B092 +; libsrc/jitcore.pla: 0254: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0255: codeptr=>0 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 0256: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0257: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0258: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0259: break + !BYTE $76,$0E ; SLW [14] + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0260: is $22 // BREQ +_B093 +; libsrc/jitcore.pla: 0261: is $24 // BRNE +_B094 +; libsrc/jitcore.pla: 0262: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0263: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0264: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0265: codeptr, VX = resolveX(codeptr, VX + 2) // INX; INX +; libsrc/jitcore.pla: 0266: if not A_IS_TOSL +; libsrc/jitcore.pla: 0267: *codeptr = estkl8+$B5-$0200//+(VX<<8) // LDA ESTKL-2,X +; libsrc/jitcore.pla: 0268: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0269: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C001 +_F008 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B095 + !WORD _B095-* + !BYTE $2C,$B5,$CE ; CW 52917 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B095 +_B096 +; libsrc/jitcore.pla: 0270: if opcode == $22 +; libsrc/jitcore.pla: 0271: //puts("BREQ "); puti(dest) +; libsrc/jitcore.pla: 0272: codeptr=>2 = $09D0 // BNE +9 +; libsrc/jitcore.pla: 0273: codeptr=>8 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0274: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$22 ; CB 34 + !BYTE $24 ; BRNE _B097 + !WORD _B097-* + !BYTE $2C,$D0,$09 ; CW 2512 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B098 + !WORD _B098-* +_B097 +; libsrc/jitcore.pla: 0275: //puts("BRNE "); puti(dest) +; libsrc/jitcore.pla: 0276: codeptr=>2 = $06D0 // BNE +6 +; libsrc/jitcore.pla: 0277: codeptr=>8 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 0278: fin + !BYTE $2C,$D0,$06 ; CW 1744 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B098 +; libsrc/jitcore.pla: 0279: codeptr=>0 = estkl8+$D5-$0100//+(VX<<8) // CMP ESTKL-1,X +; libsrc/jitcore.pla: 0280: codeptr=>4 = estkh8+$B5-$0200//+(VX<<8) // LDA ESTKH-2,X +; libsrc/jitcore.pla: 0281: codeptr=>6 = estkh8+$D5-$0100//+(VX<<8) // CMP ESTKH-1,X +; libsrc/jitcore.pla: 0282: codeptr->10 = $4C // JMP abs +; libsrc/jitcore.pla: 0283: codeptr=>11 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0284: if not (codeptr->12 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0285: addrxlate=>[dest] = codeptr + 11 - *jitcodeptr +; libsrc/jitcore.pla: 0286: fin + !BYTE $2C,$D5,$CF ; CW 53205 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$BE ; CW 48821 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D5,$BF ; CW 49109 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B099 + !WORD _B099-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B099 +_B100 +; libsrc/jitcore.pla: 0287: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 0288: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0289: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0290: is $26 // LA +_B101 +; libsrc/jitcore.pla: 0291: is $2C // CW +_B102 +; libsrc/jitcore.pla: 0292: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0293: i = i + 2 +; libsrc/jitcore.pla: 0294: //puts("LA/CW $"); puth(dest) +; libsrc/jitcore.pla: 0295: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0296: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0297: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0298: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B103 + !WORD _B103-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B103 +_B104 +; libsrc/jitcore.pla: 0299: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0300: codeptr=>0 = $A9+(dest&$FF00) // LDA #2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0302: codeptr=>4 = $A9+(dest<<8) // LDA #>VAL +; libsrc/jitcore.pla: 0303: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0304: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0305: break + !BYTE $76,$0E ; SLW [14] + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$0C ; LLW [12] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$0C ; LLW [12] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0306: is $28 // LLA +_B105 +; libsrc/jitcore.pla: 0307: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0308: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0309: //puts("LLA "); puti(^(bytecode+i)) +; libsrc/jitcore.pla: 0310: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0311: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0312: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0313: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B106 + !WORD _B106-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B106 +_B107 +; libsrc/jitcore.pla: 0314: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0315: if VY == j +; libsrc/jitcore.pla: 0316: ^codeptr = $98; codeptr++ // TYA -> LDA #imm + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $24 ; BRNE _B108 + !WORD _B108-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0317: else + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B109 + !WORD _B109-* +_B108 +; libsrc/jitcore.pla: 0318: *codeptr = $A9+(j<<8) // LDA #imm +; libsrc/jitcore.pla: 0319: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0320: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B109 +; libsrc/jitcore.pla: 0321: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 0322: codeptr=>1 = ifpl8+$65 // ADC IFPL +; libsrc/jitcore.pla: 0323: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0324: if VY == 0 +; libsrc/jitcore.pla: 0325: codeptr->5 = $98 // TYA -> LDA #00 +; libsrc/jitcore.pla: 0326: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0327: else + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$65,$E0 ; CW 57445 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$10 ; LLW [16] + !BYTE $4E ; BRTRU _B110 + !WORD _B110-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B111 + !WORD _B111-* +_B110 +; libsrc/jitcore.pla: 0328: codeptr=>5 = $00A9 // LDA #$00 +; libsrc/jitcore.pla: 0329: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0330: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] +_B111 +; libsrc/jitcore.pla: 0331: codeptr=>0 = ifph8+$65 // ADC IFPH +; libsrc/jitcore.pla: 0332: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0333: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0334: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0335: break + !BYTE $2C,$65,$E1 ; CW 57701 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0336: is $2A // CB +_B112 +; libsrc/jitcore.pla: 0337: is $5E // CFFB +_B113 +; libsrc/jitcore.pla: 0338: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0339: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0340: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0341: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0342: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B114 +_B115 +; libsrc/jitcore.pla: 0343: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0344: if opcode == $2A +; libsrc/jitcore.pla: 0345: //puts("CB $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0346: if VY <> 0 +; libsrc/jitcore.pla: 0347: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0348: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0349: VY = 0 +; libsrc/jitcore.pla: 0350: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$2A ; CB 42 + !BYTE $24 ; BRNE _B116 + !WORD _B116-* + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B118 + !WORD _B118-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B118 +_B119 +; libsrc/jitcore.pla: 0351: codeptr=>0 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0352: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0353: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B117 + !WORD _B117-* +_B116 +; libsrc/jitcore.pla: 0354: //puts("CFFB $FF"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0355: codeptr=>0 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 0356: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0357: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0358: fin + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] +_B117 +; libsrc/jitcore.pla: 0359: *codeptr = $A9+(^(bytecode+i)<<8) // LDA #imm +; libsrc/jitcore.pla: 0360: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0361: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0362: break + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0363: is $2E // CS +_B120 +; libsrc/jitcore.pla: 0364: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0365: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0366: dest = codeptr + 10 + j +; libsrc/jitcore.pla: 0367: //puts("CS "); //puts(bytecode+i); //puts("-->"); puti(dest) +; libsrc/jitcore.pla: 0368: if isule(dest, codemax) +; libsrc/jitcore.pla: 0369: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0370: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0371: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0372: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F009 !WORD 0 + !BYTE $4C ; BRFLS _B121 + !WORD _B121-* + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B123 + !WORD _B123-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B123 +_B124 +; libsrc/jitcore.pla: 0373: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0374: codeptr=>0 = $A9+((codeptr+9)&$FF00) // LDA #>STRING +; libsrc/jitcore.pla: 0375: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0376: codeptr=>4 = $A9+((codeptr+9)<<8) // LDA #6 = $4C // JMP abs +; libsrc/jitcore.pla: 0378: dest = codeptr + 10 + j +; libsrc/jitcore.pla: 0379: codeptr=>7 = dest +; libsrc/jitcore.pla: 0380: strcpy(codeptr + 9, bytecode + i) +; libsrc/jitcore.pla: 0381: i = i + j +; libsrc/jitcore.pla: 0382: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $6E,$0C ; DLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _X019 +_F010 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $76,$08 ; SLW [8] +_B121 +_B122 +; libsrc/jitcore.pla: 0383: codeptr = dest +; libsrc/jitcore.pla: 0384: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0385: break + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0386: is $32 // DROP2 +_B125 +; libsrc/jitcore.pla: 0387: //puts("DROP2") +; libsrc/jitcore.pla: 0388: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0389: is $30 // DROP + !BYTE $76,$0E ; SLW [14] +_B126 +; libsrc/jitcore.pla: 0390: //puts("DROP") +; libsrc/jitcore.pla: 0391: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0392: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0393: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0394: is $34 // DUP +_B127 +; libsrc/jitcore.pla: 0395: //puts("DUP") +; libsrc/jitcore.pla: 0396: if not A_IS_TOSL +; libsrc/jitcore.pla: 0397: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0398: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0399: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B128 + !WORD _B128-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B128 +; libsrc/jitcore.pla: 0400: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0401: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0402: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B130 + !WORD _B130-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B130 +_B129 +; libsrc/jitcore.pla: 0403: codeptr=>0 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0404: VX-- // DEX + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0405: codeptr=>2 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0406: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0407: VY = UNKNOWN +; libsrc/jitcore.pla: 0408: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0409: break + !BYTE $76,$0E ; SLW [14] + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0410: //is $36 +; libsrc/jitcore.pla: 0411: //puts("DIVMOD") +; libsrc/jitcore.pla: 0412: // +; libsrc/jitcore.pla: 0413: // Should never happen +; libsrc/jitcore.pla: 0414: // +; libsrc/jitcore.pla: 0415: //break +; libsrc/jitcore.pla: 0416: is $38 // ADDI +_B131 +; libsrc/jitcore.pla: 0417: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0418: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0419: //puts("ADDI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0420: is $8C // INCR + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] +_B132 +; libsrc/jitcore.pla: 0421: if opcode == $8C +; libsrc/jitcore.pla: 0422: //puts("INCR") +; libsrc/jitcore.pla: 0423: j = 1 +; libsrc/jitcore.pla: 0424: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$8C ; CB 140 + !BYTE $24 ; BRNE _B133 + !WORD _B133-* + !BYTE $02 ; CN 1 + !BYTE $74,$13 ; SLB [19] +_B133 +_B134 +; libsrc/jitcore.pla: 0425: if not A_IS_TOSL +; libsrc/jitcore.pla: 0426: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0427: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0428: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B135 + !WORD _B135-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B135 +_B136 +; libsrc/jitcore.pla: 0429: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 0430: codeptr=>1 = $69+(j<<8) // ADC #imm +; libsrc/jitcore.pla: 0431: codeptr=>3 = $0290 // BCC +2 +; libsrc/jitcore.pla: 0432: codeptr=>5 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0433: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0434: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0435: break + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$69 ; CB 105 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0436: is $3A // SUBI +_B137 +; libsrc/jitcore.pla: 0437: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0438: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0439: //puts("SUBI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0440: is $8E // DECR + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] +_B138 +; libsrc/jitcore.pla: 0441: if opcode == $8E +; libsrc/jitcore.pla: 0442: //puts("DECR") +; libsrc/jitcore.pla: 0443: j = 1 +; libsrc/jitcore.pla: 0444: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$8E ; CB 142 + !BYTE $24 ; BRNE _B139 + !WORD _B139-* + !BYTE $02 ; CN 1 + !BYTE $74,$13 ; SLB [19] +_B139 +_B140 +; libsrc/jitcore.pla: 0445: if not A_IS_TOSL +; libsrc/jitcore.pla: 0446: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0447: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0448: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B141 + !WORD _B141-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B141 +_B142 +; libsrc/jitcore.pla: 0449: codeptr->0 = $38 // SEC +; libsrc/jitcore.pla: 0450: codeptr=>1 = $E9+(j<<8) // SBC #imm +; libsrc/jitcore.pla: 0451: codeptr=>3 = $02B0 // BCS +2 +; libsrc/jitcore.pla: 0452: codeptr=>5 = estkh8+$D6+(VX<<8) // DEC ESTKH,X +; libsrc/jitcore.pla: 0453: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0454: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0455: break + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$E9 ; CB 233 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$B0,$02 ; CW 688 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$D6,$C0 ; CW 49366 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0456: is $3C // ANDI +_B143 +; libsrc/jitcore.pla: 0457: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0458: //puts("ANDI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0459: if VY <> 0 +; libsrc/jitcore.pla: 0460: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0461: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0462: VY = 0 +; libsrc/jitcore.pla: 0463: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B144 + !WORD _B144-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B144 +_B145 +; libsrc/jitcore.pla: 0464: if not A_IS_TOSL +; libsrc/jitcore.pla: 0465: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0466: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0467: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B146 + !WORD _B146-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B146 +_B147 +; libsrc/jitcore.pla: 0468: codeptr=>0 = $29+(^(bytecode+i)<<8) // AND #imm +; libsrc/jitcore.pla: 0469: codeptr=>2 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0470: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0471: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0472: break + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0473: is $3E // ORI +_B148 +; libsrc/jitcore.pla: 0474: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0475: //puts("ORI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0476: if not A_IS_TOSL +; libsrc/jitcore.pla: 0477: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0478: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0479: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B149 + !WORD _B149-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B149 +_B150 +; libsrc/jitcore.pla: 0480: *codeptr = $09+(^(bytecode+i)<<8) // ORA #imm +; libsrc/jitcore.pla: 0481: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0482: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0483: break + !BYTE $12 ; CN 9 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0484: is $40 // ISEQ +_B151 +; libsrc/jitcore.pla: 0485: is $42 // ISNE +_B152 +; libsrc/jitcore.pla: 0486: if VY <> 0 +; libsrc/jitcore.pla: 0487: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0488: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0489: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B153 + !WORD _B153-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B153 +_B154 +; libsrc/jitcore.pla: 0490: if not A_IS_TOSL +; libsrc/jitcore.pla: 0491: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0492: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0493: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B155 + !WORD _B155-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B155 +_B156 +; libsrc/jitcore.pla: 0494: if opcode == $40 +; libsrc/jitcore.pla: 0495: //puts("ISEQ") +; libsrc/jitcore.pla: 0496: codeptr=>2 = $07D0 // BNE +7 +; libsrc/jitcore.pla: 0497: codeptr=>8 = $01D0 // BNE +1 +; libsrc/jitcore.pla: 0498: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$40 ; CB 64 + !BYTE $24 ; BRNE _B157 + !WORD _B157-* + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$D0,$01 ; CW 464 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +_B157 +; libsrc/jitcore.pla: 0499: //puts("ISNE") +; libsrc/jitcore.pla: 0500: codeptr=>2 = $06D0 // BNE +6 +; libsrc/jitcore.pla: 0501: codeptr=>8 = $01F0 // BEQ +1 +; libsrc/jitcore.pla: 0502: fin + !BYTE $2C,$D0,$06 ; CW 1744 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F0,$01 ; CW 496 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B158 +; libsrc/jitcore.pla: 0503: codeptr=>0 = estkl8+$D5+$0100+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 0504: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0505: codeptr=>6 = estkh8+$D5+$0100+(VX<<8) // CMP ESTKH+1 +; libsrc/jitcore.pla: 0506: codeptr=>10 = $9888 // DEY; TYA +; libsrc/jitcore.pla: 0507: codeptr=>12 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0508: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 0509: VX++ // INX + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D5,$C1 ; CW 49621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0510: VY = UNKNOWN +; libsrc/jitcore.pla: 0511: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0512: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0513: is $44 // ISGT +_B159 +; libsrc/jitcore.pla: 0514: is $4A // ISLE +_B160 +; libsrc/jitcore.pla: 0515: if VY <> 0 +; libsrc/jitcore.pla: 0516: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0517: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0518: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B161 +_B162 +; libsrc/jitcore.pla: 0519: if not A_IS_TOSL +; libsrc/jitcore.pla: 0520: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0521: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0522: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B163 + !WORD _B163-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B163 +_B164 +; libsrc/jitcore.pla: 0523: codeptr=>0 = estkl8+$D5+$0100+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 0524: codeptr=>2 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0525: codeptr=>4 = estkh8+$F5+$0100+(VX<<8) // SBC ESTKH+1 +; libsrc/jitcore.pla: 0526: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 0527: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 0528: if opcode == $44 +; libsrc/jitcore.pla: 0529: //puts("ISGT") +; libsrc/jitcore.pla: 0530: codeptr=>10 = $0110 // BPL +1 +; libsrc/jitcore.pla: 0531: else + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$44 ; CB 68 + !BYTE $24 ; BRNE _B165 + !WORD _B165-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B166 + !WORD _B166-* +_B165 +; libsrc/jitcore.pla: 0532: //puts("ISLE") +; libsrc/jitcore.pla: 0533: codeptr=>10 = $0130 // BMI +1 +; libsrc/jitcore.pla: 0534: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW +_B166 +; libsrc/jitcore.pla: 0535: codeptr=>12 = $9888 // DEY TYA +; libsrc/jitcore.pla: 0536: codeptr=>14 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0537: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0538: VX++ // INX + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0539: VY = UNKNOWN +; libsrc/jitcore.pla: 0540: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0541: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0542: is $46 // ISLT +_B167 +; libsrc/jitcore.pla: 0543: is $48 // ISGE +_B168 +; libsrc/jitcore.pla: 0544: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0545: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0546: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0547: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B169 + !WORD _B169-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B169 +_B170 +; libsrc/jitcore.pla: 0548: if VY <> 0 +; libsrc/jitcore.pla: 0549: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0550: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0551: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B171 + !WORD _B171-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B171 +_B172 +; libsrc/jitcore.pla: 0552: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 0553: codeptr=>2 = estkl8+$D5+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 0554: codeptr=>4 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 0555: codeptr=>6 = estkh8+$F5+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 0556: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 0557: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 0558: if opcode == $46 +; libsrc/jitcore.pla: 0559: //puts("ISLT") +; libsrc/jitcore.pla: 0560: codeptr=>12 = $0110 // BPL +1 +; libsrc/jitcore.pla: 0561: else + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$46 ; CB 70 + !BYTE $24 ; BRNE _B173 + !WORD _B173-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B174 + !WORD _B174-* +_B173 +; libsrc/jitcore.pla: 0562: //puts("ISGE") +; libsrc/jitcore.pla: 0563: codeptr=>12 = $0130 // BMI +1 +; libsrc/jitcore.pla: 0564: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW +_B174 +; libsrc/jitcore.pla: 0565: codeptr=>14 = $9888 // DEY; TYA +; libsrc/jitcore.pla: 0566: codeptr=>16 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0567: codeptr = codeptr + 18 +; libsrc/jitcore.pla: 0568: VX++ // INX + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0569: VY = UNKNOWN +; libsrc/jitcore.pla: 0570: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0571: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0572: is $4C // BRFLS +_B175 +; libsrc/jitcore.pla: 0573: is $4E // BRTRU +_B176 +; libsrc/jitcore.pla: 0574: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0575: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0576: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0577: codeptr, VX = resolveX(codeptr, VX + 1) // INX +; libsrc/jitcore.pla: 0578: if not A_IS_TOSL +; libsrc/jitcore.pla: 0579: *codeptr = estkl8+$B5-$0100//+(VX<<8) // LDA ESTKL-1,X +; libsrc/jitcore.pla: 0580: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0581: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F011 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B177 + !WORD _B177-* + !BYTE $2C,$B5,$CF ; CW 53173 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B177 +_B178 +; libsrc/jitcore.pla: 0582: codeptr=>0 = estkh8+$15-$0100//+(VX<<8) // ORA ESTKH-1,X +; libsrc/jitcore.pla: 0583: if opcode == $4C +; libsrc/jitcore.pla: 0584: //puts("BRFLS "); puti(dest) +; libsrc/jitcore.pla: 0585: codeptr=>2 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0586: else + !BYTE $2C,$15,$BF ; CW 48917 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$4C ; CB 76 + !BYTE $24 ; BRNE _B179 + !WORD _B179-* + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B180 + !WORD _B180-* +_B179 +; libsrc/jitcore.pla: 0587: //puts("BRTRU "); puti(dest) +; libsrc/jitcore.pla: 0588: codeptr=>2 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 0589: fin + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B180 +; libsrc/jitcore.pla: 0590: codeptr->4 = $4C // JMP abs +; libsrc/jitcore.pla: 0591: codeptr=>5 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0592: if not (codeptr->6 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0593: addrxlate=>[dest] = codeptr + 5 - *jitcodeptr +; libsrc/jitcore.pla: 0594: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B181 + !WORD _B181-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B181 +_B182 +; libsrc/jitcore.pla: 0595: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0596: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0597: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0598: is $50 // BRNCH +_B183 +; libsrc/jitcore.pla: 0599: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0600: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0601: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0602: //puts("BRNCH "); puti(dest) +; libsrc/jitcore.pla: 0603: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0604: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0605: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0606: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0607: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F012 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B184 + !WORD _B184-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B184 +_B185 +; libsrc/jitcore.pla: 0608: codeptr->0 = $4C // JMP abs +; libsrc/jitcore.pla: 0609: codeptr=>1 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0610: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0611: addrxlate=>[dest] = codeptr + 1 - *jitcodeptr +; libsrc/jitcore.pla: 0612: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B186 + !WORD _B186-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B186 +_B187 +; libsrc/jitcore.pla: 0613: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0614: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0615: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0616: is $52 // SEL +_B188 +; libsrc/jitcore.pla: 0617: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0618: case = i + *(bytecode+i) +; libsrc/jitcore.pla: 0619: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0620: //puts("SEL "); puti(case); putln +; libsrc/jitcore.pla: 0621: j = ^(bytecode+case) +; libsrc/jitcore.pla: 0622: dest = codeptr + 9 + case * 11) +; libsrc/jitcore.pla: 0623: if isule(dest, codemax) +; libsrc/jitcore.pla: 0624: ^(bytecode+case) = $FE // Flag as NOP +; libsrc/jitcore.pla: 0625: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0A ; LLW [10] + !BYTE $16 ; CN 11 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F013 !WORD 0 + !BYTE $4C ; BRFLS _B189 + !WORD _B189-* + !BYTE $2A,$FE ; CB 254 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0626: if not A_IS_TOSL +; libsrc/jitcore.pla: 0627: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0628: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0629: fin + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B191 + !WORD _B191-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B191 +_B192 +; libsrc/jitcore.pla: 0630: codeptr=>0 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0631: codeptr, VX = resolveX(codeptr + 2, VX + 1) // INX +; libsrc/jitcore.pla: 0632: repeat + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F014 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] +_B194 +; libsrc/jitcore.pla: 0633: dest = *(bytecode+case) +; libsrc/jitcore.pla: 0634: //puts(" $"); puth(dest) +; libsrc/jitcore.pla: 0635: codeptr=>0 = $C9+(dest<<8) // CMP #imm +; libsrc/jitcore.pla: 0636: codeptr=>2 = $07D0 // BNE +7 +; libsrc/jitcore.pla: 0637: codeptr=>4 = $C0+(dest&$FF00) // CPY #imm +; libsrc/jitcore.pla: 0638: codeptr=>6 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0639: *(bytecode+case) = $FEFE +; libsrc/jitcore.pla: 0640: case = case + 2 +; libsrc/jitcore.pla: 0641: dest = case + *(bytecode+case) +; libsrc/jitcore.pla: 0642: //puts("-->"); puti(dest); putln +; libsrc/jitcore.pla: 0643: codeptr->8 = $4C // JMP abs +; libsrc/jitcore.pla: 0644: codeptr=>9 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0645: if not (codeptr->10 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0646: addrxlate=>[dest] = codeptr + 9 - *jitcodeptr +; libsrc/jitcore.pla: 0647: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$C9 ; CB 201 + !BYTE $66,$0C ; LLW [12] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$0C ; LLW [12] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B196 + !WORD _B196-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B196 +_B197 +; libsrc/jitcore.pla: 0648: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 0649: *(bytecode+case) = $FEFE +; libsrc/jitcore.pla: 0650: case = case + 2 +; libsrc/jitcore.pla: 0651: j-- + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$13 ; LLB [19] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0652: until not j + !BYTE $74,$13 ; SLB [19] +_B195 + !BYTE $64,$13 ; LLB [19] + !BYTE $4E ; BRTRU _B194 + !WORD _B194-* +_B193 +; libsrc/jitcore.pla: 0653: codeptr->0 = $4C // JMP abs +; libsrc/jitcore.pla: 0654: codeptr=>1 = addrxlate=>[case] +; libsrc/jitcore.pla: 0655: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0656: addrxlate=>[case] = codeptr + 1 - *jitcodeptr +; libsrc/jitcore.pla: 0657: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B198 + !WORD _B198-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $72 ; SW +_B198 +_B199 +; libsrc/jitcore.pla: 0658: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0659: else + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B190 + !WORD _B190-* +_B189 +; libsrc/jitcore.pla: 0660: codeptr = dest +; libsrc/jitcore.pla: 0661: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] +_B190 +; libsrc/jitcore.pla: 0662: VY = UNKNOWN +; libsrc/jitcore.pla: 0663: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0664: break + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0665: is $54 // CALL +_B200 +; libsrc/jitcore.pla: 0666: //puts("CALL $"); puth(*(bytecode+i)) +; libsrc/jitcore.pla: 0667: // +; libsrc/jitcore.pla: 0668: // Call address +; libsrc/jitcore.pla: 0669: // +; libsrc/jitcore.pla: 0670: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0671: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0672: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0673: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0674: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F015 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B201 + !WORD _B201-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B201 +_B202 +; libsrc/jitcore.pla: 0675: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0676: codeptr=>1 = *(bytecode+i+1) +; libsrc/jitcore.pla: 0677: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0678: VY = UNKNOWN +; libsrc/jitcore.pla: 0679: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0680: i = i + 2 +; libsrc/jitcore.pla: 0681: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0682: is $56 // ICAL +_B203 +; libsrc/jitcore.pla: 0683: //puts("ICAL") +; libsrc/jitcore.pla: 0684: // +; libsrc/jitcore.pla: 0685: // Pull address off stack +; libsrc/jitcore.pla: 0686: // +; libsrc/jitcore.pla: 0687: if not A_IS_TOSL +; libsrc/jitcore.pla: 0688: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0689: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0690: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B204 + !WORD _B204-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B204 +_B205 +; libsrc/jitcore.pla: 0691: codeptr=>0 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 0692: codeptr=>2 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0693: codeptr=>4 = tmph8+$85 // STA $E8:TMPH +; libsrc/jitcore.pla: 0694: codeptr, VX = resolveX(codeptr + 6, VX + 1) // INX +; libsrc/jitcore.pla: 0695: // +; libsrc/jitcore.pla: 0696: // Call through TMP +; libsrc/jitcore.pla: 0697: // +; libsrc/jitcore.pla: 0698: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0699: codeptr=>1 = jmptmp // $E6:JMPTMP +; libsrc/jitcore.pla: 0700: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0701: VY = UNKNOWN +; libsrc/jitcore.pla: 0702: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0703: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$85,$E8 ; CW 59525 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F016 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$E6 ; CB 230 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0704: is $5A // LEAVE +_B206 +; libsrc/jitcore.pla: 0705: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0706: //puts("LEAVE "); puti(^(bytecode+i)) +; libsrc/jitcore.pla: 0707: // +; libsrc/jitcore.pla: 0708: // Call into VM +; libsrc/jitcore.pla: 0709: // +; libsrc/jitcore.pla: 0710: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0711: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0712: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0713: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0714: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F017 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B207 + !WORD _B207-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B207 +_B208 +; libsrc/jitcore.pla: 0715: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0716: codeptr=>1 = directentry // INTERP +; libsrc/jitcore.pla: 0717: codeptr=>3 = $5A + (^(bytecode+i)<<8) // LEAVE CODE AND OPERAND +; libsrc/jitcore.pla: 0718: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 0719: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0720: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$5A ; CB 90 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0721: is $5C // RET +_B209 +; libsrc/jitcore.pla: 0722: //puts("RET") +; libsrc/jitcore.pla: 0723: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0724: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0725: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0726: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0727: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F018 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B210 + !WORD _B210-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B210 +_B211 +; libsrc/jitcore.pla: 0728: ^codeptr = $60; codeptr++ // RTS + !BYTE $2A,$60 ; CB 96 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0729: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0730: break + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0731: is $60 // LB +_B212 +; libsrc/jitcore.pla: 0732: //puts("LB") +; libsrc/jitcore.pla: 0733: if VY <> 0 +; libsrc/jitcore.pla: 0734: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0735: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0736: VY = 0 +; libsrc/jitcore.pla: 0737: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B213 + !WORD _B213-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B213 +_B214 +; libsrc/jitcore.pla: 0738: if not A_IS_TOSL +; libsrc/jitcore.pla: 0739: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0740: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0741: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B215 + !WORD _B215-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B215 +_B216 +; libsrc/jitcore.pla: 0742: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0743: codeptr=>2 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0744: codeptr=>4 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0745: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0746: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0747: break + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0748: is $62 // LW +_B217 +; libsrc/jitcore.pla: 0749: //puts("LW") +; libsrc/jitcore.pla: 0750: if not A_IS_TOSL +; libsrc/jitcore.pla: 0751: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0752: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0753: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B218 + !WORD _B218-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B218 +_B219 +; libsrc/jitcore.pla: 0754: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0755: codeptr=>2 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0756: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0757: codeptr=>6 = estkh8+$F6-$0100+(VX<<8) // INC ESTKH-1,X +; libsrc/jitcore.pla: 0758: codeptr=>8 = $02D0 // BNE +2 +; libsrc/jitcore.pla: 0759: codeptr=>10 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0760: codeptr=>12 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0761: codeptr=>14 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0762: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0763: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0764: break + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F6,$BF ; CW 49142 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$D0,$02 ; CW 720 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0765: is $64 // LLB +_B220 +; libsrc/jitcore.pla: 0766: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0767: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0768: //puts("LLB "); puti(j) +; libsrc/jitcore.pla: 0769: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0770: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0771: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0772: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B221 + !WORD _B221-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B221 +_B222 +; libsrc/jitcore.pla: 0773: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0774: if VY <> j +; libsrc/jitcore.pla: 0775: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0776: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0777: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B223 + !WORD _B223-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B223 +_B224 +; libsrc/jitcore.pla: 0778: *codeptr = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0779: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0780: if j <> 0 +; libsrc/jitcore.pla: 0781: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0782: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0783: fin + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $4C ; BRFLS _B225 + !WORD _B225-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B225 +_B226 +; libsrc/jitcore.pla: 0784: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0785: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0786: VY = 0 +; libsrc/jitcore.pla: 0787: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0788: break + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0789: is $66 // LLW +_B227 +; libsrc/jitcore.pla: 0790: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0791: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0792: //puts("LLW "); puti(j) +; libsrc/jitcore.pla: 0793: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0794: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0795: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0796: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B228 + !WORD _B228-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B228 +_B229 +; libsrc/jitcore.pla: 0797: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0798: if VY <> j +; libsrc/jitcore.pla: 0799: *codeptr = $A0+((j+1)<<8) // LDY #imm +; libsrc/jitcore.pla: 0800: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0801: VY = j +; libsrc/jitcore.pla: 0802: else + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B230 + !WORD _B230-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $8C ; INCR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +_B230 +; libsrc/jitcore.pla: 0803: ^codeptr = $C8; codeptr++ // INY + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0804: fin + !BYTE $76,$02 ; SLW [2] +_B231 +; libsrc/jitcore.pla: 0805: codeptr=>0 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0806: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0807: codeptr->4 = $88 // DEY +; libsrc/jitcore.pla: 0808: codeptr=>5 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0809: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0810: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0811: break + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$88 ; CB 136 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0812: is $68 // LAB +_B232 +; libsrc/jitcore.pla: 0813: is $6A // LAW +_B233 +; libsrc/jitcore.pla: 0814: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0815: i = i + 2 +; libsrc/jitcore.pla: 0816: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0817: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0818: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0819: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B234 + !WORD _B234-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B234 +_B235 +; libsrc/jitcore.pla: 0820: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0821: if opcode == $68 +; libsrc/jitcore.pla: 0822: //puts("LAB $"); puth(dest) +; libsrc/jitcore.pla: 0823: if VY <> 0 +; libsrc/jitcore.pla: 0824: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0825: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0826: VY = 0 +; libsrc/jitcore.pla: 0827: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$68 ; CB 104 + !BYTE $24 ; BRNE _B236 + !WORD _B236-* + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B238 + !WORD _B238-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B238 +_B239 +; libsrc/jitcore.pla: 0828: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0829: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0830: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B237 + !WORD _B237-* +_B236 +; libsrc/jitcore.pla: 0831: //puts("LAW $"); puth(dest) +; libsrc/jitcore.pla: 0832: codeptr->0 = $AD // LDA abs+1 +; libsrc/jitcore.pla: 0833: codeptr=>1 = dest+1 +; libsrc/jitcore.pla: 0834: codeptr=>3 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0835: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 0836: fin + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] +_B237 +; libsrc/jitcore.pla: 0837: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 0838: codeptr=>1 = dest +; libsrc/jitcore.pla: 0839: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0840: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0841: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0842: is $6C // DLB +_B240 +; libsrc/jitcore.pla: 0843: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0844: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0845: //puts("DLB "); puti(j) +; libsrc/jitcore.pla: 0846: if not A_IS_TOSL +; libsrc/jitcore.pla: 0847: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0848: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0849: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0850: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B241 + !WORD _B241-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] +_B241 +_B242 +; libsrc/jitcore.pla: 0851: if VY <> j +; libsrc/jitcore.pla: 0852: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0853: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0854: VY = j +; libsrc/jitcore.pla: 0855: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B243 + !WORD _B243-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B243 +_B244 +; libsrc/jitcore.pla: 0856: *codeptr = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0857: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0858: if VY <> 0 +; libsrc/jitcore.pla: 0859: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0860: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0861: VY = 0 +; libsrc/jitcore.pla: 0862: fin + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B245 + !WORD _B245-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B245 +_B246 +; libsrc/jitcore.pla: 0863: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0864: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0865: break + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0866: is $6E // DLW +_B247 +; libsrc/jitcore.pla: 0867: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0868: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0869: //puts("DLW "); puti(j) +; libsrc/jitcore.pla: 0870: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0871: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0872: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0873: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B248 + !WORD _B248-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B248 +_B249 +; libsrc/jitcore.pla: 0874: if VY <> j +; libsrc/jitcore.pla: 0875: *codeptr = $A0+((j+1)<<8) // LDY #imm +; libsrc/jitcore.pla: 0876: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0877: VY = j +; libsrc/jitcore.pla: 0878: else + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B250 + !WORD _B250-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $8C ; INCR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B251 + !WORD _B251-* +_B250 +; libsrc/jitcore.pla: 0879: ^codeptr = $C8; codeptr++ // INY + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0880: fin + !BYTE $76,$02 ; SLW [2] +_B251 +; libsrc/jitcore.pla: 0881: codeptr=>0 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0882: codeptr=>2 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0883: codeptr->4 = $88 // DEY +; libsrc/jitcore.pla: 0884: codeptr=>5 = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0885: codeptr=>7 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0886: codeptr = codeptr + 9 +; libsrc/jitcore.pla: 0887: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0888: break + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$88 ; CB 136 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0889: is $70 // SB +_B252 +; libsrc/jitcore.pla: 0890: is $72 // SW +_B253 +; libsrc/jitcore.pla: 0891: if not A_IS_TOSL +; libsrc/jitcore.pla: 0892: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0893: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0894: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B254 + !WORD _B254-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B254 +_B255 +; libsrc/jitcore.pla: 0895: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0896: codeptr=>2 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 0897: codeptr=>4 = estkh8+$81-$0100+(VX<<8) // STA (ESTKH-1,X) +; libsrc/jitcore.pla: 0898: if opcode == $70 +; libsrc/jitcore.pla: 0899: //puts("SB") +; libsrc/jitcore.pla: 0900: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0901: else + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$81,$BF ; CW 49025 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$70 ; CB 112 + !BYTE $24 ; BRNE _B256 + !WORD _B256-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B257 + !WORD _B257-* +_B256 +; libsrc/jitcore.pla: 0902: //puts("SW") +; libsrc/jitcore.pla: 0903: codeptr=>6 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 0904: codeptr=>8 = estkh8+$F6-$0100+(VX<<8) // INC ESTKH-1,X +; libsrc/jitcore.pla: 0905: codeptr=>10 = $02D0 // BNE +2 +; libsrc/jitcore.pla: 0906: codeptr=>12 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0907: codeptr=>14 = estkh8+$81-$0100+(VX<<8) // STA (ESTKH-1,X) +; libsrc/jitcore.pla: 0908: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0909: fin + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$F6,$BF ; CW 49142 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$D0,$02 ; CW 720 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$81,$BF ; CW 49025 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] +_B257 +; libsrc/jitcore.pla: 0910: VX = VX + 2 // INX; INX +; libsrc/jitcore.pla: 0911: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0912: break + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0913: is $74 // SLB +_B258 +; libsrc/jitcore.pla: 0914: is $76 // SLW +_B259 +; libsrc/jitcore.pla: 0915: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0916: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0917: if not A_IS_TOSL +; libsrc/jitcore.pla: 0918: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0919: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0920: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B260 + !WORD _B260-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B260 +_B261 +; libsrc/jitcore.pla: 0921: if VY <> j +; libsrc/jitcore.pla: 0922: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0923: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0924: VY = j +; libsrc/jitcore.pla: 0925: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B262 + !WORD _B262-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B262 +_B263 +; libsrc/jitcore.pla: 0926: codeptr=>0 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0927: if opcode == $74 +; libsrc/jitcore.pla: 0928: //puts("SLB "); puti(j) +; libsrc/jitcore.pla: 0929: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0930: else + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$74 ; CB 116 + !BYTE $24 ; BRNE _B264 + !WORD _B264-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B265 + !WORD _B265-* +_B264 +; libsrc/jitcore.pla: 0931: //puts("SLW "); puti(j) +; libsrc/jitcore.pla: 0932: codeptr->2 = $C8 // INY +; libsrc/jitcore.pla: 0933: codeptr=>3 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0934: codeptr=>5 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0935: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0936: VY++ + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0937: fin + !BYTE $76,$10 ; SLW [16] +_B265 +; libsrc/jitcore.pla: 0938: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0939: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0940: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0941: is $78 // SAB +_B266 +; libsrc/jitcore.pla: 0942: is $7A // SAW +_B267 +; libsrc/jitcore.pla: 0943: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0944: i = i + 2 +; libsrc/jitcore.pla: 0945: if not A_IS_TOSL +; libsrc/jitcore.pla: 0946: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0947: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0948: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B268 + !WORD _B268-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B268 +_B269 +; libsrc/jitcore.pla: 0949: codeptr->0 = $8D // STA abs +; libsrc/jitcore.pla: 0950: codeptr=>1 = dest +; libsrc/jitcore.pla: 0951: if opcode == $78 +; libsrc/jitcore.pla: 0952: //puts("SAB $"); puth(dest) +; libsrc/jitcore.pla: 0953: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0954: else + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$78 ; CB 120 + !BYTE $24 ; BRNE _B270 + !WORD _B270-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B271 + !WORD _B271-* +_B270 +; libsrc/jitcore.pla: 0955: //puts("SAW $"); puth(dest) +; libsrc/jitcore.pla: 0956: codeptr=>3 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0957: codeptr->5 = $8D // STA abs+1 +; libsrc/jitcore.pla: 0958: codeptr=>6 = dest+1 +; libsrc/jitcore.pla: 0959: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 0960: fin + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] +_B271 +; libsrc/jitcore.pla: 0961: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0962: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0963: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0964: is $7C // DAB +_B272 +; libsrc/jitcore.pla: 0965: is $7E // DAW +_B273 +; libsrc/jitcore.pla: 0966: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0967: i = i + 2 +; libsrc/jitcore.pla: 0968: if not A_IS_TOSL +; libsrc/jitcore.pla: 0969: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0970: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0971: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0972: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B274 + !WORD _B274-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] +_B274 +_B275 +; libsrc/jitcore.pla: 0973: codeptr->0 = $8D // STA abs +; libsrc/jitcore.pla: 0974: codeptr=>1 = dest +; libsrc/jitcore.pla: 0975: if opcode == $7C +; libsrc/jitcore.pla: 0976: //puts("DAB $"); puth(dest) +; libsrc/jitcore.pla: 0977: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0978: if VY <> 0 +; libsrc/jitcore.pla: 0979: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0980: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0981: VY = 0 +; libsrc/jitcore.pla: 0982: fin + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$7C ; CB 124 + !BYTE $24 ; BRNE _B276 + !WORD _B276-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B278 + !WORD _B278-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B278 +_B279 +; libsrc/jitcore.pla: 0983: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0984: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0985: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B277 + !WORD _B277-* +_B276 +; libsrc/jitcore.pla: 0986: //puts("DAW $"); puth(dest) +; libsrc/jitcore.pla: 0987: codeptr=>3 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0988: codeptr->5 = $8C // STY abs+1 +; libsrc/jitcore.pla: 0989: codeptr=>6 = dest+1 +; libsrc/jitcore.pla: 0990: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 0991: VY = UNKNOWN +; libsrc/jitcore.pla: 0992: fin + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$8C ; CB 140 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] +_B277 +; libsrc/jitcore.pla: 0993: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0994: is $80 // NOT +_B280 +; libsrc/jitcore.pla: 0995: //puts("NOT") +; libsrc/jitcore.pla: 0996: if not A_IS_TOSL +; libsrc/jitcore.pla: 0997: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0998: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0999: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B281 + !WORD _B281-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B281 +_B282 +; libsrc/jitcore.pla: 1000: codeptr=>0 = estkh8+$15+(VX<<8) // ORA ESTKH,X +; libsrc/jitcore.pla: 1001: codeptr=>2 = $02F0 // BEQ +2 +; libsrc/jitcore.pla: 1002: codeptr=>4 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 1003: codeptr=>6 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1004: codeptr=>8 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1005: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1006: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1007: break + !BYTE $2C,$15,$C0 ; CW 49173 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$F0,$02 ; CW 752 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1008: is $82 // ADD +_B283 +; libsrc/jitcore.pla: 1009: //puts("ADD") +; libsrc/jitcore.pla: 1010: if not A_IS_TOSL +; libsrc/jitcore.pla: 1011: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1012: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1013: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B284 + !WORD _B284-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B284 +_B285 +; libsrc/jitcore.pla: 1014: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1015: codeptr=>1 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1016: codeptr=>3 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1017: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1018: codeptr=>7 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1019: codeptr=>9 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1020: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 1021: VX++ // INX + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1022: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1023: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1024: is $84 // SUB +_B286 +; libsrc/jitcore.pla: 1025: //puts("SUB") +; libsrc/jitcore.pla: 1026: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1027: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1028: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1029: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B287 + !WORD _B287-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B287 +_B288 +; libsrc/jitcore.pla: 1030: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1031: codeptr->2 = $38 // SEC +; libsrc/jitcore.pla: 1032: codeptr=>3 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1033: codeptr=>5 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1034: codeptr=>7 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1035: codeptr=>9 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1036: codeptr=>11 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1037: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 1038: VX++ // INX + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1039: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1040: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1041: is $86 // MUL +_B289 +; libsrc/jitcore.pla: 1042: is $88 // DIV +_B290 +; libsrc/jitcore.pla: 1043: is $8A // MOD +_B291 +; libsrc/jitcore.pla: 1044: is $9A // SHL +_B292 +; libsrc/jitcore.pla: 1045: is $9C // SHR +_B293 +; libsrc/jitcore.pla: 1046: //puts("MUL,DIV,MOD,SHL,SHR") +; libsrc/jitcore.pla: 1047: // when opcode +; libsrc/jitcore.pla: 1048: // is $86 +; libsrc/jitcore.pla: 1049: // //puts("MUL") +; libsrc/jitcore.pla: 1050: // is $88 +; libsrc/jitcore.pla: 1051: // //puts("DIV") +; libsrc/jitcore.pla: 1052: // is $8A +; libsrc/jitcore.pla: 1053: // //puts("MOD") +; libsrc/jitcore.pla: 1054: // is $9A +; libsrc/jitcore.pla: 1055: // //puts("SHL") +; libsrc/jitcore.pla: 1056: // is $9C +; libsrc/jitcore.pla: 1057: // //puts("SHR") +; libsrc/jitcore.pla: 1058: // wend +; libsrc/jitcore.pla: 1059: // +; libsrc/jitcore.pla: 1060: // Call into VM +; libsrc/jitcore.pla: 1061: // +; libsrc/jitcore.pla: 1062: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1063: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1064: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1065: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1066: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F019 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B294 + !WORD _B294-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B294 +_B295 +; libsrc/jitcore.pla: 1067: codeptr->0 = $20 // JSR INTERP +; libsrc/jitcore.pla: 1068: codeptr=>1 = directentry // INTERP +; libsrc/jitcore.pla: 1069: codeptr=>3 = $C000+opcode // OPCODE; NATV CODE +; libsrc/jitcore.pla: 1070: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 1071: VY = UNKNOWN +; libsrc/jitcore.pla: 1072: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1073: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $B0,$12 ; ADDLB [18] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1074: is $90 // NEG +_B296 +; libsrc/jitcore.pla: 1075: //puts("NEG") +; libsrc/jitcore.pla: 1076: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1077: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1078: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1079: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B297 + !WORD _B297-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B297 +_B298 +; libsrc/jitcore.pla: 1080: if VY <> 0 +; libsrc/jitcore.pla: 1081: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1082: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1083: VY = 0 +; libsrc/jitcore.pla: 1084: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B299 + !WORD _B299-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B299 +_B300 +; libsrc/jitcore.pla: 1085: codeptr=>0 = $3898 // TYA -> LDA #$00; SEC +; libsrc/jitcore.pla: 1086: codeptr=>2 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1087: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1088: codeptr->6 = $98 // TYA -> LDA #00 +; libsrc/jitcore.pla: 1089: codeptr=>7 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1090: codeptr=>9 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1091: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 1092: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1093: break + !BYTE $2C,$98,$38 ; CW 14488 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1094: is $92 // COMP +_B301 +; libsrc/jitcore.pla: 1095: //puts("COMP") +; libsrc/jitcore.pla: 1096: if not A_IS_TOSL +; libsrc/jitcore.pla: 1097: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1098: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1099: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B302 + !WORD _B302-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B302 +_B303 +; libsrc/jitcore.pla: 1100: codeptr=>0 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1101: codeptr=>2 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1102: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1103: codeptr=>6 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1104: codeptr=>8 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1105: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1106: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1107: break + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1108: is $94 // AND +_B304 +; libsrc/jitcore.pla: 1109: is $96 // OR +_B305 +; libsrc/jitcore.pla: 1110: is $98 // XOR +_B306 +; libsrc/jitcore.pla: 1111: when opcode + !BYTE $64,$12 ; LLB [18] + !BYTE $52 ; SEL + !WORD _B308-* +; libsrc/jitcore.pla: 1112: is $94 +_B309 +; libsrc/jitcore.pla: 1113: //puts("AND") +; libsrc/jitcore.pla: 1114: j = $35 +; libsrc/jitcore.pla: 1115: break + !BYTE $2A,$35 ; CB 53 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +; libsrc/jitcore.pla: 1116: is $96 +_B310 +; libsrc/jitcore.pla: 1117: //puts("OR") +; libsrc/jitcore.pla: 1118: j = $15 +; libsrc/jitcore.pla: 1119: break + !BYTE $2A,$15 ; CB 21 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +; libsrc/jitcore.pla: 1120: is $98 +_B311 +; libsrc/jitcore.pla: 1121: //puts("XOR") +; libsrc/jitcore.pla: 1122: j = $55 +; libsrc/jitcore.pla: 1123: wend + !BYTE $2A,$55 ; CB 85 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +_B308 + !BYTE $03 ; CASEBLOCK + !WORD $0094 + !WORD _B309-* + !WORD $0096 + !WORD _B310-* + !WORD $0098 + !WORD _B311-* +_B307 +; libsrc/jitcore.pla: 1124: if not A_IS_TOSL +; libsrc/jitcore.pla: 1125: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1126: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1127: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B312 + !WORD _B312-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B312 +_B313 +; libsrc/jitcore.pla: 1128: codeptr->0 = j // OP +; libsrc/jitcore.pla: 1129: codeptr->1 = estkl+$01+VX // ESTKL+1,X +; libsrc/jitcore.pla: 1130: codeptr=>2 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1131: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1132: codeptr->6 = j // OP +; libsrc/jitcore.pla: 1133: codeptr->7 = estkh+$01+VX // ESTKH+1,X +; libsrc/jitcore.pla: 1134: codeptr=>8 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1135: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1136: VX++ // INX + !BYTE $64,$13 ; LLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$D1 ; CB 209 + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $64,$13 ; LLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $2A,$C1 ; CB 193 + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1137: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1138: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1139: is $9E // IDXW +_B314 +; libsrc/jitcore.pla: 1140: //puts("IDXW") +; libsrc/jitcore.pla: 1141: if not A_IS_TOSL +; libsrc/jitcore.pla: 1142: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1143: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1144: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B315 + !WORD _B315-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B315 +_B316 +; libsrc/jitcore.pla: 1145: codeptr->0 = $0A // ASL +; libsrc/jitcore.pla: 1146: codeptr=>1 = estkh8+$36+(VX<<8) // ROL ESTKH,X +; libsrc/jitcore.pla: 1147: codeptr->3 = $18 // CLC +; libsrc/jitcore.pla: 1148: codeptr=>4 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1149: codeptr=>6 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1150: codeptr=>8 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1151: codeptr=>10 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1152: codeptr=>12 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1153: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 1154: VX++ // INX + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$36,$C0 ; CW 49206 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1155: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1156: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1157: is $A0 // BRGT - FOR/NEXT SPECIFIC TEST & BRANCH +_B317 +; libsrc/jitcore.pla: 1158: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1159: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1160: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1161: //puts("BRGT "); puti(dest) +; libsrc/jitcore.pla: 1162: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1163: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1164: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1165: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1166: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F020 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B318 + !WORD _B318-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B318 +_B319 +; libsrc/jitcore.pla: 1167: codeptr=>0 = estkl8+$B5+$0100//+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1168: codeptr=>2 = estkl8+$D5//+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 1169: codeptr=>4 = estkh8+$B5+$0100//+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1170: codeptr=>6 = estkh8+$F5//+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 1171: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1172: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1173: codeptr=>12 = $0310 // BPL +3 +; libsrc/jitcore.pla: 1174: codeptr->14 = $4C // JMP abs +; libsrc/jitcore.pla: 1175: codeptr=>15 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1176: if not (codeptr->16 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1177: addrxlate=>[dest] = codeptr + 15 - *jitcodeptr +; libsrc/jitcore.pla: 1178: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B320 + !WORD _B320-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B320 +_B321 +; libsrc/jitcore.pla: 1179: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1180: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1181: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1182: is $A2 // BRLT - FOR/NEXT SPECIFIC TEST & BRANCH +_B322 +; libsrc/jitcore.pla: 1183: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1184: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1185: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1186: //puts("BRLT "); puti(dest) +; libsrc/jitcore.pla: 1187: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1188: if not A_IS_TOSL +; libsrc/jitcore.pla: 1189: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1190: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1191: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F021 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B323 + !WORD _B323-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B324 + !WORD _B324-* +_B323 +; libsrc/jitcore.pla: 1192: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1193: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1194: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B325 + !WORD _B325-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B325 +_B324 +; libsrc/jitcore.pla: 1195: codeptr=>0 = estkl8+$D5+$0100//+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 1196: codeptr=>2 = estkh8+$B5//+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1197: codeptr=>4 = estkh8+$F5+$0100//+(VX<<8) // SBC ESTKH+1 +; libsrc/jitcore.pla: 1198: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1199: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1200: codeptr=>10 = $0310 // BPL +3 +; libsrc/jitcore.pla: 1201: codeptr->12 = $4C // JMP abs +; libsrc/jitcore.pla: 1202: codeptr=>13 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1203: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1204: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jitcore.pla: 1205: fin + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B326 + !WORD _B326-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B326 +_B327 +; libsrc/jitcore.pla: 1206: codeptr = codeptr + 15 +; libsrc/jitcore.pla: 1207: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1208: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1209: is $A4 // INCBRLE - FOR/NEXT SPECIFIC INC & TEST & BRANCH +_B328 +; libsrc/jitcore.pla: 1210: is $A6 // ADDBRLE - FOR/NEXT SPECIFIC ADD & TEST & BRANCH +_B329 +; libsrc/jitcore.pla: 1211: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1212: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1213: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1214: if not A_IS_TOSL +; libsrc/jitcore.pla: 1215: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1216: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1217: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B330 + !WORD _B330-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B330 +_B331 +; libsrc/jitcore.pla: 1218: if opcode == $A4 +; libsrc/jitcore.pla: 1219: // +; libsrc/jitcore.pla: 1220: // INCR +; libsrc/jitcore.pla: 1221: // +; libsrc/jitcore.pla: 1222: //puts("INCBRLE "); puti(dest) +; libsrc/jitcore.pla: 1223: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1224: codeptr=>1 = $0169 // ADC #$01 +; libsrc/jitcore.pla: 1225: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1226: codeptr=>5 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1227: codeptr=>7 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1228: codeptr, VX = resolveX(codeptr + 9, VX) +; libsrc/jitcore.pla: 1229: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$A4 ; CB 164 + !BYTE $24 ; BRNE _B332 + !WORD _B332-* + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$69,$01 ; CW 361 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F022 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B333 + !WORD _B333-* +_B332 +; libsrc/jitcore.pla: 1230: // +; libsrc/jitcore.pla: 1231: // ADD +; libsrc/jitcore.pla: 1232: // +; libsrc/jitcore.pla: 1233: //puts("ADDBRLE "); puti(dest) +; libsrc/jitcore.pla: 1234: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1235: codeptr=>1 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1236: codeptr=>3 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1237: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1238: codeptr=>7 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1239: codeptr=>9 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1240: codeptr, VX = resolveX(codeptr + 11, VX + 1) // INX +; libsrc/jitcore.pla: 1241: fin + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F023 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] +_B333 +; libsrc/jitcore.pla: 1242: // +; libsrc/jitcore.pla: 1243: // BRLE +; libsrc/jitcore.pla: 1244: // +; libsrc/jitcore.pla: 1245: codeptr=>0 = estkl8+$B5+$0100//+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1246: codeptr=>2 = estkl8+$D5//+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 1247: codeptr=>4 = estkh8+$B5+$0100//+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1248: codeptr=>6 = estkh8+$F5//+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 1249: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1250: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1251: codeptr=>12 = $0330 // BMI +3 +; libsrc/jitcore.pla: 1252: codeptr->14 = $4C // JMP abs +; libsrc/jitcore.pla: 1253: codeptr=>15 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1254: if not (codeptr->16 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1255: addrxlate=>[dest] = codeptr + 15 - *jitcodeptr +; libsrc/jitcore.pla: 1256: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B334 + !WORD _B334-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B334 +_B335 +; libsrc/jitcore.pla: 1257: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1258: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1259: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1260: is $A8 // DECBRGR - FOR/NEXT SPECIFIC DEC & TEST & BRANCH +_B336 +; libsrc/jitcore.pla: 1261: is $AA // SUBBRGE - FOR/NEXT SPECIFIC SUB & TEST & BRANCH +_B337 +; libsrc/jitcore.pla: 1262: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1263: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1264: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1265: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1266: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1267: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1268: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B338 + !WORD _B338-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B338 +_B339 +; libsrc/jitcore.pla: 1269: if opcode == $A8 +; libsrc/jitcore.pla: 1270: // +; libsrc/jitcore.pla: 1271: // DECR +; libsrc/jitcore.pla: 1272: // +; libsrc/jitcore.pla: 1273: //puts("DECBRGE "); puti(dest) +; libsrc/jitcore.pla: 1274: if not A_IS_TOSL +; libsrc/jitcore.pla: 1275: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1276: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1277: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B340 + !WORD _B340-* + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B342 + !WORD _B342-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B342 +_B343 +; libsrc/jitcore.pla: 1278: codeptr->0 = $38 // SEC +; libsrc/jitcore.pla: 1279: codeptr=>1 = $01E9 // SBC #$01 +; libsrc/jitcore.pla: 1280: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1281: codeptr=>5 = $02B0 // BCS +2 +; libsrc/jitcore.pla: 1282: codeptr=>7 = estkh8+$D6+(VX<<8) // DEC ESTKH,X +; libsrc/jitcore.pla: 1283: codeptr, VX = resolveX(codeptr + 9, VX) +; libsrc/jitcore.pla: 1284: else + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$E9,$01 ; CW 489 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B0,$02 ; CW 688 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$D6,$C0 ; CW 49366 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F024 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B341 + !WORD _B341-* +_B340 +; libsrc/jitcore.pla: 1285: // +; libsrc/jitcore.pla: 1286: // SUB +; libsrc/jitcore.pla: 1287: // +; libsrc/jitcore.pla: 1288: //puts("SUBBRGE "); puti(dest) +; libsrc/jitcore.pla: 1289: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1290: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1291: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1292: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B344 + !WORD _B344-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B344 +_B345 +; libsrc/jitcore.pla: 1293: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1294: codeptr->2 = $38 // SEC +; libsrc/jitcore.pla: 1295: codeptr=>3 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1296: codeptr=>5 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1297: codeptr=>7 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1298: codeptr=>9 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1299: codeptr=>11 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1300: codeptr, VX = resolveX(codeptr + 13, VX + 1) // INX +; libsrc/jitcore.pla: 1301: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1302: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1303: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F025 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B341 +; libsrc/jitcore.pla: 1304: // +; libsrc/jitcore.pla: 1305: // BRGE +; libsrc/jitcore.pla: 1306: // +; libsrc/jitcore.pla: 1307: codeptr=>0 = estkl8+$D5+$0100//+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 1308: codeptr=>2 = estkh8+$B5//+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1309: codeptr=>4 = estkh8+$F5+$0100//+(VX<<8) // SBC ESTKH+1,X +; libsrc/jitcore.pla: 1310: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1311: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1312: codeptr=>10 = $0330 // BMI +3 +; libsrc/jitcore.pla: 1313: codeptr->12 = $4C // JMP abs +; libsrc/jitcore.pla: 1314: codeptr=>13 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1315: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1316: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jitcore.pla: 1317: fin + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B346 + !WORD _B346-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B346 +_B347 +; libsrc/jitcore.pla: 1318: codeptr = codeptr + 15 +; libsrc/jitcore.pla: 1319: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1320: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1321: is $AC // BRAND - LOGICAL AND SPECIFIC BRANCH +_B348 +; libsrc/jitcore.pla: 1322: is $AE // BROR - LOGICAL OR SPECIFIC BRANCH +_B349 +; libsrc/jitcore.pla: 1323: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1324: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1325: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1326: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1327: if not A_IS_TOSL +; libsrc/jitcore.pla: 1328: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1329: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1330: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C001 +_F026 !WORD _C001 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B350 + !WORD _B350-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B351 + !WORD _B351-* +_B350 +; libsrc/jitcore.pla: 1331: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1332: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1333: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B352 + !WORD _B352-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B352 +_B351 +; libsrc/jitcore.pla: 1334: codeptr=>0 = estkh8+$15//+(VX<<8) // ORA ESTKH,X +; libsrc/jitcore.pla: 1335: if opcode == $AC +; libsrc/jitcore.pla: 1336: //puts("BRAND "); puti(dest) +; libsrc/jitcore.pla: 1337: codeptr=>2 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 1338: else + !BYTE $2C,$15,$C0 ; CW 49173 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$AC ; CB 172 + !BYTE $24 ; BRNE _B353 + !WORD _B353-* + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B354 + !WORD _B354-* +_B353 +; libsrc/jitcore.pla: 1339: //puts("BROR "); puti(dest) +; libsrc/jitcore.pla: 1340: codeptr=>2 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 1341: fin + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B354 +; libsrc/jitcore.pla: 1342: codeptr->4 = $4C // JMP abs +; libsrc/jitcore.pla: 1343: codeptr=>5 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1344: if not (codeptr->6 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1345: addrxlate=>[dest] = codeptr + 5 - *jitcodeptr +; libsrc/jitcore.pla: 1346: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B355 + !WORD _B355-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B355 +_B356 +; libsrc/jitcore.pla: 1347: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 1348: VX++ // INX + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1349: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1350: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1351: is $B0 // ADDLB +_B357 +; libsrc/jitcore.pla: 1352: is $B2 // ADDLW +_B358 +; libsrc/jitcore.pla: 1353: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1354: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1355: if not A_IS_TOSL +; libsrc/jitcore.pla: 1356: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1357: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1358: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B359 + !WORD _B359-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B359 +_B360 +; libsrc/jitcore.pla: 1359: if VY <> j +; libsrc/jitcore.pla: 1360: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1361: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1362: VY = j +; libsrc/jitcore.pla: 1363: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B361 + !WORD _B361-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B361 +_B362 +; libsrc/jitcore.pla: 1364: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1365: codeptr=>1 = ifpl8+$71 // ADC (IFP),Y +; libsrc/jitcore.pla: 1366: if opcode == $B0 +; libsrc/jitcore.pla: 1367: //puts("ADDLB "); puti(j) +; libsrc/jitcore.pla: 1368: codeptr=>3 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1369: codeptr=>5 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1370: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 1371: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1372: else + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$71,$E0 ; CW 57457 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$B0 ; CB 176 + !BYTE $24 ; BRNE _B363 + !WORD _B363-* + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B364 + !WORD _B364-* +_B363 +; libsrc/jitcore.pla: 1373: //puts("ADDLW "); puti(j) +; libsrc/jitcore.pla: 1374: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1375: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1376: codeptr->7 = $C8 // INY +; libsrc/jitcore.pla: 1377: codeptr=>8 = ifpl8+$71 // ADC (IFP),Y +; libsrc/jitcore.pla: 1378: codeptr=>10 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1379: codeptr = codeptr + 12 +; libsrc/jitcore.pla: 1380: VY++ + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$71,$E0 ; CW 57457 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1381: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1382: fin + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] +_B364 +; libsrc/jitcore.pla: 1383: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1384: is $B4 // ADDAB +_B365 +; libsrc/jitcore.pla: 1385: is $B6 // ADDAW +_B366 +; libsrc/jitcore.pla: 1386: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1387: i = i + 2 +; libsrc/jitcore.pla: 1388: if not A_IS_TOSL +; libsrc/jitcore.pla: 1389: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1390: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1391: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B367 + !WORD _B367-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B367 +_B368 +; libsrc/jitcore.pla: 1392: codeptr=>0 = $6D18 // CLC; ADC abs +; libsrc/jitcore.pla: 1393: codeptr=>2 = dest +; libsrc/jitcore.pla: 1394: if opcode == $B4 +; libsrc/jitcore.pla: 1395: //puts("ADDAB $"); puth(dest) +; libsrc/jitcore.pla: 1396: codeptr=>4 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1397: codeptr=>6 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1398: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 1399: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1400: else + !BYTE $2C,$18,$6D ; CW 27928 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$B4 ; CB 180 + !BYTE $24 ; BRNE _B369 + !WORD _B369-* + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B370 + !WORD _B370-* +_B369 +; libsrc/jitcore.pla: 1401: //puts("ADDAW $"); puth(dest) +; libsrc/jitcore.pla: 1402: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1403: codeptr=>6 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1404: codeptr->8 = $6D // ADC abs +; libsrc/jitcore.pla: 1405: codeptr=>9 = dest+1 +; libsrc/jitcore.pla: 1406: codeptr=>11 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1407: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 1408: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1409: fin + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$6D ; CB 109 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] +_B370 +; libsrc/jitcore.pla: 1410: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1411: is $B8 // IDXLB +_B371 +; libsrc/jitcore.pla: 1412: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1413: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1414: //puts("IDXLB "); puti(j) +; libsrc/jitcore.pla: 1415: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1416: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1417: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1418: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B372 + !WORD _B372-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B372 +_B373 +; libsrc/jitcore.pla: 1419: if VY <> j +; libsrc/jitcore.pla: 1420: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1421: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1422: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B374 + !WORD _B374-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B374 +_B375 +; libsrc/jitcore.pla: 1423: *codeptr = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1424: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1425: if j <> 0 +; libsrc/jitcore.pla: 1426: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1427: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1428: fin + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $4C ; BRFLS _B376 + !WORD _B376-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B376 +_B377 +; libsrc/jitcore.pla: 1429: codeptr->0 = $0A // ASL +; libsrc/jitcore.pla: 1430: codeptr=>1 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1431: codeptr=>3 = $18C8 // INY; CLC +; libsrc/jitcore.pla: 1432: codeptr=>5 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1433: codeptr=>7 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1434: codeptr->9 = $98 // TYA +; libsrc/jitcore.pla: 1435: codeptr=>10 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1436: codeptr=>12 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1437: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 1438: VY = UNKNOWN +; libsrc/jitcore.pla: 1439: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1440: break + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$C8,$18 ; CW 6344 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1441: is $BA // IDXLW +_B378 +; libsrc/jitcore.pla: 1442: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1443: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1444: //puts("IDXLW "); puti(j) +; libsrc/jitcore.pla: 1445: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1446: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1447: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1448: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B379 + !WORD _B379-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B379 +_B380 +; libsrc/jitcore.pla: 1449: if VY <> j +; libsrc/jitcore.pla: 1450: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1451: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1452: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B381 + !WORD _B381-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B381 +_B382 +; libsrc/jitcore.pla: 1453: codeptr=>0 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1454: codeptr->2 = $0A // ASL +; libsrc/jitcore.pla: 1455: codeptr=>3 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 1456: codeptr->5 = $C8 // INY +; libsrc/jitcore.pla: 1457: codeptr=>6 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1458: codeptr=>8 = $A82A // ROL; TAY +; libsrc/jitcore.pla: 1459: codeptr=>10 = tmpl8+$A5 // LDA $E7:TMPL +; libsrc/jitcore.pla: 1460: codeptr->12 = $18 // CLC +; libsrc/jitcore.pla: 1461: codeptr=>13 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1462: codeptr=>15 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1463: codeptr->17 = $98 // TYA +; libsrc/jitcore.pla: 1464: codeptr=>18 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1465: codeptr=>20 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1466: codeptr = codeptr + 22 +; libsrc/jitcore.pla: 1467: VY = UNKNOWN +; libsrc/jitcore.pla: 1468: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1469: break + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$2A,$A8 ; CW 43050 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$A5,$E7 ; CW 59301 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$16 ; ADDI 22 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1470: is $BC // IDXAB +_B383 +; libsrc/jitcore.pla: 1471: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1472: i = i + 2 +; libsrc/jitcore.pla: 1473: //puts("IDXAB $"); puth(*(bytecode+i)) +; libsrc/jitcore.pla: 1474: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1475: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1476: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1477: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B384 + !WORD _B384-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B384 +_B385 +; libsrc/jitcore.pla: 1478: if VY <> 0 +; libsrc/jitcore.pla: 1479: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1480: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1481: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B386 + !WORD _B386-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B386 +_B387 +; libsrc/jitcore.pla: 1482: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 1483: codeptr=>1 = dest +; libsrc/jitcore.pla: 1484: codeptr->3 = $0A // ASL +; libsrc/jitcore.pla: 1485: codeptr=>4 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1486: codeptr=>6 = $18C8 // INY; CLC +; libsrc/jitcore.pla: 1487: codeptr=>8 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1488: codeptr=>10 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1489: codeptr->12 = $98 // TYA +; libsrc/jitcore.pla: 1490: codeptr=>13 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1491: codeptr=>15 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1492: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1493: VY = UNKNOWN +; libsrc/jitcore.pla: 1494: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1495: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$C8,$18 ; CW 6344 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1496: is $BE // IDXAW +_B388 +; libsrc/jitcore.pla: 1497: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1498: i = i + 2 +; libsrc/jitcore.pla: 1499: //puts("IDXAW $"); puth(dest) +; libsrc/jitcore.pla: 1500: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1501: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1502: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1503: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B389 + !WORD _B389-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B389 +_B390 +; libsrc/jitcore.pla: 1504: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 1505: codeptr=>1 = dest +; libsrc/jitcore.pla: 1506: codeptr->3 = $0A // ASL +; libsrc/jitcore.pla: 1507: codeptr=>4 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 1508: codeptr->6 = $AD // LDA abs+1 +; libsrc/jitcore.pla: 1509: codeptr=>7 = dest+1 +; libsrc/jitcore.pla: 1510: codeptr=>9 = $A82A // ROL; TAY +; libsrc/jitcore.pla: 1511: codeptr=>11 = tmpl8+$A5 // LDA $E7:TMPL +; libsrc/jitcore.pla: 1512: codeptr->13 = $18 // CLC +; libsrc/jitcore.pla: 1513: codeptr=>14 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1514: codeptr=>16 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1515: codeptr->18 = $98 // TYA +; libsrc/jitcore.pla: 1516: codeptr=>19 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1517: codeptr=>21 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1518: codeptr = codeptr + 23 +; libsrc/jitcore.pla: 1519: VY = UNKNOWN +; libsrc/jitcore.pla: 1520: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1521: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$2A,$A8 ; CW 43050 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$A5,$E7 ; CW 59301 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$13 ; ADDI 19 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$15 ; ADDI 21 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$17 ; ADDI 23 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1522: is $FE // NOPed out earlier by SELect +_B391 +; libsrc/jitcore.pla: 1523: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1524: otherwise +_B089 + !BYTE $4F ; CASEBLOCK + !WORD $0020 + !WORD _B090-* + !WORD $0022 + !WORD _B093-* + !WORD $0024 + !WORD _B094-* + !WORD $0026 + !WORD _B101-* + !WORD $0028 + !WORD _B105-* + !WORD $002A + !WORD _B112-* + !WORD $002C + !WORD _B102-* + !WORD $002E + !WORD _B120-* + !WORD $0030 + !WORD _B126-* + !WORD $0032 + !WORD _B125-* + !WORD $0034 + !WORD _B127-* + !WORD $0038 + !WORD _B131-* + !WORD $003A + !WORD _B137-* + !WORD $003C + !WORD _B143-* + !WORD $003E + !WORD _B148-* + !WORD $0040 + !WORD _B151-* + !WORD $0042 + !WORD _B152-* + !WORD $0044 + !WORD _B159-* + !WORD $0046 + !WORD _B167-* + !WORD $0048 + !WORD _B168-* + !WORD $004A + !WORD _B160-* + !WORD $004C + !WORD _B175-* + !WORD $004E + !WORD _B176-* + !WORD $0050 + !WORD _B183-* + !WORD $0052 + !WORD _B188-* + !WORD $0054 + !WORD _B200-* + !WORD $0056 + !WORD _B203-* + !WORD $005A + !WORD _B206-* + !WORD $005C + !WORD _B209-* + !WORD $005E + !WORD _B113-* + !WORD $0060 + !WORD _B212-* + !WORD $0062 + !WORD _B217-* + !WORD $0064 + !WORD _B220-* + !WORD $0066 + !WORD _B227-* + !WORD $0068 + !WORD _B232-* + !WORD $006A + !WORD _B233-* + !WORD $006C + !WORD _B240-* + !WORD $006E + !WORD _B247-* + !WORD $0070 + !WORD _B252-* + !WORD $0072 + !WORD _B253-* + !WORD $0074 + !WORD _B258-* + !WORD $0076 + !WORD _B259-* + !WORD $0078 + !WORD _B266-* + !WORD $007A + !WORD _B267-* + !WORD $007C + !WORD _B272-* + !WORD $007E + !WORD _B273-* + !WORD $0080 + !WORD _B280-* + !WORD $0082 + !WORD _B283-* + !WORD $0084 + !WORD _B286-* + !WORD $0086 + !WORD _B289-* + !WORD $0088 + !WORD _B290-* + !WORD $008A + !WORD _B291-* + !WORD $008C + !WORD _B132-* + !WORD $008E + !WORD _B138-* + !WORD $0090 + !WORD _B296-* + !WORD $0092 + !WORD _B301-* + !WORD $0094 + !WORD _B304-* + !WORD $0096 + !WORD _B305-* + !WORD $0098 + !WORD _B306-* + !WORD $009A + !WORD _B292-* + !WORD $009C + !WORD _B293-* + !WORD $009E + !WORD _B314-* + !WORD $00A0 + !WORD _B317-* + !WORD $00A2 + !WORD _B322-* + !WORD $00A4 + !WORD _B328-* + !WORD $00A6 + !WORD _B329-* + !WORD $00A8 + !WORD _B336-* + !WORD $00AA + !WORD _B337-* + !WORD $00AC + !WORD _B348-* + !WORD $00AE + !WORD _B349-* + !WORD $00B0 + !WORD _B357-* + !WORD $00B2 + !WORD _B358-* + !WORD $00B4 + !WORD _B365-* + !WORD $00B6 + !WORD _B366-* + !WORD $00B8 + !WORD _B371-* + !WORD $00BA + !WORD _B378-* + !WORD $00BC + !WORD _B383-* + !WORD $00BE + !WORD _B388-* + !WORD $00FE + !WORD _B391-* +; libsrc/jitcore.pla: 1525: //puts("???: $"); puth(^(bytecode+i)); putln +; libsrc/jitcore.pla: 1526: wend +_B088 +; libsrc/jitcore.pla: 1527: fin +_B081 +; libsrc/jitcore.pla: 1528: //putln +; libsrc/jitcore.pla: 1529: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1530: if i >= defptr->bytecodesize +; libsrc/jitcore.pla: 1531: // +; libsrc/jitcore.pla: 1532: // Done compiling. Update DEF entry with JMP to compiled code +; libsrc/jitcore.pla: 1533: // +; libsrc/jitcore.pla: 1534: defptr->interpjsr = $4C // JMP +; libsrc/jitcore.pla: 1535: defptr=>interpaddr = *jitcodeptr +; libsrc/jitcore.pla: 1536: *jitcodeptr = codeptr +; libsrc/jitcore.pla: 1537: //puts("Done compiling: $"); puth(defptr=>interpaddr) +; libsrc/jitcore.pla: 1538: //puts("->$"); puth(*jitcodeptr); putln +; libsrc/jitcore.pla: 1539: //getc +; libsrc/jitcore.pla: 1540: return + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B392 + !WORD _B392-* + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$E4,$03 ; SAW 996 + !BYTE $5A,$15 ; LEAVE 21 +; libsrc/jitcore.pla: 1541: fin +_B392 +_B393 +; libsrc/jitcore.pla: 1542: loop +_B070 + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F027 !WORD 0 + !BYTE $4E ; BRTRU _B068 + !WORD _B068-* +_B069 +; libsrc/jitcore.pla: 1543: // +; libsrc/jitcore.pla: 1544: // If we got here we ran out of code buffer space. +; libsrc/jitcore.pla: 1545: // +; libsrc/jitcore.pla: 1546: //puts("Ran out of code buffer\n") +; libsrc/jitcore.pla: 1547: //getc +; libsrc/jitcore.pla: 1548: end + !BYTE $5A,$15 ; LEAVE 21 +; libsrc/apple/jit.pla: 0044: +; libsrc/apple/jit.pla: 0045: // +; libsrc/apple/jit.pla: 0046: // Install JIT compiler +; libsrc/apple/jit.pla: 0047: // +; libsrc/apple/jit.pla: 0048: if *jitcomp +_INIT +; libsrc/apple/jit.pla: 0049: return 0 + !BYTE $6A,$E2,$03 ; LAW 994 + !BYTE $4C ; BRFLS _B394 + !WORD _B394-* + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/jit.pla: 0050: fin +_B394 +_B395 +; libsrc/apple/jit.pla: 0051: *jitcomp = @compiler +; libsrc/apple/jit.pla: 0052: cmdsys.jitcount = 36 +; libsrc/apple/jit.pla: 0053: cmdsys.jitsize = 96 +; libsrc/apple/jit.pla: 0054: puts("JITC enabled\n") + !BYTE $26 ; LA _C002+0 +_F028 !WORD _C002+0 + !BYTE $7A,$E2,$03 ; SAW 994 + !BYTE $2A,$24 ; CB 36 + !BYTE $78 ; SAB _X000+17 +_F029 !WORD 0+17 + !BYTE $2A,$60 ; CB 96 + !BYTE $78 ; SAB _X000+18 +_F030 !WORD 0+18 + !BYTE $2E ; CS + !BYTE $0D + !BYTE $4A,$49,$54,$43,$20,$65,$6E,$61 + !BYTE $62,$6C,$65,$64,$0D + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 +; libsrc/apple/jit.pla: 0055: return modkeep + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; libsrc/apple/jit.pla: 0056: done +_SYSFLAGS = 0 +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ISULE + !BYTE $C9,$D3,$D5,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 27 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/jit16.a b/src/libsrc/apple/jit16.a new file mode 100644 index 0000000..aa6306c --- /dev/null +++ b/src/libsrc/apple/jit16.a @@ -0,0 +1,5445 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/jit16.pla: 0001: // +; libsrc/apple/jit16.pla: 0002: // PLASMA JIT bytecode compiler +; libsrc/apple/jit16.pla: 0003: // +; libsrc/apple/jit16.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/jit16.pla: 0004: +; libsrc/apple/jit16.pla: 0005: // +; libsrc/apple/jit16.pla: 0006: // Indirect interpreter DEFinition entrypoint +; libsrc/apple/jit16.pla: 0007: // +; libsrc/apple/jit16.pla: 0008: struc t_defentry + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/apple/jit16.pla: 0009: byte interpjsr + ; interpjsr = 0 +; libsrc/apple/jit16.pla: 0010: word interpaddr + ; interpaddr = 1 +; libsrc/apple/jit16.pla: 0011: word bytecodeaddr + ; bytecodeaddr = 3 +; libsrc/apple/jit16.pla: 0012: byte callcount + ; callcount = 5 +; libsrc/apple/jit16.pla: 0013: byte bytecodesize + ; bytecodesize = 6 +; libsrc/apple/jit16.pla: 0014: end + ; t_defentry = 7 +; libsrc/apple/jit16.pla: 0015: // +; libsrc/apple/jit16.pla: 0016: // JIT compiler constants +; libsrc/apple/jit16.pla: 0017: // +; libsrc/apple/jit16.pla: 0018: const jitcomp = $03E2 + ; jitcomp = 994 +; libsrc/apple/jit16.pla: 0019: const jitcodeptr = $03E4 + ; jitcodeptr = 996 +; libsrc/apple/jit16.pla: 0020: const codemax = $BEE0 + ; codemax = 48864 +; libsrc/apple/jit16.pla: 0021: const estkh8 = $C000 + ; estkh8 = 49152 +; libsrc/apple/jit16.pla: 0022: const estkh = $00C0 + ; estkh = 192 +; libsrc/apple/jit16.pla: 0023: const estkl8 = $D000 + ; estkl8 = 53248 +; libsrc/apple/jit16.pla: 0024: const estkl = $00D0 + ; estkl = 208 +; libsrc/apple/jit16.pla: 0025: const ifp8 = $E000 + ; ifp8 = 57344 +; libsrc/apple/jit16.pla: 0026: const ifpl8 = $E000 + ; ifpl8 = 57344 +; libsrc/apple/jit16.pla: 0027: const ifph8 = $E100 + ; ifph8 = 57600 +; libsrc/apple/jit16.pla: 0028: const jmptmp = $00E6 + ; jmptmp = 230 +; libsrc/apple/jit16.pla: 0029: const tmp8 = $E700 + ; tmp8 = 59136 +; libsrc/apple/jit16.pla: 0030: const tmpl8 = $E700 + ; tmpl8 = 59136 +; libsrc/apple/jit16.pla: 0031: const tmph8 = $E800 + ; tmph8 = 59392 +; libsrc/apple/jit16.pla: 0032: const fetchop = $00F1 + ; fetchop = 241 +; libsrc/apple/jit16.pla: 0033: const ip8 = $F200 + ; ip8 = 61952 +; libsrc/apple/jit16.pla: 0034: const ip = $00F2 + ; ip = 242 +; libsrc/apple/jit16.pla: 0035: // +; libsrc/apple/jit16.pla: 0036: // Bytecode interpreter entrypoints +; libsrc/apple/jit16.pla: 0037: // +; libsrc/apple/jit16.pla: 0038: const indirectentry = $03DC + ; indirectentry = 988 +; libsrc/apple/jit16.pla: 0039: const directentry = $03D0 + ; directentry = 976 +; libsrc/apple/jit16.pla: 0040: // +; libsrc/apple/jit16.pla: 0041: // Copy bytecode DEF to main memory +; libsrc/apple/jit16.pla: 0042: // +; libsrc/apple/jit16.pla: 0043: def defcpy(dst, defptr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; dst -> [0] + ; defptr -> [2] +_C000 ; defcpy() +; libsrc/apple/jit16.pla: 0044: *$003C = defptr=>bytecodeaddr + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/jit16.pla: 0045: *$003E = *$003C + defptr->bytecodesize +; libsrc/apple/jit16.pla: 0046: *$0042 = dst +; libsrc/apple/jit16.pla: 0047: call($C311, 0, 0, 0, $04) // CALL XMOVE with carry clear (AUX->MAIN) and ints disabled +; libsrc/apple/jit16.pla: 0048: end + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $62 ; LW + !BYTE $7E,$3C,$00 ; DAW 60 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A,$3E,$00 ; SAW 62 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A,$42,$00 ; SAW 66 + !BYTE $2C,$11,$C3 ; CW 49937 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/jit16.pla: 0049: // +; libsrc/apple/jit16.pla: 0050: // Identify hardware addresses for certain byte sized access operations +; libsrc/apple/jit16.pla: 0051: // +; libsrc/apple/jit16.pla: 0052: def is_hwaddr(addr) + ; addr -> [0] +_C001 ; is_hwaddr() +; libsrc/apple/jit16.pla: 0053: return isuge(addr, $C000) and isult(addr, $C100) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $54 ; CALL _X025 +_F001 !WORD 0 + !BYTE $AC ; BRAND _B001 + !WORD _B001-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$C1 ; CW 49408 + !BYTE $54 ; CALL _X026 +_F002 !WORD 0 +_B001 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/jit16.pla: 0054: end +; libsrc/apple/jit16.pla: 0055: include "libsrc/jit16core.pla" +; libsrc/jit16core.pla: 0001: // +; libsrc/jit16core.pla: 0002: // TOS and NOS stack offsets +; libsrc/jit16core.pla: 0003: // +; libsrc/jit16core.pla: 0004: const TOS = $01 // TOS + ; TOS = 1 +; libsrc/jit16core.pla: 0005: const NOS = $03 // TOS-1 + ; NOS = 3 +; libsrc/jit16core.pla: 0006: // +; libsrc/jit16core.pla: 0007: // JIT compiler entry +; libsrc/jit16core.pla: 0008: // +; libsrc/jit16core.pla: 0009: def compiler(defptr)#0 + ; defptr -> [0] +_C002 ; compiler() +; libsrc/jit16core.pla: 0010: word codeptr, isdata[], addrxlate, bytecode, i, case, dest + ; codeptr -> [2] + ; isdata -> [4] + ; addrxlate -> [4] + ; bytecode -> [6] + ; i -> [8] + ; case -> [10] + ; dest -> [12] +; libsrc/jit16core.pla: 0011: byte opcode, j, A_IS_TOS, X_IS_IFP + ; opcode -> [14] + ; j -> [15] + ; A_IS_TOS -> [16] + ; X_IS_IFP -> [17] +; libsrc/jit16core.pla: 0012: +; libsrc/jit16core.pla: 0013: defptr=>interpaddr = indirectentry // assume compile will fail + !BYTE $58,$12,$01 ; ENTER 18,1 +; libsrc/jit16core.pla: 0014: addrxlate = heapmark // heapalloc(512 + defptr->bytecodesize) +; libsrc/jit16core.pla: 0015: if isult(heapavail, 512 + defptr->bytecodesize) // 256 * sizeof(word) address xlate +; libsrc/jit16core.pla: 0016: // +; libsrc/jit16core.pla: 0017: // Not enough heap available +; libsrc/jit16core.pla: 0018: // +; libsrc/jit16core.pla: 0019: //puts("Not enough free heap\n") +; libsrc/jit16core.pla: 0020: return + !BYTE $2C,$DC,$03 ; CW 988 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $54 ; CALL _X012 +_F003 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $54 ; CALL _X016 +_F004 !WORD 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X026 +_F005 !WORD 0 + !BYTE $4C ; BRFLS _B002 + !WORD _B002-* + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/jit16core.pla: 0021: fin +_B002 +_B003 +; libsrc/jit16core.pla: 0022: // +; libsrc/jit16core.pla: 0023: // Copy bytecode def from AUX to heap for compiling +; libsrc/jit16core.pla: 0024: // +; libsrc/jit16core.pla: 0025: bytecode = addrxlate + 512 // def bytecode +; libsrc/jit16core.pla: 0026: defcpy(bytecode, defptr) +; libsrc/jit16core.pla: 0027: //puts("JITC:$"); puth(defptr=>bytecodeaddr); puts("=>$"); puth(bytecode) +; libsrc/jit16core.pla: 0028: //puts(",$"); puth(defptr->bytecodesize); putln +; libsrc/jit16core.pla: 0029: // +; libsrc/jit16core.pla: 0030: // Find all branch targets and optimization fences. Tag the opcode with the LSB set +; libsrc/jit16core.pla: 0031: // +; libsrc/jit16core.pla: 0032: // All PLASMA ops are even (LSB clear), so this will flag when to fence optimizations +; libsrc/jit16core.pla: 0033: // During compiling. +; libsrc/jit16core.pla: 0034: // +; libsrc/jit16core.pla: 0035: //isdata = addrxlate // Use this buffer +; libsrc/jit16core.pla: 0036: memset(isdata, 0, 256) // Clear isdata buffer +; libsrc/jit16core.pla: 0037: i = 0 +; libsrc/jit16core.pla: 0038: while i < defptr->bytecodesize + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $6E,$06 ; DLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F006 !WORD _C000 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _X017 +_F007 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/jit16core.pla: 0039: if not ^(isdata+i) +; libsrc/jit16core.pla: 0040: //puth(bytecode+i); putc(':'); putb(^(bytecode+i) & $FE); putln; getc +; libsrc/jit16core.pla: 0041: when ^(bytecode+i) & $FE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B007 + !WORD _B007-* + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $3C,$FE ; ANDI 254 + !BYTE $52 ; SEL + !WORD _B010-* +; libsrc/jit16core.pla: 0042: // +; libsrc/jit16core.pla: 0043: // Double byte operands +; libsrc/jit16core.pla: 0044: // +; libsrc/jit16core.pla: 0045: is $26 // LA +_B011 +; libsrc/jit16core.pla: 0046: is $2C // CW +_B012 +; libsrc/jit16core.pla: 0047: is $54 // CALL +_B013 +; libsrc/jit16core.pla: 0048: is $58 // ENTER +_B014 +; libsrc/jit16core.pla: 0049: is $68 // LAB +_B015 +; libsrc/jit16core.pla: 0050: is $6A // LAW +_B016 +; libsrc/jit16core.pla: 0051: is $78 // SAB +_B017 +; libsrc/jit16core.pla: 0052: is $7A // SAW +_B018 +; libsrc/jit16core.pla: 0053: is $7C // DAB +_B019 +; libsrc/jit16core.pla: 0054: is $7E // DAW +_B020 +; libsrc/jit16core.pla: 0055: is $B4 // ADDAB +_B021 +; libsrc/jit16core.pla: 0056: is $B6 // ADDAW +_B022 +; libsrc/jit16core.pla: 0057: is $BC // IDXAB +_B023 +; libsrc/jit16core.pla: 0058: is $BE // IDXAW +_B024 +; libsrc/jit16core.pla: 0059: i = i + 2 +; libsrc/jit16core.pla: 0060: break + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; libsrc/jit16core.pla: 0061: // +; libsrc/jit16core.pla: 0062: // Multi-byte operands +; libsrc/jit16core.pla: 0063: // +; libsrc/jit16core.pla: 0064: is $2E // CS +_B025 +; libsrc/jit16core.pla: 0065: i = i + ^(bytecode+i+1) +; libsrc/jit16core.pla: 0066: // +; libsrc/jit16core.pla: 0067: // Single byte operands +; libsrc/jit16core.pla: 0068: // +; libsrc/jit16core.pla: 0069: is $2A // CB + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] +_B026 +; libsrc/jit16core.pla: 0070: is $28 // LLA +_B027 +; libsrc/jit16core.pla: 0071: is $38 // ADDI +_B028 +; libsrc/jit16core.pla: 0072: is $3A // SUBI +_B029 +; libsrc/jit16core.pla: 0073: is $3C // ANDI +_B030 +; libsrc/jit16core.pla: 0074: is $3E // ORI +_B031 +; libsrc/jit16core.pla: 0075: is $5A // LEAVE +_B032 +; libsrc/jit16core.pla: 0076: is $5E // CFFB +_B033 +; libsrc/jit16core.pla: 0077: is $64 // LLB +_B034 +; libsrc/jit16core.pla: 0078: is $66 // LLW +_B035 +; libsrc/jit16core.pla: 0079: is $6C // DLB +_B036 +; libsrc/jit16core.pla: 0080: is $6E // DLW +_B037 +; libsrc/jit16core.pla: 0081: is $74 // SLB +_B038 +; libsrc/jit16core.pla: 0082: is $76 // SLW +_B039 +; libsrc/jit16core.pla: 0083: is $B0 // ADDLB +_B040 +; libsrc/jit16core.pla: 0084: is $B2 // ADDLW +_B041 +; libsrc/jit16core.pla: 0085: is $B8 // IDXLB +_B042 +; libsrc/jit16core.pla: 0086: is $BA // IDXLW +_B043 +; libsrc/jit16core.pla: 0087: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0088: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; libsrc/jit16core.pla: 0089: // +; libsrc/jit16core.pla: 0090: // Branches +; libsrc/jit16core.pla: 0091: // +; libsrc/jit16core.pla: 0092: is $50 // BRNCH +_B044 +; libsrc/jit16core.pla: 0093: is $22 // BREQ +_B045 +; libsrc/jit16core.pla: 0094: is $24 // BRNE +_B046 +; libsrc/jit16core.pla: 0095: is $4C // BRFLS +_B047 +; libsrc/jit16core.pla: 0096: is $4E // BRTRU +_B048 +; libsrc/jit16core.pla: 0097: is $A0 // BRGT +_B049 +; libsrc/jit16core.pla: 0098: is $A2 // BRLT +_B050 +; libsrc/jit16core.pla: 0099: is $A4 // INCBRLE +_B051 +; libsrc/jit16core.pla: 0100: is $A6 // ADDBRLE +_B052 +; libsrc/jit16core.pla: 0101: is $A8 // DECBRGE +_B053 +; libsrc/jit16core.pla: 0102: is $AA // SUBBRGE +_B054 +; libsrc/jit16core.pla: 0103: is $AC // BRAND +_B055 +; libsrc/jit16core.pla: 0104: is $AE // BROR +_B056 +; libsrc/jit16core.pla: 0105: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0106: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0107: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0108: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jit16core.pla: 0109: break + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; libsrc/jit16core.pla: 0110: // +; libsrc/jit16core.pla: 0111: // SELect/caseblock +; libsrc/jit16core.pla: 0112: // +; libsrc/jit16core.pla: 0113: is $52 // SEL +_B057 +; libsrc/jit16core.pla: 0114: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0115: case = i + *(bytecode+i) +; libsrc/jit16core.pla: 0116: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0117: ^(isdata+case) = TRUE // Flag as data +; libsrc/jit16core.pla: 0118: j = ^(bytecode+case) +; libsrc/jit16core.pla: 0119: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0120: repeat + !BYTE $76,$0A ; SLW [10] +_B059 +; libsrc/jit16core.pla: 0121: *(isdata+case) = TRUE // Flag as data +; libsrc/jit16core.pla: 0122: case = case + 2 +; libsrc/jit16core.pla: 0123: dest = case + *(bytecode+case) +; libsrc/jit16core.pla: 0124: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jit16core.pla: 0125: *(isdata+case) = TRUE // Flag as data +; libsrc/jit16core.pla: 0126: case = case + 2 +; libsrc/jit16core.pla: 0127: j-- + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$0F ; LLB [15] + !BYTE $8E ; DECR +; libsrc/jit16core.pla: 0128: until not j + !BYTE $74,$0F ; SLB [15] +_B060 + !BYTE $64,$0F ; LLB [15] + !BYTE $4E ; BRTRU _B059 + !WORD _B059-* +_B058 +; libsrc/jit16core.pla: 0129: break + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; libsrc/jit16core.pla: 0130: wend + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +_B010 + !BYTE $2F ; CASEBLOCK + !WORD $0022 + !WORD _B045-* + !WORD $0024 + !WORD _B046-* + !WORD $0026 + !WORD _B011-* + !WORD $0028 + !WORD _B027-* + !WORD $002A + !WORD _B026-* + !WORD $002C + !WORD _B012-* + !WORD $002E + !WORD _B025-* + !WORD $0038 + !WORD _B028-* + !WORD $003A + !WORD _B029-* + !WORD $003C + !WORD _B030-* + !WORD $003E + !WORD _B031-* + !WORD $004C + !WORD _B047-* + !WORD $004E + !WORD _B048-* + !WORD $0050 + !WORD _B044-* + !WORD $0052 + !WORD _B057-* + !WORD $0054 + !WORD _B013-* + !WORD $0058 + !WORD _B014-* + !WORD $005A + !WORD _B032-* + !WORD $005E + !WORD _B033-* + !WORD $0064 + !WORD _B034-* + !WORD $0066 + !WORD _B035-* + !WORD $0068 + !WORD _B015-* + !WORD $006A + !WORD _B016-* + !WORD $006C + !WORD _B036-* + !WORD $006E + !WORD _B037-* + !WORD $0074 + !WORD _B038-* + !WORD $0076 + !WORD _B039-* + !WORD $0078 + !WORD _B017-* + !WORD $007A + !WORD _B018-* + !WORD $007C + !WORD _B019-* + !WORD $007E + !WORD _B020-* + !WORD $00A0 + !WORD _B049-* + !WORD $00A2 + !WORD _B050-* + !WORD $00A4 + !WORD _B051-* + !WORD $00A6 + !WORD _B052-* + !WORD $00A8 + !WORD _B053-* + !WORD $00AA + !WORD _B054-* + !WORD $00AC + !WORD _B055-* + !WORD $00AE + !WORD _B056-* + !WORD $00B0 + !WORD _B040-* + !WORD $00B2 + !WORD _B041-* + !WORD $00B4 + !WORD _B021-* + !WORD $00B6 + !WORD _B022-* + !WORD $00B8 + !WORD _B042-* + !WORD $00BA + !WORD _B043-* + !WORD $00BC + !WORD _B023-* + !WORD $00BE + !WORD _B024-* +_B009 +; libsrc/jit16core.pla: 0131: fin +_B007 +_B008 +; libsrc/jit16core.pla: 0132: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0133: loop + !BYTE $76,$08 ; SLW [8] +_B006 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/jit16core.pla: 0134: // +; libsrc/jit16core.pla: 0135: // Compile the bytecodes +; libsrc/jit16core.pla: 0136: // +; libsrc/jit16core.pla: 0137: memset(addrxlate, 0, 512) // Clear xlate buffer +; libsrc/jit16core.pla: 0138: //puts("Bytecode: $"); puth(bytecode); putln; getc +; libsrc/jit16core.pla: 0139: codeptr = *jitcodeptr +; libsrc/jit16core.pla: 0140: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0141: X_IS_IFP = FALSE +; libsrc/jit16core.pla: 0142: codeptr->0 = $20 // JSR INTERP +; libsrc/jit16core.pla: 0143: codeptr=>1 = directentry +; libsrc/jit16core.pla: 0144: if ^bytecode == $58 +; libsrc/jit16core.pla: 0145: //putc('$'); puth(codeptr);//puts(":[0] ENTER "); puti(^(bytecode+1)); putc(',');puti(^(bytecode+2)); putln +; libsrc/jit16core.pla: 0146: // +; libsrc/jit16core.pla: 0147: // Call into VM +; libsrc/jit16core.pla: 0148: // +; libsrc/jit16core.pla: 0149: codeptr->3 = $58 // ENTER CODE +; libsrc/jit16core.pla: 0150: codeptr=>4 = *(bytecode+1) // ENTER FRAME SIZE & ARG COUNT +; libsrc/jit16core.pla: 0151: codeptr->6 = $C0 // NATV CODE +; libsrc/jit16core.pla: 0152: codeptr = codeptr + 7 +; libsrc/jit16core.pla: 0153: i = 3 +; libsrc/jit16core.pla: 0154: else + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X017 +_F008 !WORD 0 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$58 ; CB 88 + !BYTE $24 ; BRNE _B061 + !WORD _B061-* + !BYTE $2A,$58 ; CB 88 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $06 ; CN 3 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B061 +; libsrc/jit16core.pla: 0155: // +; libsrc/jit16core.pla: 0156: // Call into VM +; libsrc/jit16core.pla: 0157: // +; libsrc/jit16core.pla: 0158: codeptr->3 = $C0 // NATV CODE +; libsrc/jit16core.pla: 0159: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0160: i = 0 +; libsrc/jit16core.pla: 0161: fin + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] +_B062 +; libsrc/jit16core.pla: 0162: while isule(codeptr, codemax) + !BYTE $50 ; BRNCH _B065 + !WORD _B065-* +_B063 +; libsrc/jit16core.pla: 0163: //putc('$'); puth(codeptr); putc(':') +; libsrc/jit16core.pla: 0164: //putc('['); puti(i); //puts("] ") +; libsrc/jit16core.pla: 0165: opcode = ^(bytecode+i) +; libsrc/jit16core.pla: 0166: if opcode & 1 +; libsrc/jit16core.pla: 0167: // +; libsrc/jit16core.pla: 0168: // Optimization fence. Sync A and X registers +; libsrc/jit16core.pla: 0169: // +; libsrc/jit16core.pla: 0170: if A_IS_TOS +; libsrc/jit16core.pla: 0171: ^codeptr = $48; codeptr++ // PHA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0172: fin + !BYTE $76,$02 ; SLW [2] +_B068 +_B069 +; libsrc/jit16core.pla: 0173: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0174: X_IS_IFP = FALSE +; libsrc/jit16core.pla: 0175: opcode = opcode & $FE +; libsrc/jit16core.pla: 0176: fin + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$FE ; ANDI 254 + !BYTE $74,$0E ; SLB [14] +_B066 +_B067 +; libsrc/jit16core.pla: 0177: // +; libsrc/jit16core.pla: 0178: // Update bytecode->native code address translation. +; libsrc/jit16core.pla: 0179: // +; libsrc/jit16core.pla: 0180: // Here's how it works: +; libsrc/jit16core.pla: 0181: // +; libsrc/jit16core.pla: 0182: // The code buffer is above address $8000 so MSBit set. +; libsrc/jit16core.pla: 0183: // When we compile a bytecode, update the destination address in +; libsrc/jit16core.pla: 0184: // the address xlate buffer with actual address (MSBit set). But, if a branch +; libsrc/jit16core.pla: 0185: // opcode jumps to a bytecode address that hasn't been compiled yet, add the +; libsrc/jit16core.pla: 0186: // address offset in the code buffer to the list of addresses needing resolution. +; libsrc/jit16core.pla: 0187: // The offset will be less than $8000, so MSBit clear. This is how we know if +; libsrc/jit16core.pla: 0188: // an address has been resolved or is a list of addresses needing resolution. +; libsrc/jit16core.pla: 0189: // Before updating the address xlate buffer with the known address as we +; libsrc/jit16core.pla: 0190: // compile, look for existing resolution list and traverse it if there. +; libsrc/jit16core.pla: 0191: // +; libsrc/jit16core.pla: 0192: if addrxlate=>[i] +; libsrc/jit16core.pla: 0193: // +; libsrc/jit16core.pla: 0194: // Address list awaiting resolution +; libsrc/jit16core.pla: 0195: // +; libsrc/jit16core.pla: 0196: dest = addrxlate=>[i] + *jitcodeptr +; libsrc/jit16core.pla: 0197: repeat + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B070 + !WORD _B070-* + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $B6,$E4,$03 ; ADDAW 996 + !BYTE $76,$0C ; SLW [12] +_B073 +; libsrc/jit16core.pla: 0198: case = *dest +; libsrc/jit16core.pla: 0199: *dest = codeptr +; libsrc/jit16core.pla: 0200: dest = case + *jitcodeptr +; libsrc/jit16core.pla: 0201: until not case + !BYTE $66,$0C ; LLW [12] + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0C ; LLW [12] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $B6,$E4,$03 ; ADDAW 996 + !BYTE $76,$0C ; SLW [12] +_B074 + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B073 + !WORD _B073-* +_B072 +; libsrc/jit16core.pla: 0202: fin +_B070 +_B071 +; libsrc/jit16core.pla: 0203: // +; libsrc/jit16core.pla: 0204: // Update address translate buffer with bytecode->native address +; libsrc/jit16core.pla: 0205: // +; libsrc/jit16core.pla: 0206: addrxlate=>[i] = codeptr +; libsrc/jit16core.pla: 0207: // +; libsrc/jit16core.pla: 0208: // Compile this bad boy... +; libsrc/jit16core.pla: 0209: // +; libsrc/jit16core.pla: 0210: if opcode < $20 // CONSTANT NYBBLE +; libsrc/jit16core.pla: 0211: //puts("CN $"); putb(opcode/2) +; libsrc/jit16core.pla: 0212: if A_IS_TOS +; libsrc/jit16core.pla: 0213: ^codeptr = $48; codeptr++ // PHA + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0214: fin + !BYTE $76,$02 ; SLW [2] +_B077 +_B078 +; libsrc/jit16core.pla: 0215: codeptr->0 = $A9 // LDA #(CN/2) +; libsrc/jit16core.pla: 0216: codeptr=>1 = opcode/2 +; libsrc/jit16core.pla: 0217: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0218: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0219: else + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B076 + !WORD _B076-* +_B075 +; libsrc/jit16core.pla: 0220: when opcode + !BYTE $64,$0E ; LLB [14] + !BYTE $52 ; SEL + !WORD _B080-* +; libsrc/jit16core.pla: 0221: is $20 // MINUS ONE +_B081 +; libsrc/jit16core.pla: 0222: //puts("MINUS_ONE") +; libsrc/jit16core.pla: 0223: if A_IS_TOS +; libsrc/jit16core.pla: 0224: ^codeptr = $48; codeptr++ // PHA + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0225: fin + !BYTE $76,$02 ; SLW [2] +_B082 +_B083 +; libsrc/jit16core.pla: 0226: codeptr->0 = $A9 // LDA #$FFFF +; libsrc/jit16core.pla: 0227: codeptr=>1 = $FFFF +; libsrc/jit16core.pla: 0228: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0229: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0230: break + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0231: is $22 // BREQ +_B084 +; libsrc/jit16core.pla: 0232: is $24 // BRNE +_B085 +; libsrc/jit16core.pla: 0233: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0234: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0235: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0236: if not A_IS_TOS +; libsrc/jit16core.pla: 0237: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B086 + !WORD _B086-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0238: fin + !BYTE $76,$02 ; SLW [2] +_B086 +_B087 +; libsrc/jit16core.pla: 0239: codeptr=>0 = $C3+(TOS<<8) // CMP TOS,S +; libsrc/jit16core.pla: 0240: if opcode == $22 +; libsrc/jit16core.pla: 0241: //puts("BREQ "); puti(dest) +; libsrc/jit16core.pla: 0242: codeptr=>2 = $04D0 // BNE +4 +; libsrc/jit16core.pla: 0243: else + !BYTE $2C,$C3,$01 ; CW 451 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$22 ; CB 34 + !BYTE $24 ; BRNE _B088 + !WORD _B088-* + !BYTE $2C,$D0,$04 ; CW 1232 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B089 + !WORD _B089-* +_B088 +; libsrc/jit16core.pla: 0244: //puts("BRNE "); puti(dest) +; libsrc/jit16core.pla: 0245: codeptr=>2 = $04F0 // BEQ +4 +; libsrc/jit16core.pla: 0246: fin + !BYTE $2C,$F0,$04 ; CW 1264 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B089 +; libsrc/jit16core.pla: 0247: codeptr=>4 = $4C68 // PLA; JMP abs +; libsrc/jit16core.pla: 0248: codeptr=>6 = addrxlate=>[dest] +; libsrc/jit16core.pla: 0249: if not (codeptr->7 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0250: addrxlate=>[dest] = codeptr + 6 - *jitcodeptr +; libsrc/jit16core.pla: 0251: fin + !BYTE $2C,$68,$4C ; CW 19560 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B090 + !WORD _B090-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B090 +_B091 +; libsrc/jit16core.pla: 0252: codeptr->8 = $68 // PLA +; libsrc/jit16core.pla: 0253: codeptr = codeptr + 9 +; libsrc/jit16core.pla: 0254: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0255: break + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0256: is $26 // LA +_B092 +; libsrc/jit16core.pla: 0257: is $2C // CW +_B093 +; libsrc/jit16core.pla: 0258: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 0259: i = i + 2 +; libsrc/jit16core.pla: 0260: //puts("LA/CW $"); puth(dest) +; libsrc/jit16core.pla: 0261: if A_IS_TOS +; libsrc/jit16core.pla: 0262: ^codeptr = $48; codeptr++ // PHA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0263: fin + !BYTE $76,$02 ; SLW [2] +_B094 +_B095 +; libsrc/jit16core.pla: 0264: codeptr->0 = $A9 // LDA #imm +; libsrc/jit16core.pla: 0265: codeptr=>1 = dest +; libsrc/jit16core.pla: 0266: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0267: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0268: break + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0269: is $28 // LLA +_B096 +; libsrc/jit16core.pla: 0270: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0271: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0272: //puts("LLA "); puti(^(bytecode+i)) +; libsrc/jit16core.pla: 0273: if A_IS_TOS +; libsrc/jit16core.pla: 0274: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B097 + !WORD _B097-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0275: fin + !BYTE $76,$02 ; SLW [2] +_B097 +_B098 +; libsrc/jit16core.pla: 0276: if not X_IS_IFP +; libsrc/jit16core.pla: 0277: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 0278: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0279: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 0280: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B099 + !WORD _B099-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B099 +_B100 +; libsrc/jit16core.pla: 0281: ^codeptr = $8A; codeptr++ // TXA + !BYTE $2A,$8A ; CB 138 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0282: if j <> 0 +; libsrc/jit16core.pla: 0283: codeptr=>0 = $6918 // CLC; ADC #imm +; libsrc/jit16core.pla: 0284: codeptr=>2 = j +; libsrc/jit16core.pla: 0285: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0286: fin + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$0F ; LLB [15] + !BYTE $4C ; BRFLS _B101 + !WORD _B101-* + !BYTE $2C,$18,$69 ; CW 26904 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$0F ; LLB [15] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] +_B101 +_B102 +; libsrc/jit16core.pla: 0287: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0288: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0289: is $2A // CB +_B103 +; libsrc/jit16core.pla: 0290: is $5E // CFFB +_B104 +; libsrc/jit16core.pla: 0291: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0292: if A_IS_TOS +; libsrc/jit16core.pla: 0293: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0294: fin + !BYTE $76,$02 ; SLW [2] +_B105 +_B106 +; libsrc/jit16core.pla: 0295: codeptr->0 = $A9 +; libsrc/jit16core.pla: 0296: if opcode == $2A // LDA #imm +; libsrc/jit16core.pla: 0297: dest = ^(bytecode+i) +; libsrc/jit16core.pla: 0298: //puts("CB $"); putb(dest) +; libsrc/jit16core.pla: 0299: else + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$2A ; CB 42 + !BYTE $24 ; BRNE _B107 + !WORD _B107-* + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B108 + !WORD _B108-* +_B107 +; libsrc/jit16core.pla: 0300: dest = ^(bytecode+i) | $FF00 +; libsrc/jit16core.pla: 0301: //puts("CFFB $FF"); puth(dest) +; libsrc/jit16core.pla: 0302: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $96 ; OR + !BYTE $76,$0C ; SLW [12] +_B108 +; libsrc/jit16core.pla: 0303: codeptr=>1 = dest +; libsrc/jit16core.pla: 0304: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0305: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0306: break + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0307: is $2E // CS +_B109 +; libsrc/jit16core.pla: 0308: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0309: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0310: dest = codeptr + 7 + j +; libsrc/jit16core.pla: 0311: //puts("CS "); //puts(bytecode+i); //puts("-->"); puti(dest) +; libsrc/jit16core.pla: 0312: if isule(dest, codemax) +; libsrc/jit16core.pla: 0313: if A_IS_TOS +; libsrc/jit16core.pla: 0314: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $B0,$0F ; ADDLB [15] + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F009 !WORD 0 + !BYTE $4C ; BRFLS _B110 + !WORD _B110-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B112 + !WORD _B112-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0315: fin + !BYTE $76,$02 ; SLW [2] +_B112 +_B113 +; libsrc/jit16core.pla: 0316: dest = codeptr + 7 + j +; libsrc/jit16core.pla: 0317: codeptr->0 = $A9 // LDA #STRING +; libsrc/jit16core.pla: 0318: codeptr=>1 = codeptr + 6 +; libsrc/jit16core.pla: 0319: codeptr->3 = $4C // JMP abs +; libsrc/jit16core.pla: 0320: codeptr=>4 = dest +; libsrc/jit16core.pla: 0321: strcpy(codeptr + 6, bytecode + i) +; libsrc/jit16core.pla: 0322: i = i + j +; libsrc/jit16core.pla: 0323: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $B0,$0F ; ADDLB [15] + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _X019 +_F010 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $B0,$0F ; ADDLB [15] + !BYTE $76,$08 ; SLW [8] +_B110 +_B111 +; libsrc/jit16core.pla: 0324: codeptr = dest +; libsrc/jit16core.pla: 0325: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0326: break + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0327: is $32 // DROP2 +_B114 +; libsrc/jit16core.pla: 0328: //puts("DROP2") +; libsrc/jit16core.pla: 0329: if not A_IS_TOS +; libsrc/jit16core.pla: 0330: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B115 + !WORD _B115-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0331: fin + !BYTE $76,$02 ; SLW [2] +_B115 +_B116 +; libsrc/jit16core.pla: 0332: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0333: is $30 // DROP + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B117 +; libsrc/jit16core.pla: 0334: //puts("DROP") +; libsrc/jit16core.pla: 0335: if not A_IS_TOS +; libsrc/jit16core.pla: 0336: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B118 + !WORD _B118-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0337: fin + !BYTE $76,$02 ; SLW [2] +_B118 +_B119 +; libsrc/jit16core.pla: 0338: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0339: break + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0340: is $34 // DUP +_B120 +; libsrc/jit16core.pla: 0341: //puts("DUP") +; libsrc/jit16core.pla: 0342: if not A_IS_TOS +; libsrc/jit16core.pla: 0343: *codeptr = $A3+(TOS<<8) // LDA S, TOS +; libsrc/jit16core.pla: 0344: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0345: else + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B121 + !WORD _B121-* + !BYTE $2C,$A3,$01 ; CW 419 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B122 + !WORD _B122-* +_B121 +; libsrc/jit16core.pla: 0346: ^codeptr = $48; codeptr++ // PHA + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0347: fin + !BYTE $76,$02 ; SLW [2] +_B122 +; libsrc/jit16core.pla: 0348: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0349: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0350: //is $36 +; libsrc/jit16core.pla: 0351: //puts("DIVMOD") +; libsrc/jit16core.pla: 0352: // +; libsrc/jit16core.pla: 0353: // Should never happen +; libsrc/jit16core.pla: 0354: // +; libsrc/jit16core.pla: 0355: //break +; libsrc/jit16core.pla: 0356: is $38 // ADDI +_B123 +; libsrc/jit16core.pla: 0357: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0358: //puts("ADDI $"); putb(^(bytecode+i)) +; libsrc/jit16core.pla: 0359: if not A_IS_TOS +; libsrc/jit16core.pla: 0360: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B124 + !WORD _B124-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0361: fin + !BYTE $76,$02 ; SLW [2] +_B124 +_B125 +; libsrc/jit16core.pla: 0362: codeptr=>0 = $6918 // CLC; ADC #imm +; libsrc/jit16core.pla: 0363: codeptr=>2 = ^(bytecode+i) +; libsrc/jit16core.pla: 0364: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0365: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0366: break + !BYTE $2C,$18,$69 ; CW 26904 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0367: is $3A // SUBI +_B126 +; libsrc/jit16core.pla: 0368: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0369: //puts("SUBI $"); putb(^(bytecode+i)) +; libsrc/jit16core.pla: 0370: if not A_IS_TOS +; libsrc/jit16core.pla: 0371: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B127 + !WORD _B127-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0372: fin + !BYTE $76,$02 ; SLW [2] +_B127 +_B128 +; libsrc/jit16core.pla: 0373: codeptr=>0 = $E938 // SEC; SBC #imm +; libsrc/jit16core.pla: 0374: codeptr=>2 = ^(bytecode+i) +; libsrc/jit16core.pla: 0375: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0376: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0377: break + !BYTE $2C,$38,$E9 ; CW 59704 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0378: is $3C // ANDI +_B129 +; libsrc/jit16core.pla: 0379: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0380: //puts("ANDI $"); putb(^(bytecode+i)) +; libsrc/jit16core.pla: 0381: if not A_IS_TOS +; libsrc/jit16core.pla: 0382: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B130 + !WORD _B130-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0383: fin + !BYTE $76,$02 ; SLW [2] +_B130 +_B131 +; libsrc/jit16core.pla: 0384: codeptr->0 = $29 // AND #imm +; libsrc/jit16core.pla: 0385: codeptr=>1 = ^(bytecode+i) +; libsrc/jit16core.pla: 0386: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0387: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0388: break + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0389: is $3E // ORI +_B132 +; libsrc/jit16core.pla: 0390: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0391: //puts("ORI $"); putb(^(bytecode+i)) +; libsrc/jit16core.pla: 0392: if not A_IS_TOS +; libsrc/jit16core.pla: 0393: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B133 + !WORD _B133-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0394: fin + !BYTE $76,$02 ; SLW [2] +_B133 +_B134 +; libsrc/jit16core.pla: 0395: codeptr->0 = $09 // ORA #imm +; libsrc/jit16core.pla: 0396: codeptr=>1 = ^(bytecode+i) +; libsrc/jit16core.pla: 0397: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0398: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0399: break + !BYTE $12 ; CN 9 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0400: is $40 // ISEQ +_B135 +; libsrc/jit16core.pla: 0401: is $42 // ISNE +_B136 +; libsrc/jit16core.pla: 0402: if not A_IS_TOS +; libsrc/jit16core.pla: 0403: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B137 + !WORD _B137-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0404: fin + !BYTE $76,$02 ; SLW [2] +_B137 +_B138 +; libsrc/jit16core.pla: 0405: codeptr->0 = $A0 // LDY #$0000 +; libsrc/jit16core.pla: 0406: codeptr=>1 = $0000 +; libsrc/jit16core.pla: 0407: codeptr=>3 = $C3+(TOS<<8) // CMP TOS,S +; libsrc/jit16core.pla: 0408: if opcode == $40 +; libsrc/jit16core.pla: 0409: //puts("ISEQ") +; libsrc/jit16core.pla: 0410: codeptr=>5 = $01D0 // BNE +1 +; libsrc/jit16core.pla: 0411: else + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$C3,$01 ; CW 451 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$40 ; CB 64 + !BYTE $24 ; BRNE _B139 + !WORD _B139-* + !BYTE $2C,$D0,$01 ; CW 464 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +_B139 +; libsrc/jit16core.pla: 0412: //puts("ISNE") +; libsrc/jit16core.pla: 0413: codeptr=>5 = $01F0 // BEQ +1 +; libsrc/jit16core.pla: 0414: fin + !BYTE $2C,$F0,$01 ; CW 496 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW +_B140 +; libsrc/jit16core.pla: 0415: codeptr=>7 = $9888 // DEY; TYA +; libsrc/jit16core.pla: 0416: codeptr->9 = $7A // PLY +; libsrc/jit16core.pla: 0417: codeptr = codeptr + 10 +; libsrc/jit16core.pla: 0418: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0419: break + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0420: is $44 // ISGT +_B141 +; libsrc/jit16core.pla: 0421: is $4A // ISLE +_B142 +; libsrc/jit16core.pla: 0422: if not A_IS_TOS +; libsrc/jit16core.pla: 0423: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B143 + !WORD _B143-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0424: fin + !BYTE $76,$02 ; SLW [2] +_B143 +_B144 +; libsrc/jit16core.pla: 0425: codeptr->0 = $A0 // LDY #$0000 +; libsrc/jit16core.pla: 0426: codeptr=>1 = $0000 +; libsrc/jit16core.pla: 0427: codeptr->3 = $38 // SEC +; libsrc/jit16core.pla: 0428: codeptr=>4 = $E3+(TOS<<8) // SBC TOS,S +; libsrc/jit16core.pla: 0429: codeptr=>6 = $0350 // BVC +3 +; libsrc/jit16core.pla: 0430: codeptr->8 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 0431: codeptr=>9 = $8000 +; libsrc/jit16core.pla: 0432: if opcode == $44 +; libsrc/jit16core.pla: 0433: //puts("ISGT") +; libsrc/jit16core.pla: 0434: codeptr=>11 = $0110 // BPL +1 +; libsrc/jit16core.pla: 0435: else + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$E3,$01 ; CW 483 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$44 ; CB 68 + !BYTE $24 ; BRNE _B145 + !WORD _B145-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B146 + !WORD _B146-* +_B145 +; libsrc/jit16core.pla: 0436: //puts("ISLE") +; libsrc/jit16core.pla: 0437: codeptr=>11 = $0130 // BMI +1 +; libsrc/jit16core.pla: 0438: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW +_B146 +; libsrc/jit16core.pla: 0439: codeptr=>13 = $9888 // DEY; TYA +; libsrc/jit16core.pla: 0440: codeptr->15 = $7A // PLY +; libsrc/jit16core.pla: 0441: codeptr = codeptr + 16 +; libsrc/jit16core.pla: 0442: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0443: break + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0444: is $46 // ISLT +_B147 +; libsrc/jit16core.pla: 0445: is $48 // ISGE +_B148 +; libsrc/jit16core.pla: 0446: if not A_IS_TOS +; libsrc/jit16core.pla: 0447: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B149 + !WORD _B149-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0448: fin + !BYTE $76,$02 ; SLW [2] +_B149 +_B150 +; libsrc/jit16core.pla: 0449: codeptr->0 = $A0 // LDY #$0000 +; libsrc/jit16core.pla: 0450: codeptr=>1 = $0000 +; libsrc/jit16core.pla: 0451: codeptr=>3 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0452: codeptr=>5 = $3868 // PLA; SEC +; libsrc/jit16core.pla: 0453: codeptr=>7 = tmp8+$E5 // SBC TMP +; libsrc/jit16core.pla: 0454: codeptr=>9 = $0350 // BVC +3 +; libsrc/jit16core.pla: 0455: codeptr->11 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 0456: codeptr=>12 = $8000 +; libsrc/jit16core.pla: 0457: if opcode == $46 +; libsrc/jit16core.pla: 0458: //puts("ISLT") +; libsrc/jit16core.pla: 0459: codeptr=>14 = $0110 // BPL +1 +; libsrc/jit16core.pla: 0460: else + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$68,$38 ; CW 14440 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$E5,$E7 ; CW 59365 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$46 ; CB 70 + !BYTE $24 ; BRNE _B151 + !WORD _B151-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B152 + !WORD _B152-* +_B151 +; libsrc/jit16core.pla: 0461: //puts("ISGE") +; libsrc/jit16core.pla: 0462: codeptr=>14 = $0130 // BMI +1 +; libsrc/jit16core.pla: 0463: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW +_B152 +; libsrc/jit16core.pla: 0464: codeptr=>16 = $9888 // DEY; TYA +; libsrc/jit16core.pla: 0465: codeptr = codeptr + 18 +; libsrc/jit16core.pla: 0466: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0467: break + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0468: is $4C // BRFLS +_B153 +; libsrc/jit16core.pla: 0469: is $4E // BRTRU +_B154 +; libsrc/jit16core.pla: 0470: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0471: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0472: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0473: if not A_IS_TOS +; libsrc/jit16core.pla: 0474: codeptr->0 = $68 // PLA +; libsrc/jit16core.pla: 0475: else + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B155 + !WORD _B155-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B156 + !WORD _B156-* +_B155 +; libsrc/jit16core.pla: 0476: codeptr->0 = $A8 // TAY +; libsrc/jit16core.pla: 0477: fin + !BYTE $2A,$A8 ; CB 168 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB +_B156 +; libsrc/jit16core.pla: 0478: if opcode == $4C +; libsrc/jit16core.pla: 0479: //puts("BRFLS "); puti(dest) +; libsrc/jit16core.pla: 0480: codeptr=>1 = $03D0 // BNE +3 +; libsrc/jit16core.pla: 0481: else + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$4C ; CB 76 + !BYTE $24 ; BRNE _B157 + !WORD _B157-* + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +_B157 +; libsrc/jit16core.pla: 0482: //puts("BRTRU "); puti(dest) +; libsrc/jit16core.pla: 0483: codeptr=>1 = $03F0 // BEQ +3 +; libsrc/jit16core.pla: 0484: fin + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW +_B158 +; libsrc/jit16core.pla: 0485: codeptr->3 = $4C // JMP abs +; libsrc/jit16core.pla: 0486: codeptr=>4 = addrxlate=>[dest] +; libsrc/jit16core.pla: 0487: if not (codeptr->5 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0488: addrxlate=>[dest] = codeptr + 4 - *jitcodeptr +; libsrc/jit16core.pla: 0489: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B159 + !WORD _B159-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B159 +_B160 +; libsrc/jit16core.pla: 0490: codeptr = codeptr + 6 +; libsrc/jit16core.pla: 0491: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0492: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0493: is $50 // BRNCH +_B161 +; libsrc/jit16core.pla: 0494: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0495: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0496: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0497: //puts("BRNCH "); puti(dest) +; libsrc/jit16core.pla: 0498: if A_IS_TOS +; libsrc/jit16core.pla: 0499: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B162 + !WORD _B162-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0500: fin + !BYTE $76,$02 ; SLW [2] +_B162 +_B163 +; libsrc/jit16core.pla: 0501: codeptr->0 = $4C // JMP abs +; libsrc/jit16core.pla: 0502: codeptr=>1 = addrxlate=>[dest] +; libsrc/jit16core.pla: 0503: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0504: addrxlate=>[dest] = codeptr + 1 - *jitcodeptr +; libsrc/jit16core.pla: 0505: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B164 + !WORD _B164-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B164 +_B165 +; libsrc/jit16core.pla: 0506: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0507: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0508: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0509: is $52 // SEL +_B166 +; libsrc/jit16core.pla: 0510: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0511: case = i + *(bytecode+i) +; libsrc/jit16core.pla: 0512: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0513: //puts("SEL "); puti(case); putln +; libsrc/jit16core.pla: 0514: j = ^(bytecode+case) +; libsrc/jit16core.pla: 0515: dest = codeptr + 9 + case * 11) +; libsrc/jit16core.pla: 0516: if isule(dest, codemax) +; libsrc/jit16core.pla: 0517: ^(bytecode+case) = $FE // Flag as NOP +; libsrc/jit16core.pla: 0518: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0A ; LLW [10] + !BYTE $16 ; CN 11 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F011 !WORD 0 + !BYTE $4C ; BRFLS _B167 + !WORD _B167-* + !BYTE $2A,$FE ; CB 254 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0519: if not A_IS_TOS +; libsrc/jit16core.pla: 0520: codeptr->0 = $68; codeptr++ // PLA + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B169 + !WORD _B169-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0521: fin + !BYTE $76,$02 ; SLW [2] +_B169 +_B170 +; libsrc/jit16core.pla: 0522: repeat +_B172 +; libsrc/jit16core.pla: 0523: dest = *(bytecode+case) +; libsrc/jit16core.pla: 0524: //puts(" $"); puth(dest) +; libsrc/jit16core.pla: 0525: codeptr->0 = $C9 // CMP #imm +; libsrc/jit16core.pla: 0526: codeptr=>1 = dest +; libsrc/jit16core.pla: 0527: codeptr=>3 = $03D0 // BNE +3 +; libsrc/jit16core.pla: 0528: *(bytecode+case) = $FEFE +; libsrc/jit16core.pla: 0529: case = case + 2 +; libsrc/jit16core.pla: 0530: dest = case + *(bytecode+case) +; libsrc/jit16core.pla: 0531: //puts("-->"); puti(dest); putln +; libsrc/jit16core.pla: 0532: codeptr->5 = $4C // JMP abs +; libsrc/jit16core.pla: 0533: codeptr=>6 = addrxlate=>[dest] +; libsrc/jit16core.pla: 0534: if not (codeptr->7 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0535: addrxlate=>[dest] = codeptr + 6 - *jitcodeptr +; libsrc/jit16core.pla: 0536: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$C9 ; CB 201 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B174 + !WORD _B174-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B174 +_B175 +; libsrc/jit16core.pla: 0537: codeptr = codeptr + 8 +; libsrc/jit16core.pla: 0538: *(bytecode+case) = $FEFE +; libsrc/jit16core.pla: 0539: case = case + 2 +; libsrc/jit16core.pla: 0540: j-- + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$0F ; LLB [15] + !BYTE $8E ; DECR +; libsrc/jit16core.pla: 0541: until not j + !BYTE $74,$0F ; SLB [15] +_B173 + !BYTE $64,$0F ; LLB [15] + !BYTE $4E ; BRTRU _B172 + !WORD _B172-* +_B171 +; libsrc/jit16core.pla: 0542: codeptr->0 = $4C // JMP abs +; libsrc/jit16core.pla: 0543: codeptr=>1 = addrxlate=>[case] +; libsrc/jit16core.pla: 0544: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0545: addrxlate=>[case] = codeptr + 1 - *jitcodeptr +; libsrc/jit16core.pla: 0546: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B176 + !WORD _B176-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $72 ; SW +_B176 +_B177 +; libsrc/jit16core.pla: 0547: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0548: else + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B168 + !WORD _B168-* +_B167 +; libsrc/jit16core.pla: 0549: codeptr = dest +; libsrc/jit16core.pla: 0550: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] +_B168 +; libsrc/jit16core.pla: 0551: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0552: break + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0553: is $54 // CALL +_B178 +; libsrc/jit16core.pla: 0554: is $56 // ICAL +_B179 +; libsrc/jit16core.pla: 0555: is $5A // LEAVE +_B180 +; libsrc/jit16core.pla: 0556: is $5C // RET +_B181 +; libsrc/jit16core.pla: 0557: if A_IS_TOS +; libsrc/jit16core.pla: 0558: ^codeptr = $48; codeptr++ // PHA + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B182 + !WORD _B182-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0559: fin + !BYTE $76,$02 ; SLW [2] +_B182 +_B183 +; libsrc/jit16core.pla: 0560: codeptr=>0 = $10E2 // SEP #$10 -> 8 BIT X/Y +; libsrc/jit16core.pla: 0561: codeptr->2 = $A9 // LDA #imm +; libsrc/jit16core.pla: 0562: codeptr=>3 = codeptr + 12 +; libsrc/jit16core.pla: 0563: codeptr=>5 = ip8+$85 // STA IP +; libsrc/jit16core.pla: 0564: codeptr=>7 = $00A0 // LDY #$00 +; libsrc/jit16core.pla: 0565: codeptr->9 = $4C // JMP FETCHOP +; libsrc/jit16core.pla: 0566: codeptr=>10 = fetchop // FETCHOP +; libsrc/jit16core.pla: 0567: codeptr->12 = opcode // OP +; libsrc/jit16core.pla: 0568: when opcode + !BYTE $2C,$E2,$10 ; CW 4322 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$85,$F2 ; CW 62085 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2A,$F1 ; CB 241 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $52 ; SEL + !WORD _B185-* +; libsrc/jit16core.pla: 0569: is $54 // CALL +_B186 +; libsrc/jit16core.pla: 0570: // +; libsrc/jit16core.pla: 0571: // Call address +; libsrc/jit16core.pla: 0572: // +; libsrc/jit16core.pla: 0573: //puts("CALL $"); puth(*(bytecode+i)) +; libsrc/jit16core.pla: 0574: codeptr=>13 = *(bytecode+i+1) // CALL ADDR +; libsrc/jit16core.pla: 0575: codeptr->15 = $C0 // NATV +; libsrc/jit16core.pla: 0576: codeptr = codeptr + 16 +; libsrc/jit16core.pla: 0577: i = i + 2 +; libsrc/jit16core.pla: 0578: break + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +; libsrc/jit16core.pla: 0579: is $56 // ICAL +_B187 +; libsrc/jit16core.pla: 0580: // +; libsrc/jit16core.pla: 0581: // Call address off stack +; libsrc/jit16core.pla: 0582: // +; libsrc/jit16core.pla: 0583: //puts("ICAL") +; libsrc/jit16core.pla: 0584: codeptr->13 = $C0 // NATV +; libsrc/jit16core.pla: 0585: codeptr = codeptr + 14 +; libsrc/jit16core.pla: 0586: break + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +; libsrc/jit16core.pla: 0587: is $5A // LEAVE +_B188 +; libsrc/jit16core.pla: 0588: // +; libsrc/jit16core.pla: 0589: // Leave routine +; libsrc/jit16core.pla: 0590: // +; libsrc/jit16core.pla: 0591: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0592: //puts("LEAVE "); puti(^(bytecode+i)) +; libsrc/jit16core.pla: 0593: codeptr->13 = ^(bytecode+i) // LEAVE CODE OPERAND +; libsrc/jit16core.pla: 0594: codeptr = codeptr + 14 +; libsrc/jit16core.pla: 0595: break + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +; libsrc/jit16core.pla: 0596: is $5C // RET +_B189 +; libsrc/jit16core.pla: 0597: // +; libsrc/jit16core.pla: 0598: // Quick return from routine +; libsrc/jit16core.pla: 0599: // +; libsrc/jit16core.pla: 0600: //puts("RET") +; libsrc/jit16core.pla: 0601: codeptr = codeptr + 13 +; libsrc/jit16core.pla: 0602: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +; libsrc/jit16core.pla: 0603: wend + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +_B185 + !BYTE $04 ; CASEBLOCK + !WORD $0054 + !WORD _B186-* + !WORD $0056 + !WORD _B187-* + !WORD $005A + !WORD _B188-* + !WORD $005C + !WORD _B189-* +_B184 +; libsrc/jit16core.pla: 0604: X_IS_IFP = FALSE +; libsrc/jit16core.pla: 0605: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0606: break + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0607: is $60 // LB +_B190 +; libsrc/jit16core.pla: 0608: //puts("LB") +; libsrc/jit16core.pla: 0609: if not A_IS_TOS +; libsrc/jit16core.pla: 0610: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B191 + !WORD _B191-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0611: fin + !BYTE $76,$02 ; SLW [2] +_B191 +_B192 +; libsrc/jit16core.pla: 0612: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0613: codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0614: codeptr=>4 = tmp8+$B2 // LDA (TMP) +; libsrc/jit16core.pla: 0615: codeptr=>6 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0616: codeptr->8 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0617: codeptr=>9 = $00FF +; libsrc/jit16core.pla: 0618: codeptr = codeptr + 11 +; libsrc/jit16core.pla: 0619: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0620: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B2,$E7 ; CW 59314 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0621: is $62 // LW +_B193 +; libsrc/jit16core.pla: 0622: //puts("LW") +; libsrc/jit16core.pla: 0623: if not A_IS_TOS +; libsrc/jit16core.pla: 0624: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B194 + !WORD _B194-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0625: fin + !BYTE $76,$02 ; SLW [2] +_B194 +_B195 +; libsrc/jit16core.pla: 0626: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0627: codeptr=>2 = tmp8+$B2 // LDA (TMP) +; libsrc/jit16core.pla: 0628: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0629: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0630: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B2,$E7 ; CW 59314 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0631: is $64 // LLB +_B196 +; libsrc/jit16core.pla: 0632: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0633: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0634: //puts("LLB "); puti(j) +; libsrc/jit16core.pla: 0635: if A_IS_TOS +; libsrc/jit16core.pla: 0636: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B197 + !WORD _B197-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0637: fin + !BYTE $76,$02 ; SLW [2] +_B197 +_B198 +; libsrc/jit16core.pla: 0638: if not X_IS_IFP +; libsrc/jit16core.pla: 0639: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 0640: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0641: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 0642: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B199 + !WORD _B199-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B199 +_B200 +; libsrc/jit16core.pla: 0643: codeptr=>0 = $B5+(j<<8) // LDA dp,X +; libsrc/jit16core.pla: 0644: codeptr->2 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0645: codeptr=>3 = $00FF +; libsrc/jit16core.pla: 0646: codeptr = codeptr + 5 +; libsrc/jit16core.pla: 0647: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0648: break + !BYTE $2A,$B5 ; CB 181 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0649: is $66 // LLW +_B201 +; libsrc/jit16core.pla: 0650: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0651: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0652: //puts("LLW "); puti(j) +; libsrc/jit16core.pla: 0653: if A_IS_TOS +; libsrc/jit16core.pla: 0654: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B202 + !WORD _B202-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0655: fin + !BYTE $76,$02 ; SLW [2] +_B202 +_B203 +; libsrc/jit16core.pla: 0656: if not X_IS_IFP +; libsrc/jit16core.pla: 0657: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 0658: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0659: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 0660: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B204 + !WORD _B204-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B204 +_B205 +; libsrc/jit16core.pla: 0661: codeptr=>0 = $B5+(j<<8) // LDA dp,X +; libsrc/jit16core.pla: 0662: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0663: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0664: break + !BYTE $2A,$B5 ; CB 181 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0665: is $68 // LAB +_B206 +; libsrc/jit16core.pla: 0666: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 0667: i = i + 2 +; libsrc/jit16core.pla: 0668: //puts("LAB $"); puth(dest) +; libsrc/jit16core.pla: 0669: if A_IS_TOS +; libsrc/jit16core.pla: 0670: ^codeptr = $48; codeptr++ // PHA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B207 + !WORD _B207-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0671: fin + !BYTE $76,$02 ; SLW [2] +_B207 +_B208 +; libsrc/jit16core.pla: 0672: if is_hwaddr(dest) +; libsrc/jit16core.pla: 0673: // +; libsrc/jit16core.pla: 0674: // Ensure we only do byte sized accesses to H/W +; libsrc/jit16core.pla: 0675: // +; libsrc/jit16core.pla: 0676: codeptr=>0 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0677: codeptr->2 = $AD // LDA abs +; libsrc/jit16core.pla: 0678: codeptr=>3 = dest +; libsrc/jit16core.pla: 0679: codeptr=>5 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0680: codeptr->7 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0681: codeptr=>8 = $00FF +; libsrc/jit16core.pla: 0682: codeptr = codeptr + 10 +; libsrc/jit16core.pla: 0683: else + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C001 +_F012 !WORD _C001 + !BYTE $4C ; BRFLS _B209 + !WORD _B209-* + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B210 + !WORD _B210-* +_B209 +; libsrc/jit16core.pla: 0684: codeptr->0 = $AD // LDA abs +; libsrc/jit16core.pla: 0685: codeptr=>1 = dest +; libsrc/jit16core.pla: 0686: codeptr->3 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0687: codeptr=>4 = $00FF +; libsrc/jit16core.pla: 0688: codeptr = codeptr + 6 +; libsrc/jit16core.pla: 0689: fin + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] +_B210 +; libsrc/jit16core.pla: 0690: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0691: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0692: is $6A // LAW +_B211 +; libsrc/jit16core.pla: 0693: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 0694: i = i + 2 +; libsrc/jit16core.pla: 0695: //puts("LAW $"); puth(dest) +; libsrc/jit16core.pla: 0696: if A_IS_TOS +; libsrc/jit16core.pla: 0697: ^codeptr = $48; codeptr++ // PHA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B212 + !WORD _B212-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0698: fin + !BYTE $76,$02 ; SLW [2] +_B212 +_B213 +; libsrc/jit16core.pla: 0699: codeptr->0 = $AD // LDA abs +; libsrc/jit16core.pla: 0700: codeptr=>1 = dest +; libsrc/jit16core.pla: 0701: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0702: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0703: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0704: is $6C // DLB +_B214 +; libsrc/jit16core.pla: 0705: is $74 // SLB +_B215 +; libsrc/jit16core.pla: 0706: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0707: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0708: if not A_IS_TOS +; libsrc/jit16core.pla: 0709: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B216 + !WORD _B216-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0710: fin + !BYTE $76,$02 ; SLW [2] +_B216 +_B217 +; libsrc/jit16core.pla: 0711: if not X_IS_IFP +; libsrc/jit16core.pla: 0712: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 0713: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0714: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 0715: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B218 + !WORD _B218-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B218 +_B219 +; libsrc/jit16core.pla: 0716: codeptr=>0 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0717: codeptr=>2 = $95+(j<<8) // STA dp,X +; libsrc/jit16core.pla: 0718: codeptr=>4 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0719: if opcode == $6C +; libsrc/jit16core.pla: 0720: //puts("DLB "); puti(j) +; libsrc/jit16core.pla: 0721: codeptr->6 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0722: codeptr=>7 = $00FF +; libsrc/jit16core.pla: 0723: codeptr = codeptr + 9 +; libsrc/jit16core.pla: 0724: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0725: else + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$95 ; CB 149 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$6C ; CB 108 + !BYTE $24 ; BRNE _B220 + !WORD _B220-* + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B221 + !WORD _B221-* +_B220 +; libsrc/jit16core.pla: 0726: //puts("SLB "); puti(j) +; libsrc/jit16core.pla: 0727: codeptr = codeptr + 6 +; libsrc/jit16core.pla: 0728: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0729: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B221 +; libsrc/jit16core.pla: 0730: break + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0731: is $6E // DLW +_B222 +; libsrc/jit16core.pla: 0732: is $76 // SLW +_B223 +; libsrc/jit16core.pla: 0733: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0734: j = ^(bytecode+i) +; libsrc/jit16core.pla: 0735: if not A_IS_TOS +; libsrc/jit16core.pla: 0736: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B224 + !WORD _B224-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0737: fin + !BYTE $76,$02 ; SLW [2] +_B224 +_B225 +; libsrc/jit16core.pla: 0738: if not X_IS_IFP +; libsrc/jit16core.pla: 0739: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 0740: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0741: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 0742: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B226 + !WORD _B226-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B226 +_B227 +; libsrc/jit16core.pla: 0743: codeptr=>0 = $95+(j<<8) // STA dp,X +; libsrc/jit16core.pla: 0744: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 0745: if opcode == $6E +; libsrc/jit16core.pla: 0746: //puts("DLW "); puti(j) +; libsrc/jit16core.pla: 0747: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0748: else + !BYTE $2A,$95 ; CB 149 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$6E ; CB 110 + !BYTE $24 ; BRNE _B228 + !WORD _B228-* + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B229 + !WORD _B229-* +_B228 +; libsrc/jit16core.pla: 0749: //puts("SLW "); puti(j) +; libsrc/jit16core.pla: 0750: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0751: fin + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B229 +; libsrc/jit16core.pla: 0752: break + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0753: is $70 // SB +_B230 +; libsrc/jit16core.pla: 0754: //puts("SB") +; libsrc/jit16core.pla: 0755: if not A_IS_TOS +; libsrc/jit16core.pla: 0756: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B231 + !WORD _B231-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0757: fin + !BYTE $76,$02 ; SLW [2] +_B231 +_B232 +; libsrc/jit16core.pla: 0758: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0759: codeptr->2 = $68 // PLA +; libsrc/jit16core.pla: 0760: codeptr=>3 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0761: codeptr=>5 = tmp8+$92 // STA (TMP) +; libsrc/jit16core.pla: 0762: codeptr=>7 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0763: codeptr = codeptr + 9 +; libsrc/jit16core.pla: 0764: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0765: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$92,$E7 ; CW 59282 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0766: is $72 // SW +_B233 +; libsrc/jit16core.pla: 0767: //puts("SW") +; libsrc/jit16core.pla: 0768: if not A_IS_TOS +; libsrc/jit16core.pla: 0769: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B234 + !WORD _B234-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0770: fin + !BYTE $76,$02 ; SLW [2] +_B234 +_B235 +; libsrc/jit16core.pla: 0771: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0772: codeptr->2 = $68 // PLA +; libsrc/jit16core.pla: 0773: codeptr=>3 = tmp8+$92 // STA (TMP) +; libsrc/jit16core.pla: 0774: codeptr = codeptr + 5 +; libsrc/jit16core.pla: 0775: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0776: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$92,$E7 ; CW 59282 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0777: is $78 // SAB +_B236 +; libsrc/jit16core.pla: 0778: is $7C // DAB +_B237 +; libsrc/jit16core.pla: 0779: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 0780: i = i + 2 +; libsrc/jit16core.pla: 0781: if not A_IS_TOS +; libsrc/jit16core.pla: 0782: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B238 + !WORD _B238-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0783: fin + !BYTE $76,$02 ; SLW [2] +_B238 +_B239 +; libsrc/jit16core.pla: 0784: codeptr=>0 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0785: codeptr->2 = $8D // STA abs +; libsrc/jit16core.pla: 0786: codeptr=>3 = dest +; libsrc/jit16core.pla: 0787: codeptr=>5 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 0788: if opcode == $78 +; libsrc/jit16core.pla: 0789: //puts("SAB $"); puth(*(bytecode+i)) +; libsrc/jit16core.pla: 0790: codeptr = codeptr + 7 +; libsrc/jit16core.pla: 0791: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0792: else + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$78 ; CB 120 + !BYTE $24 ; BRNE _B240 + !WORD _B240-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B241 + !WORD _B241-* +_B240 +; libsrc/jit16core.pla: 0793: //puts("DAB $"); puth(*(bytecode+i)) +; libsrc/jit16core.pla: 0794: codeptr->7 = $29 // AND #$00FF +; libsrc/jit16core.pla: 0795: codeptr=>8 = $00FF +; libsrc/jit16core.pla: 0796: codeptr = codeptr + 10 +; libsrc/jit16core.pla: 0797: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0798: fin + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] +_B241 +; libsrc/jit16core.pla: 0799: break + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0800: is $7A // SAW +_B242 +; libsrc/jit16core.pla: 0801: is $7E // DAW +_B243 +; libsrc/jit16core.pla: 0802: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 0803: i = i + 2 +; libsrc/jit16core.pla: 0804: if not A_IS_TOS +; libsrc/jit16core.pla: 0805: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B244 + !WORD _B244-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0806: fin + !BYTE $76,$02 ; SLW [2] +_B244 +_B245 +; libsrc/jit16core.pla: 0807: codeptr->0 = $8D // STA abs +; libsrc/jit16core.pla: 0808: codeptr=>1 = dest +; libsrc/jit16core.pla: 0809: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0810: if opcode == $7A +; libsrc/jit16core.pla: 0811: //puts("SAW $"); puth(dest) +; libsrc/jit16core.pla: 0812: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0813: else + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$7A ; CB 122 + !BYTE $24 ; BRNE _B246 + !WORD _B246-* + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B247 + !WORD _B247-* +_B246 +; libsrc/jit16core.pla: 0814: //puts("DAW $"); puth(*(bytecode+i)) +; libsrc/jit16core.pla: 0815: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0816: fin + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] +_B247 +; libsrc/jit16core.pla: 0817: break + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0818: is $80 // NOT +_B248 +; libsrc/jit16core.pla: 0819: //puts("NOT") +; libsrc/jit16core.pla: 0820: if not A_IS_TOS +; libsrc/jit16core.pla: 0821: codeptr->0 = $68 // PLA +; libsrc/jit16core.pla: 0822: else + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B249 + !WORD _B249-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B250 + !WORD _B250-* +_B249 +; libsrc/jit16core.pla: 0823: codeptr->0 = $A8 // TAY +; libsrc/jit16core.pla: 0824: fin + !BYTE $2A,$A8 ; CB 168 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB +_B250 +; libsrc/jit16core.pla: 0825: codeptr=>1 = $03F0 // BEQ +3 +; libsrc/jit16core.pla: 0826: codeptr->3 = $A9 // LDA #$FFFF +; libsrc/jit16core.pla: 0827: codeptr=>4 = $FFFF +; libsrc/jit16core.pla: 0828: codeptr->6 = $49 // EOR #$FFFF +; libsrc/jit16core.pla: 0829: codeptr=>7 = $FFFF +; libsrc/jit16core.pla: 0830: codeptr = codeptr + 9 +; libsrc/jit16core.pla: 0831: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0832: break + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0833: is $82 // ADD +_B251 +; libsrc/jit16core.pla: 0834: //puts("ADD") +; libsrc/jit16core.pla: 0835: if not A_IS_TOS +; libsrc/jit16core.pla: 0836: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B252 + !WORD _B252-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0837: fin + !BYTE $76,$02 ; SLW [2] +_B252 +_B253 +; libsrc/jit16core.pla: 0838: codeptr->0 = $18 // CLC +; libsrc/jit16core.pla: 0839: codeptr=>1 = $63+(TOS<<8) // ADC S,TOS +; libsrc/jit16core.pla: 0840: codeptr->3 = $7A // PLY +; libsrc/jit16core.pla: 0841: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0842: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0843: break + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$63,$01 ; CW 355 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0844: is $84 // SUB +_B254 +; libsrc/jit16core.pla: 0845: //puts("SUB") +; libsrc/jit16core.pla: 0846: if not A_IS_TOS +; libsrc/jit16core.pla: 0847: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B255 + !WORD _B255-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0848: fin + !BYTE $76,$02 ; SLW [2] +_B255 +_B256 +; libsrc/jit16core.pla: 0849: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 0850: codeptr=>2 = $3868 // PLA; SEC +; libsrc/jit16core.pla: 0851: codeptr=>4 = tmp8+$E5 // SBC TMP +; libsrc/jit16core.pla: 0852: codeptr = codeptr + 6 +; libsrc/jit16core.pla: 0853: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0854: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$68,$38 ; CW 14440 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$E5,$E7 ; CW 59365 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0855: is $86 // MUL +_B257 +; libsrc/jit16core.pla: 0856: is $88 // DIV +_B258 +; libsrc/jit16core.pla: 0857: is $8A // MOD +_B259 +; libsrc/jit16core.pla: 0858: is $9A // SHL +_B260 +; libsrc/jit16core.pla: 0859: is $9C // SHR +_B261 +; libsrc/jit16core.pla: 0860: //puts("MUL,DIV,MOD,SHL,SHR") +; libsrc/jit16core.pla: 0861: // when opcode +; libsrc/jit16core.pla: 0862: // is $86 +; libsrc/jit16core.pla: 0863: // //puts("MUL") +; libsrc/jit16core.pla: 0864: // is $88 +; libsrc/jit16core.pla: 0865: // //puts("DIV") +; libsrc/jit16core.pla: 0866: // is $8A +; libsrc/jit16core.pla: 0867: // //puts("MOD") +; libsrc/jit16core.pla: 0868: // is $9A +; libsrc/jit16core.pla: 0869: // //puts("SHL") +; libsrc/jit16core.pla: 0870: // is $9C +; libsrc/jit16core.pla: 0871: // //puts("SHR") +; libsrc/jit16core.pla: 0872: // wend +; libsrc/jit16core.pla: 0873: // +; libsrc/jit16core.pla: 0874: // Call into VM +; libsrc/jit16core.pla: 0875: // +; libsrc/jit16core.pla: 0876: if A_IS_TOS +; libsrc/jit16core.pla: 0877: ^codeptr = $48; codeptr++ // PHA + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B262 + !WORD _B262-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0878: fin + !BYTE $76,$02 ; SLW [2] +_B262 +_B263 +; libsrc/jit16core.pla: 0879: codeptr=>0 = $10E2 // SEP #$10 -> 8 BIT X/Y +; libsrc/jit16core.pla: 0880: codeptr->2 = $A9 // LDA #imm +; libsrc/jit16core.pla: 0881: codeptr=>3 = codeptr + 12 +; libsrc/jit16core.pla: 0882: codeptr=>5 = ip8+$85 // STA IP +; libsrc/jit16core.pla: 0883: codeptr=>7 = $00A0 // LDY #$00 +; libsrc/jit16core.pla: 0884: codeptr->9 = $4C // JMP FETCHOP +; libsrc/jit16core.pla: 0885: codeptr=>10 = fetchop // FETCHOP +; libsrc/jit16core.pla: 0886: codeptr=>12 = $C000+opcode // OPCODE; NATV CODE +; libsrc/jit16core.pla: 0887: codeptr = codeptr + 14 +; libsrc/jit16core.pla: 0888: X_IS_IFP = FALSE +; libsrc/jit16core.pla: 0889: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0890: break + !BYTE $2C,$E2,$10 ; CW 4322 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$85,$F2 ; CW 62085 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2A,$F1 ; CB 241 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $B0,$0E ; ADDLB [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0891: is $8C // INCR +_B264 +; libsrc/jit16core.pla: 0892: //puts("INCR") +; libsrc/jit16core.pla: 0893: if not A_IS_TOS +; libsrc/jit16core.pla: 0894: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B265 + !WORD _B265-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0895: fin + !BYTE $76,$02 ; SLW [2] +_B265 +_B266 +; libsrc/jit16core.pla: 0896: ^codeptr = $1A; codeptr++ // INC A + !BYTE $2A,$1A ; CB 26 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0897: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0898: break + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0899: is $8E // DECR +_B267 +; libsrc/jit16core.pla: 0900: //puts("DECR") +; libsrc/jit16core.pla: 0901: if not A_IS_TOS +; libsrc/jit16core.pla: 0902: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B268 + !WORD _B268-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0903: fin + !BYTE $76,$02 ; SLW [2] +_B268 +_B269 +; libsrc/jit16core.pla: 0904: ^codeptr = $3A; codeptr++ // DEC A + !BYTE $2A,$3A ; CB 58 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0905: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 0906: break + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0907: is $90 // NEG +_B270 +; libsrc/jit16core.pla: 0908: //puts("NEG") +; libsrc/jit16core.pla: 0909: if not A_IS_TOS +; libsrc/jit16core.pla: 0910: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B271 + !WORD _B271-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0911: fin + !BYTE $76,$02 ; SLW [2] +_B271 +_B272 +; libsrc/jit16core.pla: 0912: codeptr->0 = $49 // EOR #$FFFF +; libsrc/jit16core.pla: 0913: codeptr=>1 = $FFFF +; libsrc/jit16core.pla: 0914: codeptr->3 = $1A // INC A +; libsrc/jit16core.pla: 0915: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 0916: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0917: break + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$1A ; CB 26 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0918: is $92 // COMP +_B273 +; libsrc/jit16core.pla: 0919: //puts("COMP") +; libsrc/jit16core.pla: 0920: if not A_IS_TOS +; libsrc/jit16core.pla: 0921: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B274 + !WORD _B274-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0922: fin + !BYTE $76,$02 ; SLW [2] +_B274 +_B275 +; libsrc/jit16core.pla: 0923: codeptr->0 = $49 // EOR #$FFFF +; libsrc/jit16core.pla: 0924: codeptr=>1 = $FFFF +; libsrc/jit16core.pla: 0925: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0926: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0927: break + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0928: is $94 // AND +_B276 +; libsrc/jit16core.pla: 0929: //puts("AND") +; libsrc/jit16core.pla: 0930: if not A_IS_TOS +; libsrc/jit16core.pla: 0931: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B277 + !WORD _B277-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0932: fin + !BYTE $76,$02 ; SLW [2] +_B277 +_B278 +; libsrc/jit16core.pla: 0933: codeptr=>0 = $23+(TOS<<8) // AND S,TOS +; libsrc/jit16core.pla: 0934: codeptr->2 = $7A // PLY +; libsrc/jit16core.pla: 0935: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0936: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0937: break + !BYTE $2C,$23,$01 ; CW 291 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0938: is $96 // OR +_B279 +; libsrc/jit16core.pla: 0939: //puts("OR") +; libsrc/jit16core.pla: 0940: if not A_IS_TOS +; libsrc/jit16core.pla: 0941: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B280 + !WORD _B280-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0942: fin + !BYTE $76,$02 ; SLW [2] +_B280 +_B281 +; libsrc/jit16core.pla: 0943: codeptr=>0 = $03+(TOS<<8) // OR S,TOS +; libsrc/jit16core.pla: 0944: codeptr->2 = $7A // PLY +; libsrc/jit16core.pla: 0945: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0946: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0947: break + !BYTE $2C,$03,$01 ; CW 259 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0948: is $98 // XOR +_B282 +; libsrc/jit16core.pla: 0949: //puts("XOR") +; libsrc/jit16core.pla: 0950: if not A_IS_TOS +; libsrc/jit16core.pla: 0951: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B283 + !WORD _B283-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0952: fin + !BYTE $76,$02 ; SLW [2] +_B283 +_B284 +; libsrc/jit16core.pla: 0953: codeptr=>0 = $43+(TOS<<8) // EOR S,TOS +; libsrc/jit16core.pla: 0954: codeptr->2 = $7A // PLY +; libsrc/jit16core.pla: 0955: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 0956: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0957: break + !BYTE $2C,$43,$01 ; CW 323 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0958: is $9E // IDXW +_B285 +; libsrc/jit16core.pla: 0959: //puts("IDXW") +; libsrc/jit16core.pla: 0960: if not A_IS_TOS +; libsrc/jit16core.pla: 0961: ^codeptr = $68; codeptr++ // PLA + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B286 + !WORD _B286-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0962: fin + !BYTE $76,$02 ; SLW [2] +_B286 +_B287 +; libsrc/jit16core.pla: 0963: codeptr=>0 = $180A // ASL; CLC +; libsrc/jit16core.pla: 0964: codeptr=>2 = $63+(TOS<<8) // ADC S,TOS +; libsrc/jit16core.pla: 0965: codeptr->4 = $7A // PLY +; libsrc/jit16core.pla: 0966: codeptr = codeptr + 5 +; libsrc/jit16core.pla: 0967: A_IS_TOS = TRUE +; libsrc/jit16core.pla: 0968: break + !BYTE $2C,$0A,$18 ; CW 6154 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$63,$01 ; CW 355 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0969: is $A0 // BRGT - FOR/NEXT SPECIFIC TEST & BRANCH +_B288 +; libsrc/jit16core.pla: 0970: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0971: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0972: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0973: //puts("BRGT "); puti(dest) +; libsrc/jit16core.pla: 0974: if A_IS_TOS +; libsrc/jit16core.pla: 0975: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B289 + !WORD _B289-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0976: fin + !BYTE $76,$02 ; SLW [2] +_B289 +_B290 +; libsrc/jit16core.pla: 0977: codeptr=>0 = $A3+(NOS<<8) // LDA S,NOS +; libsrc/jit16core.pla: 0978: codeptr->2 = $38 // SEC +; libsrc/jit16core.pla: 0979: codeptr=>3 = $E3+(TOS<<8) // SBC S,TOS +; libsrc/jit16core.pla: 0980: codeptr=>5 = $0350 // BVC +3 +; libsrc/jit16core.pla: 0981: codeptr->7 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 0982: codeptr=>8 = $8000 +; libsrc/jit16core.pla: 0983: codeptr=>10 = $0310 // BPL +3 +; libsrc/jit16core.pla: 0984: codeptr->12 = $4C // JMP abs +; libsrc/jit16core.pla: 0985: codeptr=>13 = addrxlate=>[dest] +; libsrc/jit16core.pla: 0986: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jit16core.pla: 0987: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jit16core.pla: 0988: fin + !BYTE $2C,$A3,$03 ; CW 931 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$E3,$01 ; CW 483 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B291 + !WORD _B291-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B291 +_B292 +; libsrc/jit16core.pla: 0989: codeptr = codeptr + 15 +; libsrc/jit16core.pla: 0990: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 0991: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 0992: is $A2 // BRLT - FOR/NEXT SPECIFIC TEST & BRANCH +_B293 +; libsrc/jit16core.pla: 0993: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0994: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 0995: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0996: //puts("BRLT "); puti(dest) +; libsrc/jit16core.pla: 0997: if A_IS_TOS +; libsrc/jit16core.pla: 0998: ^codeptr = $48; codeptr++ // PHA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B294 + !WORD _B294-* + !BYTE $2A,$48 ; CB 72 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 0999: fin + !BYTE $76,$02 ; SLW [2] +_B294 +_B295 +; libsrc/jit16core.pla: 1000: codeptr->0 = $38 // SEC +; libsrc/jit16core.pla: 1001: codeptr=>1 = $E3+(NOS<<8) // SBC S,NOS +; libsrc/jit16core.pla: 1002: codeptr=>3 = $0350 // BVC +3 +; libsrc/jit16core.pla: 1003: codeptr->5 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 1004: codeptr=>6 = $8000 +; libsrc/jit16core.pla: 1005: codeptr=>8 = $0310 // BPL +3 +; libsrc/jit16core.pla: 1006: codeptr->10 = $4C // JMP abs +; libsrc/jit16core.pla: 1007: codeptr=>11 = addrxlate=>[dest] +; libsrc/jit16core.pla: 1008: if not (codeptr->12 & $80) // Unresolved address list +; libsrc/jit16core.pla: 1009: addrxlate=>[dest] = codeptr + 11 - *jitcodeptr +; libsrc/jit16core.pla: 1010: fin + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$E3,$03 ; CW 995 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B296 + !WORD _B296-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B296 +_B297 +; libsrc/jit16core.pla: 1011: codeptr = codeptr + 13 +; libsrc/jit16core.pla: 1012: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 1013: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1014: is $A4 // INCBRLE - FOR/NEXT SPECIFIC INC & TEST & BRANCH +_B298 +; libsrc/jit16core.pla: 1015: is $A6 // ADDBRLE - FOR/NEXT SPECIFIC ADD & TEST & BRANCH +_B299 +; libsrc/jit16core.pla: 1016: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1017: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 1018: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1019: if not A_IS_TOS +; libsrc/jit16core.pla: 1020: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B300 + !WORD _B300-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1021: fin + !BYTE $76,$02 ; SLW [2] +_B300 +_B301 +; libsrc/jit16core.pla: 1022: if opcode == $A4 +; libsrc/jit16core.pla: 1023: // +; libsrc/jit16core.pla: 1024: // INCR +; libsrc/jit16core.pla: 1025: // +; libsrc/jit16core.pla: 1026: //puts("INCBRLE "); puti(dest) +; libsrc/jit16core.pla: 1027: codeptr=>0 = $481A // INC A; PHA +; libsrc/jit16core.pla: 1028: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1029: else + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$A4 ; CB 164 + !BYTE $24 ; BRNE _B302 + !WORD _B302-* + !BYTE $2C,$1A,$48 ; CW 18458 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B303 + !WORD _B303-* +_B302 +; libsrc/jit16core.pla: 1030: // +; libsrc/jit16core.pla: 1031: // ADD +; libsrc/jit16core.pla: 1032: // +; libsrc/jit16core.pla: 1033: //puts("ADDBRLE "); puti(dest) +; libsrc/jit16core.pla: 1034: codeptr->0 = $18 // CLC +; libsrc/jit16core.pla: 1035: codeptr=>1 = $63+(TOS<<8) // ADC S,TOS +; libsrc/jit16core.pla: 1036: codeptr=>3 = $83+(TOS<<8) // STA S,TOS +; libsrc/jit16core.pla: 1037: codeptr = codeptr + 5 +; libsrc/jit16core.pla: 1038: fin + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$63,$01 ; CW 355 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$83,$01 ; CW 387 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] +_B303 +; libsrc/jit16core.pla: 1039: // +; libsrc/jit16core.pla: 1040: // BRLE +; libsrc/jit16core.pla: 1041: // +; libsrc/jit16core.pla: 1042: codeptr=>0 = $A3+(NOS<<8) // LDA S,NOS +; libsrc/jit16core.pla: 1043: codeptr->2 = $38 // SEC +; libsrc/jit16core.pla: 1044: codeptr=>3 = $E3+(TOS<<8) // SBC S,TOS +; libsrc/jit16core.pla: 1045: codeptr=>5 = $0350 // BVC +3 +; libsrc/jit16core.pla: 1046: codeptr->7 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 1047: codeptr=>8 = $8000 +; libsrc/jit16core.pla: 1048: codeptr=>10 = $0330 // BMI +3 +; libsrc/jit16core.pla: 1049: codeptr->12 = $4C // JMP abs +; libsrc/jit16core.pla: 1050: codeptr=>13 = addrxlate=>[dest] +; libsrc/jit16core.pla: 1051: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jit16core.pla: 1052: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jit16core.pla: 1053: fin + !BYTE $2C,$A3,$03 ; CW 931 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$E3,$01 ; CW 483 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B304 + !WORD _B304-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B304 +_B305 +; libsrc/jit16core.pla: 1054: codeptr = codeptr + 15 +; libsrc/jit16core.pla: 1055: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 1056: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1057: is $A8 // DECBRGR - FOR/NEXT SPECIFIC DEC & TEST & BRANCH +_B306 +; libsrc/jit16core.pla: 1058: is $AA // SUBBRGE - FOR/NEXT SPECIFIC SUB & TEST & BRANCH +_B307 +; libsrc/jit16core.pla: 1059: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1060: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 1061: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1062: if not A_IS_TOS +; libsrc/jit16core.pla: 1063: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B308 + !WORD _B308-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1064: fin + !BYTE $76,$02 ; SLW [2] +_B308 +_B309 +; libsrc/jit16core.pla: 1065: if opcode == $A8 +; libsrc/jit16core.pla: 1066: // +; libsrc/jit16core.pla: 1067: // DECR +; libsrc/jit16core.pla: 1068: // +; libsrc/jit16core.pla: 1069: //puts("DECBRGE "); puti(dest) +; libsrc/jit16core.pla: 1070: codeptr=>0 = $483A // DEC A; PHA +; libsrc/jit16core.pla: 1071: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1072: else + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B310 + !WORD _B310-* + !BYTE $2C,$3A,$48 ; CW 18490 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B311 + !WORD _B311-* +_B310 +; libsrc/jit16core.pla: 1073: // +; libsrc/jit16core.pla: 1074: // SUB +; libsrc/jit16core.pla: 1075: // +; libsrc/jit16core.pla: 1076: //puts("SUBBRGE "); puti(dest) +; libsrc/jit16core.pla: 1077: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1078: codeptr=>2 = $A3+(TOS<<8) // LDA S,TOS +; libsrc/jit16core.pla: 1079: codeptr->4 = $38 // SEC +; libsrc/jit16core.pla: 1080: codeptr=>5 = tmp8+$E5 // SBC TMP +; libsrc/jit16core.pla: 1081: codeptr=>7 = $83+(TOS<<8) // STA S,TOS +; libsrc/jit16core.pla: 1082: codeptr = codeptr + 9 +; libsrc/jit16core.pla: 1083: fin + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$A3,$01 ; CW 419 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2C,$E5,$E7 ; CW 59365 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$83,$01 ; CW 387 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] +_B311 +; libsrc/jit16core.pla: 1084: // +; libsrc/jit16core.pla: 1085: // BRGE +; libsrc/jit16core.pla: 1086: // +; libsrc/jit16core.pla: 1087: codeptr->0 = $38 // SEC +; libsrc/jit16core.pla: 1088: codeptr=>1 = $E3+(NOS<<8) // SBC S,NOS +; libsrc/jit16core.pla: 1089: codeptr=>3 = $0350 // BVC +3 +; libsrc/jit16core.pla: 1090: codeptr->5 = $49 // EOR #$8000 +; libsrc/jit16core.pla: 1091: codeptr=>6 = $8000 +; libsrc/jit16core.pla: 1092: codeptr=>8 = $0330 // BMI +3 +; libsrc/jit16core.pla: 1093: codeptr->10 = $4C // JMP abs +; libsrc/jit16core.pla: 1094: codeptr=>11 = addrxlate=>[dest] +; libsrc/jit16core.pla: 1095: if not (codeptr->12 & $80) // Unresolved address list +; libsrc/jit16core.pla: 1096: addrxlate=>[dest] = codeptr + 11 - *jitcodeptr +; libsrc/jit16core.pla: 1097: fin + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$E3,$03 ; CW 995 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$50,$03 ; CW 848 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B312 + !WORD _B312-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B312 +_B313 +; libsrc/jit16core.pla: 1098: codeptr = codeptr + 13 +; libsrc/jit16core.pla: 1099: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 1100: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1101: is $AC // BRAND - LOGICAL AND SPECIFIC BRANCH +_B314 +; libsrc/jit16core.pla: 1102: is $AE // BROR - LOGICAL OR SPECIFIC BRANCH +_B315 +; libsrc/jit16core.pla: 1103: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1104: dest = i + *(bytecode+i) +; libsrc/jit16core.pla: 1105: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1106: if not A_IS_TOS +; libsrc/jit16core.pla: 1107: codeptr->0 = $68 // PLA +; libsrc/jit16core.pla: 1108: else + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B316 + !WORD _B316-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +_B316 +; libsrc/jit16core.pla: 1109: codeptr->0 = $A8 // TAY +; libsrc/jit16core.pla: 1110: fin + !BYTE $2A,$A8 ; CB 168 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB +_B317 +; libsrc/jit16core.pla: 1111: if opcode == $AC +; libsrc/jit16core.pla: 1112: //puts("BRAND "); puti(dest) +; libsrc/jit16core.pla: 1113: codeptr=>1 = $04D0 // BNE +4 +; libsrc/jit16core.pla: 1114: else + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$AC ; CB 172 + !BYTE $24 ; BRNE _B318 + !WORD _B318-* + !BYTE $2C,$D0,$04 ; CW 1232 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B319 + !WORD _B319-* +_B318 +; libsrc/jit16core.pla: 1115: //puts("BROR "); puti(dest) +; libsrc/jit16core.pla: 1116: codeptr=>1 = $04F0 // BEQ +4 +; libsrc/jit16core.pla: 1117: fin + !BYTE $2C,$F0,$04 ; CW 1264 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW +_B319 +; libsrc/jit16core.pla: 1118: codeptr=>3 = $4C48 // PHA; JMP abs +; libsrc/jit16core.pla: 1119: codeptr=>5 = addrxlate=>[dest] +; libsrc/jit16core.pla: 1120: if not (codeptr->6 & $80) // Unresolved address list +; libsrc/jit16core.pla: 1121: addrxlate=>[dest] = codeptr + 5 - *jitcodeptr +; libsrc/jit16core.pla: 1122: fin + !BYTE $2C,$48,$4C ; CW 19528 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B320 + !WORD _B320-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B320 +_B321 +; libsrc/jit16core.pla: 1123: codeptr = codeptr + 7 +; libsrc/jit16core.pla: 1124: A_IS_TOS = FALSE +; libsrc/jit16core.pla: 1125: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1126: is $B0 // ADDLB +_B322 +; libsrc/jit16core.pla: 1127: //puts("ADDLB "); puti(j) +; libsrc/jit16core.pla: 1128: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1129: j = ^(bytecode+i) +; libsrc/jit16core.pla: 1130: if not A_IS_TOS +; libsrc/jit16core.pla: 1131: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B323 + !WORD _B323-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1132: fin + !BYTE $76,$02 ; SLW [2] +_B323 +_B324 +; libsrc/jit16core.pla: 1133: if not X_IS_IFP +; libsrc/jit16core.pla: 1134: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 1135: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1136: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 1137: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B325 + !WORD _B325-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B325 +_B326 +; libsrc/jit16core.pla: 1138: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1139: codeptr=>2 = $B5+(j<<8) // LDA dp,X +; libsrc/jit16core.pla: 1140: codeptr->4 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1141: codeptr=>5 = $00FF +; libsrc/jit16core.pla: 1142: codeptr->7 = $18 // CLC +; libsrc/jit16core.pla: 1143: codeptr=>8 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1144: codeptr = codeptr + 10 +; libsrc/jit16core.pla: 1145: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1146: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$B5 ; CB 181 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1147: is $B2 // ADDLW +_B327 +; libsrc/jit16core.pla: 1148: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1149: j = ^(bytecode+i) +; libsrc/jit16core.pla: 1150: //puts("ADDLW "); puti(j) +; libsrc/jit16core.pla: 1151: if not A_IS_TOS +; libsrc/jit16core.pla: 1152: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B328 + !WORD _B328-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1153: fin + !BYTE $76,$02 ; SLW [2] +_B328 +_B329 +; libsrc/jit16core.pla: 1154: if not X_IS_IFP +; libsrc/jit16core.pla: 1155: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 1156: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1157: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 1158: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B330 + !WORD _B330-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B330 +_B331 +; libsrc/jit16core.pla: 1159: codeptr->0 = $18 // CLC +; libsrc/jit16core.pla: 1160: codeptr=>1 = $75+(j<<8) // ADC dp,X +; libsrc/jit16core.pla: 1161: codeptr = codeptr + 3 +; libsrc/jit16core.pla: 1162: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1163: break + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$75 ; CB 117 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1164: is $B4 // ADDAB +_B332 +; libsrc/jit16core.pla: 1165: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 1166: i = i + 2 +; libsrc/jit16core.pla: 1167: //puts("ADDAB $"); puth(dest) +; libsrc/jit16core.pla: 1168: if not A_IS_TOS +; libsrc/jit16core.pla: 1169: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B333 + !WORD _B333-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1170: fin + !BYTE $76,$02 ; SLW [2] +_B333 +_B334 +; libsrc/jit16core.pla: 1171: if is_hwaddr(dest) +; libsrc/jit16core.pla: 1172: // +; libsrc/jit16core.pla: 1173: // Ensure only byte sized accesses to H/W addresses +; libsrc/jit16core.pla: 1174: // +; libsrc/jit16core.pla: 1175: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1176: codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 1177: codeptr->4 = $AD // LDA abs +; libsrc/jit16core.pla: 1178: codeptr=>5 = dest +; libsrc/jit16core.pla: 1179: codeptr=>7 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 1180: codeptr->9 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1181: codeptr=>10 = $00FF +; libsrc/jit16core.pla: 1182: codeptr->12 = $18 // CLC +; libsrc/jit16core.pla: 1183: codeptr=>13 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1184: codeptr = codeptr + 15 +; libsrc/jit16core.pla: 1185: else + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C001 +_F013 !WORD _C001 + !BYTE $4C ; BRFLS _B335 + !WORD _B335-* + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B336 + !WORD _B336-* +_B335 +; libsrc/jit16core.pla: 1186: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1187: codeptr->2 = $AD // LDA abs +; libsrc/jit16core.pla: 1188: codeptr=>3 = dest +; libsrc/jit16core.pla: 1189: codeptr->5 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1190: codeptr=>6 = $00FF +; libsrc/jit16core.pla: 1191: codeptr->8 = $18 // CLC +; libsrc/jit16core.pla: 1192: codeptr=>9 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1193: codeptr = codeptr + 11 +; libsrc/jit16core.pla: 1194: fin + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] +_B336 +; libsrc/jit16core.pla: 1195: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1196: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1197: is $B6 // ADDAW +_B337 +; libsrc/jit16core.pla: 1198: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 1199: i = i + 2 +; libsrc/jit16core.pla: 1200: if not A_IS_TOS +; libsrc/jit16core.pla: 1201: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B338 + !WORD _B338-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1202: fin + !BYTE $76,$02 ; SLW [2] +_B338 +_B339 +; libsrc/jit16core.pla: 1203: codeptr=>0 = $6D18 // CLC; ADC abs +; libsrc/jit16core.pla: 1204: codeptr=>2 = dest +; libsrc/jit16core.pla: 1205: codeptr = codeptr + 4 +; libsrc/jit16core.pla: 1206: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1207: break + !BYTE $2C,$18,$6D ; CW 27928 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1208: is $B8 // IDXLB +_B340 +; libsrc/jit16core.pla: 1209: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1210: j = ^(bytecode+i) +; libsrc/jit16core.pla: 1211: //puts("IDXLB "); puti(j) +; libsrc/jit16core.pla: 1212: if not A_IS_TOS +; libsrc/jit16core.pla: 1213: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B341 + !WORD _B341-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1214: fin + !BYTE $76,$02 ; SLW [2] +_B341 +_B342 +; libsrc/jit16core.pla: 1215: if not X_IS_IFP +; libsrc/jit16core.pla: 1216: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 1217: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1218: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 1219: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B343 + !WORD _B343-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B343 +_B344 +; libsrc/jit16core.pla: 1220: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1221: codeptr=>2 = $B5+(j<<8) // LDA dp,X +; libsrc/jit16core.pla: 1222: codeptr->4 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1223: codeptr=>5 = $00FF +; libsrc/jit16core.pla: 1224: codeptr->7 = $0A // ASL +; libsrc/jit16core.pla: 1225: codeptr=>8 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1226: codeptr = codeptr + 10 +; libsrc/jit16core.pla: 1227: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1228: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$B5 ; CB 181 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1229: is $BA // IDXLW +_B345 +; libsrc/jit16core.pla: 1230: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1231: j = ^(bytecode+i) +; libsrc/jit16core.pla: 1232: //puts("IDXLW "); puti(j) +; libsrc/jit16core.pla: 1233: if not A_IS_TOS +; libsrc/jit16core.pla: 1234: ^codeptr = $68; codeptr++ // PLA + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$0F ; SLB [15] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B346 + !WORD _B346-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1235: fin + !BYTE $76,$02 ; SLW [2] +_B346 +_B347 +; libsrc/jit16core.pla: 1236: if not X_IS_IFP +; libsrc/jit16core.pla: 1237: *codeptr = ifp8+$A6 // LDX IFP +; libsrc/jit16core.pla: 1238: codeptr = codeptr + 2 +; libsrc/jit16core.pla: 1239: X_IS_IFP = TRUE +; libsrc/jit16core.pla: 1240: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4E ; BRTRU _B348 + !WORD _B348-* + !BYTE $2C,$A6,$E0 ; CW 57510 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$11 ; SLB [17] +_B348 +_B349 +; libsrc/jit16core.pla: 1241: codeptr->0 = $18 // CLC +; libsrc/jit16core.pla: 1242: codeptr=>1 = $75+(j<<8) // ADC dp,X +; libsrc/jit16core.pla: 1243: codeptr->3 = $18 // CLC +; libsrc/jit16core.pla: 1244: codeptr=>4 = $75+(j<<8) // ADC dp,X +; libsrc/jit16core.pla: 1245: codeptr = codeptr + 6 +; libsrc/jit16core.pla: 1246: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1247: break + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$75 ; CB 117 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$75 ; CB 117 + !BYTE $64,$0F ; LLB [15] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1248: is $BC // IDXAB +_B350 +; libsrc/jit16core.pla: 1249: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 1250: i = i + 2 +; libsrc/jit16core.pla: 1251: //puts("IDXAB $"); puth(*(bytecode+i)) +; libsrc/jit16core.pla: 1252: if not A_IS_TOS +; libsrc/jit16core.pla: 1253: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B351 + !WORD _B351-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1254: fin + !BYTE $76,$02 ; SLW [2] +_B351 +_B352 +; libsrc/jit16core.pla: 1255: if is_hwaddr(dest) +; libsrc/jit16core.pla: 1256: // +; libsrc/jit16core.pla: 1257: // Ensure only byte sized accesses to H/W addresses +; libsrc/jit16core.pla: 1258: // +; libsrc/jit16core.pla: 1259: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1260: codeptr=>2 = $20E2 // SEP #$20 -> 8 BIT ACCUM/MEM +; libsrc/jit16core.pla: 1261: codeptr->4 = $AD // LDA abs +; libsrc/jit16core.pla: 1262: codeptr=>5 = dest +; libsrc/jit16core.pla: 1263: codeptr=>7 = $20C2 // REP #$20 -> 16 BIT ACCUM/MEM +; libsrc/jit16core.pla: 1264: codeptr->9 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1265: codeptr=>10 = $00FF +; libsrc/jit16core.pla: 1266: codeptr->12 = $0A // ASL +; libsrc/jit16core.pla: 1267: codeptr=>13 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1268: codeptr = codeptr + 15 +; libsrc/jit16core.pla: 1269: else + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C001 +_F014 !WORD _C001 + !BYTE $4C ; BRFLS _B353 + !WORD _B353-* + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$E2,$20 ; CW 8418 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$C2,$20 ; CW 8386 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B354 + !WORD _B354-* +_B353 +; libsrc/jit16core.pla: 1270: codeptr=>0 = tmp8+$85 // STA TMP +; libsrc/jit16core.pla: 1271: codeptr->2 = $AD // LDA abs +; libsrc/jit16core.pla: 1272: codeptr=>3 = dest +; libsrc/jit16core.pla: 1273: codeptr->5 = $29 // AND #$00FF +; libsrc/jit16core.pla: 1274: codeptr=>6 = $00FF +; libsrc/jit16core.pla: 1275: codeptr->8 = $0A // ASL +; libsrc/jit16core.pla: 1276: codeptr=>9 = tmp8+$65 // ADC TMP +; libsrc/jit16core.pla: 1277: codeptr = codeptr + 11 +; libsrc/jit16core.pla: 1278: fin + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $2C,$65,$E7 ; CW 59237 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] +_B354 +; libsrc/jit16core.pla: 1279: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1280: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1281: is $BE // IDXAW +_B355 +; libsrc/jit16core.pla: 1282: dest = *(bytecode+i+1) +; libsrc/jit16core.pla: 1283: i = i + 2 +; libsrc/jit16core.pla: 1284: //puts("IDXAW $"); puth(dest) +; libsrc/jit16core.pla: 1285: if not A_IS_TOS +; libsrc/jit16core.pla: 1286: ^codeptr = $68; codeptr++ // PLA + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$10 ; LLB [16] + !BYTE $4E ; BRTRU _B356 + !WORD _B356-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1287: fin + !BYTE $76,$02 ; SLW [2] +_B356 +_B357 +; libsrc/jit16core.pla: 1288: codeptr=>0 = $6D18 // CLC; ADC abs +; libsrc/jit16core.pla: 1289: codeptr=>2 = dest +; libsrc/jit16core.pla: 1290: codeptr=>4 = $6D18 // CLC; ADC abs +; libsrc/jit16core.pla: 1291: codeptr=>6 = dest +; libsrc/jit16core.pla: 1292: codeptr = codeptr + 8 +; libsrc/jit16core.pla: 1293: A_IS_TOS = TRUE // PHA +; libsrc/jit16core.pla: 1294: break + !BYTE $2C,$18,$6D ; CW 27928 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$18,$6D ; CW 27928 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1295: is $FE // NOPed out earlier by SELect +_B358 +; libsrc/jit16core.pla: 1296: break + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; libsrc/jit16core.pla: 1297: otherwise +_B080 + !BYTE $4F ; CASEBLOCK + !WORD $0020 + !WORD _B081-* + !WORD $0022 + !WORD _B084-* + !WORD $0024 + !WORD _B085-* + !WORD $0026 + !WORD _B092-* + !WORD $0028 + !WORD _B096-* + !WORD $002A + !WORD _B103-* + !WORD $002C + !WORD _B093-* + !WORD $002E + !WORD _B109-* + !WORD $0030 + !WORD _B117-* + !WORD $0032 + !WORD _B114-* + !WORD $0034 + !WORD _B120-* + !WORD $0038 + !WORD _B123-* + !WORD $003A + !WORD _B126-* + !WORD $003C + !WORD _B129-* + !WORD $003E + !WORD _B132-* + !WORD $0040 + !WORD _B135-* + !WORD $0042 + !WORD _B136-* + !WORD $0044 + !WORD _B141-* + !WORD $0046 + !WORD _B147-* + !WORD $0048 + !WORD _B148-* + !WORD $004A + !WORD _B142-* + !WORD $004C + !WORD _B153-* + !WORD $004E + !WORD _B154-* + !WORD $0050 + !WORD _B161-* + !WORD $0052 + !WORD _B166-* + !WORD $0054 + !WORD _B178-* + !WORD $0056 + !WORD _B179-* + !WORD $005A + !WORD _B180-* + !WORD $005C + !WORD _B181-* + !WORD $005E + !WORD _B104-* + !WORD $0060 + !WORD _B190-* + !WORD $0062 + !WORD _B193-* + !WORD $0064 + !WORD _B196-* + !WORD $0066 + !WORD _B201-* + !WORD $0068 + !WORD _B206-* + !WORD $006A + !WORD _B211-* + !WORD $006C + !WORD _B214-* + !WORD $006E + !WORD _B222-* + !WORD $0070 + !WORD _B230-* + !WORD $0072 + !WORD _B233-* + !WORD $0074 + !WORD _B215-* + !WORD $0076 + !WORD _B223-* + !WORD $0078 + !WORD _B236-* + !WORD $007A + !WORD _B242-* + !WORD $007C + !WORD _B237-* + !WORD $007E + !WORD _B243-* + !WORD $0080 + !WORD _B248-* + !WORD $0082 + !WORD _B251-* + !WORD $0084 + !WORD _B254-* + !WORD $0086 + !WORD _B257-* + !WORD $0088 + !WORD _B258-* + !WORD $008A + !WORD _B259-* + !WORD $008C + !WORD _B264-* + !WORD $008E + !WORD _B267-* + !WORD $0090 + !WORD _B270-* + !WORD $0092 + !WORD _B273-* + !WORD $0094 + !WORD _B276-* + !WORD $0096 + !WORD _B279-* + !WORD $0098 + !WORD _B282-* + !WORD $009A + !WORD _B260-* + !WORD $009C + !WORD _B261-* + !WORD $009E + !WORD _B285-* + !WORD $00A0 + !WORD _B288-* + !WORD $00A2 + !WORD _B293-* + !WORD $00A4 + !WORD _B298-* + !WORD $00A6 + !WORD _B299-* + !WORD $00A8 + !WORD _B306-* + !WORD $00AA + !WORD _B307-* + !WORD $00AC + !WORD _B314-* + !WORD $00AE + !WORD _B315-* + !WORD $00B0 + !WORD _B322-* + !WORD $00B2 + !WORD _B327-* + !WORD $00B4 + !WORD _B332-* + !WORD $00B6 + !WORD _B337-* + !WORD $00B8 + !WORD _B340-* + !WORD $00BA + !WORD _B345-* + !WORD $00BC + !WORD _B350-* + !WORD $00BE + !WORD _B355-* + !WORD $00FE + !WORD _B358-* +; libsrc/jit16core.pla: 1298: //puts("???: $"); puth(^(bytecode+i)); putln +; libsrc/jit16core.pla: 1299: wend +_B079 +; libsrc/jit16core.pla: 1300: fin +_B076 +; libsrc/jit16core.pla: 1301: //putln +; libsrc/jit16core.pla: 1302: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jit16core.pla: 1303: if i >= defptr->bytecodesize +; libsrc/jit16core.pla: 1304: // +; libsrc/jit16core.pla: 1305: // Done compiling. Update DEF entry with JMP to compiled code +; libsrc/jit16core.pla: 1306: // +; libsrc/jit16core.pla: 1307: defptr->interpjsr = $4C // JMP +; libsrc/jit16core.pla: 1308: defptr=>interpaddr = *jitcodeptr +; libsrc/jit16core.pla: 1309: *jitcodeptr = codeptr +; libsrc/jit16core.pla: 1310: //puts("Done compiling: $"); puth(defptr=>interpaddr) +; libsrc/jit16core.pla: 1311: //puts("->$"); puth(*jitcodeptr); putln +; libsrc/jit16core.pla: 1312: //getc +; libsrc/jit16core.pla: 1313: return + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B359 + !WORD _B359-* + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $6A,$E4,$03 ; LAW 996 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$E4,$03 ; SAW 996 + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/jit16core.pla: 1314: fin +_B359 +_B360 +; libsrc/jit16core.pla: 1315: loop +_B065 + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$E0,$BE ; CW 48864 + !BYTE $54 ; CALL _X027 +_F015 !WORD 0 + !BYTE $4E ; BRTRU _B063 + !WORD _B063-* +_B064 +; libsrc/jit16core.pla: 1316: // +; libsrc/jit16core.pla: 1317: // If we got here we ran out of code buffer space. +; libsrc/jit16core.pla: 1318: // +; libsrc/jit16core.pla: 1319: //puts("Ran out of code buffer\n") +; libsrc/jit16core.pla: 1320: //getc +; libsrc/jit16core.pla: 1321: end + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/apple/jit16.pla: 0055: +; libsrc/apple/jit16.pla: 0056: // +; libsrc/apple/jit16.pla: 0057: // Install JIT compiler +; libsrc/apple/jit16.pla: 0058: // +; libsrc/apple/jit16.pla: 0059: if *jitcomp +_INIT +; libsrc/apple/jit16.pla: 0060: return 0 + !BYTE $6A,$E2,$03 ; LAW 994 + !BYTE $4C ; BRFLS _B361 + !WORD _B361-* + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/jit16.pla: 0061: fin +_B361 +_B362 +; libsrc/apple/jit16.pla: 0062: *jitcomp = @compiler +; libsrc/apple/jit16.pla: 0063: cmdsys.jitcount = 32 +; libsrc/apple/jit16.pla: 0064: cmdsys.jitsize = 96 +; libsrc/apple/jit16.pla: 0065: puts("16-bit VM/JITC enabled\n") + !BYTE $26 ; LA _C002+0 +_F016 !WORD _C002+0 + !BYTE $7A,$E2,$03 ; SAW 994 + !BYTE $2A,$20 ; CB 32 + !BYTE $78 ; SAB _X000+17 +_F017 !WORD 0+17 + !BYTE $2A,$60 ; CB 96 + !BYTE $78 ; SAB _X000+18 +_F018 !WORD 0+18 + !BYTE $2E ; CS + !BYTE $17 + !BYTE $31,$36,$2D,$62,$69,$74,$20,$56 + !BYTE $4D,$2F,$4A,$49,$54,$43,$20,$65 + !BYTE $6E,$61,$62,$6C,$65,$64,$0D + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 +; libsrc/apple/jit16.pla: 0066: return modkeep + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; libsrc/apple/jit16.pla: 0067: done +_SYSFLAGS = 0 +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ISULE + !BYTE $C9,$D3,$D5,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 27 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/joybuzz.a b/src/libsrc/apple/joybuzz.a new file mode 100644 index 0000000..d4b7313 --- /dev/null +++ b/src/libsrc/apple/joybuzz.a @@ -0,0 +1,143 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/joybuzz.pla: 0001: asm asmdefs + !BYTE $00 ; END OF MODULE DEPENDENCIES +_A000 ; asmdefs() +; libsrc/apple/joybuzz.pla: 0002: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/joybuzz.pla: 0003: SPEAKER = $C030 +SPEAKER = $C030 +; libsrc/apple/joybuzz.pla: 0004: GCSTRB = $C070 +GCSTRB = $C070 +; libsrc/apple/joybuzz.pla: 0005: GC0 = $C064 +GC0 = $C064 +; libsrc/apple/joybuzz.pla: 0006: GC1 = $C065 +GC1 = $C065 +; libsrc/apple/joybuzz.pla: 0007: GCPB1 = $C061 +GCPB1 = $C061 +; libsrc/apple/joybuzz.pla: 0008: GCPB2 = $C062 +GCPB2 = $C062 +; libsrc/apple/joybuzz.pla: 0009: GCMAX = 79 ; MAX VALUE FOR GAME CONTROLLER +GCMAX = 79 ; MAX VALUE FOR GAME CONTROLLER +; libsrc/apple/joybuzz.pla: 0010: end +; libsrc/apple/joybuzz.pla: 0011: // +; libsrc/apple/joybuzz.pla: 0012: // Read both game controllers in parallel +; libsrc/apple/joybuzz.pla: 0013: // +; libsrc/apple/joybuzz.pla: 0014: export asm joypos(buzz)#4 +_A001 ; joypos() +; libsrc/apple/joybuzz.pla: 0015: LDY ESTKL,X ; BUZZ TONE + LDY ESTKL,X ; BUZZ TONE +; libsrc/apple/joybuzz.pla: 0016: STY TMPH + STY TMPH +; libsrc/apple/joybuzz.pla: 0017: DEX + DEX +; libsrc/apple/joybuzz.pla: 0018: DEX + DEX +; libsrc/apple/joybuzz.pla: 0019: DEX + DEX +; libsrc/apple/joybuzz.pla: 0020: LDA #$00 + LDA #$00 +; libsrc/apple/joybuzz.pla: 0021: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/joybuzz.pla: 0022: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/apple/joybuzz.pla: 0023: STA ESTKL+3,X + STA ESTKL+3,X +; libsrc/apple/joybuzz.pla: 0024: STA ESTKH+3,X + STA ESTKH+3,X +; libsrc/apple/joybuzz.pla: 0025: LDA #GCMAX + LDA #GCMAX +; libsrc/apple/joybuzz.pla: 0026: SEC + SEC +; libsrc/apple/joybuzz.pla: 0027: BIT GCSTRB + BIT GCSTRB +; libsrc/apple/joybuzz.pla: 0028: BUZZ DEY +BUZZ DEY +; libsrc/apple/joybuzz.pla: 0029: BNE BUZZDLY + BNE BUZZDLY +; libsrc/apple/joybuzz.pla: 0030: BIT SPEAKER + BIT SPEAKER +; libsrc/apple/joybuzz.pla: 0031: LDY TMPH ; BUZZ TONE + LDY TMPH ; BUZZ TONE +; libsrc/apple/joybuzz.pla: 0032: GC0READ BIT GC0 +GC0READ BIT GC0 +; libsrc/apple/joybuzz.pla: 0033: BPL GC0DLY + BPL GC0DLY +; libsrc/apple/joybuzz.pla: 0034: INC ESTKL+3,X + INC ESTKL+3,X +; libsrc/apple/joybuzz.pla: 0035: GC1READ BIT GC1 +GC1READ BIT GC1 +; libsrc/apple/joybuzz.pla: 0036: BPL GC1DLY + BPL GC1DLY +; libsrc/apple/joybuzz.pla: 0037: INC ESTKL+2,X + INC ESTKL+2,X +; libsrc/apple/joybuzz.pla: 0038: JOYLP SBC #$01 +JOYLP SBC #$01 +; libsrc/apple/joybuzz.pla: 0039: BNE BUZZ + BNE BUZZ +; libsrc/apple/joybuzz.pla: 0040: TAY ; LDY #$00 + TAY ; LDY #$00 +; libsrc/apple/joybuzz.pla: 0041: BIT GCPB1 ; READ GC BUTTONS + BIT GCPB1 ; READ GC BUTTONS +; libsrc/apple/joybuzz.pla: 0042: BPL + + BPL + +; libsrc/apple/joybuzz.pla: 0043: DEY + DEY +; libsrc/apple/joybuzz.pla: 0044: + STY ESTKL+1,X ++ STY ESTKL+1,X +; libsrc/apple/joybuzz.pla: 0045: STY ESTKH+1,X + STY ESTKH+1,X +; libsrc/apple/joybuzz.pla: 0046: TAY ; LDY #$00 + TAY ; LDY #$00 +; libsrc/apple/joybuzz.pla: 0047: BIT GCPB2 + BIT GCPB2 +; libsrc/apple/joybuzz.pla: 0048: BPL + + BPL + +; libsrc/apple/joybuzz.pla: 0049: DEY + DEY +; libsrc/apple/joybuzz.pla: 0050: + STY ESTKL,X ++ STY ESTKL,X +; libsrc/apple/joybuzz.pla: 0051: STY ESTKH,X + STY ESTKH,X +; libsrc/apple/joybuzz.pla: 0052: RTS + RTS +; libsrc/apple/joybuzz.pla: 0053: GC0DLY NOP ; TIMING +GC0DLY NOP ; TIMING +; libsrc/apple/joybuzz.pla: 0054: BPL GC1READ + BPL GC1READ +; libsrc/apple/joybuzz.pla: 0055: GC1DLY NOP ; TIMING +GC1DLY NOP ; TIMING +; libsrc/apple/joybuzz.pla: 0056: BPL JOYLP + BPL JOYLP +; libsrc/apple/joybuzz.pla: 0057: BUZZDLY BNE + ; TIMING +BUZZDLY BNE + ; TIMING +; libsrc/apple/joybuzz.pla: 0058: + BNE GC0READ ++ BNE GC0READ +; libsrc/apple/joybuzz.pla: 0059: end +; libsrc/apple/joybuzz.pla: 0060: done + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: JOYPOS + !BYTE $CA,$CF,$D9,$D0,$CF,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/matchfiles.a b/src/libsrc/apple/matchfiles.a new file mode 100644 index 0000000..6e03539 --- /dev/null +++ b/src/libsrc/apple/matchfiles.a @@ -0,0 +1,945 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/matchfiles.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/matchfiles.pla: 0001: +; libsrc/apple/matchfiles.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; libsrc/apple/matchfiles.pla: 0002: +; libsrc/apple/matchfiles.pla: 0003: +; libsrc/apple/matchfiles.pla: 0004: var dirbuf + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D030 !FILL 2 ; dirbuf +; libsrc/apple/matchfiles.pla: 0005: // +; libsrc/apple/matchfiles.pla: 0006: // Match next section of source and expression +; libsrc/apple/matchfiles.pla: 0007: // +; libsrc/apple/matchfiles.pla: 0008: def matchNext(src, srcofst, exp, expofst) +_SUBSEG ; BYTECODE STARTS + ; src -> [0] + ; srcofst -> [2] + ; exp -> [4] + ; expofst -> [6] +_C000 ; matchNext() +; libsrc/apple/matchfiles.pla: 0009: if ^exp >= expofst + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/matchfiles.pla: 0010: when exp->[expofst] + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B004-* +; libsrc/apple/matchfiles.pla: 0011: is '*' // Multi-char wildcard +_B005 +; libsrc/apple/matchfiles.pla: 0012: if matchNext(src, srcofst, exp, expofst + 1) // Match zero wild chars +; libsrc/apple/matchfiles.pla: 0013: return TRUE + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F000 !WORD _C000 + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0014: elsif ^src >= srcofst and matchNext(src, srcofst + 1, exp, expofst) // Match more wild chars + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 +; libsrc/apple/matchfiles.pla: 0015: return TRUE + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B008 + !WORD _B008-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C000 +_F001 !WORD _C000 +_B008 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0016: fin +_B009 +_B007 +; libsrc/apple/matchfiles.pla: 0017: is '?' // Single char wildcard +_B010 +; libsrc/apple/matchfiles.pla: 0018: if ^src >= srcofst +; libsrc/apple/matchfiles.pla: 0019: return matchNext(src, srcofst + 1, exp, expofst + 1) + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F002 !WORD _C000 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0020: fin +_B011 +_B012 +; libsrc/apple/matchfiles.pla: 0021: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0022: otherwise // verbatim match + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B004 + !BYTE $02 ; CASEBLOCK + !WORD $002A + !WORD _B005-* + !WORD $003F + !WORD _B010-* +_B013 +; libsrc/apple/matchfiles.pla: 0023: if ^src >= srcofst and src->[srcofst] == exp->[expofst] +; libsrc/apple/matchfiles.pla: 0024: return matchNext(src, srcofst + 1, exp, expofst + 1) + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B014 + !WORD _B014-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $40 ; ISEQ +_B014 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0025: fin +_B015 +_B016 +; libsrc/apple/matchfiles.pla: 0026: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0027: wend +_B003 +; libsrc/apple/matchfiles.pla: 0028: fin +_B001 +_B002 +; libsrc/apple/matchfiles.pla: 0029: return ^src < srcofst and ^exp < expofst // Return TRUE if at the end of both + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B017 + !WORD _B017-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $46 ; ISLT +_B017 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/matchfiles.pla: 0030: end +; libsrc/apple/matchfiles.pla: 0031: // +; libsrc/apple/matchfiles.pla: 0032: // Start off matching process +; libsrc/apple/matchfiles.pla: 0033: // +; libsrc/apple/matchfiles.pla: 0034: export def matchName(src, exp)#1 + ; src -> [0] + ; exp -> [2] +_C001 ; matchName() +; libsrc/apple/matchfiles.pla: 0035: // +; libsrc/apple/matchfiles.pla: 0036: // Match on empty wildcard name (same as '*') +; libsrc/apple/matchfiles.pla: 0037: // +; libsrc/apple/matchfiles.pla: 0038: if not ^exp + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/matchfiles.pla: 0039: return TRUE + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B018 + !WORD _B018-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/matchfiles.pla: 0040: fin +_B018 +_B019 +; libsrc/apple/matchfiles.pla: 0041: return matchNext(src, 1, exp, 1) + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C000 +_F004 !WORD _C000 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/matchfiles.pla: 0042: end +; libsrc/apple/matchfiles.pla: 0043: export def matchList(pathstr, exp)#2 + ; pathstr -> [0] + ; exp -> [2] +_C002 ; matchList() +; libsrc/apple/matchfiles.pla: 0044: byte refnum + ; refnum -> [4] +; libsrc/apple/matchfiles.pla: 0045: char[64] curpath + ; curpath -> [5] +; libsrc/apple/matchfiles.pla: 0046: var firstblk, entrylen, entriesblk, i, entry, entrylist, entryptr, entrycnt + ; firstblk -> [69] + ; entrylen -> [71] + ; entriesblk -> [73] + ; i -> [75] + ; entry -> [77] + ; entrylist -> [79] + ; entryptr -> [81] + ; entrycnt -> [83] +; libsrc/apple/matchfiles.pla: 0047: +; libsrc/apple/matchfiles.pla: 0048: if not dirbuf + !BYTE $58,$55,$02 ; ENTER 85,2 +; libsrc/apple/matchfiles.pla: 0049: dirbuf = heapallocalign(512, 8, 0) +; libsrc/apple/matchfiles.pla: 0050: fin + !BYTE $6A ; LAW _D030+0 +_F005 !WORD _D030+0 + !BYTE $4E ; BRTRU _B020 + !WORD _B020-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X013 +_F006 !WORD 0 + !BYTE $7A ; SAW _D030+0 +_F007 !WORD _D030+0 +_B020 +_B021 +; libsrc/apple/matchfiles.pla: 0051: if not ^pathstr +; libsrc/apple/matchfiles.pla: 0052: fileio:getpfx(@curpath) +; libsrc/apple/matchfiles.pla: 0053: pathstr = @curpath +; libsrc/apple/matchfiles.pla: 0054: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $28,$05 ; LLA [5] + !BYTE $6A ; LAW _X028+0 +_F008 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$05 ; LLA [5] + !BYTE $76,$00 ; SLW [0] +_B022 +_B023 +; libsrc/apple/matchfiles.pla: 0055: if pathstr->[^pathstr] <> '/' // Make sure path ends with a '/' +; libsrc/apple/matchfiles.pla: 0056: ^pathstr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B024 + !WORD _B024-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR +; libsrc/apple/matchfiles.pla: 0057: pathstr->[^pathstr] = '/' +; libsrc/apple/matchfiles.pla: 0058: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $2A,$2F ; CB 47 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B024 +_B025 +; libsrc/apple/matchfiles.pla: 0059: entrylist = 0 +; libsrc/apple/matchfiles.pla: 0060: entrycnt = 0 +; libsrc/apple/matchfiles.pla: 0061: firstblk = 1 +; libsrc/apple/matchfiles.pla: 0062: refnum = fileio:open(pathstr) +; libsrc/apple/matchfiles.pla: 0063: while fileio:read(refnum, dirbuf, 512) == 512 + !BYTE $00 ; CN 0 + !BYTE $76,$4F ; SLW [79] + !BYTE $00 ; CN 0 + !BYTE $76,$53 ; SLW [83] + !BYTE $02 ; CN 1 + !BYTE $76,$45 ; SLW [69] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+14 +_F009 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B026 +; libsrc/apple/matchfiles.pla: 0064: // +; libsrc/apple/matchfiles.pla: 0065: // Skip block pointers +; libsrc/apple/matchfiles.pla: 0066: // +; libsrc/apple/matchfiles.pla: 0067: entry = dirbuf + 4 +; libsrc/apple/matchfiles.pla: 0068: if firstblk +; libsrc/apple/matchfiles.pla: 0069: // +; libsrc/apple/matchfiles.pla: 0070: // Pull out revelant details from the first block +; libsrc/apple/matchfiles.pla: 0071: // +; libsrc/apple/matchfiles.pla: 0072: entrylen = dirbuf->$23 +; libsrc/apple/matchfiles.pla: 0073: entriesblk = dirbuf->$24 - 1 +; libsrc/apple/matchfiles.pla: 0074: entry = entry + entrylen +; libsrc/apple/matchfiles.pla: 0075: fin + !BYTE $6A ; LAW _D030+0 +_F010 !WORD _D030+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$4D ; SLW [77] + !BYTE $66,$45 ; LLW [69] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $6A ; LAW _D030+0 +_F011 !WORD _D030+0 + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $76,$47 ; SLW [71] + !BYTE $6A ; LAW _D030+0 +_F012 !WORD _D030+0 + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $76,$49 ; SLW [73] + !BYTE $66,$4D ; LLW [77] + !BYTE $B2,$47 ; ADDLW [71] + !BYTE $76,$4D ; SLW [77] +_B029 +_B030 +; libsrc/apple/matchfiles.pla: 0076: for i = firstblk to entriesblk + !BYTE $66,$49 ; LLW [73] + !BYTE $66,$45 ; LLW [69] + !BYTE $A0 ; BRGT _B031 + !WORD _B031-* +_B032 + !BYTE $6E,$4B ; DLW [75] +; libsrc/apple/matchfiles.pla: 0077: // +; libsrc/apple/matchfiles.pla: 0078: // Copy directory entry details +; libsrc/apple/matchfiles.pla: 0079: // +; libsrc/apple/matchfiles.pla: 0080: ^entry = ^entry & $0F +; libsrc/apple/matchfiles.pla: 0081: if ^entry +; libsrc/apple/matchfiles.pla: 0082: // +; libsrc/apple/matchfiles.pla: 0083: // Match wildcard filename +; libsrc/apple/matchfiles.pla: 0084: // +; libsrc/apple/matchfiles.pla: 0085: if matchName(entry, exp) +; libsrc/apple/matchfiles.pla: 0086: entryptr = heapalloc(t_fileentry) +; libsrc/apple/matchfiles.pla: 0087: memcpy(entryptr, entry, t_fileentry) +; libsrc/apple/matchfiles.pla: 0088: entrycnt++ + !BYTE $66,$4D ; LLW [77] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$4D ; LLW [77] + !BYTE $70 ; SB + !BYTE $66,$4D ; LLW [77] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $66,$4D ; LLW [77] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F013 !WORD _C001 + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $2A,$27 ; CB 39 + !BYTE $54 ; CALL _X014 +_F014 !WORD 0 + !BYTE $6E,$51 ; DLW [81] + !BYTE $66,$4D ; LLW [77] + !BYTE $2A,$27 ; CB 39 + !BYTE $54 ; CALL _X018 +_F015 !WORD 0 + !BYTE $66,$53 ; LLW [83] + !BYTE $8C ; INCR +; libsrc/apple/matchfiles.pla: 0089: if not entrylist +; libsrc/apple/matchfiles.pla: 0090: entrylist = entryptr +; libsrc/apple/matchfiles.pla: 0091: fin + !BYTE $76,$53 ; SLW [83] + !BYTE $66,$4F ; LLW [79] + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* + !BYTE $66,$51 ; LLW [81] + !BYTE $76,$4F ; SLW [79] +_B038 +_B039 +; libsrc/apple/matchfiles.pla: 0092: fin +_B036 +_B037 +; libsrc/apple/matchfiles.pla: 0093: fin +_B034 +_B035 +; libsrc/apple/matchfiles.pla: 0094: entry = entry + entrylen +; libsrc/apple/matchfiles.pla: 0095: next + !BYTE $66,$4D ; LLW [77] + !BYTE $B2,$47 ; ADDLW [71] + !BYTE $76,$4D ; SLW [77] +_B033 + !BYTE $A4 ; INCBRLE _B032 + !WORD _B032-* +_B031 + !BYTE $76,$4B ; SLW [75] + !BYTE $30 ; DROP +; libsrc/apple/matchfiles.pla: 0096: firstblk = 0 +; libsrc/apple/matchfiles.pla: 0097: loop + !BYTE $00 ; CN 0 + !BYTE $76,$45 ; SLW [69] +_B028 + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _D030+0 +_F016 !WORD _D030+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X028+18 +_F017 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B026 + !WORD _B026-* +_B027 +; libsrc/apple/matchfiles.pla: 0098: fileio:close(refnum) +; libsrc/apple/matchfiles.pla: 0099: return entrylist, entrycnt + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X028+16 +_F018 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$4F ; LLW [79] + !BYTE $66,$53 ; LLW [83] + !BYTE $5A,$55 ; LEAVE 85 +; libsrc/apple/matchfiles.pla: 0100: end +; libsrc/apple/matchfiles.pla: 0101: // +; libsrc/apple/matchfiles.pla: 0102: // Is this a wildcard name? +; libsrc/apple/matchfiles.pla: 0103: // +; libsrc/apple/matchfiles.pla: 0104: export def isWildName(exp)#1 + ; exp -> [0] +_C003 ; isWildName() +; libsrc/apple/matchfiles.pla: 0105: byte i + ; i -> [2] +; libsrc/apple/matchfiles.pla: 0106: +; libsrc/apple/matchfiles.pla: 0107: if ^exp + !BYTE $58,$03,$01 ; ENTER 3,1 +; libsrc/apple/matchfiles.pla: 0108: for i = 1 to ^exp + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B042 + !WORD _B042-* +_B043 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/matchfiles.pla: 0109: if exp->[i] == '*' or exp->[i] == '?' +; libsrc/apple/matchfiles.pla: 0110: return TRUE + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$2A ; CB 42 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B045 + !WORD _B045-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$3F ; CB 63 + !BYTE $40 ; ISEQ +_B045 + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $32 ; DROP2 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/matchfiles.pla: 0111: fin +_B046 +_B047 +; libsrc/apple/matchfiles.pla: 0112: next +_B044 + !BYTE $A4 ; INCBRLE _B043 + !WORD _B043-* +_B042 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/matchfiles.pla: 0113: fin +_B040 +_B041 +; libsrc/apple/matchfiles.pla: 0114: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/matchfiles.pla: 0115: end +; libsrc/apple/matchfiles.pla: 0116: // +; libsrc/apple/matchfiles.pla: 0117: // Utility routine to separate filename from path +; libsrc/apple/matchfiles.pla: 0118: // +; libsrc/apple/matchfiles.pla: 0119: export def fileFromPath(filestr, pathstr)#0 + ; filestr -> [0] + ; pathstr -> [2] +_C004 ; fileFromPath() +; libsrc/apple/matchfiles.pla: 0120: byte i + ; i -> [4] +; libsrc/apple/matchfiles.pla: 0121: +; libsrc/apple/matchfiles.pla: 0122: for i = ^pathstr downto 1 + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $A2 ; BRLT _B048 + !WORD _B048-* +_B049 + !BYTE $6C,$04 ; DLB [4] +; libsrc/apple/matchfiles.pla: 0123: if pathstr->[i] == '/' +; libsrc/apple/matchfiles.pla: 0124: break + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B051 + !WORD _B051-* + !BYTE $50 ; BRNCH _B048 + !WORD _B048-* +; libsrc/apple/matchfiles.pla: 0125: fin +_B051 +_B052 +; libsrc/apple/matchfiles.pla: 0126: next +_B050 + !BYTE $A8 ; DECBRGE _B049 + !WORD _B049-* +_B048 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/matchfiles.pla: 0127: ^filestr = ^pathstr - i +; libsrc/apple/matchfiles.pla: 0128: memcpy(filestr + 1, pathstr + 1 + i, ^filestr) +; libsrc/apple/matchfiles.pla: 0129: end + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $64,$04 ; LLB [4] + !BYTE $84 ; SUB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F019 !WORD 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/matchfiles.pla: 0130: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 6 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: MATCHNAME + !BYTE $CD,$C1,$D4,$C3,$C8,$CE,$C1,$CD,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: MATCHLIST + !BYTE $CD,$C1,$D4,$C3,$C8,$CC,$C9,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: ISWILDNAME + !BYTE $C9,$D3,$D7,$C9,$CC,$C4,$CE,$C1,$CD,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: FILEFROMPATH + !BYTE $C6,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D0,$C1,$D4,$48 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/mouse.a b/src/libsrc/apple/mouse.a new file mode 100644 index 0000000..c218ea5 --- /dev/null +++ b/src/libsrc/apple/mouse.a @@ -0,0 +1,1232 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/mouse.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/mouse.pla: 0001: +; libsrc/apple/mouse.pla: 0002: // +; libsrc/apple/mouse.pla: 0003: // Mouse driver interface +; libsrc/apple/mouse.pla: 0004: // +; libsrc/apple/mouse.pla: 0005: predef chkVbl, chkMouse, readMouse#3, setMouse(mode), clearMouse, posMouse(x, y), clampMouse(xMin, xMax, yMin, yMax), homeMouse, detachMouse + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/apple/mouse.pla: 0006: word = @chkVbl, @chkMouse, @readMouse, @setMouse, @clearMouse, @posMouse, @clampMouse, @homeMouse, @detachMouse +_F000 !WORD _P000 +_F001 !WORD _P001 +_F002 !WORD _P002 +_F003 !WORD _P003 +_F004 !WORD _P004 +_F005 !WORD _P005 +_F006 !WORD _P006 +_F007 !WORD _P007 +_F008 !WORD _P008 +; libsrc/apple/mouse.pla: 0007: word rom +_D037 !FILL 2 ; rom +; libsrc/apple/mouse.pla: 0008: byte params[] +_D038 ; params[] +; libsrc/apple/mouse.pla: 0009: byte slot, index, page +_D039 !FILL 1 ; slot, index, page +_D040 !FILL 1 ; index, page +_D041 !FILL 1 ; page +; libsrc/apple/mouse.pla: 0010: word setMouseFW +_D042 !FILL 2 ; setMouseFW +; libsrc/apple/mouse.pla: 0011: byte vblDiv, vblInt, mouInt, bttnPrev +_D043 !FILL 1 ; vblDiv, vblInt, mouInt, bttnPrev +_D044 !FILL 1 ; vblInt, mouInt, bttnPrev +_D045 !FILL 1 ; mouInt, bttnPrev +_D046 !FILL 1 ; bttnPrev +; libsrc/apple/mouse.pla: 0012: asm equates +_A000 ; equates() +; libsrc/apple/mouse.pla: 0013: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/mouse.pla: 0014: end +; libsrc/apple/mouse.pla: 0015: // +; libsrc/apple/mouse.pla: 0016: // Serve Mouse/VBL IRQ +; libsrc/apple/mouse.pla: 0017: // +; libsrc/apple/mouse.pla: 0018: asm serviceMouse#0 +_A001 ; serviceMouse() +; libsrc/apple/mouse.pla: 0019: VBLINT = $400 ; DUMMY VALUES TO BE FIXED-UP +VBLINT = $400 ; DUMMY VALUES TO BE FIXED-UP +; libsrc/apple/mouse.pla: 0020: MOUINT = $401 +MOUINT = $401 +; libsrc/apple/mouse.pla: 0021: LASTBTTN= $402 +LASTBTTN= $402 +; libsrc/apple/mouse.pla: 0022: CLD + CLD +; libsrc/apple/mouse.pla: 0023: JSR $C400 + JSR $C400 +; libsrc/apple/mouse.pla: 0024: BCC + + BCC + +; libsrc/apple/mouse.pla: 0025: RTS ; NOT MOUSE INT + RTS ; NOT MOUSE INT +; libsrc/apple/mouse.pla: 0026: + LDY $0778+4 ; CHECK MOUSE INT CAUSE ++ LDY $0778+4 ; CHECK MOUSE INT CAUSE +; libsrc/apple/mouse.pla: 0027: TYA ; WAS IT VBL? + TYA ; WAS IT VBL? +; libsrc/apple/mouse.pla: 0028: AND #$08 + AND #$08 +; libsrc/apple/mouse.pla: 0029: BEQ + ; NOPE, MOVE OR BUTTON + BEQ + ; NOPE, MOVE OR BUTTON +; libsrc/apple/mouse.pla: 0030: end +; libsrc/apple/mouse.pla: 0031: asm vblEvent +_A002 ; vblEvent() +; libsrc/apple/mouse.pla: 0032: INC VBLINT ; INC VBL EVENT + INC VBLINT ; INC VBL EVENT +; libsrc/apple/mouse.pla: 0033: + TYA ; MOUSE MOVE OR BUTTON ACTIVE ++ TYA ; MOUSE MOVE OR BUTTON ACTIVE +; libsrc/apple/mouse.pla: 0034: AND #$82 + AND #$82 +; libsrc/apple/mouse.pla: 0035: end +; libsrc/apple/mouse.pla: 0036: asm bttnEvent +_A003 ; bttnEvent() +; libsrc/apple/mouse.pla: 0037: EOR LASTBTTN + EOR LASTBTTN +; libsrc/apple/mouse.pla: 0038: BEQ + + BEQ + +; libsrc/apple/mouse.pla: 0039: end +; libsrc/apple/mouse.pla: 0040: asm mouseEvent +_A004 ; mouseEvent() +; libsrc/apple/mouse.pla: 0041: INC MOUINT ; INC MOUSE EVENT + INC MOUINT ; INC MOUSE EVENT +; libsrc/apple/mouse.pla: 0042: + TYA ++ TYA +; libsrc/apple/mouse.pla: 0043: AND #$80 + AND #$80 +; libsrc/apple/mouse.pla: 0044: end +; libsrc/apple/mouse.pla: 0045: asm updateBttn +_A005 ; updateBttn() +; libsrc/apple/mouse.pla: 0046: STA LASTBTTN + STA LASTBTTN +; libsrc/apple/mouse.pla: 0047: end +; libsrc/apple/mouse.pla: 0048: asm updateMouse +_A006 ; updateMouse() +; libsrc/apple/mouse.pla: 0049: LDX #$C4 + LDX #$C4 +; libsrc/apple/mouse.pla: 0050: LDY #$40 + LDY #$40 +; libsrc/apple/mouse.pla: 0051: JMP $C400 ; IIGS REQUIRES THIS HAPPEN IN IRQ + JMP $C400 ; IIGS REQUIRES THIS HAPPEN IN IRQ +; libsrc/apple/mouse.pla: 0052: end +; libsrc/apple/mouse.pla: 0053: asm serviceCYA#0 +_A007 ; serviceCYA() +; libsrc/apple/mouse.pla: 0054: CLC + CLC +; libsrc/apple/mouse.pla: 0055: RTS + RTS +; libsrc/apple/mouse.pla: 0056: end +; libsrc/apple/mouse.pla: 0057: // +; libsrc/apple/mouse.pla: 0058: // Check for VBL (timer) and Mouse events (atomic read and reset) +; libsrc/apple/mouse.pla: 0059: // +; libsrc/apple/mouse.pla: 0060: asm chkEvt(addr) +_A008 ; chkEvt() +; libsrc/apple/mouse.pla: 0061: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/mouse.pla: 0062: STA ESTKH-1,X + STA ESTKH-1,X +; libsrc/apple/mouse.pla: 0063: SEI + SEI +; libsrc/apple/mouse.pla: 0064: LDA (ESTKH-1,X) ; READ INT COUNT + LDA (ESTKH-1,X) ; READ INT COUNT +; libsrc/apple/mouse.pla: 0065: TAY + TAY +; libsrc/apple/mouse.pla: 0066: LDA #$00 + LDA #$00 +; libsrc/apple/mouse.pla: 0067: STA (ESTKH-1,X) ; CLEAR INT COUNT + STA (ESTKH-1,X) ; CLEAR INT COUNT +; libsrc/apple/mouse.pla: 0068: CLI + CLI +; libsrc/apple/mouse.pla: 0069: STY ESTKL,X ; RETURN INT COUNT + STY ESTKL,X ; RETURN INT COUNT +; libsrc/apple/mouse.pla: 0070: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/mouse.pla: 0071: RTS + RTS +; libsrc/apple/mouse.pla: 0072: end +; libsrc/apple/mouse.pla: 0073: asm readMouse#3 +_P002 ; readMouse#3() +_A009 ; readMouse() +; libsrc/apple/mouse.pla: 0074: LDY #$04 + LDY #$04 +; libsrc/apple/mouse.pla: 0075: DEX + DEX +; libsrc/apple/mouse.pla: 0076: DEX + DEX +; libsrc/apple/mouse.pla: 0077: DEX + DEX +; libsrc/apple/mouse.pla: 0078: PHP + PHP +; libsrc/apple/mouse.pla: 0079: SEI + SEI +; libsrc/apple/mouse.pla: 0080: LDA $0478,Y + LDA $0478,Y +; libsrc/apple/mouse.pla: 0081: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/apple/mouse.pla: 0082: LDA $0578,Y + LDA $0578,Y +; libsrc/apple/mouse.pla: 0083: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/apple/mouse.pla: 0084: LDA $04F8,Y + LDA $04F8,Y +; libsrc/apple/mouse.pla: 0085: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/apple/mouse.pla: 0086: LDA $05F8,Y + LDA $05F8,Y +; libsrc/apple/mouse.pla: 0087: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/apple/mouse.pla: 0088: LDA $0778,Y + LDA $0778,Y +; libsrc/apple/mouse.pla: 0089: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/mouse.pla: 0090: LDA #$00 + LDA #$00 +; libsrc/apple/mouse.pla: 0091: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/mouse.pla: 0092: PLP + PLP +; libsrc/apple/mouse.pla: 0093: RTS + RTS +; libsrc/apple/mouse.pla: 0094: end +; libsrc/apple/mouse.pla: 0095: // +; libsrc/apple/mouse.pla: 0096: // Convert VBL interrupts into millisecond timer increment +; libsrc/apple/mouse.pla: 0097: // +; libsrc/apple/mouse.pla: 0098: def chkVblTimer +_SUBSEG ; BYTECODE STARTS +_C000 ; chkVblTimer() +; libsrc/apple/mouse.pla: 0099: byte count + ; count -> [0] +; libsrc/apple/mouse.pla: 0100: word msec + ; msec -> [1] +; libsrc/apple/mouse.pla: 0101: +; libsrc/apple/mouse.pla: 0102: msec = 0 + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/apple/mouse.pla: 0103: count = chkEvt(@vblInt) +; libsrc/apple/mouse.pla: 0104: while count + !BYTE $00 ; CN 0 + !BYTE $76,$01 ; SLW [1] + !BYTE $26 ; LA _D044+0 +_F009 !WORD _D044+0 + !BYTE $54 ; CALL _A008 +_F010 !WORD _A008 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; libsrc/apple/mouse.pla: 0105: if vblDiv & 2 +; libsrc/apple/mouse.pla: 0106: msec = msec + 16 +; libsrc/apple/mouse.pla: 0107: vblDiv = 0 +; libsrc/apple/mouse.pla: 0108: else + !BYTE $68 ; LAB _D043+0 +_F011 !WORD _D043+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$01 ; SLW [1] + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D043+0 +_F012 !WORD _D043+0 + !BYTE $50 ; BRNCH _B005 + !WORD _B005-* +_B004 +; libsrc/apple/mouse.pla: 0109: msec = msec + 17 +; libsrc/apple/mouse.pla: 0110: vblDiv++ + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$01 ; SLW [1] + !BYTE $68 ; LAB _D043+0 +_F013 !WORD _D043+0 + !BYTE $8C ; INCR +; libsrc/apple/mouse.pla: 0111: fin + !BYTE $78 ; SAB _D043+0 +_F014 !WORD _D043+0 +_B005 +; libsrc/apple/mouse.pla: 0112: count-- + !BYTE $64,$00 ; LLB [0] + !BYTE $8E ; DECR +; libsrc/apple/mouse.pla: 0113: loop + !BYTE $74,$00 ; SLB [0] +_B003 + !BYTE $64,$00 ; LLB [0] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/apple/mouse.pla: 0114: return msec + !BYTE $66,$01 ; LLW [1] + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/mouse.pla: 0115: end +; libsrc/apple/mouse.pla: 0116: // +; libsrc/apple/mouse.pla: 0117: // Check for VBL/Mouse interrupt events +; libsrc/apple/mouse.pla: 0118: // +; libsrc/apple/mouse.pla: 0119: def chkVbl +_P000 ; chkVbl() +_C001 ; chkVbl() +; libsrc/apple/mouse.pla: 0120: return chkEvt(@vblInt) + !BYTE $26 ; LA _D044+0 +_F015 !WORD _D044+0 + !BYTE $54 ; CALL _A008 +_F016 !WORD _A008 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0121: end +; libsrc/apple/mouse.pla: 0122: def chkMouse +_P001 ; chkMouse() +_C002 ; chkMouse() +; libsrc/apple/mouse.pla: 0123: return chkEvt(@mouInt) + !BYTE $26 ; LA _D045+0 +_F017 !WORD _D045+0 + !BYTE $54 ; CALL _A008 +_F018 !WORD _A008 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0124: end +; libsrc/apple/mouse.pla: 0125: // +; libsrc/apple/mouse.pla: 0126: // Mouse routines +; libsrc/apple/mouse.pla: 0127: // +; libsrc/apple/mouse.pla: 0128: def setMouse(mode) + ; mode -> [0] +_P003 ; setMouse(mode)() +_C003 ; setMouse() +; libsrc/apple/mouse.pla: 0129: return call(setMouseFW, mode, slot, page, $04) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $6A ; LAW _D042+0 +_F019 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $68 ; LAB _D039+0 +_F020 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F021 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F022 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/mouse.pla: 0130: end +; libsrc/apple/mouse.pla: 0131: def clearMouse +_P004 ; clearMouse() +_C004 ; clearMouse() +; libsrc/apple/mouse.pla: 0132: return call(rom + rom->$15, $00, slot, page, $04) // clearMouseFW + !BYTE $6A ; LAW _D037+0 +_F023 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$15 ; ADDI 21 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $68 ; LAB _D039+0 +_F024 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F025 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F026 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0133: end +; libsrc/apple/mouse.pla: 0134: def posMouse(x, y) + ; x -> [0] + ; y -> [2] +_P005 ; posMouse(x, y)() +_C005 ; posMouse() +; libsrc/apple/mouse.pla: 0135: // +; libsrc/apple/mouse.pla: 0136: // Fill screen holes +; libsrc/apple/mouse.pla: 0137: // +; libsrc/apple/mouse.pla: 0138: ^($0478 + index) = x + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/mouse.pla: 0139: ^($0578 + index) = x >> 8 +; libsrc/apple/mouse.pla: 0140: ^($04F8 + index) = y +; libsrc/apple/mouse.pla: 0141: ^($05F8 + index) = y >> 8 +; libsrc/apple/mouse.pla: 0142: return call(rom + rom->$16, $00, slot, page, $04) // posMouseFW + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$78,$04 ; CW 1144 + !BYTE $B4 ; ADDAB _D040+0 +_F027 !WORD _D040+0 + !BYTE $70 ; SB + !BYTE $64,$01 ; LLB [1] + !BYTE $2C,$78,$05 ; CW 1400 + !BYTE $B4 ; ADDAB _D040+0 +_F028 !WORD _D040+0 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$F8,$04 ; CW 1272 + !BYTE $B4 ; ADDAB _D040+0 +_F029 !WORD _D040+0 + !BYTE $70 ; SB + !BYTE $64,$03 ; LLB [3] + !BYTE $2C,$F8,$05 ; CW 1528 + !BYTE $B4 ; ADDAB _D040+0 +_F030 !WORD _D040+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D037+0 +_F031 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$16 ; ADDI 22 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $68 ; LAB _D039+0 +_F032 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F033 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F034 !WORD 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/mouse.pla: 0143: end +; libsrc/apple/mouse.pla: 0144: def clampMouse(xMin, xMax, yMin, yMax) + ; xMin -> [0] + ; xMax -> [2] + ; yMin -> [4] + ; yMax -> [6] +_P006 ; clampMouse(xMin, xMax, yMin, yMax)() +_C006 ; clampMouse() +; libsrc/apple/mouse.pla: 0145: ^$0478 = xMin + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/apple/mouse.pla: 0146: ^$0578 = xMin >> 8 +; libsrc/apple/mouse.pla: 0147: ^$04F8 = xMax +; libsrc/apple/mouse.pla: 0148: ^$05F8 = xMax >> 8 +; libsrc/apple/mouse.pla: 0149: call(rom + rom->$17, $00, slot, page, $04) // clampMouseFW +; libsrc/apple/mouse.pla: 0150: ^$0478 = yMin +; libsrc/apple/mouse.pla: 0151: ^$0578 = yMin >> 8 +; libsrc/apple/mouse.pla: 0152: ^$04F8 = yMax +; libsrc/apple/mouse.pla: 0153: ^$05F8 = yMax >> 8 +; libsrc/apple/mouse.pla: 0154: return call(rom + rom->$17, $01, slot, page, $04)) // clampMouseFW + !BYTE $66,$00 ; LLW [0] + !BYTE $78,$78,$04 ; SAB 1144 + !BYTE $64,$01 ; LLB [1] + !BYTE $78,$78,$05 ; SAB 1400 + !BYTE $66,$02 ; LLW [2] + !BYTE $78,$F8,$04 ; SAB 1272 + !BYTE $64,$03 ; LLB [3] + !BYTE $78,$F8,$05 ; SAB 1528 + !BYTE $6A ; LAW _D037+0 +_F035 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$17 ; ADDI 23 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $68 ; LAB _D039+0 +_F036 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F037 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F038 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $78,$78,$04 ; SAB 1144 + !BYTE $64,$05 ; LLB [5] + !BYTE $78,$78,$05 ; SAB 1400 + !BYTE $66,$06 ; LLW [6] + !BYTE $78,$F8,$04 ; SAB 1272 + !BYTE $64,$07 ; LLB [7] + !BYTE $78,$F8,$05 ; SAB 1528 + !BYTE $6A ; LAW _D037+0 +_F039 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$17 ; ADDI 23 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $02 ; CN 1 + !BYTE $68 ; LAB _D039+0 +_F040 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F041 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F042 !WORD 0 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/apple/mouse.pla: 0155: end +; libsrc/apple/mouse.pla: 0156: def homeMouse +_P007 ; homeMouse() +_C007 ; homeMouse() +; libsrc/apple/mouse.pla: 0157: return call(rom + rom->$18, $00, slot, page, $04) // homeMouseFW + !BYTE $6A ; LAW _D037+0 +_F043 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$18 ; ADDI 24 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $68 ; LAB _D039+0 +_F044 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F045 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F046 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0158: end +; libsrc/apple/mouse.pla: 0159: // +; libsrc/apple/mouse.pla: 0160: // Detach mouse from interrupts +; libsrc/apple/mouse.pla: 0161: // +; libsrc/apple/mouse.pla: 0162: def detachMouse +_P008 ; detachMouse() +_C008 ; detachMouse() +; libsrc/apple/mouse.pla: 0163: setMouse(0) +; libsrc/apple/mouse.pla: 0164: params.0 = 1 +; libsrc/apple/mouse.pla: 0165: params.1 = 0 +; libsrc/apple/mouse.pla: 0166: return syscall($41, @params) + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C003 +_F047 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D038+0 +_F048 !WORD _D038+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D038+1 +_F049 !WORD _D038+1 + !BYTE $2A,$41 ; CB 65 + !BYTE $26 ; LA _D038+0 +_F050 !WORD _D038+0 + !BYTE $54 ; CALL _X011 +_F051 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0167: end +; libsrc/apple/mouse.pla: 0168: // +; libsrc/apple/mouse.pla: 0169: // Identify Mouse card/slot and initialize +; libsrc/apple/mouse.pla: 0170: // +; libsrc/apple/mouse.pla: 0171: for rom = $C100 to $C700 step $0100 +_INIT + !BYTE $2C,$00,$C7 ; CW 50944 + !BYTE $2C,$00,$C1 ; CW 49408 +_B007 + !BYTE $7E ; DAW _D037+0 +_F052 !WORD _D037+0 +; libsrc/apple/mouse.pla: 0172: if rom->5 == $38 and rom->7 == $18 and rom->11 == $01 and rom->12 == $20 +; libsrc/apple/mouse.pla: 0173: puts("Found Mouse in slot #"); putc('0' + ((rom >> 8) & $07)); putln + !BYTE $6A ; LAW _D037+0 +_F053 !WORD _D037+0 + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $2A,$38 ; CB 56 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B009 + !WORD _B009-* + !BYTE $6A ; LAW _D037+0 +_F054 !WORD _D037+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $2A,$18 ; CB 24 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B010 + !WORD _B010-* + !BYTE $6A ; LAW _D037+0 +_F055 !WORD _D037+0 + !BYTE $38,$0B ; ADDI 11 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B011 + !WORD _B011-* + !BYTE $6A ; LAW _D037+0 +_F056 !WORD _D037+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $40 ; ISEQ +_B011 +_B010 +_B009 + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2E ; CS + !BYTE $15 + !BYTE $46,$6F,$75,$6E,$64,$20,$4D,$6F + !BYTE $75,$73,$65,$20,$69,$6E,$20,$73 + !BYTE $6C,$6F,$74,$20,$23 + !BYTE $54 ; CALL _X004 +_F057 !WORD 0 +; libsrc/apple/mouse.pla: 0174: // +; libsrc/apple/mouse.pla: 0175: // Hook mouse IRQ handler into ProDOS IRQ chain +; libsrc/apple/mouse.pla: 0176: // +; libsrc/apple/mouse.pla: 0177: params.0 = 2 +; libsrc/apple/mouse.pla: 0178: params.1 = 0 +; libsrc/apple/mouse.pla: 0179: params:2 = @serviceMouse +; libsrc/apple/mouse.pla: 0180: syscall($40, @params) +; libsrc/apple/mouse.pla: 0181: // +; libsrc/apple/mouse.pla: 0182: // Hook CYA IRQ handler into ProDOS IRQ chain +; libsrc/apple/mouse.pla: 0183: // +; libsrc/apple/mouse.pla: 0184: params.0 = 2 +; libsrc/apple/mouse.pla: 0185: params.1 = 3 +; libsrc/apple/mouse.pla: 0186: params:2 = @serviceCYA +; libsrc/apple/mouse.pla: 0187: syscall($40, @params) +; libsrc/apple/mouse.pla: 0188: // +; libsrc/apple/mouse.pla: 0189: // Set values +; libsrc/apple/mouse.pla: 0190: // +; libsrc/apple/mouse.pla: 0191: slot = rom >> 8 +; libsrc/apple/mouse.pla: 0192: index = slot & $07 +; libsrc/apple/mouse.pla: 0193: page = index << 4 +; libsrc/apple/mouse.pla: 0194: setMouseFW = rom + rom->$12 +; libsrc/apple/mouse.pla: 0195: // +; libsrc/apple/mouse.pla: 0196: // Fix-up IRQ routine +; libsrc/apple/mouse.pla: 0197: // +; libsrc/apple/mouse.pla: 0198: serviceMouse:2 = rom + rom->$13 // serveMouseFW +; libsrc/apple/mouse.pla: 0199: serviceMouse:8 = $0778+index +; libsrc/apple/mouse.pla: 0200: vblEvent:1 = @vblInt +; libsrc/apple/mouse.pla: 0201: bttnEvent:1 = @bttnPrev +; libsrc/apple/mouse.pla: 0202: mouseEvent:1 = @mouInt +; libsrc/apple/mouse.pla: 0203: updateBttn:1 = @bttnPrev +; libsrc/apple/mouse.pla: 0204: updateMouse.1 = slot +; libsrc/apple/mouse.pla: 0205: updateMouse.3 = page +; libsrc/apple/mouse.pla: 0206: updateMouse:5 = rom + rom->$14 // readMouseFW +; libsrc/apple/mouse.pla: 0207: readMouse.1 = index +; libsrc/apple/mouse.pla: 0208: call(rom + rom->$19, $00, slot, page, $04) // initMouseFW +; libsrc/apple/mouse.pla: 0209: return modkeep + !BYTE $2A,$30 ; CB 48 + !BYTE $68 ; LAB _D037+1 +_F058 !WORD _D037+1 + !BYTE $3C,$07 ; ANDI 7 + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X002 +_F059 !WORD 0 + !BYTE $54 ; CALL _X003 +_F060 !WORD 0 + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D038+0 +_F061 !WORD _D038+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D038+1 +_F062 !WORD _D038+1 + !BYTE $26 ; LA _A001+0 +_F063 !WORD _A001+0 + !BYTE $7A ; SAW _D038+2 +_F064 !WORD _D038+2 + !BYTE $2A,$40 ; CB 64 + !BYTE $26 ; LA _D038+0 +_F065 !WORD _D038+0 + !BYTE $54 ; CALL _X011 +_F066 !WORD 0 + !BYTE $30 ; DROP + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D038+0 +_F067 !WORD _D038+0 + !BYTE $06 ; CN 3 + !BYTE $78 ; SAB _D038+1 +_F068 !WORD _D038+1 + !BYTE $26 ; LA _A007+0 +_F069 !WORD _A007+0 + !BYTE $7A ; SAW _D038+2 +_F070 !WORD _D038+2 + !BYTE $2A,$40 ; CB 64 + !BYTE $26 ; LA _D038+0 +_F071 !WORD _D038+0 + !BYTE $54 ; CALL _X011 +_F072 !WORD 0 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D037+1 +_F073 !WORD _D037+1 + !BYTE $7C ; DAB _D039+0 +_F074 !WORD _D039+0 + !BYTE $3C,$07 ; ANDI 7 + !BYTE $7C ; DAB _D040+0 +_F075 !WORD _D040+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $78 ; SAB _D041+0 +_F076 !WORD _D041+0 + !BYTE $6A ; LAW _D037+0 +_F077 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$12 ; ADDI 18 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D042+0 +_F078 !WORD _D042+0 + !BYTE $6A ; LAW _D037+0 +_F079 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$13 ; ADDI 19 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A ; SAW _A001+2 +_F080 !WORD _A001+2 + !BYTE $2C,$78,$07 ; CW 1912 + !BYTE $B4 ; ADDAB _D040+0 +_F081 !WORD _D040+0 + !BYTE $7A ; SAW _A001+8 +_F082 !WORD _A001+8 + !BYTE $26 ; LA _D044+0 +_F083 !WORD _D044+0 + !BYTE $7A ; SAW _A002+1 +_F084 !WORD _A002+1 + !BYTE $26 ; LA _D046+0 +_F085 !WORD _D046+0 + !BYTE $7A ; SAW _A003+1 +_F086 !WORD _A003+1 + !BYTE $26 ; LA _D045+0 +_F087 !WORD _D045+0 + !BYTE $7A ; SAW _A004+1 +_F088 !WORD _A004+1 + !BYTE $26 ; LA _D046+0 +_F089 !WORD _D046+0 + !BYTE $7A ; SAW _A005+1 +_F090 !WORD _A005+1 + !BYTE $68 ; LAB _D039+0 +_F091 !WORD _D039+0 + !BYTE $78 ; SAB _A006+1 +_F092 !WORD _A006+1 + !BYTE $68 ; LAB _D041+0 +_F093 !WORD _D041+0 + !BYTE $78 ; SAB _A006+3 +_F094 !WORD _A006+3 + !BYTE $6A ; LAW _D037+0 +_F095 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$14 ; ADDI 20 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A ; SAW _A006+5 +_F096 !WORD _A006+5 + !BYTE $68 ; LAB _D040+0 +_F097 !WORD _D040+0 + !BYTE $78 ; SAB _A009+1 +_F098 !WORD _A009+1 + !BYTE $6A ; LAW _D037+0 +_F099 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $38,$19 ; ADDI 25 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $68 ; LAB _D039+0 +_F100 !WORD _D039+0 + !BYTE $68 ; LAB _D041+0 +_F101 !WORD _D041+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X010 +_F102 !WORD 0 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0210: fin +_B012 +_B013 +; libsrc/apple/mouse.pla: 0211: next +_B008 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $A6 ; ADDBRLE _B007 + !WORD _B007-* +_B006 + !BYTE $7A ; SAW _D037+0 +_F103 !WORD _D037+0 + !BYTE $30 ; DROP +; libsrc/apple/mouse.pla: 0212: // +; libsrc/apple/mouse.pla: 0213: // Not found +; libsrc/apple/mouse.pla: 0214: // +; libsrc/apple/mouse.pla: 0215: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/mouse.pla: 0216: done +_SYSFLAGS = 0 +_DEFCNT = 10 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/portio.a b/src/libsrc/apple/portio.a new file mode 100644 index 0000000..1edbd75 --- /dev/null +++ b/src/libsrc/apple/portio.a @@ -0,0 +1,386 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/portio.pla: 0001: // +; libsrc/apple/portio.pla: 0002: // Game port I/O library based on the wiring library +; libsrc/apple/portio.pla: 0003: // +; libsrc/apple/portio.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/portio.pla: 0004: +; libsrc/apple/portio.pla: 0005: +; libsrc/apple/portio.pla: 0006: const ANN0 = $C058 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; ANN0 = 49240 +; libsrc/apple/portio.pla: 0007: const ANN1 = $C05A + ; ANN1 = 49242 +; libsrc/apple/portio.pla: 0008: const ANN2 = $C05C + ; ANN2 = 49244 +; libsrc/apple/portio.pla: 0009: const ANN3 = $C05E + ; ANN3 = 49246 +; libsrc/apple/portio.pla: 0010: const OFF = 0 + ; OFF = 0 +; libsrc/apple/portio.pla: 0011: const ON = 1 + ; ON = 1 +; libsrc/apple/portio.pla: 0012: const STROBE = $C040 + ; STROBE = 49216 +; libsrc/apple/portio.pla: 0013: const FLAG0 = $C060 + ; FLAG0 = 49248 +; libsrc/apple/portio.pla: 0014: const FLAG1 = $C061 + ; FLAG1 = 49249 +; libsrc/apple/portio.pla: 0015: const FLAG2 = $C062 + ; FLAG2 = 49250 +; libsrc/apple/portio.pla: 0016: const FLAG3 = $C063 + ; FLAG3 = 49251 +; libsrc/apple/portio.pla: 0017: const PREAD = $FB1E + ; PREAD = 64286 +; libsrc/apple/portio.pla: 0018: const WAIT = $FCA8 + ; WAIT = 64680 +; libsrc/apple/portio.pla: 0019: +; libsrc/apple/portio.pla: 0020: export def digitalRead(pin) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; pin -> [0] +_C000 ; digitalRead() +; libsrc/apple/portio.pla: 0021: return FLAG0[pin&3] > 127 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2C,$60,$C0 ; CW 49248 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$7F ; CB 127 + !BYTE $44 ; ISGT + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/portio.pla: 0022: end +; libsrc/apple/portio.pla: 0023: +; libsrc/apple/portio.pla: 0024: export def portRead +_C001 ; portRead() +; libsrc/apple/portio.pla: 0025: return (^FLAG0>>7)&1|(^FLAG1>>6)&2|(^FLAG2>>5)&4|(^FLAG3>>4)&8 + !BYTE $68,$60,$C0 ; LAB 49248 + !BYTE $0E ; CN 7 + !BYTE $9C ; SHR + !BYTE $3C,$01 ; ANDI 1 + !BYTE $68,$61,$C0 ; LAB 49249 + !BYTE $0C ; CN 6 + !BYTE $9C ; SHR + !BYTE $3C,$02 ; ANDI 2 + !BYTE $68,$62,$C0 ; LAB 49250 + !BYTE $0A ; CN 5 + !BYTE $9C ; SHR + !BYTE $3C,$04 ; ANDI 4 + !BYTE $68,$63,$C0 ; LAB 49251 + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$08 ; ANDI 8 + !BYTE $96 ; OR + !BYTE $96 ; OR + !BYTE $96 ; OR + !BYTE $5C ; RET +; libsrc/apple/portio.pla: 0026: end +; libsrc/apple/portio.pla: 0027: +; libsrc/apple/portio.pla: 0028: export def digitalWrite(pin, val)#0 + ; pin -> [0] + ; val -> [2] +_C002 ; digitalWrite() +; libsrc/apple/portio.pla: 0029: ANN0[((pin&3)<<1)+(val&1)] + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/portio.pla: 0030: end + !BYTE $2C,$58,$C0 ; CW 49240 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/portio.pla: 0031: +; libsrc/apple/portio.pla: 0032: export def portWrite(val)#0 + ; val -> [0] +_C003 ; portWrite() +; libsrc/apple/portio.pla: 0033: ANN0[val&1] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/portio.pla: 0034: ANN1[(val>>1)&1] +; libsrc/apple/portio.pla: 0035: ANN2[(val>>2)&1] +; libsrc/apple/portio.pla: 0036: ANN3[(val>>3)&1] +; libsrc/apple/portio.pla: 0037: end + !BYTE $2C,$58,$C0 ; CW 49240 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $2C,$5A,$C0 ; CW 49242 + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $3C,$01 ; ANDI 1 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $2C,$5C,$C0 ; CW 49244 + !BYTE $66,$00 ; LLW [0] + !BYTE $04 ; CN 2 + !BYTE $9C ; SHR + !BYTE $3C,$01 ; ANDI 1 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $2C,$5E,$C0 ; CW 49246 + !BYTE $66,$00 ; LLW [0] + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $3C,$01 ; ANDI 1 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/portio.pla: 0038: +; libsrc/apple/portio.pla: 0039: export def analogRead(pin) + ; pin -> [0] +_C004 ; analogRead() +; libsrc/apple/portio.pla: 0040: return call(PREAD,0,pin&3,0,0).2 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2C,$1E,$FB ; CW 64286 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F000 !WORD 0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/portio.pla: 0041: end +; libsrc/apple/portio.pla: 0042: +; libsrc/apple/portio.pla: 0043: export def delay(time)#0 + ; time -> [0] +_C005 ; delay() +; libsrc/apple/portio.pla: 0044: call(WAIT,time,0,0,0) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/portio.pla: 0045: end + !BYTE $2C,$A8,$FC ; CW 64680 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F001 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/portio.pla: 0046: +; libsrc/apple/portio.pla: 0047: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: DIGITALREAD + !BYTE $C4,$C9,$C7,$C9,$D4,$C1,$CC,$D2,$C5,$C1,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: PORTREAD + !BYTE $D0,$CF,$D2,$D4,$D2,$C5,$C1,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: DIGITALWRITE + !BYTE $C4,$C9,$C7,$C9,$D4,$C1,$CC,$D7,$D2,$C9,$D4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: PORTWRITE + !BYTE $D0,$CF,$D2,$D4,$D7,$D2,$C9,$D4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: ANALOGREAD + !BYTE $C1,$CE,$C1,$CC,$CF,$C7,$D2,$C5,$C1,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: DELAY + !BYTE $C4,$C5,$CC,$C1,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/sdfat.a b/src/libsrc/apple/sdfat.a new file mode 100644 index 0000000..6503fd8 --- /dev/null +++ b/src/libsrc/apple/sdfat.a @@ -0,0 +1,951 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/sdfat.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/sdfat.pla: 0001: +; libsrc/apple/sdfat.pla: 0002: include "inc/spiport.plh" +; inc/spiport.plh: 0001: import spiport + ; DCI STRING: SPIPORT + !BYTE $D3,$D0,$C9,$D0,$CF,$D2,$54 + ; SPIPORT -> X028 +; inc/spiport.plh: 0002: // +; inc/spiport.plh: 0003: // Wiring constants for Arduino +; inc/spiport.plh: 0004: // +; inc/spiport.plh: 0005: const PINHIGH = 1 + ; PINHIGH = 1 +; inc/spiport.plh: 0006: const PINLOW = 0 + ; PINLOW = 0 +; inc/spiport.plh: 0007: const PINOUTPUT = 1 + ; PINOUTPUT = 1 +; inc/spiport.plh: 0008: const PININPUT = 0 + ; PININPUT = 0 +; inc/spiport.plh: 0009: const PINPULLUP = 2 + ; PINPULLUP = 2 +; inc/spiport.plh: 0010: // +; inc/spiport.plh: 0011: // SPI commands to Wiring functions on Arduino +; inc/spiport.plh: 0012: // +; inc/spiport.plh: 0013: const CMDPINMODE = 3 + ; CMDPINMODE = 3 +; inc/spiport.plh: 0014: const CMDDIGREAD = 4 + ; CMDDIGREAD = 4 +; inc/spiport.plh: 0015: const CMDDIGWRITE = 5 + ; CMDDIGWRITE = 5 +; inc/spiport.plh: 0016: const CMDANAREAD = 6 + ; CMDANAREAD = 6 +; inc/spiport.plh: 0017: const CMDANAWRITE = 7 + ; CMDANAWRITE = 7 +; inc/spiport.plh: 0018: // +; inc/spiport.plh: 0019: // SPI commands to serial functions on Arduino +; inc/spiport.plh: 0020: // +; inc/spiport.plh: 0021: const CMDSERMODE = 8 + ; CMDSERMODE = 8 +; inc/spiport.plh: 0022: const CMDSERAVAIL = 9 + ; CMDSERAVAIL = 9 +; inc/spiport.plh: 0023: const CMDSERREAD = 10 + ; CMDSERREAD = 10 +; inc/spiport.plh: 0024: const CMDSERWRITE = 11 + ; CMDSERWRITE = 11 +; inc/spiport.plh: 0025: predef spiXferByte(outbyte), spiSend(data), spiRecv, spiWriteBuf(buf, len), spiReadBuf(buf, len) + ; SPIXFERBYTE -> X029 + ; SPISEND -> X030 + ; SPIRECV -> X031 + ; SPIWRITEBUF -> X032 + ; SPIREADBUF -> X033 +; inc/spiport.plh: 0026: predef spiDelay(time), spiReady + ; SPIDELAY -> X034 + ; SPIREADY -> X035 +; inc/spiport.plh: 0027: end +; libsrc/apple/sdfat.pla: 0002: +; libsrc/apple/sdfat.pla: 0003: +; libsrc/apple/sdfat.pla: 0004: // +; libsrc/apple/sdfat.pla: 0005: // FAT I/O object +; libsrc/apple/sdfat.pla: 0006: // +; libsrc/apple/sdfat.pla: 0007: predef cwd(pathname), chdir(path), mkdir(path), rmdir(path), rename(newpath), remove, exists(path) + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/apple/sdfat.pla: 0008: predef openFirst(filename), openNext(filename), open(path, mode) +; libsrc/apple/sdfat.pla: 0009: predef close, read(buf, len), write(buf, len), sync, rewind, seek, seekOfs, pos +; libsrc/apple/sdfat.pla: 0010: predef size, truncate, isDir, isFile +; libsrc/apple/sdfat.pla: 0011: // +; libsrc/apple/sdfat.pla: 0012: // SD card FAT filesystem interface +; libsrc/apple/sdfat.pla: 0013: // +; libsrc/apple/sdfat.pla: 0014: export byte[] sdFAT +_D058 ; sdFAT +; libsrc/apple/sdfat.pla: 0015: word[] = @cwd, @chdir, @mkdir, @rmdir, @rename, @remove, @exists, @openFirst, @openNext, @open +_F000 !WORD _P000 +_F001 !WORD _P001 +_F002 !WORD _P002 +_F003 !WORD _P003 +_F004 !WORD _P004 +_F005 !WORD _P005 +_F006 !WORD _P006 +_F007 !WORD _P007 +_F008 !WORD _P008 +_F009 !WORD _P009 +; libsrc/apple/sdfat.pla: 0016: word[] = @close, @read, @write, @sync, @rewind, @seek, @seekOfs, @pos +_F010 !WORD _P010 +_F011 !WORD _P011 +_F012 !WORD _P012 +_F013 !WORD _P013 +_F014 !WORD _P014 +_F015 !WORD _P015 +_F016 !WORD _P016 +_F017 !WORD _P017 +; libsrc/apple/sdfat.pla: 0017: word[] = @size, @truncate, @isDir, @isFile +_F018 !WORD _P018 +_F019 !WORD _P019 +_F020 !WORD _P020 +_F021 !WORD _P021 +; libsrc/apple/sdfat.pla: 0018: // +; libsrc/apple/sdfat.pla: 0019: // Directory related functions +; libsrc/apple/sdfat.pla: 0020: // +; libsrc/apple/sdfat.pla: 0021: def cwd(pathname) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; pathname -> [0] +_P000 ; cwd(pathname)() +_C000 ; cwd() +; libsrc/apple/sdfat.pla: 0022: byte namelen + ; namelen -> [2] +; libsrc/apple/sdfat.pla: 0023: +; libsrc/apple/sdfat.pla: 0024: namelen = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; libsrc/apple/sdfat.pla: 0025: spiSend(15) // CWD +; libsrc/apple/sdfat.pla: 0026: namelen = spiRecv +; libsrc/apple/sdfat.pla: 0027: if namelen +; libsrc/apple/sdfat.pla: 0028: spiReadBuf(pathname+1, namelen) +; libsrc/apple/sdfat.pla: 0029: fin + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $1E ; CN 15 + !BYTE $54 ; CALL _X030 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F023 !WORD 0 + !BYTE $6C,$02 ; DLB [2] + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X033 +_F024 !WORD 0 + !BYTE $30 ; DROP +_B001 +_B002 +; libsrc/apple/sdfat.pla: 0030: ^pathname = namelen +; libsrc/apple/sdfat.pla: 0031: return namelen + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/apple/sdfat.pla: 0032: end +; libsrc/apple/sdfat.pla: 0033: +; libsrc/apple/sdfat.pla: 0034: def chdir(path) + ; path -> [0] +_P001 ; chdir(path)() +_C001 ; chdir() +; libsrc/apple/sdfat.pla: 0035: spiWriteBuf(path + 1, ^path) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/sdfat.pla: 0036: spiSend(16) // CHGDIR +; libsrc/apple/sdfat.pla: 0037: return spiRecv + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X032 +_F025 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _X030 +_F026 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F027 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0038: end +; libsrc/apple/sdfat.pla: 0039: +; libsrc/apple/sdfat.pla: 0040: def mkdir(path) + ; path -> [0] +_P002 ; mkdir(path)() +_C002 ; mkdir() +; libsrc/apple/sdfat.pla: 0041: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0042: end +; libsrc/apple/sdfat.pla: 0043: +; libsrc/apple/sdfat.pla: 0044: def rmdir(path) + ; path -> [0] +_P003 ; rmdir(path)() +_C003 ; rmdir() +; libsrc/apple/sdfat.pla: 0045: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0046: end +; libsrc/apple/sdfat.pla: 0047: +; libsrc/apple/sdfat.pla: 0048: def rename(newpath) + ; newpath -> [0] +_P004 ; rename(newpath)() +_C004 ; rename() +; libsrc/apple/sdfat.pla: 0049: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0050: end +; libsrc/apple/sdfat.pla: 0051: +; libsrc/apple/sdfat.pla: 0052: def remove +_P005 ; remove() +_C005 ; remove() +; libsrc/apple/sdfat.pla: 0053: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0054: end +; libsrc/apple/sdfat.pla: 0055: +; libsrc/apple/sdfat.pla: 0056: def exists(path) + ; path -> [0] +_P006 ; exists(path)() +_C006 ; exists() +; libsrc/apple/sdfat.pla: 0057: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0058: end +; libsrc/apple/sdfat.pla: 0059: +; libsrc/apple/sdfat.pla: 0060: def openDir(cmd, filename) + ; cmd -> [0] + ; filename -> [2] +_C007 ; openDir() +; libsrc/apple/sdfat.pla: 0061: byte namelen + ; namelen -> [4] +; libsrc/apple/sdfat.pla: 0062: +; libsrc/apple/sdfat.pla: 0063: namelen = 0 + !BYTE $58,$05,$02 ; ENTER 5,2 +; libsrc/apple/sdfat.pla: 0064: spiSend(cmd) +; libsrc/apple/sdfat.pla: 0065: namelen = spiRecv +; libsrc/apple/sdfat.pla: 0066: if namelen == $FF +; libsrc/apple/sdfat.pla: 0067: namelen = 0 +; libsrc/apple/sdfat.pla: 0068: fin + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X030 +_F028 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F029 !WORD 0 + !BYTE $6C,$04 ; DLB [4] + !BYTE $2A,$FF ; CB 255 + !BYTE $24 ; BRNE _B003 + !WORD _B003-* + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] +_B003 +_B004 +; libsrc/apple/sdfat.pla: 0069: if namelen +; libsrc/apple/sdfat.pla: 0070: spiReadBuf(filename+1, namelen) +; libsrc/apple/sdfat.pla: 0071: fin + !BYTE $64,$04 ; LLB [4] + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $64,$04 ; LLB [4] + !BYTE $54 ; CALL _X033 +_F030 !WORD 0 + !BYTE $30 ; DROP +_B005 +_B006 +; libsrc/apple/sdfat.pla: 0072: ^filename = namelen +; libsrc/apple/sdfat.pla: 0073: return namelen + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/sdfat.pla: 0074: end +; libsrc/apple/sdfat.pla: 0075: def openFirst(filename) // return filename in buffer + ; filename -> [0] +_P007 ; openFirst(filename) // return filename in buffer() +_C008 ; openFirst() +; libsrc/apple/sdfat.pla: 0076: return openDir(22, filename) // OPENFIRST + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2A,$16 ; CB 22 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C007 +_F031 !WORD _C007 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0077: end +; libsrc/apple/sdfat.pla: 0078: +; libsrc/apple/sdfat.pla: 0079: def openNext(filename) // return filename i buffer + ; filename -> [0] +_P008 ; openNext(filename) // return filename i buffer() +_C009 ; openNext() +; libsrc/apple/sdfat.pla: 0080: return openDir(23, filename) // OPENNEXT + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2A,$17 ; CB 23 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C007 +_F032 !WORD _C007 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sdfat.pla: 0081: end +; libsrc/apple/sdfat.pla: 0082: +; libsrc/apple/sdfat.pla: 0083: // +; libsrc/apple/sdfat.pla: 0084: // File related functions +; libsrc/apple/sdfat.pla: 0085: // +; libsrc/apple/sdfat.pla: 0086: def open(path, mode) + ; path -> [0] + ; mode -> [2] +_P009 ; open(path, mode)() +_C010 ; open() +; libsrc/apple/sdfat.pla: 0087: spiWriteBuf(path + 1, ^path) // send filename + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/sdfat.pla: 0088: spiSend(21) // OPEN +; libsrc/apple/sdfat.pla: 0089: spiSend(mode) +; libsrc/apple/sdfat.pla: 0090: return spiRecv // status + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X032 +_F033 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$15 ; CB 21 + !BYTE $54 ; CALL _X030 +_F034 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X030 +_F035 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F036 !WORD 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/sdfat.pla: 0091: end +; libsrc/apple/sdfat.pla: 0092: +; libsrc/apple/sdfat.pla: 0093: def close +_P010 ; close() +_C011 ; close() +; libsrc/apple/sdfat.pla: 0094: return spiSend(24) // CLOSE + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _X030 +_F037 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0095: end +; libsrc/apple/sdfat.pla: 0096: +; libsrc/apple/sdfat.pla: 0097: def read(buf, len) + ; buf -> [0] + ; len -> [2] +_P011 ; read(buf, len)() +_C012 ; read() +; libsrc/apple/sdfat.pla: 0098: if len > 512 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/sdfat.pla: 0099: len = 512 +; libsrc/apple/sdfat.pla: 0100: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$02 ; SLW [2] +_B007 +_B008 +; libsrc/apple/sdfat.pla: 0101: spiSend(25) // READ +; libsrc/apple/sdfat.pla: 0102: spiSend(len >> 8); spiSend(len) +; libsrc/apple/sdfat.pla: 0103: len = (spiRecv << 8) | spiRecv +; libsrc/apple/sdfat.pla: 0104: if len > 0 +; libsrc/apple/sdfat.pla: 0105: spiReadBuf(buf, len) +; libsrc/apple/sdfat.pla: 0106: fin + !BYTE $2A,$19 ; CB 25 + !BYTE $54 ; CALL _X030 +_F038 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X030 +_F039 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X030 +_F040 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F041 !WORD 0 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $54 ; CALL _X031 +_F042 !WORD 0 + !BYTE $96 ; OR + !BYTE $6E,$02 ; DLW [2] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X033 +_F043 !WORD 0 + !BYTE $30 ; DROP +_B009 +_B010 +; libsrc/apple/sdfat.pla: 0107: return len + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/sdfat.pla: 0108: end +; libsrc/apple/sdfat.pla: 0109: +; libsrc/apple/sdfat.pla: 0110: def write(buf, len) + ; buf -> [0] + ; len -> [2] +_P012 ; write(buf, len)() +_C013 ; write() +; libsrc/apple/sdfat.pla: 0111: if len > 512 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/sdfat.pla: 0112: len = 512 +; libsrc/apple/sdfat.pla: 0113: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$02 ; SLW [2] +_B011 +_B012 +; libsrc/apple/sdfat.pla: 0114: spiWriteBuf(buf, len) +; libsrc/apple/sdfat.pla: 0115: spiSend(26) // WRITE +; libsrc/apple/sdfat.pla: 0116: spiSend(len >> 8); spiSend(len) +; libsrc/apple/sdfat.pla: 0117: len = (spiRecv << 8) | spiRecv +; libsrc/apple/sdfat.pla: 0118: return len + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X032 +_F044 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$1A ; CB 26 + !BYTE $54 ; CALL _X030 +_F045 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X030 +_F046 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X030 +_F047 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F048 !WORD 0 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $54 ; CALL _X031 +_F049 !WORD 0 + !BYTE $96 ; OR + !BYTE $6E,$02 ; DLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/sdfat.pla: 0119: end +; libsrc/apple/sdfat.pla: 0120: +; libsrc/apple/sdfat.pla: 0121: def sync +_P013 ; sync() +_C014 ; sync() +; libsrc/apple/sdfat.pla: 0122: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0123: end +; libsrc/apple/sdfat.pla: 0124: +; libsrc/apple/sdfat.pla: 0125: def rewind +_P014 ; rewind() +_C015 ; rewind() +; libsrc/apple/sdfat.pla: 0126: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0127: end +; libsrc/apple/sdfat.pla: 0128: +; libsrc/apple/sdfat.pla: 0129: def seek +_P015 ; seek() +_C016 ; seek() +; libsrc/apple/sdfat.pla: 0130: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0131: end +; libsrc/apple/sdfat.pla: 0132: +; libsrc/apple/sdfat.pla: 0133: def seekOfs +_P016 ; seekOfs() +_C017 ; seekOfs() +; libsrc/apple/sdfat.pla: 0134: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0135: end +; libsrc/apple/sdfat.pla: 0136: +; libsrc/apple/sdfat.pla: 0137: def pos +_P017 ; pos() +_C018 ; pos() +; libsrc/apple/sdfat.pla: 0138: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0139: end +; libsrc/apple/sdfat.pla: 0140: +; libsrc/apple/sdfat.pla: 0141: def size +_P018 ; size() +_C019 ; size() +; libsrc/apple/sdfat.pla: 0142: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0143: end +; libsrc/apple/sdfat.pla: 0144: +; libsrc/apple/sdfat.pla: 0145: def truncate +_P019 ; truncate() +_C020 ; truncate() +; libsrc/apple/sdfat.pla: 0146: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0147: end +; libsrc/apple/sdfat.pla: 0148: +; libsrc/apple/sdfat.pla: 0149: def isDir +_P020 ; isDir() +_C021 ; isDir() +; libsrc/apple/sdfat.pla: 0150: spiSend(35) // ISDIR +; libsrc/apple/sdfat.pla: 0151: return spiRecv + !BYTE $2A,$23 ; CB 35 + !BYTE $54 ; CALL _X030 +_F050 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X031 +_F051 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0152: end +; libsrc/apple/sdfat.pla: 0153: +; libsrc/apple/sdfat.pla: 0154: def isFile +_P021 ; isFile() +_C022 ; isFile() +; libsrc/apple/sdfat.pla: 0155: return 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0156: end +; libsrc/apple/sdfat.pla: 0157: +; libsrc/apple/sdfat.pla: 0158: // +; libsrc/apple/sdfat.pla: 0159: // Init SD card FAT filesystem +; libsrc/apple/sdfat.pla: 0160: // +; libsrc/apple/sdfat.pla: 0161: spiSend(14) // SDINIT +_INIT +; libsrc/apple/sdfat.pla: 0162: return spiReady <> 0 // Is Arduino READY? + !BYTE $1C ; CN 14 + !BYTE $54 ; CALL _X030 +_F052 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X035 +_F053 !WORD 0 + !BYTE $5C ; RET +; libsrc/apple/sdfat.pla: 0163: done +_SYSFLAGS = 0 +_DEFCNT = 24 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: SPISEND + !BYTE $D3,$D0,$C9,$D3,$C5,$CE,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: SPIRECV + !BYTE $D3,$D0,$C9,$D2,$C5,$C3,$56 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: SPIWRITEBUF + !BYTE $D3,$D0,$C9,$D7,$D2,$C9,$D4,$C5,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: SPIREADBUF + !BYTE $D3,$D0,$C9,$D2,$C5,$C1,$C4,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: SPIREADY + !BYTE $D3,$D0,$C9,$D2,$C5,$C1,$C4,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D058 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/sndseq.a b/src/libsrc/apple/sndseq.a new file mode 100644 index 0000000..26322b6 --- /dev/null +++ b/src/libsrc/apple/sndseq.a @@ -0,0 +1,3984 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/sndseq.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/sndseq.pla: 0001: +; libsrc/apple/sndseq.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; libsrc/apple/sndseq.pla: 0002: +; libsrc/apple/sndseq.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X030 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X031 + ; ARGNEXT -> X032 +; inc/args.plh: 0003: end +; libsrc/apple/sndseq.pla: 0003: +; libsrc/apple/sndseq.pla: 0004: // +; libsrc/apple/sndseq.pla: 0005: // Usage is documented following the source in this file... +; libsrc/apple/sndseq.pla: 0006: // +; libsrc/apple/sndseq.pla: 0007: const rndseed = $004E + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; rndseed = 78 +; libsrc/apple/sndseq.pla: 0008: const LSB = 0 + ; LSB = 0 +; libsrc/apple/sndseq.pla: 0009: const MSB = 1 + ; MSB = 1 +; libsrc/apple/sndseq.pla: 0010: const MB_ARPEGGIO = 4 // In 16ths of a second + ; MB_ARPEGGIO = 4 +; libsrc/apple/sndseq.pla: 0011: const MAX_MBCH_NOTES = 9 + ; MAX_MBCH_NOTES = 9 +; libsrc/apple/sndseq.pla: 0012: const SPKR_ARPEGGIO = 2 // In 16ths of a second + ; SPKR_ARPEGGIO = 2 +; libsrc/apple/sndseq.pla: 0013: const DUR16TH = 8 + ; DUR16TH = 8 +; libsrc/apple/sndseq.pla: 0014: const MAX_SPKR_NOTES = 4 + ; MAX_SPKR_NOTES = 4 +; libsrc/apple/sndseq.pla: 0015: const NOTEDIV = 4 + ; NOTEDIV = 4 +; libsrc/apple/sndseq.pla: 0016: // +; libsrc/apple/sndseq.pla: 0017: // 6522 VIA registers +; libsrc/apple/sndseq.pla: 0018: // +; libsrc/apple/sndseq.pla: 0019: struc t_VIA +; libsrc/apple/sndseq.pla: 0020: byte IORB // I/O Register B + ; IORB = 0 +; libsrc/apple/sndseq.pla: 0021: byte IORA // I/O Register A + ; IORA = 1 +; libsrc/apple/sndseq.pla: 0022: byte DDRB // Data Direction Register B + ; DDRB = 2 +; libsrc/apple/sndseq.pla: 0023: byte DDRA // Data Direction Register A + ; DDRA = 3 +; libsrc/apple/sndseq.pla: 0024: word T1C // Timer 1 Count + ; T1C = 4 +; libsrc/apple/sndseq.pla: 0025: word T1L // Timer 1 Latch + ; T1L = 6 +; libsrc/apple/sndseq.pla: 0026: word T2C // Timer 2 Count + ; T2C = 8 +; libsrc/apple/sndseq.pla: 0027: byte SR // Shift Register + ; SR = 10 +; libsrc/apple/sndseq.pla: 0028: byte ACR // Aux Control Register + ; ACR = 11 +; libsrc/apple/sndseq.pla: 0029: byte PCR // Peripheral Control Register + ; PCR = 12 +; libsrc/apple/sndseq.pla: 0030: byte IFR // Interrupt Flag Register + ; IFR = 13 +; libsrc/apple/sndseq.pla: 0031: byte IER // Interrupt Enable Register + ; IER = 14 +; libsrc/apple/sndseq.pla: 0032: byte IOA_noHS // I/O Register A - no HandShake + ; IOA_noHS = 15 +; libsrc/apple/sndseq.pla: 0033: end + ; t_VIA = 16 +; libsrc/apple/sndseq.pla: 0034: const T1CH = T1C+1 + ; T1CH = 5 +; libsrc/apple/sndseq.pla: 0035: // +; libsrc/apple/sndseq.pla: 0036: // AY-3-8910 PSG registers +; libsrc/apple/sndseq.pla: 0037: // +; libsrc/apple/sndseq.pla: 0038: struc t_PSG +; libsrc/apple/sndseq.pla: 0039: word AFREQ // A Frequency Period + ; AFREQ = 0 +; libsrc/apple/sndseq.pla: 0040: word BFREQ // B Frequency Period + ; BFREQ = 2 +; libsrc/apple/sndseq.pla: 0041: word CFREQ // C Frequency Period + ; CFREQ = 4 +; libsrc/apple/sndseq.pla: 0042: byte NGFREQ // Noise Generator Frequency Period + ; NGFREQ = 6 +; libsrc/apple/sndseq.pla: 0043: byte MIXER // Enable=0/Disable=1 NG C(5) B(4) A(3) Tone C(2) B(1) A(0) + ; MIXER = 7 +; libsrc/apple/sndseq.pla: 0044: byte AENVAMP // A Envelope/Amplitude + ; AENVAMP = 8 +; libsrc/apple/sndseq.pla: 0045: byte BENVAMP // B Envelope/Amplitude + ; BENVAMP = 9 +; libsrc/apple/sndseq.pla: 0046: byte CENVAMP // C Envelope/Amplitude + ; CENVAMP = 10 +; libsrc/apple/sndseq.pla: 0047: word ENVPERIOD // Envelope Period + ; ENVPERIOD = 11 +; libsrc/apple/sndseq.pla: 0048: byte ENVSHAPE // Envelope Shape + ; ENVSHAPE = 13 +; libsrc/apple/sndseq.pla: 0049: end + ; t_PSG = 14 +; libsrc/apple/sndseq.pla: 0050: // +; libsrc/apple/sndseq.pla: 0051: // Apple III hardware constants. +; libsrc/apple/sndseq.pla: 0052: // +; libsrc/apple/sndseq.pla: 0053: const ENV_REG = $FFDF + ; ENV_REG = 65503 +; libsrc/apple/sndseq.pla: 0054: // +; libsrc/apple/sndseq.pla: 0055: // Sequence event +; libsrc/apple/sndseq.pla: 0056: // +; libsrc/apple/sndseq.pla: 0057: struc t_event +; libsrc/apple/sndseq.pla: 0058: byte deltatime // Event delta time in 4.4 seconds + ; deltatime = 0 +; libsrc/apple/sndseq.pla: 0059: byte percnote // Percussion:7==0 ? Pitch:4-0 : Octave:6-4,Note:3-0 + ; percnote = 1 +; libsrc/apple/sndseq.pla: 0060: byte perchanvol // Percussion ? EnvDur:7-0 : Channel:7,Volume:3-0 + ; perchanvol = 2 +; libsrc/apple/sndseq.pla: 0061: end + ; t_event = 3 +; libsrc/apple/sndseq.pla: 0062: // +; libsrc/apple/sndseq.pla: 0063: // Predef routines +; libsrc/apple/sndseq.pla: 0064: // +; libsrc/apple/sndseq.pla: 0065: predef musicPlay(track, rept)#0 +; libsrc/apple/sndseq.pla: 0066: predef musicStop#0 +; libsrc/apple/sndseq.pla: 0067: predef spkrSequence(yield, func)#0 +; libsrc/apple/sndseq.pla: 0068: predef a2spkrTone(pitch, duration)#0 +; libsrc/apple/sndseq.pla: 0069: predef a2spkrPWM(sample, speed, len)#0 +; libsrc/apple/sndseq.pla: 0070: predef a2keypressed +; libsrc/apple/sndseq.pla: 0071: // +; libsrc/apple/sndseq.pla: 0072: // Static sequencer values +; libsrc/apple/sndseq.pla: 0073: // +; libsrc/apple/sndseq.pla: 0074: export word musicSequence = @spkrSequence +_D039 ; musicSequence = @spkrSequence +_F000 !WORD _P002 +; libsrc/apple/sndseq.pla: 0075: export word spkrTone = @a2spkrTone +_D040 ; spkrTone = @a2spkrTone +_F001 !WORD _P003 +; libsrc/apple/sndseq.pla: 0076: export word spkrPWM = @a2spkrPWM +_D041 ; spkrPWM = @a2spkrPWM +_F002 !WORD _P004 +; libsrc/apple/sndseq.pla: 0077: word keypressed = @a2keypressed +_D042 ; keypressed = @a2keypressed +_F003 !WORD _P005 +; libsrc/apple/sndseq.pla: 0078: +; libsrc/apple/sndseq.pla: 0079: word instr[] // Overlay with other variables +_D043 ; instr[] // Overlay with other variables +; libsrc/apple/sndseq.pla: 0080: word seqTrack, seqEvent, seqTime, eventTime, updateTime +_D044 !FILL 2 ; seqTrack, seqEvent, seqTime, eventTime, updateTime +_D045 !FILL 2 ; seqEvent, seqTime, eventTime, updateTime +_D046 !FILL 2 ; seqTime, eventTime, updateTime +_D047 !FILL 2 ; eventTime, updateTime +_D048 !FILL 2 ; updateTime +; libsrc/apple/sndseq.pla: 0081: byte numNotes, seqRepeat +_D049 !FILL 1 ; numNotes, seqRepeat +_D050 !FILL 1 ; seqRepeat +; libsrc/apple/sndseq.pla: 0082: byte indexA[2], indexB[2], indexC[2] +_D051 !FILL 2 ; indexA[2], indexB[2], indexC[2] +_D052 !FILL 2 ; indexB[2], indexC[2] +_D053 !FILL 2 ; indexC[2] +; libsrc/apple/sndseq.pla: 0083: byte noteA[2], noteB[2], noteC[2] +_D054 !FILL 2 ; noteA[2], noteB[2], noteC[2] +_D055 !FILL 2 ; noteB[2], noteC[2] +_D056 !FILL 2 ; noteC[2] +; libsrc/apple/sndseq.pla: 0084: word notes1[MAX_MBCH_NOTES], notes2[MAX_MBCH_NOTES] +_D057 !FILL 18 ; notes1[MAX_MBCH_NOTES], notes2[MAX_MBCH_NOTES] +_D058 !FILL 18 ; notes2[MAX_MBCH_NOTES] +; libsrc/apple/sndseq.pla: 0085: word notes[2] = @notes1, @notes2 +_D059 ; notes[2] = @notes1, @notes2 +_F004 !WORD _D057 +_F005 !WORD _D058 +; libsrc/apple/sndseq.pla: 0086: word periods1[MAX_MBCH_NOTES], periods2[MAX_MBCH_NOTES] +_D060 !FILL 18 ; periods1[MAX_MBCH_NOTES], periods2[MAX_MBCH_NOTES] +_D061 !FILL 18 ; periods2[MAX_MBCH_NOTES] +; libsrc/apple/sndseq.pla: 0087: word periods[2] = @periods1, @periods2 +_D062 ; periods[2] = @periods1, @periods2 +_F006 !WORD _D060 +_F007 !WORD _D061 +; libsrc/apple/sndseq.pla: 0088: // +; libsrc/apple/sndseq.pla: 0089: // MockingBoard data. +; libsrc/apple/sndseq.pla: 0090: // +; libsrc/apple/sndseq.pla: 0091: word[] mbVIAs // Treat this as an array of VIA ptrs +_D063 ; mbVIAs // Treat this as an array of VIA ptrs +; libsrc/apple/sndseq.pla: 0092: word mbVIA1, mbVIA2 +_D064 !FILL 2 ; mbVIA1, mbVIA2 +_D065 !FILL 2 ; mbVIA2 +; libsrc/apple/sndseq.pla: 0093: word mbSlot = -1 +_D066 ; mbSlot = -1 + !WORD $FFFF +; libsrc/apple/sndseq.pla: 0094: // +; libsrc/apple/sndseq.pla: 0095: // Octave basis frequency periods (starting at MIDI note #12) +; libsrc/apple/sndseq.pla: 0096: // Notes will be encoded as basis note (LSNibble) and octave (MSNibble)) +; libsrc/apple/sndseq.pla: 0097: // +; libsrc/apple/sndseq.pla: 0098: word[] spkrOctave0 // Overlay and scale mbOctave0 for speaker version +_D067 ; spkrOctave0 // Overlay and scale mbOctave0 for speaker version +; libsrc/apple/sndseq.pla: 0099: word[12] mbOctave0 = 3900, 3681, 3474, 3279, 3095, 2922, 2758, 2603, 2457, 2319, 2189, 2066 +_D068 ; mbOctave0 = 3900, 3681, 3474, 3279, 3095, 2922, 2758, 2603, 2457, 2319, 2189, 2066 + !WORD $0F3C + !WORD $0E61 + !WORD $0D92 + !WORD $0CCF + !WORD $0C17 + !WORD $0B6A + !WORD $0AC6 + !WORD $0A2B + !WORD $0999 + !WORD $090F + !WORD $088D + !WORD $0812 +; libsrc/apple/sndseq.pla: 0100: word[5] arpeggioDuration = DUR16TH, DUR16TH, DUR16TH/2, DUR16TH/3, DUR16TH/4 +_D069 ; arpeggioDuration = DUR16TH, DUR16TH, DUR16TH/2, DUR16TH/3, DUR16TH/4 + !WORD $0008 + !WORD $0008 + !WORD $0004 + !WORD $0002 + !WORD $0002 +; libsrc/apple/sndseq.pla: 0101: // +; libsrc/apple/sndseq.pla: 0102: // Emulators are broken - they only activate the MockingBoard's 6522 Timer1 +; libsrc/apple/sndseq.pla: 0103: // functionality when interrupts are enabled. This music sequencer is run +; libsrc/apple/sndseq.pla: 0104: // in polling mode without the use of MockingBoard interrupts. To work around +; libsrc/apple/sndseq.pla: 0105: // the emulators, MockingBoard interrupts are enabled, but the 6502 IRQs are +; libsrc/apple/sndseq.pla: 0106: // disabled. NO INTERRUPTS ARE HANDLED WHEN PLAYING MUSIC! The previous state +; libsrc/apple/sndseq.pla: 0107: // is restored between playing sequences. +; libsrc/apple/sndseq.pla: 0108: // +; libsrc/apple/sndseq.pla: 0109: asm vmincs +_A000 ; vmincs() +; libsrc/apple/sndseq.pla: 0110: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/sndseq.pla: 0111: end +; libsrc/apple/sndseq.pla: 0112: asm getStatusReg#1 +_A001 ; getStatusReg() +; libsrc/apple/sndseq.pla: 0113: PHP + PHP +; libsrc/apple/sndseq.pla: 0114: PLA + PLA +; libsrc/apple/sndseq.pla: 0115: DEX + DEX +; libsrc/apple/sndseq.pla: 0116: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/sndseq.pla: 0117: LDA #$00 + LDA #$00 +; libsrc/apple/sndseq.pla: 0118: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/sndseq.pla: 0119: RTS + RTS +; libsrc/apple/sndseq.pla: 0120: end +; libsrc/apple/sndseq.pla: 0121: asm setStatusReg(stat)#0 +_A002 ; setStatusReg() +; libsrc/apple/sndseq.pla: 0122: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0123: INX + INX +; libsrc/apple/sndseq.pla: 0124: PHA + PHA +; libsrc/apple/sndseq.pla: 0125: PLP + PLP +; libsrc/apple/sndseq.pla: 0126: RTS + RTS +; libsrc/apple/sndseq.pla: 0127: end +; libsrc/apple/sndseq.pla: 0128: asm disableInts#0 +_A003 ; disableInts() +; libsrc/apple/sndseq.pla: 0129: SEI + SEI +; libsrc/apple/sndseq.pla: 0130: RTS + RTS +; libsrc/apple/sndseq.pla: 0131: end +; libsrc/apple/sndseq.pla: 0132: asm enableInts#0 +_A004 ; enableInts() +; libsrc/apple/sndseq.pla: 0133: CLI + CLI +; libsrc/apple/sndseq.pla: 0134: RTS + RTS +; libsrc/apple/sndseq.pla: 0135: end +; libsrc/apple/sndseq.pla: 0136: // +; libsrc/apple/sndseq.pla: 0137: // Write Programmable Sound Generator Registers +; libsrc/apple/sndseq.pla: 0138: // +; libsrc/apple/sndseq.pla: 0139: asm psgWriteTone(pVIA, reg, freq, vol)#0 +_A005 ; psgWriteTone() +; libsrc/apple/sndseq.pla: 0140: LDA ESTKL+3,X + LDA ESTKL+3,X +; libsrc/apple/sndseq.pla: 0141: STA TMPL + STA TMPL +; libsrc/apple/sndseq.pla: 0142: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/apple/sndseq.pla: 0143: STA TMPH + STA TMPH +; libsrc/apple/sndseq.pla: 0144: LDY #$01 + LDY #$01 +; libsrc/apple/sndseq.pla: 0145: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/sndseq.pla: 0146: LSR + LSR +; libsrc/apple/sndseq.pla: 0147: ADC #$08 + ADC #$08 +; libsrc/apple/sndseq.pla: 0148: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0149: DEY + DEY +; libsrc/apple/sndseq.pla: 0150: LDA #$07 + LDA #$07 +; libsrc/apple/sndseq.pla: 0151: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0152: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0153: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0154: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0155: INY + INY +; libsrc/apple/sndseq.pla: 0156: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0157: DEY + DEY +; libsrc/apple/sndseq.pla: 0158: LDA #$06 + LDA #$06 +; libsrc/apple/sndseq.pla: 0159: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0160: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0161: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0162: INX + INX +; libsrc/apple/sndseq.pla: 0163: BNE + + BNE + +; libsrc/apple/sndseq.pla: 0164: end +; libsrc/apple/sndseq.pla: 0165: asm psgWriteWord(pVIA, reg, val)#0 +_A006 ; psgWriteWord() +; libsrc/apple/sndseq.pla: 0166: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/sndseq.pla: 0167: STA TMPL + STA TMPL +; libsrc/apple/sndseq.pla: 0168: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/apple/sndseq.pla: 0169: STA TMPH + STA TMPH +; libsrc/apple/sndseq.pla: 0170: + LDY #$01 ++ LDY #$01 +; libsrc/apple/sndseq.pla: 0171: TYA + TYA +; libsrc/apple/sndseq.pla: 0172: CLC + CLC +; libsrc/apple/sndseq.pla: 0173: ADC ESTKL+1,X + ADC ESTKL+1,X +; libsrc/apple/sndseq.pla: 0174: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0175: DEY + DEY +; libsrc/apple/sndseq.pla: 0176: LDA #$07 + LDA #$07 +; libsrc/apple/sndseq.pla: 0177: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0178: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0179: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0180: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/sndseq.pla: 0181: INY + INY +; libsrc/apple/sndseq.pla: 0182: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0183: DEY + DEY +; libsrc/apple/sndseq.pla: 0184: LDA #$06 + LDA #$06 +; libsrc/apple/sndseq.pla: 0185: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0186: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0187: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0188: BNE + + BNE + +; libsrc/apple/sndseq.pla: 0189: end +; libsrc/apple/sndseq.pla: 0190: asm psgWrite(pVIA, reg, val)#0 +_A007 ; psgWrite() +; libsrc/apple/sndseq.pla: 0191: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/sndseq.pla: 0192: STA TMPL + STA TMPL +; libsrc/apple/sndseq.pla: 0193: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/apple/sndseq.pla: 0194: STA TMPH + STA TMPH +; libsrc/apple/sndseq.pla: 0195: + LDY #$01 ++ LDY #$01 +; libsrc/apple/sndseq.pla: 0196: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/sndseq.pla: 0197: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0198: DEY + DEY +; libsrc/apple/sndseq.pla: 0199: LDA #$07 + LDA #$07 +; libsrc/apple/sndseq.pla: 0200: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0201: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0202: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0203: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0204: INY + INY +; libsrc/apple/sndseq.pla: 0205: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0206: DEY + DEY +; libsrc/apple/sndseq.pla: 0207: LDA #$06 + LDA #$06 +; libsrc/apple/sndseq.pla: 0208: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0209: LDA #$04 + LDA #$04 +; libsrc/apple/sndseq.pla: 0210: STA (TMP),Y + STA (TMP),Y +; libsrc/apple/sndseq.pla: 0211: INX + INX +; libsrc/apple/sndseq.pla: 0212: INX + INX +; libsrc/apple/sndseq.pla: 0213: INX + INX +; libsrc/apple/sndseq.pla: 0214: RTS + RTS +; libsrc/apple/sndseq.pla: 0215: end +; libsrc/apple/sndseq.pla: 0216: asm viaCheck(pVIA)#1 +_A008 ; viaCheck() +; libsrc/apple/sndseq.pla: 0217: PHP + PHP +; libsrc/apple/sndseq.pla: 0218: SEI + SEI +; libsrc/apple/sndseq.pla: 0219: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0220: STA TMPL + STA TMPL +; libsrc/apple/sndseq.pla: 0221: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/sndseq.pla: 0222: STA TMPH + STA TMPH +; libsrc/apple/sndseq.pla: 0223: STX ESP + STX ESP +; libsrc/apple/sndseq.pla: 0224: LDX #$80 + LDX #$80 +; libsrc/apple/sndseq.pla: 0225: LDY #$04 + LDY #$04 +; libsrc/apple/sndseq.pla: 0226: SEC + SEC +; libsrc/apple/sndseq.pla: 0227: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/apple/sndseq.pla: 0228: BMI + + BMI + +; libsrc/apple/sndseq.pla: 0229: DEX + DEX +; libsrc/apple/sndseq.pla: 0230: BNE - + BNE - +; libsrc/apple/sndseq.pla: 0231: TXA ; TIMEOUT + TXA ; TIMEOUT +; libsrc/apple/sndseq.pla: 0232: BEQ ++ + BEQ ++ +; libsrc/apple/sndseq.pla: 0233: + SBC (TMP),Y ++ SBC (TMP),Y +; libsrc/apple/sndseq.pla: 0234: ++ LDX ESP +++ LDX ESP +; libsrc/apple/sndseq.pla: 0235: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/sndseq.pla: 0236: LDA #$00 + LDA #$00 +; libsrc/apple/sndseq.pla: 0237: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/sndseq.pla: 0238: PLP + PLP +; libsrc/apple/sndseq.pla: 0239: RTS + RTS +; libsrc/apple/sndseq.pla: 0240: end +; libsrc/apple/sndseq.pla: 0241: // +; libsrc/apple/sndseq.pla: 0242: // Apple II speaker tone generator routines +; libsrc/apple/sndseq.pla: 0243: // +; libsrc/apple/sndseq.pla: 0244: asm a2spkrTone(pitch, duration)#0 +_P003 ; a2spkrTone(pitch, duration)#0() +_A009 ; a2spkrTone() +; libsrc/apple/sndseq.pla: 0245: STX ESP + STX ESP +; libsrc/apple/sndseq.pla: 0246: LDY ESTKH,X + LDY ESTKH,X +; libsrc/apple/sndseq.pla: 0247: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0248: BEQ + + BEQ + +; libsrc/apple/sndseq.pla: 0249: INY + INY +; libsrc/apple/sndseq.pla: 0250: + STA DSTL ++ STA DSTL +; libsrc/apple/sndseq.pla: 0251: STY DSTH + STY DSTH +; libsrc/apple/sndseq.pla: 0252: LDY ESTKH+1,X + LDY ESTKH+1,X +; libsrc/apple/sndseq.pla: 0253: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/sndseq.pla: 0254: BEQ + + BEQ + +; libsrc/apple/sndseq.pla: 0255: INY + INY +; libsrc/apple/sndseq.pla: 0256: + STA TMPL ++ STA TMPL +; libsrc/apple/sndseq.pla: 0257: STY TMPH + STY TMPH +; libsrc/apple/sndseq.pla: 0258: TAX + TAX +; libsrc/apple/sndseq.pla: 0259: LDA #$FF + LDA #$FF +; libsrc/apple/sndseq.pla: 0260: PHP + PHP +; libsrc/apple/sndseq.pla: 0261: SEI + SEI +; libsrc/apple/sndseq.pla: 0262: ; +; libsrc/apple/sndseq.pla: 0263: ; Total loop count is 32 cycles, regardless of path taken +; Total loop count is 32 cycles, regardless of path taken +; libsrc/apple/sndseq.pla: 0264: ; +; libsrc/apple/sndseq.pla: 0265: - NOP ; 2 +- NOP ; 2 +; libsrc/apple/sndseq.pla: 0266: NOP ; 2 + NOP ; 2 +; libsrc/apple/sndseq.pla: 0267: BCS + ; 3 + BCS + ; 3 +; libsrc/apple/sndseq.pla: 0268: ;--- + ;--- +; libsrc/apple/sndseq.pla: 0269: ;+7 = 12 (from BCS below) + ;+7 = 12 (from BCS below) +; libsrc/apple/sndseq.pla: 0270: + ++ +; libsrc/apple/sndseq.pla: 0271: -- SEC ; 2 +-- SEC ; 2 +; libsrc/apple/sndseq.pla: 0272: DEX ; 2 + DEX ; 2 +; libsrc/apple/sndseq.pla: 0273: BNE ++ ; 2/3 + BNE ++ ; 2/3 +; libsrc/apple/sndseq.pla: 0274: ;---- + ;---- +; libsrc/apple/sndseq.pla: 0275: ; 6/7 + ; 6/7 +; libsrc/apple/sndseq.pla: 0276: +; libsrc/apple/sndseq.pla: 0277: DEY ; 2 + DEY ; 2 +; libsrc/apple/sndseq.pla: 0278: BNE +++ ; 2/3 + BNE +++ ; 2/3 +; libsrc/apple/sndseq.pla: 0279: ;---- + ;---- +; libsrc/apple/sndseq.pla: 0280: ;+4/5 = 10/11 + ;+4/5 = 10/11 +; libsrc/apple/sndseq.pla: 0281: +; libsrc/apple/sndseq.pla: 0282: BIT $C030 ; 4 + BIT $C030 ; 4 +; libsrc/apple/sndseq.pla: 0283: LDX TMPL ; 3 + LDX TMPL ; 3 +; libsrc/apple/sndseq.pla: 0284: LDY TMPH ; 3 + LDY TMPH ; 3 +; libsrc/apple/sndseq.pla: 0285: ;--- + ;--- +; libsrc/apple/sndseq.pla: 0286: ;+10 = 20 + ;+10 = 20 +; libsrc/apple/sndseq.pla: 0287: +; libsrc/apple/sndseq.pla: 0288: TONELP SBC #$01 ; 2 +TONELP SBC #$01 ; 2 +; libsrc/apple/sndseq.pla: 0289: BCS - ; 2/3 + BCS - ; 2/3 +; libsrc/apple/sndseq.pla: 0290: ;---- + ;---- +; libsrc/apple/sndseq.pla: 0291: ; 4/5 + ; 4/5 +; libsrc/apple/sndseq.pla: 0292: +; libsrc/apple/sndseq.pla: 0293: DEC DSTL ; 5 + DEC DSTL ; 5 +; libsrc/apple/sndseq.pla: 0294: BNE -- ; 3 + BNE -- ; 3 +; libsrc/apple/sndseq.pla: 0295: ;---- + ;---- +; libsrc/apple/sndseq.pla: 0296: ;+8 = 12 + ;+8 = 12 +; libsrc/apple/sndseq.pla: 0297: +; libsrc/apple/sndseq.pla: 0298: DEC DSTH ; This sequence isn't accounted for + DEC DSTH ; This sequence isn't accounted for +; libsrc/apple/sndseq.pla: 0299: BNE -- ; since it is taken only in extreme cases + BNE -- ; since it is taken only in extreme cases +; libsrc/apple/sndseq.pla: 0300: BEQ TONEXIT + BEQ TONEXIT +; libsrc/apple/sndseq.pla: 0301: +; libsrc/apple/sndseq.pla: 0302: ++ NOP ; 2 +++ NOP ; 2 +; libsrc/apple/sndseq.pla: 0303: NOP ; 2 + NOP ; 2 +; libsrc/apple/sndseq.pla: 0304: ;--- + ;--- +; libsrc/apple/sndseq.pla: 0305: ;+4 = 11 (from BNE above) + ;+4 = 11 (from BNE above) +; libsrc/apple/sndseq.pla: 0306: +; libsrc/apple/sndseq.pla: 0307: +++ BIT $C000 ; 4 ++++ BIT $C000 ; 4 +; libsrc/apple/sndseq.pla: 0308: NOP ; 2 + NOP ; 2 +; libsrc/apple/sndseq.pla: 0309: BPL TONELP ; 3 + BPL TONELP ; 3 +; libsrc/apple/sndseq.pla: 0310: ;--- + ;--- +; libsrc/apple/sndseq.pla: 0311: ;+9 = 20 + ;+9 = 20 +; libsrc/apple/sndseq.pla: 0312: TONEXIT PLP +TONEXIT PLP +; libsrc/apple/sndseq.pla: 0313: LDX ESP + LDX ESP +; libsrc/apple/sndseq.pla: 0314: INX + INX +; libsrc/apple/sndseq.pla: 0315: INX + INX +; libsrc/apple/sndseq.pla: 0316: RTS + RTS +; libsrc/apple/sndseq.pla: 0317: end +; libsrc/apple/sndseq.pla: 0318: asm a2spkrPWM(sample, speed, len)#0 +_P004 ; a2spkrPWM(sample, speed, len)#0() +_A010 ; a2spkrPWM() +; libsrc/apple/sndseq.pla: 0319: STX ESP + STX ESP +; libsrc/apple/sndseq.pla: 0320: LDY ESTKH,X + LDY ESTKH,X +; libsrc/apple/sndseq.pla: 0321: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/sndseq.pla: 0322: BEQ + + BEQ + +; libsrc/apple/sndseq.pla: 0323: INY + INY +; libsrc/apple/sndseq.pla: 0324: + STY DSTH ++ STY DSTH +; libsrc/apple/sndseq.pla: 0325: STA DSTL + STA DSTL +; libsrc/apple/sndseq.pla: 0326: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/apple/sndseq.pla: 0327: STA SRCL + STA SRCL +; libsrc/apple/sndseq.pla: 0328: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/apple/sndseq.pla: 0329: STA SRCH + STA SRCH +; libsrc/apple/sndseq.pla: 0330: LDY ESTKL+1,X + LDY ESTKL+1,X +; libsrc/apple/sndseq.pla: 0331: INY + INY +; libsrc/apple/sndseq.pla: 0332: STY TMPL + STY TMPL +; libsrc/apple/sndseq.pla: 0333: LDY #$00 + LDY #$00 +; libsrc/apple/sndseq.pla: 0334: PHP + PHP +; libsrc/apple/sndseq.pla: 0335: SEI + SEI +; libsrc/apple/sndseq.pla: 0336: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/apple/sndseq.pla: 0337: SEC + SEC +; libsrc/apple/sndseq.pla: 0338: -- LDX TMPL +-- LDX TMPL +; libsrc/apple/sndseq.pla: 0339: --- DEX +--- DEX +; libsrc/apple/sndseq.pla: 0340: BNE --- + BNE --- +; libsrc/apple/sndseq.pla: 0341: SBC #$01 + SBC #$01 +; libsrc/apple/sndseq.pla: 0342: BCS -- + BCS -- +; libsrc/apple/sndseq.pla: 0343: BIT $C030 + BIT $C030 +; libsrc/apple/sndseq.pla: 0344: INY + INY +; libsrc/apple/sndseq.pla: 0345: BNE + + BNE + +; libsrc/apple/sndseq.pla: 0346: INC SRCH + INC SRCH +; libsrc/apple/sndseq.pla: 0347: + DEC DSTL ++ DEC DSTL +; libsrc/apple/sndseq.pla: 0348: BNE - + BNE - +; libsrc/apple/sndseq.pla: 0349: DEC DSTH + DEC DSTH +; libsrc/apple/sndseq.pla: 0350: BNE - + BNE - +; libsrc/apple/sndseq.pla: 0351: PLP + PLP +; libsrc/apple/sndseq.pla: 0352: LDX ESP + LDX ESP +; libsrc/apple/sndseq.pla: 0353: INX + INX +; libsrc/apple/sndseq.pla: 0354: INX + INX +; libsrc/apple/sndseq.pla: 0355: INX + INX +; libsrc/apple/sndseq.pla: 0356: RTS + RTS +; libsrc/apple/sndseq.pla: 0357: end +; libsrc/apple/sndseq.pla: 0358: asm a2keypressed +_P005 ; a2keypressed() +_A011 ; a2keypressed() +; libsrc/apple/sndseq.pla: 0359: INC $004E ; rndseed + INC $004E ; rndseed +; libsrc/apple/sndseq.pla: 0360: BNE + + BNE + +; libsrc/apple/sndseq.pla: 0361: INC $004F + INC $004F +; libsrc/apple/sndseq.pla: 0362: + DEX ++ DEX +; libsrc/apple/sndseq.pla: 0363: LDY #$00 + LDY #$00 +; libsrc/apple/sndseq.pla: 0364: BIT $C000 + BIT $C000 +; libsrc/apple/sndseq.pla: 0365: BPL + + BPL + +; libsrc/apple/sndseq.pla: 0366: DEY + DEY +; libsrc/apple/sndseq.pla: 0367: + STY ESTKL,X ++ STY ESTKL,X +; libsrc/apple/sndseq.pla: 0368: STY ESTKH,X + STY ESTKH,X +; libsrc/apple/sndseq.pla: 0369: RTS + RTS +; libsrc/apple/sndseq.pla: 0370: end +; libsrc/apple/sndseq.pla: 0371: def a3keypressed + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; a3keypressed() +; libsrc/apple/sndseq.pla: 0372: byte count + ; count -> [0] +; libsrc/apple/sndseq.pla: 0373: byte params[5] + ; params -> [1] +; libsrc/apple/sndseq.pla: 0374: +; libsrc/apple/sndseq.pla: 0375: params.0 = 3 + !BYTE $58,$06,$00 ; ENTER 6,0 +; libsrc/apple/sndseq.pla: 0376: params.1 = cmdsys.devcons +; libsrc/apple/sndseq.pla: 0377: params.2 = 5 +; libsrc/apple/sndseq.pla: 0378: params:3 = @count +; libsrc/apple/sndseq.pla: 0379: syscall($82, @params) +; libsrc/apple/sndseq.pla: 0380: return count + !BYTE $06 ; CN 3 + !BYTE $74,$01 ; SLB [1] + !BYTE $68 ; LAB _X000+20 +_F008 !WORD 0+20 + !BYTE $74,$02 ; SLB [2] + !BYTE $0A ; CN 5 + !BYTE $74,$03 ; SLB [3] + !BYTE $28,$00 ; LLA [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $2A,$82 ; CB 130 + !BYTE $28,$01 ; LLA [1] + !BYTE $54 ; CALL _X011 +_F009 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/sndseq.pla: 0381: end +; libsrc/apple/sndseq.pla: 0382: def a3spkrTone(pitch, duration)#0 + ; pitch -> [0] + ; duration -> [2] +_C001 ; a3spkrTone() +; libsrc/apple/sndseq.pla: 0383: byte env + ; env -> [4] +; libsrc/apple/sndseq.pla: 0384: +; libsrc/apple/sndseq.pla: 0385: env = ^ENV_REG + !BYTE $58,$05,$02 ; ENTER 5,2 +; libsrc/apple/sndseq.pla: 0386: ^ENV_REG = env | $C0 +; libsrc/apple/sndseq.pla: 0387: a2spkrTone(pitch, duration) +; libsrc/apple/sndseq.pla: 0388: ^ENV_REG = env +; libsrc/apple/sndseq.pla: 0389: end + !BYTE $68,$DF,$FF ; LAB 65503 + !BYTE $6C,$04 ; DLB [4] + !BYTE $3E,$C0 ; ORI 192 + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A009 +_F010 !WORD _A009 + !BYTE $64,$04 ; LLB [4] + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/sndseq.pla: 0390: def a3spkrPWM(sample, speed, len)#0 + ; sample -> [0] + ; speed -> [2] + ; len -> [4] +_C002 ; a3spkrPWM() +; libsrc/apple/sndseq.pla: 0391: byte env + ; env -> [6] +; libsrc/apple/sndseq.pla: 0392: +; libsrc/apple/sndseq.pla: 0393: env = ^ENV_REG + !BYTE $58,$07,$03 ; ENTER 7,3 +; libsrc/apple/sndseq.pla: 0394: ^ENV_REG = env | $C0 +; libsrc/apple/sndseq.pla: 0395: a2spkrPWM(sample, speed, len) +; libsrc/apple/sndseq.pla: 0396: ^ENV_REG = env +; libsrc/apple/sndseq.pla: 0397: end + !BYTE $68,$DF,$FF ; LAB 65503 + !BYTE $6C,$06 ; DLB [6] + !BYTE $3E,$C0 ; ORI 192 + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A010 +_F011 !WORD _A010 + !BYTE $64,$06 ; LLB [6] + !BYTE $78,$DF,$FF ; SAB 65503 + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/apple/sndseq.pla: 0398: // +; libsrc/apple/sndseq.pla: 0399: // Search slots for MockingBoard +; libsrc/apple/sndseq.pla: 0400: // +; libsrc/apple/sndseq.pla: 0401: def mbTicklePSG(pVIA) + ; pVIA -> [0] +_C003 ; mbTicklePSG() +; libsrc/apple/sndseq.pla: 0402: //puts("VIA address: $"); puth(pVIA); puts(" Timer Diff = "); puti(viaCheck(pVIA)); putln +; libsrc/apple/sndseq.pla: 0403: if viaCheck(pVIA) == 8 and viaCheck(pVIA) == 8 // Check twice + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/sndseq.pla: 0404: pVIA->IER = $7F // Mask all interrupts +; libsrc/apple/sndseq.pla: 0405: //pVIA->ACR = $00 // Stop T1 countdown +; libsrc/apple/sndseq.pla: 0406: pVIA->DDRB = $FF // Output enable port A and B +; libsrc/apple/sndseq.pla: 0407: pVIA->DDRA = $FF +; libsrc/apple/sndseq.pla: 0408: pVIA->IORA = $00 // Reset MockingBoard +; libsrc/apple/sndseq.pla: 0409: //if pVIA->IORA == $00 +; libsrc/apple/sndseq.pla: 0410: pVIA->IORA = $04 // Inactive MockingBoard control lines +; libsrc/apple/sndseq.pla: 0411: //if pVIA->IORA == $04 +; libsrc/apple/sndseq.pla: 0412: // +; libsrc/apple/sndseq.pla: 0413: // At least we know we have some sort of R/W in the ROM +; libsrc/apple/sndseq.pla: 0414: // address space. Most likely a MockingBoard or John Bell +; libsrc/apple/sndseq.pla: 0415: // 6522 board. We will assume its a MockingBoard because +; libsrc/apple/sndseq.pla: 0416: // emulators fail the following PSG read test. +; libsrc/apple/sndseq.pla: 0417: // +; libsrc/apple/sndseq.pla: 0418: //psgWriteWord(pVIA, 2, $DA7E) +; libsrc/apple/sndseq.pla: 0419: //if mbReadP(pVIA, 2) == $7E and mbReadP(pVIA, 3) == $0A +; libsrc/apple/sndseq.pla: 0420: return pVIA + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A008 +_F012 !WORD _A008 + !BYTE $10 ; CN 8 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B001 + !WORD _B001-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A008 +_F013 !WORD _A008 + !BYTE $10 ; CN 8 + !BYTE $40 ; ISEQ +_B001 + !BYTE $4C ; BRFLS _B002 + !WORD _B002-* + !BYTE $2A,$7F ; CB 127 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0421: //fin +; libsrc/apple/sndseq.pla: 0422: //fin +; libsrc/apple/sndseq.pla: 0423: fin +_B002 +_B003 +; libsrc/apple/sndseq.pla: 0424: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0425: end +; libsrc/apple/sndseq.pla: 0426: def mbSearch(slot) + ; slot -> [0] +_C004 ; mbSearch() +; libsrc/apple/sndseq.pla: 0427: if slot >= 0 and slot <= 7 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/sndseq.pla: 0428: if slot +; libsrc/apple/sndseq.pla: 0429: mbVIA1 = mbTicklePSG($C000 + (slot << 8)) +; libsrc/apple/sndseq.pla: 0430: if mbVIA1 +; libsrc/apple/sndseq.pla: 0431: mbVIA2 = mbTicklePSG(mbVIA1 + $80) +; libsrc/apple/sndseq.pla: 0432: return slot + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $66,$00 ; LLW [0] + !BYTE $0E ; CN 7 + !BYTE $4A ; ISLE +_B004 + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $66,$00 ; LLW [0] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $54 ; CALL _C003 +_F014 !WORD _C003 + !BYTE $7E ; DAW _D064+0 +_F015 !WORD _D064+0 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $6A ; LAW _D064+0 +_F016 !WORD _D064+0 + !BYTE $38,$80 ; ADDI 128 + !BYTE $54 ; CALL _C003 +_F017 !WORD _C003 + !BYTE $7A ; SAW _D065+0 +_F018 !WORD _D065+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0433: fin +_B009 +_B010 +; libsrc/apple/sndseq.pla: 0434: else + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; libsrc/apple/sndseq.pla: 0435: for slot = 1 to 7 + !BYTE $0E ; CN 7 + !BYTE $02 ; CN 1 +_B012 + !BYTE $6E,$00 ; DLW [0] +; libsrc/apple/sndseq.pla: 0436: if slot == 3 or slot == 6 +; libsrc/apple/sndseq.pla: 0437: continue + !BYTE $66,$00 ; LLW [0] + !BYTE $06 ; CN 3 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B014 + !WORD _B014-* + !BYTE $66,$00 ; LLW [0] + !BYTE $0C ; CN 6 + !BYTE $40 ; ISEQ +_B014 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +; libsrc/apple/sndseq.pla: 0438: fin +_B015 +_B016 +; libsrc/apple/sndseq.pla: 0439: mbVIA1 = mbTicklePSG($C000 + (slot << 8)) +; libsrc/apple/sndseq.pla: 0440: if mbVIA1 +; libsrc/apple/sndseq.pla: 0441: mbVIA2 = mbTicklePSG(mbVIA1 + $80) +; libsrc/apple/sndseq.pla: 0442: return slot + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $66,$00 ; LLW [0] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $54 ; CALL _C003 +_F019 !WORD _C003 + !BYTE $7E ; DAW _D064+0 +_F020 !WORD _D064+0 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $6A ; LAW _D064+0 +_F021 !WORD _D064+0 + !BYTE $38,$80 ; ADDI 128 + !BYTE $54 ; CALL _C003 +_F022 !WORD _C003 + !BYTE $7A ; SAW _D065+0 +_F023 !WORD _D065+0 + !BYTE $32 ; DROP2 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0443: fin +_B017 +_B018 +; libsrc/apple/sndseq.pla: 0444: next +_B013 + !BYTE $A4 ; INCBRLE _B012 + !WORD _B012-* +_B011 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0445: fin +_B008 +; libsrc/apple/sndseq.pla: 0446: fin +_B005 +_B006 +; libsrc/apple/sndseq.pla: 0447: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0448: end +; libsrc/apple/sndseq.pla: 0449: def psgSetup(pVIA)#0 + ; pVIA -> [0] +_C005 ; psgSetup() +; libsrc/apple/sndseq.pla: 0450: psgWrite(pVIA, MIXER, $3F) // Turn everything off + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/sndseq.pla: 0451: psgWrite(pVIA, AENVAMP, $00) +; libsrc/apple/sndseq.pla: 0452: psgWrite(pVIA, BENVAMP, $00) +; libsrc/apple/sndseq.pla: 0453: psgWrite(pVIA, CENVAMP, $10) +; libsrc/apple/sndseq.pla: 0454: psgWrite(pVIA, NGFREQ, $01) +; libsrc/apple/sndseq.pla: 0455: psgWriteWord(pVIA, ENVPERIOD, $0001) +; libsrc/apple/sndseq.pla: 0456: psgWrite(pVIA, ENVSHAPE, $00) // Single decay +; libsrc/apple/sndseq.pla: 0457: psgWriteWord(pVIA, AFREQ, $0000) // Fast response to update +; libsrc/apple/sndseq.pla: 0458: psgWriteWord(pVIA, BFREQ, $0000) +; libsrc/apple/sndseq.pla: 0459: psgWriteWord(pVIA, CFREQ, $0000) +; libsrc/apple/sndseq.pla: 0460: psgWrite(pVIA, MIXER, $38) // Tone on C, B, A +; libsrc/apple/sndseq.pla: 0461: end + !BYTE $66,$00 ; LLW [0] + !BYTE $0E ; CN 7 + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A007 +_F024 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F025 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F026 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _A007 +_F027 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $0C ; CN 6 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _A007 +_F028 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $16 ; CN 11 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _A006 +_F029 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $1A ; CN 13 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F030 !WORD _A007 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A006 +_F031 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $04 ; CN 2 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A006 +_F032 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A006 +_F033 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $0E ; CN 7 + !BYTE $2A,$38 ; CB 56 + !BYTE $54 ; CALL _A007 +_F034 !WORD _A007 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/sndseq.pla: 0462: // +; libsrc/apple/sndseq.pla: 0463: // Sequence notes through MockingBoard +; libsrc/apple/sndseq.pla: 0464: // +; libsrc/apple/sndseq.pla: 0465: def mbSequence(yield, func)#0 + ; yield -> [0] + ; func -> [2] +_C006 ; mbSequence() +; libsrc/apple/sndseq.pla: 0466: word period, n, yieldTime + ; period -> [4] + ; n -> [6] + ; yieldTime -> [8] +; libsrc/apple/sndseq.pla: 0467: byte note, volume, channel, i, overflow, status, quit + ; note -> [10] + ; volume -> [11] + ; channel -> [12] + ; i -> [13] + ; overflow -> [14] + ; status -> [15] + ; quit -> [16] +; libsrc/apple/sndseq.pla: 0468: +; libsrc/apple/sndseq.pla: 0469: // +; libsrc/apple/sndseq.pla: 0470: // Reset oscillator table +; libsrc/apple/sndseq.pla: 0471: // +; libsrc/apple/sndseq.pla: 0472: indexA[0] = 0; indexA[1] = 0 + !BYTE $58,$11,$02 ; ENTER 17,2 +; libsrc/apple/sndseq.pla: 0473: indexB[0] = 1; indexB[1] = 1 +; libsrc/apple/sndseq.pla: 0474: indexC[0] = 2; indexC[1] = 2 +; libsrc/apple/sndseq.pla: 0475: noteA[0] = 0; noteA[1] = 0 +; libsrc/apple/sndseq.pla: 0476: noteB[0] = 0; noteB[1] = 0 +; libsrc/apple/sndseq.pla: 0477: noteC[0] = 0; noteC[1] = 0 +; libsrc/apple/sndseq.pla: 0478: // +; libsrc/apple/sndseq.pla: 0479: // Get the PSGs ready +; libsrc/apple/sndseq.pla: 0480: // +; libsrc/apple/sndseq.pla: 0481: status = getStatusReg +; libsrc/apple/sndseq.pla: 0482: disableInts +; libsrc/apple/sndseq.pla: 0483: mbVIA1->ACR = $40 // Continuous T1 interrupts +; libsrc/apple/sndseq.pla: 0484: mbVIA1=>T1L = $F9C2 // 16 Ints/sec +; libsrc/apple/sndseq.pla: 0485: mbVIA1=>T1C = $F9C2 // 16 Ints/sec +; libsrc/apple/sndseq.pla: 0486: mbVIA1->IFR = $40 // Clear interrupt +; libsrc/apple/sndseq.pla: 0487: mbVIA1->IER = $C0 // Enable Timer1 interrupt +; libsrc/apple/sndseq.pla: 0488: psgSetup(mbVIA1) +; libsrc/apple/sndseq.pla: 0489: if mbVIA2; psgSetup(mbVIA2); fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D051+0 +_F035 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D051+1 +_F036 !WORD _D051+1 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D052+0 +_F037 !WORD _D052+0 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D052+1 +_F038 !WORD _D052+1 + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D053+0 +_F039 !WORD _D053+0 + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D053+1 +_F040 !WORD _D053+1 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D054+0 +_F041 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D054+1 +_F042 !WORD _D054+1 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D055+0 +_F043 !WORD _D055+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D055+1 +_F044 !WORD _D055+1 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D056+0 +_F045 !WORD _D056+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D056+1 +_F046 !WORD _D056+1 + !BYTE $54 ; CALL _A001 +_F047 !WORD _A001 + !BYTE $74,$0F ; SLB [15] + !BYTE $54 ; CALL _A003 +_F048 !WORD _A003 + !BYTE $2A,$40 ; CB 64 + !BYTE $6A ; LAW _D064+0 +_F049 !WORD _D064+0 + !BYTE $38,$0B ; ADDI 11 + !BYTE $70 ; SB + !BYTE $2C,$C2,$F9 ; CW 63938 + !BYTE $6A ; LAW _D064+0 +_F050 !WORD _D064+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$C2,$F9 ; CW 63938 + !BYTE $6A ; LAW _D064+0 +_F051 !WORD _D064+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$40 ; CB 64 + !BYTE $6A ; LAW _D064+0 +_F052 !WORD _D064+0 + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $2A,$C0 ; CB 192 + !BYTE $6A ; LAW _D064+0 +_F053 !WORD _D064+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D064+0 +_F054 !WORD _D064+0 + !BYTE $54 ; CALL _C005 +_F055 !WORD _C005 + !BYTE $6A ; LAW _D065+0 +_F056 !WORD _D065+0 + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $6A ; LAW _D065+0 +_F057 !WORD _D065+0 + !BYTE $54 ; CALL _C005 +_F058 !WORD _C005 +_B019 +_B020 +; libsrc/apple/sndseq.pla: 0490: overflow = 0 +; libsrc/apple/sndseq.pla: 0491: if yield and func +; libsrc/apple/sndseq.pla: 0492: yieldTime = seqTime + yield +; libsrc/apple/sndseq.pla: 0493: else + !BYTE $00 ; CN 0 + !BYTE $74,$0E ; SLB [14] + !BYTE $66,$00 ; LLW [0] + !BYTE $AC ; BRAND _B021 + !WORD _B021-* + !BYTE $66,$02 ; LLW [2] +_B021 + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $6A ; LAW _D046+0 +_F059 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B023 + !WORD _B023-* +_B022 +; libsrc/apple/sndseq.pla: 0494: yieldTime = $7FFF +; libsrc/apple/sndseq.pla: 0495: fin + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $76,$08 ; SLW [8] +_B023 +; libsrc/apple/sndseq.pla: 0496: updateTime = seqTime +; libsrc/apple/sndseq.pla: 0497: quit = FALSE +; libsrc/apple/sndseq.pla: 0498: repeat + !BYTE $6A ; LAW _D046+0 +_F060 !WORD _D046+0 + !BYTE $7A ; SAW _D048+0 +_F061 !WORD _D048+0 + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B025 +; libsrc/apple/sndseq.pla: 0499: while eventTime == seqTime + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B027 +; libsrc/apple/sndseq.pla: 0500: note = seqEvent->percnote +; libsrc/apple/sndseq.pla: 0501: if note & $80 +; libsrc/apple/sndseq.pla: 0502: // +; libsrc/apple/sndseq.pla: 0503: // Note event +; libsrc/apple/sndseq.pla: 0504: // +; libsrc/apple/sndseq.pla: 0505: volume = seqEvent->perchanvol +; libsrc/apple/sndseq.pla: 0506: channel = (volume & mbVIA2.LSB) >> 7 // Clever - mbVIA2.0 will be $80 if it exists +; libsrc/apple/sndseq.pla: 0507: if volume & $0F +; libsrc/apple/sndseq.pla: 0508: // +; libsrc/apple/sndseq.pla: 0509: // Note on +; libsrc/apple/sndseq.pla: 0510: // +; libsrc/apple/sndseq.pla: 0511: for i = 0 to MAX_MBCH_NOTES-1 + !BYTE $6A ; LAW _D045+0 +_F062 !WORD _D045+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $6C,$0A ; DLB [10] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $6A ; LAW _D045+0 +_F063 !WORD _D045+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $6C,$0B ; DLB [11] + !BYTE $68 ; LAB _D065+0 +_F064 !WORD _D065+0 + !BYTE $94 ; AND + !BYTE $0E ; CN 7 + !BYTE $9C ; SHR + !BYTE $74,$0C ; SLB [12] + !BYTE $64,$0B ; LLB [11] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 +_B035 + !BYTE $6C,$0D ; DLB [13] +; libsrc/apple/sndseq.pla: 0512: // +; libsrc/apple/sndseq.pla: 0513: // Look for available slot in active note table +; libsrc/apple/sndseq.pla: 0514: // +; libsrc/apple/sndseq.pla: 0515: if !notes[channel, i].LSB //or notes[channel, i] == note +; libsrc/apple/sndseq.pla: 0516: break + !BYTE $26 ; LA _D059+0 +_F065 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B037 + !WORD _B037-* + !BYTE $50 ; BRNCH _B034 + !WORD _B034-* +; libsrc/apple/sndseq.pla: 0517: fin +_B037 +_B038 +; libsrc/apple/sndseq.pla: 0518: next +_B036 + !BYTE $A4 ; INCBRLE _B035 + !WORD _B035-* +_B034 + !BYTE $74,$0D ; SLB [13] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0519: // +; libsrc/apple/sndseq.pla: 0520: // Full note table, kick one out +; libsrc/apple/sndseq.pla: 0521: // +; libsrc/apple/sndseq.pla: 0522: if i == MAX_MBCH_NOTES +; libsrc/apple/sndseq.pla: 0523: i = overflow +; libsrc/apple/sndseq.pla: 0524: overflow = (overflow + 1) % MAX_MBCH_NOTES +; libsrc/apple/sndseq.pla: 0525: else + !BYTE $64,$0D ; LLB [13] + !BYTE $12 ; CN 9 + !BYTE $24 ; BRNE _B039 + !WORD _B039-* + !BYTE $64,$0E ; LLB [14] + !BYTE $74,$0D ; SLB [13] + !BYTE $64,$0E ; LLB [14] + !BYTE $8C ; INCR + !BYTE $12 ; CN 9 + !BYTE $8A ; MOD + !BYTE $74,$0E ; SLB [14] + !BYTE $50 ; BRNCH _B040 + !WORD _B040-* +_B039 +; libsrc/apple/sndseq.pla: 0526: numNotes++ + !BYTE $68 ; LAB _D049+0 +_F066 !WORD _D049+0 + !BYTE $8C ; INCR +; libsrc/apple/sndseq.pla: 0527: fin + !BYTE $78 ; SAB _D049+0 +_F067 !WORD _D049+0 +_B040 +; libsrc/apple/sndseq.pla: 0528: notes[channel, i] = note | (volume << 8) +; libsrc/apple/sndseq.pla: 0529: periods[channel, i] = mbOctave0[note & $0F] >> ((note >> 4) & $07) +; libsrc/apple/sndseq.pla: 0530: else + !BYTE $64,$0A ; LLB [10] + !BYTE $64,$0B ; LLB [11] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $26 ; LA _D059+0 +_F068 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $72 ; SW + !BYTE $26 ; LA _D068+0 +_F069 !WORD _D068+0 + !BYTE $64,$0A ; LLB [10] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $64,$0A ; LLB [10] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$07 ; ANDI 7 + !BYTE $9C ; SHR + !BYTE $26 ; LA _D062+0 +_F070 !WORD _D062+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +_B032 +; libsrc/apple/sndseq.pla: 0531: // +; libsrc/apple/sndseq.pla: 0532: // Note off +; libsrc/apple/sndseq.pla: 0533: // +; libsrc/apple/sndseq.pla: 0534: for i = 0 to MAX_MBCH_NOTES-1 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 +_B042 + !BYTE $6C,$0D ; DLB [13] +; libsrc/apple/sndseq.pla: 0535: // +; libsrc/apple/sndseq.pla: 0536: // Remove from active note table +; libsrc/apple/sndseq.pla: 0537: // +; libsrc/apple/sndseq.pla: 0538: if notes[channel, i].LSB == note +; libsrc/apple/sndseq.pla: 0539: notes[channel, i] = 0 +; libsrc/apple/sndseq.pla: 0540: numNotes-- + !BYTE $26 ; LA _D059+0 +_F071 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $60 ; LB + !BYTE $64,$0A ; LLB [10] + !BYTE $24 ; BRNE _B044 + !WORD _B044-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D059+0 +_F072 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $72 ; SW + !BYTE $68 ; LAB _D049+0 +_F073 !WORD _D049+0 + !BYTE $8E ; DECR +; libsrc/apple/sndseq.pla: 0541: break + !BYTE $78 ; SAB _D049+0 +_F074 !WORD _D049+0 + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; libsrc/apple/sndseq.pla: 0542: fin +_B044 +_B045 +; libsrc/apple/sndseq.pla: 0543: next +_B043 + !BYTE $A4 ; INCBRLE _B042 + !WORD _B042-* +_B041 + !BYTE $74,$0D ; SLB [13] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0544: fin +_B033 +; libsrc/apple/sndseq.pla: 0545: updateTime = seqTime +; libsrc/apple/sndseq.pla: 0546: else + !BYTE $6A ; LAW _D046+0 +_F075 !WORD _D046+0 + !BYTE $7A ; SAW _D048+0 +_F076 !WORD _D048+0 + !BYTE $50 ; BRNCH _B031 + !WORD _B031-* +_B030 +; libsrc/apple/sndseq.pla: 0547: // +; libsrc/apple/sndseq.pla: 0548: // Percussion event +; libsrc/apple/sndseq.pla: 0549: // +; libsrc/apple/sndseq.pla: 0550: period = seqEvent->perchanvol +; libsrc/apple/sndseq.pla: 0551: if period +; libsrc/apple/sndseq.pla: 0552: if (period & $80) +; libsrc/apple/sndseq.pla: 0553: psgWrite(mbVIA1, MIXER, $1C) // NG on C, Tone on B, A +; libsrc/apple/sndseq.pla: 0554: psgWrite(mbVIA1, CENVAMP, $10) +; libsrc/apple/sndseq.pla: 0555: psgWrite(mbVIA1, ENVSHAPE, (note >> 4) & $04) +; libsrc/apple/sndseq.pla: 0556: psgWrite(mbVIA1, NGFREQ, (note >> 1) & $1F) +; libsrc/apple/sndseq.pla: 0557: psgWrite(mbVIA1, ENVPERIOD+1, period & $7F) +; libsrc/apple/sndseq.pla: 0558: elsif mbVIA2 + !BYTE $6A ; LAW _D045+0 +_F077 !WORD _D045+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $66,$04 ; LLW [4] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B048 + !WORD _B048-* + !BYTE $6A ; LAW _D064+0 +_F078 !WORD _D064+0 + !BYTE $0E ; CN 7 + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _A007 +_F079 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F080 !WORD _D064+0 + !BYTE $14 ; CN 10 + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _A007 +_F081 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F082 !WORD _D064+0 + !BYTE $1A ; CN 13 + !BYTE $64,$0A ; LLB [10] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$04 ; ANDI 4 + !BYTE $54 ; CALL _A007 +_F083 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F084 !WORD _D064+0 + !BYTE $0C ; CN 6 + !BYTE $64,$0A ; LLB [10] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $3C,$1F ; ANDI 31 + !BYTE $54 ; CALL _A007 +_F085 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F086 !WORD _D064+0 + !BYTE $18 ; CN 12 + !BYTE $66,$04 ; LLW [4] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $54 ; CALL _A007 +_F087 !WORD _A007 + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B048 +; libsrc/apple/sndseq.pla: 0559: psgWrite(mbVIA2, MIXER, $1C) // NG on C, Tone on B, A +; libsrc/apple/sndseq.pla: 0560: psgWrite(mbVIA2, CENVAMP, $10) +; libsrc/apple/sndseq.pla: 0561: psgWrite(mbVIA2, ENVSHAPE, (note >> 4) & $04) +; libsrc/apple/sndseq.pla: 0562: psgWrite(mbVIA2, NGFREQ, (note >> 1) & $1F) +; libsrc/apple/sndseq.pla: 0563: psgWrite(mbVIA2, ENVPERIOD+1, period) +; libsrc/apple/sndseq.pla: 0564: fin + !BYTE $6A ; LAW _D065+0 +_F088 !WORD _D065+0 + !BYTE $4C ; BRFLS _B050 + !WORD _B050-* + !BYTE $6A ; LAW _D065+0 +_F089 !WORD _D065+0 + !BYTE $0E ; CN 7 + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _A007 +_F090 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F091 !WORD _D065+0 + !BYTE $14 ; CN 10 + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _A007 +_F092 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F093 !WORD _D065+0 + !BYTE $1A ; CN 13 + !BYTE $64,$0A ; LLB [10] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$04 ; ANDI 4 + !BYTE $54 ; CALL _A007 +_F094 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F095 !WORD _D065+0 + !BYTE $0C ; CN 6 + !BYTE $64,$0A ; LLB [10] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $3C,$1F ; ANDI 31 + !BYTE $54 ; CALL _A007 +_F096 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F097 !WORD _D065+0 + !BYTE $18 ; CN 12 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A007 +_F098 !WORD _A007 +_B050 +_B049 +; libsrc/apple/sndseq.pla: 0565: else + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B046 +; libsrc/apple/sndseq.pla: 0566: if seqRepeat +; libsrc/apple/sndseq.pla: 0567: // +; libsrc/apple/sndseq.pla: 0568: // Reset sequence +; libsrc/apple/sndseq.pla: 0569: // +; libsrc/apple/sndseq.pla: 0570: musicPlay(seqTrack, TRUE) +; libsrc/apple/sndseq.pla: 0571: seqTime = -1 // Offset seqTime++ later +; libsrc/apple/sndseq.pla: 0572: else + !BYTE $68 ; LAB _D050+0 +_F099 !WORD _D050+0 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $6A ; LAW _D044+0 +_F100 !WORD _D044+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _P000 +_F101 !WORD _P000 + !BYTE $20 ; MINUS ONE + !BYTE $7A ; SAW _D046+0 +_F102 !WORD _D046+0 + !BYTE $50 ; BRNCH _B052 + !WORD _B052-* +_B051 +; libsrc/apple/sndseq.pla: 0573: musicStop +; libsrc/apple/sndseq.pla: 0574: fin + !BYTE $54 ; CALL _P001 +_F103 !WORD _P001 +_B052 +; libsrc/apple/sndseq.pla: 0575: quit = TRUE // Exit out +; libsrc/apple/sndseq.pla: 0576: break + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +; libsrc/apple/sndseq.pla: 0577: fin +_B047 +; libsrc/apple/sndseq.pla: 0578: fin +_B031 +; libsrc/apple/sndseq.pla: 0579: // +; libsrc/apple/sndseq.pla: 0580: // Next event +; libsrc/apple/sndseq.pla: 0581: // +; libsrc/apple/sndseq.pla: 0582: seqEvent = seqEvent + t_event +; libsrc/apple/sndseq.pla: 0583: eventTime = seqEvent->deltatime + eventTime +; libsrc/apple/sndseq.pla: 0584: loop + !BYTE $6A ; LAW _D045+0 +_F104 !WORD _D045+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7E ; DAW _D045+0 +_F105 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $B6 ; ADDAW _D047+0 +_F106 !WORD _D047+0 + !BYTE $7A ; SAW _D047+0 +_F107 !WORD _D047+0 +_B029 + !BYTE $6A ; LAW _D047+0 +_F108 !WORD _D047+0 + !BYTE $6A ; LAW _D046+0 +_F109 !WORD _D046+0 + !BYTE $22 ; BREQ _B027 + !WORD _B027-* +_B028 +; libsrc/apple/sndseq.pla: 0585: if updateTime <= seqTime +; libsrc/apple/sndseq.pla: 0586: // +; libsrc/apple/sndseq.pla: 0587: // Time slice active note tables (arpeggio) +; libsrc/apple/sndseq.pla: 0588: // +; libsrc/apple/sndseq.pla: 0589: for channel = 0 to 1 + !BYTE $6A ; LAW _D048+0 +_F110 !WORD _D048+0 + !BYTE $6A ; LAW _D046+0 +_F111 !WORD _D046+0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B053 + !WORD _B053-* + !BYTE $02 ; CN 1 + !BYTE $00 ; CN 0 +_B056 + !BYTE $6C,$0C ; DLB [12] +; libsrc/apple/sndseq.pla: 0590: // +; libsrc/apple/sndseq.pla: 0591: // Multiplex oscillator A +; libsrc/apple/sndseq.pla: 0592: // +; libsrc/apple/sndseq.pla: 0593: i = indexA[channel] +; libsrc/apple/sndseq.pla: 0594: repeat + !BYTE $26 ; LA _D051+0 +_F112 !WORD _D051+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $74,$0D ; SLB [13] +_B059 +; libsrc/apple/sndseq.pla: 0595: i = (i + 3) % MAX_MBCH_NOTES +; libsrc/apple/sndseq.pla: 0596: n = notes[channel, i] +; libsrc/apple/sndseq.pla: 0597: if n // Non-zero volume +; libsrc/apple/sndseq.pla: 0598: break + !BYTE $64,$0D ; LLB [13] + !BYTE $38,$03 ; ADDI 3 + !BYTE $12 ; CN 9 + !BYTE $8A ; MOD + !BYTE $74,$0D ; SLB [13] + !BYTE $26 ; LA _D059+0 +_F113 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B061 + !WORD _B061-* + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; libsrc/apple/sndseq.pla: 0599: fin +_B061 +_B062 +; libsrc/apple/sndseq.pla: 0600: until i == indexA[channel] +_B060 + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D051+0 +_F114 !WORD _D051+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B059 + !WORD _B059-* +_B058 +; libsrc/apple/sndseq.pla: 0601: if n.LSB <> noteA[channel] +; libsrc/apple/sndseq.pla: 0602: psgWriteTone(mbVIAs[channel], AFREQ, periods[channel, i], n.MSB) +; libsrc/apple/sndseq.pla: 0603: noteA[channel] = n.LSB +; libsrc/apple/sndseq.pla: 0604: indexA[channel] = i +; libsrc/apple/sndseq.pla: 0605: fin + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D054+0 +_F115 !WORD _D054+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B063 + !WORD _B063-* + !BYTE $26 ; LA _D063+0 +_F116 !WORD _D063+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D062+0 +_F117 !WORD _D062+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _A005 +_F118 !WORD _A005 + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D054+0 +_F119 !WORD _D054+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D051+0 +_F120 !WORD _D051+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B063 +_B064 +; libsrc/apple/sndseq.pla: 0606: // +; libsrc/apple/sndseq.pla: 0607: // Multiplex oscillator B +; libsrc/apple/sndseq.pla: 0608: // +; libsrc/apple/sndseq.pla: 0609: i = indexB[channel] +; libsrc/apple/sndseq.pla: 0610: repeat + !BYTE $26 ; LA _D052+0 +_F121 !WORD _D052+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $74,$0D ; SLB [13] +_B066 +; libsrc/apple/sndseq.pla: 0611: i = (i + 3) % MAX_MBCH_NOTES +; libsrc/apple/sndseq.pla: 0612: n = notes[channel, i] +; libsrc/apple/sndseq.pla: 0613: if n // Non-zero volume +; libsrc/apple/sndseq.pla: 0614: break + !BYTE $64,$0D ; LLB [13] + !BYTE $38,$03 ; ADDI 3 + !BYTE $12 ; CN 9 + !BYTE $8A ; MOD + !BYTE $74,$0D ; SLB [13] + !BYTE $26 ; LA _D059+0 +_F122 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $50 ; BRNCH _B065 + !WORD _B065-* +; libsrc/apple/sndseq.pla: 0615: fin +_B068 +_B069 +; libsrc/apple/sndseq.pla: 0616: until i == indexB[channel] +_B067 + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D052+0 +_F123 !WORD _D052+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B066 + !WORD _B066-* +_B065 +; libsrc/apple/sndseq.pla: 0617: if n.LSB <> noteB[channel] +; libsrc/apple/sndseq.pla: 0618: psgWriteTone(mbVIAs[channel], BFREQ, periods[channel, i], n.MSB) +; libsrc/apple/sndseq.pla: 0619: noteB[channel] = n.LSB +; libsrc/apple/sndseq.pla: 0620: indexB[channel] = i +; libsrc/apple/sndseq.pla: 0621: fin + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D055+0 +_F124 !WORD _D055+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B070 + !WORD _B070-* + !BYTE $26 ; LA _D063+0 +_F125 !WORD _D063+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $26 ; LA _D062+0 +_F126 !WORD _D062+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _A005 +_F127 !WORD _A005 + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D055+0 +_F128 !WORD _D055+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D052+0 +_F129 !WORD _D052+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B070 +_B071 +; libsrc/apple/sndseq.pla: 0622: // +; libsrc/apple/sndseq.pla: 0623: // Multiplex oscillator C +; libsrc/apple/sndseq.pla: 0624: // +; libsrc/apple/sndseq.pla: 0625: i = indexC[channel] +; libsrc/apple/sndseq.pla: 0626: repeat + !BYTE $26 ; LA _D053+0 +_F130 !WORD _D053+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $74,$0D ; SLB [13] +_B073 +; libsrc/apple/sndseq.pla: 0627: i = (i + 3) % MAX_MBCH_NOTES +; libsrc/apple/sndseq.pla: 0628: n = notes[channel, i] +; libsrc/apple/sndseq.pla: 0629: if n // Non-zero volume +; libsrc/apple/sndseq.pla: 0630: break + !BYTE $64,$0D ; LLB [13] + !BYTE $38,$03 ; ADDI 3 + !BYTE $12 ; CN 9 + !BYTE $8A ; MOD + !BYTE $74,$0D ; SLB [13] + !BYTE $26 ; LA _D059+0 +_F131 !WORD _D059+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $50 ; BRNCH _B072 + !WORD _B072-* +; libsrc/apple/sndseq.pla: 0631: fin +_B075 +_B076 +; libsrc/apple/sndseq.pla: 0632: until i == indexC[channel] +_B074 + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D053+0 +_F132 !WORD _D053+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B073 + !WORD _B073-* +_B072 +; libsrc/apple/sndseq.pla: 0633: if n.LSB <> noteC[channel] +; libsrc/apple/sndseq.pla: 0634: psgWrite(mbVIAs[channel], MIXER, $38) // Tone on C, B, A +; libsrc/apple/sndseq.pla: 0635: psgWriteTone(mbVIAs[channel], CFREQ, periods[channel, i], n.MSB) +; libsrc/apple/sndseq.pla: 0636: noteC[channel] = n.LSB +; libsrc/apple/sndseq.pla: 0637: indexC[channel] = i +; libsrc/apple/sndseq.pla: 0638: fin + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D056+0 +_F133 !WORD _D056+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B077 + !WORD _B077-* + !BYTE $26 ; LA _D063+0 +_F134 !WORD _D063+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $0E ; CN 7 + !BYTE $2A,$38 ; CB 56 + !BYTE $54 ; CALL _A007 +_F135 !WORD _A007 + !BYTE $26 ; LA _D063+0 +_F136 !WORD _D063+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $08 ; CN 4 + !BYTE $26 ; LA _D062+0 +_F137 !WORD _D062+0 + !BYTE $B8,$0C ; IDXLB [12] + !BYTE $62 ; LW + !BYTE $B8,$0D ; IDXLB [13] + !BYTE $62 ; LW + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _A005 +_F138 !WORD _A005 + !BYTE $64,$06 ; LLB [6] + !BYTE $26 ; LA _D056+0 +_F139 !WORD _D056+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $64,$0D ; LLB [13] + !BYTE $26 ; LA _D053+0 +_F140 !WORD _D053+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B077 +_B078 +; libsrc/apple/sndseq.pla: 0639: next +_B057 + !BYTE $A4 ; INCBRLE _B056 + !WORD _B056-* +_B055 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0640: updateTime = seqTime + MB_ARPEGGIO - (numNotes >> 2) +; libsrc/apple/sndseq.pla: 0641: fin + !BYTE $6A ; LAW _D046+0 +_F141 !WORD _D046+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $68 ; LAB _D049+0 +_F142 !WORD _D049+0 + !BYTE $04 ; CN 2 + !BYTE $9C ; SHR + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D048+0 +_F143 !WORD _D048+0 +_B053 +_B054 +; libsrc/apple/sndseq.pla: 0642: // +; libsrc/apple/sndseq.pla: 0643: // Increment time tick +; libsrc/apple/sndseq.pla: 0644: // +; libsrc/apple/sndseq.pla: 0645: seqTime++ + !BYTE $6A ; LAW _D046+0 +_F144 !WORD _D046+0 + !BYTE $8C ; INCR +; libsrc/apple/sndseq.pla: 0646: while !(mbVIA1->IFR & $40) // Wait for T1 interrupt + !BYTE $7A ; SAW _D046+0 +_F145 !WORD _D046+0 + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B079 +; libsrc/apple/sndseq.pla: 0647: if a2keypressed(); quit = TRUE; break; fin + !BYTE $54 ; CALL _A011 +_F146 !WORD _A011 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $20 ; MINUS ONE + !BYTE $74,$10 ; SLB [16] + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B082 +_B083 +; libsrc/apple/sndseq.pla: 0648: loop +_B081 + !BYTE $6A ; LAW _D064+0 +_F147 !WORD _D064+0 + !BYTE $38,$0D ; ADDI 13 + !BYTE $60 ; LB + !BYTE $3C,$40 ; ANDI 64 + !BYTE $4C ; BRFLS _B079 + !WORD _B079-* +_B080 +; libsrc/apple/sndseq.pla: 0649: mbVIA1->IFR = $40 // Clear interrupt +; libsrc/apple/sndseq.pla: 0650: if yieldTime <= seqTime; func()#0; yieldTime = seqTime + yield; fin + !BYTE $2A,$40 ; CB 64 + !BYTE $6A ; LAW _D064+0 +_F148 !WORD _D064+0 + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $6A ; LAW _D046+0 +_F149 !WORD _D046+0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $66,$02 ; LLW [2] + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _D046+0 +_F150 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$08 ; SLW [8] +_B084 +_B085 +; libsrc/apple/sndseq.pla: 0651: until quit +_B026 + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* +_B024 +; libsrc/apple/sndseq.pla: 0652: psgWrite(mbVIA1, MIXER, $FF) // Turn everything off +; libsrc/apple/sndseq.pla: 0653: psgWrite(mbVIA1, AENVAMP, $00) +; libsrc/apple/sndseq.pla: 0654: psgWrite(mbVIA1, BENVAMP, $00) +; libsrc/apple/sndseq.pla: 0655: psgWrite(mbVIA1, CENVAMP, $00) +; libsrc/apple/sndseq.pla: 0656: if mbVIA2 +; libsrc/apple/sndseq.pla: 0657: psgWrite(mbVIA2, MIXER, $FF) +; libsrc/apple/sndseq.pla: 0658: psgWrite(mbVIA2, AENVAMP, $00) +; libsrc/apple/sndseq.pla: 0659: psgWrite(mbVIA2, BENVAMP, $00) +; libsrc/apple/sndseq.pla: 0660: psgWrite(mbVIA2, CENVAMP, $00) +; libsrc/apple/sndseq.pla: 0661: fin + !BYTE $6A ; LAW _D064+0 +_F151 !WORD _D064+0 + !BYTE $0E ; CN 7 + !BYTE $2A,$FF ; CB 255 + !BYTE $54 ; CALL _A007 +_F152 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F153 !WORD _D064+0 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F154 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F155 !WORD _D064+0 + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F156 !WORD _A007 + !BYTE $6A ; LAW _D064+0 +_F157 !WORD _D064+0 + !BYTE $14 ; CN 10 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F158 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F159 !WORD _D065+0 + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $6A ; LAW _D065+0 +_F160 !WORD _D065+0 + !BYTE $0E ; CN 7 + !BYTE $2A,$FF ; CB 255 + !BYTE $54 ; CALL _A007 +_F161 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F162 !WORD _D065+0 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F163 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F164 !WORD _D065+0 + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F165 !WORD _A007 + !BYTE $6A ; LAW _D065+0 +_F166 !WORD _D065+0 + !BYTE $14 ; CN 10 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A007 +_F167 !WORD _A007 +_B086 +_B087 +; libsrc/apple/sndseq.pla: 0662: //mbVIA1->ACR = $00 // Stop T1 countdown +; libsrc/apple/sndseq.pla: 0663: mbVIA1->IER = $7F // Mask all interrupts +; libsrc/apple/sndseq.pla: 0664: mbVIA1->IFR = $40 // Clear interrupt +; libsrc/apple/sndseq.pla: 0665: setStatusReg(status) +; libsrc/apple/sndseq.pla: 0666: end + !BYTE $2A,$7F ; CB 127 + !BYTE $6A ; LAW _D064+0 +_F168 !WORD _D064+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $2A,$40 ; CB 64 + !BYTE $6A ; LAW _D064+0 +_F169 !WORD _D064+0 + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $54 ; CALL _A002 +_F170 !WORD _A002 + !BYTE $5A,$11 ; LEAVE 17 +; libsrc/apple/sndseq.pla: 0667: // +; libsrc/apple/sndseq.pla: 0668: // Sequence notes through Apple II speaker +; libsrc/apple/sndseq.pla: 0669: // +; libsrc/apple/sndseq.pla: 0670: def spkrSequence(yield, func)#0 + ; yield -> [0] + ; func -> [2] +_P002 ; spkrSequence(yield, func)#0() +_C007 ; spkrSequence() +; libsrc/apple/sndseq.pla: 0671: word period, duration, yieldTime + ; period -> [4] + ; duration -> [6] + ; yieldTime -> [8] +; libsrc/apple/sndseq.pla: 0672: byte note, i, n, overflow + ; note -> [10] + ; i -> [11] + ; n -> [12] + ; overflow -> [13] +; libsrc/apple/sndseq.pla: 0673: +; libsrc/apple/sndseq.pla: 0674: // +; libsrc/apple/sndseq.pla: 0675: // Start sequencing +; libsrc/apple/sndseq.pla: 0676: // +; libsrc/apple/sndseq.pla: 0677: overflow = 0 + !BYTE $58,$0E,$02 ; ENTER 14,2 +; libsrc/apple/sndseq.pla: 0678: if yield and func +; libsrc/apple/sndseq.pla: 0679: yieldTime = seqTime + yield +; libsrc/apple/sndseq.pla: 0680: else + !BYTE $00 ; CN 0 + !BYTE $74,$0D ; SLB [13] + !BYTE $66,$00 ; LLW [0] + !BYTE $AC ; BRAND _B088 + !WORD _B088-* + !BYTE $66,$02 ; LLW [2] +_B088 + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* + !BYTE $6A ; LAW _D046+0 +_F171 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B090 + !WORD _B090-* +_B089 +; libsrc/apple/sndseq.pla: 0681: yieldTime = $7FFF +; libsrc/apple/sndseq.pla: 0682: fin + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $76,$08 ; SLW [8] +_B090 +; libsrc/apple/sndseq.pla: 0683: updateTime = seqTime +; libsrc/apple/sndseq.pla: 0684: repeat + !BYTE $6A ; LAW _D046+0 +_F172 !WORD _D046+0 + !BYTE $7A ; SAW _D048+0 +_F173 !WORD _D048+0 +_B092 +; libsrc/apple/sndseq.pla: 0685: while eventTime == seqTime + !BYTE $50 ; BRNCH _B096 + !WORD _B096-* +_B094 +; libsrc/apple/sndseq.pla: 0686: note = seqEvent->percnote +; libsrc/apple/sndseq.pla: 0687: if note & $80 +; libsrc/apple/sndseq.pla: 0688: // +; libsrc/apple/sndseq.pla: 0689: // Note event +; libsrc/apple/sndseq.pla: 0690: // +; libsrc/apple/sndseq.pla: 0691: if seqEvent->perchanvol & $0F +; libsrc/apple/sndseq.pla: 0692: // +; libsrc/apple/sndseq.pla: 0693: // Note on +; libsrc/apple/sndseq.pla: 0694: // +; libsrc/apple/sndseq.pla: 0695: for i = 0 to MAX_SPKR_NOTES-1 + !BYTE $6A ; LAW _D045+0 +_F174 !WORD _D045+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $6C,$0A ; DLB [10] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B097 + !WORD _B097-* + !BYTE $6A ; LAW _D045+0 +_F175 !WORD _D045+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $4C ; BRFLS _B099 + !WORD _B099-* + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B102 + !BYTE $6C,$0B ; DLB [11] +; libsrc/apple/sndseq.pla: 0696: // +; libsrc/apple/sndseq.pla: 0697: // Look for available slot in active note table +; libsrc/apple/sndseq.pla: 0698: // +; libsrc/apple/sndseq.pla: 0699: if !notes1[i] or note == notes1[i] +; libsrc/apple/sndseq.pla: 0700: break + !BYTE $26 ; LA _D057+0 +_F176 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B104 + !WORD _B104-* + !BYTE $64,$0A ; LLB [10] + !BYTE $26 ; LA _D057+0 +_F177 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $40 ; ISEQ +_B104 + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $50 ; BRNCH _B101 + !WORD _B101-* +; libsrc/apple/sndseq.pla: 0701: fin +_B105 +_B106 +; libsrc/apple/sndseq.pla: 0702: next +_B103 + !BYTE $A4 ; INCBRLE _B102 + !WORD _B102-* +_B101 + !BYTE $74,$0B ; SLB [11] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0703: if i == MAX_SPKR_NOTES +; libsrc/apple/sndseq.pla: 0704: // +; libsrc/apple/sndseq.pla: 0705: // Full note table, kick one out +; libsrc/apple/sndseq.pla: 0706: // +; libsrc/apple/sndseq.pla: 0707: overflow = (overflow + 1) & (MAX_SPKR_NOTES-1) +; libsrc/apple/sndseq.pla: 0708: i = overflow +; libsrc/apple/sndseq.pla: 0709: elsif !notes1[i] + !BYTE $64,$0B ; LLB [11] + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B107 + !WORD _B107-* + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR + !BYTE $3C,$03 ; ANDI 3 + !BYTE $6C,$0D ; DLB [13] + !BYTE $74,$0B ; SLB [11] + !BYTE $50 ; BRNCH _B108 + !WORD _B108-* +_B107 +; libsrc/apple/sndseq.pla: 0710: // +; libsrc/apple/sndseq.pla: 0711: // Add new note +; libsrc/apple/sndseq.pla: 0712: // +; libsrc/apple/sndseq.pla: 0713: numNotes++ + !BYTE $26 ; LA _D057+0 +_F178 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B109 + !WORD _B109-* + !BYTE $68 ; LAB _D049+0 +_F179 !WORD _D049+0 + !BYTE $8C ; INCR +; libsrc/apple/sndseq.pla: 0714: fin + !BYTE $78 ; SAB _D049+0 +_F180 !WORD _D049+0 +_B109 +_B108 +; libsrc/apple/sndseq.pla: 0715: notes1[i] = note +; libsrc/apple/sndseq.pla: 0716: periods1[i] = spkrOctave0[note & $0F] >> ((note >> 4) & $07) +; libsrc/apple/sndseq.pla: 0717: else + !BYTE $64,$0A ; LLB [10] + !BYTE $26 ; LA _D057+0 +_F181 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $72 ; SW + !BYTE $26 ; LA _D067+0 +_F182 !WORD _D067+0 + !BYTE $64,$0A ; LLB [10] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $64,$0A ; LLB [10] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$07 ; ANDI 7 + !BYTE $9C ; SHR + !BYTE $26 ; LA _D060+0 +_F183 !WORD _D060+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B100 + !WORD _B100-* +_B099 +; libsrc/apple/sndseq.pla: 0718: // +; libsrc/apple/sndseq.pla: 0719: // Note off +; libsrc/apple/sndseq.pla: 0720: // +; libsrc/apple/sndseq.pla: 0721: for i = 0 to MAX_SPKR_NOTES-1 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B111 + !BYTE $6C,$0B ; DLB [11] +; libsrc/apple/sndseq.pla: 0722: // +; libsrc/apple/sndseq.pla: 0723: // Remove from active note table +; libsrc/apple/sndseq.pla: 0724: // +; libsrc/apple/sndseq.pla: 0725: if notes1[i] == note +; libsrc/apple/sndseq.pla: 0726: notes1[i] = 0 +; libsrc/apple/sndseq.pla: 0727: numNotes-- + !BYTE $26 ; LA _D057+0 +_F184 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $64,$0A ; LLB [10] + !BYTE $24 ; BRNE _B113 + !WORD _B113-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D057+0 +_F185 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $72 ; SW + !BYTE $68 ; LAB _D049+0 +_F186 !WORD _D049+0 + !BYTE $8E ; DECR +; libsrc/apple/sndseq.pla: 0728: break + !BYTE $78 ; SAB _D049+0 +_F187 !WORD _D049+0 + !BYTE $50 ; BRNCH _B110 + !WORD _B110-* +; libsrc/apple/sndseq.pla: 0729: fin +_B113 +_B114 +; libsrc/apple/sndseq.pla: 0730: next +_B112 + !BYTE $A4 ; INCBRLE _B111 + !WORD _B111-* +_B110 + !BYTE $74,$0B ; SLB [11] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0731: fin +_B100 +; libsrc/apple/sndseq.pla: 0732: else + !BYTE $50 ; BRNCH _B098 + !WORD _B098-* +_B097 +; libsrc/apple/sndseq.pla: 0733: // +; libsrc/apple/sndseq.pla: 0734: // Percussion event +; libsrc/apple/sndseq.pla: 0735: // +; libsrc/apple/sndseq.pla: 0736: if seqEvent->perchanvol +; libsrc/apple/sndseq.pla: 0737: //spkrPWM($D000, 0, 64) // Play some random sample as percussion +; libsrc/apple/sndseq.pla: 0738: else + !BYTE $6A ; LAW _D045+0 +_F188 !WORD _D045+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B115 + !WORD _B115-* + !BYTE $50 ; BRNCH _B116 + !WORD _B116-* +_B115 +; libsrc/apple/sndseq.pla: 0739: if seqRepeat +; libsrc/apple/sndseq.pla: 0740: musicPlay(seqTrack, TRUE) +; libsrc/apple/sndseq.pla: 0741: else + !BYTE $68 ; LAB _D050+0 +_F189 !WORD _D050+0 + !BYTE $4C ; BRFLS _B117 + !WORD _B117-* + !BYTE $6A ; LAW _D044+0 +_F190 !WORD _D044+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _P000 +_F191 !WORD _P000 + !BYTE $50 ; BRNCH _B118 + !WORD _B118-* +_B117 +; libsrc/apple/sndseq.pla: 0742: musicStop +; libsrc/apple/sndseq.pla: 0743: fin + !BYTE $54 ; CALL _P001 +_F192 !WORD _P001 +_B118 +; libsrc/apple/sndseq.pla: 0744: return + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/apple/sndseq.pla: 0745: fin +_B116 +; libsrc/apple/sndseq.pla: 0746: fin +_B098 +; libsrc/apple/sndseq.pla: 0747: // +; libsrc/apple/sndseq.pla: 0748: // Next event +; libsrc/apple/sndseq.pla: 0749: // +; libsrc/apple/sndseq.pla: 0750: seqEvent = seqEvent + t_event +; libsrc/apple/sndseq.pla: 0751: eventTime = eventTime + seqEvent->deltatime +; libsrc/apple/sndseq.pla: 0752: loop + !BYTE $6A ; LAW _D045+0 +_F193 !WORD _D045+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D045+0 +_F194 !WORD _D045+0 + !BYTE $6A ; LAW _D047+0 +_F195 !WORD _D047+0 + !BYTE $6A ; LAW _D045+0 +_F196 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D047+0 +_F197 !WORD _D047+0 +_B096 + !BYTE $6A ; LAW _D047+0 +_F198 !WORD _D047+0 + !BYTE $6A ; LAW _D046+0 +_F199 !WORD _D046+0 + !BYTE $22 ; BREQ _B094 + !WORD _B094-* +_B095 +; libsrc/apple/sndseq.pla: 0753: if numNotes > 1 +; libsrc/apple/sndseq.pla: 0754: for i = 0 to MAX_SPKR_NOTES-1 + !BYTE $68 ; LAB _D049+0 +_F200 !WORD _D049+0 + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B119 + !WORD _B119-* + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B122 + !BYTE $6C,$0B ; DLB [11] +; libsrc/apple/sndseq.pla: 0755: if notes1[i] +; libsrc/apple/sndseq.pla: 0756: spkrTone(periods1[i], arpeggioDuration[numNotes])#0 +; libsrc/apple/sndseq.pla: 0757: fin + !BYTE $26 ; LA _D057+0 +_F201 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B124 + !WORD _B124-* + !BYTE $26 ; LA _D060+0 +_F202 !WORD _D060+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $26 ; LA _D069+0 +_F203 !WORD _D069+0 + !BYTE $BC ; IDXAB _D049+0 +_F204 !WORD _D049+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D040+0 +_F205 !WORD _D040+0 + !BYTE $56 ; ICAL +_B124 +_B125 +; libsrc/apple/sndseq.pla: 0758: next +_B123 + !BYTE $A4 ; INCBRLE _B122 + !WORD _B122-* +_B121 + !BYTE $74,$0B ; SLB [11] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0759: seqTime++ + !BYTE $6A ; LAW _D046+0 +_F206 !WORD _D046+0 + !BYTE $8C ; INCR +; libsrc/apple/sndseq.pla: 0760: else + !BYTE $7A ; SAW _D046+0 +_F207 !WORD _D046+0 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +_B119 +; libsrc/apple/sndseq.pla: 0761: period = 0 +; libsrc/apple/sndseq.pla: 0762: for i = 0 to MAX_SPKR_NOTES-1 + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B127 + !BYTE $6C,$0B ; DLB [11] +; libsrc/apple/sndseq.pla: 0763: if notes1[i] +; libsrc/apple/sndseq.pla: 0764: period = periods1[i] +; libsrc/apple/sndseq.pla: 0765: break; + !BYTE $26 ; LA _D057+0 +_F208 !WORD _D057+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B129 + !WORD _B129-* + !BYTE $26 ; LA _D060+0 +_F209 !WORD _D060+0 + !BYTE $B8,$0B ; IDXLB [11] + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +; libsrc/apple/sndseq.pla: 0766: fin +_B129 +_B130 +; libsrc/apple/sndseq.pla: 0767: next +_B128 + !BYTE $A4 ; INCBRLE _B127 + !WORD _B127-* +_B126 + !BYTE $74,$0B ; SLB [11] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0768: duration = eventTime - seqTime +; libsrc/apple/sndseq.pla: 0769: seqTime = duration + seqTime +; libsrc/apple/sndseq.pla: 0770: spkrTone(period, DUR16TH * duration)#0 +; libsrc/apple/sndseq.pla: 0771: fin + !BYTE $6A ; LAW _D047+0 +_F210 !WORD _D047+0 + !BYTE $6A ; LAW _D046+0 +_F211 !WORD _D046+0 + !BYTE $84 ; SUB + !BYTE $6E,$06 ; DLW [6] + !BYTE $B6 ; ADDAW _D046+0 +_F212 !WORD _D046+0 + !BYTE $7A ; SAW _D046+0 +_F213 !WORD _D046+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $10 ; CN 8 + !BYTE $66,$06 ; LLW [6] + !BYTE $86 ; MUL + !BYTE $6A ; LAW _D040+0 +_F214 !WORD _D040+0 + !BYTE $56 ; ICAL +_B120 +; libsrc/apple/sndseq.pla: 0772: if keypressed(); return; fin + !BYTE $6A ; LAW _D042+0 +_F215 !WORD _D042+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B131 + !WORD _B131-* + !BYTE $5A,$0E ; LEAVE 14 +_B131 +_B132 +; libsrc/apple/sndseq.pla: 0773: if yieldTime <= seqTime; func()#0; yieldTime = seqTime + yield; fin + !BYTE $66,$08 ; LLW [8] + !BYTE $6A ; LAW _D046+0 +_F216 !WORD _D046+0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B133 + !WORD _B133-* + !BYTE $66,$02 ; LLW [2] + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _D046+0 +_F217 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$08 ; SLW [8] +_B133 +_B134 +; libsrc/apple/sndseq.pla: 0774: until FALSE +_B093 + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B091 +; libsrc/apple/sndseq.pla: 0775: end + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/apple/sndseq.pla: 0776: // +; libsrc/apple/sndseq.pla: 0777: // No sequence, just waste time and yield +; libsrc/apple/sndseq.pla: 0778: // +; libsrc/apple/sndseq.pla: 0779: def noSequence(yield, func)#0 + ; yield -> [0] + ; func -> [2] +_C008 ; noSequence() +; libsrc/apple/sndseq.pla: 0780: // +; libsrc/apple/sndseq.pla: 0781: // Start wasting time +; libsrc/apple/sndseq.pla: 0782: // +; libsrc/apple/sndseq.pla: 0783: if !yield or !func + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/sndseq.pla: 0784: yield = 0 +; libsrc/apple/sndseq.pla: 0785: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B135 + !WORD _B135-* + !BYTE $66,$02 ; LLW [2] + !BYTE $80 ; NOT +_B135 + !BYTE $4C ; BRFLS _B136 + !WORD _B136-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B136 +_B137 +; libsrc/apple/sndseq.pla: 0786: seqTime = 0 +; libsrc/apple/sndseq.pla: 0787: repeat + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D046+0 +_F218 !WORD _D046+0 +_B139 +; libsrc/apple/sndseq.pla: 0788: seqTime++ + !BYTE $6A ; LAW _D046+0 +_F219 !WORD _D046+0 + !BYTE $8C ; INCR +; libsrc/apple/sndseq.pla: 0789: if seqTime < 0; seqTime = 1; fin // Capture wrap-around + !BYTE $7E ; DAW _D046+0 +_F220 !WORD _D046+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B141 + !WORD _B141-* + !BYTE $02 ; CN 1 + !BYTE $7A ; SAW _D046+0 +_F221 !WORD _D046+0 +_B141 +_B142 +; libsrc/apple/sndseq.pla: 0790: spkrTone(0, DUR16TH) // Waste 16th of a second playing silence +; libsrc/apple/sndseq.pla: 0791: if keypressed(); return; fin + !BYTE $00 ; CN 0 + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _D040+0 +_F222 !WORD _D040+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D042+0 +_F223 !WORD _D042+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B143 + !WORD _B143-* + !BYTE $5A,$04 ; LEAVE 4 +_B143 +_B144 +; libsrc/apple/sndseq.pla: 0792: if yield == seqTime; func()#0; seqTime = 0; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D046+0 +_F224 !WORD _D046+0 + !BYTE $24 ; BRNE _B145 + !WORD _B145-* + !BYTE $66,$02 ; LLW [2] + !BYTE $56 ; ICAL + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D046+0 +_F225 !WORD _D046+0 +_B145 +_B146 +; libsrc/apple/sndseq.pla: 0793: until FALSE +_B140 + !BYTE $50 ; BRNCH _B139 + !WORD _B139-* +_B138 +; libsrc/apple/sndseq.pla: 0794: end + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/sndseq.pla: 0795: // +; libsrc/apple/sndseq.pla: 0796: // Start sequencing music track +; libsrc/apple/sndseq.pla: 0797: // +; libsrc/apple/sndseq.pla: 0798: export def musicPlay(track, rept)#0 + ; track -> [0] + ; rept -> [2] +_P000 ; musicPlay(track, rept)#0() +_C009 ; musicPlay() +; libsrc/apple/sndseq.pla: 0799: byte i + ; i -> [4] +; libsrc/apple/sndseq.pla: 0800: +; libsrc/apple/sndseq.pla: 0801: // +; libsrc/apple/sndseq.pla: 0802: // Select proper sequencer based on hardware +; libsrc/apple/sndseq.pla: 0803: // +; libsrc/apple/sndseq.pla: 0804: if mbSlot > 0 + !BYTE $58,$05,$02 ; ENTER 5,2 +; libsrc/apple/sndseq.pla: 0805: musicSequence = @mbSequence +; libsrc/apple/sndseq.pla: 0806: else + !BYTE $6A ; LAW _D066+0 +_F226 !WORD _D066+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B147 + !WORD _B147-* + !BYTE $26 ; LA _C006+0 +_F227 !WORD _C006+0 + !BYTE $7A ; SAW _D039+0 +_F228 !WORD _D039+0 + !BYTE $50 ; BRNCH _B148 + !WORD _B148-* +_B147 +; libsrc/apple/sndseq.pla: 0807: musicSequence = @spkrSequence +; libsrc/apple/sndseq.pla: 0808: fin + !BYTE $26 ; LA _C007+0 +_F229 !WORD _C007+0 + !BYTE $7A ; SAW _D039+0 +_F230 !WORD _D039+0 +_B148 +; libsrc/apple/sndseq.pla: 0809: // +; libsrc/apple/sndseq.pla: 0810: // Zero out active notes +; libsrc/apple/sndseq.pla: 0811: // +; libsrc/apple/sndseq.pla: 0812: for i = 0 to MAX_MBCH_NOTES-1; notes1[i] = 0; notes2[i] = 0; next + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 +_B150 + !BYTE $6C,$04 ; DLB [4] + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D057+0 +_F231 !WORD _D057+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D058+0 +_F232 !WORD _D058+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $72 ; SW +_B151 + !BYTE $A4 ; INCBRLE _B150 + !WORD _B150-* +_B149 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0813: for i = 0 to MAX_MBCH_NOTES-1; periods1[i] = 0; periods2[i] = 0; next + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 +_B153 + !BYTE $6C,$04 ; DLB [4] + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D060+0 +_F233 !WORD _D060+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D061+0 +_F234 !WORD _D061+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $72 ; SW +_B154 + !BYTE $A4 ; INCBRLE _B153 + !WORD _B153-* +_B152 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0814: // +; libsrc/apple/sndseq.pla: 0815: // Start sequencing +; libsrc/apple/sndseq.pla: 0816: // +; libsrc/apple/sndseq.pla: 0817: seqRepeat = rept +; libsrc/apple/sndseq.pla: 0818: seqTrack = track +; libsrc/apple/sndseq.pla: 0819: seqEvent = seqTrack +; libsrc/apple/sndseq.pla: 0820: seqTime = 0 +; libsrc/apple/sndseq.pla: 0821: eventTime = seqEvent->deltatime +; libsrc/apple/sndseq.pla: 0822: numNotes = 0 +; libsrc/apple/sndseq.pla: 0823: end + !BYTE $66,$02 ; LLW [2] + !BYTE $78 ; SAB _D050+0 +_F235 !WORD _D050+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7E ; DAW _D044+0 +_F236 !WORD _D044+0 + !BYTE $7A ; SAW _D045+0 +_F237 !WORD _D045+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D046+0 +_F238 !WORD _D046+0 + !BYTE $6A ; LAW _D045+0 +_F239 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $7A ; SAW _D047+0 +_F240 !WORD _D047+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+0 +_F241 !WORD _D049+0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/apple/sndseq.pla: 0824: // +; libsrc/apple/sndseq.pla: 0825: // Stop sequencing music track +; libsrc/apple/sndseq.pla: 0826: // +; libsrc/apple/sndseq.pla: 0827: export def musicStop#0 +_P001 ; musicStop#0() +_C010 ; musicStop() +; libsrc/apple/sndseq.pla: 0828: musicSequence = @noSequence +; libsrc/apple/sndseq.pla: 0829: end + !BYTE $26 ; LA _C008+0 +_F242 !WORD _C008+0 + !BYTE $7A ; SAW _D039+0 +_F243 !WORD _D039+0 + !BYTE $5C ; RET +; libsrc/apple/sndseq.pla: 0830: // +; libsrc/apple/sndseq.pla: 0831: // Play until keystroke +; libsrc/apple/sndseq.pla: 0832: // +; libsrc/apple/sndseq.pla: 0833: export def musicGetKey(yield, backgroundProc)#1 + ; yield -> [0] + ; backgroundProc -> [2] +_C011 ; musicGetKey() +; libsrc/apple/sndseq.pla: 0834: while not keypressed() + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +_B155 +; libsrc/apple/sndseq.pla: 0835: musicSequence(yield, backgroundProc)#0 // Call background proc every half second +; libsrc/apple/sndseq.pla: 0836: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D039+0 +_F244 !WORD _D039+0 + !BYTE $56 ; ICAL +_B157 + !BYTE $6A ; LAW _D042+0 +_F245 !WORD _D042+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B155 + !WORD _B155-* +_B156 +; libsrc/apple/sndseq.pla: 0837: return getc + !BYTE $54 ; CALL _X006 +_F246 !WORD 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/sndseq.pla: 0838: end +; libsrc/apple/sndseq.pla: 0839: +; libsrc/apple/sndseq.pla: 0840: when MACHID & MACHID_MODEL +_INIT + !BYTE $68 ; LAB _X001+0 +_F247 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $52 ; SEL + !WORD _B159-* +; libsrc/apple/sndseq.pla: 0841: is MACHID_III +_B160 +; libsrc/apple/sndseq.pla: 0842: spkrTone = @a3spkrTone +; libsrc/apple/sndseq.pla: 0843: spkrPWM = @a3spkrPWM +; libsrc/apple/sndseq.pla: 0844: keypressed = @a3keypressed +; libsrc/apple/sndseq.pla: 0845: break + !BYTE $26 ; LA _C001+0 +_F248 !WORD _C001+0 + !BYTE $7A ; SAW _D040+0 +_F249 !WORD _D040+0 + !BYTE $26 ; LA _C002+0 +_F250 !WORD _C002+0 + !BYTE $7A ; SAW _D041+0 +_F251 !WORD _D041+0 + !BYTE $26 ; LA _C000+0 +_F252 !WORD _C000+0 + !BYTE $7A ; SAW _D042+0 +_F253 !WORD _D042+0 + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +; libsrc/apple/sndseq.pla: 0846: is MACHID_I +_B161 +; libsrc/apple/sndseq.pla: 0847: puts("Sound unsupported.\n") + !BYTE $2E ; CS + !BYTE $13 + !BYTE $53,$6F,$75,$6E,$64,$20,$75,$6E + !BYTE $73,$75,$70,$70,$6F,$72,$74,$65 + !BYTE $64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F254 !WORD 0 +; libsrc/apple/sndseq.pla: 0848: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/sndseq.pla: 0849: break + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +; libsrc/apple/sndseq.pla: 0850: otherwise +_B159 + !BYTE $02 ; CASEBLOCK + !WORD $0008 + !WORD _B161-* + !WORD $00C0 + !WORD _B160-* +; libsrc/apple/sndseq.pla: 0851: //puts("MockingBoard Slot:\n") +; libsrc/apple/sndseq.pla: 0852: //puts("ENTER = None\n") +; libsrc/apple/sndseq.pla: 0853: //puts("0 = Scan\n") +; libsrc/apple/sndseq.pla: 0854: //puts("1-7 = Slot #\n") +; libsrc/apple/sndseq.pla: 0855: //instr = gets('>'|$80) +; libsrc/apple/sndseq.pla: 0856: //if ^instr +; libsrc/apple/sndseq.pla: 0857: // mbSlot = mbSearch(^(instr + 1) - '0') +; libsrc/apple/sndseq.pla: 0858: //fin +; libsrc/apple/sndseq.pla: 0859: mbSlot = mbSearch(0) +; libsrc/apple/sndseq.pla: 0860: break + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C004 +_F255 !WORD _C004 + !BYTE $7A ; SAW _D066+0 +_F256 !WORD _D066+0 + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +; libsrc/apple/sndseq.pla: 0861: wend +_B158 +; libsrc/apple/sndseq.pla: 0862: if mbSlot < 0 +; libsrc/apple/sndseq.pla: 0863: // +; libsrc/apple/sndseq.pla: 0864: // No MockingBoard - scale octave0 for speaker +; libsrc/apple/sndseq.pla: 0865: // +; libsrc/apple/sndseq.pla: 0866: for instr = 0 to 11 + !BYTE $6A ; LAW _D066+0 +_F257 !WORD _D066+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B162 + !WORD _B162-* + !BYTE $16 ; CN 11 + !BYTE $00 ; CN 0 +_B165 + !BYTE $7E ; DAW _D043+0 +_F258 !WORD _D043+0 +; libsrc/apple/sndseq.pla: 0867: spkrOctave0[instr] = mbOctave0[instr]/NOTEDIV +; libsrc/apple/sndseq.pla: 0868: next + !BYTE $26 ; LA _D068+0 +_F259 !WORD _D068+0 + !BYTE $BE ; IDXAW _D043+0 +_F260 !WORD _D043+0 + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $9C ; SHR + !BYTE $26 ; LA _D067+0 +_F261 !WORD _D067+0 + !BYTE $BE ; IDXAW _D043+0 +_F262 !WORD _D043+0 + !BYTE $72 ; SW +_B166 + !BYTE $A4 ; INCBRLE _B165 + !WORD _B165-* +_B164 + !BYTE $7A ; SAW _D043+0 +_F263 !WORD _D043+0 + !BYTE $30 ; DROP +; libsrc/apple/sndseq.pla: 0869: fin +_B162 +_B163 +; libsrc/apple/sndseq.pla: 0870: +; libsrc/apple/sndseq.pla: 0871: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 13 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: MUSICPLAY + !BYTE $CD,$D5,$D3,$C9,$C3,$D0,$CC,$C1,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C009 + ; DCI STRING: MUSICSTOP + !BYTE $CD,$D5,$D3,$C9,$C3,$D3,$D4,$CF,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C010 + ; DCI STRING: MUSICSEQUENCE + !BYTE $CD,$D5,$D3,$C9,$C3,$D3,$C5,$D1,$D5,$C5,$CE,$C3,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D039 + ; DCI STRING: SPKRTONE + !BYTE $D3,$D0,$CB,$D2,$D4,$CF,$CE,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D040 + ; DCI STRING: SPKRPWM + !BYTE $D3,$D0,$CB,$D2,$D0,$D7,$4D + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D041 + ; DCI STRING: MUSICGETKEY + !BYTE $CD,$D5,$D3,$C9,$C3,$C7,$C5,$D4,$CB,$C5,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C011 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/spiport.a b/src/libsrc/apple/spiport.a new file mode 100644 index 0000000..5c7c485 --- /dev/null +++ b/src/libsrc/apple/spiport.a @@ -0,0 +1,1369 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/spiport.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/spiport.pla: 0001: +; libsrc/apple/spiport.pla: 0002: // +; libsrc/apple/spiport.pla: 0003: // Bit banged spi over gameport +; libsrc/apple/spiport.pla: 0004: // +; libsrc/apple/spiport.pla: 0005: const SPI_SLAVE_READY = '@' + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; SPI_SLAVE_READY = 64 +; libsrc/apple/spiport.pla: 0006: const SPI_SLAVE_ERROR = '!' + ; SPI_SLAVE_ERROR = 33 +; libsrc/apple/spiport.pla: 0007: const SPI_SLAVE_BUSY = $FF + ; SPI_SLAVE_BUSY = 255 +; libsrc/apple/spiport.pla: 0008: +; libsrc/apple/spiport.pla: 0009: word spiReadWriteByte, spiWriteBytes, spiReadBytes +_D028 !FILL 2 ; spiReadWriteByte, spiWriteBytes, spiReadBytes +_D029 !FILL 2 ; spiWriteBytes, spiReadBytes +_D030 !FILL 2 ; spiReadBytes +; libsrc/apple/spiport.pla: 0010: +; libsrc/apple/spiport.pla: 0011: asm spiInc +_A000 ; spiInc() +; libsrc/apple/spiport.pla: 0012: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/spiport.pla: 0013: !CPU 65C02 +!CPU 65C02 +; libsrc/apple/spiport.pla: 0014: end +; libsrc/apple/spiport.pla: 0015: +; libsrc/apple/spiport.pla: 0016: asm spiXferByteStd(outbyte) +_A001 ; spiXferByteStd() +; libsrc/apple/spiport.pla: 0017: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0018: SEI + SEI +; libsrc/apple/spiport.pla: 0019: STA $C05A ; ENABLE SLAVE + STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0020: LDY #0 ; ASSUME MSB IS ZERO + LDY #0 ; ASSUME MSB IS ZERO +; libsrc/apple/spiport.pla: 0021: LDA ESTKL,X ; GET ARGUMENT + LDA ESTKL,X ; GET ARGUMENT +; libsrc/apple/spiport.pla: 0022: BPL + ; CHECK MSB + BPL + ; CHECK MSB +; libsrc/apple/spiport.pla: 0023: INY ; IT'S A ONE + INY ; IT'S A ONE +; libsrc/apple/spiport.pla: 0024: + STA $C058,Y ; WRITE BIT 7 ++ STA $C058,Y ; WRITE BIT 7 +; libsrc/apple/spiport.pla: 0025: STA $C040 ; CLOCK + STA $C040 ; CLOCK +; libsrc/apple/spiport.pla: 0026: LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE - NOT REALLY NEEDED + LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE - NOT REALLY NEEDED +; libsrc/apple/spiport.pla: 0027: ASL $C061 ; READ BIT 7 INTO CARRY + ASL $C061 ; READ BIT 7 INTO CARRY +; libsrc/apple/spiport.pla: 0028: ROL ; ROTATE INTO ACC + ROL ; ROTATE INTO ACC +; libsrc/apple/spiport.pla: 0029: BPL + ; REPEAT FOR ALL BITS + BPL + ; REPEAT FOR ALL BITS +; libsrc/apple/spiport.pla: 0030: INY + INY +; libsrc/apple/spiport.pla: 0031: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0032: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0033: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0034: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0035: ROL + ROL +; libsrc/apple/spiport.pla: 0036: BPL + + BPL + +; libsrc/apple/spiport.pla: 0037: INY + INY +; libsrc/apple/spiport.pla: 0038: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0039: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0040: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0041: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0042: ROL + ROL +; libsrc/apple/spiport.pla: 0043: BPL + + BPL + +; libsrc/apple/spiport.pla: 0044: INY + INY +; libsrc/apple/spiport.pla: 0045: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0046: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0047: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0048: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0049: ROL + ROL +; libsrc/apple/spiport.pla: 0050: BPL + + BPL + +; libsrc/apple/spiport.pla: 0051: INY + INY +; libsrc/apple/spiport.pla: 0052: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0053: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0054: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0055: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0056: ROL + ROL +; libsrc/apple/spiport.pla: 0057: BPL + + BPL + +; libsrc/apple/spiport.pla: 0058: INY + INY +; libsrc/apple/spiport.pla: 0059: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0060: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0061: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0062: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0063: ROL + ROL +; libsrc/apple/spiport.pla: 0064: BPL + + BPL + +; libsrc/apple/spiport.pla: 0065: INY + INY +; libsrc/apple/spiport.pla: 0066: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0067: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0068: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0069: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0070: ROL + ROL +; libsrc/apple/spiport.pla: 0071: BPL + + BPL + +; libsrc/apple/spiport.pla: 0072: INY + INY +; libsrc/apple/spiport.pla: 0073: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0074: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0075: NOP + NOP +; libsrc/apple/spiport.pla: 0076: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0077: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0078: ROL + ROL +; libsrc/apple/spiport.pla: 0079: STA ESTKL,X ; SAVE RETURN PARAMETER + STA ESTKL,X ; SAVE RETURN PARAMETER +; libsrc/apple/spiport.pla: 0080: PLP + PLP +; libsrc/apple/spiport.pla: 0081: RTS + RTS +; libsrc/apple/spiport.pla: 0082: end +; libsrc/apple/spiport.pla: 0083: +; libsrc/apple/spiport.pla: 0084: asm spiXferByteGS(outbyte) +_A002 ; spiXferByteGS() +; libsrc/apple/spiport.pla: 0085: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0086: SEI + SEI +; libsrc/apple/spiport.pla: 0087: LDA $C036 ; SET 1 MHZ + LDA $C036 ; SET 1 MHZ +; libsrc/apple/spiport.pla: 0088: PHA + PHA +; libsrc/apple/spiport.pla: 0089: AND #$7F + AND #$7F +; libsrc/apple/spiport.pla: 0090: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0091: STA $C05A ; ENABLE SLAVE + STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0092: LDY #0 ; ASSUME MSB IS ZERO + LDY #0 ; ASSUME MSB IS ZERO +; libsrc/apple/spiport.pla: 0093: LDA ESTKL,X ; GET ARGUMENT + LDA ESTKL,X ; GET ARGUMENT +; libsrc/apple/spiport.pla: 0094: BPL + ; CHECK MSB + BPL + ; CHECK MSB +; libsrc/apple/spiport.pla: 0095: INY ; IT'S A ONE + INY ; IT'S A ONE +; libsrc/apple/spiport.pla: 0096: + STA $C058,Y ; WRITE BIT 7 ++ STA $C058,Y ; WRITE BIT 7 +; libsrc/apple/spiport.pla: 0097: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0098: LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE - NOT REALLY NEEDED + LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE - NOT REALLY NEEDED +; libsrc/apple/spiport.pla: 0099: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0100: ASL $C061 ; READ BIT 7 INTO CARRY + ASL $C061 ; READ BIT 7 INTO CARRY +; libsrc/apple/spiport.pla: 0101: ROL ; ROTATE INTO ACC + ROL ; ROTATE INTO ACC +; libsrc/apple/spiport.pla: 0102: BPL + ; REPEAT FOR ALL BITS + BPL + ; REPEAT FOR ALL BITS +; libsrc/apple/spiport.pla: 0103: INY + INY +; libsrc/apple/spiport.pla: 0104: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0105: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0106: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0107: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0108: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0109: ROL + ROL +; libsrc/apple/spiport.pla: 0110: BPL + + BPL + +; libsrc/apple/spiport.pla: 0111: INY + INY +; libsrc/apple/spiport.pla: 0112: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0113: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0114: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0115: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0116: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0117: ROL + ROL +; libsrc/apple/spiport.pla: 0118: BPL + + BPL + +; libsrc/apple/spiport.pla: 0119: INY + INY +; libsrc/apple/spiport.pla: 0120: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0121: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0122: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0123: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0124: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0125: ROL + ROL +; libsrc/apple/spiport.pla: 0126: BPL + + BPL + +; libsrc/apple/spiport.pla: 0127: INY + INY +; libsrc/apple/spiport.pla: 0128: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0129: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0130: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0131: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0132: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0133: ROL + ROL +; libsrc/apple/spiport.pla: 0134: BPL + + BPL + +; libsrc/apple/spiport.pla: 0135: INY + INY +; libsrc/apple/spiport.pla: 0136: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0137: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0138: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0139: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0140: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0141: ROL + ROL +; libsrc/apple/spiport.pla: 0142: BPL + + BPL + +; libsrc/apple/spiport.pla: 0143: INY + INY +; libsrc/apple/spiport.pla: 0144: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0145: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0146: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0147: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0148: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0149: ROL + ROL +; libsrc/apple/spiport.pla: 0150: BPL + + BPL + +; libsrc/apple/spiport.pla: 0151: INY + INY +; libsrc/apple/spiport.pla: 0152: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0153: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0154: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0155: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0156: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0157: ROL + ROL +; libsrc/apple/spiport.pla: 0158: STA ESTKL,X ; SAVE RETURN PARAMETER + STA ESTKL,X ; SAVE RETURN PARAMETER +; libsrc/apple/spiport.pla: 0159: PLA + PLA +; libsrc/apple/spiport.pla: 0160: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0161: PLP + PLP +; libsrc/apple/spiport.pla: 0162: RTS + RTS +; libsrc/apple/spiport.pla: 0163: end +; libsrc/apple/spiport.pla: 0164: asm spiReadBytesStd(buf, len) +_A003 ; spiReadBytesStd() +; libsrc/apple/spiport.pla: 0165: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0166: SEI + SEI +; libsrc/apple/spiport.pla: 0167: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/spiport.pla: 0168: STA DSTL + STA DSTL +; libsrc/apple/spiport.pla: 0169: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/spiport.pla: 0170: STA DSTH + STA DSTH +; libsrc/apple/spiport.pla: 0171: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/spiport.pla: 0172: BEQ + + BEQ + +; libsrc/apple/spiport.pla: 0173: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/spiport.pla: 0174: + LDY #$00 ++ LDY #$00 +; libsrc/apple/spiport.pla: 0175: - STA $C05A ; ENABLE SLAVE +- STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0176: STA $C040 ; CLOCK + STA $C040 ; CLOCK +; libsrc/apple/spiport.pla: 0177: NOP + NOP +; libsrc/apple/spiport.pla: 0178: ASL $C061 ; SHIFT IN ALL BITS STARTING WITH MSB + ASL $C061 ; SHIFT IN ALL BITS STARTING WITH MSB +; libsrc/apple/spiport.pla: 0179: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0180: ROL + ROL +; libsrc/apple/spiport.pla: 0181: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0182: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0183: ROL + ROL +; libsrc/apple/spiport.pla: 0184: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0185: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0186: ROL + ROL +; libsrc/apple/spiport.pla: 0187: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0188: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0189: ROL + ROL +; libsrc/apple/spiport.pla: 0190: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0191: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0192: ROL + ROL +; libsrc/apple/spiport.pla: 0193: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0194: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0195: ROL + ROL +; libsrc/apple/spiport.pla: 0196: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0197: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0198: ROL + ROL +; libsrc/apple/spiport.pla: 0199: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0200: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0201: ROL + ROL +; libsrc/apple/spiport.pla: 0202: STA (DST),Y ; SAVE TO BUFFER + STA (DST),Y ; SAVE TO BUFFER +; libsrc/apple/spiport.pla: 0203: INY + INY +; libsrc/apple/spiport.pla: 0204: BNE + + BNE + +; libsrc/apple/spiport.pla: 0205: INC DSTH + INC DSTH +; libsrc/apple/spiport.pla: 0206: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/spiport.pla: 0207: BNE - + BNE - +; libsrc/apple/spiport.pla: 0208: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/spiport.pla: 0209: BNE - + BNE - +; libsrc/apple/spiport.pla: 0210: INX ; REMOVE AN ARGUMENT + INX ; REMOVE AN ARGUMENT +; libsrc/apple/spiport.pla: 0211: PLP + PLP +; libsrc/apple/spiport.pla: 0212: RTS + RTS +; libsrc/apple/spiport.pla: 0213: end +; libsrc/apple/spiport.pla: 0214: +; libsrc/apple/spiport.pla: 0215: asm spiReadBytesGS(buf, len) +_A004 ; spiReadBytesGS() +; libsrc/apple/spiport.pla: 0216: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0217: SEI + SEI +; libsrc/apple/spiport.pla: 0218: LDA $C036 ; SET 1 MHZ + LDA $C036 ; SET 1 MHZ +; libsrc/apple/spiport.pla: 0219: PHA + PHA +; libsrc/apple/spiport.pla: 0220: AND #$7F + AND #$7F +; libsrc/apple/spiport.pla: 0221: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0222: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/spiport.pla: 0223: STA DSTL + STA DSTL +; libsrc/apple/spiport.pla: 0224: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/spiport.pla: 0225: STA DSTH + STA DSTH +; libsrc/apple/spiport.pla: 0226: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/spiport.pla: 0227: BEQ + + BEQ + +; libsrc/apple/spiport.pla: 0228: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/spiport.pla: 0229: + LDY #$00 ++ LDY #$00 +; libsrc/apple/spiport.pla: 0230: - STA $C05A ; ENABLE SLAVE +- STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0231: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0232: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0233: ASL $C061 ; SHIFT IN ALL BITS STARTING WITH MSB + ASL $C061 ; SHIFT IN ALL BITS STARTING WITH MSB +; libsrc/apple/spiport.pla: 0234: ROL + ROL +; libsrc/apple/spiport.pla: 0235: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0236: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0237: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0238: ROL + ROL +; libsrc/apple/spiport.pla: 0239: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0240: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0241: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0242: ROL + ROL +; libsrc/apple/spiport.pla: 0243: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0244: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0245: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0246: ROL + ROL +; libsrc/apple/spiport.pla: 0247: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0248: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0249: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0250: ROL + ROL +; libsrc/apple/spiport.pla: 0251: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0252: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0253: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0254: ROL + ROL +; libsrc/apple/spiport.pla: 0255: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0256: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0257: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0258: ROL + ROL +; libsrc/apple/spiport.pla: 0259: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0260: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0261: ASL $C061 + ASL $C061 +; libsrc/apple/spiport.pla: 0262: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0263: ROL + ROL +; libsrc/apple/spiport.pla: 0264: STA (DST),Y ; SAVE TO BUFFER + STA (DST),Y ; SAVE TO BUFFER +; libsrc/apple/spiport.pla: 0265: INY + INY +; libsrc/apple/spiport.pla: 0266: BNE + + BNE + +; libsrc/apple/spiport.pla: 0267: INC DSTH + INC DSTH +; libsrc/apple/spiport.pla: 0268: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/spiport.pla: 0269: BNE - + BNE - +; libsrc/apple/spiport.pla: 0270: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/spiport.pla: 0271: BNE - + BNE - +; libsrc/apple/spiport.pla: 0272: INX ; REMOVE AN ARGUMENT + INX ; REMOVE AN ARGUMENT +; libsrc/apple/spiport.pla: 0273: PLA + PLA +; libsrc/apple/spiport.pla: 0274: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0275: PLP + PLP +; libsrc/apple/spiport.pla: 0276: RTS + RTS +; libsrc/apple/spiport.pla: 0277: end +; libsrc/apple/spiport.pla: 0278: +; libsrc/apple/spiport.pla: 0279: asm spiWriteBytesStd(buf, len) +_A005 ; spiWriteBytesStd() +; libsrc/apple/spiport.pla: 0280: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0281: SEI + SEI +; libsrc/apple/spiport.pla: 0282: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/spiport.pla: 0283: STA SRCL + STA SRCL +; libsrc/apple/spiport.pla: 0284: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/spiport.pla: 0285: STA SRCH + STA SRCH +; libsrc/apple/spiport.pla: 0286: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/spiport.pla: 0287: BEQ + + BEQ + +; libsrc/apple/spiport.pla: 0288: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/spiport.pla: 0289: + ++ +; libsrc/apple/spiport.pla: 0290: - STA $C05A ; ENABLE SLAVE +- STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0291: LDY #0 ; ASSUME MSB IS ZERO + LDY #0 ; ASSUME MSB IS ZERO +; libsrc/apple/spiport.pla: 0292: LDA (SRC),Y ; GET BYTE + LDA (SRC),Y ; GET BYTE +; libsrc/apple/spiport.pla: 0293: BPL + ; CHECK MSB + BPL + ; CHECK MSB +; libsrc/apple/spiport.pla: 0294: INY ; IT'S A ONE + INY ; IT'S A ONE +; libsrc/apple/spiport.pla: 0295: + STA $C058,Y ; WRITE BIT 7 ++ STA $C058,Y ; WRITE BIT 7 +; libsrc/apple/spiport.pla: 0296: STA $C040 ; CLOCK + STA $C040 ; CLOCK +; libsrc/apple/spiport.pla: 0297: LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE + LDY #0 ; DOING THIS HERE GIVES TIME FOR OUTPUT TO BECOME STABLE +; libsrc/apple/spiport.pla: 0298: ASL ; ROTATE NEXT BIT TO SEND + ASL ; ROTATE NEXT BIT TO SEND +; libsrc/apple/spiport.pla: 0299: BPL + ; REPEAT FOR ALL BITS + BPL + ; REPEAT FOR ALL BITS +; libsrc/apple/spiport.pla: 0300: INY + INY +; libsrc/apple/spiport.pla: 0301: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0302: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0303: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0304: ASL + ASL +; libsrc/apple/spiport.pla: 0305: BPL + + BPL + +; libsrc/apple/spiport.pla: 0306: INY + INY +; libsrc/apple/spiport.pla: 0307: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0308: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0309: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0310: ASL + ASL +; libsrc/apple/spiport.pla: 0311: BPL + + BPL + +; libsrc/apple/spiport.pla: 0312: INY + INY +; libsrc/apple/spiport.pla: 0313: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0314: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0315: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0316: ASL + ASL +; libsrc/apple/spiport.pla: 0317: BPL + + BPL + +; libsrc/apple/spiport.pla: 0318: INY + INY +; libsrc/apple/spiport.pla: 0319: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0320: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0321: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0322: ASL + ASL +; libsrc/apple/spiport.pla: 0323: BPL + + BPL + +; libsrc/apple/spiport.pla: 0324: INY + INY +; libsrc/apple/spiport.pla: 0325: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0326: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0327: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0328: ASL + ASL +; libsrc/apple/spiport.pla: 0329: BPL + + BPL + +; libsrc/apple/spiport.pla: 0330: INY + INY +; libsrc/apple/spiport.pla: 0331: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0332: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0333: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0334: ASL + ASL +; libsrc/apple/spiport.pla: 0335: BPL + + BPL + +; libsrc/apple/spiport.pla: 0336: INY + INY +; libsrc/apple/spiport.pla: 0337: + STA $C058,Y ++ STA $C058,Y +; libsrc/apple/spiport.pla: 0338: STA $C040 + STA $C040 +; libsrc/apple/spiport.pla: 0339: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0340: INC SRCL + INC SRCL +; libsrc/apple/spiport.pla: 0341: BNE + + BNE + +; libsrc/apple/spiport.pla: 0342: INC SRCH + INC SRCH +; libsrc/apple/spiport.pla: 0343: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/spiport.pla: 0344: BNE - + BNE - +; libsrc/apple/spiport.pla: 0345: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/spiport.pla: 0346: BNE - + BNE - +; libsrc/apple/spiport.pla: 0347: INX ; REMOVE AN ARGUMENT + INX ; REMOVE AN ARGUMENT +; libsrc/apple/spiport.pla: 0348: PLP + PLP +; libsrc/apple/spiport.pla: 0349: RTS + RTS +; libsrc/apple/spiport.pla: 0350: end +; libsrc/apple/spiport.pla: 0351: +; libsrc/apple/spiport.pla: 0352: asm spiWriteBytesGS(buf, len) +_A006 ; spiWriteBytesGS() +; libsrc/apple/spiport.pla: 0353: PHP ; DISABLE INTS + PHP ; DISABLE INTS +; libsrc/apple/spiport.pla: 0354: SEI + SEI +; libsrc/apple/spiport.pla: 0355: LDA $C036 ; SET 1 MHZ + LDA $C036 ; SET 1 MHZ +; libsrc/apple/spiport.pla: 0356: PHA + PHA +; libsrc/apple/spiport.pla: 0357: AND #$7F + AND #$7F +; libsrc/apple/spiport.pla: 0358: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0359: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/spiport.pla: 0360: STA SRCL + STA SRCL +; libsrc/apple/spiport.pla: 0361: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/spiport.pla: 0362: STA SRCH + STA SRCH +; libsrc/apple/spiport.pla: 0363: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/spiport.pla: 0364: BEQ + + BEQ + +; libsrc/apple/spiport.pla: 0365: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/spiport.pla: 0366: + ++ +; libsrc/apple/spiport.pla: 0367: -- STA $C05A ; ENABLE SLAVE +-- STA $C05A ; ENABLE SLAVE +; libsrc/apple/spiport.pla: 0368: PHX + PHX +; libsrc/apple/spiport.pla: 0369: LDX #8 + LDX #8 +; libsrc/apple/spiport.pla: 0370: LDY #0 ; ASSUME MSB IS ZERO + LDY #0 ; ASSUME MSB IS ZERO +; libsrc/apple/spiport.pla: 0371: LDA (SRC),Y ; GET BYTE + LDA (SRC),Y ; GET BYTE +; libsrc/apple/spiport.pla: 0372: - ASL +- ASL +; libsrc/apple/spiport.pla: 0373: BCC + ; CHECK MSB + BCC + ; CHECK MSB +; libsrc/apple/spiport.pla: 0374: INY ; IT'S A ONE + INY ; IT'S A ONE +; libsrc/apple/spiport.pla: 0375: + STA $C058,Y ; WRITE BIT 7 ++ STA $C058,Y ; WRITE BIT 7 +; libsrc/apple/spiport.pla: 0376: STA $C05C ; CLOCK FALLING EDGE + STA $C05C ; CLOCK FALLING EDGE +; libsrc/apple/spiport.pla: 0377: STA $C05D ; CLOCK RISING EDGE + STA $C05D ; CLOCK RISING EDGE +; libsrc/apple/spiport.pla: 0378: LDY #0 + LDY #0 +; libsrc/apple/spiport.pla: 0379: DEX + DEX +; libsrc/apple/spiport.pla: 0380: BNE - + BNE - +; libsrc/apple/spiport.pla: 0381: STA $C05B ; DISABLE SLAVE + STA $C05B ; DISABLE SLAVE +; libsrc/apple/spiport.pla: 0382: INC SRCL + INC SRCL +; libsrc/apple/spiport.pla: 0383: BNE + + BNE + +; libsrc/apple/spiport.pla: 0384: INC SRCH + INC SRCH +; libsrc/apple/spiport.pla: 0385: + PLX ++ PLX +; libsrc/apple/spiport.pla: 0386: DEC ESTKL,X + DEC ESTKL,X +; libsrc/apple/spiport.pla: 0387: BNE -- + BNE -- +; libsrc/apple/spiport.pla: 0388: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/spiport.pla: 0389: BNE -- + BNE -- +; libsrc/apple/spiport.pla: 0390: INX ; REMOVE AN ARGUMENT + INX ; REMOVE AN ARGUMENT +; libsrc/apple/spiport.pla: 0391: PLA + PLA +; libsrc/apple/spiport.pla: 0392: STA $C036 + STA $C036 +; libsrc/apple/spiport.pla: 0393: PLP + PLP +; libsrc/apple/spiport.pla: 0394: RTS + RTS +; libsrc/apple/spiport.pla: 0395: end +; libsrc/apple/spiport.pla: 0396: +; libsrc/apple/spiport.pla: 0397: export def spiXferByte(outbyte) +_SUBSEG ; BYTECODE STARTS + ; outbyte -> [0] +_C000 ; spiXferByte() +; libsrc/apple/spiport.pla: 0398: return (spiReadWriteByte)(outbyte) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D028+0 +_F000 !WORD _D028+0 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/spiport.pla: 0399: end +; libsrc/apple/spiport.pla: 0400: +; libsrc/apple/spiport.pla: 0401: export def spiDelay(time) + ; time -> [0] +_C001 ; spiDelay() +; libsrc/apple/spiport.pla: 0402: return call($FCA8, time, 0, 0, 0) // DELAY + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2C,$A8,$FC ; CW 64680 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F001 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/spiport.pla: 0403: end +; libsrc/apple/spiport.pla: 0404: +; libsrc/apple/spiport.pla: 0405: export def spiSend(data) + ; data -> [0] +_C002 ; spiSend() +; libsrc/apple/spiport.pla: 0406: byte timeout, status + ; timeout -> [2] + ; status -> [3] +; libsrc/apple/spiport.pla: 0407: +; libsrc/apple/spiport.pla: 0408: for timeout = 1 to 100 step 10 + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $2A,$64 ; CB 100 + !BYTE $02 ; CN 1 +_B002 + !BYTE $6C,$02 ; DLB [2] +; libsrc/apple/spiport.pla: 0409: status = (spiReadWriteByte)(data) +; libsrc/apple/spiport.pla: 0410: if status <> SPI_SLAVE_BUSY +; libsrc/apple/spiport.pla: 0411: return status + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D028+0 +_F002 !WORD _D028+0 + !BYTE $56 ; ICAL + !BYTE $6C,$03 ; DLB [3] + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B004 + !WORD _B004-* + !BYTE $32 ; DROP2 + !BYTE $64,$03 ; LLB [3] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/spiport.pla: 0412: fin +_B004 +_B005 +; libsrc/apple/spiport.pla: 0413: spiDelay(timeout) +; libsrc/apple/spiport.pla: 0414: next + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _C001 +_F003 !WORD _C001 + !BYTE $30 ; DROP +_B003 + !BYTE $14 ; CN 10 + !BYTE $A6 ; ADDBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/apple/spiport.pla: 0415: putc(status);putc('0'+data/10);putc('0'+data%10) +; libsrc/apple/spiport.pla: 0416: return status + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X002 +_F004 !WORD 0 + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X002 +_F005 !WORD 0 + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X002 +_F006 !WORD 0 + !BYTE $64,$03 ; LLB [3] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/spiport.pla: 0417: end +; libsrc/apple/spiport.pla: 0418: +; libsrc/apple/spiport.pla: 0419: export def spiRecv +_C003 ; spiRecv() +; libsrc/apple/spiport.pla: 0420: return spiSend(0) + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F007 !WORD _C002 + !BYTE $5C ; RET +; libsrc/apple/spiport.pla: 0421: end +; libsrc/apple/spiport.pla: 0422: +; libsrc/apple/spiport.pla: 0423: export def spiWriteBuf(buf, len) + ; buf -> [0] + ; len -> [2] +_C004 ; spiWriteBuf() +; libsrc/apple/spiport.pla: 0424: spiSend(13) // CMD_BUF_WRITE + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/spiport.pla: 0425: spiSend(len >> 8); spiSend(len) +; libsrc/apple/spiport.pla: 0426: return (spiWriteBytes)(buf, len) + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _C002 +_F008 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _C002 +_F009 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C002 +_F010 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D029+0 +_F011 !WORD _D029+0 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/spiport.pla: 0427: end +; libsrc/apple/spiport.pla: 0428: +; libsrc/apple/spiport.pla: 0429: export def spiReadBuf(buf, len) + ; buf -> [0] + ; len -> [2] +_C005 ; spiReadBuf() +; libsrc/apple/spiport.pla: 0430: spiSend(12) // CMD_BUF_READ + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/spiport.pla: 0431: spiSend(len >> 8); spiSend(len) +; libsrc/apple/spiport.pla: 0432: return (spiReadBytes)(buf, len) + !BYTE $18 ; CN 12 + !BYTE $54 ; CALL _C002 +_F012 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _C002 +_F013 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C002 +_F014 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D030+0 +_F015 !WORD _D030+0 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/spiport.pla: 0433: end +; libsrc/apple/spiport.pla: 0434: +; libsrc/apple/spiport.pla: 0435: export def spiReady +_C006 ; spiReady() +; libsrc/apple/spiport.pla: 0436: byte timeout + ; timeout -> [0] +; libsrc/apple/spiport.pla: 0437: +; libsrc/apple/spiport.pla: 0438: timeout = 0xFF + !BYTE $58,$01,$00 ; ENTER 1,0 +; libsrc/apple/spiport.pla: 0439: while (spiReadWriteByte)(0) <> SPI_SLAVE_READY and timeout // WAIT FOR READY + !BYTE $00 ; CN 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B006 +; libsrc/apple/spiport.pla: 0440: timeout-- + !BYTE $64,$00 ; LLB [0] + !BYTE $8E ; DECR +; libsrc/apple/spiport.pla: 0441: spiDelay(10) +; libsrc/apple/spiport.pla: 0442: loop + !BYTE $74,$00 ; SLB [0] + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _C001 +_F016 !WORD _C001 + !BYTE $30 ; DROP +_B008 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D028+0 +_F017 !WORD _D028+0 + !BYTE $56 ; ICAL + !BYTE $2A,$40 ; CB 64 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B009 + !WORD _B009-* + !BYTE $64,$00 ; LLB [0] +_B009 + !BYTE $4E ; BRTRU _B006 + !WORD _B006-* +_B007 +; libsrc/apple/spiport.pla: 0443: return timeout + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$01 ; LEAVE 1 +; libsrc/apple/spiport.pla: 0444: end +; libsrc/apple/spiport.pla: 0445: +; libsrc/apple/spiport.pla: 0446: export def spiReset +_C007 ; spiReset() +; libsrc/apple/spiport.pla: 0447: ^$C05B // DISABLE SLAVE SELECT +; libsrc/apple/spiport.pla: 0448: ^$C05D // CLOCK RAISE (GS ONLY) +; libsrc/apple/spiport.pla: 0449: return spiReady + !BYTE $68,$5B,$C0 ; LAB 49243 + !BYTE $30 ; DROP + !BYTE $68,$5D,$C0 ; LAB 49245 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C006 +_F018 !WORD _C006 + !BYTE $5C ; RET +; libsrc/apple/spiport.pla: 0450: end +; libsrc/apple/spiport.pla: 0451: +; libsrc/apple/spiport.pla: 0452: if call($FE1F, 0, 0, 0, 1).3 & 1 // GS ID ROUTINE +_INIT +; libsrc/apple/spiport.pla: 0453: spiReadWriteByte = @spiXferByteStd +; libsrc/apple/spiport.pla: 0454: spiReadBytes = @spiReadBytesStd +; libsrc/apple/spiport.pla: 0455: spiWriteBytes = @spiWriteBytesStd +; libsrc/apple/spiport.pla: 0456: else + !BYTE $2C,$1F,$FE ; CW 65055 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X010 +_F019 !WORD 0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $26 ; LA _A001+0 +_F020 !WORD _A001+0 + !BYTE $7A ; SAW _D028+0 +_F021 !WORD _D028+0 + !BYTE $26 ; LA _A003+0 +_F022 !WORD _A003+0 + !BYTE $7A ; SAW _D030+0 +_F023 !WORD _D030+0 + !BYTE $26 ; LA _A005+0 +_F024 !WORD _A005+0 + !BYTE $7A ; SAW _D029+0 +_F025 !WORD _D029+0 + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B010 +; libsrc/apple/spiport.pla: 0457: spiReadWriteByte = @spiXferByteGS +; libsrc/apple/spiport.pla: 0458: spiReadBytes = @spiReadBytesGS +; libsrc/apple/spiport.pla: 0459: spiWriteBytes = @spiWriteBytesGS +; libsrc/apple/spiport.pla: 0460: fin + !BYTE $26 ; LA _A002+0 +_F026 !WORD _A002+0 + !BYTE $7A ; SAW _D028+0 +_F027 !WORD _D028+0 + !BYTE $26 ; LA _A004+0 +_F028 !WORD _A004+0 + !BYTE $7A ; SAW _D030+0 +_F029 !WORD _D030+0 + !BYTE $26 ; LA _A006+0 +_F030 !WORD _A006+0 + !BYTE $7A ; SAW _D029+0 +_F031 !WORD _D029+0 +_B011 +; libsrc/apple/spiport.pla: 0461: return spiReset <> 0 + !BYTE $54 ; CALL _C007 +_F032 !WORD _C007 + !BYTE $5C ; RET +; libsrc/apple/spiport.pla: 0462: done +_SYSFLAGS = 0 +_DEFCNT = 9 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: SPIXFERBYTE + !BYTE $D3,$D0,$C9,$D8,$C6,$C5,$D2,$C2,$D9,$D4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: SPIDELAY + !BYTE $D3,$D0,$C9,$C4,$C5,$CC,$C1,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: SPISEND + !BYTE $D3,$D0,$C9,$D3,$C5,$CE,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: SPIRECV + !BYTE $D3,$D0,$C9,$D2,$C5,$C3,$56 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: SPIWRITEBUF + !BYTE $D3,$D0,$C9,$D7,$D2,$C9,$D4,$C5,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: SPIREADBUF + !BYTE $D3,$D0,$C9,$D2,$C5,$C1,$C4,$C2,$D5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: SPIREADY + !BYTE $D3,$D0,$C9,$D2,$C5,$C1,$C4,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + ; DCI STRING: SPIRESET + !BYTE $D3,$D0,$C9,$D2,$C5,$D3,$C5,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C007 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/uthernet.a b/src/libsrc/apple/uthernet.a new file mode 100644 index 0000000..b39b8fa --- /dev/null +++ b/src/libsrc/apple/uthernet.a @@ -0,0 +1,1192 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/uthernet.pla: 0001: // +; libsrc/apple/uthernet.pla: 0002: // Original Uthernet ethernet card based on Cirrus Logic cs8900a +; libsrc/apple/uthernet.pla: 0003: // +; libsrc/apple/uthernet.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/uthernet.pla: 0004: +; libsrc/apple/uthernet.pla: 0005: // +; libsrc/apple/uthernet.pla: 0006: // Include dependency on S/W IP stack +; libsrc/apple/uthernet.pla: 0007: // +; libsrc/apple/uthernet.pla: 0008: import etherip + ; DCI STRING: ETHERIP + !BYTE $C5,$D4,$C8,$C5,$D2,$C9,$50 + ; ETHERIP -> X028 +; libsrc/apple/uthernet.pla: 0009: predef setEtherDriver(MAC, getlen, readfrm, setlen, writefrm)#0 + ; SETETHERDRIVER -> X029 +; libsrc/apple/uthernet.pla: 0010: end +; libsrc/apple/uthernet.pla: 0011: // +; libsrc/apple/uthernet.pla: 0012: // Uthernet register offsets +; libsrc/apple/uthernet.pla: 0013: // +; libsrc/apple/uthernet.pla: 0014: const TX_DATA = $00 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; TX_DATA = 0 +; libsrc/apple/uthernet.pla: 0015: const RX_DATA = $00 + ; RX_DATA = 0 +; libsrc/apple/uthernet.pla: 0016: const TX_CMD = $04 + ; TX_CMD = 4 +; libsrc/apple/uthernet.pla: 0017: const TX_LEN = $06 + ; TX_LEN = 6 +; libsrc/apple/uthernet.pla: 0018: const INT_STATUS = $08 + ; INT_STATUS = 8 +; libsrc/apple/uthernet.pla: 0019: const PREG_INDEX = $0A + ; PREG_INDEX = 10 +; libsrc/apple/uthernet.pla: 0020: const PREG_DATA = $0C + ; PREG_DATA = 12 +; libsrc/apple/uthernet.pla: 0021: const AUTO_INC = $8000 + ; AUTO_INC = 32768 +; libsrc/apple/uthernet.pla: 0022: // +; libsrc/apple/uthernet.pla: 0023: // Uthernet register addresses +; libsrc/apple/uthernet.pla: 0024: // +; libsrc/apple/uthernet.pla: 0025: byte rxdata_lo, rxdata_hi +_D030 !FILL 1 ; rxdata_lo, rxdata_hi +_D031 !FILL 1 ; rxdata_hi +; libsrc/apple/uthernet.pla: 0026: byte txcmd +_D032 !FILL 1 ; txcmd +; libsrc/apple/uthernet.pla: 0027: byte txlen +_D033 !FILL 1 ; txlen +; libsrc/apple/uthernet.pla: 0028: byte isq +_D034 !FILL 1 ; isq +; libsrc/apple/uthernet.pla: 0029: word rom[] +_D035 ; rom[] +; libsrc/apple/uthernet.pla: 0030: byte pregidx +_D036 !FILL 1 ; pregidx +; libsrc/apple/uthernet.pla: 0031: byte pregdata +_D037 !FILL 1 ; pregdata +; libsrc/apple/uthernet.pla: 0032: byte[] slot // Init time only +_D038 ; slot // Init time only +; libsrc/apple/uthernet.pla: 0033: // +; libsrc/apple/uthernet.pla: 0034: // Uthernet MAC address +; libsrc/apple/uthernet.pla: 0035: // +; libsrc/apple/uthernet.pla: 0036: byte[6] utherMAC = $00,$0A,$99,$1E,$02,$A0 +_D039 ; utherMAC = $00,$0A,$99,$1E,$02,$A0 + !BYTE $00 + !BYTE $0A + !BYTE $99 + !BYTE $1E + !BYTE $02 + !BYTE $A0 +; libsrc/apple/uthernet.pla: 0037: // +; libsrc/apple/uthernet.pla: 0038: // Defines for ASM routines +; libsrc/apple/uthernet.pla: 0039: // +; libsrc/apple/uthernet.pla: 0040: asm equates +_A000 ; equates() +; libsrc/apple/uthernet.pla: 0041: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/uthernet.pla: 0042: end +; libsrc/apple/uthernet.pla: 0043: // +; libsrc/apple/uthernet.pla: 0044: // Uthernet I/O functions +; libsrc/apple/uthernet.pla: 0045: // +; libsrc/apple/uthernet.pla: 0046: asm _pokeiow(val)#0 +_A001 ; _pokeiow() +; libsrc/apple/uthernet.pla: 0047: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet.pla: 0048: end +; libsrc/apple/uthernet.pla: 0049: asm _pokeiowl +_A002 ; _pokeiowl() +; libsrc/apple/uthernet.pla: 0050: STA $C000 + STA $C000 +; libsrc/apple/uthernet.pla: 0051: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/uthernet.pla: 0052: end +; libsrc/apple/uthernet.pla: 0053: asm _pokeiowh +_A003 ; _pokeiowh() +; libsrc/apple/uthernet.pla: 0054: STA $C000 + STA $C000 +; libsrc/apple/uthernet.pla: 0055: INX + INX +; libsrc/apple/uthernet.pla: 0056: RTS + RTS +; libsrc/apple/uthernet.pla: 0057: end +; libsrc/apple/uthernet.pla: 0058: // +; libsrc/apple/uthernet.pla: 0059: // PEEK BYTE FROM I/O SPACE +; libsrc/apple/uthernet.pla: 0060: // _peekio() +; libsrc/apple/uthernet.pla: 0061: // +; libsrc/apple/uthernet.pla: 0062: asm _peekio#1 +_A004 ; _peekio() +; libsrc/apple/uthernet.pla: 0063: DEX + DEX +; libsrc/apple/uthernet.pla: 0064: end +; libsrc/apple/uthernet.pla: 0065: asm _peekiol +_A005 ; _peekiol() +; libsrc/apple/uthernet.pla: 0066: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet.pla: 0067: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet.pla: 0068: LDA #$00 + LDA #$00 +; libsrc/apple/uthernet.pla: 0069: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/uthernet.pla: 0070: RTS + RTS +; libsrc/apple/uthernet.pla: 0071: end +; libsrc/apple/uthernet.pla: 0072: // +; libsrc/apple/uthernet.pla: 0073: // PEEK WORD FROM I/O SPACE +; libsrc/apple/uthernet.pla: 0074: // _peekiow() +; libsrc/apple/uthernet.pla: 0075: // +; libsrc/apple/uthernet.pla: 0076: asm _peekiow#1 +_A006 ; _peekiow() +; libsrc/apple/uthernet.pla: 0077: DEX + DEX +; libsrc/apple/uthernet.pla: 0078: end +; libsrc/apple/uthernet.pla: 0079: asm _peekiowl +_A007 ; _peekiowl() +; libsrc/apple/uthernet.pla: 0080: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet.pla: 0081: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet.pla: 0082: end +; libsrc/apple/uthernet.pla: 0083: asm _peekiowh +_A008 ; _peekiowh() +; libsrc/apple/uthernet.pla: 0084: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet.pla: 0085: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/uthernet.pla: 0086: RTS + RTS +; libsrc/apple/uthernet.pla: 0087: end +; libsrc/apple/uthernet.pla: 0088: // +; libsrc/apple/uthernet.pla: 0089: // WRITE FRAME DATA INTO I/O SPACE +; libsrc/apple/uthernet.pla: 0090: // pokefrm(BUF, LEN) +; libsrc/apple/uthernet.pla: 0091: // +; libsrc/apple/uthernet.pla: 0092: asm pokefrm(buf, len)#1 +_A009 ; pokefrm() +; libsrc/apple/uthernet.pla: 0093: LDY #$00 + LDY #$00 +; libsrc/apple/uthernet.pla: 0094: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/uthernet.pla: 0095: STA SRCL + STA SRCL +; libsrc/apple/uthernet.pla: 0096: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/uthernet.pla: 0097: STA SRCH + STA SRCH +; libsrc/apple/uthernet.pla: 0098: LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN + LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN +; libsrc/apple/uthernet.pla: 0099: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet.pla: 0100: ROR + ROR +; libsrc/apple/uthernet.pla: 0101: ADC #$00 + ADC #$00 +; libsrc/apple/uthernet.pla: 0102: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet.pla: 0103: BEQ + + BEQ + +; libsrc/apple/uthernet.pla: 0104: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet.pla: 0105: + BCC POKELP ++ BCC POKELP +; libsrc/apple/uthernet.pla: 0106: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet.pla: 0107: POKELP LDA (SRC),Y +POKELP LDA (SRC),Y +; libsrc/apple/uthernet.pla: 0108: end +; libsrc/apple/uthernet.pla: 0109: asm _pokefrml +_A010 ; _pokefrml() +; libsrc/apple/uthernet.pla: 0110: STA $C000 + STA $C000 +; libsrc/apple/uthernet.pla: 0111: INY + INY +; libsrc/apple/uthernet.pla: 0112: LDA (SRC),Y + LDA (SRC),Y +; libsrc/apple/uthernet.pla: 0113: end +; libsrc/apple/uthernet.pla: 0114: asm _pokefrmh +_A011 ; _pokefrmh() +; libsrc/apple/uthernet.pla: 0115: STA $C000 + STA $C000 +; libsrc/apple/uthernet.pla: 0116: INY + INY +; libsrc/apple/uthernet.pla: 0117: BNE + + BNE + +; libsrc/apple/uthernet.pla: 0118: INC SRCH + INC SRCH +; libsrc/apple/uthernet.pla: 0119: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/uthernet.pla: 0120: BNE POKELP + BNE POKELP +; libsrc/apple/uthernet.pla: 0121: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/uthernet.pla: 0122: BNE POKELP + BNE POKELP +; libsrc/apple/uthernet.pla: 0123: INX + INX +; libsrc/apple/uthernet.pla: 0124: RTS + RTS +; libsrc/apple/uthernet.pla: 0125: end +; libsrc/apple/uthernet.pla: 0126: // +; libsrc/apple/uthernet.pla: 0127: // READ FRAME DATA FROM I/O SPACE +; libsrc/apple/uthernet.pla: 0128: // peekfrm(BUF, LEN) +; libsrc/apple/uthernet.pla: 0129: // +; libsrc/apple/uthernet.pla: 0130: asm peekfrm(buf, len)#1 +_A012 ; peekfrm() +; libsrc/apple/uthernet.pla: 0131: LDY #$00 + LDY #$00 +; libsrc/apple/uthernet.pla: 0132: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/uthernet.pla: 0133: STA DSTL + STA DSTL +; libsrc/apple/uthernet.pla: 0134: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/uthernet.pla: 0135: STA DSTH + STA DSTH +; libsrc/apple/uthernet.pla: 0136: LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN + LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN +; libsrc/apple/uthernet.pla: 0137: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet.pla: 0138: ROR + ROR +; libsrc/apple/uthernet.pla: 0139: ADC #$00 + ADC #$00 +; libsrc/apple/uthernet.pla: 0140: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet.pla: 0141: BEQ + + BEQ + +; libsrc/apple/uthernet.pla: 0142: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet.pla: 0143: + BCC PEEKLP ++ BCC PEEKLP +; libsrc/apple/uthernet.pla: 0144: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet.pla: 0145: end +; libsrc/apple/uthernet.pla: 0146: asm _peekfrml +_A013 ; _peekfrml() +; libsrc/apple/uthernet.pla: 0147: PEEKLP LDA $C000 +PEEKLP LDA $C000 +; libsrc/apple/uthernet.pla: 0148: STA (DST),Y + STA (DST),Y +; libsrc/apple/uthernet.pla: 0149: INY + INY +; libsrc/apple/uthernet.pla: 0150: end +; libsrc/apple/uthernet.pla: 0151: asm _peekfrmh +_A014 ; _peekfrmh() +; libsrc/apple/uthernet.pla: 0152: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet.pla: 0153: STA (DST),Y + STA (DST),Y +; libsrc/apple/uthernet.pla: 0154: INY + INY +; libsrc/apple/uthernet.pla: 0155: BNE + + BNE + +; libsrc/apple/uthernet.pla: 0156: INC DSTH + INC DSTH +; libsrc/apple/uthernet.pla: 0157: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/uthernet.pla: 0158: BNE PEEKLP + BNE PEEKLP +; libsrc/apple/uthernet.pla: 0159: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/uthernet.pla: 0160: BNE PEEKLP + BNE PEEKLP +; libsrc/apple/uthernet.pla: 0161: EXPSW INX +EXPSW INX +; libsrc/apple/uthernet.pla: 0162: RTS + RTS +; libsrc/apple/uthernet.pla: 0163: end +; libsrc/apple/uthernet.pla: 0164: def pokeiow(io, data)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; io -> [0] + ; data -> [2] +_C000 ; pokeiow() +; libsrc/apple/uthernet.pla: 0165: _pokeiowl.1 = io + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet.pla: 0166: _pokeiowh.1 = io+1 +; libsrc/apple/uthernet.pla: 0167: _pokeiow(data) +; libsrc/apple/uthernet.pla: 0168: end + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A002+1 +_F000 !WORD _A002+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A003+1 +_F001 !WORD _A003+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A001 +_F002 !WORD _A001 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet.pla: 0169: def peekio(io)#1 + ; io -> [0] +_C001 ; peekio() +; libsrc/apple/uthernet.pla: 0170: _peekiol.1 = io + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet.pla: 0171: return _peekio() + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A005+1 +_F003 !WORD _A005+1 + !BYTE $54 ; CALL _A004 +_F004 !WORD _A004 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet.pla: 0172: end +; libsrc/apple/uthernet.pla: 0173: def peekiow(io)#1 + ; io -> [0] +_C002 ; peekiow() +; libsrc/apple/uthernet.pla: 0174: _peekiowl.1 = io + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet.pla: 0175: _peekiowh.1 = io+1 +; libsrc/apple/uthernet.pla: 0176: return _peekiow() + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A007+1 +_F005 !WORD _A007+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A008+1 +_F006 !WORD _A008+1 + !BYTE $54 ; CALL _A006 +_F007 !WORD _A006 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet.pla: 0177: end +; libsrc/apple/uthernet.pla: 0178: def pokepreg(reg, data)#0 + ; reg -> [0] + ; data -> [2] +_C003 ; pokepreg() +; libsrc/apple/uthernet.pla: 0179: pokeiow(pregidx, reg) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet.pla: 0180: pokeiow(pregdata, data) +; libsrc/apple/uthernet.pla: 0181: end + !BYTE $68 ; LAB _D036+0 +_F008 !WORD _D036+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F009 !WORD _C000 + !BYTE $68 ; LAB _D037+0 +_F010 !WORD _D037+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C000 +_F011 !WORD _C000 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet.pla: 0182: def peekpreg(reg)#1 + ; reg -> [0] +_C004 ; peekpreg() +; libsrc/apple/uthernet.pla: 0183: pokeiow(pregidx, reg) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet.pla: 0184: return peekiow(pregdata) + !BYTE $68 ; LAB _D036+0 +_F012 !WORD _D036+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F013 !WORD _C000 + !BYTE $68 ; LAB _D037+0 +_F014 !WORD _D037+0 + !BYTE $54 ; CALL _C002 +_F015 !WORD _C002 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet.pla: 0185: end +; libsrc/apple/uthernet.pla: 0186: // +; libsrc/apple/uthernet.pla: 0187: // Set the length of the next packet to send and wait for data space availability +; libsrc/apple/uthernet.pla: 0188: // +; libsrc/apple/uthernet.pla: 0189: def pokefrmlen(len)#1 + ; len -> [0] +_C005 ; pokefrmlen() +; libsrc/apple/uthernet.pla: 0190: pokeiow(txcmd, $C0) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet.pla: 0191: pokeiow(txlen, len) +; libsrc/apple/uthernet.pla: 0192: repeat; until peekpreg($0138) & $0100 + !BYTE $68 ; LAB _D032+0 +_F016 !WORD _D032+0 + !BYTE $2A,$C0 ; CB 192 + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $68 ; LAB _D033+0 +_F018 !WORD _D033+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F019 !WORD _C000 +_B002 +_B003 + !BYTE $2C,$38,$01 ; CW 312 + !BYTE $54 ; CALL _C004 +_F020 !WORD _C004 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B002 + !WORD _B002-* +_B001 +; libsrc/apple/uthernet.pla: 0193: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet.pla: 0194: end +; libsrc/apple/uthernet.pla: 0195: // +; libsrc/apple/uthernet.pla: 0196: // Return the length of awaiting packet, 0 otherwise +; libsrc/apple/uthernet.pla: 0197: // +; libsrc/apple/uthernet.pla: 0198: def peekfrmlen#1 +_C006 ; peekfrmlen() +; libsrc/apple/uthernet.pla: 0199: word len + ; len -> [0] +; libsrc/apple/uthernet.pla: 0200: len = 0 + !BYTE $58,$02,$00 ; ENTER 2,0 +; libsrc/apple/uthernet.pla: 0201: if peekiow(isq) & $3F == $04 +; libsrc/apple/uthernet.pla: 0202: if peekio(rxdata_hi) & $01 +; libsrc/apple/uthernet.pla: 0203: peekio(rxdata_lo) +; libsrc/apple/uthernet.pla: 0204: len.1 = peekio(rxdata_hi) +; libsrc/apple/uthernet.pla: 0205: len.0 = peekio(rxdata_lo) +; libsrc/apple/uthernet.pla: 0206: else + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $68 ; LAB _D034+0 +_F021 !WORD _D034+0 + !BYTE $54 ; CALL _C002 +_F022 !WORD _C002 + !BYTE $3C,$3F ; ANDI 63 + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B004 + !WORD _B004-* + !BYTE $68 ; LAB _D031+0 +_F023 !WORD _D031+0 + !BYTE $54 ; CALL _C001 +_F024 !WORD _C001 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $68 ; LAB _D030+0 +_F025 !WORD _D030+0 + !BYTE $54 ; CALL _C001 +_F026 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D031+0 +_F027 !WORD _D031+0 + !BYTE $54 ; CALL _C001 +_F028 !WORD _C001 + !BYTE $74,$01 ; SLB [1] + !BYTE $68 ; LAB _D030+0 +_F029 !WORD _D030+0 + !BYTE $54 ; CALL _C001 +_F030 !WORD _C001 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 +; libsrc/apple/uthernet.pla: 0207: peekio(rxdata_lo) +; libsrc/apple/uthernet.pla: 0208: pokepreg($0102, $0140) // Skip pkt +; libsrc/apple/uthernet.pla: 0209: fin + !BYTE $68 ; LAB _D030+0 +_F031 !WORD _D030+0 + !BYTE $54 ; CALL _C001 +_F032 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $2C,$02,$01 ; CW 258 + !BYTE $2C,$40,$01 ; CW 320 + !BYTE $54 ; CALL _C003 +_F033 !WORD _C003 +_B007 +; libsrc/apple/uthernet.pla: 0210: fin +_B004 +_B005 +; libsrc/apple/uthernet.pla: 0211: return len + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet.pla: 0212: end +; libsrc/apple/uthernet.pla: 0213: // +; libsrc/apple/uthernet.pla: 0214: // Identify Uthernet card and initialize +; libsrc/apple/uthernet.pla: 0215: // +; libsrc/apple/uthernet.pla: 0216: for slot = $90 to $F0 step $10 +_INIT + !BYTE $2A,$F0 ; CB 240 + !BYTE $2A,$90 ; CB 144 +_B009 + !BYTE $7C ; DAB _D038+0 +_F034 !WORD _D038+0 +; libsrc/apple/uthernet.pla: 0217: rom = ((slot & $70) << 4) | $C000 +; libsrc/apple/uthernet.pla: 0218: if rom=>$06 <> $3C86 or (slot == $0B or (rom->$05 <> $38 and rom->$07 <> $18)) // Skip slots with signature +; libsrc/apple/uthernet.pla: 0219: if (peekiow(slot+TX_CMD) & $CC3F) == $0009 +; libsrc/apple/uthernet.pla: 0220: pokeiow(slot+PREG_INDEX, 0) +; libsrc/apple/uthernet.pla: 0221: if peekiow(slot+PREG_DATA) == $630E +; libsrc/apple/uthernet.pla: 0222: pregidx = slot + PREG_INDEX +; libsrc/apple/uthernet.pla: 0223: pregdata = slot + PREG_DATA +; libsrc/apple/uthernet.pla: 0224: pokepreg($0114, $40) // RESET +; libsrc/apple/uthernet.pla: 0225: rxdata_lo = slot + RX_DATA +; libsrc/apple/uthernet.pla: 0226: rxdata_hi = slot + RX_DATA + 1 +; libsrc/apple/uthernet.pla: 0227: txcmd = slot + TX_CMD +; libsrc/apple/uthernet.pla: 0228: txlen = slot + TX_LEN +; libsrc/apple/uthernet.pla: 0229: isq = slot + INT_STATUS +; libsrc/apple/uthernet.pla: 0230: _pokefrml.1 = slot + TX_DATA +; libsrc/apple/uthernet.pla: 0231: _pokefrmh.1 = slot + TX_DATA + 1 +; libsrc/apple/uthernet.pla: 0232: _peekfrml.1 = slot + RX_DATA +; libsrc/apple/uthernet.pla: 0233: _peekfrmh.1 = slot + RX_DATA + 1 +; libsrc/apple/uthernet.pla: 0234: pokepreg($0158, utherMAC:0) // MAC addr +; libsrc/apple/uthernet.pla: 0235: pokepreg($015A, utherMAC:2) // MAC addr +; libsrc/apple/uthernet.pla: 0236: pokepreg($015C, utherMAC:4) // MAC addr +; libsrc/apple/uthernet.pla: 0237: pokepreg($0102, $0100) // Recv cfg +; libsrc/apple/uthernet.pla: 0238: pokepreg($0104, $0D00) // Recv ctrl +; libsrc/apple/uthernet.pla: 0239: pokepreg($0106, $8200) // Xmit cfg +; libsrc/apple/uthernet.pla: 0240: pokepreg($0112, $00C0) // Line ctrl +; libsrc/apple/uthernet.pla: 0241: // +; libsrc/apple/uthernet.pla: 0242: // Install etherip driver +; libsrc/apple/uthernet.pla: 0243: // +; libsrc/apple/uthernet.pla: 0244: puts("Found Uthernet I in slot #"); putc('0' + ((slot - $80) >> 4)); putln + !BYTE $68 ; LAB _D038+0 +_F035 !WORD _D038+0 + !BYTE $3C,$70 ; ANDI 112 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $96 ; OR + !BYTE $7E ; DAW _D035+0 +_F036 !WORD _D035+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $2C,$86,$3C ; CW 15494 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B011 + !WORD _B011-* + !BYTE $68 ; LAB _D038+0 +_F037 !WORD _D038+0 + !BYTE $16 ; CN 11 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B012 + !WORD _B012-* + !BYTE $6A ; LAW _D035+0 +_F038 !WORD _D035+0 + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $2A,$38 ; CB 56 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D035+0 +_F039 !WORD _D035+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $2A,$18 ; CB 24 + !BYTE $42 ; ISNE +_B013 +_B012 +_B011 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $68 ; LAB _D038+0 +_F040 !WORD _D038+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $54 ; CALL _C002 +_F041 !WORD _C002 + !BYTE $2C,$3F,$CC ; CW 52287 + !BYTE $94 ; AND + !BYTE $12 ; CN 9 + !BYTE $24 ; BRNE _B016 + !WORD _B016-* + !BYTE $68 ; LAB _D038+0 +_F042 !WORD _D038+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C000 +_F043 !WORD _C000 + !BYTE $68 ; LAB _D038+0 +_F044 !WORD _D038+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $54 ; CALL _C002 +_F045 !WORD _C002 + !BYTE $2C,$0E,$63 ; CW 25358 + !BYTE $24 ; BRNE _B018 + !WORD _B018-* + !BYTE $68 ; LAB _D038+0 +_F046 !WORD _D038+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $78 ; SAB _D036+0 +_F047 !WORD _D036+0 + !BYTE $68 ; LAB _D038+0 +_F048 !WORD _D038+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $78 ; SAB _D037+0 +_F049 !WORD _D037+0 + !BYTE $2C,$14,$01 ; CW 276 + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C003 +_F050 !WORD _C003 + !BYTE $68 ; LAB _D038+0 +_F051 !WORD _D038+0 + !BYTE $78 ; SAB _D030+0 +_F052 !WORD _D030+0 + !BYTE $68 ; LAB _D038+0 +_F053 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D031+0 +_F054 !WORD _D031+0 + !BYTE $68 ; LAB _D038+0 +_F055 !WORD _D038+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $78 ; SAB _D032+0 +_F056 !WORD _D032+0 + !BYTE $68 ; LAB _D038+0 +_F057 !WORD _D038+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $78 ; SAB _D033+0 +_F058 !WORD _D033+0 + !BYTE $68 ; LAB _D038+0 +_F059 !WORD _D038+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $78 ; SAB _D034+0 +_F060 !WORD _D034+0 + !BYTE $68 ; LAB _D038+0 +_F061 !WORD _D038+0 + !BYTE $78 ; SAB _A010+1 +_F062 !WORD _A010+1 + !BYTE $68 ; LAB _D038+0 +_F063 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A011+1 +_F064 !WORD _A011+1 + !BYTE $68 ; LAB _D038+0 +_F065 !WORD _D038+0 + !BYTE $78 ; SAB _A013+1 +_F066 !WORD _A013+1 + !BYTE $68 ; LAB _D038+0 +_F067 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A014+1 +_F068 !WORD _A014+1 + !BYTE $2C,$58,$01 ; CW 344 + !BYTE $6A ; LAW _D039+0 +_F069 !WORD _D039+0 + !BYTE $54 ; CALL _C003 +_F070 !WORD _C003 + !BYTE $2C,$5A,$01 ; CW 346 + !BYTE $6A ; LAW _D039+2 +_F071 !WORD _D039+2 + !BYTE $54 ; CALL _C003 +_F072 !WORD _C003 + !BYTE $2C,$5C,$01 ; CW 348 + !BYTE $6A ; LAW _D039+4 +_F073 !WORD _D039+4 + !BYTE $54 ; CALL _C003 +_F074 !WORD _C003 + !BYTE $2C,$02,$01 ; CW 258 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _C003 +_F075 !WORD _C003 + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $2C,$00,$0D ; CW 3328 + !BYTE $54 ; CALL _C003 +_F076 !WORD _C003 + !BYTE $2C,$06,$01 ; CW 262 + !BYTE $2C,$00,$82 ; CW 33280 + !BYTE $54 ; CALL _C003 +_F077 !WORD _C003 + !BYTE $2C,$12,$01 ; CW 274 + !BYTE $2A,$C0 ; CB 192 + !BYTE $54 ; CALL _C003 +_F078 !WORD _C003 + !BYTE $2E ; CS + !BYTE $1A + !BYTE $46,$6F,$75,$6E,$64,$20,$55,$74 + !BYTE $68,$65,$72,$6E,$65,$74,$20,$49 + !BYTE $20,$69,$6E,$20,$73,$6C,$6F,$74 + !BYTE $20,$23 + !BYTE $54 ; CALL _X004 +_F079 !WORD 0 +; libsrc/apple/uthernet.pla: 0245: setEtherDriver(@utherMAC, @peekfrmlen, @peekfrm, @pokefrmlen, @pokefrm) +; libsrc/apple/uthernet.pla: 0246: return modkeep + !BYTE $2A,$30 ; CB 48 + !BYTE $68 ; LAB _D038+0 +_F080 !WORD _D038+0 + !BYTE $3A,$80 ; SUBI 128 + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X002 +_F081 !WORD 0 + !BYTE $54 ; CALL _X003 +_F082 !WORD 0 + !BYTE $26 ; LA _D039+0 +_F083 !WORD _D039+0 + !BYTE $26 ; LA _C006+0 +_F084 !WORD _C006+0 + !BYTE $26 ; LA _A012+0 +_F085 !WORD _A012+0 + !BYTE $26 ; LA _C005+0 +_F086 !WORD _C005+0 + !BYTE $26 ; LA _A009+0 +_F087 !WORD _A009+0 + !BYTE $54 ; CALL _X029 +_F088 !WORD 0 + !BYTE $32 ; DROP2 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; libsrc/apple/uthernet.pla: 0247: fin +_B018 +_B019 +; libsrc/apple/uthernet.pla: 0248: fin +_B016 +_B017 +; libsrc/apple/uthernet.pla: 0249: fin +_B014 +_B015 +; libsrc/apple/uthernet.pla: 0250: next +_B010 + !BYTE $2A,$10 ; CB 16 + !BYTE $A6 ; ADDBRLE _B009 + !WORD _B009-* +_B008 + !BYTE $78 ; SAB _D038+0 +_F089 !WORD _D038+0 + !BYTE $30 ; DROP +; libsrc/apple/uthernet.pla: 0251: // +; libsrc/apple/uthernet.pla: 0252: // Not found +; libsrc/apple/uthernet.pla: 0253: // +; libsrc/apple/uthernet.pla: 0254: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/uthernet.pla: 0255: done +_SYSFLAGS = 0 +_DEFCNT = 8 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: SETETHERDRIVER + !BYTE $D3,$C5,$D4,$C5,$D4,$C8,$C5,$D2,$C4,$D2,$C9,$D6,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/apple/uthernet2.a b/src/libsrc/apple/uthernet2.a new file mode 100644 index 0000000..88dd21f --- /dev/null +++ b/src/libsrc/apple/uthernet2.a @@ -0,0 +1,3876 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/apple/uthernet2.pla: 0001: // +; libsrc/apple/uthernet2.pla: 0002: // Uthernet II Wiznet 5100 based ethernet card +; libsrc/apple/uthernet2.pla: 0003: // +; libsrc/apple/uthernet2.pla: 0004: // TCP/IP is built into hardware, so no dependencies on the software +; libsrc/apple/uthernet2.pla: 0005: // layers, like the Uthernet +; libsrc/apple/uthernet2.pla: 0006: // +; libsrc/apple/uthernet2.pla: 0007: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/apple/uthernet2.pla: 0007: +; libsrc/apple/uthernet2.pla: 0008: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + ; INET -> X028 +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; libsrc/apple/uthernet2.pla: 0008: +; libsrc/apple/uthernet2.pla: 0009: // +; libsrc/apple/uthernet2.pla: 0010: // Wiznet registers +; libsrc/apple/uthernet2.pla: 0011: // +; libsrc/apple/uthernet2.pla: 0012: const WIZ_MR = $00 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; WIZ_MR = 0 +; libsrc/apple/uthernet2.pla: 0013: const WIZ_GWR = $01 + ; WIZ_GWR = 1 +; libsrc/apple/uthernet2.pla: 0014: const WIZ_SUBR = $05 + ; WIZ_SUBR = 5 +; libsrc/apple/uthernet2.pla: 0015: const WIZ_SHAR = $09 + ; WIZ_SHAR = 9 +; libsrc/apple/uthernet2.pla: 0016: const WIZ_SIPR = $0F + ; WIZ_SIPR = 15 +; libsrc/apple/uthernet2.pla: 0017: const WIZ_IR = $15 + ; WIZ_IR = 21 +; libsrc/apple/uthernet2.pla: 0018: const WIZ_IMR = $16 + ; WIZ_IMR = 22 +; libsrc/apple/uthernet2.pla: 0019: const WIZ_RTR = $17 + ; WIZ_RTR = 23 +; libsrc/apple/uthernet2.pla: 0020: const WIZ_RCR = $19 + ; WIZ_RCR = 25 +; libsrc/apple/uthernet2.pla: 0021: const WIZ_RMSR = $1A + ; WIZ_RMSR = 26 +; libsrc/apple/uthernet2.pla: 0022: const WIZ_TMSR = $1B + ; WIZ_TMSR = 27 +; libsrc/apple/uthernet2.pla: 0023: const WIZ_PATR = $1C + ; WIZ_PATR = 28 +; libsrc/apple/uthernet2.pla: 0024: const WIZ_PTMR = $28 + ; WIZ_PTMR = 40 +; libsrc/apple/uthernet2.pla: 0025: const WIZ_PMGC = $29 + ; WIZ_PMGC = 41 +; libsrc/apple/uthernet2.pla: 0026: const WIZ_UIPR = $2A + ; WIZ_UIPR = 42 +; libsrc/apple/uthernet2.pla: 0027: const WIZ_UPRT = $2E + ; WIZ_UPRT = 46 +; libsrc/apple/uthernet2.pla: 0028: // +; libsrc/apple/uthernet2.pla: 0029: // Wiznet socket registers +; libsrc/apple/uthernet2.pla: 0030: // +; libsrc/apple/uthernet2.pla: 0031: const WIZ_SREGS = $0400 + ; WIZ_SREGS = 1024 +; libsrc/apple/uthernet2.pla: 0032: const WIZ_SSIZE = $0100 + ; WIZ_SSIZE = 256 +; libsrc/apple/uthernet2.pla: 0033: const WIZ_SOCK0 = $0400 + ; WIZ_SOCK0 = 1024 +; libsrc/apple/uthernet2.pla: 0034: const WIZ_SOCK1 = $0500 + ; WIZ_SOCK1 = 1280 +; libsrc/apple/uthernet2.pla: 0035: const WIZ_SOCK2 = $0600 + ; WIZ_SOCK2 = 1536 +; libsrc/apple/uthernet2.pla: 0036: const WIZ_SOCK3 = $0700 + ; WIZ_SOCK3 = 1792 +; libsrc/apple/uthernet2.pla: 0037: const WIZ_SnMR = $00 + ; WIZ_SnMR = 0 +; libsrc/apple/uthernet2.pla: 0038: const WIZ_SnCR = $01 + ; WIZ_SnCR = 1 +; libsrc/apple/uthernet2.pla: 0039: const WIZ_SnIR = $02 + ; WIZ_SnIR = 2 +; libsrc/apple/uthernet2.pla: 0040: const WIZ_SnSR = $03 + ; WIZ_SnSR = 3 +; libsrc/apple/uthernet2.pla: 0041: const WIZ_SnPORT = $04 + ; WIZ_SnPORT = 4 +; libsrc/apple/uthernet2.pla: 0042: const WIZ_SnDHAR = $06 + ; WIZ_SnDHAR = 6 +; libsrc/apple/uthernet2.pla: 0043: const WIZ_SnDIPR = $0C + ; WIZ_SnDIPR = 12 +; libsrc/apple/uthernet2.pla: 0044: const WIZ_SnDPORT = $10 + ; WIZ_SnDPORT = 16 +; libsrc/apple/uthernet2.pla: 0045: const WIZ_SnMSSR = $12 + ; WIZ_SnMSSR = 18 +; libsrc/apple/uthernet2.pla: 0046: const WIZ_SnPROTO = $14 + ; WIZ_SnPROTO = 20 +; libsrc/apple/uthernet2.pla: 0047: const WIZ_SnTOS = $15 + ; WIZ_SnTOS = 21 +; libsrc/apple/uthernet2.pla: 0048: const WIZ_SnTTL = $16 + ; WIZ_SnTTL = 22 +; libsrc/apple/uthernet2.pla: 0049: const WIZ_SnFSR = $20 + ; WIZ_SnFSR = 32 +; libsrc/apple/uthernet2.pla: 0050: const WIZ_SnTXRD = $22 + ; WIZ_SnTXRD = 34 +; libsrc/apple/uthernet2.pla: 0051: const WIZ_SnTXWR = $24 + ; WIZ_SnTXWR = 36 +; libsrc/apple/uthernet2.pla: 0052: const WIZ_SnRSR = $26 + ; WIZ_SnRSR = 38 +; libsrc/apple/uthernet2.pla: 0053: const WIZ_SnRXRD = $28 + ; WIZ_SnRXRD = 40 +; libsrc/apple/uthernet2.pla: 0054: // +; libsrc/apple/uthernet2.pla: 0055: // Wiznet socket data +; libsrc/apple/uthernet2.pla: 0056: // +; libsrc/apple/uthernet2.pla: 0057: const WIZ_TXMEM = $4000 + ; WIZ_TXMEM = 16384 +; libsrc/apple/uthernet2.pla: 0058: const WIZ_TXSIZE = $0800 + ; WIZ_TXSIZE = 2048 +; libsrc/apple/uthernet2.pla: 0059: const WIZ_TXMASK = WIZ_TXSIZE-1 + ; WIZ_TXMASK = 2047 +; libsrc/apple/uthernet2.pla: 0060: const WIZ_TXMEM0 = $4000 + ; WIZ_TXMEM0 = 16384 +; libsrc/apple/uthernet2.pla: 0061: const WIZ_TXMEM1 = $4800 + ; WIZ_TXMEM1 = 18432 +; libsrc/apple/uthernet2.pla: 0062: const WIZ_TXMEM2 = $5000 + ; WIZ_TXMEM2 = 20480 +; libsrc/apple/uthernet2.pla: 0063: const WIZ_TXMEM3 = $5800 + ; WIZ_TXMEM3 = 22528 +; libsrc/apple/uthernet2.pla: 0064: const WIZ_RXMEM = $6000 + ; WIZ_RXMEM = 24576 +; libsrc/apple/uthernet2.pla: 0065: const WIZ_RXSIZE = $0800 + ; WIZ_RXSIZE = 2048 +; libsrc/apple/uthernet2.pla: 0066: const WIZ_RXMASK = WIZ_RXSIZE-1 + ; WIZ_RXMASK = 2047 +; libsrc/apple/uthernet2.pla: 0067: const WIZ_RXMEM0 = $6000 + ; WIZ_RXMEM0 = 24576 +; libsrc/apple/uthernet2.pla: 0068: const WIZ_RXMEM1 = $6800 + ; WIZ_RXMEM1 = 26624 +; libsrc/apple/uthernet2.pla: 0069: const WIZ_RXMEM2 = $7000 + ; WIZ_RXMEM2 = 28672 +; libsrc/apple/uthernet2.pla: 0070: const WIZ_RXMEM3 = $7800 + ; WIZ_RXMEM3 = 30720 +; libsrc/apple/uthernet2.pla: 0071: // +; libsrc/apple/uthernet2.pla: 0072: // Wiznet indirect registers +; libsrc/apple/uthernet2.pla: 0073: // +; libsrc/apple/uthernet2.pla: 0074: word[] rom +_D029 ; rom +; libsrc/apple/uthernet2.pla: 0075: word saveidx +_D030 !FILL 2 ; saveidx +; libsrc/apple/uthernet2.pla: 0076: byte regidx +_D031 !FILL 1 ; regidx +; libsrc/apple/uthernet2.pla: 0077: byte regdata +_D032 !FILL 1 ; regdata +; libsrc/apple/uthernet2.pla: 0078: byte slot +_D033 !FILL 1 ; slot +; libsrc/apple/uthernet2.pla: 0079: // +; libsrc/apple/uthernet2.pla: 0080: // Wiznet MAC address +; libsrc/apple/uthernet2.pla: 0081: // +; libsrc/apple/uthernet2.pla: 0082: byte[6] wizMAC = $00,$0A,$99,$1E,$02,$B0 +_D034 ; wizMAC = $00,$0A,$99,$1E,$02,$B0 + !BYTE $00 + !BYTE $0A + !BYTE $99 + !BYTE $1E + !BYTE $02 + !BYTE $B0 +; libsrc/apple/uthernet2.pla: 0083: // +; libsrc/apple/uthernet2.pla: 0084: // Wiznet IP addresses +; libsrc/apple/uthernet2.pla: 0085: // +; libsrc/apple/uthernet2.pla: 0086: byte[4] localip +_D035 !FILL 4 ; localip +; libsrc/apple/uthernet2.pla: 0087: byte[4] subnet +_D036 !FILL 4 ; subnet +; libsrc/apple/uthernet2.pla: 0088: byte[4] gateway +_D037 !FILL 4 ; gateway +; libsrc/apple/uthernet2.pla: 0089: // +; libsrc/apple/uthernet2.pla: 0090: // Predefine service routine +; libsrc/apple/uthernet2.pla: 0091: // +; libsrc/apple/uthernet2.pla: 0092: predef wizServiceIP +; libsrc/apple/uthernet2.pla: 0093: // +; libsrc/apple/uthernet2.pla: 0094: // Segment list element +; libsrc/apple/uthernet2.pla: 0095: // +; libsrc/apple/uthernet2.pla: 0096: struc t_segment +; libsrc/apple/uthernet2.pla: 0097: word seg_buf + ; seg_buf = 0 +; libsrc/apple/uthernet2.pla: 0098: word seg_len + ; seg_len = 2 +; libsrc/apple/uthernet2.pla: 0099: end + ; t_segment = 4 +; libsrc/apple/uthernet2.pla: 0100: // +; libsrc/apple/uthernet2.pla: 0101: // Max Ethernet frame size +; libsrc/apple/uthernet2.pla: 0102: // +; libsrc/apple/uthernet2.pla: 0103: const MAX_FRAME_SIZE = 1518 + ; MAX_FRAME_SIZE = 1518 +; libsrc/apple/uthernet2.pla: 0104: const MAC_BROADCAST = $FFFF + ; MAC_BROADCAST = 65535 +; libsrc/apple/uthernet2.pla: 0105: const MAC_SIZE = 6 + ; MAC_SIZE = 6 +; libsrc/apple/uthernet2.pla: 0106: // +; libsrc/apple/uthernet2.pla: 0107: // Ethernet header +; libsrc/apple/uthernet2.pla: 0108: // +; libsrc/apple/uthernet2.pla: 0109: struc t_ethrhdr +; libsrc/apple/uthernet2.pla: 0110: byte[MAC_SIZE] ethr_dst + ; ethr_dst = 0 +; libsrc/apple/uthernet2.pla: 0111: byte[MAC_SIZE] ethr_src + ; ethr_src = 6 +; libsrc/apple/uthernet2.pla: 0112: word ethr_payload + ; ethr_payload = 12 +; libsrc/apple/uthernet2.pla: 0113: end + ; t_ethrhdr = 14 +; libsrc/apple/uthernet2.pla: 0114: const PAYLOAD_IP = $0008 // BE format + ; PAYLOAD_IP = 8 +; libsrc/apple/uthernet2.pla: 0115: const PAYLOAD_ARP = $0608 // BE format + ; PAYLOAD_ARP = 1544 +; libsrc/apple/uthernet2.pla: 0116: // +; libsrc/apple/uthernet2.pla: 0117: // IP datagram header +; libsrc/apple/uthernet2.pla: 0118: // +; libsrc/apple/uthernet2.pla: 0119: const IP4ADR_SIZE = 4 + ; IP4ADR_SIZE = 4 +; libsrc/apple/uthernet2.pla: 0120: struc t_iphdr +; libsrc/apple/uthernet2.pla: 0121: byte ip_vers_hlen + ; ip_vers_hlen = 0 +; libsrc/apple/uthernet2.pla: 0122: byte ip_service + ; ip_service = 1 +; libsrc/apple/uthernet2.pla: 0123: word ip_length + ; ip_length = 2 +; libsrc/apple/uthernet2.pla: 0124: word ip_id + ; ip_id = 4 +; libsrc/apple/uthernet2.pla: 0125: word ip_flags_fragofst + ; ip_flags_fragofst = 6 +; libsrc/apple/uthernet2.pla: 0126: byte ip_ttl + ; ip_ttl = 8 +; libsrc/apple/uthernet2.pla: 0127: byte ip_proto + ; ip_proto = 9 +; libsrc/apple/uthernet2.pla: 0128: word ip_chksm + ; ip_chksm = 10 +; libsrc/apple/uthernet2.pla: 0129: byte[IP4ADR_SIZE] ip_src + ; ip_src = 12 +; libsrc/apple/uthernet2.pla: 0130: byte[IP4ADR_SIZE] ip_dst + ; ip_dst = 16 +; libsrc/apple/uthernet2.pla: 0131: byte[] ip_options + ; ip_options = 20 +; libsrc/apple/uthernet2.pla: 0132: end + ; t_iphdr = 20 +; libsrc/apple/uthernet2.pla: 0133: const IP_BROADCAST = $FFFF + ; IP_BROADCAST = 65535 +; libsrc/apple/uthernet2.pla: 0134: const IP_PROTO_ICMP = $01 + ; IP_PROTO_ICMP = 1 +; libsrc/apple/uthernet2.pla: 0135: const IP_PROTO_UDP = $11 + ; IP_PROTO_UDP = 17 +; libsrc/apple/uthernet2.pla: 0136: const IP_PROTO_TCP = $06 + ; IP_PROTO_TCP = 6 +; libsrc/apple/uthernet2.pla: 0137: word bcast = IP_BROADCAST, IP_BROADCAST +_D039 ; bcast = IP_BROADCAST, IP_BROADCAST + !WORD $FFFF + !WORD $FFFF +; libsrc/apple/uthernet2.pla: 0138: // +; libsrc/apple/uthernet2.pla: 0139: // ICMP type/codes +; libsrc/apple/uthernet2.pla: 0140: // +; libsrc/apple/uthernet2.pla: 0141: const ICMP_ECHO_REQST = 8 + ; ICMP_ECHO_REQST = 8 +; libsrc/apple/uthernet2.pla: 0142: const ICMP_ECHO_REPLY = 0 + ; ICMP_ECHO_REPLY = 0 +; libsrc/apple/uthernet2.pla: 0143: // +; libsrc/apple/uthernet2.pla: 0144: // ICMP message format +; libsrc/apple/uthernet2.pla: 0145: // +; libsrc/apple/uthernet2.pla: 0146: struc t_icmp +; libsrc/apple/uthernet2.pla: 0147: byte icmp_type + ; icmp_type = 0 +; libsrc/apple/uthernet2.pla: 0148: byte icmp_code + ; icmp_code = 1 +; libsrc/apple/uthernet2.pla: 0149: word icmp_chksm + ; icmp_chksm = 2 +; libsrc/apple/uthernet2.pla: 0150: word[2] icmp_header + ; icmp_header = 4 +; libsrc/apple/uthernet2.pla: 0151: end + ; t_icmp = 8 +; libsrc/apple/uthernet2.pla: 0152: // +; libsrc/apple/uthernet2.pla: 0153: // UDP IPv4 psuedo header +; libsrc/apple/uthernet2.pla: 0154: // +; libsrc/apple/uthernet2.pla: 0155: struc t_piphdr +; libsrc/apple/uthernet2.pla: 0156: byte[IP4ADR_SIZE] pip_src + ; pip_src = 0 +; libsrc/apple/uthernet2.pla: 0157: byte[IP4ADR_SIZE] pip_dst + ; pip_dst = 4 +; libsrc/apple/uthernet2.pla: 0158: byte pip_zero + ; pip_zero = 8 +; libsrc/apple/uthernet2.pla: 0159: byte pip_proto + ; pip_proto = 9 +; libsrc/apple/uthernet2.pla: 0160: word pip_len + ; pip_len = 10 +; libsrc/apple/uthernet2.pla: 0161: end + ; t_piphdr = 12 +; libsrc/apple/uthernet2.pla: 0162: // +; libsrc/apple/uthernet2.pla: 0163: // UDP header +; libsrc/apple/uthernet2.pla: 0164: // +; libsrc/apple/uthernet2.pla: 0165: struc t_udphdr +; libsrc/apple/uthernet2.pla: 0166: word udp_src + ; udp_src = 0 +; libsrc/apple/uthernet2.pla: 0167: word udp_dst + ; udp_dst = 2 +; libsrc/apple/uthernet2.pla: 0168: word udp_len + ; udp_len = 4 +; libsrc/apple/uthernet2.pla: 0169: word udp_chksm + ; udp_chksm = 6 +; libsrc/apple/uthernet2.pla: 0170: end + ; t_udphdr = 8 +; libsrc/apple/uthernet2.pla: 0171: // +; libsrc/apple/uthernet2.pla: 0172: // TCP header +; libsrc/apple/uthernet2.pla: 0173: // +; libsrc/apple/uthernet2.pla: 0174: struc t_tcphdr +; libsrc/apple/uthernet2.pla: 0175: word tcp_src + ; tcp_src = 0 +; libsrc/apple/uthernet2.pla: 0176: word tcp_dst + ; tcp_dst = 2 +; libsrc/apple/uthernet2.pla: 0177: word tcp_len + ; tcp_len = 4 +; libsrc/apple/uthernet2.pla: 0178: word tcp_chksm + ; tcp_chksm = 6 +; libsrc/apple/uthernet2.pla: 0179: end + ; t_tcphdr = 8 +; libsrc/apple/uthernet2.pla: 0180: // +; libsrc/apple/uthernet2.pla: 0181: // Local network parameters +; libsrc/apple/uthernet2.pla: 0182: // +; libsrc/apple/uthernet2.pla: 0183: const MAX_WIZ_CHANNELS = 4 + ; MAX_WIZ_CHANNELS = 4 +; libsrc/apple/uthernet2.pla: 0184: // +; libsrc/apple/uthernet2.pla: 0185: // Channel protocols +; libsrc/apple/uthernet2.pla: 0186: // +; libsrc/apple/uthernet2.pla: 0187: const WIZ_PROTO_CLOSED = 0 + ; WIZ_PROTO_CLOSED = 0 +; libsrc/apple/uthernet2.pla: 0188: const WIZ_PROTO_TCP = 1 + ; WIZ_PROTO_TCP = 1 +; libsrc/apple/uthernet2.pla: 0189: const WIZ_PROTO_UDP = 2 + ; WIZ_PROTO_UDP = 2 +; libsrc/apple/uthernet2.pla: 0190: const WIZ_PROTO_IP = 3 + ; WIZ_PROTO_IP = 3 +; libsrc/apple/uthernet2.pla: 0191: const WIZ_PROTO_RAW = 4 + ; WIZ_PROTO_RAW = 4 +; libsrc/apple/uthernet2.pla: 0192: // +; libsrc/apple/uthernet2.pla: 0193: // State transistions +; libsrc/apple/uthernet2.pla: 0194: // +; libsrc/apple/uthernet2.pla: 0195: const TCP_STATE_CLOSED = 0 + ; TCP_STATE_CLOSED = 0 +; libsrc/apple/uthernet2.pla: 0196: const TCP_STATE_CLOSING = 1 + ; TCP_STATE_CLOSING = 1 +; libsrc/apple/uthernet2.pla: 0197: const TCP_STATE_LISTEN = 2 + ; TCP_STATE_LISTEN = 2 +; libsrc/apple/uthernet2.pla: 0198: const TCP_STATE_CONNECT = 3 + ; TCP_STATE_CONNECT = 3 +; libsrc/apple/uthernet2.pla: 0199: const TCP_STATE_OPEN = 4 + ; TCP_STATE_OPEN = 4 +; libsrc/apple/uthernet2.pla: 0200: // +; libsrc/apple/uthernet2.pla: 0201: // HW channels +; libsrc/apple/uthernet2.pla: 0202: // +; libsrc/apple/uthernet2.pla: 0203: struc t_channel +; libsrc/apple/uthernet2.pla: 0204: byte channel_proto + ; channel_proto = 0 +; libsrc/apple/uthernet2.pla: 0205: byte channel_state + ; channel_state = 1 +; libsrc/apple/uthernet2.pla: 0206: word channel_regs + ; channel_regs = 2 +; libsrc/apple/uthernet2.pla: 0207: word channel_txmem + ; channel_txmem = 4 +; libsrc/apple/uthernet2.pla: 0208: word channel_rxmem + ; channel_rxmem = 6 +; libsrc/apple/uthernet2.pla: 0209: word channel_lclport + ; channel_lclport = 8 +; libsrc/apple/uthernet2.pla: 0210: word channel_remport + ; channel_remport = 10 +; libsrc/apple/uthernet2.pla: 0211: byte[4] channel_remip + ; channel_remip = 12 +; libsrc/apple/uthernet2.pla: 0212: word channel_recv_func + ; channel_recv_func = 16 +; libsrc/apple/uthernet2.pla: 0213: word channel_recv_parm + ; channel_recv_parm = 18 +; libsrc/apple/uthernet2.pla: 0214: end + ; t_channel = 20 +; libsrc/apple/uthernet2.pla: 0215: byte[t_channel] wizChannel[MAX_WIZ_CHANNELS] +_D040 !FILL 80 ; wizChannel[MAX_WIZ_CHANNELS] +; libsrc/apple/uthernet2.pla: 0216: // +; libsrc/apple/uthernet2.pla: 0217: // Service ICMP hook +; libsrc/apple/uthernet2.pla: 0218: // +; libsrc/apple/uthernet2.pla: 0219: export word hookICMP +_D041 !FILL 2 ; hookICMP +; libsrc/apple/uthernet2.pla: 0220: // +; libsrc/apple/uthernet2.pla: 0221: // Defines for ASM routines +; libsrc/apple/uthernet2.pla: 0222: // +; libsrc/apple/uthernet2.pla: 0223: asm equates +_A000 ; equates() +; libsrc/apple/uthernet2.pla: 0224: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/apple/uthernet2.pla: 0225: end +; libsrc/apple/uthernet2.pla: 0226: // +; libsrc/apple/uthernet2.pla: 0227: // Swap bytes in word +; libsrc/apple/uthernet2.pla: 0228: // +; libsrc/apple/uthernet2.pla: 0229: asm swab(val) +_A001 ; swab() +; libsrc/apple/uthernet2.pla: 0230: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet2.pla: 0231: LDY ESTKH,X + LDY ESTKH,X +; libsrc/apple/uthernet2.pla: 0232: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/uthernet2.pla: 0233: STY ESTKL,X + STY ESTKL,X +; libsrc/apple/uthernet2.pla: 0234: RTS + RTS +; libsrc/apple/uthernet2.pla: 0235: end +; libsrc/apple/uthernet2.pla: 0236: // +; libsrc/apple/uthernet2.pla: 0237: // Wiznet I/O functions +; libsrc/apple/uthernet2.pla: 0238: // +; libsrc/apple/uthernet2.pla: 0239: // POKE WORD TO I/O SPACE +; libsrc/apple/uthernet2.pla: 0240: // Note: Big Endian format +; libsrc/apple/uthernet2.pla: 0241: // +; libsrc/apple/uthernet2.pla: 0242: asm _pokeiow(val)#0 +_A002 ; _pokeiow() +; libsrc/apple/uthernet2.pla: 0243: LDA ESTKH,X + LDA ESTKH,X +; libsrc/apple/uthernet2.pla: 0244: end +; libsrc/apple/uthernet2.pla: 0245: asm _pokeiowl +_A003 ; _pokeiowl() +; libsrc/apple/uthernet2.pla: 0246: STA $C000 + STA $C000 +; libsrc/apple/uthernet2.pla: 0247: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet2.pla: 0248: end +; libsrc/apple/uthernet2.pla: 0249: asm _pokeiowh +_A004 ; _pokeiowh() +; libsrc/apple/uthernet2.pla: 0250: STA $C000 + STA $C000 +; libsrc/apple/uthernet2.pla: 0251: INX + INX +; libsrc/apple/uthernet2.pla: 0252: RTS + RTS +; libsrc/apple/uthernet2.pla: 0253: end +; libsrc/apple/uthernet2.pla: 0254: // +; libsrc/apple/uthernet2.pla: 0255: // POKE BYTE TO I/O SPACE +; libsrc/apple/uthernet2.pla: 0256: // +; libsrc/apple/uthernet2.pla: 0257: asm _pokeio(val)#0 +_A005 ; _pokeio() +; libsrc/apple/uthernet2.pla: 0258: LDA ESTKL,X + LDA ESTKL,X +; libsrc/apple/uthernet2.pla: 0259: end +; libsrc/apple/uthernet2.pla: 0260: asm _pokeiol +_A006 ; _pokeiol() +; libsrc/apple/uthernet2.pla: 0261: STA $C000 + STA $C000 +; libsrc/apple/uthernet2.pla: 0262: INX + INX +; libsrc/apple/uthernet2.pla: 0263: RTS + RTS +; libsrc/apple/uthernet2.pla: 0264: end +; libsrc/apple/uthernet2.pla: 0265: // +; libsrc/apple/uthernet2.pla: 0266: // PEEK BYTE FROM I/O SPACE +; libsrc/apple/uthernet2.pla: 0267: // +; libsrc/apple/uthernet2.pla: 0268: asm _peekio +_A007 ; _peekio() +; libsrc/apple/uthernet2.pla: 0269: DEX + DEX +; libsrc/apple/uthernet2.pla: 0270: end +; libsrc/apple/uthernet2.pla: 0271: asm _peekiol +_A008 ; _peekiol() +; libsrc/apple/uthernet2.pla: 0272: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet2.pla: 0273: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet2.pla: 0274: LDA #$00 + LDA #$00 +; libsrc/apple/uthernet2.pla: 0275: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/uthernet2.pla: 0276: RTS + RTS +; libsrc/apple/uthernet2.pla: 0277: end +; libsrc/apple/uthernet2.pla: 0278: // +; libsrc/apple/uthernet2.pla: 0279: // PEEK WORD FROM I/O SPACE +; libsrc/apple/uthernet2.pla: 0280: // Note: Big Endian format +; libsrc/apple/uthernet2.pla: 0281: // +; libsrc/apple/uthernet2.pla: 0282: asm _peekiow +_A009 ; _peekiow() +; libsrc/apple/uthernet2.pla: 0283: DEX + DEX +; libsrc/apple/uthernet2.pla: 0284: end +; libsrc/apple/uthernet2.pla: 0285: asm _peekiowl +_A010 ; _peekiowl() +; libsrc/apple/uthernet2.pla: 0286: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet2.pla: 0287: STA ESTKH,X + STA ESTKH,X +; libsrc/apple/uthernet2.pla: 0288: end +; libsrc/apple/uthernet2.pla: 0289: asm _peekiowh +_A011 ; _peekiowh() +; libsrc/apple/uthernet2.pla: 0290: LDA $C000 + LDA $C000 +; libsrc/apple/uthernet2.pla: 0291: STA ESTKL,X + STA ESTKL,X +; libsrc/apple/uthernet2.pla: 0292: RTS + RTS +; libsrc/apple/uthernet2.pla: 0293: end +; libsrc/apple/uthernet2.pla: 0294: // +; libsrc/apple/uthernet2.pla: 0295: // WRITE DATA INTO I/O SPACE +; libsrc/apple/uthernet2.pla: 0296: // pokedata(BUF, LEN) +; libsrc/apple/uthernet2.pla: 0297: // +; libsrc/apple/uthernet2.pla: 0298: asm pokedata(buf, len)#0 +_A012 ; pokedata() +; libsrc/apple/uthernet2.pla: 0299: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/uthernet2.pla: 0300: STA SRCL + STA SRCL +; libsrc/apple/uthernet2.pla: 0301: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/uthernet2.pla: 0302: STA SRCH + STA SRCH +; libsrc/apple/uthernet2.pla: 0303: LDY ESTKL,X + LDY ESTKL,X +; libsrc/apple/uthernet2.pla: 0304: BEQ POKELP + BEQ POKELP +; libsrc/apple/uthernet2.pla: 0305: LDY #$00 + LDY #$00 +; libsrc/apple/uthernet2.pla: 0306: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet2.pla: 0307: POKELP LDA (SRC),Y +POKELP LDA (SRC),Y +; libsrc/apple/uthernet2.pla: 0308: end +; libsrc/apple/uthernet2.pla: 0309: asm _pokedata +_A013 ; _pokedata() +; libsrc/apple/uthernet2.pla: 0310: STA $C000 + STA $C000 +; libsrc/apple/uthernet2.pla: 0311: INY + INY +; libsrc/apple/uthernet2.pla: 0312: BNE + + BNE + +; libsrc/apple/uthernet2.pla: 0313: INC SRCH + INC SRCH +; libsrc/apple/uthernet2.pla: 0314: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/uthernet2.pla: 0315: BNE POKELP + BNE POKELP +; libsrc/apple/uthernet2.pla: 0316: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/uthernet2.pla: 0317: BNE POKELP + BNE POKELP +; libsrc/apple/uthernet2.pla: 0318: INX + INX +; libsrc/apple/uthernet2.pla: 0319: INX + INX +; libsrc/apple/uthernet2.pla: 0320: RTS + RTS +; libsrc/apple/uthernet2.pla: 0321: end +; libsrc/apple/uthernet2.pla: 0322: // +; libsrc/apple/uthernet2.pla: 0323: // READ DATA FROM I/O SPACE +; libsrc/apple/uthernet2.pla: 0324: // peekdata(BUF, LEN) +; libsrc/apple/uthernet2.pla: 0325: // +; libsrc/apple/uthernet2.pla: 0326: asm peekdata(buf, len)#0 +_A014 ; peekdata() +; libsrc/apple/uthernet2.pla: 0327: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/apple/uthernet2.pla: 0328: STA DSTL + STA DSTL +; libsrc/apple/uthernet2.pla: 0329: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/apple/uthernet2.pla: 0330: STA DSTH + STA DSTH +; libsrc/apple/uthernet2.pla: 0331: LDY ESTKL,X + LDY ESTKL,X +; libsrc/apple/uthernet2.pla: 0332: BEQ PEEKLP + BEQ PEEKLP +; libsrc/apple/uthernet2.pla: 0333: LDY #$00 + LDY #$00 +; libsrc/apple/uthernet2.pla: 0334: INC ESTKH,X + INC ESTKH,X +; libsrc/apple/uthernet2.pla: 0335: end +; libsrc/apple/uthernet2.pla: 0336: asm _peekdata +_A015 ; _peekdata() +; libsrc/apple/uthernet2.pla: 0337: PEEKLP LDA $C000 +PEEKLP LDA $C000 +; libsrc/apple/uthernet2.pla: 0338: STA (DST),Y + STA (DST),Y +; libsrc/apple/uthernet2.pla: 0339: INY + INY +; libsrc/apple/uthernet2.pla: 0340: BNE + + BNE + +; libsrc/apple/uthernet2.pla: 0341: INC DSTH + INC DSTH +; libsrc/apple/uthernet2.pla: 0342: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/apple/uthernet2.pla: 0343: BNE PEEKLP + BNE PEEKLP +; libsrc/apple/uthernet2.pla: 0344: DEC ESTKH,X + DEC ESTKH,X +; libsrc/apple/uthernet2.pla: 0345: BNE PEEKLP + BNE PEEKLP +; libsrc/apple/uthernet2.pla: 0346: INX + INX +; libsrc/apple/uthernet2.pla: 0347: INX + INX +; libsrc/apple/uthernet2.pla: 0348: RTS + RTS +; libsrc/apple/uthernet2.pla: 0349: end +; libsrc/apple/uthernet2.pla: 0350: def pokeiow(io, data)#0 +_SUBSEG ; BYTECODE STARTS + ; io -> [0] + ; data -> [2] +_C000 ; pokeiow() +; libsrc/apple/uthernet2.pla: 0351: _pokeiowl.1 = io + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0352: _pokeiowh.1 = io+1 +; libsrc/apple/uthernet2.pla: 0353: _pokeiow(data) +; libsrc/apple/uthernet2.pla: 0354: end + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A003+1 +_F000 !WORD _A003+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A004+1 +_F001 !WORD _A004+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A002 +_F002 !WORD _A002 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0355: def pokeio(io, data)#0 + ; io -> [0] + ; data -> [2] +_C001 ; pokeio() +; libsrc/apple/uthernet2.pla: 0356: _pokeiol.1 = io + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0357: _pokeio(data) +; libsrc/apple/uthernet2.pla: 0358: end + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A006+1 +_F003 !WORD _A006+1 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A005 +_F004 !WORD _A005 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0359: def peekio(io) + ; io -> [0] +_C002 ; peekio() +; libsrc/apple/uthernet2.pla: 0360: _peekiol.1 = io + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0361: return _peekio() + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A008+1 +_F005 !WORD _A008+1 + !BYTE $54 ; CALL _A007 +_F006 !WORD _A007 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0362: end +; libsrc/apple/uthernet2.pla: 0363: def peekiow(io) + ; io -> [0] +_C003 ; peekiow() +; libsrc/apple/uthernet2.pla: 0364: _peekiowl.1 = io + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0365: _peekiowh.1 = io+1 +; libsrc/apple/uthernet2.pla: 0366: return _peekiow() + !BYTE $66,$00 ; LLW [0] + !BYTE $78 ; SAB _A010+1 +_F007 !WORD _A010+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $78 ; SAB _A011+1 +_F008 !WORD _A011+1 + !BYTE $54 ; CALL _A009 +_F009 !WORD _A009 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0367: end +; libsrc/apple/uthernet2.pla: 0368: def pokereg(reg, data)#0 + ; reg -> [0] + ; data -> [2] +_C004 ; pokereg() +; libsrc/apple/uthernet2.pla: 0369: _pokeiow(reg) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0370: _pokeio(data) +; libsrc/apple/uthernet2.pla: 0371: end + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F010 !WORD _A002 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A005 +_F011 !WORD _A005 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0372: def peekreg(reg) + ; reg -> [0] +_C005 ; peekreg() +; libsrc/apple/uthernet2.pla: 0373: _pokeiow(reg) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0374: return _peekio() + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F012 !WORD _A002 + !BYTE $54 ; CALL _A007 +_F013 !WORD _A007 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0375: end +; libsrc/apple/uthernet2.pla: 0376: def pokeregs(reg, buf, len)#0 + ; reg -> [0] + ; buf -> [2] + ; len -> [4] +_C006 ; pokeregs() +; libsrc/apple/uthernet2.pla: 0377: _pokeiow(reg) + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/uthernet2.pla: 0378: pokedata(buf, len) +; libsrc/apple/uthernet2.pla: 0379: end + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F014 !WORD _A002 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A012 +_F015 !WORD _A012 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/uthernet2.pla: 0380: def peekregs(reg, buf, len)#0 + ; reg -> [0] + ; buf -> [2] + ; len -> [4] +_C007 ; peekregs() +; libsrc/apple/uthernet2.pla: 0381: _pokeiow(reg) + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/uthernet2.pla: 0382: peekdata(buf, len) +; libsrc/apple/uthernet2.pla: 0383: end + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F016 !WORD _A002 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A014 +_F017 !WORD _A014 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/uthernet2.pla: 0384: def pokeregw(reg, dataw)#0 + ; reg -> [0] + ; dataw -> [2] +_C008 ; pokeregw() +; libsrc/apple/uthernet2.pla: 0385: _pokeiow(reg) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0386: _pokeio(dataw.1) +; libsrc/apple/uthernet2.pla: 0387: _pokeio(dataw.0) +; libsrc/apple/uthernet2.pla: 0388: end + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F018 !WORD _A002 + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _A005 +_F019 !WORD _A005 + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _A005 +_F020 !WORD _A005 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0389: def peekregw(reg) + ; reg -> [0] +_C009 ; peekregw() +; libsrc/apple/uthernet2.pla: 0390: word dataw + ; dataw -> [2] +; libsrc/apple/uthernet2.pla: 0391: +; libsrc/apple/uthernet2.pla: 0392: _pokeiow(reg) + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/apple/uthernet2.pla: 0393: dataw.1 = _peekio() +; libsrc/apple/uthernet2.pla: 0394: _pokeiow(reg + 1) +; libsrc/apple/uthernet2.pla: 0395: dataw.0 = _peekio() +; libsrc/apple/uthernet2.pla: 0396: return dataw + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A002 +_F021 !WORD _A002 + !BYTE $54 ; CALL _A007 +_F022 !WORD _A007 + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _A002 +_F023 !WORD _A002 + !BYTE $54 ; CALL _A007 +_F024 !WORD _A007 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0397: end +; libsrc/apple/uthernet2.pla: 0398: // +; libsrc/apple/uthernet2.pla: 0399: // Send UDP datagram +; libsrc/apple/uthernet2.pla: 0400: // +; libsrc/apple/uthernet2.pla: 0401: def wizSendUDP(wiz, ipdst, portdst, data, len) + ; wiz -> [0] + ; ipdst -> [2] + ; portdst -> [4] + ; data -> [6] + ; len -> [8] +_C010 ; wizSendUDP() +; libsrc/apple/uthernet2.pla: 0402: word wizregs, wizdata, txrr, txwr, splitlen + ; wizregs -> [10] + ; wizdata -> [12] + ; txrr -> [14] + ; txwr -> [16] + ; splitlen -> [18] +; libsrc/apple/uthernet2.pla: 0403: +; libsrc/apple/uthernet2.pla: 0404: wizregs = wiz=>channel_regs + !BYTE $58,$14,$05 ; ENTER 20,5 +; libsrc/apple/uthernet2.pla: 0405: wizdata = wiz=>channel_txmem +; libsrc/apple/uthernet2.pla: 0406: if !ipdst +; libsrc/apple/uthernet2.pla: 0407: ipdst = @bcast +; libsrc/apple/uthernet2.pla: 0408: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* + !BYTE $26 ; LA _D039+0 +_F025 !WORD _D039+0 + !BYTE $76,$02 ; SLW [2] +_B001 +_B002 +; libsrc/apple/uthernet2.pla: 0409: // +; libsrc/apple/uthernet2.pla: 0410: // Wait for Tx room +; libsrc/apple/uthernet2.pla: 0411: // +; libsrc/apple/uthernet2.pla: 0412: repeat; until peekregw(wizregs + WIZ_SnFSR) >= len +_B004 +_B005 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$20 ; ADDI 32 + !BYTE $54 ; CALL _C009 +_F026 !WORD _C009 + !BYTE $66,$08 ; LLW [8] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* +_B003 +; libsrc/apple/uthernet2.pla: 0413: // +; libsrc/apple/uthernet2.pla: 0414: // Calc new write ptr, check for split +; libsrc/apple/uthernet2.pla: 0415: // +; libsrc/apple/uthernet2.pla: 0416: txwr = peekregw(wizregs + WIZ_SnTXWR) +; libsrc/apple/uthernet2.pla: 0417: txrr = txwr & WIZ_TXMASK +; libsrc/apple/uthernet2.pla: 0418: if txrr + len > WIZ_TXSIZE +; libsrc/apple/uthernet2.pla: 0419: splitlen = WIZ_TXSIZE - txrr +; libsrc/apple/uthernet2.pla: 0420: pokeregs(wizdata + txrr, data, splitlen) +; libsrc/apple/uthernet2.pla: 0421: pokeregs(wizdata, data + splitlen, len - splitlen) +; libsrc/apple/uthernet2.pla: 0422: else + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$24 ; ADDI 36 + !BYTE $54 ; CALL _C009 +_F027 !WORD _C009 + !BYTE $6E,$10 ; DLW [16] + !BYTE $2C,$FF,$07 ; CW 2047 + !BYTE $94 ; AND + !BYTE $6E,$0E ; DLW [14] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $76,$12 ; SLW [18] + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C006 +_F028 !WORD _C006 + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$12 ; ADDLW [18] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C006 +_F029 !WORD _C006 + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 +; libsrc/apple/uthernet2.pla: 0423: pokeregs(wizdata + txrr, data, len) +; libsrc/apple/uthernet2.pla: 0424: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C006 +_F030 !WORD _C006 +_B007 +; libsrc/apple/uthernet2.pla: 0425: // +; libsrc/apple/uthernet2.pla: 0426: // Set destination address/port +; libsrc/apple/uthernet2.pla: 0427: // +; libsrc/apple/uthernet2.pla: 0428: pokeregs(wizregs + WIZ_SnDIPR, ipdst, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0429: pokeregw(wizregs + WIZ_SnDPORT, portdst) +; libsrc/apple/uthernet2.pla: 0430: // +; libsrc/apple/uthernet2.pla: 0431: // Update write pointer and send +; libsrc/apple/uthernet2.pla: 0432: // +; libsrc/apple/uthernet2.pla: 0433: pokeregw(wizregs + WIZ_SnTXWR, txwr + len) +; libsrc/apple/uthernet2.pla: 0434: pokereg(wizregs + WIZ_SnCR, $20) // SEND +; libsrc/apple/uthernet2.pla: 0435: return 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C006 +_F031 !WORD _C006 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$10 ; ADDI 16 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C008 +_F032 !WORD _C008 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$24 ; ADDI 36 + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _C008 +_F033 !WORD _C008 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C004 +_F034 !WORD _C004 + !BYTE $00 ; CN 0 + !BYTE $5A,$14 ; LEAVE 20 +; libsrc/apple/uthernet2.pla: 0436: end +; libsrc/apple/uthernet2.pla: 0437: // +; libsrc/apple/uthernet2.pla: 0438: // Open UDP channel and set datagram received callback +; libsrc/apple/uthernet2.pla: 0439: // +; libsrc/apple/uthernet2.pla: 0440: def wizOpenUDP(localport, callback, param) + ; localport -> [0] + ; callback -> [2] + ; param -> [4] +_C011 ; wizOpenUDP() +; libsrc/apple/uthernet2.pla: 0441: word wiz + ; wiz -> [6] +; libsrc/apple/uthernet2.pla: 0442: byte i + ; i -> [8] +; libsrc/apple/uthernet2.pla: 0443: +; libsrc/apple/uthernet2.pla: 0444: if !localport; return -1; fin // invalid port + !BYTE $58,$09,$03 ; ENTER 9,3 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B008 + !WORD _B008-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$09 ; LEAVE 9 +_B008 +_B009 +; libsrc/apple/uthernet2.pla: 0445: // +; libsrc/apple/uthernet2.pla: 0446: // Look for an existing notification on localport +; libsrc/apple/uthernet2.pla: 0447: // +; libsrc/apple/uthernet2.pla: 0448: wiz = @wizChannel +; libsrc/apple/uthernet2.pla: 0449: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $26 ; LA _D040+0 +_F035 !WORD _D040+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B011 + !BYTE $6C,$08 ; DLB [8] +; libsrc/apple/uthernet2.pla: 0450: if wiz->channel_proto == IP_PROTO_UDP and wiz=>channel_lclport == localport +; libsrc/apple/uthernet2.pla: 0451: break + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$11 ; CB 17 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B013 + !WORD _B013-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $40 ; ISEQ +_B013 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; libsrc/apple/uthernet2.pla: 0452: fin +_B014 +_B015 +; libsrc/apple/uthernet2.pla: 0453: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0454: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$06 ; SLW [6] +_B012 + !BYTE $A4 ; INCBRLE _B011 + !WORD _B011-* +_B010 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0455: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0456: // +; libsrc/apple/uthernet2.pla: 0457: // Add notification on localport if room +; libsrc/apple/uthernet2.pla: 0458: // +; libsrc/apple/uthernet2.pla: 0459: wiz = @wizChannel +; libsrc/apple/uthernet2.pla: 0460: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $64,$08 ; LLB [8] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $26 ; LA _D040+0 +_F036 !WORD _D040+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B019 + !BYTE $6C,$08 ; DLB [8] +; libsrc/apple/uthernet2.pla: 0461: if !wiz->channel_proto +; libsrc/apple/uthernet2.pla: 0462: break + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +; libsrc/apple/uthernet2.pla: 0463: fin +_B021 +_B022 +; libsrc/apple/uthernet2.pla: 0464: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0465: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$06 ; SLW [6] +_B020 + !BYTE $A4 ; INCBRLE _B019 + !WORD _B019-* +_B018 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0466: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0467: return 0 + !BYTE $64,$08 ; LLB [8] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B023 + !WORD _B023-* + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/uthernet2.pla: 0468: fin +_B023 +_B024 +; libsrc/apple/uthernet2.pla: 0469: fin +_B016 +_B017 +; libsrc/apple/uthernet2.pla: 0470: // +; libsrc/apple/uthernet2.pla: 0471: // Fill in this channel and open it +; libsrc/apple/uthernet2.pla: 0472: // +; libsrc/apple/uthernet2.pla: 0473: wiz->channel_proto = WIZ_PROTO_UDP +; libsrc/apple/uthernet2.pla: 0474: wiz=>channel_lclport = localport +; libsrc/apple/uthernet2.pla: 0475: wiz=>channel_recv_func = callback +; libsrc/apple/uthernet2.pla: 0476: wiz=>channel_recv_parm = param +; libsrc/apple/uthernet2.pla: 0477: pokereg(wiz=>channel_regs + WIZ_SnMR, $02) // UDP protocol +; libsrc/apple/uthernet2.pla: 0478: pokeregw(wiz=>channel_regs + WIZ_SnPORT, localport) +; libsrc/apple/uthernet2.pla: 0479: pokereg(wiz=>channel_regs + WIZ_SnCR, $01) // OPEN +; libsrc/apple/uthernet2.pla: 0480: return wiz + !BYTE $04 ; CN 2 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F037 !WORD _C004 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C008 +_F038 !WORD _C008 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C004 +_F039 !WORD _C004 + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/uthernet2.pla: 0481: end +; libsrc/apple/uthernet2.pla: 0482: // +; libsrc/apple/uthernet2.pla: 0483: // Close UDP port +; libsrc/apple/uthernet2.pla: 0484: // +; libsrc/apple/uthernet2.pla: 0485: def wizCloseUDP(wiz) + ; wiz -> [0] +_C012 ; wizCloseUDP() +; libsrc/apple/uthernet2.pla: 0486: if isuge(wiz, @wizChannel) and isult(wiz, @wizChannel + MAX_WIZ_CHANNELS * t_channel) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0487: // +; libsrc/apple/uthernet2.pla: 0488: // Clear notiications on this port +; libsrc/apple/uthernet2.pla: 0489: // +; libsrc/apple/uthernet2.pla: 0490: if wiz->channel_proto == WIZ_PROTO_UDP +; libsrc/apple/uthernet2.pla: 0491: wiz->channel_proto = WIZ_PROTO_CLOSED +; libsrc/apple/uthernet2.pla: 0492: pokereg(wiz=>channel_regs + WIZ_SnCR, $10) // CLOSE +; libsrc/apple/uthernet2.pla: 0493: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F040 !WORD _D040+0 + !BYTE $54 ; CALL _X025 +_F041 !WORD 0 + !BYTE $AC ; BRAND _B025 + !WORD _B025-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+80 +_F042 !WORD _D040+80 + !BYTE $54 ; CALL _X026 +_F043 !WORD 0 +_B025 + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B028 + !WORD _B028-* + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _C004 +_F044 !WORD _C004 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0494: fin +_B028 +_B029 +; libsrc/apple/uthernet2.pla: 0495: fin +_B026 +_B027 +; libsrc/apple/uthernet2.pla: 0496: // +; libsrc/apple/uthernet2.pla: 0497: // Invalid port +; libsrc/apple/uthernet2.pla: 0498: // +; libsrc/apple/uthernet2.pla: 0499: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0500: end +; libsrc/apple/uthernet2.pla: 0501: // +; libsrc/apple/uthernet2.pla: 0502: // Open TCP socket in SERVER mode +; libsrc/apple/uthernet2.pla: 0503: // +; libsrc/apple/uthernet2.pla: 0504: def wizListenTCP(lclport, callback, param) + ; lclport -> [0] + ; callback -> [2] + ; param -> [4] +_C013 ; wizListenTCP() +; libsrc/apple/uthernet2.pla: 0505: word wiz + ; wiz -> [6] +; libsrc/apple/uthernet2.pla: 0506: byte i + ; i -> [8] +; libsrc/apple/uthernet2.pla: 0507: +; libsrc/apple/uthernet2.pla: 0508: // +; libsrc/apple/uthernet2.pla: 0509: // Look for an existing notification on localport +; libsrc/apple/uthernet2.pla: 0510: // +; libsrc/apple/uthernet2.pla: 0511: wiz = @wizChannel + !BYTE $58,$09,$03 ; ENTER 9,3 +; libsrc/apple/uthernet2.pla: 0512: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $26 ; LA _D040+0 +_F045 !WORD _D040+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B031 + !BYTE $6C,$08 ; DLB [8] +; libsrc/apple/uthernet2.pla: 0513: if wiz->channel_proto == WIZ_PROTO_TCP and wiz->channel_state == TCP_STATE_LISTEN and wiz=>channel_lclport == lclport +; libsrc/apple/uthernet2.pla: 0514: break + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B034 + !WORD _B034-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $40 ; ISEQ +_B034 +_B033 + !BYTE $4C ; BRFLS _B035 + !WORD _B035-* + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +; libsrc/apple/uthernet2.pla: 0515: fin +_B035 +_B036 +; libsrc/apple/uthernet2.pla: 0516: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0517: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$06 ; SLW [6] +_B032 + !BYTE $A4 ; INCBRLE _B031 + !WORD _B031-* +_B030 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0518: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0519: // +; libsrc/apple/uthernet2.pla: 0520: // Add notification on localport if room +; libsrc/apple/uthernet2.pla: 0521: // +; libsrc/apple/uthernet2.pla: 0522: wiz = @wizChannel +; libsrc/apple/uthernet2.pla: 0523: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $64,$08 ; LLB [8] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $26 ; LA _D040+0 +_F046 !WORD _D040+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B040 + !BYTE $6C,$08 ; DLB [8] +; libsrc/apple/uthernet2.pla: 0524: if !wiz->channel_proto +; libsrc/apple/uthernet2.pla: 0525: break + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +; libsrc/apple/uthernet2.pla: 0526: fin +_B042 +_B043 +; libsrc/apple/uthernet2.pla: 0527: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0528: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$06 ; SLW [6] +_B041 + !BYTE $A4 ; INCBRLE _B040 + !WORD _B040-* +_B039 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0529: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0530: return 0 + !BYTE $64,$08 ; LLB [8] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/uthernet2.pla: 0531: fin +_B044 +_B045 +; libsrc/apple/uthernet2.pla: 0532: fin +_B037 +_B038 +; libsrc/apple/uthernet2.pla: 0533: // +; libsrc/apple/uthernet2.pla: 0534: // Fill in this channel and open it +; libsrc/apple/uthernet2.pla: 0535: // +; libsrc/apple/uthernet2.pla: 0536: wiz->channel_proto = WIZ_PROTO_TCP +; libsrc/apple/uthernet2.pla: 0537: wiz->channel_state = TCP_STATE_LISTEN +; libsrc/apple/uthernet2.pla: 0538: wiz=>channel_remip:0 = 0 +; libsrc/apple/uthernet2.pla: 0539: wiz=>channel_remip:2 = 0 +; libsrc/apple/uthernet2.pla: 0540: wiz=>channel_remport = 0 +; libsrc/apple/uthernet2.pla: 0541: wiz=>channel_lclport = lclport +; libsrc/apple/uthernet2.pla: 0542: wiz=>channel_recv_func = callback +; libsrc/apple/uthernet2.pla: 0543: wiz=>channel_recv_parm = param +; libsrc/apple/uthernet2.pla: 0544: pokereg(wiz=>channel_regs + WIZ_SnMR, $01) // TCP protocol +; libsrc/apple/uthernet2.pla: 0545: pokeregw(wiz=>channel_regs + WIZ_SnPORT, lclport) +; libsrc/apple/uthernet2.pla: 0546: pokereg(wiz=>channel_regs + WIZ_SnCR, $01) // OPEN +; libsrc/apple/uthernet2.pla: 0547: while peekreg(wiz=>channel_regs + WIZ_SnSR) <> $13; loop // Wait for init + !BYTE $02 ; CN 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C004 +_F047 !WORD _C004 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C008 +_F048 !WORD _C008 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C004 +_F049 !WORD _C004 + !BYTE $50 ; BRNCH _B048 + !WORD _B048-* +_B046 +_B048 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _C005 +_F050 !WORD _C005 + !BYTE $2A,$13 ; CB 19 + !BYTE $24 ; BRNE _B046 + !WORD _B046-* +_B047 +; libsrc/apple/uthernet2.pla: 0548: pokereg(wiz=>channel_regs + WIZ_SnCR, $02) // LISTEN +; libsrc/apple/uthernet2.pla: 0549: return wiz + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F051 !WORD _C004 + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/apple/uthernet2.pla: 0550: end +; libsrc/apple/uthernet2.pla: 0551: // +; libsrc/apple/uthernet2.pla: 0552: // Open TCP socket in CLIENT mode +; libsrc/apple/uthernet2.pla: 0553: // +; libsrc/apple/uthernet2.pla: 0554: def wizConnectTCP(remip, remport, lclport, callback, param) + ; remip -> [0] + ; remport -> [2] + ; lclport -> [4] + ; callback -> [6] + ; param -> [8] +_C014 ; wizConnectTCP() +; libsrc/apple/uthernet2.pla: 0555: word wiz + ; wiz -> [10] +; libsrc/apple/uthernet2.pla: 0556: byte i + ; i -> [12] +; libsrc/apple/uthernet2.pla: 0557: +; libsrc/apple/uthernet2.pla: 0558: // +; libsrc/apple/uthernet2.pla: 0559: // Look for an existing notification on localport +; libsrc/apple/uthernet2.pla: 0560: // +; libsrc/apple/uthernet2.pla: 0561: wiz = @wizChannel + !BYTE $58,$0D,$05 ; ENTER 13,5 +; libsrc/apple/uthernet2.pla: 0562: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $26 ; LA _D040+0 +_F052 !WORD _D040+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B050 + !BYTE $6C,$0C ; DLB [12] +; libsrc/apple/uthernet2.pla: 0563: if wiz->channel_proto == WIZ_PROTO_TCP and wiz->channel_state == TCP_STATE_CONNECT and wiz=>channel_lclport == lclport +; libsrc/apple/uthernet2.pla: 0564: break + !BYTE $66,$0A ; LLW [10] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B052 + !WORD _B052-* + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $06 ; CN 3 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B053 + !WORD _B053-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $40 ; ISEQ +_B053 +_B052 + !BYTE $4C ; BRFLS _B054 + !WORD _B054-* + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +; libsrc/apple/uthernet2.pla: 0565: fin +_B054 +_B055 +; libsrc/apple/uthernet2.pla: 0566: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0567: next + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$0A ; SLW [10] +_B051 + !BYTE $A4 ; INCBRLE _B050 + !WORD _B050-* +_B049 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0568: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0569: // +; libsrc/apple/uthernet2.pla: 0570: // Add notification on localport if room +; libsrc/apple/uthernet2.pla: 0571: // +; libsrc/apple/uthernet2.pla: 0572: wiz = @wizChannel +; libsrc/apple/uthernet2.pla: 0573: for i = 1 to MAX_WIZ_CHANNELS + !BYTE $64,$0C ; LLB [12] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $26 ; LA _D040+0 +_F053 !WORD _D040+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B059 + !BYTE $6C,$0C ; DLB [12] +; libsrc/apple/uthernet2.pla: 0574: if !wiz->channel_proto +; libsrc/apple/uthernet2.pla: 0575: break + !BYTE $66,$0A ; LLW [10] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B061 + !WORD _B061-* + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; libsrc/apple/uthernet2.pla: 0576: fin +_B061 +_B062 +; libsrc/apple/uthernet2.pla: 0577: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0578: next + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$0A ; SLW [10] +_B060 + !BYTE $A4 ; INCBRLE _B059 + !WORD _B059-* +_B058 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0579: if i > MAX_WIZ_CHANNELS +; libsrc/apple/uthernet2.pla: 0580: return 0 + !BYTE $64,$0C ; LLB [12] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0D ; LEAVE 13 +; libsrc/apple/uthernet2.pla: 0581: fin +_B063 +_B064 +; libsrc/apple/uthernet2.pla: 0582: fin +_B056 +_B057 +; libsrc/apple/uthernet2.pla: 0583: // +; libsrc/apple/uthernet2.pla: 0584: // Fill in this channel and open it +; libsrc/apple/uthernet2.pla: 0585: // +; libsrc/apple/uthernet2.pla: 0586: wiz->channel_proto = WIZ_PROTO_TCP +; libsrc/apple/uthernet2.pla: 0587: wiz->channel_state = TCP_STATE_CONNECT +; libsrc/apple/uthernet2.pla: 0588: wiz=>channel_remip:0 = remip=>0 +; libsrc/apple/uthernet2.pla: 0589: wiz=>channel_remip:2 = remip=>2 +; libsrc/apple/uthernet2.pla: 0590: wiz=>channel_remport = remport +; libsrc/apple/uthernet2.pla: 0591: wiz=>channel_lclport = lclport +; libsrc/apple/uthernet2.pla: 0592: wiz=>channel_recv_func = callback +; libsrc/apple/uthernet2.pla: 0593: wiz=>channel_recv_parm = param +; libsrc/apple/uthernet2.pla: 0594: pokereg(wiz=>channel_regs + WIZ_SnMR, $01) // TCP protocol +; libsrc/apple/uthernet2.pla: 0595: pokeregs(wiz=>channel_regs + WIZ_SnDIPR, remip, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0596: pokeregw(wiz=>channel_regs + WIZ_SnDPORT, remport) +; libsrc/apple/uthernet2.pla: 0597: pokeregw(wiz=>channel_regs + WIZ_SnPORT, lclport) +; libsrc/apple/uthernet2.pla: 0598: pokereg(wiz=>channel_regs + WIZ_SnCR, $01) // OPEN +; libsrc/apple/uthernet2.pla: 0599: while peekreg(wiz=>channel_regs + WIZ_SnSR) <> $13; loop // Wait for init + !BYTE $02 ; CN 1 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $06 ; CN 3 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0C ; ADDI 12 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C004 +_F054 !WORD _C004 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C006 +_F055 !WORD _C006 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$10 ; ADDI 16 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C008 +_F056 !WORD _C008 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C008 +_F057 !WORD _C008 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C004 +_F058 !WORD _C004 + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B065 +_B067 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _C005 +_F059 !WORD _C005 + !BYTE $2A,$13 ; CB 19 + !BYTE $24 ; BRNE _B065 + !WORD _B065-* +_B066 +; libsrc/apple/uthernet2.pla: 0600: pokereg(wiz=>channel_regs + WIZ_SnCR, $04) // CONNECT +; libsrc/apple/uthernet2.pla: 0601: return wiz + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C004 +_F060 !WORD _C004 + !BYTE $66,$0A ; LLW [10] + !BYTE $5A,$0D ; LEAVE 13 +; libsrc/apple/uthernet2.pla: 0602: end +; libsrc/apple/uthernet2.pla: 0603: // +; libsrc/apple/uthernet2.pla: 0604: // Write to TCP socket +; libsrc/apple/uthernet2.pla: 0605: // +; libsrc/apple/uthernet2.pla: 0606: def wizSendTCP(wiz, data, len) + ; wiz -> [0] + ; data -> [2] + ; len -> [4] +_C015 ; wizSendTCP() +; libsrc/apple/uthernet2.pla: 0607: word wizregs, wizdata, txrr, txwr, splitlen + ; wizregs -> [6] + ; wizdata -> [8] + ; txrr -> [10] + ; txwr -> [12] + ; splitlen -> [14] +; libsrc/apple/uthernet2.pla: 0608: +; libsrc/apple/uthernet2.pla: 0609: if wiz->channel_state <> TCP_STATE_OPEN; return -1; fin + !BYTE $58,$10,$03 ; ENTER 16,3 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $22 ; BREQ _B068 + !WORD _B068-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$10 ; LEAVE 16 +_B068 +_B069 +; libsrc/apple/uthernet2.pla: 0610: wizregs = wiz=>channel_regs +; libsrc/apple/uthernet2.pla: 0611: wizdata = wiz=>channel_txmem +; libsrc/apple/uthernet2.pla: 0612: // +; libsrc/apple/uthernet2.pla: 0613: // Wait for Tx room +; libsrc/apple/uthernet2.pla: 0614: // +; libsrc/apple/uthernet2.pla: 0615: repeat; until peekregw(wizregs + WIZ_SnFSR) >= len + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $76,$08 ; SLW [8] +_B071 +_B072 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$20 ; ADDI 32 + !BYTE $54 ; CALL _C009 +_F061 !WORD _C009 + !BYTE $66,$04 ; LLW [4] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* +_B070 +; libsrc/apple/uthernet2.pla: 0616: // +; libsrc/apple/uthernet2.pla: 0617: // Calc new write ptr, check for split +; libsrc/apple/uthernet2.pla: 0618: // +; libsrc/apple/uthernet2.pla: 0619: txwr = peekregw(wizregs + WIZ_SnTXWR) +; libsrc/apple/uthernet2.pla: 0620: txrr = txwr & WIZ_TXMASK +; libsrc/apple/uthernet2.pla: 0621: if txrr + len > WIZ_TXSIZE +; libsrc/apple/uthernet2.pla: 0622: splitlen = WIZ_TXSIZE - txrr +; libsrc/apple/uthernet2.pla: 0623: pokeregs(wizdata + txrr, data, splitlen) +; libsrc/apple/uthernet2.pla: 0624: pokeregs(wizdata, data + splitlen, len - splitlen) +; libsrc/apple/uthernet2.pla: 0625: //putc('(');puti(splitlen);putc(',');puti(len-splitlen);putc(')') +; libsrc/apple/uthernet2.pla: 0626: else + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$24 ; ADDI 36 + !BYTE $54 ; CALL _C009 +_F062 !WORD _C009 + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$FF,$07 ; CW 2047 + !BYTE $94 ; AND + !BYTE $6E,$0A ; DLW [10] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $66,$0A ; LLW [10] + !BYTE $84 ; SUB + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C006 +_F063 !WORD _C006 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C006 +_F064 !WORD _C006 + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B073 +; libsrc/apple/uthernet2.pla: 0627: pokeregs(wizdata + txrr, data, len) +; libsrc/apple/uthernet2.pla: 0628: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C006 +_F065 !WORD _C006 +_B074 +; libsrc/apple/uthernet2.pla: 0629: // +; libsrc/apple/uthernet2.pla: 0630: // Update write pointer and send +; libsrc/apple/uthernet2.pla: 0631: // +; libsrc/apple/uthernet2.pla: 0632: pokeregw(wizregs + WIZ_SnTXWR, txwr + len) +; libsrc/apple/uthernet2.pla: 0633: pokereg(wizregs + WIZ_SnCR, $20) // SEND +; libsrc/apple/uthernet2.pla: 0634: return wiz + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$24 ; ADDI 36 + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $54 ; CALL _C008 +_F066 !WORD _C008 + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C004 +_F067 !WORD _C004 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$10 ; LEAVE 16 +; libsrc/apple/uthernet2.pla: 0635: end +; libsrc/apple/uthernet2.pla: 0636: // +; libsrc/apple/uthernet2.pla: 0637: // Close TCP socket +; libsrc/apple/uthernet2.pla: 0638: // +; libsrc/apple/uthernet2.pla: 0639: def wizCloseTCP(wiz) + ; wiz -> [0] +_C016 ; wizCloseTCP() +; libsrc/apple/uthernet2.pla: 0640: if isuge(wiz, @wizChannel) and isult(wiz, @wizChannel + MAX_WIZ_CHANNELS * t_channel) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0641: // +; libsrc/apple/uthernet2.pla: 0642: // Clear notiications on this port +; libsrc/apple/uthernet2.pla: 0643: // +; libsrc/apple/uthernet2.pla: 0644: if wiz->channel_proto == WIZ_PROTO_TCP +; libsrc/apple/uthernet2.pla: 0645: pokereg(wiz=>channel_regs + WIZ_SnCR, $10) // CLOSE +; libsrc/apple/uthernet2.pla: 0646: wiz->channel_proto = WIZ_PROTO_CLOSED +; libsrc/apple/uthernet2.pla: 0647: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F068 !WORD _D040+0 + !BYTE $54 ; CALL _X025 +_F069 !WORD 0 + !BYTE $AC ; BRAND _B075 + !WORD _B075-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+80 +_F070 !WORD _D040+80 + !BYTE $54 ; CALL _X026 +_F071 !WORD 0 +_B075 + !BYTE $4C ; BRFLS _B076 + !WORD _B076-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $24 ; BRNE _B078 + !WORD _B078-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _C004 +_F072 !WORD _C004 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0648: fin +_B078 +_B079 +; libsrc/apple/uthernet2.pla: 0649: fin +_B076 +_B077 +; libsrc/apple/uthernet2.pla: 0650: // +; libsrc/apple/uthernet2.pla: 0651: // Invalid port +; libsrc/apple/uthernet2.pla: 0652: // +; libsrc/apple/uthernet2.pla: 0653: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0654: end +; libsrc/apple/uthernet2.pla: 0655: // +; libsrc/apple/uthernet2.pla: 0656: // Update notify callback +; libsrc/apple/uthernet2.pla: 0657: // +; libsrc/apple/uthernet2.pla: 0658: def wizSetCallback(wiz, callback) + ; wiz -> [0] + ; callback -> [2] +_C017 ; wizSetCallback() +; libsrc/apple/uthernet2.pla: 0659: if wiz->channel_proto == WIZ_PROTO_UDP or wiz->channel_proto == WIZ_PROTO_TCP + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0660: // +; libsrc/apple/uthernet2.pla: 0661: // Update callback on this port +; libsrc/apple/uthernet2.pla: 0662: // +; libsrc/apple/uthernet2.pla: 0663: wiz=>channel_recv_func = callback +; libsrc/apple/uthernet2.pla: 0664: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B080 + !WORD _B080-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ +_B080 + !BYTE $4C ; BRFLS _B081 + !WORD _B081-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0665: fin +_B081 +_B082 +; libsrc/apple/uthernet2.pla: 0666: // +; libsrc/apple/uthernet2.pla: 0667: // Invalid port +; libsrc/apple/uthernet2.pla: 0668: // +; libsrc/apple/uthernet2.pla: 0669: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0670: end +; libsrc/apple/uthernet2.pla: 0671: // +; libsrc/apple/uthernet2.pla: 0672: // Update notify param +; libsrc/apple/uthernet2.pla: 0673: // +; libsrc/apple/uthernet2.pla: 0674: def wizSetParam(wiz, param) + ; wiz -> [0] + ; param -> [2] +_C018 ; wizSetParam() +; libsrc/apple/uthernet2.pla: 0675: if wiz->channel_proto == WIZ_PROTO_UDP or wiz->channel_proto == WIZ_PROTO_TCP + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/apple/uthernet2.pla: 0676: // +; libsrc/apple/uthernet2.pla: 0677: // Update param on this port +; libsrc/apple/uthernet2.pla: 0678: // +; libsrc/apple/uthernet2.pla: 0679: wiz=>channel_recv_parm = param +; libsrc/apple/uthernet2.pla: 0680: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B083 + !WORD _B083-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ +_B083 + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0681: fin +_B084 +_B085 +; libsrc/apple/uthernet2.pla: 0682: // +; libsrc/apple/uthernet2.pla: 0683: // Invalid port +; libsrc/apple/uthernet2.pla: 0684: // +; libsrc/apple/uthernet2.pla: 0685: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/apple/uthernet2.pla: 0686: end +; libsrc/apple/uthernet2.pla: 0687: // +; libsrc/apple/uthernet2.pla: 0688: // Service incoming packets +; libsrc/apple/uthernet2.pla: 0689: // +; libsrc/apple/uthernet2.pla: 0690: def wizServiceIP +_P000 ; wizServiceIP() +_C019 ; wizServiceIP() +; libsrc/apple/uthernet2.pla: 0691: word wiz, wizregs, wizdata, rxlen, rxrr, rxwr, rxpkt, splitlen + ; wiz -> [0] + ; wizregs -> [2] + ; wizdata -> [4] + ; rxlen -> [6] + ; rxrr -> [8] + ; rxwr -> [10] + ; rxpkt -> [12] + ; splitlen -> [14] +; libsrc/apple/uthernet2.pla: 0692: byte ir, i, sir + ; ir -> [16] + ; i -> [17] + ; sir -> [18] +; libsrc/apple/uthernet2.pla: 0693: +; libsrc/apple/uthernet2.pla: 0694: ir = peekreg(WIZ_IR) + !BYTE $58,$13,$00 ; ENTER 19,0 +; libsrc/apple/uthernet2.pla: 0695: if ir +; libsrc/apple/uthernet2.pla: 0696: wiz = @wizChannel +; libsrc/apple/uthernet2.pla: 0697: for i = 0 to 3 + !BYTE $2A,$15 ; CB 21 + !BYTE $54 ; CALL _C005 +_F073 !WORD _C005 + !BYTE $6C,$10 ; DLB [16] + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $26 ; LA _D040+0 +_F074 !WORD _D040+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B089 + !BYTE $6C,$11 ; DLB [17] +; libsrc/apple/uthernet2.pla: 0698: // +; libsrc/apple/uthernet2.pla: 0699: // Socket activity +; libsrc/apple/uthernet2.pla: 0700: // +; libsrc/apple/uthernet2.pla: 0701: if ir & (1 << i) +; libsrc/apple/uthernet2.pla: 0702: wizregs = wiz=>channel_regs +; libsrc/apple/uthernet2.pla: 0703: wizdata = wiz=>channel_rxmem +; libsrc/apple/uthernet2.pla: 0704: sir = peekreg(wizregs + WIZ_SnIR) +; libsrc/apple/uthernet2.pla: 0705: pokereg(wizregs + WIZ_SnIR, sir) // Clear SnIR +; libsrc/apple/uthernet2.pla: 0706: when wiz->channel_proto + !BYTE $64,$10 ; LLB [16] + !BYTE $02 ; CN 1 + !BYTE $64,$11 ; LLB [17] + !BYTE $9A ; SHL + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C005 +_F075 !WORD _C005 + !BYTE $74,$12 ; SLB [18] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $64,$12 ; LLB [18] + !BYTE $54 ; CALL _C004 +_F076 !WORD _C004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B094-* +; libsrc/apple/uthernet2.pla: 0707: is WIZ_PROTO_UDP +_B095 +; libsrc/apple/uthernet2.pla: 0708: if sir & $04 +; libsrc/apple/uthernet2.pla: 0709: // +; libsrc/apple/uthernet2.pla: 0710: // Receive UDP packet +; libsrc/apple/uthernet2.pla: 0711: // +; libsrc/apple/uthernet2.pla: 0712: rxlen = peekregw(wizregs + WIZ_SnRSR) +; libsrc/apple/uthernet2.pla: 0713: rxrr = peekregw(wizregs + WIZ_SnRXRD) +; libsrc/apple/uthernet2.pla: 0714: rxwr = rxrr & WIZ_RXMASK +; libsrc/apple/uthernet2.pla: 0715: rxpkt = heapalloc(rxlen) +; libsrc/apple/uthernet2.pla: 0716: if rxwr + rxlen >= WIZ_RXSIZE +; libsrc/apple/uthernet2.pla: 0717: splitlen = WIZ_RXSIZE - rxwr +; libsrc/apple/uthernet2.pla: 0718: peekregs(wizdata + rxwr, rxpkt, splitlen) +; libsrc/apple/uthernet2.pla: 0719: peekregs(wizdata, rxpkt + splitlen, rxlen - splitlen) +; libsrc/apple/uthernet2.pla: 0720: else + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$26 ; ADDI 38 + !BYTE $54 ; CALL _C009 +_F077 !WORD _C009 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$28 ; ADDI 40 + !BYTE $54 ; CALL _C009 +_F078 !WORD _C009 + !BYTE $6E,$08 ; DLW [8] + !BYTE $2C,$FF,$07 ; CW 2047 + !BYTE $94 ; AND + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X014 +_F079 !WORD 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B098 + !WORD _B098-* + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $66,$0A ; LLW [10] + !BYTE $84 ; SUB + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C007 +_F080 !WORD _C007 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C007 +_F081 !WORD _C007 + !BYTE $50 ; BRNCH _B099 + !WORD _B099-* +_B098 +; libsrc/apple/uthernet2.pla: 0721: peekregs(wizdata + rxwr, rxpkt, rxlen) +; libsrc/apple/uthernet2.pla: 0722: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C007 +_F082 !WORD _C007 +_B099 +; libsrc/apple/uthernet2.pla: 0723: pokeregw(wizregs + WIZ_SnRXRD, rxrr + rxlen) +; libsrc/apple/uthernet2.pla: 0724: pokereg(wizregs + WIZ_SnCR, $40) // RECV +; libsrc/apple/uthernet2.pla: 0725: wiz=>channel_recv_func(rxpkt,swab(rxpkt=>4),rxpkt+8,rxlen-8,wiz=>channel_recv_parm) +; libsrc/apple/uthernet2.pla: 0726: heaprelease(rxpkt) +; libsrc/apple/uthernet2.pla: 0727: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$28 ; ADDI 40 + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $54 ; CALL _C008 +_F083 !WORD _C008 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C004 +_F084 !WORD _C004 + !BYTE $66,$0C ; LLW [12] + !BYTE $34 ; DUP + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F085 !WORD _A001 + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$08 ; ADDI 8 + !BYTE $66,$06 ; LLW [6] + !BYTE $3A,$08 ; SUBI 8 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F086 !WORD 0 + !BYTE $30 ; DROP +_B096 +_B097 +; libsrc/apple/uthernet2.pla: 0728: break + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; libsrc/apple/uthernet2.pla: 0729: is WIZ_PROTO_TCP +_B100 +; libsrc/apple/uthernet2.pla: 0730: if sir & $01 +; libsrc/apple/uthernet2.pla: 0731: // +; libsrc/apple/uthernet2.pla: 0732: // Connect TCP socket +; libsrc/apple/uthernet2.pla: 0733: // +; libsrc/apple/uthernet2.pla: 0734: when wiz->channel_state + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B101 + !WORD _B101-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B104-* +; libsrc/apple/uthernet2.pla: 0735: is TCP_STATE_LISTEN +_B105 +; libsrc/apple/uthernet2.pla: 0736: peekregs(wiz=>channel_regs + WIZ_SnDIPR, @wiz=>channel_remip, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0737: wiz=>channel_remport = peekregw(wiz=>channel_regs + WIZ_SnDPORT) +; libsrc/apple/uthernet2.pla: 0738: is TCP_STATE_CONNECT + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C007 +_F087 !WORD _C007 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$10 ; ADDI 16 + !BYTE $54 ; CALL _C009 +_F088 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW +_B106 +; libsrc/apple/uthernet2.pla: 0739: wiz->channel_state = TCP_STATE_OPEN +; libsrc/apple/uthernet2.pla: 0740: wend + !BYTE $08 ; CN 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B103 + !WORD _B103-* +_B104 + !BYTE $02 ; CASEBLOCK + !WORD $0002 + !WORD _B105-* + !WORD $0003 + !WORD _B106-* +_B103 +; libsrc/apple/uthernet2.pla: 0741: fin +_B101 +_B102 +; libsrc/apple/uthernet2.pla: 0742: if sir & $04 +; libsrc/apple/uthernet2.pla: 0743: // +; libsrc/apple/uthernet2.pla: 0744: // Receive TCP packet +; libsrc/apple/uthernet2.pla: 0745: // +; libsrc/apple/uthernet2.pla: 0746: if wiz->channel_state == TCP_STATE_OPEN +; libsrc/apple/uthernet2.pla: 0747: rxlen = peekregw(wizregs + WIZ_SnRSR) +; libsrc/apple/uthernet2.pla: 0748: rxrr = peekregw(wizregs + WIZ_SnRXRD) +; libsrc/apple/uthernet2.pla: 0749: rxwr = rxrr & WIZ_RXMASK +; libsrc/apple/uthernet2.pla: 0750: rxpkt = heapalloc(rxlen) +; libsrc/apple/uthernet2.pla: 0751: if rxwr + rxlen > WIZ_RXSIZE +; libsrc/apple/uthernet2.pla: 0752: splitlen = WIZ_RXSIZE - rxwr +; libsrc/apple/uthernet2.pla: 0753: peekregs(wizdata + rxwr, rxpkt, splitlen) +; libsrc/apple/uthernet2.pla: 0754: peekregs(wizdata, rxpkt + splitlen, rxlen - splitlen) +; libsrc/apple/uthernet2.pla: 0755: else + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B109 + !WORD _B109-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$26 ; ADDI 38 + !BYTE $54 ; CALL _C009 +_F089 !WORD _C009 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$28 ; ADDI 40 + !BYTE $54 ; CALL _C009 +_F090 !WORD _C009 + !BYTE $6E,$08 ; DLW [8] + !BYTE $2C,$FF,$07 ; CW 2047 + !BYTE $94 ; AND + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X014 +_F091 !WORD 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B111 + !WORD _B111-* + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $66,$0A ; LLW [10] + !BYTE $84 ; SUB + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C007 +_F092 !WORD _C007 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C007 +_F093 !WORD _C007 + !BYTE $50 ; BRNCH _B112 + !WORD _B112-* +_B111 +; libsrc/apple/uthernet2.pla: 0756: peekregs(wizdata + rxwr, rxpkt, rxlen) +; libsrc/apple/uthernet2.pla: 0757: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C007 +_F094 !WORD _C007 +_B112 +; libsrc/apple/uthernet2.pla: 0758: pokeregw(wizregs + WIZ_SnRXRD, rxrr + rxlen) +; libsrc/apple/uthernet2.pla: 0759: pokereg(wizregs + WIZ_SnCR, $40) // RECV +; libsrc/apple/uthernet2.pla: 0760: wiz=>channel_recv_func(@wiz=>channel_remip,wiz=>channel_remport,wiz=>channel_lclport,rxpkt,rxlen,wiz=>channel_recv_parm) +; libsrc/apple/uthernet2.pla: 0761: heaprelease(rxpkt) +; libsrc/apple/uthernet2.pla: 0762: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$28 ; ADDI 40 + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $54 ; CALL _C008 +_F095 !WORD _C008 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C004 +_F096 !WORD _C004 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F097 !WORD 0 + !BYTE $30 ; DROP +_B109 +_B110 +; libsrc/apple/uthernet2.pla: 0763: fin +_B107 +_B108 +; libsrc/apple/uthernet2.pla: 0764: if sir & $02 +; libsrc/apple/uthernet2.pla: 0765: // +; libsrc/apple/uthernet2.pla: 0766: // Close TCP socket +; libsrc/apple/uthernet2.pla: 0767: // +; libsrc/apple/uthernet2.pla: 0768: if wiz->channel_state == TCP_STATE_OPEN // Notify callback w/ len = 0 +; libsrc/apple/uthernet2.pla: 0769: wiz=>channel_recv_func(@wiz=>channel_remip,wiz=>channel_remport,0,wiz=>channel_lclport,0,wiz=>channel_recv_parm) +; libsrc/apple/uthernet2.pla: 0770: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B113 + !WORD _B113-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B115 + !WORD _B115-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B115 +_B116 +; libsrc/apple/uthernet2.pla: 0771: wiz->channel_state = TCP_STATE_CLOSED +; libsrc/apple/uthernet2.pla: 0772: pokereg(wiz=>channel_regs + WIZ_SnCR, $10) // CLOSE +; libsrc/apple/uthernet2.pla: 0773: fin + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _C004 +_F098 !WORD _C004 +_B113 +_B114 +; libsrc/apple/uthernet2.pla: 0774: if sir & $08 +; libsrc/apple/uthernet2.pla: 0775: // +; libsrc/apple/uthernet2.pla: 0776: // Timeout on TCP socket +; libsrc/apple/uthernet2.pla: 0777: // +; libsrc/apple/uthernet2.pla: 0778: when wiz->channel_state + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B117 + !WORD _B117-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B120-* +; libsrc/apple/uthernet2.pla: 0779: is TCP_STATE_OPEN +_B121 +; libsrc/apple/uthernet2.pla: 0780: wiz->channel_state = TCP_STATE_CLOSING +; libsrc/apple/uthernet2.pla: 0781: wiz=>channel_recv_func(@wiz=>channel_remip,wiz=>channel_remport,wiz=>channel_lclport,0,0,wiz=>channel_recv_parm) +; libsrc/apple/uthernet2.pla: 0782: break + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B119 + !WORD _B119-* +; libsrc/apple/uthernet2.pla: 0783: is TCP_STATE_CONNECT +_B122 +; libsrc/apple/uthernet2.pla: 0784: wiz=>channel_recv_func(@wiz=>channel_remip,wiz=>channel_remport,wiz=>channel_lclport,0,0,wiz=>channel_recv_parm) +; libsrc/apple/uthernet2.pla: 0785: is TCP_STATE_CLOSING + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$12 ; ADDI 18 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B123 +; libsrc/apple/uthernet2.pla: 0786: wiz->channel_state = TCP_STATE_CLOSED +; libsrc/apple/uthernet2.pla: 0787: pokereg(wiz=>channel_regs + WIZ_SnCR, $10) // CLOSE +; libsrc/apple/uthernet2.pla: 0788: wend + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _C004 +_F099 !WORD _C004 + !BYTE $50 ; BRNCH _B119 + !WORD _B119-* +_B120 + !BYTE $03 ; CASEBLOCK + !WORD $0001 + !WORD _B123-* + !WORD $0003 + !WORD _B122-* + !WORD $0004 + !WORD _B121-* +_B119 +; libsrc/apple/uthernet2.pla: 0789: fin +_B117 +_B118 +; libsrc/apple/uthernet2.pla: 0790: wend + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +_B094 + !BYTE $02 ; CASEBLOCK + !WORD $0001 + !WORD _B100-* + !WORD $0002 + !WORD _B095-* +_B093 +; libsrc/apple/uthernet2.pla: 0791: fin +_B091 +_B092 +; libsrc/apple/uthernet2.pla: 0792: wiz = wiz + t_channel +; libsrc/apple/uthernet2.pla: 0793: next + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$00 ; SLW [0] +_B090 + !BYTE $A4 ; INCBRLE _B089 + !WORD _B089-* +_B088 + !BYTE $74,$11 ; SLB [17] + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0794: if ir & $80 +; libsrc/apple/uthernet2.pla: 0795: // +; libsrc/apple/uthernet2.pla: 0796: // IP conflict +; libsrc/apple/uthernet2.pla: 0797: // +; libsrc/apple/uthernet2.pla: 0798: pokereg(WIZ_IR, $80) +; libsrc/apple/uthernet2.pla: 0799: fin + !BYTE $64,$10 ; LLB [16] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B124 + !WORD _B124-* + !BYTE $2A,$15 ; CB 21 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F100 !WORD _C004 +_B124 +_B125 +; libsrc/apple/uthernet2.pla: 0800: if ir & $40 +; libsrc/apple/uthernet2.pla: 0801: // +; libsrc/apple/uthernet2.pla: 0802: // Destination unreachable +; libsrc/apple/uthernet2.pla: 0803: // +; libsrc/apple/uthernet2.pla: 0804: pokereg(WIZ_IR, $40) +; libsrc/apple/uthernet2.pla: 0805: fin + !BYTE $64,$10 ; LLB [16] + !BYTE $3C,$40 ; ANDI 64 + !BYTE $4C ; BRFLS _B126 + !WORD _B126-* + !BYTE $2A,$15 ; CB 21 + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C004 +_F101 !WORD _C004 +_B126 +_B127 +; libsrc/apple/uthernet2.pla: 0806: if ir & $20 +; libsrc/apple/uthernet2.pla: 0807: // +; libsrc/apple/uthernet2.pla: 0808: // PPOE connection close +; libsrc/apple/uthernet2.pla: 0809: // +; libsrc/apple/uthernet2.pla: 0810: pokereg(WIZ_IR, $20) +; libsrc/apple/uthernet2.pla: 0811: fin + !BYTE $64,$10 ; LLB [16] + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B128 + !WORD _B128-* + !BYTE $2A,$15 ; CB 21 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C004 +_F102 !WORD _C004 +_B128 +_B129 +; libsrc/apple/uthernet2.pla: 0812: fin +_B086 +_B087 +; libsrc/apple/uthernet2.pla: 0813: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$13 ; LEAVE 19 +; libsrc/apple/uthernet2.pla: 0814: end +; libsrc/apple/uthernet2.pla: 0815: // +; libsrc/apple/uthernet2.pla: 0816: // Set the local IP addresses +; libsrc/apple/uthernet2.pla: 0817: // +; libsrc/apple/uthernet2.pla: 0818: def setWizIP(newIP, newSubnet, newGateway) + ; newIP -> [0] + ; newSubnet -> [2] + ; newGateway -> [4] +_C020 ; setWizIP() +; libsrc/apple/uthernet2.pla: 0819: if newIP + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/apple/uthernet2.pla: 0820: localip:0 = newIP=>0; localip:2 = newIP=>2 +; libsrc/apple/uthernet2.pla: 0821: pokeregs(WIZ_SIPR, newIP, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0822: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B130 + !WORD _B130-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $7A ; SAW _D035+0 +_F103 !WORD _D035+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D035+2 +_F104 !WORD _D035+2 + !BYTE $1E ; CN 15 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C006 +_F105 !WORD _C006 +_B130 +_B131 +; libsrc/apple/uthernet2.pla: 0823: if newSubnet +; libsrc/apple/uthernet2.pla: 0824: subnet:0 = newSubnet=>0; subnet:2 = newSubnet=>2 +; libsrc/apple/uthernet2.pla: 0825: pokeregs(WIZ_SUBR, newSubnet, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0826: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B132 + !WORD _B132-* + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $7A ; SAW _D036+0 +_F106 !WORD _D036+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D036+2 +_F107 !WORD _D036+2 + !BYTE $0A ; CN 5 + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C006 +_F108 !WORD _C006 +_B132 +_B133 +; libsrc/apple/uthernet2.pla: 0827: if newGateway +; libsrc/apple/uthernet2.pla: 0828: gateway:0 = newGateway=>0; gateway:2 = newGateway=>2 +; libsrc/apple/uthernet2.pla: 0829: pokeregs(WIZ_GWR, newGateway, IP4ADR_SIZE) +; libsrc/apple/uthernet2.pla: 0830: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B134 + !WORD _B134-* + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $7A ; SAW _D037+0 +_F109 !WORD _D037+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D037+2 +_F110 !WORD _D037+2 + !BYTE $02 ; CN 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C006 +_F111 !WORD _C006 +_B134 +_B135 +; libsrc/apple/uthernet2.pla: 0831: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/apple/uthernet2.pla: 0832: end +; libsrc/apple/uthernet2.pla: 0833: // +; libsrc/apple/uthernet2.pla: 0834: // Get the interface hardware address +; libsrc/apple/uthernet2.pla: 0835: // +; libsrc/apple/uthernet2.pla: 0836: def getWizHA(ha) + ; ha -> [0] +_C021 ; getWizHA() +; libsrc/apple/uthernet2.pla: 0837: if ha + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/apple/uthernet2.pla: 0838: ha=>0 = wizMAC:0; ha=>2 = wizMAC:2; ha=>4 = wizMAC:4 +; libsrc/apple/uthernet2.pla: 0839: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B136 + !WORD _B136-* + !BYTE $6A ; LAW _D034+0 +_F112 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $6A ; LAW _D034+2 +_F113 !WORD _D034+2 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D034+4 +_F114 !WORD _D034+4 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW +_B136 +_B137 +; libsrc/apple/uthernet2.pla: 0840: return MAC_SIZE + !BYTE $0C ; CN 6 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/apple/uthernet2.pla: 0841: end +; libsrc/apple/uthernet2.pla: 0842: // +; libsrc/apple/uthernet2.pla: 0843: // Identify Uthernet II card and initialize +; libsrc/apple/uthernet2.pla: 0844: // +; libsrc/apple/uthernet2.pla: 0845: for slot = $90 to $F0 step $10 +_INIT + !BYTE $2A,$F0 ; CB 240 + !BYTE $2A,$90 ; CB 144 +_B139 + !BYTE $7C ; DAB _D033+0 +_F115 !WORD _D033+0 +; libsrc/apple/uthernet2.pla: 0846: rom = ((slot & $70) << 4) | $C000 +; libsrc/apple/uthernet2.pla: 0847: if rom=>$06 <> $3C86 or (slot == $0B or (rom->$05 <> $38 and rom->$07 <> $18)) // Skip slots with signature +; libsrc/apple/uthernet2.pla: 0848: regdata = peekio(slot) +; libsrc/apple/uthernet2.pla: 0849: if (regdata & $E4) == $00 +; libsrc/apple/uthernet2.pla: 0850: pokeio(slot, $03) // Try setting auto-increment indirect I/F +; libsrc/apple/uthernet2.pla: 0851: if peekio(slot) == $03 +; libsrc/apple/uthernet2.pla: 0852: saveidx = peekiow(slot + 1) +; libsrc/apple/uthernet2.pla: 0853: peekio(slot + 3) // Dummy read to data register should increment index +; libsrc/apple/uthernet2.pla: 0854: if peekiow(slot + 1) == saveidx + 1 +; libsrc/apple/uthernet2.pla: 0855: // +; libsrc/apple/uthernet2.pla: 0856: // Good chance this is it +; libsrc/apple/uthernet2.pla: 0857: // +; libsrc/apple/uthernet2.pla: 0858: pokeio(slot, $80) // RESET +; libsrc/apple/uthernet2.pla: 0859: regidx = slot + 1 +; libsrc/apple/uthernet2.pla: 0860: regdata = slot + 3 +; libsrc/apple/uthernet2.pla: 0861: _pokedata.1 = regdata +; libsrc/apple/uthernet2.pla: 0862: _peekdata.1 = regdata +; libsrc/apple/uthernet2.pla: 0863: repeat + !BYTE $68 ; LAB _D033+0 +_F116 !WORD _D033+0 + !BYTE $3C,$70 ; ANDI 112 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $96 ; OR + !BYTE $7E ; DAW _D029+0 +_F117 !WORD _D029+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $2C,$86,$3C ; CW 15494 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B141 + !WORD _B141-* + !BYTE $68 ; LAB _D033+0 +_F118 !WORD _D033+0 + !BYTE $16 ; CN 11 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B142 + !WORD _B142-* + !BYTE $6A ; LAW _D029+0 +_F119 !WORD _D029+0 + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $2A,$38 ; CB 56 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B143 + !WORD _B143-* + !BYTE $6A ; LAW _D029+0 +_F120 !WORD _D029+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $2A,$18 ; CB 24 + !BYTE $42 ; ISNE +_B143 +_B142 +_B141 + !BYTE $4C ; BRFLS _B144 + !WORD _B144-* + !BYTE $68 ; LAB _D033+0 +_F121 !WORD _D033+0 + !BYTE $54 ; CALL _C002 +_F122 !WORD _C002 + !BYTE $7C ; DAB _D032+0 +_F123 !WORD _D032+0 + !BYTE $3C,$E4 ; ANDI 228 + !BYTE $4E ; BRTRU _B146 + !WORD _B146-* + !BYTE $68 ; LAB _D033+0 +_F124 !WORD _D033+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C001 +_F125 !WORD _C001 + !BYTE $68 ; LAB _D033+0 +_F126 !WORD _D033+0 + !BYTE $54 ; CALL _C002 +_F127 !WORD _C002 + !BYTE $06 ; CN 3 + !BYTE $24 ; BRNE _B148 + !WORD _B148-* + !BYTE $68 ; LAB _D033+0 +_F128 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C003 +_F129 !WORD _C003 + !BYTE $7A ; SAW _D030+0 +_F130 !WORD _D030+0 + !BYTE $68 ; LAB _D033+0 +_F131 !WORD _D033+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _C002 +_F132 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D033+0 +_F133 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C003 +_F134 !WORD _C003 + !BYTE $6A ; LAW _D030+0 +_F135 !WORD _D030+0 + !BYTE $8C ; INCR + !BYTE $24 ; BRNE _B150 + !WORD _B150-* + !BYTE $68 ; LAB _D033+0 +_F136 !WORD _D033+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C001 +_F137 !WORD _C001 + !BYTE $68 ; LAB _D033+0 +_F138 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D031+0 +_F139 !WORD _D031+0 + !BYTE $68 ; LAB _D033+0 +_F140 !WORD _D033+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7C ; DAB _D032+0 +_F141 !WORD _D032+0 + !BYTE $78 ; SAB _A013+1 +_F142 !WORD _A013+1 + !BYTE $68 ; LAB _D032+0 +_F143 !WORD _D032+0 + !BYTE $78 ; SAB _A015+1 +_F144 !WORD _A015+1 +_B153 +; libsrc/apple/uthernet2.pla: 0864: pokeio(slot, $03) // Auto-increment indirect I/F + enable ping +; libsrc/apple/uthernet2.pla: 0865: until peekio(slot) == $03 + !BYTE $68 ; LAB _D033+0 +_F145 !WORD _D033+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C001 +_F146 !WORD _C001 +_B154 + !BYTE $68 ; LAB _D033+0 +_F147 !WORD _D033+0 + !BYTE $54 ; CALL _C002 +_F148 !WORD _C002 + !BYTE $06 ; CN 3 + !BYTE $24 ; BRNE _B153 + !WORD _B153-* +_B152 +; libsrc/apple/uthernet2.pla: 0866: // +; libsrc/apple/uthernet2.pla: 0867: // The following looks redundant, but it sets up the peek/poke locations +; libsrc/apple/uthernet2.pla: 0868: // for peekreg(s)/pokereg(s) +; libsrc/apple/uthernet2.pla: 0869: // +; libsrc/apple/uthernet2.pla: 0870: pokeiow(regidx, WIZ_MR) +; libsrc/apple/uthernet2.pla: 0871: pokeio(regdata, $03) // Auto-increment indirect I/F + enable ping +; libsrc/apple/uthernet2.pla: 0872: peekio(regdata) +; libsrc/apple/uthernet2.pla: 0873: // +; libsrc/apple/uthernet2.pla: 0874: // Initialize common registers +; libsrc/apple/uthernet2.pla: 0875: // +; libsrc/apple/uthernet2.pla: 0876: wizMAC[5] = slot >> 4 // Slighty unique MAC address +; libsrc/apple/uthernet2.pla: 0877: pokeregs(WIZ_SHAR, @wizMAC, 6) // MAC addr +; libsrc/apple/uthernet2.pla: 0878: pokeregw(WIZ_RTR, 5000) // Timeout period to 500ms +; libsrc/apple/uthernet2.pla: 0879: pokereg(WIZ_RMSR, $55) // 2K Rx memory/channel +; libsrc/apple/uthernet2.pla: 0880: pokereg(WIZ_TMSR, $55) // 2K Tx memory/channel +; libsrc/apple/uthernet2.pla: 0881: // +; libsrc/apple/uthernet2.pla: 0882: // Print settings +; libsrc/apple/uthernet2.pla: 0883: // +; libsrc/apple/uthernet2.pla: 0884: puts("Found Uthernet II in slot #") + !BYTE $68 ; LAB _D031+0 +_F149 !WORD _D031+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C000 +_F150 !WORD _C000 + !BYTE $68 ; LAB _D032+0 +_F151 !WORD _D032+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C001 +_F152 !WORD _C001 + !BYTE $68 ; LAB _D032+0 +_F153 !WORD _D032+0 + !BYTE $54 ; CALL _C002 +_F154 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D033+0 +_F155 !WORD _D033+0 + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $78 ; SAB _D034+5 +_F156 !WORD _D034+5 + !BYTE $12 ; CN 9 + !BYTE $26 ; LA _D034+0 +_F157 !WORD _D034+0 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _C006 +_F158 !WORD _C006 + !BYTE $2A,$17 ; CB 23 + !BYTE $2C,$88,$13 ; CW 5000 + !BYTE $54 ; CALL _C008 +_F159 !WORD _C008 + !BYTE $2A,$1A ; CB 26 + !BYTE $2A,$55 ; CB 85 + !BYTE $54 ; CALL _C004 +_F160 !WORD _C004 + !BYTE $2A,$1B ; CB 27 + !BYTE $2A,$55 ; CB 85 + !BYTE $54 ; CALL _C004 +_F161 !WORD _C004 + !BYTE $2E ; CS + !BYTE $1B + !BYTE $46,$6F,$75,$6E,$64,$20,$55,$74 + !BYTE $68,$65,$72,$6E,$65,$74,$20,$49 + !BYTE $49,$20,$69,$6E,$20,$73,$6C,$6F + !BYTE $74,$20,$23 + !BYTE $54 ; CALL _X004 +_F162 !WORD 0 +; libsrc/apple/uthernet2.pla: 0885: putc('0' + ((slot - $80) >> 4)) +; libsrc/apple/uthernet2.pla: 0886: putln +; libsrc/apple/uthernet2.pla: 0887: // +; libsrc/apple/uthernet2.pla: 0888: // Fill channel structure +; libsrc/apple/uthernet2.pla: 0889: // +; libsrc/apple/uthernet2.pla: 0890: saveidx = @wizChannel +; libsrc/apple/uthernet2.pla: 0891: for slot = 0 to 3 + !BYTE $2A,$30 ; CB 48 + !BYTE $68 ; LAB _D033+0 +_F163 !WORD _D033+0 + !BYTE $3A,$80 ; SUBI 128 + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X002 +_F164 !WORD 0 + !BYTE $54 ; CALL _X003 +_F165 !WORD 0 + !BYTE $26 ; LA _D040+0 +_F166 !WORD _D040+0 + !BYTE $7A ; SAW _D030+0 +_F167 !WORD _D030+0 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B156 + !BYTE $7C ; DAB _D033+0 +_F168 !WORD _D033+0 +; libsrc/apple/uthernet2.pla: 0892: saveidx=>channel_regs = WIZ_SREGS + (WIZ_SSIZE * slot) +; libsrc/apple/uthernet2.pla: 0893: saveidx=>channel_txmem = WIZ_TXMEM + (WIZ_TXSIZE * slot) +; libsrc/apple/uthernet2.pla: 0894: saveidx=>channel_rxmem = WIZ_RXMEM + (WIZ_RXSIZE * slot) +; libsrc/apple/uthernet2.pla: 0895: saveidx = saveidx + t_channel +; libsrc/apple/uthernet2.pla: 0896: next + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $68 ; LAB _D033+0 +_F169 !WORD _D033+0 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D030+0 +_F170 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $68 ; LAB _D033+0 +_F171 !WORD _D033+0 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D030+0 +_F172 !WORD _D030+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $68 ; LAB _D033+0 +_F173 !WORD _D033+0 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D030+0 +_F174 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F175 !WORD _D030+0 + !BYTE $38,$14 ; ADDI 20 + !BYTE $7A ; SAW _D030+0 +_F176 !WORD _D030+0 +_B157 + !BYTE $A4 ; INCBRLE _B156 + !WORD _B156-* +_B155 + !BYTE $78 ; SAB _D033+0 +_F177 !WORD _D033+0 + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0897: // +; libsrc/apple/uthernet2.pla: 0898: // Fill in Net class +; libsrc/apple/uthernet2.pla: 0899: // +; libsrc/apple/uthernet2.pla: 0900: iNet:serviceIP = @wizServiceIP +; libsrc/apple/uthernet2.pla: 0901: iNet:openUDP = @wizOpenUDP +; libsrc/apple/uthernet2.pla: 0902: iNet:sendUDP = @wizSendUDP +; libsrc/apple/uthernet2.pla: 0903: iNet:closeUDP = @wizCloseUDP +; libsrc/apple/uthernet2.pla: 0904: iNet:listenTCP = @wizListenTCP +; libsrc/apple/uthernet2.pla: 0905: iNet:connectTCP = @wizConnectTCP +; libsrc/apple/uthernet2.pla: 0906: iNet:sendTCP = @wizSendTCP +; libsrc/apple/uthernet2.pla: 0907: iNet:closeTCP = @wizCloseTCP +; libsrc/apple/uthernet2.pla: 0908: iNet:setInterfaceIP = @setWizIP +; libsrc/apple/uthernet2.pla: 0909: iNet:getInterfaceHA = @getWizHA +; libsrc/apple/uthernet2.pla: 0910: iNet:setCallback = @wizSetCallback +; libsrc/apple/uthernet2.pla: 0911: iNet:setParam = @wizSetParam +; libsrc/apple/uthernet2.pla: 0912: return modkeep + !BYTE $26 ; LA _C019+0 +_F178 !WORD _C019+0 + !BYTE $7A ; SAW _X028+2 +_F179 !WORD 0+2 + !BYTE $26 ; LA _C011+0 +_F180 !WORD _C011+0 + !BYTE $7A ; SAW _X028+4 +_F181 !WORD 0+4 + !BYTE $26 ; LA _C010+0 +_F182 !WORD _C010+0 + !BYTE $7A ; SAW _X028+6 +_F183 !WORD 0+6 + !BYTE $26 ; LA _C012+0 +_F184 !WORD _C012+0 + !BYTE $7A ; SAW _X028+8 +_F185 !WORD 0+8 + !BYTE $26 ; LA _C013+0 +_F186 !WORD _C013+0 + !BYTE $7A ; SAW _X028+10 +_F187 !WORD 0+10 + !BYTE $26 ; LA _C014+0 +_F188 !WORD _C014+0 + !BYTE $7A ; SAW _X028+12 +_F189 !WORD 0+12 + !BYTE $26 ; LA _C015+0 +_F190 !WORD _C015+0 + !BYTE $7A ; SAW _X028+14 +_F191 !WORD 0+14 + !BYTE $26 ; LA _C016+0 +_F192 !WORD _C016+0 + !BYTE $7A ; SAW _X028+16 +_F193 !WORD 0+16 + !BYTE $26 ; LA _C020+0 +_F194 !WORD _C020+0 + !BYTE $7A ; SAW _X028+18 +_F195 !WORD 0+18 + !BYTE $26 ; LA _C021+0 +_F196 !WORD _C021+0 + !BYTE $7A ; SAW _X028+20 +_F197 !WORD 0+20 + !BYTE $26 ; LA _C017+0 +_F198 !WORD _C017+0 + !BYTE $7A ; SAW _X028+26 +_F199 !WORD 0+26 + !BYTE $26 ; LA _C018+0 +_F200 !WORD _C018+0 + !BYTE $7A ; SAW _X028+28 +_F201 !WORD 0+28 + !BYTE $32 ; DROP2 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; libsrc/apple/uthernet2.pla: 0913: fin +_B150 +_B151 +; libsrc/apple/uthernet2.pla: 0914: fin +_B148 +_B149 +; libsrc/apple/uthernet2.pla: 0915: pokeio(slot, regdata) // Restore register +; libsrc/apple/uthernet2.pla: 0916: fin + !BYTE $68 ; LAB _D033+0 +_F202 !WORD _D033+0 + !BYTE $68 ; LAB _D032+0 +_F203 !WORD _D032+0 + !BYTE $54 ; CALL _C001 +_F204 !WORD _C001 +_B146 +_B147 +; libsrc/apple/uthernet2.pla: 0917: fin +_B144 +_B145 +; libsrc/apple/uthernet2.pla: 0918: next +_B140 + !BYTE $2A,$10 ; CB 16 + !BYTE $A6 ; ADDBRLE _B139 + !WORD _B139-* +_B138 + !BYTE $78 ; SAB _D033+0 +_F205 !WORD _D033+0 + !BYTE $30 ; DROP +; libsrc/apple/uthernet2.pla: 0919: // +; libsrc/apple/uthernet2.pla: 0920: // Not found +; libsrc/apple/uthernet2.pla: 0921: // +; libsrc/apple/uthernet2.pla: 0922: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/apple/uthernet2.pla: 0923: done +_SYSFLAGS = 0 +_DEFCNT = 23 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: HOOKICMP + !BYTE $C8,$CF,$CF,$CB,$C9,$C3,$CD,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D041 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/args.a b/src/libsrc/args.a new file mode 100644 index 0000000..ccca063 --- /dev/null +++ b/src/libsrc/args.a @@ -0,0 +1,325 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/args.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/args.pla: 0001: +; libsrc/args.pla: 0002: sysflags nojitc // No need to speed this up + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; libsrc/args.pla: 0003: +; libsrc/args.pla: 0004: def argDelim(str) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; str -> [0] +_C000 ; argDelim() +; libsrc/args.pla: 0005: byte n + ; n -> [2] +; libsrc/args.pla: 0006: +; libsrc/args.pla: 0007: // Skip leading spaces +; libsrc/args.pla: 0008: while ^str and ^(str + 1) == ' ' + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; libsrc/args.pla: 0009: ^(str + 1) = ^str - 1 +; libsrc/args.pla: 0010: str++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/args.pla: 0011: loop + !BYTE $76,$00 ; SLW [0] +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $40 ; ISEQ +_B004 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/args.pla: 0012: // Scan to trailing spaces (if any) +; libsrc/args.pla: 0013: for n = 1 to ^str + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B005 + !WORD _B005-* +_B006 + !BYTE $6C,$02 ; DLB [2] +; libsrc/args.pla: 0014: if ^(str + n) <= ' ' +; libsrc/args.pla: 0015: ^(str + n) = ^str - n +; libsrc/args.pla: 0016: ^str = n - 1 +; libsrc/args.pla: 0017: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $64,$02 ; LLB [2] + !BYTE $84 ; SUB + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B005 + !WORD _B005-* +; libsrc/args.pla: 0018: fin +_B008 +_B009 +; libsrc/args.pla: 0019: next +_B007 + !BYTE $A4 ; INCBRLE _B006 + !WORD _B006-* +_B005 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/args.pla: 0020: return str + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/args.pla: 0021: end +; libsrc/args.pla: 0022: +; libsrc/args.pla: 0023: export def argNext(str) + ; str -> [0] +_C001 ; argNext() +; libsrc/args.pla: 0024: str = str + ^str + 1 + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/args.pla: 0025: return argDelim(str) + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $6E,$00 ; DLW [0] + !BYTE $54 ; CALL _C000 +_F000 !WORD _C000 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/args.pla: 0026: end +; libsrc/args.pla: 0027: +; libsrc/args.pla: 0028: export def argFirst +_C002 ; argFirst() +; libsrc/args.pla: 0029: ^(cmdsys:cmdline + ^cmdsys:cmdline + 1) = NULL +; libsrc/args.pla: 0030: return argDelim(cmdsys:cmdline) + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X000+4 +_F001 !WORD 0+4 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $6A ; LAW _X000+4 +_F002 !WORD 0+4 + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $5C ; RET +; libsrc/args.pla: 0031: end +; libsrc/args.pla: 0032: +; libsrc/args.pla: 0033: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/dhcp.a b/src/libsrc/dhcp.a new file mode 100644 index 0000000..8ddb757 --- /dev/null +++ b/src/libsrc/dhcp.a @@ -0,0 +1,1261 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/dhcp.pla: 0001: // +; libsrc/dhcp.pla: 0002: // DHCP +; libsrc/dhcp.pla: 0003: // +; libsrc/dhcp.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/dhcp.pla: 0004: +; libsrc/dhcp.pla: 0005: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + ; INET -> X028 +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; libsrc/dhcp.pla: 0005: +; libsrc/dhcp.pla: 0006: sysflags nojitc // No need to JITC this temp loaded module + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; libsrc/dhcp.pla: 0007: // +; libsrc/dhcp.pla: 0008: // Needed to init subnet +; libsrc/dhcp.pla: 0009: // +; libsrc/dhcp.pla: 0010: const IP_BROADCAST = $FFFF + ; IP_BROADCAST = 65535 +; libsrc/dhcp.pla: 0011: const IP4ADR_SIZE = 4 + ; IP4ADR_SIZE = 4 +; libsrc/dhcp.pla: 0012: // +; libsrc/dhcp.pla: 0013: // DHCP message +; libsrc/dhcp.pla: 0014: // +; libsrc/dhcp.pla: 0015: struc t_dhcp +; libsrc/dhcp.pla: 0016: byte dhcp_op + ; dhcp_op = 0 +; libsrc/dhcp.pla: 0017: byte dhcp_htype + ; dhcp_htype = 1 +; libsrc/dhcp.pla: 0018: byte dhcp_hlen + ; dhcp_hlen = 2 +; libsrc/dhcp.pla: 0019: byte dhcp_hops + ; dhcp_hops = 3 +; libsrc/dhcp.pla: 0020: byte[4] dhcp_xid + ; dhcp_xid = 4 +; libsrc/dhcp.pla: 0021: word dhcp_secs + ; dhcp_secs = 8 +; libsrc/dhcp.pla: 0022: word dhcp_flags + ; dhcp_flags = 10 +; libsrc/dhcp.pla: 0023: byte[4] dhcp_clientip + ; dhcp_clientip = 12 +; libsrc/dhcp.pla: 0024: byte[4] dhcp_yourip + ; dhcp_yourip = 16 +; libsrc/dhcp.pla: 0025: byte[4] dhcp_serverip + ; dhcp_serverip = 20 +; libsrc/dhcp.pla: 0026: byte[4] dhcp_gatewayip + ; dhcp_gatewayip = 24 +; libsrc/dhcp.pla: 0027: byte[16] dhcp_clientha + ; dhcp_clientha = 28 +; libsrc/dhcp.pla: 0028: byte[192] dhcp_bootp + ; dhcp_bootp = 44 +; libsrc/dhcp.pla: 0029: byte[4] dhcp_magic + ; dhcp_magic = 236 +; libsrc/dhcp.pla: 0030: byte[60] dhcp_opts + ; dhcp_opts = 240 +; libsrc/dhcp.pla: 0031: end + ; t_dhcp = 300 +; libsrc/dhcp.pla: 0032: // +; libsrc/dhcp.pla: 0033: // DHCP messages +; libsrc/dhcp.pla: 0034: // +; libsrc/dhcp.pla: 0035: const DHCP_DISCOVER = $01 + ; DHCP_DISCOVER = 1 +; libsrc/dhcp.pla: 0036: const DHCP_OFFER = $02 + ; DHCP_OFFER = 2 +; libsrc/dhcp.pla: 0037: const DHCP_REQUEST = $03 + ; DHCP_REQUEST = 3 +; libsrc/dhcp.pla: 0038: const DHCP_DECLINE = $04 + ; DHCP_DECLINE = 4 +; libsrc/dhcp.pla: 0039: const DHCP_ACK = $05 + ; DHCP_ACK = 5 +; libsrc/dhcp.pla: 0040: const DHCP_NACK = $06 + ; DHCP_NACK = 6 +; libsrc/dhcp.pla: 0041: const DHCP_RELEASE = $07 + ; DHCP_RELEASE = 7 +; libsrc/dhcp.pla: 0042: // +; libsrc/dhcp.pla: 0043: // Track DHCP progress +; libsrc/dhcp.pla: 0044: // +; libsrc/dhcp.pla: 0045: byte retry +_D029 !FILL 1 ; retry +; libsrc/dhcp.pla: 0046: word timeout +_D030 !FILL 2 ; timeout +; libsrc/dhcp.pla: 0047: // +; libsrc/dhcp.pla: 0048: // DHCP ports +; libsrc/dhcp.pla: 0049: // +; libsrc/dhcp.pla: 0050: const DHCP_CLIENT_PORT = 68 + ; DHCP_CLIENT_PORT = 68 +; libsrc/dhcp.pla: 0051: const DHCP_SERVER_PORT = 67 + ; DHCP_SERVER_PORT = 67 +; libsrc/dhcp.pla: 0052: word portDHCP +_D031 !FILL 2 ; portDHCP +; libsrc/dhcp.pla: 0053: byte[4] zeros +_D032 !FILL 4 ; zeros +; libsrc/dhcp.pla: 0054: byte[4] ones = $FF, $FF, $FF, $FF +_D033 ; ones = $FF, $FF, $FF, $FF + !BYTE $FF + !BYTE $FF + !BYTE $FF + !BYTE $FF +; libsrc/dhcp.pla: 0055: // +; libsrc/dhcp.pla: 0056: // Default static net IP addresses +; libsrc/dhcp.pla: 0057: // +; libsrc/dhcp.pla: 0058: byte localdns = 8,8,8,8 +_D034 ; localdns = 8,8,8,8 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 +; libsrc/dhcp.pla: 0059: byte localgw = 192,168,1,1 +_D035 ; localgw = 192,168,1,1 + !BYTE $C0 + !BYTE $A8 + !BYTE $01 + !BYTE $01 +; libsrc/dhcp.pla: 0060: byte localip = 192,168,1,10 +_D036 ; localip = 192,168,1,10 + !BYTE $C0 + !BYTE $A8 + !BYTE $01 + !BYTE $0A +; libsrc/dhcp.pla: 0061: byte localnet = 255,255,255,0 +_D037 ; localnet = 255,255,255,0 + !BYTE $FF + !BYTE $FF + !BYTE $FF + !BYTE $00 +; libsrc/dhcp.pla: 0062: // +; libsrc/dhcp.pla: 0063: // Pre-configured DHCP packet +; libsrc/dhcp.pla: 0064: // +; libsrc/dhcp.pla: 0065: byte DHCP = $01// OP = BOOT +_D038 ; DHCP = $01// OP = BOOT + !BYTE $01 +; libsrc/dhcp.pla: 0066: byte = $01 // HTYPE = ETHERNET + !BYTE $01 +; libsrc/dhcp.pla: 0067: byte = $06 // HLEN = 6 + !BYTE $06 +; libsrc/dhcp.pla: 0068: byte = $00 // HOPS + !BYTE $00 +; libsrc/dhcp.pla: 0069: byte[4] = $01,$02,$03,$04 // TRANSACTION ID + !BYTE $01 + !BYTE $02 + !BYTE $03 + !BYTE $04 +; libsrc/dhcp.pla: 0070: word = $0000 // SECONDS + !WORD $0000 +; libsrc/dhcp.pla: 0071: word = 0 // FLAGS + !WORD $0000 +; libsrc/dhcp.pla: 0072: byte[4] = 0 // CLIENT IP + !BYTE $00 + !FILL $03 +; libsrc/dhcp.pla: 0073: byte[4] = 0 // YOUR IP + !BYTE $00 + !FILL $03 +; libsrc/dhcp.pla: 0074: byte[4] = 0 // SERVER IP + !BYTE $00 + !FILL $03 +; libsrc/dhcp.pla: 0075: byte[4] = 0 // GATEWAY IP + !BYTE $00 + !FILL $03 +; libsrc/dhcp.pla: 0076: byte[16] = 0 // CLIENT HA + !BYTE $00 + !FILL $0F +; libsrc/dhcp.pla: 0077: byte[64] = 0 // SERVER HOST NAME + !BYTE $00 + !FILL $3F +; libsrc/dhcp.pla: 0078: byte[128] = 0 // BOOT FILE NAME + !BYTE $00 + !FILL $7F +; libsrc/dhcp.pla: 0079: byte[4] = $63,$82,$53,$63 // MAGIC + !BYTE $63 + !BYTE $82 + !BYTE $53 + !BYTE $63 +; libsrc/dhcp.pla: 0080: byte optsOP = 53,1,1 // DISCOVER +_D039 ; optsOP = 53,1,1 // DISCOVER + !BYTE $35 + !BYTE $01 + !BYTE $01 +; libsrc/dhcp.pla: 0081: byte optsCID = 61,7, $01,$00,$00,$00,$00,$00,$00 +_D040 ; optsCID = 61,7, $01,$00,$00,$00,$00,$00,$00 + !BYTE $3D + !BYTE $07 + !BYTE $01 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/dhcp.pla: 0082: byte = 12, "AppleII" + !BYTE $0C + !BYTE $07 + !BYTE $41,$70,$70,$6C,$65,$49,$49 +; libsrc/dhcp.pla: 0083: byte optsIP = 50,4, 0,0,0,0 // IP requested +_D041 ; optsIP = 50,4, 0,0,0,0 // IP requested + !BYTE $32 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/dhcp.pla: 0084: byte = 55,4, 1,3,6,42 // Parameter request list + !BYTE $37 + !BYTE $04 + !BYTE $01 + !BYTE $03 + !BYTE $06 + !BYTE $2A +; libsrc/dhcp.pla: 0085: byte optsSRV = 54,4, 0,0,0,0 // DHCP server +_D042 ; optsSRV = 54,4, 0,0,0,0 // DHCP server + !BYTE $36 + !BYTE $04 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; libsrc/dhcp.pla: 0086: byte = 255 + !BYTE $FF +; libsrc/dhcp.pla: 0087: byte[] endDHCP +_D043 ; endDHCP +; libsrc/dhcp.pla: 0088: // +; libsrc/dhcp.pla: 0089: // DEBUG +; libsrc/dhcp.pla: 0090: // +; libsrc/dhcp.pla: 0091: def putip(ipptr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; ipptr -> [0] +_C000 ; putip() +; libsrc/dhcp.pla: 0092: byte i + ; i -> [2] +; libsrc/dhcp.pla: 0093: +; libsrc/dhcp.pla: 0094: for i = 0 to 2 + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $04 ; CN 2 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$02 ; DLB [2] +; libsrc/dhcp.pla: 0095: puti(ipptr->[i]); putc('.') +; libsrc/dhcp.pla: 0096: next + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F000 !WORD 0 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/dhcp.pla: 0097: puti(ipptr->[i]) +; libsrc/dhcp.pla: 0098: end + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F002 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/dhcp.pla: 0099: //def dumpbytes(buf, len) +; libsrc/dhcp.pla: 0100: // word i +; libsrc/dhcp.pla: 0101: // +; libsrc/dhcp.pla: 0102: // for i = 0 to len - 1 +; libsrc/dhcp.pla: 0103: // putb(buf->[i]) +; libsrc/dhcp.pla: 0104: // if i & 15 == 15 +; libsrc/dhcp.pla: 0105: // putln +; libsrc/dhcp.pla: 0106: // else +; libsrc/dhcp.pla: 0107: // putc(' ') +; libsrc/dhcp.pla: 0108: // fin +; libsrc/dhcp.pla: 0109: // next +; libsrc/dhcp.pla: 0110: //end +; libsrc/dhcp.pla: 0111: //def dumpdhcp(pkt) +; libsrc/dhcp.pla: 0112: // putb(pkt->dhcp_op);putln +; libsrc/dhcp.pla: 0113: // putb(pkt->dhcp_htype);putln +; libsrc/dhcp.pla: 0114: // putb(pkt->dhcp_hlen);putln +; libsrc/dhcp.pla: 0115: // putb(pkt->dhcp_hops);putln +; libsrc/dhcp.pla: 0116: // dumpbytes(@pkt->dhcp_xid, 4);putln +; libsrc/dhcp.pla: 0117: // putip(@pkt->dhcp_clientip);putln +; libsrc/dhcp.pla: 0118: // putip(@pkt->dhcp_yourip);putln +; libsrc/dhcp.pla: 0119: // putip(@pkt->dhcp_serverip);putln +; libsrc/dhcp.pla: 0120: // putip(@pkt->dhcp_gatewayip);putln +; libsrc/dhcp.pla: 0121: // dumpbytes(@pkt->dhcp_opts, 48);putln +; libsrc/dhcp.pla: 0122: //end +; libsrc/dhcp.pla: 0123: def parseopts(opts, match) + ; opts -> [0] + ; match -> [2] +_C001 ; parseopts() +; libsrc/dhcp.pla: 0124: byte i + ; i -> [4] +; libsrc/dhcp.pla: 0125: +; libsrc/dhcp.pla: 0126: i = 0 + !BYTE $58,$05,$02 ; ENTER 5,2 +; libsrc/dhcp.pla: 0127: while opts->[i] <> $FF and i < 64 + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/dhcp.pla: 0128: while !opts->[i] and i < 64 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B008 +; libsrc/dhcp.pla: 0129: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/dhcp.pla: 0130: loop + !BYTE $74,$04 ; SLB [4] +_B010 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B011 + !WORD _B011-* + !BYTE $64,$04 ; LLB [4] + !BYTE $2A,$40 ; CB 64 + !BYTE $46 ; ISLT +_B011 + !BYTE $4E ; BRTRU _B008 + !WORD _B008-* +_B009 +; libsrc/dhcp.pla: 0131: if opts->[i] == match +; libsrc/dhcp.pla: 0132: return i + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $24 ; BRNE _B012 + !WORD _B012-* + !BYTE $64,$04 ; LLB [4] + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/dhcp.pla: 0133: fin +_B012 +_B013 +; libsrc/dhcp.pla: 0134: i = i + opts->[i + 1] + 2 +; libsrc/dhcp.pla: 0135: loop + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $38,$02 ; ADDI 2 + !BYTE $74,$04 ; SLB [4] +_B006 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$FF ; CB 255 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B007 + !WORD _B007-* + !BYTE $64,$04 ; LLB [4] + !BYTE $2A,$40 ; CB 64 + !BYTE $46 ; ISLT +_B007 + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/dhcp.pla: 0136: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/dhcp.pla: 0137: end +; libsrc/dhcp.pla: 0138: def recvDHCP(remip, remport, pkt, len, param) + ; remip -> [0] + ; remport -> [2] + ; pkt -> [4] + ; len -> [6] + ; param -> [8] +_C002 ; recvDHCP() +; libsrc/dhcp.pla: 0139: word servopts, maskopts, gwopts, dnsopts + ; servopts -> [10] + ; maskopts -> [12] + ; gwopts -> [14] + ; dnsopts -> [16] +; libsrc/dhcp.pla: 0140: +; libsrc/dhcp.pla: 0141: //puts("recvDHCP: ");putip(remip);putc(':');puti(remport);putln +; libsrc/dhcp.pla: 0142: //dumpdhcp(pkt) +; libsrc/dhcp.pla: 0143: if pkt=>dhcp_xid:0 == $0201 and pkt=>dhcp_xid:2 == $0403 + !BYTE $58,$12,$05 ; ENTER 18,5 +; libsrc/dhcp.pla: 0144: when pkt->dhcp_opts.[parseopts(@pkt->dhcp_opts, 53) + 2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $2C,$01,$02 ; CW 513 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B014 + !WORD _B014-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$03,$04 ; CW 1027 + !BYTE $40 ; ISEQ +_B014 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $2A,$35 ; CB 53 + !BYTE $54 ; CALL _C001 +_F003 !WORD _C001 + !BYTE $38,$02 ; ADDI 2 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B018-* +; libsrc/dhcp.pla: 0145: is DHCP_OFFER +_B019 +; libsrc/dhcp.pla: 0146: // +; libsrc/dhcp.pla: 0147: // Copy offer parameters to request +; libsrc/dhcp.pla: 0148: // +; libsrc/dhcp.pla: 0149: optsOP.2 = DHCP_REQUEST +; libsrc/dhcp.pla: 0150: memcpy(@optsIP.2, @pkt->dhcp_yourip, IP4ADR_SIZE) +; libsrc/dhcp.pla: 0151: servopts = parseopts(@pkt->dhcp_opts, 54) + 2 +; libsrc/dhcp.pla: 0152: if servopts >= 0 +; libsrc/dhcp.pla: 0153: optsSRV = 54 +; libsrc/dhcp.pla: 0154: memcpy(@optsSRV.2, @pkt->dhcp_opts.[servopts], IP4ADR_SIZE) +; libsrc/dhcp.pla: 0155: fin + !BYTE $06 ; CN 3 + !BYTE $78 ; SAB _D039+2 +_F004 !WORD _D039+2 + !BYTE $26 ; LA _D041+2 +_F005 !WORD _D041+2 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$10 ; ADDI 16 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F006 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $2A,$36 ; CB 54 + !BYTE $54 ; CALL _C001 +_F007 !WORD _C001 + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $2A,$36 ; CB 54 + !BYTE $78 ; SAB _D042+0 +_F008 !WORD _D042+0 + !BYTE $26 ; LA _D042+2 +_F009 !WORD _D042+2 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F010 !WORD 0 +_B020 +_B021 +; libsrc/dhcp.pla: 0156: iNet:sendUDP(portDHCP, 0, DHCP_SERVER_PORT, @DHCP, @endDHCP - @DHCP) +; libsrc/dhcp.pla: 0157: break + !BYTE $6A ; LAW _D031+0 +_F011 !WORD _D031+0 + !BYTE $00 ; CN 0 + !BYTE $2A,$43 ; CB 67 + !BYTE $26 ; LA _D038+0 +_F012 !WORD _D038+0 + !BYTE $26 ; LA _D043+0 +_F013 !WORD _D043+0 + !BYTE $26 ; LA _D038+0 +_F014 !WORD _D038+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X028+6 +_F015 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +; libsrc/dhcp.pla: 0158: is DHCP_ACK +_B022 +; libsrc/dhcp.pla: 0159: // +; libsrc/dhcp.pla: 0160: // Copy parameters to working copy +; libsrc/dhcp.pla: 0161: // +; libsrc/dhcp.pla: 0162: optsOP.2 = DHCP_ACK +; libsrc/dhcp.pla: 0163: memcpy(@localip, @pkt->dhcp_yourip, IP4ADR_SIZE) +; libsrc/dhcp.pla: 0164: maskopts = parseopts(@pkt->dhcp_opts, 1) + 2 +; libsrc/dhcp.pla: 0165: if maskopts >= 0 +; libsrc/dhcp.pla: 0166: memcpy(@localnet, @pkt->dhcp_opts.[maskopts], IP4ADR_SIZE) +; libsrc/dhcp.pla: 0167: fin + !BYTE $0A ; CN 5 + !BYTE $78 ; SAB _D039+2 +_F016 !WORD _D039+2 + !BYTE $26 ; LA _D036+0 +_F017 !WORD _D036+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$10 ; ADDI 16 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F018 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C001 +_F019 !WORD _C001 + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0C ; DLW [12] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B023 + !WORD _B023-* + !BYTE $26 ; LA _D037+0 +_F020 !WORD _D037+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F021 !WORD 0 +_B023 +_B024 +; libsrc/dhcp.pla: 0168: gwopts = parseopts(@pkt->dhcp_opts, 3) + 2 +; libsrc/dhcp.pla: 0169: if gwopts >= 0 +; libsrc/dhcp.pla: 0170: memcpy(@localgw, @pkt->dhcp_opts.[gwopts], IP4ADR_SIZE) +; libsrc/dhcp.pla: 0171: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C001 +_F022 !WORD _C001 + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $26 ; LA _D035+0 +_F023 !WORD _D035+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F024 !WORD 0 +_B025 +_B026 +; libsrc/dhcp.pla: 0172: dnsopts = parseopts(@pkt->dhcp_opts, 6) + 2 +; libsrc/dhcp.pla: 0173: if dnsopts >= 0 +; libsrc/dhcp.pla: 0174: memcpy(@localdns, @pkt->dhcp_opts.[dnsopts], IP4ADR_SIZE) +; libsrc/dhcp.pla: 0175: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _C001 +_F025 !WORD _C001 + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$10 ; DLW [16] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $26 ; LA _D034+0 +_F026 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$F0 ; ADDI 240 + !BYTE $B2,$10 ; ADDLW [16] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F027 !WORD 0 +_B027 +_B028 +; libsrc/dhcp.pla: 0176: break + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +; libsrc/dhcp.pla: 0177: otherwise +_B018 + !BYTE $02 ; CASEBLOCK + !WORD $0002 + !WORD _B019-* + !WORD $0005 + !WORD _B022-* +; libsrc/dhcp.pla: 0178: //dumpdhcp(pkt) +; libsrc/dhcp.pla: 0179: wend +_B017 +; libsrc/dhcp.pla: 0180: fin +_B015 +_B016 +; libsrc/dhcp.pla: 0181: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$12 ; LEAVE 18 +; libsrc/dhcp.pla: 0182: end +; libsrc/dhcp.pla: 0183: // +; libsrc/dhcp.pla: 0184: // Get the local hardware address into the DHCP packet +; libsrc/dhcp.pla: 0185: // +; libsrc/dhcp.pla: 0186: iNet:getInterfaceHA(@DHCP.dhcp_clientha) +_INIT +; libsrc/dhcp.pla: 0187: iNet:getInterfaceHA(@optsCID.3) +; libsrc/dhcp.pla: 0188: // +; libsrc/dhcp.pla: 0189: // Clear our local IP address +; libsrc/dhcp.pla: 0190: // +; libsrc/dhcp.pla: 0191: iNet:setInterfaceIP(@zeros, @ones, @zeros) +; libsrc/dhcp.pla: 0192: // +; libsrc/dhcp.pla: 0193: // Prepare to receive DHCP packets from a server +; libsrc/dhcp.pla: 0194: // +; libsrc/dhcp.pla: 0195: portDHCP = iNet:openUDP(DHCP_CLIENT_PORT, @recvDHCP, 0) +; libsrc/dhcp.pla: 0196: // +; libsrc/dhcp.pla: 0197: // Service IP +; libsrc/dhcp.pla: 0198: // +; libsrc/dhcp.pla: 0199: retry = 0 +; libsrc/dhcp.pla: 0200: repeat + !BYTE $26 ; LA _D038+28 +_F028 !WORD _D038+28 + !BYTE $6A ; LAW _X028+20 +_F029 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D040+3 +_F030 !WORD _D040+3 + !BYTE $6A ; LAW _X028+20 +_F031 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D032+0 +_F032 !WORD _D032+0 + !BYTE $26 ; LA _D033+0 +_F033 !WORD _D033+0 + !BYTE $26 ; LA _D032+0 +_F034 !WORD _D032+0 + !BYTE $6A ; LAW _X028+18 +_F035 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$44 ; CB 68 + !BYTE $26 ; LA _C002+0 +_F036 !WORD _C002+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F037 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D031+0 +_F038 !WORD _D031+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D029+0 +_F039 !WORD _D029+0 +_B030 +; libsrc/dhcp.pla: 0201: // +; libsrc/dhcp.pla: 0202: // Broadcast DHCP DISCOVER message +; libsrc/dhcp.pla: 0203: // +; libsrc/dhcp.pla: 0204: optsOP.2 = DHCP_DISCOVER +; libsrc/dhcp.pla: 0205: optsIP:2 = 0 +; libsrc/dhcp.pla: 0206: optsIP:4 = 0 +; libsrc/dhcp.pla: 0207: optsSRV = 255 +; libsrc/dhcp.pla: 0208: DHCP.dhcp_secs.1 = retry +; libsrc/dhcp.pla: 0209: iNet:sendUDP(portDHCP, 0, DHCP_SERVER_PORT, @DHCP, @optsSRV - @DHCP + 1) +; libsrc/dhcp.pla: 0210: for timeout = 0 to 4000 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D039+2 +_F040 !WORD _D039+2 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D041+2 +_F041 !WORD _D041+2 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D041+4 +_F042 !WORD _D041+4 + !BYTE $2A,$FF ; CB 255 + !BYTE $78 ; SAB _D042+0 +_F043 !WORD _D042+0 + !BYTE $68 ; LAB _D029+0 +_F044 !WORD _D029+0 + !BYTE $26 ; LA _D038+8 +_F045 !WORD _D038+8 + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $6A ; LAW _D031+0 +_F046 !WORD _D031+0 + !BYTE $00 ; CN 0 + !BYTE $2A,$43 ; CB 67 + !BYTE $26 ; LA _D038+0 +_F047 !WORD _D038+0 + !BYTE $26 ; LA _D042+0 +_F048 !WORD _D042+0 + !BYTE $26 ; LA _D038+0 +_F049 !WORD _D038+0 + !BYTE $84 ; SUB + !BYTE $8C ; INCR + !BYTE $6A ; LAW _X028+6 +_F050 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$A0,$0F ; CW 4000 + !BYTE $00 ; CN 0 +_B033 + !BYTE $7E ; DAW _D030+0 +_F051 !WORD _D030+0 +; libsrc/dhcp.pla: 0211: iNet:serviceIP() +; libsrc/dhcp.pla: 0212: if optsOP.2 == DHCP_ACK +; libsrc/dhcp.pla: 0213: break + !BYTE $6A ; LAW _X028+2 +_F052 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D039+2 +_F053 !WORD _D039+2 + !BYTE $0A ; CN 5 + !BYTE $24 ; BRNE _B035 + !WORD _B035-* + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +; libsrc/dhcp.pla: 0214: fin +_B035 +_B036 +; libsrc/dhcp.pla: 0215: next +_B034 + !BYTE $A4 ; INCBRLE _B033 + !WORD _B033-* +_B032 + !BYTE $7A ; SAW _D030+0 +_F054 !WORD _D030+0 + !BYTE $30 ; DROP +; libsrc/dhcp.pla: 0216: retry++ + !BYTE $68 ; LAB _D029+0 +_F055 !WORD _D029+0 + !BYTE $8C ; INCR +; libsrc/dhcp.pla: 0217: until retry > 4 or optsOP.2 == DHCP_ACK + !BYTE $78 ; SAB _D029+0 +_F056 !WORD _D029+0 +_B031 + !BYTE $68 ; LAB _D029+0 +_F057 !WORD _D029+0 + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B037 + !WORD _B037-* + !BYTE $68 ; LAB _D039+2 +_F058 !WORD _D039+2 + !BYTE $0A ; CN 5 + !BYTE $40 ; ISEQ +_B037 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* +_B029 +; libsrc/dhcp.pla: 0218: iNet:closeUDP(portDHCP) +; libsrc/dhcp.pla: 0219: iNet:setInterfaceIP(@localip, @localnet, @localgw) +; libsrc/dhcp.pla: 0220: puts("Apple II bound to:\n");putip(@localip);putc('/');putip(@localnet);putln + !BYTE $6A ; LAW _D031+0 +_F059 !WORD _D031+0 + !BYTE $6A ; LAW _X028+8 +_F060 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D036+0 +_F061 !WORD _D036+0 + !BYTE $26 ; LA _D037+0 +_F062 !WORD _D037+0 + !BYTE $26 ; LA _D035+0 +_F063 !WORD _D035+0 + !BYTE $6A ; LAW _X028+18 +_F064 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $13 + !BYTE $41,$70,$70,$6C,$65,$20,$49,$49 + !BYTE $20,$62,$6F,$75,$6E,$64,$20,$74 + !BYTE $6F,$3A,$0D + !BYTE $54 ; CALL _X004 +_F065 !WORD 0 +; libsrc/dhcp.pla: 0221: iNet:setDNS(@localdns) +; libsrc/dhcp.pla: 0222: puts("DNS:");putip(@localdns);putln + !BYTE $26 ; LA _D036+0 +_F066 !WORD _D036+0 + !BYTE $54 ; CALL _C000 +_F067 !WORD _C000 + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F068 !WORD 0 + !BYTE $26 ; LA _D037+0 +_F069 !WORD _D037+0 + !BYTE $54 ; CALL _C000 +_F070 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F071 !WORD 0 + !BYTE $26 ; LA _D034+0 +_F072 !WORD _D034+0 + !BYTE $6A ; LAW _X028+22 +_F073 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $04 + !BYTE $44,$4E,$53,$3A + !BYTE $54 ; CALL _X004 +_F074 !WORD 0 +; libsrc/dhcp.pla: 0223: done + !BYTE $26 ; LA _D034+0 +_F075 !WORD _D034+0 + !BYTE $54 ; CALL _C000 +_F076 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F077 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/etherip.a b/src/libsrc/etherip.a new file mode 100644 index 0000000..a4a9a37 --- /dev/null +++ b/src/libsrc/etherip.a @@ -0,0 +1,2483 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/etherip.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/etherip.pla: 0001: +; libsrc/etherip.pla: 0002: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + ; INET -> X028 +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; libsrc/etherip.pla: 0002: +; libsrc/etherip.pla: 0003: // +; libsrc/etherip.pla: 0004: // Predefine service routine +; libsrc/etherip.pla: 0005: // +; libsrc/etherip.pla: 0006: predef etherServiceIP + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/etherip.pla: 0007: // +; libsrc/etherip.pla: 0008: // Segment list element +; libsrc/etherip.pla: 0009: // +; libsrc/etherip.pla: 0010: struc t_segment +; libsrc/etherip.pla: 0011: word seg_buf + ; seg_buf = 0 +; libsrc/etherip.pla: 0012: word seg_len + ; seg_len = 2 +; libsrc/etherip.pla: 0013: end + ; t_segment = 4 +; libsrc/etherip.pla: 0014: // +; libsrc/etherip.pla: 0015: // Max Ethernet frame size +; libsrc/etherip.pla: 0016: // +; libsrc/etherip.pla: 0017: const MAX_FRAME_SIZE = 1518 + ; MAX_FRAME_SIZE = 1518 +; libsrc/etherip.pla: 0018: const MAC_BROADCAST = $FFFF + ; MAC_BROADCAST = 65535 +; libsrc/etherip.pla: 0019: const MAC_SIZE = 6 + ; MAC_SIZE = 6 +; libsrc/etherip.pla: 0020: // +; libsrc/etherip.pla: 0021: // Ethernet header +; libsrc/etherip.pla: 0022: // +; libsrc/etherip.pla: 0023: struc t_ethrhdr +; libsrc/etherip.pla: 0024: byte[MAC_SIZE] ethr_dst + ; ethr_dst = 0 +; libsrc/etherip.pla: 0025: byte[MAC_SIZE] ethr_src + ; ethr_src = 6 +; libsrc/etherip.pla: 0026: word ethr_payload + ; ethr_payload = 12 +; libsrc/etherip.pla: 0027: end + ; t_ethrhdr = 14 +; libsrc/etherip.pla: 0028: const PAYLOAD_IP = $0008 // BE format + ; PAYLOAD_IP = 8 +; libsrc/etherip.pla: 0029: const PAYLOAD_ARP = $0608 // BE format + ; PAYLOAD_ARP = 1544 +; libsrc/etherip.pla: 0030: // +; libsrc/etherip.pla: 0031: // IP datagram header +; libsrc/etherip.pla: 0032: // +; libsrc/etherip.pla: 0033: const IP4ADR_SIZE = 4 + ; IP4ADR_SIZE = 4 +; libsrc/etherip.pla: 0034: struc t_iphdr +; libsrc/etherip.pla: 0035: byte ip_vers_hlen + ; ip_vers_hlen = 0 +; libsrc/etherip.pla: 0036: byte ip_service + ; ip_service = 1 +; libsrc/etherip.pla: 0037: word ip_length + ; ip_length = 2 +; libsrc/etherip.pla: 0038: word ip_id + ; ip_id = 4 +; libsrc/etherip.pla: 0039: word ip_flags_fragofst + ; ip_flags_fragofst = 6 +; libsrc/etherip.pla: 0040: byte ip_ttl + ; ip_ttl = 8 +; libsrc/etherip.pla: 0041: byte ip_proto + ; ip_proto = 9 +; libsrc/etherip.pla: 0042: word ip_chksm + ; ip_chksm = 10 +; libsrc/etherip.pla: 0043: byte[IP4ADR_SIZE] ip_src + ; ip_src = 12 +; libsrc/etherip.pla: 0044: byte[IP4ADR_SIZE] ip_dst + ; ip_dst = 16 +; libsrc/etherip.pla: 0045: byte[] ip_options + ; ip_options = 20 +; libsrc/etherip.pla: 0046: end + ; t_iphdr = 20 +; libsrc/etherip.pla: 0047: const t_ethriphdr = t_ethrhdr + t_iphdr + ; t_ethriphdr = 34 +; libsrc/etherip.pla: 0048: const IP_BROADCAST = $FFFF + ; IP_BROADCAST = 65535 +; libsrc/etherip.pla: 0049: const IP_PROTO_ICMP = $01 + ; IP_PROTO_ICMP = 1 +; libsrc/etherip.pla: 0050: const IP_PROTO_UDP = $11 + ; IP_PROTO_UDP = 17 +; libsrc/etherip.pla: 0051: const IP_PROTO_TCP = $06 + ; IP_PROTO_TCP = 6 +; libsrc/etherip.pla: 0052: // +; libsrc/etherip.pla: 0053: // ICMP type/codes +; libsrc/etherip.pla: 0054: // +; libsrc/etherip.pla: 0055: const ICMP_ECHO_REQST = 8 + ; ICMP_ECHO_REQST = 8 +; libsrc/etherip.pla: 0056: const ICMP_ECHO_REPLY = 0 + ; ICMP_ECHO_REPLY = 0 +; libsrc/etherip.pla: 0057: // +; libsrc/etherip.pla: 0058: // ICMP message format +; libsrc/etherip.pla: 0059: // +; libsrc/etherip.pla: 0060: struc t_icmp +; libsrc/etherip.pla: 0061: byte icmp_type + ; icmp_type = 0 +; libsrc/etherip.pla: 0062: byte icmp_code + ; icmp_code = 1 +; libsrc/etherip.pla: 0063: word icmp_chksm + ; icmp_chksm = 2 +; libsrc/etherip.pla: 0064: word[2] icmp_header + ; icmp_header = 4 +; libsrc/etherip.pla: 0065: end + ; t_icmp = 8 +; libsrc/etherip.pla: 0066: // +; libsrc/etherip.pla: 0067: // UDP IPv4 pseudo header +; libsrc/etherip.pla: 0068: // +; libsrc/etherip.pla: 0069: struc t_piphdr +; libsrc/etherip.pla: 0070: byte[IP4ADR_SIZE] pip_src + ; pip_src = 0 +; libsrc/etherip.pla: 0071: byte[IP4ADR_SIZE] pip_dst + ; pip_dst = 4 +; libsrc/etherip.pla: 0072: byte pip_zero + ; pip_zero = 8 +; libsrc/etherip.pla: 0073: byte pip_proto + ; pip_proto = 9 +; libsrc/etherip.pla: 0074: word pip_len + ; pip_len = 10 +; libsrc/etherip.pla: 0075: end + ; t_piphdr = 12 +; libsrc/etherip.pla: 0076: // +; libsrc/etherip.pla: 0077: // UDP header +; libsrc/etherip.pla: 0078: // +; libsrc/etherip.pla: 0079: struc t_udphdr +; libsrc/etherip.pla: 0080: word udp_src + ; udp_src = 0 +; libsrc/etherip.pla: 0081: word udp_dst + ; udp_dst = 2 +; libsrc/etherip.pla: 0082: word udp_len + ; udp_len = 4 +; libsrc/etherip.pla: 0083: word udp_chksm + ; udp_chksm = 6 +; libsrc/etherip.pla: 0084: end + ; t_udphdr = 8 +; libsrc/etherip.pla: 0085: // +; libsrc/etherip.pla: 0086: // TCP header +; libsrc/etherip.pla: 0087: // +; libsrc/etherip.pla: 0088: struc t_tcphdr +; libsrc/etherip.pla: 0089: word tcp_src + ; tcp_src = 0 +; libsrc/etherip.pla: 0090: word tcp_dst + ; tcp_dst = 2 +; libsrc/etherip.pla: 0091: word tcp_len + ; tcp_len = 4 +; libsrc/etherip.pla: 0092: word tcp_chksm + ; tcp_chksm = 6 +; libsrc/etherip.pla: 0093: end + ; t_tcphdr = 8 +; libsrc/etherip.pla: 0094: // +; libsrc/etherip.pla: 0095: // ARP packet +; libsrc/etherip.pla: 0096: // +; libsrc/etherip.pla: 0097: const HW_ETHER = $0100 // BE format + ; HW_ETHER = 256 +; libsrc/etherip.pla: 0098: const ARP_PROTO = $0008 // BE format + ; ARP_PROTO = 8 +; libsrc/etherip.pla: 0099: const ARP_REQST = $0100 // BE format + ; ARP_REQST = 256 +; libsrc/etherip.pla: 0100: const ARP_REPLY = $0200 // BE format + ; ARP_REPLY = 512 +; libsrc/etherip.pla: 0101: struc t_arp +; libsrc/etherip.pla: 0102: word arp_hw + ; arp_hw = 0 +; libsrc/etherip.pla: 0103: word arp_prot + ; arp_prot = 2 +; libsrc/etherip.pla: 0104: byte arp_hlen + ; arp_hlen = 4 +; libsrc/etherip.pla: 0105: byte arp_plen + ; arp_plen = 5 +; libsrc/etherip.pla: 0106: word arp_op + ; arp_op = 6 +; libsrc/etherip.pla: 0107: byte[MAC_SIZE] arp_senderha + ; arp_senderha = 8 +; libsrc/etherip.pla: 0108: byte[IP4ADR_SIZE] arp_senderip + ; arp_senderip = 14 +; libsrc/etherip.pla: 0109: byte[MAC_SIZE] arp_targha + ; arp_targha = 18 +; libsrc/etherip.pla: 0110: byte[IP4ADR_SIZE] arp_targip + ; arp_targip = 24 +; libsrc/etherip.pla: 0111: end + ; t_arp = 28 +; libsrc/etherip.pla: 0112: const t_earp = t_ethrhdr+t_arp + ; t_earp = 42 +; libsrc/etherip.pla: 0113: // +; libsrc/etherip.pla: 0114: // Pre-configured Ethernet header +; libsrc/etherip.pla: 0115: // +; libsrc/etherip.pla: 0116: byte[] eFrame +_D030 ; eFrame +; libsrc/etherip.pla: 0117: // +; libsrc/etherip.pla: 0118: // Destination MAC address +; libsrc/etherip.pla: 0119: // +; libsrc/etherip.pla: 0120: byte[MAC_SIZE] dstMAC +_D031 !FILL 6 ; dstMAC +; libsrc/etherip.pla: 0121: // +; libsrc/etherip.pla: 0122: // My MAC address +; libsrc/etherip.pla: 0123: // +; libsrc/etherip.pla: 0124: byte[MAC_SIZE] myMAC +_D032 !FILL 6 ; myMAC +; libsrc/etherip.pla: 0125: // +; libsrc/etherip.pla: 0126: // Ethernet payload +; libsrc/etherip.pla: 0127: // +; libsrc/etherip.pla: 0128: word ePayload = PAYLOAD_ARP +_D033 ; ePayload = PAYLOAD_ARP + !WORD $0608 +; libsrc/etherip.pla: 0129: // +; libsrc/etherip.pla: 0130: // Pre-configured ARP packet - MUST follow ethernet header! +; libsrc/etherip.pla: 0131: // +; libsrc/etherip.pla: 0132: word ARP = HW_ETHER // HW TYPE +_D034 ; ARP = HW_ETHER // HW TYPE + !WORD $0100 +; libsrc/etherip.pla: 0133: word = ARP_PROTO // PROTO TYPE + !WORD $0008 +; libsrc/etherip.pla: 0134: byte = MAC_SIZE // HLEN + !BYTE $06 +; libsrc/etherip.pla: 0135: byte = IP4ADR_SIZE // PLEN + !BYTE $04 +; libsrc/etherip.pla: 0136: word opARP // OP +_D035 !FILL 2 ; opARP // OP +; libsrc/etherip.pla: 0137: export byte[MAC_SIZE] localha +_D036 !FILL 6 ; localha +; libsrc/etherip.pla: 0138: export byte[IP4ADR_SIZE] localip +_D037 !FILL 4 ; localip +; libsrc/etherip.pla: 0139: byte[MAC_SIZE] remoteha +_D038 !FILL 6 ; remoteha +; libsrc/etherip.pla: 0140: byte[IP4ADR_SIZE] remoteip +_D039 !FILL 4 ; remoteip +; libsrc/etherip.pla: 0141: // +; libsrc/etherip.pla: 0142: // Local network parameters +; libsrc/etherip.pla: 0143: // +; libsrc/etherip.pla: 0144: byte[IP4ADR_SIZE] netmask +_D040 !FILL 4 ; netmask +; libsrc/etherip.pla: 0145: byte[IP4ADR_SIZE] subnet +_D041 !FILL 4 ; subnet +; libsrc/etherip.pla: 0146: byte[IP4ADR_SIZE] gateway +_D042 !FILL 4 ; gateway +; libsrc/etherip.pla: 0147: const MAX_UDP_NOTIFIES = 4 + ; MAX_UDP_NOTIFIES = 4 +; libsrc/etherip.pla: 0148: const MAX_TCP_NOTIFIES = 4 + ; MAX_TCP_NOTIFIES = 4 +; libsrc/etherip.pla: 0149: // +; libsrc/etherip.pla: 0150: // Notify callbacks +; libsrc/etherip.pla: 0151: // +; libsrc/etherip.pla: 0152: struc t_notify +; libsrc/etherip.pla: 0153: word notify_port + ; notify_port = 0 +; libsrc/etherip.pla: 0154: word notify_func + ; notify_func = 2 +; libsrc/etherip.pla: 0155: word notify_parm + ; notify_parm = 4 +; libsrc/etherip.pla: 0156: end + ; t_notify = 6 +; libsrc/etherip.pla: 0157: byte[t_notify] portsUDP[MAX_UDP_NOTIFIES] +_D043 !FILL 24 ; portsUDP[MAX_UDP_NOTIFIES] +; libsrc/etherip.pla: 0158: byte[t_notify] portsTCP[MAX_TCP_NOTIFIES] +_D044 !FILL 24 ; portsTCP[MAX_TCP_NOTIFIES] +; libsrc/etherip.pla: 0159: // +; libsrc/etherip.pla: 0160: // Service ICMP hook +; libsrc/etherip.pla: 0161: // +; libsrc/etherip.pla: 0162: export word hookICMP +_D045 !FILL 2 ; hookICMP +; libsrc/etherip.pla: 0163: // +; libsrc/etherip.pla: 0164: // Ethernet driver entrypoints +; libsrc/etherip.pla: 0165: // +; libsrc/etherip.pla: 0166: word setFrameLen, writeFrame, getFrameLen, readFrame +_D046 !FILL 2 ; setFrameLen, writeFrame, getFrameLen, readFrame +_D047 !FILL 2 ; writeFrame, getFrameLen, readFrame +_D048 !FILL 2 ; getFrameLen, readFrame +_D049 !FILL 2 ; readFrame +; libsrc/etherip.pla: 0167: // +; libsrc/etherip.pla: 0168: // Defines for ASM routines +; libsrc/etherip.pla: 0169: // +; libsrc/etherip.pla: 0170: asm equates +_A000 ; equates() +; libsrc/etherip.pla: 0171: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/etherip.pla: 0172: end +; libsrc/etherip.pla: 0173: // +; libsrc/etherip.pla: 0174: // Swap bytes in word +; libsrc/etherip.pla: 0175: // +; libsrc/etherip.pla: 0176: asm swab(val) +_A001 ; swab() +; libsrc/etherip.pla: 0177: LDA ESTKL,X + LDA ESTKL,X +; libsrc/etherip.pla: 0178: LDY ESTKH,X + LDY ESTKH,X +; libsrc/etherip.pla: 0179: STA ESTKH,X + STA ESTKH,X +; libsrc/etherip.pla: 0180: STY ESTKL,X + STY ESTKL,X +; libsrc/etherip.pla: 0181: RTS + RTS +; libsrc/etherip.pla: 0182: end +; libsrc/etherip.pla: 0183: // +; libsrc/etherip.pla: 0184: // 1'S COMPLIMENT SUM BE format +; libsrc/etherip.pla: 0185: // sum1(PREVSUM, BUF, LEN) +; libsrc/etherip.pla: 0186: // +; libsrc/etherip.pla: 0187: asm sum1(prevsum, buf, len) +_A002 ; sum1() +; libsrc/etherip.pla: 0188: LDY #$00 + LDY #$00 +; libsrc/etherip.pla: 0189: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/etherip.pla: 0190: STA SRCL + STA SRCL +; libsrc/etherip.pla: 0191: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/etherip.pla: 0192: STA SRCH + STA SRCH +; libsrc/etherip.pla: 0193: LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN + LSR ESTKH,X ; CONVERT BYTE LEN TO WORD LEN +; libsrc/etherip.pla: 0194: LDA ESTKL,X + LDA ESTKL,X +; libsrc/etherip.pla: 0195: ROR + ROR +; libsrc/etherip.pla: 0196: ADC #$00 + ADC #$00 +; libsrc/etherip.pla: 0197: STA ESTKL,X + STA ESTKL,X +; libsrc/etherip.pla: 0198: BEQ + + BEQ + +; libsrc/etherip.pla: 0199: !BYTE $A9 + !BYTE $A9 +; libsrc/etherip.pla: 0200: - CLC +- CLC +; libsrc/etherip.pla: 0201: INC ESTKH,X + INC ESTKH,X +; libsrc/etherip.pla: 0202: + BCS - ++ BCS - +; libsrc/etherip.pla: 0203: CHKLP LDA (SRC),Y +CHKLP LDA (SRC),Y +; libsrc/etherip.pla: 0204: PHA + PHA +; libsrc/etherip.pla: 0205: INY + INY +; libsrc/etherip.pla: 0206: BNE + + BNE + +; libsrc/etherip.pla: 0207: INC SRCH + INC SRCH +; libsrc/etherip.pla: 0208: + LDA (SRC),Y ++ LDA (SRC),Y +; libsrc/etherip.pla: 0209: ADC ESTKH+2,X + ADC ESTKH+2,X +; libsrc/etherip.pla: 0210: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/etherip.pla: 0211: PLA + PLA +; libsrc/etherip.pla: 0212: ADC ESTKL+2,X + ADC ESTKL+2,X +; libsrc/etherip.pla: 0213: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/etherip.pla: 0214: INY + INY +; libsrc/etherip.pla: 0215: BNE + + BNE + +; libsrc/etherip.pla: 0216: INC SRCH + INC SRCH +; libsrc/etherip.pla: 0217: + DEC ESTKL,X ++ DEC ESTKL,X +; libsrc/etherip.pla: 0218: BNE CHKLP + BNE CHKLP +; libsrc/etherip.pla: 0219: DEC ESTKH,X + DEC ESTKH,X +; libsrc/etherip.pla: 0220: BNE CHKLP + BNE CHKLP +; libsrc/etherip.pla: 0221: BCC + + BCC + +; libsrc/etherip.pla: 0222: - INC ESTKH+2,X +- INC ESTKH+2,X +; libsrc/etherip.pla: 0223: BNE + + BNE + +; libsrc/etherip.pla: 0224: INC ESTKL+2,X + INC ESTKL+2,X +; libsrc/etherip.pla: 0225: BEQ - + BEQ - +; libsrc/etherip.pla: 0226: + INX ++ INX +; libsrc/etherip.pla: 0227: INX + INX +; libsrc/etherip.pla: 0228: RTS + RTS +; libsrc/etherip.pla: 0229: end +; libsrc/etherip.pla: 0230: // +; libsrc/etherip.pla: 0231: // Send IP datagram +; libsrc/etherip.pla: 0232: // +; libsrc/etherip.pla: 0233: def etherSendIP(ipdst, proto, seglist, size) +_SUBSEG ; BYTECODE STARTS + ; ipdst -> [0] + ; proto -> [2] + ; seglist -> [4] + ; size -> [6] +_C000 ; etherSendIP() +; libsrc/etherip.pla: 0234: byte[t_iphdr] hdr + ; hdr -> [8] +; libsrc/etherip.pla: 0235: byte retry + ; retry -> [28] +; libsrc/etherip.pla: 0236: word timeout + ; timeout -> [29] +; libsrc/etherip.pla: 0237: +; libsrc/etherip.pla: 0238: hdr.ip_vers_hlen = $45 + !BYTE $58,$1F,$04 ; ENTER 31,4 +; libsrc/etherip.pla: 0239: hdr.ip_service = 0 +; libsrc/etherip.pla: 0240: hdr:ip_length = swab(t_iphdr + size) +; libsrc/etherip.pla: 0241: hdr:ip_id = 0 +; libsrc/etherip.pla: 0242: hdr:ip_flags_fragofst = 0 //$40 // Don't fragment +; libsrc/etherip.pla: 0243: hdr.ip_ttl = 10 // Is this reasonable? +; libsrc/etherip.pla: 0244: hdr.ip_proto = proto +; libsrc/etherip.pla: 0245: hdr:ip_chksm = 0 +; libsrc/etherip.pla: 0246: memcpy(@hdr.ip_src, @localip, IP4ADR_SIZE) +; libsrc/etherip.pla: 0247: if !ipdst // IP_BROADCAST +; libsrc/etherip.pla: 0248: memset(@hdr.ip_dst, IP_BROADCAST, IP4ADR_SIZE) +; libsrc/etherip.pla: 0249: memset(@dstMAC, MAC_BROADCAST, MAC_SIZE) +; libsrc/etherip.pla: 0250: else + !BYTE $2A,$45 ; CB 69 + !BYTE $74,$08 ; SLB [8] + !BYTE $00 ; CN 0 + !BYTE $74,$09 ; SLB [9] + !BYTE $2A,$14 ; CB 20 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $54 ; CALL _A001 +_F000 !WORD _A001 + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $14 ; CN 10 + !BYTE $74,$10 ; SLB [16] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$11 ; SLB [17] + !BYTE $00 ; CN 0 + !BYTE $76,$12 ; SLW [18] + !BYTE $28,$14 ; LLA [20] + !BYTE $26 ; LA _D037+0 +_F001 !WORD _D037+0 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F002 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* + !BYTE $28,$18 ; LLA [24] + !BYTE $20 ; MINUS ONE + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X017 +_F003 !WORD 0 + !BYTE $26 ; LA _D031+0 +_F004 !WORD _D031+0 + !BYTE $20 ; MINUS ONE + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X017 +_F005 !WORD 0 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B001 +; libsrc/etherip.pla: 0251: if ipdst=>0 & netmask:0 <> subnet:0 or ipdst=>2 & netmask:2 <> subnet:2 +; libsrc/etherip.pla: 0252: ipdst = @gateway // External net destination +; libsrc/etherip.pla: 0253: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $6A ; LAW _D040+0 +_F006 !WORD _D040+0 + !BYTE $94 ; AND + !BYTE $6A ; LAW _D041+0 +_F007 !WORD _D041+0 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B003 + !WORD _B003-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D040+2 +_F008 !WORD _D040+2 + !BYTE $94 ; AND + !BYTE $6A ; LAW _D041+2 +_F009 !WORD _D041+2 + !BYTE $42 ; ISNE +_B003 + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $26 ; LA _D042+0 +_F010 !WORD _D042+0 + !BYTE $76,$00 ; SLW [0] +_B004 +_B005 +; libsrc/etherip.pla: 0254: memcpy(@hdr.ip_dst, ipdst, IP4ADR_SIZE) +; libsrc/etherip.pla: 0255: retry = 0 +; libsrc/etherip.pla: 0256: while hdr:ip_dst:0 <> remoteip:0 and hdr:ip_dst:2 <> remoteip:2 + !BYTE $28,$18 ; LLA [24] + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F011 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $74,$1C ; SLB [28] + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B006 +; libsrc/etherip.pla: 0257: if retry >= 3 +; libsrc/etherip.pla: 0258: return -1 // ARP failed + !BYTE $64,$1C ; LLB [28] + !BYTE $06 ; CN 3 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$1F ; LEAVE 31 +; libsrc/etherip.pla: 0259: fin +_B010 +_B011 +; libsrc/etherip.pla: 0260: retry++ + !BYTE $64,$1C ; LLB [28] + !BYTE $8C ; INCR +; libsrc/etherip.pla: 0261: memset(@dstMAC, MAC_BROADCAST, MAC_SIZE) +; libsrc/etherip.pla: 0262: memset(@remoteha, 0, MAC_SIZE) +; libsrc/etherip.pla: 0263: memcpy(@remoteip, @hdr.ip_dst, IP4ADR_SIZE) +; libsrc/etherip.pla: 0264: ePayload = PAYLOAD_ARP +; libsrc/etherip.pla: 0265: opARP = ARP_REQST +; libsrc/etherip.pla: 0266: setFrameLen(t_earp) +; libsrc/etherip.pla: 0267: writeFrame(@eFrame, t_earp) +; libsrc/etherip.pla: 0268: for timeout = 1000 downto 0 + !BYTE $74,$1C ; SLB [28] + !BYTE $26 ; LA _D031+0 +_F012 !WORD _D031+0 + !BYTE $20 ; MINUS ONE + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X017 +_F013 !WORD 0 + !BYTE $26 ; LA _D038+0 +_F014 !WORD _D038+0 + !BYTE $00 ; CN 0 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X017 +_F015 !WORD 0 + !BYTE $26 ; LA _D039+0 +_F016 !WORD _D039+0 + !BYTE $28,$18 ; LLA [24] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F017 !WORD 0 + !BYTE $2C,$08,$06 ; CW 1544 + !BYTE $7A ; SAW _D033+0 +_F018 !WORD _D033+0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $7A ; SAW _D035+0 +_F019 !WORD _D035+0 + !BYTE $2A,$2A ; CB 42 + !BYTE $6A ; LAW _D046+0 +_F020 !WORD _D046+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D030+0 +_F021 !WORD _D030+0 + !BYTE $2A,$2A ; CB 42 + !BYTE $6A ; LAW _D047+0 +_F022 !WORD _D047+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $2C,$E8,$03 ; CW 1000 +_B013 + !BYTE $6E,$1D ; DLW [29] +; libsrc/etherip.pla: 0269: etherServiceIP +; libsrc/etherip.pla: 0270: if remoteha:0 | remoteha:2 | remoteha:4 +; libsrc/etherip.pla: 0271: break + !BYTE $54 ; CALL _P000 +_F023 !WORD _P000 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D038+0 +_F024 !WORD _D038+0 + !BYTE $6A ; LAW _D038+2 +_F025 !WORD _D038+2 + !BYTE $96 ; OR + !BYTE $6A ; LAW _D038+4 +_F026 !WORD _D038+4 + !BYTE $96 ; OR + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +; libsrc/etherip.pla: 0272: fin +_B015 +_B016 +; libsrc/etherip.pla: 0273: next +_B014 + !BYTE $A8 ; DECBRGE _B013 + !WORD _B013-* +_B012 + !BYTE $76,$1D ; SLW [29] + !BYTE $30 ; DROP +; libsrc/etherip.pla: 0274: loop +_B008 + !BYTE $66,$18 ; LLW [24] + !BYTE $6A ; LAW _D039+0 +_F027 !WORD _D039+0 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B009 + !WORD _B009-* + !BYTE $28,$18 ; LLA [24] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D039+2 +_F028 !WORD _D039+2 + !BYTE $42 ; ISNE +_B009 + !BYTE $4E ; BRTRU _B006 + !WORD _B006-* +_B007 +; libsrc/etherip.pla: 0275: memcpy(@dstMAC, @remoteha, MAC_SIZE) +; libsrc/etherip.pla: 0276: fin + !BYTE $26 ; LA _D031+0 +_F029 !WORD _D031+0 + !BYTE $26 ; LA _D038+0 +_F030 !WORD _D038+0 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X018 +_F031 !WORD 0 +_B002 +; libsrc/etherip.pla: 0277: // +; libsrc/etherip.pla: 0278: // Calculate checksum +; libsrc/etherip.pla: 0279: // +; libsrc/etherip.pla: 0280: hdr:ip_chksm = sum1(0, @hdr, t_iphdr) ^ $FFFF +; libsrc/etherip.pla: 0281: // +; libsrc/etherip.pla: 0282: // set the ethernet payload and frame length +; libsrc/etherip.pla: 0283: // +; libsrc/etherip.pla: 0284: ePayload = PAYLOAD_IP +; libsrc/etherip.pla: 0285: setFrameLen(t_ethriphdr + size) +; libsrc/etherip.pla: 0286: // +; libsrc/etherip.pla: 0287: // Write the ethernet header +; libsrc/etherip.pla: 0288: // +; libsrc/etherip.pla: 0289: writeFrame(@eFrame, t_ethrhdr) +; libsrc/etherip.pla: 0290: // +; libsrc/etherip.pla: 0291: // Write the IP header +; libsrc/etherip.pla: 0292: // +; libsrc/etherip.pla: 0293: writeFrame(@hdr, t_iphdr) +; libsrc/etherip.pla: 0294: // +; libsrc/etherip.pla: 0295: // Write the remaining segments +; libsrc/etherip.pla: 0296: // +; libsrc/etherip.pla: 0297: while size > 0 + !BYTE $00 ; CN 0 + !BYTE $28,$08 ; LLA [8] + !BYTE $2A,$14 ; CB 20 + !BYTE $54 ; CALL _A002 +_F032 !WORD _A002 + !BYTE $20 ; MINUS ONE + !BYTE $98 ; XOR + !BYTE $76,$12 ; SLW [18] + !BYTE $10 ; CN 8 + !BYTE $7A ; SAW _D033+0 +_F033 !WORD _D033+0 + !BYTE $2A,$22 ; CB 34 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $6A ; LAW _D046+0 +_F034 !WORD _D046+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D030+0 +_F035 !WORD _D030+0 + !BYTE $1C ; CN 14 + !BYTE $6A ; LAW _D047+0 +_F036 !WORD _D047+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$08 ; LLA [8] + !BYTE $2A,$14 ; CB 20 + !BYTE $6A ; LAW _D047+0 +_F037 !WORD _D047+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B017 +; libsrc/etherip.pla: 0298: writeFrame(seglist=>seg_buf, seglist=>seg_len) +; libsrc/etherip.pla: 0299: size = size - seglist=>seg_len +; libsrc/etherip.pla: 0300: seglist = seglist + t_segment +; libsrc/etherip.pla: 0301: loop + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D047+0 +_F038 !WORD _D047+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$04 ; SLW [4] +_B019 + !BYTE $66,$06 ; LLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B017 + !WORD _B017-* +_B018 +; libsrc/etherip.pla: 0302: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$1F ; LEAVE 31 +; libsrc/etherip.pla: 0303: end +; libsrc/etherip.pla: 0304: // +; libsrc/etherip.pla: 0305: // Send UDP datagram +; libsrc/etherip.pla: 0306: // +; libsrc/etherip.pla: 0307: def etherSendUDP(port, ipdst, portdst, data, len) + ; port -> [0] + ; ipdst -> [2] + ; portdst -> [4] + ; data -> [6] + ; len -> [8] +_C001 ; etherSendUDP() +; libsrc/etherip.pla: 0308: word[8] seglist // list of data and header segments + ; seglist -> [10] +; libsrc/etherip.pla: 0309: byte[t_udphdr] hdr + ; hdr -> [26] +; libsrc/etherip.pla: 0310: +; libsrc/etherip.pla: 0311: hdr:udp_src = swab(port=>notify_port) + !BYTE $58,$22,$05 ; ENTER 34,5 +; libsrc/etherip.pla: 0312: hdr:udp_dst = swab(portdst) +; libsrc/etherip.pla: 0313: hdr:udp_len = swab(t_udphdr + len) +; libsrc/etherip.pla: 0314: hdr:udp_chksm = 0 +; libsrc/etherip.pla: 0315: seglist:0:seg_buf = @hdr +; libsrc/etherip.pla: 0316: seglist:0:seg_len = t_udphdr +; libsrc/etherip.pla: 0317: seglist:4:seg_buf = data +; libsrc/etherip.pla: 0318: seglist:4:seg_len = len +; libsrc/etherip.pla: 0319: return etherSendIP(ipdst, IP_PROTO_UDP, @seglist, t_udphdr + len) + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F039 !WORD _A001 + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A001 +_F040 !WORD _A001 + !BYTE $76,$1C ; SLW [28] + !BYTE $10 ; CN 8 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _A001 +_F041 !WORD _A001 + !BYTE $76,$1E ; SLW [30] + !BYTE $00 ; CN 0 + !BYTE $76,$20 ; SLW [32] + !BYTE $28,$1A ; LLA [26] + !BYTE $76,$0A ; SLW [10] + !BYTE $10 ; CN 8 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $28,$0E ; LLA [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$11 ; CB 17 + !BYTE $28,$0A ; LLA [10] + !BYTE $10 ; CN 8 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _C000 +_F042 !WORD _C000 + !BYTE $5A,$22 ; LEAVE 34 +; libsrc/etherip.pla: 0320: end +; libsrc/etherip.pla: 0321: // +; libsrc/etherip.pla: 0322: // Notify on UDP datagram received +; libsrc/etherip.pla: 0323: // +; libsrc/etherip.pla: 0324: def etherOpenUDP(localport, callback, param) + ; localport -> [0] + ; callback -> [2] + ; param -> [4] +_C002 ; etherOpenUDP() +; libsrc/etherip.pla: 0325: word port + ; port -> [6] +; libsrc/etherip.pla: 0326: byte i + ; i -> [8] +; libsrc/etherip.pla: 0327: +; libsrc/etherip.pla: 0328: if !localport; return -1; fin // invalid port + !BYTE $58,$09,$03 ; ENTER 9,3 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B020 + !WORD _B020-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$09 ; LEAVE 9 +_B020 +_B021 +; libsrc/etherip.pla: 0329: // +; libsrc/etherip.pla: 0330: // Look for an existing notification on localport +; libsrc/etherip.pla: 0331: // +; libsrc/etherip.pla: 0332: port = @portsUDP +; libsrc/etherip.pla: 0333: for i = 1 to MAX_UDP_NOTIFIES + !BYTE $26 ; LA _D043+0 +_F043 !WORD _D043+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B023 + !BYTE $6C,$08 ; DLB [8] +; libsrc/etherip.pla: 0334: if port=>notify_port == localport +; libsrc/etherip.pla: 0335: port=>notify_func = callback +; libsrc/etherip.pla: 0336: port=>notify_parm = param +; libsrc/etherip.pla: 0337: return port + !BYTE $66,$06 ; LLW [6] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $24 ; BRNE _B025 + !WORD _B025-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $32 ; DROP2 + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/etherip.pla: 0338: fin +_B025 +_B026 +; libsrc/etherip.pla: 0339: port = port + t_notify +; libsrc/etherip.pla: 0340: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$06 ; SLW [6] +_B024 + !BYTE $A4 ; INCBRLE _B023 + !WORD _B023-* +_B022 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/etherip.pla: 0341: // +; libsrc/etherip.pla: 0342: // Add notification on localport if room +; libsrc/etherip.pla: 0343: // +; libsrc/etherip.pla: 0344: port = @portsUDP +; libsrc/etherip.pla: 0345: for i = 1 to MAX_UDP_NOTIFIES + !BYTE $26 ; LA _D043+0 +_F044 !WORD _D043+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B028 + !BYTE $6C,$08 ; DLB [8] +; libsrc/etherip.pla: 0346: if !port=>notify_port +; libsrc/etherip.pla: 0347: port=>notify_port = localport +; libsrc/etherip.pla: 0348: port=>notify_func = callback +; libsrc/etherip.pla: 0349: port=>notify_parm = param +; libsrc/etherip.pla: 0350: return port + !BYTE $66,$06 ; LLW [6] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B030 + !WORD _B030-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $32 ; DROP2 + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/etherip.pla: 0351: fin +_B030 +_B031 +; libsrc/etherip.pla: 0352: port = port + t_notify +; libsrc/etherip.pla: 0353: next + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$06 ; SLW [6] +_B029 + !BYTE $A4 ; INCBRLE _B028 + !WORD _B028-* +_B027 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; libsrc/etherip.pla: 0354: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; libsrc/etherip.pla: 0355: end +; libsrc/etherip.pla: 0356: // +; libsrc/etherip.pla: 0357: // Clear notify on UDP port +; libsrc/etherip.pla: 0358: // +; libsrc/etherip.pla: 0359: def etherCloseUDP(port) + ; port -> [0] +_C003 ; etherCloseUDP() +; libsrc/etherip.pla: 0360: word port + ; port -> [2] +; libsrc/etherip.pla: 0361: byte i + ; i -> [4] +; libsrc/etherip.pla: 0362: +; libsrc/etherip.pla: 0363: if isuge(port, @portsUDP) and isult(port, @portsUDP + MAX_UDP_NOTIFIES * t_notify) + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/etherip.pla: 0364: // +; libsrc/etherip.pla: 0365: // Clear notiications on this port +; libsrc/etherip.pla: 0366: // +; libsrc/etherip.pla: 0367: if port=>notify_port +; libsrc/etherip.pla: 0368: port=>notify_port = 0 +; libsrc/etherip.pla: 0369: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+0 +_F045 !WORD _D043+0 + !BYTE $54 ; CALL _X025 +_F046 !WORD 0 + !BYTE $AC ; BRAND _B032 + !WORD _B032-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+24 +_F047 !WORD _D043+24 + !BYTE $54 ; CALL _X026 +_F048 !WORD 0 +_B032 + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B035 + !WORD _B035-* + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/etherip.pla: 0370: fin +_B035 +_B036 +; libsrc/etherip.pla: 0371: fin +_B033 +_B034 +; libsrc/etherip.pla: 0372: // +; libsrc/etherip.pla: 0373: // Invalid port +; libsrc/etherip.pla: 0374: // +; libsrc/etherip.pla: 0375: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/etherip.pla: 0376: end +; libsrc/etherip.pla: 0377: // +; libsrc/etherip.pla: 0378: // Open TCP socket in SERVER mode +; libsrc/etherip.pla: 0379: // +; libsrc/etherip.pla: 0380: def etherListenTCP(lclport, callback, param) + ; lclport -> [0] + ; callback -> [2] + ; param -> [4] +_C004 ; etherListenTCP() +; libsrc/etherip.pla: 0381: puts("TCP/IP not yet implented for this hardware.\n") + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $2E ; CS + !BYTE $2C + !BYTE $54,$43,$50,$2F,$49,$50,$20,$6E + !BYTE $6F,$74,$20,$79,$65,$74,$20,$69 + !BYTE $6D,$70,$6C,$65,$6E,$74,$65,$64 + !BYTE $20,$66,$6F,$72,$20,$74,$68,$69 + !BYTE $73,$20,$68,$61,$72,$64,$77,$61 + !BYTE $72,$65,$2E,$0D + !BYTE $54 ; CALL _X004 +_F049 !WORD 0 +; libsrc/etherip.pla: 0382: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/etherip.pla: 0383: end +; libsrc/etherip.pla: 0384: // +; libsrc/etherip.pla: 0385: // Open TCP socket in CLIENT mode +; libsrc/etherip.pla: 0386: // +; libsrc/etherip.pla: 0387: def etherConnectTCP(remip, remport, lclport, callback, param) + ; remip -> [0] + ; remport -> [2] + ; lclport -> [4] + ; callback -> [6] + ; param -> [8] +_C005 ; etherConnectTCP() +; libsrc/etherip.pla: 0388: puts("TCP/IP not yet implented for this hardware.\n") + !BYTE $58,$0A,$05 ; ENTER 10,5 + !BYTE $2E ; CS + !BYTE $2C + !BYTE $54,$43,$50,$2F,$49,$50,$20,$6E + !BYTE $6F,$74,$20,$79,$65,$74,$20,$69 + !BYTE $6D,$70,$6C,$65,$6E,$74,$65,$64 + !BYTE $20,$66,$6F,$72,$20,$74,$68,$69 + !BYTE $73,$20,$68,$61,$72,$64,$77,$61 + !BYTE $72,$65,$2E,$0D + !BYTE $54 ; CALL _X004 +_F050 !WORD 0 +; libsrc/etherip.pla: 0389: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/etherip.pla: 0390: end +; libsrc/etherip.pla: 0391: // +; libsrc/etherip.pla: 0392: // Write to TCP socket +; libsrc/etherip.pla: 0393: // +; libsrc/etherip.pla: 0394: def etherSendTCP(wiz, data, len) + ; wiz -> [0] + ; data -> [2] + ; len -> [4] +_C006 ; etherSendTCP() +; libsrc/etherip.pla: 0395: return 0 + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/etherip.pla: 0396: end +; libsrc/etherip.pla: 0397: // +; libsrc/etherip.pla: 0398: // Close TCP socket +; libsrc/etherip.pla: 0399: // +; libsrc/etherip.pla: 0400: def etherCloseTCP(wiz) + ; wiz -> [0] +_C007 ; etherCloseTCP() +; libsrc/etherip.pla: 0401: return 0 + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/etherip.pla: 0402: end +; libsrc/etherip.pla: 0403: // +; libsrc/etherip.pla: 0404: // Update notify callback +; libsrc/etherip.pla: 0405: // +; libsrc/etherip.pla: 0406: def etherSetCallback(port, callback) + ; port -> [0] + ; callback -> [2] +_C008 ; etherSetCallback() +; libsrc/etherip.pla: 0407: if isuge(port, @portsUDP) and isult(port, @portsUDP + MAX_UDP_NOTIFIES * t_notify) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/etherip.pla: 0408: // +; libsrc/etherip.pla: 0409: // Update callback on this port +; libsrc/etherip.pla: 0410: // +; libsrc/etherip.pla: 0411: if port=>notify_port +; libsrc/etherip.pla: 0412: port=>notify_func = callback +; libsrc/etherip.pla: 0413: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+0 +_F051 !WORD _D043+0 + !BYTE $54 ; CALL _X025 +_F052 !WORD 0 + !BYTE $AC ; BRAND _B037 + !WORD _B037-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+24 +_F053 !WORD _D043+24 + !BYTE $54 ; CALL _X026 +_F054 !WORD 0 +_B037 + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/etherip.pla: 0414: fin +_B040 +_B041 +; libsrc/etherip.pla: 0415: fin +_B038 +_B039 +; libsrc/etherip.pla: 0416: // +; libsrc/etherip.pla: 0417: // Invalid port +; libsrc/etherip.pla: 0418: // +; libsrc/etherip.pla: 0419: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/etherip.pla: 0420: end +; libsrc/etherip.pla: 0421: // +; libsrc/etherip.pla: 0422: // Update notify param +; libsrc/etherip.pla: 0423: // +; libsrc/etherip.pla: 0424: def etherSetParam(port, param) + ; port -> [0] + ; param -> [2] +_C009 ; etherSetParam() +; libsrc/etherip.pla: 0425: if isuge(port, @portsUDP) and isult(port, @portsUDP + MAX_UDP_NOTIFIES * t_notify) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/etherip.pla: 0426: // +; libsrc/etherip.pla: 0427: // Update callback on this port +; libsrc/etherip.pla: 0428: // +; libsrc/etherip.pla: 0429: if port=>notify_port +; libsrc/etherip.pla: 0430: port=>notify_parm = param +; libsrc/etherip.pla: 0431: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+0 +_F055 !WORD _D043+0 + !BYTE $54 ; CALL _X025 +_F056 !WORD 0 + !BYTE $AC ; BRAND _B042 + !WORD _B042-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+24 +_F057 !WORD _D043+24 + !BYTE $54 ; CALL _X026 +_F058 !WORD 0 +_B042 + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B045 + !WORD _B045-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/etherip.pla: 0432: fin +_B045 +_B046 +; libsrc/etherip.pla: 0433: fin +_B043 +_B044 +; libsrc/etherip.pla: 0434: // +; libsrc/etherip.pla: 0435: // Invalid port +; libsrc/etherip.pla: 0436: // +; libsrc/etherip.pla: 0437: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/etherip.pla: 0438: end +; libsrc/etherip.pla: 0439: // +; libsrc/etherip.pla: 0440: // Service incoming packets +; libsrc/etherip.pla: 0441: // +; libsrc/etherip.pla: 0442: def etherServiceIP +_P000 ; etherServiceIP() +_C010 ; etherServiceIP() +; libsrc/etherip.pla: 0443: word rxsize, rxpacket, rxptr + ; rxsize -> [0] + ; rxpacket -> [2] + ; rxptr -> [4] +; libsrc/etherip.pla: 0444: word iphdr, opt, optlen, port, lclport, remport + ; iphdr -> [6] + ; opt -> [8] + ; optlen -> [10] + ; port -> [12] + ; lclport -> [14] + ; remport -> [16] +; libsrc/etherip.pla: 0445: byte i, echolen + ; i -> [18] + ; echolen -> [19] +; libsrc/etherip.pla: 0446: word[4] seglist + ; seglist -> [20] +; libsrc/etherip.pla: 0447: byte[128] echo_reply + ; echo_reply -> [28] +; libsrc/etherip.pla: 0448: +; libsrc/etherip.pla: 0449: // +; libsrc/etherip.pla: 0450: // Check for received packet +; libsrc/etherip.pla: 0451: // +; libsrc/etherip.pla: 0452: rxsize = getFrameLen() + !BYTE $58,$9C,$00 ; ENTER 156,0 +; libsrc/etherip.pla: 0453: if rxsize +; libsrc/etherip.pla: 0454: // +; libsrc/etherip.pla: 0455: // Read the entire packet into memory +; libsrc/etherip.pla: 0456: // +; libsrc/etherip.pla: 0457: rxpacket = heapalloc(rxsize) +; libsrc/etherip.pla: 0458: readFrame(rxpacket, rxsize) +; libsrc/etherip.pla: 0459: rxptr = rxpacket + t_ethrhdr +; libsrc/etherip.pla: 0460: rxsize = rxsize - t_ethrhdr +; libsrc/etherip.pla: 0461: // +; libsrc/etherip.pla: 0462: // What kind of packet is it? +; libsrc/etherip.pla: 0463: // +; libsrc/etherip.pla: 0464: when rxpacket=>ethr_payload + !BYTE $6A ; LAW _D048+0 +_F059 !WORD _D048+0 + !BYTE $56 ; ICAL + !BYTE $6E,$00 ; DLW [0] + !BYTE $4C ; BRFLS _B047 + !WORD _B047-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X014 +_F060 !WORD 0 + !BYTE $6E,$02 ; DLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D049+0 +_F061 !WORD _D049+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $3A,$0E ; SUBI 14 + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $62 ; LW + !BYTE $52 ; SEL + !WORD _B050-* +; libsrc/etherip.pla: 0465: is PAYLOAD_IP +_B051 +; libsrc/etherip.pla: 0466: iphdr = rxptr +; libsrc/etherip.pla: 0467: rxptr = rxptr + t_iphdr +; libsrc/etherip.pla: 0468: rxsize = rxsize - t_iphdr +; libsrc/etherip.pla: 0469: if iphdr->ip_vers_hlen <> $45 +; libsrc/etherip.pla: 0470: optlen = iphdr=>ip_vers_hlen +; libsrc/etherip.pla: 0471: if optlen & $F0 <> $40 +; libsrc/etherip.pla: 0472: // +; libsrc/etherip.pla: 0473: // Not IPv4, ignore +; libsrc/etherip.pla: 0474: // +; libsrc/etherip.pla: 0475: break + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$14 ; ADDI 20 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $3A,$14 ; SUBI 20 + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$45 ; CB 69 + !BYTE $22 ; BREQ _B052 + !WORD _B052-* + !BYTE $66,$06 ; LLW [6] + !BYTE $62 ; LW + !BYTE $6E,$0A ; DLW [10] + !BYTE $3C,$F0 ; ANDI 240 + !BYTE $2A,$40 ; CB 64 + !BYTE $22 ; BREQ _B054 + !WORD _B054-* + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +; libsrc/etherip.pla: 0476: fin +_B054 +_B055 +; libsrc/etherip.pla: 0477: optlen = (optlen & $0F) << 2 +; libsrc/etherip.pla: 0478: if optlen > t_iphdr +; libsrc/etherip.pla: 0479: // +; libsrc/etherip.pla: 0480: // Read the options and throw them on the ground! +; libsrc/etherip.pla: 0481: // +; libsrc/etherip.pla: 0482: rxptr = rxptr + (optlen - t_iphdr) +; libsrc/etherip.pla: 0483: rxsize = rxsize - (optlen - t_iphdr) +; libsrc/etherip.pla: 0484: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $04 ; CN 2 + !BYTE $9A ; SHL + !BYTE $6E,$0A ; DLW [10] + !BYTE $2A,$14 ; CB 20 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $3A,$14 ; SUBI 20 + !BYTE $82 ; ADD + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0A ; LLW [10] + !BYTE $3A,$14 ; SUBI 20 + !BYTE $84 ; SUB + !BYTE $76,$00 ; SLW [0] +_B056 +_B057 +; libsrc/etherip.pla: 0485: fin +_B052 +_B053 +; libsrc/etherip.pla: 0486: // +; libsrc/etherip.pla: 0487: // Filter valid destination address +; libsrc/etherip.pla: 0488: // +; libsrc/etherip.pla: 0489: if iphdr=>ip_dst:2 <> localip:2 // Yes, this is a little lazy +; libsrc/etherip.pla: 0490: if (iphdr=>ip_dst:0|netmask:0) & (iphdr=>ip_dst:2|netmask:2) <> IP_BROADCAST +; libsrc/etherip.pla: 0491: break + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D037+2 +_F062 !WORD _D037+2 + !BYTE $22 ; BREQ _B058 + !WORD _B058-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D040+0 +_F063 !WORD _D040+0 + !BYTE $96 ; OR + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D040+2 +_F064 !WORD _D040+2 + !BYTE $96 ; OR + !BYTE $94 ; AND + !BYTE $20 ; MINUS ONE + !BYTE $22 ; BREQ _B060 + !WORD _B060-* + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +; libsrc/etherip.pla: 0492: fin +_B060 +_B061 +; libsrc/etherip.pla: 0493: fin +_B058 +_B059 +; libsrc/etherip.pla: 0494: // +; libsrc/etherip.pla: 0495: // What kind of IP protocol is it? +; libsrc/etherip.pla: 0496: // +; libsrc/etherip.pla: 0497: when iphdr->ip_proto + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$09 ; ADDI 9 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B063-* +; libsrc/etherip.pla: 0498: is IP_PROTO_UDP +_B064 +; libsrc/etherip.pla: 0499: port = @portsUDP +; libsrc/etherip.pla: 0500: if port +; libsrc/etherip.pla: 0501: lclport = swab(rxptr=>udp_dst) +; libsrc/etherip.pla: 0502: for i = 1 to MAX_UDP_NOTIFIES + !BYTE $26 ; LA _D043+0 +_F065 !WORD _D043+0 + !BYTE $6E,$0C ; DLW [12] + !BYTE $4C ; BRFLS _B065 + !WORD _B065-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F066 !WORD _A001 + !BYTE $76,$0E ; SLW [14] + !BYTE $08 ; CN 4 + !BYTE $02 ; CN 1 +_B068 + !BYTE $6C,$12 ; DLB [18] +; libsrc/etherip.pla: 0503: if port=>notify_port == lclport +; libsrc/etherip.pla: 0504: port=>notify_func(@iphdr=>ip_src,swab(rxptr=>udp_src),rxptr+t_udphdr,swab(rxptr=>udp_len)-t_udphdr,port=>notify_parm) +; libsrc/etherip.pla: 0505: break + !BYTE $66,$0C ; LLW [12] + !BYTE $62 ; LW + !BYTE $66,$0E ; LLW [14] + !BYTE $24 ; BRNE _B070 + !WORD _B070-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F067 !WORD _A001 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F068 !WORD _A001 + !BYTE $3A,$08 ; SUBI 8 + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +; libsrc/etherip.pla: 0506: fin +_B070 +_B071 +; libsrc/etherip.pla: 0507: port = port + t_notify +; libsrc/etherip.pla: 0508: next + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$0C ; SLW [12] +_B069 + !BYTE $A4 ; INCBRLE _B068 + !WORD _B068-* +_B067 + !BYTE $74,$12 ; SLB [18] + !BYTE $30 ; DROP +; libsrc/etherip.pla: 0509: fin +_B065 +_B066 +; libsrc/etherip.pla: 0510: break + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +; libsrc/etherip.pla: 0511: is IP_PROTO_TCP +_B072 +; libsrc/etherip.pla: 0512: break + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +; libsrc/etherip.pla: 0513: is IP_PROTO_ICMP +_B073 +; libsrc/etherip.pla: 0514: // +; libsrc/etherip.pla: 0515: // Service ICMP packets +; libsrc/etherip.pla: 0516: // +; libsrc/etherip.pla: 0517: if rxptr->icmp_type == ICMP_ECHO_REQST +; libsrc/etherip.pla: 0518: if rxsize > 128 +; libsrc/etherip.pla: 0519: echolen = 128 +; libsrc/etherip.pla: 0520: else + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $24 ; BRNE _B074 + !WORD _B074-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$80 ; CB 128 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B076 + !WORD _B076-* + !BYTE $2A,$80 ; CB 128 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B077 + !WORD _B077-* +_B076 +; libsrc/etherip.pla: 0521: echolen = rxsize +; libsrc/etherip.pla: 0522: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$13 ; SLB [19] +_B077 +; libsrc/etherip.pla: 0523: memcpy(@echo_reply, rxptr, echolen) +; libsrc/etherip.pla: 0524: echo_reply.icmp_type = ICMP_ECHO_REPLY +; libsrc/etherip.pla: 0525: echo_reply:icmp_chksm = 0 +; libsrc/etherip.pla: 0526: seglist:seg_buf = @echo_reply +; libsrc/etherip.pla: 0527: seglist:seg_len = echolen +; libsrc/etherip.pla: 0528: etherSendIP(@iphdr=>ip_src, IP_PROTO_ICMP, @seglist, echolen) +; libsrc/etherip.pla: 0529: fin + !BYTE $28,$1C ; LLA [28] + !BYTE $66,$04 ; LLW [4] + !BYTE $64,$13 ; LLB [19] + !BYTE $54 ; CALL _X018 +_F069 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $74,$1C ; SLB [28] + !BYTE $00 ; CN 0 + !BYTE $76,$1E ; SLW [30] + !BYTE $28,$1C ; LLA [28] + !BYTE $76,$14 ; SLW [20] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $02 ; CN 1 + !BYTE $28,$14 ; LLA [20] + !BYTE $64,$13 ; LLB [19] + !BYTE $54 ; CALL _C000 +_F070 !WORD _C000 + !BYTE $30 ; DROP +_B074 +_B075 +; libsrc/etherip.pla: 0530: if hookICMP +; libsrc/etherip.pla: 0531: hookICMP(@iphdr=>ip_src, rxptr, rxsize) +; libsrc/etherip.pla: 0532: fin + !BYTE $6A ; LAW _D045+0 +_F071 !WORD _D045+0 + !BYTE $4C ; BRFLS _B078 + !WORD _B078-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D045+0 +_F072 !WORD _D045+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B078 +_B079 +; libsrc/etherip.pla: 0533: wend + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B063 + !BYTE $03 ; CASEBLOCK + !WORD $0001 + !WORD _B073-* + !WORD $0006 + !WORD _B072-* + !WORD $0011 + !WORD _B064-* +_B062 +; libsrc/etherip.pla: 0534: break + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +; libsrc/etherip.pla: 0535: is PAYLOAD_ARP +_B080 +; libsrc/etherip.pla: 0536: when rxptr=>arp_op + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $52 ; SEL + !WORD _B082-* +; libsrc/etherip.pla: 0537: is ARP_REPLY +_B083 +; libsrc/etherip.pla: 0538: // +; libsrc/etherip.pla: 0539: // Fill in ARP cache +; libsrc/etherip.pla: 0540: // +; libsrc/etherip.pla: 0541: memcpy(@remoteha, @rxptr=>arp_senderha, 10) // copy ha and ip +; libsrc/etherip.pla: 0542: break + !BYTE $26 ; LA _D038+0 +_F073 !WORD _D038+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F074 !WORD 0 + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; libsrc/etherip.pla: 0543: is ARP_REQST +_B084 +; libsrc/etherip.pla: 0544: // +; libsrc/etherip.pla: 0545: // Is this a request for me? +; libsrc/etherip.pla: 0546: // +; libsrc/etherip.pla: 0547: if rxptr=>arp_targip:0 == localip:0 and rxptr=>arp_targip:2 == localip:2 +; libsrc/etherip.pla: 0548: memcpy(@dstMAC, @rxptr=>arp_senderha, MAC_SIZE) +; libsrc/etherip.pla: 0549: memcpy(@remoteha, @rxptr=>arp_senderha, 10) // copy ha and ip +; libsrc/etherip.pla: 0550: ePayload = PAYLOAD_ARP +; libsrc/etherip.pla: 0551: opARP = ARP_REPLY +; libsrc/etherip.pla: 0552: setFrameLen(t_earp) +; libsrc/etherip.pla: 0553: writeFrame(@eFrame, t_earp) +; libsrc/etherip.pla: 0554: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$18 ; ADDI 24 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D037+0 +_F075 !WORD _D037+0 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B085 + !WORD _B085-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$18 ; ADDI 24 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D037+2 +_F076 !WORD _D037+2 + !BYTE $40 ; ISEQ +_B085 + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $26 ; LA _D031+0 +_F077 !WORD _D031+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X018 +_F078 !WORD 0 + !BYTE $26 ; LA _D038+0 +_F079 !WORD _D038+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F080 !WORD 0 + !BYTE $2C,$08,$06 ; CW 1544 + !BYTE $7A ; SAW _D033+0 +_F081 !WORD _D033+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $7A ; SAW _D035+0 +_F082 !WORD _D035+0 + !BYTE $2A,$2A ; CB 42 + !BYTE $6A ; LAW _D046+0 +_F083 !WORD _D046+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D030+0 +_F084 !WORD _D030+0 + !BYTE $2A,$2A ; CB 42 + !BYTE $6A ; LAW _D047+0 +_F085 !WORD _D047+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B086 +_B087 +; libsrc/etherip.pla: 0555: wend + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B082 + !BYTE $02 ; CASEBLOCK + !WORD $0100 + !WORD _B084-* + !WORD $0200 + !WORD _B083-* +_B081 +; libsrc/etherip.pla: 0556: wend + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B050 + !BYTE $02 ; CASEBLOCK + !WORD $0008 + !WORD _B051-* + !WORD $0608 + !WORD _B080-* +_B049 +; libsrc/etherip.pla: 0557: heaprelease(rxpacket) +; libsrc/etherip.pla: 0558: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X015 +_F086 !WORD 0 + !BYTE $30 ; DROP +_B047 +_B048 +; libsrc/etherip.pla: 0559: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$9C ; LEAVE 156 +; libsrc/etherip.pla: 0560: end +; libsrc/etherip.pla: 0561: // +; libsrc/etherip.pla: 0562: // Initialize the driver interface +; libsrc/etherip.pla: 0563: // +; libsrc/etherip.pla: 0564: export def setEtherDriver(MAC, getlen, readfrm, setlen, writefrm)#0 + ; MAC -> [0] + ; getlen -> [2] + ; readfrm -> [4] + ; setlen -> [6] + ; writefrm -> [8] +_C011 ; setEtherDriver() +; libsrc/etherip.pla: 0565: memcpy(@myMAC, MAC, MAC_SIZE) + !BYTE $58,$0A,$05 ; ENTER 10,5 +; libsrc/etherip.pla: 0566: memcpy(@localha, MAC, MAC_SIZE) +; libsrc/etherip.pla: 0567: getFrameLen = getlen +; libsrc/etherip.pla: 0568: readFrame = readfrm +; libsrc/etherip.pla: 0569: setFrameLen = setlen +; libsrc/etherip.pla: 0570: writeFrame = writefrm +; libsrc/etherip.pla: 0571: end + !BYTE $26 ; LA _D032+0 +_F087 !WORD _D032+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X018 +_F088 !WORD 0 + !BYTE $26 ; LA _D036+0 +_F089 !WORD _D036+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X018 +_F090 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D048+0 +_F091 !WORD _D048+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D049+0 +_F092 !WORD _D049+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D046+0 +_F093 !WORD _D046+0 + !BYTE $66,$08 ; LLW [8] + !BYTE $7A ; SAW _D047+0 +_F094 !WORD _D047+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/etherip.pla: 0572: // +; libsrc/etherip.pla: 0573: // Set the local IP addresses +; libsrc/etherip.pla: 0574: // +; libsrc/etherip.pla: 0575: def setEtherIP(newIP, newNetmask, newGateway) + ; newIP -> [0] + ; newNetmask -> [2] + ; newGateway -> [4] +_C012 ; setEtherIP() +; libsrc/etherip.pla: 0576: if newIP; memcpy(@localip, newIP, IP4ADR_SIZE); fin + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B088 + !WORD _B088-* + !BYTE $26 ; LA _D037+0 +_F095 !WORD _D037+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F096 !WORD 0 +_B088 +_B089 +; libsrc/etherip.pla: 0577: if newNetmask; memcpy(@netmask, newNetmask, IP4ADR_SIZE); fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B090 + !WORD _B090-* + !BYTE $26 ; LA _D040+0 +_F097 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F098 !WORD 0 +_B090 +_B091 +; libsrc/etherip.pla: 0578: if newGateway; memcpy(@gateway, newGateway, IP4ADR_SIZE); fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B092 + !WORD _B092-* + !BYTE $26 ; LA _D042+0 +_F099 !WORD _D042+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F100 !WORD 0 +_B092 +_B093 +; libsrc/etherip.pla: 0579: subnet:0 = netmask:0 & gateway:0 +; libsrc/etherip.pla: 0580: subnet:2 = netmask:2 & gateway:2 +; libsrc/etherip.pla: 0581: return 0 + !BYTE $6A ; LAW _D040+0 +_F101 !WORD _D040+0 + !BYTE $6A ; LAW _D042+0 +_F102 !WORD _D042+0 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D041+0 +_F103 !WORD _D041+0 + !BYTE $6A ; LAW _D040+2 +_F104 !WORD _D040+2 + !BYTE $6A ; LAW _D042+2 +_F105 !WORD _D042+2 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D041+2 +_F106 !WORD _D041+2 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/etherip.pla: 0582: end +; libsrc/etherip.pla: 0583: // +; libsrc/etherip.pla: 0584: // Get the interface hardware address +; libsrc/etherip.pla: 0585: // +; libsrc/etherip.pla: 0586: def getEtherHA(ha) + ; ha -> [0] +_C013 ; getEtherHA() +; libsrc/etherip.pla: 0587: if ha; memcpy(ha, @myMAC, MAC_SIZE); fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D032+0 +_F107 !WORD _D032+0 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X018 +_F108 !WORD 0 +_B094 +_B095 +; libsrc/etherip.pla: 0588: return MAC_SIZE + !BYTE $0C ; CN 6 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/etherip.pla: 0589: end +; libsrc/etherip.pla: 0590: // +; libsrc/etherip.pla: 0591: // Fill in iNet class +; libsrc/etherip.pla: 0592: // +; libsrc/etherip.pla: 0593: iNet:serviceIP = @etherServiceIP +_INIT +; libsrc/etherip.pla: 0594: iNet:openUDP = @etherOpenUDP +; libsrc/etherip.pla: 0595: iNet:sendUDP = @etherSendUDP +; libsrc/etherip.pla: 0596: iNet:closeUDP = @etherCloseUDP +; libsrc/etherip.pla: 0597: iNet:listenTCP = @etherListenTCP +; libsrc/etherip.pla: 0598: iNet:connectTCP = @etherConnectTCP +; libsrc/etherip.pla: 0599: iNet:sendTCP = @etherSendTCP +; libsrc/etherip.pla: 0600: iNet:closeTCP = @etherCloseTCP +; libsrc/etherip.pla: 0601: iNet:setInterfaceIP = @setEtherIP +; libsrc/etherip.pla: 0602: iNet:getInterfaceHA = @getEtherHA +; libsrc/etherip.pla: 0603: iNet:setCallback = @etherSetCallback +; libsrc/etherip.pla: 0604: iNet:setParam = @etherSetParam +; libsrc/etherip.pla: 0605: done + !BYTE $26 ; LA _C010+0 +_F109 !WORD _C010+0 + !BYTE $7A ; SAW _X028+2 +_F110 !WORD 0+2 + !BYTE $26 ; LA _C002+0 +_F111 !WORD _C002+0 + !BYTE $7A ; SAW _X028+4 +_F112 !WORD 0+4 + !BYTE $26 ; LA _C001+0 +_F113 !WORD _C001+0 + !BYTE $7A ; SAW _X028+6 +_F114 !WORD 0+6 + !BYTE $26 ; LA _C003+0 +_F115 !WORD _C003+0 + !BYTE $7A ; SAW _X028+8 +_F116 !WORD 0+8 + !BYTE $26 ; LA _C004+0 +_F117 !WORD _C004+0 + !BYTE $7A ; SAW _X028+10 +_F118 !WORD 0+10 + !BYTE $26 ; LA _C005+0 +_F119 !WORD _C005+0 + !BYTE $7A ; SAW _X028+12 +_F120 !WORD 0+12 + !BYTE $26 ; LA _C006+0 +_F121 !WORD _C006+0 + !BYTE $7A ; SAW _X028+14 +_F122 !WORD 0+14 + !BYTE $26 ; LA _C007+0 +_F123 !WORD _C007+0 + !BYTE $7A ; SAW _X028+16 +_F124 !WORD 0+16 + !BYTE $26 ; LA _C012+0 +_F125 !WORD _C012+0 + !BYTE $7A ; SAW _X028+18 +_F126 !WORD 0+18 + !BYTE $26 ; LA _C013+0 +_F127 !WORD _C013+0 + !BYTE $7A ; SAW _X028+20 +_F128 !WORD 0+20 + !BYTE $26 ; LA _C008+0 +_F129 !WORD _C008+0 + !BYTE $7A ; SAW _X028+26 +_F130 !WORD 0+26 + !BYTE $26 ; LA _C009+0 +_F131 !WORD _C009+0 + !BYTE $7A ; SAW _X028+28 +_F132 !WORD 0+28 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 15 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: LOCALHA + !BYTE $CC,$CF,$C3,$C1,$CC,$C8,$41 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D036 + ; DCI STRING: LOCALIP + !BYTE $CC,$CF,$C3,$C1,$CC,$C9,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D037 + ; DCI STRING: HOOKICMP + !BYTE $C8,$CF,$CF,$CB,$C9,$C3,$CD,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D045 + ; DCI STRING: SETETHERDRIVER + !BYTE $D3,$C5,$D4,$C5,$D4,$C8,$C5,$D2,$C4,$D2,$C9,$D6,$C5,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C011 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/fiber.a b/src/libsrc/fiber.a new file mode 100644 index 0000000..bb970d6 --- /dev/null +++ b/src/libsrc/fiber.a @@ -0,0 +1,1213 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/fiber.pla: 0001: // +; libsrc/fiber.pla: 0002: // Cooperative multi-threading (fiber) scheduler +; libsrc/fiber.pla: 0003: // +; libsrc/fiber.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/fiber.pla: 0004: +; libsrc/fiber.pla: 0005: // +; libsrc/fiber.pla: 0006: // Maximum number of fibers +; libsrc/fiber.pla: 0007: // +; libsrc/fiber.pla: 0008: const MAX_FIBERS = 32 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; MAX_FIBERS = 32 +; libsrc/fiber.pla: 0009: // +; libsrc/fiber.pla: 0010: // Fiber states +; libsrc/fiber.pla: 0011: // +; libsrc/fiber.pla: 0012: const FIBER_UNAVAIL = 0 + ; FIBER_UNAVAIL = 0 +; libsrc/fiber.pla: 0013: const FIBER_FREE = 1 + ; FIBER_FREE = 1 +; libsrc/fiber.pla: 0014: const FIBER_HALT = 2 + ; FIBER_HALT = 2 +; libsrc/fiber.pla: 0015: const FIBER_RUN = 3 + ; FIBER_RUN = 3 +; libsrc/fiber.pla: 0016: byte fbrMax +_D028 !FILL 1 ; fbrMax +; libsrc/fiber.pla: 0017: byte fbrState[MAX_FIBERS] +_D029 !FILL 32 ; fbrState[MAX_FIBERS] +; libsrc/fiber.pla: 0018: byte fbrNext[MAX_FIBERS] +_D030 !FILL 32 ; fbrNext[MAX_FIBERS] +; libsrc/fiber.pla: 0019: word fbrVMState[MAX_FIBERS] +_D031 !FILL 64 ; fbrVMState[MAX_FIBERS] +; libsrc/fiber.pla: 0020: word fbrPool +_D032 !FILL 2 ; fbrPool +; libsrc/fiber.pla: 0021: byte fbrRunning = 0 +_D033 ; fbrRunning = 0 + !BYTE $00 +; libsrc/fiber.pla: 0022: export byte fbrCount = 0 +_D034 ; fbrCount = 0 + !BYTE $00 +; libsrc/fiber.pla: 0023: // +; libsrc/fiber.pla: 0024: // Zero Page VM state and 6502 stack +; libsrc/fiber.pla: 0025: // +; libsrc/fiber.pla: 0026: struc t_vm +; libsrc/fiber.pla: 0027: byte estkhi[$10] + ; estkhi = 0 +; libsrc/fiber.pla: 0028: byte estklo[$10] + ; estklo = 16 +; libsrc/fiber.pla: 0029: word ifp + ; ifp = 32 +; libsrc/fiber.pla: 0030: word pp + ; pp = 34 +; libsrc/fiber.pla: 0031: byte hwsp + ; hwsp = 36 +; libsrc/fiber.pla: 0032: byte esp + ; esp = 37 +; libsrc/fiber.pla: 0033: byte jmptmp + ; jmptmp = 38 +; libsrc/fiber.pla: 0034: byte fill[8] + ; fill = 39 +; libsrc/fiber.pla: 0035: byte dropop + ; dropop = 47 +; libsrc/fiber.pla: 0036: byte nextop[$10] + ; nextop = 48 +; libsrc/fiber.pla: 0037: byte hwstk[$C0] + ; hwstk = 64 +; libsrc/fiber.pla: 0038: end + ; t_vm = 256 +; libsrc/fiber.pla: 0039: // +; libsrc/fiber.pla: 0040: // Save current VM state and restore another +; libsrc/fiber.pla: 0041: // +; libsrc/fiber.pla: 0042: asm fbrSwap(saveVM, restoreVM)#0 +_A000 ; fbrSwap() +; libsrc/fiber.pla: 0043: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/fiber.pla: 0044: HWSP = IPY + HWSP = IPY +; libsrc/fiber.pla: 0045: LDA ESTKL,X + LDA ESTKL,X +; libsrc/fiber.pla: 0046: STA SRCL + STA SRCL +; libsrc/fiber.pla: 0047: LDA ESTKH,X + LDA ESTKH,X +; libsrc/fiber.pla: 0048: STA SRCH + STA SRCH +; libsrc/fiber.pla: 0049: INX + INX +; libsrc/fiber.pla: 0050: LDA ESTKL,X + LDA ESTKL,X +; libsrc/fiber.pla: 0051: STA DSTL + STA DSTL +; libsrc/fiber.pla: 0052: LDA ESTKH,X + LDA ESTKH,X +; libsrc/fiber.pla: 0053: STA DSTH + STA DSTH +; libsrc/fiber.pla: 0054: INX + INX +; libsrc/fiber.pla: 0055: STX ESP + STX ESP +; libsrc/fiber.pla: 0056: TSX + TSX +; libsrc/fiber.pla: 0057: STX HWSP + STX HWSP +; libsrc/fiber.pla: 0058: LDY #$26 + LDY #$26 +; libsrc/fiber.pla: 0059: - LDA ESTK,Y +- LDA ESTK,Y +; libsrc/fiber.pla: 0060: STA (DST),Y + STA (DST),Y +; libsrc/fiber.pla: 0061: LDA (SRC),Y + LDA (SRC),Y +; libsrc/fiber.pla: 0062: STA ESTK,Y + STA ESTK,Y +; libsrc/fiber.pla: 0063: DEY + DEY +; libsrc/fiber.pla: 0064: BPL - + BPL - +; libsrc/fiber.pla: 0065: TXA + TXA +; libsrc/fiber.pla: 0066: TAY + TAY +; libsrc/fiber.pla: 0067: - LDA $100,Y +- LDA $100,Y +; libsrc/fiber.pla: 0068: STA (DST),Y + STA (DST),Y +; libsrc/fiber.pla: 0069: INY + INY +; libsrc/fiber.pla: 0070: BNE - + BNE - +; libsrc/fiber.pla: 0071: LDY HWSP + LDY HWSP +; libsrc/fiber.pla: 0072: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/fiber.pla: 0073: STA $100,Y + STA $100,Y +; libsrc/fiber.pla: 0074: INY + INY +; libsrc/fiber.pla: 0075: BNE - + BNE - +; libsrc/fiber.pla: 0076: LDX HWSP + LDX HWSP +; libsrc/fiber.pla: 0077: TXS + TXS +; libsrc/fiber.pla: 0078: LDX ESP + LDX ESP +; libsrc/fiber.pla: 0079: RTS + RTS +; libsrc/fiber.pla: 0080: end +; libsrc/fiber.pla: 0081: // +; libsrc/fiber.pla: 0082: // Load Zero Page VM state and 6502 stack +; libsrc/fiber.pla: 0083: // +; libsrc/fiber.pla: 0084: asm fbrLoad(loadVM)#0 +_A001 ; fbrLoad() +; libsrc/fiber.pla: 0085: LDA ESTKL,X + LDA ESTKL,X +; libsrc/fiber.pla: 0086: STA SRCL + STA SRCL +; libsrc/fiber.pla: 0087: LDA ESTKH,X + LDA ESTKH,X +; libsrc/fiber.pla: 0088: STA SRCH + STA SRCH +; libsrc/fiber.pla: 0089: LDY #$26 + LDY #$26 +; libsrc/fiber.pla: 0090: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/fiber.pla: 0091: STA ESTK,Y + STA ESTK,Y +; libsrc/fiber.pla: 0092: DEY + DEY +; libsrc/fiber.pla: 0093: BPL - + BPL - +; libsrc/fiber.pla: 0094: LDY HWSP + LDY HWSP +; libsrc/fiber.pla: 0095: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/fiber.pla: 0096: STA $100,Y + STA $100,Y +; libsrc/fiber.pla: 0097: INY + INY +; libsrc/fiber.pla: 0098: BNE - + BNE - +; libsrc/fiber.pla: 0099: LDX HWSP + LDX HWSP +; libsrc/fiber.pla: 0100: TXS + TXS +; libsrc/fiber.pla: 0101: LDX ESP + LDX ESP +; libsrc/fiber.pla: 0102: RTS + RTS +; libsrc/fiber.pla: 0103: end +; libsrc/fiber.pla: 0104: // +; libsrc/fiber.pla: 0105: // Initialize fiber pool +; libsrc/fiber.pla: 0106: // +; libsrc/fiber.pla: 0107: export def fbrInit(numPool) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; numPool -> [0] +_C000 ; fbrInit() +; libsrc/fiber.pla: 0108: byte i + ; i -> [2] +; libsrc/fiber.pla: 0109: word pool + ; pool -> [3] +; libsrc/fiber.pla: 0110: +; libsrc/fiber.pla: 0111: if numPool >= MAX_FIBERS + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/fiber.pla: 0112: numPool = MAX_FIBERS +; libsrc/fiber.pla: 0113: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $2A,$20 ; CB 32 + !BYTE $76,$00 ; SLW [0] +_B001 +_B002 +; libsrc/fiber.pla: 0114: fbrMax = numPool - 1 +; libsrc/fiber.pla: 0115: // +; libsrc/fiber.pla: 0116: // Allocate the fiber pool and initialize it to FREE +; libsrc/fiber.pla: 0117: // +; libsrc/fiber.pla: 0118: fbrPool = heapalloc(fbrMax * 512 + 256) +; libsrc/fiber.pla: 0119: if fbrPool +; libsrc/fiber.pla: 0120: // +; libsrc/fiber.pla: 0121: // Each fiber gets 256 bytes of stack and 256 bytes +; libsrc/fiber.pla: 0122: // for frame (local) data - except fiber 0 uses original frame data +; libsrc/fiber.pla: 0123: // +; libsrc/fiber.pla: 0124: pool = fbrPool + 256 +; libsrc/fiber.pla: 0125: for i = fbrMax downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $7C ; DAB _D028+0 +_F000 !WORD _D028+0 + !BYTE $12 ; CN 9 + !BYTE $9A ; SHL + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X014 +_F001 !WORD 0 + !BYTE $7E ; DAW _D032+0 +_F002 !WORD _D032+0 + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $6A ; LAW _D032+0 +_F003 !WORD _D032+0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $82 ; ADD + !BYTE $76,$03 ; SLW [3] + !BYTE $02 ; CN 1 + !BYTE $68 ; LAB _D028+0 +_F004 !WORD _D028+0 + !BYTE $A2 ; BRLT _B005 + !WORD _B005-* +_B006 + !BYTE $6C,$02 ; DLB [2] +; libsrc/fiber.pla: 0126: if i < numPool +; libsrc/fiber.pla: 0127: fbrState[i] = FIBER_FREE +; libsrc/fiber.pla: 0128: fbrVMState[i] = pool +; libsrc/fiber.pla: 0129: pool = pool + 512 +; libsrc/fiber.pla: 0130: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D029+0 +_F005 !WORD _D029+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $66,$03 ; LLW [3] + !BYTE $26 ; LA _D031+0 +_F006 !WORD _D031+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $72 ; SW + !BYTE $66,$03 ; LLW [3] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $76,$03 ; SLW [3] +_B008 +_B009 +; libsrc/fiber.pla: 0131: next +_B007 + !BYTE $A8 ; DECBRGE _B006 + !WORD _B006-* +_B005 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; libsrc/fiber.pla: 0132: // +; libsrc/fiber.pla: 0133: // Set fiber 0 to the RUNning fiber +; libsrc/fiber.pla: 0134: // +; libsrc/fiber.pla: 0135: fbrState = FIBER_RUN +; libsrc/fiber.pla: 0136: fbrVMState = fbrPool +; libsrc/fiber.pla: 0137: else + !BYTE $06 ; CN 3 + !BYTE $78 ; SAB _D029+0 +_F007 !WORD _D029+0 + !BYTE $6A ; LAW _D032+0 +_F008 !WORD _D032+0 + !BYTE $7A ; SAW _D031+0 +_F009 !WORD _D031+0 + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; libsrc/fiber.pla: 0138: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/fiber.pla: 0139: fin +_B004 +; libsrc/fiber.pla: 0140: fbrCount = 1 +; libsrc/fiber.pla: 0141: return 0 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D034+0 +_F010 !WORD _D034+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/fiber.pla: 0142: end +; libsrc/fiber.pla: 0143: // +; libsrc/fiber.pla: 0144: // Stop fiber and return it to FREE pool +; libsrc/fiber.pla: 0145: // +; libsrc/fiber.pla: 0146: export def fbrStop(fid)#0 + ; fid -> [0] +_C001 ; fbrStop() +; libsrc/fiber.pla: 0147: byte i + ; i -> [2] +; libsrc/fiber.pla: 0148: +; libsrc/fiber.pla: 0149: // +; libsrc/fiber.pla: 0150: // Don't STOP fiber 0 (avoid deadlock) +; libsrc/fiber.pla: 0151: // +; libsrc/fiber.pla: 0152: if fid + !BYTE $58,$03,$01 ; ENTER 3,1 +; libsrc/fiber.pla: 0153: // +; libsrc/fiber.pla: 0154: // Remove fiber from RUN list and tag as free +; libsrc/fiber.pla: 0155: // +; libsrc/fiber.pla: 0156: fbrCount-- + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $68 ; LAB _D034+0 +_F011 !WORD _D034+0 + !BYTE $8E ; DECR +; libsrc/fiber.pla: 0157: fbrState[fid] = FIBER_FREE +; libsrc/fiber.pla: 0158: i = 0 +; libsrc/fiber.pla: 0159: while fbrNext[i] <> fid + !BYTE $78 ; SAB _D034+0 +_F012 !WORD _D034+0 + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D029+0 +_F013 !WORD _D029+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B012 +; libsrc/fiber.pla: 0160: i = fbrNext[i] +; libsrc/fiber.pla: 0161: loop + !BYTE $26 ; LA _D030+0 +_F014 !WORD _D030+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] +_B014 + !BYTE $26 ; LA _D030+0 +_F015 !WORD _D030+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $24 ; BRNE _B012 + !WORD _B012-* +_B013 +; libsrc/fiber.pla: 0162: fbrNext[i] = fbrNext[fid] +; libsrc/fiber.pla: 0163: if fid == fbrRunning +; libsrc/fiber.pla: 0164: fbrRunning = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0165: fbrLoad(fbrVMState[fbrRunning]) // This doesn't actually return here - returns to next fiber +; libsrc/fiber.pla: 0166: fin + !BYTE $26 ; LA _D030+0 +_F016 !WORD _D030+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $26 ; LA _D030+0 +_F017 !WORD _D030+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $68 ; LAB _D033+0 +_F018 !WORD _D033+0 + !BYTE $24 ; BRNE _B015 + !WORD _B015-* + !BYTE $26 ; LA _D030+0 +_F019 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F020 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $78 ; SAB _D033+0 +_F021 !WORD _D033+0 + !BYTE $26 ; LA _D031+0 +_F022 !WORD _D031+0 + !BYTE $BC ; IDXAB _D033+0 +_F023 !WORD _D033+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A001 +_F024 !WORD _A001 +_B015 +_B016 +; libsrc/fiber.pla: 0167: fin +_B010 +_B011 +; libsrc/fiber.pla: 0168: end + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/fiber.pla: 0169: // +; libsrc/fiber.pla: 0170: // Stop current fiber +; libsrc/fiber.pla: 0171: // +; libsrc/fiber.pla: 0172: export def fbrExit#0 +_C002 ; fbrExit() +; libsrc/fiber.pla: 0173: // +; libsrc/fiber.pla: 0174: // Stop running fiber +; libsrc/fiber.pla: 0175: // +; libsrc/fiber.pla: 0176: fbrStop(fbrRunning) +; libsrc/fiber.pla: 0177: end + !BYTE $68 ; LAB _D033+0 +_F025 !WORD _D033+0 + !BYTE $54 ; CALL _C001 +_F026 !WORD _C001 + !BYTE $5C ; RET +; libsrc/fiber.pla: 0178: // +; libsrc/fiber.pla: 0179: // Start a fiber RUNning +; libsrc/fiber.pla: 0180: // +; libsrc/fiber.pla: 0181: export def fbrStart(defaddr, param) + ; defaddr -> [0] + ; param -> [2] +_C003 ; fbrStart() +; libsrc/fiber.pla: 0182: byte i + ; i -> [4] +; libsrc/fiber.pla: 0183: word vmstate + ; vmstate -> [5] +; libsrc/fiber.pla: 0184: +; libsrc/fiber.pla: 0185: for i = fbrMax downto 1 + !BYTE $58,$07,$02 ; ENTER 7,2 + !BYTE $02 ; CN 1 + !BYTE $68 ; LAB _D028+0 +_F027 !WORD _D028+0 + !BYTE $A2 ; BRLT _B017 + !WORD _B017-* +_B018 + !BYTE $6C,$04 ; DLB [4] +; libsrc/fiber.pla: 0186: if fbrState[i] == FIBER_FREE +; libsrc/fiber.pla: 0187: // +; libsrc/fiber.pla: 0188: // Allocate fiber from pool +; libsrc/fiber.pla: 0189: // +; libsrc/fiber.pla: 0190: fbrState[i] = FIBER_RUN +; libsrc/fiber.pla: 0191: vmstate = fbrVMState[i] +; libsrc/fiber.pla: 0192: vmstate=>ifp = vmstate + 512 +; libsrc/fiber.pla: 0193: vmstate=>pp = vmstate + 512 +; libsrc/fiber.pla: 0194: // +; libsrc/fiber.pla: 0195: // Set fiber parameters to fiber ID and passed-in value +; libsrc/fiber.pla: 0196: // +; libsrc/fiber.pla: 0197: vmstate->esp = $0E +; libsrc/fiber.pla: 0198: vmstate->estklo.$0F = i +; libsrc/fiber.pla: 0199: vmstate->estkhi.$0F = 0 +; libsrc/fiber.pla: 0200: vmstate->estklo.$0E = param.0 // param lo byte +; libsrc/fiber.pla: 0201: vmstate->estkhi.$0E = param.1 // param hi byte +; libsrc/fiber.pla: 0202: // +; libsrc/fiber.pla: 0203: // Initialize stack to point to fiber def and fbrExit +; libsrc/fiber.pla: 0204: // This allows a fiber to return and it will fall into fbrExit +; libsrc/fiber.pla: 0205: // +; libsrc/fiber.pla: 0206: vmstate->jmptmp = $4C +; libsrc/fiber.pla: 0207: vmstate->hwsp = $FB +; libsrc/fiber.pla: 0208: vmstate=>$FE = @fbrExit - 1 +; libsrc/fiber.pla: 0209: vmstate=>$FC = defaddr - 1 +; libsrc/fiber.pla: 0210: // +; libsrc/fiber.pla: 0211: // Link into RUN list +; libsrc/fiber.pla: 0212: // +; libsrc/fiber.pla: 0213: fbrNext[i] = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0214: fbrNext[fbrRunning] = i +; libsrc/fiber.pla: 0215: // +; libsrc/fiber.pla: 0216: // Return fiber ID (index) +; libsrc/fiber.pla: 0217: // +; libsrc/fiber.pla: 0218: fbrCount++ + !BYTE $26 ; LA _D029+0 +_F028 !WORD _D029+0 + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $24 ; BRNE _B020 + !WORD _B020-* + !BYTE $06 ; CN 3 + !BYTE $26 ; LA _D029+0 +_F029 !WORD _D029+0 + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $26 ; LA _D031+0 +_F030 !WORD _D031+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $6E,$05 ; DLW [5] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$20 ; ADDI 32 + !BYTE $72 ; SW + !BYTE $66,$05 ; LLW [5] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$22 ; ADDI 34 + !BYTE $72 ; SW + !BYTE $1C ; CN 14 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$25 ; ADDI 37 + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$10 ; ADDI 16 + !BYTE $38,$0F ; ADDI 15 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$0F ; ADDI 15 + !BYTE $70 ; SB + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$10 ; ADDI 16 + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $64,$03 ; LLB [3] + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$26 ; ADDI 38 + !BYTE $70 ; SB + !BYTE $2A,$FB ; CB 251 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$24 ; ADDI 36 + !BYTE $70 ; SB + !BYTE $26 ; LA _C002+0 +_F031 !WORD _C002+0 + !BYTE $8E ; DECR + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$FE ; ADDI 254 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$FC ; ADDI 252 + !BYTE $72 ; SW + !BYTE $26 ; LA _D030+0 +_F032 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F033 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $26 ; LA _D030+0 +_F034 !WORD _D030+0 + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $26 ; LA _D030+0 +_F035 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F036 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D034+0 +_F037 !WORD _D034+0 + !BYTE $8C ; INCR +; libsrc/fiber.pla: 0219: return i + !BYTE $78 ; SAB _D034+0 +_F038 !WORD _D034+0 + !BYTE $32 ; DROP2 + !BYTE $64,$04 ; LLB [4] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/fiber.pla: 0220: fin +_B020 +_B021 +; libsrc/fiber.pla: 0221: next +_B019 + !BYTE $A8 ; DECBRGE _B018 + !WORD _B018-* +_B017 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/fiber.pla: 0222: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/fiber.pla: 0223: end +; libsrc/fiber.pla: 0224: // +; libsrc/fiber.pla: 0225: // Round-robin schedule RUNning fibers +; libsrc/fiber.pla: 0226: // +; libsrc/fiber.pla: 0227: export def fbrYield#0 +_C004 ; fbrYield() +; libsrc/fiber.pla: 0228: byte prev + ; prev -> [0] +; libsrc/fiber.pla: 0229: +; libsrc/fiber.pla: 0230: // +; libsrc/fiber.pla: 0231: // Swap to text fiber if this isn't the only fiber RUNning +; libsrc/fiber.pla: 0232: // +; libsrc/fiber.pla: 0233: if fbrNext[fbrRunning] <> fbrRunning + !BYTE $58,$01,$00 ; ENTER 1,0 +; libsrc/fiber.pla: 0234: prev = fbrRunning +; libsrc/fiber.pla: 0235: fbrRunning = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0236: fbrSwap(fbrVMState[prev], fbrVMState[fbrRunning]) +; libsrc/fiber.pla: 0237: fin + !BYTE $26 ; LA _D030+0 +_F039 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F040 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $68 ; LAB _D033+0 +_F041 !WORD _D033+0 + !BYTE $22 ; BREQ _B022 + !WORD _B022-* + !BYTE $68 ; LAB _D033+0 +_F042 !WORD _D033+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $26 ; LA _D030+0 +_F043 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F044 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $78 ; SAB _D033+0 +_F045 !WORD _D033+0 + !BYTE $26 ; LA _D031+0 +_F046 !WORD _D031+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F047 !WORD _D031+0 + !BYTE $BC ; IDXAB _D033+0 +_F048 !WORD _D033+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A000 +_F049 !WORD _A000 +_B022 +_B023 +; libsrc/fiber.pla: 0238: end + !BYTE $5A,$01 ; LEAVE 1 +; libsrc/fiber.pla: 0239: // +; libsrc/fiber.pla: 0240: // HALT current fiber and await a RESUME +; libsrc/fiber.pla: 0241: // +; libsrc/fiber.pla: 0242: export def fbrHalt#0 +_C005 ; fbrHalt() +; libsrc/fiber.pla: 0243: byte i + ; i -> [0] +; libsrc/fiber.pla: 0244: +; libsrc/fiber.pla: 0245: // +; libsrc/fiber.pla: 0246: // Cannot HALT fiber 0 (avoid deadlock) +; libsrc/fiber.pla: 0247: // +; libsrc/fiber.pla: 0248: if fbrRunning + !BYTE $58,$01,$00 ; ENTER 1,0 +; libsrc/fiber.pla: 0249: // +; libsrc/fiber.pla: 0250: // Remove fiber from RUN list +; libsrc/fiber.pla: 0251: // +; libsrc/fiber.pla: 0252: i = 0 +; libsrc/fiber.pla: 0253: while fbrNext[i] <> fbrRunning + !BYTE $68 ; LAB _D033+0 +_F050 !WORD _D033+0 + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $00 ; CN 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B026 +; libsrc/fiber.pla: 0254: i = fbrNext[i] +; libsrc/fiber.pla: 0255: loop + !BYTE $26 ; LA _D030+0 +_F051 !WORD _D030+0 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $60 ; LB + !BYTE $74,$00 ; SLB [0] +_B028 + !BYTE $26 ; LA _D030+0 +_F052 !WORD _D030+0 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $60 ; LB + !BYTE $68 ; LAB _D033+0 +_F053 !WORD _D033+0 + !BYTE $24 ; BRNE _B026 + !WORD _B026-* +_B027 +; libsrc/fiber.pla: 0256: fbrState[fbrRunning] = FIBER_HALT +; libsrc/fiber.pla: 0257: fbrNext[i] = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0258: i = fbrRunning +; libsrc/fiber.pla: 0259: fbrRunning = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0260: fbrSwap(fbrVMState[i], fbrVMState[fbrRunning]) +; libsrc/fiber.pla: 0261: fin + !BYTE $04 ; CN 2 + !BYTE $26 ; LA _D029+0 +_F054 !WORD _D029+0 + !BYTE $B4 ; ADDAB _D033+0 +_F055 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $26 ; LA _D030+0 +_F056 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F057 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $26 ; LA _D030+0 +_F058 !WORD _D030+0 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $70 ; SB + !BYTE $68 ; LAB _D033+0 +_F059 !WORD _D033+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $26 ; LA _D030+0 +_F060 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F061 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $78 ; SAB _D033+0 +_F062 !WORD _D033+0 + !BYTE $26 ; LA _D031+0 +_F063 !WORD _D031+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F064 !WORD _D031+0 + !BYTE $BC ; IDXAB _D033+0 +_F065 !WORD _D033+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A000 +_F066 !WORD _A000 +_B024 +_B025 +; libsrc/fiber.pla: 0262: end + !BYTE $5A,$01 ; LEAVE 1 +; libsrc/fiber.pla: 0263: // +; libsrc/fiber.pla: 0264: // Restore HALTed fiber to RUN list +; libsrc/fiber.pla: 0265: // +; libsrc/fiber.pla: 0266: export def fbrResume(fid)#0 + ; fid -> [0] +_C006 ; fbrResume() +; libsrc/fiber.pla: 0267: if fbrState[fid] == FIBER_HALT + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fiber.pla: 0268: // +; libsrc/fiber.pla: 0269: // Insert HALTed fiber back into RUN list +; libsrc/fiber.pla: 0270: // +; libsrc/fiber.pla: 0271: fbrState[fid] = FIBER_RUN +; libsrc/fiber.pla: 0272: fbrNext[fid] = fbrNext[fbrRunning] +; libsrc/fiber.pla: 0273: fbrNext[fbrRunning] = fid +; libsrc/fiber.pla: 0274: fin + !BYTE $26 ; LA _D029+0 +_F067 !WORD _D029+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B029 + !WORD _B029-* + !BYTE $06 ; CN 3 + !BYTE $26 ; LA _D029+0 +_F068 !WORD _D029+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $70 ; SB + !BYTE $26 ; LA _D030+0 +_F069 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F070 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $26 ; LA _D030+0 +_F071 !WORD _D030+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D030+0 +_F072 !WORD _D030+0 + !BYTE $B4 ; ADDAB _D033+0 +_F073 !WORD _D033+0 + !BYTE $70 ; SB +_B029 +_B030 +; libsrc/fiber.pla: 0275: end + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fiber.pla: 0276: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 8 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: FBRCOUNT + !BYTE $C6,$C2,$D2,$C3,$CF,$D5,$CE,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D034 + ; DCI STRING: FBRINIT + !BYTE $C6,$C2,$D2,$C9,$CE,$C9,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: FBRSTOP + !BYTE $C6,$C2,$D2,$D3,$D4,$CF,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: FBREXIT + !BYTE $C6,$C2,$D2,$C5,$D8,$C9,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: FBRSTART + !BYTE $C6,$C2,$D2,$D3,$D4,$C1,$D2,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: FBRYIELD + !BYTE $C6,$C2,$D2,$D9,$C9,$C5,$CC,$44 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: FBRHALT + !BYTE $C6,$C2,$D2,$C8,$C1,$CC,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: FBRRESUME + !BYTE $C6,$C2,$D2,$D2,$C5,$D3,$D5,$CD,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/fpstr.a b/src/libsrc/fpstr.a new file mode 100644 index 0000000..d11710c --- /dev/null +++ b/src/libsrc/fpstr.a @@ -0,0 +1,1596 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/fpstr.pla: 0001: // +; libsrc/fpstr.pla: 0002: // SANE Extended FP to String conversion library +; libsrc/fpstr.pla: 0003: // +; libsrc/fpstr.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/fpstr.pla: 0004: +; libsrc/fpstr.pla: 0005: include "inc/sane.plh" +; inc/sane.plh: 0001: import sane + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + ; SANE -> X028 +; inc/sane.plh: 0002: //----------------------------------------------------------- +; inc/sane.plh: 0003: // Operation code masks. +; inc/sane.plh: 0004: //----------------------------------------------------------- +; inc/sane.plh: 0005: const FOADD = $0000 // add + ; FOADD = 0 +; inc/sane.plh: 0006: const FOSUB = $0002 // subtract + ; FOSUB = 2 +; inc/sane.plh: 0007: const FOMUL = $0004 // multiply + ; FOMUL = 4 +; inc/sane.plh: 0008: const FODIV = $0006 // divide + ; FODIV = 6 +; inc/sane.plh: 0009: const FOCMP = $0008 // compare, no exception from unordered + ; FOCMP = 8 +; inc/sane.plh: 0010: const FOCPX = $000A // compare, signal invalid if unordered + ; FOCPX = 10 +; inc/sane.plh: 0011: const FOREM = $000C // remainder + ; FOREM = 12 +; inc/sane.plh: 0012: const FOZ2X = $000E // convert to extended + ; FOZ2X = 14 +; inc/sane.plh: 0013: const FOX2Z = $0010 // convert from extended + ; FOX2Z = 16 +; inc/sane.plh: 0014: const FOSQRT = $0012 // square root + ; FOSQRT = 18 +; inc/sane.plh: 0015: const FORTI = $0014 // round to integral value + ; FORTI = 20 +; inc/sane.plh: 0016: const FOTTI = $0016 // truncate to integral value + ; FOTTI = 22 +; inc/sane.plh: 0017: const FOSCALB = $0018 // binary scale + ; FOSCALB = 24 +; inc/sane.plh: 0018: const FOLOGB = $001A // binary log + ; FOLOGB = 26 +; inc/sane.plh: 0019: const FOCLASS = $001C // classify + ; FOCLASS = 28 +; inc/sane.plh: 0020: const FONEXT = $001E // next-after + ; FONEXT = 30 +; inc/sane.plh: 0021: // +; inc/sane.plh: 0022: const FOSETENV = $0001 // set environment + ; FOSETENV = 1 +; inc/sane.plh: 0023: const FOGETENV = $0003 // get environment + ; FOGETENV = 3 +; inc/sane.plh: 0024: const FOSETHV = $0005 // set halt vector + ; FOSETHV = 5 +; inc/sane.plh: 0025: const FOGETHV = $0007 // get halt vector + ; FOGETHV = 7 +; inc/sane.plh: 0026: const FOD2B = $0009 // convert decimal to binary + ; FOD2B = 9 +; inc/sane.plh: 0027: const FOB2D = $000B // convert binary to decimal + ; FOB2D = 11 +; inc/sane.plh: 0028: const FONEG = $000D // negate + ; FONEG = 13 +; inc/sane.plh: 0029: const FOABS = $000F // absolute value + ; FOABS = 15 +; inc/sane.plh: 0030: const FOCPYSGN = $0011 // copy sign + ; FOCPYSGN = 17 +; inc/sane.plh: 0031: // UNDEFINED = $0013 +; inc/sane.plh: 0032: const FOSETXCP = $0015 // set exception + ; FOSETXCP = 21 +; inc/sane.plh: 0033: const FOPROCENTRY = $0017 // procedure-entry + ; FOPROCENTRY = 23 +; inc/sane.plh: 0034: const FOPROCEXIT = $0019 // procedure-exit + ; FOPROCEXIT = 25 +; inc/sane.plh: 0035: const FOTESTXCP = $001B // test exception + ; FOTESTXCP = 27 +; inc/sane.plh: 0036: // UNDEFINED = $001D +; inc/sane.plh: 0037: // UNDEFINED = $001F +; inc/sane.plh: 0038: //----------------------------------------------------------- +; inc/sane.plh: 0039: // Operand format masks. +; inc/sane.plh: 0040: //----------------------------------------------------------- +; inc/sane.plh: 0041: const FFEXT = $0000 // extended -- 80-bit float + ; FFEXT = 0 +; inc/sane.plh: 0042: const FFDBL = $0100 // double -- 64-bit float + ; FFDBL = 256 +; inc/sane.plh: 0043: const FFSGL = $0200 // single -- 32-bit float + ; FFSGL = 512 +; inc/sane.plh: 0044: // UNDEFINED = $0300 +; inc/sane.plh: 0045: const FFINT = $0400 // integer -- 16-bit integer + ; FFINT = 1024 +; inc/sane.plh: 0046: const FFCOMP = $0500 // comp -- 64-bit integer + ; FFCOMP = 1280 +; inc/sane.plh: 0047: // UNDEFINED = $0600 +; inc/sane.plh: 0048: // UNDEFINED = $0700 +; inc/sane.plh: 0049: //----------------------------------------------------------- +; inc/sane.plh: 0050: // Class. +; inc/sane.plh: 0051: //----------------------------------------------------------- +; inc/sane.plh: 0052: const FCSNAN = $FC // -4: signaling NAN + ; FCSNAN = 252 +; inc/sane.plh: 0053: const FCQNAN = $FD // -3: quiet NAN + ; FCQNAN = 253 +; inc/sane.plh: 0054: const FCINF = $FE // -2: infinite + ; FCINF = 254 +; inc/sane.plh: 0055: const FCZERO = $FF // -1: zero + ; FCZERO = 255 +; inc/sane.plh: 0056: const FCNORM = $00 // 0: normal + ; FCNORM = 0 +; inc/sane.plh: 0057: const FCDENORM = $01 // 1: denormal + ; FCDENORM = 1 +; inc/sane.plh: 0058: //----------------------------------------------------------- +; inc/sane.plh: 0059: // Exceptions. +; inc/sane.plh: 0060: //----------------------------------------------------------- +; inc/sane.plh: 0061: const FBINVALID = $01 + ; FBINVALID = 1 +; inc/sane.plh: 0062: const FBUFLOW = $02 + ; FBUFLOW = 2 +; inc/sane.plh: 0063: const FBOFLOW = $04 + ; FBOFLOW = 4 +; inc/sane.plh: 0064: const FBDIVZER = $08 + ; FBDIVZER = 8 +; inc/sane.plh: 0065: const FBINEXACT = $10 + ; FBINEXACT = 16 +; inc/sane.plh: 0066: //----------------------------------------------------------- +; inc/sane.plh: 0067: // Elementary function operation code masks. +; inc/sane.plh: 0068: //----------------------------------------------------------- +; inc/sane.plh: 0069: const FOLNX = $0000 // base-e log + ; FOLNX = 0 +; inc/sane.plh: 0070: const FOLOG2X = $0002 // base-2 log + ; FOLOG2X = 2 +; inc/sane.plh: 0071: const FOLN1X = $0004 // ln (1 + x) + ; FOLN1X = 4 +; inc/sane.plh: 0072: const FOLOG21X = $0006 // log2 (1 + x) + ; FOLOG21X = 6 +; inc/sane.plh: 0073: const FOEXPX = $0008 // base-e exponential + ; FOEXPX = 8 +; inc/sane.plh: 0074: const FOEXP2X = $000A // base-2 exponential + ; FOEXP2X = 10 +; inc/sane.plh: 0075: const FOEXP1X = $000C // exp (x) - 1 + ; FOEXP1X = 12 +; inc/sane.plh: 0076: const FOEXP21X = $000E // exp2 (x) - 1 + ; FOEXP21X = 14 +; inc/sane.plh: 0077: const FOXPWRI = $0010 // integer exponentiation + ; FOXPWRI = 16 +; inc/sane.plh: 0078: const FOXPWRY = $0012 // general exponentiation + ; FOXPWRY = 18 +; inc/sane.plh: 0079: const FOCOMPND = $0014 // compound + ; FOCOMPND = 20 +; inc/sane.plh: 0080: const FOANNUIT = $0016 // annuity + ; FOANNUIT = 22 +; inc/sane.plh: 0081: const FOATANX = $0018 // arctangent + ; FOATANX = 24 +; inc/sane.plh: 0082: const FOSINX = $001A // sine + ; FOSINX = 26 +; inc/sane.plh: 0083: const FOCOSX = $001C // cosine + ; FOCOSX = 28 +; inc/sane.plh: 0084: const FOTANX = $001E // tangent + ; FOTANX = 30 +; inc/sane.plh: 0085: const FORANDX = $0020 // random + ; FORANDX = 32 +; inc/sane.plh: 0086: //----------------------------------------------------------- +; inc/sane.plh: 0087: // NaN error codes. +; inc/sane.plh: 0088: //----------------------------------------------------------- +; inc/sane.plh: 0089: const NANSQRT = 1 // Invalid square root such as sqrt(-1). + ; NANSQRT = 1 +; inc/sane.plh: 0090: const NANADD = 2 // Invalid addition such as +INF - +INF. + ; NANADD = 2 +; inc/sane.plh: 0091: const NANDIV = 4 // Invalid division such as 0/0. + ; NANDIV = 4 +; inc/sane.plh: 0092: const NANMUL = 8 // Invalid multiply such as 0 * INF. + ; NANMUL = 8 +; inc/sane.plh: 0093: const NANREM = 9 // Invalid remainder or mod such as x REM 0. + ; NANREM = 9 +; inc/sane.plh: 0094: const NANASCBIN = 17 // Attempt to convert invalid ASCII string. + ; NANASCBIN = 17 +; inc/sane.plh: 0095: const NANCOMP = 20 // Result of converting comp NaN to floating. + ; NANCOMP = 20 +; inc/sane.plh: 0096: const NANZERO = 21 // Attempt to create a NaN with a zero code. + ; NANZERO = 21 +; inc/sane.plh: 0097: const NANTRIG = 33 // Invalid argument to trig routine. + ; NANTRIG = 33 +; inc/sane.plh: 0098: const NANINVTRIG = 34 // Invalid argument to inverse trig routine. + ; NANINVTRIG = 34 +; inc/sane.plh: 0099: const NANLOG = 36 // Invalid argument to log routine. + ; NANLOG = 36 +; inc/sane.plh: 0100: const NANPOWER = 37 // Invalid argument to x^i or x^y routine. + ; NANPOWER = 37 +; inc/sane.plh: 0101: const NANFINAN = 38 // Invalid argument to financial function. + ; NANFINAN = 38 +; inc/sane.plh: 0102: const NANINIT = 255 // Uninitialized storage. + ; NANINIT = 255 +; inc/sane.plh: 0103: //----------------------------------------------------------- +; inc/sane.plh: 0104: // Comparison results. +; inc/sane.plh: 0105: //----------------------------------------------------------- +; inc/sane.plh: 0106: const FCMPGT = $4040 // Greater Than + ; FCMPGT = 16448 +; inc/sane.plh: 0107: const FCMPLT = $8080 // Less Than + ; FCMPLT = 32896 +; inc/sane.plh: 0108: const FCMPEQ = $0002 // EQual + ; FCMPEQ = 2 +; inc/sane.plh: 0109: const FCMPUN = $0101 // UNordered + ; FCMPUN = 257 +; inc/sane.plh: 0110: //----------------------------------------------------------- +; inc/sane.plh: 0111: // +; inc/sane.plh: 0112: // Data types +; inc/sane.plh: 0113: // +; inc/sane.plh: 0114: struc t_single +; inc/sane.plh: 0115: byte[3] s_mantissa + ; s_mantissa = 0 +; inc/sane.plh: 0116: byte s_exponent + ; s_exponent = 3 +; inc/sane.plh: 0117: end + ; t_single = 4 +; inc/sane.plh: 0118: struc t_double +; inc/sane.plh: 0119: byte[6] d_mantissa + ; d_mantissa = 0 +; inc/sane.plh: 0120: word d_exponent + ; d_exponent = 6 +; inc/sane.plh: 0121: end + ; t_double = 8 +; inc/sane.plh: 0122: struc t_extended +; inc/sane.plh: 0123: byte[8] x_mantissa + ; x_mantissa = 0 +; inc/sane.plh: 0124: word x_exponent + ; x_exponent = 8 +; inc/sane.plh: 0125: end + ; t_extended = 10 +; inc/sane.plh: 0126: struc t_bigint +; inc/sane.plh: 0127: byte[8] l_int + ; l_int = 0 +; inc/sane.plh: 0128: end + ; t_bigint = 8 +; inc/sane.plh: 0129: // +; inc/sane.plh: 0130: // SANE PLASMA interface +; inc/sane.plh: 0131: // +; inc/sane.plh: 0132: struc t_sane +; inc/sane.plh: 0133: word initFP + ; initFP = 0 +; inc/sane.plh: 0134: word haltFP + ; haltFP = 2 +; inc/sane.plh: 0135: word op0FP + ; op0FP = 4 +; inc/sane.plh: 0136: word op1FP + ; op1FP = 6 +; inc/sane.plh: 0137: word op2FP + ; op2FP = 8 +; inc/sane.plh: 0138: word op3FP + ; op3FP = 10 +; inc/sane.plh: 0139: word op1ELEM + ; op1ELEM = 12 +; inc/sane.plh: 0140: word op2ELEM + ; op2ELEM = 14 +; inc/sane.plh: 0141: word op3ELEM + ; op3ELEM = 16 +; inc/sane.plh: 0142: word saveZP + ; saveZP = 18 +; inc/sane.plh: 0143: word restoreZP + ; restoreZP = 20 +; inc/sane.plh: 0144: end + ; t_sane = 22 +; inc/sane.plh: 0145: end +; libsrc/fpstr.pla: 0005: +; libsrc/fpstr.pla: 0006: include "inc/fpstr.plh" +; inc/fpstr.plh: 0001: import fpstr +; inc/fpstr.plh: 0002: // +; inc/fpstr.plh: 0003: // String formatting bits +; inc/fpstr.plh: 0004: // +; inc/fpstr.plh: 0005: const FPSTR_FIXED = 1 // Fixed count of fractional digits + ; FPSTR_FIXED = 1 +; inc/fpstr.plh: 0006: const FPSTR_FLOAT = 0 // Floating count of fractional digits + ; FPSTR_FLOAT = 0 +; inc/fpstr.plh: 0007: const FPSTR_STRIP = 2 // Strip trailing fractional zeros + ; FPSTR_STRIP = 2 +; inc/fpstr.plh: 0008: const FPSTR_EXP = 4 // Force exponential format + ; FPSTR_EXP = 4 +; inc/fpstr.plh: 0009: const FPSTR_FLEX = 8 // Flexible switch to EXP format if over/underflow + ; FPSTR_FLEX = 8 +; inc/fpstr.plh: 0010: // +; inc/fpstr.plh: 0011: // Parse string into decrecord, return SANE conversion output +; inc/fpstr.plh: 0012: // +; inc/fpstr.plh: 0013: predef str2ext(str, ext)#1 + ; STR2EXT -> X029 +; inc/fpstr.plh: 0014: // +; inc/fpstr.plh: 0015: // Convert extended FP to string using , return string +; inc/fpstr.plh: 0016: // +; inc/fpstr.plh: 0017: predef ext2str(ext, str, intdigits, fracdigits, format)#1 + ; EXT2STR -> X030 +; inc/fpstr.plh: 0018: end +; libsrc/fpstr.pla: 0006: +; libsrc/fpstr.pla: 0007: // +; libsrc/fpstr.pla: 0008: // Structures for DEC2BIN, BIN2DEC +; libsrc/fpstr.pla: 0009: // +; libsrc/fpstr.pla: 0010: struc t_decrecord + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/fpstr.pla: 0011: word sgn + ; sgn = 0 +; libsrc/fpstr.pla: 0012: word exp + ; exp = 2 +; libsrc/fpstr.pla: 0013: byte sig[29] + ; sig = 4 +; libsrc/fpstr.pla: 0014: end + ; t_decrecord = 33 +; libsrc/fpstr.pla: 0015: struc t_decformat +; libsrc/fpstr.pla: 0016: word style + ; style = 0 +; libsrc/fpstr.pla: 0017: word digits + ; digits = 2 +; libsrc/fpstr.pla: 0018: end + ; t_decformat = 4 +; libsrc/fpstr.pla: 0019: // +; libsrc/fpstr.pla: 0020: // Parse string into decrecord, return SANE conversion output +; libsrc/fpstr.pla: 0021: // +; libsrc/fpstr.pla: 0022: export def str2ext(str, ext) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; str -> [0] + ; ext -> [2] +_P029 ; str2ext(str, ext)() +_C000 ; str2ext() +; libsrc/fpstr.pla: 0023: byte i, d + ; i -> [4] + ; d -> [5] +; libsrc/fpstr.pla: 0024: byte decrec[t_decrecord] + ; decrec -> [6] +; libsrc/fpstr.pla: 0025: word sgnadj, expadj + ; sgnadj -> [39] + ; expadj -> [41] +; libsrc/fpstr.pla: 0026: +; libsrc/fpstr.pla: 0027: decrec:sgn = 0 + !BYTE $58,$2B,$02 ; ENTER 43,2 +; libsrc/fpstr.pla: 0028: decrec:exp = 0 +; libsrc/fpstr.pla: 0029: decrec.sig = 0 +; libsrc/fpstr.pla: 0030: i = 1 +; libsrc/fpstr.pla: 0031: // +; libsrc/fpstr.pla: 0032: // Skip whitespace +; libsrc/fpstr.pla: 0033: // +; libsrc/fpstr.pla: 0034: while ^(str+i) <= ' ' and i <= ^str; i++; loop + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $74,$0A ; SLB [10] + !BYTE $02 ; CN 1 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $74,$04 ; SLB [4] +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE +_B004 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/fpstr.pla: 0035: // +; libsrc/fpstr.pla: 0036: // Check for sign +; libsrc/fpstr.pla: 0037: // +; libsrc/fpstr.pla: 0038: if ^(str+i) == '-' +; libsrc/fpstr.pla: 0039: decrec:sgn = 1 +; libsrc/fpstr.pla: 0040: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B005 + !WORD _B005-* + !BYTE $02 ; CN 1 + !BYTE $76,$06 ; SLW [6] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0041: elsif ^(str+i) == '+' + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B005 +; libsrc/fpstr.pla: 0042: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2B ; CB 43 + !BYTE $24 ; BRNE _B007 + !WORD _B007-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0043: fin + !BYTE $74,$04 ; SLB [4] +_B007 +_B006 +; libsrc/fpstr.pla: 0044: // +; libsrc/fpstr.pla: 0045: // Skip leading zeros +; libsrc/fpstr.pla: 0046: // +; libsrc/fpstr.pla: 0047: while i <= ^str and ^(str+i) == '0' + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B008 +; libsrc/fpstr.pla: 0048: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0049: loop + !BYTE $74,$04 ; SLB [4] +_B010 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B011 + !WORD _B011-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B011 + !BYTE $4E ; BRTRU _B008 + !WORD _B008-* +_B009 +; libsrc/fpstr.pla: 0050: // +; libsrc/fpstr.pla: 0051: // Parse number +; libsrc/fpstr.pla: 0052: // +; libsrc/fpstr.pla: 0053: while i <= ^str + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B012 +; libsrc/fpstr.pla: 0054: d = ^(str+i) +; libsrc/fpstr.pla: 0055: if d >= '0' and d <= '9' +; libsrc/fpstr.pla: 0056: // +; libsrc/fpstr.pla: 0057: // Parse digit +; libsrc/fpstr.pla: 0058: // +; libsrc/fpstr.pla: 0059: decrec:sig++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B015 + !WORD _B015-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B015 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0060: decrec.sig[decrec.sig] = d +; libsrc/fpstr.pla: 0061: elsif d == '.' + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$05 ; LLB [5] + !BYTE $28,$0A ; LLA [10] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B016 +; libsrc/fpstr.pla: 0062: // +; libsrc/fpstr.pla: 0063: // Parse decimal point +; libsrc/fpstr.pla: 0064: // +; libsrc/fpstr.pla: 0065: i++ + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B018 + !WORD _B018-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0066: if !decrec:exp +; libsrc/fpstr.pla: 0067: // +; libsrc/fpstr.pla: 0068: // Skip leading zeros +; libsrc/fpstr.pla: 0069: // +; libsrc/fpstr.pla: 0070: while i <= ^str and ^(str+i) == '0' + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $4E ; BRTRU _B019 + !WORD _B019-* + !BYTE $50 ; BRNCH _B023 + !WORD _B023-* +_B021 +; libsrc/fpstr.pla: 0071: decrec:exp-- + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0072: i++ + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0073: loop + !BYTE $74,$04 ; SLB [4] +_B023 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B024 + !WORD _B024-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B024 + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* +_B022 +; libsrc/fpstr.pla: 0074: fin +_B019 +_B020 +; libsrc/fpstr.pla: 0075: while i <= ^str + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B025 +; libsrc/fpstr.pla: 0076: d = ^(str+i) +; libsrc/fpstr.pla: 0077: if d >= '0' and d <= '9' +; libsrc/fpstr.pla: 0078: decrec.sig++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B028 + !WORD _B028-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B028 + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $64,$0A ; LLB [10] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0079: decrec.sig[decrec.sig] = d +; libsrc/fpstr.pla: 0080: decrec:exp-- + !BYTE $74,$0A ; SLB [10] + !BYTE $64,$05 ; LLB [5] + !BYTE $28,$0A ; LLA [10] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0081: elsif d == 'E' or d == 'e' + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +_B029 +; libsrc/fpstr.pla: 0082: i-- + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$45 ; CB 69 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B031 + !WORD _B031-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$65 ; CB 101 + !BYTE $40 ; ISEQ +_B031 + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0083: break + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +; libsrc/fpstr.pla: 0084: else + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +_B032 +; libsrc/fpstr.pla: 0085: i = ^str +; libsrc/fpstr.pla: 0086: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B030 +; libsrc/fpstr.pla: 0087: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0088: loop + !BYTE $74,$04 ; SLB [4] +_B027 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B025 + !WORD _B025-* +_B026 +; libsrc/fpstr.pla: 0089: elsif d == 'E' or d == 'e' + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B018 +; libsrc/fpstr.pla: 0090: // +; libsrc/fpstr.pla: 0091: // Parse exponent +; libsrc/fpstr.pla: 0092: // +; libsrc/fpstr.pla: 0093: i++ + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$45 ; CB 69 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B033 + !WORD _B033-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$65 ; CB 101 + !BYTE $40 ; ISEQ +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0094: expadj = 0 +; libsrc/fpstr.pla: 0095: sgnadj = 1 +; libsrc/fpstr.pla: 0096: if ^(str+i) == '-' +; libsrc/fpstr.pla: 0097: sgnadj = -1 +; libsrc/fpstr.pla: 0098: i++ + !BYTE $74,$04 ; SLB [4] + !BYTE $00 ; CN 0 + !BYTE $76,$29 ; SLW [41] + !BYTE $02 ; CN 1 + !BYTE $76,$27 ; SLW [39] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B035 + !WORD _B035-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$27 ; SLW [39] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0099: elsif ^(str+i) == '+' + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B036 + !WORD _B036-* +_B035 +; libsrc/fpstr.pla: 0100: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2B ; CB 43 + !BYTE $24 ; BRNE _B037 + !WORD _B037-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0101: fin + !BYTE $74,$04 ; SLB [4] +_B037 +_B036 +; libsrc/fpstr.pla: 0102: while i <= ^str + !BYTE $50 ; BRNCH _B040 + !WORD _B040-* +_B038 +; libsrc/fpstr.pla: 0103: d = ^(str+i) +; libsrc/fpstr.pla: 0104: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $74,$05 ; SLB [5] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0105: if d >= '0' and d <= '9' +; libsrc/fpstr.pla: 0106: expadj = expadj * 10 + (d - '0') +; libsrc/fpstr.pla: 0107: else + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B041 + !WORD _B041-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B041 + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $66,$29 ; LLW [41] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $64,$05 ; LLB [5] + !BYTE $3A,$30 ; SUBI 48 + !BYTE $82 ; ADD + !BYTE $76,$29 ; SLW [41] + !BYTE $50 ; BRNCH _B043 + !WORD _B043-* +_B042 +; libsrc/fpstr.pla: 0108: i = ^str +; libsrc/fpstr.pla: 0109: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B043 +; libsrc/fpstr.pla: 0110: loop +_B040 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* +_B039 +; libsrc/fpstr.pla: 0111: decrec:exp = decrec:exp + (sgnadj * expadj) +; libsrc/fpstr.pla: 0112: else + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$27 ; LLW [39] + !BYTE $66,$29 ; LLW [41] + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B034 +; libsrc/fpstr.pla: 0113: i = ^str +; libsrc/fpstr.pla: 0114: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B017 +; libsrc/fpstr.pla: 0115: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0116: loop + !BYTE $74,$04 ; SLB [4] +_B014 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* +_B013 +; libsrc/fpstr.pla: 0117: // +; libsrc/fpstr.pla: 0118: // Strip trailing zeros from sig +; libsrc/fpstr.pla: 0119: // +; libsrc/fpstr.pla: 0120: while decrec.sig > 0 and decrec.sig[decrec.sig] == '0' + !BYTE $50 ; BRNCH _B046 + !WORD _B046-* +_B044 +; libsrc/fpstr.pla: 0121: decrec.sig-- + !BYTE $64,$0A ; LLB [10] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0122: decrec:exp++ + !BYTE $74,$0A ; SLB [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0123: loop + !BYTE $76,$08 ; SLW [8] +_B046 + !BYTE $64,$0A ; LLB [10] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B047 + !WORD _B047-* + !BYTE $28,$0A ; LLA [10] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B047 + !BYTE $4E ; BRTRU _B044 + !WORD _B044-* +_B045 +; libsrc/fpstr.pla: 0124: // +; libsrc/fpstr.pla: 0125: // Check for zero +; libsrc/fpstr.pla: 0126: // +; libsrc/fpstr.pla: 0127: if !decrec.sig +; libsrc/fpstr.pla: 0128: decrec.sig = 1 +; libsrc/fpstr.pla: 0129: decrec.sig.1 = '0' +; libsrc/fpstr.pla: 0130: decrec:sgn = 0 +; libsrc/fpstr.pla: 0131: decrec:exp = 0 +; libsrc/fpstr.pla: 0132: fin + !BYTE $64,$0A ; LLB [10] + !BYTE $4E ; BRTRU _B048 + !WORD _B048-* + !BYTE $02 ; CN 1 + !BYTE $74,$0A ; SLB [10] + !BYTE $2A,$30 ; CB 48 + !BYTE $28,$0A ; LLA [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] +_B048 +_B049 +; libsrc/fpstr.pla: 0133: sane:saveZP() +; libsrc/fpstr.pla: 0134: return sane:restoreZP(sane:op2FP(FFEXT|FOD2B, ext, @decrec)) + !BYTE $6A ; LAW _X028+18 +_F000 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $12 ; CN 9 + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$06 ; LLA [6] + !BYTE $6A ; LAW _X028+8 +_F001 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F002 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$2B ; LEAVE 43 +; libsrc/fpstr.pla: 0135: end +; libsrc/fpstr.pla: 0136: // +; libsrc/fpstr.pla: 0137: // Convert extended FP to string using , return string +; libsrc/fpstr.pla: 0138: // +; libsrc/fpstr.pla: 0139: export def ext2str(ext, str, intdigits, fracdigits, format) + ; ext -> [0] + ; str -> [2] + ; intdigits -> [4] + ; fracdigits -> [6] + ; format -> [8] +_P030 ; ext2str(ext, str, intdigits, fracdigits, format)() +_C001 ; ext2str() +; libsrc/fpstr.pla: 0140: byte d, numdigits + ; d -> [10] + ; numdigits -> [11] +; libsrc/fpstr.pla: 0141: word istr, dp, tens + ; istr -> [12] + ; dp -> [14] + ; tens -> [16] +; libsrc/fpstr.pla: 0142: byte decform[t_decformat] + ; decform -> [18] +; libsrc/fpstr.pla: 0143: byte decrec[t_decrecord] + ; decrec -> [22] +; libsrc/fpstr.pla: 0144: +; libsrc/fpstr.pla: 0145: numdigits = intdigits + fracdigits + !BYTE $58,$37,$05 ; ENTER 55,5 +; libsrc/fpstr.pla: 0146: decform:style = format & FPSTR_FIXED +; libsrc/fpstr.pla: 0147: decform:digits = decform:style ?? fracdigits :: numdigits +; libsrc/fpstr.pla: 0148: decrec:exp = 0 +; libsrc/fpstr.pla: 0149: sane:saveZP() +; libsrc/fpstr.pla: 0150: sane:restoreZP(sane:op3FP(FFEXT|FOB2D, @decrec, ext, @decform)) +; libsrc/fpstr.pla: 0151: ^(str+1) = decrec.sgn ?? '-' :: ' ' +; libsrc/fpstr.pla: 0152: if decrec.sig.1 == 'I' +; libsrc/fpstr.pla: 0153: ^(str+2) = 'I' +; libsrc/fpstr.pla: 0154: ^(str+3) = 'n' +; libsrc/fpstr.pla: 0155: ^(str+4) = 'f' +; libsrc/fpstr.pla: 0156: ^str = 4 +; libsrc/fpstr.pla: 0157: return str + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $6E,$12 ; DLW [18] + !BYTE $4C ; BRFLS _B050 + !WORD _B050-* + !BYTE $66,$06 ; LLW [6] + !BYTE $50 ; BRNCH _B051 + !WORD _B051-* +_B050 + !BYTE $64,$0B ; LLB [11] +_B051 + !BYTE $76,$14 ; SLW [20] + !BYTE $00 ; CN 0 + !BYTE $76,$18 ; SLW [24] + !BYTE $6A ; LAW _X028+18 +_F003 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $16 ; CN 11 + !BYTE $28,$16 ; LLA [22] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$12 ; LLA [18] + !BYTE $6A ; LAW _X028+10 +_F004 !WORD 0+10 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F005 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$16 ; LLB [22] + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $2A,$2D ; CB 45 + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B052 + !BYTE $2A,$20 ; CB 32 +_B053 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$49 ; CB 73 + !BYTE $24 ; BRNE _B054 + !WORD _B054-* + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$6E ; CB 110 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$66 ; CB 102 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; libsrc/fpstr.pla: 0158: fin +_B054 +_B055 +; libsrc/fpstr.pla: 0159: if decrec.sig.1 == 'N' +; libsrc/fpstr.pla: 0160: ^(str+2) = 'N' +; libsrc/fpstr.pla: 0161: ^(str+3) = 'a' +; libsrc/fpstr.pla: 0162: ^(str+4) = 'N' +; libsrc/fpstr.pla: 0163: ^str = 4 +; libsrc/fpstr.pla: 0164: return str + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$4E ; CB 78 + !BYTE $24 ; BRNE _B056 + !WORD _B056-* + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$61 ; CB 97 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; libsrc/fpstr.pla: 0165: fin +_B056 +_B057 +; libsrc/fpstr.pla: 0166: dp = decrec.sig + decrec:exp +; libsrc/fpstr.pla: 0167: if format & FPSTR_EXP +; libsrc/fpstr.pla: 0168: if format & FPSTR_STRIP +; libsrc/fpstr.pla: 0169: // +; libsrc/fpstr.pla: 0170: // Strip off trailing fractional zeros +; libsrc/fpstr.pla: 0171: // +; libsrc/fpstr.pla: 0172: while decrec.sig > 1 and decrec.sig[decrec.sig] == '0' + !BYTE $64,$1A ; LLB [26] + !BYTE $B2,$18 ; ADDLW [24] + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $50 ; BRNCH _B064 + !WORD _B064-* +_B062 +; libsrc/fpstr.pla: 0173: decrec.sig-- + !BYTE $64,$1A ; LLB [26] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0174: decrec:exp++ + !BYTE $74,$1A ; SLB [26] + !BYTE $66,$18 ; LLW [24] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0175: loop + !BYTE $76,$18 ; SLW [24] +_B064 + !BYTE $64,$1A ; LLB [26] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B065 + !WORD _B065-* + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$1A ; ADDLB [26] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B065 + !BYTE $4E ; BRTRU _B062 + !WORD _B062-* +_B063 +; libsrc/fpstr.pla: 0176: fin +_B060 +_B061 +; libsrc/fpstr.pla: 0177: // +; libsrc/fpstr.pla: 0178: // Copy over all significant digits +; libsrc/fpstr.pla: 0179: // +; libsrc/fpstr.pla: 0180: ^(str+2) = decrec.sig.1 +; libsrc/fpstr.pla: 0181: ^(str+3) = '.' +; libsrc/fpstr.pla: 0182: istr = str + 3 +; libsrc/fpstr.pla: 0183: for d = 2 to decrec.sig + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$2E ; CB 46 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$0C ; SLW [12] + !BYTE $64,$1A ; LLB [26] + !BYTE $04 ; CN 2 + !BYTE $A0 ; BRGT _B066 + !WORD _B066-* +_B067 + !BYTE $6C,$0A ; DLB [10] +; libsrc/fpstr.pla: 0184: istr++ + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0185: ^istr = decrec.sig[d] +; libsrc/fpstr.pla: 0186: next + !BYTE $76,$0C ; SLW [12] + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $60 ; LB + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB +_B068 + !BYTE $A4 ; INCBRLE _B067 + !WORD _B067-* +_B066 + !BYTE $74,$0A ; SLB [10] + !BYTE $30 ; DROP +; libsrc/fpstr.pla: 0187: if ^istr == '.'; istr--; fin + !BYTE $66,$0C ; LLW [12] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B069 + !WORD _B069-* + !BYTE $66,$0C ; LLW [12] + !BYTE $8E ; DECR + !BYTE $76,$0C ; SLW [12] +_B069 +_B070 +; libsrc/fpstr.pla: 0188: // +; libsrc/fpstr.pla: 0189: // Print exponent as 4 digits with leading zeros +; libsrc/fpstr.pla: 0190: // +; libsrc/fpstr.pla: 0191: istr++ + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0192: ^istr = 'E' +; libsrc/fpstr.pla: 0193: istr++ + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$45 ; CB 69 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0194: dp-- + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0195: if dp < 0 +; libsrc/fpstr.pla: 0196: ^istr = '-' +; libsrc/fpstr.pla: 0197: dp = -dp +; libsrc/fpstr.pla: 0198: else + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $2A,$2D ; CB 45 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $76,$0E ; SLW [14] + !BYTE $50 ; BRNCH _B072 + !WORD _B072-* +_B071 +; libsrc/fpstr.pla: 0199: ^istr = '+' +; libsrc/fpstr.pla: 0200: fin + !BYTE $2A,$2B ; CB 43 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB +_B072 +; libsrc/fpstr.pla: 0201: tens = 1000 +; libsrc/fpstr.pla: 0202: while tens + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B075 + !WORD _B075-* +_B073 +; libsrc/fpstr.pla: 0203: istr++ + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0204: ^istr = (dp / tens) + '0' +; libsrc/fpstr.pla: 0205: dp = dp % tens +; libsrc/fpstr.pla: 0206: tens = tens / 10 +; libsrc/fpstr.pla: 0207: loop + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $88 ; DIV + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $8A ; MOD + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $76,$10 ; SLW [16] +_B075 + !BYTE $66,$10 ; LLW [16] + !BYTE $4E ; BRTRU _B073 + !WORD _B073-* +_B074 +; libsrc/fpstr.pla: 0208: else + !BYTE $50 ; BRNCH _B059 + !WORD _B059-* +_B058 +; libsrc/fpstr.pla: 0209: if format & FPSTR_STRIP and decrec:exp < 0 +; libsrc/fpstr.pla: 0210: // +; libsrc/fpstr.pla: 0211: // Strip off trailing fractional zeros +; libsrc/fpstr.pla: 0212: // +; libsrc/fpstr.pla: 0213: while decrec.sig > dp and decrec.sig[decrec.sig] == '0' + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $AC ; BRAND _B076 + !WORD _B076-* + !BYTE $66,$18 ; LLW [24] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT +_B076 + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B079 +; libsrc/fpstr.pla: 0214: decrec.sig-- + !BYTE $64,$1A ; LLB [26] + !BYTE $8E ; DECR +; libsrc/fpstr.pla: 0215: decrec:exp++ + !BYTE $74,$1A ; SLB [26] + !BYTE $66,$18 ; LLW [24] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0216: loop + !BYTE $76,$18 ; SLW [24] +_B081 + !BYTE $64,$1A ; LLB [26] + !BYTE $66,$0E ; LLW [14] + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B082 + !WORD _B082-* + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$1A ; ADDLB [26] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B082 + !BYTE $4E ; BRTRU _B079 + !WORD _B079-* +_B080 +; libsrc/fpstr.pla: 0217: fin +_B077 +_B078 +; libsrc/fpstr.pla: 0218: if decrec:sig == 1 | '0'<<8 +; libsrc/fpstr.pla: 0219: // +; libsrc/fpstr.pla: 0220: // Case of zero or underflow +; libsrc/fpstr.pla: 0221: // +; libsrc/fpstr.pla: 0222: if decrec:exp == 0 +; libsrc/fpstr.pla: 0223: // +; libsrc/fpstr.pla: 0224: // Zero +; libsrc/fpstr.pla: 0225: // +; libsrc/fpstr.pla: 0226: if format & FPSTR_FIXED +; libsrc/fpstr.pla: 0227: // +; libsrc/fpstr.pla: 0228: // Add trailing fractional zeros +; libsrc/fpstr.pla: 0229: // +; libsrc/fpstr.pla: 0230: dp = 1 - fracdigits +; libsrc/fpstr.pla: 0231: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $2C,$01,$30 ; CW 12289 + !BYTE $24 ; BRNE _B083 + !WORD _B083-* + !BYTE $66,$18 ; LLW [24] + !BYTE $4E ; BRTRU _B085 + !WORD _B085-* + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B087 + !WORD _B087-* + !BYTE $02 ; CN 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$0E ; SLW [14] +_B087 +_B088 +; libsrc/fpstr.pla: 0232: elsif format & FPSTR_FLEX + !BYTE $50 ; BRNCH _B086 + !WORD _B086-* +_B085 +; libsrc/fpstr.pla: 0233: // +; libsrc/fpstr.pla: 0234: // Underflow +; libsrc/fpstr.pla: 0235: // +; libsrc/fpstr.pla: 0236: dp = -fracdigits - 1 +; libsrc/fpstr.pla: 0237: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* + !BYTE $66,$06 ; LLW [6] + !BYTE $90 ; NEG + !BYTE $8E ; DECR + !BYTE $76,$0E ; SLW [14] +_B089 +_B086 +; libsrc/fpstr.pla: 0238: fin +_B083 +_B084 +; libsrc/fpstr.pla: 0239: if format & FPSTR_FLEX and (dp < -fracdigits or dp > (format & FPSTR_FIXED ?? intdigits :: numdigits)) +; libsrc/fpstr.pla: 0240: // +; libsrc/fpstr.pla: 0241: // Print as exponent if over/underflow fixed digits +; libsrc/fpstr.pla: 0242: // +; libsrc/fpstr.pla: 0243: if numdigits < 7; numdigits = 7; fin + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $AC ; BRAND _B090 + !WORD _B090-* + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $90 ; NEG + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B091 + !WORD _B091-* + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B092 + !WORD _B092-* + !BYTE $66,$04 ; LLW [4] + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +_B092 + !BYTE $64,$0B ; LLB [11] +_B093 + !BYTE $44 ; ISGT +_B091 +_B090 + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $64,$0B ; LLB [11] + !BYTE $0E ; CN 7 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $0E ; CN 7 + !BYTE $74,$0B ; SLB [11] +_B096 +_B097 +; libsrc/fpstr.pla: 0244: return ext2str(ext, str, 1, numdigits - 7, FPSTR_EXP | (format & FPSTR_STRIP)) + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $64,$0B ; LLB [11] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $08 ; CN 4 + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $96 ; OR + !BYTE $54 ; CALL _C001 +_F006 !WORD _C001 + !BYTE $5A,$37 ; LEAVE 55 +; libsrc/fpstr.pla: 0245: fin +_B094 +_B095 +; libsrc/fpstr.pla: 0246: // +; libsrc/fpstr.pla: 0247: // Convert as floating point +; libsrc/fpstr.pla: 0248: // +; libsrc/fpstr.pla: 0249: if dp <= 0 +; libsrc/fpstr.pla: 0250: *(str+2) = '0'|('.'<<8) +; libsrc/fpstr.pla: 0251: istr = str + 3 +; libsrc/fpstr.pla: 0252: while dp < 0 + !BYTE $66,$0E ; LLW [14] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B098 + !WORD _B098-* + !BYTE $2C,$30,$2E ; CW 11824 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B102 + !WORD _B102-* +_B100 +; libsrc/fpstr.pla: 0253: dp++ + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0254: istr++ + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0255: ^istr = '0' +; libsrc/fpstr.pla: 0256: loop + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB +_B102 + !BYTE $66,$0E ; LLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B100 + !WORD _B100-* +_B101 +; libsrc/fpstr.pla: 0257: else + !BYTE $50 ; BRNCH _B099 + !WORD _B099-* +_B098 +; libsrc/fpstr.pla: 0258: istr = str + 1 +; libsrc/fpstr.pla: 0259: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $76,$0C ; SLW [12] +_B099 +; libsrc/fpstr.pla: 0260: for d = 1 to decrec.sig + !BYTE $64,$1A ; LLB [26] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B103 + !WORD _B103-* +_B104 + !BYTE $6C,$0A ; DLB [10] +; libsrc/fpstr.pla: 0261: istr++ + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0262: ^istr = decrec.sig[d] +; libsrc/fpstr.pla: 0263: if d == dp +; libsrc/fpstr.pla: 0264: istr++ + !BYTE $76,$0C ; SLW [12] + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $60 ; LB + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB + !BYTE $64,$0A ; LLB [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $24 ; BRNE _B106 + !WORD _B106-* + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR +; libsrc/fpstr.pla: 0265: ^istr = '.' +; libsrc/fpstr.pla: 0266: fin + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$2E ; CB 46 + !BYTE $66,$0C ; LLW [12] + !BYTE $70 ; SB +_B106 +_B107 +; libsrc/fpstr.pla: 0267: next +_B105 + !BYTE $A4 ; INCBRLE _B104 + !WORD _B104-* +_B103 + !BYTE $74,$0A ; SLB [10] + !BYTE $30 ; DROP +; libsrc/fpstr.pla: 0268: if ^istr == '.'; istr--; fin + !BYTE $66,$0C ; LLW [12] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B108 + !WORD _B108-* + !BYTE $66,$0C ; LLW [12] + !BYTE $8E ; DECR + !BYTE $76,$0C ; SLW [12] +_B108 +_B109 +; libsrc/fpstr.pla: 0269: fin +_B059 +; libsrc/fpstr.pla: 0270: ^str = istr - str +; libsrc/fpstr.pla: 0271: return str + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; libsrc/fpstr.pla: 0272: end +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: STR2EXT + !BYTE $D3,$D4,$D2,$B2,$C5,$D8,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: EXT2STR + !BYTE $C5,$D8,$D4,$B2,$D3,$D4,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/fpu.a b/src/libsrc/fpu.a new file mode 100644 index 0000000..791eef3 --- /dev/null +++ b/src/libsrc/fpu.a @@ -0,0 +1,3871 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/fpu.pla: 0001: // +; libsrc/fpu.pla: 0002: // SANE stack-based Floating Point Unit library +; libsrc/fpu.pla: 0003: // +; libsrc/fpu.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/fpu.pla: 0004: +; libsrc/fpu.pla: 0005: include "inc/sane.plh" +; inc/sane.plh: 0001: import sane + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + ; SANE -> X028 +; inc/sane.plh: 0002: //----------------------------------------------------------- +; inc/sane.plh: 0003: // Operation code masks. +; inc/sane.plh: 0004: //----------------------------------------------------------- +; inc/sane.plh: 0005: const FOADD = $0000 // add + ; FOADD = 0 +; inc/sane.plh: 0006: const FOSUB = $0002 // subtract + ; FOSUB = 2 +; inc/sane.plh: 0007: const FOMUL = $0004 // multiply + ; FOMUL = 4 +; inc/sane.plh: 0008: const FODIV = $0006 // divide + ; FODIV = 6 +; inc/sane.plh: 0009: const FOCMP = $0008 // compare, no exception from unordered + ; FOCMP = 8 +; inc/sane.plh: 0010: const FOCPX = $000A // compare, signal invalid if unordered + ; FOCPX = 10 +; inc/sane.plh: 0011: const FOREM = $000C // remainder + ; FOREM = 12 +; inc/sane.plh: 0012: const FOZ2X = $000E // convert to extended + ; FOZ2X = 14 +; inc/sane.plh: 0013: const FOX2Z = $0010 // convert from extended + ; FOX2Z = 16 +; inc/sane.plh: 0014: const FOSQRT = $0012 // square root + ; FOSQRT = 18 +; inc/sane.plh: 0015: const FORTI = $0014 // round to integral value + ; FORTI = 20 +; inc/sane.plh: 0016: const FOTTI = $0016 // truncate to integral value + ; FOTTI = 22 +; inc/sane.plh: 0017: const FOSCALB = $0018 // binary scale + ; FOSCALB = 24 +; inc/sane.plh: 0018: const FOLOGB = $001A // binary log + ; FOLOGB = 26 +; inc/sane.plh: 0019: const FOCLASS = $001C // classify + ; FOCLASS = 28 +; inc/sane.plh: 0020: const FONEXT = $001E // next-after + ; FONEXT = 30 +; inc/sane.plh: 0021: // +; inc/sane.plh: 0022: const FOSETENV = $0001 // set environment + ; FOSETENV = 1 +; inc/sane.plh: 0023: const FOGETENV = $0003 // get environment + ; FOGETENV = 3 +; inc/sane.plh: 0024: const FOSETHV = $0005 // set halt vector + ; FOSETHV = 5 +; inc/sane.plh: 0025: const FOGETHV = $0007 // get halt vector + ; FOGETHV = 7 +; inc/sane.plh: 0026: const FOD2B = $0009 // convert decimal to binary + ; FOD2B = 9 +; inc/sane.plh: 0027: const FOB2D = $000B // convert binary to decimal + ; FOB2D = 11 +; inc/sane.plh: 0028: const FONEG = $000D // negate + ; FONEG = 13 +; inc/sane.plh: 0029: const FOABS = $000F // absolute value + ; FOABS = 15 +; inc/sane.plh: 0030: const FOCPYSGN = $0011 // copy sign + ; FOCPYSGN = 17 +; inc/sane.plh: 0031: // UNDEFINED = $0013 +; inc/sane.plh: 0032: const FOSETXCP = $0015 // set exception + ; FOSETXCP = 21 +; inc/sane.plh: 0033: const FOPROCENTRY = $0017 // procedure-entry + ; FOPROCENTRY = 23 +; inc/sane.plh: 0034: const FOPROCEXIT = $0019 // procedure-exit + ; FOPROCEXIT = 25 +; inc/sane.plh: 0035: const FOTESTXCP = $001B // test exception + ; FOTESTXCP = 27 +; inc/sane.plh: 0036: // UNDEFINED = $001D +; inc/sane.plh: 0037: // UNDEFINED = $001F +; inc/sane.plh: 0038: //----------------------------------------------------------- +; inc/sane.plh: 0039: // Operand format masks. +; inc/sane.plh: 0040: //----------------------------------------------------------- +; inc/sane.plh: 0041: const FFEXT = $0000 // extended -- 80-bit float + ; FFEXT = 0 +; inc/sane.plh: 0042: const FFDBL = $0100 // double -- 64-bit float + ; FFDBL = 256 +; inc/sane.plh: 0043: const FFSGL = $0200 // single -- 32-bit float + ; FFSGL = 512 +; inc/sane.plh: 0044: // UNDEFINED = $0300 +; inc/sane.plh: 0045: const FFINT = $0400 // integer -- 16-bit integer + ; FFINT = 1024 +; inc/sane.plh: 0046: const FFCOMP = $0500 // comp -- 64-bit integer + ; FFCOMP = 1280 +; inc/sane.plh: 0047: // UNDEFINED = $0600 +; inc/sane.plh: 0048: // UNDEFINED = $0700 +; inc/sane.plh: 0049: //----------------------------------------------------------- +; inc/sane.plh: 0050: // Class. +; inc/sane.plh: 0051: //----------------------------------------------------------- +; inc/sane.plh: 0052: const FCSNAN = $FC // -4: signaling NAN + ; FCSNAN = 252 +; inc/sane.plh: 0053: const FCQNAN = $FD // -3: quiet NAN + ; FCQNAN = 253 +; inc/sane.plh: 0054: const FCINF = $FE // -2: infinite + ; FCINF = 254 +; inc/sane.plh: 0055: const FCZERO = $FF // -1: zero + ; FCZERO = 255 +; inc/sane.plh: 0056: const FCNORM = $00 // 0: normal + ; FCNORM = 0 +; inc/sane.plh: 0057: const FCDENORM = $01 // 1: denormal + ; FCDENORM = 1 +; inc/sane.plh: 0058: //----------------------------------------------------------- +; inc/sane.plh: 0059: // Exceptions. +; inc/sane.plh: 0060: //----------------------------------------------------------- +; inc/sane.plh: 0061: const FBINVALID = $01 + ; FBINVALID = 1 +; inc/sane.plh: 0062: const FBUFLOW = $02 + ; FBUFLOW = 2 +; inc/sane.plh: 0063: const FBOFLOW = $04 + ; FBOFLOW = 4 +; inc/sane.plh: 0064: const FBDIVZER = $08 + ; FBDIVZER = 8 +; inc/sane.plh: 0065: const FBINEXACT = $10 + ; FBINEXACT = 16 +; inc/sane.plh: 0066: //----------------------------------------------------------- +; inc/sane.plh: 0067: // Elementary function operation code masks. +; inc/sane.plh: 0068: //----------------------------------------------------------- +; inc/sane.plh: 0069: const FOLNX = $0000 // base-e log + ; FOLNX = 0 +; inc/sane.plh: 0070: const FOLOG2X = $0002 // base-2 log + ; FOLOG2X = 2 +; inc/sane.plh: 0071: const FOLN1X = $0004 // ln (1 + x) + ; FOLN1X = 4 +; inc/sane.plh: 0072: const FOLOG21X = $0006 // log2 (1 + x) + ; FOLOG21X = 6 +; inc/sane.plh: 0073: const FOEXPX = $0008 // base-e exponential + ; FOEXPX = 8 +; inc/sane.plh: 0074: const FOEXP2X = $000A // base-2 exponential + ; FOEXP2X = 10 +; inc/sane.plh: 0075: const FOEXP1X = $000C // exp (x) - 1 + ; FOEXP1X = 12 +; inc/sane.plh: 0076: const FOEXP21X = $000E // exp2 (x) - 1 + ; FOEXP21X = 14 +; inc/sane.plh: 0077: const FOXPWRI = $0010 // integer exponentiation + ; FOXPWRI = 16 +; inc/sane.plh: 0078: const FOXPWRY = $0012 // general exponentiation + ; FOXPWRY = 18 +; inc/sane.plh: 0079: const FOCOMPND = $0014 // compound + ; FOCOMPND = 20 +; inc/sane.plh: 0080: const FOANNUIT = $0016 // annuity + ; FOANNUIT = 22 +; inc/sane.plh: 0081: const FOATANX = $0018 // arctangent + ; FOATANX = 24 +; inc/sane.plh: 0082: const FOSINX = $001A // sine + ; FOSINX = 26 +; inc/sane.plh: 0083: const FOCOSX = $001C // cosine + ; FOCOSX = 28 +; inc/sane.plh: 0084: const FOTANX = $001E // tangent + ; FOTANX = 30 +; inc/sane.plh: 0085: const FORANDX = $0020 // random + ; FORANDX = 32 +; inc/sane.plh: 0086: //----------------------------------------------------------- +; inc/sane.plh: 0087: // NaN error codes. +; inc/sane.plh: 0088: //----------------------------------------------------------- +; inc/sane.plh: 0089: const NANSQRT = 1 // Invalid square root such as sqrt(-1). + ; NANSQRT = 1 +; inc/sane.plh: 0090: const NANADD = 2 // Invalid addition such as +INF - +INF. + ; NANADD = 2 +; inc/sane.plh: 0091: const NANDIV = 4 // Invalid division such as 0/0. + ; NANDIV = 4 +; inc/sane.plh: 0092: const NANMUL = 8 // Invalid multiply such as 0 * INF. + ; NANMUL = 8 +; inc/sane.plh: 0093: const NANREM = 9 // Invalid remainder or mod such as x REM 0. + ; NANREM = 9 +; inc/sane.plh: 0094: const NANASCBIN = 17 // Attempt to convert invalid ASCII string. + ; NANASCBIN = 17 +; inc/sane.plh: 0095: const NANCOMP = 20 // Result of converting comp NaN to floating. + ; NANCOMP = 20 +; inc/sane.plh: 0096: const NANZERO = 21 // Attempt to create a NaN with a zero code. + ; NANZERO = 21 +; inc/sane.plh: 0097: const NANTRIG = 33 // Invalid argument to trig routine. + ; NANTRIG = 33 +; inc/sane.plh: 0098: const NANINVTRIG = 34 // Invalid argument to inverse trig routine. + ; NANINVTRIG = 34 +; inc/sane.plh: 0099: const NANLOG = 36 // Invalid argument to log routine. + ; NANLOG = 36 +; inc/sane.plh: 0100: const NANPOWER = 37 // Invalid argument to x^i or x^y routine. + ; NANPOWER = 37 +; inc/sane.plh: 0101: const NANFINAN = 38 // Invalid argument to financial function. + ; NANFINAN = 38 +; inc/sane.plh: 0102: const NANINIT = 255 // Uninitialized storage. + ; NANINIT = 255 +; inc/sane.plh: 0103: //----------------------------------------------------------- +; inc/sane.plh: 0104: // Comparison results. +; inc/sane.plh: 0105: //----------------------------------------------------------- +; inc/sane.plh: 0106: const FCMPGT = $4040 // Greater Than + ; FCMPGT = 16448 +; inc/sane.plh: 0107: const FCMPLT = $8080 // Less Than + ; FCMPLT = 32896 +; inc/sane.plh: 0108: const FCMPEQ = $0002 // EQual + ; FCMPEQ = 2 +; inc/sane.plh: 0109: const FCMPUN = $0101 // UNordered + ; FCMPUN = 257 +; inc/sane.plh: 0110: //----------------------------------------------------------- +; inc/sane.plh: 0111: // +; inc/sane.plh: 0112: // Data types +; inc/sane.plh: 0113: // +; inc/sane.plh: 0114: struc t_single +; inc/sane.plh: 0115: byte[3] s_mantissa + ; s_mantissa = 0 +; inc/sane.plh: 0116: byte s_exponent + ; s_exponent = 3 +; inc/sane.plh: 0117: end + ; t_single = 4 +; inc/sane.plh: 0118: struc t_double +; inc/sane.plh: 0119: byte[6] d_mantissa + ; d_mantissa = 0 +; inc/sane.plh: 0120: word d_exponent + ; d_exponent = 6 +; inc/sane.plh: 0121: end + ; t_double = 8 +; inc/sane.plh: 0122: struc t_extended +; inc/sane.plh: 0123: byte[8] x_mantissa + ; x_mantissa = 0 +; inc/sane.plh: 0124: word x_exponent + ; x_exponent = 8 +; inc/sane.plh: 0125: end + ; t_extended = 10 +; inc/sane.plh: 0126: struc t_bigint +; inc/sane.plh: 0127: byte[8] l_int + ; l_int = 0 +; inc/sane.plh: 0128: end + ; t_bigint = 8 +; inc/sane.plh: 0129: // +; inc/sane.plh: 0130: // SANE PLASMA interface +; inc/sane.plh: 0131: // +; inc/sane.plh: 0132: struc t_sane +; inc/sane.plh: 0133: word initFP + ; initFP = 0 +; inc/sane.plh: 0134: word haltFP + ; haltFP = 2 +; inc/sane.plh: 0135: word op0FP + ; op0FP = 4 +; inc/sane.plh: 0136: word op1FP + ; op1FP = 6 +; inc/sane.plh: 0137: word op2FP + ; op2FP = 8 +; inc/sane.plh: 0138: word op3FP + ; op3FP = 10 +; inc/sane.plh: 0139: word op1ELEM + ; op1ELEM = 12 +; inc/sane.plh: 0140: word op2ELEM + ; op2ELEM = 14 +; inc/sane.plh: 0141: word op3ELEM + ; op3ELEM = 16 +; inc/sane.plh: 0142: word saveZP + ; saveZP = 18 +; inc/sane.plh: 0143: word restoreZP + ; restoreZP = 20 +; inc/sane.plh: 0144: end + ; t_sane = 22 +; inc/sane.plh: 0145: end +; libsrc/fpu.pla: 0005: +; libsrc/fpu.pla: 0006: include "inc/fpstr.plh" +; inc/fpstr.plh: 0001: import fpstr + ; DCI STRING: FPSTR + !BYTE $C6,$D0,$D3,$D4,$52 + ; FPSTR -> X029 +; inc/fpstr.plh: 0002: // +; inc/fpstr.plh: 0003: // String formatting bits +; inc/fpstr.plh: 0004: // +; inc/fpstr.plh: 0005: const FPSTR_FIXED = 1 // Fixed count of fractional digits + ; FPSTR_FIXED = 1 +; inc/fpstr.plh: 0006: const FPSTR_FLOAT = 0 // Floating count of fractional digits + ; FPSTR_FLOAT = 0 +; inc/fpstr.plh: 0007: const FPSTR_STRIP = 2 // Strip trailing fractional zeros + ; FPSTR_STRIP = 2 +; inc/fpstr.plh: 0008: const FPSTR_EXP = 4 // Force exponential format + ; FPSTR_EXP = 4 +; inc/fpstr.plh: 0009: const FPSTR_FLEX = 8 // Flexible switch to EXP format if over/underflow + ; FPSTR_FLEX = 8 +; inc/fpstr.plh: 0010: // +; inc/fpstr.plh: 0011: // Parse string into decrecord, return SANE conversion output +; inc/fpstr.plh: 0012: // +; inc/fpstr.plh: 0013: predef str2ext(str, ext)#1 + ; STR2EXT -> X030 +; inc/fpstr.plh: 0014: // +; inc/fpstr.plh: 0015: // Convert extended FP to string using , return string +; inc/fpstr.plh: 0016: // +; inc/fpstr.plh: 0017: predef ext2str(ext, str, intdigits, fracdigits, format)#1 + ; EXT2STR -> X031 +; inc/fpstr.plh: 0018: end +; libsrc/fpu.pla: 0006: +; libsrc/fpu.pla: 0007: // +; libsrc/fpu.pla: 0008: // External interface to FPU library +; libsrc/fpu.pla: 0009: // +; libsrc/fpu.pla: 0010: predef reset, getEnv, setEnv(env), testExcept(except), setExcept(except), enterProc(pEnv), exitProc(env) + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/fpu.pla: 0011: predef constPi, constE +; libsrc/fpu.pla: 0012: predef pushInt(pInt), pushSgl(pSgl), pushDbl(pDbl), pushExt(pExt), pushStr(pStr) +; libsrc/fpu.pla: 0013: predef pullInt(pInt), pullSgl(pSgl), pullDbl(pDbl), pullExt(pExt), pullStr(pStr,intdigits,fracdigits,format) +; libsrc/fpu.pla: 0014: predef loadInt(pInt,reg), loadSgl(pSgl,reg), loadDbl(pDbl,reg), loadExt(pExt,reg), loadStr(pStr,reg) +; libsrc/fpu.pla: 0015: predef storInt(pInt,reg), storSgl(pSgl,reg), storDbl(pDbl,reg), storExt(pExt,reg), storStr(pStr,intdigits,fracdigits,format,reg) +; libsrc/fpu.pla: 0016: predef shiftUp, shiftDown, rotateUp, rotateDown, dup, swap, clear +; libsrc/fpu.pla: 0017: predef add, sub, mul, div, rem +; libsrc/fpu.pla: 0018: predef neg, abs, type, cmp, logb, scalb(scale), trunc, round, sqrt, squared +; libsrc/fpu.pla: 0019: predef cos, sin, tan, atan +; libsrc/fpu.pla: 0020: predef log2X, log21X, lnX, ln1X, pow2X, pow21X, powEX, powE1X, powE21X, powXInt(powInt), powXY +; libsrc/fpu.pla: 0021: predef compXY, annuityXY, randNum(pSeed) +; libsrc/fpu.pla: 0022: // +; libsrc/fpu.pla: 0023: // FP6502 functions +; libsrc/fpu.pla: 0024: // +; libsrc/fpu.pla: 0025: //export word fpu = @reset +; libsrc/fpu.pla: 0026: word fpu = @reset +_D101 ; fpu = @reset +_F000 !WORD _P000 +; libsrc/fpu.pla: 0027: word = @setEnv, @getEnv, @testExcept, @setExcept, @enterProc, @exitProc +_F001 !WORD _P002 +_F002 !WORD _P001 +_F003 !WORD _P003 +_F004 !WORD _P004 +_F005 !WORD _P005 +_F006 !WORD _P006 +; libsrc/fpu.pla: 0028: word = @constPi, @constE +_F007 !WORD _P007 +_F008 !WORD _P008 +; libsrc/fpu.pla: 0029: word = @pushInt, @pushSgl, @pushDbl, @pushExt, @pushStr +_F009 !WORD _P009 +_F010 !WORD _P010 +_F011 !WORD _P011 +_F012 !WORD _P012 +_F013 !WORD _P013 +; libsrc/fpu.pla: 0030: word = @pullInt, @pullSgl, @pullDbl, @pullExt, @pullStr +_F014 !WORD _P014 +_F015 !WORD _P015 +_F016 !WORD _P016 +_F017 !WORD _P017 +_F018 !WORD _P018 +; libsrc/fpu.pla: 0031: word = @loadInt, @loadSgl, @loadDbl, @loadExt, @loadStr +_F019 !WORD _P019 +_F020 !WORD _P020 +_F021 !WORD _P021 +_F022 !WORD _P022 +_F023 !WORD _P023 +; libsrc/fpu.pla: 0032: word = @storInt, @storSgl, @storDbl, @storExt, @storStr +_F024 !WORD _P024 +_F025 !WORD _P025 +_F026 !WORD _P026 +_F027 !WORD _P027 +_F028 !WORD _P028 +; libsrc/fpu.pla: 0033: word = @shiftUp, @shiftDown, @rotateUp, @rotateDown, @dup, @swap, @clear +_F029 !WORD _P029 +_F030 !WORD _P030 +_F031 !WORD _P031 +_F032 !WORD _P032 +_F033 !WORD _P033 +_F034 !WORD _P034 +_F035 !WORD _P035 +; libsrc/fpu.pla: 0034: word = @add, @sub, @mul, @div, @rem +_F036 !WORD _P036 +_F037 !WORD _P037 +_F038 !WORD _P038 +_F039 !WORD _P039 +_F040 !WORD _P040 +; libsrc/fpu.pla: 0035: word = @neg, @abs, @type, @cmp +_F041 !WORD _P041 +_F042 !WORD _P042 +_F043 !WORD _P043 +_F044 !WORD _P044 +; libsrc/fpu.pla: 0036: word = @logb, @scalb, @trunc, @round, @sqrt, @squared +_F045 !WORD _P045 +_F046 !WORD _P046 +_F047 !WORD _P047 +_F048 !WORD _P048 +_F049 !WORD _P049 +_F050 !WORD _P050 +; libsrc/fpu.pla: 0037: // +; libsrc/fpu.pla: 0038: // ELEMS6502 functions +; libsrc/fpu.pla: 0039: // +; libsrc/fpu.pla: 0040: word = @cos, @sin, @tan, @atan +_F051 !WORD _P051 +_F052 !WORD _P052 +_F053 !WORD _P053 +_F054 !WORD _P054 +; libsrc/fpu.pla: 0041: word = @log2X, @log21X, @lnX, @ln1X, @pow2X, @pow21X, @powEX, @powE1X, @powE21X, @powXInt, @powXY +_F055 !WORD _P055 +_F056 !WORD _P056 +_F057 !WORD _P057 +_F058 !WORD _P058 +_F059 !WORD _P059 +_F060 !WORD _P060 +_F061 !WORD _P061 +_F062 !WORD _P062 +_F063 !WORD _P063 +_F064 !WORD _P064 +_F065 !WORD _P065 +; libsrc/fpu.pla: 0042: word = @compXY, @annuityXY, @randNum +_F066 !WORD _P066 +_F067 !WORD _P067 +_F068 !WORD _P068 +; libsrc/fpu.pla: 0043: // +; libsrc/fpu.pla: 0044: // Useful constants +; libsrc/fpu.pla: 0045: // +; libsrc/fpu.pla: 0046: byte ext_pi[t_extended] = $35,$C2,$68,$21,$A2,$DA,$0F,$C9,$00,$40 +_D102 ; ext_pi[t_extended] = $35,$C2,$68,$21,$A2,$DA,$0F,$C9,$00,$40 + !BYTE $35 + !BYTE $C2 + !BYTE $68 + !BYTE $21 + !BYTE $A2 + !BYTE $DA + !BYTE $0F + !BYTE $C9 + !BYTE $00 + !BYTE $40 +; libsrc/fpu.pla: 0047: byte ext_e[t_extended] = $9B,$4A,$BB,$A2,$5B,$54,$F8,$AD,$00,$40 +_D103 ; ext_e[t_extended] = $9B,$4A,$BB,$A2,$5B,$54,$F8,$AD,$00,$40 + !BYTE $9B + !BYTE $4A + !BYTE $BB + !BYTE $A2 + !BYTE $5B + !BYTE $54 + !BYTE $F8 + !BYTE $AD + !BYTE $00 + !BYTE $40 +; libsrc/fpu.pla: 0048: // +; libsrc/fpu.pla: 0049: // FP Stack +; libsrc/fpu.pla: 0050: // +; libsrc/fpu.pla: 0051: byte stack[t_extended*4] +_D104 !FILL 40 ; stack[t_extended*4] +; libsrc/fpu.pla: 0052: word stackRegs[4] +_D105 !FILL 8 ; stackRegs[4] +; libsrc/fpu.pla: 0053: // +; libsrc/fpu.pla: 0054: // Environment access +; libsrc/fpu.pla: 0055: // +; libsrc/fpu.pla: 0056: def setEnv(env) +_SUBSEG ; BYTECODE STARTS + ; env -> [0] +_P002 ; setEnv(env)() +_C000 ; setEnv() +; libsrc/fpu.pla: 0057: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0058: return sane:restoreZP(sane:op1FP(FOSETENV, env)) + !BYTE $6A ; LAW _X028+18 +_F069 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+6 +_F070 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F071 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0059: end +; libsrc/fpu.pla: 0060: def getEnv +_P001 ; getEnv() +_C001 ; getEnv() +; libsrc/fpu.pla: 0061: sane:saveZP() +; libsrc/fpu.pla: 0062: return sane:restoreZP(sane:op0FP(FOGETENV)) + !BYTE $6A ; LAW _X028+18 +_F072 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X028+4 +_F073 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F074 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0063: end +; libsrc/fpu.pla: 0064: def testExcept(except) + ; except -> [0] +_P003 ; testExcept(except)() +_C002 ; testExcept() +; libsrc/fpu.pla: 0065: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0066: return sane:restoreZP(sane:op1FP(FOTESTXCP, except)) + !BYTE $6A ; LAW _X028+18 +_F075 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1B ; CB 27 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+6 +_F076 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F077 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0067: end +; libsrc/fpu.pla: 0068: def setExcept(except) + ; except -> [0] +_P004 ; setExcept(except)() +_C003 ; setExcept() +; libsrc/fpu.pla: 0069: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0070: return sane:restoreZP(sane:op1FP(FOSETXCP, except)) + !BYTE $6A ; LAW _X028+18 +_F078 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$15 ; CB 21 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+6 +_F079 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F080 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0071: end +; libsrc/fpu.pla: 0072: def enterProc(pEnv) + ; pEnv -> [0] +_P005 ; enterProc(pEnv)() +_C004 ; enterProc() +; libsrc/fpu.pla: 0073: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0074: return sane:restoreZP(sane:op1FP(FOPROCENTRY, pEnv)) + !BYTE $6A ; LAW _X028+18 +_F081 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$17 ; CB 23 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+6 +_F082 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F083 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0075: end +; libsrc/fpu.pla: 0076: def exitProc(env) + ; env -> [0] +_P006 ; exitProc(env)() +_C005 ; exitProc() +; libsrc/fpu.pla: 0077: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0078: return sane:restoreZP(sane:op1FP(FOPROCEXIT, env)) + !BYTE $6A ; LAW _X028+18 +_F084 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$19 ; CB 25 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+6 +_F085 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F086 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0079: end +; libsrc/fpu.pla: 0080: // +; libsrc/fpu.pla: 0081: // Stack manipulation routines +; libsrc/fpu.pla: 0082: // +; libsrc/fpu.pla: 0083: def rotateUp +_P031 ; rotateUp() +_C006 ; rotateUp() +; libsrc/fpu.pla: 0084: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] +; libsrc/fpu.pla: 0085: return 0 + !BYTE $6A ; LAW _D105+6 +_F087 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F088 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F089 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F090 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F091 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F092 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F093 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F094 !WORD _D105+0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0086: end +; libsrc/fpu.pla: 0087: def rotateDown +_P032 ; rotateDown() +_C007 ; rotateDown() +; libsrc/fpu.pla: 0088: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[1], stackRegs[2], stackRegs[3], stackRegs[0] +; libsrc/fpu.pla: 0089: return 0 + !BYTE $6A ; LAW _D105+2 +_F095 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F096 !WORD _D105+4 + !BYTE $6A ; LAW _D105+6 +_F097 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F098 !WORD _D105+0 + !BYTE $7A ; SAW _D105+6 +_F099 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F100 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F101 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F102 !WORD _D105+0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0090: end +; libsrc/fpu.pla: 0091: def shiftUp +_P029 ; shiftUp() +_C008 ; shiftUp() +; libsrc/fpu.pla: 0092: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] +; libsrc/fpu.pla: 0093: memcpy(stackRegs[0], stackRegs[1], t_extended) +; libsrc/fpu.pla: 0094: return 0 + !BYTE $6A ; LAW _D105+6 +_F103 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F104 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F105 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F106 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F107 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F108 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F109 !WORD _D105+2 + !BYTE $7E ; DAW _D105+0 +_F110 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F111 !WORD _D105+2 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F112 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0095: end +; libsrc/fpu.pla: 0096: def shiftDown // drop +_P030 ; shiftDown // drop() +_C009 ; shiftDown() +; libsrc/fpu.pla: 0097: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[1], stackRegs[2], stackRegs[3], stackRegs[0] +; libsrc/fpu.pla: 0098: memcpy(stackRegs[3], stackRegs[2], t_extended) +; libsrc/fpu.pla: 0099: return 0 + !BYTE $6A ; LAW _D105+2 +_F113 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F114 !WORD _D105+4 + !BYTE $6A ; LAW _D105+6 +_F115 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F116 !WORD _D105+0 + !BYTE $7A ; SAW _D105+6 +_F117 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F118 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F119 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F120 !WORD _D105+0 + !BYTE $6A ; LAW _D105+6 +_F121 !WORD _D105+6 + !BYTE $6A ; LAW _D105+4 +_F122 !WORD _D105+4 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F123 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0100: end +; libsrc/fpu.pla: 0101: def _drop(passthru) // Internal version with passthru + ; passthru -> [0] +_C010 ; _drop() +; libsrc/fpu.pla: 0102: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[1], stackRegs[2], stackRegs[3], stackRegs[0] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0103: memcpy(stackRegs[3], stackRegs[2], t_extended) +; libsrc/fpu.pla: 0104: return passthru + !BYTE $6A ; LAW _D105+2 +_F124 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F125 !WORD _D105+4 + !BYTE $6A ; LAW _D105+6 +_F126 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F127 !WORD _D105+0 + !BYTE $7A ; SAW _D105+6 +_F128 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F129 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F130 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F131 !WORD _D105+0 + !BYTE $6A ; LAW _D105+6 +_F132 !WORD _D105+6 + !BYTE $6A ; LAW _D105+4 +_F133 !WORD _D105+4 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F134 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0105: end +; libsrc/fpu.pla: 0106: def swap +_P034 ; swap() +_C011 ; swap() +; libsrc/fpu.pla: 0107: stackRegs[0], stackRegs[1] = stackRegs[1], stackRegs[0] +; libsrc/fpu.pla: 0108: return 0 + !BYTE $6A ; LAW _D105+2 +_F135 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F136 !WORD _D105+0 + !BYTE $7A ; SAW _D105+2 +_F137 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F138 !WORD _D105+0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0109: end +; libsrc/fpu.pla: 0110: def _swap(passthru) // Internal version with passthru + ; passthru -> [0] +_C012 ; _swap() +; libsrc/fpu.pla: 0111: stackRegs[0], stackRegs[1] = stackRegs[1], stackRegs[0] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0112: return passthru + !BYTE $6A ; LAW _D105+2 +_F139 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F140 !WORD _D105+0 + !BYTE $7A ; SAW _D105+2 +_F141 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F142 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0113: end +; libsrc/fpu.pla: 0114: def dup +_P033 ; dup() +_C013 ; dup() +; libsrc/fpu.pla: 0115: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] +; libsrc/fpu.pla: 0116: memcpy(stackRegs[0], stackRegs[1], t_extended) +; libsrc/fpu.pla: 0117: return 0 + !BYTE $6A ; LAW _D105+6 +_F143 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F144 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F145 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F146 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F147 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F148 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F149 !WORD _D105+2 + !BYTE $7E ; DAW _D105+0 +_F150 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F151 !WORD _D105+2 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X018 +_F152 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0118: end +; libsrc/fpu.pla: 0119: def clear +_P035 ; clear() +_C014 ; clear() +; libsrc/fpu.pla: 0120: word zero + ; zero -> [0] +; libsrc/fpu.pla: 0121: zero = 0 + !BYTE $58,$02,$00 ; ENTER 2,0 +; libsrc/fpu.pla: 0122: sane:saveZP() +; libsrc/fpu.pla: 0123: return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[0], @zero)) + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _X028+18 +_F153 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $6A ; LAW _D105+0 +_F154 !WORD _D105+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _X028+8 +_F155 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F156 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0124: end +; libsrc/fpu.pla: 0125: // +; libsrc/fpu.pla: 0126: // Stack access +; libsrc/fpu.pla: 0127: // +; libsrc/fpu.pla: 0128: def pushInt(pInt) + ; pInt -> [0] +_P009 ; pushInt(pInt)() +_C015 ; pushInt() +; libsrc/fpu.pla: 0129: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0130: sane:saveZP() +; libsrc/fpu.pla: 0131: return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[0], pInt)) + !BYTE $6A ; LAW _D105+6 +_F157 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F158 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F159 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F160 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F161 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F162 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F163 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F164 !WORD _D105+0 + !BYTE $6A ; LAW _X028+18 +_F165 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $6A ; LAW _D105+0 +_F166 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F167 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F168 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0132: end +; libsrc/fpu.pla: 0133: def pullInt(pInt) + ; pInt -> [0] +_P014 ; pullInt(pInt)() +_C016 ; pullInt() +; libsrc/fpu.pla: 0134: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0135: return _drop(sane:restoreZP(sane:op2FP(FFINT|FOX2Z, pInt, stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F169 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D105+0 +_F170 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F171 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F172 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F173 !WORD _C010 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0136: end +; libsrc/fpu.pla: 0137: def loadInt(pInt, reg) + ; pInt -> [0] + ; reg -> [2] +_P019 ; loadInt(pInt, reg)() +_C017 ; loadInt() +; libsrc/fpu.pla: 0138: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0139: return sane:restoreZP(sane:op2FP(FFINT|FOZ2X, stackRegs[reg & $03], pInt)) + !BYTE $6A ; LAW _X028+18 +_F174 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D105+0 +_F175 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F176 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F177 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0140: end +; libsrc/fpu.pla: 0141: def storInt(pInt, reg) + ; pInt -> [0] + ; reg -> [2] +_P024 ; storInt(pInt, reg)() +_C018 ; storInt() +; libsrc/fpu.pla: 0142: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0143: return sane:restoreZP(sane:op2FP(FFINT|FOX2Z, pInt, stackRegs[reg & $03])) + !BYTE $6A ; LAW _X028+18 +_F178 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D105+0 +_F179 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _X028+8 +_F180 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F181 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0144: end +; libsrc/fpu.pla: 0145: def pushSgl(pSgl) + ; pSgl -> [0] +_P010 ; pushSgl(pSgl)() +_C019 ; pushSgl() +; libsrc/fpu.pla: 0146: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0147: sane:saveZP() +; libsrc/fpu.pla: 0148: return sane:restoreZP(sane:op2FP(FFSGL|FOZ2X, stackRegs[0], pSgl)) + !BYTE $6A ; LAW _D105+6 +_F182 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F183 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F184 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F185 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F186 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F187 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F188 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F189 !WORD _D105+0 + !BYTE $6A ; LAW _X028+18 +_F190 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$02 ; CW 526 + !BYTE $6A ; LAW _D105+0 +_F191 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F192 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F193 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0149: end +; libsrc/fpu.pla: 0150: def pullSgl(pSgl) + ; pSgl -> [0] +_P015 ; pullSgl(pSgl)() +_C020 ; pullSgl() +; libsrc/fpu.pla: 0151: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0152: return _drop(sane:restoreZP(sane:op2FP(FFSGL|FOX2Z, pSgl, stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F194 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$02 ; CW 528 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D105+0 +_F195 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F196 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F197 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F198 !WORD _C010 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0153: end +; libsrc/fpu.pla: 0154: def loadSgl(pSgl, reg) + ; pSgl -> [0] + ; reg -> [2] +_P020 ; loadSgl(pSgl, reg)() +_C021 ; loadSgl() +; libsrc/fpu.pla: 0155: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0156: return sane:restoreZP(sane:op2FP(FFSGL|FOZ2X, stackRegs[reg & $03], pSgl)) + !BYTE $6A ; LAW _X028+18 +_F199 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$02 ; CW 526 + !BYTE $26 ; LA _D105+0 +_F200 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F201 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F202 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0157: end +; libsrc/fpu.pla: 0158: def storSgl(pSgl, reg) + ; pSgl -> [0] + ; reg -> [2] +_P025 ; storSgl(pSgl, reg)() +_C022 ; storSgl() +; libsrc/fpu.pla: 0159: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0160: return sane:restoreZP(sane:op2FP(FFSGL|FOX2Z, pSgl, stackRegs[reg & $03])) + !BYTE $6A ; LAW _X028+18 +_F203 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$02 ; CW 528 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D105+0 +_F204 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _X028+8 +_F205 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F206 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0161: end +; libsrc/fpu.pla: 0162: def pushDbl(pDbl) + ; pDbl -> [0] +_P011 ; pushDbl(pDbl)() +_C023 ; pushDbl() +; libsrc/fpu.pla: 0163: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0164: sane:saveZP() +; libsrc/fpu.pla: 0165: return sane:restoreZP(sane:op2FP(FFDBL|FOZ2X, stackRegs[0], pDbl)) + !BYTE $6A ; LAW _D105+6 +_F207 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F208 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F209 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F210 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F211 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F212 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F213 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F214 !WORD _D105+0 + !BYTE $6A ; LAW _X028+18 +_F215 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$01 ; CW 270 + !BYTE $6A ; LAW _D105+0 +_F216 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F217 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F218 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0166: end +; libsrc/fpu.pla: 0167: def pullDbl(pDbl) + ; pDbl -> [0] +_P016 ; pullDbl(pDbl)() +_C024 ; pullDbl() +; libsrc/fpu.pla: 0168: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0169: return _drop(sane:restoreZP(sane:op2FP(FFDBL|FOX2Z, pDbl, stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F219 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D105+0 +_F220 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F221 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F222 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F223 !WORD _C010 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0170: end +; libsrc/fpu.pla: 0171: def loadDbl(pDbl, reg) + ; pDbl -> [0] + ; reg -> [2] +_P021 ; loadDbl(pDbl, reg)() +_C025 ; loadDbl() +; libsrc/fpu.pla: 0172: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0173: return sane:restoreZP(sane:op2FP(FFDBL|FOZ2X, stackRegs[reg & $03], pDbl)) + !BYTE $6A ; LAW _X028+18 +_F224 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$01 ; CW 270 + !BYTE $26 ; LA _D105+0 +_F225 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F226 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F227 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0174: end +; libsrc/fpu.pla: 0175: def storDbl(pDbl, reg) + ; pDbl -> [0] + ; reg -> [2] +_P026 ; storDbl(pDbl, reg)() +_C026 ; storDbl() +; libsrc/fpu.pla: 0176: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0177: return sane:restoreZP(sane:op2FP(FFDBL|FOX2Z, pDbl, stackRegs[reg & $03])) + !BYTE $6A ; LAW _X028+18 +_F228 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D105+0 +_F229 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _X028+8 +_F230 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F231 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0178: end +; libsrc/fpu.pla: 0179: def pushExt(pExt) + ; pExt -> [0] +_P012 ; pushExt(pExt)() +_C027 ; pushExt() +; libsrc/fpu.pla: 0180: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0181: sane:saveZP() +; libsrc/fpu.pla: 0182: return sane:restoreZP(sane:op2FP(FFEXT|FOZ2X, stackRegs[0], pExt)) + !BYTE $6A ; LAW _D105+6 +_F232 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F233 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F234 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F235 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F236 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F237 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F238 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F239 !WORD _D105+0 + !BYTE $6A ; LAW _X028+18 +_F240 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1C ; CN 14 + !BYTE $6A ; LAW _D105+0 +_F241 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F242 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F243 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0183: end +; libsrc/fpu.pla: 0184: def pullExt(pExt) + ; pExt -> [0] +_P017 ; pullExt(pExt)() +_C028 ; pullExt() +; libsrc/fpu.pla: 0185: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0186: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOX2Z, pExt, stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F244 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$10 ; CB 16 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D105+0 +_F245 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F246 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F247 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F248 !WORD _C010 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0187: end +; libsrc/fpu.pla: 0188: def loadExt(pExt, reg) + ; pExt -> [0] + ; reg -> [2] +_P022 ; loadExt(pExt, reg)() +_C029 ; loadExt() +; libsrc/fpu.pla: 0189: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0190: return sane:restoreZP(sane:op2FP(FFEXT|FOZ2X, stackRegs[reg & $03], pExt)) + !BYTE $6A ; LAW _X028+18 +_F249 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1C ; CN 14 + !BYTE $26 ; LA _D105+0 +_F250 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F251 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F252 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0191: end +; libsrc/fpu.pla: 0192: def storExt(pExt, reg) + ; pExt -> [0] + ; reg -> [2] +_P027 ; storExt(pExt, reg)() +_C030 ; storExt() +; libsrc/fpu.pla: 0193: sane:saveZP() + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/fpu.pla: 0194: return sane:restoreZP(sane:op2FP(FFEXT|FOX2Z, pExt, stackRegs[reg & $03])) + !BYTE $6A ; LAW _X028+18 +_F253 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$10 ; CB 16 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D105+0 +_F254 !WORD _D105+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _X028+8 +_F255 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F256 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0195: end +; libsrc/fpu.pla: 0196: def pushStr(pStr) + ; pStr -> [0] +_P013 ; pushStr(pStr)() +_C031 ; pushStr() +; libsrc/fpu.pla: 0197: stackRegs[0], stackRegs[1], stackRegs[2], stackRegs[3] = stackRegs[3], stackRegs[0], stackRegs[1], stackRegs[2] + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0198: return str2ext(pStr, stackRegs[0]) + !BYTE $6A ; LAW _D105+6 +_F257 !WORD _D105+6 + !BYTE $6A ; LAW _D105+0 +_F258 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F259 !WORD _D105+2 + !BYTE $6A ; LAW _D105+4 +_F260 !WORD _D105+4 + !BYTE $7A ; SAW _D105+6 +_F261 !WORD _D105+6 + !BYTE $7A ; SAW _D105+4 +_F262 !WORD _D105+4 + !BYTE $7A ; SAW _D105+2 +_F263 !WORD _D105+2 + !BYTE $7A ; SAW _D105+0 +_F264 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D105+0 +_F265 !WORD _D105+0 + !BYTE $54 ; CALL _X030 +_F266 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0199: end +; libsrc/fpu.pla: 0200: def pullStr(pStr, intdigits, fracdigits, format) + ; pStr -> [0] + ; intdigits -> [2] + ; fracdigits -> [4] + ; format -> [6] +_P018 ; pullStr(pStr, intdigits, fracdigits, format)() +_C032 ; pullStr() +; libsrc/fpu.pla: 0201: return _drop(ext2str(stackRegs[0], pStr, intdigits, fracdigits, format)) + !BYTE $58,$08,$04 ; ENTER 8,4 + !BYTE $6A ; LAW _D105+0 +_F267 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X031 +_F268 !WORD 0 + !BYTE $54 ; CALL _C010 +_F269 !WORD _C010 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/fpu.pla: 0202: end +; libsrc/fpu.pla: 0203: def loadStr(pStr, reg) + ; pStr -> [0] + ; reg -> [2] +_P023 ; loadStr(pStr, reg)() +_C033 ; loadStr() +; libsrc/fpu.pla: 0204: return str2ext(pStr, stackRegs[reg]) + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D105+0 +_F270 !WORD _D105+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X030 +_F271 !WORD 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/fpu.pla: 0205: end +; libsrc/fpu.pla: 0206: def storStr(pStr, intdigits, fracdigits, format, reg) + ; pStr -> [0] + ; intdigits -> [2] + ; fracdigits -> [4] + ; format -> [6] + ; reg -> [8] +_P028 ; storStr(pStr, intdigits, fracdigits, format, reg)() +_C034 ; storStr() +; libsrc/fpu.pla: 0207: return ext2str(stackRegs[reg], pStr, intdigits, fracdigits, format) + !BYTE $58,$0A,$05 ; ENTER 10,5 + !BYTE $26 ; LA _D105+0 +_F272 !WORD _D105+0 + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X031 +_F273 !WORD 0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/fpu.pla: 0208: end +; libsrc/fpu.pla: 0209: // +; libsrc/fpu.pla: 0210: // Basic math operations +; libsrc/fpu.pla: 0211: // +; libsrc/fpu.pla: 0212: def add +_P036 ; add() +_C035 ; add() +; libsrc/fpu.pla: 0213: sane:saveZP() +; libsrc/fpu.pla: 0214: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOADD, stackRegs[1], stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F274 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D105+2 +_F275 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F276 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F277 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F278 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F279 !WORD _C010 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0215: end +; libsrc/fpu.pla: 0216: def sub +_P037 ; sub() +_C036 ; sub() +; libsrc/fpu.pla: 0217: sane:saveZP() +; libsrc/fpu.pla: 0218: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOSUB, stackRegs[1], stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F280 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _D105+2 +_F281 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F282 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F283 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F284 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F285 !WORD _C010 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0219: end +; libsrc/fpu.pla: 0220: def mul +_P038 ; mul() +_C037 ; mul() +; libsrc/fpu.pla: 0221: sane:saveZP() +; libsrc/fpu.pla: 0222: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOMUL, stackRegs[1], stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F286 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _D105+2 +_F287 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F288 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F289 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F290 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F291 !WORD _C010 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0223: end +; libsrc/fpu.pla: 0224: def div +_P039 ; div() +_C038 ; div() +; libsrc/fpu.pla: 0225: sane:saveZP() +; libsrc/fpu.pla: 0226: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FODIV, stackRegs[1], stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F292 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $0C ; CN 6 + !BYTE $6A ; LAW _D105+2 +_F293 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F294 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F295 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F296 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F297 !WORD _C010 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0227: end +; libsrc/fpu.pla: 0228: def rem +_P040 ; rem() +_C039 ; rem() +; libsrc/fpu.pla: 0229: sane:saveZP() +; libsrc/fpu.pla: 0230: return _drop(sane:restoreZP(sane:op2FP(FFEXT|FOREM, stackRegs[1], stackRegs[0]))) + !BYTE $6A ; LAW _X028+18 +_F298 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $18 ; CN 12 + !BYTE $6A ; LAW _D105+2 +_F299 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F300 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F301 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F302 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C010 +_F303 !WORD _C010 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0231: end +; libsrc/fpu.pla: 0232: def neg +_P041 ; neg() +_C040 ; neg() +; libsrc/fpu.pla: 0233: sane:saveZP() +; libsrc/fpu.pla: 0234: return sane:restoreZP(sane:op1FP(FFEXT|FONEG, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F304 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _D105+0 +_F305 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F306 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F307 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0235: end +; libsrc/fpu.pla: 0236: def abs +_P042 ; abs() +_C041 ; abs() +; libsrc/fpu.pla: 0237: sane:saveZP() +; libsrc/fpu.pla: 0238: return sane:restoreZP(sane:op1FP(FFEXT|FOABS, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F308 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $6A ; LAW _D105+0 +_F309 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F310 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F311 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0239: end +; libsrc/fpu.pla: 0240: def type +_P043 ; type() +_C042 ; type() +; libsrc/fpu.pla: 0241: sane:saveZP() +; libsrc/fpu.pla: 0242: return sane:restoreZP(sane:op1FP(FFEXT|FOCLASS, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F312 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1C ; CB 28 + !BYTE $6A ; LAW _D105+0 +_F313 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F314 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F315 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0243: end +; libsrc/fpu.pla: 0244: def cmp +_P044 ; cmp() +_C043 ; cmp() +; libsrc/fpu.pla: 0245: sane:saveZP() +; libsrc/fpu.pla: 0246: return sane:restoreZP(sane:op2FP(FFEXT|FOCMP, stackRegs[1], stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F316 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _D105+2 +_F317 !WORD _D105+2 + !BYTE $6A ; LAW _D105+0 +_F318 !WORD _D105+0 + !BYTE $6A ; LAW _X028+8 +_F319 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F320 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0247: end +; libsrc/fpu.pla: 0248: def trunc +_P047 ; trunc() +_C044 ; trunc() +; libsrc/fpu.pla: 0249: sane:saveZP() +; libsrc/fpu.pla: 0250: return sane:restoreZP(sane:op1FP(FFEXT|FOTTI, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F321 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$16 ; CB 22 + !BYTE $6A ; LAW _D105+0 +_F322 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F323 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F324 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0251: end +; libsrc/fpu.pla: 0252: def round +_P048 ; round() +_C045 ; round() +; libsrc/fpu.pla: 0253: sane:saveZP() +; libsrc/fpu.pla: 0254: return sane:restoreZP(sane:op1FP(FFEXT|FORTI, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F325 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$14 ; CB 20 + !BYTE $6A ; LAW _D105+0 +_F326 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F327 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F328 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0255: end +; libsrc/fpu.pla: 0256: def sqrt +_P049 ; sqrt() +_C046 ; sqrt() +; libsrc/fpu.pla: 0257: sane:saveZP() +; libsrc/fpu.pla: 0258: return sane:restoreZP(sane:op1FP(FFEXT|FOSQRT, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F329 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$12 ; CB 18 + !BYTE $6A ; LAW _D105+0 +_F330 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F331 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F332 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0259: end +; libsrc/fpu.pla: 0260: def squared +_P050 ; squared() +_C047 ; squared() +; libsrc/fpu.pla: 0261: sane:saveZP() +; libsrc/fpu.pla: 0262: return sane:restoreZP(sane:op2FP(FFEXT|FOMUL, stackRegs[0], stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F333 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _D105+0 +_F334 !WORD _D105+0 + !BYTE $34 ; DUP + !BYTE $6A ; LAW _X028+8 +_F335 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F336 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0263: end +; libsrc/fpu.pla: 0264: def logb +_P045 ; logb() +_C048 ; logb() +; libsrc/fpu.pla: 0265: sane:saveZP() +; libsrc/fpu.pla: 0266: return sane:restoreZP(sane:op1FP(FFEXT|FOLOGB, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F337 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1A ; CB 26 + !BYTE $6A ; LAW _D105+0 +_F338 !WORD _D105+0 + !BYTE $6A ; LAW _X028+6 +_F339 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F340 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0267: end +; libsrc/fpu.pla: 0268: def scalb(scale) + ; scale -> [0] +_P046 ; scalb(scale)() +_C049 ; scalb() +; libsrc/fpu.pla: 0269: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0270: return sane:restoreZP(sane:op2FP(FFEXT|FOSCALB, stackRegs[0], scale)) + !BYTE $6A ; LAW _X028+18 +_F341 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$18 ; CB 24 + !BYTE $6A ; LAW _D105+0 +_F342 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+8 +_F343 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F344 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0271: end +; libsrc/fpu.pla: 0272: // +; libsrc/fpu.pla: 0273: // Elems operations +; libsrc/fpu.pla: 0274: // +; libsrc/fpu.pla: 0275: def cos +_P051 ; cos() +_C050 ; cos() +; libsrc/fpu.pla: 0276: sane:saveZP() +; libsrc/fpu.pla: 0277: return sane:restoreZP(sane:op1ELEM(FFEXT|FOCOSX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F345 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1C ; CB 28 + !BYTE $6A ; LAW _D105+0 +_F346 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F347 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F348 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0278: end +; libsrc/fpu.pla: 0279: def sin +_P052 ; sin() +_C051 ; sin() +; libsrc/fpu.pla: 0280: sane:saveZP() +; libsrc/fpu.pla: 0281: return sane:restoreZP(sane:op1ELEM(FFEXT|FOSINX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F349 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1A ; CB 26 + !BYTE $6A ; LAW _D105+0 +_F350 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F351 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F352 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0282: end +; libsrc/fpu.pla: 0283: def tan +_P053 ; tan() +_C052 ; tan() +; libsrc/fpu.pla: 0284: sane:saveZP() +; libsrc/fpu.pla: 0285: return sane:restoreZP(sane:op1ELEM(FFEXT|FOTANX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F353 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1E ; CB 30 + !BYTE $6A ; LAW _D105+0 +_F354 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F355 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F356 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0286: end +; libsrc/fpu.pla: 0287: def atan +_P054 ; atan() +_C053 ; atan() +; libsrc/fpu.pla: 0288: sane:saveZP() +; libsrc/fpu.pla: 0289: return sane:restoreZP(sane:op1ELEM(FFEXT|FOATANX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F357 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$18 ; CB 24 + !BYTE $6A ; LAW _D105+0 +_F358 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F359 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F360 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0290: end +; libsrc/fpu.pla: 0291: def log2X +_P055 ; log2X() +_C054 ; log2X() +; libsrc/fpu.pla: 0292: sane:saveZP() +; libsrc/fpu.pla: 0293: return sane:restoreZP(sane:op1ELEM(FFEXT|FOLOG2X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F361 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _D105+0 +_F362 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F363 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F364 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0294: end +; libsrc/fpu.pla: 0295: def log21X +_P056 ; log21X() +_C055 ; log21X() +; libsrc/fpu.pla: 0296: sane:saveZP() +; libsrc/fpu.pla: 0297: return sane:restoreZP(sane:op1ELEM(FFEXT|FOLOG21X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F365 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $0C ; CN 6 + !BYTE $6A ; LAW _D105+0 +_F366 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F367 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F368 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0298: end +; libsrc/fpu.pla: 0299: def lnX +_P057 ; lnX() +_C056 ; lnX() +; libsrc/fpu.pla: 0300: sane:saveZP() +; libsrc/fpu.pla: 0301: return sane:restoreZP(sane:op1ELEM(FFEXT|FOLNX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F369 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D105+0 +_F370 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F371 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F372 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0302: end +; libsrc/fpu.pla: 0303: def ln1X +_P058 ; ln1X() +_C057 ; ln1X() +; libsrc/fpu.pla: 0304: sane:saveZP() +; libsrc/fpu.pla: 0305: return sane:restoreZP(sane:op1ELEM(FFEXT|FOLN1X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F373 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _D105+0 +_F374 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F375 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F376 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0306: end +; libsrc/fpu.pla: 0307: def pow2X +_P059 ; pow2X() +_C058 ; pow2X() +; libsrc/fpu.pla: 0308: sane:saveZP() +; libsrc/fpu.pla: 0309: return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP2X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F377 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $14 ; CN 10 + !BYTE $6A ; LAW _D105+0 +_F378 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F379 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F380 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0310: end +; libsrc/fpu.pla: 0311: def pow21X +_P060 ; pow21X() +_C059 ; pow21X() +; libsrc/fpu.pla: 0312: sane:saveZP() +; libsrc/fpu.pla: 0313: return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP21X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F381 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1C ; CN 14 + !BYTE $6A ; LAW _D105+0 +_F382 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F383 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F384 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0314: end +; libsrc/fpu.pla: 0315: def powEX +_P061 ; powEX() +_C060 ; powEX() +; libsrc/fpu.pla: 0316: sane:saveZP() +; libsrc/fpu.pla: 0317: return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXPX, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F385 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _D105+0 +_F386 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F387 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F388 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0318: end +; libsrc/fpu.pla: 0319: def powE1X +_P062 ; powE1X() +_C061 ; powE1X() +; libsrc/fpu.pla: 0320: sane:saveZP() +; libsrc/fpu.pla: 0321: return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP1X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F389 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $18 ; CN 12 + !BYTE $6A ; LAW _D105+0 +_F390 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F391 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F392 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0322: end +; libsrc/fpu.pla: 0323: def powE21X +_P063 ; powE21X() +_C062 ; powE21X() +; libsrc/fpu.pla: 0324: sane:saveZP() +; libsrc/fpu.pla: 0325: return sane:restoreZP(sane:op1ELEM(FFEXT|FOEXP21X, stackRegs[0])) + !BYTE $6A ; LAW _X028+18 +_F393 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1C ; CN 14 + !BYTE $6A ; LAW _D105+0 +_F394 !WORD _D105+0 + !BYTE $6A ; LAW _X028+12 +_F395 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F396 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0326: end +; libsrc/fpu.pla: 0327: def powXInt(powInt) + ; powInt -> [0] +_P064 ; powXInt(powInt)() +_C063 ; powXInt() +; libsrc/fpu.pla: 0328: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0329: return sane:restoreZP(sane:op2ELEM(FFEXT|FOXPWRI, stackRegs[0], powInt)) + !BYTE $6A ; LAW _X028+18 +_F397 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$10 ; CB 16 + !BYTE $6A ; LAW _D105+0 +_F398 !WORD _D105+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+14 +_F399 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F400 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0330: end +; libsrc/fpu.pla: 0331: def powXY +_P065 ; powXY() +_C064 ; powXY() +; libsrc/fpu.pla: 0332: sane:saveZP() +; libsrc/fpu.pla: 0333: return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOXPWRY, stackRegs[0], stackRegs[1])))) + !BYTE $6A ; LAW _X028+18 +_F401 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$12 ; CB 18 + !BYTE $6A ; LAW _D105+0 +_F402 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F403 !WORD _D105+2 + !BYTE $6A ; LAW _X028+14 +_F404 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C012 +_F405 !WORD _C012 + !BYTE $54 ; CALL _C010 +_F406 !WORD _C010 + !BYTE $6A ; LAW _X028+20 +_F407 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0334: end +; libsrc/fpu.pla: 0335: def compXY +_P066 ; compXY() +_C065 ; compXY() +; libsrc/fpu.pla: 0336: sane:saveZP() +; libsrc/fpu.pla: 0337: return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOCOMPND, stackRegs[0], stackRegs[1])))) + !BYTE $6A ; LAW _X028+18 +_F408 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$14 ; CB 20 + !BYTE $6A ; LAW _D105+0 +_F409 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F410 !WORD _D105+2 + !BYTE $6A ; LAW _X028+14 +_F411 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C012 +_F412 !WORD _C012 + !BYTE $54 ; CALL _C010 +_F413 !WORD _C010 + !BYTE $6A ; LAW _X028+20 +_F414 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0338: end +; libsrc/fpu.pla: 0339: def annuityXY +_P067 ; annuityXY() +_C066 ; annuityXY() +; libsrc/fpu.pla: 0340: sane:saveZP() +; libsrc/fpu.pla: 0341: return sane:restoreZP(_drop(_swap(sane:op2ELEM(FFEXT|FOANNUIT, stackRegs[0], stackRegs[1])))) + !BYTE $6A ; LAW _X028+18 +_F415 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$16 ; CB 22 + !BYTE $6A ; LAW _D105+0 +_F416 !WORD _D105+0 + !BYTE $6A ; LAW _D105+2 +_F417 !WORD _D105+2 + !BYTE $6A ; LAW _X028+14 +_F418 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C012 +_F419 !WORD _C012 + !BYTE $54 ; CALL _C010 +_F420 !WORD _C010 + !BYTE $6A ; LAW _X028+20 +_F421 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5C ; RET +; libsrc/fpu.pla: 0342: end +; libsrc/fpu.pla: 0343: def randNum(pSeed) + ; pSeed -> [0] +_P068 ; randNum(pSeed)() +_C067 ; randNum() +; libsrc/fpu.pla: 0344: sane:saveZP() + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/fpu.pla: 0345: return sane:restoreZP(sane:op1ELEM(FFEXT|FORANDX, pSeed)) + !BYTE $6A ; LAW _X028+18 +_F422 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+12 +_F423 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F424 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/fpu.pla: 0346: end +; libsrc/fpu.pla: 0347: // +; libsrc/fpu.pla: 0348: // Push useful constants +; libsrc/fpu.pla: 0349: // +; libsrc/fpu.pla: 0350: def constPi +_P007 ; constPi() +_C068 ; constPi() +; libsrc/fpu.pla: 0351: return pushExt(@ext_pi) + !BYTE $26 ; LA _D102+0 +_F425 !WORD _D102+0 + !BYTE $54 ; CALL _C027 +_F426 !WORD _C027 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0352: end +; libsrc/fpu.pla: 0353: def constE +_P008 ; constE() +_C069 ; constE() +; libsrc/fpu.pla: 0354: return pushExt(@ext_e) + !BYTE $26 ; LA _D103+0 +_F427 !WORD _D103+0 + !BYTE $54 ; CALL _C027 +_F428 !WORD _C027 + !BYTE $5C ; RET +; libsrc/fpu.pla: 0355: end +; libsrc/fpu.pla: 0356: // +; libsrc/fpu.pla: 0357: // Reset FPU and SANE +; libsrc/fpu.pla: 0358: // +; libsrc/fpu.pla: 0359: def reset +_P000 ; reset() +_C070 ; reset() +; libsrc/fpu.pla: 0360: byte i + ; i -> [0] +; libsrc/fpu.pla: 0361: word zero + ; zero -> [1] +; libsrc/fpu.pla: 0362: +; libsrc/fpu.pla: 0363: zero = 0 + !BYTE $58,$03,$00 ; ENTER 3,0 +; libsrc/fpu.pla: 0364: sane:initFP() +; libsrc/fpu.pla: 0365: sane:saveZP() +; libsrc/fpu.pla: 0366: for i = 0 to 3 + !BYTE $00 ; CN 0 + !BYTE $76,$01 ; SLW [1] + !BYTE $6A ; LAW _X028+0 +_F429 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X028+18 +_F430 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$00 ; DLB [0] +; libsrc/fpu.pla: 0367: stackRegs[i] = @stack[i * t_extended] +; libsrc/fpu.pla: 0368: sane:op2FP(FFINT|FOZ2X, stackRegs[i], @zero) +; libsrc/fpu.pla: 0369: next + !BYTE $26 ; LA _D104+0 +_F431 !WORD _D104+0 + !BYTE $64,$00 ; LLB [0] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $26 ; LA _D105+0 +_F432 !WORD _D105+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $72 ; SW + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D105+0 +_F433 !WORD _D105+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $28,$01 ; LLA [1] + !BYTE $6A ; LAW _X028+8 +_F434 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; libsrc/fpu.pla: 0370: return sane:restoreZP(0) + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F435 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$03 ; LEAVE 3 +; libsrc/fpu.pla: 0371: end +; libsrc/fpu.pla: 0372: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 72 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C024 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C025 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C026 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C027 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C028 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C029 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C030 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C031 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C032 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C033 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C034 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C035 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C036 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C037 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C038 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C039 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C040 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C041 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C042 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C043 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C044 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C045 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C046 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C047 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C048 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C049 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C050 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C051 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C052 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C053 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C054 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C055 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C056 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C057 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C058 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C059 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C060 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C061 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C062 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C063 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C064 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C065 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C066 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C067 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C068 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C069 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C070 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F286-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F287-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F288-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F289-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F290-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F291-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F292-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F293-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F294-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F295-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F296-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F297-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F298-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F299-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F300-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F301-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F302-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F303-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F304-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F305-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F306-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F307-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F308-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F309-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F310-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F311-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F312-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F313-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F314-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F315-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F316-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F317-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F318-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F319-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F320-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F321-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F322-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F323-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F324-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F325-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F326-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F327-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F328-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F329-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F330-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F331-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F332-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F333-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F334-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F335-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F336-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F337-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F338-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F339-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F340-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F341-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F342-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F343-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F344-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F345-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F346-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F347-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F348-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F349-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F350-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F351-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F352-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F353-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F354-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F355-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F356-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F357-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F358-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F359-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F360-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F361-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F362-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F363-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F364-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F365-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F366-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F367-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F368-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F369-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F370-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F371-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F372-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F373-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F374-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F375-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F376-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F377-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F378-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F379-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F380-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F381-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F382-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F383-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F384-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F385-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F386-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F387-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F388-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F389-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F390-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F391-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F392-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F393-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F394-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F395-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F396-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F397-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F398-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F399-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F400-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F401-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F402-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F403-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F404-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F405-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F406-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F407-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F408-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F409-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F410-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F411-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F412-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F413-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F414-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F415-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F416-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F417-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F418-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F419-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F420-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F421-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F422-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F423-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F424-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F425-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F426-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F427-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F428-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F429-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F430-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F431-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F432-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F433-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F434-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F435-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: STR2EXT + !BYTE $D3,$D4,$D2,$B2,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: EXT2STR + !BYTE $C5,$D8,$D4,$B2,$D3,$D4,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/inet.a b/src/libsrc/inet.a new file mode 100644 index 0000000..7f09083 --- /dev/null +++ b/src/libsrc/inet.a @@ -0,0 +1,1090 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/inet.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/inet.pla: 0001: +; libsrc/inet.pla: 0002: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; libsrc/inet.pla: 0002: +; libsrc/inet.pla: 0003: // +; libsrc/inet.pla: 0004: // DNS message +; libsrc/inet.pla: 0005: // +; libsrc/inet.pla: 0006: struc t_dnshdr + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/inet.pla: 0007: word dnsID + ; dnsID = 0 +; libsrc/inet.pla: 0008: word dnsCode + ; dnsCode = 2 +; libsrc/inet.pla: 0009: word dnsQdCount + ; dnsQdCount = 4 +; libsrc/inet.pla: 0010: word dnsAnCount + ; dnsAnCount = 6 +; libsrc/inet.pla: 0011: word dnsNsCount + ; dnsNsCount = 8 +; libsrc/inet.pla: 0012: word dnsArCount + ; dnsArCount = 10 +; libsrc/inet.pla: 0013: end + ; t_dnshdr = 12 +; libsrc/inet.pla: 0014: // +; libsrc/inet.pla: 0015: // External interface to net class. Must be first. +; libsrc/inet.pla: 0016: // +; libsrc/inet.pla: 0017: res[t_inet] iNet +_D028 !FILL 30 ; iNet +; libsrc/inet.pla: 0018: // +; libsrc/inet.pla: 0019: // List of loadable network device drivers +; libsrc/inet.pla: 0020: // +; libsrc/inet.pla: 0021: byte netDrivers = "UTHERNET2" +_D029 ; netDrivers = "UTHERNET2" + !BYTE $09 + !BYTE $55,$54,$48,$45,$52,$4E,$45,$54 + !BYTE $32 +; libsrc/inet.pla: 0022: byte = "UTHERNET" + !BYTE $08 + !BYTE $55,$54,$48,$45,$52,$4E,$45,$54 +; libsrc/inet.pla: 0023: byte = "" + !BYTE $00 +; libsrc/inet.pla: 0024: word driver = @netDrivers +_D030 ; driver = @netDrivers +_F000 !WORD _D029 +; libsrc/inet.pla: 0025: // +; libsrc/inet.pla: 0026: // DNS address (default to Google DNS) +; libsrc/inet.pla: 0027: // +; libsrc/inet.pla: 0028: byte[4] dns = 8,8,8,8 +_D031 ; dns = 8,8,8,8 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 +; libsrc/inet.pla: 0029: const DNS_QUERY = 1 + ; DNS_QUERY = 1 +; libsrc/inet.pla: 0030: const DNS_ANSWER = 2 + ; DNS_ANSWER = 2 +; libsrc/inet.pla: 0031: byte stateDNS +_D032 !FILL 1 ; stateDNS +; libsrc/inet.pla: 0032: +; libsrc/inet.pla: 0033: def iNetSetDNS(ipptr) +_SUBSEG ; BYTECODE STARTS + ; ipptr -> [0] +_C000 ; iNetSetDNS() +; libsrc/inet.pla: 0034: memcpy(@dns, ipptr, 4) + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/inet.pla: 0035: return 0 + !BYTE $26 ; LA _D031+0 +_F001 !WORD _D031+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X018 +_F002 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/inet.pla: 0036: end +; libsrc/inet.pla: 0037: +; libsrc/inet.pla: 0038: //def dumpbytes(buf, len) +; libsrc/inet.pla: 0039: // word i +; libsrc/inet.pla: 0040: // +; libsrc/inet.pla: 0041: // for i = 0 to len - 1 +; libsrc/inet.pla: 0042: // putb(buf->[i]) +; libsrc/inet.pla: 0043: // if i & 7 == 7 +; libsrc/inet.pla: 0044: // putln +; libsrc/inet.pla: 0045: // else +; libsrc/inet.pla: 0046: // putc(' ') +; libsrc/inet.pla: 0047: // fin +; libsrc/inet.pla: 0048: // next +; libsrc/inet.pla: 0049: //end +; libsrc/inet.pla: 0050: //def putip(ipptr) +; libsrc/inet.pla: 0051: // byte i +; libsrc/inet.pla: 0052: // +; libsrc/inet.pla: 0053: // for i = 0 to 2 +; libsrc/inet.pla: 0054: // puti(ipptr->[i]); putc('.') +; libsrc/inet.pla: 0055: // next +; libsrc/inet.pla: 0056: // return puti(ipptr->[i]) +; libsrc/inet.pla: 0057: //end +; libsrc/inet.pla: 0058: +; libsrc/inet.pla: 0059: def parseIP(ipstr, ipaddr) + ; ipstr -> [0] + ; ipaddr -> [2] +_C001 ; parseIP() +; libsrc/inet.pla: 0060: byte i + ; i -> [4] +; libsrc/inet.pla: 0061: word endstr + ; endstr -> [5] +; libsrc/inet.pla: 0062: +; libsrc/inet.pla: 0063: endstr = ipstr + ^ipstr + !BYTE $58,$07,$02 ; ENTER 7,2 +; libsrc/inet.pla: 0064: for i = 0 to 3 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$05 ; SLW [5] + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$04 ; DLB [4] +; libsrc/inet.pla: 0065: ipstr = ipstr + 1 +; libsrc/inet.pla: 0066: while ^ipstr >= '0' and ^ipstr <= '9' and ipstr <= endstr + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/inet.pla: 0067: ipaddr->[i] = ipaddr->[i] * 10 + ^ipstr - '0' +; libsrc/inet.pla: 0068: ipstr = ipstr + 1 +; libsrc/inet.pla: 0069: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] +_B006 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B007 + !WORD _B007-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B008 + !WORD _B008-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$05 ; LLW [5] + !BYTE $4A ; ISLE +_B008 +_B007 + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/inet.pla: 0070: if ^ipstr <> '.' and ipstr < endstr +; libsrc/inet.pla: 0071: return 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B009 + !WORD _B009-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$05 ; LLW [5] + !BYTE $46 ; ISLT +_B009 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $32 ; DROP2 + !BYTE $00 ; CN 0 + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/inet.pla: 0072: fin +_B010 +_B011 +; libsrc/inet.pla: 0073: next +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/inet.pla: 0074: return i == 3 + !BYTE $64,$04 ; LLB [4] + !BYTE $06 ; CN 3 + !BYTE $40 ; ISEQ + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/inet.pla: 0075: end +; libsrc/inet.pla: 0076: +; libsrc/inet.pla: 0077: def parseDomain(domstr, msgptr) + ; domstr -> [0] + ; msgptr -> [2] +_C002 ; parseDomain() +; libsrc/inet.pla: 0078: byte i, l + ; i -> [4] + ; l -> [5] +; libsrc/inet.pla: 0079: +; libsrc/inet.pla: 0080: l = 0 + !BYTE $58,$06,$02 ; ENTER 6,2 +; libsrc/inet.pla: 0081: for i = 1 to ^domstr + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B012 + !WORD _B012-* +_B013 + !BYTE $6C,$04 ; DLB [4] +; libsrc/inet.pla: 0082: if domstr->[i] == '.' +; libsrc/inet.pla: 0083: msgptr->[l] = i - l - 1 +; libsrc/inet.pla: 0084: l = i +; libsrc/inet.pla: 0085: else + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B015 + !WORD _B015-* + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B016 + !WORD _B016-* +_B015 +; libsrc/inet.pla: 0086: msgptr->[i] = domstr->[i] +; libsrc/inet.pla: 0087: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B016 +; libsrc/inet.pla: 0088: next +_B014 + !BYTE $A4 ; INCBRLE _B013 + !WORD _B013-* +_B012 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; libsrc/inet.pla: 0089: msgptr->[l] = i - l - 1 +; libsrc/inet.pla: 0090: msgptr = msgptr + i +; libsrc/inet.pla: 0091: ^msgptr = 0 // Terminate label list +; libsrc/inet.pla: 0092: return msgptr + 1 + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/inet.pla: 0093: end +; libsrc/inet.pla: 0094: +; libsrc/inet.pla: 0095: def recvDNS(remip, remport, pkt, len, ipaddr) + ; remip -> [0] + ; remport -> [2] + ; pkt -> [4] + ; len -> [6] + ; ipaddr -> [8] +_C003 ; recvDNS() +; libsrc/inet.pla: 0096: byte q, r + ; q -> [10] + ; r -> [11] +; libsrc/inet.pla: 0097: word resptr + ; resptr -> [12] +; libsrc/inet.pla: 0098: +; libsrc/inet.pla: 0099: if pkt=>dnsID == $BEEF + !BYTE $58,$0E,$05 ; ENTER 14,5 +; libsrc/inet.pla: 0100: q = pkt->dnsQdCount.1 +; libsrc/inet.pla: 0101: r = pkt->dnsAnCount.1 + pkt->dnsNsCount.1 + pkt->dnsArCount.1 +; libsrc/inet.pla: 0102: resptr = pkt + t_dnshdr +; libsrc/inet.pla: 0103: while q + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $2C,$EF,$BE ; CW 48879 + !BYTE $24 ; BRNE _B017 + !WORD _B017-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$0A ; SLB [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$0A ; ADDI 10 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$0C ; ADDI 12 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B019 +; libsrc/inet.pla: 0104: while ^resptr + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B022 +; libsrc/inet.pla: 0105: //puts(resptr); putc('.') +; libsrc/inet.pla: 0106: resptr = resptr + ^resptr + 1 +; libsrc/inet.pla: 0107: loop + !BYTE $66,$0C ; LLW [12] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $76,$0C ; SLW [12] +_B024 + !BYTE $66,$0C ; LLW [12] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* +_B023 +; libsrc/inet.pla: 0108: resptr = resptr + 1 +; libsrc/inet.pla: 0109: //putln; dumpbytes(resptr, 4); putln +; libsrc/inet.pla: 0110: resptr = resptr + 4 +; libsrc/inet.pla: 0111: q-- + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $6E,$0C ; DLW [12] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$0C ; SLW [12] + !BYTE $64,$0A ; LLB [10] + !BYTE $8E ; DECR +; libsrc/inet.pla: 0112: loop + !BYTE $74,$0A ; SLB [10] +_B021 + !BYTE $64,$0A ; LLB [10] + !BYTE $4E ; BRTRU _B019 + !WORD _B019-* +_B020 +; libsrc/inet.pla: 0113: while r + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B025 +; libsrc/inet.pla: 0114: //dumpbytes(resptr, 40); putln +; libsrc/inet.pla: 0115: if ^resptr & $C0 == $C0 +; libsrc/inet.pla: 0116: resptr = resptr + 2 +; libsrc/inet.pla: 0117: else + !BYTE $66,$0C ; LLW [12] + !BYTE $60 ; LB + !BYTE $3C,$C0 ; ANDI 192 + !BYTE $2A,$C0 ; CB 192 + !BYTE $24 ; BRNE _B028 + !WORD _B028-* + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 +; libsrc/inet.pla: 0118: while ^resptr + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +_B030 +; libsrc/inet.pla: 0119: //puts(resptr); putc('.') +; libsrc/inet.pla: 0120: resptr = resptr + ^resptr + 1 +; libsrc/inet.pla: 0121: loop + !BYTE $66,$0C ; LLW [12] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $76,$0C ; SLW [12] +_B032 + !BYTE $66,$0C ; LLW [12] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B030 + !WORD _B030-* +_B031 +; libsrc/inet.pla: 0122: resptr = resptr + 1 +; libsrc/inet.pla: 0123: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $76,$0C ; SLW [12] +_B029 +; libsrc/inet.pla: 0124: if resptr->1 == 1 and resptr->3 == 1 and resptr->9 == 4 +; libsrc/inet.pla: 0125: ipaddr=>0 = resptr=>10 +; libsrc/inet.pla: 0126: ipaddr=>2 = resptr=>12 +; libsrc/inet.pla: 0127: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B034 + !WORD _B034-* + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$09 ; ADDI 9 + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $40 ; ISEQ +_B034 +_B033 + !BYTE $4C ; BRFLS _B035 + !WORD _B035-* + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $66,$08 ; LLW [8] + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$0C ; ADDI 12 + !BYTE $62 ; LW + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B035 +_B036 +; libsrc/inet.pla: 0128: //putln; dumpbytes(resptr, 10); putc(':'); putln +; libsrc/inet.pla: 0129: resptr = resptr + 8 +; libsrc/inet.pla: 0130: //dumpbytes(resptr + 2, ^(resptr + 1)) +; libsrc/inet.pla: 0131: resptr = resptr + 2 + ^(resptr + 1); putln +; libsrc/inet.pla: 0132: r-- + !BYTE $66,$0C ; LLW [12] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6E,$0C ; DLW [12] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $54 ; CALL _X003 +_F003 !WORD 0 + !BYTE $64,$0B ; LLB [11] + !BYTE $8E ; DECR +; libsrc/inet.pla: 0133: loop + !BYTE $74,$0B ; SLB [11] +_B027 + !BYTE $64,$0B ; LLB [11] + !BYTE $4E ; BRTRU _B025 + !WORD _B025-* +_B026 +; libsrc/inet.pla: 0134: fin +_B017 +_B018 +; libsrc/inet.pla: 0135: stateDNS = DNS_ANSWER +; libsrc/inet.pla: 0136: return 0 + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D032+0 +_F004 !WORD _D032+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/inet.pla: 0137: end +; libsrc/inet.pla: 0138: +; libsrc/inet.pla: 0139: def iNetResolve(namestr, ipaddr) + ; namestr -> [0] + ; ipaddr -> [2] +_C004 ; iNetResolve() +; libsrc/inet.pla: 0140: word dnspkt, msgptr, msglen + ; dnspkt -> [4] + ; msgptr -> [6] + ; msglen -> [8] +; libsrc/inet.pla: 0141: word portDNS, timeout + ; portDNS -> [10] + ; timeout -> [12] +; libsrc/inet.pla: 0142: +; libsrc/inet.pla: 0143: ipaddr=>0 = 0 + !BYTE $58,$0E,$02 ; ENTER 14,2 +; libsrc/inet.pla: 0144: ipaddr=>2 = 0 +; libsrc/inet.pla: 0145: if not parseIP(namestr, ipaddr) +; libsrc/inet.pla: 0146: // +; libsrc/inet.pla: 0147: // Query Domain Name Server for address +; libsrc/inet.pla: 0148: // +; libsrc/inet.pla: 0149: dnspkt = heapalloc(^namestr + t_dnshdr + 8) // Use heap as working DNS query packet +; libsrc/inet.pla: 0150: msgptr = dnspkt +; libsrc/inet.pla: 0151: msgptr=>dnsID = $BEEF +; libsrc/inet.pla: 0152: msgptr=>dnsCode = $0001 // RD (Recursion Desired) +; libsrc/inet.pla: 0153: msgptr=>dnsQdCount = $0100 // BE count = 1 +; libsrc/inet.pla: 0154: msgptr=>dnsAnCount = 0 +; libsrc/inet.pla: 0155: msgptr=>dnsNsCount = 0 +; libsrc/inet.pla: 0156: msgptr=>dnsArCount = 0 +; libsrc/inet.pla: 0157: msgptr = parseDomain(namestr, msgptr + t_dnshdr) +; libsrc/inet.pla: 0158: msgptr=>0 = $0100 // BE TYPE = Address +; libsrc/inet.pla: 0159: msgptr=>2 = $0100 // BE CLASS = Internet +; libsrc/inet.pla: 0160: msglen = msgptr - dnspkt + 4 +; libsrc/inet.pla: 0161: // +; libsrc/inet.pla: 0162: // Prepare to receive DNS answer from server +; libsrc/inet.pla: 0163: // +; libsrc/inet.pla: 0164: portDNS = iNet:openUDP(3999, @recvDNS, ipaddr) +; libsrc/inet.pla: 0165: // +; libsrc/inet.pla: 0166: // Service IP +; libsrc/inet.pla: 0167: // +; libsrc/inet.pla: 0168: stateDNS = DNS_QUERY +; libsrc/inet.pla: 0169: iNet:sendUDP(portDNS, @dns, 53, dnspkt, msglen) +; libsrc/inet.pla: 0170: for timeout = 1 to 1000 + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F005 !WORD _C001 + !BYTE $4E ; BRTRU _B037 + !WORD _B037-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $38,$0C ; ADDI 12 + !BYTE $38,$08 ; ADDI 8 + !BYTE $54 ; CALL _X014 +_F006 !WORD 0 + !BYTE $6E,$04 ; DLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $2C,$EF,$BE ; CW 48879 + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$0C ; ADDI 12 + !BYTE $54 ; CALL _C002 +_F007 !WORD _C002 + !BYTE $76,$06 ; SLW [6] + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$08 ; SLW [8] + !BYTE $2C,$9F,$0F ; CW 3999 + !BYTE $26 ; LA _C003+0 +_F008 !WORD _C003+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D028+4 +_F009 !WORD _D028+4 + !BYTE $56 ; ICAL + !BYTE $76,$0A ; SLW [10] + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D032+0 +_F010 !WORD _D032+0 + !BYTE $66,$0A ; LLW [10] + !BYTE $26 ; LA _D031+0 +_F011 !WORD _D031+0 + !BYTE $2A,$35 ; CB 53 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $6A ; LAW _D028+6 +_F012 !WORD _D028+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $02 ; CN 1 +_B040 + !BYTE $6E,$0C ; DLW [12] +; libsrc/inet.pla: 0171: iNet:serviceIP() +; libsrc/inet.pla: 0172: if stateDNS == DNS_ANSWER +; libsrc/inet.pla: 0173: break + !BYTE $6A ; LAW _D028+2 +_F013 !WORD _D028+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D032+0 +_F014 !WORD _D032+0 + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B042 + !WORD _B042-* + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +; libsrc/inet.pla: 0174: fin +_B042 +_B043 +; libsrc/inet.pla: 0175: next +_B041 + !BYTE $A4 ; INCBRLE _B040 + !WORD _B040-* +_B039 + !BYTE $76,$0C ; SLW [12] + !BYTE $30 ; DROP +; libsrc/inet.pla: 0176: iNet:closeUDP(portDNS) +; libsrc/inet.pla: 0177: heaprelease(dnspkt) +; libsrc/inet.pla: 0178: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $6A ; LAW _D028+8 +_F015 !WORD _D028+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X015 +_F016 !WORD 0 + !BYTE $30 ; DROP +_B037 +_B038 +; libsrc/inet.pla: 0179: return ipaddr=>0 <> 0 or ipaddr=>2 <> 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $AE ; BROR _B044 + !WORD _B044-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW +_B044 + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/inet.pla: 0180: end +; libsrc/inet.pla: 0181: // +; libsrc/inet.pla: 0182: // Initialze network stack +; libsrc/inet.pla: 0183: // +; libsrc/inet.pla: 0184: def iNetInit +_C005 ; iNetInit() +; libsrc/inet.pla: 0185: // +; libsrc/inet.pla: 0186: // Look for net hardware +; libsrc/inet.pla: 0187: // +; libsrc/inet.pla: 0188: while ^driver + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B045 +; libsrc/inet.pla: 0189: if cmdsys:modexec(driver) >= 0 +; libsrc/inet.pla: 0190: // +; libsrc/inet.pla: 0191: // Get an IP address +; libsrc/inet.pla: 0192: // +; libsrc/inet.pla: 0193: cmdsys:modexec("DHCP") + !BYTE $6A ; LAW _D030+0 +_F017 !WORD _D030+0 + !BYTE $6A ; LAW _X000+6 +_F018 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B048 + !WORD _B048-* + !BYTE $2E ; CS + !BYTE $04 + !BYTE $44,$48,$43,$50 + !BYTE $6A ; LAW _X000+6 +_F019 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +; libsrc/inet.pla: 0194: iNet:resolveIP = @iNetResolve +; libsrc/inet.pla: 0195: return @iNet + !BYTE $26 ; LA _C004+0 +_F020 !WORD _C004+0 + !BYTE $7A ; SAW _D028+24 +_F021 !WORD _D028+24 + !BYTE $26 ; LA _D028+0 +_F022 !WORD _D028+0 + !BYTE $5C ; RET +; libsrc/inet.pla: 0196: fin +_B048 +_B049 +; libsrc/inet.pla: 0197: driver = driver + ^driver + 1 +; libsrc/inet.pla: 0198: loop + !BYTE $6A ; LAW _D030+0 +_F023 !WORD _D030+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D030+0 +_F024 !WORD _D030+0 +_B047 + !BYTE $6A ; LAW _D030+0 +_F025 !WORD _D030+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B045 + !WORD _B045-* +_B046 +; libsrc/inet.pla: 0199: puts("No network adapters found.\n") + !BYTE $2E ; CS + !BYTE $1B + !BYTE $4E,$6F,$20,$6E,$65,$74,$77,$6F + !BYTE $72,$6B,$20,$61,$64,$61,$70,$74 + !BYTE $65,$72,$73,$20,$66,$6F,$75,$6E + !BYTE $64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 +; libsrc/inet.pla: 0200: return NULL + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; libsrc/inet.pla: 0201: end +; libsrc/inet.pla: 0202: // +; libsrc/inet.pla: 0203: // Fill iNet class +; libsrc/inet.pla: 0204: // +; libsrc/inet.pla: 0205: iNet:initIP = @iNetInit +_INIT +; libsrc/inet.pla: 0206: iNet:setDNS = @iNetSetDNS +; libsrc/inet.pla: 0207: done + !BYTE $26 ; LA _C005+0 +_F027 !WORD _C005+0 + !BYTE $7A ; SAW _D028+0 +_F028 !WORD _D028+0 + !BYTE $26 ; LA _C000+0 +_F029 !WORD _C000+0 + !BYTE $7A ; SAW _D028+22 +_F030 !WORD _D028+22 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/int32.a b/src/libsrc/int32.a new file mode 100644 index 0000000..7cc0136 --- /dev/null +++ b/src/libsrc/int32.a @@ -0,0 +1,1700 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/int32.pla: 0001: // +; libsrc/int32.pla: 0002: // 32 bit integer math routines +; libsrc/int32.pla: 0003: // +; libsrc/int32.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/int32.pla: 0004: +; libsrc/int32.pla: 0005: const t_i32 = 4 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; t_i32 = 4 +; libsrc/int32.pla: 0006: // +; libsrc/int32.pla: 0007: // Include zero page definitions +; libsrc/int32.pla: 0008: // +; libsrc/int32.pla: 0009: asm int32Inc +_A000 ; int32Inc() +; libsrc/int32.pla: 0010: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/int32.pla: 0011: ACCUM32 = DSTH+1 +ACCUM32 = DSTH+1 +; libsrc/int32.pla: 0012: DVSIGN = TMP+3 +DVSIGN = TMP+3 +; libsrc/int32.pla: 0013: end +; libsrc/int32.pla: 0014: export asm zero32#0 +_A001 ; zero32() +; libsrc/int32.pla: 0015: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0016: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0017: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0018: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0019: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0020: RTS + RTS +; libsrc/int32.pla: 0021: end +; libsrc/int32.pla: 0022: export asm zext16to32#0 +_A002 ; zext16to32() +; libsrc/int32.pla: 0023: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0024: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0025: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0026: RTS + RTS +; libsrc/int32.pla: 0027: end +; libsrc/int32.pla: 0028: export asm neg32#0 +_A003 ; neg32() +; libsrc/int32.pla: 0029: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0030: SEC + SEC +; libsrc/int32.pla: 0031: SBC ACCUM32+0 + SBC ACCUM32+0 +; libsrc/int32.pla: 0032: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0033: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0034: SBC ACCUM32+1 + SBC ACCUM32+1 +; libsrc/int32.pla: 0035: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0036: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0037: SBC ACCUM32+2 + SBC ACCUM32+2 +; libsrc/int32.pla: 0038: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0039: LDA #$00 + LDA #$00 +; libsrc/int32.pla: 0040: SBC ACCUM32+3 + SBC ACCUM32+3 +; libsrc/int32.pla: 0041: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0042: RTS + RTS +; libsrc/int32.pla: 0043: end +; libsrc/int32.pla: 0044: export asm load32(i32ptr)#0 +_A004 ; load32() +; libsrc/int32.pla: 0045: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0046: STA TMPL + STA TMPL +; libsrc/int32.pla: 0047: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0048: STA TMPH + STA TMPH +; libsrc/int32.pla: 0049: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0050: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0051: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0052: INY + INY +; libsrc/int32.pla: 0053: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0054: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0055: INY + INY +; libsrc/int32.pla: 0056: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0057: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0058: INY + INY +; libsrc/int32.pla: 0059: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0060: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0061: INX + INX +; libsrc/int32.pla: 0062: RTS + RTS +; libsrc/int32.pla: 0063: end +; libsrc/int32.pla: 0064: export asm loadi16(imm16)#0 +_A005 ; loadi16() +; libsrc/int32.pla: 0065: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0066: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0067: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0068: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0069: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0070: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0071: DEY + DEY +; libsrc/int32.pla: 0072: + STY ACCUM32+2 ++ STY ACCUM32+2 +; libsrc/int32.pla: 0073: STY ACCUM32+3 + STY ACCUM32+3 +; libsrc/int32.pla: 0074: INX + INX +; libsrc/int32.pla: 0075: RTS + RTS +; libsrc/int32.pla: 0076: end +; libsrc/int32.pla: 0077: export asm store32(i32ptr)#0 +_A006 ; store32() +; libsrc/int32.pla: 0078: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0079: STA TMPL + STA TMPL +; libsrc/int32.pla: 0080: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0081: STA TMPH + STA TMPH +; libsrc/int32.pla: 0082: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0083: LDA ACCUM32+0 + LDA ACCUM32+0 +; libsrc/int32.pla: 0084: STA (TMP),Y + STA (TMP),Y +; libsrc/int32.pla: 0085: INY + INY +; libsrc/int32.pla: 0086: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0087: STA (TMP),Y + STA (TMP),Y +; libsrc/int32.pla: 0088: INY + INY +; libsrc/int32.pla: 0089: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0090: STA (TMP),Y + STA (TMP),Y +; libsrc/int32.pla: 0091: INY + INY +; libsrc/int32.pla: 0092: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0093: STA (TMP),Y + STA (TMP),Y +; libsrc/int32.pla: 0094: INX + INX +; libsrc/int32.pla: 0095: RTS + RTS +; libsrc/int32.pla: 0096: end +; libsrc/int32.pla: 0097: export asm add32(i32ptr)#0 +_A007 ; add32() +; libsrc/int32.pla: 0098: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0099: STA TMPL + STA TMPL +; libsrc/int32.pla: 0100: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0101: STA TMPH + STA TMPH +; libsrc/int32.pla: 0102: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0103: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0104: CLC + CLC +; libsrc/int32.pla: 0105: ADC ACCUM32+0 + ADC ACCUM32+0 +; libsrc/int32.pla: 0106: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0107: INY + INY +; libsrc/int32.pla: 0108: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0109: ADC ACCUM32+1 + ADC ACCUM32+1 +; libsrc/int32.pla: 0110: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0111: INY + INY +; libsrc/int32.pla: 0112: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0113: ADC ACCUM32+2 + ADC ACCUM32+2 +; libsrc/int32.pla: 0114: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0115: INY + INY +; libsrc/int32.pla: 0116: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0117: ADC ACCUM32+3 + ADC ACCUM32+3 +; libsrc/int32.pla: 0118: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0119: INX + INX +; libsrc/int32.pla: 0120: RTS + RTS +; libsrc/int32.pla: 0121: end +; libsrc/int32.pla: 0122: export asm addi16(imm16)#0 +_A008 ; addi16() +; libsrc/int32.pla: 0123: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0124: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0125: CLC + CLC +; libsrc/int32.pla: 0126: ADC ACCUM32+0 + ADC ACCUM32+0 +; libsrc/int32.pla: 0127: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0128: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0129: BPL + + BPL + +; libsrc/int32.pla: 0130: DEY + DEY +; libsrc/int32.pla: 0131: + ADC ACCUM32+1 ++ ADC ACCUM32+1 +; libsrc/int32.pla: 0132: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0133: TYA + TYA +; libsrc/int32.pla: 0134: ADC ACCUM32+2 + ADC ACCUM32+2 +; libsrc/int32.pla: 0135: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0136: TYA + TYA +; libsrc/int32.pla: 0137: ADC ACCUM32+3 + ADC ACCUM32+3 +; libsrc/int32.pla: 0138: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0139: INX + INX +; libsrc/int32.pla: 0140: RTS + RTS +; libsrc/int32.pla: 0141: end +; libsrc/int32.pla: 0142: export asm sub32(i32ptr)#0 +_A009 ; sub32() +; libsrc/int32.pla: 0143: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0144: STA TMPL + STA TMPL +; libsrc/int32.pla: 0145: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0146: STA TMPH + STA TMPH +; libsrc/int32.pla: 0147: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0148: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0149: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0150: DEY + DEY +; libsrc/int32.pla: 0151: BPL - + BPL - +; libsrc/int32.pla: 0152: BMI _SUB + BMI _SUB +; libsrc/int32.pla: 0153: end +; libsrc/int32.pla: 0154: export asm subi16(imm16)#0 +_A010 ; subi16() +; libsrc/int32.pla: 0155: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0156: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0157: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0158: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0159: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0160: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0161: DEY + DEY +; libsrc/int32.pla: 0162: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0163: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0164: _SUB LDA ACCUM32+0 +_SUB LDA ACCUM32+0 +; libsrc/int32.pla: 0165: SEC + SEC +; libsrc/int32.pla: 0166: SBC SRC+0 + SBC SRC+0 +; libsrc/int32.pla: 0167: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0168: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0169: SBC SRC+1 + SBC SRC+1 +; libsrc/int32.pla: 0170: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0171: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0172: SBC SRC+2 + SBC SRC+2 +; libsrc/int32.pla: 0173: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0174: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0175: SBC SRC+3 + SBC SRC+3 +; libsrc/int32.pla: 0176: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0177: INX + INX +; libsrc/int32.pla: 0178: RTS + RTS +; libsrc/int32.pla: 0179: end +; libsrc/int32.pla: 0180: export asm shl32(imm8)#0 +_A011 ; shl32() +; libsrc/int32.pla: 0181: LDA ESTKL+0,X ; IMM8 + LDA ESTKL+0,X ; IMM8 +; libsrc/int32.pla: 0182: AND #$1F + AND #$1F +; libsrc/int32.pla: 0183: CMP #16 + CMP #16 +; libsrc/int32.pla: 0184: BCC + + BCC + +; libsrc/int32.pla: 0185: LDY ACCUM32+1 + LDY ACCUM32+1 +; libsrc/int32.pla: 0186: STY ACCUM32+3 + STY ACCUM32+3 +; libsrc/int32.pla: 0187: LDY ACCUM32+0 + LDY ACCUM32+0 +; libsrc/int32.pla: 0188: STY ACCUM32+2 + STY ACCUM32+2 +; libsrc/int32.pla: 0189: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0190: STY ACCUM32+1 + STY ACCUM32+1 +; libsrc/int32.pla: 0191: STY ACCUM32+0 + STY ACCUM32+0 +; libsrc/int32.pla: 0192: SBC #16 + SBC #16 +; libsrc/int32.pla: 0193: + CMP #8 ++ CMP #8 +; libsrc/int32.pla: 0194: BCC + + BCC + +; libsrc/int32.pla: 0195: LDY ACCUM32+2 + LDY ACCUM32+2 +; libsrc/int32.pla: 0196: STY ACCUM32+3 + STY ACCUM32+3 +; libsrc/int32.pla: 0197: LDY ACCUM32+1 + LDY ACCUM32+1 +; libsrc/int32.pla: 0198: STY ACCUM32+2 + STY ACCUM32+2 +; libsrc/int32.pla: 0199: LDY ACCUM32+0 + LDY ACCUM32+0 +; libsrc/int32.pla: 0200: STY ACCUM32+1 + STY ACCUM32+1 +; libsrc/int32.pla: 0201: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0202: STY ACCUM32+0 + STY ACCUM32+0 +; libsrc/int32.pla: 0203: SBC #8 + SBC #8 +; libsrc/int32.pla: 0204: + TAY ++ TAY +; libsrc/int32.pla: 0205: BEQ ++ + BEQ ++ +; libsrc/int32.pla: 0206: - ASL ACCUM32+0 +- ASL ACCUM32+0 +; libsrc/int32.pla: 0207: ROL ACCUM32+1 + ROL ACCUM32+1 +; libsrc/int32.pla: 0208: ROL ACCUM32+2 + ROL ACCUM32+2 +; libsrc/int32.pla: 0209: ROL ACCUM32+3 + ROL ACCUM32+3 +; libsrc/int32.pla: 0210: DEY + DEY +; libsrc/int32.pla: 0211: BNE - + BNE - +; libsrc/int32.pla: 0212: ++ INX +++ INX +; libsrc/int32.pla: 0213: RTS + RTS +; libsrc/int32.pla: 0214: end +; libsrc/int32.pla: 0215: export asm shr32(imm8)#0 +_A012 ; shr32() +; libsrc/int32.pla: 0216: LDA ESTKL+0,X ; IMM8 + LDA ESTKL+0,X ; IMM8 +; libsrc/int32.pla: 0217: AND #$1F + AND #$1F +; libsrc/int32.pla: 0218: BEQ + + BEQ + +; libsrc/int32.pla: 0219: TAY + TAY +; libsrc/int32.pla: 0220: LDA #$80 + LDA #$80 +; libsrc/int32.pla: 0221: - CMP ACCUM32 +- CMP ACCUM32 +; libsrc/int32.pla: 0222: ROR ACCUM32+3 + ROR ACCUM32+3 +; libsrc/int32.pla: 0223: ROR ACCUM32+2 + ROR ACCUM32+2 +; libsrc/int32.pla: 0224: ROR ACCUM32+1 + ROR ACCUM32+1 +; libsrc/int32.pla: 0225: ROR ACCUM32+0 + ROR ACCUM32+0 +; libsrc/int32.pla: 0226: DEY + DEY +; libsrc/int32.pla: 0227: BNE - + BNE - +; libsrc/int32.pla: 0228: + INX ++ INX +; libsrc/int32.pla: 0229: RTS + RTS +; libsrc/int32.pla: 0230: end +; libsrc/int32.pla: 0231: export asm mul32(i32ptr)#0 +_A013 ; mul32() +; libsrc/int32.pla: 0232: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0233: STA TMPL + STA TMPL +; libsrc/int32.pla: 0234: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0235: STA TMPH + STA TMPH +; libsrc/int32.pla: 0236: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0237: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0238: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0239: DEY + DEY +; libsrc/int32.pla: 0240: BPL - + BPL - +; libsrc/int32.pla: 0241: INY + INY +; libsrc/int32.pla: 0242: BEQ _MUL + BEQ _MUL +; libsrc/int32.pla: 0243: end +; libsrc/int32.pla: 0244: export asm muli16(imm16)#0 +_A014 ; muli16() +; libsrc/int32.pla: 0245: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0246: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0247: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0248: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0249: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0250: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0251: DEY + DEY +; libsrc/int32.pla: 0252: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0253: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0254: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0255: _MUL LDA ACCUM32+0 +_MUL LDA ACCUM32+0 +; libsrc/int32.pla: 0256: STA ESTKL-1,X + STA ESTKL-1,X +; libsrc/int32.pla: 0257: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0258: STA ESTKH-1,X + STA ESTKH-1,X +; libsrc/int32.pla: 0259: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0260: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/int32.pla: 0261: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0262: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/int32.pla: 0263: STY ACCUM32+0 + STY ACCUM32+0 +; libsrc/int32.pla: 0264: STY ACCUM32+1 + STY ACCUM32+1 +; libsrc/int32.pla: 0265: STY ACCUM32+2 + STY ACCUM32+2 +; libsrc/int32.pla: 0266: STY ACCUM32+3 + STY ACCUM32+3 +; libsrc/int32.pla: 0267: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0268: LDA #$80 + LDA #$80 +; libsrc/int32.pla: 0269: STA TMPL + STA TMPL +; libsrc/int32.pla: 0270: - AND SRC,Y +- AND SRC,Y +; libsrc/int32.pla: 0271: BEQ + + BEQ + +; libsrc/int32.pla: 0272: CLC + CLC +; libsrc/int32.pla: 0273: LDA ESTKL-1,X + LDA ESTKL-1,X +; libsrc/int32.pla: 0274: ADC ACCUM32+0 + ADC ACCUM32+0 +; libsrc/int32.pla: 0275: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0276: LDA ESTKH-1,X + LDA ESTKH-1,X +; libsrc/int32.pla: 0277: ADC ACCUM32+1 + ADC ACCUM32+1 +; libsrc/int32.pla: 0278: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0279: LDA ESTKL+0,X + LDA ESTKL+0,X +; libsrc/int32.pla: 0280: ADC ACCUM32+2 + ADC ACCUM32+2 +; libsrc/int32.pla: 0281: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0282: LDA ESTKH+0,X + LDA ESTKH+0,X +; libsrc/int32.pla: 0283: ADC ACCUM32+3 + ADC ACCUM32+3 +; libsrc/int32.pla: 0284: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0285: + LSR TMPL ++ LSR TMPL +; libsrc/int32.pla: 0286: BCC + + BCC + +; libsrc/int32.pla: 0287: DEY + DEY +; libsrc/int32.pla: 0288: BMI ++ + BMI ++ +; libsrc/int32.pla: 0289: ROR TMPL + ROR TMPL +; libsrc/int32.pla: 0290: + ASL ACCUM32+0 ++ ASL ACCUM32+0 +; libsrc/int32.pla: 0291: ROL ACCUM32+1 + ROL ACCUM32+1 +; libsrc/int32.pla: 0292: ROL ACCUM32+2 + ROL ACCUM32+2 +; libsrc/int32.pla: 0293: ROL ACCUM32+3 + ROL ACCUM32+3 +; libsrc/int32.pla: 0294: LDA TMPL + LDA TMPL +; libsrc/int32.pla: 0295: BNE - + BNE - +; libsrc/int32.pla: 0296: ++ INX +++ INX +; libsrc/int32.pla: 0297: RTS + RTS +; libsrc/int32.pla: 0298: end +; libsrc/int32.pla: 0299: export asm div32(i32ptr)#2 +_A015 ; div32() +; libsrc/int32.pla: 0300: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0301: STA TMPL + STA TMPL +; libsrc/int32.pla: 0302: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0303: STA TMPH + STA TMPH +; libsrc/int32.pla: 0304: LDY #$03 ; DVSR = SRC..SRC+3 + LDY #$03 ; DVSR = SRC..SRC+3 +; libsrc/int32.pla: 0305: LDA (TMP),Y + LDA (TMP),Y +; libsrc/int32.pla: 0306: BMI + + BMI + +; libsrc/int32.pla: 0307: STA SRC+3 + STA SRC+3 +; libsrc/int32.pla: 0308: DEY + DEY +; libsrc/int32.pla: 0309: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0310: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0311: DEY + DEY +; libsrc/int32.pla: 0312: BPL - + BPL - +; libsrc/int32.pla: 0313: INY + INY +; libsrc/int32.pla: 0314: BEQ _DIV + BEQ _DIV +; libsrc/int32.pla: 0315: + SEC ++ SEC +; libsrc/int32.pla: 0316: - LDA #$00 +- LDA #$00 +; libsrc/int32.pla: 0317: SBC (TMP),Y + SBC (TMP),Y +; libsrc/int32.pla: 0318: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0319: DEY + DEY +; libsrc/int32.pla: 0320: BPL - + BPL - +; libsrc/int32.pla: 0321: LDY #$01 + LDY #$01 +; libsrc/int32.pla: 0322: BNE _DIV + BNE _DIV +; libsrc/int32.pla: 0323: end +; libsrc/int32.pla: 0324: export asm divi16(imm16)#2 +_A016 ; divi16() +; libsrc/int32.pla: 0325: LDY #$00 ; DVSR = SRC..SRC+3 + LDY #$00 ; DVSR = SRC..SRC+3 +; libsrc/int32.pla: 0326: STY SRC+2 + STY SRC+2 +; libsrc/int32.pla: 0327: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0328: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0329: BPL + + BPL + +; libsrc/int32.pla: 0330: TYA ; DVSR IS NEG + TYA ; DVSR IS NEG +; libsrc/int32.pla: 0331: SEC + SEC +; libsrc/int32.pla: 0332: SBC ESTKL+0,X ; IMM16L + SBC ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0333: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0334: TYA + TYA +; libsrc/int32.pla: 0335: SBC ESTKH+0,X ; IMM16L + SBC ESTKH+0,X ; IMM16L +; libsrc/int32.pla: 0336: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0337: INY + INY +; libsrc/int32.pla: 0338: BNE _DIV + BNE _DIV +; libsrc/int32.pla: 0339: + STA SRC+1 ++ STA SRC+1 +; libsrc/int32.pla: 0340: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0341: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0342: _DIV STY DVSIGN ; LSB = SIGN OF DVSR +_DIV STY DVSIGN ; LSB = SIGN OF DVSR +; libsrc/int32.pla: 0343: DEX ; REMNDR = ESTK..ESTK+1 + DEX ; REMNDR = ESTK..ESTK+1 +; libsrc/int32.pla: 0344: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0345: STY ESTKL+0,X + STY ESTKL+0,X +; libsrc/int32.pla: 0346: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0347: STY ESTKL+1,X + STY ESTKL+1,X +; libsrc/int32.pla: 0348: STY ESTKH+1,X + STY ESTKH+1,X +; libsrc/int32.pla: 0349: LDA SRC+0 ; DIVIDE BY 0? + LDA SRC+0 ; DIVIDE BY 0? +; libsrc/int32.pla: 0350: ORA SRC+1 + ORA SRC+1 +; libsrc/int32.pla: 0351: ORA SRC+2 + ORA SRC+2 +; libsrc/int32.pla: 0352: ORA SRC+3 + ORA SRC+3 +; libsrc/int32.pla: 0353: BNE + + BNE + +; libsrc/int32.pla: 0354: STA ACCUM32+0 ; SET TO 0 AND EXIT + STA ACCUM32+0 ; SET TO 0 AND EXIT +; libsrc/int32.pla: 0355: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0356: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0357: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0358: - RTS +- RTS +; libsrc/int32.pla: 0359: + LDA ACCUM32+0 ; DIVIDE 0? ++ LDA ACCUM32+0 ; DIVIDE 0? +; libsrc/int32.pla: 0360: ORA ACCUM32+1 + ORA ACCUM32+1 +; libsrc/int32.pla: 0361: ORA ACCUM32+2 + ORA ACCUM32+2 +; libsrc/int32.pla: 0362: ORA ACCUM32+3 + ORA ACCUM32+3 +; libsrc/int32.pla: 0363: BEQ - + BEQ - +; libsrc/int32.pla: 0364: LDA ACCUM32+3 ; DVDND = ACCUM32 + LDA ACCUM32+3 ; DVDND = ACCUM32 +; libsrc/int32.pla: 0365: BPL + + BPL + +; libsrc/int32.pla: 0366: LDA #$81 ; DVDND IS NEG + LDA #$81 ; DVDND IS NEG +; libsrc/int32.pla: 0367: CLC + CLC +; libsrc/int32.pla: 0368: ADC DVSIGN + ADC DVSIGN +; libsrc/int32.pla: 0369: STA DVSIGN + STA DVSIGN +; libsrc/int32.pla: 0370: TYA + TYA +; libsrc/int32.pla: 0371: SEC + SEC +; libsrc/int32.pla: 0372: SBC ACCUM32+0 + SBC ACCUM32+0 +; libsrc/int32.pla: 0373: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0374: TYA + TYA +; libsrc/int32.pla: 0375: SBC ACCUM32+1 + SBC ACCUM32+1 +; libsrc/int32.pla: 0376: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0377: TYA + TYA +; libsrc/int32.pla: 0378: SBC ACCUM32+2 + SBC ACCUM32+2 +; libsrc/int32.pla: 0379: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0380: TYA + TYA +; libsrc/int32.pla: 0381: SBC ACCUM32+3 + SBC ACCUM32+3 +; libsrc/int32.pla: 0382: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0383: + LDY #$21 ; #BITS+1 ++ LDY #$21 ; #BITS+1 +; libsrc/int32.pla: 0384: - ASL ACCUM32+0 ; SKIP DVDND LEADING 0 BITS +- ASL ACCUM32+0 ; SKIP DVDND LEADING 0 BITS +; libsrc/int32.pla: 0385: ROL ACCUM32+1 + ROL ACCUM32+1 +; libsrc/int32.pla: 0386: ROL ACCUM32+2 + ROL ACCUM32+2 +; libsrc/int32.pla: 0387: ROL ACCUM32+3 + ROL ACCUM32+3 +; libsrc/int32.pla: 0388: DEY + DEY +; libsrc/int32.pla: 0389: BCC - + BCC - +; libsrc/int32.pla: 0390: - ROL ESTKL+0,X ; REMNDR +- ROL ESTKL+0,X ; REMNDR +; libsrc/int32.pla: 0391: ROL ESTKH+0,X + ROL ESTKH+0,X +; libsrc/int32.pla: 0392: ROL ESTKL+1,X + ROL ESTKL+1,X +; libsrc/int32.pla: 0393: ROL ESTKH+1,X + ROL ESTKH+1,X +; libsrc/int32.pla: 0394: LDA ESTKL+0,X ; REMNDR + LDA ESTKL+0,X ; REMNDR +; libsrc/int32.pla: 0395: CMP SRC+0 ; DVSR + CMP SRC+0 ; DVSR +; libsrc/int32.pla: 0396: LDA ESTKH+0,X ; COMPARE + LDA ESTKH+0,X ; COMPARE +; libsrc/int32.pla: 0397: SBC SRC+1 + SBC SRC+1 +; libsrc/int32.pla: 0398: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/int32.pla: 0399: SBC SRC+2 + SBC SRC+2 +; libsrc/int32.pla: 0400: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/int32.pla: 0401: SBC SRC+3 + SBC SRC+3 +; libsrc/int32.pla: 0402: BCC + ; IS LESS THAN? + BCC + ; IS LESS THAN? +; libsrc/int32.pla: 0403: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/int32.pla: 0404: LDA ESTKL+0,X ; REMNDR + LDA ESTKL+0,X ; REMNDR +; libsrc/int32.pla: 0405: SBC SRC+0 ; DVSR + SBC SRC+0 ; DVSR +; libsrc/int32.pla: 0406: STA ESTKL+0,X ; SUBTRACT + STA ESTKL+0,X ; SUBTRACT +; libsrc/int32.pla: 0407: LDA ESTKH+0,X + LDA ESTKH+0,X +; libsrc/int32.pla: 0408: SBC SRC+1 + SBC SRC+1 +; libsrc/int32.pla: 0409: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/int32.pla: 0410: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/int32.pla: 0411: SBC SRC+2 + SBC SRC+2 +; libsrc/int32.pla: 0412: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/int32.pla: 0413: SEC + SEC +; libsrc/int32.pla: 0414: + ROL ACCUM32+0 ; DVDND ++ ROL ACCUM32+0 ; DVDND +; libsrc/int32.pla: 0415: ROL ACCUM32+1 ; ROTATE IN RESULT + ROL ACCUM32+1 ; ROTATE IN RESULT +; libsrc/int32.pla: 0416: ROL ACCUM32+2 + ROL ACCUM32+2 +; libsrc/int32.pla: 0417: ROL ACCUM32+3 + ROL ACCUM32+3 +; libsrc/int32.pla: 0418: DEY + DEY +; libsrc/int32.pla: 0419: BNE - + BNE - +; libsrc/int32.pla: 0420: LDA DVSIGN ; SET SIGNS OF RESULTS + LDA DVSIGN ; SET SIGNS OF RESULTS +; libsrc/int32.pla: 0421: BPL + + BPL + +; libsrc/int32.pla: 0422: TYA + TYA +; libsrc/int32.pla: 0423: SEC + SEC +; libsrc/int32.pla: 0424: SBC ESTKL+0,X + SBC ESTKL+0,X +; libsrc/int32.pla: 0425: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/int32.pla: 0426: TYA + TYA +; libsrc/int32.pla: 0427: SBC ESTKH+0,X + SBC ESTKH+0,X +; libsrc/int32.pla: 0428: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/int32.pla: 0429: TYA + TYA +; libsrc/int32.pla: 0430: SBC ESTKL+1,X + SBC ESTKL+1,X +; libsrc/int32.pla: 0431: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/int32.pla: 0432: TYA + TYA +; libsrc/int32.pla: 0433: SBC ESTKH+1,X + SBC ESTKH+1,X +; libsrc/int32.pla: 0434: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/int32.pla: 0435: LDA DVSIGN + LDA DVSIGN +; libsrc/int32.pla: 0436: + LSR ++ LSR +; libsrc/int32.pla: 0437: BCC + + BCC + +; libsrc/int32.pla: 0438: TYA + TYA +; libsrc/int32.pla: 0439: SBC ACCUM32+0 + SBC ACCUM32+0 +; libsrc/int32.pla: 0440: STA ACCUM32+0 + STA ACCUM32+0 +; libsrc/int32.pla: 0441: TYA + TYA +; libsrc/int32.pla: 0442: SBC ACCUM32+1 + SBC ACCUM32+1 +; libsrc/int32.pla: 0443: STA ACCUM32+1 + STA ACCUM32+1 +; libsrc/int32.pla: 0444: TYA + TYA +; libsrc/int32.pla: 0445: SBC ACCUM32+2 + SBC ACCUM32+2 +; libsrc/int32.pla: 0446: STA ACCUM32+2 + STA ACCUM32+2 +; libsrc/int32.pla: 0447: TYA + TYA +; libsrc/int32.pla: 0448: SBC ACCUM32+3 + SBC ACCUM32+3 +; libsrc/int32.pla: 0449: STA ACCUM32+3 + STA ACCUM32+3 +; libsrc/int32.pla: 0450: + RTS ++ RTS +; libsrc/int32.pla: 0451: end +; libsrc/int32.pla: 0452: export asm iseq32(i32ptr)#1 +_A017 ; iseq32() +; libsrc/int32.pla: 0453: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0454: STA TMPL + STA TMPL +; libsrc/int32.pla: 0455: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0456: STA TMPH + STA TMPH +; libsrc/int32.pla: 0457: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0458: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0459: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0460: DEY + DEY +; libsrc/int32.pla: 0461: BPL - + BPL - +; libsrc/int32.pla: 0462: INY + INY +; libsrc/int32.pla: 0463: BEQ _ISEQ + BEQ _ISEQ +; libsrc/int32.pla: 0464: end +; libsrc/int32.pla: 0465: export asm iseqi16(imm16)#1 +_A018 ; iseqi16() +; libsrc/int32.pla: 0466: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0467: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0468: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0469: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0470: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0471: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0472: DEY + DEY +; libsrc/int32.pla: 0473: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0474: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0475: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0476: _ISEQ LDA ACCUM32+0 +_ISEQ LDA ACCUM32+0 +; libsrc/int32.pla: 0477: CMP SRC+0 + CMP SRC+0 +; libsrc/int32.pla: 0478: BNE + + BNE + +; libsrc/int32.pla: 0479: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0480: CMP SRC+1 + CMP SRC+1 +; libsrc/int32.pla: 0481: BNE + + BNE + +; libsrc/int32.pla: 0482: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0483: CMP SRC+2 + CMP SRC+2 +; libsrc/int32.pla: 0484: BNE + + BNE + +; libsrc/int32.pla: 0485: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0486: CMP SRC+3 + CMP SRC+3 +; libsrc/int32.pla: 0487: BNE + + BNE + +; libsrc/int32.pla: 0488: DEY + DEY +; libsrc/int32.pla: 0489: + STY ESTKL+0,X ++ STY ESTKL+0,X +; libsrc/int32.pla: 0490: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0491: RTS + RTS +; libsrc/int32.pla: 0492: end +; libsrc/int32.pla: 0493: export asm isge32(i32ptr)#1 +_A019 ; isge32() +; libsrc/int32.pla: 0494: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0495: STA TMPL + STA TMPL +; libsrc/int32.pla: 0496: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0497: STA TMPH + STA TMPH +; libsrc/int32.pla: 0498: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0499: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0500: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0501: DEY + DEY +; libsrc/int32.pla: 0502: BPL - + BPL - +; libsrc/int32.pla: 0503: INY + INY +; libsrc/int32.pla: 0504: BEQ _ISGE + BEQ _ISGE +; libsrc/int32.pla: 0505: end +; libsrc/int32.pla: 0506: export asm isgei16(imm16)#1 +_A020 ; isgei16() +; libsrc/int32.pla: 0507: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0508: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0509: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0510: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0511: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0512: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0513: DEY + DEY +; libsrc/int32.pla: 0514: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0515: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0516: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0517: _ISGE LDA ACCUM32+0 +_ISGE LDA ACCUM32+0 +; libsrc/int32.pla: 0518: CMP SRC+0 + CMP SRC+0 +; libsrc/int32.pla: 0519: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0520: SBC SRC+1 + SBC SRC+1 +; libsrc/int32.pla: 0521: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0522: SBC SRC+2 + SBC SRC+2 +; libsrc/int32.pla: 0523: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0524: SBC SRC+3 + SBC SRC+3 +; libsrc/int32.pla: 0525: BVC + + BVC + +; libsrc/int32.pla: 0526: EOR #$80 + EOR #$80 +; libsrc/int32.pla: 0527: + BMI + ++ BMI + +; libsrc/int32.pla: 0528: DEY + DEY +; libsrc/int32.pla: 0529: + STY ESTKL+0,X ++ STY ESTKL+0,X +; libsrc/int32.pla: 0530: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0531: RTS + RTS +; libsrc/int32.pla: 0532: end +; libsrc/int32.pla: 0533: export asm isle32(i32ptr)#1 +_A021 ; isle32() +; libsrc/int32.pla: 0534: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0535: STA TMPL + STA TMPL +; libsrc/int32.pla: 0536: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0537: STA TMPH + STA TMPH +; libsrc/int32.pla: 0538: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0539: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0540: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0541: DEY + DEY +; libsrc/int32.pla: 0542: BPL - + BPL - +; libsrc/int32.pla: 0543: INY + INY +; libsrc/int32.pla: 0544: BEQ _ISLE + BEQ _ISLE +; libsrc/int32.pla: 0545: end +; libsrc/int32.pla: 0546: export asm islei16(imm16)#1 +_A022 ; islei16() +; libsrc/int32.pla: 0547: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0548: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0549: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0550: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0551: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0552: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0553: DEY + DEY +; libsrc/int32.pla: 0554: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0555: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0556: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0557: _ISLE LDA SRC+0 +_ISLE LDA SRC+0 +; libsrc/int32.pla: 0558: CMP ACCUM32+0 + CMP ACCUM32+0 +; libsrc/int32.pla: 0559: LDA SRC+1 + LDA SRC+1 +; libsrc/int32.pla: 0560: SBC ACCUM32+1 + SBC ACCUM32+1 +; libsrc/int32.pla: 0561: LDA SRC+2 + LDA SRC+2 +; libsrc/int32.pla: 0562: SBC ACCUM32+2 + SBC ACCUM32+2 +; libsrc/int32.pla: 0563: LDA SRC+3 + LDA SRC+3 +; libsrc/int32.pla: 0564: SBC ACCUM32+3 + SBC ACCUM32+3 +; libsrc/int32.pla: 0565: BVC + + BVC + +; libsrc/int32.pla: 0566: EOR #$80 + EOR #$80 +; libsrc/int32.pla: 0567: + BMI + ++ BMI + +; libsrc/int32.pla: 0568: DEY + DEY +; libsrc/int32.pla: 0569: + STY ESTKL+0,X ++ STY ESTKL+0,X +; libsrc/int32.pla: 0570: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0571: RTS + RTS +; libsrc/int32.pla: 0572: end +; libsrc/int32.pla: 0573: export asm isgt32(i32ptr)#1 +_A023 ; isgt32() +; libsrc/int32.pla: 0574: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0575: STA TMPL + STA TMPL +; libsrc/int32.pla: 0576: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0577: STA TMPH + STA TMPH +; libsrc/int32.pla: 0578: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0579: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0580: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0581: DEY + DEY +; libsrc/int32.pla: 0582: BPL - + BPL - +; libsrc/int32.pla: 0583: INY + INY +; libsrc/int32.pla: 0584: BEQ _ISGT + BEQ _ISGT +; libsrc/int32.pla: 0585: end +; libsrc/int32.pla: 0586: export asm isgti16(imm16)#1 +_A024 ; isgti16() +; libsrc/int32.pla: 0587: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0588: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0589: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0590: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0591: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0592: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0593: DEY + DEY +; libsrc/int32.pla: 0594: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0595: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0596: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0597: _ISGT LDA SRC+0 +_ISGT LDA SRC+0 +; libsrc/int32.pla: 0598: CMP ACCUM32+0 + CMP ACCUM32+0 +; libsrc/int32.pla: 0599: LDA SRC+1 + LDA SRC+1 +; libsrc/int32.pla: 0600: SBC ACCUM32+1 + SBC ACCUM32+1 +; libsrc/int32.pla: 0601: LDA SRC+2 + LDA SRC+2 +; libsrc/int32.pla: 0602: SBC ACCUM32+2 + SBC ACCUM32+2 +; libsrc/int32.pla: 0603: LDA SRC+3 + LDA SRC+3 +; libsrc/int32.pla: 0604: SBC ACCUM32+3 + SBC ACCUM32+3 +; libsrc/int32.pla: 0605: BVC + + BVC + +; libsrc/int32.pla: 0606: EOR #$80 + EOR #$80 +; libsrc/int32.pla: 0607: + BPL + ++ BPL + +; libsrc/int32.pla: 0608: DEY + DEY +; libsrc/int32.pla: 0609: + STY ESTKL+0,X ++ STY ESTKL+0,X +; libsrc/int32.pla: 0610: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0611: RTS + RTS +; libsrc/int32.pla: 0612: end +; libsrc/int32.pla: 0613: export asm islt32(i32ptr)#1 +_A025 ; islt32() +; libsrc/int32.pla: 0614: LDA ESTKL+0,X ; I32PTR + LDA ESTKL+0,X ; I32PTR +; libsrc/int32.pla: 0615: STA TMPL + STA TMPL +; libsrc/int32.pla: 0616: LDA ESTKH+0,X ; I32PTR + LDA ESTKH+0,X ; I32PTR +; libsrc/int32.pla: 0617: STA TMPH + STA TMPH +; libsrc/int32.pla: 0618: LDY #$03 + LDY #$03 +; libsrc/int32.pla: 0619: - LDA (TMP),Y +- LDA (TMP),Y +; libsrc/int32.pla: 0620: STA SRC,Y + STA SRC,Y +; libsrc/int32.pla: 0621: DEY + DEY +; libsrc/int32.pla: 0622: BPL - + BPL - +; libsrc/int32.pla: 0623: INY + INY +; libsrc/int32.pla: 0624: BEQ _ISLT + BEQ _ISLT +; libsrc/int32.pla: 0625: end +; libsrc/int32.pla: 0626: export asm islti16(imm16)#1 +_A026 ; islti16() +; libsrc/int32.pla: 0627: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0628: LDA ESTKL+0,X ; IMM16L + LDA ESTKL+0,X ; IMM16L +; libsrc/int32.pla: 0629: STA SRC+0 + STA SRC+0 +; libsrc/int32.pla: 0630: LDA ESTKH+0,X ; IMM16H + LDA ESTKH+0,X ; IMM16H +; libsrc/int32.pla: 0631: STA SRC+1 + STA SRC+1 +; libsrc/int32.pla: 0632: BPL + ; SIGN EXTEND + BPL + ; SIGN EXTEND +; libsrc/int32.pla: 0633: DEY + DEY +; libsrc/int32.pla: 0634: + STY SRC+2 ++ STY SRC+2 +; libsrc/int32.pla: 0635: STY SRC+3 + STY SRC+3 +; libsrc/int32.pla: 0636: LDY #$00 + LDY #$00 +; libsrc/int32.pla: 0637: _ISLT LDA ACCUM32+0 +_ISLT LDA ACCUM32+0 +; libsrc/int32.pla: 0638: CMP SRC+0 + CMP SRC+0 +; libsrc/int32.pla: 0639: LDA ACCUM32+1 + LDA ACCUM32+1 +; libsrc/int32.pla: 0640: SBC SRC+1 + SBC SRC+1 +; libsrc/int32.pla: 0641: LDA ACCUM32+2 + LDA ACCUM32+2 +; libsrc/int32.pla: 0642: SBC SRC+2 + SBC SRC+2 +; libsrc/int32.pla: 0643: LDA ACCUM32+3 + LDA ACCUM32+3 +; libsrc/int32.pla: 0644: SBC SRC+3 + SBC SRC+3 +; libsrc/int32.pla: 0645: BVC + + BVC + +; libsrc/int32.pla: 0646: EOR #$80 + EOR #$80 +; libsrc/int32.pla: 0647: + BPL + ++ BPL + +; libsrc/int32.pla: 0648: DEY + DEY +; libsrc/int32.pla: 0649: + STY ESTKL+0,X ++ STY ESTKL+0,X +; libsrc/int32.pla: 0650: STY ESTKH+0,X + STY ESTKH+0,X +; libsrc/int32.pla: 0651: RTS + RTS +; libsrc/int32.pla: 0652: end +; libsrc/int32.pla: 0653: export def i32tos(i32ptr, strptr)#1 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; i32ptr -> [0] + ; strptr -> [2] +_C000 ; i32tos() +; libsrc/int32.pla: 0654: res[t_i32] save + ; save -> [4] +; libsrc/int32.pla: 0655: word iptr, rem + ; iptr -> [8] + ; rem -> [10] +; libsrc/int32.pla: 0656: char[12] istr + ; istr -> [12] +; libsrc/int32.pla: 0657: +; libsrc/int32.pla: 0658: iptr = @istr.11 + !BYTE $58,$18,$02 ; ENTER 24,2 +; libsrc/int32.pla: 0659: store32(@save) +; libsrc/int32.pla: 0660: load32(i32ptr) +; libsrc/int32.pla: 0661: if i32ptr->3 & $80 +; libsrc/int32.pla: 0662: neg32() +; libsrc/int32.pla: 0663: putc('-') +; libsrc/int32.pla: 0664: fin + !BYTE $28,$17 ; LLA [23] + !BYTE $76,$08 ; SLW [8] + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A006 +_F000 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A004 +_F001 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $54 ; CALL _A003 +_F002 !WORD _A003 + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _X002 +_F003 !WORD 0 +_B001 +_B002 +; libsrc/int32.pla: 0665: repeat +_B004 +; libsrc/int32.pla: 0666: drop, rem = divi16(10) // Only care about LSW of remainder +; libsrc/int32.pla: 0667: ^iptr = rem + '0' +; libsrc/int32.pla: 0668: iptr-- + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _A016 +_F004 !WORD _A016 + !BYTE $76,$0A ; SLW [10] + !BYTE $30 ; DROP + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$08 ; LLW [8] + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; libsrc/int32.pla: 0669: until iseqi16(0) + !BYTE $76,$08 ; SLW [8] +_B005 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A018 +_F005 !WORD _A018 + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* +_B003 +; libsrc/int32.pla: 0670: ^iptr = @istr.11 - iptr +; libsrc/int32.pla: 0671: strcpy(strptr, iptr) +; libsrc/int32.pla: 0672: load32(@save) +; libsrc/int32.pla: 0673: return strptr + !BYTE $28,$17 ; LLA [23] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $66,$08 ; LLW [8] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _X019 +_F006 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A004 +_F007 !WORD _A004 + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$18 ; LEAVE 24 +; libsrc/int32.pla: 0674: end +; libsrc/int32.pla: 0675: export def puti32(i32ptr)#0 + ; i32ptr -> [0] +_C001 ; puti32() +; libsrc/int32.pla: 0676: char[12] i32str + ; i32str -> [2] +; libsrc/int32.pla: 0677: +; libsrc/int32.pla: 0678: puts(i32tos(i32ptr, @i32str)) + !BYTE $58,$0E,$01 ; ENTER 14,1 +; libsrc/int32.pla: 0679: end + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C000 +_F008 !WORD _C000 + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 + !BYTE $5A,$0E ; LEAVE 14 +; libsrc/int32.pla: 0680: +; libsrc/int32.pla: 0681: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: ZERO32 + !BYTE $DA,$C5,$D2,$CF,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + ; DCI STRING: ZEXT16TO32 + !BYTE $DA,$C5,$D8,$D4,$B1,$B6,$D4,$CF,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A002 + ; DCI STRING: NEG32 + !BYTE $CE,$C5,$C7,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A003 + ; DCI STRING: LOAD32 + !BYTE $CC,$CF,$C1,$C4,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A004 + ; DCI STRING: LOADI16 + !BYTE $CC,$CF,$C1,$C4,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A005 + ; DCI STRING: STORE32 + !BYTE $D3,$D4,$CF,$D2,$C5,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A006 + ; DCI STRING: ADD32 + !BYTE $C1,$C4,$C4,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A007 + ; DCI STRING: ADDI16 + !BYTE $C1,$C4,$C4,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A008 + ; DCI STRING: SUB32 + !BYTE $D3,$D5,$C2,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A009 + ; DCI STRING: SUBI16 + !BYTE $D3,$D5,$C2,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A010 + ; DCI STRING: SHL32 + !BYTE $D3,$C8,$CC,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A011 + ; DCI STRING: SHR32 + !BYTE $D3,$C8,$D2,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A012 + ; DCI STRING: MUL32 + !BYTE $CD,$D5,$CC,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A013 + ; DCI STRING: MULI16 + !BYTE $CD,$D5,$CC,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A014 + ; DCI STRING: DIV32 + !BYTE $C4,$C9,$D6,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A015 + ; DCI STRING: DIVI16 + !BYTE $C4,$C9,$D6,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A016 + ; DCI STRING: ISEQ32 + !BYTE $C9,$D3,$C5,$D1,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A017 + ; DCI STRING: ISEQI16 + !BYTE $C9,$D3,$C5,$D1,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A018 + ; DCI STRING: ISGE32 + !BYTE $C9,$D3,$C7,$C5,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A019 + ; DCI STRING: ISGEI16 + !BYTE $C9,$D3,$C7,$C5,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A020 + ; DCI STRING: ISLE32 + !BYTE $C9,$D3,$CC,$C5,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A021 + ; DCI STRING: ISLEI16 + !BYTE $C9,$D3,$CC,$C5,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A022 + ; DCI STRING: ISGT32 + !BYTE $C9,$D3,$C7,$D4,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A023 + ; DCI STRING: ISGTI16 + !BYTE $C9,$D3,$C7,$D4,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A024 + ; DCI STRING: ISLT32 + !BYTE $C9,$D3,$CC,$D4,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A025 + ; DCI STRING: ISLTI16 + !BYTE $C9,$D3,$CC,$D4,$C9,$B1,$36 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A026 + ; DCI STRING: I32TOS + !BYTE $C9,$B3,$B2,$D4,$CF,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: PUTI32 + !BYTE $D0,$D5,$D4,$C9,$B3,$32 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/lines.a b/src/libsrc/lines.a new file mode 100644 index 0000000..8a6c37d --- /dev/null +++ b/src/libsrc/lines.a @@ -0,0 +1,1945 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/lines.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/lines.pla: 0001: +; libsrc/lines.pla: 0002: predef nopLin(a, b, c)#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/lines.pla: 0003: predef nopPix(a, b)#0 +; libsrc/lines.pla: 0004: +; libsrc/lines.pla: 0005: byte jmpplot = $4C // Sneaky! +_D030 ; jmpplot = $4C // Sneaky! + !BYTE $4C +; libsrc/lines.pla: 0006: var plot = @nopPix +_D031 ; plot = @nopPix +_F000 !WORD _P001 +; libsrc/lines.pla: 0007: var hspan = @nopLin +_D032 ; hspan = @nopLin +_F001 !WORD _P000 +; libsrc/lines.pla: 0008: var vspan = @nopLin +_D033 ; vspan = @nopLin +_F002 !WORD _P000 +; libsrc/lines.pla: 0009: var err, shorterr, shortlen, longerr, longlen +_D034 !FILL 2 ; err, shorterr, shortlen, longerr, longlen +_D035 !FILL 2 ; shorterr, shortlen, longerr, longlen +_D036 !FILL 2 ; shortlen, longerr, longlen +_D037 !FILL 2 ; longerr, longlen +_D038 !FILL 2 ; longlen +; libsrc/lines.pla: 0010: +; libsrc/lines.pla: 0011: //def nopLin(a, b, c)#0 +; libsrc/lines.pla: 0012: //end +; libsrc/lines.pla: 0013: //def majorspans(majorstart, major, majorend, minor, dir, majorspan)#0 +; libsrc/lines.pla: 0014: // // +; libsrc/lines.pla: 0015: // // Initial half-span step +; libsrc/lines.pla: 0016: // // +; libsrc/lines.pla: 0017: // err = err + shorterr +; libsrc/lines.pla: 0018: // repeat +; libsrc/lines.pla: 0019: // majorspan(majorstart, major, minor)#0 +; libsrc/lines.pla: 0020: // minor = minor + dir // Move to next span +; libsrc/lines.pla: 0021: // majorstart = major + 1 // Start of next span = end of previous + 1 +; libsrc/lines.pla: 0022: // if err >= 0 // Short span +; libsrc/lines.pla: 0023: // err = err + shorterr +; libsrc/lines.pla: 0024: // major = major + shortlen +; libsrc/lines.pla: 0025: // else // Long span +; libsrc/lines.pla: 0026: // err = err + longerr +; libsrc/lines.pla: 0027: // major = major + longlen +; libsrc/lines.pla: 0028: // fin +; libsrc/lines.pla: 0029: // until major >= majorend +; libsrc/lines.pla: 0030: // // +; libsrc/lines.pla: 0031: // // Final half-span step +; libsrc/lines.pla: 0032: // // +; libsrc/lines.pla: 0033: // majorspan(majorstart, majorend, minor)#0 +; libsrc/lines.pla: 0034: //end +; libsrc/lines.pla: 0035: asm majorspans(majorstart, major, majorend, minor, dir, majorspan)#0 +_A000 ; majorspans() +; libsrc/lines.pla: 0036: !SOURCE "vmsrc/plvmzp.inc" +!SOURCE "vmsrc/plvmzp.inc" +; libsrc/lines.pla: 0037: LDA $1000 ; ERRL + LDA $1000 ; ERRL +; libsrc/lines.pla: 0038: CLC + CLC +; libsrc/lines.pla: 0039: ADC $2000 ; SHORTERRL + ADC $2000 ; SHORTERRL +; libsrc/lines.pla: 0040: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0041: LDA $1001 ; ERRH + LDA $1001 ; ERRH +; libsrc/lines.pla: 0042: ADC $2001 ; SHORTERRH + ADC $2001 ; SHORTERRH +; libsrc/lines.pla: 0043: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0044: LDA ESTKL+0,X ; MAJORSPANL + LDA ESTKL+0,X ; MAJORSPANL +; libsrc/lines.pla: 0045: STA $A000 + STA $A000 +; libsrc/lines.pla: 0046: STA $B000 + STA $B000 +; libsrc/lines.pla: 0047: LDA ESTKH+0,X ; MAJORSPANH + LDA ESTKH+0,X ; MAJORSPANH +; libsrc/lines.pla: 0048: STA $A001 + STA $A001 +; libsrc/lines.pla: 0049: STA $B001 + STA $B001 +; libsrc/lines.pla: 0050: end +; libsrc/lines.pla: 0051: asm _majorspansA +_A001 ; _majorspansA() +; libsrc/lines.pla: 0052: - DEX +- DEX +; libsrc/lines.pla: 0053: DEX + DEX +; libsrc/lines.pla: 0054: DEX + DEX +; libsrc/lines.pla: 0055: LDA ESTKL+8,X ; MAJORSTARTL + LDA ESTKL+8,X ; MAJORSTARTL +; libsrc/lines.pla: 0056: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/lines.pla: 0057: LDA ESTKH+8,X ; MAJORSTARTH + LDA ESTKH+8,X ; MAJORSTARTH +; libsrc/lines.pla: 0058: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/lines.pla: 0059: LDA ESTKL+7,X ; MAJORL + LDA ESTKL+7,X ; MAJORL +; libsrc/lines.pla: 0060: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/lines.pla: 0061: LDA ESTKH+7,X ; MAJORH + LDA ESTKH+7,X ; MAJORH +; libsrc/lines.pla: 0062: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/lines.pla: 0063: LDA ESTKL+5,X ; MINORL + LDA ESTKL+5,X ; MINORL +; libsrc/lines.pla: 0064: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/lines.pla: 0065: LDA ESTKH+5,X ; MINORH + LDA ESTKH+5,X ; MINORH +; libsrc/lines.pla: 0066: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/lines.pla: 0067: JSR $A000 + JSR $A000 +; libsrc/lines.pla: 0068: +; libsrc/lines.pla: 0069: LDA ESTKL+2,X ; MINORL + LDA ESTKL+2,X ; MINORL +; libsrc/lines.pla: 0070: CLC + CLC +; libsrc/lines.pla: 0071: ADC ESTKL+1,X ; DIRL + ADC ESTKL+1,X ; DIRL +; libsrc/lines.pla: 0072: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/lines.pla: 0073: LDA ESTKH+2,X ; MINORH + LDA ESTKH+2,X ; MINORH +; libsrc/lines.pla: 0074: ADC ESTKH+1,X ; DIRH + ADC ESTKH+1,X ; DIRH +; libsrc/lines.pla: 0075: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/lines.pla: 0076: +; libsrc/lines.pla: 0077: LDA ESTKL+4,X ; MAJORL + LDA ESTKL+4,X ; MAJORL +; libsrc/lines.pla: 0078: CLC + CLC +; libsrc/lines.pla: 0079: ADC #$01 + ADC #$01 +; libsrc/lines.pla: 0080: STA ESTKL+5,X ; MAJORSTARTL + STA ESTKL+5,X ; MAJORSTARTL +; libsrc/lines.pla: 0081: LDA ESTKH+4,X ; MAJORH + LDA ESTKH+4,X ; MAJORH +; libsrc/lines.pla: 0082: ADC #$00 + ADC #$00 +; libsrc/lines.pla: 0083: STA ESTKH+5,X ; MAJORSTARTH + STA ESTKH+5,X ; MAJORSTARTH +; libsrc/lines.pla: 0084: end +; libsrc/lines.pla: 0085: asm _majorspansB +_A002 ; _majorspansB() +; libsrc/lines.pla: 0086: LDY $1001 ; ERRH + LDY $1001 ; ERRH +; libsrc/lines.pla: 0087: BMI + + BMI + +; libsrc/lines.pla: 0088: end +; libsrc/lines.pla: 0089: asm _majorspansC +_A003 ; _majorspansC() +; libsrc/lines.pla: 0090: LDA $1000 ; ERRL + LDA $1000 ; ERRL +; libsrc/lines.pla: 0091: CLC + CLC +; libsrc/lines.pla: 0092: ADC $2000 ; SHORTERRL + ADC $2000 ; SHORTERRL +; libsrc/lines.pla: 0093: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0094: TYA ; ERRH + TYA ; ERRH +; libsrc/lines.pla: 0095: ADC $2001 ; SHORTERRH + ADC $2001 ; SHORTERRH +; libsrc/lines.pla: 0096: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0097: LDA ESTKL+4,X ; MAJORL + LDA ESTKL+4,X ; MAJORL +; libsrc/lines.pla: 0098: CLC + CLC +; libsrc/lines.pla: 0099: ADC $3000 ; SHORTLENL + ADC $3000 ; SHORTLENL +; libsrc/lines.pla: 0100: STA ESTKL+4,X + STA ESTKL+4,X +; libsrc/lines.pla: 0101: LDA ESTKH+4,X ; MAJORH + LDA ESTKH+4,X ; MAJORH +; libsrc/lines.pla: 0102: ADC $3001 ; SHORTLENH + ADC $3001 ; SHORTLENH +; libsrc/lines.pla: 0103: STA ESTKH+4,X + STA ESTKH+4,X +; libsrc/lines.pla: 0104: LDA ESTKL+4,X ; MAJORL + LDA ESTKL+4,X ; MAJORL +; libsrc/lines.pla: 0105: CMP ESTKL+3,X ; MAJORENDL + CMP ESTKL+3,X ; MAJORENDL +; libsrc/lines.pla: 0106: LDA ESTKH+4,X ; MAJORH + LDA ESTKH+4,X ; MAJORH +; libsrc/lines.pla: 0107: SBC ESTKH+3,X ; MAJORENDH + SBC ESTKH+3,X ; MAJORENDH +; libsrc/lines.pla: 0108: BCC - + BCC - +; libsrc/lines.pla: 0109: BCS ++ + BCS ++ +; libsrc/lines.pla: 0110: end +; libsrc/lines.pla: 0111: asm _majorspansD +_A004 ; _majorspansD() +; libsrc/lines.pla: 0112: + LDA $1000 ; ERRL ++ LDA $1000 ; ERRL +; libsrc/lines.pla: 0113: CLC + CLC +; libsrc/lines.pla: 0114: ADC $4000 ; LONGERRL + ADC $4000 ; LONGERRL +; libsrc/lines.pla: 0115: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0116: TYA ; ERRH + TYA ; ERRH +; libsrc/lines.pla: 0117: ADC $4001 ; LONGERRL + ADC $4001 ; LONGERRL +; libsrc/lines.pla: 0118: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0119: LDA ESTKL+4,X ; MAJORL + LDA ESTKL+4,X ; MAJORL +; libsrc/lines.pla: 0120: CLC + CLC +; libsrc/lines.pla: 0121: ADC $5000 ; LONGLENL + ADC $5000 ; LONGLENL +; libsrc/lines.pla: 0122: STA ESTKL+4,X + STA ESTKL+4,X +; libsrc/lines.pla: 0123: LDA ESTKH+4,X ; MAJORH + LDA ESTKH+4,X ; MAJORH +; libsrc/lines.pla: 0124: ADC $5001 ; LONGLENH + ADC $5001 ; LONGLENH +; libsrc/lines.pla: 0125: STA ESTKH+4,X + STA ESTKH+4,X +; libsrc/lines.pla: 0126: LDA ESTKL+4,X ; MAJORL + LDA ESTKL+4,X ; MAJORL +; libsrc/lines.pla: 0127: CMP ESTKL+3,X ; MAJORENDL + CMP ESTKL+3,X ; MAJORENDL +; libsrc/lines.pla: 0128: LDA ESTKH+4,X ; MAJORH + LDA ESTKH+4,X ; MAJORH +; libsrc/lines.pla: 0129: SBC ESTKH+3,X ; MAJORENDH + SBC ESTKH+3,X ; MAJORENDH +; libsrc/lines.pla: 0130: BCS ++ + BCS ++ +; libsrc/lines.pla: 0131: end +; libsrc/lines.pla: 0132: asm _majorspansE +_A005 ; _majorspansE() +; libsrc/lines.pla: 0133: JMP $6000 + JMP $6000 +; libsrc/lines.pla: 0134: ++ DEX +++ DEX +; libsrc/lines.pla: 0135: DEX + DEX +; libsrc/lines.pla: 0136: DEX + DEX +; libsrc/lines.pla: 0137: LDA ESTKL+8,X ; MAJORSTARTL + LDA ESTKL+8,X ; MAJORSTARTL +; libsrc/lines.pla: 0138: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/lines.pla: 0139: LDA ESTKH+8,X ; MAJORSTARTH + LDA ESTKH+8,X ; MAJORSTARTH +; libsrc/lines.pla: 0140: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/lines.pla: 0141: LDA ESTKL+6,X ; MAJORENDL + LDA ESTKL+6,X ; MAJORENDL +; libsrc/lines.pla: 0142: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/lines.pla: 0143: LDA ESTKH+6,X ; MAJORENDH + LDA ESTKH+6,X ; MAJORENDH +; libsrc/lines.pla: 0144: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/lines.pla: 0145: LDA ESTKL+5,X ; MINORL + LDA ESTKL+5,X ; MINORL +; libsrc/lines.pla: 0146: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/lines.pla: 0147: LDA ESTKH+5,X ; MINORH + LDA ESTKH+5,X ; MINORH +; libsrc/lines.pla: 0148: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/lines.pla: 0149: JSR $B000 + JSR $B000 +; libsrc/lines.pla: 0150: TXA + TXA +; libsrc/lines.pla: 0151: CLC + CLC +; libsrc/lines.pla: 0152: ADC #$06 + ADC #$06 +; libsrc/lines.pla: 0153: TAX + TAX +; libsrc/lines.pla: 0154: RTS + RTS +; libsrc/lines.pla: 0155: end +; libsrc/lines.pla: 0156: asm nopLin(a, b, c)#0 +_P000 ; nopLin(a, b, c)#0() +_A006 ; nopLin() +; libsrc/lines.pla: 0157: INX + INX +; libsrc/lines.pla: 0158: end +; libsrc/lines.pla: 0159: asm nopPix(a, b)#0 +_P001 ; nopPix(a, b)#0() +_A007 ; nopPix() +; libsrc/lines.pla: 0160: INX + INX +; libsrc/lines.pla: 0161: INX + INX +; libsrc/lines.pla: 0162: RTS + RTS +; libsrc/lines.pla: 0163: end +; libsrc/lines.pla: 0164: //def hline(x1, x2, dx2, y, dy2, sy)#0 +; libsrc/lines.pla: 0165: // var dyx2, x +; libsrc/lines.pla: 0166: // +; libsrc/lines.pla: 0167: // err = dy2 - dx2 / 2 +; libsrc/lines.pla: 0168: // dyx2 = dy2 - dx2 +; libsrc/lines.pla: 0169: // for x = x1 to x2 +; libsrc/lines.pla: 0170: // plot(x, y)#0 +; libsrc/lines.pla: 0171: // if err >= 0 +; libsrc/lines.pla: 0172: // y = y + sy +; libsrc/lines.pla: 0173: // err = err + dyx2 +; libsrc/lines.pla: 0174: // else +; libsrc/lines.pla: 0175: // err = err + dy2 +; libsrc/lines.pla: 0176: // fin +; libsrc/lines.pla: 0177: // next +; libsrc/lines.pla: 0178: //end +; libsrc/lines.pla: 0179: asm hline(x1, x2, dx2, y, dy2, sy)#0 +_A008 ; hline() +; libsrc/lines.pla: 0180: LDA ESTKH+3,X ; DX2H + LDA ESTKH+3,X ; DX2H +; libsrc/lines.pla: 0181: LSR + LSR +; libsrc/lines.pla: 0182: STA TMPH + STA TMPH +; libsrc/lines.pla: 0183: LDA ESTKL+3,X ; DX2L + LDA ESTKL+3,X ; DX2L +; libsrc/lines.pla: 0184: ROR + ROR +; libsrc/lines.pla: 0185: STA TMPL + STA TMPL +; libsrc/lines.pla: 0186: LDA ESTKL+1,X ; DY2L + LDA ESTKL+1,X ; DY2L +; libsrc/lines.pla: 0187: SEC + SEC +; libsrc/lines.pla: 0188: SBC TMPL + SBC TMPL +; libsrc/lines.pla: 0189: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0190: LDA ESTKH+1,X ; DY2H + LDA ESTKH+1,X ; DY2H +; libsrc/lines.pla: 0191: SBC TMPH + SBC TMPH +; libsrc/lines.pla: 0192: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0193: LDA ESTKL+1,X ; DY2L + LDA ESTKL+1,X ; DY2L +; libsrc/lines.pla: 0194: SEC + SEC +; libsrc/lines.pla: 0195: SBC ESTKL+3,X ; DX2L + SBC ESTKL+3,X ; DX2L +; libsrc/lines.pla: 0196: STA ESTKL+3,X ; DYX2L + STA ESTKL+3,X ; DYX2L +; libsrc/lines.pla: 0197: LDA ESTKH+1,X ; DY2H + LDA ESTKH+1,X ; DY2H +; libsrc/lines.pla: 0198: SBC ESTKH+3,X ; DX2H + SBC ESTKH+3,X ; DX2H +; libsrc/lines.pla: 0199: STA ESTKH+3,X ; DYX2H + STA ESTKH+3,X ; DYX2H +; libsrc/lines.pla: 0200: - DEX +- DEX +; libsrc/lines.pla: 0201: DEX + DEX +; libsrc/lines.pla: 0202: LDA ESTKL+7,X ; XL + LDA ESTKL+7,X ; XL +; libsrc/lines.pla: 0203: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/lines.pla: 0204: LDA ESTKH+7,X ; XH + LDA ESTKH+7,X ; XH +; libsrc/lines.pla: 0205: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/lines.pla: 0206: LDA ESTKL+4,X ; YL + LDA ESTKL+4,X ; YL +; libsrc/lines.pla: 0207: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/lines.pla: 0208: LDA ESTKH+4,X ; YH + LDA ESTKH+4,X ; YH +; libsrc/lines.pla: 0209: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/lines.pla: 0210: end +; libsrc/lines.pla: 0211: asm _hlineA +_A009 ; _hlineA() +; libsrc/lines.pla: 0212: JSR $2000 ; PLOT + JSR $2000 ; PLOT +; libsrc/lines.pla: 0213: LDA $1001 ; ERRH + LDA $1001 ; ERRH +; libsrc/lines.pla: 0214: BMI + + BMI + +; libsrc/lines.pla: 0215: LDA ESTKL+2,X ; YL + LDA ESTKL+2,X ; YL +; libsrc/lines.pla: 0216: CLC + CLC +; libsrc/lines.pla: 0217: ADC ESTKL+0,X ; SYL + ADC ESTKL+0,X ; SYL +; libsrc/lines.pla: 0218: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/lines.pla: 0219: LDA ESTKH+2,X ; YH + LDA ESTKH+2,X ; YH +; libsrc/lines.pla: 0220: ADC ESTKH+0,X ; SYH + ADC ESTKH+0,X ; SYH +; libsrc/lines.pla: 0221: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/lines.pla: 0222: LDA ESTKL+3,X ; DYX2L + LDA ESTKL+3,X ; DYX2L +; libsrc/lines.pla: 0223: LDY ESTKH+3,X ; DYX2H + LDY ESTKH+3,X ; DYX2H +; libsrc/lines.pla: 0224: BEQ ++ + BEQ ++ +; libsrc/lines.pla: 0225: BNE ++ + BNE ++ +; libsrc/lines.pla: 0226: end +; libsrc/lines.pla: 0227: asm _hlineB +_A010 ; _hlineB() +; libsrc/lines.pla: 0228: + LDA ESTKL+1,X ; DY2L ++ LDA ESTKL+1,X ; DY2L +; libsrc/lines.pla: 0229: LDY ESTKH+1,X ; DY2H + LDY ESTKH+1,X ; DY2H +; libsrc/lines.pla: 0230: ++ CLC +++ CLC +; libsrc/lines.pla: 0231: ADC $1000 ; ERRL + ADC $1000 ; ERRL +; libsrc/lines.pla: 0232: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0233: TYA + TYA +; libsrc/lines.pla: 0234: ADC $1001 ; ERRH + ADC $1001 ; ERRH +; libsrc/lines.pla: 0235: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0236: LDA ESTKL+5,X ; X1L + LDA ESTKL+5,X ; X1L +; libsrc/lines.pla: 0237: CMP ESTKL+4,X ; X2L + CMP ESTKL+4,X ; X2L +; libsrc/lines.pla: 0238: LDA ESTKH+5,X + LDA ESTKH+5,X +; libsrc/lines.pla: 0239: SBC ESTKH+4,X + SBC ESTKH+4,X +; libsrc/lines.pla: 0240: BCS + + BCS + +; libsrc/lines.pla: 0241: INC ESTKL+5,X ; XL + INC ESTKL+5,X ; XL +; libsrc/lines.pla: 0242: BNE - + BNE - +; libsrc/lines.pla: 0243: INC ESTKH+5,X ; XH + INC ESTKH+5,X ; XH +; libsrc/lines.pla: 0244: BCC - + BCC - +; libsrc/lines.pla: 0245: + TXA ++ TXA +; libsrc/lines.pla: 0246: ADC #$05 + ADC #$05 +; libsrc/lines.pla: 0247: TAX + TAX +; libsrc/lines.pla: 0248: RTS + RTS +; libsrc/lines.pla: 0249: end +; libsrc/lines.pla: 0250: //def vline(y1, y2, dy2, x, dx2, sx)#0 +; libsrc/lines.pla: 0251: // var dxy2, y +; libsrc/lines.pla: 0252: // +; libsrc/lines.pla: 0253: // err = dx2 - dy2 / 2 +; libsrc/lines.pla: 0254: // dxy2 = dx2 - dy2 +; libsrc/lines.pla: 0255: // for y = y1 to y2 +; libsrc/lines.pla: 0256: // plot(x, y)#0 +; libsrc/lines.pla: 0257: // if err >= 0 +; libsrc/lines.pla: 0258: // x = x + sx +; libsrc/lines.pla: 0259: // err = err + dxy2 +; libsrc/lines.pla: 0260: // else +; libsrc/lines.pla: 0261: // err = err + dx2 +; libsrc/lines.pla: 0262: // fin +; libsrc/lines.pla: 0263: // next +; libsrc/lines.pla: 0264: //end +; libsrc/lines.pla: 0265: asm vline(y1, y2, dy2, x, dx2, sx)#0 +_A011 ; vline() +; libsrc/lines.pla: 0266: LDA ESTKH+3,X ; DY2H + LDA ESTKH+3,X ; DY2H +; libsrc/lines.pla: 0267: LSR + LSR +; libsrc/lines.pla: 0268: STA TMPH + STA TMPH +; libsrc/lines.pla: 0269: LDA ESTKL+3,X ; DY2L + LDA ESTKL+3,X ; DY2L +; libsrc/lines.pla: 0270: ROR + ROR +; libsrc/lines.pla: 0271: STA TMPL + STA TMPL +; libsrc/lines.pla: 0272: LDA ESTKL+1,X ; DX2L + LDA ESTKL+1,X ; DX2L +; libsrc/lines.pla: 0273: SEC + SEC +; libsrc/lines.pla: 0274: SBC TMPL + SBC TMPL +; libsrc/lines.pla: 0275: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0276: LDA ESTKH+1,X ; DX2H + LDA ESTKH+1,X ; DX2H +; libsrc/lines.pla: 0277: SBC TMPH + SBC TMPH +; libsrc/lines.pla: 0278: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0279: LDA ESTKL+1,X ; DX2L + LDA ESTKL+1,X ; DX2L +; libsrc/lines.pla: 0280: SEC + SEC +; libsrc/lines.pla: 0281: SBC ESTKL+3,X ; DX2L + SBC ESTKL+3,X ; DX2L +; libsrc/lines.pla: 0282: STA ESTKL+3,X ; DXY2L + STA ESTKL+3,X ; DXY2L +; libsrc/lines.pla: 0283: LDA ESTKH+1,X ; DX2H + LDA ESTKH+1,X ; DX2H +; libsrc/lines.pla: 0284: SBC ESTKH+3,X ; DY2H + SBC ESTKH+3,X ; DY2H +; libsrc/lines.pla: 0285: STA ESTKH+3,X ; DXY2H + STA ESTKH+3,X ; DXY2H +; libsrc/lines.pla: 0286: - DEX +- DEX +; libsrc/lines.pla: 0287: DEX + DEX +; libsrc/lines.pla: 0288: LDA ESTKL+4,X ; XL + LDA ESTKL+4,X ; XL +; libsrc/lines.pla: 0289: STA ESTKL+1,X + STA ESTKL+1,X +; libsrc/lines.pla: 0290: LDA ESTKH+4,X ; XH + LDA ESTKH+4,X ; XH +; libsrc/lines.pla: 0291: STA ESTKH+1,X + STA ESTKH+1,X +; libsrc/lines.pla: 0292: LDA ESTKL+7,X ; YL + LDA ESTKL+7,X ; YL +; libsrc/lines.pla: 0293: STA ESTKL+0,X + STA ESTKL+0,X +; libsrc/lines.pla: 0294: LDA ESTKH+7,X ; YH + LDA ESTKH+7,X ; YH +; libsrc/lines.pla: 0295: STA ESTKH+0,X + STA ESTKH+0,X +; libsrc/lines.pla: 0296: end +; libsrc/lines.pla: 0297: asm _vlineA +_A012 ; _vlineA() +; libsrc/lines.pla: 0298: JSR $2000 ; PLOT + JSR $2000 ; PLOT +; libsrc/lines.pla: 0299: LDA $1001 ; ERRH + LDA $1001 ; ERRH +; libsrc/lines.pla: 0300: BMI + + BMI + +; libsrc/lines.pla: 0301: LDA ESTKL+2,X ; XL + LDA ESTKL+2,X ; XL +; libsrc/lines.pla: 0302: CLC + CLC +; libsrc/lines.pla: 0303: ADC ESTKL+0,X ; SXL + ADC ESTKL+0,X ; SXL +; libsrc/lines.pla: 0304: STA ESTKL+2,X + STA ESTKL+2,X +; libsrc/lines.pla: 0305: LDA ESTKH+2,X ; XH + LDA ESTKH+2,X ; XH +; libsrc/lines.pla: 0306: ADC ESTKH+0,X ; SXH + ADC ESTKH+0,X ; SXH +; libsrc/lines.pla: 0307: STA ESTKH+2,X + STA ESTKH+2,X +; libsrc/lines.pla: 0308: LDA ESTKL+3,X ; DXY2L + LDA ESTKL+3,X ; DXY2L +; libsrc/lines.pla: 0309: LDY ESTKH+3,X ; DXY2H + LDY ESTKH+3,X ; DXY2H +; libsrc/lines.pla: 0310: BEQ ++ + BEQ ++ +; libsrc/lines.pla: 0311: BNE ++ + BNE ++ +; libsrc/lines.pla: 0312: end +; libsrc/lines.pla: 0313: asm _vlineB +_A013 ; _vlineB() +; libsrc/lines.pla: 0314: + LDA ESTKL+1,X ; DX2L ++ LDA ESTKL+1,X ; DX2L +; libsrc/lines.pla: 0315: LDY ESTKH+1,X ; DX2H + LDY ESTKH+1,X ; DX2H +; libsrc/lines.pla: 0316: ++ CLC +++ CLC +; libsrc/lines.pla: 0317: ADC $1000 ; ERRL + ADC $1000 ; ERRL +; libsrc/lines.pla: 0318: STA $1000 ; ERRL + STA $1000 ; ERRL +; libsrc/lines.pla: 0319: TYA + TYA +; libsrc/lines.pla: 0320: ADC $1001 ; ERRH + ADC $1001 ; ERRH +; libsrc/lines.pla: 0321: STA $1001 ; ERRH + STA $1001 ; ERRH +; libsrc/lines.pla: 0322: LDA ESTKL+5,X ; Y1L + LDA ESTKL+5,X ; Y1L +; libsrc/lines.pla: 0323: CMP ESTKL+4,X ; Y2L + CMP ESTKL+4,X ; Y2L +; libsrc/lines.pla: 0324: LDA ESTKH+5,X + LDA ESTKH+5,X +; libsrc/lines.pla: 0325: SBC ESTKH+4,X + SBC ESTKH+4,X +; libsrc/lines.pla: 0326: BCS + + BCS + +; libsrc/lines.pla: 0327: INC ESTKL+5,X ; YL + INC ESTKL+5,X ; YL +; libsrc/lines.pla: 0328: BNE - + BNE - +; libsrc/lines.pla: 0329: INC ESTKH+5,X ; YH + INC ESTKH+5,X ; YH +; libsrc/lines.pla: 0330: BCC - + BCC - +; libsrc/lines.pla: 0331: + TXA ++ TXA +; libsrc/lines.pla: 0332: ADC #$05 + ADC #$05 +; libsrc/lines.pla: 0333: TAX + TAX +; libsrc/lines.pla: 0334: RTS + RTS +; libsrc/lines.pla: 0335: end +; libsrc/lines.pla: 0336: +; libsrc/lines.pla: 0337: export def setlinespans(h, v)#0 +_SUBSEG ; BYTECODE STARTS + ; h -> [0] + ; v -> [2] +_C000 ; setlinespans() +; libsrc/lines.pla: 0338: hspan = h + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/lines.pla: 0339: vspan = v +; libsrc/lines.pla: 0340: end + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D032+0 +_F003 !WORD _D032+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D033+0 +_F004 !WORD _D033+0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/lines.pla: 0341: def hmajorspans(x1, y1, x2, y2, dx, dy, sy)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] + ; dx -> [8] + ; dy -> [10] + ; sy -> [12] +_C001 ; hmajorspans() +; libsrc/lines.pla: 0342: var dy2, halflen, rem + ; dy2 -> [14] + ; halflen -> [16] + ; rem -> [18] +; libsrc/lines.pla: 0343: // +; libsrc/lines.pla: 0344: // Half-span length and error +; libsrc/lines.pla: 0345: // +; libsrc/lines.pla: 0346: dy2 = dy * 2 + !BYTE $58,$14,$07 ; ENTER 20,7 +; libsrc/lines.pla: 0347: halflen, rem = divmod(dx, dy2) +; libsrc/lines.pla: 0348: err = dy2 - rem +; libsrc/lines.pla: 0349: // +; libsrc/lines.pla: 0350: // Long-span length = half-span length * 2 +; libsrc/lines.pla: 0351: // +; libsrc/lines.pla: 0352: longlen = (halflen + 1) * 2 +; libsrc/lines.pla: 0353: longerr = err * 2 +; libsrc/lines.pla: 0354: if longerr >= dy2 +; libsrc/lines.pla: 0355: longerr = longerr - dy2 +; libsrc/lines.pla: 0356: longlen-- + !BYTE $66,$0A ; LLW [10] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X023 +_F005 !WORD 0 + !BYTE $76,$12 ; SLW [18] + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D034+0 +_F006 !WORD _D034+0 + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D038+0 +_F007 !WORD _D038+0 + !BYTE $6A ; LAW _D034+0 +_F008 !WORD _D034+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $7E ; DAW _D037+0 +_F009 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $6A ; LAW _D037+0 +_F010 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D037+0 +_F011 !WORD _D037+0 + !BYTE $6A ; LAW _D038+0 +_F012 !WORD _D038+0 + !BYTE $8E ; DECR +; libsrc/lines.pla: 0357: fin + !BYTE $7A ; SAW _D038+0 +_F013 !WORD _D038+0 +_B001 +_B002 +; libsrc/lines.pla: 0358: // +; libsrc/lines.pla: 0359: // Short-span length = long-span length - 1 +; libsrc/lines.pla: 0360: // +; libsrc/lines.pla: 0361: shortlen = longlen - 1 +; libsrc/lines.pla: 0362: shorterr = longerr - dy2 +; libsrc/lines.pla: 0363: majorspans(x1, x1 + halflen, x2, y1, sy, hspan) +; libsrc/lines.pla: 0364: end + !BYTE $6A ; LAW _D038+0 +_F014 !WORD _D038+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D036+0 +_F015 !WORD _D036+0 + !BYTE $6A ; LAW _D037+0 +_F016 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D035+0 +_F017 !WORD _D035+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $B2,$10 ; ADDLW [16] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0C ; LLW [12] + !BYTE $6A ; LAW _D032+0 +_F018 !WORD _D032+0 + !BYTE $54 ; CALL _A000 +_F019 !WORD _A000 + !BYTE $5A,$14 ; LEAVE 20 +; libsrc/lines.pla: 0365: def vmajorspans(x1, y1, x2, y2, dx, dy, sx)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] + ; dx -> [8] + ; dy -> [10] + ; sx -> [12] +_C002 ; vmajorspans() +; libsrc/lines.pla: 0366: var dx2, halflen, rem + ; dx2 -> [14] + ; halflen -> [16] + ; rem -> [18] +; libsrc/lines.pla: 0367: +; libsrc/lines.pla: 0368: // +; libsrc/lines.pla: 0369: // Half-span length and error +; libsrc/lines.pla: 0370: // +; libsrc/lines.pla: 0371: dx2 = dx * 2 + !BYTE $58,$14,$07 ; ENTER 20,7 +; libsrc/lines.pla: 0372: halflen, rem = divmod(dy, dx2) +; libsrc/lines.pla: 0373: err = dx2 - rem +; libsrc/lines.pla: 0374: // +; libsrc/lines.pla: 0375: // Long-span length = half-span length * 2 +; libsrc/lines.pla: 0376: // +; libsrc/lines.pla: 0377: longlen = (halflen + 1) * 2 +; libsrc/lines.pla: 0378: longerr = err * 2 +; libsrc/lines.pla: 0379: if longerr >= dx2 +; libsrc/lines.pla: 0380: longerr = longerr - dx2 +; libsrc/lines.pla: 0381: longlen-- + !BYTE $66,$08 ; LLW [8] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X023 +_F020 !WORD 0 + !BYTE $76,$12 ; SLW [18] + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D034+0 +_F021 !WORD _D034+0 + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D038+0 +_F022 !WORD _D038+0 + !BYTE $6A ; LAW _D034+0 +_F023 !WORD _D034+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $7E ; DAW _D037+0 +_F024 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $6A ; LAW _D037+0 +_F025 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D037+0 +_F026 !WORD _D037+0 + !BYTE $6A ; LAW _D038+0 +_F027 !WORD _D038+0 + !BYTE $8E ; DECR +; libsrc/lines.pla: 0382: fin + !BYTE $7A ; SAW _D038+0 +_F028 !WORD _D038+0 +_B003 +_B004 +; libsrc/lines.pla: 0383: shortlen = longlen - 1 +; libsrc/lines.pla: 0384: shorterr = longerr - dx2 +; libsrc/lines.pla: 0385: majorspans(y1, y1 + halflen, y2, x1, sx, vspan) +; libsrc/lines.pla: 0386: end + !BYTE $6A ; LAW _D038+0 +_F029 !WORD _D038+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D036+0 +_F030 !WORD _D036+0 + !BYTE $6A ; LAW _D037+0 +_F031 !WORD _D037+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D035+0 +_F032 !WORD _D035+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $B2,$10 ; ADDLW [16] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $6A ; LAW _D033+0 +_F033 !WORD _D033+0 + !BYTE $54 ; CALL _A000 +_F034 !WORD _A000 + !BYTE $5A,$14 ; LEAVE 20 +; libsrc/lines.pla: 0387: export def linespans(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C003 ; linespans() +; libsrc/lines.pla: 0388: var dx, dy, dx2, dy2, halflen, rem, sx, sy + ; dx -> [8] + ; dy -> [10] + ; dx2 -> [12] + ; dy2 -> [14] + ; halflen -> [16] + ; rem -> [18] + ; sx -> [20] + ; sy -> [22] +; libsrc/lines.pla: 0389: +; libsrc/lines.pla: 0390: sx = 1 + !BYTE $58,$18,$04 ; ENTER 24,4 +; libsrc/lines.pla: 0391: sy = 1 +; libsrc/lines.pla: 0392: dx = x2 - x1 +; libsrc/lines.pla: 0393: if dx < 0 +; libsrc/lines.pla: 0394: sx = -1; dx = -dx +; libsrc/lines.pla: 0395: fin + !BYTE $02 ; CN 1 + !BYTE $76,$14 ; SLW [20] + !BYTE $02 ; CN 1 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $6E,$08 ; DLW [8] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$08 ; LLW [8] + !BYTE $90 ; NEG + !BYTE $76,$08 ; SLW [8] +_B005 +_B006 +; libsrc/lines.pla: 0396: dy = y2 - y1 +; libsrc/lines.pla: 0397: if dy < 0 +; libsrc/lines.pla: 0398: sy = -1; dy = -dy +; libsrc/lines.pla: 0399: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $6E,$0A ; DLW [10] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$0A ; LLW [10] + !BYTE $90 ; NEG + !BYTE $76,$0A ; SLW [10] +_B007 +_B008 +; libsrc/lines.pla: 0400: if dx >= dy +; libsrc/lines.pla: 0401: if sx < 0 +; libsrc/lines.pla: 0402: y1, y2 = y2, y1 +; libsrc/lines.pla: 0403: x1, x2 = x2, x1 +; libsrc/lines.pla: 0404: sy = -sy +; libsrc/lines.pla: 0405: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $66,$14 ; LLW [20] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$16 ; LLW [22] + !BYTE $90 ; NEG + !BYTE $76,$16 ; SLW [22] +_B011 +_B012 +; libsrc/lines.pla: 0406: if dy == 0 +; libsrc/lines.pla: 0407: hspan(x1, x2, y1)#0; return + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B013 + !WORD _B013-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D032+0 +_F035 !WORD _D032+0 + !BYTE $56 ; ICAL + !BYTE $5A,$18 ; LEAVE 24 +; libsrc/lines.pla: 0408: fin +_B013 +_B014 +; libsrc/lines.pla: 0409: // +; libsrc/lines.pla: 0410: // JIT optimize setup +; libsrc/lines.pla: 0411: // +; libsrc/lines.pla: 0412: hmajorspans(x1, y1, x2, y2, dx, dy, sy) +; libsrc/lines.pla: 0413: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C001 +_F036 !WORD _C001 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; libsrc/lines.pla: 0414: if sy < 0 +; libsrc/lines.pla: 0415: x1, x2 = x2, x1 +; libsrc/lines.pla: 0416: y1, y2 = y2, y1 +; libsrc/lines.pla: 0417: sx = -sx +; libsrc/lines.pla: 0418: fin + !BYTE $66,$16 ; LLW [22] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$14 ; LLW [20] + !BYTE $90 ; NEG + !BYTE $76,$14 ; SLW [20] +_B015 +_B016 +; libsrc/lines.pla: 0419: if dx == 0 +; libsrc/lines.pla: 0420: vspan(y1, y2, x1)#0; return + !BYTE $66,$08 ; LLW [8] + !BYTE $4E ; BRTRU _B017 + !WORD _B017-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D033+0 +_F037 !WORD _D033+0 + !BYTE $56 ; ICAL + !BYTE $5A,$18 ; LEAVE 24 +; libsrc/lines.pla: 0421: fin +_B017 +_B018 +; libsrc/lines.pla: 0422: // +; libsrc/lines.pla: 0423: // JIT optimize inner setup +; libsrc/lines.pla: 0424: // +; libsrc/lines.pla: 0425: vmajorspans(x1, y1, x2, y2, dx, dy, sx) +; libsrc/lines.pla: 0426: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C002 +_F038 !WORD _C002 +_B010 +; libsrc/lines.pla: 0427: end + !BYTE $5A,$18 ; LEAVE 24 +; libsrc/lines.pla: 0428: export def setlineplot(p)#0 + ; p -> [0] +_C004 ; setlineplot() +; libsrc/lines.pla: 0429: plot = p + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/lines.pla: 0430: end + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+0 +_F039 !WORD _D031+0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/lines.pla: 0431: export def line(x1, y1, x2, y2)#0 + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C005 ; line() +; libsrc/lines.pla: 0432: var sx, sy, dx2, dy2 + ; sx -> [8] + ; sy -> [10] + ; dx2 -> [12] + ; dy2 -> [14] +; libsrc/lines.pla: 0433: +; libsrc/lines.pla: 0434: sx = 1 + !BYTE $58,$10,$04 ; ENTER 16,4 +; libsrc/lines.pla: 0435: sy = 1 +; libsrc/lines.pla: 0436: dx2 = (x2 - x1) * 2 +; libsrc/lines.pla: 0437: if dx2 < 0 +; libsrc/lines.pla: 0438: sx = -1; dx2 = -dx2 +; libsrc/lines.pla: 0439: fin + !BYTE $02 ; CN 1 + !BYTE $76,$08 ; SLW [8] + !BYTE $02 ; CN 1 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $6E,$0C ; DLW [12] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$0C ; LLW [12] + !BYTE $90 ; NEG + !BYTE $76,$0C ; SLW [12] +_B019 +_B020 +; libsrc/lines.pla: 0440: dy2 = (y2 - y1) * 2 +; libsrc/lines.pla: 0441: if dy2 < 0 +; libsrc/lines.pla: 0442: sy = -1; dy2 = -dy2 +; libsrc/lines.pla: 0443: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $76,$0E ; SLW [14] +_B021 +_B022 +; libsrc/lines.pla: 0444: if dx2 >= dy2 +; libsrc/lines.pla: 0445: if sx < 0 +; libsrc/lines.pla: 0446: x1, x2 = x2, x1 +; libsrc/lines.pla: 0447: y1, y2 = y2, y1 +; libsrc/lines.pla: 0448: sy = -sy +; libsrc/lines.pla: 0449: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B023 + !WORD _B023-* + !BYTE $66,$08 ; LLW [8] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $90 ; NEG + !BYTE $76,$0A ; SLW [10] +_B025 +_B026 +; libsrc/lines.pla: 0450: hline(x1, x2, dx2, y1, dy2, sy) +; libsrc/lines.pla: 0451: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _A008 +_F040 !WORD _A008 + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B023 +; libsrc/lines.pla: 0452: if sy < 0 +; libsrc/lines.pla: 0453: y1, y2 = y2, y1 +; libsrc/lines.pla: 0454: x1, x2 = x2, x1 +; libsrc/lines.pla: 0455: sx = -sx +; libsrc/lines.pla: 0456: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$08 ; LLW [8] + !BYTE $90 ; NEG + !BYTE $76,$08 ; SLW [8] +_B027 +_B028 +; libsrc/lines.pla: 0457: vline(y1, y2, dy2, x1, dx2, sx) +; libsrc/lines.pla: 0458: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A011 +_F041 !WORD _A011 +_B024 +; libsrc/lines.pla: 0459: end + !BYTE $5A,$10 ; LEAVE 16 +; libsrc/lines.pla: 0460: +; libsrc/lines.pla: 0461: // +; libsrc/lines.pla: 0462: // Assembly fixups +; libsrc/lines.pla: 0463: // +; libsrc/lines.pla: 0464: majorspans:1 = @err +_INIT +; libsrc/lines.pla: 0465: majorspans:5 = @shorterr +; libsrc/lines.pla: 0466: majorspans:8 = @err +; libsrc/lines.pla: 0467: majorspans:11 = @err.1 +; libsrc/lines.pla: 0468: majorspans:14 = @shorterr.1 +; libsrc/lines.pla: 0469: majorspans:17 = @err.1 +; libsrc/lines.pla: 0470: majorspans:22 = @_majorspansA.28 +; libsrc/lines.pla: 0471: majorspans:25 = @_majorspansE.31 +; libsrc/lines.pla: 0472: majorspans:30 = @_majorspansA.29 +; libsrc/lines.pla: 0473: majorspans:33 = @_majorspansE.32 +; libsrc/lines.pla: 0474: _majorspansB:1 = @err.1 +; libsrc/lines.pla: 0475: _majorspansC:1 = @err +; libsrc/lines.pla: 0476: _majorspansC:5 = @shorterr +; libsrc/lines.pla: 0477: _majorspansC:8 = @err +; libsrc/lines.pla: 0478: _majorspansC:12 = @shorterr.1 +; libsrc/lines.pla: 0479: _majorspansC:15 = @err.1 +; libsrc/lines.pla: 0480: _majorspansC:21 = @shortlen +; libsrc/lines.pla: 0481: _majorspansC:28 = @shortlen.1 +; libsrc/lines.pla: 0482: _majorspansD:1 = @err +; libsrc/lines.pla: 0483: _majorspansD:5 = @longerr +; libsrc/lines.pla: 0484: _majorspansD:8 = @err +; libsrc/lines.pla: 0485: _majorspansD:12 = @longerr.1 +; libsrc/lines.pla: 0486: _majorspansD:15 = @err.1 +; libsrc/lines.pla: 0487: _majorspansD:21 = @longlen +; libsrc/lines.pla: 0488: _majorspansD:28 = @longlen.1 +; libsrc/lines.pla: 0489: _majorspansE:1 = @_majorspansA +; libsrc/lines.pla: 0490: hline:16 = @err +; libsrc/lines.pla: 0491: hline:23 = @err.1 +; libsrc/lines.pla: 0492: _hlineA:1 = @jmpplot +; libsrc/lines.pla: 0493: _hlineA:4 = @err.1 +; libsrc/lines.pla: 0494: _hlineB:6 = @err +; libsrc/lines.pla: 0495: _hlineB:9 = @err +; libsrc/lines.pla: 0496: _hlineB:13 = @err.1 +; libsrc/lines.pla: 0497: _hlineB:16 = @err.1 +; libsrc/lines.pla: 0498: vline:16 = @err +; libsrc/lines.pla: 0499: vline:23 = @err.1 +; libsrc/lines.pla: 0500: _vlineA:1 = @jmpplot +; libsrc/lines.pla: 0501: _vlineA:4 = @err.1 +; libsrc/lines.pla: 0502: _vlineB:6 = @err +; libsrc/lines.pla: 0503: _vlineB:9 = @err +; libsrc/lines.pla: 0504: _vlineB:13 = @err.1 +; libsrc/lines.pla: 0505: _vlineB:16 = @err.1 +; libsrc/lines.pla: 0506: done + !BYTE $26 ; LA _D034+0 +_F042 !WORD _D034+0 + !BYTE $7A ; SAW _A000+1 +_F043 !WORD _A000+1 + !BYTE $26 ; LA _D035+0 +_F044 !WORD _D035+0 + !BYTE $7A ; SAW _A000+5 +_F045 !WORD _A000+5 + !BYTE $26 ; LA _D034+0 +_F046 !WORD _D034+0 + !BYTE $7A ; SAW _A000+8 +_F047 !WORD _A000+8 + !BYTE $26 ; LA _D034+1 +_F048 !WORD _D034+1 + !BYTE $7A ; SAW _A000+11 +_F049 !WORD _A000+11 + !BYTE $26 ; LA _D035+1 +_F050 !WORD _D035+1 + !BYTE $7A ; SAW _A000+14 +_F051 !WORD _A000+14 + !BYTE $26 ; LA _D034+1 +_F052 !WORD _D034+1 + !BYTE $7A ; SAW _A000+17 +_F053 !WORD _A000+17 + !BYTE $26 ; LA _A001+28 +_F054 !WORD _A001+28 + !BYTE $7A ; SAW _A000+22 +_F055 !WORD _A000+22 + !BYTE $26 ; LA _A005+31 +_F056 !WORD _A005+31 + !BYTE $7A ; SAW _A000+25 +_F057 !WORD _A000+25 + !BYTE $26 ; LA _A001+29 +_F058 !WORD _A001+29 + !BYTE $7A ; SAW _A000+30 +_F059 !WORD _A000+30 + !BYTE $26 ; LA _A005+32 +_F060 !WORD _A005+32 + !BYTE $7A ; SAW _A000+33 +_F061 !WORD _A000+33 + !BYTE $26 ; LA _D034+1 +_F062 !WORD _D034+1 + !BYTE $7A ; SAW _A002+1 +_F063 !WORD _A002+1 + !BYTE $26 ; LA _D034+0 +_F064 !WORD _D034+0 + !BYTE $7A ; SAW _A003+1 +_F065 !WORD _A003+1 + !BYTE $26 ; LA _D035+0 +_F066 !WORD _D035+0 + !BYTE $7A ; SAW _A003+5 +_F067 !WORD _A003+5 + !BYTE $26 ; LA _D034+0 +_F068 !WORD _D034+0 + !BYTE $7A ; SAW _A003+8 +_F069 !WORD _A003+8 + !BYTE $26 ; LA _D035+1 +_F070 !WORD _D035+1 + !BYTE $7A ; SAW _A003+12 +_F071 !WORD _A003+12 + !BYTE $26 ; LA _D034+1 +_F072 !WORD _D034+1 + !BYTE $7A ; SAW _A003+15 +_F073 !WORD _A003+15 + !BYTE $26 ; LA _D036+0 +_F074 !WORD _D036+0 + !BYTE $7A ; SAW _A003+21 +_F075 !WORD _A003+21 + !BYTE $26 ; LA _D036+1 +_F076 !WORD _D036+1 + !BYTE $7A ; SAW _A003+28 +_F077 !WORD _A003+28 + !BYTE $26 ; LA _D034+0 +_F078 !WORD _D034+0 + !BYTE $7A ; SAW _A004+1 +_F079 !WORD _A004+1 + !BYTE $26 ; LA _D037+0 +_F080 !WORD _D037+0 + !BYTE $7A ; SAW _A004+5 +_F081 !WORD _A004+5 + !BYTE $26 ; LA _D034+0 +_F082 !WORD _D034+0 + !BYTE $7A ; SAW _A004+8 +_F083 !WORD _A004+8 + !BYTE $26 ; LA _D037+1 +_F084 !WORD _D037+1 + !BYTE $7A ; SAW _A004+12 +_F085 !WORD _A004+12 + !BYTE $26 ; LA _D034+1 +_F086 !WORD _D034+1 + !BYTE $7A ; SAW _A004+15 +_F087 !WORD _A004+15 + !BYTE $26 ; LA _D038+0 +_F088 !WORD _D038+0 + !BYTE $7A ; SAW _A004+21 +_F089 !WORD _A004+21 + !BYTE $26 ; LA _D038+1 +_F090 !WORD _D038+1 + !BYTE $7A ; SAW _A004+28 +_F091 !WORD _A004+28 + !BYTE $26 ; LA _A001+0 +_F092 !WORD _A001+0 + !BYTE $7A ; SAW _A005+1 +_F093 !WORD _A005+1 + !BYTE $26 ; LA _D034+0 +_F094 !WORD _D034+0 + !BYTE $7A ; SAW _A008+16 +_F095 !WORD _A008+16 + !BYTE $26 ; LA _D034+1 +_F096 !WORD _D034+1 + !BYTE $7A ; SAW _A008+23 +_F097 !WORD _A008+23 + !BYTE $26 ; LA _D030+0 +_F098 !WORD _D030+0 + !BYTE $7A ; SAW _A009+1 +_F099 !WORD _A009+1 + !BYTE $26 ; LA _D034+1 +_F100 !WORD _D034+1 + !BYTE $7A ; SAW _A009+4 +_F101 !WORD _A009+4 + !BYTE $26 ; LA _D034+0 +_F102 !WORD _D034+0 + !BYTE $7A ; SAW _A010+6 +_F103 !WORD _A010+6 + !BYTE $26 ; LA _D034+0 +_F104 !WORD _D034+0 + !BYTE $7A ; SAW _A010+9 +_F105 !WORD _A010+9 + !BYTE $26 ; LA _D034+1 +_F106 !WORD _D034+1 + !BYTE $7A ; SAW _A010+13 +_F107 !WORD _A010+13 + !BYTE $26 ; LA _D034+1 +_F108 !WORD _D034+1 + !BYTE $7A ; SAW _A010+16 +_F109 !WORD _A010+16 + !BYTE $26 ; LA _D034+0 +_F110 !WORD _D034+0 + !BYTE $7A ; SAW _A011+16 +_F111 !WORD _A011+16 + !BYTE $26 ; LA _D034+1 +_F112 !WORD _D034+1 + !BYTE $7A ; SAW _A011+23 +_F113 !WORD _A011+23 + !BYTE $26 ; LA _D030+0 +_F114 !WORD _D030+0 + !BYTE $7A ; SAW _A012+1 +_F115 !WORD _A012+1 + !BYTE $26 ; LA _D034+1 +_F116 !WORD _D034+1 + !BYTE $7A ; SAW _A012+4 +_F117 !WORD _A012+4 + !BYTE $26 ; LA _D034+0 +_F118 !WORD _D034+0 + !BYTE $7A ; SAW _A013+6 +_F119 !WORD _A013+6 + !BYTE $26 ; LA _D034+0 +_F120 !WORD _D034+0 + !BYTE $7A ; SAW _A013+9 +_F121 !WORD _A013+9 + !BYTE $26 ; LA _D034+1 +_F122 !WORD _D034+1 + !BYTE $7A ; SAW _A013+13 +_F123 !WORD _A013+13 + !BYTE $26 ; LA _D034+1 +_F124 !WORD _D034+1 + !BYTE $7A ; SAW _A013+16 +_F125 !WORD _A013+16 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: DIVMOD + !BYTE $C4,$C9,$D6,$CD,$CF,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 23 ; ESD INDEX + ; DCI STRING: SETLINESPANS + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: LINESPANS + !BYTE $CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: SETLINEPLOT + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D0,$CC,$CF,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: LINE + !BYTE $CC,$C9,$CE,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/longjmp.a b/src/libsrc/longjmp.a new file mode 100644 index 0000000..d0209fa --- /dev/null +++ b/src/libsrc/longjmp.a @@ -0,0 +1,173 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/longjmp.pla: 0001: asm incs + !BYTE $00 ; END OF MODULE DEPENDENCIES +_A000 ; incs() +; libsrc/longjmp.pla: 0002: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/longjmp.pla: 0003: XPAGE = $1600 +XPAGE = $1600 +; libsrc/longjmp.pla: 0004: NEXTOP = $F0 +NEXTOP = $F0 +; libsrc/longjmp.pla: 0005: FETCHOP = NEXTOP+1 +FETCHOP = NEXTOP+1 +; libsrc/longjmp.pla: 0006: IP = FETCHOP+1 +IP = FETCHOP+1 +; libsrc/longjmp.pla: 0007: IPL = IP +IPL = IP +; libsrc/longjmp.pla: 0008: IPH = IPL+1 +IPH = IPL+1 +; libsrc/longjmp.pla: 0009: IPX = XPAGE+IPH +IPX = XPAGE+IPH +; libsrc/longjmp.pla: 0010: end +; libsrc/longjmp.pla: 0011: // +; libsrc/longjmp.pla: 0012: // Save environment (PLASMA ZP and stack) for below and return 0 +; libsrc/longjmp.pla: 0013: // +; libsrc/longjmp.pla: 0014: export asm except(env) +_A001 ; except() +; libsrc/longjmp.pla: 0015: LDA ESTKL,X + LDA ESTKL,X +; libsrc/longjmp.pla: 0016: STA SRC + STA SRC +; libsrc/longjmp.pla: 0017: LDA ESTKH,X + LDA ESTKH,X +; libsrc/longjmp.pla: 0018: STA SRC+1 + STA SRC+1 +; libsrc/longjmp.pla: 0019: STX ESP + STX ESP +; libsrc/longjmp.pla: 0020: TSX + TSX +; libsrc/longjmp.pla: 0021: STX TMPL + STX TMPL +; libsrc/longjmp.pla: 0022: LDY TMPL + LDY TMPL +; libsrc/longjmp.pla: 0023: - LDA $0100,Y +- LDA $0100,Y +; libsrc/longjmp.pla: 0024: STA (SRC),Y + STA (SRC),Y +; libsrc/longjmp.pla: 0025: INY + INY +; libsrc/longjmp.pla: 0026: BNE - + BNE - +; libsrc/longjmp.pla: 0027: INC SRC+1 + INC SRC+1 +; libsrc/longjmp.pla: 0028: LDX #ESTK + LDX #ESTK +; libsrc/longjmp.pla: 0029: - LDA $00,X +- LDA $00,X +; libsrc/longjmp.pla: 0030: STA (SRC),Y + STA (SRC),Y +; libsrc/longjmp.pla: 0031: INY + INY +; libsrc/longjmp.pla: 0032: INX + INX +; libsrc/longjmp.pla: 0033: BNE - + BNE - +; libsrc/longjmp.pla: 0034: TXA + TXA +; libsrc/longjmp.pla: 0035: LDX ESP + LDX ESP +; libsrc/longjmp.pla: 0036: STA ESTKL,X + STA ESTKL,X +; libsrc/longjmp.pla: 0037: STA ESTKH,X + STA ESTKH,X +; libsrc/longjmp.pla: 0038: RTS + RTS +; libsrc/longjmp.pla: 0039: end +; libsrc/longjmp.pla: 0040: // +; libsrc/longjmp.pla: 0041: // Restore environment saved above and return retval +; libsrc/longjmp.pla: 0042: // +; libsrc/longjmp.pla: 0043: export asm throw(env, retval) +_A002 ; throw() +; libsrc/longjmp.pla: 0044: LDA ESTKL,X + LDA ESTKL,X +; libsrc/longjmp.pla: 0045: STA SRC + STA SRC +; libsrc/longjmp.pla: 0046: LDA ESTKH,X + LDA ESTKH,X +; libsrc/longjmp.pla: 0047: STA SRC+1 + STA SRC+1 +; libsrc/longjmp.pla: 0048: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/longjmp.pla: 0049: STA DST + STA DST +; libsrc/longjmp.pla: 0050: LDY ESTKH+1,X + LDY ESTKH+1,X +; libsrc/longjmp.pla: 0051: INY + INY +; libsrc/longjmp.pla: 0052: STY DST+1 + STY DST+1 +; libsrc/longjmp.pla: 0053: LDX #ESTK + LDX #ESTK +; libsrc/longjmp.pla: 0054: LDY #$00 + LDY #$00 +; libsrc/longjmp.pla: 0055: - LDA (DST),Y +- LDA (DST),Y +; libsrc/longjmp.pla: 0056: STA $00,X + STA $00,X +; libsrc/longjmp.pla: 0057: INY + INY +; libsrc/longjmp.pla: 0058: INX + INX +; libsrc/longjmp.pla: 0059: BNE - + BNE - +; libsrc/longjmp.pla: 0060: DEC DST+1 + DEC DST+1 +; libsrc/longjmp.pla: 0061: LDX TMPL + LDX TMPL +; libsrc/longjmp.pla: 0062: TXS + TXS +; libsrc/longjmp.pla: 0063: LDY TMPL + LDY TMPL +; libsrc/longjmp.pla: 0064: - LDA (DST),Y +- LDA (DST),Y +; libsrc/longjmp.pla: 0065: STA $0100,Y + STA $0100,Y +; libsrc/longjmp.pla: 0066: INY + INY +; libsrc/longjmp.pla: 0067: BNE - + BNE - +; libsrc/longjmp.pla: 0068: LDX ESP + LDX ESP +; libsrc/longjmp.pla: 0069: LDA SRC + LDA SRC +; libsrc/longjmp.pla: 0070: STA ESTKL,X + STA ESTKL,X +; libsrc/longjmp.pla: 0071: LDA SRC+1 + LDA SRC+1 +; libsrc/longjmp.pla: 0072: STA ESTKH,X + STA ESTKH,X +; libsrc/longjmp.pla: 0073: RTS + RTS +; libsrc/longjmp.pla: 0074: end +; libsrc/longjmp.pla: 0075: done + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: EXCEPT + !BYTE $C5,$D8,$C3,$C5,$D0,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A001 + ; DCI STRING: THROW + !BYTE $D4,$C8,$D2,$CF,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _A002 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/lz4.a b/src/libsrc/lz4.a new file mode 100644 index 0000000..b734aed --- /dev/null +++ b/src/libsrc/lz4.a @@ -0,0 +1,489 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/lz4.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/lz4.pla: 0001: +; libsrc/lz4.pla: 0002: asm incs + !BYTE $00 ; END OF MODULE DEPENDENCIES +_A000 ; incs() +; libsrc/lz4.pla: 0003: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/lz4.pla: 0004: end +; libsrc/lz4.pla: 0005: // +; libsrc/lz4.pla: 0006: // Always forward copy memory - important for overlapping match sequences +; libsrc/lz4.pla: 0007: // +; libsrc/lz4.pla: 0008: asm bcpy(dst, src, len)#0 +_A001 ; bcpy() +; libsrc/lz4.pla: 0009: INX + INX +; libsrc/lz4.pla: 0010: INX + INX +; libsrc/lz4.pla: 0011: INX + INX +; libsrc/lz4.pla: 0012: LDA ESTKL-3,X + LDA ESTKL-3,X +; libsrc/lz4.pla: 0013: ORA ESTKH-3,X + ORA ESTKH-3,X +; libsrc/lz4.pla: 0014: BEQ CPYEX + BEQ CPYEX +; libsrc/lz4.pla: 0015: LDA ESTKL-1,X + LDA ESTKL-1,X +; libsrc/lz4.pla: 0016: STA DSTL + STA DSTL +; libsrc/lz4.pla: 0017: LDA ESTKH-1,X + LDA ESTKH-1,X +; libsrc/lz4.pla: 0018: STA DSTH + STA DSTH +; libsrc/lz4.pla: 0019: LDA ESTKL-2,X + LDA ESTKL-2,X +; libsrc/lz4.pla: 0020: STA SRCL + STA SRCL +; libsrc/lz4.pla: 0021: LDA ESTKH-2,X + LDA ESTKH-2,X +; libsrc/lz4.pla: 0022: STA SRCH + STA SRCH +; libsrc/lz4.pla: 0023: LDY ESTKL-3,X + LDY ESTKL-3,X +; libsrc/lz4.pla: 0024: BEQ CPYLP + BEQ CPYLP +; libsrc/lz4.pla: 0025: INC ESTKH-3,X + INC ESTKH-3,X +; libsrc/lz4.pla: 0026: LDY #$00 + LDY #$00 +; libsrc/lz4.pla: 0027: CPYLP LDA (SRC),Y +CPYLP LDA (SRC),Y +; libsrc/lz4.pla: 0028: STA (DST),Y + STA (DST),Y +; libsrc/lz4.pla: 0029: INY + INY +; libsrc/lz4.pla: 0030: BNE + + BNE + +; libsrc/lz4.pla: 0031: INC DSTH + INC DSTH +; libsrc/lz4.pla: 0032: INC SRCH + INC SRCH +; libsrc/lz4.pla: 0033: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; libsrc/lz4.pla: 0034: BNE CPYLP + BNE CPYLP +; libsrc/lz4.pla: 0035: DEC ESTKH-3,X + DEC ESTKH-3,X +; libsrc/lz4.pla: 0036: BNE CPYLP + BNE CPYLP +; libsrc/lz4.pla: 0037: CPYEX RTS +CPYEX RTS +; libsrc/lz4.pla: 0038: end +; libsrc/lz4.pla: 0039: // +; libsrc/lz4.pla: 0040: // Unpack LZ4 sequence into buffer, return unpacked length +; libsrc/lz4.pla: 0041: // +; libsrc/lz4.pla: 0042: export def lz4Unpack(seq, seqend, buff, buffend) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; seq -> [0] + ; seqend -> [2] + ; buff -> [4] + ; buffend -> [6] +_C000 ; lz4Unpack() +; libsrc/lz4.pla: 0043: word data, len, match, i + ; data -> [8] + ; len -> [10] + ; match -> [12] + ; i -> [14] +; libsrc/lz4.pla: 0044: byte token + ; token -> [16] +; libsrc/lz4.pla: 0045: +; libsrc/lz4.pla: 0046: data = buff + !BYTE $58,$11,$04 ; ENTER 17,4 +; libsrc/lz4.pla: 0047: while isult(seq, seqend) + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; libsrc/lz4.pla: 0048: token = ^seq +; libsrc/lz4.pla: 0049: seq++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$10 ; SLB [16] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/lz4.pla: 0050: len = token >> 4 +; libsrc/lz4.pla: 0051: if len +; libsrc/lz4.pla: 0052: // +; libsrc/lz4.pla: 0053: // Literal sequence +; libsrc/lz4.pla: 0054: // +; libsrc/lz4.pla: 0055: if len == 15 +; libsrc/lz4.pla: 0056: while ^seq == 255 + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$10 ; LLB [16] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $6E,$0A ; DLW [10] + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $66,$0A ; LLW [10] + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B006 + !WORD _B006-* + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B008 +; libsrc/lz4.pla: 0057: len = len + 255 +; libsrc/lz4.pla: 0058: seq++ + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$FF ; ADDI 255 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/lz4.pla: 0059: loop + !BYTE $76,$00 ; SLW [0] +_B010 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B008 + !WORD _B008-* +_B009 +; libsrc/lz4.pla: 0060: len = len + ^seq +; libsrc/lz4.pla: 0061: seq++ + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/lz4.pla: 0062: fin + !BYTE $76,$00 ; SLW [0] +_B006 +_B007 +; libsrc/lz4.pla: 0063: if isuge(data + len, buffend); return 0; fin + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X025 +_F000 !WORD 0 + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $00 ; CN 0 + !BYTE $5A,$11 ; LEAVE 17 +_B011 +_B012 +; libsrc/lz4.pla: 0064: bcpy(data, seq, len) +; libsrc/lz4.pla: 0065: data = data + len +; libsrc/lz4.pla: 0066: seq = seq + len +; libsrc/lz4.pla: 0067: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _A001 +_F001 !WORD _A001 + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $76,$00 ; SLW [0] +_B004 +_B005 +; libsrc/lz4.pla: 0068: len = token & $0F +; libsrc/lz4.pla: 0069: if len or isult(seq, seqend) +; libsrc/lz4.pla: 0070: // +; libsrc/lz4.pla: 0071: // Match sequence +; libsrc/lz4.pla: 0072: // +; libsrc/lz4.pla: 0073: match = data - *seq +; libsrc/lz4.pla: 0074: seq = seq + 2 +; libsrc/lz4.pla: 0075: len = len + 4 +; libsrc/lz4.pla: 0076: if len == 19 // $0F + 4 +; libsrc/lz4.pla: 0077: while ^seq == 255 + !BYTE $64,$10 ; LLB [16] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $6E,$0A ; DLW [10] + !BYTE $AE ; BROR _B013 + !WORD _B013-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X026 +_F002 !WORD 0 +_B013 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $6E,$0A ; DLW [10] + !BYTE $2A,$13 ; CB 19 + !BYTE $24 ; BRNE _B016 + !WORD _B016-* + !BYTE $50 ; BRNCH _B020 + !WORD _B020-* +_B018 +; libsrc/lz4.pla: 0078: len = len + 255 +; libsrc/lz4.pla: 0079: seq++ + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$FF ; ADDI 255 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/lz4.pla: 0080: loop + !BYTE $76,$00 ; SLW [0] +_B020 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B018 + !WORD _B018-* +_B019 +; libsrc/lz4.pla: 0081: len = len + ^seq +; libsrc/lz4.pla: 0082: seq++ + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/lz4.pla: 0083: fin + !BYTE $76,$00 ; SLW [0] +_B016 +_B017 +; libsrc/lz4.pla: 0084: if isuge(data + len, buffend); return 0; fin + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X025 +_F003 !WORD 0 + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $00 ; CN 0 + !BYTE $5A,$11 ; LEAVE 17 +_B021 +_B022 +; libsrc/lz4.pla: 0085: bcpy(data, match, len) +; libsrc/lz4.pla: 0086: data = data + len +; libsrc/lz4.pla: 0087: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _A001 +_F004 !WORD _A001 + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $76,$08 ; SLW [8] +_B014 +_B015 +; libsrc/lz4.pla: 0088: loop +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X026 +_F005 !WORD 0 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/lz4.pla: 0089: return data - buff + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $5A,$11 ; LEAVE 17 +; libsrc/lz4.pla: 0090: end +; libsrc/lz4.pla: 0091: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: LZ4UNPACK + !BYTE $CC,$DA,$B4,$D5,$CE,$D0,$C1,$C3,$4B + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/memmgr.a b/src/libsrc/memmgr.a new file mode 100644 index 0000000..08fa3b4 --- /dev/null +++ b/src/libsrc/memmgr.a @@ -0,0 +1,4063 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/memmgr.pla: 0001: // +; libsrc/memmgr.pla: 0002: // Handle based swapping memory manager +; libsrc/memmgr.pla: 0003: // +; libsrc/memmgr.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/memmgr.pla: 0004: +; libsrc/memmgr.pla: 0005: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; libsrc/memmgr.pla: 0005: +; libsrc/memmgr.pla: 0006: +; libsrc/memmgr.pla: 0007: struc t_initdata + !BYTE $00 ; END OF MODULE DEPENDENCIES +; libsrc/memmgr.pla: 0008: word volptr + ; volptr = 0 +; libsrc/memmgr.pla: 0009: word freeblks + ; freeblks = 2 +; libsrc/memmgr.pla: 0010: word ramvol + ; ramvol = 4 +; libsrc/memmgr.pla: 0011: word bestvol + ; bestvol = 6 +; libsrc/memmgr.pla: 0012: word ramfree + ; ramfree = 8 +; libsrc/memmgr.pla: 0013: word bestfree + ; bestfree = 10 +; libsrc/memmgr.pla: 0014: word filecnt + ; filecnt = 12 +; libsrc/memmgr.pla: 0015: word catentry + ; catentry = 14 +; libsrc/memmgr.pla: 0016: byte catref + ; catref = 16 +; libsrc/memmgr.pla: 0017: byte firstblk + ; firstblk = 17 +; libsrc/memmgr.pla: 0018: byte entrylen + ; entrylen = 18 +; libsrc/memmgr.pla: 0019: byte entriesblk + ; entriesblk = 19 +; libsrc/memmgr.pla: 0020: byte swapstrlen + ; swapstrlen = 20 +; libsrc/memmgr.pla: 0021: byte[4] volparms + ; volparms = 21 +; libsrc/memmgr.pla: 0022: byte[] volinfo + ; volinfo = 25 +; libsrc/memmgr.pla: 0023: byte[] catalog + ; catalog = 25 +; libsrc/memmgr.pla: 0024: end + ; t_initdata = 25 +; libsrc/memmgr.pla: 0025: word initdata +_D030 !FILL 2 ; initdata +; libsrc/memmgr.pla: 0026: // +; libsrc/memmgr.pla: 0027: // Access bytes within a word +; libsrc/memmgr.pla: 0028: // +; libsrc/memmgr.pla: 0029: struc t_word +; libsrc/memmgr.pla: 0030: byte lsb + ; lsb = 0 +; libsrc/memmgr.pla: 0031: byte msb + ; msb = 1 +; libsrc/memmgr.pla: 0032: end + ; t_word = 2 +; libsrc/memmgr.pla: 0033: // +; libsrc/memmgr.pla: 0034: // Alloced memory block structure +; libsrc/memmgr.pla: 0035: // +; libsrc/memmgr.pla: 0036: struc t_memblk +; libsrc/memmgr.pla: 0037: word blksiz + ; blksiz = 0 +; libsrc/memmgr.pla: 0038: byte blkref + ; blkref = 2 +; libsrc/memmgr.pla: 0039: byte blklok + ; blklok = 3 +; libsrc/memmgr.pla: 0040: end + ; t_memblk = 4 +; libsrc/memmgr.pla: 0041: // +; libsrc/memmgr.pla: 0042: // Free memory block structure +; libsrc/memmgr.pla: 0043: // +; libsrc/memmgr.pla: 0044: struc t_freblk +; libsrc/memmgr.pla: 0045: word fresiz + ; fresiz = 0 +; libsrc/memmgr.pla: 0046: word frenxt + ; frenxt = 2 +; libsrc/memmgr.pla: 0047: end + ; t_freblk = 4 +; libsrc/memmgr.pla: 0048: // +; libsrc/memmgr.pla: 0049: // Block size +; libsrc/memmgr.pla: 0050: // +; libsrc/memmgr.pla: 0051: const MAX_BLK_SIZE = $2010 + ; MAX_BLK_SIZE = 8208 +; libsrc/memmgr.pla: 0052: const MAX_BLK_MASK = $1FFF + ; MAX_BLK_MASK = 8191 +; libsrc/memmgr.pla: 0053: const MIN_BLK_SIZE = $04 + ; MIN_BLK_SIZE = 4 +; libsrc/memmgr.pla: 0054: const MIN_BLK_MASK = $03 + ; MIN_BLK_MASK = 3 +; libsrc/memmgr.pla: 0055: // +; libsrc/memmgr.pla: 0056: // Block states +; libsrc/memmgr.pla: 0057: // +; libsrc/memmgr.pla: 0058: const HMEM_ADDR = $FFFC + ; HMEM_ADDR = 65532 +; libsrc/memmgr.pla: 0059: const HMEM_SIZE = $FFFC + ; HMEM_SIZE = 65532 +; libsrc/memmgr.pla: 0060: const HMEM_STATE = $03 + ; HMEM_STATE = 3 +; libsrc/memmgr.pla: 0061: const HMEM_MOVEABLE = $00 // Many dependencies on this being $00 + ; HMEM_MOVEABLE = 0 +; libsrc/memmgr.pla: 0062: const HMEM_AVAIL = $01 + ; HMEM_AVAIL = 1 +; libsrc/memmgr.pla: 0063: const HMEM_LOCKED = $02 + ; HMEM_LOCKED = 2 +; libsrc/memmgr.pla: 0064: const HMEM_SWAPPED = $03 + ; HMEM_SWAPPED = 3 +; libsrc/memmgr.pla: 0065: // +; libsrc/memmgr.pla: 0066: // Block flags +; libsrc/memmgr.pla: 0067: // +; libsrc/memmgr.pla: 0068: const HMEM_ACCESSED = $80 + ; HMEM_ACCESSED = 128 +; libsrc/memmgr.pla: 0069: // +; libsrc/memmgr.pla: 0070: // Handle modifier +; libsrc/memmgr.pla: 0071: // +; libsrc/memmgr.pla: 0072: const HMOD = $4321 + ; HMOD = 17185 +; libsrc/memmgr.pla: 0073: // +; libsrc/memmgr.pla: 0074: // Handle tables/lists +; libsrc/memmgr.pla: 0075: // +; libsrc/memmgr.pla: 0076: const PG_SIZE = 512 + ; PG_SIZE = 512 +; libsrc/memmgr.pla: 0077: const PG_ENTRIES = 256 + ; PG_ENTRIES = 256 +; libsrc/memmgr.pla: 0078: const PG_TBL_SIZE = 8 + ; PG_TBL_SIZE = 8 +; libsrc/memmgr.pla: 0079: word sysbuf +_D031 !FILL 2 ; sysbuf +; libsrc/memmgr.pla: 0080: word[PG_TBL_SIZE] hpgtbl // Handle page table +_D032 !FILL 16 ; hpgtbl // Handle page table +; libsrc/memmgr.pla: 0081: word pooladdr +_D033 !FILL 2 ; pooladdr +; libsrc/memmgr.pla: 0082: word poolsize +_D034 !FILL 2 ; poolsize +; libsrc/memmgr.pla: 0083: word frelst // Free list +_D035 !FILL 2 ; frelst // Free list +; libsrc/memmgr.pla: 0084: byte sweeppg, sweepen +_D036 !FILL 1 ; sweeppg, sweepen +_D037 !FILL 1 ; sweepen +; libsrc/memmgr.pla: 0085: byte[64] swapvol = "/" // Swap volume +_D038 ; swapvol = "/" // Swap volume + !BYTE $01 + !BYTE $2F + !FILL $3E +; libsrc/memmgr.pla: 0086: byte swapdir = "/SWAP/" +_D039 ; swapdir = "/SWAP/" + !BYTE $06 + !BYTE $2F,$53,$57,$41,$50,$2F +; libsrc/memmgr.pla: 0087: byte hexchar = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +_D040 ; hexchar = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + !BYTE $30 + !BYTE $31 + !BYTE $32 + !BYTE $33 + !BYTE $34 + !BYTE $35 + !BYTE $36 + !BYTE $37 + !BYTE $38 + !BYTE $39 + !BYTE $41 + !BYTE $42 + !BYTE $43 + !BYTE $44 + !BYTE $45 + !BYTE $46 +; libsrc/memmgr.pla: 0088: // +; libsrc/memmgr.pla: 0089: // DEBUG +; libsrc/memmgr.pla: 0090: // +; libsrc/memmgr.pla: 0091: //byte swapinstr = "Swap in:" +; libsrc/memmgr.pla: 0092: //byte swapoutstr = "Swap out:" +; libsrc/memmgr.pla: 0093: //byte getblkstr = "Get block = " +; libsrc/memmgr.pla: 0094: //byte allocpgstr = "Alloc page:" +; libsrc/memmgr.pla: 0095: // +; libsrc/memmgr.pla: 0096: //def putln +; libsrc/memmgr.pla: 0097: // return putc($0D) +; libsrc/memmgr.pla: 0098: //end +; libsrc/memmgr.pla: 0099: //def putb(hexb) +; libsrc/memmgr.pla: 0100: // return call($FDDA, hexb, 0, 0, 0) +; libsrc/memmgr.pla: 0101: //end +; libsrc/memmgr.pla: 0102: //def puth(hex) +; libsrc/memmgr.pla: 0103: // return call($F941, hex >> 8, hex, 0, 0) +; libsrc/memmgr.pla: 0104: //end +; libsrc/memmgr.pla: 0105: // +; libsrc/memmgr.pla: 0106: // Fill block filename +; libsrc/memmgr.pla: 0107: // +; libsrc/memmgr.pla: 0108: def strcharadd(str, chr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; str -> [0] + ; chr -> [2] +_C000 ; strcharadd() +; libsrc/memmgr.pla: 0109: ^str = ^str + 1 + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/memmgr.pla: 0110: str->.[^str] = chr +; libsrc/memmgr.pla: 0111: end + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0112: def swapfile(filestr, hmem)#0 + ; filestr -> [0] + ; hmem -> [2] +_C001 ; swapfile() +; libsrc/memmgr.pla: 0113: memcpy(filestr, @swapvol, swapvol + 1) + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/memmgr.pla: 0114: strcharadd(filestr, 'H') +; libsrc/memmgr.pla: 0115: strcharadd(filestr, hexchar[(hmem >> 12) & $0F]) +; libsrc/memmgr.pla: 0116: strcharadd(filestr, hexchar[(hmem >> 8) & $0F]) +; libsrc/memmgr.pla: 0117: strcharadd(filestr, hexchar[(hmem >> 4) & $0F]) +; libsrc/memmgr.pla: 0118: strcharadd(filestr, hexchar[ hmem & $0F]) +; libsrc/memmgr.pla: 0119: end + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D038+0 +_F000 !WORD _D038+0 + !BYTE $68 ; LAB _D038+0 +_F001 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F002 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$48 ; CB 72 + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F004 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $18 ; CN 12 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C000 +_F005 !WORD _C000 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F006 !WORD _D040+0 + !BYTE $64,$03 ; LLB [3] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C000 +_F007 !WORD _C000 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F008 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C000 +_F009 !WORD _C000 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D040+0 +_F010 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C000 +_F011 !WORD _C000 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0120: // +; libsrc/memmgr.pla: 0121: // Find exact/best free memory match +; libsrc/memmgr.pla: 0122: // +; libsrc/memmgr.pla: 0123: def unlink(freblk, freprv) + ; freblk -> [0] + ; freprv -> [2] +_C002 ; unlink() +; libsrc/memmgr.pla: 0124: // +; libsrc/memmgr.pla: 0125: // Unlink free block +; libsrc/memmgr.pla: 0126: // +; libsrc/memmgr.pla: 0127: if freprv + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/memmgr.pla: 0128: freprv=>frenxt = freblk=>frenxt +; libsrc/memmgr.pla: 0129: else + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B001 +; libsrc/memmgr.pla: 0130: frelst = freblk=>frenxt +; libsrc/memmgr.pla: 0131: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D035+0 +_F012 !WORD _D035+0 +_B002 +; libsrc/memmgr.pla: 0132: return freblk + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0133: end +; libsrc/memmgr.pla: 0134: def unfre(freblk, freprv, size) + ; freblk -> [0] + ; freprv -> [2] + ; size -> [4] +_C003 ; unfre() +; libsrc/memmgr.pla: 0135: word shrink + ; shrink -> [6] +; libsrc/memmgr.pla: 0136: +; libsrc/memmgr.pla: 0137: if freblk=>fresiz == size + !BYTE $58,$08,$03 ; ENTER 8,3 +; libsrc/memmgr.pla: 0138: // +; libsrc/memmgr.pla: 0139: // Unlink free block +; libsrc/memmgr.pla: 0140: // +; libsrc/memmgr.pla: 0141: unlink(freblk, freprv) +; libsrc/memmgr.pla: 0142: elsif freblk=>fresiz > size + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $24 ; BRNE _B003 + !WORD _B003-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C002 +_F013 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; libsrc/memmgr.pla: 0143: // +; libsrc/memmgr.pla: 0144: // Shrink free block +; libsrc/memmgr.pla: 0145: // +; libsrc/memmgr.pla: 0146: shrink = freblk + size +; libsrc/memmgr.pla: 0147: if freprv +; libsrc/memmgr.pla: 0148: freprv=>frenxt = shrink +; libsrc/memmgr.pla: 0149: else + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 +; libsrc/memmgr.pla: 0150: frelst = shrink +; libsrc/memmgr.pla: 0151: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D035+0 +_F014 !WORD _D035+0 +_B007 +; libsrc/memmgr.pla: 0152: shrink=>fresiz = freblk=>fresiz - size +; libsrc/memmgr.pla: 0153: shrink=>frenxt = freblk=>frenxt +; libsrc/memmgr.pla: 0154: else + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B005 +; libsrc/memmgr.pla: 0155: freblk = 0 +; libsrc/memmgr.pla: 0156: fin + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B004 +; libsrc/memmgr.pla: 0157: return freblk + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/memmgr.pla: 0158: end +; libsrc/memmgr.pla: 0159: def addfre(freblk)#0 + ; freblk -> [0] +_C004 ; addfre() +; libsrc/memmgr.pla: 0160: word srch + ; srch -> [2] +; libsrc/memmgr.pla: 0161: +; libsrc/memmgr.pla: 0162: //freblk=>fresiz = freblk=>blksiz +; libsrc/memmgr.pla: 0163: if frelst and frelst < freblk + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/memmgr.pla: 0164: srch = frelst +; libsrc/memmgr.pla: 0165: while srch=>frenxt + !BYTE $6A ; LAW _D035+0 +_F015 !WORD _D035+0 + !BYTE $AC ; BRAND _B008 + !WORD _B008-* + !BYTE $6A ; LAW _D035+0 +_F016 !WORD _D035+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $46 ; ISLT +_B008 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $6A ; LAW _D035+0 +_F017 !WORD _D035+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B011 +; libsrc/memmgr.pla: 0166: if srch=>frenxt > freblk +; libsrc/memmgr.pla: 0167: // +; libsrc/memmgr.pla: 0168: // Insert into list +; libsrc/memmgr.pla: 0169: // +; libsrc/memmgr.pla: 0170: freblk=>frenxt = srch=>frenxt +; libsrc/memmgr.pla: 0171: srch=>frenxt = freblk +; libsrc/memmgr.pla: 0172: return + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0173: fin +_B014 +_B015 +; libsrc/memmgr.pla: 0174: srch = srch=>frenxt +; libsrc/memmgr.pla: 0175: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] +_B013 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B011 + !WORD _B011-* +_B012 +; libsrc/memmgr.pla: 0176: // +; libsrc/memmgr.pla: 0177: // Add to end of list +; libsrc/memmgr.pla: 0178: // +; libsrc/memmgr.pla: 0179: freblk=>frenxt = 0 +; libsrc/memmgr.pla: 0180: srch=>frenxt = freblk +; libsrc/memmgr.pla: 0181: else + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; libsrc/memmgr.pla: 0182: // +; libsrc/memmgr.pla: 0183: // Add to beginning of list +; libsrc/memmgr.pla: 0184: // +; libsrc/memmgr.pla: 0185: freblk=>frenxt = frelst +; libsrc/memmgr.pla: 0186: frelst = freblk +; libsrc/memmgr.pla: 0187: fin + !BYTE $6A ; LAW _D035+0 +_F018 !WORD _D035+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D035+0 +_F019 !WORD _D035+0 +_B010 +; libsrc/memmgr.pla: 0188: end + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0189: // +; libsrc/memmgr.pla: 0190: // Memory coallesce/compaction/swap out routines +; libsrc/memmgr.pla: 0191: // +; libsrc/memmgr.pla: 0192: def coallesce +_C005 ; coallesce() +; libsrc/memmgr.pla: 0193: word srch, combined + ; srch -> [0] + ; combined -> [2] +; libsrc/memmgr.pla: 0194: +; libsrc/memmgr.pla: 0195: combined = 0 + !BYTE $58,$04,$00 ; ENTER 4,0 +; libsrc/memmgr.pla: 0196: srch = frelst +; libsrc/memmgr.pla: 0197: while srch and srch=>frenxt + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D035+0 +_F020 !WORD _D035+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +_B016 +; libsrc/memmgr.pla: 0198: if srch + srch=>fresiz == srch=>frenxt +; libsrc/memmgr.pla: 0199: // +; libsrc/memmgr.pla: 0200: // Combine adjacent free space +; libsrc/memmgr.pla: 0201: // +; libsrc/memmgr.pla: 0202: //putc('C');putc(' ');puth(srch);putc('+');puth(srch=>frenxt);putc(' ') +; libsrc/memmgr.pla: 0203: srch=>fresiz = srch=>fresiz + srch=>frenxt=>fresiz +; libsrc/memmgr.pla: 0204: srch=>frenxt = srch=>frenxt=>frenxt +; libsrc/memmgr.pla: 0205: combined = 1 +; libsrc/memmgr.pla: 0206: else + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $24 ; BRNE _B020 + !WORD _B020-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B020 +; libsrc/memmgr.pla: 0207: srch = srch=>frenxt +; libsrc/memmgr.pla: 0208: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] +_B021 +; libsrc/memmgr.pla: 0209: loop +_B018 + !BYTE $66,$00 ; LLW [0] + !BYTE $AC ; BRAND _B019 + !WORD _B019-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW +_B019 + !BYTE $4E ; BRTRU _B016 + !WORD _B016-* +_B017 +; libsrc/memmgr.pla: 0210: return combined + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0211: end +; libsrc/memmgr.pla: 0212: def compact +_C006 ; compact() +; libsrc/memmgr.pla: 0213: word page, entry, memblk, moveblk, size, srch, prev + ; page -> [0] + ; entry -> [2] + ; memblk -> [4] + ; moveblk -> [6] + ; size -> [8] + ; srch -> [10] + ; prev -> [12] +; libsrc/memmgr.pla: 0214: byte moved + ; moved -> [14] +; libsrc/memmgr.pla: 0215: +; libsrc/memmgr.pla: 0216: moved = 0 + !BYTE $58,$0F,$00 ; ENTER 15,0 +; libsrc/memmgr.pla: 0217: for page = PG_TBL_SIZE - 1 downto 0 + !BYTE $00 ; CN 0 + !BYTE $74,$0E ; SLB [14] + !BYTE $00 ; CN 0 + !BYTE $0E ; CN 7 +_B023 + !BYTE $6E,$00 ; DLW [0] +; libsrc/memmgr.pla: 0218: if hpgtbl[page] +; libsrc/memmgr.pla: 0219: for entry = 255 downto 0 + !BYTE $26 ; LA _D032+0 +_F021 !WORD _D032+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $00 ; CN 0 + !BYTE $2A,$FF ; CB 255 +_B028 + !BYTE $6E,$02 ; DLW [2] +; libsrc/memmgr.pla: 0220: if hpgtbl:[page, entry].lsb & HMEM_STATE == HMEM_MOVEABLE +; libsrc/memmgr.pla: 0221: memblk = hpgtbl:[page, entry] +; libsrc/memmgr.pla: 0222: size = memblk=>blksiz +; libsrc/memmgr.pla: 0223: moveblk = 0 +; libsrc/memmgr.pla: 0224: prev = 0 +; libsrc/memmgr.pla: 0225: srch = frelst +; libsrc/memmgr.pla: 0226: while srch and srch < memblk + !BYTE $26 ; LA _D032+0 +_F022 !WORD _D032+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $60 ; LB + !BYTE $3C,$03 ; ANDI 3 + !BYTE $4E ; BRTRU _B030 + !WORD _B030-* + !BYTE $26 ; LA _D032+0 +_F023 !WORD _D032+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $6E,$04 ; DLW [4] + !BYTE $62 ; LW + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $6A ; LAW _D035+0 +_F024 !WORD _D035+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B034 + !WORD _B034-* +_B032 +; libsrc/memmgr.pla: 0227: if srch=>fresiz >= size +; libsrc/memmgr.pla: 0228: moveblk = unfre(srch, prev, size) +; libsrc/memmgr.pla: 0229: break + !BYTE $66,$0A ; LLW [10] + !BYTE $62 ; LW + !BYTE $66,$08 ; LLW [8] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C003 +_F025 !WORD _C003 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +; libsrc/memmgr.pla: 0230: fin +_B036 +_B037 +; libsrc/memmgr.pla: 0231: prev = srch +; libsrc/memmgr.pla: 0232: srch = srch=>frenxt +; libsrc/memmgr.pla: 0233: loop + !BYTE $66,$0A ; LLW [10] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] +_B034 + !BYTE $66,$0A ; LLW [10] + !BYTE $AC ; BRAND _B035 + !WORD _B035-* + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $46 ; ISLT +_B035 + !BYTE $4E ; BRTRU _B032 + !WORD _B032-* +_B033 +; libsrc/memmgr.pla: 0234: if moveblk +; libsrc/memmgr.pla: 0235: //putc('M');putc(' ');puth(moveblk);putc('=');puth(memblk);putc(' ') +; libsrc/memmgr.pla: 0236: memcpy(moveblk, memblk, size) +; libsrc/memmgr.pla: 0237: hpgtbl:[page, entry] = moveblk +; libsrc/memmgr.pla: 0238: addfre(memblk) +; libsrc/memmgr.pla: 0239: moved = 1 +; libsrc/memmgr.pla: 0240: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _X018 +_F026 !WORD 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $26 ; LA _D032+0 +_F027 !WORD _D032+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C004 +_F028 !WORD _C004 + !BYTE $02 ; CN 1 + !BYTE $74,$0E ; SLB [14] +_B038 +_B039 +; libsrc/memmgr.pla: 0241: fin +_B030 +_B031 +; libsrc/memmgr.pla: 0242: next +_B029 + !BYTE $A8 ; DECBRGE _B028 + !WORD _B028-* +_B027 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0243: else + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +_B025 +; libsrc/memmgr.pla: 0244: break + !BYTE $50 ; BRNCH _B022 + !WORD _B022-* +; libsrc/memmgr.pla: 0245: fin +_B026 +; libsrc/memmgr.pla: 0246: next +_B024 + !BYTE $A8 ; DECBRGE _B023 + !WORD _B023-* +_B022 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0247: if moved +; libsrc/memmgr.pla: 0248: coallesce +; libsrc/memmgr.pla: 0249: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $54 ; CALL _C005 +_F029 !WORD _C005 + !BYTE $30 ; DROP +_B040 +_B041 +; libsrc/memmgr.pla: 0250: return moved + !BYTE $64,$0E ; LLB [14] + !BYTE $5A,$0F ; LEAVE 15 +; libsrc/memmgr.pla: 0251: end +; libsrc/memmgr.pla: 0252: // +; libsrc/memmgr.pla: 0253: // Swap out memory block +; libsrc/memmgr.pla: 0254: // +; libsrc/memmgr.pla: 0255: def swapout(accessed) + ; accessed -> [0] +_C007 ; swapout() +; libsrc/memmgr.pla: 0256: byte[64] filename + ; filename -> [2] +; libsrc/memmgr.pla: 0257: byte ref + ; ref -> [66] +; libsrc/memmgr.pla: 0258: word page, entry, memblk, hmem, size + ; page -> [67] + ; entry -> [69] + ; memblk -> [71] + ; hmem -> [73] + ; size -> [75] +; libsrc/memmgr.pla: 0259: byte swapped + ; swapped -> [77] +; libsrc/memmgr.pla: 0260: +; libsrc/memmgr.pla: 0261: swapped = 0 + !BYTE $58,$4E,$01 ; ENTER 78,1 +; libsrc/memmgr.pla: 0262: for page = PG_TBL_SIZE - 1 downto 0 + !BYTE $00 ; CN 0 + !BYTE $74,$4D ; SLB [77] + !BYTE $00 ; CN 0 + !BYTE $0E ; CN 7 +_B043 + !BYTE $6E,$43 ; DLW [67] +; libsrc/memmgr.pla: 0263: if hpgtbl[page] +; libsrc/memmgr.pla: 0264: for entry = 255 downto 0 + !BYTE $26 ; LA _D032+0 +_F030 !WORD _D032+0 + !BYTE $BA,$43 ; IDXLW [67] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B045 + !WORD _B045-* + !BYTE $00 ; CN 0 + !BYTE $2A,$FF ; CB 255 +_B048 + !BYTE $6E,$45 ; DLW [69] +; libsrc/memmgr.pla: 0265: if hpgtbl:[page, entry].lsb & HMEM_STATE == HMEM_MOVEABLE +; libsrc/memmgr.pla: 0266: memblk = hpgtbl:[page, entry] +; libsrc/memmgr.pla: 0267: if not (memblk->blklok & accessed) +; libsrc/memmgr.pla: 0268: // +; libsrc/memmgr.pla: 0269: // Swap this block out +; libsrc/memmgr.pla: 0270: // +; libsrc/memmgr.pla: 0271: size = memblk=>blksiz +; libsrc/memmgr.pla: 0272: hmem.lsb = page +; libsrc/memmgr.pla: 0273: hmem.msb = entry +; libsrc/memmgr.pla: 0274: swapfile(@filename, hmem) +; libsrc/memmgr.pla: 0275: fileio:create(@filename, $00, size) // embed size in aux type +; libsrc/memmgr.pla: 0276: //puts(@swapoutstr);puts(@filename);putc('@');puth(memblk);putc(':');puth(size);putln +; libsrc/memmgr.pla: 0277: ref = fileio:open(@filename) +; libsrc/memmgr.pla: 0278: if ref +; libsrc/memmgr.pla: 0279: // +; libsrc/memmgr.pla: 0280: // Write it out +; libsrc/memmgr.pla: 0281: // +; libsrc/memmgr.pla: 0282: if fileio:write(ref, memblk, size) == size +; libsrc/memmgr.pla: 0283: // +; libsrc/memmgr.pla: 0284: // Zero size in page table flags swapin to read from disk +; libsrc/memmgr.pla: 0285: // +; libsrc/memmgr.pla: 0286: hpgtbl:[page, entry] = HMEM_SWAPPED +; libsrc/memmgr.pla: 0287: addfre(memblk) +; libsrc/memmgr.pla: 0288: swapped = 1 +; libsrc/memmgr.pla: 0289: fin + !BYTE $26 ; LA _D032+0 +_F031 !WORD _D032+0 + !BYTE $BA,$43 ; IDXLW [67] + !BYTE $62 ; LW + !BYTE $BA,$45 ; IDXLW [69] + !BYTE $60 ; LB + !BYTE $3C,$03 ; ANDI 3 + !BYTE $4E ; BRTRU _B050 + !WORD _B050-* + !BYTE $26 ; LA _D032+0 +_F032 !WORD _D032+0 + !BYTE $BA,$43 ; IDXLW [67] + !BYTE $62 ; LW + !BYTE $BA,$45 ; IDXLW [69] + !BYTE $62 ; LW + !BYTE $6E,$47 ; DLW [71] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B052 + !WORD _B052-* + !BYTE $66,$47 ; LLW [71] + !BYTE $62 ; LW + !BYTE $76,$4B ; SLW [75] + !BYTE $66,$43 ; LLW [67] + !BYTE $74,$49 ; SLB [73] + !BYTE $66,$45 ; LLW [69] + !BYTE $74,$4A ; SLB [74] + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$49 ; LLW [73] + !BYTE $54 ; CALL _C001 +_F033 !WORD _C001 + !BYTE $28,$02 ; LLA [2] + !BYTE $00 ; CN 0 + !BYTE $66,$4B ; LLW [75] + !BYTE $6A ; LAW _X028+22 +_F034 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X028+14 +_F035 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$42 ; DLB [66] + !BYTE $4C ; BRFLS _B054 + !WORD _B054-* + !BYTE $64,$42 ; LLB [66] + !BYTE $66,$47 ; LLW [71] + !BYTE $66,$4B ; LLW [75] + !BYTE $6A ; LAW _X028+20 +_F036 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $66,$4B ; LLW [75] + !BYTE $24 ; BRNE _B056 + !WORD _B056-* + !BYTE $06 ; CN 3 + !BYTE $26 ; LA _D032+0 +_F037 !WORD _D032+0 + !BYTE $BA,$43 ; IDXLW [67] + !BYTE $62 ; LW + !BYTE $BA,$45 ; IDXLW [69] + !BYTE $72 ; SW + !BYTE $66,$47 ; LLW [71] + !BYTE $54 ; CALL _C004 +_F038 !WORD _C004 + !BYTE $02 ; CN 1 + !BYTE $74,$4D ; SLB [77] +_B056 +_B057 +; libsrc/memmgr.pla: 0290: fileio:close(ref) +; libsrc/memmgr.pla: 0291: fin + !BYTE $64,$42 ; LLB [66] + !BYTE $6A ; LAW _X028+16 +_F039 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B054 +_B055 +; libsrc/memmgr.pla: 0292: fin +_B052 +_B053 +; libsrc/memmgr.pla: 0293: fin +_B050 +_B051 +; libsrc/memmgr.pla: 0294: next +_B049 + !BYTE $A8 ; DECBRGE _B048 + !WORD _B048-* +_B047 + !BYTE $76,$45 ; SLW [69] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0295: else + !BYTE $50 ; BRNCH _B046 + !WORD _B046-* +_B045 +; libsrc/memmgr.pla: 0296: break + !BYTE $50 ; BRNCH _B042 + !WORD _B042-* +; libsrc/memmgr.pla: 0297: fin +_B046 +; libsrc/memmgr.pla: 0298: next +_B044 + !BYTE $A8 ; DECBRGE _B043 + !WORD _B043-* +_B042 + !BYTE $76,$43 ; SLW [67] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0299: if swapped +; libsrc/memmgr.pla: 0300: coallesce +; libsrc/memmgr.pla: 0301: compact +; libsrc/memmgr.pla: 0302: fin + !BYTE $64,$4D ; LLB [77] + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $54 ; CALL _C005 +_F040 !WORD _C005 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C006 +_F041 !WORD _C006 + !BYTE $30 ; DROP +_B058 +_B059 +; libsrc/memmgr.pla: 0303: return swapped + !BYTE $64,$4D ; LLB [77] + !BYTE $5A,$4E ; LEAVE 78 +; libsrc/memmgr.pla: 0304: end +; libsrc/memmgr.pla: 0305: // +; libsrc/memmgr.pla: 0306: // Find a memory block +; libsrc/memmgr.pla: 0307: // +; libsrc/memmgr.pla: 0308: def findexact(size) + ; size -> [0] +_C008 ; findexact() +; libsrc/memmgr.pla: 0309: word srch, prev + ; srch -> [2] + ; prev -> [4] +; libsrc/memmgr.pla: 0310: +; libsrc/memmgr.pla: 0311: srch = frelst + !BYTE $58,$06,$01 ; ENTER 6,1 +; libsrc/memmgr.pla: 0312: prev = 0 +; libsrc/memmgr.pla: 0313: while srch + !BYTE $6A ; LAW _D035+0 +_F042 !WORD _D035+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B060 +; libsrc/memmgr.pla: 0314: if srch=>fresiz == size +; libsrc/memmgr.pla: 0315: //putc('E') +; libsrc/memmgr.pla: 0316: return unlink(srch, prev) + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $24 ; BRNE _B063 + !WORD _B063-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C002 +_F043 !WORD _C002 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/memmgr.pla: 0317: fin +_B063 +_B064 +; libsrc/memmgr.pla: 0318: prev = srch +; libsrc/memmgr.pla: 0319: srch = srch=>frenxt +; libsrc/memmgr.pla: 0320: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] +_B062 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B060 + !WORD _B060-* +_B061 +; libsrc/memmgr.pla: 0321: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/memmgr.pla: 0322: end +; libsrc/memmgr.pla: 0323: def findbest(size) + ; size -> [0] +_C009 ; findbest() +; libsrc/memmgr.pla: 0324: word srch, prev + ; srch -> [2] + ; prev -> [4] +; libsrc/memmgr.pla: 0325: +; libsrc/memmgr.pla: 0326: prev = 0 + !BYTE $58,$06,$01 ; ENTER 6,1 +; libsrc/memmgr.pla: 0327: srch = frelst +; libsrc/memmgr.pla: 0328: while srch + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $6A ; LAW _D035+0 +_F044 !WORD _D035+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B065 +; libsrc/memmgr.pla: 0329: if srch=>fresiz >= size +; libsrc/memmgr.pla: 0330: //putc('B') +; libsrc/memmgr.pla: 0331: return unfre(srch, prev, size) + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C003 +_F045 !WORD _C003 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/memmgr.pla: 0332: fin +_B068 +_B069 +; libsrc/memmgr.pla: 0333: prev = srch +; libsrc/memmgr.pla: 0334: srch = srch=>frenxt +; libsrc/memmgr.pla: 0335: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] +_B067 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B065 + !WORD _B065-* +_B066 +; libsrc/memmgr.pla: 0336: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/memmgr.pla: 0337: end +; libsrc/memmgr.pla: 0338: def findblk(size) + ; size -> [0] +_C010 ; findblk() +; libsrc/memmgr.pla: 0339: word addr + ; addr -> [2] +; libsrc/memmgr.pla: 0340: +; libsrc/memmgr.pla: 0341: if size > MAX_BLK_SIZE; return 0; fin + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$10,$20 ; CW 8208 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B070 + !WORD _B070-* + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +_B070 +_B071 +; libsrc/memmgr.pla: 0342: addr = findexact(size) +; libsrc/memmgr.pla: 0343: if !addr +; libsrc/memmgr.pla: 0344: coallesce +; libsrc/memmgr.pla: 0345: addr = findexact(size) +; libsrc/memmgr.pla: 0346: if !addr +; libsrc/memmgr.pla: 0347: compact +; libsrc/memmgr.pla: 0348: addr = findbest(size) +; libsrc/memmgr.pla: 0349: if !addr +; libsrc/memmgr.pla: 0350: swapout(HMEM_ACCESSED) +; libsrc/memmgr.pla: 0351: addr = findbest(size) +; libsrc/memmgr.pla: 0352: if !addr +; libsrc/memmgr.pla: 0353: swapout(0) +; libsrc/memmgr.pla: 0354: addr = findbest(size) +; libsrc/memmgr.pla: 0355: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C008 +_F046 !WORD _C008 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B072 + !WORD _B072-* + !BYTE $54 ; CALL _C005 +_F047 !WORD _C005 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C008 +_F048 !WORD _C008 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B074 + !WORD _B074-* + !BYTE $54 ; CALL _C006 +_F049 !WORD _C006 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F050 !WORD _C009 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B076 + !WORD _B076-* + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C007 +_F051 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F052 !WORD _C009 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B078 + !WORD _B078-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C007 +_F053 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F054 !WORD _C009 + !BYTE $76,$02 ; SLW [2] +_B078 +_B079 +; libsrc/memmgr.pla: 0356: fin +_B076 +_B077 +; libsrc/memmgr.pla: 0357: fin +_B074 +_B075 +; libsrc/memmgr.pla: 0358: fin +_B072 +_B073 +; libsrc/memmgr.pla: 0359: // +; libsrc/memmgr.pla: 0360: // Fill in the block +; libsrc/memmgr.pla: 0361: // +; libsrc/memmgr.pla: 0362: //puts(@getblkstr);puth(addr);putc(':');puth(size);putln +; libsrc/memmgr.pla: 0363: if addr +; libsrc/memmgr.pla: 0364: addr=>blksiz = size +; libsrc/memmgr.pla: 0365: addr->blkref = 1 +; libsrc/memmgr.pla: 0366: addr->blklok = 0 +; libsrc/memmgr.pla: 0367: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB +_B080 +_B081 +; libsrc/memmgr.pla: 0368: return addr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0369: end +; libsrc/memmgr.pla: 0370: // +; libsrc/memmgr.pla: 0371: // Swap in a memory block (or allocate an uninitialized block) +; libsrc/memmgr.pla: 0372: // +; libsrc/memmgr.pla: 0373: def swapin(hmem) + ; hmem -> [0] +_C011 ; swapin() +; libsrc/memmgr.pla: 0374: byte[64] filename + ; filename -> [2] +; libsrc/memmgr.pla: 0375: byte[15] info + ; info -> [66] +; libsrc/memmgr.pla: 0376: byte ref + ; ref -> [81] +; libsrc/memmgr.pla: 0377: word memblk, size + ; memblk -> [82] + ; size -> [84] +; libsrc/memmgr.pla: 0378: +; libsrc/memmgr.pla: 0379: size = hpgtbl:[hmem.lsb, hmem.msb] & HMEM_SIZE + !BYTE $58,$56,$01 ; ENTER 86,1 +; libsrc/memmgr.pla: 0380: if size +; libsrc/memmgr.pla: 0381: // +; libsrc/memmgr.pla: 0382: // This was just uninitialized memory, don't bother reading from file +; libsrc/memmgr.pla: 0383: // +; libsrc/memmgr.pla: 0384: memblk = findblk(size) +; libsrc/memmgr.pla: 0385: else + !BYTE $26 ; LA _D032+0 +_F055 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $62 ; LW + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$54 ; DLW [84] + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $66,$54 ; LLW [84] + !BYTE $54 ; CALL _C010 +_F056 !WORD _C010 + !BYTE $76,$52 ; SLW [82] + !BYTE $50 ; BRNCH _B083 + !WORD _B083-* +_B082 +; libsrc/memmgr.pla: 0386: // +; libsrc/memmgr.pla: 0387: // Swap this block back in +; libsrc/memmgr.pla: 0388: // +; libsrc/memmgr.pla: 0389: swapfile(@filename, hmem) +; libsrc/memmgr.pla: 0390: fileio:getfileinfo(@filename, @info) +; libsrc/memmgr.pla: 0391: size = info:2 // Size encoded in aux type +; libsrc/memmgr.pla: 0392: memblk = findblk(size) +; libsrc/memmgr.pla: 0393: //puts(@swapinstr);puts(@filename);putc('@');puth(memblk);putc(':');puth(size);putln +; libsrc/memmgr.pla: 0394: if memblk +; libsrc/memmgr.pla: 0395: // +; libsrc/memmgr.pla: 0396: // Read it in +; libsrc/memmgr.pla: 0397: // +; libsrc/memmgr.pla: 0398: ref = fileio:open(@filename) +; libsrc/memmgr.pla: 0399: if ref +; libsrc/memmgr.pla: 0400: fileio:read(ref, memblk, size) +; libsrc/memmgr.pla: 0401: fileio:close(ref) +; libsrc/memmgr.pla: 0402: fileio:destroy(@filename) +; libsrc/memmgr.pla: 0403: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C001 +_F057 !WORD _C001 + !BYTE $28,$02 ; LLA [2] + !BYTE $28,$42 ; LLA [66] + !BYTE $6A ; LAW _X028+4 +_F058 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$44 ; LLW [68] + !BYTE $6E,$54 ; DLW [84] + !BYTE $54 ; CALL _C010 +_F059 !WORD _C010 + !BYTE $6E,$52 ; DLW [82] + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X028+14 +_F060 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$51 ; DLB [81] + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $64,$51 ; LLB [81] + !BYTE $66,$52 ; LLW [82] + !BYTE $66,$54 ; LLW [84] + !BYTE $6A ; LAW _X028+18 +_F061 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$51 ; LLB [81] + !BYTE $6A ; LAW _X028+16 +_F062 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X028+24 +_F063 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B086 +_B087 +; libsrc/memmgr.pla: 0404: fin +_B084 +_B085 +; libsrc/memmgr.pla: 0405: fin +_B083 +; libsrc/memmgr.pla: 0406: if memblk +; libsrc/memmgr.pla: 0407: hpgtbl:[hmem.lsb, hmem.msb] = memblk +; libsrc/memmgr.pla: 0408: fin + !BYTE $66,$52 ; LLW [82] + !BYTE $4C ; BRFLS _B088 + !WORD _B088-* + !BYTE $66,$52 ; LLW [82] + !BYTE $26 ; LA _D032+0 +_F064 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $72 ; SW +_B088 +_B089 +; libsrc/memmgr.pla: 0409: return memblk + !BYTE $66,$52 ; LLW [82] + !BYTE $5A,$56 ; LEAVE 86 +; libsrc/memmgr.pla: 0410: end +; libsrc/memmgr.pla: 0411: // +; libsrc/memmgr.pla: 0412: // Incrementally clear the ACCESSED BIT +; libsrc/memmgr.pla: 0413: // +; libsrc/memmgr.pla: 0414: export def sweep#0 +_C012 ; sweep() +; libsrc/memmgr.pla: 0415: word memblk + ; memblk -> [0] +; libsrc/memmgr.pla: 0416: +; libsrc/memmgr.pla: 0417: if hpgtbl[sweeppg] + !BYTE $58,$02,$00 ; ENTER 2,0 +; libsrc/memmgr.pla: 0418: memblk = hpgtbl:[sweeppg, sweepen] +; libsrc/memmgr.pla: 0419: when memblk.lsb & HMEM_STATE + !BYTE $26 ; LA _D032+0 +_F065 !WORD _D032+0 + !BYTE $BC ; IDXAB _D036+0 +_F066 !WORD _D036+0 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B090 + !WORD _B090-* + !BYTE $26 ; LA _D032+0 +_F067 !WORD _D032+0 + !BYTE $BC ; IDXAB _D036+0 +_F068 !WORD _D036+0 + !BYTE $62 ; LW + !BYTE $BC ; IDXAB _D037+0 +_F069 !WORD _D037+0 + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $52 ; SEL + !WORD _B093-* +; libsrc/memmgr.pla: 0420: is HMEM_MOVEABLE +_B094 +; libsrc/memmgr.pla: 0421: is HMEM_LOCKED +_B095 +; libsrc/memmgr.pla: 0422: memblk = memblk & HMEM_ADDR +; libsrc/memmgr.pla: 0423: if memblk->blklok & HMEM_ACCESSED +; libsrc/memmgr.pla: 0424: memblk->blklok = memblk->blklok & $7F +; libsrc/memmgr.pla: 0425: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$00 ; DLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $3C,$7F ; ANDI 127 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB +_B096 +_B097 +; libsrc/memmgr.pla: 0426: wend + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B093 + !BYTE $02 ; CASEBLOCK + !WORD $0000 + !WORD _B094-* + !WORD $0002 + !WORD _B095-* +_B092 +; libsrc/memmgr.pla: 0427: if sweepen == 255 +; libsrc/memmgr.pla: 0428: sweepen = 0 +; libsrc/memmgr.pla: 0429: if sweeppg == 0 +; libsrc/memmgr.pla: 0430: sweeppg = PG_TBL_SIZE - 1 +; libsrc/memmgr.pla: 0431: else + !BYTE $68 ; LAB _D037+0 +_F070 !WORD _D037+0 + !BYTE $2A,$FF ; CB 255 + !BYTE $24 ; BRNE _B098 + !WORD _B098-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D037+0 +_F071 !WORD _D037+0 + !BYTE $68 ; LAB _D036+0 +_F072 !WORD _D036+0 + !BYTE $4E ; BRTRU _B100 + !WORD _B100-* + !BYTE $0E ; CN 7 + !BYTE $78 ; SAB _D036+0 +_F073 !WORD _D036+0 + !BYTE $50 ; BRNCH _B101 + !WORD _B101-* +_B100 +; libsrc/memmgr.pla: 0432: sweeppg = sweeppg - 1 +; libsrc/memmgr.pla: 0433: fin + !BYTE $68 ; LAB _D036+0 +_F074 !WORD _D036+0 + !BYTE $8E ; DECR + !BYTE $78 ; SAB _D036+0 +_F075 !WORD _D036+0 +_B101 +; libsrc/memmgr.pla: 0434: else + !BYTE $50 ; BRNCH _B099 + !WORD _B099-* +_B098 +; libsrc/memmgr.pla: 0435: sweepen = sweepen + 1 +; libsrc/memmgr.pla: 0436: fin + !BYTE $68 ; LAB _D037+0 +_F076 !WORD _D037+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D037+0 +_F077 !WORD _D037+0 +_B099 +; libsrc/memmgr.pla: 0437: else + !BYTE $50 ; BRNCH _B091 + !WORD _B091-* +_B090 +; libsrc/memmgr.pla: 0438: sweeppg = PG_TBL_SIZE - 1 +; libsrc/memmgr.pla: 0439: fin + !BYTE $0E ; CN 7 + !BYTE $78 ; SAB _D036+0 +_F078 !WORD _D036+0 +_B091 +; libsrc/memmgr.pla: 0440: end + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/memmgr.pla: 0441: // +; libsrc/memmgr.pla: 0442: // Set end of memory pool +; libsrc/memmgr.pla: 0443: // +; libsrc/memmgr.pla: 0444: export def brk(addr) + ; addr -> [0] +_C013 ; brk() +; libsrc/memmgr.pla: 0445: word heapalign, brkblk, brksiz, srch + ; heapalign -> [2] + ; brkblk -> [4] + ; brksiz -> [6] + ; srch -> [8] +; libsrc/memmgr.pla: 0446: +; libsrc/memmgr.pla: 0447: // +; libsrc/memmgr.pla: 0448: // Check if addr is too high or low +; libsrc/memmgr.pla: 0449: // +; libsrc/memmgr.pla: 0450: if isuge(addr, @heapalign); return 0; fin + !BYTE $58,$0A,$01 ; ENTER 10,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X025 +_F079 !WORD 0 + !BYTE $4C ; BRFLS _B102 + !WORD _B102-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +_B102 +_B103 +; libsrc/memmgr.pla: 0451: if isule(addr, heapmark); return 0; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X012 +_F080 !WORD 0 + !BYTE $54 ; CALL _X027 +_F081 !WORD 0 + !BYTE $4C ; BRFLS _B104 + !WORD _B104-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +_B104 +_B105 +; libsrc/memmgr.pla: 0452: if not pooladdr +; libsrc/memmgr.pla: 0453: // +; libsrc/memmgr.pla: 0454: // Allocate the memory pool +; libsrc/memmgr.pla: 0455: // +; libsrc/memmgr.pla: 0456: heapalign = (heapmark | MIN_BLK_MASK) + 1 +; libsrc/memmgr.pla: 0457: brksiz = addr - heapalign +; libsrc/memmgr.pla: 0458: if isult(brksiz, MAX_BLK_SIZE); return 0; fin // Not enough heap + !BYTE $6A ; LAW _D033+0 +_F082 !WORD _D033+0 + !BYTE $4E ; BRTRU _B106 + !WORD _B106-* + !BYTE $54 ; CALL _X012 +_F083 !WORD 0 + !BYTE $3E,$03 ; ORI 3 + !BYTE $8C ; INCR + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $6E,$06 ; DLW [6] + !BYTE $2C,$10,$20 ; CW 8208 + !BYTE $54 ; CALL _X026 +_F084 !WORD 0 + !BYTE $4C ; BRFLS _B108 + !WORD _B108-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +_B108 +_B109 +; libsrc/memmgr.pla: 0459: poolsize = addr - heapmark +; libsrc/memmgr.pla: 0460: pooladdr = heapalloc(poolsize) +; libsrc/memmgr.pla: 0461: if pooladdr +; libsrc/memmgr.pla: 0462: frelst = heapalign +; libsrc/memmgr.pla: 0463: frelst=>fresiz = brksiz +; libsrc/memmgr.pla: 0464: frelst=>frenxt = 0 +; libsrc/memmgr.pla: 0465: else + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X012 +_F085 !WORD 0 + !BYTE $84 ; SUB + !BYTE $7E ; DAW _D034+0 +_F086 !WORD _D034+0 + !BYTE $54 ; CALL _X014 +_F087 !WORD 0 + !BYTE $7E ; DAW _D033+0 +_F088 !WORD _D033+0 + !BYTE $4C ; BRFLS _B110 + !WORD _B110-* + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D035+0 +_F089 !WORD _D035+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _D035+0 +_F090 !WORD _D035+0 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D035+0 +_F091 !WORD _D035+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B111 + !WORD _B111-* +_B110 +; libsrc/memmgr.pla: 0466: poolsize = 0 +; libsrc/memmgr.pla: 0467: fin + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D034+0 +_F092 !WORD _D034+0 +_B111 +; libsrc/memmgr.pla: 0468: else + !BYTE $50 ; BRNCH _B107 + !WORD _B107-* +_B106 +; libsrc/memmgr.pla: 0469: // +; libsrc/memmgr.pla: 0470: // Can we extend the memory pool? +; libsrc/memmgr.pla: 0471: // +; libsrc/memmgr.pla: 0472: if pooladdr + poolsize == heapmark +; libsrc/memmgr.pla: 0473: brksiz = addr - heapmark +; libsrc/memmgr.pla: 0474: brkblk = heapalloc(brksiz) +; libsrc/memmgr.pla: 0475: if brkblk +; libsrc/memmgr.pla: 0476: // +; libsrc/memmgr.pla: 0477: // Add block to end of free list +; libsrc/memmgr.pla: 0478: // +; libsrc/memmgr.pla: 0479: poolsize = poolsize + brksiz +; libsrc/memmgr.pla: 0480: brkblk=>fresiz = brksiz +; libsrc/memmgr.pla: 0481: brkblk=>frenxt = 0 +; libsrc/memmgr.pla: 0482: if frelst +; libsrc/memmgr.pla: 0483: srch = frelst +; libsrc/memmgr.pla: 0484: while srch=>frenxt; srch = srch=>frenxt; loop + !BYTE $6A ; LAW _D033+0 +_F093 !WORD _D033+0 + !BYTE $B6 ; ADDAW _D034+0 +_F094 !WORD _D034+0 + !BYTE $54 ; CALL _X012 +_F095 !WORD 0 + !BYTE $24 ; BRNE _B112 + !WORD _B112-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X012 +_F096 !WORD 0 + !BYTE $84 ; SUB + !BYTE $6E,$06 ; DLW [6] + !BYTE $54 ; CALL _X014 +_F097 !WORD 0 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $6A ; LAW _D034+0 +_F098 !WORD _D034+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $7A ; SAW _D034+0 +_F099 !WORD _D034+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D035+0 +_F100 !WORD _D035+0 + !BYTE $4C ; BRFLS _B116 + !WORD _B116-* + !BYTE $6A ; LAW _D035+0 +_F101 !WORD _D035+0 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +_B118 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$08 ; SLW [8] +_B120 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B118 + !WORD _B118-* +_B119 +; libsrc/memmgr.pla: 0485: srch=>frenxt = brkblk +; libsrc/memmgr.pla: 0486: else + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B117 + !WORD _B117-* +_B116 +; libsrc/memmgr.pla: 0487: frelst = brkblk +; libsrc/memmgr.pla: 0488: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _D035+0 +_F102 !WORD _D035+0 +_B117 +; libsrc/memmgr.pla: 0489: coallesce // combine adjacent free space +; libsrc/memmgr.pla: 0490: fin + !BYTE $54 ; CALL _C005 +_F103 !WORD _C005 + !BYTE $30 ; DROP +_B114 +_B115 +; libsrc/memmgr.pla: 0491: fin +_B112 +_B113 +; libsrc/memmgr.pla: 0492: fin +_B107 +; libsrc/memmgr.pla: 0493: return poolsize + !BYTE $6A ; LAW _D034+0 +_F104 !WORD _D034+0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/memmgr.pla: 0494: end +; libsrc/memmgr.pla: 0495: export def sbrk(size) + ; size -> [0] +_C014 ; sbrk() +; libsrc/memmgr.pla: 0496: return brk((heapmark | MIN_BLK_MASK) + 1 + size + MIN_BLK_SIZE) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $54 ; CALL _X012 +_F105 !WORD 0 + !BYTE $3E,$03 ; ORI 3 + !BYTE $8C ; INCR + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $54 ; CALL _C013 +_F106 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/memmgr.pla: 0497: end +; libsrc/memmgr.pla: 0498: // +; libsrc/memmgr.pla: 0499: // Return the amount of free memory available, after garbage +; libsrc/memmgr.pla: 0500: // collection, swaps +; libsrc/memmgr.pla: 0501: // +; libsrc/memmgr.pla: 0502: export def hmemFre(lptr) + ; lptr -> [0] +_C015 ; hmemFre() +; libsrc/memmgr.pla: 0503: word srch, free, largest + ; srch -> [2] + ; free -> [4] + ; largest -> [6] +; libsrc/memmgr.pla: 0504: +; libsrc/memmgr.pla: 0505: coallesce + !BYTE $58,$08,$01 ; ENTER 8,1 +; libsrc/memmgr.pla: 0506: while compact; loop + !BYTE $54 ; CALL _C005 +_F107 !WORD _C005 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +_B121 +_B123 + !BYTE $54 ; CALL _C006 +_F108 !WORD _C006 + !BYTE $4E ; BRTRU _B121 + !WORD _B121-* +_B122 +; libsrc/memmgr.pla: 0507: free = 0 +; libsrc/memmgr.pla: 0508: largest = 0 +; libsrc/memmgr.pla: 0509: srch = frelst +; libsrc/memmgr.pla: 0510: while srch + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D035+0 +_F109 !WORD _D035+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +_B124 +; libsrc/memmgr.pla: 0511: //putc('F'); putc(' '); puth(srch); putc(':'); puth(srch=>fresiz); putln +; libsrc/memmgr.pla: 0512: free = free + srch=>fresiz +; libsrc/memmgr.pla: 0513: if srch=>fresiz > largest +; libsrc/memmgr.pla: 0514: largest = srch=>fresiz +; libsrc/memmgr.pla: 0515: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $66,$06 ; LLW [6] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B127 + !WORD _B127-* + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B127 +_B128 +; libsrc/memmgr.pla: 0516: srch = srch=>frenxt +; libsrc/memmgr.pla: 0517: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] +_B126 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B124 + !WORD _B124-* +_B125 +; libsrc/memmgr.pla: 0518: if lptr +; libsrc/memmgr.pla: 0519: *lptr = largest - MIN_BLK_SIZE +; libsrc/memmgr.pla: 0520: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B129 + !WORD _B129-* + !BYTE $66,$06 ; LLW [6] + !BYTE $3A,$04 ; SUBI 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW +_B129 +_B130 +; libsrc/memmgr.pla: 0521: return free - MIN_BLK_SIZE + !BYTE $66,$04 ; LLW [4] + !BYTE $3A,$04 ; SUBI 4 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/memmgr.pla: 0522: end +; libsrc/memmgr.pla: 0523: // +; libsrc/memmgr.pla: 0524: // Allocate memory block +; libsrc/memmgr.pla: 0525: // +; libsrc/memmgr.pla: 0526: export def hmemNew(size) + ; size -> [0] +_C016 ; hmemNew() +; libsrc/memmgr.pla: 0527: word page, entry, hnew, memblk + ; page -> [2] + ; entry -> [4] + ; hnew -> [6] + ; memblk -> [8] +; libsrc/memmgr.pla: 0528: +; libsrc/memmgr.pla: 0529: // +; libsrc/memmgr.pla: 0530: // First, find a free handle +; libsrc/memmgr.pla: 0531: // +; libsrc/memmgr.pla: 0532: for page = PG_TBL_SIZE - 1 downto 0 + !BYTE $58,$0A,$01 ; ENTER 10,1 + !BYTE $00 ; CN 0 + !BYTE $0E ; CN 7 +_B132 + !BYTE $6E,$02 ; DLW [2] +; libsrc/memmgr.pla: 0533: if !hpgtbl[page] +; libsrc/memmgr.pla: 0534: // +; libsrc/memmgr.pla: 0535: // Allocate a new page table +; libsrc/memmgr.pla: 0536: // +; libsrc/memmgr.pla: 0537: hpgtbl[page] = heapalloc(PG_SIZE) +; libsrc/memmgr.pla: 0538: memset(hpgtbl[page], HMEM_AVAIL, PG_SIZE) +; libsrc/memmgr.pla: 0539: //puts(@allocpgstr);puth(hpgtbl[page]);putln +; libsrc/memmgr.pla: 0540: // +; libsrc/memmgr.pla: 0541: // Check if we need to allocate the memory pool +; libsrc/memmgr.pla: 0542: // +; libsrc/memmgr.pla: 0543: if not pooladdr +; libsrc/memmgr.pla: 0544: // +; libsrc/memmgr.pla: 0545: // Allocate 3/4 of available heap on 128K machine, 1/2 on 64K machine +; libsrc/memmgr.pla: 0546: // +; libsrc/memmgr.pla: 0547: poolsize = (heapavail >> 1) & $7FFF +; libsrc/memmgr.pla: 0548: if MACHID & $30 == $30 +; libsrc/memmgr.pla: 0549: poolsize = poolsize + (poolsize >> 1) +; libsrc/memmgr.pla: 0550: fin + !BYTE $26 ; LA _D032+0 +_F110 !WORD _D032+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B134 + !WORD _B134-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X014 +_F111 !WORD 0 + !BYTE $26 ; LA _D032+0 +_F112 !WORD _D032+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $72 ; SW + !BYTE $26 ; LA _D032+0 +_F113 !WORD _D032+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X017 +_F114 !WORD 0 + !BYTE $6A ; LAW _D033+0 +_F115 !WORD _D033+0 + !BYTE $4E ; BRTRU _B136 + !WORD _B136-* + !BYTE $54 ; CALL _X016 +_F116 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D034+0 +_F117 !WORD _D034+0 + !BYTE $68 ; LAB _X001+0 +_F118 !WORD 0+0 + !BYTE $3C,$30 ; ANDI 48 + !BYTE $2A,$30 ; CB 48 + !BYTE $24 ; BRNE _B138 + !WORD _B138-* + !BYTE $6A ; LAW _D034+0 +_F119 !WORD _D034+0 + !BYTE $34 ; DUP + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D034+0 +_F120 !WORD _D034+0 +_B138 +_B139 +; libsrc/memmgr.pla: 0551: if isult(poolsize, MAX_BLK_SIZE) +; libsrc/memmgr.pla: 0552: poolsize = MAX_BLK_SIZE +; libsrc/memmgr.pla: 0553: fin + !BYTE $6A ; LAW _D034+0 +_F121 !WORD _D034+0 + !BYTE $2C,$10,$20 ; CW 8208 + !BYTE $54 ; CALL _X026 +_F122 !WORD 0 + !BYTE $4C ; BRFLS _B140 + !WORD _B140-* + !BYTE $2C,$10,$20 ; CW 8208 + !BYTE $7A ; SAW _D034+0 +_F123 !WORD _D034+0 +_B140 +_B141 +; libsrc/memmgr.pla: 0554: sbrk(poolsize) +; libsrc/memmgr.pla: 0555: fin + !BYTE $6A ; LAW _D034+0 +_F124 !WORD _D034+0 + !BYTE $54 ; CALL _C014 +_F125 !WORD _C014 + !BYTE $30 ; DROP +_B136 +_B137 +; libsrc/memmgr.pla: 0556: fin +_B134 +_B135 +; libsrc/memmgr.pla: 0557: for entry = 255 downto 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$FF ; CB 255 +_B143 + !BYTE $6E,$04 ; DLW [4] +; libsrc/memmgr.pla: 0558: if hpgtbl:[page, entry].lsb == HMEM_AVAIL +; libsrc/memmgr.pla: 0559: // +; libsrc/memmgr.pla: 0560: // Reserve handle as swapped out block +; libsrc/memmgr.pla: 0561: // Nonzero size will flag swapin to not read from disk +; libsrc/memmgr.pla: 0562: // +; libsrc/memmgr.pla: 0563: //putc('N');putc(' ');putb(entry);putb(page);putc('@') +; libsrc/memmgr.pla: 0564: size = ((size + t_memblk) | MIN_BLK_MASK) + 1 +; libsrc/memmgr.pla: 0565: hpgtbl:[page, entry] = size | HMEM_SWAPPED +; libsrc/memmgr.pla: 0566: hnew.lsb = page +; libsrc/memmgr.pla: 0567: hnew.msb = entry +; libsrc/memmgr.pla: 0568: return hnew + !BYTE $26 ; LA _D032+0 +_F126 !WORD _D032+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $24 ; BRNE _B145 + !WORD _B145-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $3E,$03 ; ORI 3 + !BYTE $8C ; INCR + !BYTE $6E,$00 ; DLW [0] + !BYTE $3E,$03 ; ORI 3 + !BYTE $26 ; LA _D032+0 +_F127 !WORD _D032+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $BA,$04 ; IDXLW [4] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$07 ; SLB [7] + !BYTE $32 ; DROP2 + !BYTE $32 ; DROP2 + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/memmgr.pla: 0569: fin +_B145 +_B146 +; libsrc/memmgr.pla: 0570: next +_B144 + !BYTE $A8 ; DECBRGE _B143 + !WORD _B143-* +_B142 + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0571: next +_B133 + !BYTE $A8 ; DECBRGE _B132 + !WORD _B132-* +_B131 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0572: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; libsrc/memmgr.pla: 0573: end +; libsrc/memmgr.pla: 0574: // +; libsrc/memmgr.pla: 0575: // Lock memory block in place +; libsrc/memmgr.pla: 0576: // +; libsrc/memmgr.pla: 0577: export def hmemLock(hmem) + ; hmem -> [0] +_C017 ; hmemLock() +; libsrc/memmgr.pla: 0578: word memblk + ; memblk -> [2] +; libsrc/memmgr.pla: 0579: +; libsrc/memmgr.pla: 0580: memblk = hpgtbl:[hmem.lsb, hmem.msb] + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/memmgr.pla: 0581: when memblk.lsb & HMEM_STATE + !BYTE $26 ; LA _D032+0 +_F128 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$02 ; LLB [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $52 ; SEL + !WORD _B148-* +; libsrc/memmgr.pla: 0582: is HMEM_SWAPPED +_B149 +; libsrc/memmgr.pla: 0583: memblk = swapin(hmem) +; libsrc/memmgr.pla: 0584: if not memblk; return 0; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C011 +_F129 !WORD _C011 + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B150 + !WORD _B150-* + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +_B150 +_B151 +; libsrc/memmgr.pla: 0585: is HMEM_MOVEABLE +_B152 +; libsrc/memmgr.pla: 0586: hpgtbl:[hmem.lsb, hmem.msb] = memblk | HMEM_LOCKED +; libsrc/memmgr.pla: 0587: is HMEM_LOCKED + !BYTE $66,$02 ; LLW [2] + !BYTE $3E,$02 ; ORI 2 + !BYTE $26 ; LA _D032+0 +_F130 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $72 ; SW +_B153 +; libsrc/memmgr.pla: 0588: memblk = memblk & HMEM_ADDR +; libsrc/memmgr.pla: 0589: memblk->blklok = (memblk->blklok + 1) | HMEM_ACCESSED +; libsrc/memmgr.pla: 0590: //putc('L');putc(' ');puth(hmem);putc('@');puth(memblk);putln +; libsrc/memmgr.pla: 0591: return memblk + t_memblk + !BYTE $66,$02 ; LLW [2] + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$02 ; DLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $3E,$80 ; ORI 128 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0592: wend + !BYTE $50 ; BRNCH _B147 + !WORD _B147-* +_B148 + !BYTE $03 ; CASEBLOCK + !WORD $0000 + !WORD _B152-* + !WORD $0002 + !WORD _B153-* + !WORD $0003 + !WORD _B149-* +_B147 +; libsrc/memmgr.pla: 0593: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0594: end +; libsrc/memmgr.pla: 0595: // +; libsrc/memmgr.pla: 0596: // Unlock memory block +; libsrc/memmgr.pla: 0597: // +; libsrc/memmgr.pla: 0598: export def hmemUnlock(hmem)#0 + ; hmem -> [0] +_C018 ; hmemUnlock() +; libsrc/memmgr.pla: 0599: byte lock + ; lock -> [2] +; libsrc/memmgr.pla: 0600: word memblk + ; memblk -> [3] +; libsrc/memmgr.pla: 0601: +; libsrc/memmgr.pla: 0602: memblk = hpgtbl:[hmem.lsb, hmem.msb] + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/memmgr.pla: 0603: if memblk.lsb & HMEM_STATE == HMEM_LOCKED +; libsrc/memmgr.pla: 0604: memblk = memblk & HMEM_ADDR +; libsrc/memmgr.pla: 0605: lock = memblk->blklok - 1 +; libsrc/memmgr.pla: 0606: if lock == HMEM_ACCESSED +; libsrc/memmgr.pla: 0607: // +; libsrc/memmgr.pla: 0608: // Block is now moveable +; libsrc/memmgr.pla: 0609: // +; libsrc/memmgr.pla: 0610: hpgtbl:[hmem.lsb, hmem.msb] = memblk +; libsrc/memmgr.pla: 0611: fin + !BYTE $26 ; LA _D032+0 +_F131 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $62 ; LW + !BYTE $76,$03 ; SLW [3] + !BYTE $64,$03 ; LLB [3] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B154 + !WORD _B154-* + !BYTE $66,$03 ; LLW [3] + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$03 ; DLW [3] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$80 ; CB 128 + !BYTE $24 ; BRNE _B156 + !WORD _B156-* + !BYTE $66,$03 ; LLW [3] + !BYTE $26 ; LA _D032+0 +_F132 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $72 ; SW +_B156 +_B157 +; libsrc/memmgr.pla: 0612: memblk->blklok = lock +; libsrc/memmgr.pla: 0613: //putc('U');putc(' ');puth(hmem);putln +; libsrc/memmgr.pla: 0614: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB +_B154 +_B155 +; libsrc/memmgr.pla: 0615: end + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/memmgr.pla: 0616: // +; libsrc/memmgr.pla: 0617: // Increment reference count +; libsrc/memmgr.pla: 0618: // +; libsrc/memmgr.pla: 0619: export def hmemRef(hmem)#0 + ; hmem -> [0] +_C019 ; hmemRef() +; libsrc/memmgr.pla: 0620: word memblk + ; memblk -> [2] +; libsrc/memmgr.pla: 0621: +; libsrc/memmgr.pla: 0622: memblk = hpgtbl:[hmem.lsb, hmem.msb] + !BYTE $58,$04,$01 ; ENTER 4,1 +; libsrc/memmgr.pla: 0623: when memblk.lsb & HMEM_STATE + !BYTE $26 ; LA _D032+0 +_F133 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$02 ; LLB [2] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $52 ; SEL + !WORD _B159-* +; libsrc/memmgr.pla: 0624: is HMEM_SWAPPED +_B160 +; libsrc/memmgr.pla: 0625: memblk = swapin(hmem) +; libsrc/memmgr.pla: 0626: is HMEM_LOCKED + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C011 +_F134 !WORD _C011 + !BYTE $76,$02 ; SLW [2] +_B161 +; libsrc/memmgr.pla: 0627: is HMEM_MOVEABLE +_B162 +; libsrc/memmgr.pla: 0628: memblk = memblk & HMEM_ADDR +; libsrc/memmgr.pla: 0629: if not memblk; return; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$02 ; DLW [2] + !BYTE $4E ; BRTRU _B163 + !WORD _B163-* + !BYTE $5A,$04 ; LEAVE 4 +_B163 +_B164 +; libsrc/memmgr.pla: 0630: memblk->blkref = memblk->blkref + 1 +; libsrc/memmgr.pla: 0631: wend + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +_B159 + !BYTE $03 ; CASEBLOCK + !WORD $0000 + !WORD _B162-* + !WORD $0002 + !WORD _B161-* + !WORD $0003 + !WORD _B160-* +_B158 +; libsrc/memmgr.pla: 0632: end + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/memmgr.pla: 0633: // +; libsrc/memmgr.pla: 0634: // Decrement reference count +; libsrc/memmgr.pla: 0635: // +; libsrc/memmgr.pla: 0636: export def hmemDel(hmem)#0 + ; hmem -> [0] +_C020 ; hmemDel() +; libsrc/memmgr.pla: 0637: byte ref + ; ref -> [2] +; libsrc/memmgr.pla: 0638: word memblk + ; memblk -> [3] +; libsrc/memmgr.pla: 0639: +; libsrc/memmgr.pla: 0640: memblk = hpgtbl:[hmem.lsb, hmem.msb] + !BYTE $58,$05,$01 ; ENTER 5,1 +; libsrc/memmgr.pla: 0641: when memblk & HMEM_STATE + !BYTE $26 ; LA _D032+0 +_F135 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $62 ; LW + !BYTE $6E,$03 ; DLW [3] + !BYTE $3C,$03 ; ANDI 3 + !BYTE $52 ; SEL + !WORD _B166-* +; libsrc/memmgr.pla: 0642: is HMEM_SWAPPED +_B167 +; libsrc/memmgr.pla: 0643: memblk = swapin(hmem) +; libsrc/memmgr.pla: 0644: is HMEM_LOCKED + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C011 +_F136 !WORD _C011 + !BYTE $76,$03 ; SLW [3] +_B168 +; libsrc/memmgr.pla: 0645: is HMEM_MOVEABLE +_B169 +; libsrc/memmgr.pla: 0646: memblk = memblk & HMEM_ADDR +; libsrc/memmgr.pla: 0647: if not memblk; return; fin + !BYTE $66,$03 ; LLW [3] + !BYTE $5E,$FC ; CFFB 65532 + !BYTE $94 ; AND + !BYTE $6E,$03 ; DLW [3] + !BYTE $4E ; BRTRU _B170 + !WORD _B170-* + !BYTE $5A,$05 ; LEAVE 5 +_B170 +_B171 +; libsrc/memmgr.pla: 0648: ref = memblk->blkref - 1 +; libsrc/memmgr.pla: 0649: if ref == 0 +; libsrc/memmgr.pla: 0650: // +; libsrc/memmgr.pla: 0651: // No more references, free block +; libsrc/memmgr.pla: 0652: // +; libsrc/memmgr.pla: 0653: hpgtbl:[hmem.lsb, hmem.msb] = HMEM_AVAIL +; libsrc/memmgr.pla: 0654: addfre(memblk) +; libsrc/memmgr.pla: 0655: else + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $6C,$02 ; DLB [2] + !BYTE $4E ; BRTRU _B172 + !WORD _B172-* + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D032+0 +_F137 !WORD _D032+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $B8,$01 ; IDXLB [1] + !BYTE $72 ; SW + !BYTE $66,$03 ; LLW [3] + !BYTE $54 ; CALL _C004 +_F138 !WORD _C004 + !BYTE $50 ; BRNCH _B173 + !WORD _B173-* +_B172 +; libsrc/memmgr.pla: 0656: memblk->blkref = ref +; libsrc/memmgr.pla: 0657: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB +_B173 +; libsrc/memmgr.pla: 0658: break + !BYTE $50 ; BRNCH _B165 + !WORD _B165-* +; libsrc/memmgr.pla: 0659: wend + !BYTE $50 ; BRNCH _B165 + !WORD _B165-* +_B166 + !BYTE $03 ; CASEBLOCK + !WORD $0000 + !WORD _B169-* + !WORD $0002 + !WORD _B168-* + !WORD $0003 + !WORD _B167-* +_B165 +; libsrc/memmgr.pla: 0660: end + !BYTE $5A,$05 ; LEAVE 5 +; libsrc/memmgr.pla: 0661: // +; libsrc/memmgr.pla: 0662: // Initialization: +; libsrc/memmgr.pla: 0663: // +; libsrc/memmgr.pla: 0664: // Search for best swap volume +; libsrc/memmgr.pla: 0665: // +; libsrc/memmgr.pla: 0666: // !!! Does this work on Apple ///??? +; libsrc/memmgr.pla: 0667: // +; libsrc/memmgr.pla: 0668: sysbuf = $0800 // heapallocalign(1024, 8, 0) +_INIT +; libsrc/memmgr.pla: 0669: initdata = heapalloc(t_initdata) // Use data on heap for initialization +; libsrc/memmgr.pla: 0670: initdata=>volparms.0 = 2 +; libsrc/memmgr.pla: 0671: initdata=>volparms.1 = 0 +; libsrc/memmgr.pla: 0672: initdata=>volparms:2 = sysbuf +; libsrc/memmgr.pla: 0673: syscall($C5, @initdata=>volparms) +; libsrc/memmgr.pla: 0674: initdata=>volptr = sysbuf +; libsrc/memmgr.pla: 0675: initdata=>ramfree = 0 +; libsrc/memmgr.pla: 0676: initdata=>bestfree = 0 +; libsrc/memmgr.pla: 0677: for sweepen = 0 to 15 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $7A ; SAW _D031+0 +_F139 !WORD _D031+0 + !BYTE $2A,$19 ; CB 25 + !BYTE $54 ; CALL _X014 +_F140 !WORD 0 + !BYTE $7A ; SAW _D030+0 +_F141 !WORD _D030+0 + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _D030+0 +_F142 !WORD _D030+0 + !BYTE $38,$15 ; ADDI 21 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D030+0 +_F143 !WORD _D030+0 + !BYTE $38,$15 ; ADDI 21 + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $6A ; LAW _D031+0 +_F144 !WORD _D031+0 + !BYTE $6A ; LAW _D030+0 +_F145 !WORD _D030+0 + !BYTE $38,$15 ; ADDI 21 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$C5 ; CB 197 + !BYTE $6A ; LAW _D030+0 +_F146 !WORD _D030+0 + !BYTE $38,$15 ; ADDI 21 + !BYTE $54 ; CALL _X011 +_F147 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D031+0 +_F148 !WORD _D031+0 + !BYTE $6A ; LAW _D030+0 +_F149 !WORD _D030+0 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D030+0 +_F150 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D030+0 +_F151 !WORD _D030+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B175 + !BYTE $7C ; DAB _D037+0 +_F152 !WORD _D037+0 +; libsrc/memmgr.pla: 0678: ^initdata=>volptr = ^initdata=>volptr & $0F +; libsrc/memmgr.pla: 0679: if ^initdata=>volptr +; libsrc/memmgr.pla: 0680: memcpy(@swapvol + 2, initdata=>volptr + 1, ^initdata=>volptr) +; libsrc/memmgr.pla: 0681: swapvol = ^initdata=>volptr + 1 +; libsrc/memmgr.pla: 0682: fileio:getfileinfo(@swapvol, @initdata->volinfo) +; libsrc/memmgr.pla: 0683: initdata=>freeblks = initdata=>volinfo:2 - initdata=>volinfo:5 +; libsrc/memmgr.pla: 0684: if initdata=>volptr:1 == $522F and initdata=>volptr:3 == $4D41 // '/RAM' +; libsrc/memmgr.pla: 0685: if isugt(initdata=>freeblks, initdata=>ramfree) +; libsrc/memmgr.pla: 0686: initdata=>ramvol = initdata=>volptr +; libsrc/memmgr.pla: 0687: initdata=>ramfree = initdata=>freeblks +; libsrc/memmgr.pla: 0688: fin + !BYTE $6A ; LAW _D030+0 +_F153 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $6A ; LAW _D030+0 +_F154 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $70 ; SB + !BYTE $6A ; LAW _D030+0 +_F155 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B177 + !WORD _B177-* + !BYTE $26 ; LA _D038+2 +_F156 !WORD _D038+2 + !BYTE $6A ; LAW _D030+0 +_F157 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D030+0 +_F158 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F159 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F160 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D038+0 +_F161 !WORD _D038+0 + !BYTE $26 ; LA _D038+0 +_F162 !WORD _D038+0 + !BYTE $6A ; LAW _D030+0 +_F163 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $6A ; LAW _X028+4 +_F164 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D030+0 +_F165 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F166 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$05 ; ADDI 5 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D030+0 +_F167 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F168 !WORD _D030+0 + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $2C,$2F,$52 ; CW 21039 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B179 + !WORD _B179-* + !BYTE $6A ; LAW _D030+0 +_F169 !WORD _D030+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $62 ; LW + !BYTE $2C,$41,$4D ; CW 19777 + !BYTE $40 ; ISEQ +_B179 + !BYTE $4C ; BRFLS _B180 + !WORD _B180-* + !BYTE $6A ; LAW _D030+0 +_F170 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F171 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X024 +_F172 !WORD 0 + !BYTE $4C ; BRFLS _B182 + !WORD _B182-* + !BYTE $6A ; LAW _D030+0 +_F173 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F174 !WORD _D030+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F175 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F176 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B182 +_B183 +; libsrc/memmgr.pla: 0689: elsif isugt(initdata=>freeblks, initdata=>bestfree) + !BYTE $50 ; BRNCH _B181 + !WORD _B181-* +_B180 +; libsrc/memmgr.pla: 0690: initdata=>bestvol = initdata=>volptr +; libsrc/memmgr.pla: 0691: initdata=>bestfree = initdata=>freeblks +; libsrc/memmgr.pla: 0692: fin + !BYTE $6A ; LAW _D030+0 +_F177 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F178 !WORD _D030+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X024 +_F179 !WORD 0 + !BYTE $4C ; BRFLS _B184 + !WORD _B184-* + !BYTE $6A ; LAW _D030+0 +_F180 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F181 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F182 !WORD _D030+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F183 !WORD _D030+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW +_B184 +_B181 +; libsrc/memmgr.pla: 0693: fin +_B177 +_B178 +; libsrc/memmgr.pla: 0694: initdata=>volptr = initdata=>volptr + 16 +; libsrc/memmgr.pla: 0695: next + !BYTE $6A ; LAW _D030+0 +_F184 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $38,$10 ; ADDI 16 + !BYTE $6A ; LAW _D030+0 +_F185 !WORD _D030+0 + !BYTE $72 ; SW +_B176 + !BYTE $A4 ; INCBRLE _B175 + !WORD _B175-* +_B174 + !BYTE $78 ; SAB _D037+0 +_F186 !WORD _D037+0 + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0696: if isugt(initdata=>ramfree, $40) or isugt(initdata=>ramfree, initdata=>bestfree) // RAMdrive greater than 64K? Use it +; libsrc/memmgr.pla: 0697: initdata=>bestvol = initdata=>ramvol +; libsrc/memmgr.pla: 0698: initdata=>bestfree = initdata=>ramfree +; libsrc/memmgr.pla: 0699: fin + !BYTE $6A ; LAW _D030+0 +_F187 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _X024 +_F188 !WORD 0 + !BYTE $AE ; BROR _B185 + !WORD _B185-* + !BYTE $6A ; LAW _D030+0 +_F189 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F190 !WORD _D030+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X024 +_F191 !WORD 0 +_B185 + !BYTE $4C ; BRFLS _B186 + !WORD _B186-* + !BYTE $6A ; LAW _D030+0 +_F192 !WORD _D030+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F193 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F194 !WORD _D030+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F195 !WORD _D030+0 + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW +_B186 +_B187 +; libsrc/memmgr.pla: 0700: memcpy(@swapvol + 2, initdata=>bestvol + 1, ^initdata=>bestvol) +; libsrc/memmgr.pla: 0701: swapvol = ^initdata=>bestvol + 1 +; libsrc/memmgr.pla: 0702: memcpy(@swapvol + swapvol + 1, @swapdir + 1, swapdir) +; libsrc/memmgr.pla: 0703: swapvol = swapvol + swapdir +; libsrc/memmgr.pla: 0704: fileio:create(@swapvol, $0F, $0000) // Create the swap directory +; libsrc/memmgr.pla: 0705: // +; libsrc/memmgr.pla: 0706: // Clear out left over swap files +; libsrc/memmgr.pla: 0707: // +; libsrc/memmgr.pla: 0708: initdata->catref = fileio:open(@swapvol) +; libsrc/memmgr.pla: 0709: initdata->firstblk = 1 +; libsrc/memmgr.pla: 0710: initdata->swapstrlen = swapvol +; libsrc/memmgr.pla: 0711: repeat + !BYTE $26 ; LA _D038+2 +_F196 !WORD _D038+2 + !BYTE $6A ; LAW _D030+0 +_F197 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D030+0 +_F198 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F199 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F200 !WORD _D030+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D038+0 +_F201 !WORD _D038+0 + !BYTE $26 ; LA _D038+0 +_F202 !WORD _D038+0 + !BYTE $B4 ; ADDAB _D038+0 +_F203 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $26 ; LA _D039+1 +_F204 !WORD _D039+1 + !BYTE $68 ; LAB _D039+0 +_F205 !WORD _D039+0 + !BYTE $54 ; CALL _X018 +_F206 !WORD 0 + !BYTE $68 ; LAB _D038+0 +_F207 !WORD _D038+0 + !BYTE $B4 ; ADDAB _D039+0 +_F208 !WORD _D039+0 + !BYTE $78 ; SAB _D038+0 +_F209 !WORD _D038+0 + !BYTE $26 ; LA _D038+0 +_F210 !WORD _D038+0 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+22 +_F211 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D038+0 +_F212 !WORD _D038+0 + !BYTE $6A ; LAW _X028+14 +_F213 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _D030+0 +_F214 !WORD _D030+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _D030+0 +_F215 !WORD _D030+0 + !BYTE $38,$11 ; ADDI 17 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D038+0 +_F216 !WORD _D038+0 + !BYTE $6A ; LAW _D030+0 +_F217 !WORD _D030+0 + !BYTE $38,$14 ; ADDI 20 + !BYTE $70 ; SB +_B189 +; libsrc/memmgr.pla: 0712: if fileio:read(initdata->catref, @initdata->catalog, 512) == 512 +; libsrc/memmgr.pla: 0713: initdata=>catentry = @initdata->catalog.4 +; libsrc/memmgr.pla: 0714: if initdata->firstblk +; libsrc/memmgr.pla: 0715: initdata->entrylen = initdata->catalog.$23 +; libsrc/memmgr.pla: 0716: initdata->entriesblk = initdata->catalog.$24 +; libsrc/memmgr.pla: 0717: initdata=>filecnt = initdata=>catalog:$25 +; libsrc/memmgr.pla: 0718: initdata=>catentry = initdata=>catentry + initdata->entrylen +; libsrc/memmgr.pla: 0719: fin + !BYTE $6A ; LAW _D030+0 +_F218 !WORD _D030+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D030+0 +_F219 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X028+18 +_F220 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $24 ; BRNE _B191 + !WORD _B191-* + !BYTE $6A ; LAW _D030+0 +_F221 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$04 ; ADDI 4 + !BYTE $6A ; LAW _D030+0 +_F222 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F223 !WORD _D030+0 + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B193 + !WORD _B193-* + !BYTE $6A ; LAW _D030+0 +_F224 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D030+0 +_F225 !WORD _D030+0 + !BYTE $38,$12 ; ADDI 18 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D030+0 +_F226 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D030+0 +_F227 !WORD _D030+0 + !BYTE $38,$13 ; ADDI 19 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D030+0 +_F228 !WORD _D030+0 + !BYTE $38,$19 ; ADDI 25 + !BYTE $38,$25 ; ADDI 37 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F229 !WORD _D030+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D030+0 +_F230 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F231 !WORD _D030+0 + !BYTE $38,$12 ; ADDI 18 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D030+0 +_F232 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW +_B193 +_B194 +; libsrc/memmgr.pla: 0720: for sweepen = initdata->firstblk to initdata->entriesblk + !BYTE $6A ; LAW _D030+0 +_F233 !WORD _D030+0 + !BYTE $38,$13 ; ADDI 19 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D030+0 +_F234 !WORD _D030+0 + !BYTE $38,$11 ; ADDI 17 + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B195 + !WORD _B195-* +_B196 + !BYTE $7C ; DAB _D037+0 +_F235 !WORD _D037+0 +; libsrc/memmgr.pla: 0721: ^initdata=>catentry = ^initdata=>catentry & $0F +; libsrc/memmgr.pla: 0722: if ^initdata=>catentry +; libsrc/memmgr.pla: 0723: memcpy(@swapvol + swapvol + 1, initdata=>catentry + 1, ^initdata=>catentry) +; libsrc/memmgr.pla: 0724: swapvol = swapvol + ^initdata=>catentry +; libsrc/memmgr.pla: 0725: fileio:destroy(@swapvol) +; libsrc/memmgr.pla: 0726: swapvol = initdata->swapstrlen +; libsrc/memmgr.pla: 0727: fin + !BYTE $6A ; LAW _D030+0 +_F236 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $6A ; LAW _D030+0 +_F237 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $70 ; SB + !BYTE $6A ; LAW _D030+0 +_F238 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B198 + !WORD _B198-* + !BYTE $26 ; LA _D038+0 +_F239 !WORD _D038+0 + !BYTE $B4 ; ADDAB _D038+0 +_F240 !WORD _D038+0 + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D030+0 +_F241 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D030+0 +_F242 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F243 !WORD 0 + !BYTE $68 ; LAB _D038+0 +_F244 !WORD _D038+0 + !BYTE $6A ; LAW _D030+0 +_F245 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $78 ; SAB _D038+0 +_F246 !WORD _D038+0 + !BYTE $26 ; LA _D038+0 +_F247 !WORD _D038+0 + !BYTE $6A ; LAW _X028+24 +_F248 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D030+0 +_F249 !WORD _D030+0 + !BYTE $38,$14 ; ADDI 20 + !BYTE $60 ; LB + !BYTE $78 ; SAB _D038+0 +_F250 !WORD _D038+0 +_B198 +_B199 +; libsrc/memmgr.pla: 0728: initdata=>catentry = initdata=>catentry + initdata->entrylen +; libsrc/memmgr.pla: 0729: next + !BYTE $6A ; LAW _D030+0 +_F251 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D030+0 +_F252 !WORD _D030+0 + !BYTE $38,$12 ; ADDI 18 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D030+0 +_F253 !WORD _D030+0 + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW +_B197 + !BYTE $A4 ; INCBRLE _B196 + !WORD _B196-* +_B195 + !BYTE $78 ; SAB _D037+0 +_F254 !WORD _D037+0 + !BYTE $30 ; DROP +; libsrc/memmgr.pla: 0730: initdata->firstblk = 0 +; libsrc/memmgr.pla: 0731: else + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D030+0 +_F255 !WORD _D030+0 + !BYTE $38,$11 ; ADDI 17 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B192 + !WORD _B192-* +_B191 +; libsrc/memmgr.pla: 0732: initdata->filecnt = 0 +; libsrc/memmgr.pla: 0733: fin + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D030+0 +_F256 !WORD _D030+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB +_B192 +; libsrc/memmgr.pla: 0734: until !initdata->filecnt +_B190 + !BYTE $6A ; LAW _D030+0 +_F257 !WORD _D030+0 + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B189 + !WORD _B189-* +_B188 +; libsrc/memmgr.pla: 0735: fileio:close(initdata->catref) +; libsrc/memmgr.pla: 0736: heaprelease(initdata) +; libsrc/memmgr.pla: 0737: //puts(@swapvol); putln +; libsrc/memmgr.pla: 0738: done + !BYTE $6A ; LAW _D030+0 +_F258 !WORD _D030+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $6A ; LAW _X028+16 +_F259 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D030+0 +_F260 !WORD _D030+0 + !BYTE $54 ; CALL _X015 +_F261 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 22 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 24 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 24 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE 24 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE 24 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: ISUGT + !BYTE $C9,$D3,$D5,$C7,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 24 ; ESD INDEX + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ISULE + !BYTE $C9,$D3,$D5,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 27 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: SWEEP + !BYTE $D3,$D7,$C5,$C5,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C012 + ; DCI STRING: BRK + !BYTE $C2,$D2,$4B + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C013 + ; DCI STRING: SBRK + !BYTE $D3,$C2,$D2,$4B + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C014 + ; DCI STRING: HMEMFRE + !BYTE $C8,$CD,$C5,$CD,$C6,$D2,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C015 + ; DCI STRING: HMEMNEW + !BYTE $C8,$CD,$C5,$CD,$CE,$C5,$57 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C016 + ; DCI STRING: HMEMLOCK + !BYTE $C8,$CD,$C5,$CD,$CC,$CF,$C3,$4B + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C017 + ; DCI STRING: HMEMUNLOCK + !BYTE $C8,$CD,$C5,$CD,$D5,$CE,$CC,$CF,$C3,$4B + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C018 + ; DCI STRING: HMEMREF + !BYTE $C8,$CD,$C5,$CD,$D2,$C5,$46 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C019 + ; DCI STRING: HMEMDEL + !BYTE $C8,$CD,$C5,$CD,$C4,$C5,$4C + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C020 + !BYTE $00 ; END OF ESD diff --git a/src/libsrc/sane.a b/src/libsrc/sane.a new file mode 100644 index 0000000..8392c71 --- /dev/null +++ b/src/libsrc/sane.a @@ -0,0 +1,2830 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; libsrc/sane.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; libsrc/sane.pla: 0001: +; libsrc/sane.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; libsrc/sane.pla: 0002: +; libsrc/sane.pla: 0003: const AUXADDR = $E000 // Location of SANE on 128K //e or //c + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; AUXADDR = 57344 +; libsrc/sane.pla: 0004: struc t_diskinfo +; libsrc/sane.pla: 0005: word codelen + ; codelen = 0 +; libsrc/sane.pla: 0006: word codeaddr + ; codeaddr = 2 +; libsrc/sane.pla: 0007: end + ; t_diskinfo = 4 +; libsrc/sane.pla: 0008: struc t_codefile +; libsrc/sane.pla: 0009: byte[16*t_diskinfo] diskinfo + ; diskinfo = 0 +; libsrc/sane.pla: 0010: byte[16*8] segname + ; segname = 64 +; libsrc/sane.pla: 0011: word[16] segkind + ; segkind = 192 +; libsrc/sane.pla: 0012: word[16] textaddr + ; textaddr = 224 +; libsrc/sane.pla: 0013: word[16] seginfo + ; seginfo = 256 +; libsrc/sane.pla: 0014: end + ; t_codefile = 288 +; libsrc/sane.pla: 0015: // +; libsrc/sane.pla: 0016: // External interface to SANE libraries +; libsrc/sane.pla: 0017: // +; libsrc/sane.pla: 0018: predef fpInit(), fpDefaultHalt(pstatus), uninit0(), uninit1(op, dst), uninit2(op, dst, src), uninit3(op, dst, src, src2) +; libsrc/sane.pla: 0019: //export word sane = @fpInit, @fpDefaultHalt, @uninit0, @uninit1, @uninit2, @uninit3, @uninit1, @uninit2, @uninit3, @uninit0, @uninit0 +; libsrc/sane.pla: 0020: word sane = @fpInit, @fpDefaultHalt, @uninit0, @uninit1, @uninit2, @uninit3, @uninit1, @uninit2, @uninit3, @uninit0, @uninit0 +_D036 ; sane = @fpInit, @fpDefaultHalt, @uninit0, @uninit1, @uninit2, @uninit3, @uninit1, @uninit2, @uninit3, @uninit0, @uninit0 +_F000 !WORD _P000 +_F001 !WORD _P001 +_F002 !WORD _P002 +_F003 !WORD _P003 +_F004 !WORD _P004 +_F005 !WORD _P005 +_F006 !WORD _P003 +_F007 !WORD _P004 +_F008 !WORD _P005 +_F009 !WORD _P002 +_F010 !WORD _P002 +; libsrc/sane.pla: 0021: // +; libsrc/sane.pla: 0022: // Pointer to FP6502 entry +; libsrc/sane.pla: 0023: // +; libsrc/sane.pla: 0024: word fp6502 +_D037 !FILL 2 ; fp6502 +; libsrc/sane.pla: 0025: // +; libsrc/sane.pla: 0026: // PLASMA <-> SANE interface routines +; libsrc/sane.pla: 0027: // +; libsrc/sane.pla: 0028: asm equates +_A000 ; equates() +; libsrc/sane.pla: 0029: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; libsrc/sane.pla: 0030: end +; libsrc/sane.pla: 0031: // +; libsrc/sane.pla: 0032: // HALT exception handling +; libsrc/sane.pla: 0033: // +; libsrc/sane.pla: 0034: asm xfpHalt +_A001 ; xfpHalt() +; libsrc/sane.pla: 0035: STX SRC ; COPY STATUS RECORD TO MAIN MEMORY + STX SRC ; COPY STATUS RECORD TO MAIN MEMORY +; libsrc/sane.pla: 0036: STY SRC+1 + STY SRC+1 +; libsrc/sane.pla: 0037: LDY #$08 + LDY #$08 +; libsrc/sane.pla: 0038: - LDA (SRC),Y +- LDA (SRC),Y +; libsrc/sane.pla: 0039: STA $02F7,Y + STA $02F7,Y +; libsrc/sane.pla: 0040: DEY + DEY +; libsrc/sane.pla: 0041: BPL - + BPL - +; libsrc/sane.pla: 0042: PLA + PLA +; libsrc/sane.pla: 0043: TAX + TAX +; libsrc/sane.pla: 0044: PLA + PLA +; libsrc/sane.pla: 0045: TAY + TAY +; libsrc/sane.pla: 0046: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0047: PLP + PLP +; libsrc/sane.pla: 0048: TYA + TYA +; libsrc/sane.pla: 0049: PHA + PHA +; libsrc/sane.pla: 0050: TXA + TXA +; libsrc/sane.pla: 0051: PHA + PHA +; libsrc/sane.pla: 0052: LDY #$02 ; POINT TO MOVED STATUS RECORD + LDY #$02 ; POINT TO MOVED STATUS RECORD +; libsrc/sane.pla: 0053: LDX #$F7 + LDX #$F7 +; libsrc/sane.pla: 0054: end +; libsrc/sane.pla: 0055: asm fpHalt +_A002 ; fpHalt() +; libsrc/sane.pla: 0056: STA $C008 + STA $C008 +; libsrc/sane.pla: 0057: TXA + TXA +; libsrc/sane.pla: 0058: LDX ESP + LDX ESP +; libsrc/sane.pla: 0059: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0060: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0061: PLA ; POP RETURN TO fpOp? + PLA ; POP RETURN TO fpOp? +; libsrc/sane.pla: 0062: PLA + PLA +; libsrc/sane.pla: 0063: end +; libsrc/sane.pla: 0064: asm fixupHLT +_A003 ; fixupHLT() +; libsrc/sane.pla: 0065: JMP ($FFF0) ; JUMP THROUGH PLASMA HALT VECTOR + JMP ($FFF0) ; JUMP THROUGH PLASMA HALT VECTOR +; libsrc/sane.pla: 0066: end +; libsrc/sane.pla: 0067: // +; libsrc/sane.pla: 0068: // Main memory FP6502 API +; libsrc/sane.pla: 0069: // +; libsrc/sane.pla: 0070: asm fpOp0(op)#1 +_A004 ; fpOp0() +; libsrc/sane.pla: 0071: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0072: PHA + PHA +; libsrc/sane.pla: 0073: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0074: PHA + PHA +; libsrc/sane.pla: 0075: STX ESP + STX ESP +; libsrc/sane.pla: 0076: end +; libsrc/sane.pla: 0077: asm fixupFP0 +_A005 ; fixupFP0() +; libsrc/sane.pla: 0078: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0079: TXA + TXA +; libsrc/sane.pla: 0080: LDX ESP + LDX ESP +; libsrc/sane.pla: 0081: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0082: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0083: RTS + RTS +; libsrc/sane.pla: 0084: end +; libsrc/sane.pla: 0085: asm fpOp1(op, dst)#1 +_A006 ; fpOp1() +; libsrc/sane.pla: 0086: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0087: PHA + PHA +; libsrc/sane.pla: 0088: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0089: PHA + PHA +; libsrc/sane.pla: 0090: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0091: PHA + PHA +; libsrc/sane.pla: 0092: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0093: PHA + PHA +; libsrc/sane.pla: 0094: INX + INX +; libsrc/sane.pla: 0095: STX ESP + STX ESP +; libsrc/sane.pla: 0096: end +; libsrc/sane.pla: 0097: asm fixupFP1 +_A007 ; fixupFP1() +; libsrc/sane.pla: 0098: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0099: TXA + TXA +; libsrc/sane.pla: 0100: LDX ESP + LDX ESP +; libsrc/sane.pla: 0101: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0102: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0103: RTS + RTS +; libsrc/sane.pla: 0104: end +; libsrc/sane.pla: 0105: asm fpOp2(op, dst, src)#1 +_A008 ; fpOp2() +; libsrc/sane.pla: 0106: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0107: PHA + PHA +; libsrc/sane.pla: 0108: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0109: PHA + PHA +; libsrc/sane.pla: 0110: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0111: PHA + PHA +; libsrc/sane.pla: 0112: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0113: PHA + PHA +; libsrc/sane.pla: 0114: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0115: PHA + PHA +; libsrc/sane.pla: 0116: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0117: PHA + PHA +; libsrc/sane.pla: 0118: INX + INX +; libsrc/sane.pla: 0119: INX + INX +; libsrc/sane.pla: 0120: STX ESP + STX ESP +; libsrc/sane.pla: 0121: end +; libsrc/sane.pla: 0122: asm fixupFP2 +_A009 ; fixupFP2() +; libsrc/sane.pla: 0123: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0124: TXA + TXA +; libsrc/sane.pla: 0125: LDX ESP + LDX ESP +; libsrc/sane.pla: 0126: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0127: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0128: RTS + RTS +; libsrc/sane.pla: 0129: end +; libsrc/sane.pla: 0130: asm fpOp3(op, dst, src, src2)#1 +_A010 ; fpOp3() +; libsrc/sane.pla: 0131: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0132: PHA + PHA +; libsrc/sane.pla: 0133: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0134: PHA + PHA +; libsrc/sane.pla: 0135: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0136: PHA + PHA +; libsrc/sane.pla: 0137: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0138: PHA + PHA +; libsrc/sane.pla: 0139: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0140: PHA + PHA +; libsrc/sane.pla: 0141: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0142: PHA + PHA +; libsrc/sane.pla: 0143: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/sane.pla: 0144: PHA + PHA +; libsrc/sane.pla: 0145: LDA ESTKL+3,X + LDA ESTKL+3,X +; libsrc/sane.pla: 0146: PHA + PHA +; libsrc/sane.pla: 0147: INX + INX +; libsrc/sane.pla: 0148: INX + INX +; libsrc/sane.pla: 0149: INX + INX +; libsrc/sane.pla: 0150: STX ESP + STX ESP +; libsrc/sane.pla: 0151: end +; libsrc/sane.pla: 0152: asm fixupFP3 +_A011 ; fixupFP3() +; libsrc/sane.pla: 0153: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0154: TXA + TXA +; libsrc/sane.pla: 0155: LDX ESP + LDX ESP +; libsrc/sane.pla: 0156: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0157: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0158: RTS + RTS +; libsrc/sane.pla: 0159: end +; libsrc/sane.pla: 0160: // +; libsrc/sane.pla: 0161: // AUX memory FP6502 API +; libsrc/sane.pla: 0162: // +; libsrc/sane.pla: 0163: asm xfpOp0(op)#1 +_A012 ; xfpOp0() +; libsrc/sane.pla: 0164: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0165: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0166: STX ESP + STX ESP +; libsrc/sane.pla: 0167: PHP + PHP +; libsrc/sane.pla: 0168: SEI + SEI +; libsrc/sane.pla: 0169: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0170: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0171: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0172: PHA + PHA +; libsrc/sane.pla: 0173: TYA + TYA +; libsrc/sane.pla: 0174: PHA + PHA +; libsrc/sane.pla: 0175: JSR $E000 + JSR $E000 +; libsrc/sane.pla: 0176: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0177: PLP + PLP +; libsrc/sane.pla: 0178: TXA + TXA +; libsrc/sane.pla: 0179: LDX ESP + LDX ESP +; libsrc/sane.pla: 0180: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0181: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0182: RTS + RTS +; libsrc/sane.pla: 0183: end +; libsrc/sane.pla: 0184: asm xfpOp1(op, dst)#1 +_A013 ; xfpOp1() +; libsrc/sane.pla: 0185: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0186: STA $02FE + STA $02FE +; libsrc/sane.pla: 0187: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0188: STA $02FF + STA $02FF +; libsrc/sane.pla: 0189: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0190: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0191: INX + INX +; libsrc/sane.pla: 0192: STX ESP + STX ESP +; libsrc/sane.pla: 0193: PHP + PHP +; libsrc/sane.pla: 0194: SEI + SEI +; libsrc/sane.pla: 0195: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0196: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0197: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0198: PHA + PHA +; libsrc/sane.pla: 0199: TYA + TYA +; libsrc/sane.pla: 0200: PHA + PHA +; libsrc/sane.pla: 0201: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0202: PHA + PHA +; libsrc/sane.pla: 0203: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0204: PHA + PHA +; libsrc/sane.pla: 0205: JSR $E000 + JSR $E000 +; libsrc/sane.pla: 0206: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0207: PLP + PLP +; libsrc/sane.pla: 0208: TXA + TXA +; libsrc/sane.pla: 0209: LDX ESP + LDX ESP +; libsrc/sane.pla: 0210: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0211: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0212: RTS + RTS +; libsrc/sane.pla: 0213: end +; libsrc/sane.pla: 0214: asm xfpOp2(op, dst, src)#1 +_A014 ; xfpOp2() +; libsrc/sane.pla: 0215: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0216: STA $02FC + STA $02FC +; libsrc/sane.pla: 0217: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0218: STA $02FD + STA $02FD +; libsrc/sane.pla: 0219: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0220: STA $02FE + STA $02FE +; libsrc/sane.pla: 0221: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0222: STA $02FF + STA $02FF +; libsrc/sane.pla: 0223: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0224: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0225: INX + INX +; libsrc/sane.pla: 0226: INX + INX +; libsrc/sane.pla: 0227: STX ESP + STX ESP +; libsrc/sane.pla: 0228: PHP + PHP +; libsrc/sane.pla: 0229: SEI + SEI +; libsrc/sane.pla: 0230: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0231: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0232: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0233: PHA + PHA +; libsrc/sane.pla: 0234: TYA + TYA +; libsrc/sane.pla: 0235: PHA + PHA +; libsrc/sane.pla: 0236: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0237: PHA + PHA +; libsrc/sane.pla: 0238: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0239: PHA + PHA +; libsrc/sane.pla: 0240: LDA $02FD + LDA $02FD +; libsrc/sane.pla: 0241: PHA + PHA +; libsrc/sane.pla: 0242: LDA $02FC + LDA $02FC +; libsrc/sane.pla: 0243: PHA + PHA +; libsrc/sane.pla: 0244: JSR $E000 + JSR $E000 +; libsrc/sane.pla: 0245: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0246: PLP + PLP +; libsrc/sane.pla: 0247: TXA + TXA +; libsrc/sane.pla: 0248: LDX ESP + LDX ESP +; libsrc/sane.pla: 0249: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0250: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0251: RTS + RTS +; libsrc/sane.pla: 0252: end +; libsrc/sane.pla: 0253: asm xfpOp3(op, dst, src, src2)#1 +_A015 ; xfpOp3() +; libsrc/sane.pla: 0254: LDA ESTKL+3,X + LDA ESTKL+3,X +; libsrc/sane.pla: 0255: STA $02FA + STA $02FA +; libsrc/sane.pla: 0256: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/sane.pla: 0257: STA $02FB + STA $02FB +; libsrc/sane.pla: 0258: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0259: STA $02FC + STA $02FC +; libsrc/sane.pla: 0260: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0261: STA $02FD + STA $02FD +; libsrc/sane.pla: 0262: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0263: STA $02FE + STA $02FE +; libsrc/sane.pla: 0264: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0265: STA $02FF + STA $02FF +; libsrc/sane.pla: 0266: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0267: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0268: INX + INX +; libsrc/sane.pla: 0269: INX + INX +; libsrc/sane.pla: 0270: INX + INX +; libsrc/sane.pla: 0271: STX ESP + STX ESP +; libsrc/sane.pla: 0272: PHP + PHP +; libsrc/sane.pla: 0273: SEI + SEI +; libsrc/sane.pla: 0274: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0275: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0276: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0277: PHA + PHA +; libsrc/sane.pla: 0278: TYA + TYA +; libsrc/sane.pla: 0279: PHA + PHA +; libsrc/sane.pla: 0280: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0281: PHA + PHA +; libsrc/sane.pla: 0282: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0283: PHA + PHA +; libsrc/sane.pla: 0284: LDA $02FD + LDA $02FD +; libsrc/sane.pla: 0285: PHA + PHA +; libsrc/sane.pla: 0286: LDA $02FC + LDA $02FC +; libsrc/sane.pla: 0287: PHA + PHA +; libsrc/sane.pla: 0288: LDA $02FB + LDA $02FB +; libsrc/sane.pla: 0289: PHA + PHA +; libsrc/sane.pla: 0290: LDA $02FA + LDA $02FA +; libsrc/sane.pla: 0291: PHA + PHA +; libsrc/sane.pla: 0292: JSR $E000 + JSR $E000 +; libsrc/sane.pla: 0293: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0294: PLP + PLP +; libsrc/sane.pla: 0295: TXA + TXA +; libsrc/sane.pla: 0296: LDX ESP + LDX ESP +; libsrc/sane.pla: 0297: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0298: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0299: RTS + RTS +; libsrc/sane.pla: 0300: end +; libsrc/sane.pla: 0301: // +; libsrc/sane.pla: 0302: // Main memory ELEMS6502 API +; libsrc/sane.pla: 0303: // +; libsrc/sane.pla: 0304: asm elemsOp1(op, dst)#1 +_A016 ; elemsOp1() +; libsrc/sane.pla: 0305: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0306: PHA + PHA +; libsrc/sane.pla: 0307: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0308: PHA + PHA +; libsrc/sane.pla: 0309: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0310: PHA + PHA +; libsrc/sane.pla: 0311: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0312: PHA + PHA +; libsrc/sane.pla: 0313: INX + INX +; libsrc/sane.pla: 0314: STX ESP + STX ESP +; libsrc/sane.pla: 0315: end +; libsrc/sane.pla: 0316: asm fixupEL1 +_A017 ; fixupEL1() +; libsrc/sane.pla: 0317: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0318: TXA + TXA +; libsrc/sane.pla: 0319: LDX ESP + LDX ESP +; libsrc/sane.pla: 0320: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0321: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0322: RTS + RTS +; libsrc/sane.pla: 0323: end +; libsrc/sane.pla: 0324: asm elemsOp2(op, dst, src)#1 +_A018 ; elemsOp2() +; libsrc/sane.pla: 0325: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0326: PHA + PHA +; libsrc/sane.pla: 0327: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0328: PHA + PHA +; libsrc/sane.pla: 0329: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0330: PHA + PHA +; libsrc/sane.pla: 0331: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0332: PHA + PHA +; libsrc/sane.pla: 0333: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0334: PHA + PHA +; libsrc/sane.pla: 0335: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0336: PHA + PHA +; libsrc/sane.pla: 0337: INX + INX +; libsrc/sane.pla: 0338: INX + INX +; libsrc/sane.pla: 0339: STX ESP + STX ESP +; libsrc/sane.pla: 0340: end +; libsrc/sane.pla: 0341: asm fixupEL2 +_A019 ; fixupEL2() +; libsrc/sane.pla: 0342: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0343: TXA + TXA +; libsrc/sane.pla: 0344: LDX ESP + LDX ESP +; libsrc/sane.pla: 0345: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0346: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0347: RTS + RTS +; libsrc/sane.pla: 0348: end +; libsrc/sane.pla: 0349: asm elemsOp3(op, dst, src, src2)#1 +_A020 ; elemsOp3() +; libsrc/sane.pla: 0350: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0351: PHA + PHA +; libsrc/sane.pla: 0352: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0353: PHA + PHA +; libsrc/sane.pla: 0354: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0355: PHA + PHA +; libsrc/sane.pla: 0356: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0357: PHA + PHA +; libsrc/sane.pla: 0358: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0359: PHA + PHA +; libsrc/sane.pla: 0360: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0361: PHA + PHA +; libsrc/sane.pla: 0362: LDA ESTKH+3,X + LDA ESTKH+3,X +; libsrc/sane.pla: 0363: PHA + PHA +; libsrc/sane.pla: 0364: LDA ESTKL+3,X + LDA ESTKL+3,X +; libsrc/sane.pla: 0365: PHA + PHA +; libsrc/sane.pla: 0366: INX + INX +; libsrc/sane.pla: 0367: INX + INX +; libsrc/sane.pla: 0368: INX + INX +; libsrc/sane.pla: 0369: STX ESP + STX ESP +; libsrc/sane.pla: 0370: end +; libsrc/sane.pla: 0371: asm fixupEL3 +_A021 ; fixupEL3() +; libsrc/sane.pla: 0372: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0373: TXA + TXA +; libsrc/sane.pla: 0374: LDX ESP + LDX ESP +; libsrc/sane.pla: 0375: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0376: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0377: RTS + RTS +; libsrc/sane.pla: 0378: end +; libsrc/sane.pla: 0379: // +; libsrc/sane.pla: 0380: // AUX memory ELEMS6502 API +; libsrc/sane.pla: 0381: // +; libsrc/sane.pla: 0382: asm xelemsOp1(op, dst)#1 +_A022 ; xelemsOp1() +; libsrc/sane.pla: 0383: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0384: STA $02FE + STA $02FE +; libsrc/sane.pla: 0385: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0386: STA $02FF + STA $02FF +; libsrc/sane.pla: 0387: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0388: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0389: INX + INX +; libsrc/sane.pla: 0390: STX ESP + STX ESP +; libsrc/sane.pla: 0391: PHP + PHP +; libsrc/sane.pla: 0392: SEI + SEI +; libsrc/sane.pla: 0393: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0394: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0395: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0396: PHA + PHA +; libsrc/sane.pla: 0397: TYA + TYA +; libsrc/sane.pla: 0398: PHA + PHA +; libsrc/sane.pla: 0399: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0400: PHA + PHA +; libsrc/sane.pla: 0401: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0402: PHA + PHA +; libsrc/sane.pla: 0403: end +; libsrc/sane.pla: 0404: asm fixupXEL1 +_A023 ; fixupXEL1() +; libsrc/sane.pla: 0405: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0406: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0407: PLP + PLP +; libsrc/sane.pla: 0408: TXA + TXA +; libsrc/sane.pla: 0409: LDX ESP + LDX ESP +; libsrc/sane.pla: 0410: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0411: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0412: RTS + RTS +; libsrc/sane.pla: 0413: end +; libsrc/sane.pla: 0414: asm xelemsOp2(op, dst, src)#1 +_A024 ; xelemsOp2() +; libsrc/sane.pla: 0415: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0416: STA $02FC + STA $02FC +; libsrc/sane.pla: 0417: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0418: STA $02FD + STA $02FD +; libsrc/sane.pla: 0419: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0420: STA $02FE + STA $02FE +; libsrc/sane.pla: 0421: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0422: STA $02FF + STA $02FF +; libsrc/sane.pla: 0423: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0424: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0425: INX + INX +; libsrc/sane.pla: 0426: INX + INX +; libsrc/sane.pla: 0427: STX ESP + STX ESP +; libsrc/sane.pla: 0428: PHP + PHP +; libsrc/sane.pla: 0429: SEI + SEI +; libsrc/sane.pla: 0430: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0431: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0432: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0433: PHA + PHA +; libsrc/sane.pla: 0434: TYA + TYA +; libsrc/sane.pla: 0435: PHA + PHA +; libsrc/sane.pla: 0436: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0437: PHA + PHA +; libsrc/sane.pla: 0438: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0439: PHA + PHA +; libsrc/sane.pla: 0440: LDA $02FD + LDA $02FD +; libsrc/sane.pla: 0441: PHA + PHA +; libsrc/sane.pla: 0442: LDA $02FC + LDA $02FC +; libsrc/sane.pla: 0443: PHA + PHA +; libsrc/sane.pla: 0444: end +; libsrc/sane.pla: 0445: asm fixupXEL2 +_A025 ; fixupXEL2() +; libsrc/sane.pla: 0446: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0447: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0448: PLP + PLP +; libsrc/sane.pla: 0449: TXA + TXA +; libsrc/sane.pla: 0450: LDX ESP + LDX ESP +; libsrc/sane.pla: 0451: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0452: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0453: RTS + RTS +; libsrc/sane.pla: 0454: end +; libsrc/sane.pla: 0455: asm xelemsOp3(op, dst, src, src2)#1 +_A026 ; xelemsOp3() +; libsrc/sane.pla: 0456: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0457: STA $02FA + STA $02FA +; libsrc/sane.pla: 0458: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0459: STA $02FB + STA $02FB +; libsrc/sane.pla: 0460: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0461: STA $02FC + STA $02FC +; libsrc/sane.pla: 0462: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0463: STA $02FD + STA $02FD +; libsrc/sane.pla: 0464: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0465: STA $02FE + STA $02FE +; libsrc/sane.pla: 0466: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0467: STA $02FF + STA $02FF +; libsrc/sane.pla: 0468: LDY ESTKL,X + LDY ESTKL,X +; libsrc/sane.pla: 0469: LDA ESTKH,X + LDA ESTKH,X +; libsrc/sane.pla: 0470: INX + INX +; libsrc/sane.pla: 0471: INX + INX +; libsrc/sane.pla: 0472: INX + INX +; libsrc/sane.pla: 0473: STX ESP + STX ESP +; libsrc/sane.pla: 0474: PHP + PHP +; libsrc/sane.pla: 0475: SEI + SEI +; libsrc/sane.pla: 0476: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0477: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0478: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0479: PHA + PHA +; libsrc/sane.pla: 0480: TYA + TYA +; libsrc/sane.pla: 0481: PHA + PHA +; libsrc/sane.pla: 0482: LDA $02FF + LDA $02FF +; libsrc/sane.pla: 0483: PHA + PHA +; libsrc/sane.pla: 0484: LDA $02FE + LDA $02FE +; libsrc/sane.pla: 0485: PHA + PHA +; libsrc/sane.pla: 0486: LDA $02FD + LDA $02FD +; libsrc/sane.pla: 0487: PHA + PHA +; libsrc/sane.pla: 0488: LDA $02FC + LDA $02FC +; libsrc/sane.pla: 0489: PHA + PHA +; libsrc/sane.pla: 0490: LDA $02FB + LDA $02FB +; libsrc/sane.pla: 0491: PHA + PHA +; libsrc/sane.pla: 0492: LDA $02FA + LDA $02FA +; libsrc/sane.pla: 0493: PHA + PHA +; libsrc/sane.pla: 0494: end +; libsrc/sane.pla: 0495: asm fixupXEL3 +_A027 ; fixupXEL3() +; libsrc/sane.pla: 0496: JSR $FFF0 + JSR $FFF0 +; libsrc/sane.pla: 0497: STA $C008 ; BACK TO MAINZP + STA $C008 ; BACK TO MAINZP +; libsrc/sane.pla: 0498: PLP + PLP +; libsrc/sane.pla: 0499: TXA + TXA +; libsrc/sane.pla: 0500: LDX ESP + LDX ESP +; libsrc/sane.pla: 0501: STA ESTKL,X + STA ESTKL,X +; libsrc/sane.pla: 0502: STY ESTKH,X + STY ESTKH,X +; libsrc/sane.pla: 0503: RTS + RTS +; libsrc/sane.pla: 0504: end +; libsrc/sane.pla: 0505: asm zpSaveX#1 // Save Apple /// XDATA +_A028 ; zpSaveX() +; libsrc/sane.pla: 0506: XPAGE = $1600 +XPAGE = $1600 +; libsrc/sane.pla: 0507: STX ESP + STX ESP +; libsrc/sane.pla: 0508: LDX #$00 + LDX #$00 +; libsrc/sane.pla: 0509: LDY #$33 + LDY #$33 +; libsrc/sane.pla: 0510: - LDA XPAGE,Y +- LDA XPAGE,Y +; libsrc/sane.pla: 0511: end +; libsrc/sane.pla: 0512: asm fixupXS +_A029 ; fixupXS() +; libsrc/sane.pla: 0513: STA $FFFF,Y + STA $FFFF,Y +; libsrc/sane.pla: 0514: TXA + TXA +; libsrc/sane.pla: 0515: STA XPAGE,Y + STA XPAGE,Y +; libsrc/sane.pla: 0516: DEY + DEY +; libsrc/sane.pla: 0517: BPL - + BPL - +; libsrc/sane.pla: 0518: LDX ESP + LDX ESP +; libsrc/sane.pla: 0519: end +; libsrc/sane.pla: 0520: asm zpSave#1 +_A030 ; zpSave() +; libsrc/sane.pla: 0521: LDY #$33 + LDY #$33 +; libsrc/sane.pla: 0522: - LDA $00,Y +- LDA $00,Y +; libsrc/sane.pla: 0523: end +; libsrc/sane.pla: 0524: asm fixupZPS +_A031 ; fixupZPS() +; libsrc/sane.pla: 0525: STA $FFFF,Y + STA $FFFF,Y +; libsrc/sane.pla: 0526: DEY + DEY +; libsrc/sane.pla: 0527: BPL - + BPL - +; libsrc/sane.pla: 0528: end +; libsrc/sane.pla: 0529: asm zpNopSave +_A032 ; zpNopSave() +; libsrc/sane.pla: 0530: DEX + DEX +; libsrc/sane.pla: 0531: RTS + RTS +; libsrc/sane.pla: 0532: end +; libsrc/sane.pla: 0533: asm zpRestoreX(passthru)#1 // Restore Apple /// XDATA +_A033 ; zpRestoreX() +; libsrc/sane.pla: 0534: LDY #$33 + LDY #$33 +; libsrc/sane.pla: 0535: end +; libsrc/sane.pla: 0536: asm fixupXR +_A034 ; fixupXR() +; libsrc/sane.pla: 0537: - LDA $FFFF,Y +- LDA $FFFF,Y +; libsrc/sane.pla: 0538: STA XPAGE,Y + STA XPAGE,Y +; libsrc/sane.pla: 0539: DEY + DEY +; libsrc/sane.pla: 0540: BPL - + BPL - +; libsrc/sane.pla: 0541: end +; libsrc/sane.pla: 0542: asm zpRestore(passthru)#1 +_A035 ; zpRestore() +; libsrc/sane.pla: 0543: LDY #$33 + LDY #$33 +; libsrc/sane.pla: 0544: end +; libsrc/sane.pla: 0545: asm fixupZPR +_A036 ; fixupZPR() +; libsrc/sane.pla: 0546: - LDA $FFFF,Y +- LDA $FFFF,Y +; libsrc/sane.pla: 0547: STA $00,Y + STA $00,Y +; libsrc/sane.pla: 0548: DEY + DEY +; libsrc/sane.pla: 0549: BPL - + BPL - +; libsrc/sane.pla: 0550: end +; libsrc/sane.pla: 0551: asm zpNopRestore(passthru)#1 +_A037 ; zpNopRestore() +; libsrc/sane.pla: 0552: RTS + RTS +; libsrc/sane.pla: 0553: end +; libsrc/sane.pla: 0554: asm auxmove(dst, src, len)#0 +_A038 ; auxmove() +; libsrc/sane.pla: 0555: LDA ESTKL+2,X + LDA ESTKL+2,X +; libsrc/sane.pla: 0556: STA $02FA + STA $02FA +; libsrc/sane.pla: 0557: LDA ESTKH+2,X + LDA ESTKH+2,X +; libsrc/sane.pla: 0558: STA $02FB + STA $02FB +; libsrc/sane.pla: 0559: LDA ESTKL+1,X + LDA ESTKL+1,X +; libsrc/sane.pla: 0560: STA $02FC + STA $02FC +; libsrc/sane.pla: 0561: LDA ESTKH+1,X + LDA ESTKH+1,X +; libsrc/sane.pla: 0562: STA $02FD + STA $02FD +; libsrc/sane.pla: 0563: LDA ESTKL,X + LDA ESTKL,X +; libsrc/sane.pla: 0564: STA $02FE + STA $02FE +; libsrc/sane.pla: 0565: CLC + CLC +; libsrc/sane.pla: 0566: BEQ + + BEQ + +; libsrc/sane.pla: 0567: SEC + SEC +; libsrc/sane.pla: 0568: + LDA #$00 ++ LDA #$00 +; libsrc/sane.pla: 0569: TAY + TAY +; libsrc/sane.pla: 0570: ADC ESTKH,X + ADC ESTKH,X +; libsrc/sane.pla: 0571: INX + INX +; libsrc/sane.pla: 0572: INX + INX +; libsrc/sane.pla: 0573: INX + INX +; libsrc/sane.pla: 0574: STX ESP + STX ESP +; libsrc/sane.pla: 0575: TAX + TAX +; libsrc/sane.pla: 0576: PHP + PHP +; libsrc/sane.pla: 0577: SEI + SEI +; libsrc/sane.pla: 0578: STA $C009 ; SELECT ALTZP + STA $C009 ; SELECT ALTZP +; libsrc/sane.pla: 0579: BIT $C083 ; R/W LC BANK2 + BIT $C083 ; R/W LC BANK2 +; libsrc/sane.pla: 0580: BIT $C083 + BIT $C083 +; libsrc/sane.pla: 0581: LDA $02FA ; DST ADDRESS + LDA $02FA ; DST ADDRESS +; libsrc/sane.pla: 0582: STA $42 + STA $42 +; libsrc/sane.pla: 0583: LDA $02FB + LDA $02FB +; libsrc/sane.pla: 0584: STA $43 + STA $43 +; libsrc/sane.pla: 0585: LDA $02FC ; SRC ADDRESS + LDA $02FC ; SRC ADDRESS +; libsrc/sane.pla: 0586: STA $3C + STA $3C +; libsrc/sane.pla: 0587: LDA $02FD + LDA $02FD +; libsrc/sane.pla: 0588: STA $3D + STA $3D +; libsrc/sane.pla: 0589: - LDA ($3C),Y +- LDA ($3C),Y +; libsrc/sane.pla: 0590: STA ($42),Y + STA ($42),Y +; libsrc/sane.pla: 0591: INY + INY +; libsrc/sane.pla: 0592: BNE + + BNE + +; libsrc/sane.pla: 0593: INC $3D + INC $3D +; libsrc/sane.pla: 0594: INC $43 + INC $43 +; libsrc/sane.pla: 0595: + DEC $02FE ++ DEC $02FE +; libsrc/sane.pla: 0596: BNE - + BNE - +; libsrc/sane.pla: 0597: DEX + DEX +; libsrc/sane.pla: 0598: BNE - + BNE - +; libsrc/sane.pla: 0599: STA $C008 ; SELECT MAINZP + STA $C008 ; SELECT MAINZP +; libsrc/sane.pla: 0600: PLP + PLP +; libsrc/sane.pla: 0601: LDX ESP + LDX ESP +; libsrc/sane.pla: 0602: RTS + RTS +; libsrc/sane.pla: 0603: end +; libsrc/sane.pla: 0604: // +; libsrc/sane.pla: 0605: // Default HALT handler +; libsrc/sane.pla: 0606: // +; libsrc/sane.pla: 0607: def fpDefaultHalt(pstatus) +_SUBSEG ; BYTECODE STARTS + ; pstatus -> [0] +_P001 ; fpDefaultHalt(pstatus)() +_C000 ; fpDefaultHalt() +; libsrc/sane.pla: 0608: sane[10](0) // zpRestore + !BYTE $58,$02,$01 ; ENTER 2,1 +; libsrc/sane.pla: 0609: puts("SANE Exception="); puti(pstatus->8); puts("!\n") + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D036+20 +_F011 !WORD _D036+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $0F + !BYTE $53,$41,$4E,$45,$20,$45,$78,$63 + !BYTE $65,$70,$74,$69,$6F,$6E,$3D + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F013 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $21,$0D + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 +; libsrc/sane.pla: 0610: sane[9]() // zpSave +; libsrc/sane.pla: 0611: return pstatus=>4 + !BYTE $6A ; LAW _D036+18 +_F015 !WORD _D036+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/sane.pla: 0612: end +; libsrc/sane.pla: 0613: // +; libsrc/sane.pla: 0614: // Utility test routines +; libsrc/sane.pla: 0615: // +; libsrc/sane.pla: 0616: //byte hexchar[] = '0','1','2','3','4','5','6','7','8','9','0','A','B','C','D','E','F' +; libsrc/sane.pla: 0617: //def prhex(h)#0 +; libsrc/sane.pla: 0618: // putc(hexchar[(h>>4)&$0F]);putc(hexchar[h&$0F]) +; libsrc/sane.pla: 0619: //end +; libsrc/sane.pla: 0620: //def prbyte(h)#0 +; libsrc/sane.pla: 0621: // putc('$'); prhex(h) +; libsrc/sane.pla: 0622: // //call($FDDA, h, 0, 0, 0) +; libsrc/sane.pla: 0623: //end +; libsrc/sane.pla: 0624: //def prword(h)#0 +; libsrc/sane.pla: 0625: // putc('$') +; libsrc/sane.pla: 0626: // prhex(h>>8);prhex(h) +; libsrc/sane.pla: 0627: // //call($F941, h >> 8, h, 0, 0) +; libsrc/sane.pla: 0628: //end +; libsrc/sane.pla: 0629: //def putname(pchr)#0 +; libsrc/sane.pla: 0630: // byte c +; libsrc/sane.pla: 0631: // +; libsrc/sane.pla: 0632: // for c = 0 to 7 +; libsrc/sane.pla: 0633: // putc(pchr->[c]) +; libsrc/sane.pla: 0634: // next +; libsrc/sane.pla: 0635: //end +; libsrc/sane.pla: 0636: //def dumpheader(phdr)#0 +; libsrc/sane.pla: 0637: // byte i +; libsrc/sane.pla: 0638: // +; libsrc/sane.pla: 0639: // puts("Seg Info\n") +; libsrc/sane.pla: 0640: // for i = 0 to 15 +; libsrc/sane.pla: 0641: // if (phdr + i * t_diskinfo)=>codelen +; libsrc/sane.pla: 0642: // prword((phdr + i * t_diskinfo)=>codelen) +; libsrc/sane.pla: 0643: // putc(':') +; libsrc/sane.pla: 0644: // prword((phdr + i * t_diskinfo)=>codeaddr) +; libsrc/sane.pla: 0645: // putc('=') +; libsrc/sane.pla: 0646: // putname(phdr + i * 8 + segname) +; libsrc/sane.pla: 0647: // putc(',') +; libsrc/sane.pla: 0648: // prword((phdr + segkind)=>[i]) +; libsrc/sane.pla: 0649: // putc(',') +; libsrc/sane.pla: 0650: // prword((phdr + textaddr)=>[i]) +; libsrc/sane.pla: 0651: // putc(',') +; libsrc/sane.pla: 0652: // prword((phdr + seginfo)=>[i]) +; libsrc/sane.pla: 0653: // putln +; libsrc/sane.pla: 0654: // fin +; libsrc/sane.pla: 0655: // next +; libsrc/sane.pla: 0656: // putname(phdr + $01F4); putln +; libsrc/sane.pla: 0657: //end +; libsrc/sane.pla: 0658: // +; libsrc/sane.pla: 0659: // Fix-up external references and local relocations +; libsrc/sane.pla: 0660: // +; libsrc/sane.pla: 0661: def fixup(base, list) + ; base -> [0] + ; list -> [2] +_C001 ; fixup() +; libsrc/sane.pla: 0662: word len + ; len -> [4] +; libsrc/sane.pla: 0663: byte listcnt + ; listcnt -> [6] +; libsrc/sane.pla: 0664: +; libsrc/sane.pla: 0665: //puts("Reloc = "); prword(list); putln +; libsrc/sane.pla: 0666: if *list <> $0101 + !BYTE $58,$07,$02 ; ENTER 7,2 +; libsrc/sane.pla: 0667: //puts("Reloc table not found!\n") +; libsrc/sane.pla: 0668: return list + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $2C,$01,$01 ; CW 257 + !BYTE $22 ; BREQ _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/sane.pla: 0669: fin +_B001 +_B002 +; libsrc/sane.pla: 0670: list = list - 10 +; libsrc/sane.pla: 0671: // +; libsrc/sane.pla: 0672: // External reference fixup (only have fp6502 in our case) +; libsrc/sane.pla: 0673: // +; libsrc/sane.pla: 0674: len = *list +; libsrc/sane.pla: 0675: list = list - 2 +; libsrc/sane.pla: 0676: //puts("Extern list len = "); prword(len); putln; getc +; libsrc/sane.pla: 0677: while len + !BYTE $66,$02 ; LLW [2] + !BYTE $3A,$0A ; SUBI 10 + !BYTE $6E,$02 ; DLW [2] + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B005 + !WORD _B005-* +_B003 +; libsrc/sane.pla: 0678: //puts(" *"); prword(list - *list); putln +; libsrc/sane.pla: 0679: *(list - *list) = fp6502 +; libsrc/sane.pla: 0680: list = list - 2 +; libsrc/sane.pla: 0681: len-- + !BYTE $6A ; LAW _D037+0 +_F016 !WORD _D037+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8E ; DECR +; libsrc/sane.pla: 0682: loop + !BYTE $76,$04 ; SLW [4] +_B005 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B003 + !WORD _B003-* +_B004 +; libsrc/sane.pla: 0683: // +; libsrc/sane.pla: 0684: // Internal relocation +; libsrc/sane.pla: 0685: // +; libsrc/sane.pla: 0686: len = *list +; libsrc/sane.pla: 0687: list = list - 2 +; libsrc/sane.pla: 0688: //puts("Reloc list len = "); prword(len); putln; getc +; libsrc/sane.pla: 0689: while len + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B006 +; libsrc/sane.pla: 0690: //puts(" *"); prword(list - *list); putln +; libsrc/sane.pla: 0691: *(list - *list) = *(list - *list) + base +; libsrc/sane.pla: 0692: list = list - 2 +; libsrc/sane.pla: 0693: len-- + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $62 ; LW + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8E ; DECR +; libsrc/sane.pla: 0694: loop + !BYTE $76,$04 ; SLW [4] +_B008 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B006 + !WORD _B006-* +_B007 +; libsrc/sane.pla: 0695: return list + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$07 ; LEAVE 7 +; libsrc/sane.pla: 0696: end +; libsrc/sane.pla: 0697: // +; libsrc/sane.pla: 0698: // Linker Information that we don't need +; libsrc/sane.pla: 0699: // +; libsrc/sane.pla: 0700: //def resolve(base, pli) +; libsrc/sane.pla: 0701: // byte fixups +; libsrc/sane.pla: 0702: // word basend +; libsrc/sane.pla: 0703: // +; libsrc/sane.pla: 0704: // puts("LinkInfo "); prword(pli); putc(':'); putln +; libsrc/sane.pla: 0705: // basend = preloc +; libsrc/sane.pla: 0706: // while ^pli +; libsrc/sane.pla: 0707: // putname(pli); putc(':') +; libsrc/sane.pla: 0708: // prword(pli=>8); putc(' ') +; libsrc/sane.pla: 0709: // prword(pli=>10); putc(' ') +; libsrc/sane.pla: 0710: // prword(pli=>12); putc(' ') +; libsrc/sane.pla: 0711: // prword(pli=>14); putln +; libsrc/sane.pla: 0712: // fixups = 0 +; libsrc/sane.pla: 0713: // if pli=>8 == $0002 +; libsrc/sane.pla: 0714: // fixups = pli=>12 +; libsrc/sane.pla: 0715: // fin +; libsrc/sane.pla: 0716: // pli = pli + 16 +; libsrc/sane.pla: 0717: // while fixups +; libsrc/sane.pla: 0718: // *(base + *pli) = fp6502 +; libsrc/sane.pla: 0719: // pli = pli + 2 +; libsrc/sane.pla: 0720: // fixups-- +; libsrc/sane.pla: 0721: // loop +; libsrc/sane.pla: 0722: // loop +; libsrc/sane.pla: 0723: //end +; libsrc/sane.pla: 0724: // +; libsrc/sane.pla: 0725: // Load Pascal CODE file +; libsrc/sane.pla: 0726: // +; libsrc/sane.pla: 0727: def loadcode(codefile) + ; codefile -> [0] +_C002 ; loadcode() +; libsrc/sane.pla: 0728: byte ref + ; ref -> [2] +; libsrc/sane.pla: 0729: word pcode, seglen + ; pcode -> [3] + ; seglen -> [5] +; libsrc/sane.pla: 0730: byte filepath[64] + ; filepath -> [7] +; libsrc/sane.pla: 0731: +; libsrc/sane.pla: 0732: //puts(codefile); puts(":\n") +; libsrc/sane.pla: 0733: pcode = 0 + !BYTE $58,$47,$01 ; ENTER 71,1 +; libsrc/sane.pla: 0734: ref = fileio:open(strcat(strcpy(@filepath, cmdsys:syspath), codefile)) +; libsrc/sane.pla: 0735: //puts("ref = "); prbyte(ref); puts(" perr = "); prbyte(perr); putln +; libsrc/sane.pla: 0736: if ref +; libsrc/sane.pla: 0737: pcode = heapalloc(512) +; libsrc/sane.pla: 0738: fileio:read(ref, pcode, 512) +; libsrc/sane.pla: 0739: //puts("Read header bytes: "); puti(seglen) +; libsrc/sane.pla: 0740: //if seglen == 0; puts(" perr = "); prbyte(perr); fin +; libsrc/sane.pla: 0741: //getc; putln +; libsrc/sane.pla: 0742: //dumpheader(pcode) +; libsrc/sane.pla: 0743: //putname(pcode + segname + 8); putc('='); prword(pcode); putln +; libsrc/sane.pla: 0744: heaprelease(pcode + (pcode + t_diskinfo)=>codeaddr) // REserve heap to end of buffer +; libsrc/sane.pla: 0745: seglen = fileio:read(ref, pcode, (pcode + t_diskinfo)=>codeaddr) +; libsrc/sane.pla: 0746: //puts("Read segment bytes: "); puti(seglen); putln +; libsrc/sane.pla: 0747: fileio:close(ref) +; libsrc/sane.pla: 0748: if !fp6502 and (MACHID & $F0 == $B0) // 128K Apple //e or //c +; libsrc/sane.pla: 0749: seglen = fixup(AUXADDR, pcode + seglen - 2) - pcode +; libsrc/sane.pla: 0750: auxmove(AUXADDR, pcode, seglen) +; libsrc/sane.pla: 0751: heaprelease(pcode) +; libsrc/sane.pla: 0752: pcode = AUXADDR +; libsrc/sane.pla: 0753: else + !BYTE $00 ; CN 0 + !BYTE $76,$03 ; SLW [3] + !BYTE $28,$07 ; LLA [7] + !BYTE $6A ; LAW _X000+2 +_F017 !WORD 0+2 + !BYTE $54 ; CALL _X019 +_F018 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X020 +_F019 !WORD 0 + !BYTE $6A ; LAW _X028+14 +_F020 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$02 ; DLB [2] + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X014 +_F021 !WORD 0 + !BYTE $76,$03 ; SLW [3] + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X028+18 +_F022 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$03 ; LLW [3] + !BYTE $34 ; DUP + !BYTE $38,$04 ; ADDI 4 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X015 +_F023 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $34 ; DUP + !BYTE $38,$04 ; ADDI 4 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _X028+18 +_F024 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $76,$05 ; SLW [5] + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X028+16 +_F025 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D037+0 +_F026 !WORD _D037+0 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B011 + !WORD _B011-* + !BYTE $68 ; LAB _X001+0 +_F027 !WORD 0+0 + !BYTE $3C,$F0 ; ANDI 240 + !BYTE $2A,$B0 ; CB 176 + !BYTE $40 ; ISEQ +_B011 + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2C,$00,$E0 ; CW 57344 + !BYTE $66,$03 ; LLW [3] + !BYTE $B2,$05 ; ADDLW [5] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $54 ; CALL _C001 +_F028 !WORD _C001 + !BYTE $66,$03 ; LLW [3] + !BYTE $84 ; SUB + !BYTE $76,$05 ; SLW [5] + !BYTE $2C,$00,$E0 ; CW 57344 + !BYTE $66,$03 ; LLW [3] + !BYTE $66,$05 ; LLW [5] + !BYTE $54 ; CALL _A038 +_F029 !WORD _A038 + !BYTE $66,$03 ; LLW [3] + !BYTE $54 ; CALL _X015 +_F030 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2C,$00,$E0 ; CW 57344 + !BYTE $76,$03 ; SLW [3] + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B012 +; libsrc/sane.pla: 0754: heaprelease(fixup(pcode, pcode + seglen - 2)) // Set heap to beginning of relocation list +; libsrc/sane.pla: 0755: fin + !BYTE $66,$03 ; LLW [3] + !BYTE $34 ; DUP + !BYTE $B2,$05 ; ADDLW [5] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $54 ; CALL _C001 +_F031 !WORD _C001 + !BYTE $54 ; CALL _X015 +_F032 !WORD 0 + !BYTE $30 ; DROP +_B013 +; libsrc/sane.pla: 0756: fin +_B009 +_B010 +; libsrc/sane.pla: 0757: return pcode + !BYTE $66,$03 ; LLW [3] + !BYTE $5A,$47 ; LEAVE 71 +; libsrc/sane.pla: 0758: end +; libsrc/sane.pla: 0759: // +; libsrc/sane.pla: 0760: // Load ELEMS6502 library +; libsrc/sane.pla: 0761: // +; libsrc/sane.pla: 0762: def loadElems +_C003 ; loadElems() +; libsrc/sane.pla: 0763: word elems + ; elems -> [0] +; libsrc/sane.pla: 0764: +; libsrc/sane.pla: 0765: elems = loadcode("ELEMS.CODE") + !BYTE $58,$02,$00 ; ENTER 2,0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $45,$4C,$45,$4D,$53,$2E,$43,$4F + !BYTE $44,$45 + !BYTE $54 ; CALL _C002 +_F033 !WORD _C002 + !BYTE $76,$00 ; SLW [0] +; libsrc/sane.pla: 0766: if !elems +; libsrc/sane.pla: 0767: puts("ELEMS library not found.\n") + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B014 + !WORD _B014-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$4C,$45,$4D,$53,$20,$6C,$69 + !BYTE $62,$72,$61,$72,$79,$20,$6E,$6F + !BYTE $74,$20,$66,$6F,$75,$6E,$64,$2E + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F034 !WORD 0 +; libsrc/sane.pla: 0768: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/sane.pla: 0769: fin +_B014 +_B015 +; libsrc/sane.pla: 0770: if fp6502 == AUXADDR +; libsrc/sane.pla: 0771: (@fixupXEL1)=>1 = elems +; libsrc/sane.pla: 0772: (@fixupXEL2)=>1 = elems +; libsrc/sane.pla: 0773: (@fixupXEL3)=>1 = elems +; libsrc/sane.pla: 0774: sane[6] = @xelemsOp1 +; libsrc/sane.pla: 0775: sane[7] = @xelemsOp2 +; libsrc/sane.pla: 0776: sane[8] = @xelemsOp3 +; libsrc/sane.pla: 0777: else + !BYTE $6A ; LAW _D037+0 +_F035 !WORD _D037+0 + !BYTE $2C,$00,$E0 ; CW 57344 + !BYTE $24 ; BRNE _B016 + !WORD _B016-* + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A023+1 +_F036 !WORD _A023+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A025+1 +_F037 !WORD _A025+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A027+1 +_F038 !WORD _A027+1 + !BYTE $26 ; LA _A022+0 +_F039 !WORD _A022+0 + !BYTE $7A ; SAW _D036+12 +_F040 !WORD _D036+12 + !BYTE $26 ; LA _A024+0 +_F041 !WORD _A024+0 + !BYTE $7A ; SAW _D036+14 +_F042 !WORD _D036+14 + !BYTE $26 ; LA _A026+0 +_F043 !WORD _A026+0 + !BYTE $7A ; SAW _D036+16 +_F044 !WORD _D036+16 + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B016 +; libsrc/sane.pla: 0778: (@fixupEL1)=>1 = elems +; libsrc/sane.pla: 0779: (@fixupEL2)=>1 = elems +; libsrc/sane.pla: 0780: (@fixupEL3)=>1 = elems +; libsrc/sane.pla: 0781: sane[6] = @elemsOp1 +; libsrc/sane.pla: 0782: sane[7] = @elemsOp2 +; libsrc/sane.pla: 0783: sane[8] = @elemsOp3 +; libsrc/sane.pla: 0784: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A017+1 +_F045 !WORD _A017+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A019+1 +_F046 !WORD _A019+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A021+1 +_F047 !WORD _A021+1 + !BYTE $26 ; LA _A016+0 +_F048 !WORD _A016+0 + !BYTE $7A ; SAW _D036+12 +_F049 !WORD _D036+12 + !BYTE $26 ; LA _A018+0 +_F050 !WORD _A018+0 + !BYTE $7A ; SAW _D036+14 +_F051 !WORD _D036+14 + !BYTE $26 ; LA _A020+0 +_F052 !WORD _A020+0 + !BYTE $7A ; SAW _D036+16 +_F053 !WORD _D036+16 +_B017 +; libsrc/sane.pla: 0785: return 1 + !BYTE $02 ; CN 1 + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/sane.pla: 0786: end +; libsrc/sane.pla: 0787: // +; libsrc/sane.pla: 0788: // Don't load ELEMS6502 until referenced +; libsrc/sane.pla: 0789: // +; libsrc/sane.pla: 0790: def elemsLoad1(op, dst)#1 + ; op -> [0] + ; dst -> [2] +_C004 ; elemsLoad1() +; libsrc/sane.pla: 0791: if loadElems + !BYTE $58,$04,$02 ; ENTER 4,2 +; libsrc/sane.pla: 0792: return sane[6](op, dst) + !BYTE $54 ; CALL _C003 +_F054 !WORD _C003 + !BYTE $4C ; BRFLS _B018 + !WORD _B018-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D036+12 +_F055 !WORD _D036+12 + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/sane.pla: 0793: fin +_B018 +_B019 +; libsrc/sane.pla: 0794: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/sane.pla: 0795: end +; libsrc/sane.pla: 0796: def elemsLoad2(op, dst, src)#1 + ; op -> [0] + ; dst -> [2] + ; src -> [4] +_C005 ; elemsLoad2() +; libsrc/sane.pla: 0797: if loadElems + !BYTE $58,$06,$03 ; ENTER 6,3 +; libsrc/sane.pla: 0798: return sane[7](op, dst, src) + !BYTE $54 ; CALL _C003 +_F056 !WORD _C003 + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D036+14 +_F057 !WORD _D036+14 + !BYTE $56 ; ICAL + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/sane.pla: 0799: fin +_B020 +_B021 +; libsrc/sane.pla: 0800: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/sane.pla: 0801: end +; libsrc/sane.pla: 0802: def elemsLoad3(op, dst, src, src2)#1 + ; op -> [0] + ; dst -> [2] + ; src -> [4] + ; src2 -> [6] +_C006 ; elemsLoad3() +; libsrc/sane.pla: 0803: if loadElems + !BYTE $58,$08,$04 ; ENTER 8,4 +; libsrc/sane.pla: 0804: return sane[8](op, dst, src, src2) + !BYTE $54 ; CALL _C003 +_F058 !WORD _C003 + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _D036+16 +_F059 !WORD _D036+16 + !BYTE $56 ; ICAL + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/sane.pla: 0805: fin +_B022 +_B023 +; libsrc/sane.pla: 0806: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/sane.pla: 0807: end +; libsrc/sane.pla: 0808: // +; libsrc/sane.pla: 0809: // Load SANE library and fixup function pointers +; libsrc/sane.pla: 0810: // +; libsrc/sane.pla: 0811: def fpInit() +_P000 ; fpInit()() +_C007 ; fpInit() +; libsrc/sane.pla: 0812: word fpzpsave + ; fpzpsave -> [0] +; libsrc/sane.pla: 0813: +; libsrc/sane.pla: 0814: if !fp6502 + !BYTE $58,$02,$00 ; ENTER 2,0 +; libsrc/sane.pla: 0815: fp6502 = loadcode("FP6502.CODE") + !BYTE $6A ; LAW _D037+0 +_F060 !WORD _D037+0 + !BYTE $4E ; BRTRU _B024 + !WORD _B024-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $46,$50,$36,$35,$30,$32,$2E,$43 + !BYTE $4F,$44,$45 + !BYTE $54 ; CALL _C002 +_F061 !WORD _C002 + !BYTE $7A ; SAW _D037+0 +_F062 !WORD _D037+0 +; libsrc/sane.pla: 0816: if !fp6502 +; libsrc/sane.pla: 0817: puts("SANE library not found.\n") + !BYTE $6A ; LAW _D037+0 +_F063 !WORD _D037+0 + !BYTE $4E ; BRTRU _B026 + !WORD _B026-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $53,$41,$4E,$45,$20,$6C,$69,$62 + !BYTE $72,$61,$72,$79,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F064 !WORD 0 +; libsrc/sane.pla: 0818: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/sane.pla: 0819: fin +_B026 +_B027 +; libsrc/sane.pla: 0820: if fp6502 == AUXADDR +; libsrc/sane.pla: 0821: // +; libsrc/sane.pla: 0822: // Fixup AUX calls in interface routines +; libsrc/sane.pla: 0823: // +; libsrc/sane.pla: 0824: sane[2] = @xfpOp0 +; libsrc/sane.pla: 0825: sane[3] = @xfpOp1 +; libsrc/sane.pla: 0826: sane[4] = @xfpOp2 +; libsrc/sane.pla: 0827: sane[5] = @xfpOp3 +; libsrc/sane.pla: 0828: sane[9] = @zpNopSave +; libsrc/sane.pla: 0829: sane[10] = @zpNopRestore +; libsrc/sane.pla: 0830: // +; libsrc/sane.pla: 0831: // Install AUX HALT handler +; libsrc/sane.pla: 0832: // +; libsrc/sane.pla: 0833: xfpOp1($0005, @xfpHalt) +; libsrc/sane.pla: 0834: else + !BYTE $6A ; LAW _D037+0 +_F065 !WORD _D037+0 + !BYTE $2C,$00,$E0 ; CW 57344 + !BYTE $24 ; BRNE _B028 + !WORD _B028-* + !BYTE $26 ; LA _A012+0 +_F066 !WORD _A012+0 + !BYTE $7A ; SAW _D036+4 +_F067 !WORD _D036+4 + !BYTE $26 ; LA _A013+0 +_F068 !WORD _A013+0 + !BYTE $7A ; SAW _D036+6 +_F069 !WORD _D036+6 + !BYTE $26 ; LA _A014+0 +_F070 !WORD _A014+0 + !BYTE $7A ; SAW _D036+8 +_F071 !WORD _D036+8 + !BYTE $26 ; LA _A015+0 +_F072 !WORD _A015+0 + !BYTE $7A ; SAW _D036+10 +_F073 !WORD _D036+10 + !BYTE $26 ; LA _A032+0 +_F074 !WORD _A032+0 + !BYTE $7A ; SAW _D036+18 +_F075 !WORD _D036+18 + !BYTE $26 ; LA _A037+0 +_F076 !WORD _A037+0 + !BYTE $7A ; SAW _D036+20 +_F077 !WORD _D036+20 + !BYTE $0A ; CN 5 + !BYTE $26 ; LA _A001+0 +_F078 !WORD _A001+0 + !BYTE $54 ; CALL _A013 +_F079 !WORD _A013 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 +; libsrc/sane.pla: 0835: // +; libsrc/sane.pla: 0836: // Fixup MAIN calls in interface routines +; libsrc/sane.pla: 0837: // +; libsrc/sane.pla: 0838: if MACHID & $F0 == $F0 // Apple /// +; libsrc/sane.pla: 0839: fpzpsave = heapalloc($0034*2) +; libsrc/sane.pla: 0840: (@fixupXS)=>1 = fpzpsave+$34 +; libsrc/sane.pla: 0841: (@fixupXR)=>1 = fpzpsave+$34 +; libsrc/sane.pla: 0842: zpSaveX // Clear XBYTEs +; libsrc/sane.pla: 0843: heaprelease(fpzpsave) +; libsrc/sane.pla: 0844: sane[9] = @zpNopSave//zpSaveX +; libsrc/sane.pla: 0845: sane[10] = @zpNopRestore//zpRestoreX +; libsrc/sane.pla: 0846: else // Apple II + !BYTE $68 ; LAB _X001+0 +_F080 !WORD 0+0 + !BYTE $3C,$F0 ; ANDI 240 + !BYTE $2A,$F0 ; CB 240 + !BYTE $24 ; BRNE _B030 + !WORD _B030-* + !BYTE $2A,$68 ; CB 104 + !BYTE $54 ; CALL _X014 +_F081 !WORD 0 + !BYTE $6E,$00 ; DLW [0] + !BYTE $38,$34 ; ADDI 52 + !BYTE $7A ; SAW _A029+1 +_F082 !WORD _A029+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$34 ; ADDI 52 + !BYTE $7A ; SAW _A034+1 +_F083 !WORD _A034+1 + !BYTE $54 ; CALL _A028 +_F084 !WORD _A028 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X015 +_F085 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _A032+0 +_F086 !WORD _A032+0 + !BYTE $7A ; SAW _D036+18 +_F087 !WORD _D036+18 + !BYTE $26 ; LA _A037+0 +_F088 !WORD _A037+0 + !BYTE $7A ; SAW _D036+20 +_F089 !WORD _D036+20 + !BYTE $50 ; BRNCH _B031 + !WORD _B031-* +_B030 +; libsrc/sane.pla: 0847: fpzpsave = heapalloc($0034) +; libsrc/sane.pla: 0848: sane[9] = @zpSave +; libsrc/sane.pla: 0849: sane[10] = @zpRestore +; libsrc/sane.pla: 0850: fin + !BYTE $2A,$34 ; CB 52 + !BYTE $54 ; CALL _X014 +_F090 !WORD 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $26 ; LA _A030+0 +_F091 !WORD _A030+0 + !BYTE $7A ; SAW _D036+18 +_F092 !WORD _D036+18 + !BYTE $26 ; LA _A035+0 +_F093 !WORD _A035+0 + !BYTE $7A ; SAW _D036+20 +_F094 !WORD _D036+20 +_B031 +; libsrc/sane.pla: 0851: (@fixupFP0)=>1 = fp6502 +; libsrc/sane.pla: 0852: (@fixupFP1)=>1 = fp6502 +; libsrc/sane.pla: 0853: (@fixupFP2)=>1 = fp6502 +; libsrc/sane.pla: 0854: (@fixupFP3)=>1 = fp6502 +; libsrc/sane.pla: 0855: (@fixupZPS)=>1 = fpzpsave +; libsrc/sane.pla: 0856: (@fixupZPR)=>1 = fpzpsave +; libsrc/sane.pla: 0857: sane[2] = @fpOp0 +; libsrc/sane.pla: 0858: sane[3] = @fpOp1 +; libsrc/sane.pla: 0859: sane[4] = @fpOp2 +; libsrc/sane.pla: 0860: sane[5] = @fpOp3 +; libsrc/sane.pla: 0861: // +; libsrc/sane.pla: 0862: // Install MAIN HALT handler +; libsrc/sane.pla: 0863: // +; libsrc/sane.pla: 0864: sane[9]() +; libsrc/sane.pla: 0865: sane[10](fpOp1($0005, @fpHalt)) +; libsrc/sane.pla: 0866: fin + !BYTE $6A ; LAW _D037+0 +_F095 !WORD _D037+0 + !BYTE $7A ; SAW _A005+1 +_F096 !WORD _A005+1 + !BYTE $6A ; LAW _D037+0 +_F097 !WORD _D037+0 + !BYTE $7A ; SAW _A007+1 +_F098 !WORD _A007+1 + !BYTE $6A ; LAW _D037+0 +_F099 !WORD _D037+0 + !BYTE $7A ; SAW _A009+1 +_F100 !WORD _A009+1 + !BYTE $6A ; LAW _D037+0 +_F101 !WORD _D037+0 + !BYTE $7A ; SAW _A011+1 +_F102 !WORD _A011+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A031+1 +_F103 !WORD _A031+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _A036+1 +_F104 !WORD _A036+1 + !BYTE $26 ; LA _A004+0 +_F105 !WORD _A004+0 + !BYTE $7A ; SAW _D036+4 +_F106 !WORD _D036+4 + !BYTE $26 ; LA _A006+0 +_F107 !WORD _A006+0 + !BYTE $7A ; SAW _D036+6 +_F108 !WORD _D036+6 + !BYTE $26 ; LA _A008+0 +_F109 !WORD _A008+0 + !BYTE $7A ; SAW _D036+8 +_F110 !WORD _D036+8 + !BYTE $26 ; LA _A010+0 +_F111 !WORD _A010+0 + !BYTE $7A ; SAW _D036+10 +_F112 !WORD _D036+10 + !BYTE $6A ; LAW _D036+18 +_F113 !WORD _D036+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $0A ; CN 5 + !BYTE $26 ; LA _A002+0 +_F114 !WORD _A002+0 + !BYTE $54 ; CALL _A006 +_F115 !WORD _A006 + !BYTE $6A ; LAW _D036+20 +_F116 !WORD _D036+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B029 +; libsrc/sane.pla: 0867: sane[6] = @elemsLoad1 +; libsrc/sane.pla: 0868: sane[7] = @elemsLoad2 +; libsrc/sane.pla: 0869: sane[8] = @elemsLoad3 +; libsrc/sane.pla: 0870: fin + !BYTE $26 ; LA _C004+0 +_F117 !WORD _C004+0 + !BYTE $7A ; SAW _D036+12 +_F118 !WORD _D036+12 + !BYTE $26 ; LA _C005+0 +_F119 !WORD _C005+0 + !BYTE $7A ; SAW _D036+14 +_F120 !WORD _D036+14 + !BYTE $26 ; LA _C006+0 +_F121 !WORD _C006+0 + !BYTE $7A ; SAW _D036+16 +_F122 !WORD _D036+16 +_B024 +_B025 +; libsrc/sane.pla: 0871: (@fixupHLT)=>1 = @sane+2 +; libsrc/sane.pla: 0872: sane[1] = @fpDefaultHalt +; libsrc/sane.pla: 0873: // +; libsrc/sane.pla: 0874: // Reset environment word +; libsrc/sane.pla: 0875: // +; libsrc/sane.pla: 0876: sane[9]() +; libsrc/sane.pla: 0877: sane[3]($0001, $0000) +; libsrc/sane.pla: 0878: return sane[10](0) + !BYTE $26 ; LA _D036+2 +_F123 !WORD _D036+2 + !BYTE $7A ; SAW _A003+1 +_F124 !WORD _A003+1 + !BYTE $26 ; LA _C000+0 +_F125 !WORD _C000+0 + !BYTE $7A ; SAW _D036+2 +_F126 !WORD _D036+2 + !BYTE $6A ; LAW _D036+18 +_F127 !WORD _D036+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D036+6 +_F128 !WORD _D036+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D036+20 +_F129 !WORD _D036+20 + !BYTE $56 ; ICAL + !BYTE $5A,$02 ; LEAVE 2 +; libsrc/sane.pla: 0879: end +; libsrc/sane.pla: 0880: // +; libsrc/sane.pla: 0881: // Uninitialized placeholders of API +; libsrc/sane.pla: 0882: // +; libsrc/sane.pla: 0883: def uninit +_C008 ; uninit() +; libsrc/sane.pla: 0884: puts("SANE not initialized\n") + !BYTE $2E ; CS + !BYTE $15 + !BYTE $53,$41,$4E,$45,$20,$6E,$6F,$74 + !BYTE $20,$69,$6E,$69,$74,$69,$61,$6C + !BYTE $69,$7A,$65,$64,$0D + !BYTE $54 ; CALL _X004 +_F130 !WORD 0 +; libsrc/sane.pla: 0885: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; libsrc/sane.pla: 0886: end +; libsrc/sane.pla: 0887: def uninit0() +_P002 ; uninit0()() +_C009 ; uninit0() +; libsrc/sane.pla: 0888: return uninit + !BYTE $54 ; CALL _C008 +_F131 !WORD _C008 + !BYTE $5C ; RET +; libsrc/sane.pla: 0889: end +; libsrc/sane.pla: 0890: def uninit1(op, dst) + ; op -> [0] + ; dst -> [2] +_P003 ; uninit1(op, dst)() +_C010 ; uninit1() +; libsrc/sane.pla: 0891: return uninit + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $54 ; CALL _C008 +_F132 !WORD _C008 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/sane.pla: 0892: end +; libsrc/sane.pla: 0893: def uninit2(op, dst, src) + ; op -> [0] + ; dst -> [2] + ; src -> [4] +_P004 ; uninit2(op, dst, src)() +_C011 ; uninit2() +; libsrc/sane.pla: 0894: return uninit + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $54 ; CALL _C008 +_F133 !WORD _C008 + !BYTE $5A,$06 ; LEAVE 6 +; libsrc/sane.pla: 0895: end +; libsrc/sane.pla: 0896: def uninit3(op, dst, src, src2) + ; op -> [0] + ; dst -> [2] + ; src -> [4] + ; src2 -> [6] +_P005 ; uninit3(op, dst, src, src2)() +_C012 ; uninit3() +; libsrc/sane.pla: 0897: return uninit + !BYTE $58,$08,$04 ; ENTER 8,4 + !BYTE $54 ; CALL _C008 +_F134 !WORD _C008 + !BYTE $5A,$08 ; LEAVE 8 +; libsrc/sane.pla: 0898: end +; libsrc/sane.pla: 0899: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 14 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/makefile.hgr b/src/makefile.hgr new file mode 100755 index 0000000..d5d269e --- /dev/null +++ b/src/makefile.hgr @@ -0,0 +1,526 @@ +.SUFFIXES = +AFLAGS = -o $@ +PLVM = plvm +PLVMZP_APL = vmsrc/apple/plvmzp.inc +PLVM01 = rel/apple/A1PLASMA\#060280 +PLVM02 = rel/apple/PLASMA.SYSTEM\#FF2000 +PLVMJIT = rel/apple/PLVM.128\#FF2000 +PLVM802 = rel/apple/PLVM16\#FF2000 +PLVM03 = rel/apple/SOS.INTERP\#050000 +PLVMJIT03 = rel/apple/SOS.INTERPJIT\#050000 +SOSCMD = rel/apple/SOS.CMD\#FE1000 +SOSCMDJIT = rel/apple/SOS.CMDJIT\#FE1000 +CMD = rel/apple/CMD\#061000 +CMDJIT = rel/apple/CMD128\#061000 +PLVMZP_C64 = vmsrc/c64/plvmzp.inc +PLVMC64 = rel/c64/PLASMA +ED = rel/ED\#FE1000 +ZIP = rel/apple/ZIP\#FE1000 +JIT = rel/apple/JIT\#FE1000 +JIT16 = rel/apple/JIT16\#FE1000 +JITUNE = rel/apple/JITUNE\#FE1000 +SOS = rel/apple/SOS\#FE1000 +ROD = rel/apple/ROD\#FE1000 +COPY = rel/apple/COPY\#FE1000 +DEL = rel/apple/DEL\#FE1000 +REN = rel/apple/REN\#FE1000 +CAT = rel/apple/CAT\#FE1000 +NEWDIR = rel/apple/NEWDIR\#FE1000 +TYPE = rel/apple/TYPE\#FE1000 +SIEVE = rel/SIEVE\#FE1000 +PRIMEGAP = rel/PRIMEGAP\#FE1000 +ARGS = rel/ARGS\#FE1000 +MATCHFILES = rel/apple/MATCHFILES\#FE1000 +SPIPORT = rel/apple/SPIPORT\#FE1000 +SDFAT = rel/apple/SDFAT\#FE1000 +FATCAT = rel/apple/FATCAT\#FE1000 +FATGET = rel/apple/FATGET\#FE1000 +FATPUT = rel/apple/FATPUT\#FE1000 +FATWDSK = rel/apple/FATWRITEDSK\#FE1000 +FATRDSK = rel/apple/FATREADDSK\#FE1000 +FILEIO_APL = rel/apple/FILEIO\#FE1000 +CONIO_APL = rel/apple/CONIO\#FE1000 +INT32 = rel/INT32\#FE1000 +INT32TEST = rel/INT32TEST\#FE1000 +SANE = rel/SANE\#FE1000 +FPSTR = rel/FPSTR\#FE1000 +FPU = rel/FPU\#FE1000 +SNDSEQ = rel/apple/SNDSEQ\#FE1000 +PLAYSEQ = rel/apple/PLAYSEQ\#FE1000 +SANITY = rel/SANITY\#FE1000 +RPNCALC = rel/RPNCALC\#FE1000 +LZ4 = rel/LZ4\#FE1000 +LZ4CAT = rel/LZ4CAT\#FE1000 +MOUSE = rel/apple/MOUSE\#FE1000 +UTHERNET2 = rel/apple/UTHERNET2\#FE1000 +UTHERNET = rel/apple/UTHERNET\#FE1000 +ETHERIP = rel/ETHERIP\#FE1000 +INET = rel/INET\#FE1000 +DHCP = rel/DHCP\#FE1000 +HTTPD = rel/HTTPD\#FE1000 +TFTPD = rel/TFTPD\#FE1000 +HGRLIB = rel/apple/HGRLIB\#FE1000 +GRLIB = rel/apple/GRLIB\#FE1000 +DGRLIB = rel/apple/DGRLIB\#FE1000 +HGRSPRITE = rel/apple/HGRSPRITE\#FE1000 +HGRTILE = rel/apple/HGRTILE\#FE1000 +HGRFONT = rel/apple/HGRFONT\#FE1000 +LINES = rel/LINES\#FE1000 +GRAFIX = rel/apple/GRAFIX\#FE1000 +SFM = rel/apple/SFM\#FE1000 +SFMSPRT = rel/apple/SFMSPRT\#FE1000 +GFXDEMO = rel/apple/GFXDEMO\#FE1000 +JOYBUZZ = rel/apple/JOYBUZZ\#FE1000 +PORTIO = rel/apple/PORTIO\#FE1000 +ROGUE = rel/ROGUE\#FE1000 +ROGUEMAP = rel/ROGUEMAP\#FE1000 +ROGUECOMBAT= rel/ROGUECOMBAT\#FE1000 +MON = rel/apple/MON\#FE1000 +TILETEST = rel/apple/TILETEST\#FE1000 +HGRTEST = rel/apple/HGRTEST\#FE1000 +GRTEST = rel/apple/GRTEST\#FE1000 +DGRTEST = rel/apple/DGRTEST\#FE1000 +MEMMGR = rel/MEMMGR\#FE1000 +MEMTEST = rel/MEMTEST\#FE1000 +FIBERTEST = rel/FIBERTEST\#FE1000 +FIBER = rel/FIBER\#FE1000 +LONGJMP = rel/LONGJMP\#FE1000 +HELLO = HELLO\#FE1000 +TEST = TEST\#FE1000 +TESTLIB = TESTLIB\#FE1000 +PLASM = plasm +PLASMAPLASM = rel/PLASM\#FE1000 +CODEOPT = rel/CODEOPT\#FE1000 +INCS = toolsrc/plasm.h toolsrc/tokens.h toolsrc/symbols.h toolsrc/lex.h toolsrc/parse.h toolsrc/codegen.h +OBJS = toolsrc/plasm.c toolsrc/parse.c toolsrc/lex.c toolsrc/codegen.c +# +# Image filetypes for Virtual ][ +# +PLATYPE = .\$$ED +BINTYPE = .BIN +SYSTYPE = .SYS +TXTTYPE = .TXT +# +# Image filetypes for CiderPress +# +#RELTYPE = \#FE1000 +#INTERPTYPE = \#050000 +#BINTYPE = \#060000 +#SYSTYPE = \#FF2000 +#TXTTYPE = \#040000 + +apple: $(PLVMZP_APL) $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM802) $(PLVM03) $(PLVMJIT03) $(CMD) $(CMDJIT) $(JIT) $(JIT16) $(JITUNE) $(SOSCMD) $(SOSCMDJIT) $(PLASMAPLASM) $(CODEOPT) $(ZIP) $(MATCHFILES) $(ARGS) $(MEMMGR) $(MEMTEST) $(FIBER) $(FIBERTEST) $(LONGJMP) $(ED) $(MON) $(COPY) $(DEL) $(REN) $(CAT) $(NEWDIR) $(TYPE) $(SOS) $(ROD) $(SIEVE) $(PRIMEGAP) $(MOUSE) $(UTHERNET2) $(UTHERNET) $(ETHERIP) $(INET) $(DHCP) $(HTTPD) $(TFTPD) $(ROGUE) $(ROGUEMAP) $(ROGUECOMBAT) $(SFM) $(SFMSPRT) $(GRAFIX) $(GFXDEMO) $(LINES) $(HGRTILE) $(HGRFONT) $(HGRSPRITE) $(HGRLIB) $(TILETEST) $(HGRTEST) $(GRLIB) $(DGRLIB) $(GRTEST) $(DGRTEST) $(HGRTEST) $(FILEIO_APL) $(CONIO_APL) $(JOYBUZZ) $(PORTIO) $(SPIPORT) $(SDFAT) $(FATCAT) $(FATGET) $(FATPUT) $(FATWDSK) $(FATRDSK) $(INT32) $(INT32TEST) $(SANE) $(FPSTR) $(FPU) $(SANITY) $(LZ4) $(LZ4CAT) $(RPNCALC) $(SNDSEQ) $(PLAYSEQ) + + -rm vmsrc/plvmzp.inc + +c64: $(PLVMZP_C64) $(PLASM) $(PLVM) $(PLVMC64) + -rm vmsrc/plvmzp.inc + +all: apple c64 + +clean: + -rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVMJIT) $(PLVM03) + -rm -rf rel + -rm samplesrc/*.o samplesrc/*~ samplesrc/*.a + -rm toolsrc/*.o toolsrc/*~ toolsrc/*.a + -rm toolsrc/apple/*.o toolsrc/apple/*~ toolsrc/apple/*.a + -rm toolsrc/c64/*.o toolsrc/c64/*~ toolsrc/c64/*.a + -rm vmsrc/*.o vmsrc/*~ vmsrc/*.a vmsrc/*.sym + -rm vmsrc/apple/*.o vmsrc/apple/*~ vmsrc/apple/*.a vmsrc/apple/*.sym + -rm vmsrc/c64/*.o vmsrc/c64/*~ vmsrc/c64/*.a vmsrc/c64/*.sym + -rm libsrc/*.o libsrc/*~ libsrc/*.a + -rm libsrc/apple/*.o libsrc/apple/*~ libsrc/apple/*.a + -rm libsrc/c64/*.o libsrc/c64/*~ libsrc/c64/*.a + -rm utilsrc/*.o utilsrc/*~ utilsrc/*.a + -rm utilsrc/apple/*.o utilsrc/apple/*~ utilsrc/apple/*.a + -rm utilsrc/c64/*.o utilsrc/c64/*~ utilsrc/c64/*.a + +# +# PLASMA compiler: plasm +# +$(PLASM): $(OBJS) $(INCS) + cc $(OBJS) -o $(PLASM) + +$(PLASMAPLASM): toolsrc/plasm.pla toolsrc/lex.pla toolsrc/parse.pla toolsrc/codegen.pla toolsrc/codeseq.plh + ./$(PLASM) -AMOW < toolsrc/plasm.pla > toolsrc/plasm.a + acme --setpc 4094 -o $(PLASMAPLASM) toolsrc/plasm.a + +$(CODEOPT): toolsrc/codeopt.pla toolsrc/codeseq.plh + ./$(PLASM) -AMOW < toolsrc/codeopt.pla > toolsrc/codeopt.a + acme --setpc 4094 -o $(CODEOPT) toolsrc/codeopt.a + +# +# PLASMA VMs +# +$(PLVM): vmsrc/plvm.c + cc vmsrc/plvm.c -o $(PLVM) + +$(PLVMZP_APL): FORCE + -mkdir -p rel + -mkdir -p rel/apple + -rm -f vmsrc/plvmzp.inc + -ln -s apple/plvmzp.inc vmsrc/plvmzp.inc + +$(PLVMZP_C64): FORCE + -mkdir -p rel + -mkdir -p rel/c64 + -rm -f vmsrc/plvmzp.inc + -ln -s c64/plvmzp.inc vmsrc/plvmzp.inc + +FORCE: + +vmsrc/c64/cmd.a: vmsrc/c64/cmd.pla $(PLASM) + ./$(PLASM) -AOW < vmsrc/c64/cmd.pla > vmsrc/c64/cmd.a + +$(PLVMC64): vmsrc/c64/plvmc64.s vmsrc/c64/cmd.a + acme -f cbm -o $(PLVMC64) -l vmsrc/c64/plvmc64.sym vmsrc/c64/plvmc64.s + +vmsrc/apple/a1cmd.a: vmsrc/apple/a1cmd.pla $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/a1cmd.pla > vmsrc/apple/a1cmd.a + +$(PLVM01): vmsrc/apple/plvm01.s vmsrc/apple/a1cmd.a + acme -o $(PLVM01) -l vmsrc/apple/plvm01.sym vmsrc/apple/plvm01.s + +$(CMD): vmsrc/apple/cmd.pla vmsrc/apple/cmdstub.s $(PLVM02) $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/cmd.pla > vmsrc/apple/cmd.a + acme --setpc 8192 -o $(CMD) vmsrc/apple/cmdstub.s + +$(CMDJIT): vmsrc/apple/cmdjit.pla vmsrc/apple/cmdjitstub.s $(PLVMJIT) $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/cmdjit.pla > vmsrc/apple/cmdjit.a + acme --setpc 8192 -o $(CMDJIT) vmsrc/apple/cmdjitstub.s + +$(SOSCMD): vmsrc/apple/soscmd.pla $(PLVM03) $(PLASM) + ./$(PLASM) -AMOW < vmsrc/apple/soscmd.pla > vmsrc/apple/soscmd.a + acme --setpc 4094 -o $(SOSCMD) vmsrc/apple/soscmd.a + +$(SOSCMDJIT): vmsrc/apple/soscmdjit.pla libsrc/jitcore.pla $(PLVMJIT03) $(PLASM) + ./$(PLASM) -AMOW < vmsrc/apple/soscmdjit.pla > vmsrc/apple/soscmdjit.a + acme --setpc 4094 -o $(SOSCMDJIT) vmsrc/apple/soscmdjit.a + +$(PLVM02): vmsrc/apple/plvm02.s + acme -o $(PLVM02) -l vmsrc/apple/plvm02.sym vmsrc/apple/plvm02.s + +$(PLVMJIT): vmsrc/apple/plvmjit02.s + acme -o $(PLVMJIT) -l vmsrc/apple/plvmjit02.sym vmsrc/apple/plvmjit02.s + +$(PLVM802): vmsrc/apple/plvm802.s + acme -o $(PLVM802) -l vmsrc/apple/plvm802.sym vmsrc/apple/plvm802.s + +vmsrc/apple/sossys.a: vmsrc/apple/sossys.pla $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/sossys.pla > vmsrc/apple/sossys.a + +$(PLVM03): vmsrc/apple/plvm03.s vmsrc/apple/sossys.a + acme -o $(PLVM03) -l vmsrc/apple/plvm03.sym vmsrc/apple/plvm03.s + +vmsrc/apple/sossysjit.a: vmsrc/apple/sossysjit.pla $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/sossysjit.pla > vmsrc/apple/sossysjit.a + +$(PLVMJIT03): vmsrc/apple/plvmjit03.s vmsrc/apple/sossysjit.a + acme -o $(PLVMJIT03) -l vmsrc/apple/plvmjit03.sym vmsrc/apple/plvmjit03.s +# +# Sample code +# +test: samplesrc/test.pla samplesrc/testlib.pla $(PLVM) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/test.pla > samplesrc/test.a + acme --setpc 4094 -o $(TEST) samplesrc/test.a + ./$(PLASM) -AMOW < samplesrc/testlib.pla > samplesrc/testlib.a + acme --setpc 4094 -o $(TESTLIB) samplesrc/testlib.a + ./$(PLVM) TEST + +$(ED): toolsrc/ed.pla $(PLVM02) $(PLASM) toolsrc/ed.pla + ./$(PLASM) -AMOW < toolsrc/ed.pla > toolsrc/ed.a + acme --setpc 4094 -o $(ED) toolsrc/ed.a + +$(MATCHFILES): libsrc/apple/matchfiles.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/matchfiles.pla > libsrc/apple/matchfiles.a + acme --setpc 4094 -o $(MATCHFILES) libsrc/apple/matchfiles.a + +$(ARGS): libsrc/args.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/args.pla > libsrc/args.a + acme --setpc 4094 -o $(ARGS) libsrc/args.a + +$(MEMMGR): libsrc/memmgr.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/memmgr.pla > libsrc/memmgr.a + acme --setpc 4094 -o $(MEMMGR) libsrc/memmgr.a + +$(MEMTEST): samplesrc/memtest.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/memtest.pla > samplesrc/memtest.a + acme --setpc 4094 -o $(MEMTEST) samplesrc/memtest.a + +$(FIBER): libsrc/fiber.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/fiber.pla > libsrc/fiber.a + acme --setpc 4094 -o $(FIBER) libsrc/fiber.a + +$(LINES): libsrc/lines.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/lines.pla > libsrc/lines.a + acme --setpc 4094 -o $(LINES) libsrc/lines.a + +$(FIBERTEST): samplesrc/fibertest.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fibertest.pla > samplesrc/fibertest.a + acme --setpc 4094 -o $(FIBERTEST) samplesrc/fibertest.a + +$(LONGJMP): libsrc/longjmp.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/longjmp.pla > libsrc/longjmp.a + acme --setpc 4094 -o $(LONGJMP) libsrc/longjmp.a + +$(SFM): samplesrc/sfm.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/sfm.pla > samplesrc/sfm.a + acme --setpc 4094 -o $(SFM) samplesrc/sfm.a + +$(SFMSPRT): samplesrc/sfmsprt.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/sfmsprt.pla > samplesrc/sfmsprt.a + acme --setpc 4094 -o $(SFMSPRT) samplesrc/sfmsprt.a + +$(ROGUE): samplesrc/hgrogue.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/hgrogue.pla > samplesrc/hgrogue.a + acme --setpc 4094 -o $(ROGUE) samplesrc/hgrogue.a + +$(ROGUECOMBAT): samplesrc/hgrogue.combat.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/hgrogue.combat.pla > samplesrc/hgrogue.combat.a + acme --setpc 4094 -o $(ROGUECOMBAT) samplesrc/hgrogue.combat.a + +$(ROGUEMAP): samplesrc/hgrogue.map.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/hgrogue.map.pla > samplesrc/hgrogue.map.a + acme --setpc 4094 -o $(ROGUEMAP) samplesrc/hgrogue.map.a + +hello: samplesrc/hello.pla $(PLVM) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/hello.pla > samplesrc/hello.a + acme --setpc 4094 -o $(HELLO) samplesrc/hello.a + ./$(PLVM) HELLO +$(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/rod.pla > samplesrc/rod.a + acme --setpc 4094 -o $(ROD) samplesrc/rod.a + +$(SIEVE): samplesrc/sieve.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMW < samplesrc/sieve.pla > samplesrc/sieve.a + acme --setpc 4094 -o $(SIEVE) samplesrc/sieve.a + +$(PRIMEGAP): samplesrc/primegap.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMW < samplesrc/primegap.pla > samplesrc/primegap.a + acme --setpc 4094 -o $(PRIMEGAP) samplesrc/primegap.a + +$(INT32): libsrc/int32.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/int32.pla > libsrc/int32.a + acme --setpc 4094 -o $(INT32) libsrc/int32.a + +$(INT32TEST): samplesrc/int32test.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/int32test.pla > samplesrc/int32test.a + acme --setpc 4094 -o $(INT32TEST) samplesrc/int32test.a + +$(SANE): libsrc/sane.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/sane.pla > libsrc/sane.a + acme --setpc 4094 -o $(SANE) libsrc/sane.a + +$(FPSTR): libsrc/fpstr.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/fpstr.pla > libsrc/fpstr.a + acme --setpc 4094 -o $(FPSTR) libsrc/fpstr.a + +$(FPU): libsrc/fpu.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/fpu.pla > libsrc/fpu.a + acme --setpc 4094 -o $(FPU) libsrc/fpu.a + +$(SANITY): samplesrc/sanity.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/sanity.pla > samplesrc/sanity.a + acme --setpc 4094 -o $(SANITY) samplesrc/sanity.a + +$(LZ4): libsrc/lz4.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/lz4.pla > libsrc/lz4.a + acme --setpc 4094 -o $(LZ4) libsrc/lz4.a + +$(LZ4CAT): samplesrc/lz4cat.pla inc/lz4.plh $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/lz4cat.pla > samplesrc/lz4cat.a + acme --setpc 4094 -o $(LZ4CAT) samplesrc/lz4cat.a + +$(RPNCALC): samplesrc/rpncalc.pla libsrc/fpu.pla inc/fpu.plh libsrc/fpstr.pla inc/fpstr.plh inc/conio.plh $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/rpncalc.pla > samplesrc/rpncalc.a + acme --setpc 4094 -o $(RPNCALC) samplesrc/rpncalc.a + +$(ETHERIP): libsrc/etherip.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/etherip.pla > libsrc/etherip.a + acme --setpc 4094 -o $(ETHERIP) libsrc/etherip.a + +$(INET): libsrc/inet.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/inet.pla > libsrc/inet.a + acme --setpc 4094 -o $(INET) libsrc/inet.a + +$(DHCP): libsrc/dhcp.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/dhcp.pla > libsrc/dhcp.a + acme --setpc 4094 -o $(DHCP) libsrc/dhcp.a + +$(HTTPD): samplesrc/httpd.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/httpd.pla > samplesrc/httpd.a + acme --setpc 4094 -o $(HTTPD) samplesrc/httpd.a + +$(TFTPD): utilsrc/tftpd.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < utilsrc/tftpd.pla > utilsrc/tftpd.a + acme --setpc 4094 -o $(TFTPD) utilsrc/tftpd.a + +$(MOUSE): libsrc/apple/mouse.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/mouse.pla > libsrc/apple/mouse.a + acme --setpc 4094 -o $(MOUSE) libsrc/apple/mouse.a + +$(UTHERNET): libsrc/apple/uthernet.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/uthernet.pla > libsrc/apple/uthernet.a + acme --setpc 4094 -o $(UTHERNET) libsrc/apple/uthernet.a + +$(UTHERNET2): libsrc/apple/uthernet2.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/uthernet2.pla > libsrc/apple/uthernet2.a + acme --setpc 4094 -o $(UTHERNET2) libsrc/apple/uthernet2.a + +$(FILEIO_APL): libsrc/apple/fileio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/fileio.pla > libsrc/apple/fileio.a + acme --setpc 4094 -o $(FILEIO_APL) libsrc/apple/fileio.a + +$(CONIO_APL): libsrc/apple/conio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/conio.pla > libsrc/apple/conio.a + acme --setpc 4094 -o $(CONIO_APL) libsrc/apple/conio.a + +$(FILEIO_C64): libsrc/c64/fileio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/c64/fileio.pla > libsrc/c64/fileio.a + acme --setpc 4094 -o $(FILEIO_C64) libsrc/c64/fileio.a + +$(CONIO_C64): libsrc/c64/conio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/c64/conio.pla > libsrc/c64/conio.a + acme --setpc 4094 -o $(CONIO_C64) libsrc/c64/conio.a + +$(SNDSEQ): libsrc/apple/sndseq.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/sndseq.pla > libsrc/apple/sndseq.a + acme --setpc 4094 -o $(SNDSEQ) libsrc/apple/sndseq.a + +$(PLAYSEQ): samplesrc/playseq.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/playseq.pla > samplesrc/playseq.a + acme --setpc 4094 -o $(PLAYSEQ) samplesrc/playseq.a + +$(GRAFIX): libsrc/apple/grafix.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/grafix.pla > libsrc/apple/grafix.a + acme --setpc 4094 -o $(GRAFIX) libsrc/apple/grafix.a + +$(GFXDEMO): samplesrc/gfxdemo.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/gfxdemo.pla > samplesrc/gfxdemo.a + acme --setpc 4094 -o $(GFXDEMO) samplesrc/gfxdemo.a + +$(FATCAT): samplesrc/fatcat.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fatcat.pla > samplesrc/fatcat.a + acme --setpc 4094 -o $(FATCAT) samplesrc/fatcat.a + +$(FATGET): samplesrc/fatget.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fatget.pla > samplesrc/fatget.a + acme --setpc 4094 -o $(FATGET) samplesrc/fatget.a + +$(FATPUT): samplesrc/fatput.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fatput.pla > samplesrc/fatput.a + acme --setpc 4094 -o $(FATPUT) samplesrc/fatput.a + +$(FATWDSK): samplesrc/fatwritedsk.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fatwritedsk.pla > samplesrc/fatwritedsk.a + acme --setpc 4094 -o $(FATWDSK) samplesrc/fatwritedsk.a + +$(FATRDSK): samplesrc/fatreaddsk.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/fatreaddsk.pla > samplesrc/fatreaddsk.a + acme --setpc 4094 -o $(FATRDSK) samplesrc/fatreaddsk.a + +$(SDFAT): libsrc/apple/sdfat.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/sdfat.pla > libsrc/apple/sdfat.a + acme --setpc 4094 -o $(SDFAT) libsrc/apple/sdfat.a + +$(SPIPORT): libsrc/apple/spiport.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/spiport.pla > libsrc/apple/spiport.a + acme --setpc 4094 -o $(SPIPORT) libsrc/apple/spiport.a + +$(JOYBUZZ): libsrc/apple/joybuzz.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/joybuzz.pla > libsrc/apple/joybuzz.a + acme --setpc 4094 -o $(JOYBUZZ) libsrc/apple/joybuzz.a + +$(PORTIO): libsrc/apple/portio.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/portio.pla > libsrc/apple/portio.a + acme --setpc 4094 -o $(PORTIO) libsrc/apple/portio.a + +$(HGRLIB): libsrc/apple/hgrlib.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/hgrlib.pla > libsrc/apple/hgrlib.a + acme --setpc 4094 -o $(HGRLIB) libsrc/apple/hgrlib.a + +$(GRLIB): libsrc/apple/grlib.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/grlib.pla > libsrc/apple/grlib.a + acme --setpc 4094 -o $(GRLIB) libsrc/apple/grlib.a + +$(DGRLIB): libsrc/apple/dgrlib.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/dgrlib.pla > libsrc/apple/dgrlib.a + acme --setpc 4094 -o $(DGRLIB) libsrc/apple/dgrlib.a + +$(TILETEST): samplesrc/tiletest.pla $(PLASM) + ./$(PLASM) -AMOW < samplesrc/tiletest.pla > samplesrc/tiletest.a + acme --setpc 4094 -o $(TILETEST) samplesrc/tiletest.a + +$(HGRTILE): libsrc/apple/hgrtile.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/hgrtile.pla > libsrc/apple/hgrtile.a + acme --setpc 4094 -o $(HGRTILE) libsrc/apple/hgrtile.a + +$(HGRFONT): libsrc/apple/hgrfont.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/hgrfont.pla > libsrc/apple/hgrfont.a + acme --setpc 4094 -o $(HGRFONT) libsrc/apple/hgrfont.a + +$(HGRSPRITE): libsrc/apple/hgrsprite.pla $(PLVM02) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/hgrsprite.pla > libsrc/apple/hgrsprite.a + acme --setpc 4094 -o $(HGRSPRITE) libsrc/apple/hgrsprite.a + +$(HGRTEST): samplesrc/hgrtest.pla $(HGRLIB) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/hgrtest.pla > samplesrc/hgrtest.a + acme --setpc 4094 -o $(HGRTEST) samplesrc/hgrtest.a + +$(GRTEST): samplesrc/grtest.pla $(GRLIB) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/grtest.pla > samplesrc/grtest.a + acme --setpc 4094 -o $(GRTEST) samplesrc/grtest.a + +$(DGRTEST): samplesrc/dgrtest.pla $(DGRLIB) $(PLASM) + ./$(PLASM) -AMOW < samplesrc/dgrtest.pla > samplesrc/dgrtest.a + acme --setpc 4094 -o $(DGRTEST) samplesrc/dgrtest.a + +$(MON): utilsrc/apple/mon.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/mon.pla > utilsrc/apple/mon.a + acme --setpc 4094 -o $(MON) utilsrc/apple/mon.a + +$(COPY): utilsrc/apple/copy.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/copy.pla > utilsrc/apple/copy.a + acme --setpc 4094 -o $(COPY) utilsrc/apple/copy.a + +$(DEL): utilsrc/apple/del.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/del.pla > utilsrc/apple/del.a + acme --setpc 4094 -o $(DEL) utilsrc/apple/del.a + +$(REN): utilsrc/apple/ren.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/ren.pla > utilsrc/apple/ren.a + acme --setpc 4094 -o $(REN) utilsrc/apple/ren.a + +$(CAT): utilsrc/apple/cat.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/cat.pla > utilsrc/apple/cat.a + acme --setpc 4094 -o $(CAT) utilsrc/apple/cat.a + +$(NEWDIR): utilsrc/apple/newdir.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/newdir.pla > utilsrc/apple/newdir.a + acme --setpc 4094 -o $(NEWDIR) utilsrc/apple/newdir.a + +$(TYPE): utilsrc/apple/type.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/type.pla > utilsrc/apple/type.a + acme --setpc 4094 -o $(TYPE) utilsrc/apple/type.a + +$(SOS): utilsrc/apple/sos.pla $(PLVM03) $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/sos.pla > utilsrc/apple/sos.a + acme --setpc 4094 -o $(SOS) utilsrc/apple/sos.a + +$(ZIP): utilsrc/apple/zip.pla $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/zip.pla > utilsrc/apple/zip.a + acme --setpc 4094 -o $(ZIP) utilsrc/apple/zip.a + +$(JIT): libsrc/apple/jit.pla libsrc/jitcore.pla $(PLVMJIT) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/jit.pla > libsrc/apple/jit.a + acme --setpc 4094 -o $(JIT) libsrc/apple/jit.a + +$(JIT16): libsrc/apple/jit16.pla libsrc/jit16core.pla $(PLVMJIT) $(PLASM) + ./$(PLASM) -AMOW < libsrc/apple/jit16.pla > libsrc/apple/jit16.a + acme --setpc 4094 -o $(JIT16) libsrc/apple/jit16.a + +$(JITUNE): utilsrc/apple/jitune.pla $(PLVMJIT) $(PLASM) + ./$(PLASM) -AMOW < utilsrc/apple/jitune.pla > utilsrc/apple/jitune.a + acme --setpc 4094 -o $(JITUNE) utilsrc/apple/jitune.a + + diff --git a/src/mockingboard/LLtitle.mid b/src/mockingboard/LLtitle.mid new file mode 100644 index 0000000000000000000000000000000000000000..d0c3abb6d3959b5239161ccf75857753a8e1fe43 GIT binary patch literal 4729 zcmeHKU27Ua6dh}#Nh+lc6nrdHYSR$9L_|SrRsvNNt0WQ|Ou^DTwDcp;r@oY3|H1qe ze?tFRdd_^TyX(dzMM56>u;|>qbLY-IXYQHp4L_d?Au@PUV$vJ_{3^uuCvlm6IQa7M z$HlXk-!689xO~5sdQjL1e*cK?v+TK0&z37@Th(cKHWp$wZs%to@cZHMTiN#}vfv5n zc*5_yLJqw>zu*eranrH{dj;bX#+6_!{Gq#GlkEh*HsW=>yx(!3#$(7X?A-)=5B6Sy zy$^doWZywaAK{-O-?Ie!*$v_`4;yb+ z)s1=NP~RMK%&FS;y-k1D)Up!f%01ZkIm`)TMlQ4eENe2v-`d=y`!K9;YJf95(SCgV?} z;h(|v9dQDt+lqTU<2Xw==R%I~jJ-DfjgPJ=`7lI|BRpewqUPxse4l4rd93C-{;~4O zV*Zm*A8{0i>R!=cr#MF&ct8#~!Fnqi2Wyj)b?`)=7boD3&3{Gf#q*cwN3^N6bsut6 zUqVkH?!ms7k8$RHJM1H&Im9%B^Hu;)GO>4YUq@l7`;e|d4Yk%ihaBMf=GmUte?{X+ z{TY+z+~|neyMRXMoDPvk8+)m{uaw3dV0?&i1!LVKgnxi>$sJLL;Ab^zj_Y-J>b2** z{zu%2E6-^nw)#AVv0A_*h8KHk+~?N#DjYS&tn&!?+Mce@{yuW9c+)rjKAMabcU`b7 zoSz$DSa2Z^4Jc^%0D;ZA4bf(^%_F#w00+Rak*}#D)Z7;YQ~^YRXF~>{vIQSDml5Wl z;Qt8oF%R*0sSy4N<|Dq}a!&z1tSV||f{`j9}2 zem#Z5qMiAK1t(b;vZ(zAa8838Rsg~R(E{G7h)5g+e#?YnT{gUR+4LS=AsE7MAWkz; zILN!Jnm4(p-$$Fko!J9kVtsQKY-76LdCx_PwQ}r*85kvr6|oWOT}+Uc+HWUdOXG*c zjJa4r({mO@ZJw{?g%-CvvqyNrwJB^(oOAm@#S1aHyE-Af_k0V9XENs&MRbnWZFtv& z&LoJd;p#Gxy>>nFFebVd+pzd@fA>v*e?frp+(dxcaM=|83-GcpvsDUkUtPc|9tAiX z6JTPNH(zKi;1U&JUck(yDD7Mu#j7ylNuXhI_-tifiB=crcWlqIdwxdYX>$X5A_9(T#i@Kg(Mp?Z{usTe8Zsjb#LZ zgOMK2xC&rNb$o-*F_B?aC+*>rv-bFe$m^MmOq7t3wbN0gkrjj8$kMQCBCK->tgK*3 zq_WgNPs?u5W1cG`r+ioMii9E)$FP+FCCUshzPWhuCDIod ziY5oVCor8>mjtz8PT$F65#&{sq*#OoS-+DrJGm#VybxHkJ?Q zQ7+fH;G*Zu-9Y+smAn*a3%LsSOwc2?#Em{ruOPNh`d;j;|H>vp&Yd)KjkfhP>O zbLGjw562vZ9Em>Duhe=`jKC)>+!gY_m&jEAB_a#%+KW0+SATc zNn?FphIgVvw`YI^&4X!69*lg$4-e-dtI< z33Nt^{n25=CQm86a@?WoZkm)sAXo8}E5atu`o<5-igj+- zu&XEdinURGS-{o5G@*B6v_JW{f7GiS%vCQJir-wLmrISf{N?J8tCw46h7B7#V%X&C z$6YyL?68SbCN;{hSjmMydANUQTYsr+jDX@1MoU5w=RV8nQd!-icsInf$+w_owO#(v)?YK33FRDKEnG2oo@ z&kOZG$JCBMZnJ>k<{Ht(O1Y?;#u@YT>J$hR_hb_ASkA5S>()_%FCjhtFDXe2Q4rmQ`|Q_5G-BVKuUCNWJOvu-w7^lmL92C7F`~W=52~N z?Sj*7#oiQ-W&D#83!0UL)2iyLZL7X}S|C!D7PWptAYK4G+xkjiO`_JPgmHD(w%!+5 zv#9k3VSNO)62XjO1f$j>Lc0j`X~E2mT8|ReMqu|6lZzQqYZjs1>g(&{6R|iEj^vaA z5D1oq7>ilQAB)8XI}ZlQhe2As6^^Ed?cU*7_IRw`I?)Y4idq+f1eE70WhaOL<&Ol~ zJ;Sk_5KwznI8%VUj23iqNfyf)OpKVdP7z-%X3{~L)Eh8oAi~j*)2kv<p+MtR%x_6jOEot z;%VjSwzcx;v_Kb@YNQS|vX@B8`367~*A{SA3%~q^*zhK@urr>;;&#|>fntrHuLMh! z;3W_^^NA}84J10sKGGX?qoZQp2^6rN2?7-FUBK1i9f43BD1o?^S56d&z?ke|obF)| z4UI2SkroYYjTi1h(L{36z!74OK$^5RsYRE9$%24$97s(|jt?er&bn@>EALN*y5FB? z@-A|1Yb|yLw6>n6#9P)Akn=DpmNOi)u4Q)Z-p=!g8oqXDS2(h&=jAJ}nmqvueepX! z5#Tw8UNHex4f=AR39y@v#nQ-f){{EtOX3zwGNhX5fM!$hTJ>n z4G_&YA{THVOYoCBqp&_)ka;t(bIVU^W9Qd}3o@o47HwOOth7c}jth1y1&=^rHswWf z@{t+{#th&7D%4$Qrt^SvqZ^^qETE5*&L~L_@pcT=fL? zan!0HV@H>?011!+a|RbyT)xs(fb`L#UAFZOaQYze)(ns?;&N;>R2SzGFZle_Rrov$ z9J^UL66{bNdE^FMdxhc2qlMd}`L(t+6KG-tky?EPByss5ZVxu<{&f$@hkL{4CIicZcTJ#%C%=C*0H!|J{#vbd`{DpAA-0hVN7h zjGiC?gGC`&TrE}UY?vMAa^K$o#LW}qL<3;1T{E4EunY^TgR}P6a5S_o&Rr}!RE?k= zS_hwnDpYG1Zna^@f?w(Scfl0EpbN=m2?Y*<)o#S+S>NZo-|Fj+H}PEa+tiot$Nk?7 zU(|@q(T%_x)8)b6iQgEX-wTgHuJH$KkEn5lj`MG+uT{~!>S*59W9J1+&q9evhlGOb z@eU%vQq~0z^qzpY59ETZu3#K-(t^|TU1)p=LM-jD4H>M2D1EPS!8dnVgSPT4WWjrN zID+mkkTV}>USsM+gjqm{`|FujsIBTKwOJ>ewa?%6bn|CMuC{eY7FJ#($1{#gC+sV%E2ZiQ3i>MBNEeui*5v zfPxCmTDP1*w`+-?%2>?mhThgSkR5=#cPc~M1I<{Z9Q#rlYS#MKP$Y+)329A~>^tCa**!j;7I1+FK0-eFH=sJdz=bJdz}2{y#-99 z;FF9#QDoJ*+UdA0+#Q`CG+~KWHxaePbnFu&we?<7Gf84C=(PsLg2cMOB9vHtFtl9r zg8J^*g|&A6cIUF6SlhSzYy0dl`nwx||Nr(+o=?x!zHlkRkKyC<$I{<815vwz3(?oq z9E*7)=Uk@E)g-!*Yg{NQ?u1UP2be>1#E~Aq8cBeba6}i&xS2mvNk${VEvl}HbGhPN z;o)q(3bX}PE~`U5Ddb&=7=4H=dBmG*m=#$^CKx+j+u0F;e+SVfnvA;ua#_kIep$w{=Gxk6#!&&pgK)@PH9edtolvCCk zS*8+^-ia}7$x5`T<`^9=%L0z`G|U(ctt_|TUR6!AT-m0ZXGz|no(JE)f z^OOW#)eehge66Cp`b2M`Xx9hzrL=qDc`-{`0k+DsVriD)IUYQXM3*&19&M5b`b9Fg zAEOo$(GD%YUHIyHdveZmTZ3BEl*bNkR zo4W8Uj#S?^0HCvIQvqJJeZi}v0IZ9Ayj~&pA`Yp7{g+2Wo1l-3JvPT@DRNhXti9?n z3OvvNe?!#M=GS(b?S}{~3*kFbRFlZkW2m^!7^vaamzecBC{S${1sC=#d4oFikFH^L zJQ0RRRag|4hQxWZx_typD9Xwbvt}5PGW0Dw1<9<4G3!%wzF>?IZR@2xUTXM$^sMl$ zbta)QvGuUN#ap3g0L^KJ*N5QZ<>_bx{D8o+KjRzPSE`UA5rQVR5yQxhOL?fz$eFBi z7Kkx1w%HuFVP(kpFjGw=Rp9TA4WJWtDM`zmow|gy+DgJD1~29Zm)Fk|#=2n|`lQ z1?NAg!pY|Nip*kGe{JXm%yzFEj{!PU+=7z>j|`UAIdW-bP|Ij0J3x}lvfB%$J8J! zCRyNIEIP1PY6SxHN(*+I4{k;FoSS+}X(x)GixQYN^$BhC4D~q?^MM$ruXH{_1H+11 z&LfBf%R1v5%Q;of$Q{WOk}6VlBvnvQtj>qBBKLMaLOYQ#I-PYJd+7`7NJRKu|JTv!LI3P-+7 zLtU*77o>;N-ioHD^f-{;h2Fz;zv3}Y!I&R5p4Ubz%tv4qEE|kMAvWu?G*cQNg_|hJ z{7MBbhwadj_o`q)g(E*>yWw%qyPap4%h2Uc>@_?-BlNg8|2h-A{rPO4$mi|oaT0wy zBqdvSGLpr*g&YILtj{o7VI}zwGvU_t(_e*+hhn0&hZ6IN?CA15H$|-{;aZK~-8o<7 zCJMByJ+NK-Myi^*CQg**TJ_AiM#WD>Mbp1_H^3bPmff6c{LuhMiZ&#&)b15z>6Ywd zv-zsWUyOdguX@BWbla1WeAW6FwB0>a>t_~0zb{T|yjr7EI3c5e>7#dHn~|Fr}i$toyK9%62#yoxkq7M2ae49`v@-F-xV)ukd%3 zVQ8FMlYAw5w3{Jt2*fcIWt+J30Ig2wW5C>$)ieV{twLFSj&J6|Ybew(wV|j(LYKFn z482+ijXV571hO)^fo+mGD6|oCEdD;(95XRWqB;8a-)D22`uHBraWImle5qaIqoYn- z!718|g&i63!R$^T21@o3J7yx_b`5RNq{UyLqv{i?3C?;Be3R@p8GxiZe!@c3p@&as zw2ohg9-AuuzB*2s+qQ5WXp?VP!8t{e+dkMZPxPy2!ox^bORrCDp1Y}j-Ahn?Tdzh{ zU;Nnrt?ISLeBKZ|wF_#J@S*1$X>k}-s~9qnI`&F6z(Fq2jY<@$)_!Xba=v&}b7fYz zP~G?1JHFtOU}TI&kn_}wFx)deOS&P1l|MRaA`w1l!|3siXZHo$>|E{fmJney3w`H>@ZmV8>Fgp%(}IOIzj2XOaG-E z?F|MvpS<0U_I9?|S`2h#*$lS|Pijc|@pOf!tzTk?|5FV(0vM_+;!W_7LJvNPGf` zqjflX0#}6HPOFW}IIYroi|8oy=xS$ef30FOuVgV4WPFJM5ifE!B2zBKW!aZ+uF|C<@7%vHn|BBmbIplGxIsr+hymI z`&5-!0*Tm-)&1>}3LA&slsmKq8G{olT;f-u8Y-OPQ(*^(=5|r_?kfBZ#cNyp16R!0 z1OaFLdGtHn&XWySZ+&X`ZtGJ`n*jaw;+F8_R6=P_gF_2`<#lp3gr{-t4KC1()i07Am#0 zZu!E|AZ+$LfprcZ5^^_tY7(0{ZBgHxgSs1!zztpNFO(AVWo548Kp3(zw~?%@ft6_c zMzUhuN@vkNkn;wN6fC<-O_j9t_!yO$d5pXCc*2Ef(C%vEDwZ^t{<^?#b9v_?SE#Nw zRyYyt08tB@E0ak}e-p^}B=Aj4M1+;Q^w+|$ia$Z6V%GJ|)GNLzn$B)O(>~<*>CvvH zh!~!hArCaYNzt2D>#T)1(FoD7r#bzoWVCk z%6f#vShh77i=cfZN5NTGB7i6B2MABSS-lakt&`no4+P*aJMkxGb?1-Wx5{ZkhA)C4 zEW#52;1P&p^^0by498xg@tpPBXc4iPs@g}48l2UND#mhV!355{u97J&hnHwwCv-nR z(K3RP=wf4(ZUX5hcB26(r@NY=YyiTMCHxKqXTdy)iX)}$U-s#IpHG6&A?v~*{wnCj zN@}VGO$?P;5Tdhd=@-?~(FEuCGO!BUk`H8uWPWVS<F##T^m|vp8!MjF~Hlsy3cVnh1TBM?wo31gcA91pR)B9ni#LZ4D<9R6VZM|w8 zC|u=S_5~|IXm-+K-&^o3&huR`PAFQH7MyjC2+mnc=>12r16^g-?^i|YkbWf66CPl; zzZ5UO7ec{4UInG3xRzxB+p+RE9;nqw-2l+Lo)g1s1c$psLg89DbV3sW%X`i)x(T{>I;0=O19>nPBMW4Vd7K`QZ92 za+YL*N<#02VSa}RF1@E=6EyMX8l&;#TpwwuB-iaP#h5RRi&O#EjL2unZ<^0rm`_=! zXBH1JS$qLB&P^ySXAF9pgr%;@HkKmtEFi^Mp=p#7LhuHL?&MT-zSwrwvOHEITW#wQlmhn9721waD;*%)`VD-g-`g6szDL;3sl~Tb zFp<(7XXj8~(JcL}fucE)I<$ojNkwxkp}zt8JBnu6KT?avSB-HfZD}XdC;r1AI)|Yz zOxUs`mz7Md`(c-s#tgr?D&Q8JF`byn{h7(bkvS>R&?U_6Rwn}hjKHFn^D6_}qt<5# z#6N|(ZEGWfu+*|Fuyo!zhbCMOkj7Usj#-`cykHqaKP^~u0K$;ic@|Qf8&HXzQRbMA zww9|;Oz7Rm=*Kyqv4Ri0wr*><0)oj#oKZpEgiBcVW50xfY~J zr8A4r;WWg)`;H@^QnK$zDxGT2L)6`=h+^5VE~eJ^B3I6WA(RK>+K9z@?$5T$5sXye z`292lZ0m3M_Dno6OcP%LkeYZn9%k*A2BZe$iS!o2r?EsIr3`$IPEOuK8IJZu29+ zY1O+E@s?EOVkj5~Mj|sCw@7A+lQQ%5qrg2TH8W=r+BWNVW#--68^}zq(G_XP%rw6` zAyp^2Tbx3{_Z^;M+ZP@Il&9!_hi%W=O`Ui;#A6MIhNX)r#x$|q`B?FaBSlphFdd^B znu7<$cE$_Hz|wBUM|}^IhjmCM4~rxk3oxU^>}oKp5}0O)_v`U$Ca{s!lR0w9pogX|b-ieKu0Q-w1| z38%UiV{+H2K8RficIBvw3Fl-be;1MQ%lLPK2kIrMD0K-j^XVK zsqbdz&tt(~mEY{FzXp+pupc$p>-^Zm7y&;>?oG)9Me^RPb^S0;;5z3iM)qW_^M(T< z$y#G*U`llcPGC;q&|ZaIY-=&TBMyAo3kbxY*^jWf2zm}}&Y6f zLUCpYrngbpKb647sudVu*<}$IuL3Ji7?X358e{&!6XX zLL)avk)5BUu51K5ZFn1`FUO$TdNpGO`9;9~0YE2?lL z=XPeiPWXwFU?{--fYOlibwh9an zVB+B>k7k6rpc#8^H$+tOCPI?V6g~#)jOllhyEY3+94irP91}2Ig?}|0t3nSMF;;R z6jUdW>N21u4J5hn;IvOjtcS$CO+q(eOrA25;aqb00I)ig%1nmeFwc6#r)ij)3LLFu z5e7Y6vY*&hb#~7FT5UEB9N2M{^#GCP# zMW~O77_*+Mg=Nv%Z9vppUb^1^Unj8abYZ!Kqz>ngp!&NY^mbMvBdDhLIBSm*UChc? zjVa!Z=OI56K`vzwSt1GsOVP_waUD{qN>N#{;i)FyA)LFSaAe0>3ikGNm)|pWspPCpNYURK7MymeZ}(c3}lJZJZyEqy9xW z0s)PBLnF*ngdTM8n!D`6b#VHd?7S-H+-z}C(4+cmRrx941j{hMD;tHFBQEC7+)&<1V*ty;!2Mb6bHCFHSuSd3<_@J^veU z=VS=fCVOmW?4I5XHVe|q%O)T#Sc<};{O`Zg(vBo0!c#NxU6WXhC|bIb&JYIPkZLZ> z0@Nq`sCtt47RW)$Y^0!h+(YxRN>hzjn&E2^`bIs=JJYdI5WBUgdyo#^MfafomOE4N zOb^)gGlKp@Vt4lbz@4z~%P3su3@~zAR6CVCTiUtj+^K^W!DL}?P2Wx_8Rh(8E057p zvrK4Q=Q~uw-87qRG@C7&eY{3Ad;CjcrnL2@)a)>7HjlMg=>-O zjm8Fed373-Ja?Z-J=HneFHtEwztkCnZVm2YHhTY3>>fw)js0(x{q}wX}5Ob3P%)Q^er@Zl&|LGhp^No6-x^xn97at|V#+ zP@PuDpVu_qO0}HHSBfmF;CqV97|9>$398r=Y<1p2$&yg~v`cs|36J(GxwtY}$-cyB zE=m?v;n7vmb%k?R7wFmIT8t<$-c zbO(cuT2u#@SGU$jm^OrYz%G3=n;R3+nX~hJGPTMKF_zw?hSU>X0{<5(evF zcLctn_{vWS4CHWV;#JqJbYQ2ZQ`^nrh+$`gC&XoIngU^-;U`|et?A21%B$s_S5U+d z@XJ?HKs)hMX{FUb4E|PIEipJr!$nDqg)6P8$SrCTP_8f`Tz-HvT+w_SL*faHT6Rx0 z&PH@7&hbXDx}`FZiCvubeuc_jRj&xJB2CNM{1cWjN$mFs$SREWdUsSvq&2Ou2ZyUPL(t5k-Yv zN@o-DE4L&O-6Z*2%|_|kEv#*|)!>J} z-G+*1#6W$rg|Fo(UvT^d<|5Yp#4a6xZ(J(0s#;>k%I#Sln!tem6LWp6xj+iWGJ%QZ zq|f@W5ZrTTT#a%TT?#grtF|r#A2(jsTSJUocon zE%;-Y#~F&Ful^Ri}$bsQ6>fBQ4|jy0^4vt+Hh;H4d>(Hu-0Jh zwqa)sBqcXrnD-)dZ;7_n9pwYy=>}LV#f3HsV9pbtNm^&5tqv4BUu7d}Cu1%Q{Ggvn z86C89D5_qi)d_{iKeu*wMA)qpAAY2givdfFoq3TImOzp&&v2i|ce=udIV;eCiwEHo zFv86FHp%@w1O(m90B5Ydpxb=|D}f2GQ%r=d&{C<}U{s$-EO4ov=!uZ_=wN((iy@4z z;Y4?+D?ALjN5S4qU%29rW8Jp$vZyOEY=I~One)CKk!TZu8q+b6t5Wy zWnlpK6EBU}o({C9pCXT-qY?bBkA60J6~;`umt)q~qC4J7WQYQWNli=C|gKL)-eNK+*KGu*4Yp zCRhsJ1N&GvyYLoVKn#5|BlHc(W`w@=77*Jj;!q%J4YJNhFg}}=2tdG#;yWnPnJ(xCn)U18tSJib?!uviLG9pzE;XprwK;6@)p(&?Q*>+V=l%RIB){LR))a@*;B(N zKx`vA0il^1*KP8A0zl-{9d?upsYYdG(Iv| zcDHgpKA|2E9wHC)FucSynsEnX;yA6}(NY@emvaj^<2%L^M4KBp=4VOczNVgdVo-8Z4WS9%i+b3CIWF z{M*~iLoV)wx-3|FvC99e$j|r;NifSf(47X^sF+x9?CS32<~Swjtp0*g$m$RZ@?{nF zB#cVg9_t=N(DgAVClRh0Msc>0*nuqc1;3I3YH$7 z1eju0HYNcI`#kaiek$n$1Mw*enynyIxIlb_f{GM`5;YGy$E?39NTl^qtRV`zj9A?i z)L%h}1kB~4IUf|m90TyIzL;Ykx)0?0{LL|I{CU7R{qHDugkO)UJvn9p?>&%eW;0_2%a|t5gc2Mtl zuK(u^rXqL3-EHNecV>j%@tR8^{4?p|xg-pf{Ej35N`6feAi3nh6eWLR5(Y~CbOJ_dRqF+n678-tVygog zak-Pkw%R5o?k9;Y!TEshP;)h9z>m;#j98XozKueMmpOwT;aR*u< zac)xL?UHy|{B=!?BqbI~A`ZW4;uVMnmriZsSg0*@9y1TpgpejQb!yBMLY4(E+qnh< zCZ}?{sf3+57qzYSE}NymhF^(d;o7#+TpsfPWj9ilR#m~Q3 zSffVT2*iqeV>FY=JjZe#ErQG%8~~H{6^2YS^Tp_;&&Xj!-hH(T-%(RgIP&g{Q`T0AZWo`gWbC_*Mj6 z#Wx|WGQ6yA1n6B*EJ;v2PYP9hA%ZwKXU)-6Dt;$ZMRED+r`q2HsB-pnxdEWpKwF@+ z)cz9E8Y2$yC_G)l0PO%puLQ+Wq)=UsL2wCD|D>tZC7r3F#;c~?qb;f$-CZO801&2% z)@J;gvV03c!}MJQpG4|XO(oM8nEF@c_c+4J54ZDc-FO6`*FiB;DVVJiQkZNNdK6x^ z{sz#eptv+aF_09Rt-%OBjnuxHN)383RkHONzLAy%fU0r4JE%Vtpkl+KHNwvV?dP?U zMY8w?!T4iJ{VBpq{bx559|N=n6qQQBOe`jas#JmCt4N)%spR({Q}dPI?FcKs({-G= z+L{H>GEiKn6y!IS6rGh~IKkck>O#cOKr@PwSZ-ZJJcRc01rNb-8b;(R`D16aB2P0E zpJ5$<7_K$P{n0qO#v74me-Gai#SrQYj7|Bw#{4q8w@-6}^EBp+*MQGa_#Fb+Zs)CH z8QIi^R~llB9*)vflh^Q+fIGkJ3B_B8;u$SP@yx+U$I=EUWETTjIY%IP(ZIrtvk=5} z!ra=Zc7|fnsGLK@Dh|bB8EZK7TKKjskn%q7%ybg+260^FjrDd6PJgSS1K(Pn@v8)? zai@1^^X|)8{k{2j7TEV=i;7w+K!P%S0Y5Sv#ssn($^{6yly7I;O9UMR&tfo|zS_DI zf#UcIG#5-<%Mr;b291tE0lAitdVxSD+20TEg(Z{V!puvN7Ws4#D zwcvsAKte}>n6naR8aaChdHhp)n^=zY!_b@Ak7Yc}0aEnTa5Sf`5+U3&$H&8+Jn~>y ztItSdJcw?RJx3(xco0IzQPc?Q_>j(ZrFJ6JdPI!c+v%v$zT_Uuh>5Jsqa>DHDI_@# zf1;cyFeti1aMR9!a?rH<`PZsO1C zB?;DIByjSGe$ag@M9W}VTTPtfPvlO?fS6?ihTLqW{8$Da<_y@Grz64*uFR7WSZ!@X z_KUIA1smBJodq%b;%mj?-Jycx;9h|8&2Qm~AE(0R)TMjeLbI*J-O$AH%9 zT!W6>nhDlk2K&%^Msli<=>&2+BLDOik%#$_aiP;;r!I-l%h z5{@%Ac<}>Xf8oR25UyN~=3ejYxCUrg!A8y83RzUR#SQn|XyrolFKsD>9S#UP){h2s3m=&DW z99-}!kSzS*LQVLAYRn9{jxZb$sb;)qQ||P~J3LUsN@X%+Hr-_T;X=t~UbUTH!`Vl{ z+rg!BZG-FsqV0i^zGWl+9IWE5rK?~`^fXR*$P|6u>s3QeAFJ1Us1~shn8LQ)sKh>& z6TYV62$XCWq=nN~I2jNm%I*&|9&^Gv-oaD@AI4Fl*sPGZtRyY%!D_g2*6-icUViz@ zhhnL`5&176jq+pYF8;UVzcq&Pry?V}=l?aNN&a2=rx6Wrp+Tjc|FztN(xn(6(XD+V zEylFA`c zET{q&h@Zf=ZuXngjncDZy)Kq>1JIqO*j{z(kWR96bNZtc*`&0MQ<+hJ+c<#suIWNGhcD{rA4lZPB%-XqAZj7<5GZ1HWwN6CqY(i3W(9X|rQp!krdE(BRttP%zJp{b?n@Eat+3ilVO zAM8?$y2LtNmVs# z!u}>SR_L5sX_ERgJl}zrH(>%%iy24MdTCKpSe%*bj;uhxR;nMKjR-EyXudQM!2T$9 zJ+n7!yFU}^#IqIk6Qm+5in@6TQLXj(!R5i6&yeaBP?>GR7NA5mLVEbq4^6+c_rk>a&{gg z@R6XxMQBeWIlTPSCUOP0vu%W+Y&up@`lSoXj3ks*K&iAQ0mi>dE4@MeT0(f#8U!rc zY9isS7WK;k#OQY>*~YSK4r*fb`>P6n9f*KmL^TUCGl=EscebL;Yc43gsAfUtmxKH$ zM*_uvX^~Z9)y=@bwCWZN?o+G&WVmV7tA~?X zTJ`G;HtdekHXmRr-aoQcTXp_cls7=82~A_F?2X-pvPx<8rM;m)XutnA>s@c#x&YXi ztKoS-ZM}@Utrst3jAc*ytJt7Dv`lS_sr_|wf9no}>VIT~uBOwOc@CxPK`iGp9l&+S zQioL918F#eXp%obaZ-1VBIMxKBH(LgIQ;z+8O3tq7<@U;eC&DX#8ATPTio+1c;7;6 z^%v26yfmb)PiVV#?0S|2&AfZwcAQS>3C?oUr+5;1K-9xPavLV&~J z#(W0L8@S9|E;Kj0Bl(+f87|$848T0@X&(1`l>5cto-)9j1)k*nIdD~{*B3E_{W*7m zDi7S#q2e}-{Lm8GfQdP^hWGn4561oi4yjy^SFX3ZTvOO#RG0m*vRiREa%=(J|B4~^ z&4l-15DDeNhD|JciW0?0bOI9NH^K|jRu5(wTYUvvp$fQ9*leXDaKpF~rLgYRV#J&? zAPu{9=K4Jn6D)>iRv>Sam;jERr{D1cp^D&AYu(GF!gX=h^9Ugc%iD&nQvr^s>Npi& zfve=u!Bm~YNpbeEm?OhtTd=jlbso4Tb^vim#kvb=U||eaQD1A z{S9<%YVG=sJ@ZfaF3G9EH#-sU+3ovAqF#Q9Lufj#_4%tTcYVW5DYI*3Xds@n9axyD z@H1HA(@Q~hFk`T%H;i43(AB_P^Zcp#dlw5|F8@}@pXqPnm<+Q9$}#R4B@KdDMTfH9qO<)+=0_U4l)&$=X+!LegW&M|G81b#!vE72ly>Hto*bs*AAzucTb zD2K`>?J|&M+9k7LTT{DunBy1(=1j$mRHsY(RlJK5c;^^ASeqOp)vbMaJrj6c3|?Os zFUyCw;d!)79elsWAmnmk)wWK##2Zo^%b>d!hXZ3AKPCE7xh{51e-6K_6-PpKcH4X% z>Pre+iXZ8@w{z_vV~#@SjcgL&OxC)U$*Mppf*7Z{`vt8zo_5dVAcLsy+x6Yg(#05v ztlHf_Lu3-*+@a(*eFhD_FM5YV7me@_~AFLx6$7laV80r!Za3*L@b zNxY)$m$#teCoB7lffc`>9T47wM13&`i)CkN;;CdI2c5m~oceC}JvY5nkspQu4|A+% z@q?#mHTIy!KGWDeh^@Bn#kY7fqBh_Zm`z9qtP%>HF2`601oS# zx4U6>7LJCq6pwE2RaOpixu%K~SCaxqJ}Pswz|L(|Uj5*F0$B5@tW>3es?s+XiZSLt zt>vuVq74U<{8cb{3KodA|jD_bFiga#|BC%gcIp0hwAq z1At*emtv?Ty@##(F`qhUx|Qq|dEFJDUfK$G*|)*COAxcmRP37_0O z@)Nu|Y}83HUh^=X1O|jJ(B!5R4%t3CE~C%HJs=*%^-A%bQoJr4?B^=h+9>v5vSMEh+=F80sAA`Ol6$IREmg5{$bw?sCE4^nRwhyST!Sk3j~!5u z4~B_0Q{O@Cq;jV#Who8JM$2%w?g$SB{@?`z5oewhE8GYJPOPXYVwgtcG_T}(zy(4 zlDn;+;rSS#Gk+>;xXM~!fST#^0F2}u@(5Nn+^u2jT9t=h<}#J{BW6{oKQHDn{~mTR@jMC`@BE>xqCE>y;U|DmZ029t0eT-QcV|v)m%_3QR6~`=g&dNDW!K$#8oKnRE}OAefuQ(P9?c`5 zL5V~adFNTl+e_-7V^++=pRD*}6#w-G@pV2i6f|^$qFUc1)%qxP4AiEKQr8<{mxKKD zyXN|{)?VrJ_DKH$M0)ZUC(-|aZWN};*dzVDe)=1e=-*QM^`SlKKh#g(H;MjPrRQO# zJ>=g{ziW;^|1qV{Ym`108OMGy_J<-x+u;n?1VGMf^R~ZQjG$xT^d*Lu3UVqDQ&;=g zTxjI&yiA8sEIB)95bTb#RqFfw0mXeAM3rt9FPW{yN(ir~GptN~>4A#!|5C7cp$KLGqE{^{t>~%NJMykCEC7bR(*bwOA zv)6?x_wh3Ujalc4%FKAeUZ;UT?R6wc8?hH3?%QX3Jq~2G*YS|++H1XNMti;Rz+Ub3 z99Y0!-<|=n|E0Yi!wYZ{_PUyfJ*6uTNj6=3b%icIdvRq4a<8M@n02tIoNTWHK%n;8 ze!tkH!TR+Imtpp`eq9G-wO4(=guNaR&1kO(1ns4MQ6BVO2KxWjUWMqb681WUuMZM? zWl|5XJ?^*di2?bR8A_F}K~U;%p#1O0z%uT0DY6ZU!^ zF}2rAl1-XOji z|Ij$z_(#-shnCkWbqv(dP$$o&=p_^L2^jn!KmD$|nQfQ;LZ#2!BmD;u>B(Q5M1P#p zXY7&wUO)YfN%Sq1etqA@^xs>5T87hwiTZf<=Wc!MLhE||t~rGI>f-`b4V3E;O2zXX zlE{jc=uf}-hg%;vBGg!YycbIz`&=J~09otfmOhF4SR}$(e+nRIFYPy|dd~rU!}SsO zRqSQFmXG`T6835j>uLM_QL^c_-}mo=ghcyYh*dAxt1IQkthGc_O*UhV%rW954fyXwd-l(|Zr$Ry@&&NDTKRY}j%(#M5aqM-Gb(EYWyP#! zl2Mu~;q~fnbFKU_LXBDZ5iF7Hvz12xS*;vD8DwIm#C~DSDiR&V|50Qt`*79r-@x8| zeuZ-k9{!1nA5eU|L3};m=u{j-)|T3XvUbcCS?{5~!1@EJ8P0!_p{z0RI$m90dQCBU zsO}AvPZkRn>$71Tn2i+eN(;`+K<8Uhv@4K?MKJemlrzD`IT)8hIoYbpEuO5gD$Co5 zyGbSfJDaPVTiKIim9tN1S1>jjVW@eYM|vuA!Nt-7JQ3Qe94zXIk$sV}m!&HZH@@>Hcn>7_c=h?ITU}c@$}COAJ}Sa!?Atwz z>l9?*Kcv(Tks9Y8JpLzm80{5f+Ftn64xausvt0czRqB4q ze=E3ZZFt+mco~%$=HlD)_N4!Okb3-Qdem)||0gGk{-qxONgl=!<-d#=joAl`o!YL# zqMyg2tH)xEvba%&bo4MXJdE$LjE78Inh=s`kEXrMR{o!WMomx|bBz>H{)a06Wgf=U z9>(p;|CbZIOzg(Lr}8iHsIT^@bCmyLQpc=e9!8#raf0&y=N|ZPI7+CG@Ti-6)ITZp zWy-%EaLwV@Gu<4%jkP@3=g)iKKT-KF_oyHDsGn8-yLyQRb3BZghcQX{e@F~>$c_ai zcYT`W+gkaL@TkxBsJVy>?e16pr+XMZJd6XC{|$TKzo3g~m*!D#v)$Yusr>sY|1IFE z_F3;?Jdd?PXmIcz_zzP44|&wnJ?d)JZgWr3V48<9&cnD+`M*kxM(k62q)_+ssJnX9 z_bdM!m48PMBg4b^9>!+eWPEHqfw!Vf^JR#-N}wbLM#(^loY>|s3S zVVtQL-ye^`#jAAVTs1XEuHSs0{r7eSIk(|hr1syujx#Z9xd6P_f5TA+l-Xlo28A#> zLW1eLx9f^&Um)uUsT0X$gycKP-CDDen2rY zFjxk1JENay7{VAX<75PNH*6~=lRD4|fNQGzHvK2|Ka>{^7TBr^7o(BE*L#SlTPOgV z;jM8ogH`g2dA@8a0{+2}dmh@^c7#y%_7pr^nf^(cUJIuF{YmF##ZUL}znM-3**{^0 z7fPI!ia%ZPH<7CtV5#DNp!n@l@Ol0#x4aH_G&*^p#N+BaQOkQg1TzLpm*G2(5A3zQ z#}fkLg-agjX#rh;Zx8gkfZp(fHV6ol<^{U)HJ397;u$}rQ*!p>VH%Uv}K zgO3HyYl`z7Gbh=6Uvb(h&hf-yCctOChx3BsG*O)WiBqIF^F5qf6^9GpFz>eRz!|DI zWggBoit``ESxFp>pz!_+%+2G7;XY}GU{4sdaA)L;X*lh=T(KWVx;Y5t-eL)pN{wu6 z{9wxG>5f`H)?YB%!-^;FOOH51g42gKp$&MZA>*$MdKV$#JsVV1%(JMBw#dFvm1s?s zdk{HhJ>%irsW_)APR%jEX`whXJe-M&bFAW25$AL04?b6UI0F>tAjNrd5$Afv`GqNxuj*3C*Qbipn>ctzm-@Wt;Vf31Hx;KX zae67v^B&GUinBy;t?Yl?H0hjXmr zlqn9c%5$q~Cl4oGaV9IyaN?M%`WsUu?^`31_YsQImpG=Xe(2#;D9%8|=|CJ-Rp`9X z!?|B^aujEKH{i4ZPP`Sq_Ec53;XKuSI97(b?tSI}wm)E)?baV}(pCcI$Jv+gWW)1r zA8*qA+ZS){3lH>#i8nY!FIVPuK6v*O8W+d^`34QUV|I4G88rcSz)~p7z0S#<{K{$^%nz z>lA?ExP2Wb^!(!ijO{oxuYl`&KwsLIoQ^|sIEz#RQIrKaa-ygjDpy10Q_>WSffp`O z;pNc#1CdYq;apIbmxw`F55CMTSULpBaWcalOV%#lh2S&^-h8zm`il!K^g(;H6>{u4 zc;r1Y1vHQ#l%A_zIyDLR>6f0Q%bmoc7-quGZ7b^bYny~KkvM01IIR_@wYfp4aXKt@ z1>(MZqkU6Mb!C9BYJ%}#2LZUoi!VjxQzK!ZlwxmvKGd8|L|xkiVp5}6WprB^T1QA_ zh`l(kwu}^Qz&&0o-M1s-ZF*WpI4p)*#ak^`&IqmaZnbrGW#H z1G2;GbbGwkgrE_A(7OVv@`JQESAxbPY$oM#;{iU9C7>_;p#22&X3&S#TtLGy9`|^) z6wn60#Qg=d!w)(@K!^XyM;H{)I6uf#9h8vAUaQVzINBVa6vY5wM<4!Ft_?b&iL%POuL0c(GzoN@ajj;#nTz6GYUr z9HPXtLZ}@@6>3d=e7kD^(z6g3nL@;X*v;Ug9#0^GTZ_mXLQ$@ZdOR(lJN;N63kc8U zC9v?=AqZ#rLH`n+a?*WRs^%g;NX%8bWLk}SbCUW`=$coc*J9$E})Pf)IvZ*{h%WRG|ms|B%pi!pe_Qs z)Nkmc1cVC)5)%2g_F(B|KOtZB9xR*X=aO;?f8Fx(-Y1rD%jx-wffj>hKd zqJ4$}aRsMvW8-wu7B`N@2J52T<)Wc2!Z`kFkFmK3stmANK%`@b;i2*DaJaQgesL0c z+3zK9PjY>gG$wJBv8klDRI;+ejC8RtAFF5oax3sX)jveV|2@Pr{lpKDn8hdgHph9j zx!;_WRBEWi6I`8?lteWkIfF?nuSzoUG2|)b#z6(+8)fpO~C}BGP%6bspOJImi$$y|6D#51;xL)#E!; zlbgHbuO2CTph4wYNRVIlmzqkl<+p9Mzn~ zaebty3jO*a2uX!axEh{~bkgM-l67$oKoaRmzGQk5>8x&Uv}9^JtsT5IF=jZ}=iJWo z;iaJ`56;A%iBCq1%DLS@W#AB3f$pYa`g}MLwQq?RXbpEghu`J>4mByu^$NdJP3BPS zv_~};Yt1%l&g|@F+%s9iLmleVr7VdosSvPZ>$BagJ#jqD$5AYITryjo?9n^&CFyhq zm3U>fhA@*uM+j@*=9AaNyemRHYRXVadUni+y%z-a~C zUg4gI(;_&%g&Ol7^a=}Fz-Zp;nD||Hw#c5vR7mtJxI?6eju*STS+N0X2czo~L1w6S zXOH#*>PoCL@kQf!&b$EQmbAApdU3mhBm5Z4KgIQ=FzIesKnlbMD=NyIvlh4RV+mX; zRb_w^7Z*zDWK|iUQ*fb)8q0}^fvT5b`&Tc+_9$-UIk{zHUHs(cnhC!h%OlR8g3~*y z9kB(S(Sc*HeY0cf?shEQ-HxUIYjzyt*~UM3Ojy@HR!mseKQv5O*FO?WSogqvuea?eSEO6p*Be^H(;f{*z+zyJ@!LM6up9I&*mGqW{y#FBy zZF~}-o_46QX$bYI=pL%Vkw$6^)#~_CLJ=zUMmpYECzu==PYaKWvHeUu*gzu+Q4}v8 z;5omlNClcil{_MgwN;c*KyEeyBCfQd1b)O{J0c(K z;}ImjHHD4CsE~;1+Ud1O=v^>a6GGGht~Nn4hwvTm*MQf-2`{wGany@{hwus zzncQ{r~AWS0dFWCZa*J9cjC7Vei`i*F@yplrhti|##?kAK({j&A5A>Lo>I`@IJwnnCAVI1u`5>t6M$h+8` zbn`d>YqeHSw@z;0joAQ4)7jp&E{4Fwmlu$$P4A3F@`E~3U;qWJ) zRIi1%$xz)`o$JhfYuH3WjzEb8CsCBcWoc9bGee{JN75ifk!qtU39$_ls^gXka&7kS zdg8qa&Tw&VI{)1ThJiT8NZ5uw`zkiZj4B{-M<4H*c!jw5bI+1`kG+QlSj{wSZ#BWi zHVBDkc42imR#fX;ii^5sl?>y&KpYXBj3F;FKdTlmA{3e-F+!;s9Z`MSm6NDpSizH} zwM{+#0hbe;z7skjZ4-w7{iwKq_|Nw-)H%=m2hyq)4J-)ivjw2_2841>k5)RB6@b0s z!KS7=nb`GjJ{=NQM;=HZ2)8pRj9^Veb+)1Tbg+l?dfA)Qh1r4IW2ig9zYY zPcjU^Gy=Tg007Srz<$KV_zwZ~?yvwDtyTf>jStX=fd6=a)q#q^)!4 z>i}>A#;s(sHUPKz0J8`v_5uDwzyu%QSW3CV z2e^++&49|Wr?z&!Bmk%0_ zxWc2>cyIh>6p~(s2H`CIwXOsx{tw)}0~+uCjh;B)HoFSIXW^gr^zq~P!+WCnpH6E? zZbPtrk^A4$?F;XH!TEn${=Vq=2hN_`#Q#_A^AY?3KmPprVQ!lH>&M$$*rjoQU3`DM zu`qG{X)bLlyfK`{@cr=r?Qp7Y-@wjIaEfUpKI8G3icb`ukMa2xpL?)^{xCjI;j;vv zH}KhlPc1${3=EIMCl8;o_>|%^3!gdo@YoP{h2O?!Gd^v>s~bLj@fn1Vo6j$h)(3VS zfX_kr9D~mez|!$M9-qtcnTF33__#Fw-+zMFllUA8efr?D7~%E!T#E4Z_|$i4G8FIX z>e5WU_ml5*`EDuSt>pUv`ED)W2g-L_`EDoQ9pw99`94&>50~#Od=H2n#ygz)4X*F< z9G0PGk4C4cqwUdc8QKgLMjy=(dg%Jm{TRaVtA2DoLrWR@D?=|bbS*>7>F831<}$=? zKmHGf9%N`HLr*hwGefU1G?k%BhG?UmooG%LxT{S6bMb4G+|QKgo&fZ zj~Rb;)|l}V3#VjVHD>InKWBBB+%houqW%N(FA7|jf;ORWii;;`7fqOuHEzWC>wWYf z&YwKuYT=XhmmdA{2A)4;@a0*3MFIt!)-rJBgmDwcj2$s$%!Kh-1qhEFHD%Os5ISW< z!8KVEt{pY$s<9KUGtt8FBTf8_5hH;;e)5zNcmN-CQl}}G2^o) zj+iuR{FKq7CXbmM$QuJNvR5#6g8cf^&KZC0h_PcvW=)JEF6_pIC<2_ ztPzv5CQcYLe#)px9_I-Yv#vs^47j-8fc#LP|AhkwWsR9^qFEEhkGxqw&>|?WfFMv1rh>d5K?))wL{O*-I)Y+V!0=G0@)#Z}#RvDd_FDTSlX5@r z_uW74{o_o(v(Nsmz1DvG_S*aGoV_{tsgR7&ff`Z2rtKm+&QI#hlCF=fdZYisyx%HF zhx`jgQ~3{l{No=YR{=R8p?an6 z(R?PIq)w-lno4(QWpHhzAD)}QV5rFrj)sEA`!}bH!dZj( zo@^@;4_TY1__wWMTeHQ)7QaPPpXy3vv$-O=H(g9)45d%8P);(DS%`ikzsNW|a_1!q zg#>!nLJbRg>e7`qT$_B5O~Iix)*oHlrTZ*)Qfy@;xGKgDI%xSfWO9RvjLyQ$X{JUP zm+7ojrZ)K)woQTBG;$(MC&myRn=24o)Qa>70ZcQ-fLr0r8<+}ZdLT#Exz*AN))Dm$ z4X^3zjrRK!Lo}OMBk5w1{5zE>CbS(F1!_=lkXbh&lDkF{BZH}g-(+s&w?P5 z>S@zyfWNpk|4w3EU3=kFKkUghxL`2027QVa(`@drFlb@gxBM6sI?<_0cW+Nfsn&Me z-@Z7dpUmxt+kXC2pJ~<4aDHHargdGSK#y{U`dK-QE>2RHIUYu0dEPm)we$oU!6S{F zg%g#X#4|Rx(aQRd@wcb^hqWg^+=?j+^I6u)jpC7LvbNOC*5Pz+9Aw2 z#a1QKOkxlPCNc#pk)jby!zq!!oR*fa1?5?7Hb@uR%kq=@D$Mtk$S1qS?GhQa}!!i5BFNV_L3lE5NO*qY#~aF_oBERLJ`R3`!Sht~M@1Z&dQ zb|O=qS}SF3=Mhdxy2==DT|NC%wP*}>_2Qu_IfZ+|tg)uIdo9=?91cdpp9DL-J^m=z z3HOAceB7G8miYfvdqwLCe>8MNq_->B9|{u7-Qh0EFc>|lbp;oFsI**D)UTCRhS#s{ zlZtgwH@CDH-GD@>e|3xSL=HuJf)Rhc(MmF^>mxC5M@HzcP^=s6>kh4N%q!fpe_n?M z0&Il!8hSVy>4uA-S*Bb(_xhtJ`C})o>FkZXQ}aG1_NJbqN!@4~wOmT5%czzNr>nKT zzA9)2TuFDuF)iSw<}D1R+mC5!$Ji6UbsTPLtEAJrvD5-DJze2YY-)ZONQ=Su3beD) z2@OGg!EWv9WT@S;J&D@Fq~@9Z!Dv4+CNbpn1B@;Q(p2%O_SC15LpOCGXCRu62z*FC zat3u;hhh3|IW87$(H$usbm)@hJP&ZF9f0~7xqOtE(c^DP(4?ZcNGNz>NVCRiUAnr_ z5RDc3)6*I~F~pdB5p~v1huWZm+~riidZ}(KQi;q=o%2yV-pMVNEEjPOYp@cG`SEnD zD@j+NtEX1KMfG*>>Z~O!3Dq^KYvsziq(xngoOG?L87>NOA=Fn?-=l;)Q~#Ww!Zn{?)43}^$bwz6x*ddwj)81Z+}FO#5zCGA{yQSc?|65s@l*v z+R~urG7>~zac10Zsex$&JeV|$Rp(;UZ?#HjyH4SAFdn9crQ+%dYrsx>UW$ZdJ<2uXObz;VKmespXY-%Sit9PAPLl@Tj zaf9P5t#{<^sdme_>thWJEZeV-wT9CQ?&DZP>zD1<$6CX&V!n0n)p^FU{n(z;zss2G z?#8nAV_IvNvKG}3he#w?Kg<@f$3R%`pv$=@&|ju+j&^$4^v)9Ltx$wVI!}m49FF&8 z_LCOyIVJ zd%8NKk%s03ox%JLY3!=qA=s^Iv=fJ1+qr+*5-zVR7>TsBr93=>@g!PgL|lz-vuHf@Xg2E!nI+cIY(&d_u~{xEy|My6 zbh%7fJzY_wBEus@5_%sHAEozbxjg+)^dEcdu||*Uzh$_)$(Tw(uj^wmv(GH>LRL znYRyVRY&R{WJl^BWJluVF<#hva2_Yll|%p}NtdwAuSLXlYLbOhm*XW#>>U)CQ^{Ys>_x9_ZV zt3y3!hhyjT_OA{_*WpVK=dQzNz0Si2OiTT}=Xdw6>*?>kfIf5jRr;Rkh5Uili}VLp zzmD&t1dks#A0fR2-*LPc-x1ppT2G(Gyp+F?`A>XbB(ky4g<4?CPjA9^^gYjrTXjXw6U?Zja8ROBA(zfylS^lN?55c0pm zeCSRZN^PgVoo_P_*UJ57xzqoQf&TLNpN|_|mbjtIfXjf(fXjf(fXjf(fXjf(fXjf( zfXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf( zfXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXjf(fXl%DCkEzz zKn=95jt1WJ#DXWFVsks<@wi<~Bsa#B!yDrpMiYgUI-#ISEKga5Lf!$n(ISD=)=UaE zql59mbQT(_q?FA$jaVbe{8q{eLc5uB&ll3!;*b%xH556NNM}g-T_P{kW#BimY@P5h z2(2yYA{hk`A4+C&wnb<;p$%5iCeT43m$$M6RukZQ5bPsZu(Z*7#77dDOfE?&13)#s zVM3!tosvh~E*3JJ;TE7`ZZx0g=HoxckE>~FetcvYb+eMAMJqmRC5W60JR|CBp1iur zQ&cZ{lIm{nu(c(X-hc+Y(PXQ)nzEMq#k90~X__^XF2>ca8AECHKx@IuSP9#TtGDNF zu(EO6`mDNP-k`c?UQX?sw<(cPJLYe+wrgEHLHBxIE9N z#+NJAoXlnIqPp0ZQ9tlm>es$a3H6fCR@<6Jaw+xWrj#{gt0$T^Ckk2ha+7K*T7?l+ z_E}r<1$76MGwN=iy3dEqK7sPbIuKO5s3ymwrD^2+3twVnFqKgMgibXAAz8lQD-?3L zHTl%!8ptxEmfGhls9g|L`(R!kK|@9dbukw=Sw(euQ&H_iYRRU|Pl3%ywy17xDvT!8 zy=3)8)ubv{c|5lIK~s||UFQKV--2&8cy0A~(3des;VfA4h{*=PW z3FtQ^6IpfXH1@@(T8rw=`RP-nC!SaUrJs9zadq3Ye9l(o`NbS{$&cnM^!H{AU$uK$ zCYRfoAa7MaorV%$rkp1bqUpsrd6s&9+GgsDeRGl9D@gFA)Y;SR_%J355N*X1sZ_zT zZFR}KtorkOH7&00oUZ#RuJ%mF$Vz15>XqpmGPyyDm1Yc~x8v&87S%M8C?<#1qtlUt z`df2Rozu$wJKl=+{*~%LwHwW=y;|j#8K~Nu)MycZWd>P3+l=DXsV%m;s09l9sEVR+ zomP0I*#;--N0j;&wQub2(3zW7*EXlr&sv5ui4C@zY?UGVm)3&%d#k0+omnhkcETY3 z#>_!=-As5`%F3(zXWDA_%%pm2We>TP-M6XI6&+5V z=0&``jl%IWbo@*Vb}yXnyq01P!}xkMv-D+>B{o^=supVc86dO_83_1_P62J-Yq4SU z0JN)T>3q)B>E|JRdP2R{l1!^Vwr14MIaYG8u)$K-&Mlx#znY8gcz&+(6%*>z)LWgWn_slG)TiRgrElMxnj`ZfOHhaSxGcEP@tkFUB!`XxC z?E^Ne)8}N=S#uKV+jEMELQ(x3`IdK4jybh`Rzh9erhFqK76$p{vr<+uu|Zuhn`Wv@ zW}|%4^VuV6*DTO}!)&;O+5`Fc9l8w&iSXxU4XRgWZ&rVvol$?AO`}G8)34`P)Q$In zahjO4U+jbGL#Wdu@QukksS=-6XV1=9$)Y+R?U}fX@*TgM!s^{#513Y0qrA%ZpxTsH z_o0OI4@juT4j9A(P3=TeO7~JOY4zxA-PJckGyxG3?xTc4TJ4>kSFe*80*EUVRuC%h zpgJ9OIg9F|rRDFl^fE|yk`x$Z-A~etx(x;IJ%Fsfi}dePI#Q7S0ELq}9Dk5=coG`V zLSte#rH%cBrLRM}57P1@B(468!qTG@RuEFo7r`elgHKLsY56gh-U#V!Bn5``FIf70 zNFO38Fi86qg%iJ~aO?@K_Y{Sb2$eTwZBc)ogV6xiE}M&z;7#iEHhK)JvxxYrwtHIJ zA%r7ZgBaQy)pc!|jJlnOeg@)ZJkEd9mQ~fZp^U9wZ7UW=)nD5Zn2xv2#dGG%b2nfx z&&?FoMX(rqjxw^;pV}~0{sW~{AwXMyPvQ6(zIxN4cU9)QI&~V1#}O)T-d3m2A1$h1;+d9*qhC0mmb2=5%pGM`fbfR-yfk?M z(p}oPqSFfWRD585LfwC0liIBlCUjV(WFJojugtd!akckAECuyC>MDAwZqsF>-0cVI zA-My!)u|UAsGpf<9@M1Xgc91geHtyFZ1p6{*uI_Yin@XK9EkbhWn^}y7Ge#KhZZK- z1B;fPNXC)H*+@crb$AJ>`O;ZakFyp~fqJGq_aIpUUI?3UtzG8ubh5ALaE}hF2$eU< zeB8TWlllQQM+@yDEm9s|z>9<($g2D$ZLY(yGjtpw+!~zzeE}_}PJ>qEOr27qaDu}N zDZWRCPw23U5W^pfk6j0m_1&<0L8nY2tQ2eERX;G%G(LT-wdyU+sd&e{CGVK0a z2n*? z;78bY+^_zWQe(JJY*MNp_knv^uee94JiB5pG3!$8r7z!P^CYL2ya%R}7A@{zV4&G2UtL35;(u zILi1z!Q+B|D!45834(=vljz3?qoV$UIlq$y zxBZr}CHfuRoL|o1)r_|aZkGJEiGAPwY=54?S2Mm$@YpvQUn{tB2V>lHecG;MToF7u z&iG-$ft`#oytRHw^q&SVt;IPR0enZMQK#&FFufaY=Aq+INNE0ZG3>aODct z|Bm2^n;1VJIB+Io{0!FhQ@1eQWAyP(3Q_fpV87IFQt;&UoQ@xZ+CFdt<0d#L@mcx~ z<2iyWg5N86QgFNA>Rqh=F~Rw-F;FaYnBeJH&QW=jV&5h>kAVZRIz+JlD#jlX+&0d5vEUAAe}~|_q#q}^EVy5AK=@1< zdr2QL`r@yr2(EmW%iAV+LdM@Yg2!b3xYF25eXbYmzmV;37n~RW`JUkM8#(`xxI^qeEI1(kv)rU# z!sV|N?7y3FKj9YmkIavsG3l5XsXx<#`+mc?AUHqF`167T+Zk^ctj=M4uHf;{F}_6b z*x8K71rLb+^~U}SoPMX^zRxp$P;m8h#*YdPoWb}h!R1pKzi90LlkqDAxEqFr8`>^2BcD7$GxbJkvVZmidUnjUj+Gi04ze@NW5!@zttKc_fJ%%;C*6)+& z*Lj4geibh7YQlJaRy+9lc8lo0OY*x@^g9-?{ymajk@O!*dgVS&e?;))X2yF6Bmc7G zUlseR*zXnGC+op|g8h=-I-TpkUeezscv9N;e!+W0|471UU#XqTUm;le8Ak;B-^cjV zf~$ux9x?WxX1rDKz!2jv37-5Q;|m0rmogp~JRs>e2@YVPfoiF{1p6(<4+?HOhVjn@ zSC3`v9G?H?JdD=l3z}6hxp&;1m^{xDR@%mgL4JQVjt2bA23&5y_cq{18t`Kc__q!CnFhSK0l(IO-)z7NT-Ud^xd9*0 zfDdZG?`y!n18Y@WPviPMu0P;<9@h)F_Tu^@u0P>=5f`nsU&i$cu1Q?4;(7+xv$&qa z^%}1KZGL_ge}_H7xY@R&9aZxxtnQUpy_nyK#Rr|&WO2MG)>~zW@LpM5Zz|AB7LL(t z8jA5-r+Biq*%sG(j(E+S7*w_R=2~38>2y-kwS-KaLB=tl7u%wZx7{2YEYN#R6UQ4u z6Qx(5CXV-=CW^P7CW<}5THJD?ctdJ5=*6kT>tF1%2*jY_x`|2brSgkd!Po+zcZ>${ zn|p)ky?tF=GpVzw@svtn`-62-3Df=*c1%PjTPA`Wwo(pPDcVbsWJDL4I5t;Uime1} zUr5|G4DuUEmey@Ku|W2(7^G>7Nunv^>urxq+oDAfRD1){*j*(7naoUNv(;|wS z_NTM_YFw;wIADu@LtcmVt8&H}C-02ja;>XX#wp4v2ixJ;1rf`d)G1rnTW^?%j;WOF z+OgE(Jck_(7S-?2v7~^lB#B{XiDR}?S=*_bZN`9&&3bITh^FJ>wo^^psU}{#V)IBe zM+fz0i-Sy+Y*TmJ>_)MQ*^XpnHW}m2TVTY@9$MU-8o)UOIc^Y7r)Z~E(OvujG2VeC znH~>xr;R%Zw2rZ0Ae*X4q|P#FI!;@Okh3?L6hSpJ5$N4mXzNZh$_#3{jIp!JIXh7A zaXQAfb_Xra}Zr`ZB=I+-9ycMK=+&Vi9*R!%xf zawnO=zhR>%$xIJdURj$#mz|U=K*h#j|mfDH2iMufS0qoNLi06wx;3 z7!65HoOY?=Hl3Q#A#J+I`3J^wFhT>`9?}shg8WPBpl`fmLno+Y&xXzju@N80pi!ka zwRHrEwB?PXLpX&&dm$Xt513+3pP7M#?tEG%UaTFk(c@CeM%%Qv;Vu#^D{5!2=uB7L zsjDeRy!3giDH1;PrA2(+i=*U+SglZl%;_se&S5M*hGh<5$W?dTE*z+Haexd6W2OiF%^$=MwBiGynzrEXK#)tv72S$ z*-beojR+nHM{38<<%@$@sbms% NQMl68tbZ=6{{kcP`rQBk literal 0 HcmV?d00001 diff --git a/src/plvm b/src/plvm new file mode 100755 index 0000000000000000000000000000000000000000..a2a5ccecc69261d3a5cf1be24f675e0b7c5ba1b2 GIT binary patch literal 68072 zcmeHw4R}=5x$d4Mqe)=gQ9-Fy8BmnSj{%{@pU@zT4oV;mK~YPGA(@brNhW3{2uf;j z5@i_1Mz2t-9;Fs|@PW;mC_0L3O zAiC{RAtyRZ>T;50SQbo|%O7Z1=1*v(+pE7>*t=e87_?C!TiQE8GK4)>mB(A>sRu9J z-V4&+|Cahh6Yh!MasHM21NGIl%cVlPz4}{(f3svGiBA2QY(wC3HPqfzU0dO*uC4Sj zZSIdJZWZ>Z&*?{Wx(y)_XX@8`akyM_W|hry&0a8nq3GQvVMi;1kbX^k)(o2BjSlK7 ziaD2Sxi6(#ztrA%=<=^gl$Vr7`0ECNl>C~(@kV~72%?5xR5N~2J|E{7`9?pN%jhapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0foT-QwS__hTd_8 z8V8)AhW;MMVe;J>b`0npTJX@V>vkdE?<_AqylzDHlxVp4aA{@`Kz zP(JLO5xWSVt=q_2nk&w5Fw}`~Mp3pkSvFCh)94=rM$-&UZ+-@D_Bf8BGzaU{N5bVQn7tN=<~06>eKC)8y}9tjTUdW61c z@3NCL8`Ah2(uUqqKvn7;MV9VE**SZFY6v#kwb*O;wwS#MMl+lt$3T1r6%oCh+P)HJ z*lNL_MsS8TQbRQMVMO$zXfNn(NVjpzA4T0DAaq2DiC{-4M)i&y^k_?okPL<&~{H{i1Sy9m@C$3dLKj)U-|!x^?}g#rK?ThtsIEJNIZ zNCIRfOLoVuK{0(;`uL!+8)`U$ff$3M1F5ZVrth+ene={OeYP`9ns9WFGq?xMp1LkO zz6%adiKdO~^(Q;S4NyJF8G6YX?1Adcbti|5kF47}G{5_^>>)*R#LDr5@YsyF01Vsl zX+5Y{8u9V{DPIf@F4=92XJ=%3H@G}4g&PNA`ymxLn8u_rf8`k%KsO91A|r2DgD5?C zETvR3-Xc~H`W?eK)G&aNjH&Bs`u6=P8veRt@4CI1YKEaaO-jWBOn!a~W>ieD<f_Mo)G%uw;%v81q*i*GqCKBr3gRX$IEZD5Smn<c_GaPeD8KP*Y`3%jXCps-fj5XJYwBX*54sMAA^p0GQ4&>&7k|NJ!w` zvFYsIfs0@|vV+uP2Pq#M$kuNg!-xrPFLPrj>N}gQq!t`FM{gFZ6DwdW?1HVQ3s5F@ z9h9fMEDeVKg!bPEPN?Ns_z~PeXHCEJ(;TYv$vPMdGwlABT_SlC`q$ePhox~&58HsT3h$f|Ul58YKG}MO^CY=$Ha1S$^x;nP% zQ}Vs=##L;X0v3HGk_ai#9;qdp4Tx~Q*J!R`!1 z&ELuSu8owe{ZFb4Mk!t_6jB^Goe@(py>laltwoj>t&Fh4MvonWF<{9_sO5m5D4~gp zW~tLT4um8a%|eWkH2x>pML90Oy9cAJwA2TsVBy}C)b!@RGXPHxko8F6KhVb*xjQbT z20WPpef}Q6Ne#BpCh7yBwn?Z_JHU(!=32p|AqVD1g6S1Z8e2)`wSr0Lfcde|yj(D8 zM1lD?!JNcQp69sXc6OR+y^FE8^iCqwLoHDhjMD~XN>mcaYvCt}4}&{|!Pha!HU$dn>d>$cx_K;d?*+qK)hw?vD(;Wh+Vr3vV=;xLKH3 zK@~=9w?mdFMBBcN)F*mJX$DOgeF#nsXru)a^DKr?7T<$V4zq-=fH+9jl~~Y8WT1N> zJB6De?uq?dMB>hxN2?+`|u1|6JfPBF2=H1Lza+3oG#hQ z*^irqA0w%J=aXa$KKv4~3m<+Ye4w!>Ww8+EY1y)1;iW^BT_ws+M%lQXs~92FWPC0a z@{>pou_;JRyX|YZ@GJC())K+}T~T=71nMR0VaO`O5ptULl?*+0l*kcF?kbs^*lotA zv(>dGtM4Mv(cD{v)lEZNm5sU5RPu3Aau!M^8xt%XE0iRt9BYxnp9o}D`@rugrAQG!HTh=>DEQkt=aHovi!BD1FB<%1GyZP6tT$(B(LLqHo1&w8gVHnwy3eis94Qk-FUU#GV1>mBAgn zx7C~H3kz4EJ#dzHRkRt%*C7 zN<0@TJ)A{G3v({ivYjl2t*4-CQg`S&tFUnGv$P+_9=#H~{~@k-gNNyU!9FxIc|CFf z*AWMtbcqqME%&i&CFB|=~-Dl%g z9d2th91!LY=pA`5G*K9O1cp%OHs__*4X9AR4dYKR80ceER_`iU`z~FWpqNz@t3|Q+ zvj85f&rk#|-N2Tt9Z+ya8V@=1_QX`=ps#SbPi2N)Cbp_3ePharh8lm;!BgYi!$e#%8VMS z%*13FQK3Xx7Ntk^!`7>loFY=J5Q@`~Pehk+WDIF0g7;KV9K08yKzy<&b*!3H zj6mrJ1se(cMW_m6`&rW%341`L03v$fRcxfF{U)0am~7I`8VY}5v&m$$ekhx_3!B%N zY&uOg$CzwRG}%0RD4SD-%?y*xBUPzw&oS9N09g{qy`YY3`$62^pu3H>->|MRxE^Gy zIiX@2@OPO+K||CRF7692+JEuBr!dnE>T|jUIOVKu0KNzm_g;fh(QK2o>4r6`XuL^u zh9OF;$RR5_x;(XYhe2^g!;OkwWx3I!7eHaU5H0F5i5@pZX%#Jy72U_asOWJ}T+zPMWQ!g$S-Z=yMlEVKiB=k-w2J1-imqX8qar6LuBZwXVZ_Z~ zsWFN#AZc(0?pa;%-(N^h5|$6*-dA#d=mW);|CN>E3GB#e3Z!NEt5>)6tZBX8sJNH!3&7@(KHYn%W53S#yJTrzWxrO%@spEl zGcGW&NYQ=Xc*lsLYtlOhVvi#}Q|pO`SlN0V{&sG%6RrlOcVac~!($^Vb~B2_f0(oz za=eh*)?nc%YM$Oqn?=2I`WLw7oY3%s-Z}CUuccCVrG4r z6hv43698YL#zw4vAy31$HY&#tQ)v+02TIHs;o|-L?BQl`!VSIM?^-N>4R&J-CZ0j; zH=aRUZ<5Pr6v4t0SVud4DC+Vv4$~)-ZgFq-n-g|5ZLO03CIz5tw zAd>`*z1{CwET1KxJm8*3&Mv@k{}_hhD0Wcsv(Qz+!b8wUeJ62!g%KftmE`@W7{I`; z_1DYfW7&t1!Enq0ps5!EJ*3UgyCj%44clBX%QsSy#2W1bMFTsv|KdR^9e596bS)zPquf%2-0EG7Gn!Ygch8CHF=5dQ% zOyUlY$@Xqspdl`Hqgq(mK(-Te!;i^;h~Kd7Mw6&q*v3YKrwv(Yyg^uN5Y}dziWH<; zJI5p%IixjMKF;^}siKBcMGdcGx=H%`A}9mzCrFZxcM7Jz!^DAh|Bjuq-Ok$SnEu#g zy$)2$Oevc@l#?camx+p&QG>&_2_}0;@qD{N7{AnHVUl5ijN473Qw$LqpI{jO{08#P zF#aJZHhz*YevqZc&aw}bvG=m>Hi@1zM7%3`%&`6-D;d^XL9zArVGLiB$wa+jf?W5Q zMAsT3vi`GA8|C$55i1$ir-EYZrNa7HlZg?A39^2oN%YzEvRO&%`=Im|*hysegJSDP za@qH1i4JFr_ad_62L*R)f{Q!!=znne(q_;J5V5_7! zB*fQ&Ooq?ZLRo~*Op~a<5K%+UG5X*P)-g~T4vO0`Q5gUHx>VyIf=cx8n3Kfh55HZCsF?+s01**CehP|$S{wW;iwlMW-Y_~ zJ)qe8C$bruW|NJTh7Iz*+9bNc5J~g2)0KCcidfO8VJaxDp;Xi`)?{XcVTR*h5Oj4D zxj-X-zRvX+rUceB?lvaw<7~T@pfddU6)5&&?}^;f`&eqsAsav?fV@=@Ca~=EG~)J922lH{j4iFqZ`8E>P^y<0mjMYguYI z zzV>FZulEv7+XVT3nDq`)7dLy?P*!Zk#nxin*B*~Q64oyu3M>tq&*b z5!-MAGi?3iLL@xI;pNC4Q0RZ$LwJn%aufWq-pTLnS$ctSVsf}YQIZ~^L_iTVrVZ@R zGpVYPKZmopoc;lumv3et zPUpf#DCK}U&WE$u2isW;nDyP#)aD)lMYV}bBGFv2g&w-eZHdy<*jQ;m3rwrxCdF+SnJodx-(f3oE{U#{U%g+-(t(SQn zO6}<1CJIxlw}47%wRl3X&BCqTM$PE7`q^rFN3UQrMvIq#`pS+z&W#CN-stPIKpp4C z6n4Wlh2RNWkCvo1`Y@=k?(5@fd@5mp8vbigDK(1j?xK+y8QDd?eN}hYvMHnSOQkPg z+TF*wGTG#ceJEF^iAlmsSGnOC;?~Fa@r2bnmYmDS0L5?PNpZkBjm+0t&nL% zraNW2Tc)SunKZR?g-p9-dg^8@H=H{j|(~^)3;?>_@9EmT&9=4FX$?n z{x6wYJ`ns-GMz5dTA4m2)6?+U1NrHe>2oq2@sZ%Kk?G4aos3r=NPmq?56bkszY6|O zWcr#+ogWMS!!pglyBkzKU#7Rq^lh2WIwIr`$@B}Ep87XgPNs8ZS|!uxWI7fvIg$Na zWqMGig?Raj_z%hSe7t@~^kXtD!b{pjAC_q&UT!8jA8*Q1dWTHkk!cCu`62#(na=(~ z(7%)E#dw}i@~BLwB7fZX3TqEHVN~HW7~IAf##hccPJFpUuWknme^v~c-ds-OE@Isd zO7AS*O808{*+ahIZ%O6Hu$J{g**A{{X%@X{-WtyniY2+=5e*W;hF09Wo&p|j;m^cg z4Ilb!4Rwclv8ClV$0OFO$TGcRA9Ad724kc2JHAJ2T^Llv)xpyMD zY1}6tuHzL1yz)*j%*32;;7P_a>w?uISnb66oYt4Hb<@>I63>~} zfvODS^Q!yxosRp112(+{n+)+ShSaYWvziVGW_m8rsl3&*Op&7(GO#-pAS#3n3>i5*xXov0C{+ z(b^Gzj#j9!)nzjKeUeJpfYLQE0-aw2ZM+JDPZaWYevja?gWuz5Ll$30wKc7=wj=s3 z5UrdEXu`#9>&tBINY-}KKam*Xr!S5+z6ffI_o7+AV}#H&RQLnC;1gz)wVhB~;*1 zQDC;Iz;r4=kZ*>q@g~t3hUkH?;{n_}+ANUIWF-Unzc~f+2^G2nbO_Ak<=e|rg}>mS zVTR%JA=&N-WYZf;{TO{%HR=5!@p@WV#Kuv+{6rh&S5P_R|JrApkl>B5GAQAVu-0bG zKTqQ5#qk=Bk(hrj!to4_!#GaC{PO~iFK|4DF8Z$?lTk(=U1WS;Nbj4urDOOwq{s0B z+`$(_m}(lLcs$A%b>iXZ?cAey4=os_IV6gi1Ba&X#LMK9^p=ZIF2O3Y1PA@r&9R!a(&N|;5$)jd<%{+9E0GOe){96*A;dF2y@^;`kq;Md#}`=8q9+bQ z`8rY#U)CGT+e4w+*oUuYu>Fs9@1+lZwsRbBk3WnC2OG&Ewt2!LJ3b@!=jZ6@UIta9 z^Ve>%@1i6bitT)XMDL*jLv$t^9ijok_Lwx=jj+v@vQUnm&c2Ry2u*o}8yK}aFSf3~ zf{ah#g0={^#kvwa`DWivp6Bt7UZn6c%ybwg%b^;_fks>Zo##U2WH4oejXR9uYdRwI zVT0q=IW%o>+!Dl)<^D*y>yevXJZIr`3$@}|vz>G2 zXeEovX47fjd^#_r(_HOJ2bef9c{%Z%TG@g{B_)nhZT75r^E4RX)ajU2Qar2lYK<}w zEFkXOE9WO^&XqdmIc6<%2<|nr=FZcK9mNYBWt7Y=xlUVHR%#@(%Cv>_4|LC&drk3z zIojNXi>@r=vxCm_I6u#!IqK_u^_SSIJnp&+E9>1g9(%dZ>#g=z`)ViWYUhqCn6@}q z%avNbGuqjdfaXx`MtOQZs8 z6KmSyNi#*?EU{}jbLW$4suAtl1*LPe%dabgAq3HaQipxKb53bK>1aiXPUU`ZdoOg< z2I^NEy)~!0-cug%3Ge0>mni;)K_|aH;u7R5;4LZGtI&#-uu!0)+@sL^&^7XJR^`Uuue_TBCpOo-U#3@ZXFRew4?~1pnqW{aewrhapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4hapb$_9Cy)5Kssx1QY@a0fm4>xa=ssofCk9=jNx4~aUQ~^=TJpn%vGl;0GudWSL5?KTiqVg&? zx#f3)^woK4DPMwoQgJa+4GG1iAnQHu3R0{>-XEyOEeM+s_(x+U*%$ZF7c4dpHyRdVq3Y zX1Uwz)&7(T19jSmnHhv+W_fkM=hp%aHFYj+Lx!hP`z#|<>u=PwtbnhgyjuIIrA~V* zbG3F~R+aB2>dAmddm;-eKStq|0GRx#)3#f@USGM$@3K@>xU@fHWNEEU7A;F_$63p$ z_ejV742!YMEN$~zV!O4EES?%yg*)KZqFGQ|A&fL-RM%>+L#+>LS=u314lMI(_htB3 z*J$sN_1nmRPy0=V+aJ)5W+K0$0nO;ja96l$d==VWu&BuIxyT17(jTNE#Cwx@pMckX zJ6CWAotxIN!#D#OpyhH`RA`$rU0xrV)*i^DqDSD>AyzyTBE?mJx7JX3Hq&3H-I=x0 z?G<6KJ)H$l!(_I91D!W-q4S~l=-m2OKCjJ0{%$_s!{<#nYZ(>jjdfYn+IwK*UY2a; za~sS3-s)wDiaKp;Rt@>J2U_hyD@YdG`P?VZC-T7QZ)~z`w%F?m@(K=Fq8aTLdqF{y zrQLGK(tdh$c6$yh;dG!*(>@0{<5y`~1#F#;XgLXgJEJKo{tg8Nk8a6hbzq>K#vNiQcF{%wj1eV?H( z>t8MDyjemXl=_>c{yL)3`u1)izenn~It2X-seiZB|D}{~E)w$JO8GrfzD>&Qr9uui z`**LDKQHMvNxw`q+Fyr;Bhg-$v?kjZlXSoI|A?ep(LbbrRMLG#g0_N5?J@q&3E5_R zrTi=@-`p+q^N9w2tx-WwlKOSu6ZCYcZ~VQKLaE;__2+^X|7-laHjS=Mqt~R-7=5Pl zccsw}q|v`hqaRPBJJaZ{GK6l&gI3LKoclu*s#|pmj&sGs7}o6F0Qb~jWx$r<2KeH z7q%B-Wx{%$vb4JV$+gf$PWr`KNfz0Ve|2JR#`Y&=lVaKo@%F^T5!)kXiJg(i(!NOK zcvr;P#9l`3V#NN%*ty6(OJcW@*r$jcim^9I>`KIb#Mp@>_8`aYzFaP5VQaIJHUgUV Fe*vF+Pj&zR literal 0 HcmV?d00001 diff --git a/src/prodos b/src/prodos new file mode 120000 index 0000000..1e2a53f --- /dev/null +++ b/src/prodos @@ -0,0 +1 @@ +/Users/dschmenk/Documents/ProDOS \ No newline at end of file diff --git a/src/rel/ARGS#FE1000 b/src/rel/ARGS#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..63b00a08ae73ecb9ec5a8289b313d2f0fe6428b9 GIT binary patch literal 199 zcmeBVU`l0R6cS)zXcstq_Q>U%!3+!$%!~p23~3AreQ69m1wdQ|;;i8Wl06Ap3J!ix z{{#6<3)C2Ln9>+FFagE9e8fO%QkYsm0tG2dK&=Gd9jW5fX@EV#s0va|?hpP#}gOhDk_(fhiq`%LN!3iy0UuRswM&14CmA0|NuZZ2}Ao Z2QM8zcl1UGN4fxzb?oG&%OM;<^#FiqJ9Pj6 literal 0 HcmV?d00001 diff --git a/src/rel/CODEOPT#FE1000 b/src/rel/CODEOPT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..e96ca080056916481e55421652622eea14d0570f GIT binary patch literal 3074 zcmb_eU2GIp6#hCp-EMdLvkvc^C@=!!^U9mJ}S;tZhHiT@N<=Ql)Y1U>_ z8`5+)4K`S@ZLpHs5Mv}UW>b(5LhvUD6jM^dYWWc`py-1Mk4AjhcCY8oOs4~Gfd?OE z=FWG&bIy0}x%bQ@J<1NC%&Vfi^7Q#LGgr5yr@x=s3~bHMLzlu)=WLBTw2#0M;f}}( zC!$JAKD{(;Ca6wn>igv?G$>QZE$$lWAe@$CRtBP{7#3O2~y6vRE)sSs_dP~!a(-)qOoknl0z zBOp;GpC!54seP=^><&!0be98xP$9Nw$yKkMXzC@`6mdx2V=}@q0~oP@g9bqB0?mPH z3;)2xO?TyB8bziwXgO3_gn5rqgBX4wah=LtsYk(G5#|r1s47w!chRjeln*Jcd{IV& z$@s^iTZNrQl7AYnBwo+?>fN*F%-2$|zWG&?VU9Q`17~Z8GnC5X&PdaaJVT01Yqy@4 zN~|FpI$)taHgu1LMr~-)Lc=z+-$Ltb=$M7Bu%Y7?T4Y1_S?C>e>7?FK3;orG?zhl$ zHZ)+NM{Q`(LJ!!`1`8dqq4gFTv!NR-bej!rw9tBJufQ8XTm&&7Hqa5PM@lqcL^L8T zk~ov?$K~v9^kfGxnB9W|*?n+{QB;Wi@QX2|v*Wmx<%--hMSZCPBM5DD?rtvgc9m$q z8Ot=k1se?lHpr7HHyIO+p<=K)+61!x%s{v2HKe2uBA`CB4D5ND*IyTo%X<&!Sz6xD zvy6O?=VuMiXt0ZPgS}w7D!x1N6S;CC`g)Uo!?jJvr?`~)41Z-(sGglb z@vL@OmE9~M^KiC?HX6?kI=j!wl&Jm7vmj5N8k1+Y#)hs*F5o55JW!ID76))cX!T%G zbN$wVadWr|tjip(1dE%)3TS1>_oG)ta89)1N70F&MGQ9uS7@i@%dKhKl7f0nq-pSf z7W@WSo2jP}tlb>G1lDa1*MRky!>7TT&0!U^N;v&^N4$yKr2lKue~R=^k^VI4|Bw2Y zb@i2ChfNRE{*Rl(`8E85*6?;NV^ufa0(Qi-Ak`<#AstOwDQ`fYV!f6tty;2i-(yBW z^pett(X8e&XiK4$!r>>?Nqj+p59JE{z9QG0R3BYX{mo*km*~C3V{DY>(_VY=g1RHh z;MhV2-#v5&vO*7;!Tm&hnVIMukGuXT$hKXkGJ;e7Wi5XhrUs zdmKG8?`RP^Ia(ydJ&tZs%_A&o{sic!S8WZ1sGaR3A+nL4)EPVnqr+s-$BKNk1yYqp zQ`7fV4*o8a-=Xu{AIR@D`Rk#rLrD$R&eozo<466S0FGyan9D}-`z*)fb8Q%&Yscle zF02-DXrdb(q6cH54;!<*h(0L|w8e(vMchrlgTB?!d{U|WDQt&6ig9-jjZ}^pSL1G8 zw3o<5;p?KBzG<{GUFJWeR!bx@l-4n6OD|+0Z4H0KpEtfDxSRezRnwHaQ!4Sp$-ko| zE#8{zUNZ8ddYe+_g>ss%>s|~`qkQ-ZDiWJiByKp77%xELDqT%3Bu41^gs!qeB&rKB zoab3S?4j#Lx;A>2C*Jj7c$cRNQ!|%-c-31jpVQ6W3Y`6Ea`Hm@=JZUncR4PkFHW7G Ox;A-pX7Y7!74R>w^)M^| literal 0 HcmV?d00001 diff --git a/src/rel/DHCP#FE1000 b/src/rel/DHCP#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..9036d47d03975d2249d934191d2add922b135143 GIT binary patch literal 1308 zcmds1T}u>U6h7}eGplW@zO$)_Z6RWV46>S~u12taB(0h(YO-0u;ukWBN+^keI9o)) zM(u4B2}yM!5#984BWyxZiqQuJU3Ae!kip&*MHkaEGim*XUU=p_&w0+AIcFH=mc)mM zwW~7S_or8$yn5gLY<0PZHjjmqjk9!{F~AE+jCqK0N!~2_kI6uyd!UA~{aMUi(wEgZ zF)=z6iBvo5*U3!s=(P^FC?+wPM)@$^<#D`2J&4Of#+u|+8>v1irf`~+qjeO`qCq)1 zDZ`TEbBngp!>yg`mXjFfWgcYultC1rE)h?J_@83kYT7J+WR>(OF~2e_hvfbW#>0y_ zWb+X3uaM+$$6H%vZ0I#T<7$W};$08PGhL=?^(xXL8#6j~tz(aQ>0n1b>9y0%s&>Gx z$lUYVHAayjy;-XkTAPaNS;IrURnb%AwOi@p-&Wl1kjHg%T~~A6 z+zr>~y25o!UDp{hx|KMmR!gCa7WMhHPGRI@1g%_kW3kY73awZeeq{9)Ev=FvQ|}Ds zo-Pm^W714Luus)3EH_dhv<8u!_`4St#$HKhv5NUTnk^ItN3W4G)mx@eRH22h)=Z(O z!mUZPM96NrlSQ^4?znEDlaXytqzf#qY3?M!ZO#W%5{Z=bk57#amQ0Q}KoKDN4OQp`yZ`_I literal 0 HcmV?d00001 diff --git a/src/rel/ED#FE1000 b/src/rel/ED#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..8910199e52c036e496691a8c455c8fe5d76f8c88 GIT binary patch literal 12248 zcmb{24SW>E-N5nx?Y$*IU@s&D@_InPa7GLkHN`y0ONf9+atTL>kq7U=^9*SO8qSEQ zkb`JZPjm$p6=@dcHNnu2fCSEMLPMJ-aKYWDffUIJ+CW1r9S`0<;W z*`1x8otfR4-Q$)#?Mksd;3*Z?IZwa%%-(%dp4{`?lxKJC-npwn@@0^SquC+OW~aEC zUE*$b7dX~A3Y_bl1+I0j0{1$1z|r9dI6IsHSBER$?r_Wh_kT%K%Yzex{_&;%=YpI6 z=MtJ_YsXElt?f6t54Fl>*Jml~HoKCW4cF3+VpC72Lui&W9GEW__>-skLuK&2xUi^_)9s5B@dId$M z*J!qg`1DEsB++WMK(UbWs+5bAPo;`fsu!tjl^U&5xukljRA7?dCBD2`O=`88WJ(IQ zdZL=tf1)pY@G6<@u0N`8aff{7z-bcJn(T>W#J?Jn;r{=j4XKixCUMRK|{>|pP)n=2sDENS9Sg(qyL2pHw zck=kj6;+oG;L@ZvxyGqQB&4;bNrNLIZH`bx8|ajPQ`UZFMjb_AhgRzE&vk^tj%6(o znH!O~%EktcuXS>`I{ra#_u;?thXesirT|k*k0nkKT6;tNn5npLt*W%6;^C6 zg*YiB6x9N5nsQl`^R#Ip-|eF}SrsDMI=cKrGpv=n)mdttVJ#l~*fZPiPp7FP9HXif z)*|+~5qquE%2Gp59oEa2NMWa&oeMtI3q@0r&-K6=QvVT2y=B2iI-5xFxBM?=BHqFt zV*b-}k)_wFg`cSH3y$iE0~Q?C>p#^wS>g=!pIdS3BwUvoC*%$kQUSZn7P3ArGs!(L ztt%dM^dV_&Z(RGX*(62Uf&;oNuz6&`SA@rK94FxP)a}=2e7a)(ex1Rn*+`Wn`8_mt z$$P%{@>TPXe6NYW>{T5S@)wBJy}8nmXw3$@m9vM0?IYh)?K^kf2WC_&>gvIee@Nnh z?9&e@SJ{iZvLEWsE}VT-5>=7<1KbPx$*T+Aown`^bs?%ym21XvRpWoi_Ux%_Zksfz zifXNA$!rGa7DuRLQG?4@RJMV!;PU;rRE@;mjJvd(+gu}ynzXh1%qB-sM5}ezxa<)v z;+Pw8FtQ`6b8B5SHI!E0OR5_j{uL5-_!ec>XG=BtY1^=)AjwxzpUPgh|4b=x2YaY? zr6t`ead#SjCibC6o;aX4a&2*rAt>q1xbqF8{II)uQ?k08!Vm4ExkbZ{dY!@(8_G8H zRy|8%*&5Z+WBq;9X#I9^s**J|)wY0D%(BD@w9@Y!I=cLT$z}9Y6_+Hb?`uU8msLJY zh9&hJ-`F^((VI_kbt3#7mg1c=_sZF`W?wbZOOl6`wYj!hRYzL?LuP9QPBqrFnZdyx z8p0KJ)~88z*g5e0e^TDHjkBWPEwAf>&#kSFXs4QG?L%gh#uG<1hJWZkDej7fIrF|- zTx~VA_x&|LMSR&*IM7oHYra-f4T+-ZHOclNdFrlFedJi&j1qXp%33CnM+I?wHw>LT4P%%luC3#?v)oEY*5�gbR4$xIS~X%q(nf zz9%BIL$MYb)vN-QX~w%<&uV+3gz|DLbTr6m2is;AE?TrAVrz`pIJjhy3g&i|+$P(O z=?mN*P8yp3jb7K;efm*eH3`@g^(v6M_x18Kq-%G;qtd?S{N$7MeP55ye_x*-+~2?6 z>8U@V2R;3RgEFVr*lk`l&kBQDM9mz&ic+=SsZjBSU+H9RS$IsZ&(TYnWeJ#%>e-yb zta(BYWJ*2rQ<=Xv6QZ?4ZKNdTc&*m{kEN@}P$~C>3avBPJk+OU;c?xUQR+{n=a}ob zfktL9*QwH(`4XjDo7KjXrE@LcJ4-G+{Q}hmAFvAVZ=IBB_1ouQ8m2C6wgNTLI!~K; zPw3xjE@~#F+;FN?o5wneBTD@_s-nxNy6O&{m0#CU+cH?;k@Fv_#1-nn{#kzZcGou0 z#~K>nI$CuRhpVcU`NwpfHm)kG8mugF-uU;Pm+4kD5MbR0$qOcBCIjxQ1jmtHqXo^jolF~q@Gy>O%ga;g=(=no5&VnMR#(s z%6cIp%UB_O#Y5a0jI=Tn*pAG9p_OVK9OkPi^Pk^U+jye3jMK72edDUWjNp@F_Xp}c zK^^v$UYta&hyPHmn^e|_Okg^(uJeCY^O|b4@~I1O*&!)l8Vb(vgk7Xt;t{QN64OtC zi`95trJg@h*z9O!amL$Y*wN-(wm38-ptm_gUCqei%vlt6lB?9;lXcHBny=_wZ*BEj z>rp1P)oMYU=pA)+TJWM=zk}tX8e$BXcx%qdWt_E-ml$E77M)wGt^H7~>BuBMn2EO) zR-irXE;Xx0nXsct5l2(9Z%Kigdv9R+?NQ?rS5)fKBx*~EvM6b?`xY0d37@BrFe8VZ ztm2X-i9CJCQ;^i8X-y7ka{2yXWh;ufXzg%Pz-~?EHVNL489Xn~f5Hr2n%5vD&HlF} zELFFPFBX+RhxnEg>=NI-1W$?Yeu5q1yP4oo@vSD5U?GiKZmO68zylHNdU1po?HaE*J%`LLr{Ea+fJ}OP-R{6ELjpH7Zo6YSKHGeB{ z^DUWXhGkT9t&P5v`Pa3}{L9+w`nN}|Rf*Ss;SWs)VH>$uvMgniC{AKpuntxw)k%Al zR`WGa@IPwG{91~h-(IJ;7uC&dr$r~L7Ck4?qGJ**Ix^7+KT0%0VWLF`Ct5UD0$Ji( zDji(*r(E{iT=pI=`z6UAv9&8G?qwGl_9KoU7ey{D>PYpW9}dA=%5hFs@eVCsQf8L}i#MbgFIO#Y?vq1i5fF^7yCz}D%! z4%DA7O~FEGkBEN%JqymarY334l-X4Unp(A2sa1P{dc{%8osZ3?s-j4ce2LropjzS& zR`>7cr@dra@vfIl74Le-zDmKq- z>qU+CE{AF(U3C;&7jQ^oBHNZRokD{x1A{vTs-sxgNsI8vT6j>s14U%pL4D0k^?voa z{=`AOaqS_KniNr3;=T4{G1klDcgo?DNSXhk?lSv-yUgwa4_gJQ=2B0(h!$VN!;LqD z_=v@{8u9vrtZ5GDRD?t;@2y(b3%J&}miJbTd1#?E=}utzsveAL!sUObr%WwfxLPjN zO1C7Y-chz2x~m_2B$E}2dj2`ollGv#fhIhtZ?oPN%ltLgtD()K8iC3&NvitTJS~a3 zSv^R1clBW6EtK6`WKE;$ZXUl@y?I}x!A99={8J~?YHGUMJ=jzg2}Y_~m&ojD)ezM) zLk*Q1cwAQcCYSl^rNExp8V^^}B;m?pEy{G}7E}_abK`4fo{U%@ z)e0*4sCHv&SlTKZ0=|k#{yN%TRf#TA?(Y=2Qxr79c`zA@O(^?#-N-|wz-C>kJ5Ka}}b(jCN^@vL4`wb=HR z9=AqD0Yi!Evs-=5X;4?G_P14bwR46PXazPas~U4*iARO6Inhe4@8pP&uW6)!(~3`& z-Bs3UU97G+TxstL^FMB z4gTHIRBfVSZ;^}4yW}UPDZerqR3#c8*TPe|jWZKxh-weM)T`B7B&}Zl`_8b_pQ|Qr>#@i;2kr`2Vmzra5@02(=1>*q`{*?0 zX1+M}R4dTFLsC4!jJzUMT+mfewaym&I4kg#EjS}PaLg8bBRlY^EqGH-;3He`ob12> zTX21L;B8y5cTV7STkz?ez#nbFYqJ6`*n+FF0y}NN;{yY~w*~b~{o z0~>AJRO)WbFH(;W>!IRRG4;^kMBVj1IsGMOk-#;o797g$SVX{cFEL8_wis+1%!hL8 z!JsCAORVLe#tapFX$YTCx^80id{(y~xved%gx^_`35j?N`wblxPf&YR_d&ZSb( zd5aXX+#J(+n_SR&yL{Anhdj|~$Yq_&rLuE{xLNHD@4QE5b>1uIbgpFkeR73)zYOhs zfR*-YIn(64{-fVaubFIpLO+A&6=Up3DzCdN!-S8p-Ak~y!G-*O7mQ_|8$O3GwIz&6gIQ(DL9J(lEj2W#hUp&FF-pL}_cco6)i& ziH-}8jZCC!>I*l)!0XNMSnC6IWFkitf%-8C@|A{1n3rd@`lUeq^c4@OO?*Z#CQy$k z{w}kAGzwW?@~q72%Z|FeZMMI-P&6+dYd+xBJp5zNW zY#Y+56Y)LHpV_wH)&st|rTYdg$WcG}_zG0wOqCd@vhmfQJ0>e#-EYUz_*}z-LK`O^m>0_qQxzN>o6avx zy%INC#J)_u4Xf?kyTRq@lwdt?)D3a8kPkA!Reh*6haE{JltdQp3YKbt-%>-X>ZdXU zi~CYU*Z%w1AAIAiB3@=FUt^#JZnh5L_ZMws5pNq#VWq~@dGWwNgF4|2+#$TaI|DPU z)2DZxe%Q&MeATcWD?LRfn`7h>bDXR($IBSAOm=i$EQ8Dm@(Z(EcA5dX!>pA5G^=DJ zKYwlMoF>&K&t{+ML;hFex*s3($5&NVRE<3C_Xf3(o290+)*0+SkZdK*>PM2LYGJyn zPvYPOAL{iV>LEUM(;&pyT9oM6t_DhM>&})XDm^xRAx}F#E2^gn4=$_OeP{8&P%W;F za;W!??oVetkb+x>%5;qtm)44pabv1z|AixP^bu_$R^i$-(eB2xIEJir(Z*sCmZP{Y z{huM)<=6&Kf6@5Ts13>#?FKx89q6A$Sy+XSaZa{qGq4_Spm&aFH{oeqlq=dsWaNo< z9xlZaT;~;S@EN;q5a;bMX@&7q7i> z79qF$Q4Bv@jMX+R_L)s$e}jo$n#2a75a;7cO^o@P!`QB+8Yi^WnAj!O8<`k@VvNN# zxX~^~+@2a+NxYT#dV87>_DcqZTtT z6A{$oYRtp+IDt-RPKot^2YDEbp*R=CPBHFqrW*G-^Ne3P^J1GwKSuZz`*z}Gyn@&9 zC%l9AagcnUIrlJOy;d0DGJ+8)25yg#&p#^c=fxEC0 ztI>*w@GyRjjo58u@Vn}e*_ZyH8$dL{2rq`v?HeC6^|I1skYd_RGzsw z3&Su5rML`N;p$W|8dDv{HL3R4Qqp%}CDvdqeuZD-G5j9S;ScyDUco!qkHh#9ov`(h z80&zT8!70CG-TjR_;3zJ-~x=q7>vgyC`ToNn2yVFJr-gKmf|+tg?sP-9_%B=BYje1 zn}~15R&2)(JdJ1Z3SP%McpnFG2%qAwIEF9rHB30ts6Tq553(=-`51=b7=dD3h*21m zCdS2Ssj*4KgQ&&7BZR9l7xU1B>#-0mh~p0Y99t>liL_MXDCL->o$1sAJ<$jKFaSeQ zh!RXn7h_6#su9M*^wij`Y`YV8Vj(@D|?3LHq?@LNa*9z?~sR&y3Vq8u1KxF^Fx&Y~vqz#45l~46z!p z_KeMB-z@eu5TAp2n2+nR5I5m|tVS!=;x~8mTUAPyk@N+zfN3eN=!iV9w5Eo%A#$ysDgMaA|n}SPmIcDNY%)%TrVm=mO32uRbd+`8%jtB8D)?*_! z<1svrc07+4@Dl!reRvNa;$s}a=QxhP;~Pkp#FC&R1DVLh0Gx?JT$m-sm@Jzyk@#fr zn_n!5X{cpih<$a$8!!j+um>No??_gjaV*PWe3@l8Iwi82hqQW1nO*UWoV4am2E7#PH^%8wELb^#y_*?t+} zj2wq?MUFdGNBk!_>9K2bSZ84o>1Cu>5Wf!(VIA7A6+6KDTWlBJ#UXr( zc=eTWx~78N<+@#kQ*?(sx0ArFQe$~tAef*h%hONp_UkFKci&zs)gdAj3LJyrI;vPVVw$SW_u+R?GI zN>7((cD?rE%cXjT?ArV4?x3D2{QLZ8ckS65)N@qyrJZjC^;}8(gMB?uI(F`<(!C=8 E4S1Vyxd=T;vZ-jB&|l z-*eBq=bYPn&%5m|rnC@^^I}>s^~~^xW9K&vewJ;d>;E)HE{&Laz3>0Fdvovf9qv1n zYkHY_Ki|iC`}a-S*w>pgTj_A_vU;NIO5dAT-(sr=a>~U?Z?VqPhfizIj%=ayqA88NK}LrAtkTS!%RCtx>ut8th?>`?%#L%SV!Ry{A#;8_FnaeS*=XJ43WUS&Af&|GZN{8ZG zs5!(|$2=5H&T0-ll@3j$G8S->DUHQEQYL3tY0RF@tH@>F%%f3r2j5tYxv+M@qN+>o zwi%7XfogLBH*e?N=0e_$tZ@&$b}4Vos1{}BVqSN0GK$L;-NEY`4&)J!GO`Lqv}myL z86JMl(mBdRD|*;OiBO?}oKP_0vq-2Zp~^I}v|t5$uO(HrRKaLv!`FFA&Pr5xup4q0 z%Y`Z>#CtTUGsy}^$}KOqe1chip+)?)N{3LQB@wTjGR~6~i6S?4Snf-av5s3zQ?_b? zr36)$l28Pb0jO20cFY$nSpE8@4TiHFI-e&XmDjLh?WuFMZw2qj5PMjuv#vA=vH1avoMhFP4|R% zIqyCcmWh_R;3{fbe@dQBn=iHwsSqaH$d8`Tg)b%il{d=_KJ+F0c&^D-l=dP`_+a6m zlG<1upG>frq1n55Qudsn*kr;@ckQMUiX1J)9ay;e zR5@COI61ZcV26nAQ^q+dl{zV#z$my1 z<_Ab=1?`{{90kLmr<9ZnVD?mUz9({iC(4jZ&-h#=PO*zJLFfz@IkUlBPy=e=uXE{6 z68Zq1r=Sl)P3U&`EzEfgIAA|`5_E$Xz!7j1ybV48AAv!{4I}Ox>W0HgE)dp-|>aWt#IX^rBLpnd??F&2H7{a#Lofdz!N!deB|&9EZM+aSyZ? z*% zc0eD2ZztFTo&Zn7f6`OzybFCF&p&`>p`YN{2sjJQgNyM01phD4-=GSkjK*|lG9$+i zbWjS)KnPUfc{QHj23^QP&JyTSXdSd3x*EC;+5o*1+6cWHnuOjDZGvuw;u|T`3f&5A zhju_ap^rejScr1x&Til;4P^Us{X;_|E4aU4k7kFm{bTj`ku#hf9?LfJ5^0>t-NSVn z96R@MJ)b6ZsF9bG{Q1K}G&FLie`sL2His9i!MIk#2S!Fd9XvA}*Sh#v_H6d-Kz8)Q M(ZTWTdJTQ~Cp&dWW&i*H literal 0 HcmV?d00001 diff --git a/src/rel/FIBER#FE1000 b/src/rel/FIBER#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..3682ef4e4aebac724d5e8ebe08272bfe077d6a9a GIT binary patch literal 1236 zcmd7PUr19?90%~g1nqho(sA zm14=S!y6bQ0cm7oaAeb+Uq58c&HZZzIkkdJrRFm>9sZk1rtVfFHw~7NaKk~=*2isC zRNu$dezVBxjQo+68kvX5RAnn7W;O9qrpThTnolyXES3?&ywIDBkCp5ECXS^o)!eQn zvrEhT{hVA{r-(P&&QV=I@5YF_#TY5%WA@!-t-y9}AKPhVvV6=Sj*&Y%pvY7g{(SeiOTYrmvDt}y zl)Ec(XP1nU8&51BGU|bGGs+)jkn-=1nUMVmZjI$o_M-4Te(!*eoU2Q5F{)u{POQO5 zY!2q3$wX`zewZk*N1)z9!4TLlP~adOf#YxjF2F^o0U3PYhgRr>9=Hz=;W0dcF?a@3 zFb!ddLJX3y2Jc`SDj5aNf(`88giCN4uE2F@fi}1ax1bAp;4Tcn0~mr3jKeg{KpYZ~ zgcQ7j*YFlLVH@7VC-?$s5JcPun4l1fpcpJ7Q7jrsMiPmoliWZrW|n7{Ru>&oKSzu& z#vM{xO{tY7yVPJrimqX7PEDzm$g)G4SL1p-nm8pjnGj=U%!N*P>IvT{l5W&in#>BKhh#`k1jUj{qik5u(U&3M# z#mWH`F;Ej1V1v>uP?`xu2e5)vXD~1@x%hqm&k(~TF2FERm4S7l1_Sd%Z3e}O<_xlp z)(i|2?HLproq@DFkoE@B{tOBe!+`RU3@Qv4u3kCgC%_D%Jq1`9jvcym^4!S~0a+01 g@|A;^LIe~*%$p~Vo^cUS1Thbvzj`i2K!t$;03yska{vGU literal 0 HcmV?d00001 diff --git a/src/rel/FPSTR#FE1000 b/src/rel/FPSTR#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..96909ae3cfdd8cb71d93a560bf07e93abefc0cd9 GIT binary patch literal 1225 zcmZ`(L2J}N6n;BR;xOH&>2_I`P<5><-Obh#Pp#sipj~YVA*d879#)9&P)b=O40u#Z z5eZ9s@$A8yiJopQYZ<3YTs)yO+&3x~B@B7|l*EMzvpkxie zTJhzZSH1UFdoSM30bFk|kOoK&kzkP)9Dz`aBMo6oYdMvLE~glwwcvkCvc1#QAz;!- zQNajgn~iEe?{|Kd)D``6cb4*lW-djq=#G22O9{GjcEKYG5la#3HL)ey!O>E;%6aO>hOx9bZXUqq*TY&ZAdZ?ds@5%ap2dUq$6XZC7 z_4Rv_?;p`<`tx}9lY9w9ClbhGGDpBgvRj$ha>(v4NhtggV3Ba#nuy!kke3Uv=oXOG zjAags%SBjRYFwYzQQJ16LFDIis|AmYFaiz2L0JS@PBTii5<;!8EV3LoED_2%O(>^= zEN<8AxaG`OkApLhY=*U+ReB7x9i)fW=E&N}mZnpbuTXx5x|yL=w2uny?Xonf7tMQ4 zb3f0#6Y2(pb|hAKKcZBCH6^$1-2D$rsGGAOA=q z;bOi;cZ`JQJ2Ic1J9BiHzM2%3&kz@3 z(0V{UTgCg*Ld*Y{1cN!%de;Cf6W91*1!x|S@Hs(yGUryS1osO{bDEnF2Bv4xT&0RX-1}l?zMLXu^Uw z36rjJi`~xLQlGLJ6TOn=WU8R)e^1oiW3)%MKRR{T&QPFPrOz`>nj$M6fB1*L$kzH- z0B*371*}|vO`VNx4$~T?HBIXRtxIg|uC4*7zb0!8db{toclNIFlC`t9yWQKp!YT0= Dw&5^+ literal 0 HcmV?d00001 diff --git a/src/rel/FPU#FE1000 b/src/rel/FPU#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..c27308e5c1e5c06af5dcfa1619e0ea35f9ef5b03 GIT binary patch literal 4108 zcmb8y4R93Y9mnzK_BNNu1iQD{y92W(lGZbxDWF6Q2qp3&R47zTV?3_G32?#{lwcGZ znaGA0c@sHcLMRlN6viM(fq@#L?SuvxP!K1H48DLggOO5Sz)}nrXurFcoH>*8g_#e} z|M%bL*?n$rvzfFeN>hY5uZ$8`JoU#9Hoo^rYq%@mDse4xRl2sjlHKXU>#HJH{K$U=k}af){Jv69gd8G2 zq=|gLWOW=NIg$hIb9|{CCq=uiF1wyCyFEL0LoG_^tP*NgLg$py7NwN`o0ZbDiU>q{ zk>lSw($$(W>nvIxpFQqU^JM3g$Q*O))>S)S;hSke!Hr^%-Zk9P&rU)gq-)HlLU7dh?&|w9)EM|rIb!90sZKkyy$vf@zO9gV|o8v;>vr14J zWZziSVX+)NZZ3|_Xg`Ht{{HPqT(ZL%C38h&JLdBfcRNz_VjUKD*ba-MGk(l=Y;m_^ z`>yTSq8ICWJ1maQ_~F~p<7~!f-my5hMvq>ntDTrDqZ5A6MyxCGW5BbJWIk*`5tM>* z&_T<5LXvm_tW(xXMdmEIpj!eLs7>NAiB9x)v%XRhdG^~c%kqHLm*e!4;`Ec_^n1kV z-(udYwl`7aifNrXKJ#A3PO@Gj-`wTMN}s#aJfGINrFLp1(aCQA=xyhU*;xC7@9V+L z4&Pnm2Qad~`LvOagr9P1{= zbgb8LOsDgHVpc_OgSnF1aC7^cE%KSI8_O${cAlp42${cL+HR+{pE$>?udUOu=*4d1 zN^QIJOWrL?o~i}BJFTI>&g<3|61*aBBWuM zg!$Nq27C!s6Vgx=VlLLB4kyuqYtURm%EE92P=ZCM#CFu75iPiiWVevgk%Q4FL@^ei z0@bL+F`U6gNFJ^OFNR|5>4H@_uyvT$PS?GeO|5To!A#$YUdjq%_;W#pp(egsg6$5DjI2x2Pu-i_&a5;HLiC3qHdP>Q)I z!#tE@0Ty8~mSQcS`F#!{8x-rGZXTb09B#Kdj*(k;HD91u9#xkrx7;CT&8?Xsg*otaw$4>0FiSRy~ zYSdEy6?Le`VI0LVoInHKW$t^-{Rj0qe1Z%33>WclT)|abV=hm!kthkH8@fY552PXu zy^x8!&>MFn8~0%#1|wGz;o*`R9w+I>qtpRO4?j*ljbqdC6lUQW%)xUgW1hjBC5$VW zzY6QgTglbbJE(V2*D%&GzD4f@PLZ3*|Dyhax|MVN7dK$D3qwXCx}m#WgcZAP^kBTz zu7`WUN6seSM}0r_5bBYP;~4$)3h@NFm|RL-M*RZkT8bC3601>xb=bhXP0V?jaR>8v zVL!Q^e3<%8>bI#+GM-`lC%w;bg)C$dzDd@@-DTZy%fjdh9qGux?a0Jk%kKBj49|n+f$-}5eVhs5aaz3>m6UjmHH0l|cMgBc`F7-StBrhYcpk9Tw>sgK||xsiO5`h9#v{+N88`cqsYe?|V9`UdQYx^YvY2q!1< z&V!4bN=~EBfRB7Pxj*$l9sE+y*X_@U$V?>wfc!u;!A a(M4lZ!=6K@@{}}j=v31l{@7R2h4??!=PuI# literal 0 HcmV?d00001 diff --git a/src/rel/HTTPD#FE1000 b/src/rel/HTTPD#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..78be0a56f8eccbc2073d5514c700e30087a4014c GIT binary patch literal 2019 zcmc(gdu&rx9LImVk5ZeJo^^tP8@s{L%m%s+mx%R|!XAK>Qe2&-&ZK3#hqme3(p?(C z2V5isWdU!Lzf24!BN{`H5Fd&E=$r$ZY_Nb!FlvkvA2HGBA0+%?oZr*Z3E?0AAvXQo z-}n5U=bW^;*HlR-I^nj{8;d5UzqtHWU-`mh^lW)*vb<&D;)U`Sx)UGA#&CB}%(o%B zIdmu5{~tXYHbkS5_6}c%w%YI4wrp}bo|*S_!m}iK z-{Su716Qx94(!x=ip6{}p!KG+x|YKPE++V#j)k{2W3^>%%ifx!J3Ug!kED%sJ{QoE zhLIdh4dc|0XdEqb$zlC5Ma;UZa{iPtoV_<$C}h)vNm0?BA2f7h)re8llfx8~>lDgL zoK8!LD3RBP$JifphUBlg;&RL;ap?#hUrsrN(-}o1a^+FivQ|4mMi!7)6J#BB(V|!W#{q zbOLOpdu^#Mf`6vQJJL%a6Y zWyE6%sntOqgOy?tmslR*vC#r3#oAn+<&4LoiyQquWqnUHfX%nL@Tgd^*Q_&imWG@e zJN1|1ZCiO9*VDH3fD!TRWuEm7o}gP4W6{|bsVSf2bO?>^I?E_HaEdcq@YDi=wFg7@ zk;wOS%$Iu1ij1`17C1bgQ)^l&-8%2~yik!Djd}L5)LvG(U+h<7*y_PXD2Dlw736c? z@~^9&QIvhukovHpQWjBZ?ESxudVhqGh{PLG+o}<)M4vqxqxe9Es6VWbHsEWCgx2u~jhtKcC5ZtfG_v6>X#I5cbWM~$4kvHPG(nuLcrE5k) zipUFHoudKigqx%?xDFOKlGFtb0u)$hB-Q#@lB`MCuO++nlO$WeV_h#x*8Q^EdQf(o zhD_#BnXF@SvpEL)p4?=8ATKe;q0hoM4SPv$GB+t?ZU;LQvUVzpRRX&e*?LK7wq8-1 z&DRlo6TAi924mn|a0;9OpMcL$JAvHu&@Rs(dcYoHRW-Ju$P5xv6}4_FNBJLgKy6nyC8fX3bQ2 Jd$Sgze*nfB+V}tf literal 0 HcmV?d00001 diff --git a/src/rel/INET#FE1000 b/src/rel/INET#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..b42c312e5ef597889e2ecfc0521e39e3de006702 GIT binary patch literal 999 zcmaJ=O=uHA6n>e^Znm2>owT*Jc&Sh#mKuX7L{TWlN*l@&G?p~r9O2flgVy!qaHGdpj)!fb{pD80Mjk1OtPo+6PC1LdrqgvUsp?a% zmn3`4ovtNG&f?jWTFke0upUT_tP4`)Om;m2BDJjjs;L~w3%?zg#&kMK#mL%5)8i?Z z>qEszL1*M?kg*5HTZK?yAlctVE_bzi%c!BvyWG=q7II>*RdntBeuBRW<@FhkH!oSW zs25_IPp(%dvknrBy9k zY3^IDx$K#)Y40_2H=%LPZ4PYqN5Rqzk%#^nsghJ3HniTUbYaEX6l-&gp|LK-%xP&< zU@h1*Q_Mg)rot9|3vb{?m%XSPwU?Xx?x>(*tPoQdtN=<6lb;awL-oni2u4Ji`#SC{ z^$L?ZG=mg^<%rPJdTTaXv#Fx>w3V+31SrvODbnha-@~Pi!PWLecU-d4K{4)|3@4B# z+GF6fRTc^-z*u9LeO=GL`rmUpOWbaWM&jdWQw*GQzPN&E#QwuCF}f-I=Rg>zi_? z=DnH9tv)$-yX+XgyM8VGxt(YtpoM#kF0#m>&a05U`1p%-G+-J11%G!e`uup+Hd@q1qpaHxEJ^_2! zV__ad!W5Xm0YHR__J2=7)Oh!H$A$;?is1CTUTf5Lc3x>i@l~cj~n_!=jyb>$_Wx I3DH6H3+1-}@c;k- literal 0 HcmV?d00001 diff --git a/src/rel/INT32#FE1000 b/src/rel/INT32#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..f3b6f3e44805d71da092a36cf6f85b19db729461 GIT binary patch literal 1531 zcmb_bO=ufO6dtcvyQ|q0JR4AyVP--3Akb^JULk>+(J{4-g z4(JqQ>ILOg9XvGZp;Qf5wg`m4}SD0ulH1=-%e7F^7%g_`mm7yy-Xp0W| z&MVL2K^sbAMjhkzdGxHwax1>Akt+Kum!8d{!7Mt?Vt7eG3z5dDFe9Ct!io%T2|G$+ z^+3LLp~q@$-}LN#>RAoqnI3(@dPZ$!AJzcg0^S6kJ~8f0OpUIYYu1`wmDBmx6LzP$ z6H?c9E!T8uRX%-gx3j6blguk)HHe^oUzq-VVfj+ne%pgiC|+Z^xx?dkH8MGu4f-ff za341hB(5H`arY16TB4dux$$Bm5zC_&Tjx?dSzYMTom?(7$?tQO{%kDCH(@6b2V_mv z3scFp`V=JVN{#EFs^*P*WMfKb%d7C6GkE_lYDVw1WlL;D`8Kj!e-~2m27#; z$MxCusYiH95uQ>6lQu3cMy%GRd6{qL2l-AQLpY*H4+fDDbfRSK4Ij8j^Chx=8+m_F zSUZ#ZCoyKLIH)gSP`_QD4*WrV+VMML{9(U@94ojvvTRS%y3gkNbDuG1BaD`0J>3Z-g)B*)QQk@R!(OzjFZK z$_(^cdE+`8j{3(Ta5q`!0Ash%W9S|mp8N>J2t5*~Y}h>n!buOi$KXFnAD!U)4fL4s zW%{7^2#5$h5^SY63Fky0H5 WNS$+fcYhf5H;keKGV~w@0{#P*LYJ!m literal 0 HcmV?d00001 diff --git a/src/rel/INT32TEST#FE1000 b/src/rel/INT32TEST#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..ad86a6df659201baedddde80a2ffc22fd6bc0aa6 GIT binary patch literal 769 zcmaiv&ntXU7{;G--Gv{0>k=ueOW(yb-KOIj(-dZ7!9q%Afy9O_S(v?*Nb3CqEJXH_ z1q&r3-MW6xjACbDV{NH;&ebrZk;QpG@A=&4zP;yBS@S@h1`95&p~@P>t$E|5TB!o`z#|45)Iv2yZvsj{zu`xDx;f` zXe{f axHvbRW*0`CZ(Py1q;XM~GSdT&NCO{r&$-k9 literal 0 HcmV?d00001 diff --git a/src/rel/LINES#FE1000 b/src/rel/LINES#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..56757110b0a239ecdbf8966a8b945281689e7b8a GIT binary patch literal 1919 zcmb`_VQ5=b6bJB|*R*|v7*5idX0>*4;&Z5#;38Be+Of@z(v3>vsA0@*(8pSBMdqGx z!C|^iu`D$$Jglgrf+&=gMY~t9SZtcaZFTFCC0RRB6vnm+f+BPd1nd9argjWJ_+f?L z>*3yW?>XnaJW;N6Ft+TjWFc?rLOOq?l{GW>GA$GP_iv1mzncYOjK*x#Z41O~WMyM) zB*qffbj&sqvn6I{XRQVEl6BUcvF6R3b;e9uMKfz<%;^9du`c-!=de3-IEnp&ztd(G zt#l_dGbe2nd~EIh;nM8|)C-ygE8T4inrW+0%vcZ=tShUtmL+= zT}D^m-riNB-``m=+P=8B*lwkojxAdGu46Z>T*I{+xZFx!TNIb)8kX{A z-byZ|%oIjk9j$=T(qgp07zVgk%$Jq(O=G_N>D2EPS-X`xokVN2(khADip7GJSxP6= zo5k!GH#70E{?78z|6jd;5z-i89@Wp>t?F%dMQ7Ygy25=FvA20Ebw{YzaOtY<3NvPS z4ANb?r;qzdr{kes9-uBig?f+FVSQ(_hjoddkJnLGfCj{__*YA%mi=u6V=x}rO~ zycFI*5w9qs$|8=tRYVa*Ds+Y-zETmtT`|0h;X`fK*Q2uMnjI`)cy%>ys7O`%dK{%S zpYDho4ovLW*}RqMUMyELkz!OBia2iA4W|3zxXZEI#ZU#~V3<7-KVp$lAr9-lu*=iZ zh|HA>Ru8UT4`qAD8h2Y3qqk%FHR!0>o3KJwSYxwC%*N$eb#- z=%>c5xrsk5<7eHX=Y8_IU#@h>=RvtLDC1$7KPlrWx&DKE{v=nf%I9@A+p8?Qnd0&= zYHunl%V6YPQ( zXoWrSBJ72i-~e>ML3kN@;5B$1-T)47!dq|@-iCMKIJ^f#V8Sqb2q)kZ_!K^eQ5b^+ zjKc(c1z*EAFasGl3*W&UrwxbWi{`=SF|8Gy_e7k+dt zdph;P)B_1HrCTqya%?$xqJ?wOfdvd3Ii@mz6dmJS_I%co=Nma@GB5)5FMGO_ZR&-k e>_BY{3^5ExZyY{)A%ufl;L3?h=fgS71Q-D2ra|Ta literal 0 HcmV?d00001 diff --git a/src/rel/LZ4#FE1000 b/src/rel/LZ4#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..880760aab592856dcb2f8d2fbebc7eecfd420b53 GIT binary patch literal 365 zcmXqHWJ+aVa2H@=&=)*>_Q>U%!3-~6yx4kHbngf4t>;@gw(f7`+b!^*%AC78yM z2GkNFD3AseF9ULbB+yhF{yeUAoIs1xm_SNn7(nWhTFQ9R7%Z5|K$fuNacK#YYb6hg zm0&ykwEqL`U}=dGWQbvM7hsq;g+a1$F$2TI{R~nQ*%>7p#TXeTDlmQ}0IJ_}YybcN literal 0 HcmV?d00001 diff --git a/src/rel/LZ4CAT#FE1000 b/src/rel/LZ4CAT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..962c0296a4898ea0fffe7453b53761f4b0212b0c GIT binary patch literal 807 zcmXw1L2DC16n-;Z!*;vfyw-vuCfNi8u^|Kr;-P}H=p}0nB-9!_l$uU$EE`GF9ExBU z#FHosJqzBYhvHRmty>#N+K|}N77tPno&>=kP~U9YWrp|7`#!#T@9hk6J_iuTKG+@F zY<=w>=Dp6h{8ppsH|{r&GC<$7&YqZfm8<1pn6fo>eBA)SSJzb#O7i5zniV2ZQ5U=b zV27+YkXnQU@5u#E=paJGrKKu&Dpr!Px@PqgQ&)4hfaoN!m$oK7RPqp^%mx=~W~TcOd5cpm`p%WKj>G*KF=i zpb_AX-}Jri9SrxFeXn65Ld$P$wjbg!&`aNHbh-tMNVwx46fg?Cr;jmc9(~-~X?vSl HOaS}`xOw2% literal 0 HcmV?d00001 diff --git a/src/rel/MEMMGR#FE1000 b/src/rel/MEMMGR#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..80c58cd40d2441d016ace3da7e14e7612d826801 GIT binary patch literal 4199 zcmai%4Qv$0702Jr?JeuGdmf(+w!tM3ACBvo`Y<0kh)cj9e0jMZ<_hkmO0O$-LLGEE z9qvIO1=b-+1#YTqsZzC2kQ%5_QHTg>r~?v?a|D771oII@1f@Z(P+L_kky`VfrO88-#*moNskyov_(6m4 z6tu`(EQK_SJc21?BGhV*9}_W9&Wt9eDQlXkCVVM}Sof`wVker?AOX2J%*SM8ip+uU zEUQ-~6L=UMOoExD#>r4ki?Ix86sW+K%=I9aBOSwoIl&OJn5f4`z68}w;sa!v+llIO z3Fh<$SiH#{9E=|EMpQ%&ydW7JG-sP+;l%B@n)uqnM5n zaCWL^sxxAViCV=FLD<~S54x@fX)Zzad`hc{ibPdWw6`?D!t+!vW4(HkS)q4C+9p%o z*679ieIL=it}IBi6m=p{KC(8GkV0-8T@=hJ7q zWugs@e9a6VE+F5A860N=otN`cBkzMXqAOF3b$YR{wG4%-Hr9*9VVlN!-H-BcyX?+) z_hHMhN81uQ-oiZx<-Tq6bPmntN4Z%J7kQKDc)clkxN$r&7j2x*Bi|u}`<-$Pd;@F1 z5JbZ>p_y&eJ)Ixc;U*7GiiC!N7;aXpYsQf0+mJ`iP)+zwP985A9Oq8MjPmdxM9kaC zTnLGL4^v2sE*y^~8ZK##Fj*bpyEzme&bL#44`DQFwpSLZCG=Jk;V_H37cE&N;XmXA znV4OlhoZv~o~Pk1^ty07)eVAcCPwunH&C8WmQqiPIV!n-kIRL!UG=#wJF&bqL`}iE zV4z4Ycoy5$3mv5Vo*J^m9Zl3fAt>)D%?UW5#aRGX5f+8DC9uFTeM+z%>{-va#zvvX zy!~f$X)V}q$t#Ai9oqe3PO~nCa(YbeeY6ZG#5qcAzFdi_cf^u~hLaHQo4+-GB0^eB z!%gibx`Zmbo^#U)oJg(H^FU-bK3{GvP(#8k1Go|3<+ZGCtNaGZOr7XmOu&+idHzRM z)lOD&&s7RxO&)WcOng%1`E)Y)7#Z9^1{ZUmO(22kJD$jgaOabdAv~Co$y~x^^uRLR zxaLq(Dj~%7lN0_ugdalqqq&%;o{Wu^ysi>&Z(}*vy32WJe3Detm+Y?ONcvG=#l1eszOEt5Vx=-~nT(x~0W^(*sfE=n+_luHH`A+Mx zwn+hJqn!6y^$i^h4x*Bvaa;8ZmoG4bn)K&OPAjVsVa*@;n?K!-mI_wTy4Kfy(EeHRZ@|f zt0*3(ob={#^|^tFIfC>pwu2Mf1MYyb5^M}O532pdE`r`tVn@Jj5XC7u2^Nkg=AVGw z18Fd|oY*Gt7PwnZ_C6xJpD1&X{Pr7=kAfj^3VZ-AgPY(_;P1faB0B)uK?3xEAAonj zFt`G~%E)d4%fM6M`;0PsncvO7Nf=56Q%mMffYCi+kYn0inRoO40&1hAbz2GM6>s_Dr(l=nKdjJQFj|dy4Fr z(BJOy**}8s&%iIh9&i900*7IL6aL4+5d6+ScOF~^x4<}^Y%lQXl$oFx*;63bf(Gz7 z*bM!49q}Rm6!LDp#NLZ`zs~JLXbk{tyx5C;OR1?#|i_-ujC3y^m}&Om+z@^0{JZ~zAcLUuSiINHXG9n0mx(D1pb+e1&jG!@0_NT4D7L6ndK@dh#I1)<9i;4;&_#lu3LFwPIo1iZI z5Q3m6ilQheih?K#)R}}cb7~kx5!6MHMG*x-^nB-Yg+mAXp68tR{hjylvHetm{UWQh z;yX|rEKP4O7K+8E+obZ7k!*`dc4b--|+N_5gCFIsiz%<}FyitN~UgD;ibt`OxyWw7V06MT8 zc8Hixyh{@12s{o?uy>koFY7)@nltb$JO?jG%3Ok1n0pQ0VAgHs-o@|Z47ZNrT@Fi!wf^Vq3qxKR1LhT#;LG2g(P3;f0MM~VoDs1>^yGvElEQ3*%Fw2#g zB%W3ww?+lb8his@r-G&)Z=g2^8&%3|fq62`WLohy`gW1ogFE;^GVOQ=nNHY6<}f@) zriaW){1kn?Wcu*)_(d|8@vCI6!<%Go!8>H`k$H$erf-1E5dI7=k{QEGWTxOWnb+{G zN}Koa13jPU|BQddzpJ2(O-|%=z{AK^ZI_#MNceY`3N1P;rT+0I9g|@;MhiQ1+}gIyq_=NxK*<xmRs7M)om}^ujS30|Mxu4fSBF)fA9O=_wCb{bDp#Q&hPBY z*lws&A%rujO1O)*z4p?9w?}Q=zhl(PJ9ls2S+sl4>pNb3%`23V!*5i4MYkyzI-;W*#z>evy5p82Y~sK|S>I?7k*4XXu3p2EA-v7~paT2Nf% zea1Yj$TP|}(>%&oJbKt-GqFbwpKTsHVx+rpo_Vy#H`2Y(JhZql|KcThPg)<6y9$o3*Si3=)!xf zqb?ma+?{{ns5{#f`9>5Lj~zLxurc!RqpQ|DvVZr39~^)Fm1kevelR8`Mo~;A)oh97 zKdV*zpZphz{GVj=zmrMK|4y?1lT?-eN#uVoZmhHXnn18FShRQ1mPIeF-eBoS791w9x^w)3H)nr-*D{e(VOg|qfpT=~ z2J80E*T+{W71lY{1wVe)X79IqJFcGhnRT!7S(^=(eb&8k^K8GY{CtCT(caQ!V%6ul zdcd6o+&<1?(iBat)6_;yXo^pW63e(4fm!{vgTJov(t1K#vz5!*$&c^k2mdS8zdEXa zaLisFFKUF#iOcF=BLR_)D?s$=Ho;<}L zl`u;v3-wH@{1vriaI-u9JTtgD=VT-d4^MkieK#4+->Q(l}8LRBoJM1Ie zR*_}P_g$AHsvosKzsg>(iRumZO{?s61d@S8^<+n_@bnbfU4~7$vaYHIT}+u4a8A*j zQ!B2TR#7{-!a1dGYIl+sB?^IaE#(c99n^EKg~asyG=b9ain`&Avl`<~B~(z6uH`}9 zUy*SX{59eEG*Y6Dv*7Eo&`?V(1XaClgr>^Ss&06Gipa)nWMrXW2>&jUzf1AnwO7Aw zpIyDjUeHp+s4RHbL$2~q!{Cc#lnBd4@lS%O3X0k&N@>n0r}KqIlhUfDPpfkVra0>> zYRUpt!3t-f>~g6aRE%_M?9Z>zbFY5Hu&qGU753_#(V7@4gDF(SW>G%N*R>-mP-B|& z@pKp2$(|{JQ_^S&wQVUDt*!3V6trj-QQ-MH;_V}2m8B;LRYnlL zs*c{yMqh6y6zL?R#~Hq4thFg=SN)uwsug%lpz3^2oS_M4dYl|t2zn8bCw{-s6OY+% zmUPLLE@Gjly>Pksrhafd({P+9(s7>H;v6qrS;hw{lr3IQowEPeZG%v*KyxC^@m#@H zE~+BKOxIn|V3l4$x?963ZhDTcnpQClm)ce?Mq1aM63=j(af+J}v)G8aPnIXvq=}j9 ztdyO>%V^&=8jfB_Jy?@i)=|`0H03Evxzx5Q&3zqL9*G1jIVG`%LR{WfNgA0fJI!VJ zX)Y^Ib9wMIm({1aJbaqV+S6Rtophln)d%d1ovsobvGUg&D_j#WWowb14&fTt;;AWAfEBvQ+7sZ{`+&@%r679Y`XrZlW>TFG| zr(-bK(8O_J02(C61Ua$Q5p;C8s$C z=@@;_kZ-WjvFl3W#;KzENxMfCB`Ri65e-k;IL3H>jYvm@u~c_d zqK@8qF`7~<8cU1a41lGstn_8Hj9jJMnU0E_Pe+a6l!XLFZ)Rca+ z8V=YQhdxPVfW5PeZ$~Ptxi$#rau&EPR6hA#LJrK4v8Czf2qj>p7x}G?0juAtDHpAk z^PJz>G^DqR*|kK4Z^~ z^*NL1X4qsNde#ZTwZNB_j9b087i}tP=UY~_W@&iNu36|*`t(=5&%V*puum4EvEgaE zOvt)XnemLBg3YepWvnI^$Z5L78eK~lxH}0MO(7Z+z0~$>y~W1q&MMB7HJ$~`p9#Tn!z0+K9?> zN8|KzM@js+c(csOx3+6-oI6u!aa7?zs|Q6hN3c3kwKxVvoRN$)5X>w6WF-(;MZpc* z?I^xs2Y;;%JNavC*u`I^;Wax0Z>(xJ)qhuUUnCdb^z!f)EXVl`C4q`lz%@w+(V_Ww@<5X??^_RZ4G~o-S0w z6NYHk*)#S?+l;sE3{}*5!!vf)U`DIUXm0H%TV1QlV@j%iLDt@28>Vc2vc9m%CP^=8 zoc^W^pf{%%?DU-3WUWu$-aK?i^o^Do2kfqh;pWtvm>`m%j}yG%1^Wb&nf{iYpbZCQ zS`Ay}UzwB?d7HGI{GL$xmR)9f&@SU|mGPxNp<1HwLByO1<5Wdcx)w0Lbd}3-P03PK z)pxjS#z*$bGKY1^tmeI1&WdKK!;`cafpb}p2nL=wM!}Y}tVUW^nU+;Xvg$@OEnMoGofXYm zho_#FRhE%az(_J~-2XtlxEAqrwJ|QrUE9B31rgL1|3|gOwoc1z6xA$?YL-Pc>qfMw zxYRd0E5+w9>@&d@3D@lyBN&%3@`bArV}NiqVGyJgBTKl-F?xvD2bkL*7C%NF5idoy zii44t#9NUM#JiCb;+aU6I+HHxS2Z(@&5RBO3+ey1boIhDmpnHL*E|dsKJzhF3fC-* zrNT8EW3g~8!MIJh?!}lVTnjNm!nGKqLAdV1n93lE!Eww`j0)izfiY3IhGUEst^y3N za9xBkQrK3Bdm;~t%@lA>WQ|x%A@7bnDrQEW6?-Gkivy7t#i7V{@o3}~@pNRjm>tld#KUaW75prF#UM&rn{VKZkn+M*YDeKibEHgcyMNpVh=Wm|vOKVh* zS)MuRQ5bv%-XP;q8Gf@KOFt7JHM|DTJk`suawfnUkbZenOlBfWo6dqksA+ncqt&>? z%(WzAR#3sm^Kpc+j1JwD89Tei!aOufU%9J(%ckfeJ~m6K2)3y{Y!9~e>j5_Hvj^KT z7Y5r`zi;2D23e0~#`-O}N_7$kE`CeNP2=V(nQ=jtQHxzxrl@6ZQ0rLNGn#F-mfu&t zQTF_Lx!f_)XLHq{y7Ik9(3(R+ahjSLH(O7sWd6AJ`mq~3I5~P7>!x5_kd;;-K~sYk z?+n?UnnF)EO!re}y>qZ}_xL^{7Y5=Tko&^Zz%1f8q4mpyMrmhEBQlk2k2HM;gN-YEv1dE%d<^4ph zO-qO_AJ?+iO(@qKd2*SSkZUQGrLFU_s7z>n$j$02@5!Hsdj{p+QfTqM%1lFu z)&e*sQC{c`5TY@^%evIJRz~S;wj*K*$uQqY|-yM{6`cX&a-yQPgkW&BZm_7X$hu5uE z9(A}VzEwyIrOy?vorD(+#~szj9WCO>&wnP*TM@4+(<$C;IvKZh;1;crJ_n=6Spt!m zR4>VT|6-`(6#bqO>O2|hEF;t@8a^e|SQ+Z1j&F!~r7NS2nauwXYA1bZ`QXD0bz)}l!SQ{IZ#HbkFn~Wk(NNcBC@U8Ps zI7P@aMXK&PTqNn{U?G#M^PY>Gx}~=i^gRUq5J5jd&@T{lH-hd(&^M%@GFY>u(d>^q zN*i@?PO781JERTu)X3IUD)%c!aZZ)Ftsdq0aY0u7P} zDBBGWLnoPf@k(8TrO%tKeMsWDR!OXgCZPv>t98KUBznsvUTW<_5|6Y>qBNSsSu)_( zKLlLUD&Tpo^V;7!U~^u2L0)O?Ltf9fO5*2exdzI-cDD{VH0q-#@nUPA=EU_P9&GJH z;?K59{LW|+17zZd{}6Ca|#Ht8ge(=nb*-^*QVTH8i zp`s>e_Wb!(UQfhISr~qQb+DHByCa}h{^AIjeJfl6)-E!fLO8!{LVhzN6Dxz*YLRI4 zj#AeJ@+i<~od>{ZdO3!=dr5QP4a_vz$%WGc^<}jcQ>IOIPOdDgFPj{w zsGllt)a0E37j9%$St)PcTsKrZ#2D`5>Y&v9nSM9duXI)&_jQdkPB;d(_i#j-O-%B1 z-JkxVyeQHyCp;BX16-6vZ^@@RYq>-ytI==InlqA74x~9nc85!%w{6kTTrkvBG>6K# zMUJv^f|RxdG3L5zhv#hWhDO)Qiz|8YF@+sqb545P0rGB&;8HH5P>AKaA+@@*yuzw> zOs{m{+wir6Vl*6KBQs#g~kAg&ymOL&lJy+v*yr zSEv-dO1Yw$WOvy(YRj^9N12+)7-HWviBm}>qe!>l-`FsTEk2f}8I$Z{xZK;TGO!V} zbOJuOa#2C@xXFOCO7%17Nh}U8a-(v;^eT#a>F4v+5BwqDGW+una5$i3gzTFhKmau( ztXl}!*zkaztwfB#-ZbNZQ)JMil^c;tjVPsDv~tS*^x1(nf!LrbE!Kb~sQ9hQ(6tuf zZ=(#=%OJ;cO%%)P98I0eYI(kHn}=b}zOf z-L?=Lho|^1#&&^jy9?XdB5svf$KK*y_7=CZw^+;GVgq}N1?(dpV;}J}dx!(-|VwX;;8lFF2dKNA79j;>mfNOWy)QbbAodM2dC!M;^W9R z@pELS_&#z#d=ojud?6-`W6c*3EK!J5+)Mby;21u0rA5KgM_N=Y8Pa0K(nYY%Fh4-# zHR33;z8={kK4p`)hoeoa@7ccYCnGYcut2#%B@n~9da0oQHw9v7{XvUsCh8U~T1KA) z(tQ-vQ7_b1Uw-}TR|nC3m&ceWpBL@N-RoW}TcLumwZJN%o-0 zkE*cye(uZin^MT0=dz0$Ip$?_v#(c5(|gGhWb~1C&E%^*TOQ%~a?kdCDl5rw_r;&h zQfB3=k${rpk5SVej`(9{t~FDxndHxZC1&YBjSDqT*PE=2IdYTu5a8!MYJdBKSw?#eW(yxQ?wil*tY}I#)eW>FQ>QEJVam?D8ttsJr zi!PuBsju}E6^UJI)4t}~*e}m_QaSeuTBRc5MKDeTZER+hfLRH!CrJ{)WD!hp24bZ& zqlA`3WZ&NOAQ!ZHCF(^O&jIN`XG@V}`X8h-BsjgCgyyl0l6wtre-`~MaWrcaPHFPA zVJ#hI3yp9cjc^%_@EtnJdK%)whzP{`V?A^Ac4&z?selBAcny7~>U*P>k2w8vG5IBw z2W^NH!?r+ZHebw{!DJ)Deo|5!FA9V!6OX&kl*6SfL$k5Tk%8iPH6S-sxoqWC3^O}= z?-p4JsO6ND)*u1SzDv#w%9(~O4YOaWcOm0Dy0!$9r4~+hUL$)s(&%cEHDT6@35_+tA9ZM7*{GPf(I2`G#1;DSZdd!bbxWwVQ-Xs#7(STk+DZT(JmTN`Sz z$|mVMzYj`Nc~GJyyUJy8lI7)29R05?bBH`F=dwj_00bDL2k=|go117|dNU(vsca## zIb0Q^SAZPJWD7*jMHl24g04+tm(W3Gavy2bw&eAmY#grlTL#IK!pLw4(@n;irQ4-c z+?>lC2P@63@^|@dbu%ogvS##h|GA`ImkjzZ6;;agRyqqcuSr;gahVROytYw&N&PtF zhBaAp&@?HFAs%Csa}177s+;6pqMS zA|djwSbW0hU7!7~S()0o151_-$7nq?8a7qBG`;`-iqYaG{<1I_M^{2|MjO!UlbaEx zz_U4`S=~&wQp-L6tHhd<@yW1GqeYb(m6$J`@=j@F+_cF?rnkFjs57L~sr4i08U4aW zmP|H!y4ZO#Seg;DuBDO04JJ2B}T<8js9msE?xpFum`;F}7;}W>YWMH+(LDTBD z1kBhqq4;|D514|&Z*mt4zp~yGP#8qzL=sEo$%%yf$G%J?7CB+WmU8?dCldXc4O2;N z527kf0e#ld14L((t&u=1r*3N6;)vg(PatMv0ulP?ds=)=4(7u>U+G=r_4Fa6s!yXf z8C>P&k8>>HTFa43ZhEcol@17~P*pElWW# z684);Ermrdg)V?~oQqn^5P_bR35kJT`ksctx_AGaOv_Ul_3}?S$FfYN{*1;zhRkqn z+Tn;lLq0N*U(XG750g{r`F->-O@RzO4!y>o;rTwo(u9PYrY9s;w#R6nnBh!(HX*Sb zf871O3OpY%FS{6n13iPPKf~WszvHsXWwt!{lFgH>{XK`1O?KKSHXOBqnroc?`YCmF z^5I{F+#>PbEa2pE;IxXV+$kykp8ky4%Wa~Dv$N=Ivij#pATx*8PW}u;pfN`Ayu9 z=Zfr3h12VJQ8Kk^O06MR>pL$FC;g_TfJsvg;ZzyRb0nhIa)SQXhM!wYkaa0<@4Xhm zE+)t493)?QAku6(@Lwh8-X2W%+*SW?Nb(06uGMp%lis6MwsMX?MK~nljReDl6iWY) z;?C7)BB>znJ+XQL9s1v->iEQ9ytFpNCsxNLGW{eq#3kY?%jNiwmx~g4NH#Z}yTd=K z^yU^BW%dX!70>vHEe@HqctrHRZ_(vW)@9Y@)}?JJ1A}2C^)#hO6)gN?@-n^uY^~|_ zmE7EB5V2WyZ-%APl9;PZwqski@qZIA9n|-wcFUBE5S5xvfdFF$d@sE{UJYN{rn%vFPuKg zSgQWVIyIXgZmOB|EsQo=nkZlm>RKkZ0Lx_!<)+J4mO@RjJG1dzMBk*v3C-!7+exkw zoxZy|c~cB$mJ&|kd$N_#6C3Vuf4ef4#Yt4Hx2Vqh;#JGi(Z6l`wS?pG>lRH({t?5TkXsPaGA#3=LIcb?xN{&(YdKG%V zh~bNkixIk|_j&imFpfxfeYig9{!|RLjwag)S6|rYu?_)QMHzV^!m)~#Uq^MEsirgx8M4H6>f7~u! zh}n?85@8-~XiCBB$9OXFN*v z;cshRbj|fr9?w$spt3f%%0q=lIifU4ZFglUMu}O$8B2%mLVvhwEQI8Whvf!~55I|r zt44P81%1s-vr_X)vd7s?B4Aa5?e*Cpy^k(T8+pcUl`ik5>j!ZG3rCFYW&S6(nX+AK z?KNet;qhELD>(WYKa3!Y0xPxZxAJ=mtqt!85%F+WdY_(7TX{~Pwe`pHI4;=Edxkve zi+Z$cusf(V!f?y<&TkoEk_oge(HTl)|Q&KoS92M?+CT*Pxbk-S%HZGhv9#!0+nEj z2-svf4@Gs~S?b=_TK6()%Ae?-LyWn>6fKGU9#ce0zgfW)zl|=Xb@tmBPue=Q)Qu^@ zR6~h(Mi?brp}ciAy>-pXTc=+^sCl0Jh~G}EOyRfdv1It0T4okm%#yC-+Q}VR@w04S znrnErtYLjXZ8&WAzKRbs8Z~dYH!m%Wt2gdW+R9?7vRK9nLLUDTJ1By&{3@U=XD)4! z*gGr6ch-g8>ssYgAU8X_eK4+I+R79{%}exIL*;(8Eqy?WDN1NQQu>xESR5ptJhr19 zvuM^wf4L8B)ruL&j9!WSx*lWEV=Rp$mTgYva2a@Q+7A)$m-;c#q4b+&BNs8GOtfgJ zgnm*evss8-c_GZv7ZsuE6*Tao9B*&IxlJ2I{39|`TzVoT z-Z?Q#96GUBEIM(g=yT#;kr7!cUX0u)ZaIMpoh9vfa3IrNnjSI=BO8N}+b@pFT@HQ{ z;ta%4pUSfC`~nO;_yt!XOe7h*9P33X!8u8m=fHpC@-|1Vi2^bH7~}AVXukewvWU@X zks|tIe4Y`U`pQgCZF#sbNXbh$I(y4Pv(lXCK0{>NqPJN!WmlH_%cgd3zMJxW(A~GE zJEs%Q>E=YER?dsoN;2E+#(?|*8**4x#*F4_Sey32A1X*raeAqJBl=LWX)=i%X0RM% zQ(G^kJz1R$yK+6#>}j;AEK^3%#8%jH@4(pHoPZgtZn0o#WP6;cT6kW|Ixr(o-zNtJ zE^?=?_=Y-pho)C~ZPd5kuVmN~A5TcEBaqDq)!E6uy79V%M3-#@FKM$=+`2BD+O*oq z0l6J*_4raqZM02e^Bc>EXA8>3LGgF|iWB9Rbd`Eq)Uv41WRF`M)JHIVi=eOn1si*+ zQfaUzI;X3NvI8W`ZY@x^q37I_dX8!2X5nAab8`)>Nbevrtcj=fgk-;vZ;(^n7YZ$v zT?s=vKh&dgjQ8HDoKyQ_hOT4WOXaMZWrcq26=P!9&{E48AY~*iX|XixS^w%v#hG-q zBrU}sLlnA{{FcK$z0F2%^NUOq?{)dZ;kf+a9NjC}Szo*J=gzcf>veHzPTT!E_Z&RF z7n~KGvf2}<=}%fUtG~O``Ux_2ca-f|{z~lBrH=G#THcoX7rC5SeN0}cu+ovID`Hs> zoM|ynDdjW>ZewVW*nOXLF&vR@|jh-P7Y}Wjo=0+RhgYqP!=dVYnc2QWcf5r zbt=0v>Xn+jD~(^hoU)tOm1!*d(2z{~ef=G@k#=^+cD^YAe&ebCT-Q0-`01iwzl%O8 z2cj5>CyDHK&G+8&ckAs~c23Cd;&tbbx+LG({KLmA=NPW$W&i4%og;@Gh!U7+ep`72VVziO(ySNF@zNT!hlWooXz>6}^-Q6XZ~owu#c8F`pn zq_5h__skaGu~A=ZD_;(p_&uJ!?En4{JaGxcWZy%%;BGH&d)9y?US*^^j$KZvg{mjU6n(|ts-up zbgCI2dCa(rUn%Tr_8|&w@$p@bx|RDP)2kdgl~*{pb(Gm06l!%m?+auB6q)`S zhwB6n1gn#ckLJu0WoEvMdNqgl^0LBa{5D#DAt8U3EBh7k`OE+RG=Q#G86Zbw_ZmI5 z?DC2MXX)+IIllM!v6qc68sGP_%f@>yyUaOoYW?KF&hh*@SO4L*n4mb5gwhW@EX15CluO`l_!M%}g)$rVLTwMBOvw<+68IF#dm=wnW(wt^ zUP9RgD_lZhW2KCM>mdGY(tu*9gxT;kdQ;V;eILf>NkfO!=2ALcVdCW{CsTS(8MhPqlrC<9#38_t6ZU@#QGg>W&9 zB2EM0XJVfV_rNN62DU>?tO%K*4a9>DQh^O_C=+@^4)lY;Fg#X--Ldvi5q2Mph4D}U zSK_xgRt+t|em^XS2jL-D3+v%=coMe4%kUZ;B;K#YJB~d9aaQDjPS71VISOUL5Eu`B zm6|9BFU^8roH{o;m22OyfjR>^`8>B!N=ng#~6SCl37!1Q;1Tb=jMnegd!{ty5 zLAVxX!F;$47Q(&o06Yjh$_+gRo8d*+0k6X$co#l|f57jc#EDQMoB_Qc8_t0XAP)-R z5-5hTFbVun1y=#@BtqB1jW7>xg+;Ig?uWkuQ(NJ^oFzHd?)`o154Fg~>Tm+NgT9^a3 zKp5_Xr8W^>X0wGKw55hP0SP@0n_&yQjNfisLTC^6pRpgqejIxQyJ}Ae#o8Gc>>}I_ zyA69H_7v=AVDF0kOzauhdtuMQ-UoYM?ESIlVqRdkg@$4l@;w5-i@^hbfyTrbOv9|{Ybbu5%1G++Y;PGy#Ct=SbY&PcEj`pF8ar3}m_@01! z8FoKh0aM@(xCico)$jykT!cP4iTeV~+)db}ow|h{#J&bL@%;jEUnVZ=tI)e}7(Rw? z;2&T~WsZTa;DUZI6#fFNzd{u-6|RGsa3kCbOW?1t2G+rouo<3%EwBwy0u!Me zDxeCcz;w6{ZiJg)KHLsVU^%RTJ+L1R!8`Cid<37smv97rfS=(vFn6Kffdi7E6Lf(y zAshO_1uz(f!U*ueSeO9iPzzT<5N1FK=D;n$`Z}}(?uS*d0Un2^VJo}@ufXf@4!jQ^ z!&h(wet=)V)Rp!IZNUy*zzIE|H{?J+7y!dzBzV9Fr7#&Pp%xn8dYA?C;Z_L4ov;EP zgf;LOY=X_O1$M(8cmv*nkD*I95lVv|&|gd3p|7Qh{_1eU|Y-9-4&Zc6yoZffXtzW2c!@Fu*2-{EfELVv^lIeZ64;UBoG zP9+rUq@JB3e2!BMoriq@_Diu}hP@Of^Q}1(L)Dm9I=h9g!d#61-I(_}S?fDZp%sLC zkngqlZ@~UIJPDiOIoJX(!4B93`{5wGOPmjg^9lCP;VU=--@{LE6plemcj_40fDO(7 zC!7hrAPaJ!ADj<^U<6zY{Od%aQ7{S0p#~b@dYA`yz+G?;JOC@X4#C^-K70sY!jBN2Mq7cW;5pa^FT+lF15UuOGiirV1mmF$>fu_r8SaE7uoPCq z7B~RTbjk|sA4BPz-w>_-iG%eu?Oixe;5sy zK`C4b*TYPB0QSL~@D98WwhZb3`a?04Ko!)$Rd55$g)ppyHLxDG!Rru#Ha*E7Izbxr zguXBwc%c{?1CyW%YM=oc;U0Ju_QGNK48Db95SvMwFc=D<0~HC;V}FNW*54Ej*taIU?h}4HCzLCz+zYq55r@y3AVsC z*a=_5PjD2Jv(OEsLRaVo*)Rl#g9j$TWT=IyFdJ@xdtf;{22a9s@Cv*JZ@^*r0=|Qv z!JI|g1t;`?EGUFgFcE6u8n_-f^A631n_xaPK^T_8qp%4+hhvb~n>8BrhI3&EjDU;5 z1EZlFZi2|L;c0jQw!uy~1n3g^AHaX=m06u6}m$@ z^nt$6A9A4>Mnft1;VM`Rt6&4X0DIvL_y{a#lP+`z7n}zZ;0g%A?XU>$f~Bw?o`P3k zAG`_g!bk88dYO8M?w%a5LNncfkFy8Xkd-@C>{HyI?;Yg7@Ha zI09-v>Hw0UBXkDN;li$d?L*nv&xUhhAPj{<@PH3W;4;vl27+)aEP%zZ6qdtUcpUb_ z2kccm}q>E3gmVgTtWYvL1v)=nOp|7cPL|FcONv50^s?Tn9J6e7F^EhdW_8tb)g3 zGwg;p;BELAj==YD4C2qH?%@o`fGp?(g)jm}!DOg}sc-offjk%iqhJhN3gvLc01=)#phGB#eKFh(_rm?~AUq0Bz!umBJ76EY z1Md^}?*r7(G3>`70+tJykH8LHp*v(iFX#>ZArD4^8+C~Sl+@Cv*Jd*Kkg4WGf6a0F}v(LHno-o}Tr;A|KO7eX-z@zXaY=&*{GQ19-!7(rmV%-l}&<6?!iSR{()Ns)tB~;A! zr7#iva0N_-tKoVG!92JH7Q@}J6js4=uoZT}8}KH41fRnZ_z8}}aWD@S;kJX#p#)6( zU^SFEm@x;==X(s_mtsyBYz|KvYzmhTHiatqt{kj}ufSf5{aV6=2tNm!U?D7lrLYYD zm8AVw%!diL9=FG_Z^ix+_8qVbUWff~5I%%Y;4AnEj>0iGPCPNh95M|NVapIToHj%a z^%%lA2;W&l%;7#mOrgGfkL0@s|0zSdgzJZN4Nb#sI@|#B;Wk)An7fB`2tSPdF?b4| z!R>9*d=LAF@HhAdet@6hSK#N@VI{9aC@zmZ5I7(iI_HV76ZcH)y&(tsK_2eI^16nG zV;>3pql2MQxQ)q643%JBhF>Xelc5@}#H|j$tFbp=zaIN+?DOCj2*X0S4_3lzSOXgf z`wU^XVBZF>!fUV>-hmI{6ZjmyBJ8)w`UCc#;WvnYIbVe1^Sg!Ym`Ru^`Se-r>DYT= z&w@VC7q|2B6G8(p2l1T;1#lr;j9W2&qcO+jr-dfsR)*bA8daDzm{(z5gE<2;ggJ*W zw?Gqwaa)+*ExayY4Q;^wc)l8bGT#*5!}or^5AyvM-))Af!uWULZ9?ol_{K1sB8}Z1 zn@O6ZY^pRy+RWmW?OXS5-MxFyFk6Cd-@kqL_N@mBZS4)8LtA&cZ8q`R_SX(<_i;Lk zW!v6MZ4PnZjs4P+DBjp}aPQvj#kLM&=YfN}eVkJ9Ptm`;bN>OKt&6n2zWptqt*bEp zZF*ZbvHh)W+xPlxY2uAn_U{>MJ5#*8fBW`5dk^nE;ImG4?AiOq&ewLnv;FXa?SHXW HIK=-0X^g}z literal 0 HcmV?d00001 diff --git a/src/rel/PLFORTH#FE1000 b/src/rel/PLFORTH#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..b1c4706cc9c1a217e5ceec645ecbf4f54a7ce489 GIT binary patch literal 917 zcmYk)Pe@cj90&04n|-U93A2_Y)Zt}jwX*9*g?}m}TEz6Bo6530_ONUE(8WJXySzjY zc@o+|f+g_KNkY0P5=Iw6C`$4o2-QK4ojOE;r-I=1oz<+v=gn_selx${4jU6<5J<`j zbXLCGe*bZ|7y7`1@vK?{^xVUAHXzedt3N9IjIHf<&@MKuE;s5g&S4c;KXqL zmMloWGcugZ-;oQ_|kmdy0q4TaB)9V>F$=KUBfu2PfLhSKg2%%^}Y! z>3bePQt*!>(v+bbP0<_`Xn{5;6o6#Ng5@GCTWW1Xn|hP zvWCKIO)so#rS1mjZ)l5lXpg?ociN|)^qV|7Cg4^I6dHx@wlI#8DS(~NpL(UPhP%>_ K51X8o0)GJUxZ+s= literal 0 HcmV?d00001 diff --git a/src/rel/PRIMEGAP#FE1000 b/src/rel/PRIMEGAP#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..c887d8692a283e4951b70d7f471ee09623037313 GIT binary patch literal 629 zcmY+C&r2IY6vy9=qqe;`XFWRHWDb2Od0lO24y7i7tHheczk!d%S`9X)r~U6kYU1 z9G)JX|H)J5o99F+=GznYr+tg4!0IXTbN#5vCtE3!3-;({9R|qHIB8YhG#*l<#%GG8Yl6Quzqe_|?{w z|It*gr`NKQqF}{@pB}m6M^DA|+{*hEWlp)}vTm*2>xc`Vu^#KG@U4E35Pt3jA(d81 z6ta&ARjI2{Njq@F>yclZVnWU~#DACEwBkZ$oP%b&tzF0tQ~KF57FA}psy?iGOXiX) zuX_4EgL?Vg%hm`;+l+3L!0=AiS_0GbMFG8INkOb6C`?gr_=|XONEDn9h1bwG(6@jL z3OING`am2EfahQcSilCO;1w7HufY_U0dK(^C>j*58$8%R+%~$yU4sQ7^d9tA=x^|R iNB#qO!|0;3%Zo|DbolMyQ6c69*I`C<)5$TiUZQ^`Jee&3 literal 0 HcmV?d00001 diff --git a/src/rel/ROGUE#FE1000 b/src/rel/ROGUE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..3ac3965bd3e7f9388db2e668af2bb9276c4ccb34 GIT binary patch literal 4150 zcmZvf4Nx5A8ONX7+dJ+qK=$AuP_M92IFpq`YU30cOh_ffBp0$FC*Mi#$lc~31n@X6 zMAI}&64Tm~WF2iYj*g7O)UPykv{tR!mXMQBAy6P%9a}%z`cZYX)pTkqZ2#{bB&ieN zx6kwbpLd`4-S>0ob#Nh~N~e>4pF1>mdg_fWL*r*hHcgHXpG%Al%7z^pA3HVZBO;UW zOQc`?xm?@UwDS5`Q`z;Xh##IeEer;~G{LpXZGpX^h#|9w<<_=nxRkG|UR%m@&e;=akBZR_@%HYP=qh(TLc0UOkk}FxJG!G{psghq68E%3 z!(u@p3wDMgEnVSIP;6=MYC*kdI3(@}L<2iIb~ks4rOTG&r=_uv5Cb~{E$w3SUNO42 z6CErSuZwi-><*<-9cNN7j@}ef=vWMo22MKQXw9aY;wG11SV`uSf@BB- zU+PgRZZOqxoK$@_LQ9S;tyD{b*td|5tDQ0>IF2VduUvj=vBRlhV|t%q?gf?`bv6KFQ?~pU%j(|ud|S}l4~RBN5MQ-NJ{=*L$q{CLB#k@EU^-6q?MSpG3#}}g@vln9faILv$Pz|$cxCbjOz7G zbeCRDJ-Uw$>J8Mb58S9nx#FO?ETt-ijG6;^demIpV5zgRL@|eBjr%bv zhhn_K`6``~tMY`M6drC)r8k`vPGKKl_M<`8qh_`Ts!r(**18;?g$}i+Vtb^Kl6owb zD#mQGg}9hau`1l5_Vi>V{a7qrj5&;mLrIk~D^6lNrNeqHL=8Dg>Wbc&prqrOp` z$NfIP%ll)r>yKj8;{K?at$yBL;a$MQc$AYf*bDG0y*4KGB{u}>R(Mk(#8JsCyU0ix zM=drLaa6l(pJcMt#k1AL$2)z~PPPmR=o2jV53$()hQ%kDrz$)7%Cnh*p{ntIqPKEXgL*i>ICdaav03LNSB`N` z`F3SjALhcF1+2E#9I7cxN$xMU%~-$Wm#+{^oe%b3A;`}M4_+b2wylv?;gTbe&PJk? z$00I567mL4WDQqv`1HPHe@d7iPx?h1#%AtJ>&3v%9cR7xM4V$cQrIt4*$4-WT*{{V z3N@4a*G+OR8woj+_(J-FejQEf%P^BS)5p3z%#KbZPbR%UT#sK!D#pvcW~a==z&FLe zQ+T@&@7exMeT>3e1zawb-bQxTmt5Fy6f3Y0q296e^7?2t4*L2fYGd7qgTDSnxOsvU zG%<``;W6+jyMG4W)T5?i)}@_nex+dLNgEqgI9?1vqfnB&kI5CdMx`K*cf?9=*vBf& zNllkG&*5}u$-ZSAaRqce*7oCA+pDm)znU#4hb}*kQ@Bo$A0ezvs$lm(9qs`r$C#JF zHV$l@Df`K{C*$I!IK&2YZaqr%#%bOtusNuuEE@^44zkQHpbIl;q|Rnh>a0kv*&=!X zJL)l9ANS(==+{@%hcgxQ`OG?6KeL{8%xs{2GaKptnN74y-%L-;Y@xxKTKe@&9S&xE z=?RR5F(|B4jp$UPfC)hND!dEXRKPog@s}M$FzmZftAX=qtgF&*@VMis(0Wwx=dr=c zgV*V4X2J@896@U3aofw=$nyewfmPok_zKu|Mdp)fb4L`4We0pUS=gDrPo2K|va8vW+}Cb3BDk zJgJGRbP`t&ngQ;14tF^>4L${!6Yd}=$RsY)MVuehWD!@MP24VUUp8r5O>Qj&c7y#u z1INJ$@C+CRXTiJR-zKN_waKlTIMR5IS5sgeoJA8jx0(e%2ijGzdC&@>N${6JD~7!h zS{by}@GGFLgpoh zz<&-S1JO*{P3C;{7Bi{0!k6JU!f%G(V@}tOnwM%1 zf=9q_&64&CI163_Z<|HU&U4x#UQ(~-Ni6~^z$zYj_yX-bpRax2lCL#bBz32S)K(A$ zhrx017!quvI;5o`ki zXd!E%7PflS{qPT4-C7(Rvu3HsQ68|m)yGlqm++s3|04WT;1w_mZ4%m_;J*$23O<7N z8MO28zXp^-sx^hQ)D*Xx0Y4Xf8(agf1I1tkC;_X$8n6Lu2DM--@Pi#740eHbH`OFX3MR zv%qA-_}WOb+ZL;-@H2oLEC$QLcfbn7Z?cJM8T@jv4s3+B&6cn2fF41)2dLm~a1=ZM z9s-YmUx25;GkE8DwDS`D-+_0*2jDaC1^5b>?4(-20y}9=yIakM&9(EI+wRsxdzQKs zu_NFf@Kf*rcnI`^N5K=|BzP9Q0A2!v$Z;AuM(io-D9YpD4e)314r1@yGqiu8t$)Ek zk9z;Hr>g%&Y!+pc<7$<6km>+w4$=fizM2I;2V4d6Kmqh?9SgN0holyx{9W)pPzt@= z;a1ncuY$kXk*C$8ybWaqsCMFWq zLKYeShYM~R9UnZ6|HOqnmU(P&VtQnBjgU`MmkJ`Cn>c+jw3tRmhR;k-k53MrNo*0W zrqh#yud@W#7~X3mQ;DYB1aXAeNz4m@Z}b@8e>jU3s&;d>>7az}qflPhD4~~xZJMSJ zSs%;i34LD{TU}ipLk4v-{V*Xy;W%>MT;&y6cT9-xKu4m9DPIhSG|l{oIf{yuo2Mlt zIv`t||5wcsW(F&`lL+a0EU2AMS9H2vIfLWSfeAZJf4Cc=sE7y!MvoGNor~_wK0`~M z7~aO#cXXd5nC}ykc*gei5sc-J;i_yJCt8FK-8(fN5kvTl5@v)L5CZQI2~N3O?!60V zvNvQ!E=rIJmC-YJqEZ#ddVOI*h#WM8;x5J1D0b1iy0ARoi>WfEMX~WkuRZrpFP5N~l?q#&ts6C-i!v!4_4P`YOyg+n=ndCvR=YHqXTIUZY;@ z)7`&U)ZtUfaLD7Y4%X-9mqoKJrUq{=p2x!t&dO9{>huw8=yLds);Pt=BMBUzx8xn* zC*h{HaEQ2TJ--!(H#Rp`6e-CZeM@Fpsb}HM6%}E{ttl4@28(c$e5>fO(sHOp9jLUr zwXvvJ*De%PW?e&Vg$lQ7ys>1Q)~SG2eRqjYs8tKcX|Go0CabpPCKNRi)oNC2<8jrk zsj_>Bn_ZP;h9J6s9AhQAB{1CIxL;3weU z!GD0Cf_W?+XtDJA(HIM!iz&eiv2<__{$=Pn@C5h`u!Eed$f;w$1YQBZ5B>-_pTmCv z|7EN%_y+!4*l(~ukvE{Q^-0(jg$0L7n(ZGROeYm`6UjI`*gM?c-=0eLG5PnMOtbAr a2RjFEYIQ@x&i1snWZd6*@UW!eHvRz`23j-# literal 0 HcmV?d00001 diff --git a/src/rel/ROGUEMAP#FE1000 b/src/rel/ROGUEMAP#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..1aed444a2150b93ad36f4fc46d302e2e51410927 GIT binary patch literal 7952 zcmeI%dstLu9tZH>9A?g3m^%Xwx16MKI9g7oiy|S4n&qey8UfMHM8l+nIMIX`D4AKz zOk^WB&9)0AsqI>_q+zvIgp<;OlAx}eJ#9U;yV-Vow5QrGv)^+LBcNhT+duo%%k!D@ zUVi7y`~K$eaz+DYri3UXKALi@?OpqNjxT6Gbg*Oo>m8lJj`^gvSS@`eO{24<6^^Fssk_0~tBcUjeo_Uc8RaS;0-^Yq= zxxBBUkhA?YaZIU1r&v`f6+&IOMzjje@JO_Z4-2={YP8RcY0hp99Mo$0;Q`S)twtlB zf93*u^o6e>PDHQMi6{2I3rQpl!$hG-`6A;Bi^Z_49P{E|6exI6q6h~S3R-xLMp5#w zY7}(vM-2+Pgo>6gVqL4%@dd-^LPgIPz9m!*e8C91Q8DsG7!c|)eBqnnmWeMysL_Za zz7@+CoQ$^Eh!YBbhS-DV2%!)@c}9Z8%CIsei`i*aI8hU$i;ayNVKm2^5)u-VF0x#l zl5)wV$*Ci)qd0EN*vrO^wq22S<&_gAUOp*f%J|HyvZnqjJAHD_jLey{uAY6(oN4yy z^XAWVIIhcGu<+XJ^YZ5w-gwhZzjnHc-8YnY3T|Cgw7B%PGTffGcq{I>vvTpW&-NGp{PHuewzcmI29LhJ|3JqZoiB8~bZ~F? zD~Dg}J#zHeUyuLotrHR~_~%qu`^>zVcH7Ts$-k`imkj(rWnjJe+@DD1f9~1q%_Oan zlB`BXYz<5D8o5=vU22tWms#2EtW~~U?vQp%9kOnjgY9M=a>VD$B&CV5^P*`i=@$~M zOpHZyY-6L?ER7#96d#M`*pw7;h_kg&sxfw#G1iMish0A}82dDGGu*0#(j>~Waal}R zl$*gh?kM%cfjTa`)JS3k13`?Pm3T63H{u~d3b6Ut%D9u+y z@r@R$WIa-hw6I=Gv4wSUjic1$k!IBhO>d!MK%@}o%B=B7H(vM@74h?wBgiesJ61~h zCf=x-EhkszDvrA(gWU2ux4gdbaw=2uaY{ap+-#kjt#6E>GKGhl73GX8tH#54n?4Wu z6tAQyjWm0Q zoIFM@dzL+(Qaj9h5{jD>@ws`7{Ksr^tNG--8S*9A2$N!4q#k?*we^jRy4>th)cG`w zPwz2j%5%G-Q!@-L3K!GZN@eQQQKr=KG0kdMz-51wJWT3zBO0~*-IAJX;QK4%#8s7P zGbMI45zc5_a)_fo5=PM*z%)9Ur z43+n3;rR-A&&UoZKCM6T8QI~?ix;gIQZHWhf|(b?2SxX=Y>TE21Wna%nxHFkz{`Gq$13GKpxKg z(0h$IUoinc(Ox6YS-j*h_L_m=KYp(n#yW?i6uMclE z1NQj(@J@5~oNMbZxYL{y{*&Z=sCE3vyw^sY_Xnimybry{5BU8YYQBT__(*peOgn;| z2GKvkPBYX>hMD=Zx4+0UZ;txm%n$hMI@EjzXFk%uuEWTDZT}wsKV*IwD~TlYgC`Z? zUh|kFocW>m_yNz8LuG#O^W+cjHR7Cw8)rCs&A{+Mcl;2~ljnI7#>@vkE#J`hh=0~| z@i6l)Y=DC&6=B{}314RvMB`6OXzLdYC4Cu14}2vh_CGRO`3*~-eT(l4-#0O*E6p~1 zRbn1mKH1n&vQ70W|-5`Nb_$>haXA_;LO zDx*|o{2nSsFkU$;|E=TSAs^WaC8aFo+3>BaG~Iw+yiRZh>Q<&3P;<@uD8$9m-RTB= zdqSJD-V?wTUQRbuG<_68jE#zzjCf)?;RLV=#7u@}&?ORcax^h9R$@k3$)7GE|852O zTj2$G3HHJ(&<5=gg#GXZd5!$QhO3oY|Fx*kMLkbx@E71% zjJ^`|EkgZv^esod3Ra;VP$oCruT1tog8DWbcjEXOj@=kP37nI0i1&Gz@Q<2JS2ey#=sQFffBeKeBg&Vco4S0Gw>W7 zfWvSU-h)r!dyr_6bI?OFq`^3t0$DHz^1um8U>U4~4X_a&hNoaR?1gvWBlrZq0aizT z9VEkOxD2L)9q_LK{vucm%b^NZ!F{j^w!qV{8}>jDy5Ttd6Fvu-p8Oing9%2$I7o*A zD1k+AC)B`N*aT0&Hh2m4!2#%jci}TQ1z!SV!2BT*E{4m%23NssxDK4K8191Aa4*!s zCfEi$;Z1lO{th3*S0FLs+7J&T;Y!GaY?uQDun2C0rLYp#zy{b1Pr-KB4X;869D{e^ z3-}HwhWt{{!AKYl*TD6V4<+D*6|e>xU=!?s=ixI0kRQ zKj0LEKsEx`hKpb{a4->aU@qJYi=hm>PzCE?1H1$8!zUm$V}39Ot}s)>WV5khhB?V^ zM}59o>d!@g0Th7;7DE}_0hMrf3UZ!t-H6QbEcv*zNf!&BK}DCzB5B? zLTAVR1HHY64!0i&E>KKPXgk=^)z&*x(VVdFaN9BdQo2OGcC@1>c(Avlw?J`nG~e#- aY&#yzRm50vwYJ`1Py69uaGnBxWBv=%eB}%P literal 0 HcmV?d00001 diff --git a/src/rel/RPNCALC#FE1000 b/src/rel/RPNCALC#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..60989e0d01164efb5753a91af7277614b7f93627 GIT binary patch literal 3456 zcmb`Kdu$Zf6~@ornSI!6<6-Sxn@4sB;ySxyysRC^7(;9<0|mO>tnDc*>xXP&5BAhN zY8%(kP%+e^N=w~LB2gtuQ`7=cQ%aGcX;qo15rK+GfYU&mmm-m(mLwICl~k!(soU?) zjvrM+^G_}P_MGpYbMC$8&SSlca#$~s>RUt~lw7>}%Ij~oUY>gWM$6@?uUx!-?aCwc zxqmMA=cfE05mz+E#V&p^yEwZirf2toA~zw#CW< zh?SO@3{(qwLR+;RdB_d%kS%Jw5H+??3Lq4_rcziSv{l-XDmO%xEgtkjJZOuG0*DH` zCMHNiTg;9`-4Ibr1Oq8AM9LD6`O6C+%I%tb!RKz2e$Rn*C`-@ux5=3ica{@vQVCt|M zY2>0YfSPb)MCGD0h?-QmGqN2b9^^Ig$QP?1HUxRihDc`$A`wJQJe-JdL6j0%GLJN- z5@|F(f)84sn9iidRK822qZ-pav^A!QbxiZb-K5-~6iKO2Ri71{aE;$H?iy#u>uDfQ z!|Z4CvT1WuEVCAz5XbKoJaIWQoEPK8^Ga9p)ywBf=Y`tmLK>Uhm$l%$khS1{M(5_t zjW0s~nyBS=jj?AB&#at__0svNh2)|E3OoANNqr5HuZQ$noQx;8hsLaJ1bZA~ij0#9 zJ5X@qW@eaT>4hlsp{%S?>Y<_|hiA)?5>txBvou>fKCk$Cwpd(XMU{npAt^g|Sx7=< zdx|+oDb99Je0yw0Di2uGw9{xvYDZZ-mr$cG##Yr8Me1~6drBbP1xciYm0}i^*0v-Q za#Q!fqx%NBhxZKDtGj%xS}DwZLJ$+Y8_SU)b6nc0o3eP?9K0ko6lhTMIc^_$x zqg|S#mUUUv!4r@IlRx6n99@Z9nY55{kWOgIC(fNU=`|QR@e!X&UjP>uL0=B5OI&;@ zE7A@eCO@bg!sj@SO%F*c92KRr8i$rS;l*2-Qh%f*C>v@sqcYhSVD*1nEnpBi;xOXow<-s}zq-bTVpD;%){ zAt@Q+`(nraG{BH{mUSu7QYTfV1%4tdh9I9riO!otu#aL5@hw&?zmL!m+CnaRnyIK5 zm8Impx}G_y>>YQoa9$&7Wf8XAQbGDA9A2`H^ex<0ksjw(Aw9wEa?*EjyO@&2T3kBZ5*ovEsh40$%$qEn9m?K5>iI&v3z@^-{07oB zzPV1)`?%doy3TEa^Z{-+l75)mdeV1uTSNK*Zlk0Ra$82p`^nRYW}4{5Oq|}zB7HkFJWtFHC#*!r0%$p!PC;M1ADpcEg^D2J@o(*obt z5ff_ljzw4T3)@{nO2B#{P&-q7#CCy$g~ZN-X^>k)Y$;d)D#1pu z#7}G+cnq8acfiLW7$CL-oC1>|znB=l9ob!gg^aUA#s%;y_#?Otroq2}*Fi=J_yVW` z4ImD-0}Tv;L*RSh8Sp$f4_*e>z}w&s_#0r1i~_I}L_iH_0!c<@2V>?4la24fKL-0V z*b7WHuVMTx*bia<4x1w|vrv%DQrIYL18f|&19lL0zaSdl7RdOHK;{!d$b3eSjg#vqHIJk9tBmP7V$M= z$XExz3H}zu``{k{W6+PI?n%`B0QNZSN!T;6=U^vA(U?NcJMjM`I?X#GGp3=LQ#QR$ z(F{35M%YPar88u%h2IE&J^an^6Y!g1+ni){gI>@Fz6SPzQE&)+3mif2QRJHNp9Vh! z$H7m)Da3y2^ckn&{{s99{03aW_$#Qn0{=B|6TAW52Ja$v3pKal{}p@$J_Y!vm z0AHa-04xT}K{==dbszy+z&4Nuoj?NvU>JNI9B`3&(B(4@!5;&UgYScK+}Mko%xbsGSOZ^$-|h|>-SBt9 z-wS^q{Dbh1xI^YRI0l{rr@$HTB6taTA0Tguhs>bIWiIphjT#Sn1nWQoGy@fE18LBK zT+JgJyJ1H>viS|vebeJNpMd`yc-|wLr(s_PuX;q|9pv3c{)ec&3#P#*;8XAqkeh?^ z&LOifN2aNpH<~2IO{*kwvsrS|?=E4`MOQCfy*Ra9^3jd!H>aj9wMc%t^u~<|{H&6K PgkM%th^!x1l1%h(-zpDt literal 0 HcmV?d00001 diff --git a/src/rel/SANE#FE1000 b/src/rel/SANE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..1f4145af80dec8e341382ec2c1d00c4b19f50c43 GIT binary patch literal 2529 zcmcJRe@xV69LGQR-1mNjbv$su35Xt|U*v}u2^ll&hlpMik&PSDNedCaaTkNe@UU-d zc_~a?SG&rlYi`V?p+!sQ%~fl1UN|t+1GHwVja4{pwy`-!DRRBP-$N!E^Pk#yJ)h_K zJn!ej=lMLJ+g+i7)f07@O|;w+I``f1<%%=?1HJtl=u~2tImI&HB3f)yV~QokLe!z( zY3MW_)9)W=yZB!XM;p3)#-1hn?0f8;?BF=&dk&B84S(3v(9k#*3G~9_ZCveUN#|ILr4k8ikG7l>;!VjEucURZ ztzu-0DJd;kUtufWu)4&tF2RG+m1U4ES@l{QU9~NnTVA&|HMd%&=B-V2Hl>{8WJm*H z7m1L|o8mEiq6}mf^W)_VF1q67#auidFK6=d3`H{%he4xgvf{;XoTB+7PSMO!Gz`xo zFvs8m|K;t-cpxpSlNWHYHBL_F zqRlL4adC}V&fziQ_{q$$^{<6G+3sg8YIDIVg<&zQw(HM3?lv)x?D>?lWOYM;l5>$#(u ztDgZ=#uN} zlt;H#J0_E=m1mkviardi`Vg>2s%BkgVk2N(0ZH90I4nWD+raW3u@`1U3tK z@dfHl2B{zoECA^s11tuaAPeMxZY}vkTEYLlR_7nm3f@av@@fV0JHST4?5`FQ{4Wdh z{I3coe;aJO5bOT{_G4k5w-cIA1&#L`fxKrizaYeVe}x@|oq$c(3EoT{d6$8wKoNKr ztO6y#4%UG(Pzg4H8n6XOzy%sXGiU*CfOg;q2fz_<5`@4H;4=7GNB#-?U#2JT9AE-* zAOToF3P=N1kO4%H1#&?i$k&s9g)nib9e4$};cJ1W4Raa1 z3ATeBpabj%?|}Ef`(Q8F2M&OP;1K8npMfvHF>nH$1Yd)1K?s}y{op(p1Q)@N;3x14 z7y-Y5E8rTq4sL+IkzbNQ@TMBbyAWi9Wd@??&o54NE*R?TU(GcXzI3sI3yOJx>!`0c q7!D2$Tqx!ybw1QP&>I{s;juJ)aVQjik(<>?(7_WZ`Xi3dBl-u(Rg}>H literal 0 HcmV?d00001 diff --git a/src/rel/SANITY#FE1000 b/src/rel/SANITY#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..fdcd8baa08aeec24a6e05e565392646be2db03b7 GIT binary patch literal 2638 zcmb7`YiJx*6vt0)?#w>3PS;J7tlMVMB~B;FI*A6Ow4t#{G;!IkX^b&in%c=ombzVa zTx=9&i>+1G(D_g(6r`Ytl~6YBoCnr2?oTyvz&~vrNX5abv(@h`0^+7NF-^bJ1rt8V}j&tWmSe2F-B5L{U zZ&S1_s@ zCTfTkJdRgp1-ZuNL?v!9-VK`eSLXHgh|eUjG}2=2?XsrdG>sTpyKW%W;CiWn87XfD zN`-(Sl`JXqiiNoTa~HQ{H{rj^QpnUIdkpz{eOEzSUfAj8`(@K- zs;0JQSHZVDg~nI*^vRh_BN>4yQ4RH_uxnA28YroOPG$tq1S7zDrhNp{n1=SwmyJL= zK+FngI&ArDn1=PR$y86)OT*a+4Ue{rTq~LUsBG1k-nCV^u*fQBI2kpCh~vIeU1^dU z&idT|-B<}1trad>++?M^8pT@uiAK`;P1ecsS`I^XUNbT9yw_xTlZ{^Mc%_9`+V$G% zdI{|uFFmoEG9faeB`b<;M`xmWBWlWh>7U9*bYG#~h#svkgp8;aH0!BvS|)6qr7ovT zkc{Azu$JHyG($bOX$TKGtvFdW>-QNoJx6K?VLeBjFrNAZ9;GpNOG#%-GP*0%p?ccx zcP@?^?PN24xXc9d&;C%h{JOv~+(Fz_aTbo3*6TR9S1mM^3*mfLpiPd|4DBm~GEvf+ zD{30$iA$+Dx$OlLb5? zdvi)!a;|YG{YE)+uQ+itL<1?6T69qsyANe$E+sQmLhH_28eV3H&^{A<2fm?K`$w6S=$N`5hBED?a|E18|Grmrd*a5$5l*yB|ig&V3iBC2tGQGOg&eJ}qA9$oLBaG{&CAv*h}W7$k~#-P%d!mu zqk_cWcgw$%vI|VwdNE1)1t!%lCaHXZNyUXZfB8+nMJwo=4#Oy)x+nX^?U_42+_7zpN zw#vfx0E^i}kP*mE$Zp6JELJ?q$$o{$?6)EB@mO&I`sbY6Uvp-k5k$KE=TQv5V~eD>Jf?Mj&DKU|obJ3gq? LlK7udi4pw+TTEmT literal 0 HcmV?d00001 diff --git a/src/rel/SIEVE#FE1000 b/src/rel/SIEVE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..2254c02b05cd038ded8a61109c36a526ff3faada GIT binary patch literal 412 zcmYk2u}i~H5XL`JD>zuLP)aGqmI`l>62#HPp_4_6Qpr$?NT5T9K#5z2LV|;fLnapo z5pi&Eb8t|o8gXc_P&?@2e`5Sz5cI*1ci(sS?j83DqYIQIg?o95o~Iuz{5u&1SRGXo zs}`4atg_+~yYj1{isIJ3%Q$y1%!^K`yx9K1RvS7<#JsO^e5PfNIaLsMrwAm)1sZ)i ze<>~4vC;gB+1xgK{e^y*{LdLKPvb#eR`paJRTWED>72Px>AO9rduT3diH=bc7*#>A z1jAbff)!*u6Y$m;uOsViFm8}-vP;@zpKv2yk2u6712QB>ahvNC!7a zdAHPeN#ivfO-AGKTU|1U!e|=qNf!74RTF6= literal 0 HcmV?d00001 diff --git a/src/rel/TFTPD#FE1000 b/src/rel/TFTPD#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..64175964e9e4f87dbd8376e1d25b5879ccb4c4b0 GIT binary patch literal 3162 zcmeHKe{56N6+XW2z8^6mc`qcS&^SCLAq{Tgm;qYws;z^T^@o*�{y(w2;`3#0^Pi zjES-q@hEL2lvca#3R8cn-B{I5XhV#2(?%;;nvHZ0@kr^!*8Z`nqi9t%wrSO*m1f_4 zhK?etwc5Y4^5uN@oO928_q*pl%P$x#Nxo6bPm${;XI`B<+c|w|D)!6i+|+d2G zHX@bq;qu@AKLrJRrnD3JqsJdV{_T9vd3+{v6~`{zI5G2pHu3TU`o!$f+y(yrv1jQw zT3(wtCA5jzlX-rw=$!sWF8}Tu$MWy=bgRr^##1+ywuA?HaP2KogA%+&&+r6yXvCrM zEII5GqH(pG`;gKTBZ`CvS(!JRMf41F=#o<@I2AaRgkn6AVEf~|n_*h)CChxmp%ww zmeY{t&=IXC*j(p5!wVPYvs&0IGJZsJxTEbwDbKd(sOPZNJ$oWrRtwfT+K8i#CyHXD zmZP;O4SvYuQ8nQQX}2jT1k$7tj4?)tG7*mAtKk=@I#JhbTJ{CGLSDou5A6H}3r%>Zh zXrK@tg&oDyJ?-tEs2ZVz1(cfx)D`Gd++=+DUm{1!)xs(0%}0 zZCy?f4T6o`U`qAInyt&iEH?|1wSSUe+J6;n4f#l^oDbRFqkIOPI#t;>+ZeVLy&kO~ zpEtF}JIs#`jN+YA!}=yO<|`X(vPOgEXrqZ?s)V}kU17Fvq)>UGM~6p}L$XI5h!K&U zDkl+ziW+S%!SnTdy$g3E`L4ZOdB%^4*#*H@8~n%%CrYqpsHEf44Y;a0GE%Fo7PFDe z{bQ>vc4cE;-OPm(Exp{#5LR~cDyzPDk)z3bz3Ylj*1Udgf5i9M)#(qJnY#WalRtYS z4c1^Yhil~9!K6gZBbnNU+G2x&(ugq>bgPzy_agTWLmVALW|bp z{-d|#-U|)(aV_P<|M@uBwT~lIvI%{CjdQ(Pc{DZ2{)V2*%IOL@>p$x8FXL+a9=%BH z(1)Rh!qx6frnAZPr@!5u-HLqqW#xM?RSmJKX;6NH+*Im)1@%NrDcFpJ%Wp}1X_#3$ z_~v|uh2u(SiCon#EZS&yCDYpnhKKCWg~Ia2rUr_&;D= z_!KU>1SgJ*>sKsN_XrDOcQ;oZQu%#3s(&e(;^Z7{>SWfH(->4=|npehT~? zcm?sNfid7dU^j3-Vh>{eKG^3~?!E|n2z7o2ysTD>Uj=#*cl0W;3%M@% zUgSN5_&&rQ0}cRB0?z=?A^v?Gy#jt1{3z!A1^NHbi^M;5Mfi+jQDg)}jlskX1{Xm? z5nZr%8&x7>aCfIc?!5+y-A0wW7j~af;yw)DW8epn^OUhne9zD*f9Cb|CX*)DYAVup znw)+$1+N!eXByIZn^{D2XXhqQ&+6HnVOl*-))xB k>$7L_`Kb=Gg5>W6vx*8o70dwTr%rd6)#UwXFqaYi8>8^&@Bjb+ literal 0 HcmV?d00001 diff --git a/src/rel/apple/A1PLASMA#060280 b/src/rel/apple/A1PLASMA#060280 new file mode 100644 index 0000000000000000000000000000000000000000..7b77f3a1c10b2bf8209942210b66c4d4da0909e0 GIT binary patch literal 5087 zcmahr4R9M*na``$YIh|oo78sHv^c5>u5CgQw9V;yooO7~sU6meu-BnADHR#}os-K5 zlZ#a@VOl468N;|9d1{qVU`9aPvAGniBwL2|5=#M$?7JjS33eyYE6H6Vty>_9TpPH~ zu=l-P*-d&J$kw;t`~Khew~`;M=<)0=Q42kLk-8W!k#C_MHP@r+aVC*d7Y6|p27x$m zJuYdP7DLTxDS-L}ie~Gk^Y?gnQuN1ZmoUlbW z!hfBAoNMJ?;^JI8_ayf+cY=FW@VeOT3zHv*%K$c(i;*!smK;RNz8(R83CNJj{AymkVqIaOB|w3H<1RBz&lx=^0UKcFQgJDjr%6`3um z!RVi=bJhA-ZVtRHC8L50_!3cb{wVbWqrC?+^xp`?LKN!|($Y54NiUS1vu!$dLY0PIS znELM7St~SZO3hKAL&Kp&4(RDb&NBJ5Y3!d(2sju693bFe67a(;y_c3bGNsd&D&krS zZpm4+<)rll4-m0NMy?*e?z=VQ_o_7G`-L>At!NZ{$E6?ZW^d)J&e9XP zZdkuioNk@2Vkld-K%hgliFHd)E=}IfE|RQC%O8;5hCQNB=f-kk zwGRKZU&nOXtm!l)-0WZ4>af_&nW@)_k0QjcllygDyD)c=Y}C%qP37+=>x<_P(KA_} zcj($w`9`@DG z1i_76O~Z0guTC=4*FZYIMjY3YgCkcpq5~w0ahoON`63l631zQ^tPL<}+h0K0MF8^p za>O9`TqvW^`Z(%4l$~uI0as~Iu5WLx_ik%a>c!TkR`2$QPsf}w_+8TmSnvZ(L0hSu-WtpXbZ*Hm&w$`_O%1sd<>;!7d z;{jpy=%iR%liXC_-eggC)wjqTT%o;5p%1WZZ)xv%Trpu2g|dmuO>BG96AIVZva5Ax z<9*_c5Eh?yM#L{VKQ6Yr9}>Udenfo6{h0WoyHUKdrbT>jO+b9g-7ZeMpAa{e9u{v% zFNnj^fH*0ANBpfcA@)nB#8b}K#H=$UmP-F9)=DXH(De&3#bX^e>uD8S! zt{SmYMCgV%{FL*1D5R0E-uQvn6@B@J9*5V$XfniWzkELG)PDB-h*KlYr!(5+X6=#= z9}w)R@frsI{0ZmqE6$-GI(we~k@Mvn6DQ(Ms#z1FWtCA>yQK2kIaN4K^6YXljq8;pa)-oz6QZ3w|v%na>JjX+BAQ52i!#)y|in$@kL9(#|eTMK@~~!OD~>XctsY zJF7ZQp9gDaU>|cMe44OXA?uhwPj1bhA-@Z0=liJinLd#Bz=5iq=>w%{VcHQlwDWmp z`3zMYOu`URBBepk*Mil@8DvxFmv0)gudF4~d#^~O_POG_A4<4EX?O32 z=M%OPj6zI&4cgCOG|7a3etgL|$oM*Kl+6GeZI@lB?qk5gC>lW+l{L!(eGDou0;%ll zejo5U87j|~po2E_B?QKRraa}|&$PXSdJxlP+b)+=WC)m>5px^q)pK>M%Tje+&KE=wj-;&GJW37mX5Z(!jflq4&bM z%ho76XmAH@UCf59KjbN1_uN)lG-!6gaVKk~u-YwR#DDwIHAiWB%~KJ#lE##Dl_*!% zK+3MHDW(zfH-s7Z55cVfV$_R~Wse2kL!qO$u~7&lj@~9ht9FP%b!A9-+WDm`!agTj zwaXkrP&>-4qTDZE5iGMMs0Qu3EDUs(Sak$E!T>mlp1my8FiOZJ+Yy9-i`Noun3Z{| zg4qKMW?mYOaP+{vI27hBC4NOo#C)d+W`S=uof#ikwH#WF!vxDAuF$?WgkJa#9eP86 z6wq!9J=!108ATRmDDwaSzYRnX6}RHAWr8gr9cD3G!z({`9Swt~bb>bO5aeeoR1&lM z<^;u88s-9JsO|_PrtUE)2#7!9hW5Z*XDvp4o9Q&58K|?CrhzX#u3JpBA|#!q)7FRAP2Bl8#1r6memOZ#?0mN%Av$HZ$E@0Uma40rSOKxy$IjiyBY|t z9I9ySCc#dWw6Gc;a=*C~dC*8w+N1~CsrD)73K zY{Y~4lNDhO^8*m6C+v+>1$l(4{A{EOSA_!02Cf4okg|2{(V!Dy_emaaQ2w

n{ZVz3*oBJqrAKch~T**EMbmzXek&h>PIBJ2}|@^RnP}!yi>*< z_46pdm3%1T#xD5*gk5mUlU&$kUSe0+ZKfW(qjcsn!e- zrX*NFdlNbi2HG5R6dE>%I8^M~I`6i?TeS06)W)?Eq_* zsp8h(u(I{*yqlb`=&1WocG`}={r(HU1`8eHQ>x0qvkW~0(?kh>DQ*zzVyySZ-6ag< z0A_(ve&>=uL3=oI7Yu8p9I_Bu59H~!&@=SSg3IZw-*xD+HO+Yap^RV-%iVNia0nRH z|1H3X_RI>fAnP80k?onGXmPy{OV7>;E6X5wAKLdB=N|9}j(zZe6HE`3lp^e*&p0VN z@TLK*XE%xnX77}<`q#p~jp7g;Na!X&Lqh<1;Y$}SB)B>7j)7=VffZPbs`E4+rC(Cs zqd^42rjGn1eJI~3Q#O{id5|*cWa)a~dnRc@j}b$m~frv*Lz6T?vdupim}7t%mqh5!Hn literal 0 HcmV?d00001 diff --git a/src/rel/apple/CAT#FE1000 b/src/rel/apple/CAT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..117d20d0cd15bdf61395070c4b13e01f5e9e8816 GIT binary patch literal 1396 zcmdT^&2Jk;9Q}EAv#CpyOq`?@B~3TTwWFmU4pr(<8j-lRF<>?(c3am1abaN!6-$^|ZP!Ms@l2>t_B`}V!} z`4bYw2E6Btj6RCV7UzXmTBIkJ+)cVI+@_qj6ie+SqJ(40$OZa;YHtx-{jG_;UzZ01k+y`l4jElYc zw8J?ihI3L@Q7*6MWkc4>?Nnzng46Ka;Hb%mmjcmwY}p7H;lzX9g|j>whsg(xAdYIt zeU3($y+I#1D5hrEN{(q~M%X&b!sGqdq9ZI3a-rFa5#iN**a+*NwT*!2OhrykIv{S1 ziKX?g_V>Iz$`?j?dJP*N8M6&$Q4uR zG{3Yodu?$}&0SZoXXlpAi$nc$5Cpx*_Bb(rFR=$e$VJwKL$pjFi zbU3X~96{?IV)x;z4$1lk{2f?kvf0JRdW0#~5F0Q(&>9;up9Aa6ZNALNoQ1y0`mEPj zzx594-bLN}h<$*%kHBBB9;?W@%?;=>J7(3GYBkufxr5$a;CtXF;1}e7L$4%}sYqlw zrD5|BbPsSCco-N2jsuS(e?sz_C!x;)PrzT0Jmyo-0U!)K156`6gSsowDd?A=GtjR< zzbeV*>)8>LFA z&X%i$a3;Q>(U9ua{={0F`!&rFw!Nqt;fVc7+cS?!}FAqnY5UklUr* m1Ro~*qO6n=b(6R%HyX8Sy?|vswk=O{FO~0p+N#BQkmwI~rd-_s literal 0 HcmV?d00001 diff --git a/src/rel/apple/CMD#061000 b/src/rel/apple/CMD#061000 new file mode 100644 index 0000000000000000000000000000000000000000..3eca4f3588381ef55c88502c0f0acb00c2182ae5 GIT binary patch literal 3800 zcmai1eQXow8Gn5~pU+MjUfZ#gl0dyQjhw>;cWY7BF+oTS3B80{a^b_J(+!zdDWqgJZVW}&XBzIA&mue7NaX~bEb1Bl#= z)AdLi_>EDu4oRz1-Q1=q(H5aqZK+eXTSKiXHbiTcrrMS#if~dZ%bV+J<;IQ8uDiAdT_bI8nG%5k^Hk?~O0GN|`abLy=AD@WWgKzj;y$j$&@S`ulL-ZzC zh_j1Bq5x2WL^xU%q&4 zHotA8zLVeD{lyW}Hg4Lg_q}4;F49{syf!;%jMxUVs5~=0V`L_8Wk<}XNuxP9Jva#x zjhX38_SWP#?Jc72;mq#@4g2aHXgakW0w=%)5nOO(rooj-yp3t$LT~lHsiWfPt>Z)F zsJLJ``*qv`0&{`a(*i`wfCyLtJ9JbuK1&OW9M$_S{AfV9@Y7N5#sg4GcSJxf<--Od z#GH3pFnm+)(a+N2pfLp`s|^}J(jv7(J2+nYw0)PD5(lnAiChNG`2~zPia-l2Os)*# zK2=R~LRxrdKIfS_Ub72q7uC}8uBPVGV)xmZ$$`Su zf>Aa+KQle*A6|eu8=gNZ4hv87Aouqm_w>T>Jg8e3%npl#)5EU8NlbINTi3=b}u6XI$@-^L3ZJANS!T);f0zAoW(fAJ2@`NGom{f7vj~YJUu?jNX&^x zqD@G0aAXe?QFoA}Q<@5Kc}UzD6A{AOID{na(x0rO=Y2HB<3W*KObT$|WSlNCUUw6{ zP`Vfr7Bv*cioOx`$FHMoBt&*^_w>bV$RpTbu5(CuAY)|jcF*puo;6f{kT5<>)~Ty~ zCkv1vOoD2q4?+Q(3H~lHxCqql0j|3P)b0ScdmtR2du2Ca9B3dhf$=c`4RG5TFN>&v z@m(C_UOu7=xDa0IPl#jW=fEi1*FCf5Q6Z0sCh_0KjYv}Q$O?oWuy~QXr%$q9@X~W zb4)Zq?7s(64G_kuj^YF_KWs&?P(ABQ2+ie0`UO@45AJOBMWnS*GcbM8tH!-dh*gtV zwUrMD!OjF<0|nG21sUHNz6Js6?*gfOjlB!0qw`MeZi4@z6(|m9#NQ$Ho^+D<3W;uz z?}vlXo~ja$dOZM#p9WwANK%SRvWF{9?g_2XJEU`=Jy1dx*R#@>>t#yflG^HzNSmPa z24XkkQfQCVt9JNxj_uL;P={WDMM3vt1r{+*tUoCd_Dq=DwNCCK>{+Osm-cS;u;+9) z`>|fgy7i*aPxK1q5yC3M1S8R0wy1(6C03yxD1qB0l6FfQt9TUb+3MR5S}L^WOC~FH zAM97*OXwoSs|0){tJL_48>X_J zuu`^^39M4>Db}g(O;l=FER`BuJ0D@*ovaEt?3x-V*{>83M#n_9T>XAA^LE{p)clsI ztOY~#5UW}YTcS!^Bg&Pq37VHCpseuX+y?>|`5^!y=0y*yYV3LYCrrgjqzzD+kb|!> zQLY{cM2JpVk^C58MPu$nk>$yj1cmFrK`w<&gfMF5kI?~;pup{>VRPab@X^>!EN3U- zlY}JmO-6brMDiUAF0jroCmqlQv^7hh%3+k35NQ=QS$^?S@HJHDPrPR)g-E`G7C^aU z4RdHJPhtgJ(ykoG)&bFV#qCh^IDb$}Vk@hu)Q%(_%r%N4szm#ndBnS_3UV=-A3?LQlBdWCb`@)4LAOm=>Upzc{Ur~YDj+1u?d2nhqp}- zsZ>4fk*@S?o8Wq$orn`Cn*1~5K!fCN67EG!*P*b8`c@fIxa*v}18jr$Cx}eM$FmyP{Z?L) zRr-VK_v@tHw8?LfssLOHo23+n8)a(R*TSqbk-&k%qm^Atl}=nq=Ycb##9?nS(N>CA zRpzh|xO#j+$s%YiQ6E~Wd>7f&rg9}>P2MU~;YS(7NC^^Q1^LK)n0#QaB5AXZ95xm5 zin)bcG_BVMZ;_v@bVOTP9;&&2f)N;CRm1IsZi5qkZyRpxY<|y#M=4C~5Ra8S z{NP#zZ&L)e_Btp8YOj-4l~73f^CeWSAnhf%lzsqt@3Eo?5DcVMP|9*BF4MNs4L|gP W8(N}K%M0~Qzj_9}P)nAP9sdQ63Fhzs literal 0 HcmV?d00001 diff --git a/src/rel/apple/CMD128#061000 b/src/rel/apple/CMD128#061000 new file mode 100644 index 0000000000000000000000000000000000000000..e7205601c8e4ebf68ec2d0e9c837067ba165d3fa GIT binary patch literal 4128 zcma)9e{2)i9e=*NoX^1x&%fe80^HIxa;`489jz>i+JwY3p+|6&3qKrKkH|cwY2-$c zb3$1+QW{e<85A_aP`gS|MXF{+Y7%j(wl0lBDGR8S3tgC6A=H&ZLbo!nDro(q+`jMZ zKs0UAB6z>PpYPB2ec$g{{&I~htwIcfzpE?O`nLJHd~}VFy{1Lk($vz(*KV$B-qFlO zTNG<(psU&f801E}+(3tV?wN>EONVB=vZW;&jWqGiN>goghc(qGLVctry1Az5*&@2A zk>xG5HFCo8nZLPyzJ%Mq?Q zvR&cp8n$lUQpazusjY9QvxCi`LgwhO3bXh!-tD@IdtD*i>3$ryyDRZA_mg zAI3Mm5&Wuq6aL)21?!$YI9B`%e8QK&4;8md#P>(CEx#o4_P|_tL0H8rb z74$!+=JYcuIIcf6qkmSfUz&%%1J{4o9^9V^h&PZB?8~J11NMHQJ>_`&`UpP+d`B|@ z73eY&^-C#1Kb>-%GP2yA%n;Hu+0qhy=7@0F$QDg!?W5m?^{LV94To|2a>lp?vQ_x6 zU+_(2yYx?IFX|uOo*W437eUHo%AtRn;`I+x_EQ%?+QbkV z#MUQIb=Mb8^Pm~ zAy$0fv=kIMfMHC)?6mR2@sbzVJwi$t zxCANkDR9os(}+_M)B+2WErqyGSK%x_#(zAQbxj`+?*SVIuH4BOmn>lmESA;hMB||$ zc8s4j3=E938N)FQ@L@Y>9kG|};Zyv;UvAiq&yLbtUSuqvjnq?3B|V>|gfYJ7qm-k) z3LBw!#soOKl$sk8dQQ(y4LDQtM(Oa}?98Zdcpma>ca09e_Dmh+0NJqLK|f#k{(ey-2@G2h#+sh?4Z*@<)#;=UxhpUlyP=+89m4FAFgu?`P4=Cn=>LOtE0#IE5?r?#l$Rigb!hi-8 z;|UkzsR4y7;beg-AY3;?nAZ<$Jl*ie(g|T4{Sr6@%2|L=tdIz?LSO>=PRdK;4$|`e zSfS-?9j(-#R_aQt<%*43$Ur<5ujNWBxWX-1C?uGBKqe1#E&>V*K<6T0bsku~2)HOX z_a*k_f$AdQqTu9#VCF8@f{z?wa<|DbQ6J=w+VQ-r3;w5jpLY?IrkSO#?`xbh^CZGh zVmAz779fbi7X$#FFz`=RZnzkeUSB?M?lhE zl+FY?;9*!?3F+bj(ivp-RLi|6o`6?#taqC${?d9|vWj%U3+&bkNm6qLG);^?iij9QG=hz#c||B0 zAfmFX1S*Gs+AW<#TnkpUdiH}ZQEj|nlER_`X$8I+%Cwd7K%<+wOr5=NnwUDX_QOTH ziO{bJOfnE%4jz;8blbQPSgG9ghvHS>dN~LwC*>+ve$9+-K%|(IfbHeV%U-QW!-;a0 zW?i`omB@n#ZX=*2%&N+V{{7Jjk+2 z4nccK0z)jImOKCg^ZXE%N`k4|6=62#)T9YDYCQyFoa=oG5qIwf6m)$AA6JD6eCS2( zNZJVL4;Oa-+LkN3i$h2&B2GDsh;v-foZzw3@^)*Y2rA}A*$)J$NTkTRZ&EY>LZVO) zi-P9lQD7~KeM9rwj<_U3$y`~MJ`SK<^@ftCaVt?L)J=8$Qo?n?EH6dU8rpEU{Nv-o zSmRDyF_U~K*G-ndBcYkkP-{69Tf!vS=y6(XA^46s3r~fvA5@dH_=hXh!^r~T7^Sp= zI6Kr%^*K~|8-fwEI=YAhR7oPV7)KbZO@1&SX^*ae#s^a|k{*U>DPotRdGjv%&NR`S z8MlLpk{cupIZ>w|iLgEKFEc5Ga+*&3mf8#LEKa*n5HXOMFqXHPafZG}s4B4~xoQs@ zXh}n1C{0#PL+W9xVyP!-t4*ttSl4)!R>oYPWo%J;eh&nBL#rOZHZ|Tf{|{-KKw3@| z3z1Zrp;FWdx?^2e(fmsYLm}C0*RReUjPx(qtS#(&QR<0X0bOLBT$%X`dgIE1#6n z5$XdY?*!YRV~g~evr1?MVdVy}1JHTwma>y>)Q&_+u7==suwwAmt!lXxFkn%8fe6ym z_26QVhb85qte`;AU9ke{WT}mzT>!y1$g3XtNt#HShc;gyv>?q7?itcIZv}ghXLX@K}>@SUKbSIq!&QP=i&hlAc-T#`3EX@+8j((7!JSc*c z$4jArQ0co?M4x~Uo%edbX6g2mGUe)u5QH%*BK~1W>POHQ<{I>_S&LpXqv$v0R&>U+ z8X+Hs{HLt?z_$8tGp_tUNP9OTAcE0_SG@wAdIx)Ku5w5=|LAIIXxrbxtc zLpkPCPE$9OM^~bqBW#Kv5$P|Fe&H>Az%ifuQTM|Q`who=;J0%%kI=j0$VB+VoM3qo=^&rB(x9KNE(__1KXx)u|AjwYos7pq(bYT>v!(d^uZqa z?9BXTezQ9>cbi_$4v;b@>S;bbG5zh#rJeMeNi;9A=0UU1JZDasm(9<_s7R#Nrid3g z#fmY~iWahsR89V^9bt)$uUQrzPa_hM1Z(<04_M{&}NIwgt;GKvNzi%DBA>2{)& zu#J*oCre3Bk902)B|IZCykwMQf|yVgI*JeBv&kKe`mNFN{>Hs$7Hx?7T?3z(+wbmu z@9JpObbmG~4O{*C6fTL8ABXjAZvXt5@*DKZ%{BAe+)zJ#_4;1Qn~_s|IorV$%CHWF zoLcIlcB0e&l)K5LjMBjwn%)!S)T7MNKmnJwTV=}d4xLj*e~?<8pn8olZ!yNQp*VH% z(!FvwcONGHfy7vz#^p_$JMPMLVA?G1lB1D&>UoBmJMZM!NW+7k%3X52_+^Z8TCr6S z74XL#yTF|#1uaKC^_1g1t8llT1`IjN26|S@Ne`NpN5g>UNG^>j&71B#nAC00n$^&{ zN1^7HM^&s(qx_C>In1@57407jjK-qsDDRHDk6+j|xv)cRw7zewjW!dE~7p2;!JQaM^~eIEFxU%tb^VjEaNFUnzI-E#o~`$~n271on)hfdlaj zIy5LY9`OgoAye#Xy;a6sS%h#*GTu8VD#w&3dVXrhF|rCN-xSvQw4WB%@sz(B5UV#=Eg7Yw&rT{OxFil#3pK?$Ob+8Opz)DyJ_^AbJ zpb?rd{x+#$Oi{xp6&CJSjIdWRg0B?{XHfo%@)}})qJCeYfH4YUjKbY486E~7?IPMI zP=+W!Vk{hj&*2LghFSOxuE15e4maR0xCe^L0!^i$My0S;<$;a*2Glnr-i~s&%EJs| zdte`QA$Ayj@1Q)Un!)=hKR`K%zE5BTCSVGFK;KWQ7W{(xWtc>QNIPZ;cvJL zWndiZ1H2`JBs>Ks)IcpPg%wZ_tHFXMXohvL0XD*B*a9!WR(J`v!>i!IPS^#nLl*YH zJ~#k*coW{@MAd&_c!N$~n3(#0t57JK{rN?~WO1=gsIuHCIDI#Xs74bPF18ATW-iTC QYDt=&oSvC%7x-HI3vt4@pe6+rr4|<}B<58r zWT#dt=;`SJ)c}zJ1H>wzGa-%ziZR4AO0h6ZRAdpFsKO%CsKdh0s1M{D1KCzU+LncB zq7w^Kqbrc@!NS_;2c$z-WG3dYuuLpuVQ(w}@+*P-Nh~alQ-SOmK=FA%{x%@JlZ9>K zexNzWf#PRbgcvSdz2Ypu1fqfkSU{Ag04u}sqd-A65EU%I&T#hV*~1qi1%w#DrK*4o G0|Nkj+iZK0g@CR=#yr2;z9C*gYAes~j22++gQ^L@%|gtc&iFbMhI;iPbuiF%(M(z@$UWmj*b2$>+y}!>O z5HPvipGSE0^ZtH*eShrxZ7MBeF`|oHr8VwTGpFZ1>CDfbJM-a8C{sMsIi1UAa~(68 z`BP_w?4>Seo9BkEaKfz%ts@uk=j3 z_O)0A^-Od#2j=^nCuHgh>J>RQ`3qV+K9Vci#)&M`68 zMd^ahz31!}*hsu6THKHQ>+mC?pZ6D@PIH~>1&l^ZhUK6eO`&~?wr$(Ca;VU!4nrPQ zLpg^YvWxtB$WRgR>qnM$uOA5?cLhobW7}`2^*mC!eh(p$g-2b1hY_lz#2wUy8sr9l zM!q#WhNFFhF)f|c_NHRdbWH0XNX7Q1lc^^fG;~KIiG?J5Tnzp3Mjlv>j__Y{h3>^- z?4)bwgV2%0DtiKZdVH+y6Eg;C$+xQfmdT8P!PrmEqlXes>KZN$ZY19wH`FCZV#C_? zDlz*FtHb1?s_eg1-Lxm8G*QPB4LorhYMp^CWR$^SI1_H_GMt_&^6~PvR4SR$9#0LV z2ZkU0$rT&U;PFLNa_k-*g~4C1scGwt$B6T&8dZ&wL!%`|NwDrmLl%eHbD^f$0Wt35 z_zV^qu6Kga03-Y#tKo?n9+@g77`%av&4DT*Bdm4GDMUSsAgy|Pb3i5SK%>aMUKV(S ziQGwe#{G8aB2R4QlVh82%G<)czHCap({M#Z5So2f~ z#ec=Co0@SUMW)z|s6XyHIK>GqSnFFQl<Bi{E#G1_Ac4IxhC>dOg~3HR0433c^( z{;$UpY9Zg+j-i3HxTe=nPkVeI9Z&90Ya3Jc-CbG-Rsex-u}N$Yf09GE5+RT9i3MD8 z#hWn(i2<_4uJGZyAKNx7+x!)=Z`$b1I;1-`#JJmwkLe>o~lVq{6oW0u0M zV!GvJUTYJRtw!(=tFU%3x3!y9n0pZ)V(0_=TjU>x{UdTtfcKbWzK`)qR%uQ%G7He> znQVRzdx3eZZ@^`6rzBe%xLcA;uS8b0RB8DokM%HoU0@gdz3@liH{kybe3RfX{LjJv zl2mCPmB@S<`uCE@d=vH<@@9}z1PjPJ58r2~{|f$Z!DaXt0h1+brM$w@WT$zzOqN%^ z%dCN|l|9yGS+lmt>&yn3%qGwZIzTt#d*s{AIP_!C!^rt1bQ(N~@j>+ZHS`2{7EFR8 z;CaMeLhkRNkAhdhAHW-63bD5lI|h9M`p@X`0rW}etXyH{pl3h<%z=-fy?k;kv%3;$W%ZXa4Tf3RI03IMK)WY+ZEY*P?4+-#bfS7d^hNWKc;Xq4x3a~ zoBLr8C{FW9*w<0_CUV{dC%}6k15Sf8;6vohpw|NQ7vM|qHTVwv04{?oz@d^Ut7I)x zb+Z(@9Ga_c(+#~6dbR2?*TH&WH^AqE-l@uF5A1GLwj!!zJ&W-q#)mO}PL<3Tk#`il z3|<9qfGO}cI0oJYC%^~bB$x&{FpC~Vb%phB^tqyXsIV}f4{}M^PA=2gY^IRO=Vx2E z)7HgoKAV|q<13aTA7yd@&S`GGc&f0ASJ)yG=5CswT__Z?+xhL3n_I|-`D)6ZKb0+n z`CT-Bwm7>JUpn{+I-M)dg}El=x$OBcUq?&7Nx6sYpQZU6!d|raIF~6b5?`6+zjH2-fet3y6F1$Iwt#Oe~?k-j?HolFNt5+{wse}vlOOeg3a%t;@N}*Z2Y+{7|$G;gn zQ&~)Tg0QkrAEQN4WgB8_vCT6d%-=`xHc$3Bg~N`{2cA-CLtGBG!?WnK#!g!Fqfw>h zS^JDbP-*ZDu8A}qdX0{+^1b~@Qb}{t^b%9%h%$CBu_!FgP(`q|o2Fsh-1gy(Kee1=(S>_$j?EJ2o6K&mlJ_8H`Qhj`;d}X@~5P*WqRCxbPRaR7MP+BROc5 z_~l^hUSfd9_V&L_nvW}eNc)6CXhPm?CDQ|&H3dYAZ?hpel>6B+v)h5e5~uiaphqe3~;2d zpC8m3F$l9Y!`3<+dnbpjaLyU?oDm*6zY~6le6E*H&Leb{{{RzSY)En4s|k{(aqe(0N4W^gg*p-4m=Mf zp+zW#_$lVpvy6OuefkHC^c?gd^a=Di^5avl+ZEn2}?1l#5%eEff3p-?U z=_80e4vj&Fp{JpvkOGCF2q+& zE)^P+d>1vE^r>d>`F? aJ-M5#2eiC}^q>{otXC_wLNmx^qQ3#6({l9y literal 0 HcmV?d00001 diff --git a/src/rel/apple/DGRLIB#FE1000 b/src/rel/apple/DGRLIB#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..aa08333c408e90c4456f72b04126c00ddd77f76a GIT binary patch literal 1733 zcmZ9Me{2(F7{{O9uGhC6b9ddMGx|rJc-{t*QxYU(F=~LsNys@0&Ox*i))XWz8$aeo;vZ`p6*B)|(O{U*+W~Pl`MmwU z&pprcKHvA6US*k10C$}Yr26z^X8O`D05;5mHEabg%z-Uzlh_0+Srb-?OK_4cVN+Ox zRjh_p;S5f(88#qc0`{;S9AO7khpQ!$Ad)>{mmCR)RGp|+h(Q#)VOJc6L#Z~Z1^x*h z@N-f))i}6ubZc(+y!UEg8HC1-TX%Z{Cr=HI=H{<14}l!zhAeW_c49#@nr1LT`&g6S9FaCVHjL_-qni1tRJ!;bmS%vRv@SE}>HKk2wWq!Y!Zt&;jy=oF2 zq_c8w%>akbqg?M}MVqmOox zWweYuKa=XcBrT=2wEV?PviCD|fF6d|wI+t|x&W@G+9;M-nij34m{so+W32AE06Yzk zh&0+KdTymIuB6ufFBQX>icw6BRp}#QjL|C>yyBL=i<^E;^n1MFAd!!v-#q#~94*mp zrXamPxQRk(EAzGu(>1VRCEW+YzQuES8JqfwEkPFQD&> zQn6Gl4V2`M(fJ3|_r%16Hm91}teV%RRYOawx(gJofK%XXoLZR88$YdFk!Cj4VrCxK z{8`w1%~VY_MMYlC(>62su&}y~iEUIgDgUCSXer&IP1&GFlVI$)9^0!A-L0dL|H5zn zdaOf_1$D^-?Tr>O$a|rs_H~bV@}}V5d-oVfj2D_+Zu(`1a_s zuMJTUw=P5QH64OAy6<^iW`Y6!&=Ef5=a~-1_soA2)?gCoz87?PefvMOE%uh7gQ>J_ zu^fZ-Zv9K}$X;OjI~d%Y3-BJ<7vPzGY$|s1=L7tHY`m{huqt$`No|le^Z~RiHV-#$ zferW7Jp9P!r(Hdr-Ts3;od;art{&HcF8}_+oev%E>ghbPp$3QW@w%)q-~+umynW~2 z%dUN5S_qBubp4~U-Y-ynS`gPdLsL$=-dTs&7Mc+7&O*NmR9~y;HBQmbhfeY0F+Oyf zr#e&7*@^~%#;pR4KU&c(75#vd#+#k%!6M${bka-T$GGc&2_tjJ6@=6Sb8kIFx&b0b zkoGEwyjTT&{wg8z3hFp=7Wo`w`6@@`Pt;4ub>s$OVIg8g?mz^j9%*2quZgwv?P1x- zOSpd-=|+ws0VIUHis1ij z$a&;jB!!G2WFEPU6mizySSL&-)8pB#yakMz!Y-bLbTYStcfjP> zE^p^ZU-q+HJf{qY^p<%&W$D8h?~mEsmwMKrfPb8>RB>ZQFBR!T%jssCg)N!+X<aWpTJVV#zKi_7BA?TVZLwnKRZ)QUSk_0D07BPuyNh&Kjxa3J-0pU zwmYpH90ybmAwUJf2vqe>*`ns`$@g9DBi#ZG>&Vh}ynUTQBnSggQ051dGj> zYn;5`E9iX298*ryV!I_)@SPf4zV(mfi9xwooJ$dnJ=-Ygr~WPdE6~NH7x?#Ve-Y=x zNv5jax8zo~U{dYvbziHoDITFw@ms?$|1~c+;iAN**2DtA ztHn-6F83AQH;Y$=6*R=RT+t_SqYX(!oA4F($xn%AaE|^dHu@zU(Qou0al@uaWQ`kk z8VRpKH}rr5u94`b>5DR^KfFag1h?T1jKV$o_f0Y!M|HVkGt|rIId}?-unaFC zgjety-oRUU$IJ)zd_>paGkh^3N2e#Fd_clMK|A7D(uCA^>)S_@niM|d-nZk1r+u+J O-2LupzqEd+x*`{PVw$7? literal 0 HcmV?d00001 diff --git a/src/rel/apple/FATGET#FE1000 b/src/rel/apple/FATGET#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..27a88edab081d697284d7cc71a8d998bab2b1df7 GIT binary patch literal 1472 zcmZ`(U1(cn7=H78r|C)7CSUsFDzx_0X`QiTnaondy49_9H{rClXK5QnTgdsEW^Gbq z*0Eg_4wmUfL5>#_>eMk&6viB~-6)8mO}jwqLc78QF9gAxfruAgTAy<=1;K{%obP>~ z_wV`M!1;+Ylc-nt$Y@^MTHpC`Y@=K$m4}Pln`1lc8%2Zu|2M%slGLlmgMHCC7JhLs zu2PEi)fZTbp+wR?fh3<`o|MPv6)D0i$tD!^S(!pj42_yB>@tiL(c%uPIZuw%~sqmqJxK?xOkc~7qz>PZs z=_wzY`&i0%y@lpfMAWJ9k*Dftq>jG$eXpQKQ@)hC{Ddn`?F$xslC41XE!E|r-905+ zNc!EqfWd>kOb*N$s&*d+6 zHP*Cf$)IGJ043%E@qS7LGJ+D(h<|v|%wNdQ7EBFk()s5i-ouke^k+{RdPqM&(isp% zu^SGzC8AKJ)WpUQQKb2F-ke6YoSic@GoR1pV@{_u?%ylin%Yc#h$1aRPF%|^nAzFv zj9cO+yJL|X2@NB(Z!6~p#4=5kh-XQvxW17NW&Lpjw~?y!XIdyB{ZC?0b8V1wuYU)* zTJUn_G>yAA-cK_v`lVn0c+Y7V9qFdX!T$<>`6Z(!-s$Ny#PevOwRMrZF0hx5iOexE z6(1uU-J0k=D!QK+M%iHzj?`)W{U@A#A%=I@G1Er{Ru}GpnL%#O3Dl|)ahTho=*Tk^ z={Wn=^o$wPo`ak-Lxy(zA6ePydGiE{@X%|lR}jkqOTZnV4Co``L&Ibzm% zBI^>7eVJPA52@Aq7XCW$2k;m8Q=TT<@F@1U$7{dq>9W7`G}=GI|HZ@Yhn{x(PoSPD zb^}wagN*D>7PPw=w_jlG_AB5G)?tlxh2_|0e6QzJYxg zdA}m|5cmyz9an6XcUT8F*#XY&$9b0>19uWQ1^*0hw{;%0&+<-tf@{{RoUGRY6G#K+ zfGqGPP(Y6hsI$0YEyI2X_6ld#dx*Uc{{z^ous?!*jdSZ$*q;Mm0yluK!0)2w0q0cR zy?470MazD+Yi|B74)O&CM literal 0 HcmV?d00001 diff --git a/src/rel/apple/FATPUT#FE1000 b/src/rel/apple/FATPUT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..3673bb5394368f622b3423daedde7227bc579893 GIT binary patch literal 1109 zcmZ`(Ur1A76hHUu?sILZ-$c-0;az`BR;&?4Hq?x?Ue;~o8afI#*!|3*cQS2Y55cYI zC11Xt3WC6=f-Ev9dUNQs!AzM21-%5l20a8l^kC=S85H5={_gqzo%1_fzF&w2K$JJY z{g$P*<;_n+E0t=wa-mdP9ok%8DJ5X%XV|3(@I35k?v9LO=;T1m16k~Dn8qwpnSdPv zDc7(Y1#TCr+l49>s##UQq=4BX2z09dkEYziZ7872lT#t7k5QX+QAMH7wSvh6EUh8xFyt-XV^!_XuQiq zolI3f0O58$Kdl*N{@UnOO%x16n=mHwg_&UEpW%E0a!rsN_v(WXZmqM(Pa3ApLX3?Y z(Z9Kb{TC?Y_%*{O>_o2;&nS1O`UJAR{#*+rV}~H?6)KHmTPBM&IlE0{{3g?pi0NOp za;=bz#5*C}_HW;_rxW$wbf&O>7J9SZ9H(qyQ;R^#SNC4mcuwQ#*ij(SxtAwi@Ca!X z47;`7-adPH+wB~&oigu_#P>mX_ob=KDA7Aa-Qt%LT93`v%uE=4^=!C|Q4TmoctJSl z2h0%W{UDQoGEaB|0r?GDtVRW_c0y1Ac|uWT58;&JlIKar6(%huC|@g$@)Oyg$^TUe zNEfQoL-3(X21)M6J=Q@486x{Q2IUzHSaGtikbZ;Ww+MGAb{7Nk9yZGd*dZUHW<5f% z<_J#+PYKTnFRAVor16-WmV^mj-yttmP?z1ycyQYYfBp=yano)0uR7OxptB70lFSmDz(i7 S@37T(<&O!jfpcH*Ai!^?;UK;M literal 0 HcmV?d00001 diff --git a/src/rel/apple/FATREADDSK#FE1000 b/src/rel/apple/FATREADDSK#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..b9b0b49033d9191a74c1ea7efcf203d351102ec8 GIT binary patch literal 1475 zcmZ`(Ur1Y582|3MH`mmej|&{5j42PvZu4hDq=8=Vl>pml#9_B1vad)WJ6WZ#Kx>B}zn$M5^T z^Zh;NaOxCd0Q6B6KJstuJlOjsy188{ZjTgpx1xIwHVZKjUmU>ese7*Wkh?~8DKe3K zFd<7OxK~g6`h#iG^-@T8LxS|zI3z(Z#)SV_n3Ai3=z_l^Toa^ga_~-#;H5!ac9G+d zR!ovm=oiZ-w71i5lsJk3kkI?q?-fT0PPr!B1ajyV020z`0V$_OR4|cDFx6BejAv8` z>5X72cU9qOsvqWv38+BC1%NUM->;a;lzYN22Y}IzI?SI@!)>57hAoE~8SC=w95Zdh zVDrYjWiK^*&;x%qI5Kqoc-jBAJO!9OA7-Gy-eZig$xyan$(Yzd+*W|!(7;oUqrA(a^Vs)Y}>L2 zSSz~EVK03Y1svzrW+g|1*wi8H#B|42sOiSuV(T-lQ>7Zy$)x&r&(hb_t zg9KLA$UKd&)*KMk9_J9dD7HKZQ+_1;uQD8&#`PB@q^m7LdB)las9%eZ)RiNW6$2YIfQ>b;=3pX@W{NVSMeS{h(Yt+o+~SY%4Sp6;=G$Gg@j;WxZOjNY}tDJ7L%wJ7;CEBPBoEglh4)A@k4Vk@qD1%ysDC24_^Nb_e~a>WQd9n(1pK}v=l3PZ|BA9i6z(BS zyc;=)=p`~ACWN0y)=4wB(B>enp#DDb@sG&~{wZPkYXtHuh|dw%5vv6F4Yc1x`8Hw= zv5vTh*u%Boh?4&U`A^LC56b_djBgm%WQ7mNO8#XTct}2ye-(KQ`7PuW+TTHb7x}sj z`5TCvh}(#-(f$+0x)lY=`;X31BB&ImvfwDKTF+A#Y!z`)h3|`na-mduxKSu=Z-uF+ zYS=B7iiN!)>Vuu)&PI8X`r*;T{c^cDN{_(76HJdmxwtz@n*bl<&F$U27(F4xABsQ6 MD1++jOq&7z1N{7pbpQYW literal 0 HcmV?d00001 diff --git a/src/rel/apple/FATWRITEDSK#FE1000 b/src/rel/apple/FATWRITEDSK#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..4908536a9705fbe1553923e3d37a6c63b1ca6407 GIT binary patch literal 1477 zcmZ`(Z)jUp6hH62m)EQ|$zAN$4Oe$t(z15hGi@iWrMSw{;%G=i^VWY;Np0S1lcjm_ zB@697C@F%1vT?tNxFJr80~tm3q4-Thm)1h+Lc2=E&jVo}{4Pj5H>u7qKHiVtIp>~p z?m6dPu3I4nKtEOCBk$(!qy1l_TRY{_&UkTeJG%d9tEhwcVgPPe(+iEqoDHf&k%{Di zX<0JCd3VS&5J-{k*McD@#K}NIj>HMZnD9RfvvMsEUGUEd*Es2(8D4J?yfTc-4)QXj z6qCdi`o*dVot^YMC5ECOB=lZ;TFoheS;w@KKpwsPK!Tx0K+3BT6-*=(Of`8DCetbe zL#M!09;(9AR6ooU6HtMO0{~?b{;_H*v(9O+><32AHDUg=Gu#2%sj!t}M%ucuu*gi? zFxZl@WZ5fiF7&{k&3a8G>;lv22fA9{*eNz9NiR%>a55yUf*U>kEfS>Nriy<022D32 z`>$G^Q-tCU$FLLAso$n-6Xe}cm7n`?@xms;z%F1L`>a~dhh|DU`Z#t@Zci`V<(VA?A$w1^h zXs7ELtc;Ns%{||AP;7UUL(EYOJpi*_B>ZnOnq)KekA|8-?;aOFOKdL$8MIR0Ifad&XwwNQ?E;4D2EN8KxoyZ#uRrGV;9q2(x z)a;993?t5RMmEQ=^SCIy=VIR&UIA-~MT2a9&W?*D4X&$Mv4}FJy%<}Kq0~J-{D2h~Znx)Z0WUAUUXvmRvUN8iw=Ca&ls zB4+4$ptuCDvui#6Ucdgfh=8|9KLwIO+(v95$Z_CNAUuW0gThxpnzlXLwVg>aA@$iqyS^f!Ogz3}AmL8VffpeLaI2-7oADeX0?YYiDm?r)P!ubLmj03~KK) HZ3Fll%`c1) literal 0 HcmV?d00001 diff --git a/src/rel/apple/FILEIO#FE1000 b/src/rel/apple/FILEIO#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..02208dbd91d91ad66069f5b87ad1d492c25ef819 GIT binary patch literal 2420 zcmZ{l4QN$m7{{Oco{xL($L4$Qxto}6yVH4gchsDk8f6r?5c7Il>f(A8Qn?<6imq`u z0R#A%Y<45=qUldsz*%P@NX^mct3Tl&DP_L?TtSL4W zt0*J)Pw@<;nU4%=F(|{*k}H|X46+3MRD!K0dSwB}o`gNIxc;;${cn%?is2)n-`^K1 zGPZL8&xq-A7BfZUmh_Vev6!1B{FRW+a41g)nd~_j%<@;7fuf%i9ZZj=iLz49E8#a- zIfC^bH=W}aotR^6Gw3wyH0t-7F$J4N3WFo*`uXofn2pR_~}rm7Fm0oIC$^)(LNjHqb@DC(}sIPXnYa zC0RYMP?nH&SSx<1cj%Iu-P1oY_ce(dXU}Q-GV3+`AUCU@#j~ zoJPeZIbA9!;}72ok`>l}aL?blkl{=zrsNcOfa{t2T*HEVe>UCQNBN{o)F_f6X2PQx zqe7|UZu#{dGhi??XoyzGV3jp8J=7==GfT)SC5!9bZWZs^aj%BuPlT<2V#41HBd%n8 z+@x_494G327S555d^h>gQ^8q{d^G_kj(rsRiP5Vb7=7X3SbwH-RRj9z(KidG$L%Kl zqz|J7+=vNoBGYTVc_>~%Q^L)c^}=XDC0)nJU@eLn$Ed3lqBSj1X4RCNn*LfMj@hLi zChTFo8j;hl_2B#Y+O0;HZmLRF>bNW zUx&?jePak8lIxSHrc5=O_1;fTPaJ34XuHl7AMBSK^J^wr+`F=iw9VX(aP2I&%ebaS z?8#ia9kDC8wk&E_aqVc-uI8Gi+B3MeSG8-oRui*lV?Aci;o9|>Jr_}B_I%!GleWZ7 z)y{2|Ylqx~H@K6qK4MSdT2sWHI+A=x#7Vx{OXcaFmgrLLI<8$-?U`J= zr#j`9Pbe26rqKT3ZhC5%*0Cj=SPEsX8)KLdJ3pVKsb+m$yeI>cieU$40*MP(*R|={a zbv(jCxw+5_p*KKhp|^pZpdD-PVC?|(LGTHlzr}MN_8jaW>@C=I=zpP^hG+6MO^?gU`S*@CEn^d=0w5ci;plfL?G0{0Pp0 zL2v>541NJuz;ECWa1Go5e}P+I2>c@v_2+wfPd9KMoxgOxC*POkA?hvU2l9P=XYqLY YREn2Sf1$r;U=5GbK;fsA$^uUR0gTKa2><{9 literal 0 HcmV?d00001 diff --git a/src/rel/apple/GFXDEMO#FE1000 b/src/rel/apple/GFXDEMO#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..2ee57b2243236ce446af9e0eaf1aa21789c58247 GIT binary patch literal 389 zcmX9)OG`pw5ItNk(xw{PmU?|4A}B6eMYIVQfmGxJ2?MR}HN_Vs5*5LPHc^D%zGZO+MNGkY7O}1pj?W^2zT~df_PsXp#no#_zl)g`Q{g8bXJ4CfF{Wly_1( zvIBn;RWJy0$Fb`_X=6O!6LpOV>FxgcFAI5lw@>_={8xxcWZaYlNi~| laA17L$d3O*k^>`S@Hy-a56Fd4Zx|ylCdRZsY=w!p`~wGZd{6)Y literal 0 HcmV?d00001 diff --git a/src/rel/apple/GRAFIX#FE1000 b/src/rel/apple/GRAFIX#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..4c8b6aba1dc29e115e7f7eb30b2ff31c6eb9d891 GIT binary patch literal 1493 zcmbW$PiP!v7{~EvUxv*z+sL!oB<|WI-Nu^8CL|FQQAAs75(}|v8a2eANaz|gw83H- z$3JuqdeB2%L8>5?g5+Qi73v|NBFScJLnhsrO`S1GNMkD`&Pw?YuK(0+dY+bRf^;;ONLFfGS#|C-FnsFv1nzZgwv$LF^#i1xUIA{ zJKW#eTQeq-S#3#4r*5B^7~hlb>gr1G+dKYBXAN&vdcgY z|0C+7n8Y!BM*jr;uc&A64Salyv$%jC$y_3HnR*q!<4;5)lCvT)@1}@&2_(^k7PO%Q zcaXW0%stfiV+S6_BN)I_7{PPM;zja%$vf1q!NXg42k+v2e263Dj*>e@eH@?TOHAV= z=COz~_>S!NWPhUm1;616y+7zx8}VwOs5g>JnwZx_y#-s*h7S5&^zWwLh8^g|PW0n3 zJb__6i%~p}aZKQ4<{cBuy8v=r{*5gh%BC2-mR9D&X@Aje!s?Kv2Z$H^os*_yPll${i}6fSeNokg~Bd- zRLLw9&-T~{bkQ#k+K1JjJKbYX1%C?5kJ>A`RLBq78{)wNVYxp(Gq*hB589LQ*`?`o S3&q(U`(nIQSPm;*)_(v9t#L8{ literal 0 HcmV?d00001 diff --git a/src/rel/apple/GRLIB#FE1000 b/src/rel/apple/GRLIB#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..1a5ccfe7ef705aad6c7c30efaf157c2e94f96e05 GIT binary patch literal 1369 zcmZvaZ)h8J7{{Mple=FMv6mF2f-kndNG~$+2ZH#bZxrf_QuJCwE!ogcF-!MiGDe%M z%DB8Z5u}(7Zk7o{i<#$(LMJ_@bm-+zO;Zzc_sgF$vy??6O?4 z+j7gi#mj;v08t2d6c2b6FZdLnM06r~bdTiKy^>G&$;2YE$MVQt%PadVpI>}Z1b`Kw zD!NxSicS&0wQz{~5Q>3|6;O+k5qcR^kNp7?#Q#CI+q*CGquvSw`bp)~FV# z_^Os0n6+t4%e=8`mW9O@>nsvN6o|^1uwC zFJLwsvrVck=lZOcNw+ZB{b_zi_&3-ihk`M+trw+bc%Sc%UgZ{p&33v?zrDJP0d6;2 z%~rZaKg9@!6JTp=%h=YK(a>z8s#!)(Gmn65)NmfA;I&%Aw!Z3SHCU(*D{VaOkKl=) znZ~rNBW%rfZ0h*3cG!lYjfU&cTSnGtb*{J&wK}^meI7E4iuDjlESxtNj+-kFnkeY6 z_!RFfM9hVRDNRoe_C#U0FAC)Hr86-6R}{p{m*zm?qVVvMF#ZcshED||gHs$9jy(#o zNt4DV5E%)Z6cQIqNZf~j8GF&BTp})>J}1u4id=+?jsJhqv8mr3YxJiO;X2mCJ#%m@ zY<>*WGz#2Ogu}~PT%4w{xX3M`Y4EIgBQCy##wR)rhrT*6=`NCRT!ZWWc{$*m?*xLg z;{16rI490u5FM>|^h!s!I{N#L9`rjkLw={`Mn`A-aDv+j0LS+OcM^#s7m=&|kUR^J zJO{9Nhw~@7UPw~pG34=HSUleAO}>U&K~&^TVspCIeVXGjLgBL!p& zDI*qAMH@(r?!w2|+SACMoBpO9aW-;h6g0dkqrnCOM_M!C8X7X46QR;dyu z39-O7OT}l%hbS73XrjoL!sMvGz-qkLGgsQk tOpqN^ra!5sB@K4WrE_RuC1ZSRBNuWa^MkE)Km>5L_Ip zgF`=ot*u&&R$5>13%CkSf@u9GzM&7t{eH>wzsrym<7*mnf+N{;a#?LXq|TaNecY>G z)lzU>P+USM1%z%&Cy1{5m%;n*x$kp5K^E|z`e%T}E=1Bm7N8yB4Q_Li;!8Wr;}$@R z9_0Wwn9ckN*i4R+>_4@$EDkyPQ^ZF8b6ShSdS2Dq%!bh!@01#PUyodPX$=N_G;J7$CCp)%!?G+*ZvKFH5b@x}`3>>z#ZM9x6+Fl~ z;_vugdi)Bfdgw|em3o!x>3Ut9c?(=egWLG+>*MMBk7r1^JlvQWF63Nu#+b8yoHxeg zB%3m#8Z#PG&)Q(-@*&UQBDZBECrOwj+?R({w;D3&MybemrN}SmZ8^xFMqc7Gu4#4| zb`4+qh@TXvwzy6>&A+M8>{9L&FDUh<>54jeXO(9sserN0Pe9#EXzQfBpXJ@ZL4$!q z2%$}dPe8+G4mF6KC04 zwVo^OxUr-9u55PPwD@QKbJW1uuMxfXLr?M?*5t9));SL}0;Fz?y6k7)ZZ;W^c#1ax z51sf>_-Ptp1-FT`nZ{waX!4(I5}>pQaG7U5?DK5z759DL_5J5q@9r6CD!^e%g0>2c#e181&=hx}EzXCrUe*Qjj H?CA3sNldmp literal 0 HcmV?d00001 diff --git a/src/rel/apple/HGRLIB#FE1000 b/src/rel/apple/HGRLIB#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..2289f7c6e0bdfa1f726a8c6e9c14791e9ff0bb0f GIT binary patch literal 3665 zcmcK54^Wfm9S86yFOa+mf0{S{z(1{-)>oyDqw6-;=}tB$C)Tz?8Td!FZglR$=!+d)W&MN8uO1EZn%-J*bSFT9;?A%zsE3Gc?%`81ok_Qbwgu8I?X| zRQi-r=~G6fPZ^ayWmNiOE6ZuiS&>3}Mg<5ssV?;xq7p(F0BuS_3lGYyrxbXavX{J>uDocA>{9y!E{#9t zO8N%$3&QdaU)-xM*c)@H-P~2pL^Nd!%h#LZsRH>4e|#v=wSI4Oy3eh1CH&DV2~RZj zC0|Hy3Cl&kv8!qs9q%Pmi^KAb=CPDTp64GMTHa;ck(^%U=3NPI@=C&$^d>$1_9VTk ztFiwIjjsJH(H|w&vnu^jl{IO%l7Lt3;=LM|)))7W71Wakm--aZ*Aur((ANxSE|_}MP)U0t8t+yB<}C{K60eb+N#ebN86TlszV37^^L zlLLXSqO*7+^xo#-iD;A7WQI@1BcvY*9=Cpl3J=ukiSzVe_ z#ES2sjt&}{P=_wdx%9r4CTH(Vxk;}k9J<`4ZQ{LZ1n%p|D<%K`BW2%ppqa-vbDV5? z$e9COn>)@YH(HiKv=e{)IO8DZRdQ`q>H*O*;(Zu`WE#c<)cubz6-#Ys}tl(we zfVuultY7)jcaRMm+q=~pacvm($oS<95BtYGQU9PP=pV!96!HYBSMVu~mB^_qIm1dW z-ipiIt%2%-8r66-wVJixPpf>G9fVZsG9AQ``EVX_a1OPD*p8Vu&nJkuHa*$J)At;_ zZNKTn&2$}KT&4TB`l#x8uoX53in)EgLak9RofEh!j=fnP zC?-{0?KuJa;T1jG*fMKWb!4S2aGKbQ9fWJC;xO^`3ijgaUV&@DGNPdG?G;|YQphMh z|C+}pgsce{21tMGWG3K^ilN<9g|Wf#yGE`79&N>x?v?Yoz(djI@3=%a^eHI+p(q%fG_% z`&fQI%O7X?lPurG^1o)8ODuDhWu}c{pCJ9kD0&3xrcvw>B+f*4DKOF9A2iY3ttMI{ znrO`uRIr*Ytmau(V`nwHOyY+|sgYH_!77_sM@D$3eq6!9cHglmYFb#f=OCnrl(qLrl(qFrl%@2(^IW7({ ze2%@o$TBso=4WPl7spw?o2}Wy*6d?z_OqIctmX=HA$7IG)OPA%n_D((?Yg!9Tvh(f;OLUYoQ(vLo4*; z6K9W_I3sWk(vYhmP7zjXNYm3A!MPo=18P8m??VILdlm1sA@)KioPsX!!5Qd>K?uVL zM9?#)Q8i6L7N6KG+XG04E%R*Wib66x{G8{1|=$t?)Ly172u{lYl>X&TjC*8R&s?5P$)A4~Ad_ zA`pXd_yB$fe}GGH84_>}{tPL&0k_~IxC3b|A)~>8@X$B)Dk6`MJ)_Sgql2UIL7QG6 zp`nSibnwt!6p6RTixDUHJ;Lr?MhX@oV{B+rb=1Wg~K5z=fjMJKVr0UO_8nMt$B zB%Sn+*m!L|0^GuSel3j#Mh1fwd_4{0;mB70FpDk(H}kDD3dMpK`o~Lo{H^#Wf4yW8 literal 0 HcmV?d00001 diff --git a/src/rel/apple/HGRSPRITE#FE1000 b/src/rel/apple/HGRSPRITE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..c8622b4d75aaf6b676a6a56f93ad3edb3d16468d GIT binary patch literal 2585 zcmcImZD>MZA-DCbu0|WKB_Xd=!(W#LkA($OD(mQSn^}j z>GfmNA&$FI5!}i)0#*j%hGilS8k@LAQj;cDD|7z_3ObbiaB~RVbMC$Ua*FK73eS0; z_dW0Ty|?6BnQbF_#7pUL`N&wZaC6h>&-qOHt;^|5D*Yb)-+!<1_c;ya4#`8qhn%PB z?RN&hmuvSuV5jX@`g7GZeC5i}MF03usy{Jwtv@%E>>sYC+`~eSJsjz**lwE`f3V7o zQT{_r?!+DZh1rIPAWB~=OT=c;nn9aG}>reZE%h_`th zb)7+?o}vv7qL4=={|oNJ2q^ONUc|7Ed)(ljsLCKpdXc2a@9tG)h~i$t8K8lvA=yB5 zG4*iOjdZa4F7W6y_X=*9BKyu1iCb7A`vNXdc>5YrS%e{w{ADUTCQ@)HsHy}Xah1E) z1Y}|@cHx4qtPCPV00tv&)qXQl=tihWGaCw%8H?T`h>LHWigBM>6!Nq=Y~~u6u?B}o zU>K0bnh+8bsx0JaQ|375vHaL}JpDNfuMLQ2<-o6gGi&LxEmLdv?*oZ2LYPf#&UJF8x|0-Ir z%A)0J6kA}!gJO}GQzh{L`dE)+wJo4f2lG4onCif-a#6#}0tdfjF!J+opB-vRxKDxz zz#7@GM7${;k;5`YXRag)EkGt`hrMIQU--?Myyuw_IcxEmme7JWCOR}~1XhULqMZn& zXhujL#!(^;!wHE)>^Wm~V8edbISn7w^9OupPtR@yPtHgm9uQNZ9odfeSMnE!58`Cl z41`-K(U2@IrPakTX?Z2TAVmUoc%&v3{uUE47Db%NM68{b@8Mz*F&kBNlWIFpkpR9^ zA%lLeL861Vr~1ejvOnD$U%%x&_`C3{qHa-2BwA>Z;PKMp>*s8Z`mk-8mciX^TfKf4`ro!?x|6NY zm$G{OW#-n`F^?XB+{v2skAOJ%Ss>4f^-1XWfX9H#UaXhdoAf1+4Um4|O`rwX3G4-q z0&#n#cF|7SW#E>b^gDL9b|3stz$KB+rF#8Esa9Vl)oE`?q`eDl0=D69yHulpC{=1- zK>rFj1=}e6u7TeI{($}$^ra5cRsw#Y8CVZ&1=@jKz$d_`z&F4d;78ymVAMhSn8Tw@ zfKLMV0lQ3^3{(QuKrPS!yegCay6n-`gKq)4fL*{r*pJAK+EK{Q-QJ(NseAIm0R;gy8nCb>*D$g2d)r$&N& znP8VPLB2wek!Yhvgp#1Hw?ppc|I7`u#V4ho3>3^ awnTD`(p+vemI^50X^xbaCe|tVSpEU|+89v) literal 0 HcmV?d00001 diff --git a/src/rel/apple/HGRTEST#FE1000 b/src/rel/apple/HGRTEST#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..aa1e4944be33c57bc47022615498e8c239195727 GIT binary patch literal 891 zcmZ8gO=uHA6n?Wx4;9O#3SJb_KucKCvTahxrBK#1?V*&=2HO;W*BDg%fg%AtHHn8% zrF3o;L5kGksV9+Mq>b67UEE|twzc)@LGV)WBPZ{{t#Cl%$E1}T05 z-uucG)B7^Bw_A5?9apbbxA(^!yK2oqu@H_Hi(y~5SQzx3iH3bXU--X88Zsio0CNiT z0X@m~+J#8nh6ex{2%TfCtq-L&SFxdLj-Sy0niMak-F zA{+2$jSNg)!wO~X65PwD^LJ-C*5IQBm2`gjm7(^oMsI|=*ium0$}a?UDXs){B7tV& z!fJF_eYX@0kY=<329ov7#-qHJcuqH3dyM_5he5T5gbR{i{T<&t1rmnNv)JTmkcsvg zRDsQ~A|TI1NEMwx+)zzfK!FvCHCsw6oyRfOpV1YXBhgg1VMkqzPd#kR7yQI&RNBu* zIwO6(H2afT-V&239)i&j_#-GQtspetkf!qF2E}Cu4K6Dw4$1}xaRqwBbqI)?5EmKn zi#sqO?!%B+gmLi_#&ZsUaA8=~K^HIBhMSiktd2E`7G<@OkePb`wF z;$CM%;(!h0ju3xk-QpW&zGLPX`46V&e&YU%b%+M*hh1y`BJY5TRVmj}yc_T{JaX$b z$4zoSkv+$r;yr{u6ABQjxaJt|CscN<(lj3+=pB|4Tq9)GONSp1;(SmhT*sZ}Lm4wll^fEp8qp_;3r?T+gnW)*K&co7l&(y(AxP2_-Ye^?yt{BnF*&LDvs*=-b@9EOWzhH(cX}6>eCG=dpio_^0UELFzURWOEnlg|YDIFw_2b zjE+Fs7&LPJH)(UvlH*zH`Ii4=NKxJkG`MT%O=! zp38T+sI%osE|%Hy6c^l3jHfVuOa3^emt#BVa0NWr2tq_NYpbZ{@1Uv@2;R$#W zo`yZ}3_K4h=!Tcz0636=LvR>ggE!zUIHnVoOXX@QW^tPO^jvAYQfxI3S#CNzQSqvh zS1lHQdPVW`ac}8nzBn^eor;>fyy}z6M0u(-8#9}2cdFIN&V$|&Q^6Ht1 YR`bY0I#Z08BVLL_XU3-QHu0+e0p8UI{Qv*} literal 0 HcmV?d00001 diff --git a/src/rel/apple/JIT#FE1000 b/src/rel/apple/JIT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..9289502c09fddfa2ce9292b2f9f2fa4316aced00 GIT binary patch literal 8411 zcmb_ieQ*@z8Go|5gv;e}+1w?3YDwvhm1PC2w%#}yq(~V*GU1B%yX3}fC zNi)>pGN?>@rN)9o9jB$1I^dv<3^)!_5K#*))F>ad9otgNr+j0A7VTYs&%3wp?p-z? zSpT@}-MhQ*^Lu~K@A-Il^XX)zl_;$GX#b4e``fR#L&x7ga?xf%Jr!h1eL+Lg#+R~j2ia}fwY@Wrp2iuLwc^3r41+}mc zXvg_Lb4SDsq>}+Lk}v}?r7ghYVlLM-&iP~@9$D29iANgtWsTR#*hw>{(6VflI;jsZT|{~| zPS=COXm&9LvrEXIT}tD#ZB(7@AT^uBSSR&oy68e?8J)>ILMJoph_cVpXPNc%N#;46 z+kkV=c+3GFr3Q#<~Q zNh+mq&)jRlroVYgU`;`lP41kGSeGJpw!@RBtUV7V!LMIs*7YUkBIL}J#6m^Gw6-7Tj!L#vV@Q>|A? zTPFu8sp_j=GxIKthZ`zMTZV0iyS93$m}une_#6*c2*(@Wo5a3Lw{TQ( z_zk;QZKD}nM5~$dye0FvAP-P5b*Z)d;3PXx{fNL}CpOi1B%0@wF#9Cp_J}r~CE0p} zCCQ4iTpBA*m}&#AhC5>=EJ|26Fctg~D`7McsowgpLdZA)FF}e%>qG%_SbXq{7M)6? z5tlKMhSCHuah$jp#WFcM!OatZ1$rZGLH)=MPNO5pT`aR~2%jjiGTSRc7$RoHqZ514?*80hZ!~e%ZDsz0Q-bES!ARu#?9i zG3}Hyd2ep=!=95*%S}Ew}Z#gfQU0jLWIfYw=;%{gwy#mi6PH%L;eW^EMA^ zXN%-AhVMmkDZ;TJxmZK`p?BTq(%jsvD~s~g{dWD6h#SfpwJHo*03o&+0ozyhS8GUNuUGT3lF*jHMY?rG!05eIVh$vRM@X2x^(q*YE7bWg;fh@|IAT|U9iC|E{=gebU zNDEwSAcT69cF%A1A;x>v?j>4{97Hc#I8IlAv5$4j+}KZAhEKMO?#^5E?mUFmJ7n>V zsCwGoTbF-HE92z_B!6Y@^_9aLt~s0rvomWm z6lmen#y%=!D8Qp&$S5UF(N+&-Y>EuuYKb0>GY0ovn! zKOQ{^3|4t}NE9ZtO^5R?QU}7 zk)&z_N!w$)%EIAVCQ{K#mRGwtlUKptQY{IOszF7nTRhr6?aQRSz<`2j7N84^Ex+7p zN8DU&Z&CA|;MErSI;y#$oicWi1DFZD$8my(S_k>Tc%w4kBvP!`?uRXoihLQ?2>}I~ zx5<~y7Cc~`v%18jf+ZPsl_Q6MERq~aDXDrN7oqlOIl;-?pU*{OC(9;6!if*Wg@_M? zgcBbK31==lBzPZXwWq%cBu|YYGNCErXodqhLh#4#f$+j<+)`PV_tYzI3R=GheIV5ucnjPr|5KcEuG7H+m53hYS-S`971rlyWCTNfiJ_;D{U8F7#o8t zr8;a8N)O!?@HSP=j`@bo47!)`?3#96YLh!hM<7tT!vYeVBTi&F$9&%Ii3#~r8Sd@>$*yXa{m=1xj$1+v8a%0~X4lL|MToLlR|$8)c=1@+bWG zxPU)zhawlRkIp75!#s!`BqtXcCy4eZIDa9~otl(;eq#5x#(lZFr3OBKeuDmTF1|{C z&iuUod|-?hQ{IUYTy2Qn4}W?k08W+d`Y8_vdvgpPw!_AL0wo!IeCUTskag|}?iZPh z-8>^=SWvua9-S%$*Plm~10{pG&MO3?i=7(8H1`mjzKE^8%y>-Js{I`81-4;Rk_E!mn_{ue9J-x#5T1@T)m?$J$Rfj3<>sH4H_1 z{vO!1<74=!=pygK?Sfz6b^x*-C0eXtZEgjUQeJ`lA!;g$XO7>C;k#6Eo@U6JMjZPTWlIo`})3lef}}lXdj>le6fC zQ?qH|sX5eiYA#(mHILFC-a#uryo-*Xs;3)HH_+7625mS!pL}N;Nk4l(Ejhb@cAi~G zCFd5=caJyIv~w+#Iu|E8Z&Kp?Vmfzz34M5eDLs6ljgDSur^Oc&6u;O(|GAi?fs37# zywpXBOUvkQmmZ_FUOQ%RYUXIzN4dDnHvsJ3re_UH{!d<1!g~o!`Ks5#g8PchuLAR*$#p zXju5=xv6v=Eyk;I#d_h>u=RrlHA_Ay#`|+xcwIv6`k+{gcH%{Rb7z>QSKM`H41$ur&!JckXdsflJ6kZ+oY^185o0Y26&lF1i zu9$ibl}zfXD~+TwWt3VTpq`6?NvUb&l)8dXdyrC35 zvwb|JViPE}djj>mHF;9%@MP-w2R{GCXJE3Atp7exiTVy5ychqEuzT0OdNn|M-rUu< zf7iQrt3mN~*Wq1z>s6KZzq$Xwn~iD}9XR;z?!ND+5!!p;(7r}>qBwp_oka9M*#U=+ literal 0 HcmV?d00001 diff --git a/src/rel/apple/JIT16#FE1000 b/src/rel/apple/JIT16#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..855d3ed31642d88060a3d27aa800c7b414ed6e77 GIT binary patch literal 6130 zcmb_geQ;FO760Y!M>a1n*_RFS-Em7J#pe@)rLv_NN&!=lZTgC-#>m(-E^m<1m@erS zQ-+eDNSQ5m8F3uTw2oRQb*QDN3}q-1kXAY{gMytZ?bITU)(Q!q319nq&b@Dw-OWOQ z@sH%az4zSnJKyKLJ9UJz00`+`C|}&Y|BZw1-VHQ(6j`>7NP32J@l!s27bP+e=HG zEq)vIA>H;8K@n{s5wMmN+1|~8raHUG_S3T_J@41B0}+L`?k=(eyqIk2Oa$yel9r~^ zQnE#?Hg_g8u}CCZ(=@BZzJu!jHBsI_f1U>1}u; zy&W6VJJ6Mu1`7!1)Yh#^3s)%QibY2~2?cFB+A55&t+bj4JhqaI+x{k_q3R|W4ICe2 z!(=nPc;m)Sj+0jUSDaA%Z5j8{yh0Sv{Ad@mt~@D_1rM zxk=iD5^mG2k1Av3^L`U5L`-^;h69v;svH_yF};qYUYL>E++AcVEWo&`GMERvbXbX7 zD$HK_YA%ej{&A91V?+6weQ{IGin^dkEVA;WyccJdkpLU3MA*WbUdhHvHgimK@E4NT z)^Y{bSYXNwwlalit~p{AbrmpQe4pec6orjZVXVn05(`FefI0FZ)+WgNOhkTTi@g>S zZ1ecJ<~58e4FWNtS?=2dc#2(?E8N49iz^&)FWwYv(aiUEa7n1mcb?o&Xaa?P_?el( z#-xZM&TLa&B~|HswH??LB*ir;u$R1><0gvZp)1xuD`=5y@;v*HxRFgrgTatw-TzqO z>Yl?-8cL|b=dx_|v%>U||1bpmC6E5Tg7n7C>=#L%9g(*bqz)A(PUq`vJWGTWcFDL1 z+lYq)ce)5%vOvTq16RJ9tDmN&;<(XHj}necRob@e@?4Dwk$GCp5155FZdz0^DB_Jd z^a!+?SV7Mc#+=2NI#ZPj%xd{6G0P-okTG?MIr;LK=3^fbohNQCWN=^H{E&YayWk}f zywnBP7`%1>ynGP6JTAd?c4bJS?g$o4e^sWxRSctx>`5G>lmTvev`Q%TMWM{Zs+;&C zTzvzH?;S{d!t=|FuPca`QzV&bt6NJ%Tqw-3oPC-VQ|@sciIDJ0go_8s{n$x*`r@1u9Oh(L3UlKG zJyePkdT8X@dH0IaCVCvjIW2!_L| z1dT*p&OO*eZT~H2K0b7)%d+ru%km5_!aHsr3DapMZf@q_rp(&KzbUh*Oi*SS)CeiD z=wGQ@|1QHu9M7&+hX)3xt8Eys#e(`XoorCXRwTBEv3(MI_4Tu4hLXuljf>x9o1d-K zNA&2IA?y-2ekUXmU4a}cY(tJ^`HH1{0hW*Im-Trtu^YmI!XqhUH<93fF1;dn76;<$ z4i)Q42i?w{H>X<^>b$P#>s@oQbA{kuE>VlC#zIKvm(mrp{4^JELn`G!ax2EzYeh9O zc+8M&O;{~e0We=5H~{~u=E*JtP)sK@1By5#8?WOyq+%;X&Pd1S*IfC$IG2eQrf=kF zJIB#EmUFH2bCy=N{Xqwl>`SY-^zp>Wyhcfz<@r2JJEu#oh++_bHztT1d6ZbUlUbOl zPZ;Nw5;99(;m_20E-ao_PDq-9=g`A1eq^k|_-%YVdu%jD5~BGawLKbYxWi_~WTvjo zr*?~g=x`J#qQhke>r!okjiSknO42 z+slS*lYQ7aq&4x$(b~E^EmKOoTk?s_FOUtT30bTRoo5K0ry$+o;ym@tnFZ-y8A7L$ z2jjwnl)A!&UdDHe;L76c&MPZozK@=#F(EESCJKcQ2$s8&7@4SeaU2!9Q%fLj>O4uQ zvP)?LZM97JYG9@)%N_xOGAGXa|F0k{0tq077K!hX_&yik@8Sm}K1~SjOjFAE+5moO zHa@jFPM`LI_&E_p$@W4OP2r>IQ_w9-7L~uO3^7+q>kt~**Sr?PRbQ{+x_yNVmoIo1 z3qCbV@LS;~>+>wK>tAoH%vma!LX%8sxEjj~1+K^PD6BwU5hLSo6w@nxt|sGRdKGWx zY#xZHQoFA9v1j}PuJ&cS+AY6Nc(1hu^5`BnG7|+`>t;gn%AQ9_Kq0_Muz;IQriF9W zx#?PwL@*gYa(iv|2i1F?D|QAsXhbtk74472vtKbA=a) zN*QT=#pRScvWSyDd6I@YK1rWTLhbCSZsL_?HAnt{6NrV%9`X8>&)6-)2%wNxp14+^ ze6I+_X&%e?$^FEam4A|Q6^@#F9gbpkhWIIR6@KD_h1~SGxVOxnU302Nj+?{})|0&^ z?uO`dh(mlvk@dBrZ-vo#Y#e@atO`FqHXgmlCLny=z>?!8jvkwcKOC=y(Q`Y7^-RW; zo(S&knTnM?HTZqcG`!n09ZK&EqaE4j-r3mRdlzQ)Mq!+&!}t>x)}5G#f1Rku zfs^-O-^oV2d2&A9IQal7k2m3wQ_a|ZDu#cbvQd3{A%1vz5k5J+7^Ba$AbF-0@12Qb z_}Mn7XA)R;W+|qgZO4YQ%W(VI<#_V!3cPi;6I$P+xT9|s9_(9<@Aj?1{e4Mn?purf zeZRoRee0n2KZ!~GPvJZLPvepPXYkd&4VcpRE3EH-7Tx{Nq4wMh*mdqj>^RqjCFftl z!{;}`yznw6T-b#57dGR%e zi@xvBN=1wBq-~}BsE2N#6?ykm_x=Aih87+1(6uz?kGJ&pBOW8Xv;s!c(hw$&m~_Xj z%@4JO@A>9!cg?Av8D7xxz2?OWVr6vcWFkCY3F)9~3MiJ2)R&;9zK&6;C`PC5hn8xB zo+6WVEC*7LqaqbjDpEi7j!C`ltxOdK#&o=*qGN0&I`#}h>ca3b9i=0Xs-(Y>^f!5g z7xFS*2M)Y*=x(~6-`%}0s;hW&PxpcS-EYs;HSya0x9+`BUB~`C`w#A^*DG-F(A&EY b+^1J!@4j`(;AOoE5~PLwS=eXl31`-KEHk7IH0#I#f~~f+7kcia7*9 z5ClON34-p?Z-R=@g!)gq*;|u3HOzja##A)uZxd5IBU!; zKu)w_Dks^nn}b9L*kbDzH8vt)C!n4!?NKTfJV5P0c&N}&HT^NIT(QM*w*f#q--g*X zoKp9JWVbrkShM{xRdKB0!!<7kDg$ag1S)wiX1%!LsV0BtJO7<*hC~m9g65)?Nk>>r zF-&ccjYdb}W`ZT;M1& literal 0 HcmV?d00001 diff --git a/src/rel/apple/JOYBUZZ#FE1000 b/src/rel/apple/JOYBUZZ#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..8cdefaf1378f05e9b101ba22ebce86cafd8c0e77 GIT binary patch literal 109 zcmYdbU`l0Rh!bE0VumdjT3(zwb!sKU)JszjO}#wz@JfFRoq_`$7ff^v4lH@0lX5^n z<=bVQ)B^$v-!8pmyzp#=PT~Op#*Qf$ryN|NlLTg7m~tTDmB8&+0{1U4TsX_X5W{fl N{LKsJgE_bb7yzNBGW`Gm literal 0 HcmV?d00001 diff --git a/src/rel/apple/MATCHFILES#FE1000 b/src/rel/apple/MATCHFILES#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..92b3593969225a1c6ebaf952ad00ab57454b9ecf GIT binary patch literal 752 zcmZuvO=}ZT6g~6$CJajAOAtyRYHcglC^U$o3#AoFKj`G6CM|Jr@fP(8q0|=2Anrz7 zNf5GiRiucEqNR&23n6W7AhFT5NO7s)q8srK#5+^bjf=xQob&FzXD)L=h=)L2h0qtP zw>I|<3)_w6RwD>a`VNsJ9TZsg2#kYOe z^xb32j{dX!PR9Z_o`gu^eP;+?JAWpG`PrJ#!Ls51HU$qyRxA$0$wnNjBn1hb^_NKk zbK%dIr72PFR@pGFKqwS}r`?KsSr{y}%sf|n0F)t7 z+)(yeBrkH5xk<_dgbEe6K)GxPH0kD!M=aMn?nDZ1dPeeaPG62;noFs0*}m*27fa_cD+sGXCzHePPO#?Fp(iK(BvvJV zd%uaiiMKyHi!#O5jC{^#AXG?HR{5Zs^ExITh`55-U>q>kqYy_?csBrVim||W!}!EF z1ghT=_I_~vg+#T-NO+eFc-I-X8IKH99~+VC6C>umV!mV~sw<3hB8Huc8Ip NyxVHm_Qxy^{TmjI-D3a% literal 0 HcmV?d00001 diff --git a/src/rel/apple/MON#FE1000 b/src/rel/apple/MON#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..fc595d1a4c716c2e0fc049e5fce1b26da50e52bb GIT binary patch literal 87 zcmcCvU`l0RkQZPC;=^Z;T)r91pun&nD8#}50czp`RiXk~J{3Qh)dU5qelo{pf+Rv1 g7z`L<8Wk8A8kK=qn}K1XIRh8N;e%&<1h^O&04R+TPyhe` literal 0 HcmV?d00001 diff --git a/src/rel/apple/MOUSE#FE1000 b/src/rel/apple/MOUSE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..dac4821f0050f01b7c02cae79f16b875ae2da6dd GIT binary patch literal 1225 zcmY+^Z)g)|90%~JFqPe zSrM-&!qC#FCsqXiY|0!Jg;p^yB&{tDib6GZTRRx^g>MFmzEJaO?t7QPnvf6oeSXjL zySqGhWKM|vM5no$CV~@>CyTRtsK|4CkmvagFA8oA4h3%p>Hp6kA(|XijNv}t`6mA> z&r4FzH}&rjDx!jT^psGqPF{|;(qx@+XWA~vD}|qLkX1;Wowmn}%j(qBlwanhYCp|O zul*ojQtc=ClGh&3OP@V`gY2@ zRWNlD<1`I)Q<~a-dv7X9Pq{Uv>CPEa388c}vPqdRXBybwPLvcK_1qk*HToA6Qwdd= zq)T;F ztn)hSs+@Jc1?$9ud-S`_brsDiYM0FboCtGA3AU-bogLbcc>nxj6^eQ zxW(6xh_CwJ1+{gYZQw|}eA%c|uEKq2iHb5h`@(4M)7XDOHaIuc99wGiXB*401~JOI z^kILqUoak4_Dj~*a&`;jiDkFDc_(8l;6v9?0 z*WdkFs{3Rc4qT!f!s1PU+# z&)|3X6aIqd@Hf05%Dtv)>n-wo5DMk0lxl0Kf^)+fSPP%Q2H1%CO_={0*@OcacVc`T zc>r=4+ZbO!{t>QY{0qjnkVoMj+(&Ip30PCek6{*`!z8Vx<+J3I#E}lUO0gfRayg*|a zVkYJ?$WAO^kZUYvU}!7@;#weXU|^Wo%ply@4rF%$*}V+%6BjeEG%f?OS2D0nT*JWJ zxCzMK4ivuw6u%E-KLUzBWniAjz{tXI;p&w$ege!OI#_^(;qsMBhc8452r~c!_}Ixy XmqP?(LCkYUZ-fB-0|{{fc?JdmJfvZN literal 0 HcmV?d00001 diff --git a/src/rel/apple/PLASMA.SYSTEM#FF2000 b/src/rel/apple/PLASMA.SYSTEM#FF2000 new file mode 100644 index 0000000000000000000000000000000000000000..0e401b0eb923f7afe0287268dfa0451c893248af GIT binary patch literal 2637 zcma)8eP|R%6rW_{B{`#+iqW$l^x8iZL$I5QAuaSnv{uW-R;;!bO4C0AQH0vkSSS>t zX3NnUyg&|;e&7lo1CfpV7*AJ0 zh2Bk9r)vYXV-s{bjMS1#eK)f^lMf~gdPjPqb^VIRwxs;abPhC#cr(CJkiN?f*#MQ*M zM0;X7u}c47ywi2CLa;gyA|WRt&kX7mj84H6D?^5m^Fm{JL792f-#HnFWefxXBTdI8 zu`2u>uI+Z;df>&gP47xgd!(k1B=`IG#rp8icyJm4Ea(x^VqKWvLCU<`DDvk3rj77b zzQOeQ^QUlc9|kGv!*q4gT6Z3Cty5et;ylRx*WaADJbbzw$6fc}@clf8I8=kG5OSl_ z2vwkl70pks*tETEoBPe(yY}wg)n+Q;d|tSH7}2I~$#cnWWAsrI`=5G3U0teQB~q8{ zmp#*nsI9XUWO-I9$kf>)Er#?=5-A}M*AEfdFZIhKl&F5%uM%}vUNC~luZlH0jNv-L zBx)B76)?M`HMB+Y(y45{Yp9?cDCqXf!?)<1Up_ktp@WEpra=UurS_gl@rfW348asK zM8>tI``cJFcudGNsM$?K!plHTXV$1Kve$Qay|La57zr9MXC+^)0R34i7_BYLN^h8F zC)*bd?#UweU~ETbc&g9~7=Cc|OMwiZEZKY<3s|x^GW;K4nWI^beI#fI%`Vd^babjS zIhfzavd`~>?3r2JV)MAA$fMd|iwz|az`!zq8S6kP9joylDTgAoAkIay)u3kM%t^)0 zL%~8;)YUP;JUg!2KnT?{ITQ`qI==*@+T@gU3K$kDLlb4%7C?(y0C&MUFEWV8>8n(1 zC)nN(8J&UwK86m87~^c&fKwN=4>^HdMskHgQM6dGOUfGpqrBlU&shpCbVzj>?FSq z!1D@)NVb*(?SP2N`(+V`?Xv|`vw@0!Fz5d)dyz~+k6kQ`vVcc$HJGabiLj8KlRD(G zz@xaO8He-iFYtnZgeFw_6gvZH18jD+cus#^To~%BYcTRA?rhqiI{0{S0T|AT>vgfZ<$k!jBbNz+_dXD8RX0c&tX@p0vw; zt4Vp*p{*v}V4CD=;u?LHTuel=8|d1i{0x)n+HAE+A`RE*N=4yEfSZD3Jtl7!q%_G@ zSmCvK67cW*C=hW;2b#w6v`UxCHWxm}|1d`>oMC0}Dm=h@`F`B9=*}`}bkUt=(yQ}} z$@1D6$Q?vG-D!9z+-7E?e&$B9ganf>0A$ zniDyg7l2%!GEhZ(`g(ieKpW-`TPU4_#&yrS=hEWq30RZQ2N r--dhNu-^{bFI;Q8yY{D(WrmZnVBy4+~>LPxr@trhfoLdB%nb3@xc34On0OVZO5{Yy~)6{PVm3h z3KgKn#k-p!EkkE=6AUc|^+6)}(C=(uspmh)(xpUNme~31X)92>VvrHkEsj1!zvo+; zNx6J*Wi7ArS4vmSdb-uVO*h(|)mCjYUBq>8(QRogYgQ*I(soaKr9oN;{oK*Z@GBv79WQGx^U z?pjA#86rOoJ6-!72O19?Jbct~xbe`DeTN(O*01});l`F0$BVBVb?k3ET3=s}hHCkb zC?4B}w(%dW=hd%WY~TYs`RCGOe^=Lds85}n1K;5Lck-%5#7jdI-&M;Gt>?S8@i!Xy zy59=$$JWqR_8GdIL7g@h(-nSek4?n)7s?kZd=+C!d?$dUeng4*E{is+76-0}FhAV* z%td5jpPxh)wM^`X=^lMNppSd?u|Xeq>Z6N{zeg6sWdK?FvE-rdHm{{hkmV;4_alE> zA{P>)iFYDG^kn3(kc+n_{>J#T z;rj4v;h%*!hEIj*aBui8;gN7O+&q3av1aP|sUJ<%OuanycH)nTov~xF^AmXD-Plyj zK6z}Coo=%qFQK)z@E79?blrv0npodKNm3- zz!W41GE(;&fhh|xl)g0rKB`|W^-y=}UKQ#N33YD>jvs%iz{XALY8La_~cUy^F(0K@aCbG z9BUt(_$*^V7Gy)P3mxds2$i7fbq$->g~nd3-+N$>PG2dQ{>ftXx2hohvqDFxyNrM3@fdL zd~%Z)`;;cHV367ICU$F6cDuk%g8g(tMjWC{D{<1k3@x+BD>1g0RpB#brT@t!0XqYcyT6XOwD4ta=%(oU8Z&s1x>iA2k;gm7+ z$s|=?!IyHzvRJo;ILso}l=EMJEMwI|9s&#;R@X!^OrkhS)@>UtUcc~t>$YIx_=EcLMdengK(vzO$ zR>O*fkE;c>5~_)HAjD>}v+VQxq*NvdPcWn_5@v4EXLoC~)?K=gW-_94F+@0oNa70V z8o5=Ui%^NpL3f%?dj-EXNLYs4l=^0A**8ZkS7*9yc#luMnjHRaSE=Bap$SSFes(Z# zvCe}Rv*p9P7?g!vZkcRTw?ZrU5;)nHvAbvKSyDRp96d)I_sn{P489Aokq|iS<=^9T zZ<}2%^J+PW$*U|2=7eD2C(98jjz_Pq-C(YgM8|`5z=KIwo;sxXUlt;Y(W0K%b{F-K|pM4v;r*%`DH*v zzr14GR3R13YJowc963cm^L2}P%%#*&%{QBaRt#H7MCE!!Rvi}o*8Df7vjoF)0jHRE zVySoq@&hTxDjt)bY3t|JV|8@J+1WVBSHwwYd4-%u=9~+{w_`PA%YyNQl)(Pya8L5W zyz|RIUJ;0#pi3&4E(LE>6z)dkCjKgSIl`;kaE-Zsnyhh+TCQ+>^-cVwC^|93I^SK!7>>rAb{W;@^f-H| z&Vs9uf%@qD zma`)RVP-4f=55MGZd~m}?_2D_fhe;MsH6pv6Wwrn8l)sdB84|I0HY_eVZb&321(5x z%pVIKfwUx7fA9MA3KCZM+-oVUmp3PYdka9rUrFL>jW+w*{%obSdr6pH5=w2gw_ad?D?F%+8TQxAv wd=qG=jV=7z7uof#wC#5lZM3zGE{6la`ZsV=-V|T3LPI3~T=m#I)cw}~0oLe5mjD0& literal 0 HcmV?d00001 diff --git a/src/rel/apple/PLVM16#FF2000 b/src/rel/apple/PLVM16#FF2000 new file mode 100644 index 0000000000000000000000000000000000000000..9e75d48f6c271eb7ab6b80f9727cb0ec4abfada0 GIT binary patch literal 3062 zcmb_e4NM%z6`p1BnV--Mah)P7sn)UT#16#^jop(|wQ@1)*@5^kiRx5UEm^3e$W>jb zQltLqQoQJjN@UVdL5bQE7utjP5)MkzGj(orcGZR2&fwd-+oP#+UJMJg3F`yfvaox7 zvwJ_BqC|~U4!wDQ^Sw83-po#*C%jFZ5Y6pg6na1~ca^(^5AG^-+4}%}q`txVgwWE| za^Ub$;c(NTr}rIh+FMtJYF392f%mrrvn=NwKr;R?fMo%NTb~k2OA-6qwX@MFHtb+S z{Vt*L;L~eB4jyhgazxnk?rlWOrb!atUCqf?&Yz<$+VOkb=IDDx(Y(9FXJ{)QY zZ(E)iHP?CYinuBCrEqUU*yI&@BY?x5Tf>3saOcC}%k|;fHW~g0TO`NeW@)__ohloo zQhCtPRi@C}bL;2I2g)Z>bSZ?UdJ$IWElBro`!}CK{NRox;>}W}7uZINwpetpMe8lv zU{NQdze2nnDuno6eaeGxHQ$3d#CNEtKk;`;9oNolL+a0Czfs>(!|D=}5?@z`qb~Is z^}Fg1)s5Oi+8*uO+79i2rfHY8e`w#=oXMR@Zu-m9KbiKbkHz-JI%BWIeiZk_&m!LXiEHUx{OE*&)2L*1hPp=x6ht!U+kytH@&F& zI?9{8+$iUf(!?^q$jkj#+HZn=adGjCjzcr;k}iizu56T_=a%L-4k~*JmOIq zg8mfH?-AnA#;W>FRg)8Ha97>lmPX+lPwqQ%WM2zW-p*uxifFA{ZjRXW3giDtt;YTs zvbgx^_W$DlwEum{9@zh{PCpO(e<0Qx^T*D`UXH)^f7yRMRvEt%zZ>5fKNjDXc&4!b zUVfC@{cA2Fn4kNY-6qb366Df_$!_|uZn=FnA_R0^a(MZmLrR~WoNQmrc7_)T*AbBn zBF&#L5UDxNwQ&HHRUnV0Ng9uePjNy{w+$6neIi0%Zt?oy@ zb=cAW0=R6F40DT*$Lr^r(8doK6`s>~tclyt^QZY4-nrHA(B)UJ9TT374j64b>DWJf z5aNOeLdred2!byBVRq~t*VvS6Om>Y?S404F%6+=jLghO44;WdVXRf51l5UxFPm%6- zA_B}O%+JLbo9?!FP+H>_d!>ZWj*Z!I$aIj3NqWa}8Zyht1adz&NpCaR$1$n|)7vsA zR~B0WROfLU!B%A9Z6OzfI#x0nKv+QtXvh8nT9zwER&p@QrHDNEH1}(k0Bn!5H7%uG zBWZtL7|Ya`~n-byUz$smg@fLW}_xvo(M(~<#295Et-OJQqeiV>s0+ht^SSa3lNP}ZIn zG+7iSzg`O({A_fXU2GaLisc+)u{MWVSjb0Vi*0~gtjGiB)zB!q;N#gX)kokS0hvh_ zZ`G9OLRSimVzph8aX;xw_2rv>oHe80$1xu$yWLz+xp7NpwG7J=P+o$%DLE9-ykx9B zI+6itaLmU-$=9Fhm_W{Rv}!Puv93KPEW`C?3vdOVbci$NRs3&p(VWLg!ZfAg6n;;f z#(%dZd|teaFN)_Z$stBe83)BT%mDr~JFm(QSns1?dWg)Wr_$yI@w1AeOq%yA^tvw0 zEk^|Rg5uuOQBkp*osu3eoJ$ztd+p=Q?Zo|{kE2_N`+k;KC2`llX!693iJK?1LQ%v^ zYzg${npkWuyS-1|i{BRwALpFmPnKd;d{3lUBfDL;=03<-hI`R=EyZt(BjQ>7diLHY z?j*5#%>6!bmqOJQ=wK@|=j!9m*~JO>bFH&O{tL5a73rmj^vX!NFiV%!^s@sCu1AEq z!gJ)ur)CMfRSbBmTrkW^&zth}n{@huL2u-rE}u3;XNkNv3Uobt5`97-cmY{&BsB$D zz-piq*nQ3JJSn9MpfNX8_~BzCd%99%bRH;OW*<#257ksyC%Vh50YXbgp#s-t&CmFY lDi9G~HQ>feNji~I&Q+G@F*qD+%l6SpmX}@M2tJWU{{@jCAh!Sj literal 0 HcmV?d00001 diff --git a/src/rel/apple/PORTIO#FE1000 b/src/rel/apple/PORTIO#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..44d75a834f677a1592bdf336ed665e5d84c31e0e GIT binary patch literal 296 zcmXYqu}Z{16h&{IL5CnRS1VVCxRA*3oMSAiuk10>}QKg*x zMjuv+@>}gy%FXYzsFWznG6`J@LVIvpWTc#;NT;zo)L7TyXApBvTrzON?C$uQd4J@X zhLhu83||9Rz!{~Z`TUoGhplN$NXVC<32VlRSPRyZ#PSi|@&z7NroE6J>SojQrtQ{d mE`0g9?Rtw7xeLC#rau=mn~WSu^I_WU#_la-y>3k;xcMI(B4pzL literal 0 HcmV?d00001 diff --git a/src/rel/apple/REN#FE1000 b/src/rel/apple/REN#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..952b6c3a1d3ad2e0a7bd80706c594a5e0699c2ad GIT binary patch literal 553 zcmd02WJ+aVSR=p)#D~uwxqLJD;HBfi$4;I(deWa^(18#J1|X`E7RZtoNbs4&pe74q z0fh{JEVa1;Su6};K1vLF0&bZ(sS0`dB?@WzrFkh<3P2@56%g$VF%Ug4W4syEVv&sj za-@L97%}Jxh2|wD0Szk2S13x&OUzA0GDweAL08ufY;Y{xU_F`8;>2{IGVLH&KLvju z7e7Z|R|P-Ua1hN4w4Nbm;#vmTi5nQ?8aFdAG;Rapy+C|`fnnld2I0ozK=vsh`z(X} z#AggFjW2=hHw-Kj-!m{begU$-1NHp^s`(4VEQ}0|?2HT(xfq2T`G9OeAX|h{exg1j zOQR8xZOX_p(H_Wl0U6mIpZh545EVtSQsu}xpeqKq<}C3Fy4=y aymUE4Ko-P2cl1VxfE)uPAqdDbFaQ9J3`S9oHa=DN8$e*iOk3vh1mQ*C0U=ksyTGuyshvfwEgB;-SkPx^~G+ zo%$avLZTm(9r`PRE*-beOgcQgFMQAU4a}m!d>|zl2BQCX`}UFVKR*pNfl?f~D>$B| zOeetnyBDS@zvbhu4a yiGAXjI3>=AbK-)yB(7nF50tOOC-})15PnmiGdNz}hk3zqe>Yqg7JmO$q=6r4=4FTg literal 0 HcmV?d00001 diff --git a/src/rel/apple/SDFAT#FE1000 b/src/rel/apple/SDFAT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..173fb3ed30c16005fcfcf830f132e0407eb65384 GIT binary patch literal 796 zcmaLV&1(}u7{~EvCmRfUnK`JjguJvx$`Yg&5fPChslCL57$h!H1lI*i(Skw5gC#Ac zEq%d-5K#+);KBdG+C(T+ElI_C^U$*=Paf3orioaD5q^X!`Gh=4Wyjd_y=Bbfl#FDZ~ z7DNUyuJVV(mqky7fv0?#@RS=VDvQvUn_=qcPP41XW$(9?I$2an+4iN=I&M3^`=dhS z+2IXp(X-n(*uI+ZY&Xg-=Lqd9x_zE=v^%zWhQBu-4)^%&XJh2rPMlII(xbAXa`^*7 zd7zwQ?Xx3$y7hCWwYy4k`Gfq#-BWz!+W&3uE;>E?9OK$j`uF4Xh0P#Mbcbq0iyFfe z=CF(^YFNPrwy^_cM8z z#u=Q&Ih@BZE{Ft|BpF+72uEAWH!)t zI{np5o_n76^PKaZ_uNgk+b%STU`PDV{ab2 z@K!DPfB3oo{lTHK}7#x1?RYouNTzaa1!rF29@)6>GIXP!fa(2FR=!uJc zmp(KcxqQN!ynG@f`N7AQ%j_q4CGUy%FI}o9HQfejUm_??sO@&Oji{|eZIP6OAS4z@ zC5dcD!X+fUX0?u}iX%}=)LmiH+pfyWvOvu*lU)t|3ELoeE%~Y9Z5t8pIMHaGy96Bkq zBv|Ttd6U5AZ_LBIjl1=wFnRMA-Np0JS}6X77wUVQz!0XsgfZQ%k+$QJa=o8h_VYNL6*0$c3 zwrek%px-wqi&*d)0>yIqI>IiVlf6y?BTyAv)%I|;($2K(3LeI#)vw@wSb6=5XR=O9 z32xJR`5yhw$yRcmss>CXM^(es{Ja#khj*ne9Z}cILEH@XvM};$^D3{ItRW9cKO){V zvsu$zd&j1h-M59kK9qLjK~$8jx~iuWrz(rr?s;hJedx->m#dnzbC8MM8xYw|rC-bB{PvxpLv2EvM$6^F)cct*VN{iPiVAXOz<_FJVU&iz;d){h(s( zF2x!Zl}%Ht#ByhoYtIM=7ud{-6l;_hvvZHt8*{BBvQ$KuM3#tM%SEJJK6(Cug=s!3 zxz7r*tC0B=PWqry=~F9lX~K(3fZXwV8JmcwHWBBWh_g+^>rAN ziFj%g@&95IDW8A8iS()2oBw}1L>9TYQhc#rY+U@HIM^@NGlkCf>0>k{N`rpcHffAr z6V%)-_Py(90{HH94WBK?G4Jdwylt*0z3+gp>>r3kgifO zQYu!-q`(p?-xvx6t0QKz$$7OspA;<2DvQP1W5tf!+Zq~MnjC7o6h1LEXIVwXDyCSLrf@OE(lo_NrdX0vSVDnHe_4=6t(vam zfh(u$cQ6NY6(pF(y zZSvAelaFpOd9;&|Pn!zqE6}}X^3ac<|0D1@K+HZZ+f3*zb17YDc2T!^5v{-&!f3X* z=#7?K>Hu6oi6vJnwGgcw*lr@T{9E86@H^=L0R1P37pxv_wUy8!YauPMdZ}#n&^xR?S_d>(ecCsyM7s~z13U!3 zhvE0A)vNsoaz8KtJPZ9G^v@&yCB&b$y67*hx%7SDGr*9MOHCOr&6+{9OkgIEok8f0 z84m3x@VUTzAQ#93mI14QBESRO2Ka#r#B4xJ6?hP+gS<7vOm}7&X?KP|@5@-N?ScMV z&>sK}Lw*wS)8Mbc=Nq!IYF+RZd-pG73`gh)v8!g(LQq`+{dN}R#Q zkZ2??jY4ZCCr5{qXNSi(h;~lLN6(B7pDPn*lJjF1lF8AaIE&!>j5o%{lV`@NMMp|_ z?aZkvF_#JBqa)SgBF4^+9WN7?Gj@D@`1NBK%EgsT7#TY=78G5CeKBlVc&VWQw0V^~&+l8qqV&8Q-;>s}@UBy5Zw~(K~4$l||nqPc6nz M@O2E!T29D60ja!Ig8%>k literal 0 HcmV?d00001 diff --git a/src/rel/apple/SFMSPRT#FE1000 b/src/rel/apple/SFMSPRT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..8934f8b5e25735401179ee23bcd74180af7819ea GIT binary patch literal 2125 zcma)8T}TvB6uz$Q6eTjF4lE(GZLr9e%kIvSLrK)KV+so5x>OWB1V&76kr*Mw?jX!V zVB2H#M^8o3V-)pLYHExq+V4X_&|?tv8bseY_wH_PSdDwn_kHK@o_l9eKWd>dUG$kv zSTjqrYaa>=^Q*yP4t8y2b@8<$eBZNdpR57&(uQHQ+ZL>0SpNa4K$TaUt?!vK1osp` z%OWe#dSm6K5o^aVmQbV7fVH0F^io2IX4`@lX!dVV1?%UueBZ)D*7q{8*e=_*JXL=P5=_+Ha6v{2{=fbk*{$A_Q?s5_g@pxrScu%ew*b4e8YSP%%~0Bd-V>$=_Z+mjVg*Q<9;n#zAf<*FFW8|*oP&QSe9Y571bged` z{m??1dK#UyVLw%ZUbf1k8R>h#qxvz!XkcZy;OwF#W=M^7QC^ucDU2ZZ0HYw>^+mph zXnAKFb%R$~$)txliU{#=dr4`wY5?v?slKo8%bmO6Ck{mKF4=&qsh?^ZlR4y}BT*kU z40D;Tj>3B7dhwvyqH7}lokh;ebXB9bs7dVH3pZMNz{#J8Fh%bR?H<5kji@;OBG2l7i zIIs+y0!{<30$+C{az$3-JpDFL)OK literal 0 HcmV?d00001 diff --git a/src/rel/apple/SNDSEQ#FE1000 b/src/rel/apple/SNDSEQ#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..43751c958542c66837e6127bdd5a8116cebf1cae GIT binary patch literal 3857 zcmbu?4^R}>9S88=Ez7ZY#~qI|5z#0pdLW`+{8P_(CS>BjF{`=88-|>YImzaRTqwCY z4?<{1I16e57fYjUlQ32-u_a@ywj4vJjRPSf;J-t(X_~~uMg!7nZ0wB9wDJ0VyQgC9 zjG3wOxqG|&e!utj?R#%wg;98x$YM3q+05<}?+<>srl;@tk-jIoP9I%EzKrM7+taV7 z)Bo{r5nIK+P53jcLai5%JJU8;er!IKnvv=^^%!RuUpJ%~B9c{-NFtF0{Fh4mcg9+2 zXQwwB8(xv;t@0Loql5KB(eC=;-MZ-MmCs2{L)%(Ynuc1%rlDx8mmlf1qv4noJ&mgG z@v1)?S1~ZUX6NXdqbo-5sCH+<;bE^-6^$WhXZ`S&i+gK#i;hD>c71>B>sPJ{e;?X+ zQR{4;cgw}L&S>nauD4#QGqiO@2Y7L)ZusrixKuSVa*!PTv2ojC83p#veM2q7mvje5 zdZgG$k0JKORcU0TfI3ImNZ!7SXz^C6Izv6bAw6y=rEQ?MZfG}2RfqJBeM9}RZ;;_S zlJ&-fFH(?c7@01p@x$ILt0|Ur2F=~iSG7vMb9s$6bm{Z zxtFA~!uImb3u7}AYl%uY`@BoiYEtHeVmGj?m*3ofucwo!1cqQ4h z6YW~^A8}7eM@yuBS+%eG@|k*=DyUy$1@~8Ibi8(vNIep@FG>5dk^%@DOwVmW9&X-7LS5-=Zl{@ZQ(FpbsVrVoxnGG`R#LQD(M1%{o#`I?UeH7}I2Gxe^bV?TXntm62iz znH5W;^_7stWuVfTtg&h)Q;dp0U)T-sDHTNv-Ry)+MLA495xsZv$7;!c0Ar4V_P9_OueK*@XHylU(Cp08 z4#pv@21VCmK4S6${+Wo6+>DQmj*qZW@ezi29-T#{vzW}tpTn}+iZ3))r(;?JCZPtw?@09T+ipQ znG~~DW$L-OqPNZGwWs8gt$`0B-5kpjCB=P|C9Ve&ApzTi_s*?W(Q+@iBe!^0ZhoET z<{<&w+~$8(e~sTSS}nq~YLP@WOcP!$zXkz(Q&U%~IiRGu-({ZkVv9f_^F7v}>tjAc5(}_7 zF{!cWN=Z*;Cfg#`VJfLTU?Rn+mDMc`YvDpXWU?zJX{rTNqtTgEW)7KLR?;f19<>V9 zGk34PXOKAP${W=R*4-GaJKkb&)S^4j8^R{4Z4G=fW~dV$dx|#UwaMAv~)WY3BtpRh!>k7`XGLpI)r5?d?#!%SAqrO5Y! zOKMehG1Zmp+p(YJGM~tN`Yk+@e=;kQMe7eOeS9CCir1M?#H+hvagT`iqklW2C9;WZ3*{pOCoEYjM1*Jz^=5v-in)WGk>%Ph_^`*6J)~vskMqGuIrNHD=8V73E5H zMft{xK;VU7=vif!8DZJ$T=$b8(P!~aIvOYU9&7b><`RhC(lU7xjpg0J)_pjKm59w+ zA=vV_cy$i5(>lRoC7}S8g93X1Zyuo>d>JGNnIy>22EWgw@C2gpM96~4@HA|It?)8Y z)BOT9O%qJvhXo3+1wVwK6S|=fPQn2E6aEFdBns=n08?N(*uephz%p0`ZdeN?;D?Ry zB77fe;D@jk8eluT20w*2;peayehK>_3WuQwPQn@Z0R9Z0!RK%d1d+nYV1e;41?Izg zC;?26a0S%EPH2I5;1IkEozMe+f^%>lhF}E#0oOs7OkojH!3yJG5=@3%$cK5b03L-U zuoAF}!bRYL^`OA_APAN468r#apdPltYw!zbhc4)c0r(is!zK6<;$YR|S%VE`f&&)A zQg|HJLOHwyo1p<-g`Kb)-hy}FcW@Zqhof)|2H+DIfv@1-Af;fOAsxm-CQO3KV1wx} z8|H%p7DFK{g%z+0o&*n+z>Ba2UWV=PCcF*p@DW^qVYm#}AW5Pyg9l&=*kC?93d`Yf z_%0N|T38Pozz5Gk83bVyY=sE?2zJ0O*bBdg4(Nm9a2n3SIrs})hU+lafcuAuV1pT8 zhefay@M~JQ7}mlDP@oJpLLD@~>#z&& z9xlKTjKF1FmyBX~yb=9@9GD4qmV^XVx&0jvhJl z7}L|>hlAZ+$7N=s6K4nex?{(?o|5EDwLEy{luK$$l#dLYJ#w;psWgEN#*UpnbL!+$ XX`)(;eXvT(Vrl?V9y{`sgl*|RU+zLJ literal 0 HcmV?d00001 diff --git a/src/rel/apple/SOS#FE1000 b/src/rel/apple/SOS#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..ed96ca122af3503fb3f0c894eb668d6b9820d493 GIT binary patch literal 777 zcmYjPO=uHQ5T4y`_s3QpJlH@svepnQwBp7#gtpf7Qd9`C z(1S?VgLn~w8Wc~qP`q|&6BB4QN7IUUJaoeKX%TGv9k};T`6A17IE7 z;5TmVZddlAcKL0zP}<3t#-a6XIHtI0f^~Wa-(G*wts+5;= z(idgb{k*m>RO?w-6D_&u2vwyj6>84ULf!ekKa{H(vMJ~4hGHr%667TznNmS1NZCfN zw$E4V%(=4Ja0FH)?+@~RoiUXeQ%=bc6F5H2Cm`L{AME3GfZG6ZA=XZ%sRTcDtQQ!2 z>VlMzfY$=mDELGegn0YQZ;iANP~+{yX8`(t`FcQeom*H)8LHp!SEJ)mbLdkP%iWml#;MR7pp-lW6L;MhddS3oO;@wY!$hD}*V_C;Y!h1dm%W&DW75m! zlSkMHDWuG54;EO^WOn?R9trD33>~F8)(3qZ1I*WhVGn3sWAkZsnq5>I9n*u6u$q`n z8O^(fyFkNXQtBMdB<7dqTK^C}4w~=Mt?3)akUGGQIQ`FkM!gb_1cygsSJ_2jl3z#Q ziwKqt9o9Ce)*s+3Hz!y=&TaK_o=hJHnE}Ee2i6JBn>j`NEb;Ty3lbk8jFXN~?=s~$ zd9M)+t}`=By%b@d>Wds&OEj}g{0`-NR9_)HBK?H)GvY4@uSl23|C!Li3$SZ%6-yV8 z1Lwp0C<;*7t8CdjA?$!+-gb8F@tvQU1U0hWsyEi z7AhziMG=(XVEsW9_90l1TACLh3W70-soLPuqz?i0p)a+9Af^w}2gmPjN`3J`m~+1G zo^$Rw=gvJd=cPCaSY{TV^{s8KZ|}|ml~e*gPHBPg(Ui_&kaRX}Q3mops;Np>BDL?a z^=48F($0Fvxp*!MFSB?)MSb6s#eRs}`@h}a>*`EewoH|ztJ0(Cf$k&7_@de6Yt5{m z3hr{=uyvNH_Efrs9%!tdq&tmf22I1+ur=lEuH@j{EgECqm~Ge?C@+{L8@53o*MsFV zW@!MqII?p7Y%qqRd$nDz7YpPUAtr?)Krvj^>RmX zu+xz;{8z^e@&xxxshg{7N;eC(?2J&MR&2vBlp7YUGp{Oo({w)|cFtMgImai9-LNG+ z99*~S4rPYCnRn~(b~GCrM?5uJ-v%>oa6yY;>p)u{(t*2{mi@SLzrh&*M1a)z=(xk>q<7vdIW(t>DE zS{9;*VMI?+PQnOZ0-|@xzaU>F{|;K%CjJa9x<l+WnlrKB>&2bhARa6giCC3)43Zq`m zSA}654uhklXXzy7y2JNgf8cJ>c! z9_&B3d8oH?_u!-U2|c?9H{1DQ>$UG5+}U%Ru*9?^&)p4fbT-P0AlrDT9h4Df@3s|)?ESkkAuGAWm6NvN)nwARJ# zVlLA(#r~8l?%R^|#eI=uTJ)C`JwS6BXuTGoZtYfT)0$|Frchi9QdpZ!_h})t-9fF| zJc?@b(H2G>K^>*LwH8{fwNgN9Bfr*8&Du%|YH?};4+Gj7@@O68&^l?7wwCI&B*|I| zZQV4STSu32>*;*%AsWi{5^2xSXSp48E%z+?cB1d+=-Y+97wB}ZkKW1cp%b~iv_JPE zy_9>2j^_5!tGWHOEB7+(%;^ks2;nS^JdzWlkRXbV;og))$vS^Zrc^ZqquOFhTVOUR zepTw~sFhVIlTg}JDP#dBGplf8O(+LZ*}8DCrz9K1v-nHkrX$wromUYKLW9)m)@5?4 zIwi&H&{9poZ3C*5z<4PoF{NZ(+&eFq^s3f>wJL{YQhJR>O3A^k2i1~+ac`uCl9`nIgko&D^LiDby`yrzwe$_Ms2~JkYw;D0`Bzx zyMY!5|?QJozRQ?tdAr) ztlZ3WPi)=>td}1l?oHgs%~eA1(LbNcvdgSut77xJ;bN8NRL@G<$}BHgGPeun0SczJ z>C5*_Ef}f;7I?#nRXOepl*q)(GVz%uqD+Fof~((Um1K?5MH;dsR5^mt5ND{8l@ipW zmj#_kA{p6NC~PKT|Gs>ydgfwMG4HH@hDex3XP=`z{GZ9UKFdz>B(k3 z0hp`Lx7HJ+UUs85QFpOS=NK}PLe7FzgklJr6_Ybtm^V%a1TxL4qt6HH_vn&qnXFc4 zU`u>q7A>3{uZv88rWUx)@4}d|*0Ie-gs{t^5gH}}SHR0ZGs(Psa5@vHB#9L! z0wW(yQfPtlKwdSV36Dv@Vo3zA7U&sL=gE6UPrl`blZT*U%DLj?efh~xm7RQMe)8*G z&KTHdnB-rEAq@CGCg!!V+~U2a_jL*ID?27aFRRQ>uRM9Mc7bp%c77Mmr2_RR=b|?S zPrg;~n8AKy>Fj0>70k|-2==haxe~#xMx$^n@cTk>^5V6P6J2?lfH`7J4**dX2xxzO zgTRg@Ee=#sP-fh&MASvWX8l%2=P{$JX04S=(XE*nVZ-NWsc#Ggz6ydP~9nq8_?2It^lGmxdD#40sv#8LUTGV7g(Z zD}sq6=!zgB>EXg^gbU#=ZAQ4LG=~d#QT7C(F(4QSt_%3=c?uLV0v8jgMm)-x=eOwd zzf)&kqMpb>=|u|1?#eack&T9L93~~lon0ckE3fosKLnl>nZ++6>M5`1Ll^8pw+o~< z`5?!ERWJ>*%n3@Pl1JfH9fj3}oV+}j!9S;YeQrp@G)FPP?A8h#a;@Uf#*!P&As4rT zLs1*Ci`H|f=q}%lQ!SChvB%)NO-zg_^mp^AcE=b_Hn@3^<7LtG@vwOa81(R7WTGIU zoE<%VwAQElbnyEIn&F3L6mraV2C9cf4(W*9xy~!eDtX`bPv3fq?Efb>0P>gK{ z3?KLRgy(^Wz&;Fap%}5?M2isM4vOhy!DsQ}_Sfo6 zWk!u7pK3r-)LWWD1$Vz|_=dQzG-ednEmRQv)Wh@A&q;NPpqeo!IdNY~j(SKrS`d|v z!?aAeq8?VSF40pG!H>wg3Xdy6g{xaL-aKtODbF(?Plnak1g4;V`R<}}bFjT#E)_z# zw8)yQA(YY9>*Nr9wWgFLTx_}B4^tc$^9{332q@6`0`rYz3lh-# z^eizYVM)<>H8(c_BS^9(r46mOauDhYxCuh${CqJIJ0onuB#QO{yAbvPlPKB;Orkhf z!6bMerKhL=P+iKPa;eiz1pacZwxq7so zmV==@DpZbj3Iw}#g6!D?;E0hsSQ0#rw==Aq$aipYCZWv_UCGDCARX*OBs4-}J_UHrJr?|O65ft= z0G_c5JeZ@D*h1T|Oanjj&Uh&Bjur4W&@HFlELiiTcqoeHMsnv#|I>xzmWibNLDCof z5-Ihl;6cBEs)j6EX-NAqy{~Pji&}Zwail|C%3FJ?VO(7%@r=U2!*F_~9O8i?J4PDX zQBXodLif1Jld1!y;2#z^gA=kzESj#Mp_`mJ78L}VUgQECTv0jU<%;A>c2CTZe{;gG zmC5(VPN`UFvEGw7Z(|1xwPbT+i3)ogwIK=0e3sv>PjX902)$^>| zZiXyUE4J>1jYza!KPV_Y3*;@IE**h(B#&001kdt&JRPM=N9i$8Rx!$I17(#NWsQ#V zule|R6#vQ#6ux*zU;*hK<^k*=*|`{Y0&9Pa{TB?q7?bknCx!er`i=bCh7Npj{{;QZ zi}-WOv-yk4^Uv(%I91*;f>%2ODLQxBWw9Aek+V{31Cyfy~Mp8@iF zjB+x*K`Nyi&|kir&u{tyjdYU(x}~Ob{LxXIHw^5dc|P7SZ8KCyY>2TF7AY9J%3kYr z8Bv+T!{DTEvzR?BXy)Bs10V0vjM)qM7U%naY{rLCMMsX)cFY#S_Fp7v9P5o43bCG{ zRa#3~THdMzQ$OF1O++DfOz<>EMFc`G z-`fd*P7vb&G75kb|(~0 zH=>VAqqSiyrkC!4O*=k@kBBb(KEy8g3*1G3td9m-tYCY71qMrb1;&GjsR*8V{$3WJ zJ#YTi<$6GZpZEs%JjmfZU#K3^G{H}(px~!l=Vz6fpEz7B!j*NnUNb*^X1Mjt&xr=y zg%!~|E0+1`>gfiWbtXVF&fH3`pJ^ihS%qFX8>D|dGn?iOHq)DfbLq(7*XZrR5X~IA zgEkG#qu&nAr&;F~(EaBYQro%3bmiPq%Di_s^}Kfvojn((S?@<^#`{s)`F;yo&$m+W z!V2oR&`t*~+)tGkSJJo6#%SinRg}IMC;C98#0P8W;s+h{-UprZ;H9;6`cfCIxtyT* zL9VM=;r{7$8h)!MEK(P-u(yk9TQQhz(lo{@!p5Y(Trr`|zXmAUi zAAF2{G5k2q8QDr3Mt)4|N48V<$deQweu`qlPg8EBm%e-T8LIhc2krjoS$h7Xopk)# z&*{x;yXf{$UZAgj(nrTW*+WM^*-Ps`eUZ99eTiy5+eZgJ+fVC$_cBe)<>;6E1r~`2 ze;mI%Tu(|EU)7PY@W*piS~uK_Pvw&S!6(xHKkfBxwhF=sYZBknQx;`IvQl}iiNDu2 ztJH35b5+>%o+d}C(wej@uZqqMyF3(kZg|0l>z5aV>+lgpfB%U7Zq$KETTjp7NnC9; zR!0(ul1^2^Cs!+uS8T~@WpfjM4r;GytCAc^E2vkZ+fFGbrQFKlCjQFbUe$*0!;_@W zS@Bs-?k1YhdRKF#iJIK#!}GLOwHb#Zvn&07G~Yjm+os{7@E!hl{7OsCYHpw1R#l-= zEK)?&;h+_rQUt#msKT(6TS{7@+emfeE1ffL2~XtP#uy;ELxI?qWTootd!#qIox z7c=yFsMDeN8SFJJ>1fs|?RZK{+L|e8iA$;*ziR04&=+vVh*nBrd?`7eC_kF`rYoEwc1I3S^~#WrHhJ&|+TIHtM>Q(+zp zb5rV_N}ZtEC-M7XH^n8U9Id1s=d`56Vz*!kpt$%nQ@F(pQgd^( zi{h3oNlTNZ&w{am54E^OS{!y@nCQNbr^L7piFJ0ib@?}!vko;!L)7|kb963#O!62k z2ZQS7wl9e`kZmSi(B{xTYK!PQ_~pf4Y0K$lZ3P|IW=nUnPOXtCJejY_MYAiHw6xq2 zKx3T2K?bv>W%uF^|6+Zpm3_FR7Gc@>1ypI&zU0=#+;x|FJFfPwtCc&h^{(^DxBft0 zccoYHcjL!0v2HKX{n9d-q#vN1ogJL(A0;uD(vK2l zw~{CO1j*T-(UkN*A!VR*5RI-Ug)ND zt%uUzN7;=sfN~Y(Egz*Xp;#wS`e~HxL`n~$9G^t#Ws@oWo5_^@?JZNYpWfomPV&36 zxBK1c1%Aq|!u|Jf|0CT0#BWVMgZiKR*6d!CfALG%{eDaOZM40E^1psh_AAq^+4kvD z_5qZh=~xHK6Vol(7p8l&A5ZtD?`oiItihY^M4f8zWWS4geSouv1sqdAG20rcgX4FrrD&dQlrIdIepW>0)E#H*?xKoliIMFXX<6gjr!4 zSa*e)p7alT432*k<=A`awD9nC)D3R_AO2kJp6dQs`T3-G;rIT|^giW(&R^1Zw=cKv znZEsf_t9(p?%v*>cYA}q|Jobt-81m@f%5}@H{cvNHSj0?YJY>@JFrcB;I9<_LhKYj z>;31xt9=jqa(#d6^ZB~_NBgV#kM@77|2zFZ>reEr8z>&Q)f?}b>8b8{tEa1Htmj(K zg&s}smfr2XPxtQYZR~x}^Vk0G`^Wq%n|ynGSA8G)4*OpB{nqz*|J$O= zcsxf)xsD@Y!HYT;3LOuSOGvl`*{cpGIu{Dt!wF%54ykrviO9Z4JVZo`5l_U~cF(&B z&PPI!g?TAz(8;D`_oR41m@kMY%cO{59jxc(3*&pD?e5>06K2_$m?A!TG2+$ z!oG)c$*kOWkD4<`@v5|tkfJckBJ#u!$v6?p^F$?bI_`-}k<-yavM16`5}s(^J;!|n z9vn$z`mFoVd}tvv^Cdjs#1rw&+h&$|ZZ!>UnZwN6t^;R@5Y6aAjZS`jgQltPj|3Xo6>@!g8T?yN$*Kv@c}NISg)o7;TiMBF*#cN802D-$dVroNj7c%Q zJX?OgNcUf1is?yD1Pm#PB3iY$WNb=L$u3y!*=JN{T?BDk(vR3IoW16ALFExm;0Mi87Opz)&TvqQoe? zSeW@jUsU9aBVJ=eiJbYu$mupn@eAWJt-0)6ie@$?LxorXUx{>0_uaES24as0F)5-@ z)j+-EMJs1-jSxMvt3alPvU*>%;aN;1a^XtG$|?jwH9=Jq5Qsa&T_v8a4GP^O&{wH| zH;GKe$yO;c6(t2wU-4{b0pbIN_zBp^65~@)&Wn+g8p9piydhyDR9A{DMo*>;Ke7FM zWu>wG&@f@UZU{-s8Yx?!;YYGkT~Hsiy5!3Xh4A_hC!l0fZ~~xa7TP<20Fln62o$Sy zGoDK3OXINzDO+JIb}f;##>mHW3uI2AB~KYXhJG(!OZXCcvkZTy zJ-jL;0*$0xCN?@DcA4yuW$A;do8$@U%G7vr2Pw*~|A4MZQBo^Q;{`X#hFHut3Ls@x zssBp?)Z22}&l<*UKV5;P)DX6f-2u=h(nND7vO@pRFkt(BrvI;KUNd~p_T4r8UM3$% zWL2}5$t{U==896JGfz~Yt@JG%N0oqUr74|u!Ryi`EVzV}7ePpH0y@7U($Ox`EPkJ? zZ>G{WUFn;RL5rsME#KXFL~mT6o!qGROOf`jX^F@%k_E3CjQgfz#y=x(6CxZ{fL%}6+Z1}h0%y3R1Jl8ye1;_PXR#Kq@et{K_a7(&gX(1&j)2VM06XAsR|VZDNotlNUL-}5 zTa8k@i@igV8)8XqC}o$Tq2!#7EZ&KbU&^xVgn#Kq!C3MntwZU`;<&q1x(Qas1)cPP zz(`jF?dT1#HU@7AE>xj`P>86%%Mr5mTI^w?>TH^PFdjGYFhYr1P%Z(6#M zR4t8BMf$qcP$H<_2h~rUN;B9^KQg4N#^X-#cguME9DIdHaWE1Uv`dlI9tn7ikWWPf z5;Sm-Vx{OBMM#)*u^r3&Oq&$b$5EBiP(df#D1R4?c35ipk!FTsy4t8l8_pAt* z0oM@-I2$O1X5#$LbFnTqvglXCf*3C=AZBorvgtTlOvt)B6^KAH%+9gUDMAlL zRTC?)?hod4p-I^LPwCN;AptE+;OvAMgBrf?l3U?b9@}Y1GGXTZL~>IMS_ees{>4&+ z-15NH&$+CkSJ#nAT69xCT!2MMxY}d=W9JWP;5wAuq>k!YN7S@Os4OStl(_MjhwXZ=h0nYG$pJ z^{0vmHIqjLavuq_P%}E~cNKy9T*_r~G%FEW+mrxo5E(;xDrCMca;-yWMnyU)89pP4 zrRUf4$R&vy3*wkzn+sS(WVnxpZ1pOtV^HU1!_j~@6|X~lF5=gtmW|f(<bT!&D-9<%j&zzFyXfD{L?mi4M^q()U+j9fc{Cw2xY zfUgb0q~k1IbWo6-d(YR*rdRVb^A6ab*9J3lyQ)$BXrV?KBX%`d$%L$dbKikg@aN=) zf-quq5<^OK_b3lGY!w?hL85h)$W9Q!Dz4{pv&Qih!kQC1f?W0GW~OEvvR;4+!x{_A z%?{eEUjy7>njVIY!A$*5RKJtD$OFV0npryofLTqLJ$d5SUd(o!!Ya(#)u+HXYhQPg zj?75_OsS@s9Mn>Vk!2q>3}fq1v+Dey7B%j(8V)%g1BT_8`DTFY4g+&63{Mc@VLKdu zu3}n_S@!V_78~EFX~EW?SdKv{E6Pt>Kilsx&}90DY}OZ{cHQ+eSYjzgntl+UNL7)Yx=lOYohuTY~sCJ`W$~H{fsa2Ftg3 zbL}34%^7rROyI?ln{|aCGBd}GKn<|SmGNqR#$toyTEUyySrbd+4S8>NaMwf4CVo4@ z+fQOu&1RZE&HPb-=8k5w<<&O67&ExIjR#2K@vI6$XQ-|bo3V!Ov60Wm`6C(_RX87# zff5244SLZrpU$KYup7DO!q^A~nu|fCjo*fiBMkpI&KubVo$&Ey3vaE3ysdT(Z^c$; z%~Bd$J7BuOQG*b+V7ASkHoWUH2ko1=mSG!TVlE1fnu8}H!<9UN+i}JmY%H;#YuSZM z{uEs-Mb6gdLQv-QxDe;H@p-j{sBsszbTo|QS+;Yg5gWFEOAEF*HQN*E+WiO@<87G5 z7Or53-^}MXTb%SDTAX_gjx7l1H()DhsGZz&xV08A-#ntnCho(_IRDg&rJ8?F*M1Fh z;Y+bKi+r=yxtDd601-TIYtF|?-L40NS$#mS6z5ZrtafzOCTHu{*7&I zoMo_a>nzNfIp`qp%X>{gh0E+NzuV}t4p7n{`zTvXmT1Rpt4|Z;P;^ X<$5CNeTmyIt$r0E;MU4%^veGL$w-Tw literal 0 HcmV?d00001 diff --git a/src/rel/apple/SOS.INTERPJIT#050000 b/src/rel/apple/SOS.INTERPJIT#050000 new file mode 100644 index 0000000000000000000000000000000000000000..fc53a134752bdda059fed8e9226917a6390bbb6e GIT binary patch literal 6073 zcmd@%eQ*=kozE+=S_xx>V;hA~qHvrebjB7*AWDWSag4#H!l-y*5>F1Hg9$^J%a@Xn2fuYtq8H$i&)8?+# z{oYD8b|&rI|L2dl@BO~N_igq5YGW09z>W|y2G)93`_ZL0jHmDa@P0wNe(r+p?deXr zpi@)OsV(TdQ_y+4!2dTq?Kkoo4{Brl9$p)wyO^l-`)SRz)~g-=nRMTeI+LExSx@I@ z9)60y<#%&9}<; z5B}HvqJP@|x&K?eMsJC?&U@7RKi=HFoc^c!-|M^F_wRi(eWm?u|B?Q8`gitzwWq4* z^o7qZ{PBXh=h>d$UU;jgwdZ?1Kj|6liS@kRGw)OT&HgHXuK%n4c3+pT)7#@M>D$xy zbMJq6oqhk<_uqb};cyn8bRI_htOs?>7T6vjCm(n6vPTt)cg_~HhvNJ!S(5FKQ0h?J zI+N8Emwq*v^ziiHtcTY`L$pFp6LOkQPI!Tas&GqQc?MOu!yaTLqGgc&W*qsEbxv|i zel!<$haGKqJ!|}kkMlA=BS!RE+4#bR3I7RxCO?)a7Q^}#aGstih;5IwyMA97FOLo&q;jTx}9L9DY^G9h!ew;k>F~d7;%TYBcqZSb4%SZF; z-Z*j49rn&xZZF_mDq{WuhMuu}2$*?EqUOV}5n*#Pd{a`khL)H+CWc!g?g+>iVcsYqbb&!NDbr8ZvB*eBU4BIjcv3%v2zi2fb}}kT)(1(q6a-h(*lkL-7ijb0M9i1+!wDT^L{bnF{?x*5;klR8h=TN| zCfs3AqcHl>lEYa;eUeYQsOecxDr$K!L1+je(LAAWES}C<38^3X>Sy^`?-U>R-r?mB zZo3$1t2h3^t>9mU;<2P;@F|Z~?b5@AEJ`IF1VvvTCk0e5^RhG^O8P2OhWaUfiX^1| z4u8iT4kf#$+QTX7A!zg|4!XzAk1hHjO6lYL7%2uo5EH*(ekeI%sJ}&6>TfG}5Y=|q zHxW``?l7cD3HJgl3W%k^(5=NpEFsN6fw%=KXBonSbS^5YFhS9O0jcBTz+)y|rcjVx zc|_vAL?SzO{?f#vivS=jNnVDghL8a!8j61j%c7NOcX*mGX%r?}!NEZJQeA}P%Pn3e zL$RFxQp-si#Mp^3ne<#{FGkWyNkhRFh_5Jh-Riw-c^t?d0it49fvNy{)`J#nZy6D( z*(E_Hf--zxmhem%Md`$)w3HCFyi(~oMq?~BfG73RTpOXI<2Z*)>w_ntc zS$??~mLh$~a`7evZ9FBZZ-y7)ztZZx zM3eiS_s$F=*E`@&tk(I&aC_G+QIcVmW<4qp?!6T?yalA*+i*>|MP>EDJ*={plhvl|ZRP6f@>f`TSLLC7`*(d! z$Pr!@eiZnI@Lm85TY}#bz8-u__;!#Jz90OKFc)kU)`ocD)!=u9%fasn1A|`S2ce6? z^PwT(_0WgHxzG(^bLc;XPXl*_4FhL{H6uR}wv2o#JURG4csTG-*gE(JVdbDIP%+2^ z$_5Vz&k6{w4nUBNN}#{6h|*}db1={`6p*2g1_&MUz?-%^>|jK=Fo|IvdP1s@Mjo`;DJY^Ozjsb)FF~^V(4NvjwMCZ@I0+|97`TUnMJ@GoA?znEwutteia8*>$j*Fee`uN6PyY4H-T8NCY9 zF2ajK`36x>Yo|3guSySYUX<=R#H%fY`eF;v8{j}#F17&E73~#`Cna7@Q1cfFBYESh z2@qKC1M8;_WgcuJA2{M=!(j*LyKXpq9KL|W7zl~*n)&cjjS^@KOZVWrM_WJ)2P#I4 zEMo+Rr7osp0iT|f{?uVqsmxU1$;`?>1tUY2NPfhbh8QoO-~Jkru7|5u7{q|;Fc_RM zl!Ruyb@TCP7ZaR=sn^BGN)EqBClkU%fiFZGhXy5$^3b-ncQMjuAv(jc`S|!ZT=e*N zg4E2DZpop9C!F?DS{|MdlhDU#X>C*&{4B&&L_>_vspwTg1e_sent@>veCVg@8J=-{ zG_4IzK<@96(vrae4Q!xxLbP55-j`P(a>z7vrT5t3mF+fZU(L zbqCaudp+ZhdA05csJ{;CFFPPzuV}NFW(p%tg_>6&jz-OlIclQV9|ewX5b9RcXbFuv ziy}15D)YZ8sK47F)Tjv}N5wSLfY4xyW3ZajAuiiIVWQLQIJ+i?P-Uy=(V9;w1T`xOmd;WyT4-)l46uM@G{I4*@Hv4^4jp|;Ae-*tqZ@^y)>RyG zZWPoe#B#$HC!qdXpxJ}NmKuui=vCPnbJU=X;{)3&1dPaR{Tl3Y(TZ+S%^|DDS&g%QAX6 zfZU>|Jmyx=chu-9GI~ah9+0d>PNU~tfUsW=0&qb^;a`9i%#U}hKIs5n<&@bkP}F6y zbD#>AG$ad|Py-)mOZ%bDf;~sUGJ^h|4?vh64%l=EQ^)uKs!?MqT`oEmR@)fDht)?Y zOr3j|qsf6j-Oa0Bfu*GByj*~8Ldhp)s%f5a-In^{4hWQ`0)U2 zI*yS;2MLm6M{CtoYAHUw?|}S#Jdoa7sXEo8g9@dESXCe;ZL%8bz5`S6=U_Jsz=}~5 z2A4?o2o4gq1dSX(adHXCW+1^7n>*B~wrxRJ-EbzrUL0(stJWj)3Ft7aHZkmhL5q1O z#2vQZ4nkruU9%b0Y$hsl)R?Yq)L9u!AHk@q1YzBa3~4pYSXH%cjoD74u-9fl4WD~3 z({aT4qyPxI31`DY(_}VcT~ovFJXqIp1Xy%d)e%g=V?`6lu`*3qmu}FhEYw_#k*SoJ z0&8-pk!l^#pt@4Cez)y$K$vO^cLvxsBY@m80#6{}Ac3~GDZ07VRLZ?!+RD|do4;v( z-&70DuP{Gj{^QFwJ#oKa*kaxb-R`QH!j!32sY*_bYdPBV23LsbBBVdbWuxX2#Obk` z*)_l*TvtTZzhpaw>TtuU!0BVB0(IZqk=1O$PA(faa5?x*PH$@D3hmnwE=)(Y$_Tn_ zD>Dia*jLETk3jD*$eGq%_?&4gxOftD7CNe;DV#%}>tLS`H5$2%2ybk{R8=mC0`dQm znS~vVg{HbTZXKrax;Bo6NUm#pkpc&3!fU{VSWRlfz~$k*5jCt7&I6aA^?*i=_S$Ar z=^#KY7}&uOHh_S}bwJX_t;dEDn%jW0N7h4HH#C|!vmLxQTh*Kyn;lj2DQxb5ZH}!9 zA#B1-n>D5XvGa7mn#i+%#O+#4Yacmjhv4Uq=&+I9JB0I&EJ~{SdCI;MoZ^bG zIg^4$vttKi+XO(+zP>RJD~-Pj1ZMalj72z)M9XYdrDHLcsw=UrL3k6GL&LwJt&Kf9 zV5gCJcXM%Fu?-5gn3Nd9o(owJmy7kbucTenXB<4#n5)zS&UKOI%dMFrP4;*eMNSCD z*0Dj`D`Y-#kHIYA@}cy&wE&(UDMH5Gwigi2C-dbo7)16w1aW>B;+)QagUt(C08;fy zX5^4rg4aUff`JIglp1^-^dY@@4awcHGXV=!E~E!!rpFQCu|I_xP6TSf2(ZQi4>(z= zT8ISMsE?f>fZD2Gr_j-z0qDwOdZF+o;aIM~28WCFc3WxnzEa~e#TMh6PYcWL+siROqjw_0erF$vx+sP2ig4x4px!3=sN-DI{~!Iwidw?h|DjM_s2^D YoJbQlBs_=MIdSPL6#>>Rr_gKv3nDh(4*&oF literal 0 HcmV?d00001 diff --git a/src/rel/apple/SPIPORT#FE1000 b/src/rel/apple/SPIPORT#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..bf89759f7c5c09e762c7ff7094b5566c95ca1325 GIT binary patch literal 1325 zcmchWO=uHQ6oqfz49O(;GjXO?-6&Fm4h4fkap9u=qEJe~P|`GoDlvr6ZlsHlg%Y76 zmT0?B5JiKC7^sU15k!zln@B5F#w3kKT$U1Cs0fOvG@dupYJy$3C>{7_&b{x=yXW3a zwuF=FTm$!w$rX_ysQ6z zp#L#x+F%RLvSB&ByM!!%Z^71Wm|l3WeNd;4qQ4lLZP)^%z}rw*%A^Ou>h*L@nU zRo8H{V8=Kd7{^t38Tn@%jfURcl~Oceca2(~uQ`wuy)ZuhIp_yYD&wTWQdfRv3sclB zcLx|`>w{lm{!j1`Ar@^~hz&4neL&D^I~}w)Bm~3|^Qnqgy+2ZJ?I z>M~b+C;3{GpkHL$@Z>vj4>R*lVHQbO-6<3?gRU6R|b*-ZiT^S;k*EQ{G?T5xi zBs;6M5Cv?JUfmn%)4jg55^UYRh!z+e>=*hE*gBfY(=5l`vgd?5-XweWZHg;$mr9=7 zW^&w2KIKWDp#+&zA*O;B5CMZ=1f+qXP-3G%V><*_Vvj(HgV3D<8}ozH0!u`ZI}2jq z9JmNZ!F6y8+yhU*Gf=_1^El@d^cV0Id|ksN_@-GopX!z(T)ipGl=72v$D~0kpUv@L QWI5=O(v~ddeG)qU4Lt?{ApigX literal 0 HcmV?d00001 diff --git a/src/rel/apple/TILETEST#FE1000 b/src/rel/apple/TILETEST#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..a8ab15b9f8d80c5b5422c37379b716d99b178b16 GIT binary patch literal 174 zcmWG%U`iEWP!M1Q;=^Z;T)r86;`pU2C(pP7sblBQg)lHE0I>lVlb)zYYEDkRf=6ah zYOz8{W=^VtOKNUDP!c51pa!PFOfV5MQHeo$qCJD=L?;HeiS7&<6TKLeCi()|K@7?a z$B$ld7GPrl+H>^SrSoU69K8`DpakZgJ%7YiK$!t*yMP9Wb>Zrj%U6N~G#MBG&Tc=L literal 0 HcmV?d00001 diff --git a/src/rel/apple/TYPE#FE1000 b/src/rel/apple/TYPE#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..e2496d1fb6b61c37ef63e750491574efb8afc170 GIT binary patch literal 911 zcmcJOQAkr!7{|YJcDY_3tV3cH<#sC@Ww68uazT)7Vl>vwt!8fF%6ru@wxM%`55axt zAqe6;)>98X_u#8hn9UfOj%`LlFHsN(g5XO8V*k6j?4j2#=YP)c`|fwX@8iJN$GJh2 z6`bb8!pC=&wZZxF`@zNHQlWUA{>vBD80EQ1Bm8*}r4^HAm60%!w=1n4@C7t7Rc}*X zHC3nYr3!=k0!`Fy^4prpwP&+xp1=68lUKTI53XU&BtkyPkr za6cQ53Fq;zRR7h8Uar|$@gOBScYJ|kh;6X{6fMNR<{daj{!kMd=>e>mzWQJVztx#NCvk=Q8@Fk;)`Sb#nsdMB2=F zbyPt#_Ru-Bvc7@W!5fI(1aCpVplyg4$rDVmPBF61Lfz1L_%1M~brF0C z@Ef&j_uxPh&x$rqGoKzn-;UfACwQ=Ym literal 0 HcmV?d00001 diff --git a/src/rel/apple/UTHERNET#FE1000 b/src/rel/apple/UTHERNET#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..12f57cbe53aa2c66aad8bb7e4bb8d7d195b56e5d GIT binary patch literal 1145 zcmZY9ZAep57zgm@9&dA+)tN~7HaAn3j9Xa}tyn1rQ6!;x3o(O{Ipz|LT6I5Ew4y#4 zB&c9T1%VKhkus<+bwdYJEN;F|AZpf12-x5{DLj^ za=0ZOzTE6X*Jo=l=fc}PVKZOtPxFVf19XY zWSBFGR6OPh+{SY^#AF5}D43b>Lb zc`I=T$hB-Sc4#@~qO9ebvrWr0XS4+>LCI6HCApBw-%7gIKwP zq7R9pk6{>|!E<;8Z{Z!xz-O3)?;uGOwLuzWKo;acJ`}<#*bG}>JM4s7P@x|7LjaoK zFtmXN=iwrB!gc6_0eA#M@C+v51-yp$@DV=27x)45K#Za(kP7Lr3^HK_3~LXVGaAS5 i!kC)e#+jJLcJmZ5*KwI9;*;k8%JBHebbJqY68#1|1W%d( literal 0 HcmV?d00001 diff --git a/src/rel/apple/UTHERNET2#FE1000 b/src/rel/apple/UTHERNET2#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..4bce2873b4d4fbca16bf07a08a318c9ca0284609 GIT binary patch literal 3767 zcmb`Ke{56N6~|9*o}XVHPIB!y%@4BRHIbKD*5pkavXHe!P%2QZC`wJ2dTh0<@SrRU zsTsAC(ME0Ydv=#4r z-gAQ0jj7Ux`1stP=iYPfIp@IzU2GyM$_CP!PQQL;?wvc&y>T{1_8g7}m3%|hYNZ{`d0m!aaqZVij778hY_PUA&YWs7sou678PRiIZ9%3EXSiT%xd%0R!nlqHxq>QV*jEbOuG!x0z8uYDpMj@=&`WCp4>>4ftYf+!XirR^g^y4)VpT{2`fEHPNpbY9iq7Jg$?WhP9+Y zolysMFXNs!t&aV^IHZO8G~6mcu`KFq1@E0x0i1G>CJ*EgRmnz$fmhc)^Au?QcvC7UfVL<_}}d97OVpkm9ZXopsxKd zMcWs)hv1892b-nim0X6Nu+7r53Dq)7=hspeUrWbp>0>a<73y;>z1HH^(rej^@LHus z{94tB$U)W6vv6yY0|}l6qL?+1a`)FAMhI@Vd%aRU)Zr3gfa^UMlD z%j{A>mY$i-wszbwo4Z+!LqLyL_exHugmx>(DRLNdY1Pgn1go7rij_U8ojooqd-MsV zEPM1_=^8_u&|yFgXNYD9q>_THDrJv7r|=xqAepR7s&=Xv6qo-k5(Of$JPHw%6t^Og z3kBltgp&hSbVgl-8xWjEam81vTK{3*vp8QzfqFzkzlR> zZ?I64X~hs>fyF}}ZuEKBf0XEHLo=d8b2vHdM|FYoM7V>?jK+>aO;V9ks7d;S3XiQT z)f>xW3Owe5#|GW-m0f(`u|cce*mEk+K_8r}@)L_}ppy@FeHn!=wo@9eFkWeuhAVoK zY0g5D}t(n8U) z>Y%k*Yk%xhTDMqD|3~X^MZOdpgsej;M&lFa;d&yvvUI&xHqPF{EiK8vOB;Amc@@J} zEqX7HCVDmyUe}r}JCV!YjqTlEf_6-wlfiETpcwl zFdu7kKiDWE?|0qLJvHWa+kn0p1PO(Z zFS}Wysm}=VulHmW@}F{NRPtZ-WHj>o z>M}a{KdQ^P$UpDR)R2FBeMXXhe`Cf&{tp^6UhbwKK@J=ON5FI77?=hZ zz`Fp&$&{cKbbv2{2)GSw0DHlCa0&boEC|Z|RWzCZge;0?v$2xQc5n~)6?hF?1n+?b z@DH$3A@eCP4qgVo2D9KDa2eD($ZP?f03UjDBiIbKf$usfx5Lq7?ty&R(QF>U*fsEX z@EH|%1`)7UrCg6%W2Vp^0sFv{;8`$^xzlQ``99k7pxH@go0D=OXN}p7_P0PkcmRA4 z<42vf=DTP|G%{0Q1ndJ(gXh5s@Cuj$(_ju<0`Gxq;6rd7R9C^bU^(ajArJxUz#X6q z+y&y`n;-!;gKvWYa34s64A=oouopZ69t8)$6W}m-8XN^b0WW~#;Adb0yaIj!^56`3 z70iG)z#MoBTmpXpSHMCQ<=nbr-l9{kRTsI>>Xl}@PUh!85PSu!0=I)Zz}LY>kOZ5- zcfftvJEXUm4?t!hAA%f#{66F!$cG`bkUxTa4006m$B>60k3c>PIR^PWGS7bJ9ql^Zf!);zX0N9qIUoQ literal 0 HcmV?d00001 diff --git a/src/rel/apple/ZIPCHIP#FE1000 b/src/rel/apple/ZIPCHIP#FE1000 new file mode 100644 index 0000000000000000000000000000000000000000..36c5896230f0664ab173688cce5843d99c2e76f4 GIT binary patch literal 539 zcmYjOOG^S#6h1Q=BvG7=iI`^4N=mY*MFmAtw2&xgATTS%gux^OCz7Gf>}xT9pj9nu z)v8TF6TJv}m=Ai;4+w&wUtphwLzna2^F1#2aJj>Rm?jFbjYjz5{<8ckotJJT`o9ih zJ2BI$1j$_-59}9WW?UvhX->{KIT4WwZ94%cI!H4iIGrsid3+0;5213>zM z4oOX_8~I^>H%4S!j2#6#n^WQb*>1}YXLG65hV8NJ`X%Xx?X~Q1GNo8HX8ztyaS?A6 z2buJKB4d=i#u)kZ2_k(Gh`^g8r#=t91inUgT?O9)-v-|W-vbVTBj6Y~1 X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/coniotst.pla: 0002: +; samplesrc/coniotst.pla: 0003: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X028 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/coniotst.pla: 0003: +; samplesrc/coniotst.pla: 0004: const SCR_PTR = $0400 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; SCR_PTR = 1024 +; samplesrc/coniotst.pla: 0005: const SCR_SIZE = 1024 + ; SCR_SIZE = 1024 +; samplesrc/coniotst.pla: 0006: +; samplesrc/coniotst.pla: 0007: byte[SCR_SIZE] ScrSave +_D029 !FILL 1024 ; ScrSave +; samplesrc/coniotst.pla: 0008: byte I +_D030 !FILL 1 ; I +; samplesrc/coniotst.pla: 0009: word Name +_D031 !FILL 2 ; Name +; samplesrc/coniotst.pla: 0010: +; samplesrc/coniotst.pla: 0011: // save text screen +; samplesrc/coniotst.pla: 0012: memcpy(@ScrSave, SCR_PTR, SCR_SIZE) +_SUBSEG ; BYTECODE STARTS +_INIT +; samplesrc/coniotst.pla: 0013: conio:home() +; samplesrc/coniotst.pla: 0014: for I=0 to 23 + !BYTE $26 ; LA _D029+0 +_F000 !WORD _D029+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _X018 +_F001 !WORD 0 + !BYTE $6A ; LAW _X028+6 +_F002 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B002 + !BYTE $7C ; DAB _D030+0 +_F003 !WORD _D030+0 +; samplesrc/coniotst.pla: 0015: conio:gotoxy(I,I) +; samplesrc/coniotst.pla: 0016: putc('A'+I) +; samplesrc/coniotst.pla: 0017: putc(' ') +; samplesrc/coniotst.pla: 0018: puti(I) +; samplesrc/coniotst.pla: 0019: next + !BYTE $68 ; LAB _D030+0 +_F004 !WORD _D030+0 + !BYTE $34 ; DUP + !BYTE $6A ; LAW _X028+8 +_F005 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$41 ; CB 65 + !BYTE $B4 ; ADDAB _D030+0 +_F006 !WORD _D030+0 + !BYTE $54 ; CALL _X002 +_F007 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F008 !WORD 0 + !BYTE $68 ; LAB _D030+0 +_F009 !WORD _D030+0 + !BYTE $54 ; CALL _X005 +_F010 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $78 ; SAB _D030+0 +_F011 !WORD _D030+0 + !BYTE $30 ; DROP +; samplesrc/coniotst.pla: 0020: conio:gotoxy(10, 5) +; samplesrc/coniotst.pla: 0021: puts("What is your name") + !BYTE $14 ; CN 10 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+8 +_F012 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $11 + !BYTE $57,$68,$61,$74,$20,$69,$73,$20 + !BYTE $79,$6F,$75,$72,$20,$6E,$61,$6D + !BYTE $65 + !BYTE $54 ; CALL _X004 +_F013 !WORD 0 +; samplesrc/coniotst.pla: 0022: Name = gets('?'|$80) // $BF +; samplesrc/coniotst.pla: 0023: conio:gotoxy(12, 7) +; samplesrc/coniotst.pla: 0024: puts("Nice to meet you, ") + !BYTE $2A,$BF ; CB 191 + !BYTE $54 ; CALL _X007 +_F014 !WORD 0 + !BYTE $7A ; SAW _D031+0 +_F015 !WORD _D031+0 + !BYTE $18 ; CN 12 + !BYTE $0E ; CN 7 + !BYTE $6A ; LAW _X028+8 +_F016 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $12 + !BYTE $4E,$69,$63,$65,$20,$74,$6F,$20 + !BYTE $6D,$65,$65,$74,$20,$79,$6F,$75 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +; samplesrc/coniotst.pla: 0025: puts(Name) +; samplesrc/coniotst.pla: 0026: conio:gotoxy(16, 10) +; samplesrc/coniotst.pla: 0027: puts("Press any key ...") + !BYTE $6A ; LAW _D031+0 +_F018 !WORD _D031+0 + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 + !BYTE $2A,$10 ; CB 16 + !BYTE $14 ; CN 10 + !BYTE $6A ; LAW _X028+8 +_F020 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $11 + !BYTE $50,$72,$65,$73,$73,$20,$61,$6E + !BYTE $79,$20,$6B,$65,$79,$20,$2E,$2E + !BYTE $2E + !BYTE $54 ; CALL _X004 +_F021 !WORD 0 +; samplesrc/coniotst.pla: 0028: getc() +; samplesrc/coniotst.pla: 0029: conio:gotoxy(0, 5) +; samplesrc/coniotst.pla: 0030: memcpy(SCR_PTR, @ScrSave, SCR_SIZE) +; samplesrc/coniotst.pla: 0031: done + !BYTE $54 ; CALL _X006 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+8 +_F023 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $26 ; LA _D029+0 +_F024 !WORD _D029+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $54 ; CALL _X018 +_F025 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/dgrtest.a b/src/samplesrc/dgrtest.a new file mode 100644 index 0000000..bc5a722 --- /dev/null +++ b/src/samplesrc/dgrtest.a @@ -0,0 +1,639 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/dgrtest.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/dgrtest.pla: 0001: +; samplesrc/dgrtest.pla: 0002: include "inc/dgrlib.plh" +; inc/dgrlib.plh: 0001: import dgrlib + ; DCI STRING: DGRLIB + !BYTE $C4,$C7,$D2,$CC,$C9,$42 + ; DGRLIB -> X028 +; inc/dgrlib.plh: 0002: predef dgrPlot(x, y)#0 + ; DGRPLOT -> X029 +; inc/dgrlib.plh: 0003: predef dgrHLin(x1, x2, y)#0 + ; DGRHLIN -> X030 +; inc/dgrlib.plh: 0004: predef dgrVLin(y1, y2, x)#0 + ; DGRVLIN -> X031 +; inc/dgrlib.plh: 0005: predef dgrBLT(x, y, width, height, src)#0 + ; DGRBLT -> X032 +; inc/dgrlib.plh: 0006: predef dgrTile(x, y, src)#0 + ; DGRTILE -> X033 +; inc/dgrlib.plh: 0007: predef dgrTileStr(x, y, tilestr, strlen, tilebuff)#0 + ; DGRTILESTR -> X034 +; inc/dgrlib.plh: 0008: predef dgrFill(x, y, tile)#0 + ; DGRFILL -> X035 +; inc/dgrlib.plh: 0009: predef dgrVLB#0 + ; DGRVLB -> X036 +; inc/dgrlib.plh: 0010: predef dgrClear(clr)#0 + ; DGRCLEAR -> X037 +; inc/dgrlib.plh: 0011: predef dgrMode(mode)#1 + ; DGRMODE -> X038 +; inc/dgrlib.plh: 0012: predef dgrShow(page)#1 + ; DGRSHOW -> X039 +; inc/dgrlib.plh: 0013: predef dgrSwap#0 + ; DGRSWAP -> X040 +; inc/dgrlib.plh: 0014: predef dgrDrawBuf(page)#0 + ; DGRDRAWBUF -> X041 +; inc/dgrlib.plh: 0015: predef dgrColor(clr)#0 + ; DGRCOLOR -> X042 +; inc/dgrlib.plh: 0016: end +; samplesrc/dgrtest.pla: 0002: +; samplesrc/dgrtest.pla: 0003: include "inc/lines.plh" +; inc/lines.plh: 0001: import lines + ; DCI STRING: LINES + !BYTE $CC,$C9,$CE,$C5,$53 + ; LINES -> X043 +; inc/lines.plh: 0002: predef setlinespans(h, v)#0 + ; SETLINESPANS -> X044 +; inc/lines.plh: 0003: predef linespans(x1, y1, x2, y2)#0 + ; LINESPANS -> X045 +; inc/lines.plh: 0004: predef setlineplot(p)#0 + ; SETLINEPLOT -> X046 +; inc/lines.plh: 0005: predef line(x1, y1, x2, y2)#0 + ; LINE -> X047 +; inc/lines.plh: 0006: end +; samplesrc/dgrtest.pla: 0003: +; samplesrc/dgrtest.pla: 0004: sysflags restxt1|restxt2|resxtxt1|resxtxt2 // Reserve all text pages + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $000F ; SYSTEM FLAGS +; samplesrc/dgrtest.pla: 0005: +; samplesrc/dgrtest.pla: 0006: byte[] sprite1 = $80,$80,$00,$00,$00,$00,$80,$80 +_D048 ; sprite1 = $80,$80,$00,$00,$00,$00,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $80 + !BYTE $80 +; samplesrc/dgrtest.pla: 0007: byte[] = $80,$00,$0A,$0A,$0A,$0A,$00,$80 + !BYTE $80 + !BYTE $00 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $00 + !BYTE $80 +; samplesrc/dgrtest.pla: 0008: byte[] = $00,$0A,$0F,$0F,$0F,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/dgrtest.pla: 0009: byte[] = $00,$0A,$0F,$80,$80,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $80 + !BYTE $80 + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/dgrtest.pla: 0010: byte[] = $00,$0A,$0F,$80,$80,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $80 + !BYTE $80 + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/dgrtest.pla: 0011: byte[] = $00,$0A,$0F,$0F,$0F,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/dgrtest.pla: 0012: byte[] = $80,$00,$0A,$0A,$0A,$0A,$00,$80 + !BYTE $80 + !BYTE $00 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $00 + !BYTE $80 +; samplesrc/dgrtest.pla: 0013: byte[] = $80,$80,$00,$00,$00,$00,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $80 + !BYTE $80 +; samplesrc/dgrtest.pla: 0014: +; samplesrc/dgrtest.pla: 0015: byte[] tile1 = $88,$11,$88,$11,$88,$11,$AA,$00 +_D049 ; tile1 = $88,$11,$88,$11,$88,$11,$AA,$00 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $AA + !BYTE $00 +; samplesrc/dgrtest.pla: 0016: byte[] = $88,$11,$88,$11,$88,$11,$AA,$00 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $AA + !BYTE $00 +; samplesrc/dgrtest.pla: 0017: byte[] = $88,$11,$88,$11,$88,$11,$AA,$00 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $88 + !BYTE $11 + !BYTE $AA + !BYTE $00 +; samplesrc/dgrtest.pla: 0018: byte[] = $0A,$05,$0A,$05,$0A,$05,$0A,$00 + !BYTE $0A + !BYTE $05 + !BYTE $0A + !BYTE $05 + !BYTE $0A + !BYTE $05 + !BYTE $0A + !BYTE $00 +; samplesrc/dgrtest.pla: 0019: +; samplesrc/dgrtest.pla: 0020: // +; samplesrc/dgrtest.pla: 0021: // Test routine +; samplesrc/dgrtest.pla: 0022: // +; samplesrc/dgrtest.pla: 0023: def dgrTest#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; dgrTest() +; samplesrc/dgrtest.pla: 0024: byte b, l, k + ; b -> [0] + ; l -> [1] + ; k -> [2] +; samplesrc/dgrtest.pla: 0025: word i, j, ii, ij + ; i -> [3] + ; j -> [5] + ; ii -> [7] + ; ij -> [9] +; samplesrc/dgrtest.pla: 0026: +; samplesrc/dgrtest.pla: 0027: b = dgrMode(TRUE) + !BYTE $58,$0B,$00 ; ENTER 11,0 +; samplesrc/dgrtest.pla: 0028: dgrDrawBuf(0) +; samplesrc/dgrtest.pla: 0029: for k = 15 downto 0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X038 +_F000 !WORD 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X041 +_F001 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $1E ; CN 15 +_B002 + !BYTE $6C,$02 ; DLB [2] +; samplesrc/dgrtest.pla: 0030: dgrClear(k) +; samplesrc/dgrtest.pla: 0031: next + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X037 +_F002 !WORD 0 +_B003 + !BYTE $A8 ; DECBRGE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; samplesrc/dgrtest.pla: 0032: setlinespans(@dgrHLin, @dgrVLin) +; samplesrc/dgrtest.pla: 0033: for l = 0 to 79 + !BYTE $26 ; LA _X030+0 +_F003 !WORD 0+0 + !BYTE $26 ; LA _X031+0 +_F004 !WORD 0+0 + !BYTE $54 ; CALL _X044 +_F005 !WORD 0 + !BYTE $2A,$4F ; CB 79 + !BYTE $00 ; CN 0 +_B005 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/dgrtest.pla: 0034: dgrColor(l) +; samplesrc/dgrtest.pla: 0035: linespans(0, 0, l, 47) +; samplesrc/dgrtest.pla: 0036: next + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X042 +_F006 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $64,$01 ; LLB [1] + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X045 +_F007 !WORD 0 +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/dgrtest.pla: 0037: for l = 47 downto 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$2F ; CB 47 +_B008 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/dgrtest.pla: 0038: dgrColor(l) +; samplesrc/dgrtest.pla: 0039: linespans(0, 0, 79, l) +; samplesrc/dgrtest.pla: 0040: next + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X042 +_F008 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$4F ; CB 79 + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X045 +_F009 !WORD 0 +_B009 + !BYTE $A8 ; DECBRGE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/dgrtest.pla: 0041: ii = 2 +; samplesrc/dgrtest.pla: 0042: ij = -1 +; samplesrc/dgrtest.pla: 0043: i = 40 +; samplesrc/dgrtest.pla: 0044: j = 10 +; samplesrc/dgrtest.pla: 0045: ^$C010 +; samplesrc/dgrtest.pla: 0046: dgrDrawBuf(1) +; samplesrc/dgrtest.pla: 0047: while ^$C000 < 128 + !BYTE $04 ; CN 2 + !BYTE $76,$07 ; SLW [7] + !BYTE $20 ; MINUS ONE + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$28 ; CB 40 + !BYTE $76,$03 ; SLW [3] + !BYTE $14 ; CN 10 + !BYTE $76,$05 ; SLW [5] + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X041 +_F010 !WORD 0 + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +_B010 +; samplesrc/dgrtest.pla: 0048: dgrFill(k, k, @tile1) +; samplesrc/dgrtest.pla: 0049: dgrBLT(i, j, 8, 8, @sprite1) +; samplesrc/dgrtest.pla: 0050: dgrSwap +; samplesrc/dgrtest.pla: 0051: k++ + !BYTE $64,$02 ; LLB [2] + !BYTE $34 ; DUP + !BYTE $26 ; LA _D049+0 +_F011 !WORD _D049+0 + !BYTE $54 ; CALL _X035 +_F012 !WORD 0 + !BYTE $66,$03 ; LLW [3] + !BYTE $66,$05 ; LLW [5] + !BYTE $10 ; CN 8 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D048+0 +_F013 !WORD _D048+0 + !BYTE $54 ; CALL _X032 +_F014 !WORD 0 + !BYTE $54 ; CALL _X040 +_F015 !WORD 0 + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR +; samplesrc/dgrtest.pla: 0052: i = i + ii +; samplesrc/dgrtest.pla: 0053: if i < -3 or i > 75 +; samplesrc/dgrtest.pla: 0054: ii = -ii +; samplesrc/dgrtest.pla: 0055: fin + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $6E,$03 ; DLW [3] + !BYTE $5E,$FD ; CFFB -3 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B013 + !WORD _B013-* + !BYTE $66,$03 ; LLW [3] + !BYTE $2A,$4B ; CB 75 + !BYTE $44 ; ISGT +_B013 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$07 ; LLW [7] + !BYTE $90 ; NEG + !BYTE $76,$07 ; SLW [7] +_B014 +_B015 +; samplesrc/dgrtest.pla: 0056: j = j + ij +; samplesrc/dgrtest.pla: 0057: if j < -3 or j > 43 +; samplesrc/dgrtest.pla: 0058: ij = -ij +; samplesrc/dgrtest.pla: 0059: fin + !BYTE $66,$05 ; LLW [5] + !BYTE $B2,$09 ; ADDLW [9] + !BYTE $6E,$05 ; DLW [5] + !BYTE $5E,$FD ; CFFB -3 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B016 + !WORD _B016-* + !BYTE $66,$05 ; LLW [5] + !BYTE $2A,$2B ; CB 43 + !BYTE $44 ; ISGT +_B016 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $66,$09 ; LLW [9] + !BYTE $90 ; NEG + !BYTE $76,$09 ; SLW [9] +_B017 +_B018 +; samplesrc/dgrtest.pla: 0060: loop +_B012 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* +_B011 +; samplesrc/dgrtest.pla: 0061: ^$C010 +; samplesrc/dgrtest.pla: 0062: dgrMode(FALSE) +; samplesrc/dgrtest.pla: 0063: end + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X038 +_F016 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/dgrtest.pla: 0064: +; samplesrc/dgrtest.pla: 0065: dgrTest +_INIT +; samplesrc/dgrtest.pla: 0066: done + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: DGRHLIN + !BYTE $C4,$C7,$D2,$C8,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: DGRVLIN + !BYTE $C4,$C7,$D2,$D6,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: DGRBLT + !BYTE $C4,$C7,$D2,$C2,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: DGRFILL + !BYTE $C4,$C7,$D2,$C6,$C9,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: DGRCLEAR + !BYTE $C4,$C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: DGRMODE + !BYTE $C4,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: DGRSWAP + !BYTE $C4,$C7,$D2,$D3,$D7,$C1,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + ; DCI STRING: DGRDRAWBUF + !BYTE $C4,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 41 ; ESD INDEX + ; DCI STRING: DGRCOLOR + !BYTE $C4,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 42 ; ESD INDEX + ; DCI STRING: SETLINESPANS + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 44 ; ESD INDEX + ; DCI STRING: LINESPANS + !BYTE $CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fatcat.a b/src/samplesrc/fatcat.a new file mode 100644 index 0000000..a787856 --- /dev/null +++ b/src/samplesrc/fatcat.a @@ -0,0 +1,690 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fatcat.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fatcat.pla: 0001: +; samplesrc/fatcat.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; samplesrc/fatcat.pla: 0002: +; samplesrc/fatcat.pla: 0003: include "inc/sdfat.plh" +; inc/sdfat.plh: 0001: // +; inc/sdfat.plh: 0002: // FAT I/O object +; inc/sdfat.plh: 0003: // +; inc/sdfat.plh: 0004: import sdFAT + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + ; SDFAT -> X031 +; inc/sdfat.plh: 0005: // +; inc/sdfat.plh: 0006: // Open flags +; inc/sdfat.plh: 0007: // +; inc/sdfat.plh: 0008: const O_READ = $01 + ; O_READ = 1 +; inc/sdfat.plh: 0009: const O_WRITE = $02 + ; O_WRITE = 2 +; inc/sdfat.plh: 0010: const O_APPEND = $04 + ; O_APPEND = 4 +; inc/sdfat.plh: 0011: const O_SYNC = $08 + ; O_SYNC = 8 +; inc/sdfat.plh: 0012: const O_TRUNC = $10 + ; O_TRUNC = 16 +; inc/sdfat.plh: 0013: const O_AT_END = $20 + ; O_AT_END = 32 +; inc/sdfat.plh: 0014: const O_CREAT = $40 + ; O_CREAT = 64 +; inc/sdfat.plh: 0015: const O_EXCL = $80 + ; O_EXCL = 128 +; inc/sdfat.plh: 0016: const MAX_FAT_BUF_SIZE = 512 + ; MAX_FAT_BUF_SIZE = 512 +; inc/sdfat.plh: 0017: // +; inc/sdfat.plh: 0018: // Interface +; inc/sdfat.plh: 0019: // +; inc/sdfat.plh: 0020: struc t_sdFAT +; inc/sdfat.plh: 0021: word getDir + ; getDir = 0 +; inc/sdfat.plh: 0022: word setDir + ; setDir = 2 +; inc/sdfat.plh: 0023: word newDir + ; newDir = 4 +; inc/sdfat.plh: 0024: word removeDir + ; removeDir = 6 +; inc/sdfat.plh: 0025: word renameFile + ; renameFile = 8 +; inc/sdfat.plh: 0026: word removeFile + ; removeFile = 10 +; inc/sdfat.plh: 0027: word existsFile + ; existsFile = 12 +; inc/sdfat.plh: 0028: word openFirstFile + ; openFirstFile = 14 +; inc/sdfat.plh: 0029: word openNextFile + ; openNextFile = 16 +; inc/sdfat.plh: 0030: word openFile + ; openFile = 18 +; inc/sdfat.plh: 0031: word closeFile + ; closeFile = 20 +; inc/sdfat.plh: 0032: word readFile + ; readFile = 22 +; inc/sdfat.plh: 0033: word writeFile + ; writeFile = 24 +; inc/sdfat.plh: 0034: word syncFile + ; syncFile = 26 +; inc/sdfat.plh: 0035: word rewindFile + ; rewindFile = 28 +; inc/sdfat.plh: 0036: word seekFile + ; seekFile = 30 +; inc/sdfat.plh: 0037: word seekOffsetFile + ; seekOffsetFile = 32 +; inc/sdfat.plh: 0038: word posFile + ; posFile = 34 +; inc/sdfat.plh: 0039: word sizeOfFile + ; sizeOfFile = 36 +; inc/sdfat.plh: 0040: word truncateFile + ; truncateFile = 38 +; inc/sdfat.plh: 0041: word isDir + ; isDir = 40 +; inc/sdfat.plh: 0042: word isFile + ; isFile = 42 +; inc/sdfat.plh: 0043: end + ; t_sdFAT = 44 +; inc/sdfat.plh: 0044: end +; samplesrc/fatcat.pla: 0003: +; samplesrc/fatcat.pla: 0004: +; samplesrc/fatcat.pla: 0005: word arg + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D032 !FILL 2 ; arg +; samplesrc/fatcat.pla: 0006: byte[64] cwd +_D033 !FILL 64 ; cwd +; samplesrc/fatcat.pla: 0007: byte[64] pathname +_D034 !FILL 64 ; pathname +; samplesrc/fatcat.pla: 0008: +; samplesrc/fatcat.pla: 0009: def fatCat(path)#0 +_SUBSEG ; BYTECODE STARTS + ; path -> [0] +_C000 ; fatCat() +; samplesrc/fatcat.pla: 0010: byte filename[32] + ; filename -> [2] +; samplesrc/fatcat.pla: 0011: +; samplesrc/fatcat.pla: 0012: sdFAT:setDir(path) + !BYTE $58,$22,$01 ; ENTER 34,1 +; samplesrc/fatcat.pla: 0013: puts("Directory of "); puts(path); puts(":\n") + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X031+2 +_F000 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $0D + !BYTE $44,$69,$72,$65,$63,$74,$6F,$72 + !BYTE $79,$20,$6F,$66,$20 + !BYTE $54 ; CALL _X004 +_F001 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F002 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $3A,$0D + !BYTE $54 ; CALL _X004 +_F003 !WORD 0 +; samplesrc/fatcat.pla: 0014: sdFAT:openFirstFile(@filename) +; samplesrc/fatcat.pla: 0015: while filename + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X031+14 +_F004 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; samplesrc/fatcat.pla: 0016: puts(" "); puts(@filename) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$20,$20,$20 + !BYTE $54 ; CALL _X004 +_F005 !WORD 0 +; samplesrc/fatcat.pla: 0017: if sdFAT:isDir(); putc('/'); fin + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X004 +_F006 !WORD 0 + !BYTE $6A ; LAW _X031+40 +_F007 !WORD 0+40 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F008 !WORD 0 +_B004 +_B005 +; samplesrc/fatcat.pla: 0018: putln +; samplesrc/fatcat.pla: 0019: sdFAT:closeFile() +; samplesrc/fatcat.pla: 0020: sdFAT:openNextFile(@filename) +; samplesrc/fatcat.pla: 0021: loop + !BYTE $54 ; CALL _X003 +_F009 !WORD 0 + !BYTE $6A ; LAW _X031+20 +_F010 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X031+16 +_F011 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B003 + !BYTE $64,$02 ; LLB [2] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; samplesrc/fatcat.pla: 0022: end + !BYTE $5A,$22 ; LEAVE 34 +; samplesrc/fatcat.pla: 0023: +; samplesrc/fatcat.pla: 0024: sdFAT:getDir(@cwd) +_INIT +; samplesrc/fatcat.pla: 0025: if cwd[cwd] <> '/' // append '/' to cwd if needed +; samplesrc/fatcat.pla: 0026: cwd++ + !BYTE $26 ; LA _D033+0 +_F012 !WORD _D033+0 + !BYTE $6A ; LAW _X031+0 +_F013 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D033+0 +_F014 !WORD _D033+0 + !BYTE $B4 ; ADDAB _D033+0 +_F015 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B006 + !WORD _B006-* + !BYTE $68 ; LAB _D033+0 +_F016 !WORD _D033+0 + !BYTE $8C ; INCR +; samplesrc/fatcat.pla: 0027: cwd[cwd] = '/' +; samplesrc/fatcat.pla: 0028: fin + !BYTE $78 ; SAB _D033+0 +_F017 !WORD _D033+0 + !BYTE $2A,$2F ; CB 47 + !BYTE $26 ; LA _D033+0 +_F018 !WORD _D033+0 + !BYTE $B4 ; ADDAB _D033+0 +_F019 !WORD _D033+0 + !BYTE $70 ; SB +_B006 +_B007 +; samplesrc/fatcat.pla: 0029: arg = argNext(argFirst) +; samplesrc/fatcat.pla: 0030: if ^arg +; samplesrc/fatcat.pla: 0031: while ^arg + !BYTE $54 ; CALL _X029 +_F020 !WORD 0 + !BYTE $54 ; CALL _X030 +_F021 !WORD 0 + !BYTE $7A ; SAW _D032+0 +_F022 !WORD _D032+0 + !BYTE $6A ; LAW _D032+0 +_F023 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +_B010 +; samplesrc/fatcat.pla: 0032: if ^(arg + 1) <> '/' // relative path argument - append to cwd +; samplesrc/fatcat.pla: 0033: memcpy(@pathname, @cwd, cwd + 1) +; samplesrc/fatcat.pla: 0034: else + !BYTE $6A ; LAW _D032+0 +_F024 !WORD _D032+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B013 + !WORD _B013-* + !BYTE $26 ; LA _D034+0 +_F025 !WORD _D034+0 + !BYTE $26 ; LA _D033+0 +_F026 !WORD _D033+0 + !BYTE $68 ; LAB _D033+0 +_F027 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F028 !WORD 0 + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B013 +; samplesrc/fatcat.pla: 0035: pathname = 0 // absolute path +; samplesrc/fatcat.pla: 0036: fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D034+0 +_F029 !WORD _D034+0 +_B014 +; samplesrc/fatcat.pla: 0037: memcpy(@pathname + pathname + 1, arg + 1, ^arg) // append path argument +; samplesrc/fatcat.pla: 0038: pathname = pathname + ^arg +; samplesrc/fatcat.pla: 0039: if pathname[pathname] <> '/' +; samplesrc/fatcat.pla: 0040: pathname++ + !BYTE $26 ; LA _D034+0 +_F030 !WORD _D034+0 + !BYTE $B4 ; ADDAB _D034+0 +_F031 !WORD _D034+0 + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D032+0 +_F032 !WORD _D032+0 + !BYTE $8C ; INCR + !BYTE $6A ; LAW _D032+0 +_F033 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F034 !WORD 0 + !BYTE $68 ; LAB _D034+0 +_F035 !WORD _D034+0 + !BYTE $6A ; LAW _D032+0 +_F036 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $78 ; SAB _D034+0 +_F037 !WORD _D034+0 + !BYTE $26 ; LA _D034+0 +_F038 !WORD _D034+0 + !BYTE $B4 ; ADDAB _D034+0 +_F039 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B015 + !WORD _B015-* + !BYTE $68 ; LAB _D034+0 +_F040 !WORD _D034+0 + !BYTE $8C ; INCR +; samplesrc/fatcat.pla: 0041: pathname[pathname] = '/' +; samplesrc/fatcat.pla: 0042: fin + !BYTE $78 ; SAB _D034+0 +_F041 !WORD _D034+0 + !BYTE $2A,$2F ; CB 47 + !BYTE $26 ; LA _D034+0 +_F042 !WORD _D034+0 + !BYTE $B4 ; ADDAB _D034+0 +_F043 !WORD _D034+0 + !BYTE $70 ; SB +_B015 +_B016 +; samplesrc/fatcat.pla: 0043: fatCat(@pathname) +; samplesrc/fatcat.pla: 0044: arg = argNext(arg) +; samplesrc/fatcat.pla: 0045: loop + !BYTE $26 ; LA _D034+0 +_F044 !WORD _D034+0 + !BYTE $54 ; CALL _C000 +_F045 !WORD _C000 + !BYTE $6A ; LAW _D032+0 +_F046 !WORD _D032+0 + !BYTE $54 ; CALL _X030 +_F047 !WORD 0 + !BYTE $7A ; SAW _D032+0 +_F048 !WORD _D032+0 +_B012 + !BYTE $6A ; LAW _D032+0 +_F049 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* +_B011 +; samplesrc/fatcat.pla: 0046: else + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +_B008 +; samplesrc/fatcat.pla: 0047: fatCat(@cwd) +; samplesrc/fatcat.pla: 0048: fin + !BYTE $26 ; LA _D033+0 +_F050 !WORD _D033+0 + !BYTE $54 ; CALL _C000 +_F051 !WORD _C000 +_B009 +; samplesrc/fatcat.pla: 0049: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fatget.a b/src/samplesrc/fatget.a new file mode 100644 index 0000000..2aa4c0f --- /dev/null +++ b/src/samplesrc/fatget.a @@ -0,0 +1,1471 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fatget.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fatget.pla: 0001: +; samplesrc/fatget.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; samplesrc/fatget.pla: 0002: +; samplesrc/fatget.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X030 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X031 + ; ARGNEXT -> X032 +; inc/args.plh: 0003: end +; samplesrc/fatget.pla: 0003: +; samplesrc/fatget.pla: 0004: include "inc/sdfat.plh" +; inc/sdfat.plh: 0001: // +; inc/sdfat.plh: 0002: // FAT I/O object +; inc/sdfat.plh: 0003: // +; inc/sdfat.plh: 0004: import sdFAT + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + ; SDFAT -> X033 +; inc/sdfat.plh: 0005: // +; inc/sdfat.plh: 0006: // Open flags +; inc/sdfat.plh: 0007: // +; inc/sdfat.plh: 0008: const O_READ = $01 + ; O_READ = 1 +; inc/sdfat.plh: 0009: const O_WRITE = $02 + ; O_WRITE = 2 +; inc/sdfat.plh: 0010: const O_APPEND = $04 + ; O_APPEND = 4 +; inc/sdfat.plh: 0011: const O_SYNC = $08 + ; O_SYNC = 8 +; inc/sdfat.plh: 0012: const O_TRUNC = $10 + ; O_TRUNC = 16 +; inc/sdfat.plh: 0013: const O_AT_END = $20 + ; O_AT_END = 32 +; inc/sdfat.plh: 0014: const O_CREAT = $40 + ; O_CREAT = 64 +; inc/sdfat.plh: 0015: const O_EXCL = $80 + ; O_EXCL = 128 +; inc/sdfat.plh: 0016: const MAX_FAT_BUF_SIZE = 512 + ; MAX_FAT_BUF_SIZE = 512 +; inc/sdfat.plh: 0017: // +; inc/sdfat.plh: 0018: // Interface +; inc/sdfat.plh: 0019: // +; inc/sdfat.plh: 0020: struc t_sdFAT +; inc/sdfat.plh: 0021: word getDir + ; getDir = 0 +; inc/sdfat.plh: 0022: word setDir + ; setDir = 2 +; inc/sdfat.plh: 0023: word newDir + ; newDir = 4 +; inc/sdfat.plh: 0024: word removeDir + ; removeDir = 6 +; inc/sdfat.plh: 0025: word renameFile + ; renameFile = 8 +; inc/sdfat.plh: 0026: word removeFile + ; removeFile = 10 +; inc/sdfat.plh: 0027: word existsFile + ; existsFile = 12 +; inc/sdfat.plh: 0028: word openFirstFile + ; openFirstFile = 14 +; inc/sdfat.plh: 0029: word openNextFile + ; openNextFile = 16 +; inc/sdfat.plh: 0030: word openFile + ; openFile = 18 +; inc/sdfat.plh: 0031: word closeFile + ; closeFile = 20 +; inc/sdfat.plh: 0032: word readFile + ; readFile = 22 +; inc/sdfat.plh: 0033: word writeFile + ; writeFile = 24 +; inc/sdfat.plh: 0034: word syncFile + ; syncFile = 26 +; inc/sdfat.plh: 0035: word rewindFile + ; rewindFile = 28 +; inc/sdfat.plh: 0036: word seekFile + ; seekFile = 30 +; inc/sdfat.plh: 0037: word seekOffsetFile + ; seekOffsetFile = 32 +; inc/sdfat.plh: 0038: word posFile + ; posFile = 34 +; inc/sdfat.plh: 0039: word sizeOfFile + ; sizeOfFile = 36 +; inc/sdfat.plh: 0040: word truncateFile + ; truncateFile = 38 +; inc/sdfat.plh: 0041: word isDir + ; isDir = 40 +; inc/sdfat.plh: 0042: word isFile + ; isFile = 42 +; inc/sdfat.plh: 0043: end + ; t_sdFAT = 44 +; inc/sdfat.plh: 0044: end +; samplesrc/fatget.pla: 0004: +; samplesrc/fatget.pla: 0005: +; samplesrc/fatget.pla: 0006: const COPY_BUF_SIZE = 8192 // 8K + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; COPY_BUF_SIZE = 8192 +; samplesrc/fatget.pla: 0007: const LOWER_DIFF = 'a' - 'A' + ; LOWER_DIFF = 32 +; samplesrc/fatget.pla: 0008: +; samplesrc/fatget.pla: 0009: byte[17] proname +_D034 !FILL 17 ; proname +; samplesrc/fatget.pla: 0010: byte protype +_D035 !FILL 1 ; protype +; samplesrc/fatget.pla: 0011: word proaux +_D036 !FILL 2 ; proaux +; samplesrc/fatget.pla: 0012: word arg +_D037 !FILL 2 ; arg +; samplesrc/fatget.pla: 0013: +; samplesrc/fatget.pla: 0014: def putByte(val)#0 +_SUBSEG ; BYTECODE STARTS + ; val -> [0] +_C000 ; putByte() +; samplesrc/fatget.pla: 0015: byte c + ; c -> [2] +; samplesrc/fatget.pla: 0016: c = ((val >> 4) & $0F) + '0' + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatget.pla: 0017: if c > '9' +; samplesrc/fatget.pla: 0018: c = c + 7 +; samplesrc/fatget.pla: 0019: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; samplesrc/fatget.pla: 0020: putc(c) +; samplesrc/fatget.pla: 0021: c = (val & $0F) + '0' +; samplesrc/fatget.pla: 0022: if c > '9' +; samplesrc/fatget.pla: 0023: c = c + 7 +; samplesrc/fatget.pla: 0024: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B003 +_B004 +; samplesrc/fatget.pla: 0025: putc(c) +; samplesrc/fatget.pla: 0026: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatget.pla: 0027: +; samplesrc/fatget.pla: 0028: def putWord(val)#0 + ; val -> [0] +_C001 ; putWord() +; samplesrc/fatget.pla: 0029: putByte(val.1) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/fatget.pla: 0030: putByte(val.0) +; samplesrc/fatget.pla: 0031: end + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C000 +_F002 !WORD _C000 + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/fatget.pla: 0032: +; samplesrc/fatget.pla: 0033: def hexByte(hexChars) + ; hexChars -> [0] +_C002 ; hexByte() +; samplesrc/fatget.pla: 0034: byte lo, hi + ; lo -> [2] + ; hi -> [3] +; samplesrc/fatget.pla: 0035: +; samplesrc/fatget.pla: 0036: lo = toupper(^(hexChars + 1)) - '0' + !BYTE $58,$04,$01 ; ENTER 4,1 +; samplesrc/fatget.pla: 0037: if lo > 9 +; samplesrc/fatget.pla: 0038: lo = lo - 7 +; samplesrc/fatget.pla: 0039: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F004 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $64,$02 ; LLB [2] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$02 ; SLB [2] +_B005 +_B006 +; samplesrc/fatget.pla: 0040: hi = toupper(^hexChars) - '0' +; samplesrc/fatget.pla: 0041: if hi > 9 +; samplesrc/fatget.pla: 0042: hi = hi - 7 +; samplesrc/fatget.pla: 0043: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F005 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6C,$03 ; DLB [3] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$03 ; LLB [3] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$03 ; SLB [3] +_B007 +_B008 +; samplesrc/fatget.pla: 0044: return (hi << 4) | lo + !BYTE $64,$03 ; LLB [3] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $64,$02 ; LLB [2] + !BYTE $96 ; OR + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/fatget.pla: 0045: end +; samplesrc/fatget.pla: 0046: +; samplesrc/fatget.pla: 0047: def hexWord(hexChars) + ; hexChars -> [0] +_C003 ; hexWord() +; samplesrc/fatget.pla: 0048: return (hexByte(hexChars) << 8) | hexByte(hexChars + 2) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F006 !WORD _C002 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C002 +_F007 !WORD _C002 + !BYTE $96 ; OR + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/fatget.pla: 0049: end +; samplesrc/fatget.pla: 0050: +; samplesrc/fatget.pla: 0051: def mkProName(fatName, proName, proType, proAux)#0 + ; fatName -> [0] + ; proName -> [2] + ; proType -> [4] + ; proAux -> [6] +_C004 ; mkProName() +; samplesrc/fatget.pla: 0052: byte n, l + ; n -> [8] + ; l -> [9] +; samplesrc/fatget.pla: 0053: +; samplesrc/fatget.pla: 0054: ^proType = $02 // default to BIN + !BYTE $58,$0A,$04 ; ENTER 10,4 +; samplesrc/fatget.pla: 0055: *proAux = $0000 // default to 0 +; samplesrc/fatget.pla: 0056: // +; samplesrc/fatget.pla: 0057: // Check for CiderPress style extension +; samplesrc/fatget.pla: 0058: // +; samplesrc/fatget.pla: 0059: l = ^fatName +; samplesrc/fatget.pla: 0060: if l > 7 and ^(fatName + l - 6) == '#' +; samplesrc/fatget.pla: 0061: ^proType = hexByte(fatName + l - 5) +; samplesrc/fatget.pla: 0062: *proAux = hexWord(fatName + l - 3) +; samplesrc/fatget.pla: 0063: l = l - 7 +; samplesrc/fatget.pla: 0064: fin + !BYTE $04 ; CN 2 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6C,$09 ; DLB [9] + !BYTE $0E ; CN 7 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B009 + !WORD _B009-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $3A,$06 ; SUBI 6 + !BYTE $60 ; LB + !BYTE $2A,$23 ; CB 35 + !BYTE $40 ; ISEQ +_B009 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $3A,$05 ; SUBI 5 + !BYTE $54 ; CALL _C002 +_F008 !WORD _C002 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $3A,$03 ; SUBI 3 + !BYTE $54 ; CALL _C003 +_F009 !WORD _C003 + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $64,$09 ; LLB [9] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$09 ; SLB [9] +_B010 +_B011 +; samplesrc/fatget.pla: 0065: // +; samplesrc/fatget.pla: 0066: // Scan backward looking for dir seperator +; samplesrc/fatget.pla: 0067: // +; samplesrc/fatget.pla: 0068: for n = l downto 1 + !BYTE $02 ; CN 1 + !BYTE $64,$09 ; LLB [9] + !BYTE $A2 ; BRLT _B012 + !WORD _B012-* +_B013 + !BYTE $6C,$08 ; DLB [8] +; samplesrc/fatget.pla: 0069: if ^(fatName + n) == '/' +; samplesrc/fatget.pla: 0070: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B015 + !WORD _B015-* + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +; samplesrc/fatget.pla: 0071: fin +_B015 +_B016 +; samplesrc/fatget.pla: 0072: next +_B014 + !BYTE $A8 ; DECBRGE _B013 + !WORD _B013-* +_B012 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; samplesrc/fatget.pla: 0073: if l - n > 15 +; samplesrc/fatget.pla: 0074: l = n + 15 +; samplesrc/fatget.pla: 0075: fin + !BYTE $64,$09 ; LLB [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $84 ; SUB + !BYTE $1E ; CN 15 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $64,$08 ; LLB [8] + !BYTE $38,$0F ; ADDI 15 + !BYTE $74,$09 ; SLB [9] +_B017 +_B018 +; samplesrc/fatget.pla: 0076: memcpy(proName + 1, fatName + 1 + n, l - n) +; samplesrc/fatget.pla: 0077: ^proName = l - n +; samplesrc/fatget.pla: 0078: end + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $64,$09 ; LLB [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F010 !WORD 0 + !BYTE $64,$09 ; LLB [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $84 ; SUB + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $5A,$0A ; LEAVE 10 +; samplesrc/fatget.pla: 0079: +; samplesrc/fatget.pla: 0080: def getYN(prompt) + ; prompt -> [0] +_C005 ; getYN() +; samplesrc/fatget.pla: 0081: byte yn + ; yn -> [2] +; samplesrc/fatget.pla: 0082: +; samplesrc/fatget.pla: 0083: puts(prompt) + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatget.pla: 0084: yn = getc +; samplesrc/fatget.pla: 0085: return yn == 'Y' or yn == 'y' + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F011 !WORD 0 + !BYTE $54 ; CALL _X006 +_F012 !WORD 0 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$59 ; CB 89 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B019 + !WORD _B019-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$79 ; CB 121 + !BYTE $40 ; ISEQ +_B019 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatget.pla: 0086: end +; samplesrc/fatget.pla: 0087: +; samplesrc/fatget.pla: 0088: def bigFatRead(buf, len) + ; buf -> [0] + ; len -> [2] +_C006 ; bigFatRead() +; samplesrc/fatget.pla: 0089: word xferLen, fatLen + ; xferLen -> [4] + ; fatLen -> [6] +; samplesrc/fatget.pla: 0090: +; samplesrc/fatget.pla: 0091: xferLen = 0 + !BYTE $58,$08,$02 ; ENTER 8,2 +; samplesrc/fatget.pla: 0092: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] +_B021 +; samplesrc/fatget.pla: 0093: if len > MAX_FAT_BUF_SIZE +; samplesrc/fatget.pla: 0094: fatLen = MAX_FAT_BUF_SIZE +; samplesrc/fatget.pla: 0095: else + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B023 + !WORD _B023-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B023 +; samplesrc/fatget.pla: 0096: fatLen = len +; samplesrc/fatget.pla: 0097: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] +_B024 +; samplesrc/fatget.pla: 0098: fatLen = sdFAT:readFile(buf, fatLen) +; samplesrc/fatget.pla: 0099: if fatLen > 0 +; samplesrc/fatget.pla: 0100: xferLen = xferLen + fatLen +; samplesrc/fatget.pla: 0101: len = len - fatLen +; samplesrc/fatget.pla: 0102: buf = buf + fatLen +; samplesrc/fatget.pla: 0103: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X033+22 +_F013 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $6E,$06 ; DLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +_B025 +; samplesrc/fatget.pla: 0104: len = 0 +; samplesrc/fatget.pla: 0105: fin + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B026 +; samplesrc/fatget.pla: 0106: until len == 0 +_B022 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* +_B020 +; samplesrc/fatget.pla: 0107: return xferLen + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/fatget.pla: 0108: end +; samplesrc/fatget.pla: 0109: +; samplesrc/fatget.pla: 0110: def fatCopyFrom(src, dst, type, aux) + ; src -> [0] + ; dst -> [2] + ; type -> [4] + ; aux -> [6] +_C007 ; fatCopyFrom() +; samplesrc/fatget.pla: 0111: word copyBuf, copyLen, freeAddr + ; copyBuf -> [8] + ; copyLen -> [10] + ; freeAddr -> [12] +; samplesrc/fatget.pla: 0112: byte ref + ; ref -> [14] +; samplesrc/fatget.pla: 0113: +; samplesrc/fatget.pla: 0114: copyBuf = heapallocalign(COPY_BUF_SIZE, 8, @freeAddr) + !BYTE $58,$0F,$04 ; ENTER 15,4 +; samplesrc/fatget.pla: 0115: if not copyBuf +; samplesrc/fatget.pla: 0116: puts("Not enough free memory!\n"); putln + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $10 ; CN 8 + !BYTE $28,$0C ; LLA [12] + !BYTE $54 ; CALL _X013 +_F014 !WORD 0 + !BYTE $6E,$08 ; DLW [8] + !BYTE $4E ; BRTRU _B027 + !WORD _B027-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $4E,$6F,$74,$20,$65,$6E,$6F,$75 + !BYTE $67,$68,$20,$66,$72,$65,$65,$20 + !BYTE $6D,$65,$6D,$6F,$72,$79,$21,$0D + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 +; samplesrc/fatget.pla: 0117: return -1 + !BYTE $54 ; CALL _X003 +_F016 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0F ; LEAVE 15 +; samplesrc/fatget.pla: 0118: fin +_B027 +_B028 +; samplesrc/fatget.pla: 0119: // +; samplesrc/fatget.pla: 0120: // Check if dst already exists +; samplesrc/fatget.pla: 0121: // +; samplesrc/fatget.pla: 0122: ref = fileio:open(dst) +; samplesrc/fatget.pla: 0123: if ref +; samplesrc/fatget.pla: 0124: fileio:close(ref) +; samplesrc/fatget.pla: 0125: puts("Overwrite "); puts(dst) + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X028+14 +_F017 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$0E ; DLB [14] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $64,$0E ; LLB [14] + !BYTE $6A ; LAW _X028+16 +_F018 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $0A + !BYTE $4F,$76,$65,$72,$77,$72,$69,$74 + !BYTE $65,$20 + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 +; samplesrc/fatget.pla: 0126: if not getYN("(Y/N)?") + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $28,$59,$2F,$4E,$29,$3F + !BYTE $54 ; CALL _C005 +_F021 !WORD _C005 + !BYTE $4E ; BRTRU _B031 + !WORD _B031-* +; samplesrc/fatget.pla: 0127: heaprelease(freeAddr) +; samplesrc/fatget.pla: 0128: return -1 + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0F ; LEAVE 15 +; samplesrc/fatget.pla: 0129: fin +_B031 +_B032 +; samplesrc/fatget.pla: 0130: putln +; samplesrc/fatget.pla: 0131: destroy(dst) +; samplesrc/fatget.pla: 0132: fin + !BYTE $54 ; CALL _X003 +_F023 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$18 ; CB 24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B029 +_B030 +; samplesrc/fatget.pla: 0133: // +; samplesrc/fatget.pla: 0134: // Create dst file +; samplesrc/fatget.pla: 0135: // +; samplesrc/fatget.pla: 0136: if fileio:create(dst, type, aux) +; samplesrc/fatget.pla: 0137: puts("Create file error: "); putByte(perr); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X028+22 +_F024 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $2E ; CS + !BYTE $13 + !BYTE $43,$72,$65,$61,$74,$65,$20,$66 + !BYTE $69,$6C,$65,$20,$65,$72,$72,$6F + !BYTE $72,$3A,$20 + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 +; samplesrc/fatget.pla: 0138: fin + !BYTE $68 ; LAB _X029+0 +_F026 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F027 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F028 !WORD 0 +_B033 +_B034 +; samplesrc/fatget.pla: 0139: ref = fileio:open(dst) +; samplesrc/fatget.pla: 0140: if not ref +; samplesrc/fatget.pla: 0141: puts("Error opening file: "); puts(dst); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X028+14 +_F029 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$0E ; DLB [14] + !BYTE $4E ; BRTRU _B035 + !WORD _B035-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$66,$69 + !BYTE $6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +; samplesrc/fatget.pla: 0142: puts("Open file error: "); putByte(perr); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 + !BYTE $54 ; CALL _X003 +_F032 !WORD 0 + !BYTE $2E ; CS + !BYTE $11 + !BYTE $4F,$70,$65,$6E,$20,$66,$69,$6C + !BYTE $65,$20,$65,$72,$72,$6F,$72,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F033 !WORD 0 +; samplesrc/fatget.pla: 0143: return -1 + !BYTE $68 ; LAB _X029+0 +_F034 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F035 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F036 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0F ; LEAVE 15 +; samplesrc/fatget.pla: 0144: fin +_B035 +_B036 +; samplesrc/fatget.pla: 0145: // +; samplesrc/fatget.pla: 0146: // Copy FAT file over in big chunks +; samplesrc/fatget.pla: 0147: // +; samplesrc/fatget.pla: 0148: if sdFAT:openFile(src, O_READ) +; samplesrc/fatget.pla: 0149: repeat + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _X033+18 +_F037 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* +_B040 +; samplesrc/fatget.pla: 0150: copyLen = bigFatRead(copyBuf, COPY_BUF_SIZE) +; samplesrc/fatget.pla: 0151: if copyLen +; samplesrc/fatget.pla: 0152: if fileio:write(ref, copyBuf, copyLen) <> copyLen +; samplesrc/fatget.pla: 0153: puts("Error writing file:"); puts(dst); putln + !BYTE $66,$08 ; LLW [8] + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _C006 +_F038 !WORD _C006 + !BYTE $6E,$0A ; DLW [10] + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $64,$0E ; LLB [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $6A ; LAW _X028+20 +_F039 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $66,$0A ; LLW [10] + !BYTE $22 ; BREQ _B044 + !WORD _B044-* + !BYTE $2E ; CS + !BYTE $13 + !BYTE $45,$72,$72,$6F,$72,$20,$77,$72 + !BYTE $69,$74,$69,$6E,$67,$20,$66,$69 + !BYTE $6C,$65,$3A + !BYTE $54 ; CALL _X004 +_F040 !WORD 0 +; samplesrc/fatget.pla: 0154: puts("Write file error: "); putByte(perr); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 + !BYTE $54 ; CALL _X003 +_F042 !WORD 0 + !BYTE $2E ; CS + !BYTE $12 + !BYTE $57,$72,$69,$74,$65,$20,$66,$69 + !BYTE $6C,$65,$20,$65,$72,$72,$6F,$72 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F043 !WORD 0 +; samplesrc/fatget.pla: 0155: copyLen = 0 // Force end of copy +; samplesrc/fatget.pla: 0156: fin + !BYTE $68 ; LAB _X029+0 +_F044 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F045 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F046 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $76,$0A ; SLW [10] +_B044 +_B045 +; samplesrc/fatget.pla: 0157: fin +_B042 +_B043 +; samplesrc/fatget.pla: 0158: until copyLen == 0 +_B041 + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B040 + !WORD _B040-* +_B039 +; samplesrc/fatget.pla: 0159: sdFAT:closeFile() +; samplesrc/fatget.pla: 0160: else + !BYTE $6A ; LAW _X033+20 +_F047 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B037 +; samplesrc/fatget.pla: 0161: puts("Error opening FAT file:"); puts(src); putln + !BYTE $2E ; CS + !BYTE $17 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$46,$41 + !BYTE $54,$20,$66,$69,$6C,$65,$3A + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 +; samplesrc/fatget.pla: 0162: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F049 !WORD 0 + !BYTE $54 ; CALL _X003 +_F050 !WORD 0 +_B038 +; samplesrc/fatget.pla: 0163: fileio:close(ref) +; samplesrc/fatget.pla: 0164: heaprelease(freeAddr) +; samplesrc/fatget.pla: 0165: return 0 + !BYTE $64,$0E ; LLB [14] + !BYTE $6A ; LAW _X028+16 +_F051 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F052 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$0F ; LEAVE 15 +; samplesrc/fatget.pla: 0166: end +; samplesrc/fatget.pla: 0167: +; samplesrc/fatget.pla: 0168: arg = argNext(argFirst) +_INIT +; samplesrc/fatget.pla: 0169: if ^arg +; samplesrc/fatget.pla: 0170: mkProName(arg, @proname, @protype, @proaux) +; samplesrc/fatget.pla: 0171: puts(arg);puts(" ==> ");puts(@proname) + !BYTE $54 ; CALL _X031 +_F053 !WORD 0 + !BYTE $54 ; CALL _X032 +_F054 !WORD 0 + !BYTE $7A ; SAW _D037+0 +_F055 !WORD _D037+0 + !BYTE $6A ; LAW _D037+0 +_F056 !WORD _D037+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $6A ; LAW _D037+0 +_F057 !WORD _D037+0 + !BYTE $26 ; LA _D034+0 +_F058 !WORD _D034+0 + !BYTE $26 ; LA _D035+0 +_F059 !WORD _D035+0 + !BYTE $26 ; LA _D036+0 +_F060 !WORD _D036+0 + !BYTE $54 ; CALL _C004 +_F061 !WORD _C004 + !BYTE $6A ; LAW _D037+0 +_F062 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F063 !WORD 0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3D,$3D,$3E,$20 + !BYTE $54 ; CALL _X004 +_F064 !WORD 0 +; samplesrc/fatget.pla: 0172: putc(' ');putByte(protype);putc(',');putWord(proaux);putln +; samplesrc/fatget.pla: 0173: fatCopyFrom(arg, @proname, protype, proaux) +; samplesrc/fatget.pla: 0174: else + !BYTE $26 ; LA _D034+0 +_F065 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F066 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F067 !WORD 0 + !BYTE $68 ; LAB _D035+0 +_F068 !WORD _D035+0 + !BYTE $54 ; CALL _C000 +_F069 !WORD _C000 + !BYTE $2A,$2C ; CB 44 + !BYTE $54 ; CALL _X002 +_F070 !WORD 0 + !BYTE $6A ; LAW _D036+0 +_F071 !WORD _D036+0 + !BYTE $54 ; CALL _C001 +_F072 !WORD _C001 + !BYTE $54 ; CALL _X003 +_F073 !WORD 0 + !BYTE $6A ; LAW _D037+0 +_F074 !WORD _D037+0 + !BYTE $26 ; LA _D034+0 +_F075 !WORD _D034+0 + !BYTE $68 ; LAB _D035+0 +_F076 !WORD _D035+0 + !BYTE $6A ; LAW _D036+0 +_F077 !WORD _D036+0 + !BYTE $54 ; CALL _C007 +_F078 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B046 +; samplesrc/fatget.pla: 0175: puts("Usage: +FATGET "); putln + !BYTE $2E ; CS + !BYTE $1D + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $46,$41,$54,$47,$45,$54,$20,$3C + !BYTE $46,$41,$54,$20,$66,$69,$6C,$65 + !BYTE $6E,$61,$6D,$65,$3E + !BYTE $54 ; CALL _X004 +_F079 !WORD 0 +; samplesrc/fatget.pla: 0176: fin + !BYTE $54 ; CALL _X003 +_F080 !WORD 0 +_B047 +; samplesrc/fatget.pla: 0177: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 9 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fatput.a b/src/samplesrc/fatput.a new file mode 100644 index 0000000..1c7bcbb --- /dev/null +++ b/src/samplesrc/fatput.a @@ -0,0 +1,1204 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fatput.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fatput.pla: 0001: +; samplesrc/fatput.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; samplesrc/fatput.pla: 0002: +; samplesrc/fatput.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X030 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X031 + ; ARGNEXT -> X032 +; inc/args.plh: 0003: end +; samplesrc/fatput.pla: 0003: +; samplesrc/fatput.pla: 0004: include "inc/sdfat.plh" +; inc/sdfat.plh: 0001: // +; inc/sdfat.plh: 0002: // FAT I/O object +; inc/sdfat.plh: 0003: // +; inc/sdfat.plh: 0004: import sdFAT + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + ; SDFAT -> X033 +; inc/sdfat.plh: 0005: // +; inc/sdfat.plh: 0006: // Open flags +; inc/sdfat.plh: 0007: // +; inc/sdfat.plh: 0008: const O_READ = $01 + ; O_READ = 1 +; inc/sdfat.plh: 0009: const O_WRITE = $02 + ; O_WRITE = 2 +; inc/sdfat.plh: 0010: const O_APPEND = $04 + ; O_APPEND = 4 +; inc/sdfat.plh: 0011: const O_SYNC = $08 + ; O_SYNC = 8 +; inc/sdfat.plh: 0012: const O_TRUNC = $10 + ; O_TRUNC = 16 +; inc/sdfat.plh: 0013: const O_AT_END = $20 + ; O_AT_END = 32 +; inc/sdfat.plh: 0014: const O_CREAT = $40 + ; O_CREAT = 64 +; inc/sdfat.plh: 0015: const O_EXCL = $80 + ; O_EXCL = 128 +; inc/sdfat.plh: 0016: const MAX_FAT_BUF_SIZE = 512 + ; MAX_FAT_BUF_SIZE = 512 +; inc/sdfat.plh: 0017: // +; inc/sdfat.plh: 0018: // Interface +; inc/sdfat.plh: 0019: // +; inc/sdfat.plh: 0020: struc t_sdFAT +; inc/sdfat.plh: 0021: word getDir + ; getDir = 0 +; inc/sdfat.plh: 0022: word setDir + ; setDir = 2 +; inc/sdfat.plh: 0023: word newDir + ; newDir = 4 +; inc/sdfat.plh: 0024: word removeDir + ; removeDir = 6 +; inc/sdfat.plh: 0025: word renameFile + ; renameFile = 8 +; inc/sdfat.plh: 0026: word removeFile + ; removeFile = 10 +; inc/sdfat.plh: 0027: word existsFile + ; existsFile = 12 +; inc/sdfat.plh: 0028: word openFirstFile + ; openFirstFile = 14 +; inc/sdfat.plh: 0029: word openNextFile + ; openNextFile = 16 +; inc/sdfat.plh: 0030: word openFile + ; openFile = 18 +; inc/sdfat.plh: 0031: word closeFile + ; closeFile = 20 +; inc/sdfat.plh: 0032: word readFile + ; readFile = 22 +; inc/sdfat.plh: 0033: word writeFile + ; writeFile = 24 +; inc/sdfat.plh: 0034: word syncFile + ; syncFile = 26 +; inc/sdfat.plh: 0035: word rewindFile + ; rewindFile = 28 +; inc/sdfat.plh: 0036: word seekFile + ; seekFile = 30 +; inc/sdfat.plh: 0037: word seekOffsetFile + ; seekOffsetFile = 32 +; inc/sdfat.plh: 0038: word posFile + ; posFile = 34 +; inc/sdfat.plh: 0039: word sizeOfFile + ; sizeOfFile = 36 +; inc/sdfat.plh: 0040: word truncateFile + ; truncateFile = 38 +; inc/sdfat.plh: 0041: word isDir + ; isDir = 40 +; inc/sdfat.plh: 0042: word isFile + ; isFile = 42 +; inc/sdfat.plh: 0043: end + ; t_sdFAT = 44 +; inc/sdfat.plh: 0044: end +; samplesrc/fatput.pla: 0004: +; samplesrc/fatput.pla: 0005: +; samplesrc/fatput.pla: 0006: const COPY_BUF_SIZE = 8192 // 8K + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; COPY_BUF_SIZE = 8192 +; samplesrc/fatput.pla: 0007: const LOWER_DIFF = 'a' - 'A' + ; LOWER_DIFF = 32 +; samplesrc/fatput.pla: 0008: +; samplesrc/fatput.pla: 0009: word arg +_D034 !FILL 2 ; arg +; samplesrc/fatput.pla: 0010: byte[24] fatName +_D035 !FILL 24 ; fatName +; samplesrc/fatput.pla: 0011: +; samplesrc/fatput.pla: 0012: def putByte(val)#0 +_SUBSEG ; BYTECODE STARTS + ; val -> [0] +_C000 ; putByte() +; samplesrc/fatput.pla: 0013: byte c + ; c -> [2] +; samplesrc/fatput.pla: 0014: c = ((val >> 4) & $0F) + '0' + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatput.pla: 0015: if c > '9' +; samplesrc/fatput.pla: 0016: c = c + 7 +; samplesrc/fatput.pla: 0017: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; samplesrc/fatput.pla: 0018: putc(c) +; samplesrc/fatput.pla: 0019: c = (val & $0F) + '0' +; samplesrc/fatput.pla: 0020: if c > '9' +; samplesrc/fatput.pla: 0021: c = c + 7 +; samplesrc/fatput.pla: 0022: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B003 +_B004 +; samplesrc/fatput.pla: 0023: putc(c) +; samplesrc/fatput.pla: 0024: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatput.pla: 0025: +; samplesrc/fatput.pla: 0026: def hexChars(cptr, b)#0 + ; cptr -> [0] + ; b -> [2] +_C001 ; hexChars() +; samplesrc/fatput.pla: 0027: byte h + ; h -> [4] +; samplesrc/fatput.pla: 0028: +; samplesrc/fatput.pla: 0029: h = ((b >> 4) & $0F) + '0' + !BYTE $58,$05,$02 ; ENTER 5,2 +; samplesrc/fatput.pla: 0030: if h > '9' +; samplesrc/fatput.pla: 0031: h = h + 7 +; samplesrc/fatput.pla: 0032: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$04 ; DLB [4] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $64,$04 ; LLB [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$04 ; SLB [4] +_B005 +_B006 +; samplesrc/fatput.pla: 0033: ^cptr = h +; samplesrc/fatput.pla: 0034: cptr++ + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; samplesrc/fatput.pla: 0035: h = (b & $0F) + '0' +; samplesrc/fatput.pla: 0036: if h > '9' +; samplesrc/fatput.pla: 0037: h = h + 7 +; samplesrc/fatput.pla: 0038: fin + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$04 ; DLB [4] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$04 ; LLB [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$04 ; SLB [4] +_B007 +_B008 +; samplesrc/fatput.pla: 0039: ^cptr = h +; samplesrc/fatput.pla: 0040: end + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/fatput.pla: 0041: +; samplesrc/fatput.pla: 0042: def mkFatName(proName, fatName) + ; proName -> [0] + ; fatName -> [2] +_C002 ; mkFatName() +; samplesrc/fatput.pla: 0043: word l, n + ; l -> [4] + ; n -> [6] +; samplesrc/fatput.pla: 0044: byte fileinfo[t_fileinfo] + ; fileinfo -> [8] +; samplesrc/fatput.pla: 0045: +; samplesrc/fatput.pla: 0046: if !fileio:getfileinfo(proName, @fileinfo) + !BYTE $58,$17,$02 ; ENTER 23,2 +; samplesrc/fatput.pla: 0047: // +; samplesrc/fatput.pla: 0048: // Scan backward looking for dir seperator +; samplesrc/fatput.pla: 0049: // +; samplesrc/fatput.pla: 0050: l = ^proName +; samplesrc/fatput.pla: 0051: for n = l downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$08 ; LLA [8] + !BYTE $6A ; LAW _X028+4 +_F002 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B009 + !WORD _B009-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $76,$04 ; SLW [4] + !BYTE $02 ; CN 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $A2 ; BRLT _B011 + !WORD _B011-* +_B012 + !BYTE $6E,$06 ; DLW [6] +; samplesrc/fatput.pla: 0052: if ^(proName + n) == '/' +; samplesrc/fatput.pla: 0053: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B014 + !WORD _B014-* + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; samplesrc/fatput.pla: 0054: fin +_B014 +_B015 +; samplesrc/fatput.pla: 0055: next +_B013 + !BYTE $A8 ; DECBRGE _B012 + !WORD _B012-* +_B011 + !BYTE $76,$06 ; SLW [6] + !BYTE $30 ; DROP +; samplesrc/fatput.pla: 0056: memcpy(fatName + 1, proName + 1 + n, l - n) +; samplesrc/fatput.pla: 0057: ^fatName = l - n + 7 +; samplesrc/fatput.pla: 0058: // +; samplesrc/fatput.pla: 0059: // Build CiderPress style extension +; samplesrc/fatput.pla: 0060: // +; samplesrc/fatput.pla: 0061: n = fatName + ^fatName - 6 +; samplesrc/fatput.pla: 0062: ^n = '#' +; samplesrc/fatput.pla: 0063: hexChars(n + 1, fileinfo.file_type) +; samplesrc/fatput.pla: 0064: hexChars(n + 3, fileinfo.aux_type.1) +; samplesrc/fatput.pla: 0065: hexChars(n + 5, fileinfo.aux_type) +; samplesrc/fatput.pla: 0066: else + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F003 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $38,$07 ; ADDI 7 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$06 ; SUBI 6 + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$23 ; CB 35 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $64,$09 ; LLB [9] + !BYTE $54 ; CALL _C001 +_F004 !WORD _C001 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $28,$0A ; LLA [10] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _C001 +_F005 !WORD _C001 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$05 ; ADDI 5 + !BYTE $64,$0A ; LLB [10] + !BYTE $54 ; CALL _C001 +_F006 !WORD _C001 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; samplesrc/fatput.pla: 0067: // +; samplesrc/fatput.pla: 0068: // Error getting info on file +; samplesrc/fatput.pla: 0069: // +; samplesrc/fatput.pla: 0070: puts("Error reading "); puts(proName); putln + !BYTE $2E ; CS + !BYTE $0E + !BYTE $45,$72,$72,$6F,$72,$20,$72,$65 + !BYTE $61,$64,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F007 !WORD 0 +; samplesrc/fatput.pla: 0071: return -1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F008 !WORD 0 + !BYTE $54 ; CALL _X003 +_F009 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$17 ; LEAVE 23 +; samplesrc/fatput.pla: 0072: fin +_B010 +; samplesrc/fatput.pla: 0073: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$17 ; LEAVE 23 +; samplesrc/fatput.pla: 0074: end +; samplesrc/fatput.pla: 0075: +; samplesrc/fatput.pla: 0076: def getYN(prompt) + ; prompt -> [0] +_C003 ; getYN() +; samplesrc/fatput.pla: 0077: byte yn + ; yn -> [2] +; samplesrc/fatput.pla: 0078: +; samplesrc/fatput.pla: 0079: puts(prompt) + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatput.pla: 0080: yn = getc +; samplesrc/fatput.pla: 0081: return yn == 'Y' or yn == 'y' + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F010 !WORD 0 + !BYTE $54 ; CALL _X006 +_F011 !WORD 0 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$59 ; CB 89 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B016 + !WORD _B016-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$79 ; CB 121 + !BYTE $40 ; ISEQ +_B016 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatput.pla: 0082: end +; samplesrc/fatput.pla: 0083: +; samplesrc/fatput.pla: 0084: def bigFatWrite(buf, len) + ; buf -> [0] + ; len -> [2] +_C004 ; bigFatWrite() +; samplesrc/fatput.pla: 0085: word xferLen, fatLen + ; xferLen -> [4] + ; fatLen -> [6] +; samplesrc/fatput.pla: 0086: +; samplesrc/fatput.pla: 0087: xferLen = 0 + !BYTE $58,$08,$02 ; ENTER 8,2 +; samplesrc/fatput.pla: 0088: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] +_B018 +; samplesrc/fatput.pla: 0089: if len > MAX_FAT_BUF_SIZE +; samplesrc/fatput.pla: 0090: fatLen = MAX_FAT_BUF_SIZE +; samplesrc/fatput.pla: 0091: else + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B020 +; samplesrc/fatput.pla: 0092: fatLen = len +; samplesrc/fatput.pla: 0093: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] +_B021 +; samplesrc/fatput.pla: 0094: fatLen = sdFAT:writeFile(buf, fatLen) +; samplesrc/fatput.pla: 0095: if fatLen > 0 +; samplesrc/fatput.pla: 0096: xferLen = xferLen + fatLen +; samplesrc/fatput.pla: 0097: len = len - fatLen +; samplesrc/fatput.pla: 0098: buf = buf + fatLen +; samplesrc/fatput.pla: 0099: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X033+24 +_F012 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $6E,$06 ; DLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B023 + !WORD _B023-* +_B022 +; samplesrc/fatput.pla: 0100: len = 0 +; samplesrc/fatput.pla: 0101: fin + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B023 +; samplesrc/fatput.pla: 0102: until len == 0 +_B019 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B018 + !WORD _B018-* +_B017 +; samplesrc/fatput.pla: 0103: return xferLen + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/fatput.pla: 0104: end +; samplesrc/fatput.pla: 0105: +; samplesrc/fatput.pla: 0106: def fatCopyTo(src, dst) + ; src -> [0] + ; dst -> [2] +_C005 ; fatCopyTo() +; samplesrc/fatput.pla: 0107: word copyBuf, copyLen, freeAddr + ; copyBuf -> [4] + ; copyLen -> [6] + ; freeAddr -> [8] +; samplesrc/fatput.pla: 0108: byte ref + ; ref -> [10] +; samplesrc/fatput.pla: 0109: +; samplesrc/fatput.pla: 0110: copyBuf = heapallocalign(COPY_BUF_SIZE, 8, @freeAddr) + !BYTE $58,$0B,$02 ; ENTER 11,2 +; samplesrc/fatput.pla: 0111: if not copyBuf +; samplesrc/fatput.pla: 0112: puts("Not enough free memory!\n"); putln + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $10 ; CN 8 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X013 +_F013 !WORD 0 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B024 + !WORD _B024-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $4E,$6F,$74,$20,$65,$6E,$6F,$75 + !BYTE $67,$68,$20,$66,$72,$65,$65,$20 + !BYTE $6D,$65,$6D,$6F,$72,$79,$21,$0D + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 +; samplesrc/fatput.pla: 0113: return -1 + !BYTE $54 ; CALL _X003 +_F015 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/fatput.pla: 0114: fin +_B024 +_B025 +; samplesrc/fatput.pla: 0115: ref = fileio:open(src) +; samplesrc/fatput.pla: 0116: if not ref +; samplesrc/fatput.pla: 0117: puts("Error opening file: "); puts(src); putln + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X028+14 +_F016 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$0A ; DLB [10] + !BYTE $4E ; BRTRU _B026 + !WORD _B026-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$66,$69 + !BYTE $6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +; samplesrc/fatput.pla: 0118: puts("Open file error: "); putByte(perr); putln + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 + !BYTE $54 ; CALL _X003 +_F019 !WORD 0 + !BYTE $2E ; CS + !BYTE $11 + !BYTE $4F,$70,$65,$6E,$20,$66,$69,$6C + !BYTE $65,$20,$65,$72,$72,$6F,$72,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +; samplesrc/fatput.pla: 0119: return -1 + !BYTE $68 ; LAB _X029+0 +_F021 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F022 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F023 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/fatput.pla: 0120: fin +_B026 +_B027 +; samplesrc/fatput.pla: 0121: // +; samplesrc/fatput.pla: 0122: // Copy file over in big chunks +; samplesrc/fatput.pla: 0123: // +; samplesrc/fatput.pla: 0124: if sdFAT:openFile(dst, O_READ | O_WRITE | O_CREAT) +; samplesrc/fatput.pla: 0125: repeat + !BYTE $66,$02 ; LLW [2] + !BYTE $06 ; CN 3 + !BYTE $3E,$40 ; ORI 64 + !BYTE $6A ; LAW _X033+18 +_F024 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* +_B031 +; samplesrc/fatput.pla: 0126: copyLen = fileio:read(ref, copyBuf, COPY_BUF_SIZE) +; samplesrc/fatput.pla: 0127: if copyLen +; samplesrc/fatput.pla: 0128: copyLen = bigFatWrite(copyBuf, copyLen) +; samplesrc/fatput.pla: 0129: if !copyLen +; samplesrc/fatput.pla: 0130: fin + !BYTE $64,$0A ; LLB [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $6A ; LAW _X028+18 +_F025 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C004 +_F026 !WORD _C004 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B035 + !WORD _B035-* +_B035 +_B036 +; samplesrc/fatput.pla: 0131: fin +_B033 +_B034 +; samplesrc/fatput.pla: 0132: until copyLen == 0 +_B032 + !BYTE $66,$06 ; LLW [6] + !BYTE $4E ; BRTRU _B031 + !WORD _B031-* +_B030 +; samplesrc/fatput.pla: 0133: sdFAT:closeFile() +; samplesrc/fatput.pla: 0134: else + !BYTE $6A ; LAW _X033+20 +_F027 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 +; samplesrc/fatput.pla: 0135: puts("Error opening FAT file:"); puts(dst); putln + !BYTE $2E ; CS + !BYTE $17 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$46,$41 + !BYTE $54,$20,$66,$69,$6C,$65,$3A + !BYTE $54 ; CALL _X004 +_F028 !WORD 0 +; samplesrc/fatput.pla: 0136: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 + !BYTE $54 ; CALL _X003 +_F030 !WORD 0 +_B029 +; samplesrc/fatput.pla: 0137: fileio:close(ref) +; samplesrc/fatput.pla: 0138: heaprelease(freeAddr) +; samplesrc/fatput.pla: 0139: return 0 + !BYTE $64,$0A ; LLB [10] + !BYTE $6A ; LAW _X028+16 +_F031 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _X015 +_F032 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/fatput.pla: 0140: end +; samplesrc/fatput.pla: 0141: +; samplesrc/fatput.pla: 0142: arg = argNext(argFirst) +_INIT +; samplesrc/fatput.pla: 0143: if ^arg +; samplesrc/fatput.pla: 0144: mkFatName(arg, @fatName) +; samplesrc/fatput.pla: 0145: puts(arg); puts(" ==> "); puts(@fatName); putln + !BYTE $54 ; CALL _X031 +_F033 !WORD 0 + !BYTE $54 ; CALL _X032 +_F034 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F035 !WORD _D034+0 + !BYTE $6A ; LAW _D034+0 +_F036 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $6A ; LAW _D034+0 +_F037 !WORD _D034+0 + !BYTE $26 ; LA _D035+0 +_F038 !WORD _D035+0 + !BYTE $54 ; CALL _C002 +_F039 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D034+0 +_F040 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3D,$3D,$3E,$20 + !BYTE $54 ; CALL _X004 +_F042 !WORD 0 +; samplesrc/fatput.pla: 0146: fatCopyTo(arg, @fatName) +; samplesrc/fatput.pla: 0147: else + !BYTE $26 ; LA _D035+0 +_F043 !WORD _D035+0 + !BYTE $54 ; CALL _X004 +_F044 !WORD 0 + !BYTE $54 ; CALL _X003 +_F045 !WORD 0 + !BYTE $6A ; LAW _D034+0 +_F046 !WORD _D034+0 + !BYTE $26 ; LA _D035+0 +_F047 !WORD _D035+0 + !BYTE $54 ; CALL _C005 +_F048 !WORD _C005 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B037 +; samplesrc/fatput.pla: 0148: puts("Usage: +FATPUT "); putln + !BYTE $2E ; CS + !BYTE $19 + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $46,$41,$54,$50,$55,$54,$20,$3C + !BYTE $66,$69,$6C,$65,$6E,$61,$6D,$65 + !BYTE $3E + !BYTE $54 ; CALL _X004 +_F049 !WORD 0 +; samplesrc/fatput.pla: 0149: fin + !BYTE $54 ; CALL _X003 +_F050 !WORD 0 +_B038 +; samplesrc/fatput.pla: 0150: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fatreaddsk.a b/src/samplesrc/fatreaddsk.a new file mode 100644 index 0000000..31ca9f5 --- /dev/null +++ b/src/samplesrc/fatreaddsk.a @@ -0,0 +1,1435 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fatreaddsk.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fatreaddsk.pla: 0001: +; samplesrc/fatreaddsk.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; samplesrc/fatreaddsk.pla: 0002: +; samplesrc/fatreaddsk.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X030 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X031 + ; ARGNEXT -> X032 +; inc/args.plh: 0003: end +; samplesrc/fatreaddsk.pla: 0003: +; samplesrc/fatreaddsk.pla: 0004: include "inc/sdfat.plh" +; inc/sdfat.plh: 0001: // +; inc/sdfat.plh: 0002: // FAT I/O object +; inc/sdfat.plh: 0003: // +; inc/sdfat.plh: 0004: import sdFAT + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + ; SDFAT -> X033 +; inc/sdfat.plh: 0005: // +; inc/sdfat.plh: 0006: // Open flags +; inc/sdfat.plh: 0007: // +; inc/sdfat.plh: 0008: const O_READ = $01 + ; O_READ = 1 +; inc/sdfat.plh: 0009: const O_WRITE = $02 + ; O_WRITE = 2 +; inc/sdfat.plh: 0010: const O_APPEND = $04 + ; O_APPEND = 4 +; inc/sdfat.plh: 0011: const O_SYNC = $08 + ; O_SYNC = 8 +; inc/sdfat.plh: 0012: const O_TRUNC = $10 + ; O_TRUNC = 16 +; inc/sdfat.plh: 0013: const O_AT_END = $20 + ; O_AT_END = 32 +; inc/sdfat.plh: 0014: const O_CREAT = $40 + ; O_CREAT = 64 +; inc/sdfat.plh: 0015: const O_EXCL = $80 + ; O_EXCL = 128 +; inc/sdfat.plh: 0016: const MAX_FAT_BUF_SIZE = 512 + ; MAX_FAT_BUF_SIZE = 512 +; inc/sdfat.plh: 0017: // +; inc/sdfat.plh: 0018: // Interface +; inc/sdfat.plh: 0019: // +; inc/sdfat.plh: 0020: struc t_sdFAT +; inc/sdfat.plh: 0021: word getDir + ; getDir = 0 +; inc/sdfat.plh: 0022: word setDir + ; setDir = 2 +; inc/sdfat.plh: 0023: word newDir + ; newDir = 4 +; inc/sdfat.plh: 0024: word removeDir + ; removeDir = 6 +; inc/sdfat.plh: 0025: word renameFile + ; renameFile = 8 +; inc/sdfat.plh: 0026: word removeFile + ; removeFile = 10 +; inc/sdfat.plh: 0027: word existsFile + ; existsFile = 12 +; inc/sdfat.plh: 0028: word openFirstFile + ; openFirstFile = 14 +; inc/sdfat.plh: 0029: word openNextFile + ; openNextFile = 16 +; inc/sdfat.plh: 0030: word openFile + ; openFile = 18 +; inc/sdfat.plh: 0031: word closeFile + ; closeFile = 20 +; inc/sdfat.plh: 0032: word readFile + ; readFile = 22 +; inc/sdfat.plh: 0033: word writeFile + ; writeFile = 24 +; inc/sdfat.plh: 0034: word syncFile + ; syncFile = 26 +; inc/sdfat.plh: 0035: word rewindFile + ; rewindFile = 28 +; inc/sdfat.plh: 0036: word seekFile + ; seekFile = 30 +; inc/sdfat.plh: 0037: word seekOffsetFile + ; seekOffsetFile = 32 +; inc/sdfat.plh: 0038: word posFile + ; posFile = 34 +; inc/sdfat.plh: 0039: word sizeOfFile + ; sizeOfFile = 36 +; inc/sdfat.plh: 0040: word truncateFile + ; truncateFile = 38 +; inc/sdfat.plh: 0041: word isDir + ; isDir = 40 +; inc/sdfat.plh: 0042: word isFile + ; isFile = 42 +; inc/sdfat.plh: 0043: end + ; t_sdFAT = 44 +; inc/sdfat.plh: 0044: end +; samplesrc/fatreaddsk.pla: 0004: +; samplesrc/fatreaddsk.pla: 0005: +; samplesrc/fatreaddsk.pla: 0006: const COPY_BUF_SIZE = 4096 // 4K + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; COPY_BUF_SIZE = 4096 +; samplesrc/fatreaddsk.pla: 0007: const COPY_BLK_SIZE = COPY_BUF_SIZE/512 + ; COPY_BLK_SIZE = 8 +; samplesrc/fatreaddsk.pla: 0008: const COPY_BLK_CNT = COPY_BLK_SIZE-1 + ; COPY_BLK_CNT = 7 +; samplesrc/fatreaddsk.pla: 0009: const DRIVE1 = $60 // drive 1, slot 6 + ; DRIVE1 = 96 +; samplesrc/fatreaddsk.pla: 0010: const DRIVE2 = $D0 // drive 2, slot 6 + ; DRIVE2 = 208 +; samplesrc/fatreaddsk.pla: 0011: const LOWER_DIFF = 'a' - 'A' + ; LOWER_DIFF = 32 +; samplesrc/fatreaddsk.pla: 0012: // +; samplesrc/fatreaddsk.pla: 0013: // Track sector order +; samplesrc/fatreaddsk.pla: 0014: // +; samplesrc/fatreaddsk.pla: 0015: const ORDER_DOS = 0 + ; ORDER_DOS = 0 +; samplesrc/fatreaddsk.pla: 0016: const ORDER_PRODOS = 1 + ; ORDER_PRODOS = 1 +; samplesrc/fatreaddsk.pla: 0017: +; samplesrc/fatreaddsk.pla: 0018: word arg, image +_D034 !FILL 2 ; arg, image +_D035 !FILL 2 ; image +; samplesrc/fatreaddsk.pla: 0019: byte unit = DRIVE1 +_D036 ; unit = DRIVE1 + !BYTE $60 +; samplesrc/fatreaddsk.pla: 0020: byte order +_D037 !FILL 1 ; order +; samplesrc/fatreaddsk.pla: 0021: // +; samplesrc/fatreaddsk.pla: 0022: // DOS to ProDOS sector ordering +; samplesrc/fatreaddsk.pla: 0023: // +; samplesrc/fatreaddsk.pla: 0024: byte[] secOrder = $0,$E,$D,$C,$B,$A,$9,$8,$7,$6,$5,$4,$3,$2,$1,$F +_D038 ; secOrder = $0,$E,$D,$C,$B,$A,$9,$8,$7,$6,$5,$4,$3,$2,$1,$F + !BYTE $00 + !BYTE $0E + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $0F +; samplesrc/fatreaddsk.pla: 0025: +; samplesrc/fatreaddsk.pla: 0026: def putb(b)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; b -> [0] +_P008 ; putb(b)#0() +_C000 ; putb() +; samplesrc/fatreaddsk.pla: 0027: byte c + ; c -> [2] +; samplesrc/fatreaddsk.pla: 0028: c = ((b >> 4) & $0F) + '0' + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatreaddsk.pla: 0029: if c > '9' +; samplesrc/fatreaddsk.pla: 0030: c = c + 7 +; samplesrc/fatreaddsk.pla: 0031: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; samplesrc/fatreaddsk.pla: 0032: putc(c) +; samplesrc/fatreaddsk.pla: 0033: c = (b & $0F) + '0' +; samplesrc/fatreaddsk.pla: 0034: if c > '9' +; samplesrc/fatreaddsk.pla: 0035: c = c + 7 +; samplesrc/fatreaddsk.pla: 0036: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B003 +_B004 +; samplesrc/fatreaddsk.pla: 0037: putc(c) +; samplesrc/fatreaddsk.pla: 0038: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatreaddsk.pla: 0039: +; samplesrc/fatreaddsk.pla: 0040: def getYN(prompt) + ; prompt -> [0] +_C001 ; getYN() +; samplesrc/fatreaddsk.pla: 0041: byte yn + ; yn -> [2] +; samplesrc/fatreaddsk.pla: 0042: +; samplesrc/fatreaddsk.pla: 0043: puts(prompt) + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatreaddsk.pla: 0044: yn = getc +; samplesrc/fatreaddsk.pla: 0045: putln +; samplesrc/fatreaddsk.pla: 0046: return yn == 'Y' or yn == 'y' + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F002 !WORD 0 + !BYTE $54 ; CALL _X006 +_F003 !WORD 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $54 ; CALL _X003 +_F004 !WORD 0 + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$59 ; CB 89 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B005 + !WORD _B005-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$79 ; CB 121 + !BYTE $40 ; ISEQ +_B005 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatreaddsk.pla: 0047: end +; samplesrc/fatreaddsk.pla: 0048: +; samplesrc/fatreaddsk.pla: 0049: def trkSecToBlk(bufSec, bufBlk)#0 + ; bufSec -> [0] + ; bufBlk -> [2] +_C002 ; trkSecToBlk() +; samplesrc/fatreaddsk.pla: 0050: byte sector + ; sector -> [4] +; samplesrc/fatreaddsk.pla: 0051: +; samplesrc/fatreaddsk.pla: 0052: for sector = 0 to 15 + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B007 + !BYTE $6C,$04 ; DLB [4] +; samplesrc/fatreaddsk.pla: 0053: memcpy(bufBlk + (sector << 8), bufSec + (secOrder[sector] << 8), 256) +; samplesrc/fatreaddsk.pla: 0054: next + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$04 ; LLB [4] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D038+0 +_F005 !WORD _D038+0 + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _X018 +_F006 !WORD 0 +_B008 + !BYTE $A4 ; INCBRLE _B007 + !WORD _B007-* +_B006 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; samplesrc/fatreaddsk.pla: 0055: end + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/fatreaddsk.pla: 0056: +; samplesrc/fatreaddsk.pla: 0057: def bigFatWrite(buf, len) + ; buf -> [0] + ; len -> [2] +_C003 ; bigFatWrite() +; samplesrc/fatreaddsk.pla: 0058: word xferLen, fatLen + ; xferLen -> [4] + ; fatLen -> [6] +; samplesrc/fatreaddsk.pla: 0059: +; samplesrc/fatreaddsk.pla: 0060: xferLen = 0 + !BYTE $58,$08,$02 ; ENTER 8,2 +; samplesrc/fatreaddsk.pla: 0061: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] +_B010 +; samplesrc/fatreaddsk.pla: 0062: if len > MAX_FAT_BUF_SIZE +; samplesrc/fatreaddsk.pla: 0063: fatLen = MAX_FAT_BUF_SIZE +; samplesrc/fatreaddsk.pla: 0064: else + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B012 +; samplesrc/fatreaddsk.pla: 0065: fatLen = len +; samplesrc/fatreaddsk.pla: 0066: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] +_B013 +; samplesrc/fatreaddsk.pla: 0067: fatLen = sdFAT:writeFile(buf, fatLen) +; samplesrc/fatreaddsk.pla: 0068: if fatLen > 0 +; samplesrc/fatreaddsk.pla: 0069: xferLen = xferLen + fatLen +; samplesrc/fatreaddsk.pla: 0070: len = len - fatLen +; samplesrc/fatreaddsk.pla: 0071: buf = buf + fatLen +; samplesrc/fatreaddsk.pla: 0072: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X033+24 +_F007 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $6E,$06 ; DLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B015 + !WORD _B015-* +_B014 +; samplesrc/fatreaddsk.pla: 0073: len = 0 +; samplesrc/fatreaddsk.pla: 0074: fin + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B015 +; samplesrc/fatreaddsk.pla: 0075: until len == 0 +_B011 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* +_B009 +; samplesrc/fatreaddsk.pla: 0076: return xferLen + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/fatreaddsk.pla: 0077: end +; samplesrc/fatreaddsk.pla: 0078: +; samplesrc/fatreaddsk.pla: 0079: def fatReadImage(src, drv, order) + ; src -> [0] + ; drv -> [2] + ; order -> [4] +_C004 ; fatReadImage() +; samplesrc/fatreaddsk.pla: 0080: word inBuf, outBuf, copyLen, freeAddr + ; inBuf -> [6] + ; outBuf -> [8] + ; copyLen -> [10] + ; freeAddr -> [12] +; samplesrc/fatreaddsk.pla: 0081: word blocknum, bufblk + ; blocknum -> [14] + ; bufblk -> [16] +; samplesrc/fatreaddsk.pla: 0082: +; samplesrc/fatreaddsk.pla: 0083: inBuf = heapallocalign(COPY_BUF_SIZE * 2, 8, @freeAddr) + !BYTE $58,$12,$03 ; ENTER 18,3 +; samplesrc/fatreaddsk.pla: 0084: if not inBuf +; samplesrc/fatreaddsk.pla: 0085: puts("Not enough free memory!\n"); putln + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $10 ; CN 8 + !BYTE $28,$0C ; LLA [12] + !BYTE $54 ; CALL _X013 +_F008 !WORD 0 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B016 + !WORD _B016-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $4E,$6F,$74,$20,$65,$6E,$6F,$75 + !BYTE $67,$68,$20,$66,$72,$65,$65,$20 + !BYTE $6D,$65,$6D,$6F,$72,$79,$21,$0D + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 +; samplesrc/fatreaddsk.pla: 0086: return -1 + !BYTE $54 ; CALL _X003 +_F010 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatreaddsk.pla: 0087: fin +_B016 +_B017 +; samplesrc/fatreaddsk.pla: 0088: if order == ORDER_DOS +; samplesrc/fatreaddsk.pla: 0089: outBuf = inBuf + COPY_BUF_SIZE +; samplesrc/fatreaddsk.pla: 0090: else + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B018 + !WORD _B018-* + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B018 +; samplesrc/fatreaddsk.pla: 0091: outBuf = inBuf +; samplesrc/fatreaddsk.pla: 0092: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$08 ; SLW [8] +_B019 +; samplesrc/fatreaddsk.pla: 0093: // +; samplesrc/fatreaddsk.pla: 0094: // Copy FAT image over one track at a time +; samplesrc/fatreaddsk.pla: 0095: // +; samplesrc/fatreaddsk.pla: 0096: if sdFAT:openFile(src, O_READ | O_WRITE | O_CREAT) +; samplesrc/fatreaddsk.pla: 0097: if !drv; putc(7); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $06 ; CN 3 + !BYTE $3E,$40 ; ORI 64 + !BYTE $6A ; LAW _X033+18 +_F011 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X002 +_F012 !WORD 0 +_B022 +_B023 +; samplesrc/fatreaddsk.pla: 0098: for blocknum = 0 to 279 step COPY_BLK_SIZE + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $00 ; CN 0 +_B025 + !BYTE $6E,$0E ; DLW [14] +; samplesrc/fatreaddsk.pla: 0099: if drv +; samplesrc/fatreaddsk.pla: 0100: ^$24=^$20 // Move cursor to left edge +; samplesrc/fatreaddsk.pla: 0101: puts("Reading blocks: "); puti(blocknum) + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $68,$20,$00 ; LAB 32 + !BYTE $78,$24,$00 ; SAB 36 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $52,$65,$61,$64,$69,$6E,$67,$20 + !BYTE $62,$6C,$6F,$63,$6B,$73,$3A,$20 + !BYTE $54 ; CALL _X004 +_F013 !WORD 0 +; samplesrc/fatreaddsk.pla: 0102: for bufblk = 0 to COPY_BLK_CNT + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X005 +_F014 !WORD 0 + !BYTE $0E ; CN 7 + !BYTE $00 ; CN 0 +_B030 + !BYTE $6E,$10 ; DLW [16] +; samplesrc/fatreaddsk.pla: 0103: if fileio:readblock(drv, inBuf + (bufblk << 9), blocknum + bufblk) +; samplesrc/fatreaddsk.pla: 0104: puts("Read disk error: $"); putb(perr); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$10 ; LLW [16] + !BYTE $12 ; CN 9 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$0E ; LLW [14] + !BYTE $B2,$10 ; ADDLW [16] + !BYTE $6A ; LAW _X028+32 +_F015 !WORD 0+32 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $2E ; CS + !BYTE $12 + !BYTE $52,$65,$61,$64,$20,$64,$69,$73 + !BYTE $6B,$20,$65,$72,$72,$6F,$72,$3A + !BYTE $20,$24 + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +; samplesrc/fatreaddsk.pla: 0105: break + !BYTE $68 ; LAB _X029+0 +_F017 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F018 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F019 !WORD 0 + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +; samplesrc/fatreaddsk.pla: 0106: fin +_B032 +_B033 +; samplesrc/fatreaddsk.pla: 0107: next +_B031 + !BYTE $A4 ; INCBRLE _B030 + !WORD _B030-* +_B029 + !BYTE $76,$10 ; SLW [16] + !BYTE $30 ; DROP +; samplesrc/fatreaddsk.pla: 0108: fin +_B027 +_B028 +; samplesrc/fatreaddsk.pla: 0109: if order == ORDER_DOS +; samplesrc/fatreaddsk.pla: 0110: trkSecToBlk(inBuf, outBuf) +; samplesrc/fatreaddsk.pla: 0111: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B034 + !WORD _B034-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C002 +_F020 !WORD _C002 +_B034 +_B035 +; samplesrc/fatreaddsk.pla: 0112: copyLen = bigFatWrite(outBuf, COPY_BUF_SIZE) +; samplesrc/fatreaddsk.pla: 0113: if copyLen <> COPY_BUF_SIZE +; samplesrc/fatreaddsk.pla: 0114: puts("Write image file error\n"); + !BYTE $66,$08 ; LLW [8] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C003 +_F021 !WORD _C003 + !BYTE $6E,$0A ; DLW [10] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $22 ; BREQ _B036 + !WORD _B036-* + !BYTE $2E ; CS + !BYTE $17 + !BYTE $57,$72,$69,$74,$65,$20,$69,$6D + !BYTE $61,$67,$65,$20,$66,$69,$6C,$65 + !BYTE $20,$65,$72,$72,$6F,$72,$0D + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +; samplesrc/fatreaddsk.pla: 0115: fin +_B036 +_B037 +; samplesrc/fatreaddsk.pla: 0116: if copyLen < COPY_BUF_SIZE or perr +; samplesrc/fatreaddsk.pla: 0117: puts("Error creating image: "); puts(src); putln + !BYTE $66,$0A ; LLW [10] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B038 + !WORD _B038-* + !BYTE $68 ; LAB _X029+0 +_F023 !WORD 0+0 +_B038 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $2E ; CS + !BYTE $16 + !BYTE $45,$72,$72,$6F,$72,$20,$63,$72 + !BYTE $65,$61,$74,$69,$6E,$67,$20,$69 + !BYTE $6D,$61,$67,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +; samplesrc/fatreaddsk.pla: 0118: break + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 + !BYTE $54 ; CALL _X003 +_F026 !WORD 0 + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +; samplesrc/fatreaddsk.pla: 0119: fin +_B039 +_B040 +; samplesrc/fatreaddsk.pla: 0120: next +_B026 + !BYTE $10 ; CN 8 + !BYTE $A6 ; ADDBRLE _B025 + !WORD _B025-* +_B024 + !BYTE $76,$0E ; SLW [14] + !BYTE $30 ; DROP +; samplesrc/fatreaddsk.pla: 0121: if !drv; putc(7);fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B041 + !WORD _B041-* + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X002 +_F027 !WORD 0 +_B041 +_B042 +; samplesrc/fatreaddsk.pla: 0122: putln +; samplesrc/fatreaddsk.pla: 0123: sdFAT:closeFile() +; samplesrc/fatreaddsk.pla: 0124: else + !BYTE $54 ; CALL _X003 +_F028 !WORD 0 + !BYTE $6A ; LAW _X033+20 +_F029 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B020 +; samplesrc/fatreaddsk.pla: 0125: puts("Error opening image file:"); puts(src); putln + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$69,$6D + !BYTE $61,$67,$65,$20,$66,$69,$6C,$65 + !BYTE $3A + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +; samplesrc/fatreaddsk.pla: 0126: return -1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 + !BYTE $54 ; CALL _X003 +_F032 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatreaddsk.pla: 0127: fin +_B021 +; samplesrc/fatreaddsk.pla: 0128: heaprelease(freeAddr) +; samplesrc/fatreaddsk.pla: 0129: return 0 + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F033 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatreaddsk.pla: 0130: end +; samplesrc/fatreaddsk.pla: 0131: +; samplesrc/fatreaddsk.pla: 0132: arg = argNext(argFirst) +_INIT +; samplesrc/fatreaddsk.pla: 0133: if ^arg +; samplesrc/fatreaddsk.pla: 0134: image = arg +; samplesrc/fatreaddsk.pla: 0135: arg = argNext(arg) +; samplesrc/fatreaddsk.pla: 0136: if ^arg +; samplesrc/fatreaddsk.pla: 0137: when ^(arg + 1) + !BYTE $54 ; CALL _X031 +_F034 !WORD 0 + !BYTE $54 ; CALL _X032 +_F035 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F036 !WORD _D034+0 + !BYTE $6A ; LAW _D034+0 +_F037 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $6A ; LAW _D034+0 +_F038 !WORD _D034+0 + !BYTE $7A ; SAW _D035+0 +_F039 !WORD _D035+0 + !BYTE $6A ; LAW _D034+0 +_F040 !WORD _D034+0 + !BYTE $54 ; CALL _X032 +_F041 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F042 !WORD _D034+0 + !BYTE $6A ; LAW _D034+0 +_F043 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B045 + !WORD _B045-* + !BYTE $6A ; LAW _D034+0 +_F044 !WORD _D034+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B048-* +; samplesrc/fatreaddsk.pla: 0138: is '2' // Drive 2 option +_B049 +; samplesrc/fatreaddsk.pla: 0139: unit = DRIVE2 +; samplesrc/fatreaddsk.pla: 0140: break + !BYTE $2A,$D0 ; CB 208 + !BYTE $78 ; SAB _D036+0 +_F045 !WORD _D036+0 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +; samplesrc/fatreaddsk.pla: 0141: is 'T' // Test speed option +_B050 +; samplesrc/fatreaddsk.pla: 0142: is 't' +_B051 +; samplesrc/fatreaddsk.pla: 0143: unit = 0 +; samplesrc/fatreaddsk.pla: 0144: break + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D036+0 +_F046 !WORD _D036+0 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +; samplesrc/fatreaddsk.pla: 0145: wend + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B048 + !BYTE $03 ; CASEBLOCK + !WORD $0032 + !WORD _B049-* + !WORD $0054 + !WORD _B050-* + !WORD $0074 + !WORD _B051-* +_B047 +; samplesrc/fatreaddsk.pla: 0146: fin +_B045 +_B046 +; samplesrc/fatreaddsk.pla: 0147: if unit +; samplesrc/fatreaddsk.pla: 0148: puts("Reading "); puts(image); puts(" from Drive "); putc((unit >> 7) + '1') + !BYTE $68 ; LAB _D036+0 +_F047 !WORD _D036+0 + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $52,$65,$61,$64,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 + !BYTE $6A ; LAW _D035+0 +_F049 !WORD _D035+0 + !BYTE $54 ; CALL _X004 +_F050 !WORD 0 + !BYTE $2E ; CS + !BYTE $0C + !BYTE $20,$66,$72,$6F,$6D,$20,$44,$72 + !BYTE $69,$76,$65,$20 + !BYTE $54 ; CALL _X004 +_F051 !WORD 0 +; samplesrc/fatreaddsk.pla: 0149: else + !BYTE $68 ; LAB _D036+0 +_F052 !WORD _D036+0 + !BYTE $0E ; CN 7 + !BYTE $9C ; SHR + !BYTE $38,$31 ; ADDI 49 + !BYTE $54 ; CALL _X002 +_F053 !WORD 0 + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B052 +; samplesrc/fatreaddsk.pla: 0150: puts("Speed test writing 143K to SD card"); + !BYTE $2E ; CS + !BYTE $22 + !BYTE $53,$70,$65,$65,$64,$20,$74,$65 + !BYTE $73,$74,$20,$77,$72,$69,$74,$69 + !BYTE $6E,$67,$20,$31,$34,$33,$4B,$20 + !BYTE $74,$6F,$20,$53,$44,$20,$63,$61 + !BYTE $72,$64 + !BYTE $54 ; CALL _X004 +_F054 !WORD 0 +; samplesrc/fatreaddsk.pla: 0151: fin +_B053 +; samplesrc/fatreaddsk.pla: 0152: // +; samplesrc/fatreaddsk.pla: 0153: // Figure sector ordering from filename +; samplesrc/fatreaddsk.pla: 0154: // +; samplesrc/fatreaddsk.pla: 0155: puts("\nUsing ") + !BYTE $2E ; CS + !BYTE $07 + !BYTE $0D,$55,$73,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F055 !WORD 0 +; samplesrc/fatreaddsk.pla: 0156: if toupper(^(image + ^image)) == 'O' and toupper(^(image + ^image - 1)) == 'P' +; samplesrc/fatreaddsk.pla: 0157: order = ORDER_PRODOS +; samplesrc/fatreaddsk.pla: 0158: puts("ProDOS") + !BYTE $6A ; LAW _D035+0 +_F056 !WORD _D035+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F057 !WORD 0 + !BYTE $2A,$4F ; CB 79 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B054 + !WORD _B054-* + !BYTE $6A ; LAW _D035+0 +_F058 !WORD _D035+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8E ; DECR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F059 !WORD 0 + !BYTE $2A,$50 ; CB 80 + !BYTE $40 ; ISEQ +_B054 + !BYTE $4C ; BRFLS _B055 + !WORD _B055-* + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D037+0 +_F060 !WORD _D037+0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $50,$72,$6F,$44,$4F,$53 + !BYTE $54 ; CALL _X004 +_F061 !WORD 0 +; samplesrc/fatreaddsk.pla: 0159: else + !BYTE $50 ; BRNCH _B056 + !WORD _B056-* +_B055 +; samplesrc/fatreaddsk.pla: 0160: order = ORDER_DOS +; samplesrc/fatreaddsk.pla: 0161: puts("DOS 3.3") + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D037+0 +_F062 !WORD _D037+0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $44,$4F,$53,$20,$33,$2E,$33 + !BYTE $54 ; CALL _X004 +_F063 !WORD 0 +; samplesrc/fatreaddsk.pla: 0162: fin +_B056 +; samplesrc/fatreaddsk.pla: 0163: if getYN(" order. Continue? (Y/N)") + !BYTE $2E ; CS + !BYTE $17 + !BYTE $20,$6F,$72,$64,$65,$72,$2E,$20 + !BYTE $43,$6F,$6E,$74,$69,$6E,$75,$65 + !BYTE $3F,$20,$28,$59,$2F,$4E,$29 + !BYTE $54 ; CALL _C001 +_F064 !WORD _C001 + !BYTE $4C ; BRFLS _B057 + !WORD _B057-* +; samplesrc/fatreaddsk.pla: 0164: fatReadImage(image, unit, order) +; samplesrc/fatreaddsk.pla: 0165: fin + !BYTE $6A ; LAW _D035+0 +_F065 !WORD _D035+0 + !BYTE $68 ; LAB _D036+0 +_F066 !WORD _D036+0 + !BYTE $68 ; LAB _D037+0 +_F067 !WORD _D037+0 + !BYTE $54 ; CALL _C004 +_F068 !WORD _C004 + !BYTE $30 ; DROP +_B057 +_B058 +; samplesrc/fatreaddsk.pla: 0166: else + !BYTE $50 ; BRNCH _B044 + !WORD _B044-* +_B043 +; samplesrc/fatreaddsk.pla: 0167: puts("Read DSK image from floppy disk drive\n") + !BYTE $2E ; CS + !BYTE $26 + !BYTE $52,$65,$61,$64,$20,$44,$53,$4B + !BYTE $20,$69,$6D,$61,$67,$65,$20,$66 + !BYTE $72,$6F,$6D,$20,$66,$6C,$6F,$70 + !BYTE $70,$79,$20,$64,$69,$73,$6B,$20 + !BYTE $64,$72,$69,$76,$65,$0D + !BYTE $54 ; CALL _X004 +_F069 !WORD 0 +; samplesrc/fatreaddsk.pla: 0168: puts("Usage: +FATREADDSK [1,2,T]\n") + !BYTE $2E ; CS + !BYTE $2C + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $46,$41,$54,$52,$45,$41,$44,$44 + !BYTE $53,$4B,$20,$3C,$44,$53,$4B,$20 + !BYTE $69,$6D,$61,$67,$65,$20,$66,$69 + !BYTE $6C,$65,$3E,$20,$5B,$31,$2C,$32 + !BYTE $2C,$54,$5D,$0D + !BYTE $54 ; CALL _X004 +_F070 !WORD 0 +; samplesrc/fatreaddsk.pla: 0169: fin +_B044 +; samplesrc/fatreaddsk.pla: 0170: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 6 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fatwritedsk.a b/src/samplesrc/fatwritedsk.a new file mode 100644 index 0000000..5f26347 --- /dev/null +++ b/src/samplesrc/fatwritedsk.a @@ -0,0 +1,1438 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fatwritedsk.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fatwritedsk.pla: 0001: +; samplesrc/fatwritedsk.pla: 0002: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X028 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X029 +; inc/fileio.plh: 0080: end +; samplesrc/fatwritedsk.pla: 0002: +; samplesrc/fatwritedsk.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X030 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X031 + ; ARGNEXT -> X032 +; inc/args.plh: 0003: end +; samplesrc/fatwritedsk.pla: 0003: +; samplesrc/fatwritedsk.pla: 0004: include "inc/sdfat.plh" +; inc/sdfat.plh: 0001: // +; inc/sdfat.plh: 0002: // FAT I/O object +; inc/sdfat.plh: 0003: // +; inc/sdfat.plh: 0004: import sdFAT + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + ; SDFAT -> X033 +; inc/sdfat.plh: 0005: // +; inc/sdfat.plh: 0006: // Open flags +; inc/sdfat.plh: 0007: // +; inc/sdfat.plh: 0008: const O_READ = $01 + ; O_READ = 1 +; inc/sdfat.plh: 0009: const O_WRITE = $02 + ; O_WRITE = 2 +; inc/sdfat.plh: 0010: const O_APPEND = $04 + ; O_APPEND = 4 +; inc/sdfat.plh: 0011: const O_SYNC = $08 + ; O_SYNC = 8 +; inc/sdfat.plh: 0012: const O_TRUNC = $10 + ; O_TRUNC = 16 +; inc/sdfat.plh: 0013: const O_AT_END = $20 + ; O_AT_END = 32 +; inc/sdfat.plh: 0014: const O_CREAT = $40 + ; O_CREAT = 64 +; inc/sdfat.plh: 0015: const O_EXCL = $80 + ; O_EXCL = 128 +; inc/sdfat.plh: 0016: const MAX_FAT_BUF_SIZE = 512 + ; MAX_FAT_BUF_SIZE = 512 +; inc/sdfat.plh: 0017: // +; inc/sdfat.plh: 0018: // Interface +; inc/sdfat.plh: 0019: // +; inc/sdfat.plh: 0020: struc t_sdFAT +; inc/sdfat.plh: 0021: word getDir + ; getDir = 0 +; inc/sdfat.plh: 0022: word setDir + ; setDir = 2 +; inc/sdfat.plh: 0023: word newDir + ; newDir = 4 +; inc/sdfat.plh: 0024: word removeDir + ; removeDir = 6 +; inc/sdfat.plh: 0025: word renameFile + ; renameFile = 8 +; inc/sdfat.plh: 0026: word removeFile + ; removeFile = 10 +; inc/sdfat.plh: 0027: word existsFile + ; existsFile = 12 +; inc/sdfat.plh: 0028: word openFirstFile + ; openFirstFile = 14 +; inc/sdfat.plh: 0029: word openNextFile + ; openNextFile = 16 +; inc/sdfat.plh: 0030: word openFile + ; openFile = 18 +; inc/sdfat.plh: 0031: word closeFile + ; closeFile = 20 +; inc/sdfat.plh: 0032: word readFile + ; readFile = 22 +; inc/sdfat.plh: 0033: word writeFile + ; writeFile = 24 +; inc/sdfat.plh: 0034: word syncFile + ; syncFile = 26 +; inc/sdfat.plh: 0035: word rewindFile + ; rewindFile = 28 +; inc/sdfat.plh: 0036: word seekFile + ; seekFile = 30 +; inc/sdfat.plh: 0037: word seekOffsetFile + ; seekOffsetFile = 32 +; inc/sdfat.plh: 0038: word posFile + ; posFile = 34 +; inc/sdfat.plh: 0039: word sizeOfFile + ; sizeOfFile = 36 +; inc/sdfat.plh: 0040: word truncateFile + ; truncateFile = 38 +; inc/sdfat.plh: 0041: word isDir + ; isDir = 40 +; inc/sdfat.plh: 0042: word isFile + ; isFile = 42 +; inc/sdfat.plh: 0043: end + ; t_sdFAT = 44 +; inc/sdfat.plh: 0044: end +; samplesrc/fatwritedsk.pla: 0004: +; samplesrc/fatwritedsk.pla: 0005: +; samplesrc/fatwritedsk.pla: 0006: const COPY_BUF_SIZE = 4096 // 4K + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; COPY_BUF_SIZE = 4096 +; samplesrc/fatwritedsk.pla: 0007: const COPY_BLK_SIZE = COPY_BUF_SIZE/512 + ; COPY_BLK_SIZE = 8 +; samplesrc/fatwritedsk.pla: 0008: const COPY_BLK_CNT = COPY_BLK_SIZE-1 + ; COPY_BLK_CNT = 7 +; samplesrc/fatwritedsk.pla: 0009: const DRIVE1 = $60 // drive 1, slot 6 + ; DRIVE1 = 96 +; samplesrc/fatwritedsk.pla: 0010: const DRIVE2 = $D0 // drive 2, slot 6 + ; DRIVE2 = 208 +; samplesrc/fatwritedsk.pla: 0011: const LOWER_DIFF = 'a' - 'A' + ; LOWER_DIFF = 32 +; samplesrc/fatwritedsk.pla: 0012: // +; samplesrc/fatwritedsk.pla: 0013: // Track sector order +; samplesrc/fatwritedsk.pla: 0014: // +; samplesrc/fatwritedsk.pla: 0015: const ORDER_DOS = 0 + ; ORDER_DOS = 0 +; samplesrc/fatwritedsk.pla: 0016: const ORDER_PRODOS = 1 + ; ORDER_PRODOS = 1 +; samplesrc/fatwritedsk.pla: 0017: +; samplesrc/fatwritedsk.pla: 0018: word arg, image +_D034 !FILL 2 ; arg, image +_D035 !FILL 2 ; image +; samplesrc/fatwritedsk.pla: 0019: byte unit = DRIVE1 +_D036 ; unit = DRIVE1 + !BYTE $60 +; samplesrc/fatwritedsk.pla: 0020: byte order +_D037 !FILL 1 ; order +; samplesrc/fatwritedsk.pla: 0021: +; samplesrc/fatwritedsk.pla: 0022: // +; samplesrc/fatwritedsk.pla: 0023: // DOS to ProDOS sector ordering +; samplesrc/fatwritedsk.pla: 0024: // +; samplesrc/fatwritedsk.pla: 0025: byte[] secOrder = $0,$E,$D,$C,$B,$A,$9,$8,$7,$6,$5,$4,$3,$2,$1,$F +_D038 ; secOrder = $0,$E,$D,$C,$B,$A,$9,$8,$7,$6,$5,$4,$3,$2,$1,$F + !BYTE $00 + !BYTE $0E + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $0F +; samplesrc/fatwritedsk.pla: 0026: +; samplesrc/fatwritedsk.pla: 0027: def putb(b)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; b -> [0] +_P008 ; putb(b)#0() +_C000 ; putb() +; samplesrc/fatwritedsk.pla: 0028: byte c + ; c -> [2] +; samplesrc/fatwritedsk.pla: 0029: c = ((b >> 4) & $0F) + '0' + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatwritedsk.pla: 0030: if c > '9' +; samplesrc/fatwritedsk.pla: 0031: c = c + 7 +; samplesrc/fatwritedsk.pla: 0032: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; samplesrc/fatwritedsk.pla: 0033: putc(c) +; samplesrc/fatwritedsk.pla: 0034: c = (b & $0F) + '0' +; samplesrc/fatwritedsk.pla: 0035: if c > '9' +; samplesrc/fatwritedsk.pla: 0036: c = c + 7 +; samplesrc/fatwritedsk.pla: 0037: fin + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $64,$02 ; LLB [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$02 ; SLB [2] +_B003 +_B004 +; samplesrc/fatwritedsk.pla: 0038: putc(c) +; samplesrc/fatwritedsk.pla: 0039: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatwritedsk.pla: 0040: +; samplesrc/fatwritedsk.pla: 0041: def getYN(prompt) + ; prompt -> [0] +_C001 ; getYN() +; samplesrc/fatwritedsk.pla: 0042: byte yn + ; yn -> [2] +; samplesrc/fatwritedsk.pla: 0043: +; samplesrc/fatwritedsk.pla: 0044: puts(prompt) + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/fatwritedsk.pla: 0045: yn = getc +; samplesrc/fatwritedsk.pla: 0046: putln +; samplesrc/fatwritedsk.pla: 0047: return yn == 'Y' or yn == 'y' + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F002 !WORD 0 + !BYTE $54 ; CALL _X006 +_F003 !WORD 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $54 ; CALL _X003 +_F004 !WORD 0 + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$59 ; CB 89 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B005 + !WORD _B005-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$79 ; CB 121 + !BYTE $40 ; ISEQ +_B005 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/fatwritedsk.pla: 0048: end +; samplesrc/fatwritedsk.pla: 0049: +; samplesrc/fatwritedsk.pla: 0050: def trkSecToBlk(bufSec, bufBlk)#0 + ; bufSec -> [0] + ; bufBlk -> [2] +_C002 ; trkSecToBlk() +; samplesrc/fatwritedsk.pla: 0051: byte sector + ; sector -> [4] +; samplesrc/fatwritedsk.pla: 0052: +; samplesrc/fatwritedsk.pla: 0053: for sector = 0 to 15 + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B007 + !BYTE $6C,$04 ; DLB [4] +; samplesrc/fatwritedsk.pla: 0054: memcpy(bufBlk + (sector << 8), bufSec + (secOrder[sector] << 8), 256) +; samplesrc/fatwritedsk.pla: 0055: next + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$04 ; LLB [4] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D038+0 +_F005 !WORD _D038+0 + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _X018 +_F006 !WORD 0 +_B008 + !BYTE $A4 ; INCBRLE _B007 + !WORD _B007-* +_B006 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; samplesrc/fatwritedsk.pla: 0056: end + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/fatwritedsk.pla: 0057: +; samplesrc/fatwritedsk.pla: 0058: def bigFatRead(buf, len) + ; buf -> [0] + ; len -> [2] +_C003 ; bigFatRead() +; samplesrc/fatwritedsk.pla: 0059: word xferLen, fatLen + ; xferLen -> [4] + ; fatLen -> [6] +; samplesrc/fatwritedsk.pla: 0060: +; samplesrc/fatwritedsk.pla: 0061: xferLen = 0 + !BYTE $58,$08,$02 ; ENTER 8,2 +; samplesrc/fatwritedsk.pla: 0062: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] +_B010 +; samplesrc/fatwritedsk.pla: 0063: if len > MAX_FAT_BUF_SIZE +; samplesrc/fatwritedsk.pla: 0064: fatLen = MAX_FAT_BUF_SIZE +; samplesrc/fatwritedsk.pla: 0065: else + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B012 +; samplesrc/fatwritedsk.pla: 0066: fatLen = len +; samplesrc/fatwritedsk.pla: 0067: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$06 ; SLW [6] +_B013 +; samplesrc/fatwritedsk.pla: 0068: fatLen = sdFAT:readFile(buf, fatLen) +; samplesrc/fatwritedsk.pla: 0069: if fatLen > 0 +; samplesrc/fatwritedsk.pla: 0070: xferLen = xferLen + fatLen +; samplesrc/fatwritedsk.pla: 0071: len = len - fatLen +; samplesrc/fatwritedsk.pla: 0072: buf = buf + fatLen +; samplesrc/fatwritedsk.pla: 0073: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X033+22 +_F007 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $6E,$06 ; DLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B015 + !WORD _B015-* +_B014 +; samplesrc/fatwritedsk.pla: 0074: len = 0 +; samplesrc/fatwritedsk.pla: 0075: fin + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B015 +; samplesrc/fatwritedsk.pla: 0076: until len == 0 +_B011 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* +_B009 +; samplesrc/fatwritedsk.pla: 0077: return xferLen + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/fatwritedsk.pla: 0078: end +; samplesrc/fatwritedsk.pla: 0079: +; samplesrc/fatwritedsk.pla: 0080: def fatWriteImage(src, drv, order) + ; src -> [0] + ; drv -> [2] + ; order -> [4] +_C004 ; fatWriteImage() +; samplesrc/fatwritedsk.pla: 0081: word inBuf, outBuf, copyLen, freeAddr + ; inBuf -> [6] + ; outBuf -> [8] + ; copyLen -> [10] + ; freeAddr -> [12] +; samplesrc/fatwritedsk.pla: 0082: word blocknum, bufblk + ; blocknum -> [14] + ; bufblk -> [16] +; samplesrc/fatwritedsk.pla: 0083: +; samplesrc/fatwritedsk.pla: 0084: outBuf = heapallocalign(COPY_BUF_SIZE * 2, 8, @freeAddr) + !BYTE $58,$12,$03 ; ENTER 18,3 +; samplesrc/fatwritedsk.pla: 0085: if not outBuf +; samplesrc/fatwritedsk.pla: 0086: puts("Not enough free memory!\n"); putln + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $10 ; CN 8 + !BYTE $28,$0C ; LLA [12] + !BYTE $54 ; CALL _X013 +_F008 !WORD 0 + !BYTE $6E,$08 ; DLW [8] + !BYTE $4E ; BRTRU _B016 + !WORD _B016-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $4E,$6F,$74,$20,$65,$6E,$6F,$75 + !BYTE $67,$68,$20,$66,$72,$65,$65,$20 + !BYTE $6D,$65,$6D,$6F,$72,$79,$21,$0D + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 +; samplesrc/fatwritedsk.pla: 0087: return -1 + !BYTE $54 ; CALL _X003 +_F010 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatwritedsk.pla: 0088: fin +_B016 +_B017 +; samplesrc/fatwritedsk.pla: 0089: if order == ORDER_DOS +; samplesrc/fatwritedsk.pla: 0090: inBuf = outBuf + COPY_BUF_SIZE +; samplesrc/fatwritedsk.pla: 0091: else + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B018 + !WORD _B018-* + !BYTE $66,$08 ; LLW [8] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B018 +; samplesrc/fatwritedsk.pla: 0092: inBuf = outBuf +; samplesrc/fatwritedsk.pla: 0093: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $76,$06 ; SLW [6] +_B019 +; samplesrc/fatwritedsk.pla: 0094: // +; samplesrc/fatwritedsk.pla: 0095: // Copy FAT image over one track at a time +; samplesrc/fatwritedsk.pla: 0096: // +; samplesrc/fatwritedsk.pla: 0097: if sdFAT:openFile(src, O_READ) +; samplesrc/fatwritedsk.pla: 0098: if !drv; putc(7); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _X033+18 +_F011 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X002 +_F012 !WORD 0 +_B022 +_B023 +; samplesrc/fatwritedsk.pla: 0099: for blocknum = 0 to 279 step COPY_BLK_SIZE + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $00 ; CN 0 +_B025 + !BYTE $6E,$0E ; DLW [14] +; samplesrc/fatwritedsk.pla: 0100: copyLen = bigFatRead(inBuf, COPY_BUF_SIZE) +; samplesrc/fatwritedsk.pla: 0101: if copyLen == COPY_BUF_SIZE +; samplesrc/fatwritedsk.pla: 0102: if drv +; samplesrc/fatwritedsk.pla: 0103: ^$24=^$20 // Move cursor to left edge +; samplesrc/fatwritedsk.pla: 0104: puts("Writing blocks: "); puti(blocknum) + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C003 +_F013 !WORD _C003 + !BYTE $6E,$0A ; DLW [10] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $24 ; BRNE _B027 + !WORD _B027-* + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $68,$20,$00 ; LAB 32 + !BYTE $78,$24,$00 ; SAB 36 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $57,$72,$69,$74,$69,$6E,$67,$20 + !BYTE $62,$6C,$6F,$63,$6B,$73,$3A,$20 + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 +; samplesrc/fatwritedsk.pla: 0105: if order == ORDER_DOS +; samplesrc/fatwritedsk.pla: 0106: trkSecToBlk(inBuf, outBuf) +; samplesrc/fatwritedsk.pla: 0107: fin + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _X005 +_F015 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B031 + !WORD _B031-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C002 +_F016 !WORD _C002 +_B031 +_B032 +; samplesrc/fatwritedsk.pla: 0108: for bufblk = 0 to COPY_BLK_CNT + !BYTE $0E ; CN 7 + !BYTE $00 ; CN 0 +_B034 + !BYTE $6E,$10 ; DLW [16] +; samplesrc/fatwritedsk.pla: 0109: if fileio:writeblock(drv, outBuf + (bufblk << 9), blocknum + bufblk) +; samplesrc/fatwritedsk.pla: 0110: puts("Write disk error: $"); putb(perr); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$10 ; LLW [16] + !BYTE $12 ; CN 9 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$0E ; LLW [14] + !BYTE $B2,$10 ; ADDLW [16] + !BYTE $6A ; LAW _X028+34 +_F017 !WORD 0+34 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $2E ; CS + !BYTE $13 + !BYTE $57,$72,$69,$74,$65,$20,$64,$69 + !BYTE $73,$6B,$20,$65,$72,$72,$6F,$72 + !BYTE $3A,$20,$24 + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 +; samplesrc/fatwritedsk.pla: 0111: break + !BYTE $68 ; LAB _X029+0 +_F019 !WORD 0+0 + !BYTE $54 ; CALL _C000 +_F020 !WORD _C000 + !BYTE $54 ; CALL _X003 +_F021 !WORD 0 + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +; samplesrc/fatwritedsk.pla: 0112: fin +_B036 +_B037 +; samplesrc/fatwritedsk.pla: 0113: next +_B035 + !BYTE $A4 ; INCBRLE _B034 + !WORD _B034-* +_B033 + !BYTE $76,$10 ; SLW [16] + !BYTE $30 ; DROP +; samplesrc/fatwritedsk.pla: 0114: fin +_B029 +_B030 +; samplesrc/fatwritedsk.pla: 0115: else + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B027 +; samplesrc/fatwritedsk.pla: 0116: puts("Read image file error\n"); + !BYTE $2E ; CS + !BYTE $16 + !BYTE $52,$65,$61,$64,$20,$69,$6D,$61 + !BYTE $67,$65,$20,$66,$69,$6C,$65,$20 + !BYTE $65,$72,$72,$6F,$72,$0D + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +; samplesrc/fatwritedsk.pla: 0117: fin +_B028 +; samplesrc/fatwritedsk.pla: 0118: if copyLen < COPY_BUF_SIZE or perr +; samplesrc/fatwritedsk.pla: 0119: puts("Error creating floppy: "); puts(src); putln + !BYTE $66,$0A ; LLW [10] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B038 + !WORD _B038-* + !BYTE $68 ; LAB _X029+0 +_F023 !WORD 0+0 +_B038 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $2E ; CS + !BYTE $17 + !BYTE $45,$72,$72,$6F,$72,$20,$63,$72 + !BYTE $65,$61,$74,$69,$6E,$67,$20,$66 + !BYTE $6C,$6F,$70,$70,$79,$3A,$20 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +; samplesrc/fatwritedsk.pla: 0120: break + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 + !BYTE $54 ; CALL _X003 +_F026 !WORD 0 + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +; samplesrc/fatwritedsk.pla: 0121: fin +_B039 +_B040 +; samplesrc/fatwritedsk.pla: 0122: next +_B026 + !BYTE $10 ; CN 8 + !BYTE $A6 ; ADDBRLE _B025 + !WORD _B025-* +_B024 + !BYTE $76,$0E ; SLW [14] + !BYTE $30 ; DROP +; samplesrc/fatwritedsk.pla: 0123: if !drv; putc(7);fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B041 + !WORD _B041-* + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X002 +_F027 !WORD 0 +_B041 +_B042 +; samplesrc/fatwritedsk.pla: 0124: putln +; samplesrc/fatwritedsk.pla: 0125: sdFAT:closeFile() +; samplesrc/fatwritedsk.pla: 0126: else + !BYTE $54 ; CALL _X003 +_F028 !WORD 0 + !BYTE $6A ; LAW _X033+20 +_F029 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B020 +; samplesrc/fatwritedsk.pla: 0127: puts("Error opening image file:"); puts(src); putln + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$69,$6D + !BYTE $61,$67,$65,$20,$66,$69,$6C,$65 + !BYTE $3A + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +; samplesrc/fatwritedsk.pla: 0128: return -1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 + !BYTE $54 ; CALL _X003 +_F032 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatwritedsk.pla: 0129: fin +_B021 +; samplesrc/fatwritedsk.pla: 0130: heaprelease(freeAddr) +; samplesrc/fatwritedsk.pla: 0131: return 0 + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _X015 +_F033 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$12 ; LEAVE 18 +; samplesrc/fatwritedsk.pla: 0132: end +; samplesrc/fatwritedsk.pla: 0133: +; samplesrc/fatwritedsk.pla: 0134: arg = argNext(argFirst) +_INIT +; samplesrc/fatwritedsk.pla: 0135: if ^arg +; samplesrc/fatwritedsk.pla: 0136: image = arg +; samplesrc/fatwritedsk.pla: 0137: arg = argNext(arg) +; samplesrc/fatwritedsk.pla: 0138: if ^arg +; samplesrc/fatwritedsk.pla: 0139: when ^(arg + 1) + !BYTE $54 ; CALL _X031 +_F034 !WORD 0 + !BYTE $54 ; CALL _X032 +_F035 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F036 !WORD _D034+0 + !BYTE $6A ; LAW _D034+0 +_F037 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $6A ; LAW _D034+0 +_F038 !WORD _D034+0 + !BYTE $7A ; SAW _D035+0 +_F039 !WORD _D035+0 + !BYTE $6A ; LAW _D034+0 +_F040 !WORD _D034+0 + !BYTE $54 ; CALL _X032 +_F041 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F042 !WORD _D034+0 + !BYTE $6A ; LAW _D034+0 +_F043 !WORD _D034+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B045 + !WORD _B045-* + !BYTE $6A ; LAW _D034+0 +_F044 !WORD _D034+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B048-* +; samplesrc/fatwritedsk.pla: 0140: is '2' // Drive 2 option +_B049 +; samplesrc/fatwritedsk.pla: 0141: unit = DRIVE2 +; samplesrc/fatwritedsk.pla: 0142: break + !BYTE $2A,$D0 ; CB 208 + !BYTE $78 ; SAB _D036+0 +_F045 !WORD _D036+0 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +; samplesrc/fatwritedsk.pla: 0143: is 'T' // Test speed option +_B050 +; samplesrc/fatwritedsk.pla: 0144: is 't' +_B051 +; samplesrc/fatwritedsk.pla: 0145: unit = 0 +; samplesrc/fatwritedsk.pla: 0146: break + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D036+0 +_F046 !WORD _D036+0 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +; samplesrc/fatwritedsk.pla: 0147: wend + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B048 + !BYTE $03 ; CASEBLOCK + !WORD $0032 + !WORD _B049-* + !WORD $0054 + !WORD _B050-* + !WORD $0074 + !WORD _B051-* +_B047 +; samplesrc/fatwritedsk.pla: 0148: fin +_B045 +_B046 +; samplesrc/fatwritedsk.pla: 0149: if unit +; samplesrc/fatwritedsk.pla: 0150: puts("Writing "); puts(image); puts(" to Drive "); putc((unit >> 7) + '1') + !BYTE $68 ; LAB _D036+0 +_F047 !WORD _D036+0 + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $57,$72,$69,$74,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 + !BYTE $6A ; LAW _D035+0 +_F049 !WORD _D035+0 + !BYTE $54 ; CALL _X004 +_F050 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$74,$6F,$20,$44,$72,$69,$76 + !BYTE $65,$20 + !BYTE $54 ; CALL _X004 +_F051 !WORD 0 +; samplesrc/fatwritedsk.pla: 0151: else + !BYTE $68 ; LAB _D036+0 +_F052 !WORD _D036+0 + !BYTE $0E ; CN 7 + !BYTE $9C ; SHR + !BYTE $38,$31 ; ADDI 49 + !BYTE $54 ; CALL _X002 +_F053 !WORD 0 + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B052 +; samplesrc/fatwritedsk.pla: 0152: puts("Speed test reading 143K from SD card"); + !BYTE $2E ; CS + !BYTE $24 + !BYTE $53,$70,$65,$65,$64,$20,$74,$65 + !BYTE $73,$74,$20,$72,$65,$61,$64,$69 + !BYTE $6E,$67,$20,$31,$34,$33,$4B,$20 + !BYTE $66,$72,$6F,$6D,$20,$53,$44,$20 + !BYTE $63,$61,$72,$64 + !BYTE $54 ; CALL _X004 +_F054 !WORD 0 +; samplesrc/fatwritedsk.pla: 0153: fin +_B053 +; samplesrc/fatwritedsk.pla: 0154: // +; samplesrc/fatwritedsk.pla: 0155: // Figure sector ordering from filename +; samplesrc/fatwritedsk.pla: 0156: // +; samplesrc/fatwritedsk.pla: 0157: puts("\nUsing ") + !BYTE $2E ; CS + !BYTE $07 + !BYTE $0D,$55,$73,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F055 !WORD 0 +; samplesrc/fatwritedsk.pla: 0158: if toupper(^(image + ^image)) == 'O' and toupper(^(image + ^image - 1)) == 'P' +; samplesrc/fatwritedsk.pla: 0159: order = ORDER_PRODOS +; samplesrc/fatwritedsk.pla: 0160: puts("ProDOS") + !BYTE $6A ; LAW _D035+0 +_F056 !WORD _D035+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F057 !WORD 0 + !BYTE $2A,$4F ; CB 79 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B054 + !WORD _B054-* + !BYTE $6A ; LAW _D035+0 +_F058 !WORD _D035+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8E ; DECR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F059 !WORD 0 + !BYTE $2A,$50 ; CB 80 + !BYTE $40 ; ISEQ +_B054 + !BYTE $4C ; BRFLS _B055 + !WORD _B055-* + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D037+0 +_F060 !WORD _D037+0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $50,$72,$6F,$44,$4F,$53 + !BYTE $54 ; CALL _X004 +_F061 !WORD 0 +; samplesrc/fatwritedsk.pla: 0161: else + !BYTE $50 ; BRNCH _B056 + !WORD _B056-* +_B055 +; samplesrc/fatwritedsk.pla: 0162: order = ORDER_DOS +; samplesrc/fatwritedsk.pla: 0163: puts("DOS 3.3") + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D037+0 +_F062 !WORD _D037+0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $44,$4F,$53,$20,$33,$2E,$33 + !BYTE $54 ; CALL _X004 +_F063 !WORD 0 +; samplesrc/fatwritedsk.pla: 0164: fin +_B056 +; samplesrc/fatwritedsk.pla: 0165: if getYN(" order. Continue? (Y/N)") + !BYTE $2E ; CS + !BYTE $17 + !BYTE $20,$6F,$72,$64,$65,$72,$2E,$20 + !BYTE $43,$6F,$6E,$74,$69,$6E,$75,$65 + !BYTE $3F,$20,$28,$59,$2F,$4E,$29 + !BYTE $54 ; CALL _C001 +_F064 !WORD _C001 + !BYTE $4C ; BRFLS _B057 + !WORD _B057-* +; samplesrc/fatwritedsk.pla: 0166: fatWriteImage(image, unit, order) +; samplesrc/fatwritedsk.pla: 0167: fin + !BYTE $6A ; LAW _D035+0 +_F065 !WORD _D035+0 + !BYTE $68 ; LAB _D036+0 +_F066 !WORD _D036+0 + !BYTE $68 ; LAB _D037+0 +_F067 !WORD _D037+0 + !BYTE $54 ; CALL _C004 +_F068 !WORD _C004 + !BYTE $30 ; DROP +_B057 +_B058 +; samplesrc/fatwritedsk.pla: 0168: else + !BYTE $50 ; BRNCH _B044 + !WORD _B044-* +_B043 +; samplesrc/fatwritedsk.pla: 0169: puts("Write DSK image to floppy disk drive\n") + !BYTE $2E ; CS + !BYTE $25 + !BYTE $57,$72,$69,$74,$65,$20,$44,$53 + !BYTE $4B,$20,$69,$6D,$61,$67,$65,$20 + !BYTE $74,$6F,$20,$66,$6C,$6F,$70,$70 + !BYTE $79,$20,$64,$69,$73,$6B,$20,$64 + !BYTE $72,$69,$76,$65,$0D + !BYTE $54 ; CALL _X004 +_F069 !WORD 0 +; samplesrc/fatwritedsk.pla: 0170: puts("Usage: +FATWRITEDSK [1,2,T]\n") + !BYTE $2E ; CS + !BYTE $2D + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $46,$41,$54,$57,$52,$49,$54,$45 + !BYTE $44,$53,$4B,$20,$3C,$44,$53,$4B + !BYTE $20,$69,$6D,$61,$67,$65,$20,$66 + !BYTE $69,$6C,$65,$3E,$20,$5B,$31,$2C + !BYTE $32,$2C,$54,$5D,$0D + !BYTE $54 ; CALL _X004 +_F070 !WORD 0 +; samplesrc/fatwritedsk.pla: 0171: fin +_B044 +; samplesrc/fatwritedsk.pla: 0172: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 6 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: SDFAT + !BYTE $D3,$C4,$C6,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/fibertest.a b/src/samplesrc/fibertest.a new file mode 100644 index 0000000..1002499 --- /dev/null +++ b/src/samplesrc/fibertest.a @@ -0,0 +1,329 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/fibertest.pla: 0001: // +; samplesrc/fibertest.pla: 0002: // Test Fiber library +; samplesrc/fibertest.pla: 0003: // +; samplesrc/fibertest.pla: 0004: +; samplesrc/fibertest.pla: 0005: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/fibertest.pla: 0005: +; samplesrc/fibertest.pla: 0006: include "inc/fiber.plh" +; inc/fiber.plh: 0001: import fiber + ; DCI STRING: FIBER + !BYTE $C6,$C9,$C2,$C5,$52 + ; FIBER -> X028 +; inc/fiber.plh: 0002: predef fbrInit(numPool), fbrStop(fid)#0, fbrExit#0, fbrStart(defaddr, param) + ; FBRINIT -> X029 + ; FBRSTOP -> X030 + ; FBREXIT -> X031 + ; FBRSTART -> X032 +; inc/fiber.plh: 0003: predef fbrYield#0, fbrHalt#0, fbrResume(fid)#0 + ; FBRYIELD -> X033 + ; FBRHALT -> X034 + ; FBRRESUME -> X035 +; inc/fiber.plh: 0004: byte fbrCount + ; FBRCOUNT -> X036 +; inc/fiber.plh: 0005: end +; samplesrc/fibertest.pla: 0006: +; samplesrc/fibertest.pla: 0007: +; samplesrc/fibertest.pla: 0008: def fbrTest(fid, param)#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; fid -> [0] + ; param -> [2] +_C000 ; fbrTest() +; samplesrc/fibertest.pla: 0009: byte i + ; i -> [4] +; samplesrc/fibertest.pla: 0010: +; samplesrc/fibertest.pla: 0011: for i = 1 to param + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $6C,$04 ; DLB [4] +; samplesrc/fibertest.pla: 0012: puti(fid); putln +; samplesrc/fibertest.pla: 0013: fbrYield +; samplesrc/fibertest.pla: 0014: next + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X005 +_F000 !WORD 0 + !BYTE $54 ; CALL _X003 +_F001 !WORD 0 + !BYTE $54 ; CALL _X033 +_F002 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; samplesrc/fibertest.pla: 0015: end + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/fibertest.pla: 0016: +; samplesrc/fibertest.pla: 0017: //puts("fbrSwap = "); puth(@fbrSwap); putln +; samplesrc/fibertest.pla: 0018: fbrInit(4) +_INIT +; samplesrc/fibertest.pla: 0019: fbrStart(@fbrTest, 3) +; samplesrc/fibertest.pla: 0020: fbrStart(@fbrTest, 2) +; samplesrc/fibertest.pla: 0021: fbrStart(@fbrTest, 1) +; samplesrc/fibertest.pla: 0022: while fbrCount > 1; fbrYield; loop + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X029 +_F003 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _C000+0 +_F004 !WORD _C000+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X032 +_F005 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _C000+0 +_F006 !WORD _C000+0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X032 +_F007 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _C000+0 +_F008 !WORD _C000+0 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X032 +_F009 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 + !BYTE $54 ; CALL _X033 +_F010 !WORD 0 +_B006 + !BYTE $68 ; LAB _X036+0 +_F011 !WORD 0+0 + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; samplesrc/fibertest.pla: 0023: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: FBRINIT + !BYTE $C6,$C2,$D2,$C9,$CE,$C9,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: FBRSTART + !BYTE $C6,$C2,$D2,$D3,$D4,$C1,$D2,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: FBRYIELD + !BYTE $C6,$C2,$D2,$D9,$C9,$C5,$CC,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: FBRCOUNT + !BYTE $C6,$C2,$D2,$C3,$CF,$D5,$CE,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 36 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/gfxdemo.a b/src/samplesrc/gfxdemo.a new file mode 100644 index 0000000..6dbe214 --- /dev/null +++ b/src/samplesrc/gfxdemo.a @@ -0,0 +1,599 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/gfxdemo.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/gfxdemo.pla: 0001: +; samplesrc/gfxdemo.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; samplesrc/gfxdemo.pla: 0002: +; samplesrc/gfxdemo.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; samplesrc/gfxdemo.pla: 0003: +; samplesrc/gfxdemo.pla: 0004: include "inc/grafix.plh" +; inc/grafix.plh: 0001: import grafix + ; DCI STRING: GRAFIX + !BYTE $C7,$D2,$C1,$C6,$C9,$58 + ; GRAFIX -> X033 +; inc/grafix.plh: 0002: predef pencolor(clr)#0 + ; PENCOLOR -> X034 +; inc/grafix.plh: 0003: predef fillcolor(clr)#0 + ; FILLCOLOR -> X035 +; inc/grafix.plh: 0004: predef fillscreen()#0 + ; FILLSCREEN -> X036 +; inc/grafix.plh: 0005: predef penmove(x, y)#0 + ; PENMOVE -> X037 +; inc/grafix.plh: 0006: predef plot(x, y)#0 + ; PLOT -> X038 +; inc/grafix.plh: 0007: predef line(x1, y1, x2, y2)#0 + ; LINE -> X039 +; inc/grafix.plh: 0008: predef lineto(x, y)#0 + ; LINETO -> X040 +; inc/grafix.plh: 0009: predef rect(x1, y1, x2, y2)#0 + ; RECT -> X041 +; inc/grafix.plh: 0010: predef fillrect(x1, y1, x2, y2)#0 + ; FILLRECT -> X042 +; inc/grafix.plh: 0011: predef bitblt(blk, pitch, x, y, width, height)#0 + ; BITBLT -> X043 +; inc/grafix.plh: 0012: predef drawmode(mode)#0 + ; DRAWMODE -> X044 +; inc/grafix.plh: 0013: predef setmode(mode)#0 + ; SETMODE -> X045 +; inc/grafix.plh: 0014: end +; samplesrc/gfxdemo.pla: 0004: +; samplesrc/gfxdemo.pla: 0005: +; samplesrc/gfxdemo.pla: 0006: var arg + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D046 !FILL 2 ; arg +; samplesrc/gfxdemo.pla: 0007: byte ref +_D047 !FILL 1 ; ref +; samplesrc/gfxdemo.pla: 0008: +; samplesrc/gfxdemo.pla: 0009: def showimage#0 +_SUBSEG ; BYTECODE STARTS +_C000 ; showimage() +; samplesrc/gfxdemo.pla: 0010: var row, x + ; row -> [0] + ; x -> [2] +; samplesrc/gfxdemo.pla: 0011: byte scanline[140] + ; scanline -> [4] +; samplesrc/gfxdemo.pla: 0012: +; samplesrc/gfxdemo.pla: 0013: for row = 0 to 191 + !BYTE $58,$90,$00 ; ENTER 144,0 + !BYTE $2A,$BF ; CB 191 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/gfxdemo.pla: 0014: // +; samplesrc/gfxdemo.pla: 0015: // Read one scanline at a time, scale it, and draw it +; samplesrc/gfxdemo.pla: 0016: // +; samplesrc/gfxdemo.pla: 0017: fileio:read(ref, @scanline, 140) +; samplesrc/gfxdemo.pla: 0018: for x = 139 downto 0 + !BYTE $68 ; LAB _D047+0 +_F000 !WORD _D047+0 + !BYTE $28,$04 ; LLA [4] + !BYTE $2A,$8C ; CB 140 + !BYTE $6A ; LAW _X031+18 +_F001 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $2A,$8B ; CB 139 +_B005 + !BYTE $6E,$02 ; DLW [2] +; samplesrc/gfxdemo.pla: 0019: //scanline[x] = scanline[x] >> 4 +; samplesrc/gfxdemo.pla: 0020: pencolor(scanline[x] >> 4) +; samplesrc/gfxdemo.pla: 0021: plot(x, row) +; samplesrc/gfxdemo.pla: 0022: next + !BYTE $28,$04 ; LLA [4] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $54 ; CALL _X034 +_F002 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X038 +_F003 !WORD 0 +_B006 + !BYTE $A8 ; DECBRGE _B005 + !WORD _B005-* +_B004 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; samplesrc/gfxdemo.pla: 0023: next +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/gfxdemo.pla: 0024: end + !BYTE $5A,$90 ; LEAVE 144 +; samplesrc/gfxdemo.pla: 0025: +; samplesrc/gfxdemo.pla: 0026: arg = argNext(argFirst) +_INIT +; samplesrc/gfxdemo.pla: 0027: if ^arg +; samplesrc/gfxdemo.pla: 0028: ref = fileio:open(arg) +; samplesrc/gfxdemo.pla: 0029: if ref +; samplesrc/gfxdemo.pla: 0030: setmode(3) // 140 x 192 full color (or greyscale) +; samplesrc/gfxdemo.pla: 0031: showimage +; samplesrc/gfxdemo.pla: 0032: fileio:close(ref) +; samplesrc/gfxdemo.pla: 0033: getc +; samplesrc/gfxdemo.pla: 0034: setmode(-1) +; samplesrc/gfxdemo.pla: 0035: else + !BYTE $54 ; CALL _X029 +_F004 !WORD 0 + !BYTE $54 ; CALL _X030 +_F005 !WORD 0 + !BYTE $7A ; SAW _D046+0 +_F006 !WORD _D046+0 + !BYTE $6A ; LAW _D046+0 +_F007 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $6A ; LAW _D046+0 +_F008 !WORD _D046+0 + !BYTE $6A ; LAW _X031+14 +_F009 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D047+0 +_F010 !WORD _D047+0 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X045 +_F011 !WORD 0 + !BYTE $54 ; CALL _C000 +_F012 !WORD _C000 + !BYTE $68 ; LAB _D047+0 +_F013 !WORD _D047+0 + !BYTE $6A ; LAW _X031+16 +_F014 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X006 +_F015 !WORD 0 + !BYTE $30 ; DROP + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X045 +_F016 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; samplesrc/gfxdemo.pla: 0036: puts("Unable to open "); puts(arg); putln + !BYTE $2E ; CS + !BYTE $0F + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$6F,$70,$65,$6E,$20 + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +; samplesrc/gfxdemo.pla: 0037: fin + !BYTE $6A ; LAW _D046+0 +_F018 !WORD _D046+0 + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 + !BYTE $54 ; CALL _X003 +_F020 !WORD 0 +_B010 +; samplesrc/gfxdemo.pla: 0038: else + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; samplesrc/gfxdemo.pla: 0039: puts("Usage: gfxdemo \n") + !BYTE $2E ; CS + !BYTE $1B + !BYTE $55,$73,$61,$67,$65,$3A,$20,$67 + !BYTE $66,$78,$64,$65,$6D,$6F,$20,$3C + !BYTE $69,$6D,$61,$67,$65,$66,$69,$6C + !BYTE $65,$3E,$0D + !BYTE $54 ; CALL _X004 +_F021 !WORD 0 +; samplesrc/gfxdemo.pla: 0040: fin +_B008 +; samplesrc/gfxdemo.pla: 0041: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: PENCOLOR + !BYTE $D0,$C5,$CE,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: PLOT + !BYTE $D0,$CC,$CF,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: SETMODE + !BYTE $D3,$C5,$D4,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/grtest.a b/src/samplesrc/grtest.a new file mode 100644 index 0000000..d992421 --- /dev/null +++ b/src/samplesrc/grtest.a @@ -0,0 +1,639 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/grtest.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/grtest.pla: 0001: +; samplesrc/grtest.pla: 0002: include "inc/grlib.plh" +; inc/grlib.plh: 0001: import grlib + ; DCI STRING: GRLIB + !BYTE $C7,$D2,$CC,$C9,$42 + ; GRLIB -> X028 +; inc/grlib.plh: 0002: predef grPlot(x, y)#0 + ; GRPLOT -> X029 +; inc/grlib.plh: 0003: predef grHLin(x1, x2, y)#0 + ; GRHLIN -> X030 +; inc/grlib.plh: 0004: predef grVLin(y1, y2, x)#0 + ; GRVLIN -> X031 +; inc/grlib.plh: 0005: predef grBLT(x, y, width, height, src)#0 + ; GRBLT -> X032 +; inc/grlib.plh: 0006: predef grTile(x, y, src)#0 + ; GRTILE -> X033 +; inc/grlib.plh: 0007: predef grTileStr(x, y, tilestr, strlen, tilebuff)#0 + ; GRTILESTR -> X034 +; inc/grlib.plh: 0008: predef grFill(x, y, tile)#0 + ; GRFILL -> X035 +; inc/grlib.plh: 0009: predef dgrVLB#0 + ; DGRVLB -> X036 +; inc/grlib.plh: 0010: predef grClear(clr)#0 + ; GRCLEAR -> X037 +; inc/grlib.plh: 0011: predef grMode(mode)#1 + ; GRMODE -> X038 +; inc/grlib.plh: 0012: predef grShow(page)#1 + ; GRSHOW -> X039 +; inc/grlib.plh: 0013: predef grSwap#0 + ; GRSWAP -> X040 +; inc/grlib.plh: 0014: predef grDrawBuf(page)#0 + ; GRDRAWBUF -> X041 +; inc/grlib.plh: 0015: predef grColor(clr)#0 + ; GRCOLOR -> X042 +; inc/grlib.plh: 0016: end +; samplesrc/grtest.pla: 0002: +; samplesrc/grtest.pla: 0003: include "inc/lines.plh" +; inc/lines.plh: 0001: import lines + ; DCI STRING: LINES + !BYTE $CC,$C9,$CE,$C5,$53 + ; LINES -> X043 +; inc/lines.plh: 0002: predef setlinespans(h, v)#0 + ; SETLINESPANS -> X044 +; inc/lines.plh: 0003: predef linespans(x1, y1, x2, y2)#0 + ; LINESPANS -> X045 +; inc/lines.plh: 0004: predef setlineplot(p)#0 + ; SETLINEPLOT -> X046 +; inc/lines.plh: 0005: predef line(x1, y1, x2, y2)#0 + ; LINE -> X047 +; inc/lines.plh: 0006: end +; samplesrc/grtest.pla: 0003: +; samplesrc/grtest.pla: 0004: sysflags restxt1|restxt2 // Reserve all text pages + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0003 ; SYSTEM FLAGS +; samplesrc/grtest.pla: 0005: +; samplesrc/grtest.pla: 0006: byte[] sprite1 = $80,$80,$00,$00,$00,$00,$80,$80 +_D048 ; sprite1 = $80,$80,$00,$00,$00,$00,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $80 + !BYTE $80 +; samplesrc/grtest.pla: 0007: byte[] = $80,$00,$0A,$0A,$0A,$0A,$00,$80 + !BYTE $80 + !BYTE $00 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $00 + !BYTE $80 +; samplesrc/grtest.pla: 0008: byte[] = $00,$0A,$0F,$0F,$0F,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/grtest.pla: 0009: byte[] = $00,$0A,$0F,$80,$80,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $80 + !BYTE $80 + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/grtest.pla: 0010: byte[] = $00,$0A,$0F,$80,$80,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $80 + !BYTE $80 + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/grtest.pla: 0011: byte[] = $00,$0A,$0F,$0F,$0F,$0F,$0A,$00 + !BYTE $00 + !BYTE $0A + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0A + !BYTE $00 +; samplesrc/grtest.pla: 0012: byte[] = $80,$00,$0A,$0A,$0A,$0A,$00,$80 + !BYTE $80 + !BYTE $00 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $00 + !BYTE $80 +; samplesrc/grtest.pla: 0013: byte[] = $80,$80,$00,$00,$00,$00,$80,$80 + !BYTE $80 + !BYTE $80 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $80 + !BYTE $80 +; samplesrc/grtest.pla: 0014: +; samplesrc/grtest.pla: 0015: byte[] tile1 = $11,$11,$11,$11,$11,$11,$55,$00 +_D049 ; tile1 = $11,$11,$11,$11,$11,$11,$55,$00 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $55 + !BYTE $00 +; samplesrc/grtest.pla: 0016: byte[] = $11,$11,$11,$11,$11,$11,$55,$00 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $55 + !BYTE $00 +; samplesrc/grtest.pla: 0017: byte[] = $11,$11,$11,$11,$11,$11,$55,$00 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $55 + !BYTE $00 +; samplesrc/grtest.pla: 0018: byte[] = $05,$05,$05,$05,$05,$05,$05,$00 + !BYTE $05 + !BYTE $05 + !BYTE $05 + !BYTE $05 + !BYTE $05 + !BYTE $05 + !BYTE $05 + !BYTE $00 +; samplesrc/grtest.pla: 0019: +; samplesrc/grtest.pla: 0020: // +; samplesrc/grtest.pla: 0021: // Test routine +; samplesrc/grtest.pla: 0022: // +; samplesrc/grtest.pla: 0023: def grTest#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; grTest() +; samplesrc/grtest.pla: 0024: byte b, l, k + ; b -> [0] + ; l -> [1] + ; k -> [2] +; samplesrc/grtest.pla: 0025: word i, j, ii, ij + ; i -> [3] + ; j -> [5] + ; ii -> [7] + ; ij -> [9] +; samplesrc/grtest.pla: 0026: +; samplesrc/grtest.pla: 0027: b = grMode(TRUE) + !BYTE $58,$0B,$00 ; ENTER 11,0 +; samplesrc/grtest.pla: 0028: grDrawBuf(0) +; samplesrc/grtest.pla: 0029: for k = 15 downto 0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X038 +_F000 !WORD 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X041 +_F001 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $1E ; CN 15 +_B002 + !BYTE $6C,$02 ; DLB [2] +; samplesrc/grtest.pla: 0030: grClear(k) +; samplesrc/grtest.pla: 0031: next + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X037 +_F002 !WORD 0 +_B003 + !BYTE $A8 ; DECBRGE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; samplesrc/grtest.pla: 0032: setlinespans(@grHLin, @grVLin) +; samplesrc/grtest.pla: 0033: for l = 0 to 39 + !BYTE $26 ; LA _X030+0 +_F003 !WORD 0+0 + !BYTE $26 ; LA _X031+0 +_F004 !WORD 0+0 + !BYTE $54 ; CALL _X044 +_F005 !WORD 0 + !BYTE $2A,$27 ; CB 39 + !BYTE $00 ; CN 0 +_B005 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/grtest.pla: 0034: grColor(l) +; samplesrc/grtest.pla: 0035: linespans(0, 0, l, 47) +; samplesrc/grtest.pla: 0036: next + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X042 +_F006 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $64,$01 ; LLB [1] + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X045 +_F007 !WORD 0 +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/grtest.pla: 0037: for l = 47 downto 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$2F ; CB 47 +_B008 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/grtest.pla: 0038: grColor(l) +; samplesrc/grtest.pla: 0039: linespans(0, 0, 39, l) +; samplesrc/grtest.pla: 0040: next + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X042 +_F008 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$27 ; CB 39 + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X045 +_F009 !WORD 0 +_B009 + !BYTE $A8 ; DECBRGE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/grtest.pla: 0041: ii = 2 +; samplesrc/grtest.pla: 0042: ij = -1 +; samplesrc/grtest.pla: 0043: i = 20 +; samplesrc/grtest.pla: 0044: j = 10 +; samplesrc/grtest.pla: 0045: ^$C010 +; samplesrc/grtest.pla: 0046: grDrawBuf(1) +; samplesrc/grtest.pla: 0047: while ^$C000 < 128 + !BYTE $04 ; CN 2 + !BYTE $76,$07 ; SLW [7] + !BYTE $20 ; MINUS ONE + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$14 ; CB 20 + !BYTE $76,$03 ; SLW [3] + !BYTE $14 ; CN 10 + !BYTE $76,$05 ; SLW [5] + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X041 +_F010 !WORD 0 + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +_B010 +; samplesrc/grtest.pla: 0048: grFill(k, k, @tile1) +; samplesrc/grtest.pla: 0049: grBLT(i, j, 8, 8, @sprite1) +; samplesrc/grtest.pla: 0050: grSwap +; samplesrc/grtest.pla: 0051: k++ + !BYTE $64,$02 ; LLB [2] + !BYTE $34 ; DUP + !BYTE $26 ; LA _D049+0 +_F011 !WORD _D049+0 + !BYTE $54 ; CALL _X035 +_F012 !WORD 0 + !BYTE $66,$03 ; LLW [3] + !BYTE $66,$05 ; LLW [5] + !BYTE $10 ; CN 8 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D048+0 +_F013 !WORD _D048+0 + !BYTE $54 ; CALL _X032 +_F014 !WORD 0 + !BYTE $54 ; CALL _X040 +_F015 !WORD 0 + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR +; samplesrc/grtest.pla: 0052: i = i + ii +; samplesrc/grtest.pla: 0053: if i < -3 or i > 35 +; samplesrc/grtest.pla: 0054: ii = -ii +; samplesrc/grtest.pla: 0055: fin + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $6E,$03 ; DLW [3] + !BYTE $5E,$FD ; CFFB -3 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B013 + !WORD _B013-* + !BYTE $66,$03 ; LLW [3] + !BYTE $2A,$23 ; CB 35 + !BYTE $44 ; ISGT +_B013 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$07 ; LLW [7] + !BYTE $90 ; NEG + !BYTE $76,$07 ; SLW [7] +_B014 +_B015 +; samplesrc/grtest.pla: 0056: j = j + ij +; samplesrc/grtest.pla: 0057: if j < -3 or j > 43 +; samplesrc/grtest.pla: 0058: ij = -ij +; samplesrc/grtest.pla: 0059: fin + !BYTE $66,$05 ; LLW [5] + !BYTE $B2,$09 ; ADDLW [9] + !BYTE $6E,$05 ; DLW [5] + !BYTE $5E,$FD ; CFFB -3 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B016 + !WORD _B016-* + !BYTE $66,$05 ; LLW [5] + !BYTE $2A,$2B ; CB 43 + !BYTE $44 ; ISGT +_B016 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $66,$09 ; LLW [9] + !BYTE $90 ; NEG + !BYTE $76,$09 ; SLW [9] +_B017 +_B018 +; samplesrc/grtest.pla: 0060: loop +_B012 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* +_B011 +; samplesrc/grtest.pla: 0061: ^$C010 +; samplesrc/grtest.pla: 0062: grMode(FALSE) +; samplesrc/grtest.pla: 0063: end + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X038 +_F016 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/grtest.pla: 0064: +; samplesrc/grtest.pla: 0065: grTest +_INIT +; samplesrc/grtest.pla: 0066: done + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: GRHLIN + !BYTE $C7,$D2,$C8,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: GRVLIN + !BYTE $C7,$D2,$D6,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: GRBLT + !BYTE $C7,$D2,$C2,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: GRFILL + !BYTE $C7,$D2,$C6,$C9,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: GRCLEAR + !BYTE $C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: GRMODE + !BYTE $C7,$D2,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: GRSWAP + !BYTE $C7,$D2,$D3,$D7,$C1,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + ; DCI STRING: GRDRAWBUF + !BYTE $C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 41 ; ESD INDEX + ; DCI STRING: GRCOLOR + !BYTE $C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 42 ; ESD INDEX + ; DCI STRING: SETLINESPANS + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 44 ; ESD INDEX + ; DCI STRING: LINESPANS + !BYTE $CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/hgrogue.combat.pla b/src/samplesrc/hgrogue.combat.pla new file mode 100644 index 0000000..4faea46 --- /dev/null +++ b/src/samplesrc/hgrogue.combat.pla @@ -0,0 +1,212 @@ +include "inc/cmdsys.plh" +include "inc/conio.plh" + +import roguemap + predef moveplayer +end + +struc t_pos + byte xpos + byte ypos +end + +// +// Player +// + +struc t_player + byte[t_pos] + byte angle + byte lamp + byte fov + byte skill + byte health + byte energy + word oil + byte gold + byte key + byte raft + byte[32] name[32] +end + +// +// ASCII Warrior +// + +byte[] ascii_warrior +byte = " | " +byte = " T " +byte = " \\ () " +byte = " \\^ " +byte = " #\\_] " +byte = " # ] " +byte = " /\\ " +byte = " / \\ " +byte = " / / " +byte = " = = " + +// +// Other monsters +// + +struc t_other + byte[t_pos] + byte kind + byte tileid + byte life + byte power + word prev_other + word next_other +end + +// +// ASCII Enemy Art +// +byte[] ascii_thief +byte = " " +byte = " " +byte = " ____ " +byte = " /o_o\\\\ " +byte = "| \\ = // " +byte = "T /###|\\\\ " +byte = "@==###||| " +byte = " xxx@// " +byte = " #|#|\\\\ " +byte = " #|#| \\\\" + +byte[] ascii_ogre +byte = " :^; " +byte = " @ }\"{ " +byte = " # /'\\ " +byte = " ##=<#>=##" +byte = " ===== #" +byte = " \\===/ ?" +byte = " ===== :" +byte = " ()^() :" +byte = " () () *" +byte = " {{} {}} " + +byte[] ascii_zombie +byte = " \\\\/ " +byte = " {o|0} " +byte = " { ^ } " +byte = " ### " +byte = " /:\\ " +byte = " /%%%%%\\ " +byte = "|%%%//%%|\\" +byte = "|%%%\\%%%||" +byte = "|%%//%%%/|" +byte = "<===|@___/" + +byte[] ascii_rogue +byte = " " +byte = " \\ / " +byte = " < - - > " +byte = " ( \" ) " +byte = " \\VVV/ " +byte = " \\M/ " +byte = " ^^^^^^ " +byte = " / \\ " +byte = "( ) ^^>--=" +byte = "( ) WW>--//" + +word ascii_entity = @ascii_thief, @ascii_ogre, @ascii_zombie, @ascii_rogue +// +// Monster types +// +byte thief = "Thief", 5 +byte ogre = "Ogre", 20 +byte zombie = "Zombie", 40 +byte rogue = "Rogue", 80 +export word entity = @thief, @ogre, @zombie, @rogue +export word entities = 0 + +// +// Combat Return 1 if running away, 0 if end of fight +// + +def win#0 + conio:tone(30, 15) + conio:tone(5, 15) + conio:tone(5, 15) + conio:tone(30, 5) +end + +export def fight(player, enemy) + word p_atck, e_atck + + conio:echo(ECHO_ON) + repeat + conio:home() + conio:gotoxy(0, 0) + puts(player+name) + conio:gotoxy(1, 2) + puts("Skill :"); puti(player->skill) + conio:gotoxy(1, 3) + puts("Health :"); puti(player->health) + conio:gotoxy(1, 4) + puts("Energy :"); puti(player->energy) + conio:gotoxy(20, 0) + puts(entity[enemy->kind]) + conio:gotoxy(21, 2) + puts("Power :"); puti(enemy->power) + conio:gotoxy(21, 3) + puts("Life :"); puti(enemy->life) + for e_atck = 0 to 9 + conio:gotoxy(0, 10 + e_atck) + puts(@ascii_warrior + e_atck * 11) + conio:gotoxy(20, 10 + e_atck) + puts(ascii_entity[enemy->kind] + e_atck * 11) + next + conio:gotoxy(12, 8); puts("F)ight or R)un?") + if toupper(conio:getkey()) == 'R' + conio:echo(ECHO_OFF) + return 1 + fin + // + // Turn player in random direction + // + player->angle = conio:rnd() & 7 + // + // Calculate attack (with a little random variation) + // + p_atck = player->skill + player->energy / 10 - enemy->power / 25 + (conio:rnd() & 7) + e_atck = enemy->power - player->skill / 5 - player->energy / 20 + (conio:rnd() & 7) + if enemy->life > p_atck + enemy->life = enemy->life - p_atck + else + win + enemy->life = 0 + p_atck = player->skill + enemy->power / 3 + if p_atck > 100 // Limit skill + p_atck = 100 + fin + player->skill = p_atck + // + // Unlink dead enemy from entities list + // + if enemy == entities + entities = enemy=>next_other + fin + if enemy=>next_other + enemy=>next_other=>prev_other = enemy=>prev_other + fin + if enemy=>prev_other + enemy=>prev_other=>next_other = enemy=>next_other + fin + fin + if player->health > e_atck + player->health = player->health - e_atck + else + player->energy = 0 + player->health = 0 + fin + if player->energy >= 4 + player->energy = player->energy - 4 + fin + until player->health == 0 or enemy->life == 0 + conio:echo(ECHO_OFF) + return 0 +end + +done diff --git a/src/samplesrc/hgrogue.map.pla b/src/samplesrc/hgrogue.map.pla new file mode 100644 index 0000000..7cf6cd5 --- /dev/null +++ b/src/samplesrc/hgrogue.map.pla @@ -0,0 +1,464 @@ +// +// Map module +// +include "inc/cmdsys.plh" +include "inc/conio.plh" +include "inc/fileio.plh" + +// +// Title page +// + +byte[] initstr +byte = " ( )\n" +byte = " )\\ ) ( /( (\n" +byte = "(()/( )\\()) )\\ ) ( (\n" +byte = " /(_))((_)\\ (()/( )\\ )\\\n" +byte = "(_)) ((_) /(_))_ _ ((_)((_)\n" +byte = "| _ \\ / _ \\(_)) __|| | | || __|\n" +byte = "| / | (_) | | (_ || |_| || _|\n" +byte = "|_|_\\ \\___/ \\___| \\___/ |___|\n" +byte = "\n" +byte = " By Resman\n" +byte = " Artwork by Seth Sternberger\n" +byte = "" +word titlestr = @initstr + +// +// Octant beam parameters +// + +const beamdepth = 23 + +byte dbeam = 0,2,4,8,12,17,22,28,37,44,53,63,72,83,96,109,123,137,151,166,183,202,220,239 +const beampts = 240 + +word[] posibeam +word = 0 +word = 1,0 +word = 1,0 +word = 2,2,1,0 +word = 3,2,1,0 +word = 4,3,2,1,0 +word = 4,3,2,1,0 +word = 5,4,3,2,1,0 +word = 6,5,5,4,3,3,2,1,0 +word = 6,5,4,3,2,1,0 +word = 7,7,6,5,4,3,2,1,0 +word = 8,7,6,6,5,4,3,2,1,0 +word = 8,7,6,5,4,3,2,1,0 +word = 9,9,8,7,6,5,4,3,2,1,0 +word = 10,9,8,8,7,6,5,4,4,3,2,1,0 +word = 11,10,10,9,8,7,6,5,4,3,2,1,0 +word = 11,10,9,9,8,7,7,6,5,4,3,2,1,0 +word = 12,12,11,10,9,8,7,6,5,4,3,2,1,0 +word = 13,12,11,10,9,8,7,6,5,4,3,2,1,0 +word = 13,12,11,11,10,9,8,7,6,5,4,3,2,1,0 +word = 14,14,13,12,11,10,10,9,8,7,6,5,4,3,2,1,0 +word = 15,14,13,13,12,12,11,10,9,8,8,7,6,5,4,3,2,1,0 +word = 16,15,14,13,12,11,10,9,8,7,6,5,5,4,3,2,1,0 +word = 16,15,15,14,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 +word[] posjbeam +word = 0 +word = 1,1 +word = 2,2 +word = 2,3,3,3 +word = 3,4,4,4 +word = 4,4,5,5,5 +word = 5,5,6,6,6 +word = 5,6,6,7,7,7 +word = 6,6,7,7,7,8,8,8,8 +word = 7,8,8,9,9,9,9 +word = 7,8,8,9,9,10,10,10,10 +word = 8,9,9,10,10,10,11,11,11,11 +word = 9,10,11,11,11,12,12,12,12 +word = 9,10,10,11,12,12,12,13,13,13,13 +word = 10,11,11,12,12,13,13,13,14,14,14,14,14 +word = 11,11,12,12,13,13,14,14,15,15,15,15,15 +word = 12,13,13,14,14,14,15,15,15,16,16,16,16,16 +word = 12,13,13,14,15,15,16,16,16,17,17,17,17,17 +word = 13,14,14,15,16,16,17,17,17,18,18,18,18,18 +word = 14,15,15,16,16,17,17,18,18,18,19,19,19,19,19 +word = 14,15,15,16,17,17,18,18,18,19,19,19,20,20,20,20,20 +word = 15,16,16,17,17,18,18,19,19,19,20,20,20,20,21,21,21,21,21 +word = 16,16,17,18,19,19,20,20,21,21,21,21,22,22,22,22,22,22 +word = 17,17,18,18,19,19,20,20,21,21,22,22,22,23,23,23,23,23,23 +word[beampts] negibeam, negjbeam + +byte[] vbeam +byte = 0 +byte = 0,0 +byte = 2,2 +byte = 1,3,4,4 +byte = 5,7,7,8 +byte = 9,6,11,11,12 +byte = 14,10,16,16,17 +byte = 13,19,15,21,21,22 +byte = 23,18,24,25,20,26,26,27,28 +byte = 30,32,33,35,35,36,37 +byte = 29,38,31,40,34,42,42,43,44 +byte = 45,47,39,48,49,41,51,51,52,53 +byte = 46,56,58,59,50,60,61,62,63 +byte = 54,64,55,57,67,68,60,69,70,71,72 +byte = 73,75,65,76,66,78,79,69,80,80,81,82,83 +byte = 84,74,85,86,88,77,90,91,93,93,94,95,96 +byte = 98,100,87,101,102,89,103,104,92,105,106,107,108,109 +byte = 97,110,99,112,114,115,117,118,105,119,120,121,122,123 +byte = 124,126,111,113,129,116,131,132,119,133,134,135,136,137 +byte = 125,140,127,141,128,143,130,145,146,133,147,148,149,150,151 +byte = 138,152,139,154,156,142,157,158,144,160,161,147,162,163,164,165,166 +byte = 167,169,153,170,155,171,172,174,175,159,176,177,178,178,179,180,181,182,183 +byte = 184,168,186,188,190,173,192,193,195,196,197,197,214,198,199,200,201,202 +byte = 204,185,205,187,206,189,208,191,210,194,212,213,214,215,216,217,218,219,220 + +byte[beampts] vispix = 1 + +const rowshift = 6 +const maprows = 64 +const mapcols = 64 +const mapsize = maprows*mapcols + +const WALL_TILE = '#' +const FLOOR_TILE = '.' +const TORCH_TILE = '*' +const PIT_TILE = ' ' +const DOOR_TILE = '+' +const LOCKED_TILE = '%' +const WATER1_TILE = '>' +const WATER2_TILE = '<' +const KEY_TILE = ',' +const RAFT_TILE = '@' +const GOLD_TILE = '$' +const FOOD_TILE = '&' +const ENTER_TILE = '-' +const EXIT_TILE = '=' +const OPAQUE_TILE = $01 +const VIEWED_TILE = $80 +const LIT_TILE = $80 +const INV_TILE = $3F +const MAP_TILE = $7F + +byte catacomb = "LEVEL0" +word map, viewmap + +const xcentr = 20 +const ycentr = 12 +const scrnwidth = 40 +const scrnheight = 22 + +// +// Buffer to void checks in octant caster +// + +byte[scrnwidth] linebuffer + +word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer + +word[] screen +word = $400, $480, $500, $580, $600, $680, $700, $780 +word = $428, $4A8, $528, $5A8, $628, $6A8, $728, $7A8 +word = $450, $4D0, $550, $5D0, $650, $6D0, $750, @linebuffer // $7D0 + +word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer + +// +// Load map - levels 0 to 9 +// + +export def loadmap(level) + byte mapref, row, l + + // + // Init the view map + // + if not viewmap + viewmap = heapalloc(mapsize) + fin + memset(viewmap, $A0A0, mapsize) + // + // Load catacomb map from file + // + if not map + map = heapalloc(mapsize) + fin + memset(map, $2323, mapsize) // Solid walls + // + // Set level map and read it + // + catacomb[catacomb] = '0' + level + mapref = fileio:open(@catacomb) + if mapref + fileio:newline(mapref, $7F, $0D) + for row = 1 to maprows - 2 + l = fileio:read(mapref, map + (row << 6) + 1, mapcols) + ^(map + (row << 6) + l) = WALL_TILE + next + fileio:close(mapref) + return TRUE + fin + return FALSE +end + +// +// Tile access to map +// + +export def getmaptile(xmap, ymap) + return ^(map + (ymap << rowshift) + xmap) +end + +export def setmaptile(xmap, ymap, tile)#0 + word imap + + imap = (ymap << rowshift) + xmap + ^(map + imap) = tile + if ^(viewmap + imap) <> $A0 + ^(viewmap + imap) = tile | VIEWED_TILE + fin +end + +export def updtmaptile(xmap, ymap, tile)#0 + word imap + + imap = (ymap << rowshift) + xmap + ^(map + imap) = (^(map + imap) & LIT_TILE) | tile + if ^(viewmap + imap) <> $A0 + ^(viewmap + imap) = tile | VIEWED_TILE + fin +end + +// +// Light torches in map +// + +export def lighttorches#0 + word imap, tmap + byte xmap, ymap, xt, yt + + for ymap = 1 to maprows - 2 + for xmap = 1 to mapcols - 2 + imap = (ymap << rowshift) + xmap + if ^(map + imap) & MAP_TILE == TORCH_TILE + for yt = ymap - 1 to ymap + 1 + for xt = xmap - 1 to xmap + 1 + tmap = (yt << rowshift) + xt + ^(map + tmap) = ^(map + tmap) | LIT_TILE + next + next + fin + next + if not (ymap & 7) + putc('.') + fin + next +end + +// +// Draw the map. Return 0 if any light visible, 1 if in complete darkness +// + +def castoctant(darkness, lightdist, viewdist, xorg, yorg, xbeam, ybeam)#1 + word imap + byte l, dist, tile, adjtile, occluded, + + dist = lightdist + 1 + occluded = 1 + // + // Run through lit octant beam points + // + for l = 1 to dbeam[lightdist] + // + // Check parent visiblity + // + if vispix[vbeam[l]] + imap = ((yorg + ybeam=>[l]) << rowshift) + xorg + xbeam=>[l] + tile = ^(map + imap) + if tile & OPAQUE_TILE + // + // The view stops here + // + vispix[l] = 0 + else + // + // This tile is transparent + // + vispix[l] = 1 + // + // Check adjacent tile for opaqueness - improves wall display + // + //adjtile = ^(map + imap + adjx) & INV_TILE + //if adjtile & OPAQUE_TILE + // ^(viewmap + imap + adjdir) = adjtile | VIEWED_TILE + // screen.[ycentr + ybeam=>[l], xcentr + xbeam=>[l]+1] = adjtile + //fin + fin + // + // Update view + // + ^(viewmap + imap) = tile | VIEWED_TILE + if tile <> PIT_TILE + screen.[ycentr + ybeam=>[l], xcentr + xbeam=>[l]] = tile & INV_TILE + fin + else + vispix[l] = 0 + fin + next + // + // Run through visible octant beam points + // + for l = dbeam[lightdist]+1 to dbeam[viewdist] + // + // Check parent visiblity + // + if vispix[vbeam[l]] + imap = ((yorg + ybeam=>[l]) << rowshift) + xorg + xbeam=>[l] + tile = ^(map + imap) + if tile & OPAQUE_TILE + // + // The view stops here + // + vispix[l] = 0 + else + // + // This tile is transparent + // + vispix[l] = 1 + occluded = 0 + fin + // + // If the tile is in light, update view + // + if tile & LIT_TILE + ^(viewmap + imap) = tile | VIEWED_TILE + screen.[ycentr + ybeam=>[l], xcentr + xbeam=>[l]] = tile & INV_TILE + darkness = FALSE + fin + else + vispix[l] = 0 + fin + // + // Advance beam distance + // + if l == dbeam[dist] + if occluded + // + // Beam fully occluded + // + return darkness + fin + // + // Update distance + // + occluded = 1 + dist++ + fin + next + return darkness +end +export def drawmap(xorg, yorg, viewfield, viewdir, lightdist, viewdist) + word ymap, xmap, imap, o + byte yscr, xscr, darkness, l + + if viewdist > beamdepth + viewdist = beamdepth + fin + if lightdist > viewdist + lightdist = viewdist + fin + // + // Clear screen + // + conio:home() + // + // Draw background map if in light + // + darkness = TRUE + imap = (yorg << rowshift) + xorg + if lightdist or ^(map + imap) & LIT_TILE + // + // Update current spot in viewmap + // + ^(viewmap + imap) = ^(map + imap) | VIEWED_TILE + // + // Draw the viewmap + // + xmap = xorg - xcentr + if xmap < 0 + l = mapcols + xscr = -xmap + xmap = 0 + else + l = mapcols - xmap + xscr = 0 + fin + if xscr + l > scrnwidth + l = scrnwidth - xscr + fin + for yscr = 0 to scrnheight + ymap = yscr - ycentr + yorg + if ymap >= 0 and ymap < maprows + memcpy(screen[yscr] + xscr, viewmap + (ymap << rowshift) + xmap, l) + fin + next + darkness = FALSE + fin + // + // Draw visible octants + // + for o = viewdir - viewfield - 1 to viewdir + viewfield + when o & 7 + is 0 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @negjbeam, @posibeam)//, 1) + break + is 1 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @negibeam, @posjbeam)//, -mapcols) + break + is 2 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @posibeam, @posjbeam)//, mapcols) + break + is 3 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @posjbeam, @posibeam)//, 1) + break + is 4 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @posjbeam, @negibeam)//, -1) + break + is 5 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @posibeam, @negjbeam)//, mapcols) + break + is 6 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @negibeam, @negjbeam)//, -mapcols) + break + is 7 + darkness = castoctant(darkness, lightdist, viewdist, xorg, yorg, @negjbeam, @negibeam)//, -1) + break + wend + next + return darkness +end + +// +// Draw other entities +// + +export def drawvisentity(xofst, yofst, tile)#0 + if screen.[ycentr+yofst, xcentr+xofst] < $80 + screen.[ycentr+yofst, xcentr+xofst] = tile + fin +end + +// +// Print title page +// + +conio:home() +while ^titlestr + puts(titlestr) + titlestr = titlestr + ^titlestr + 1 +loop +for map = 0 to beampts-1 + negibeam[map] = -posibeam[map] + negjbeam[map] = -posjbeam[map] +next +done diff --git a/src/samplesrc/hgrogue.pla b/src/samplesrc/hgrogue.pla new file mode 100755 index 0000000..add2fc1 --- /dev/null +++ b/src/samplesrc/hgrogue.pla @@ -0,0 +1,662 @@ +include "inc/cmdsys.plh" +include "inc/conio.plh" + +import roguemap + const xcentr = 20 + const ycentr = 12 + const scrnwidth = 40 + const scrnheight = 22 + const maprows = 64 + const mapcols = 64 + const mapsize = maprows*mapcols + + const FLOOR_TILE = '.' + const WALL_TILE = '#' + const TORCH_TILE = '*' + const PIT_TILE = ' ' + const DOOR_TILE = '+' + const LOCKED_TILE = '%' + const WATER1_TILE = '>' + const WATER2_TILE = '<' + const KEY_TILE = ',' + const RAFT_TILE = '@' + const GOLD_TILE = '$' + const FOOD_TILE = '&' + const ENTER_TILE = '-' + const EXIT_TILE = '=' + const OPAQUE_TILE = $01 + const VIEWED_TILE = $80 + const LIT_TILE = $80 + const INV_TILE = $3F + const MAP_TILE = $7F + + predef loadmap(level), getmaptile(xmap, ymap), setmaptile(xmap, ymap, tile)#0 + predef updtmaptile(xmap, ymap, tile)#0, lighttorches#0 + predef drawmap(xorg, yorg, viewfield, viewdir, lightdist, viewdist) + predef drawvisentity(xofst, yofst, tile)#0 +end + +import roguecombat + predef fight(player, enemy) + word entity, entities +end + +const maxlight = 10 +const maxview = 19 + +word xdir = 0, 1, 1, 1, 0, -1, -1, -1 +word ydir = -1, -1, 0, 1, 1, 1, 0, -1 +byte vplayer = '^', '\\', '>', '/', 'v', '\\', '<', '/' +byte totaldarkness = 0 +byte level = 0 +word free_entities + +// +// Power-ups +// + +const TORCH_OIL = 250 +const MANA = 50 +const RUN_ENERGY = 4 + +struc t_pos + byte xpos + byte ypos +end + +// +// Player +// + +struc t_player + byte[t_pos] + byte angle + byte lamp + byte fov + byte skill + byte health + byte energy + word oil + byte gold + byte key + byte raft + byte[16] name +end + +byte player = 0 // xpos +byte = 0 // ypos +byte = 4 // angle +byte = 4 // lamp +byte = 1 // fov +byte = 15 // skill +byte = 100 // health +byte = 100 // energy +word = 500 // oil +byte = 0 // gold +byte = 0 // key +byte = 0 // raft +byte[16] = "Player" + +predef moveplayer(dir)#0 + +// +// Other monsters +// + +struc t_other + byte[t_pos] + byte kind + byte tileid + byte life + byte power + word prev_other + word next_other +end + +// +// One line status strings +// + +const statusline = 23 + +byte helthstr = "Hlth:" +byte enrgystr = "NRG:" +byte oilstr = "Oil:" +byte goldstr = "Gld:" +byte keystr = "Key" +byte raftstr = "Flt" + +// +// Messages +// + +word instr +byte namestr = "\nGreetings Warrior,\n what is your name" +byte prepstr = "\nPrepare." +byte quitstr = "Are you sure you want to quit?" +byte youmadeitstr = "You made it out alive with $" +byte youdiedstr = "You perished inside the catacombs :-(" +byte againstr = "\n\nPlay again by typing: +rogue\n" + +// +// Utility functions +// + +def abs(i) + if i < 0 + i = -i + fin + return i +end + +// +// Sound functions +// + +def ouch#0 + conio:tone(128,5) +end + +def gotit#0 + conio:tone(10,8) + conio:tone(80,2) +end + +def fall#0 + byte i + + for i = 0 to 10 + conio:tone(50, i) + next +end + +def drown#0 + word i + + conio:tone(10,20) + conio:tone(10,1) + for i = 0 to 1000 + next + conio:tone(10,25) + conio:tone(10,2) + for i = 0 to 1000 + next + conio:tone(10,30) + conio:tone(10,3) +end + +def groan#0 + byte i + + for i = 0 to 5 + conio:tone(5, 40 + i) + next +end + +// +// Update status line +// + +def status#0 + conio:gotoxy(0, statusline) + puts(@helthstr) + puti(player.health) + conio:gotoxy(9, statusline) + puts(@enrgystr) + puti(player.energy) + conio:gotoxy(17, statusline) + puts(@oilstr) + puti(player:oil/10) + conio:gotoxy(25, statusline) + puts(@goldstr) + puti(player.gold) + if player.raft + conio:gotoxy(32, statusline) + puts(@raftstr) + fin + if player.key + conio:gotoxy(36, statusline) + puts(@keystr) + fin +end + +def clearstatus#0 + memset($07D0, $A0A0, 40) +end + +// +// Move player, check for obstacles +// + +def moveplayer(dir)#0 + byte xmove, ymove + + xmove = player.xpos + dir * xdir[player.angle] + ymove = player.ypos + dir * ydir[player.angle] + when getmaptile(xmove, ymove) & MAP_TILE + is PIT_TILE + fall + player.energy = 0 + player.health = 0 + break + is WATER1_TILE + is WATER2_TILE + if not player.raft + drown + player.energy = 0 + player.health = 0 + break + fin + is FLOOR_TILE + is TORCH_TILE + is KEY_TILE + is RAFT_TILE + is GOLD_TILE + is FOOD_TILE + if player.energy < 10 + player.fov = 0 + fin + if player.energy + player.energy = player.energy - 1 + fin + player.xpos = xmove + player.ypos = ymove + break + otherwise + ouch + wend +end + +// +// Find other entities in map and put in database +// + +def findentities#0 + word newother + byte xmap, ymap, what + + for ymap = 1 to maprows - 2 + for xmap = 2 to mapcols - 2 + what = 0 + when getmaptile(xmap, ymap) & MAP_TILE + is ENTER_TILE + player.xpos = xmap + player.ypos = ymap + if getmaptile(xmap, ymap - 1) & MAP_TILE == FLOOR_TILE + player.angle = 0 + else + player.angle = 4 + fin + break + is 'R' // Rogue + what = what + 1 + is 'Z' // Zombie + what = what + 1 + is 'O' // Ogre + what = what + 1 + is 'T' // Thief + newother = heapalloc(t_other) + newother->xpos = xmap + newother->ypos = ymap + newother->kind = what + newother->tileid = ^(entity[what] + 1) // First character of name string + newother->power = ^(entity[what] + ^entity[what] + 1) + newother->life = 100 + // + // Insert into head of entities list + // + newother=>prev_other = 0 + newother=>next_other = entities + if entities + entities=>prev_other = newother + fin + entities = newother + // + // Clear entity from map, replace with floor + // + setmaptile(xmap, ymap, FLOOR_TILE) + wend + next + if not (ymap & 7) + putc('.') + fin + next +end + +// +// Draw other entities on map if visible +// + +def drawentities#0 + word other, xofst, yofst + + other = entities + while other + xofst = other->xpos - player.xpos + yofst = other->ypos - player.ypos + if abs(xofst) < 20 and abs(yofst) < 12 + drawvisentity(xofst, yofst, other->tileid) + fin + other = other=>next_other + loop +end + +// +// Move entitiess +// + +def lineofsight(x1, y1, x2, y2) + word sx, sy, dx, dy, dx2, dy2, dd2, err + + dx = x2 - x1 + if dx < 0 + dx = -dx + sx = -1 + else + sx = 1 + fin + dy = y2 - y1 + if dy < 0 + dy = -dy + sy = -1 + else + sy = 1 + fin + if dx > maxview or dy > maxview + return FALSE + fin + dx2 = dx << 1 + dy2 = dy << 1 + if dx > dy + dd2 = dx2 - dy2 + err = dx - dy2 + while x1 <> x2 + if err < 0 + y1 = y1 + sy + err = err + dd2 + else + err = err - dy2 + fin + x1 = x1 + sx + if getmaptile(x1, y1) & OPAQUE_TILE + return FALSE + fin + loop + else + dd2 = dy2 - dx2 + err = dy - dx2 + while y1 <> y2 + if err < 0 + x1 = x1 + sx + err = err + dd2 + else + err = err - dx2 + fin + y1 = y1 + sy + if getmaptile(x1, y1) & OPAQUE_TILE + return FALSE + fin + loop + fin + return TRUE +end + +def moveentities(playerisvis)#0 + byte xmove, ymove + word other + + other = entities + while other + if playerisvis + if lineofsight(player.xpos, player.ypos, other->xpos, other->ypos) + xmove = other->xpos + ymove = other->ypos + if player.xpos > other->xpos + xmove = other->xpos + 1 + elsif player.xpos < other->xpos + xmove = other->xpos - 1 + fin + if player.ypos > other->ypos + ymove = other->ypos + 1 + elsif player.ypos < other->ypos + ymove = other->ypos - 1 + fin + when getmaptile(xmove, ymove) & MAP_TILE + is FLOOR_TILE + is TORCH_TILE + is KEY_TILE + is GOLD_TILE + is FOOD_TILE + other->xpos = xmove + other->ypos = ymove + groan + wend + fin + fin + if other->xpos == player.xpos and other->ypos == player.ypos + if fight(@player, other) + // + // Player trying to run away + // + if player.energy > RUN_ENERGY + moveplayer(1) + fin + moveplayer(1) + fin + return + fin + other = other=>next_other + loop +end + +// +// Read player input and do something +// + +def play + byte xt, yt + + if player.health == 0 + return FALSE + fin + conio:gotoxy(xcentr, ycentr) + when toupper(conio:getkey()) + is 'I' + if totaldarkness + player.angle = conio:rnd() & 7 + else + player.angle = 0 + fin + moveplayer(1) + break + is 'J' + if totaldarkness + player.angle = conio:rnd() & 7 + else + player.angle = 6 + fin + moveplayer(1) + break + is 'K' + if totaldarkness + player.angle = conio:rnd() & 7 + else + player.angle = 2 + fin + moveplayer(1) + break + is 'M' + if totaldarkness + player.angle = conio:rnd() & 7 + else + player.angle = 4 + fin + moveplayer(1) + break + is 'Q' + if player.energy > RUN_ENERGY + player.energy = player.energy - RUN_ENERGY + moveplayer(1) + fin + is 'W' + is $0B // Up Arrow + moveplayer(1) + break + is 'S' + is $0A // Down Arrow + moveplayer(-1) + break + is 'A' + is $08 // Left Arrow + player.angle = (player.angle - 1) & 7 + break + is 'D' + is $15 // Right Arrow + player.angle = (player.angle + 1) & 7 + break + is ' ' + when getmaptile(player.xpos + xdir[player.angle], player.ypos + ydir[player.angle]) & MAP_TILE + is LOCKED_TILE + if not player.key + ouch + break + fin + is DOOR_TILE + updtmaptile(player.xpos + xdir[player.angle], player.ypos + ydir[player.angle], FLOOR_TILE) + break + is ENTER_TILE + break + is EXIT_TILE + return FALSE + wend + break + is $0D // Return + when getmaptile(player.xpos, player.ypos) & MAP_TILE + is KEY_TILE + player.key = 1 + updtmaptile(player.xpos, player.ypos, FLOOR_TILE) + gotit + break + is RAFT_TILE + player.raft = 1 + updtmaptile(player.xpos, player.ypos, FLOOR_TILE) + gotit + break + is GOLD_TILE + player.gold = player.gold + 1 + updtmaptile(player.xpos, player.ypos, FLOOR_TILE) + gotit + break + is TORCH_TILE + if player.oil < 1000 + player:oil = player:oil + TORCH_OIL + if player:oil > 1000 + player:oil = 1000 + fin + setmaptile(player.xpos, player.ypos, FLOOR_TILE) + for yt = player.ypos - 1 to player.ypos + 1 + for xt = player.xpos - 1 to player.xpos + 1 + setmaptile(xt, yt, getmaptile(xt, yt) & MAP_TILE) + next + next + gotit + fin + break + is FOOD_TILE + if player.health < 100 or player.energy < 100 + player.health = player.health + MANA/2 + if player.health > 100 + player.health = 100 + fin + player.energy = player.energy + MANA + if player.energy > 100 + player.energy = 100 + fin + updtmaptile(player.xpos, player.ypos, FLOOR_TILE) + player.fov = 1 + gotit + fin + break + wend + break + is 'O' + player.lamp = 0 + break + is '<' + is ',' + if player.lamp > 0 + player.lamp = player.lamp - 1 + fin + break + is '>' + is '.' + if player.lamp < maxlight - 1 + player.lamp = player.lamp + 1 + fin + break + is 'X' + clearstatus + conio:gotoxy(0, statusline) + puts(@quitstr) + if toupper(conio:getkey()) == 'Y' + player.health = 0 + return FALSE + fin + wend + if player.energy and player.health < 100 + player.health = player.health + 1 + fin + if player:oil > player.lamp + player:oil = player:oil - player.lamp + else + player:oil = 0 + player.lamp = 0 + fin + return player.health +end + +// +// Main loop +// + +puts(@namestr) +instr = gets($BA) +if ^instr > 15 + ^instr = 15 +fin +memcpy(@player.name, instr, ^instr + 1) +conio:echo(ECHO_OFF) +while loadmap(level) + puts(@prepstr) + free_entities = heapmark() + findentities + lighttorches + repeat + moveentities(player.lamp or getmaptile(player.xpos, player.ypos) & LIT_TILE)) + totaldarkness = drawmap(player.xpos, player.ypos, player.fov, player.angle, player.lamp, maxview) + if not totaldarkness + drawentities + conio:gotoxy(xcentr, ycentr) + putc(vplayer[player.angle]) + fin + status + until not play + heaprelease(free_entities) + entities = 0 + player.key = 0 + level = level + 1 + clearstatus + conio:gotoxy(0, statusline) + if player.health == 0 + break + fin +loop +conio:echo(ECHO_ON) +if player.health > 0 + puts(@youmadeitstr) + puti(player.gold) +else + puts(@youdiedstr) +fin +puts(@againstr) +done diff --git a/src/samplesrc/hgrtest.a b/src/samplesrc/hgrtest.a new file mode 100644 index 0000000..01ca68e --- /dev/null +++ b/src/samplesrc/hgrtest.a @@ -0,0 +1,883 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/hgrtest.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/hgrtest.pla: 0001: +; samplesrc/hgrtest.pla: 0002: include "inc/hgrlib.plh" +; inc/hgrlib.plh: 0001: import hgrlib + ; DCI STRING: HGRLIB + !BYTE $C8,$C7,$D2,$CC,$C9,$42 + ; HGRLIB -> X028 +; inc/hgrlib.plh: 0002: predef divmod7(x)#2 + ; DIVMOD7 -> X029 +; inc/hgrlib.plh: 0003: predef hgrPlot(x, y)#0 + ; HGRPLOT -> X030 +; inc/hgrlib.plh: 0004: predef hgrOrPlot(x, y)#0 + ; HGRORPLOT -> X031 +; inc/hgrlib.plh: 0005: predef hgrXorPlot(x, y)#0 + ; HGRXORPLOT -> X032 +; inc/hgrlib.plh: 0006: predef hgrHLin(x1, x2, y)#0 + ; HGRHLIN -> X033 +; inc/hgrlib.plh: 0007: predef hgrVLin(y1, y2, x)#0 + ; HGRVLIN -> X034 +; inc/hgrlib.plh: 0008: predef hgrXorHLin(x1, x2, y)#0 + ; HGRXORHLIN -> X035 +; inc/hgrlib.plh: 0009: predef hgrXorVLin(y1, y2, x)#0 + ; HGRXORVLIN -> X036 +; inc/hgrlib.plh: 0010: predef hgrRect(x1, y1, x2, y2)#0 + ; HGRRECT -> X037 +; inc/hgrlib.plh: 0011: predef hgrXorRect(x1, y1, x2, y2)#0 + ; HGRXORRECT -> X038 +; inc/hgrlib.plh: 0012: predef hgrBLT(x, y, width, height, srcptr)#0 + ; HGRBLT -> X039 +; inc/hgrlib.plh: 0013: predef hgrCopySrc(ofst, y, w, h, srcptr)#0 + ; HGRCOPYSRC -> X040 +; inc/hgrlib.plh: 0014: predef hgrAndSrc(ofst, y, w, h, srcptr)#0 + ; HGRANDSRC -> X041 +; inc/hgrlib.plh: 0015: predef hgrXorSrc(ofst, y, w, h, srcptr)#0 + ; HGRXORSRC -> X042 +; inc/hgrlib.plh: 0016: predef hgrOrSrc(ofst, y, w, h, srcptr)#0 + ; HGRORSRC -> X043 +; inc/hgrlib.plh: 0017: predef hgrCopyDst(ofst, y, w, h, dstptr)#0 + ; HGRCOPYDST -> X044 +; inc/hgrlib.plh: 0018: predef hgrMode(mode)#1 + ; HGRMODE -> X045 +; inc/hgrlib.plh: 0019: predef hgrClear#0 + ; HGRCLEAR -> X046 +; inc/hgrlib.plh: 0020: predef hgrShow(page)#1 + ; HGRSHOW -> X047 +; inc/hgrlib.plh: 0021: predef hgrSwap#1 + ; HGRSWAP -> X048 +; inc/hgrlib.plh: 0022: predef hgrDrawBuf(page)#1 + ; HGRDRAWBUF -> X049 +; inc/hgrlib.plh: 0023: predef hgrColor(clr)#0 + ; HGRCOLOR -> X050 +; inc/hgrlib.plh: 0024: end +; samplesrc/hgrtest.pla: 0002: +; samplesrc/hgrtest.pla: 0003: include "inc/hgrsprite.plh" +; inc/hgrsprite.plh: 0001: import hgrsprite + ; DCI STRING: HGRSPRITE + !BYTE $C8,$C7,$D2,$D3,$D0,$D2,$C9,$D4,$45 + ; HGRSPRITE -> X051 +; inc/hgrsprite.plh: 0002: predef spriteCompile(w, h, xcenter, ycenter, srcptr)#1 + ; SPRITECOMPILE -> X052 +; inc/hgrsprite.plh: 0003: predef spriteDup(sprtsrc)#1 + ; SPRITEDUP -> X053 +; inc/hgrsprite.plh: 0004: predef spriteRead(filestr)#1 + ; SPRITEREAD -> X054 +; inc/hgrsprite.plh: 0005: predef spriteSave(filestr, sprtptr)#1 + ; SPRITESAVE -> X055 +; inc/hgrsprite.plh: 0006: predef spriteDraw(sprtptr)#0 + ; SPRITEDRAW -> X056 +; inc/hgrsprite.plh: 0007: predef spriteDrawXor(sprtptr)#0 + ; SPRITEDRAWXOR -> X057 +; inc/hgrsprite.plh: 0008: predef spriteUnDraw(sprtptr)#0 + ; SPRITEUNDRAW -> X058 +; inc/hgrsprite.plh: 0009: predef spriteUnDrawXor(sprtptr)#0 + ; SPRITEUNDRAWXOR -> X059 +; inc/hgrsprite.plh: 0010: predef spritePos(x, y, sprtptr)#0 + ; SPRITEPOS -> X060 +; inc/hgrsprite.plh: 0011: predef spritePosIndex(x, y, i)#0 + ; SPRITEPOSINDEX -> X061 +; inc/hgrsprite.plh: 0012: predef spriteUnDrawList#0 + ; SPRITEUNDRAWLIST -> X062 +; inc/hgrsprite.plh: 0013: predef spriteUnDrawXorList#0 + ; SPRITEUNDRAWXORLIST -> X063 +; inc/hgrsprite.plh: 0014: predef spriteDrawList#0 + ; SPRITEDRAWLIST -> X064 +; inc/hgrsprite.plh: 0015: predef spriteDrawXorList#0 + ; SPRITEDRAWXORLIST -> X065 +; inc/hgrsprite.plh: 0016: predef spriteAdd(i, sprtptr)#1 + ; SPRITEADD -> X066 +; inc/hgrsprite.plh: 0017: predef spriteDel(i)#1 + ; SPRITEDEL -> X067 +; inc/hgrsprite.plh: 0018: predef spriteDrawBuf(page)#1 + ; SPRITEDRAWBUF -> X068 +; inc/hgrsprite.plh: 0019: end +; samplesrc/hgrtest.pla: 0003: +; samplesrc/hgrtest.pla: 0004: include "inc/lines.plh" +; inc/lines.plh: 0001: import lines + ; DCI STRING: LINES + !BYTE $CC,$C9,$CE,$C5,$53 + ; LINES -> X069 +; inc/lines.plh: 0002: predef setlinespans(h, v)#0 + ; SETLINESPANS -> X070 +; inc/lines.plh: 0003: predef linespans(x1, y1, x2, y2)#0 + ; LINESPANS -> X071 +; inc/lines.plh: 0004: predef setlineplot(p)#0 + ; SETLINEPLOT -> X072 +; inc/lines.plh: 0005: predef line(x1, y1, x2, y2)#0 + ; LINE -> X073 +; inc/lines.plh: 0006: end +; samplesrc/hgrtest.pla: 0004: +; samplesrc/hgrtest.pla: 0005: sysflags reshgr1|reshgr2 // Reserve HGR page 1 and 2 + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0030 ; SYSTEM FLAGS +; samplesrc/hgrtest.pla: 0006: +; samplesrc/hgrtest.pla: 0007: byte ball = $88, $83, $33, $38, $88 +_D074 ; ball = $88, $83, $33, $38, $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/hgrtest.pla: 0008: byte = $88, $33, $11, $33, $88 + !BYTE $88 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $88 +; samplesrc/hgrtest.pla: 0009: byte = $83, $31, $11, $13, $38 + !BYTE $83 + !BYTE $31 + !BYTE $11 + !BYTE $13 + !BYTE $38 +; samplesrc/hgrtest.pla: 0010: byte = $33, $11, $11, $11, $33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/hgrtest.pla: 0011: byte = $33, $11, $11, $11, $33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/hgrtest.pla: 0012: byte = $33, $11, $11, $11, $33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/hgrtest.pla: 0013: byte = $33, $11, $11, $11, $33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/hgrtest.pla: 0014: byte = $83, $31, $11, $13, $38 + !BYTE $83 + !BYTE $31 + !BYTE $11 + !BYTE $13 + !BYTE $38 +; samplesrc/hgrtest.pla: 0015: byte = $88, $33, $11, $33, $88 + !BYTE $88 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $88 +; samplesrc/hgrtest.pla: 0016: byte = $88, $83, $33, $38, $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/hgrtest.pla: 0017: var sprtBall +_D075 !FILL 2 ; sprtBall +; samplesrc/hgrtest.pla: 0018: def testline#0 +_SUBSEG ; BYTECODE STARTS +_C000 ; testline() +; samplesrc/hgrtest.pla: 0019: var i + ; i -> [0] +; samplesrc/hgrtest.pla: 0020: +; samplesrc/hgrtest.pla: 0021: setlinespans(@hgrHlin, @hgrVlin) + !BYTE $58,$02,$00 ; ENTER 2,0 +; samplesrc/hgrtest.pla: 0022: setlineplot(@hgrXorPlot) +; samplesrc/hgrtest.pla: 0023: hgrColor(7) +; samplesrc/hgrtest.pla: 0024: for i = 0 to 191 step 8 + !BYTE $26 ; LA _X033+0 +_F000 !WORD 0+0 + !BYTE $26 ; LA _X034+0 +_F001 !WORD 0+0 + !BYTE $54 ; CALL _X070 +_F002 !WORD 0 + !BYTE $26 ; LA _X032+0 +_F003 !WORD 0+0 + !BYTE $54 ; CALL _X072 +_F004 !WORD 0 + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X050 +_F005 !WORD 0 + !BYTE $2A,$BF ; CB 191 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/hgrtest.pla: 0025: linespans(0, i, 279, 191 - i) +; samplesrc/hgrtest.pla: 0026: //line(0, i, 279, 191 - i) +; samplesrc/hgrtest.pla: 0027: next + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $2A,$BF ; CB 191 + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X071 +_F006 !WORD 0 +_B003 + !BYTE $10 ; CN 8 + !BYTE $A6 ; ADDBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/hgrtest.pla: 0028: for i = 0 to 279 step 9 + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $00 ; CN 0 +_B005 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/hgrtest.pla: 0029: linespans(i, 0, 279 - i, 191) +; samplesrc/hgrtest.pla: 0030: //line(i, 0, 279 - i, 191) +; samplesrc/hgrtest.pla: 0031: next + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $2A,$BF ; CB 191 + !BYTE $54 ; CALL _X071 +_F007 !WORD 0 +_B006 + !BYTE $12 ; CN 9 + !BYTE $A6 ; ADDBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/hgrtest.pla: 0032: end + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/hgrtest.pla: 0033: def testblt(sprtnum)#0 + ; sprtnum -> [0] +_C001 ; testblt() +; samplesrc/hgrtest.pla: 0034: var[16] i, j, ii, jj + ; i -> [2] + ; j -> [34] + ; ii -> [66] + ; jj -> [98] +; samplesrc/hgrtest.pla: 0035: byte k + ; k -> [130] +; samplesrc/hgrtest.pla: 0036: +; samplesrc/hgrtest.pla: 0037: sprtnum = sprtnum - 1 + !BYTE $58,$83,$01 ; ENTER 131,1 +; samplesrc/hgrtest.pla: 0038: i[0] = 100 +; samplesrc/hgrtest.pla: 0039: ii[0] = 1 +; samplesrc/hgrtest.pla: 0040: j[0] = 80 +; samplesrc/hgrtest.pla: 0041: jj[0] = -1 +; samplesrc/hgrtest.pla: 0042: if sprtnum +; samplesrc/hgrtest.pla: 0043: for k = 1 to sprtnum + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $76,$00 ; SLW [0] + !BYTE $2A,$64 ; CB 100 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $76,$42 ; SLW [66] + !BYTE $2A,$50 ; CB 80 + !BYTE $76,$22 ; SLW [34] + !BYTE $20 ; MINUS ONE + !BYTE $76,$62 ; SLW [98] + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B009 + !WORD _B009-* +_B010 + !BYTE $6C,$82 ; DLB [130] +; samplesrc/hgrtest.pla: 0044: spriteAdd(k, spriteDup(sprtBall)) +; samplesrc/hgrtest.pla: 0045: i[k] = ((i[k - 1] ^ 37) + 97) % 270 +; samplesrc/hgrtest.pla: 0046: ii[k] = -ii[k - 1] +; samplesrc/hgrtest.pla: 0047: j[k] = ((j[k - 1] ^ 29) + 53) % 180 +; samplesrc/hgrtest.pla: 0048: jj[k] = -jj[k - 1] +; samplesrc/hgrtest.pla: 0049: next + !BYTE $64,$82 ; LLB [130] + !BYTE $6A ; LAW _D075+0 +_F008 !WORD _D075+0 + !BYTE $54 ; CALL _X053 +_F009 !WORD 0 + !BYTE $54 ; CALL _X066 +_F010 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $64,$82 ; LLB [130] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$25 ; CB 37 + !BYTE $98 ; XOR + !BYTE $38,$61 ; ADDI 97 + !BYTE $2C,$0E,$01 ; CW 270 + !BYTE $8A ; MOD + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW + !BYTE $28,$42 ; LLA [66] + !BYTE $64,$82 ; LLB [130] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW + !BYTE $28,$22 ; LLA [34] + !BYTE $64,$82 ; LLB [130] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$1D ; CB 29 + !BYTE $98 ; XOR + !BYTE $38,$35 ; ADDI 53 + !BYTE $2A,$B4 ; CB 180 + !BYTE $8A ; MOD + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW + !BYTE $28,$62 ; LLA [98] + !BYTE $64,$82 ; LLB [130] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$62 ; LLA [98] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW +_B011 + !BYTE $A4 ; INCBRLE _B010 + !WORD _B010-* +_B009 + !BYTE $74,$82 ; SLB [130] + !BYTE $30 ; DROP +; samplesrc/hgrtest.pla: 0050: fin +_B007 +_B008 +; samplesrc/hgrtest.pla: 0051: while ^$C000 < 128 + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B012 +; samplesrc/hgrtest.pla: 0052: for k = 0 to sprtnum + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B015 + !WORD _B015-* +_B016 + !BYTE $6C,$82 ; DLB [130] +; samplesrc/hgrtest.pla: 0053: i[k] = i[k] + ii[k] +; samplesrc/hgrtest.pla: 0054: if i[k] < -5 or i[k] > 284 +; samplesrc/hgrtest.pla: 0055: ii[k] = -ii[k] +; samplesrc/hgrtest.pla: 0056: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $5E,$FB ; CFFB -5 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B018 + !WORD _B018-* + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $2C,$1C,$01 ; CW 284 + !BYTE $44 ; ISGT +_B018 + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW +_B019 +_B020 +; samplesrc/hgrtest.pla: 0057: j[k] = j[k] + jj[k] +; samplesrc/hgrtest.pla: 0058: if j[k] < -5 or j[k] > 196 +; samplesrc/hgrtest.pla: 0059: jj[k] = -jj[k] +; samplesrc/hgrtest.pla: 0060: fin + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $28,$62 ; LLA [98] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $5E,$FB ; CFFB -5 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B021 + !WORD _B021-* + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $2A,$C4 ; CB 196 + !BYTE $44 ; ISGT +_B021 + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $28,$62 ; LLA [98] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$62 ; LLA [98] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $72 ; SW +_B022 +_B023 +; samplesrc/hgrtest.pla: 0061: spritePosIndex(i[k], j[k], k) +; samplesrc/hgrtest.pla: 0062: next + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$82 ; IDXLB [130] + !BYTE $62 ; LW + !BYTE $64,$82 ; LLB [130] + !BYTE $54 ; CALL _X061 +_F011 !WORD 0 +_B017 + !BYTE $A4 ; INCBRLE _B016 + !WORD _B016-* +_B015 + !BYTE $74,$82 ; SLB [130] + !BYTE $30 ; DROP +; samplesrc/hgrtest.pla: 0063: spriteDrawList() +; samplesrc/hgrtest.pla: 0064: spriteDrawBuf(hgrSwap()) +; samplesrc/hgrtest.pla: 0065: loop + !BYTE $54 ; CALL _X064 +_F012 !WORD 0 + !BYTE $54 ; CALL _X048 +_F013 !WORD 0 + !BYTE $54 ; CALL _X068 +_F014 !WORD 0 + !BYTE $30 ; DROP +_B014 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* +_B013 +; samplesrc/hgrtest.pla: 0066: end + !BYTE $5A,$83 ; LEAVE 131 +; samplesrc/hgrtest.pla: 0067: +; samplesrc/hgrtest.pla: 0068: hgrMode(TRUE) +_INIT +; samplesrc/hgrtest.pla: 0069: spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process +; samplesrc/hgrtest.pla: 0070: sprtBall = spriteCompile(10, 10, 5, 5, @ball) +; samplesrc/hgrtest.pla: 0071: hgrColor(0) +; samplesrc/hgrtest.pla: 0072: hgrClear() +; samplesrc/hgrtest.pla: 0073: testline +; samplesrc/hgrtest.pla: 0074: memcpy($4000, $2000, $2000) // Copy to both buffers +; samplesrc/hgrtest.pla: 0075: spriteDrawBuf(hgrDrawBuf(1)) +; samplesrc/hgrtest.pla: 0076: spriteAdd(0, sprtBall) +; samplesrc/hgrtest.pla: 0077: testblt(16) +; samplesrc/hgrtest.pla: 0078: getc +; samplesrc/hgrtest.pla: 0079: hgrMode(FALSE) +; samplesrc/hgrtest.pla: 0080: done + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X045 +_F015 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X049 +_F016 !WORD 0 + !BYTE $54 ; CALL _X068 +_F017 !WORD 0 + !BYTE $30 ; DROP + !BYTE $14 ; CN 10 + !BYTE $34 ; DUP + !BYTE $0A ; CN 5 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D074+0 +_F018 !WORD _D074+0 + !BYTE $54 ; CALL _X052 +_F019 !WORD 0 + !BYTE $7A ; SAW _D075+0 +_F020 !WORD _D075+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X050 +_F021 !WORD 0 + !BYTE $54 ; CALL _X046 +_F022 !WORD 0 + !BYTE $54 ; CALL _C000 +_F023 !WORD _C000 + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _X018 +_F024 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X049 +_F025 !WORD 0 + !BYTE $54 ; CALL _X068 +_F026 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D075+0 +_F027 !WORD _D075+0 + !BYTE $54 ; CALL _X066 +_F028 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$10 ; CB 16 + !BYTE $54 ; CALL _C001 +_F029 !WORD _C001 + !BYTE $54 ; CALL _X006 +_F030 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X045 +_F031 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 70 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 72 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 71 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 71 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 64 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 48 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 49 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 46 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 49 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: HGRXORPLOT + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D0,$CC,$CF,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: HGRHLIN + !BYTE $C8,$C7,$D2,$C8,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: HGRVLIN + !BYTE $C8,$C7,$D2,$D6,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: HGRMODE + !BYTE $C8,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + ; DCI STRING: HGRCLEAR + !BYTE $C8,$C7,$D2,$C3,$CC,$C5,$C1,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 46 ; ESD INDEX + ; DCI STRING: HGRSWAP + !BYTE $C8,$C7,$D2,$D3,$D7,$C1,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 48 ; ESD INDEX + ; DCI STRING: HGRDRAWBUF + !BYTE $C8,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 49 ; ESD INDEX + ; DCI STRING: HGRCOLOR + !BYTE $C8,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 50 ; ESD INDEX + ; DCI STRING: SPRITECOMPILE + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C3,$CF,$CD,$D0,$C9,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 52 ; ESD INDEX + ; DCI STRING: SPRITEDUP + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D5,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 53 ; ESD INDEX + ; DCI STRING: SPRITEPOSINDEX + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D0,$CF,$D3,$C9,$CE,$C4,$C5,$58 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 61 ; ESD INDEX + ; DCI STRING: SPRITEDRAWLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$CC,$C9,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 64 ; ESD INDEX + ; DCI STRING: SPRITEADD + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C1,$C4,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 66 ; ESD INDEX + ; DCI STRING: SPRITEDRAWBUF + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 68 ; ESD INDEX + ; DCI STRING: SETLINESPANS + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 70 ; ESD INDEX + ; DCI STRING: LINESPANS + !BYTE $CC,$C9,$CE,$C5,$D3,$D0,$C1,$CE,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 71 ; ESD INDEX + ; DCI STRING: SETLINEPLOT + !BYTE $D3,$C5,$D4,$CC,$C9,$CE,$C5,$D0,$CC,$CF,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 72 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/httpd.a b/src/samplesrc/httpd.a new file mode 100644 index 0000000..d9e450c --- /dev/null +++ b/src/samplesrc/httpd.a @@ -0,0 +1,1643 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/httpd.pla: 0001: // +; samplesrc/httpd.pla: 0002: // HTTP Daemon +; samplesrc/httpd.pla: 0003: // +; samplesrc/httpd.pla: 0004: // with these updates by D. Finnigan on 12 Nov 15: +; samplesrc/httpd.pla: 0005: // - revised 404 and 400 responses +; samplesrc/httpd.pla: 0006: // - split 200 OK response headers +; samplesrc/httpd.pla: 0007: // - added get_file_info() call +; samplesrc/httpd.pla: 0008: // - check for binary files and set Content-Type accordingly +; samplesrc/httpd.pla: 0009: // still todo: output base filename for Content-Disposition header +; samplesrc/httpd.pla: 0010: // +; samplesrc/httpd.pla: 0011: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/httpd.pla: 0011: +; samplesrc/httpd.pla: 0012: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + ; INET -> X028 +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; samplesrc/httpd.pla: 0012: +; samplesrc/httpd.pla: 0013: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X029 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X030 +; inc/fileio.plh: 0080: end +; samplesrc/httpd.pla: 0013: +; samplesrc/httpd.pla: 0014: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X031 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/httpd.pla: 0014: +; samplesrc/httpd.pla: 0015: +; samplesrc/httpd.pla: 0016: word socketHTTP + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D032 !FILL 2 ; socketHTTP +; samplesrc/httpd.pla: 0017: byte[65] prefix +_D033 !FILL 65 ; prefix +; samplesrc/httpd.pla: 0018: word filebuff +_D034 !FILL 2 ; filebuff +; samplesrc/httpd.pla: 0019: byte[15] fileInfo = 0 // used for get_file_info() +_D035 ; fileInfo = 0 // used for get_file_info() + !BYTE $00 + !FILL $0E +; samplesrc/httpd.pla: 0020: byte defhtml = "INDEX.HTML" +_D036 ; defhtml = "INDEX.HTML" + !BYTE $0A + !BYTE $49,$4E,$44,$45,$58,$2E,$48,$54 + !BYTE $4D,$4C +; samplesrc/httpd.pla: 0021: byte[200] okhdr // combined response header +_D037 !FILL 200 ; okhdr // combined response header +; samplesrc/httpd.pla: 0022: // +; samplesrc/httpd.pla: 0023: // HTTP response codes +; samplesrc/httpd.pla: 0024: // For the 4xx codes, if you change the body, make sure to update the Content-Length too +; samplesrc/httpd.pla: 0025: byte httpOK = "HTTP/1.1 200 OK\n\r" +_D038 ; httpOK = "HTTP/1.1 200 OK\n\r" + !BYTE $11 + !BYTE $48,$54,$54,$50,$2F,$31,$2E,$31 + !BYTE $20,$32,$30,$30,$20,$4F,$4B,$0D + !BYTE $0A +; samplesrc/httpd.pla: 0026: byte httpBAD = "HTTP/1.1 400 Bad Request\n\rContent-Type: text/plain\n\rContent-Length: 17\n\r\n\r400 Bad Request\n\r" +_D039 ; httpBAD = "HTTP/1.1 400 Bad Request\n\rContent-Type: text/plain\n\rContent-Length: 17\n\r\n\r400 Bad Request\n\r" + !BYTE $5B + !BYTE $48,$54,$54,$50,$2F,$31,$2E,$31 + !BYTE $20,$34,$30,$30,$20,$42,$61,$64 + !BYTE $20,$52,$65,$71,$75,$65,$73,$74 + !BYTE $0D,$0A,$43,$6F,$6E,$74,$65,$6E + !BYTE $74,$2D,$54,$79,$70,$65,$3A,$20 + !BYTE $74,$65,$78,$74,$2F,$70,$6C,$61 + !BYTE $69,$6E,$0D,$0A,$43,$6F,$6E,$74 + !BYTE $65,$6E,$74,$2D,$4C,$65,$6E,$67 + !BYTE $74,$68,$3A,$20,$31,$37,$0D,$0A + !BYTE $0D,$0A,$34,$30,$30,$20,$42,$61 + !BYTE $64,$20,$52,$65,$71,$75,$65,$73 + !BYTE $74,$0D,$0A +; samplesrc/httpd.pla: 0027: byte httpNOTFOUND = "HTTP/1.1 404 Not Found\n\rStatus: 404 Not Found\n\rContent-Type: text/plain\n\rContent-Length: 28\n\r\n\r404 Error: File not found.\n\r" +_D040 ; httpNOTFOUND = "HTTP/1.1 404 Not Found\n\rStatus: 404 Not Found\n\rContent-Type: text/plain\n\rContent-Length: 28\n\r\n\r404 Error: File not found.\n\r" + !BYTE $7B + !BYTE $48,$54,$54,$50,$2F,$31,$2E,$31 + !BYTE $20,$34,$30,$34,$20,$4E,$6F,$74 + !BYTE $20,$46,$6F,$75,$6E,$64,$0D,$0A + !BYTE $53,$74,$61,$74,$75,$73,$3A,$20 + !BYTE $34,$30,$34,$20,$4E,$6F,$74,$20 + !BYTE $46,$6F,$75,$6E,$64,$0D,$0A,$43 + !BYTE $6F,$6E,$74,$65,$6E,$74,$2D,$54 + !BYTE $79,$70,$65,$3A,$20,$74,$65,$78 + !BYTE $74,$2F,$70,$6C,$61,$69,$6E,$0D + !BYTE $0A,$43,$6F,$6E,$74,$65,$6E,$74 + !BYTE $2D,$4C,$65,$6E,$67,$74,$68,$3A + !BYTE $20,$32,$38,$0D,$0A,$0D,$0A,$34 + !BYTE $30,$34,$20,$45,$72,$72,$6F,$72 + !BYTE $3A,$20,$46,$69,$6C,$65,$20,$6E + !BYTE $6F,$74,$20,$66,$6F,$75,$6E,$64 + !BYTE $2E,$0D,$0A +; samplesrc/httpd.pla: 0028: // +; samplesrc/httpd.pla: 0029: // HTTP response headers +; samplesrc/httpd.pla: 0030: // +; samplesrc/httpd.pla: 0031: byte httpContentType = "Content-Type: " +_D041 ; httpContentType = "Content-Type: " + !BYTE $0E + !BYTE $43,$6F,$6E,$74,$65,$6E,$74,$2D + !BYTE $54,$79,$70,$65,$3A,$20 +; samplesrc/httpd.pla: 0032: byte httpContentLen = "Content-Length: " +_D042 ; httpContentLen = "Content-Length: " + !BYTE $10 + !BYTE $43,$6F,$6E,$74,$65,$6E,$74,$2D + !BYTE $4C,$65,$6E,$67,$74,$68,$3A,$20 +; samplesrc/httpd.pla: 0033: byte httpContentAttach = "Content-Disposition: attachment; filename=" +_D043 ; httpContentAttach = "Content-Disposition: attachment; filename=" + !BYTE $2A + !BYTE $43,$6F,$6E,$74,$65,$6E,$74,$2D + !BYTE $44,$69,$73,$70,$6F,$73,$69,$74 + !BYTE $69,$6F,$6E,$3A,$20,$61,$74,$74 + !BYTE $61,$63,$68,$6D,$65,$6E,$74,$3B + !BYTE $20,$66,$69,$6C,$65,$6E,$61,$6D + !BYTE $65,$3D +; samplesrc/httpd.pla: 0034: byte httpEnd = "\n\r\n\r" +_D044 ; httpEnd = "\n\r\n\r" + !BYTE $04 + !BYTE $0D,$0A,$0D,$0A +; samplesrc/httpd.pla: 0035: // +; samplesrc/httpd.pla: 0036: // MIME content types +; samplesrc/httpd.pla: 0037: // +; samplesrc/httpd.pla: 0038: byte mimeTextHtml = "text/html" +_D045 ; mimeTextHtml = "text/html" + !BYTE $09 + !BYTE $74,$65,$78,$74,$2F,$68,$74,$6D + !BYTE $6C +; samplesrc/httpd.pla: 0039: byte mimeOctetStream = "application/octet-stream" +_D046 ; mimeOctetStream = "application/octet-stream" + !BYTE $18 + !BYTE $61,$70,$70,$6C,$69,$63,$61,$74 + !BYTE $69,$6F,$6E,$2F,$6F,$63,$74,$65 + !BYTE $74,$2D,$73,$74,$72,$65,$61,$6D +; samplesrc/httpd.pla: 0040: // +; samplesrc/httpd.pla: 0041: // DEBUG +; samplesrc/httpd.pla: 0042: // +; samplesrc/httpd.pla: 0043: def putip(ipptr)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; ipptr -> [0] +_C000 ; putip() +; samplesrc/httpd.pla: 0044: byte i + ; i -> [2] +; samplesrc/httpd.pla: 0045: +; samplesrc/httpd.pla: 0046: for i = 0 to 2 + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $04 ; CN 2 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6C,$02 ; DLB [2] +; samplesrc/httpd.pla: 0047: puti(ipptr->[i]); putc('.') +; samplesrc/httpd.pla: 0048: next + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F000 !WORD 0 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0049: puti(ipptr->[i]) +; samplesrc/httpd.pla: 0050: end + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F002 !WORD 0 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/httpd.pla: 0051: def dumpbytes(buf, len)#0 + ; buf -> [0] + ; len -> [2] +_C001 ; dumpbytes() +; samplesrc/httpd.pla: 0052: word i + ; i -> [4] +; samplesrc/httpd.pla: 0053: +; samplesrc/httpd.pla: 0054: for i = 0 to len - 1 + !BYTE $58,$06,$02 ; ENTER 6,2 + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B004 + !WORD _B004-* +_B005 + !BYTE $6E,$04 ; DLW [4] +; samplesrc/httpd.pla: 0055: putb(buf->[i]) +; samplesrc/httpd.pla: 0056: if i & 15 == 15 +; samplesrc/httpd.pla: 0057: putln +; samplesrc/httpd.pla: 0058: else + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X008 +_F003 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B007 + !WORD _B007-* + !BYTE $54 ; CALL _X003 +_F004 !WORD 0 + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; samplesrc/httpd.pla: 0059: putc(' ') +; samplesrc/httpd.pla: 0060: fin + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F005 !WORD 0 +_B008 +; samplesrc/httpd.pla: 0061: next +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0062: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/httpd.pla: 0063: def dumpchars(buf, len)#0 + ; buf -> [0] + ; len -> [2] +_C002 ; dumpchars() +; samplesrc/httpd.pla: 0064: word i + ; i -> [4] +; samplesrc/httpd.pla: 0065: +; samplesrc/httpd.pla: 0066: len = len - 1 + !BYTE $58,$06,$02 ; ENTER 6,2 +; samplesrc/httpd.pla: 0067: for i = 0 to len + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR + !BYTE $6E,$02 ; DLW [2] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B009 + !WORD _B009-* +_B010 + !BYTE $6E,$04 ; DLW [4] +; samplesrc/httpd.pla: 0068: putc(buf->[i]) +; samplesrc/httpd.pla: 0069: next + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X002 +_F006 !WORD 0 +_B011 + !BYTE $A4 ; INCBRLE _B010 + !WORD _B010-* +_B009 + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0070: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/httpd.pla: 0071: // +; samplesrc/httpd.pla: 0072: // String functions +; samplesrc/httpd.pla: 0073: // +; samplesrc/httpd.pla: 0074: def strcat2(dst, src1, src2) + ; dst -> [0] + ; src1 -> [2] + ; src2 -> [4] +_C003 ; strcat2() +; samplesrc/httpd.pla: 0075: memcpy(dst + 1, src1 + 1, ^src1) + !BYTE $58,$06,$03 ; ENTER 6,3 +; samplesrc/httpd.pla: 0076: memcpy(dst + 1 + ^src1, src2 + 1, ^src2) +; samplesrc/httpd.pla: 0077: ^dst = ^src1 + ^src2 +; samplesrc/httpd.pla: 0078: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F007 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F008 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/httpd.pla: 0079: end +; samplesrc/httpd.pla: 0080: def itos(dst, i) + ; dst -> [0] + ; i -> [2] +_C004 ; itos() +; samplesrc/httpd.pla: 0081: if i < 0; ^dst = '-'; i = -i; dst++; fin + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2A,$2D ; CB 45 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $90 ; NEG + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] +_B012 +_B013 +; samplesrc/httpd.pla: 0082: if i < 10 +; samplesrc/httpd.pla: 0083: ^dst = i + '0' +; samplesrc/httpd.pla: 0084: else + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B015 + !WORD _B015-* +_B014 +; samplesrc/httpd.pla: 0085: dst = itos(dst, i / 10) +; samplesrc/httpd.pla: 0086: ^dst = i % 10 + '0' +; samplesrc/httpd.pla: 0087: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C004 +_F009 !WORD _C004 + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B015 +; samplesrc/httpd.pla: 0088: return dst + 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/httpd.pla: 0089: end +; samplesrc/httpd.pla: 0090: // +; samplesrc/httpd.pla: 0091: // Send the file contents +; samplesrc/httpd.pla: 0092: // +; samplesrc/httpd.pla: 0093: def sendFile(fd, socket, len)#0 + ; fd -> [0] + ; socket -> [2] + ; len -> [4] +_C005 ; sendFile() +; samplesrc/httpd.pla: 0094: while isuge(len, 1024) + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +_B016 +; samplesrc/httpd.pla: 0095: fileio:read(fd, filebuff, 1024) +; samplesrc/httpd.pla: 0096: len = len - 1024 +; samplesrc/httpd.pla: 0097: iNet:sendTCP(socket, filebuff, 1024) +; samplesrc/httpd.pla: 0098: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D034+0 +_F010 !WORD _D034+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $6A ; LAW _X029+18 +_F011 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D034+0 +_F012 !WORD _D034+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $6A ; LAW _X028+14 +_F013 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B018 + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $54 ; CALL _X025 +_F014 !WORD 0 + !BYTE $4E ; BRTRU _B016 + !WORD _B016-* +_B017 +; samplesrc/httpd.pla: 0099: if len +; samplesrc/httpd.pla: 0100: fileio:read(fd, filebuff, len) +; samplesrc/httpd.pla: 0101: iNet:sendTCP(socket, filebuff, len) +; samplesrc/httpd.pla: 0102: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D034+0 +_F015 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X029+18 +_F016 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D034+0 +_F017 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _X028+14 +_F018 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B019 +_B020 +; samplesrc/httpd.pla: 0103: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/httpd.pla: 0104: // +; samplesrc/httpd.pla: 0105: // Serve HTTP requests +; samplesrc/httpd.pla: 0106: // +; samplesrc/httpd.pla: 0107: def servHTTP(remip, remport, lclport, data, len, param) + ; remip -> [0] + ; remport -> [2] + ; lclport -> [4] + ; data -> [6] + ; len -> [8] + ; param -> [10] +_C006 ; servHTTP() +; samplesrc/httpd.pla: 0108: byte i, refnum, err + ; i -> [12] + ; refnum -> [13] + ; err -> [14] +; samplesrc/httpd.pla: 0109: byte[65] filename + ; filename -> [15] +; samplesrc/httpd.pla: 0110: byte[8] lenstr + ; lenstr -> [80] +; samplesrc/httpd.pla: 0111: word url, filelen + ; url -> [88] + ; filelen -> [90] +; samplesrc/httpd.pla: 0112: +; samplesrc/httpd.pla: 0113: // +; samplesrc/httpd.pla: 0114: // Parse HTTP request +; samplesrc/httpd.pla: 0115: // +; samplesrc/httpd.pla: 0116: if len > 0 + !BYTE $58,$5C,$06 ; ENTER 92,6 +; samplesrc/httpd.pla: 0117: //dumpchars(data, len) +; samplesrc/httpd.pla: 0118: // +; samplesrc/httpd.pla: 0119: // Better be 'GET' +; samplesrc/httpd.pla: 0120: // +; samplesrc/httpd.pla: 0121: if data->0 == 'G' and data->1 == 'E' and data->2 == 'T' and data->3 == ' ' +; samplesrc/httpd.pla: 0122: len = len - 1 +; samplesrc/httpd.pla: 0123: if len > 64 +; samplesrc/httpd.pla: 0124: len = 64 // maximum ProDOS path +; samplesrc/httpd.pla: 0125: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$47 ; CB 71 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B023 + !WORD _B023-* + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$45 ; CB 69 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B024 + !WORD _B024-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $2A,$54 ; CB 84 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B025 + !WORD _B025-* + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $40 ; ISEQ +_B025 +_B024 +_B023 + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR + !BYTE $6E,$08 ; DLW [8] + !BYTE $2A,$40 ; CB 64 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $2A,$40 ; CB 64 + !BYTE $76,$08 ; SLW [8] +_B028 +_B029 +; samplesrc/httpd.pla: 0126: for i = 4 to len // get ProDOS path from URL + !BYTE $66,$08 ; LLW [8] + !BYTE $08 ; CN 4 + !BYTE $A0 ; BRGT _B030 + !WORD _B030-* +_B031 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/httpd.pla: 0127: if data->[i] <= ' ' +; samplesrc/httpd.pla: 0128: data->3 = i - 4 +; samplesrc/httpd.pla: 0129: url = data + 3 +; samplesrc/httpd.pla: 0130: if url->1 == '/' +; samplesrc/httpd.pla: 0131: if url->0 == 1 +; samplesrc/httpd.pla: 0132: url = @defhtml // Is this a directory with no file given? Use index.html +; samplesrc/httpd.pla: 0133: else + !BYTE $66,$06 ; LLW [6] + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $64,$0C ; LLB [12] + !BYTE $3A,$04 ; SUBI 4 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $6E,$58 ; DLW [88] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B035 + !WORD _B035-* + !BYTE $66,$58 ; LLW [88] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $24 ; BRNE _B037 + !WORD _B037-* + !BYTE $26 ; LA _D036+0 +_F019 !WORD _D036+0 + !BYTE $76,$58 ; SLW [88] + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B037 +; samplesrc/httpd.pla: 0134: url->1 = url->0 - 1 +; samplesrc/httpd.pla: 0135: url = url + 1 +; samplesrc/httpd.pla: 0136: fin + !BYTE $66,$58 ; LLW [88] + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $66,$58 ; LLW [88] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$58 ; LLW [88] + !BYTE $8C ; INCR + !BYTE $76,$58 ; SLW [88] +_B038 +; samplesrc/httpd.pla: 0137: fin +_B035 +_B036 +; samplesrc/httpd.pla: 0138: strcat2(@filename, @prefix, url) +; samplesrc/httpd.pla: 0139: puts("GET:"); puts(@filename);putln + !BYTE $28,$0F ; LLA [15] + !BYTE $26 ; LA _D033+0 +_F020 !WORD _D033+0 + !BYTE $66,$58 ; LLW [88] + !BYTE $54 ; CALL _C003 +_F021 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $04 + !BYTE $47,$45,$54,$3A + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +; samplesrc/httpd.pla: 0140: // +; samplesrc/httpd.pla: 0141: // Get file info +; samplesrc/httpd.pla: 0142: // +; samplesrc/httpd.pla: 0143: //puts("getting file info "); // debug +; samplesrc/httpd.pla: 0144: refnum = fileio:open(@filename) // try to open this file with ProDOS +; samplesrc/httpd.pla: 0145: if refnum // file was opened OK +; samplesrc/httpd.pla: 0146: filelen = fileio:geteof(refnum) // get length of file for Content-Length +; samplesrc/httpd.pla: 0147: lenstr = itos(@lenstr + 1, filelen) - (@lenstr + 1) +; samplesrc/httpd.pla: 0148: strcat2(@okhdr, @httpOK, @httpContentLen) +; samplesrc/httpd.pla: 0149: strcat2(@okhdr, @okhdr, @lenstr) +; samplesrc/httpd.pla: 0150: strcat2(@okhdr, @okhdr, "\n\r") + !BYTE $28,$0F ; LLA [15] + !BYTE $54 ; CALL _X004 +_F023 !WORD 0 + !BYTE $54 ; CALL _X003 +_F024 !WORD 0 + !BYTE $28,$0F ; LLA [15] + !BYTE $6A ; LAW _X029+14 +_F025 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$0D ; DLB [13] + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $64,$0D ; LLB [13] + !BYTE $6A ; LAW _X029+8 +_F026 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $76,$5A ; SLW [90] + !BYTE $28,$51 ; LLA [81] + !BYTE $66,$5A ; LLW [90] + !BYTE $54 ; CALL _C004 +_F027 !WORD _C004 + !BYTE $28,$51 ; LLA [81] + !BYTE $84 ; SUB + !BYTE $74,$50 ; SLB [80] + !BYTE $26 ; LA _D037+0 +_F028 !WORD _D037+0 + !BYTE $26 ; LA _D038+0 +_F029 !WORD _D038+0 + !BYTE $26 ; LA _D042+0 +_F030 !WORD _D042+0 + !BYTE $54 ; CALL _C003 +_F031 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F032 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $28,$50 ; LLA [80] + !BYTE $54 ; CALL _C003 +_F033 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F034 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $0D,$0A + !BYTE $54 ; CALL _C003 +_F035 !WORD _C003 + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0151: // +; samplesrc/httpd.pla: 0152: // Content type header +; samplesrc/httpd.pla: 0153: // +; samplesrc/httpd.pla: 0154: fileio:getfileinfo(@filename, @fileInfo) +; samplesrc/httpd.pla: 0155: if fileInfo.1 == $03 OR fileInfo.1 == $04 +; samplesrc/httpd.pla: 0156: // +; samplesrc/httpd.pla: 0157: // this a text file +; samplesrc/httpd.pla: 0158: // +; samplesrc/httpd.pla: 0159: //puts(@mimeTextHtml) // debug +; samplesrc/httpd.pla: 0160: strcat2(@okhdr, @okhdr, @httpContentType) +; samplesrc/httpd.pla: 0161: strcat2(@okhdr, @okhdr, @mimeTextHtml) +; samplesrc/httpd.pla: 0162: else + !BYTE $28,$0F ; LLA [15] + !BYTE $26 ; LA _D035+0 +_F036 !WORD _D035+0 + !BYTE $6A ; LAW _X029+4 +_F037 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D035+1 +_F038 !WORD _D035+1 + !BYTE $06 ; CN 3 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B041 + !WORD _B041-* + !BYTE $68 ; LAB _D035+1 +_F039 !WORD _D035+1 + !BYTE $08 ; CN 4 + !BYTE $40 ; ISEQ +_B041 + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $26 ; LA _D037+0 +_F040 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D041+0 +_F041 !WORD _D041+0 + !BYTE $54 ; CALL _C003 +_F042 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F043 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D045+0 +_F044 !WORD _D045+0 + !BYTE $54 ; CALL _C003 +_F045 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B043 + !WORD _B043-* +_B042 +; samplesrc/httpd.pla: 0163: // +; samplesrc/httpd.pla: 0164: // send as binary attachment +; samplesrc/httpd.pla: 0165: // +; samplesrc/httpd.pla: 0166: //puts(@mimeOctetStream) // debug +; samplesrc/httpd.pla: 0167: strcat2(@okhdr, @okhdr, @httpContentType) +; samplesrc/httpd.pla: 0168: strcat2(@okhdr, @okhdr, @mimeOctetStream) +; samplesrc/httpd.pla: 0169: strcat2(@okhdr, @okhdr, "\n\r") + !BYTE $26 ; LA _D037+0 +_F046 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D041+0 +_F047 !WORD _D041+0 + !BYTE $54 ; CALL _C003 +_F048 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F049 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D046+0 +_F050 !WORD _D046+0 + !BYTE $54 ; CALL _C003 +_F051 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F052 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $0D,$0A + !BYTE $54 ; CALL _C003 +_F053 !WORD _C003 + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0170: // +; samplesrc/httpd.pla: 0171: // and send filename too +; samplesrc/httpd.pla: 0172: // +; samplesrc/httpd.pla: 0173: strcat2(@okhdr, @okhdr, @httpContentAttach) +; samplesrc/httpd.pla: 0174: // todo: get the base filename... +; samplesrc/httpd.pla: 0175: fin + !BYTE $26 ; LA _D037+0 +_F054 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D043+0 +_F055 !WORD _D043+0 + !BYTE $54 ; CALL _C003 +_F056 !WORD _C003 + !BYTE $30 ; DROP +_B043 +; samplesrc/httpd.pla: 0176: strcat2(@okhdr, @okhdr, @httpEnd) +; samplesrc/httpd.pla: 0177: //dumpchars(@okhdr + 1, okhdr) // debug +; samplesrc/httpd.pla: 0178: iNet:sendTCP(socketHTTP, @okhdr + 1, okhdr) // send HTTP response header to client +; samplesrc/httpd.pla: 0179: sendFile(refnum, socketHTTP, filelen) // send file data to client +; samplesrc/httpd.pla: 0180: fileio:close(refnum) +; samplesrc/httpd.pla: 0181: else // file couldn't be opened, so return 404 on this + !BYTE $26 ; LA _D037+0 +_F057 !WORD _D037+0 + !BYTE $34 ; DUP + !BYTE $26 ; LA _D044+0 +_F058 !WORD _D044+0 + !BYTE $54 ; CALL _C003 +_F059 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D032+0 +_F060 !WORD _D032+0 + !BYTE $26 ; LA _D037+1 +_F061 !WORD _D037+1 + !BYTE $68 ; LAB _D037+0 +_F062 !WORD _D037+0 + !BYTE $6A ; LAW _X028+14 +_F063 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$0D ; LLB [13] + !BYTE $6A ; LAW _D032+0 +_F064 !WORD _D032+0 + !BYTE $66,$5A ; LLW [90] + !BYTE $54 ; CALL _C005 +_F065 !WORD _C005 + !BYTE $64,$0D ; LLB [13] + !BYTE $6A ; LAW _X029+16 +_F066 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B040 + !WORD _B040-* +_B039 +; samplesrc/httpd.pla: 0182: puts("404 Not Found");putln // debug + !BYTE $2E ; CS + !BYTE $0D + !BYTE $34,$30,$34,$20,$4E,$6F,$74,$20 + !BYTE $46,$6F,$75,$6E,$64 + !BYTE $54 ; CALL _X004 +_F067 !WORD 0 +; samplesrc/httpd.pla: 0183: iNet:sendTCP(socketHTTP, @httpNOTFOUND + 1, httpNOTFOUND) +; samplesrc/httpd.pla: 0184: fin // refnum + !BYTE $54 ; CALL _X003 +_F068 !WORD 0 + !BYTE $6A ; LAW _D032+0 +_F069 !WORD _D032+0 + !BYTE $26 ; LA _D040+1 +_F070 !WORD _D040+1 + !BYTE $68 ; LAB _D040+0 +_F071 !WORD _D040+0 + !BYTE $6A ; LAW _X028+14 +_F072 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B040 +; samplesrc/httpd.pla: 0185: break + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +; samplesrc/httpd.pla: 0186: fin +_B033 +_B034 +; samplesrc/httpd.pla: 0187: next +_B032 + !BYTE $A4 ; INCBRLE _B031 + !WORD _B031-* +_B030 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/httpd.pla: 0188: else + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B026 +; samplesrc/httpd.pla: 0189: iNet:sendTCP(socketHTTP, @httpBAD + 1, httpBAD) +; samplesrc/httpd.pla: 0190: fin + !BYTE $6A ; LAW _D032+0 +_F073 !WORD _D032+0 + !BYTE $26 ; LA _D039+1 +_F074 !WORD _D039+1 + !BYTE $68 ; LAB _D039+0 +_F075 !WORD _D039+0 + !BYTE $6A ; LAW _X028+14 +_F076 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B027 +; samplesrc/httpd.pla: 0191: fin +_B021 +_B022 +; samplesrc/httpd.pla: 0192: socketHTTP = iNet:closeTCP(socketHTTP) +; samplesrc/httpd.pla: 0193: return 0 + !BYTE $6A ; LAW _D032+0 +_F077 !WORD _D032+0 + !BYTE $6A ; LAW _X028+16 +_F078 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D032+0 +_F079 !WORD _D032+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$5C ; LEAVE 92 +; samplesrc/httpd.pla: 0194: end +; samplesrc/httpd.pla: 0195: +; samplesrc/httpd.pla: 0196: if !iNet:initIP() +_INIT +; samplesrc/httpd.pla: 0197: return -1 + !BYTE $6A ; LAW _X028+0 +_F080 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B044 + !WORD _B044-* + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; samplesrc/httpd.pla: 0198: fin +_B044 +_B045 +; samplesrc/httpd.pla: 0199: puts("PLASMA Web Server, Version 1.0\n") + !BYTE $2E ; CS + !BYTE $1F + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$57 + !BYTE $65,$62,$20,$53,$65,$72,$76,$65 + !BYTE $72,$2C,$20,$56,$65,$72,$73,$69 + !BYTE $6F,$6E,$20,$31,$2E,$30,$0D + !BYTE $54 ; CALL _X004 +_F081 !WORD 0 +; samplesrc/httpd.pla: 0200: fileio:getpfx(@prefix) +; samplesrc/httpd.pla: 0201: // +; samplesrc/httpd.pla: 0202: // Alloc aligned file/io buffers +; samplesrc/httpd.pla: 0203: // +; samplesrc/httpd.pla: 0204: filebuff = heapallocalign(1024, 8, 0) +; samplesrc/httpd.pla: 0205: // +; samplesrc/httpd.pla: 0206: // Service IP +; samplesrc/httpd.pla: 0207: // +; samplesrc/httpd.pla: 0208: repeat + !BYTE $26 ; LA _D033+0 +_F082 !WORD _D033+0 + !BYTE $6A ; LAW _X029+0 +_F083 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X013 +_F084 !WORD 0 + !BYTE $7A ; SAW _D034+0 +_F085 !WORD _D034+0 +_B047 +; samplesrc/httpd.pla: 0209: // +; samplesrc/httpd.pla: 0210: // (Re)Open HTTPD port +; samplesrc/httpd.pla: 0211: // +; samplesrc/httpd.pla: 0212: if !socketHTTP +; samplesrc/httpd.pla: 0213: socketHTTP = iNet:listenTCP(80, @servHTTP, 0) +; samplesrc/httpd.pla: 0214: fin + !BYTE $6A ; LAW _D032+0 +_F086 !WORD _D032+0 + !BYTE $4E ; BRTRU _B049 + !WORD _B049-* + !BYTE $2A,$50 ; CB 80 + !BYTE $26 ; LA _C006+0 +_F087 !WORD _C006+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+10 +_F088 !WORD 0+10 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D032+0 +_F089 !WORD _D032+0 +_B049 +_B050 +; samplesrc/httpd.pla: 0215: iNet:serviceIP() +; samplesrc/httpd.pla: 0216: until conio:keypressed() + !BYTE $6A ; LAW _X028+2 +_F090 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B048 + !BYTE $6A ; LAW _X031+0 +_F091 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B047 + !WORD _B047-* +_B046 +; samplesrc/httpd.pla: 0217: +; samplesrc/httpd.pla: 0218: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 8 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 13 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: HEAPALLOCALIGN + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$C3,$C1,$CC,$C9,$C7,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 13 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/int32test.a b/src/samplesrc/int32test.a new file mode 100644 index 0000000..3a94411 --- /dev/null +++ b/src/samplesrc/int32test.a @@ -0,0 +1,747 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/int32test.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/int32test.pla: 0001: +; samplesrc/int32test.pla: 0002: include "inc/int32.plh" +; inc/int32.plh: 0001: import int32 + ; DCI STRING: INT32 + !BYTE $C9,$CE,$D4,$B3,$32 + ; INT32 -> X028 +; inc/int32.plh: 0002: const t_i32 = 4 + ; t_i32 = 4 +; inc/int32.plh: 0003: +; inc/int32.plh: 0004: predef zero32#0 + ; ZERO32 -> X029 +; inc/int32.plh: 0005: predef zext16to32#0 + ; ZEXT16TO32 -> X030 +; inc/int32.plh: 0006: predef neg32#0 + ; NEG32 -> X031 +; inc/int32.plh: 0007: predef load32(i32ptr)#0 + ; LOAD32 -> X032 +; inc/int32.plh: 0008: predef loadi16(imm16)#0 + ; LOADI16 -> X033 +; inc/int32.plh: 0009: predef store32(i32ptr)#0 + ; STORE32 -> X034 +; inc/int32.plh: 0010: predef add32(i32ptr)#0 + ; ADD32 -> X035 +; inc/int32.plh: 0011: predef addi16(imm16)#0 + ; ADDI16 -> X036 +; inc/int32.plh: 0012: predef sub32(i32ptr)#0 + ; SUB32 -> X037 +; inc/int32.plh: 0013: predef subi16(imm16)#0 + ; SUBI16 -> X038 +; inc/int32.plh: 0014: predef shl32(imm8)#0 + ; SHL32 -> X039 +; inc/int32.plh: 0015: predef shr32(imm8)#0 + ; SHR32 -> X040 +; inc/int32.plh: 0016: predef mul32(i32ptr)#0 + ; MUL32 -> X041 +; inc/int32.plh: 0017: predef muli16(imm16)#0 + ; MULI16 -> X042 +; inc/int32.plh: 0018: predef div32(i32ptr)#2 + ; DIV32 -> X043 +; inc/int32.plh: 0019: predef divi16(imm16)#2 + ; DIVI16 -> X044 +; inc/int32.plh: 0020: predef iseq32(i32ptr)#1 + ; ISEQ32 -> X045 +; inc/int32.plh: 0021: predef iseqi16(imm16)#1 + ; ISEQI16 -> X046 +; inc/int32.plh: 0022: predef isge32(i32ptr)#1 + ; ISGE32 -> X047 +; inc/int32.plh: 0023: predef isgei16(imm16)#1 + ; ISGEI16 -> X048 +; inc/int32.plh: 0024: predef isle32(i32ptr)#1 + ; ISLE32 -> X049 +; inc/int32.plh: 0025: predef islei16(imm16)#1 + ; ISLEI16 -> X050 +; inc/int32.plh: 0026: predef isgt32(i32ptr)#1 + ; ISGT32 -> X051 +; inc/int32.plh: 0027: predef isgti16(imm16)#1 + ; ISGTI16 -> X052 +; inc/int32.plh: 0028: predef islt32(i32ptr)#1 + ; ISLT32 -> X053 +; inc/int32.plh: 0029: predef islti16(imm16)#1 + ; ISLTI16 -> X054 +; inc/int32.plh: 0030: predef i32tos(i32ptr, strptr)#1 + ; I32TOS -> X055 +; inc/int32.plh: 0031: predef puti32(i32ptr)#0 + ; PUTI32 -> X056 +; inc/int32.plh: 0032: end +; samplesrc/int32test.pla: 0002: +; samplesrc/int32test.pla: 0003: +; samplesrc/int32test.pla: 0004: def testi32#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; testi32() +; samplesrc/int32test.pla: 0005: word il, ih + ; il -> [0] + ; ih -> [2] +; samplesrc/int32test.pla: 0006: res[t_i32] i32 + ; i32 -> [4] +; samplesrc/int32test.pla: 0007: +; samplesrc/int32test.pla: 0008: ih = 0 + !BYTE $58,$08,$00 ; ENTER 8,0 +; samplesrc/int32test.pla: 0009: for il = 0 to 10 + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $14 ; CN 10 + !BYTE $00 ; CN 0 +_B002 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/int32test.pla: 0010: load32(@il) +; samplesrc/int32test.pla: 0011: muli16(10) +; samplesrc/int32test.pla: 0012: divi16(2) +; samplesrc/int32test.pla: 0013: store32(@i32) +; samplesrc/int32test.pla: 0014: puti32(@i32); putln +; samplesrc/int32test.pla: 0015: next + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _X032 +_F000 !WORD 0 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X042 +_F001 !WORD 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X044 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X034 +_F003 !WORD 0 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X056 +_F004 !WORD 0 + !BYTE $54 ; CALL _X003 +_F005 !WORD 0 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/int32test.pla: 0016: muli16(-30000) +; samplesrc/int32test.pla: 0017: store32(@i32) +; samplesrc/int32test.pla: 0018: puti32(@i32); putln +; samplesrc/int32test.pla: 0019: loadi16(100) +; samplesrc/int32test.pla: 0020: if islti16(50) +; samplesrc/int32test.pla: 0021: puts("100 < 50\n") + !BYTE $2C,$D0,$8A ; CW -30000 + !BYTE $54 ; CALL _X042 +_F006 !WORD 0 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X034 +_F007 !WORD 0 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X056 +_F008 !WORD 0 + !BYTE $54 ; CALL _X003 +_F009 !WORD 0 + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X033 +_F010 !WORD 0 + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _X054 +_F011 !WORD 0 + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $2E ; CS + !BYTE $09 + !BYTE $31,$30,$30,$20,$3C,$20,$35,$30 + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 +; samplesrc/int32test.pla: 0022: fin +_B004 +_B005 +; samplesrc/int32test.pla: 0023: if islti16(500) +; samplesrc/int32test.pla: 0024: puts("100 < 500\n") + !BYTE $2C,$F4,$01 ; CW 500 + !BYTE $54 ; CALL _X054 +_F013 !WORD 0 + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3C,$20,$35,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 +; samplesrc/int32test.pla: 0025: fin +_B006 +_B007 +; samplesrc/int32test.pla: 0026: if isgti16(50) +; samplesrc/int32test.pla: 0027: puts("100 > 50\n") + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _X052 +_F015 !WORD 0 + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $2E ; CS + !BYTE $09 + !BYTE $31,$30,$30,$20,$3E,$20,$35,$30 + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +; samplesrc/int32test.pla: 0028: fin +_B008 +_B009 +; samplesrc/int32test.pla: 0029: if isgti16(500) +; samplesrc/int32test.pla: 0030: puts("100 > 500\n") + !BYTE $2C,$F4,$01 ; CW 500 + !BYTE $54 ; CALL _X052 +_F017 !WORD 0 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3E,$20,$35,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 +; samplesrc/int32test.pla: 0031: fin +_B010 +_B011 +; samplesrc/int32test.pla: 0032: if islei16(50) +; samplesrc/int32test.pla: 0033: puts("100 <= 50\n") + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _X050 +_F019 !WORD 0 + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3C,$3D,$20,$35 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +; samplesrc/int32test.pla: 0034: fin +_B012 +_B013 +; samplesrc/int32test.pla: 0035: if islei16(500) +; samplesrc/int32test.pla: 0036: puts("100 <= 500\n") + !BYTE $2C,$F4,$01 ; CW 500 + !BYTE $54 ; CALL _X050 +_F021 !WORD 0 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3C,$3D,$20,$35 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +; samplesrc/int32test.pla: 0037: fin +_B014 +_B015 +; samplesrc/int32test.pla: 0038: if isgei16(50) +; samplesrc/int32test.pla: 0039: puts("100 >= 50\n") + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _X048 +_F023 !WORD 0 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3E,$3D,$20,$35 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +; samplesrc/int32test.pla: 0040: fin +_B016 +_B017 +; samplesrc/int32test.pla: 0041: if isgei16(500) +; samplesrc/int32test.pla: 0042: puts("100 >= 500\n") + !BYTE $2C,$F4,$01 ; CW 500 + !BYTE $54 ; CALL _X048 +_F025 !WORD 0 + !BYTE $4C ; BRFLS _B018 + !WORD _B018-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3E,$3D,$20,$35 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 +; samplesrc/int32test.pla: 0043: fin +_B018 +_B019 +; samplesrc/int32test.pla: 0044: +; samplesrc/int32test.pla: 0045: if islti16(100) +; samplesrc/int32test.pla: 0046: puts("100 < 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X054 +_F027 !WORD 0 + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3C,$20,$31,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F028 !WORD 0 +; samplesrc/int32test.pla: 0047: fin +_B020 +_B021 +; samplesrc/int32test.pla: 0048: if islti16(100) +; samplesrc/int32test.pla: 0049: puts("100 < 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X054 +_F029 !WORD 0 + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3C,$20,$31,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +; samplesrc/int32test.pla: 0050: fin +_B022 +_B023 +; samplesrc/int32test.pla: 0051: if isgti16(100) +; samplesrc/int32test.pla: 0052: puts("100 > 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X052 +_F031 !WORD 0 + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3E,$20,$31,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F032 !WORD 0 +; samplesrc/int32test.pla: 0053: fin +_B024 +_B025 +; samplesrc/int32test.pla: 0054: if isgti16(100) +; samplesrc/int32test.pla: 0055: puts("100 > 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X052 +_F033 !WORD 0 + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $31,$30,$30,$20,$3E,$20,$31,$30 + !BYTE $30,$0D + !BYTE $54 ; CALL _X004 +_F034 !WORD 0 +; samplesrc/int32test.pla: 0056: fin +_B026 +_B027 +; samplesrc/int32test.pla: 0057: if islei16(100) +; samplesrc/int32test.pla: 0058: puts("100 <= 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X050 +_F035 !WORD 0 + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3C,$3D,$20,$31 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 +; samplesrc/int32test.pla: 0059: fin +_B028 +_B029 +; samplesrc/int32test.pla: 0060: if islei16(100) +; samplesrc/int32test.pla: 0061: puts("100 <= 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X050 +_F037 !WORD 0 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3C,$3D,$20,$31 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F038 !WORD 0 +; samplesrc/int32test.pla: 0062: fin +_B030 +_B031 +; samplesrc/int32test.pla: 0063: if isgei16(100) +; samplesrc/int32test.pla: 0064: puts("100 >= 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X048 +_F039 !WORD 0 + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3E,$3D,$20,$31 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F040 !WORD 0 +; samplesrc/int32test.pla: 0065: fin +_B032 +_B033 +; samplesrc/int32test.pla: 0066: if isgei16(100) +; samplesrc/int32test.pla: 0067: puts("100 >= 100\n") + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X048 +_F041 !WORD 0 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $31,$30,$30,$20,$3E,$3D,$20,$31 + !BYTE $30,$30,$0D + !BYTE $54 ; CALL _X004 +_F042 !WORD 0 +; samplesrc/int32test.pla: 0068: fin +_B034 +_B035 +; samplesrc/int32test.pla: 0069: end + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/int32test.pla: 0070: +; samplesrc/int32test.pla: 0071: testi32 +_INIT +; samplesrc/int32test.pla: 0072: done + !BYTE $54 ; CALL _C000 +_F043 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 44 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 56 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 56 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 48 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 48 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 48 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 48 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: LOAD32 + !BYTE $CC,$CF,$C1,$C4,$B3,$32 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: LOADI16 + !BYTE $CC,$CF,$C1,$C4,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: STORE32 + !BYTE $D3,$D4,$CF,$D2,$C5,$B3,$32 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: MULI16 + !BYTE $CD,$D5,$CC,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 42 ; ESD INDEX + ; DCI STRING: DIVI16 + !BYTE $C4,$C9,$D6,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 44 ; ESD INDEX + ; DCI STRING: ISGEI16 + !BYTE $C9,$D3,$C7,$C5,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 48 ; ESD INDEX + ; DCI STRING: ISLEI16 + !BYTE $C9,$D3,$CC,$C5,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 50 ; ESD INDEX + ; DCI STRING: ISGTI16 + !BYTE $C9,$D3,$C7,$D4,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 52 ; ESD INDEX + ; DCI STRING: ISLTI16 + !BYTE $C9,$D3,$CC,$D4,$C9,$B1,$36 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 54 ; ESD INDEX + ; DCI STRING: PUTI32 + !BYTE $D0,$D5,$D4,$C9,$B3,$32 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 56 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/lz4cat.a b/src/samplesrc/lz4cat.a new file mode 100644 index 0000000..cb0f68a --- /dev/null +++ b/src/samplesrc/lz4cat.a @@ -0,0 +1,926 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/lz4cat.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/lz4cat.pla: 0001: +; samplesrc/lz4cat.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; samplesrc/lz4cat.pla: 0002: +; samplesrc/lz4cat.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; samplesrc/lz4cat.pla: 0003: +; samplesrc/lz4cat.pla: 0004: include "inc/lz4.plh" +; inc/lz4.plh: 0001: import lz4 + ; DCI STRING: LZ4 + !BYTE $CC,$DA,$34 + ; LZ4 -> X033 +; inc/lz4.plh: 0002: predef lz4Unpack(seq, seqend, buff, buffend) + ; LZ4UNPACK -> X034 +; inc/lz4.plh: 0003: end +; samplesrc/lz4cat.pla: 0004: +; samplesrc/lz4cat.pla: 0005: +; samplesrc/lz4cat.pla: 0006: struc t_header + !BYTE $00 ; END OF MODULE DEPENDENCIES +; samplesrc/lz4cat.pla: 0007: word magic[2] + ; magic = 0 +; samplesrc/lz4cat.pla: 0008: byte FLG + ; FLG = 4 +; samplesrc/lz4cat.pla: 0009: byte BD + ; BD = 5 +; samplesrc/lz4cat.pla: 0010: end + ; t_header = 6 +; samplesrc/lz4cat.pla: 0011: word arg +_D035 !FILL 2 ; arg +; samplesrc/lz4cat.pla: 0012: byte ref +_D036 !FILL 1 ; ref +; samplesrc/lz4cat.pla: 0013: +; samplesrc/lz4cat.pla: 0014: def lz4ReadBlock(flags)#2 +_SUBSEG ; BYTECODE STARTS + ; flags -> [0] +_C000 ; lz4ReadBlock() +; samplesrc/lz4cat.pla: 0015: word size[2], block, data, len + ; size -> [2] + ; block -> [6] + ; data -> [8] + ; len -> [10] +; samplesrc/lz4cat.pla: 0016: +; samplesrc/lz4cat.pla: 0017: len = fileio:read(ref, @size, 4) + !BYTE $58,$0C,$01 ; ENTER 12,1 +; samplesrc/lz4cat.pla: 0018: if len <> 4 or size[0] == 0 or size[1] & $7FFF +; samplesrc/lz4cat.pla: 0019: return NULL, 0 + !BYTE $68 ; LAB _D036+0 +_F000 !WORD _D036+0 + !BYTE $28,$02 ; LLA [2] + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X031+18 +_F001 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6E,$0A ; DLW [10] + !BYTE $08 ; CN 4 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B002 + !WORD _B002-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$FF,$7F ; CW 32767 + !BYTE $94 ; AND +_B002 +_B001 + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0C ; LEAVE 12 +; samplesrc/lz4cat.pla: 0020: fin +_B003 +_B004 +; samplesrc/lz4cat.pla: 0021: block = heapalloc(size[0]) +; samplesrc/lz4cat.pla: 0022: if block +; samplesrc/lz4cat.pla: 0023: len = fileio:read(ref, block, size[0]) +; samplesrc/lz4cat.pla: 0024: if len <> size[0] +; samplesrc/lz4cat.pla: 0025: heaprelease(block) +; samplesrc/lz4cat.pla: 0026: return NULL, 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X014 +_F002 !WORD 0 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $68 ; LAB _D036+0 +_F003 !WORD _D036+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X031+18 +_F004 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $22 ; BREQ _B007 + !WORD _B007-* + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X015 +_F005 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0C ; LEAVE 12 +; samplesrc/lz4cat.pla: 0027: fin +_B007 +_B008 +; samplesrc/lz4cat.pla: 0028: else + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B005 +; samplesrc/lz4cat.pla: 0029: return NULL, 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0C ; LEAVE 12 +; samplesrc/lz4cat.pla: 0030: fin +_B006 +; samplesrc/lz4cat.pla: 0031: if size[1] & $8000 +; samplesrc/lz4cat.pla: 0032: // +; samplesrc/lz4cat.pla: 0033: // Uncompressed block +; samplesrc/lz4cat.pla: 0034: // +; samplesrc/lz4cat.pla: 0035: data = block +; samplesrc/lz4cat.pla: 0036: else + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; samplesrc/lz4cat.pla: 0037: // +; samplesrc/lz4cat.pla: 0038: // Decompress block +; samplesrc/lz4cat.pla: 0039: // +; samplesrc/lz4cat.pla: 0040: len = heapavail - 256 // Allocate almost entire heap to decompress into +; samplesrc/lz4cat.pla: 0041: data = heapalloc(len) +; samplesrc/lz4cat.pla: 0042: if data +; samplesrc/lz4cat.pla: 0043: len = lz4Unpack(block, block + size[0], data, data + len) +; samplesrc/lz4cat.pla: 0044: memcpy(block, data, len) +; samplesrc/lz4cat.pla: 0045: data = block +; samplesrc/lz4cat.pla: 0046: else + !BYTE $54 ; CALL _X016 +_F006 !WORD 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $84 ; SUB + !BYTE $6E,$0A ; DLW [10] + !BYTE $54 ; CALL _X014 +_F007 !WORD 0 + !BYTE $6E,$08 ; DLW [8] + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $66,$06 ; LLW [6] + !BYTE $34 ; DUP + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $34 ; DUP + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $54 ; CALL _X034 +_F008 !WORD 0 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _X018 +_F009 !WORD 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B012 + !WORD _B012-* +_B011 +; samplesrc/lz4cat.pla: 0047: len = 0 +; samplesrc/lz4cat.pla: 0048: fin + !BYTE $00 ; CN 0 + !BYTE $76,$0A ; SLW [10] +_B012 +; samplesrc/lz4cat.pla: 0049: heaprelease(block + len) +; samplesrc/lz4cat.pla: 0050: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $54 ; CALL _X015 +_F010 !WORD 0 + !BYTE $30 ; DROP +_B010 +; samplesrc/lz4cat.pla: 0051: if flags & $10 // Block Checksum +; samplesrc/lz4cat.pla: 0052: fileio:read(ref, @size, 4) +; samplesrc/lz4cat.pla: 0053: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $68 ; LAB _D036+0 +_F011 !WORD _D036+0 + !BYTE $28,$02 ; LLA [2] + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X031+18 +_F012 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B013 +_B014 +; samplesrc/lz4cat.pla: 0054: return data, len + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $5A,$0C ; LEAVE 12 +; samplesrc/lz4cat.pla: 0055: end +; samplesrc/lz4cat.pla: 0056: def lz4ReadFrame#0 +_C001 ; lz4ReadFrame() +; samplesrc/lz4cat.pla: 0057: word data, len + ; data -> [0] + ; len -> [2] +; samplesrc/lz4cat.pla: 0058: byte header[t_header], opt + ; header -> [4] + ; opt -> [10] +; samplesrc/lz4cat.pla: 0059: +; samplesrc/lz4cat.pla: 0060: fileio:read(ref, @header, t_header) + !BYTE $58,$0B,$00 ; ENTER 11,0 +; samplesrc/lz4cat.pla: 0061: if header:magic[1] <> $184D or header:magic[0] <> $2204 +; samplesrc/lz4cat.pla: 0062: puts("Not LZ4 file.\n") + !BYTE $68 ; LAB _D036+0 +_F013 !WORD _D036+0 + !BYTE $28,$04 ; LLA [4] + !BYTE $0C ; CN 6 + !BYTE $6A ; LAW _X031+18 +_F014 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$4D,$18 ; CW 6221 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B015 + !WORD _B015-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$04,$22 ; CW 8708 + !BYTE $42 ; ISNE +_B015 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $2E ; CS + !BYTE $0E + !BYTE $4E,$6F,$74,$20,$4C,$5A,$34,$20 + !BYTE $66,$69,$6C,$65,$2E,$0D + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 +; samplesrc/lz4cat.pla: 0063: return + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/lz4cat.pla: 0064: fin +_B016 +_B017 +; samplesrc/lz4cat.pla: 0065: if header.FLG & $C0 <> $40 +; samplesrc/lz4cat.pla: 0066: puts("Wrong LZ4 version.\n") + !BYTE $64,$08 ; LLB [8] + !BYTE $3C,$C0 ; ANDI 192 + !BYTE $2A,$40 ; CB 64 + !BYTE $22 ; BREQ _B018 + !WORD _B018-* + !BYTE $2E ; CS + !BYTE $13 + !BYTE $57,$72,$6F,$6E,$67,$20,$4C,$5A + !BYTE $34,$20,$76,$65,$72,$73,$69,$6F + !BYTE $6E,$2E,$0D + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +; samplesrc/lz4cat.pla: 0067: return + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/lz4cat.pla: 0068: fin +_B018 +_B019 +; samplesrc/lz4cat.pla: 0069: if header.BD & $70 <> $40 +; samplesrc/lz4cat.pla: 0070: puts("Not 64K block size.\n") + !BYTE $64,$09 ; LLB [9] + !BYTE $3C,$70 ; ANDI 112 + !BYTE $2A,$40 ; CB 64 + !BYTE $22 ; BREQ _B020 + !WORD _B020-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $4E,$6F,$74,$20,$36,$34,$4B,$20 + !BYTE $62,$6C,$6F,$63,$6B,$20,$73,$69 + !BYTE $7A,$65,$2E,$0D + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +; samplesrc/lz4cat.pla: 0071: return + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/lz4cat.pla: 0072: fin +_B020 +_B021 +; samplesrc/lz4cat.pla: 0073: opt = 1 +; samplesrc/lz4cat.pla: 0074: if header.FLG & $08 // Content Size +; samplesrc/lz4cat.pla: 0075: opt = opt + 8 +; samplesrc/lz4cat.pla: 0076: fin + !BYTE $02 ; CN 1 + !BYTE $74,$0A ; SLB [10] + !BYTE $64,$08 ; LLB [8] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $64,$0A ; LLB [10] + !BYTE $38,$08 ; ADDI 8 + !BYTE $74,$0A ; SLB [10] +_B022 +_B023 +; samplesrc/lz4cat.pla: 0077: if header.FLG & $01 // Dictionary ID +; samplesrc/lz4cat.pla: 0078: opt = opt + 4 +; samplesrc/lz4cat.pla: 0079: fin + !BYTE $64,$08 ; LLB [8] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $64,$0A ; LLB [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $74,$0A ; SLB [10] +_B024 +_B025 +; samplesrc/lz4cat.pla: 0080: fileio:read(ref, heapmark, opt) // Read rest of header and throw away +; samplesrc/lz4cat.pla: 0081: repeat + !BYTE $68 ; LAB _D036+0 +_F018 !WORD _D036+0 + !BYTE $54 ; CALL _X012 +_F019 !WORD 0 + !BYTE $64,$0A ; LLB [10] + !BYTE $6A ; LAW _X031+18 +_F020 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B027 +; samplesrc/lz4cat.pla: 0082: data, len = lz4ReadBlock(header.FLG) +; samplesrc/lz4cat.pla: 0083: if len +; samplesrc/lz4cat.pla: 0084: while len + !BYTE $64,$08 ; LLB [8] + !BYTE $54 ; CALL _C000 +_F021 !WORD _C000 + !BYTE $76,$02 ; SLW [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +_B031 +; samplesrc/lz4cat.pla: 0085: putc(^data <> $0A ?? ^data :: $0D) +; samplesrc/lz4cat.pla: 0086: data++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $14 ; CN 10 + !BYTE $22 ; BREQ _B036 + !WORD _B036-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +_B036 + !BYTE $1A ; CN 13 +_B037 + !BYTE $54 ; CALL _X002 +_F022 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; samplesrc/lz4cat.pla: 0087: len-- + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR +; samplesrc/lz4cat.pla: 0088: loop + !BYTE $76,$02 ; SLW [2] +_B033 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B031 + !WORD _B031-* +_B032 +; samplesrc/lz4cat.pla: 0089: heaprelease(data) +; samplesrc/lz4cat.pla: 0090: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X015 +_F023 !WORD 0 + !BYTE $30 ; DROP +_B029 +_B030 +; samplesrc/lz4cat.pla: 0091: until not data +_B028 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B027 + !WORD _B027-* +_B026 +; samplesrc/lz4cat.pla: 0092: if header.FLG & $04 // Content Checksun +; samplesrc/lz4cat.pla: 0093: fileio:read(ref, heapmark, 4) +; samplesrc/lz4cat.pla: 0094: fin + !BYTE $64,$08 ; LLB [8] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $68 ; LAB _D036+0 +_F024 !WORD _D036+0 + !BYTE $54 ; CALL _X012 +_F025 !WORD 0 + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X031+18 +_F026 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B038 +_B039 +; samplesrc/lz4cat.pla: 0095: end + !BYTE $5A,$0B ; LEAVE 11 +; samplesrc/lz4cat.pla: 0096: arg = argNext(argFirst) +_INIT +; samplesrc/lz4cat.pla: 0097: if ^arg +; samplesrc/lz4cat.pla: 0098: ref = fileio:open(arg) +; samplesrc/lz4cat.pla: 0099: if ref +; samplesrc/lz4cat.pla: 0100: lz4ReadFrame +; samplesrc/lz4cat.pla: 0101: fileio:close(ref) +; samplesrc/lz4cat.pla: 0102: else + !BYTE $54 ; CALL _X029 +_F027 !WORD 0 + !BYTE $54 ; CALL _X030 +_F028 !WORD 0 + !BYTE $7A ; SAW _D035+0 +_F029 !WORD _D035+0 + !BYTE $6A ; LAW _D035+0 +_F030 !WORD _D035+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $6A ; LAW _D035+0 +_F031 !WORD _D035+0 + !BYTE $6A ; LAW _X031+14 +_F032 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D036+0 +_F033 !WORD _D036+0 + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $54 ; CALL _C001 +_F034 !WORD _C001 + !BYTE $68 ; LAB _D036+0 +_F035 !WORD _D036+0 + !BYTE $6A ; LAW _X031+16 +_F036 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B043 + !WORD _B043-* +_B042 +; samplesrc/lz4cat.pla: 0103: puts("File not found.\n") + !BYTE $2E ; CS + !BYTE $10 + !BYTE $46,$69,$6C,$65,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 +; samplesrc/lz4cat.pla: 0104: fin +_B043 +; samplesrc/lz4cat.pla: 0105: fin +_B040 +_B041 +; samplesrc/lz4cat.pla: 0106: +; samplesrc/lz4cat.pla: 0107: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: LZ4UNPACK + !BYTE $CC,$DA,$B4,$D5,$CE,$D0,$C1,$C3,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/memtest.a b/src/samplesrc/memtest.a new file mode 100644 index 0000000..053fbf5 --- /dev/null +++ b/src/samplesrc/memtest.a @@ -0,0 +1,959 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/memtest.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/memtest.pla: 0001: +; samplesrc/memtest.pla: 0002: include "inc/memmgr.plh" +; inc/memmgr.plh: 0001: import memmgr + ; DCI STRING: MEMMGR + !BYTE $CD,$C5,$CD,$CD,$C7,$52 + ; MEMMGR -> X028 +; inc/memmgr.plh: 0002: // +; inc/memmgr.plh: 0003: // Utility routine +; inc/memmgr.plh: 0004: // +; inc/memmgr.plh: 0005: predef sweep#0, brk(addr), sbrk(size) + ; SWEEP -> X029 + ; BRK -> X030 + ; SBRK -> X031 +; inc/memmgr.plh: 0006: // +; inc/memmgr.plh: 0007: // Memory routines +; inc/memmgr.plh: 0008: // +; inc/memmgr.plh: 0009: predef hmemNew(size), hmemLock(hmem), hmemUnlock(hmem)#0, hmemRef(hmem)#0, hmemDel(hmem)#0, hmemFre(lptr) + ; HMEMNEW -> X032 + ; HMEMLOCK -> X033 + ; HMEMUNLOCK -> X034 + ; HMEMREF -> X035 + ; HMEMDEL -> X036 + ; HMEMFRE -> X037 +; inc/memmgr.plh: 0010: // +; inc/memmgr.plh: 0011: // Max size of a memory block +; inc/memmgr.plh: 0012: // +; inc/memmgr.plh: 0013: const MAX_MEMBLK_SIZE = $2000 + ; MAX_MEMBLK_SIZE = 8192 +; inc/memmgr.plh: 0014: end +; samplesrc/memtest.pla: 0002: +; samplesrc/memtest.pla: 0003: word a, b, c, d, e, memptr + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D038 !FILL 2 ; a, b, c, d, e, memptr +_D039 !FILL 2 ; b, c, d, e, memptr +_D040 !FILL 2 ; c, d, e, memptr +_D041 !FILL 2 ; d, e, memptr +_D042 !FILL 2 ; e, memptr +_D043 !FILL 2 ; memptr +; samplesrc/memtest.pla: 0004: word memfre, memlrgst +_D044 !FILL 2 ; memfre, memlrgst +_D045 !FILL 2 ; memlrgst +; samplesrc/memtest.pla: 0005: +; samplesrc/memtest.pla: 0006: sbrk($3000) // Set small pool size +_SUBSEG ; BYTECODE STARTS +_INIT +; samplesrc/memtest.pla: 0007: +; samplesrc/memtest.pla: 0008: memfre=hmemFre(@memlrgst);puth(memfre); putc(' '); puth(memlrgst); putln +; samplesrc/memtest.pla: 0009: a = hmemNew(MAX_MEMBLK_SIZE) +; samplesrc/memtest.pla: 0010: b = hmemNew(MAX_MEMBLK_SIZE) +; samplesrc/memtest.pla: 0011: c = hmemNew(MAX_MEMBLK_SIZE) +; samplesrc/memtest.pla: 0012: +; samplesrc/memtest.pla: 0013: d = hmemNew($1000) +; samplesrc/memtest.pla: 0014: e = hmemNew(768) +; samplesrc/memtest.pla: 0015: hmemLock(d) +; samplesrc/memtest.pla: 0016: memptr = hmemLock(e) +; samplesrc/memtest.pla: 0017: if memptr; *memptr = $EEEE; fin + !BYTE $2C,$00,$30 ; CW 12288 + !BYTE $54 ; CALL _X031 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D045+0 +_F001 !WORD _D045+0 + !BYTE $54 ; CALL _X037 +_F002 !WORD 0 + !BYTE $7E ; DAW _D044+0 +_F003 !WORD _D044+0 + !BYTE $54 ; CALL _X009 +_F004 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F005 !WORD 0 + !BYTE $6A ; LAW _D045+0 +_F006 !WORD _D045+0 + !BYTE $54 ; CALL _X009 +_F007 !WORD 0 + !BYTE $54 ; CALL _X003 +_F008 !WORD 0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X032 +_F009 !WORD 0 + !BYTE $7A ; SAW _D038+0 +_F010 !WORD _D038+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X032 +_F011 !WORD 0 + !BYTE $7A ; SAW _D039+0 +_F012 !WORD _D039+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X032 +_F013 !WORD 0 + !BYTE $7A ; SAW _D040+0 +_F014 !WORD _D040+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X032 +_F015 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F016 !WORD _D041+0 + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $54 ; CALL _X032 +_F017 !WORD 0 + !BYTE $7A ; SAW _D042+0 +_F018 !WORD _D042+0 + !BYTE $6A ; LAW _D041+0 +_F019 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F020 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D042+0 +_F021 !WORD _D042+0 + !BYTE $54 ; CALL _X033 +_F022 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F023 !WORD _D043+0 + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $2C,$EE,$EE ; CW 61166 + !BYTE $6A ; LAW _D043+0 +_F024 !WORD _D043+0 + !BYTE $72 ; SW +_B001 +_B002 +; samplesrc/memtest.pla: 0018: hmemUnlock(d) +; samplesrc/memtest.pla: 0019: hmemUnlock(e) +; samplesrc/memtest.pla: 0020: hmemDel(d) +; samplesrc/memtest.pla: 0021: memfre=hmemFre(@memlrgst);puth(memfre); putc(' '); puth(memlrgst); putln +; samplesrc/memtest.pla: 0022: +; samplesrc/memtest.pla: 0023: memptr = hmemLock(a) +; samplesrc/memtest.pla: 0024: if memptr; memset(memptr, $1111, MAX_MEMBLK_SIZE); fin + !BYTE $6A ; LAW _D041+0 +_F025 !WORD _D041+0 + !BYTE $54 ; CALL _X034 +_F026 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F027 !WORD _D042+0 + !BYTE $54 ; CALL _X034 +_F028 !WORD 0 + !BYTE $6A ; LAW _D041+0 +_F029 !WORD _D041+0 + !BYTE $54 ; CALL _X036 +_F030 !WORD 0 + !BYTE $26 ; LA _D045+0 +_F031 !WORD _D045+0 + !BYTE $54 ; CALL _X037 +_F032 !WORD 0 + !BYTE $7E ; DAW _D044+0 +_F033 !WORD _D044+0 + !BYTE $54 ; CALL _X009 +_F034 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F035 !WORD 0 + !BYTE $6A ; LAW _D045+0 +_F036 !WORD _D045+0 + !BYTE $54 ; CALL _X009 +_F037 !WORD 0 + !BYTE $54 ; CALL _X003 +_F038 !WORD 0 + !BYTE $6A ; LAW _D038+0 +_F039 !WORD _D038+0 + !BYTE $54 ; CALL _X033 +_F040 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F041 !WORD _D043+0 + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $6A ; LAW _D043+0 +_F042 !WORD _D043+0 + !BYTE $2C,$11,$11 ; CW 4369 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X017 +_F043 !WORD 0 +_B003 +_B004 +; samplesrc/memtest.pla: 0025: hmemUnlock(a) +; samplesrc/memtest.pla: 0026: memptr = hmemLock(b) +; samplesrc/memtest.pla: 0027: if memptr; memset(memptr, $2222, MAX_MEMBLK_SIZE); fin + !BYTE $6A ; LAW _D038+0 +_F044 !WORD _D038+0 + !BYTE $54 ; CALL _X034 +_F045 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F046 !WORD _D039+0 + !BYTE $54 ; CALL _X033 +_F047 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F048 !WORD _D043+0 + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $6A ; LAW _D043+0 +_F049 !WORD _D043+0 + !BYTE $2C,$22,$22 ; CW 8738 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X017 +_F050 !WORD 0 +_B005 +_B006 +; samplesrc/memtest.pla: 0028: hmemUnlock(b) +; samplesrc/memtest.pla: 0029: memptr = hmemLock(c) +; samplesrc/memtest.pla: 0030: if memptr; memset(memptr, $3333, MAX_MEMBLK_SIZE); fin + !BYTE $6A ; LAW _D039+0 +_F051 !WORD _D039+0 + !BYTE $54 ; CALL _X034 +_F052 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F053 !WORD _D040+0 + !BYTE $54 ; CALL _X033 +_F054 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F055 !WORD _D043+0 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $6A ; LAW _D043+0 +_F056 !WORD _D043+0 + !BYTE $2C,$33,$33 ; CW 13107 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _X017 +_F057 !WORD 0 +_B007 +_B008 +; samplesrc/memtest.pla: 0031: hmemUnlock(c) +; samplesrc/memtest.pla: 0032: memptr = hmemLock(a) +; samplesrc/memtest.pla: 0033: if memptr; puth(a); putc('='); puth(*(memptr + MAX_MEMBLK_SIZE - 2)); putln; fin + !BYTE $6A ; LAW _D040+0 +_F058 !WORD _D040+0 + !BYTE $54 ; CALL _X034 +_F059 !WORD 0 + !BYTE $6A ; LAW _D038+0 +_F060 !WORD _D038+0 + !BYTE $54 ; CALL _X033 +_F061 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F062 !WORD _D043+0 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $6A ; LAW _D038+0 +_F063 !WORD _D038+0 + !BYTE $54 ; CALL _X009 +_F064 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F065 !WORD 0 + !BYTE $6A ; LAW _D043+0 +_F066 !WORD _D043+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $82 ; ADD + !BYTE $3A,$02 ; SUBI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F067 !WORD 0 + !BYTE $54 ; CALL _X003 +_F068 !WORD 0 +_B009 +_B010 +; samplesrc/memtest.pla: 0034: hmemUnlock(a) +; samplesrc/memtest.pla: 0035: hmemDel(a) +; samplesrc/memtest.pla: 0036: memptr = hmemLock(b) +; samplesrc/memtest.pla: 0037: if memptr; puth(b); putc('='); puth(*(memptr + MAX_MEMBLK_SIZE - 2)); putln; fin + !BYTE $6A ; LAW _D038+0 +_F069 !WORD _D038+0 + !BYTE $54 ; CALL _X034 +_F070 !WORD 0 + !BYTE $6A ; LAW _D038+0 +_F071 !WORD _D038+0 + !BYTE $54 ; CALL _X036 +_F072 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F073 !WORD _D039+0 + !BYTE $54 ; CALL _X033 +_F074 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F075 !WORD _D043+0 + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $6A ; LAW _D039+0 +_F076 !WORD _D039+0 + !BYTE $54 ; CALL _X009 +_F077 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F078 !WORD 0 + !BYTE $6A ; LAW _D043+0 +_F079 !WORD _D043+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $82 ; ADD + !BYTE $3A,$02 ; SUBI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F080 !WORD 0 + !BYTE $54 ; CALL _X003 +_F081 !WORD 0 +_B011 +_B012 +; samplesrc/memtest.pla: 0038: hmemUnlock(b) +; samplesrc/memtest.pla: 0039: hmemDel(b) +; samplesrc/memtest.pla: 0040: memptr = hmemLock(c) +; samplesrc/memtest.pla: 0041: if memptr; puth(c); putc('='); puth(*(memptr + MAX_MEMBLK_SIZE - 2)); putln; fin + !BYTE $6A ; LAW _D039+0 +_F082 !WORD _D039+0 + !BYTE $54 ; CALL _X034 +_F083 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F084 !WORD _D039+0 + !BYTE $54 ; CALL _X036 +_F085 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F086 !WORD _D040+0 + !BYTE $54 ; CALL _X033 +_F087 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F088 !WORD _D043+0 + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D040+0 +_F089 !WORD _D040+0 + !BYTE $54 ; CALL _X009 +_F090 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F091 !WORD 0 + !BYTE $6A ; LAW _D043+0 +_F092 !WORD _D043+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $82 ; ADD + !BYTE $3A,$02 ; SUBI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F093 !WORD 0 + !BYTE $54 ; CALL _X003 +_F094 !WORD 0 +_B013 +_B014 +; samplesrc/memtest.pla: 0042: hmemUnlock(c) +; samplesrc/memtest.pla: 0043: hmemDel(c) +; samplesrc/memtest.pla: 0044: +; samplesrc/memtest.pla: 0045: memptr = hmemLock(e) +; samplesrc/memtest.pla: 0046: if memptr; puth(e); putc('='); puth(*memptr); putln; fin + !BYTE $6A ; LAW _D040+0 +_F095 !WORD _D040+0 + !BYTE $54 ; CALL _X034 +_F096 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F097 !WORD _D040+0 + !BYTE $54 ; CALL _X036 +_F098 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F099 !WORD _D042+0 + !BYTE $54 ; CALL _X033 +_F100 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F101 !WORD _D043+0 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $6A ; LAW _D042+0 +_F102 !WORD _D042+0 + !BYTE $54 ; CALL _X009 +_F103 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F104 !WORD 0 + !BYTE $6A ; LAW _D043+0 +_F105 !WORD _D043+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F106 !WORD 0 + !BYTE $54 ; CALL _X003 +_F107 !WORD 0 +_B015 +_B016 +; samplesrc/memtest.pla: 0047: hmemUnlock(e) +; samplesrc/memtest.pla: 0048: hmemDel(e) +; samplesrc/memtest.pla: 0049: memfre=hmemFre(@memlrgst);puth(memfre); putc(' '); puth(memlrgst); putln +; samplesrc/memtest.pla: 0050: done + !BYTE $6A ; LAW _D042+0 +_F108 !WORD _D042+0 + !BYTE $54 ; CALL _X034 +_F109 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F110 !WORD _D042+0 + !BYTE $54 ; CALL _X036 +_F111 !WORD 0 + !BYTE $26 ; LA _D045+0 +_F112 !WORD _D045+0 + !BYTE $54 ; CALL _X037 +_F113 !WORD 0 + !BYTE $7E ; DAW _D044+0 +_F114 !WORD _D044+0 + !BYTE $54 ; CALL _X009 +_F115 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F116 !WORD 0 + !BYTE $6A ; LAW _D045+0 +_F117 !WORD _D045+0 + !BYTE $54 ; CALL _X009 +_F118 !WORD 0 + !BYTE $54 ; CALL _X003 +_F119 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: SBRK + !BYTE $D3,$C2,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: HMEMNEW + !BYTE $C8,$CD,$C5,$CD,$CE,$C5,$57 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: HMEMLOCK + !BYTE $C8,$CD,$C5,$CD,$CC,$CF,$C3,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: HMEMUNLOCK + !BYTE $C8,$CD,$C5,$CD,$D5,$CE,$CC,$CF,$C3,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: HMEMDEL + !BYTE $C8,$CD,$C5,$CD,$C4,$C5,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 36 ; ESD INDEX + ; DCI STRING: HMEMFRE + !BYTE $C8,$CD,$C5,$CD,$C6,$D2,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/playseq.a b/src/samplesrc/playseq.a new file mode 100644 index 0000000..19cbd8c --- /dev/null +++ b/src/samplesrc/playseq.a @@ -0,0 +1,585 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/playseq.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/playseq.pla: 0001: +; samplesrc/playseq.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; samplesrc/playseq.pla: 0002: +; samplesrc/playseq.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; samplesrc/playseq.pla: 0003: +; samplesrc/playseq.pla: 0004: include "inc/sndseq.plh" +; inc/sndseq.plh: 0001: import sndseq + ; DCI STRING: SNDSEQ + !BYTE $D3,$CE,$C4,$D3,$C5,$51 + ; SNDSEQ -> X033 +; inc/sndseq.plh: 0002: word musicSequence // musicSequence(yield, backgroundProc)#0 + ; MUSICSEQUENCE -> X034 +; inc/sndseq.plh: 0003: word spkrTone // spkrTone(pitch, duration)#0 + ; SPKRTONE -> X035 +; inc/sndseq.plh: 0004: word spkrPWM // spkrPWM(sample, speed, len)#0 + ; SPKRPWM -> X036 +; inc/sndseq.plh: 0005: predef musicPlay(track, rept)#0, musicStop#0, musicGetKey(yield, backgroundProc)#1 + ; MUSICPLAY -> X037 + ; MUSICSTOP -> X038 + ; MUSICGETKEY -> X039 +; inc/sndseq.plh: 0006: end +; samplesrc/playseq.pla: 0004: +; samplesrc/playseq.pla: 0005: +; samplesrc/playseq.pla: 0006: // +; samplesrc/playseq.pla: 0007: // These are utility sequences/routines needed to test the music sequencer code. +; samplesrc/playseq.pla: 0008: // +; samplesrc/playseq.pla: 0009: word arg, seq, len + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D040 !FILL 2 ; arg, seq, len +_D041 !FILL 2 ; seq, len +_D042 !FILL 2 ; len +; samplesrc/playseq.pla: 0010: byte ref +_D043 !FILL 1 ; ref +; samplesrc/playseq.pla: 0011: // +; samplesrc/playseq.pla: 0012: // Sample background process to show it's working +; samplesrc/playseq.pla: 0013: // +; samplesrc/playseq.pla: 0014: def backgroundProc#0 +_SUBSEG ; BYTECODE STARTS +_C000 ; backgroundProc() +; samplesrc/playseq.pla: 0015: putc('.') +; samplesrc/playseq.pla: 0016: end + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $5C ; RET +; samplesrc/playseq.pla: 0017: +; samplesrc/playseq.pla: 0018: arg = argNext(argFirst) +_INIT +; samplesrc/playseq.pla: 0019: if ^arg +; samplesrc/playseq.pla: 0020: ref = fileio:open(arg) +; samplesrc/playseq.pla: 0021: if ref +; samplesrc/playseq.pla: 0022: seq = heapalloc(heapavail - 256) +; samplesrc/playseq.pla: 0023: len = fileio:read(ref, seq, heapmark - seq) +; samplesrc/playseq.pla: 0024: fileio:close(ref) +; samplesrc/playseq.pla: 0025: heaprelease(seq + len) +; samplesrc/playseq.pla: 0026: musicPlay(seq, TRUE) +; samplesrc/playseq.pla: 0027: musicGetKey(8, @backgroundProc) // Yield every 8/16 second +; samplesrc/playseq.pla: 0028: musicStop +; samplesrc/playseq.pla: 0029: else + !BYTE $54 ; CALL _X029 +_F001 !WORD 0 + !BYTE $54 ; CALL _X030 +_F002 !WORD 0 + !BYTE $7A ; SAW _D040+0 +_F003 !WORD _D040+0 + !BYTE $6A ; LAW _D040+0 +_F004 !WORD _D040+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $6A ; LAW _D040+0 +_F005 !WORD _D040+0 + !BYTE $6A ; LAW _X031+14 +_F006 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D043+0 +_F007 !WORD _D043+0 + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $54 ; CALL _X016 +_F008 !WORD 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X014 +_F009 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F010 !WORD _D041+0 + !BYTE $68 ; LAB _D043+0 +_F011 !WORD _D043+0 + !BYTE $6A ; LAW _D041+0 +_F012 !WORD _D041+0 + !BYTE $54 ; CALL _X012 +_F013 !WORD 0 + !BYTE $6A ; LAW _D041+0 +_F014 !WORD _D041+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X031+18 +_F015 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D042+0 +_F016 !WORD _D042+0 + !BYTE $68 ; LAB _D043+0 +_F017 !WORD _D043+0 + !BYTE $6A ; LAW _X031+16 +_F018 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D041+0 +_F019 !WORD _D041+0 + !BYTE $B6 ; ADDAW _D042+0 +_F020 !WORD _D042+0 + !BYTE $54 ; CALL _X015 +_F021 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D041+0 +_F022 !WORD _D041+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X037 +_F023 !WORD 0 + !BYTE $10 ; CN 8 + !BYTE $26 ; LA _C000+0 +_F024 !WORD _C000+0 + !BYTE $54 ; CALL _X039 +_F025 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X038 +_F026 !WORD 0 + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; samplesrc/playseq.pla: 0030: puts("File not found.\n") + !BYTE $2E ; CS + !BYTE $10 + !BYTE $46,$69,$6C,$65,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +; samplesrc/playseq.pla: 0031: fin +_B004 +; samplesrc/playseq.pla: 0032: fin +_B001 +_B002 +; samplesrc/playseq.pla: 0033: +; samplesrc/playseq.pla: 0034: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: MUSICPLAY + !BYTE $CD,$D5,$D3,$C9,$C3,$D0,$CC,$C1,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: MUSICSTOP + !BYTE $CD,$D5,$D3,$C9,$C3,$D3,$D4,$CF,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: MUSICGETKEY + !BYTE $CD,$D5,$D3,$C9,$C3,$C7,$C5,$D4,$CB,$C5,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 39 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/primegap.a b/src/samplesrc/primegap.a new file mode 100644 index 0000000..cbe3cae --- /dev/null +++ b/src/samplesrc/primegap.a @@ -0,0 +1,610 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/primegap.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/primegap.pla: 0001: +; samplesrc/primegap.pla: 0002: +; samplesrc/primegap.pla: 0003: var a, b, i,loprim,hiprim + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D028 !FILL 2 ; a, b, i,loprim,hiprim +_D029 !FILL 2 ; b, i,loprim,hiprim +_D030 !FILL 2 ; i,loprim,hiprim +_D031 !FILL 2 ; loprim,hiprim +_D032 !FILL 2 ; hiprim +; samplesrc/primegap.pla: 0004: +; samplesrc/primegap.pla: 0005: def getnum +_SUBSEG ; BYTECODE STARTS +_C000 ; getnum() +; samplesrc/primegap.pla: 0006: var str, num + ; str -> [0] + ; num -> [2] +; samplesrc/primegap.pla: 0007: num = 0 + !BYTE $58,$04,$00 ; ENTER 4,0 + !BYTE $00 ; CN 0 + !BYTE $28,$02 ; LLA [2] + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0008: str = gets(':'|$80) + 1 + !BYTE $2A,$3A ; CB 58 + !BYTE $2A,$80 ; CB 128 + !BYTE $96 ; OR + !BYTE $26 ; LA _X007+0 +_F000 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $02 ; CN 1 + !BYTE $82 ; ADD + !BYTE $28,$00 ; LLA [0] + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0009: while ^str >= '0' and ^str <= '9' + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; samplesrc/primegap.pla: 0010: num = num * 10 + (^str - '0') + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0011: str++ + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $28,$00 ; LLA [0] + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0012: loop +_B003 + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B004 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; samplesrc/primegap.pla: 0013: return num + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/primegap.pla: 0014: end +; samplesrc/primegap.pla: 0015: +; samplesrc/primegap.pla: 0016: def prim(x) + ; x -> [0] +_C001 ; prim() +; samplesrc/primegap.pla: 0017: var i + ; i -> [2] +; samplesrc/primegap.pla: 0018: i = 3 + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $06 ; CN 3 + !BYTE $28,$02 ; LLA [2] + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0019: while i*i < x and x % i; i = i + 2; loop + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B005 + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $72 ; SW +_B007 + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $86 ; MUL + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B008 + !WORD _B008-* + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $8A ; MOD +_B008 + !BYTE $4E ; BRTRU _B005 + !WORD _B005-* +_B006 +; samplesrc/primegap.pla: 0020: return x < i*i + !BYTE $28,$00 ; LLA [0] + !BYTE $62 ; LW + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $28,$02 ; LLA [2] + !BYTE $62 ; LW + !BYTE $86 ; MUL + !BYTE $46 ; ISLT + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/primegap.pla: 0021: end +; samplesrc/primegap.pla: 0022: +; samplesrc/primegap.pla: 0023: puts("Geben Sie den oberen Grenzwert ein") +_INIT + !BYTE $2E ; CS + !BYTE $22 + !BYTE $47,$65,$62,$65,$6E,$20,$53,$69 + !BYTE $65,$20,$64,$65,$6E,$20,$6F,$62 + !BYTE $65,$72,$65,$6E,$20,$47,$72,$65 + !BYTE $6E,$7A,$77,$65,$72,$74,$20,$65 + !BYTE $69,$6E + !BYTE $26 ; LA _X004+0 +_F001 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/primegap.pla: 0024: a = getnum + !BYTE $26 ; LA _C000+0 +_F002 !WORD _C000+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D028+0 +_F003 !WORD _D028+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0025: puts("Geben Sie die minimale Differenz ein") + !BYTE $2E ; CS + !BYTE $24 + !BYTE $47,$65,$62,$65,$6E,$20,$53,$69 + !BYTE $65,$20,$64,$69,$65,$20,$6D,$69 + !BYTE $6E,$69,$6D,$61,$6C,$65,$20,$44 + !BYTE $69,$66,$66,$65,$72,$65,$6E,$7A + !BYTE $20,$65,$69,$6E + !BYTE $26 ; LA _X004+0 +_F004 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/primegap.pla: 0026: b = getnum + !BYTE $26 ; LA _C000+0 +_F005 !WORD _C000+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D029+0 +_F006 !WORD _D029+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0027: loprim, hiprim, i = 1, 1, 3 + !BYTE $02 ; CN 1 + !BYTE $02 ; CN 1 + !BYTE $06 ; CN 3 + !BYTE $26 ; LA _D030+0 +_F007 !WORD _D030+0 + !BYTE $72 ; SW + !BYTE $26 ; LA _D032+0 +_F008 !WORD _D032+0 + !BYTE $72 ; SW + !BYTE $26 ; LA _D031+0 +_F009 !WORD _D031+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0028: while i <= a and hiprim-loprim < b + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B009 +; samplesrc/primegap.pla: 0029: if prim(i) + !BYTE $26 ; LA _D030+0 +_F010 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _C001+0 +_F011 !WORD _C001+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* +; samplesrc/primegap.pla: 0030: loprim = hiprim + !BYTE $26 ; LA _D032+0 +_F012 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F013 !WORD _D031+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0031: hiprim = i + !BYTE $26 ; LA _D030+0 +_F014 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D032+0 +_F015 !WORD _D032+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0032: fin +_B013 +_B014 +; samplesrc/primegap.pla: 0033: i = i + 2 + !BYTE $26 ; LA _D030+0 +_F016 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $82 ; ADD + !BYTE $26 ; LA _D030+0 +_F017 !WORD _D030+0 + !BYTE $72 ; SW +; samplesrc/primegap.pla: 0034: loop +_B011 + !BYTE $26 ; LA _D030+0 +_F018 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D028+0 +_F019 !WORD _D028+0 + !BYTE $62 ; LW + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B012 + !WORD _B012-* + !BYTE $26 ; LA _D032+0 +_F020 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F021 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $26 ; LA _D029+0 +_F022 !WORD _D029+0 + !BYTE $62 ; LW + !BYTE $46 ; ISLT +_B012 + !BYTE $4E ; BRTRU _B009 + !WORD _B009-* +_B010 +; samplesrc/primegap.pla: 0035: if hiprim-loprim < b + !BYTE $26 ; LA _D032+0 +_F023 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F024 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $26 ; LA _D029+0 +_F025 !WORD _D029+0 + !BYTE $62 ; LW + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* +; samplesrc/primegap.pla: 0036: puts("keine Loesung gefunden !") + !BYTE $2E ; CS + !BYTE $18 + !BYTE $6B,$65,$69,$6E,$65,$20,$4C,$6F + !BYTE $65,$73,$75,$6E,$67,$20,$67,$65 + !BYTE $66,$75,$6E,$64,$65,$6E,$20,$21 + !BYTE $26 ; LA _X004+0 +_F026 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/primegap.pla: 0037: else + !BYTE $50 ; BRNCH _B016 + !WORD _B016-* +_B015 +; samplesrc/primegap.pla: 0038: puti(hiprim); putc(' '); puti(loprim); putc(' '); puti(hiprim-loprim) + !BYTE $26 ; LA _D032+0 +_F027 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _X005+0 +_F028 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $2A,$20 ; CB 32 + !BYTE $26 ; LA _X002+0 +_F029 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D031+0 +_F030 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _X005+0 +_F031 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $2A,$20 ; CB 32 + !BYTE $26 ; LA _X002+0 +_F032 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D032+0 +_F033 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F034 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $26 ; LA _X005+0 +_F035 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/primegap.pla: 0039: fin +_B016 +; samplesrc/primegap.pla: 0040: putln + !BYTE $26 ; LA _X003+0 +_F036 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/primegap.pla: 0041: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/rod.a b/src/samplesrc/rod.a new file mode 100644 index 0000000..72dae05 --- /dev/null +++ b/src/samplesrc/rod.a @@ -0,0 +1,489 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/rod.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/rod.pla: 0001: +; samplesrc/rod.pla: 0002: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X028 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/rod.pla: 0002: +; samplesrc/rod.pla: 0003: // +; samplesrc/rod.pla: 0004: // Rod's Colors +; samplesrc/rod.pla: 0005: // +; samplesrc/rod.pla: 0006: def rod#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; rod() +; samplesrc/rod.pla: 0007: byte i, j, k, w, fmi, fmk, color + ; i -> [0] + ; j -> [1] + ; k -> [2] + ; w -> [3] + ; fmi -> [4] + ; fmk -> [5] + ; color -> [6] +; samplesrc/rod.pla: 0008: +; samplesrc/rod.pla: 0009: while TRUE + !BYTE $58,$07,$00 ; ENTER 7,0 + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; samplesrc/rod.pla: 0010: for w = 3 to 50 + !BYTE $2A,$32 ; CB 50 + !BYTE $06 ; CN 3 +_B005 + !BYTE $6C,$03 ; DLB [3] +; samplesrc/rod.pla: 0011: for i = 1 to 19 + !BYTE $2A,$13 ; CB 19 + !BYTE $02 ; CN 1 +_B008 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rod.pla: 0012: for j = 0 to 19 + !BYTE $2A,$13 ; CB 19 + !BYTE $00 ; CN 0 +_B011 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/rod.pla: 0013: k = i + j +; samplesrc/rod.pla: 0014: color = (j * 3) / (i + 3) + i * w / 12 +; samplesrc/rod.pla: 0015: fmi = 40 - i +; samplesrc/rod.pla: 0016: fmk = 40 - k +; samplesrc/rod.pla: 0017: conio:grcolor(color) +; samplesrc/rod.pla: 0018: conio:grplot(i, k) +; samplesrc/rod.pla: 0019: conio:grplot(k, i) +; samplesrc/rod.pla: 0020: conio:grplot(fmi, fmk) +; samplesrc/rod.pla: 0021: conio:grplot(fmk, fmi) +; samplesrc/rod.pla: 0022: conio:grplot(k, fmi) +; samplesrc/rod.pla: 0023: conio:grplot(fmi, k) +; samplesrc/rod.pla: 0024: conio:grplot(i, fmk) +; samplesrc/rod.pla: 0025: conio:grplot(fmk, i) +; samplesrc/rod.pla: 0026: if conio:keypressed() +; samplesrc/rod.pla: 0027: getc +; samplesrc/rod.pla: 0028: return + !BYTE $64,$00 ; LLB [0] + !BYTE $B0,$01 ; ADDLB [1] + !BYTE $74,$02 ; SLB [2] + !BYTE $64,$01 ; LLB [1] + !BYTE $06 ; CN 3 + !BYTE $86 ; MUL + !BYTE $64,$00 ; LLB [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $88 ; DIV + !BYTE $64,$00 ; LLB [0] + !BYTE $64,$03 ; LLB [3] + !BYTE $86 ; MUL + !BYTE $18 ; CN 12 + !BYTE $88 ; DIV + !BYTE $82 ; ADD + !BYTE $74,$06 ; SLB [6] + !BYTE $2A,$28 ; CB 40 + !BYTE $64,$00 ; LLB [0] + !BYTE $84 ; SUB + !BYTE $74,$04 ; SLB [4] + !BYTE $2A,$28 ; CB 40 + !BYTE $64,$02 ; LLB [2] + !BYTE $84 ; SUB + !BYTE $74,$05 ; SLB [5] + !BYTE $64,$06 ; LLB [6] + !BYTE $6A ; LAW _X028+18 +_F000 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X028+20 +_F001 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $6A ; LAW _X028+20 +_F002 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $6A ; LAW _X028+20 +_F003 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X028+20 +_F004 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X028+20 +_F005 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X028+20 +_F006 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $64,$05 ; LLB [5] + !BYTE $6A ; LAW _X028+20 +_F007 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$00 ; LLB [0] + !BYTE $6A ; LAW _X028+20 +_F008 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X028+0 +_F009 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $54 ; CALL _X006 +_F010 !WORD 0 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $32 ; DROP2 + !BYTE $32 ; DROP2 + !BYTE $5A,$07 ; LEAVE 7 +; samplesrc/rod.pla: 0029: fin +_B013 +_B014 +; samplesrc/rod.pla: 0030: next +_B012 + !BYTE $A4 ; INCBRLE _B011 + !WORD _B011-* +_B010 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/rod.pla: 0031: next +_B009 + !BYTE $A4 ; INCBRLE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rod.pla: 0032: next +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $74,$03 ; SLB [3] + !BYTE $30 ; DROP +; samplesrc/rod.pla: 0033: loop +_B003 + !BYTE $50 ; BRNCH _B001 + !WORD _B001-* +_B002 +; samplesrc/rod.pla: 0034: end + !BYTE $5A,$07 ; LEAVE 7 +; samplesrc/rod.pla: 0035: +; samplesrc/rod.pla: 0036: conio:grmode(TRUE) +_INIT +; samplesrc/rod.pla: 0037: conio:gotoxy(11, 1) +; samplesrc/rod.pla: 0038: puts("Press any key to exit.") + !BYTE $20 ; MINUS ONE + !BYTE $6A ; LAW _X028+16 +_F011 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $16 ; CN 11 + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _X028+8 +_F012 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $16 + !BYTE $50,$72,$65,$73,$73,$20,$61,$6E + !BYTE $79,$20,$6B,$65,$79,$20,$74,$6F + !BYTE $20,$65,$78,$69,$74,$2E + !BYTE $54 ; CALL _X004 +_F013 !WORD 0 +; samplesrc/rod.pla: 0039: rod +; samplesrc/rod.pla: 0040: conio:textmode(40) +; samplesrc/rod.pla: 0041: puts("That's all, folks!\n") + !BYTE $54 ; CALL _C000 +_F014 !WORD _C000 + !BYTE $2A,$28 ; CB 40 + !BYTE $6A ; LAW _X028+14 +_F015 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $13 + !BYTE $54,$68,$61,$74,$27,$73,$20,$61 + !BYTE $6C,$6C,$2C,$20,$66,$6F,$6C,$6B + !BYTE $73,$21,$0D + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +; samplesrc/rod.pla: 0042: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/rogue.a b/src/samplesrc/rogue.a new file mode 100644 index 0000000..8f3b5a1 --- /dev/null +++ b/src/samplesrc/rogue.a @@ -0,0 +1,3855 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/rogue.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/rogue.pla: 0001: +; samplesrc/rogue.pla: 0002: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X028 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/rogue.pla: 0002: +; samplesrc/rogue.pla: 0003: +; samplesrc/rogue.pla: 0004: import roguemap + ; DCI STRING: ROGUEMAP + !BYTE $D2,$CF,$C7,$D5,$C5,$CD,$C1,$50 + ; ROGUEMAP -> X029 +; samplesrc/rogue.pla: 0005: const xcentr = 20 + ; xcentr = 20 +; samplesrc/rogue.pla: 0006: const ycentr = 12 + ; ycentr = 12 +; samplesrc/rogue.pla: 0007: const scrnwidth = 40 + ; scrnwidth = 40 +; samplesrc/rogue.pla: 0008: const scrnheight = 22 + ; scrnheight = 22 +; samplesrc/rogue.pla: 0009: const maprows = 64 + ; maprows = 64 +; samplesrc/rogue.pla: 0010: const mapcols = 64 + ; mapcols = 64 +; samplesrc/rogue.pla: 0011: const mapsize = maprows*mapcols + ; mapsize = 4096 +; samplesrc/rogue.pla: 0012: +; samplesrc/rogue.pla: 0013: const FLOOR_TILE = '.' + ; FLOOR_TILE = 46 +; samplesrc/rogue.pla: 0014: const WALL_TILE = '#' + ; WALL_TILE = 35 +; samplesrc/rogue.pla: 0015: const TORCH_TILE = '*' + ; TORCH_TILE = 42 +; samplesrc/rogue.pla: 0016: const PIT_TILE = ' ' + ; PIT_TILE = 32 +; samplesrc/rogue.pla: 0017: const DOOR_TILE = '+' + ; DOOR_TILE = 43 +; samplesrc/rogue.pla: 0018: const LOCKED_TILE = '%' + ; LOCKED_TILE = 37 +; samplesrc/rogue.pla: 0019: const WATER1_TILE = '>' + ; WATER1_TILE = 62 +; samplesrc/rogue.pla: 0020: const WATER2_TILE = '<' + ; WATER2_TILE = 60 +; samplesrc/rogue.pla: 0021: const KEY_TILE = ',' + ; KEY_TILE = 44 +; samplesrc/rogue.pla: 0022: const RAFT_TILE = '@' + ; RAFT_TILE = 64 +; samplesrc/rogue.pla: 0023: const GOLD_TILE = '$' + ; GOLD_TILE = 36 +; samplesrc/rogue.pla: 0024: const FOOD_TILE = '&' + ; FOOD_TILE = 38 +; samplesrc/rogue.pla: 0025: const ENTER_TILE = '-' + ; ENTER_TILE = 45 +; samplesrc/rogue.pla: 0026: const EXIT_TILE = '=' + ; EXIT_TILE = 61 +; samplesrc/rogue.pla: 0027: const OPAQUE_TILE = $01 + ; OPAQUE_TILE = 1 +; samplesrc/rogue.pla: 0028: const VIEWED_TILE = $80 + ; VIEWED_TILE = 128 +; samplesrc/rogue.pla: 0029: const LIT_TILE = $80 + ; LIT_TILE = 128 +; samplesrc/rogue.pla: 0030: const INV_TILE = $3F + ; INV_TILE = 63 +; samplesrc/rogue.pla: 0031: const MAP_TILE = $7F + ; MAP_TILE = 127 +; samplesrc/rogue.pla: 0032: +; samplesrc/rogue.pla: 0033: predef loadmap(level), getmaptile(xmap, ymap), setmaptile(xmap, ymap, tile)#0 + ; LOADMAP -> X030 + ; GETMAPTILE -> X031 + ; SETMAPTILE -> X032 +; samplesrc/rogue.pla: 0034: predef updtmaptile(xmap, ymap, tile)#0, lighttorches#0 + ; UPDTMAPTILE -> X033 + ; LIGHTTORCHES -> X034 +; samplesrc/rogue.pla: 0035: predef drawmap(xorg, yorg, viewfield, viewdir, lightdist, viewdist) + ; DRAWMAP -> X035 +; samplesrc/rogue.pla: 0036: predef drawvisentity(xofst, yofst, tile)#0, drawplayer(tile)#0 + ; DRAWVISENTITY -> X036 + ; DRAWPLAYER -> X037 +; samplesrc/rogue.pla: 0037: predef updatescreen#0 + ; UPDATESCREEN -> X038 +; samplesrc/rogue.pla: 0038: end +; samplesrc/rogue.pla: 0039: +; samplesrc/rogue.pla: 0040: import roguecombat + ; DCI STRING: ROGUECOMBAT + !BYTE $D2,$CF,$C7,$D5,$C5,$C3,$CF,$CD,$C2,$C1,$54 + ; ROGUECOMBAT -> X039 +; samplesrc/rogue.pla: 0041: predef fight(player, enemy) + ; FIGHT -> X040 +; samplesrc/rogue.pla: 0042: word entity, entities + ; ENTITY -> X041 + ; ENTITIES -> X042 +; samplesrc/rogue.pla: 0043: end +; samplesrc/rogue.pla: 0044: +; samplesrc/rogue.pla: 0045: const maxlight = 10 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; maxlight = 10 +; samplesrc/rogue.pla: 0046: const maxview = 19 + ; maxview = 19 +; samplesrc/rogue.pla: 0047: +; samplesrc/rogue.pla: 0048: word xdir = 0, 1, 1, 1, 0, -1, -1, -1 +_D043 ; xdir = 0, 1, 1, 1, 0, -1, -1, -1 + !WORD $0000 + !WORD $0001 + !WORD $0001 + !WORD $0001 + !WORD $0000 + !WORD $FFFF + !WORD $FFFF + !WORD $FFFF +; samplesrc/rogue.pla: 0049: word ydir = -1, -1, 0, 1, 1, 1, 0, -1 +_D044 ; ydir = -1, -1, 0, 1, 1, 1, 0, -1 + !WORD $FFFF + !WORD $FFFF + !WORD $0000 + !WORD $0001 + !WORD $0001 + !WORD $0001 + !WORD $0000 + !WORD $FFFF +; samplesrc/rogue.pla: 0050: byte vplayer = '^', '\\', '>', '/', 'v', '\\', '<', '/' +_D045 ; vplayer = '^', '\\', '>', '/', 'v', '\\', '<', '/' + !BYTE $5E + !BYTE $5C + !BYTE $3E + !BYTE $2F + !BYTE $76 + !BYTE $5C + !BYTE $3C + !BYTE $2F +; samplesrc/rogue.pla: 0051: byte totaldarkness = 0 +_D046 ; totaldarkness = 0 + !BYTE $00 +; samplesrc/rogue.pla: 0052: byte level = 0 +_D047 ; level = 0 + !BYTE $00 +; samplesrc/rogue.pla: 0053: word free_entities +_D048 !FILL 2 ; free_entities +; samplesrc/rogue.pla: 0054: +; samplesrc/rogue.pla: 0055: // +; samplesrc/rogue.pla: 0056: // Power-ups +; samplesrc/rogue.pla: 0057: // +; samplesrc/rogue.pla: 0058: +; samplesrc/rogue.pla: 0059: const TORCH_OIL = 250 + ; TORCH_OIL = 250 +; samplesrc/rogue.pla: 0060: const MANA = 50 + ; MANA = 50 +; samplesrc/rogue.pla: 0061: const RUN_ENERGY = 4 + ; RUN_ENERGY = 4 +; samplesrc/rogue.pla: 0062: +; samplesrc/rogue.pla: 0063: struc t_pos +; samplesrc/rogue.pla: 0064: byte xpos + ; xpos = 0 +; samplesrc/rogue.pla: 0065: byte ypos + ; ypos = 1 +; samplesrc/rogue.pla: 0066: end + ; t_pos = 2 +; samplesrc/rogue.pla: 0067: +; samplesrc/rogue.pla: 0068: // +; samplesrc/rogue.pla: 0069: // Player +; samplesrc/rogue.pla: 0070: // +; samplesrc/rogue.pla: 0071: +; samplesrc/rogue.pla: 0072: struc t_player +; samplesrc/rogue.pla: 0073: byte[t_pos] +; samplesrc/rogue.pla: 0074: byte angle + ; angle = 2 +; samplesrc/rogue.pla: 0075: byte lamp + ; lamp = 3 +; samplesrc/rogue.pla: 0076: byte fov + ; fov = 4 +; samplesrc/rogue.pla: 0077: byte skill + ; skill = 5 +; samplesrc/rogue.pla: 0078: byte health + ; health = 6 +; samplesrc/rogue.pla: 0079: byte energy + ; energy = 7 +; samplesrc/rogue.pla: 0080: word oil + ; oil = 8 +; samplesrc/rogue.pla: 0081: byte gold + ; gold = 10 +; samplesrc/rogue.pla: 0082: byte key + ; key = 11 +; samplesrc/rogue.pla: 0083: byte raft + ; raft = 12 +; samplesrc/rogue.pla: 0084: byte[16] name + ; name = 13 +; samplesrc/rogue.pla: 0085: end + ; t_player = 29 +; samplesrc/rogue.pla: 0086: +; samplesrc/rogue.pla: 0087: byte player = 0 // xpos +_D049 ; player = 0 // xpos + !BYTE $00 +; samplesrc/rogue.pla: 0088: byte = 0 // ypos + !BYTE $00 +; samplesrc/rogue.pla: 0089: byte = 4 // angle + !BYTE $04 +; samplesrc/rogue.pla: 0090: byte = 4 // lamp + !BYTE $04 +; samplesrc/rogue.pla: 0091: byte = 1 // fov + !BYTE $01 +; samplesrc/rogue.pla: 0092: byte = 15 // skill + !BYTE $0F +; samplesrc/rogue.pla: 0093: byte = 100 // health + !BYTE $64 +; samplesrc/rogue.pla: 0094: byte = 100 // energy + !BYTE $64 +; samplesrc/rogue.pla: 0095: word = 500 // oil + !WORD $01F4 +; samplesrc/rogue.pla: 0096: byte = 0 // gold + !BYTE $00 +; samplesrc/rogue.pla: 0097: byte = 0 // key + !BYTE $00 +; samplesrc/rogue.pla: 0098: byte = 0 // raft + !BYTE $00 +; samplesrc/rogue.pla: 0099: byte[16] = "Player" + !BYTE $06 + !BYTE $50,$6C,$61,$79,$65,$72 + !FILL $09 +; samplesrc/rogue.pla: 0100: +; samplesrc/rogue.pla: 0101: predef moveplayer(dir)#0 +; samplesrc/rogue.pla: 0102: +; samplesrc/rogue.pla: 0103: // +; samplesrc/rogue.pla: 0104: // Other monsters +; samplesrc/rogue.pla: 0105: // +; samplesrc/rogue.pla: 0106: +; samplesrc/rogue.pla: 0107: struc t_other +; samplesrc/rogue.pla: 0108: byte[t_pos] +; samplesrc/rogue.pla: 0109: byte kind + ; kind = 2 +; samplesrc/rogue.pla: 0110: byte tileid + ; tileid = 3 +; samplesrc/rogue.pla: 0111: byte life + ; life = 4 +; samplesrc/rogue.pla: 0112: byte power + ; power = 5 +; samplesrc/rogue.pla: 0113: word prev_other + ; prev_other = 6 +; samplesrc/rogue.pla: 0114: word next_other + ; next_other = 8 +; samplesrc/rogue.pla: 0115: end + ; t_other = 10 +; samplesrc/rogue.pla: 0116: +; samplesrc/rogue.pla: 0117: // +; samplesrc/rogue.pla: 0118: // One line status strings +; samplesrc/rogue.pla: 0119: // +; samplesrc/rogue.pla: 0120: +; samplesrc/rogue.pla: 0121: const statusline = 23 + ; statusline = 23 +; samplesrc/rogue.pla: 0122: +; samplesrc/rogue.pla: 0123: byte helthstr = "Hlth:" +_D051 ; helthstr = "Hlth:" + !BYTE $05 + !BYTE $48,$6C,$74,$68,$3A +; samplesrc/rogue.pla: 0124: byte enrgystr = "NRG:" +_D052 ; enrgystr = "NRG:" + !BYTE $04 + !BYTE $4E,$52,$47,$3A +; samplesrc/rogue.pla: 0125: byte oilstr = "Oil:" +_D053 ; oilstr = "Oil:" + !BYTE $04 + !BYTE $4F,$69,$6C,$3A +; samplesrc/rogue.pla: 0126: byte goldstr = "Gld:" +_D054 ; goldstr = "Gld:" + !BYTE $04 + !BYTE $47,$6C,$64,$3A +; samplesrc/rogue.pla: 0127: byte keystr = "Key" +_D055 ; keystr = "Key" + !BYTE $03 + !BYTE $4B,$65,$79 +; samplesrc/rogue.pla: 0128: byte raftstr = "Flt" +_D056 ; raftstr = "Flt" + !BYTE $03 + !BYTE $46,$6C,$74 +; samplesrc/rogue.pla: 0129: +; samplesrc/rogue.pla: 0130: // +; samplesrc/rogue.pla: 0131: // Messages +; samplesrc/rogue.pla: 0132: // +; samplesrc/rogue.pla: 0133: +; samplesrc/rogue.pla: 0134: word instr +_D057 !FILL 2 ; instr +; samplesrc/rogue.pla: 0135: byte namestr = "\nGreetings Warrior,\n what is your name" +_D058 ; namestr = "\nGreetings Warrior,\n what is your name" + !BYTE $27 + !BYTE $0D,$47,$72,$65,$65,$74,$69,$6E + !BYTE $67,$73,$20,$57,$61,$72,$72,$69 + !BYTE $6F,$72,$2C,$0D,$20,$20,$77,$68 + !BYTE $61,$74,$20,$69,$73,$20,$79,$6F + !BYTE $75,$72,$20,$6E,$61,$6D,$65 +; samplesrc/rogue.pla: 0136: byte prepstr = "\nPrepare." +_D059 ; prepstr = "\nPrepare." + !BYTE $09 + !BYTE $0D,$50,$72,$65,$70,$61,$72,$65 + !BYTE $2E +; samplesrc/rogue.pla: 0137: byte quitstr = "Are you sure you want to quit?" +_D060 ; quitstr = "Are you sure you want to quit?" + !BYTE $1E + !BYTE $41,$72,$65,$20,$79,$6F,$75,$20 + !BYTE $73,$75,$72,$65,$20,$79,$6F,$75 + !BYTE $20,$77,$61,$6E,$74,$20,$74,$6F + !BYTE $20,$71,$75,$69,$74,$3F +; samplesrc/rogue.pla: 0138: byte youmadeitstr = "You made it out alive with $" +_D061 ; youmadeitstr = "You made it out alive with $" + !BYTE $1C + !BYTE $59,$6F,$75,$20,$6D,$61,$64,$65 + !BYTE $20,$69,$74,$20,$6F,$75,$74,$20 + !BYTE $61,$6C,$69,$76,$65,$20,$77,$69 + !BYTE $74,$68,$20,$24 +; samplesrc/rogue.pla: 0139: byte youdiedstr = "You perished inside the catacombs :-(" +_D062 ; youdiedstr = "You perished inside the catacombs :-(" + !BYTE $25 + !BYTE $59,$6F,$75,$20,$70,$65,$72,$69 + !BYTE $73,$68,$65,$64,$20,$69,$6E,$73 + !BYTE $69,$64,$65,$20,$74,$68,$65,$20 + !BYTE $63,$61,$74,$61,$63,$6F,$6D,$62 + !BYTE $73,$20,$3A,$2D,$28 +; samplesrc/rogue.pla: 0140: byte againstr = "\n\nPlay again by typing: +rogue\n" +_D063 ; againstr = "\n\nPlay again by typing: +rogue\n" + !BYTE $1F + !BYTE $0D,$0D,$50,$6C,$61,$79,$20,$61 + !BYTE $67,$61,$69,$6E,$20,$62,$79,$20 + !BYTE $74,$79,$70,$69,$6E,$67,$3A,$20 + !BYTE $2B,$72,$6F,$67,$75,$65,$0D +; samplesrc/rogue.pla: 0141: +; samplesrc/rogue.pla: 0142: // +; samplesrc/rogue.pla: 0143: // Utility functions +; samplesrc/rogue.pla: 0144: // +; samplesrc/rogue.pla: 0145: +; samplesrc/rogue.pla: 0146: def abs(i) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; i -> [0] +_C000 ; abs() +; samplesrc/rogue.pla: 0147: if i < 0 + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rogue.pla: 0148: i = -i +; samplesrc/rogue.pla: 0149: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B001 +_B002 +; samplesrc/rogue.pla: 0150: return i + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0151: end +; samplesrc/rogue.pla: 0152: +; samplesrc/rogue.pla: 0153: // +; samplesrc/rogue.pla: 0154: // Sound functions +; samplesrc/rogue.pla: 0155: // +; samplesrc/rogue.pla: 0156: +; samplesrc/rogue.pla: 0157: def ouch#0 +_C001 ; ouch() +; samplesrc/rogue.pla: 0158: conio:tone(128,5) +; samplesrc/rogue.pla: 0159: end + !BYTE $2A,$80 ; CB 128 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+22 +_F000 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5C ; RET +; samplesrc/rogue.pla: 0160: +; samplesrc/rogue.pla: 0161: def gotit#0 +_C002 ; gotit() +; samplesrc/rogue.pla: 0162: conio:tone(10,8) +; samplesrc/rogue.pla: 0163: conio:tone(80,2) +; samplesrc/rogue.pla: 0164: end + !BYTE $14 ; CN 10 + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _X028+22 +_F001 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$50 ; CB 80 + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X028+22 +_F002 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5C ; RET +; samplesrc/rogue.pla: 0165: +; samplesrc/rogue.pla: 0166: def fall#0 +_C003 ; fall() +; samplesrc/rogue.pla: 0167: byte i + ; i -> [0] +; samplesrc/rogue.pla: 0168: +; samplesrc/rogue.pla: 0169: for i = 0 to 10 + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $14 ; CN 10 + !BYTE $00 ; CN 0 +_B004 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rogue.pla: 0170: conio:tone(50, i) +; samplesrc/rogue.pla: 0171: next + !BYTE $2A,$32 ; CB 50 + !BYTE $64,$00 ; LLB [0] + !BYTE $6A ; LAW _X028+22 +_F003 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B005 + !BYTE $A4 ; INCBRLE _B004 + !WORD _B004-* +_B003 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0172: end + !BYTE $5A,$01 ; LEAVE 1 +; samplesrc/rogue.pla: 0173: +; samplesrc/rogue.pla: 0174: def drown#0 +_C004 ; drown() +; samplesrc/rogue.pla: 0175: word i + ; i -> [0] +; samplesrc/rogue.pla: 0176: +; samplesrc/rogue.pla: 0177: conio:tone(10,20) + !BYTE $58,$02,$00 ; ENTER 2,0 +; samplesrc/rogue.pla: 0178: conio:tone(10,1) +; samplesrc/rogue.pla: 0179: for i = 0 to 1000 + !BYTE $14 ; CN 10 + !BYTE $2A,$14 ; CB 20 + !BYTE $6A ; LAW _X028+22 +_F004 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $14 ; CN 10 + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _X028+22 +_F005 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $00 ; CN 0 +_B007 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/rogue.pla: 0180: next +_B008 + !BYTE $A4 ; INCBRLE _B007 + !WORD _B007-* +_B006 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0181: conio:tone(10,25) +; samplesrc/rogue.pla: 0182: conio:tone(10,2) +; samplesrc/rogue.pla: 0183: for i = 0 to 1000 + !BYTE $14 ; CN 10 + !BYTE $2A,$19 ; CB 25 + !BYTE $6A ; LAW _X028+22 +_F006 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $14 ; CN 10 + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X028+22 +_F007 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $00 ; CN 0 +_B010 + !BYTE $6E,$00 ; DLW [0] +; samplesrc/rogue.pla: 0184: next +_B011 + !BYTE $A4 ; INCBRLE _B010 + !WORD _B010-* +_B009 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0185: conio:tone(10,30) +; samplesrc/rogue.pla: 0186: conio:tone(10,3) +; samplesrc/rogue.pla: 0187: end + !BYTE $14 ; CN 10 + !BYTE $2A,$1E ; CB 30 + !BYTE $6A ; LAW _X028+22 +_F008 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $14 ; CN 10 + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X028+22 +_F009 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0188: +; samplesrc/rogue.pla: 0189: def groan#0 +_C005 ; groan() +; samplesrc/rogue.pla: 0190: byte i + ; i -> [0] +; samplesrc/rogue.pla: 0191: +; samplesrc/rogue.pla: 0192: for i = 0 to 5 + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $0A ; CN 5 + !BYTE $00 ; CN 0 +_B013 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rogue.pla: 0193: conio:tone(5, 40 + i) +; samplesrc/rogue.pla: 0194: next + !BYTE $0A ; CN 5 + !BYTE $2A,$28 ; CB 40 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $6A ; LAW _X028+22 +_F010 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B014 + !BYTE $A4 ; INCBRLE _B013 + !WORD _B013-* +_B012 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0195: end + !BYTE $5A,$01 ; LEAVE 1 +; samplesrc/rogue.pla: 0196: +; samplesrc/rogue.pla: 0197: // +; samplesrc/rogue.pla: 0198: // Update status line +; samplesrc/rogue.pla: 0199: // +; samplesrc/rogue.pla: 0200: +; samplesrc/rogue.pla: 0201: def status#0 +_C006 ; status() +; samplesrc/rogue.pla: 0202: memset($07D0, $A0A0, 40) +; samplesrc/rogue.pla: 0203: conio:gotoxy(0, statusline) +; samplesrc/rogue.pla: 0204: puts(@helthstr) +; samplesrc/rogue.pla: 0205: puti(player.health) +; samplesrc/rogue.pla: 0206: conio:gotoxy(9, statusline) +; samplesrc/rogue.pla: 0207: puts(@enrgystr) +; samplesrc/rogue.pla: 0208: puti(player.energy) +; samplesrc/rogue.pla: 0209: conio:gotoxy(17, statusline) +; samplesrc/rogue.pla: 0210: puts(@oilstr) +; samplesrc/rogue.pla: 0211: puti(player:oil/10) +; samplesrc/rogue.pla: 0212: conio:gotoxy(25, statusline) +; samplesrc/rogue.pla: 0213: puts(@goldstr) +; samplesrc/rogue.pla: 0214: puti(player.gold) +; samplesrc/rogue.pla: 0215: if player.raft +; samplesrc/rogue.pla: 0216: conio:gotoxy(32, statusline) +; samplesrc/rogue.pla: 0217: puts(@raftstr) +; samplesrc/rogue.pla: 0218: fin + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2A,$28 ; CB 40 + !BYTE $54 ; CALL _X017 +_F011 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F012 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D051+0 +_F013 !WORD _D051+0 + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 + !BYTE $68 ; LAB _D049+6 +_F015 !WORD _D049+6 + !BYTE $54 ; CALL _X005 +_F016 !WORD 0 + !BYTE $12 ; CN 9 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F017 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D052+0 +_F018 !WORD _D052+0 + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 + !BYTE $68 ; LAB _D049+7 +_F020 !WORD _D049+7 + !BYTE $54 ; CALL _X005 +_F021 !WORD 0 + !BYTE $2A,$11 ; CB 17 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F022 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D053+0 +_F023 !WORD _D053+0 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 + !BYTE $6A ; LAW _D049+8 +_F025 !WORD _D049+8 + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _X005 +_F026 !WORD 0 + !BYTE $2A,$19 ; CB 25 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F027 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D054+0 +_F028 !WORD _D054+0 + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 + !BYTE $68 ; LAB _D049+10 +_F030 !WORD _D049+10 + !BYTE $54 ; CALL _X005 +_F031 !WORD 0 + !BYTE $68 ; LAB _D049+12 +_F032 !WORD _D049+12 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $2A,$20 ; CB 32 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F033 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D056+0 +_F034 !WORD _D056+0 + !BYTE $54 ; CALL _X004 +_F035 !WORD 0 +_B015 +_B016 +; samplesrc/rogue.pla: 0219: if player.key +; samplesrc/rogue.pla: 0220: conio:gotoxy(36, statusline) +; samplesrc/rogue.pla: 0221: puts(@keystr) +; samplesrc/rogue.pla: 0222: fin + !BYTE $68 ; LAB _D049+11 +_F036 !WORD _D049+11 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2A,$24 ; CB 36 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F037 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D055+0 +_F038 !WORD _D055+0 + !BYTE $54 ; CALL _X004 +_F039 !WORD 0 +_B017 +_B018 +; samplesrc/rogue.pla: 0223: end + !BYTE $5C ; RET +; samplesrc/rogue.pla: 0224: +; samplesrc/rogue.pla: 0225: def clearstatus#0 +_C007 ; clearstatus() +; samplesrc/rogue.pla: 0226: memset($07D0, $A0A0, 40) +; samplesrc/rogue.pla: 0227: end + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2A,$28 ; CB 40 + !BYTE $54 ; CALL _X017 +_F040 !WORD 0 + !BYTE $5C ; RET +; samplesrc/rogue.pla: 0228: +; samplesrc/rogue.pla: 0229: // +; samplesrc/rogue.pla: 0230: // Move player, check for obstacles +; samplesrc/rogue.pla: 0231: // +; samplesrc/rogue.pla: 0232: +; samplesrc/rogue.pla: 0233: def moveplayer(dir)#0 + ; dir -> [0] +_P000 ; moveplayer(dir)#0() +_C008 ; moveplayer() +; samplesrc/rogue.pla: 0234: byte xmove, ymove + ; xmove -> [2] + ; ymove -> [3] +; samplesrc/rogue.pla: 0235: +; samplesrc/rogue.pla: 0236: xmove = player.xpos + dir * xdir[player.angle] + !BYTE $58,$04,$01 ; ENTER 4,1 +; samplesrc/rogue.pla: 0237: ymove = player.ypos + dir * ydir[player.angle] +; samplesrc/rogue.pla: 0238: when getmaptile(xmove, ymove) & MAP_TILE + !BYTE $68 ; LAB _D049+0 +_F041 !WORD _D049+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D043+0 +_F042 !WORD _D043+0 + !BYTE $BC ; IDXAB _D049+2 +_F043 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $74,$02 ; SLB [2] + !BYTE $68 ; LAB _D049+1 +_F044 !WORD _D049+1 + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D044+0 +_F045 !WORD _D044+0 + !BYTE $BC ; IDXAB _D049+2 +_F046 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $74,$03 ; SLB [3] + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X031 +_F047 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B020-* +; samplesrc/rogue.pla: 0239: is PIT_TILE +_B021 +; samplesrc/rogue.pla: 0240: fall +; samplesrc/rogue.pla: 0241: player.energy = 0 +; samplesrc/rogue.pla: 0242: player.health = 0 +; samplesrc/rogue.pla: 0243: break + !BYTE $54 ; CALL _C003 +_F048 !WORD _C003 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+7 +_F049 !WORD _D049+7 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+6 +_F050 !WORD _D049+6 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +; samplesrc/rogue.pla: 0244: is WATER1_TILE +_B022 +; samplesrc/rogue.pla: 0245: is WATER2_TILE +_B023 +; samplesrc/rogue.pla: 0246: if not player.raft +; samplesrc/rogue.pla: 0247: drown +; samplesrc/rogue.pla: 0248: player.energy = 0 +; samplesrc/rogue.pla: 0249: player.health = 0 +; samplesrc/rogue.pla: 0250: break + !BYTE $68 ; LAB _D049+12 +_F051 !WORD _D049+12 + !BYTE $4E ; BRTRU _B024 + !WORD _B024-* + !BYTE $54 ; CALL _C004 +_F052 !WORD _C004 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+7 +_F053 !WORD _D049+7 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+6 +_F054 !WORD _D049+6 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +; samplesrc/rogue.pla: 0251: fin +_B024 +_B025 +; samplesrc/rogue.pla: 0252: is FLOOR_TILE +_B026 +; samplesrc/rogue.pla: 0253: is TORCH_TILE +_B027 +; samplesrc/rogue.pla: 0254: is KEY_TILE +_B028 +; samplesrc/rogue.pla: 0255: is RAFT_TILE +_B029 +; samplesrc/rogue.pla: 0256: is GOLD_TILE +_B030 +; samplesrc/rogue.pla: 0257: is FOOD_TILE +_B031 +; samplesrc/rogue.pla: 0258: if player.energy < 10 +; samplesrc/rogue.pla: 0259: player.fov = 0 +; samplesrc/rogue.pla: 0260: fin + !BYTE $68 ; LAB _D049+7 +_F055 !WORD _D049+7 + !BYTE $14 ; CN 10 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+4 +_F056 !WORD _D049+4 +_B032 +_B033 +; samplesrc/rogue.pla: 0261: if player.energy +; samplesrc/rogue.pla: 0262: player.energy = player.energy - 1 +; samplesrc/rogue.pla: 0263: fin + !BYTE $68 ; LAB _D049+7 +_F057 !WORD _D049+7 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $68 ; LAB _D049+7 +_F058 !WORD _D049+7 + !BYTE $8E ; DECR + !BYTE $78 ; SAB _D049+7 +_F059 !WORD _D049+7 +_B034 +_B035 +; samplesrc/rogue.pla: 0264: player.xpos = xmove +; samplesrc/rogue.pla: 0265: player.ypos = ymove +; samplesrc/rogue.pla: 0266: break + !BYTE $64,$02 ; LLB [2] + !BYTE $78 ; SAB _D049+0 +_F060 !WORD _D049+0 + !BYTE $64,$03 ; LLB [3] + !BYTE $78 ; SAB _D049+1 +_F061 !WORD _D049+1 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +; samplesrc/rogue.pla: 0267: otherwise +_B020 + !BYTE $09 ; CASEBLOCK + !WORD $0020 + !WORD _B021-* + !WORD $0024 + !WORD _B030-* + !WORD $0026 + !WORD _B031-* + !WORD $002A + !WORD _B027-* + !WORD $002C + !WORD _B028-* + !WORD $002E + !WORD _B026-* + !WORD $003C + !WORD _B023-* + !WORD $003E + !WORD _B022-* + !WORD $0040 + !WORD _B029-* +; samplesrc/rogue.pla: 0268: ouch +; samplesrc/rogue.pla: 0269: wend + !BYTE $54 ; CALL _C001 +_F062 !WORD _C001 +_B019 +; samplesrc/rogue.pla: 0270: end + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/rogue.pla: 0271: +; samplesrc/rogue.pla: 0272: // +; samplesrc/rogue.pla: 0273: // Find other entities in map and put in database +; samplesrc/rogue.pla: 0274: // +; samplesrc/rogue.pla: 0275: +; samplesrc/rogue.pla: 0276: def findentities#0 +_C009 ; findentities() +; samplesrc/rogue.pla: 0277: word newother + ; newother -> [0] +; samplesrc/rogue.pla: 0278: byte xmap, ymap, what + ; xmap -> [2] + ; ymap -> [3] + ; what -> [4] +; samplesrc/rogue.pla: 0279: +; samplesrc/rogue.pla: 0280: for ymap = 1 to maprows - 2 + !BYTE $58,$05,$00 ; ENTER 5,0 + !BYTE $2A,$3E ; CB 62 + !BYTE $02 ; CN 1 +_B037 + !BYTE $6C,$03 ; DLB [3] +; samplesrc/rogue.pla: 0281: for xmap = 2 to mapcols - 2 + !BYTE $2A,$3E ; CB 62 + !BYTE $04 ; CN 2 +_B040 + !BYTE $6C,$02 ; DLB [2] +; samplesrc/rogue.pla: 0282: what = 0 +; samplesrc/rogue.pla: 0283: when getmaptile(xmap, ymap) & MAP_TILE + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X031 +_F063 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B043-* +; samplesrc/rogue.pla: 0284: is ENTER_TILE +_B044 +; samplesrc/rogue.pla: 0285: player.xpos = xmap +; samplesrc/rogue.pla: 0286: player.ypos = ymap +; samplesrc/rogue.pla: 0287: if getmaptile(xmap, ymap - 1) & MAP_TILE == FLOOR_TILE +; samplesrc/rogue.pla: 0288: player.angle = 0 +; samplesrc/rogue.pla: 0289: else + !BYTE $64,$02 ; LLB [2] + !BYTE $78 ; SAB _D049+0 +_F064 !WORD _D049+0 + !BYTE $64,$03 ; LLB [3] + !BYTE $78 ; SAB _D049+1 +_F065 !WORD _D049+1 + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X031 +_F066 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B045 + !WORD _B045-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+2 +_F067 !WORD _D049+2 + !BYTE $50 ; BRNCH _B046 + !WORD _B046-* +_B045 +; samplesrc/rogue.pla: 0290: player.angle = 4 +; samplesrc/rogue.pla: 0291: fin + !BYTE $08 ; CN 4 + !BYTE $78 ; SAB _D049+2 +_F068 !WORD _D049+2 +_B046 +; samplesrc/rogue.pla: 0292: break + !BYTE $50 ; BRNCH _B042 + !WORD _B042-* +; samplesrc/rogue.pla: 0293: is 'R' // Rogue +_B047 +; samplesrc/rogue.pla: 0294: what = what + 1 +; samplesrc/rogue.pla: 0295: is 'Z' // Zombie + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $74,$04 ; SLB [4] +_B048 +; samplesrc/rogue.pla: 0296: what = what + 1 +; samplesrc/rogue.pla: 0297: is 'O' // Ogre + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $74,$04 ; SLB [4] +_B049 +; samplesrc/rogue.pla: 0298: what = what + 1 +; samplesrc/rogue.pla: 0299: is 'T' // Thief + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $74,$04 ; SLB [4] +_B050 +; samplesrc/rogue.pla: 0300: newother = heapalloc(t_other) +; samplesrc/rogue.pla: 0301: newother->xpos = xmap +; samplesrc/rogue.pla: 0302: newother->ypos = ymap +; samplesrc/rogue.pla: 0303: newother->kind = what +; samplesrc/rogue.pla: 0304: newother->tileid = ^(entity[what] + 1) // First character of name string +; samplesrc/rogue.pla: 0305: newother->power = ^(entity[what] + ^entity[what] + 1) +; samplesrc/rogue.pla: 0306: newother->life = 100 +; samplesrc/rogue.pla: 0307: // +; samplesrc/rogue.pla: 0308: // Insert into head of entities list +; samplesrc/rogue.pla: 0309: // +; samplesrc/rogue.pla: 0310: newother=>prev_other = 0 +; samplesrc/rogue.pla: 0311: newother=>next_other = entities +; samplesrc/rogue.pla: 0312: if entities +; samplesrc/rogue.pla: 0313: entities=>prev_other = newother +; samplesrc/rogue.pla: 0314: fin + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X014 +_F069 !WORD 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $64,$03 ; LLB [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $26 ; LA _X041+0 +_F070 !WORD 0+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $26 ; LA _X041+0 +_F071 !WORD 0+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $26 ; LA _X041+0 +_F072 !WORD 0+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2A,$64 ; CB 100 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _X042+0 +_F073 !WORD 0+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $6A ; LAW _X042+0 +_F074 !WORD 0+0 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X042+0 +_F075 !WORD 0+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW +_B051 +_B052 +; samplesrc/rogue.pla: 0315: entities = newother +; samplesrc/rogue.pla: 0316: // +; samplesrc/rogue.pla: 0317: // Clear entity from map, replace with floor +; samplesrc/rogue.pla: 0318: // +; samplesrc/rogue.pla: 0319: setmaptile(xmap, ymap, FLOOR_TILE) +; samplesrc/rogue.pla: 0320: wend + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _X042+0 +_F076 !WORD 0+0 + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X032 +_F077 !WORD 0 + !BYTE $50 ; BRNCH _B042 + !WORD _B042-* +_B043 + !BYTE $05 ; CASEBLOCK + !WORD $002D + !WORD _B044-* + !WORD $004F + !WORD _B049-* + !WORD $0052 + !WORD _B047-* + !WORD $0054 + !WORD _B050-* + !WORD $005A + !WORD _B048-* +_B042 +; samplesrc/rogue.pla: 0321: next +_B041 + !BYTE $A4 ; INCBRLE _B040 + !WORD _B040-* +_B039 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0322: if not (ymap & 7) +; samplesrc/rogue.pla: 0323: putc('.') +; samplesrc/rogue.pla: 0324: fin + !BYTE $64,$03 ; LLB [3] + !BYTE $3C,$07 ; ANDI 7 + !BYTE $4E ; BRTRU _B053 + !WORD _B053-* + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F078 !WORD 0 +_B053 +_B054 +; samplesrc/rogue.pla: 0325: next +_B038 + !BYTE $A4 ; INCBRLE _B037 + !WORD _B037-* +_B036 + !BYTE $74,$03 ; SLB [3] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0326: end + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/rogue.pla: 0327: +; samplesrc/rogue.pla: 0328: // +; samplesrc/rogue.pla: 0329: // Draw other entities on map if visible +; samplesrc/rogue.pla: 0330: // +; samplesrc/rogue.pla: 0331: +; samplesrc/rogue.pla: 0332: def drawentities#0 +_C010 ; drawentities() +; samplesrc/rogue.pla: 0333: word other, xofst, yofst + ; other -> [0] + ; xofst -> [2] + ; yofst -> [4] +; samplesrc/rogue.pla: 0334: +; samplesrc/rogue.pla: 0335: other = entities + !BYTE $58,$06,$00 ; ENTER 6,0 +; samplesrc/rogue.pla: 0336: while other + !BYTE $6A ; LAW _X042+0 +_F079 !WORD 0+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B057 + !WORD _B057-* +_B055 +; samplesrc/rogue.pla: 0337: xofst = other->xpos - player.xpos +; samplesrc/rogue.pla: 0338: yofst = other->ypos - player.ypos +; samplesrc/rogue.pla: 0339: if abs(xofst) < 20 and abs(yofst) < 12 +; samplesrc/rogue.pla: 0340: drawvisentity(xofst, yofst, other->tileid) +; samplesrc/rogue.pla: 0341: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $68 ; LAB _D049+0 +_F080 !WORD _D049+0 + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $68 ; LAB _D049+1 +_F081 !WORD _D049+1 + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C000 +_F082 !WORD _C000 + !BYTE $2A,$14 ; CB 20 + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B058 + !WORD _B058-* + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C000 +_F083 !WORD _C000 + !BYTE $18 ; CN 12 + !BYTE $46 ; ISLT +_B058 + !BYTE $4C ; BRFLS _B059 + !WORD _B059-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X036 +_F084 !WORD 0 +_B059 +_B060 +; samplesrc/rogue.pla: 0342: other = other=>next_other +; samplesrc/rogue.pla: 0343: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] +_B057 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B055 + !WORD _B055-* +_B056 +; samplesrc/rogue.pla: 0344: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/rogue.pla: 0345: +; samplesrc/rogue.pla: 0346: // +; samplesrc/rogue.pla: 0347: // Move entitiess +; samplesrc/rogue.pla: 0348: // +; samplesrc/rogue.pla: 0349: +; samplesrc/rogue.pla: 0350: def lineofsight(x1, y1, x2, y2) + ; x1 -> [0] + ; y1 -> [2] + ; x2 -> [4] + ; y2 -> [6] +_C011 ; lineofsight() +; samplesrc/rogue.pla: 0351: word sx, sy, dx, dy, dx2, dy2, dd2, err + ; sx -> [8] + ; sy -> [10] + ; dx -> [12] + ; dy -> [14] + ; dx2 -> [16] + ; dy2 -> [18] + ; dd2 -> [20] + ; err -> [22] +; samplesrc/rogue.pla: 0352: +; samplesrc/rogue.pla: 0353: dx = x2 - x1 + !BYTE $58,$18,$04 ; ENTER 24,4 +; samplesrc/rogue.pla: 0354: if dx < 0 +; samplesrc/rogue.pla: 0355: dx = -dx +; samplesrc/rogue.pla: 0356: sx = -1 +; samplesrc/rogue.pla: 0357: else + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $6E,$0C ; DLW [12] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B061 + !WORD _B061-* + !BYTE $66,$0C ; LLW [12] + !BYTE $90 ; NEG + !BYTE $76,$0C ; SLW [12] + !BYTE $20 ; MINUS ONE + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B061 +; samplesrc/rogue.pla: 0358: sx = 1 +; samplesrc/rogue.pla: 0359: fin + !BYTE $02 ; CN 1 + !BYTE $76,$08 ; SLW [8] +_B062 +; samplesrc/rogue.pla: 0360: dy = y2 - y1 +; samplesrc/rogue.pla: 0361: if dy < 0 +; samplesrc/rogue.pla: 0362: dy = -dy +; samplesrc/rogue.pla: 0363: sy = -1 +; samplesrc/rogue.pla: 0364: else + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B064 + !WORD _B064-* +_B063 +; samplesrc/rogue.pla: 0365: sy = 1 +; samplesrc/rogue.pla: 0366: fin + !BYTE $02 ; CN 1 + !BYTE $76,$0A ; SLW [10] +_B064 +; samplesrc/rogue.pla: 0367: if dx > maxview or dy > maxview +; samplesrc/rogue.pla: 0368: return FALSE + !BYTE $66,$0C ; LLW [12] + !BYTE $2A,$13 ; CB 19 + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B065 + !WORD _B065-* + !BYTE $66,$0E ; LLW [14] + !BYTE $2A,$13 ; CB 19 + !BYTE $44 ; ISGT +_B065 + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $00 ; CN 0 + !BYTE $5A,$18 ; LEAVE 24 +; samplesrc/rogue.pla: 0369: fin +_B066 +_B067 +; samplesrc/rogue.pla: 0370: dx2 = dx << 1 +; samplesrc/rogue.pla: 0371: dy2 = dy << 1 +; samplesrc/rogue.pla: 0372: if dx > dy +; samplesrc/rogue.pla: 0373: dd2 = dx2 - dy2 +; samplesrc/rogue.pla: 0374: err = dx - dy2 +; samplesrc/rogue.pla: 0375: while x1 <> x2 + !BYTE $66,$0C ; LLW [12] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$0E ; LLW [14] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$12 ; SLW [18] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $66,$10 ; LLW [16] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B072 + !WORD _B072-* +_B070 +; samplesrc/rogue.pla: 0376: if err < 0 +; samplesrc/rogue.pla: 0377: y1 = y1 + sy +; samplesrc/rogue.pla: 0378: err = err + dd2 +; samplesrc/rogue.pla: 0379: else + !BYTE $66,$16 ; LLW [22] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$16 ; LLW [22] + !BYTE $B2,$14 ; ADDLW [20] + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B073 +; samplesrc/rogue.pla: 0380: err = err - dy2 +; samplesrc/rogue.pla: 0381: fin + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$12 ; LLW [18] + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] +_B074 +; samplesrc/rogue.pla: 0382: x1 = x1 + sx +; samplesrc/rogue.pla: 0383: if getmaptile(x1, y1) & OPAQUE_TILE +; samplesrc/rogue.pla: 0384: return FALSE + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $6E,$00 ; DLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X031 +_F085 !WORD 0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $00 ; CN 0 + !BYTE $5A,$18 ; LEAVE 24 +; samplesrc/rogue.pla: 0385: fin +_B075 +_B076 +; samplesrc/rogue.pla: 0386: loop +_B072 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $24 ; BRNE _B070 + !WORD _B070-* +_B071 +; samplesrc/rogue.pla: 0387: else + !BYTE $50 ; BRNCH _B069 + !WORD _B069-* +_B068 +; samplesrc/rogue.pla: 0388: dd2 = dy2 - dx2 +; samplesrc/rogue.pla: 0389: err = dy - dx2 +; samplesrc/rogue.pla: 0390: while y1 <> y2 + !BYTE $66,$12 ; LLW [18] + !BYTE $66,$10 ; LLW [16] + !BYTE $84 ; SUB + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +_B077 +; samplesrc/rogue.pla: 0391: if err < 0 +; samplesrc/rogue.pla: 0392: x1 = x1 + sx +; samplesrc/rogue.pla: 0393: err = err + dd2 +; samplesrc/rogue.pla: 0394: else + !BYTE $66,$16 ; LLW [22] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$16 ; LLW [22] + !BYTE $B2,$14 ; ADDLW [20] + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B080 +; samplesrc/rogue.pla: 0395: err = err - dx2 +; samplesrc/rogue.pla: 0396: fin + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$10 ; LLW [16] + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] +_B081 +; samplesrc/rogue.pla: 0397: y1 = y1 + sy +; samplesrc/rogue.pla: 0398: if getmaptile(x1, y1) & OPAQUE_TILE +; samplesrc/rogue.pla: 0399: return FALSE + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X031 +_F086 !WORD 0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $00 ; CN 0 + !BYTE $5A,$18 ; LEAVE 24 +; samplesrc/rogue.pla: 0400: fin +_B082 +_B083 +; samplesrc/rogue.pla: 0401: loop +_B079 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $24 ; BRNE _B077 + !WORD _B077-* +_B078 +; samplesrc/rogue.pla: 0402: fin +_B069 +; samplesrc/rogue.pla: 0403: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$18 ; LEAVE 24 +; samplesrc/rogue.pla: 0404: end +; samplesrc/rogue.pla: 0405: +; samplesrc/rogue.pla: 0406: def moveentities(playerisvis)#0 + ; playerisvis -> [0] +_C012 ; moveentities() +; samplesrc/rogue.pla: 0407: byte xmove, ymove + ; xmove -> [2] + ; ymove -> [3] +; samplesrc/rogue.pla: 0408: word other + ; other -> [4] +; samplesrc/rogue.pla: 0409: +; samplesrc/rogue.pla: 0410: other = entities + !BYTE $58,$06,$01 ; ENTER 6,1 +; samplesrc/rogue.pla: 0411: while other + !BYTE $6A ; LAW _X042+0 +_F087 !WORD 0+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B086 + !WORD _B086-* +_B084 +; samplesrc/rogue.pla: 0412: if playerisvis +; samplesrc/rogue.pla: 0413: if lineofsight(player.xpos, player.ypos, other->xpos, other->ypos) +; samplesrc/rogue.pla: 0414: xmove = other->xpos +; samplesrc/rogue.pla: 0415: ymove = other->ypos +; samplesrc/rogue.pla: 0416: if player.xpos > other->xpos +; samplesrc/rogue.pla: 0417: xmove = other->xpos + 1 +; samplesrc/rogue.pla: 0418: elsif player.xpos < other->xpos + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B087 + !WORD _B087-* + !BYTE $68 ; LAB _D049+0 +_F088 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F089 !WORD _D049+1 + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _C011 +_F090 !WORD _C011 + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$03 ; SLB [3] + !BYTE $68 ; LAB _D049+0 +_F091 !WORD _D049+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B091 +; samplesrc/rogue.pla: 0419: xmove = other->xpos - 1 +; samplesrc/rogue.pla: 0420: fin + !BYTE $68 ; LAB _D049+0 +_F092 !WORD _D049+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B093 + !WORD _B093-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$02 ; SLB [2] +_B093 +_B092 +; samplesrc/rogue.pla: 0421: if player.ypos > other->ypos +; samplesrc/rogue.pla: 0422: ymove = other->ypos + 1 +; samplesrc/rogue.pla: 0423: elsif player.ypos < other->ypos + !BYTE $68 ; LAB _D049+1 +_F093 !WORD _D049+1 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $74,$03 ; SLB [3] + !BYTE $50 ; BRNCH _B095 + !WORD _B095-* +_B094 +; samplesrc/rogue.pla: 0424: ymove = other->ypos - 1 +; samplesrc/rogue.pla: 0425: fin + !BYTE $68 ; LAB _D049+1 +_F094 !WORD _D049+1 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] +_B096 +_B095 +; samplesrc/rogue.pla: 0426: when getmaptile(xmove, ymove) & MAP_TILE + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _X031 +_F095 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B098-* +; samplesrc/rogue.pla: 0427: is FLOOR_TILE +_B099 +; samplesrc/rogue.pla: 0428: is TORCH_TILE +_B100 +; samplesrc/rogue.pla: 0429: is KEY_TILE +_B101 +; samplesrc/rogue.pla: 0430: is GOLD_TILE +_B102 +; samplesrc/rogue.pla: 0431: is FOOD_TILE +_B103 +; samplesrc/rogue.pla: 0432: other->xpos = xmove +; samplesrc/rogue.pla: 0433: other->ypos = ymove +; samplesrc/rogue.pla: 0434: groan +; samplesrc/rogue.pla: 0435: wend + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $64,$03 ; LLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $54 ; CALL _C005 +_F096 !WORD _C005 + !BYTE $50 ; BRNCH _B097 + !WORD _B097-* +_B098 + !BYTE $05 ; CASEBLOCK + !WORD $0024 + !WORD _B102-* + !WORD $0026 + !WORD _B103-* + !WORD $002A + !WORD _B100-* + !WORD $002C + !WORD _B101-* + !WORD $002E + !WORD _B099-* +_B097 +; samplesrc/rogue.pla: 0436: fin +_B089 +_B090 +; samplesrc/rogue.pla: 0437: fin +_B087 +_B088 +; samplesrc/rogue.pla: 0438: if other->xpos == player.xpos and other->ypos == player.ypos +; samplesrc/rogue.pla: 0439: if fight(@player, other) +; samplesrc/rogue.pla: 0440: // +; samplesrc/rogue.pla: 0441: // Player trying to run away +; samplesrc/rogue.pla: 0442: // +; samplesrc/rogue.pla: 0443: if player.energy > RUN_ENERGY +; samplesrc/rogue.pla: 0444: moveplayer(1) +; samplesrc/rogue.pla: 0445: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $68 ; LAB _D049+0 +_F097 !WORD _D049+0 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B104 + !WORD _B104-* + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $68 ; LAB _D049+1 +_F098 !WORD _D049+1 + !BYTE $40 ; ISEQ +_B104 + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $26 ; LA _D049+0 +_F099 !WORD _D049+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X040 +_F100 !WORD 0 + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* + !BYTE $68 ; LAB _D049+7 +_F101 !WORD _D049+7 + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B109 + !WORD _B109-* + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F102 !WORD _C008 +_B109 +_B110 +; samplesrc/rogue.pla: 0446: moveplayer(1) +; samplesrc/rogue.pla: 0447: fin + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F103 !WORD _C008 +_B107 +_B108 +; samplesrc/rogue.pla: 0448: return + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/rogue.pla: 0449: fin +_B105 +_B106 +; samplesrc/rogue.pla: 0450: other = other=>next_other +; samplesrc/rogue.pla: 0451: loop + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B086 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B084 + !WORD _B084-* +_B085 +; samplesrc/rogue.pla: 0452: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/rogue.pla: 0453: +; samplesrc/rogue.pla: 0454: // +; samplesrc/rogue.pla: 0455: // Draw entire map view +; samplesrc/rogue.pla: 0456: // +; samplesrc/rogue.pla: 0457: +; samplesrc/rogue.pla: 0458: def drawview#0 +_C013 ; drawview() +; samplesrc/rogue.pla: 0459: totaldarkness = drawmap(player.xpos, player.ypos, player.fov, player.angle, player.lamp, maxview) +; samplesrc/rogue.pla: 0460: if not totaldarkness +; samplesrc/rogue.pla: 0461: drawentities +; samplesrc/rogue.pla: 0462: drawplayer(vplayer[player.angle]) +; samplesrc/rogue.pla: 0463: fin + !BYTE $68 ; LAB _D049+0 +_F104 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F105 !WORD _D049+1 + !BYTE $68 ; LAB _D049+4 +_F106 !WORD _D049+4 + !BYTE $68 ; LAB _D049+2 +_F107 !WORD _D049+2 + !BYTE $68 ; LAB _D049+3 +_F108 !WORD _D049+3 + !BYTE $2A,$13 ; CB 19 + !BYTE $54 ; CALL _X035 +_F109 !WORD 0 + !BYTE $7C ; DAB _D046+0 +_F110 !WORD _D046+0 + !BYTE $4E ; BRTRU _B111 + !WORD _B111-* + !BYTE $54 ; CALL _C010 +_F111 !WORD _C010 + !BYTE $26 ; LA _D045+0 +_F112 !WORD _D045+0 + !BYTE $B4 ; ADDAB _D049+2 +_F113 !WORD _D049+2 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X037 +_F114 !WORD 0 +_B111 +_B112 +; samplesrc/rogue.pla: 0464: updatescreen +; samplesrc/rogue.pla: 0465: end + !BYTE $54 ; CALL _X038 +_F115 !WORD 0 + !BYTE $5C ; RET +; samplesrc/rogue.pla: 0466: +; samplesrc/rogue.pla: 0467: // +; samplesrc/rogue.pla: 0468: // Read player input and do something +; samplesrc/rogue.pla: 0469: // +; samplesrc/rogue.pla: 0470: +; samplesrc/rogue.pla: 0471: def waitkey +_C014 ; waitkey() +; samplesrc/rogue.pla: 0472: word delay + ; delay -> [0] +; samplesrc/rogue.pla: 0473: +; samplesrc/rogue.pla: 0474: delay = 200 + !BYTE $58,$02,$00 ; ENTER 2,0 +; samplesrc/rogue.pla: 0475: while not conio:keypressed() + !BYTE $2A,$C8 ; CB 200 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B115 + !WORD _B115-* +_B113 +; samplesrc/rogue.pla: 0476: delay-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; samplesrc/rogue.pla: 0477: if delay == 0 +; samplesrc/rogue.pla: 0478: drawview +; samplesrc/rogue.pla: 0479: delay = 200 +; samplesrc/rogue.pla: 0480: fin + !BYTE $6E,$00 ; DLW [0] + !BYTE $4E ; BRTRU _B116 + !WORD _B116-* + !BYTE $54 ; CALL _C013 +_F116 !WORD _C013 + !BYTE $2A,$C8 ; CB 200 + !BYTE $76,$00 ; SLW [0] +_B116 +_B117 +; samplesrc/rogue.pla: 0481: loop +_B115 + !BYTE $6A ; LAW _X028+0 +_F117 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B113 + !WORD _B113-* +_B114 +; samplesrc/rogue.pla: 0482: return toupper(conio:getkey()) + !BYTE $6A ; LAW _X028+2 +_F118 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X021 +_F119 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0483: end +; samplesrc/rogue.pla: 0484: +; samplesrc/rogue.pla: 0485: def play +_C015 ; play() +; samplesrc/rogue.pla: 0486: byte xt, yt + ; xt -> [0] + ; yt -> [1] +; samplesrc/rogue.pla: 0487: +; samplesrc/rogue.pla: 0488: if player.health == 0 + !BYTE $58,$02,$00 ; ENTER 2,0 +; samplesrc/rogue.pla: 0489: return FALSE + !BYTE $68 ; LAB _D049+6 +_F120 !WORD _D049+6 + !BYTE $4E ; BRTRU _B118 + !WORD _B118-* + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0490: fin +_B118 +_B119 +; samplesrc/rogue.pla: 0491: conio:gotoxy(xcentr, ycentr) +; samplesrc/rogue.pla: 0492: when waitkey + !BYTE $2A,$14 ; CB 20 + !BYTE $18 ; CN 12 + !BYTE $6A ; LAW _X028+8 +_F121 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C014 +_F122 !WORD _C014 + !BYTE $52 ; SEL + !WORD _B121-* +; samplesrc/rogue.pla: 0493: is 'I' +_B122 +; samplesrc/rogue.pla: 0494: if totaldarkness +; samplesrc/rogue.pla: 0495: player.angle = conio:rnd() & 7 +; samplesrc/rogue.pla: 0496: else + !BYTE $68 ; LAB _D046+0 +_F123 !WORD _D046+0 + !BYTE $4C ; BRFLS _B123 + !WORD _B123-* + !BYTE $6A ; LAW _X028+24 +_F124 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F125 !WORD _D049+2 + !BYTE $50 ; BRNCH _B124 + !WORD _B124-* +_B123 +; samplesrc/rogue.pla: 0497: player.angle = 0 +; samplesrc/rogue.pla: 0498: fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+2 +_F126 !WORD _D049+2 +_B124 +; samplesrc/rogue.pla: 0499: moveplayer(1) +; samplesrc/rogue.pla: 0500: break + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F127 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0501: is 'J' +_B125 +; samplesrc/rogue.pla: 0502: if totaldarkness +; samplesrc/rogue.pla: 0503: player.angle = conio:rnd() & 7 +; samplesrc/rogue.pla: 0504: else + !BYTE $68 ; LAB _D046+0 +_F128 !WORD _D046+0 + !BYTE $4C ; BRFLS _B126 + !WORD _B126-* + !BYTE $6A ; LAW _X028+24 +_F129 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F130 !WORD _D049+2 + !BYTE $50 ; BRNCH _B127 + !WORD _B127-* +_B126 +; samplesrc/rogue.pla: 0505: player.angle = 6 +; samplesrc/rogue.pla: 0506: fin + !BYTE $0C ; CN 6 + !BYTE $78 ; SAB _D049+2 +_F131 !WORD _D049+2 +_B127 +; samplesrc/rogue.pla: 0507: moveplayer(1) +; samplesrc/rogue.pla: 0508: break + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F132 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0509: is 'K' +_B128 +; samplesrc/rogue.pla: 0510: if totaldarkness +; samplesrc/rogue.pla: 0511: player.angle = conio:rnd() & 7 +; samplesrc/rogue.pla: 0512: else + !BYTE $68 ; LAB _D046+0 +_F133 !WORD _D046+0 + !BYTE $4C ; BRFLS _B129 + !WORD _B129-* + !BYTE $6A ; LAW _X028+24 +_F134 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F135 !WORD _D049+2 + !BYTE $50 ; BRNCH _B130 + !WORD _B130-* +_B129 +; samplesrc/rogue.pla: 0513: player.angle = 2 +; samplesrc/rogue.pla: 0514: fin + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D049+2 +_F136 !WORD _D049+2 +_B130 +; samplesrc/rogue.pla: 0515: moveplayer(1) +; samplesrc/rogue.pla: 0516: break + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F137 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0517: is 'M' +_B131 +; samplesrc/rogue.pla: 0518: if totaldarkness +; samplesrc/rogue.pla: 0519: player.angle = conio:rnd() & 7 +; samplesrc/rogue.pla: 0520: else + !BYTE $68 ; LAB _D046+0 +_F138 !WORD _D046+0 + !BYTE $4C ; BRFLS _B132 + !WORD _B132-* + !BYTE $6A ; LAW _X028+24 +_F139 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F140 !WORD _D049+2 + !BYTE $50 ; BRNCH _B133 + !WORD _B133-* +_B132 +; samplesrc/rogue.pla: 0521: player.angle = 4 +; samplesrc/rogue.pla: 0522: fin + !BYTE $08 ; CN 4 + !BYTE $78 ; SAB _D049+2 +_F141 !WORD _D049+2 +_B133 +; samplesrc/rogue.pla: 0523: moveplayer(1) +; samplesrc/rogue.pla: 0524: break + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F142 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0525: is 'Q' +_B134 +; samplesrc/rogue.pla: 0526: if player.energy > RUN_ENERGY +; samplesrc/rogue.pla: 0527: player.energy = player.energy - RUN_ENERGY +; samplesrc/rogue.pla: 0528: moveplayer(1) +; samplesrc/rogue.pla: 0529: fin + !BYTE $68 ; LAB _D049+7 +_F143 !WORD _D049+7 + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B135 + !WORD _B135-* + !BYTE $68 ; LAB _D049+7 +_F144 !WORD _D049+7 + !BYTE $3A,$04 ; SUBI 4 + !BYTE $78 ; SAB _D049+7 +_F145 !WORD _D049+7 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F146 !WORD _C008 +_B135 +_B136 +; samplesrc/rogue.pla: 0530: is 'W' +_B137 +; samplesrc/rogue.pla: 0531: is $0B // Up Arrow +_B138 +; samplesrc/rogue.pla: 0532: moveplayer(1) +; samplesrc/rogue.pla: 0533: break + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C008 +_F147 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0534: is 'S' +_B139 +; samplesrc/rogue.pla: 0535: is $0A // Down Arrow +_B140 +; samplesrc/rogue.pla: 0536: moveplayer(-1) +; samplesrc/rogue.pla: 0537: break + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _C008 +_F148 !WORD _C008 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0538: is 'A' +_B141 +; samplesrc/rogue.pla: 0539: is $08 // Left Arrow +_B142 +; samplesrc/rogue.pla: 0540: player.angle = (player.angle - 1) & 7 +; samplesrc/rogue.pla: 0541: break + !BYTE $68 ; LAB _D049+2 +_F149 !WORD _D049+2 + !BYTE $8E ; DECR + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F150 !WORD _D049+2 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0542: is 'D' +_B143 +; samplesrc/rogue.pla: 0543: is $15 // Right Arrow +_B144 +; samplesrc/rogue.pla: 0544: player.angle = (player.angle + 1) & 7 +; samplesrc/rogue.pla: 0545: break + !BYTE $68 ; LAB _D049+2 +_F151 !WORD _D049+2 + !BYTE $8C ; INCR + !BYTE $3C,$07 ; ANDI 7 + !BYTE $78 ; SAB _D049+2 +_F152 !WORD _D049+2 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0546: is ' ' +_B145 +; samplesrc/rogue.pla: 0547: when getmaptile(player.xpos + xdir[player.angle], player.ypos + ydir[player.angle]) & MAP_TILE + !BYTE $68 ; LAB _D049+0 +_F153 !WORD _D049+0 + !BYTE $26 ; LA _D043+0 +_F154 !WORD _D043+0 + !BYTE $BC ; IDXAB _D049+2 +_F155 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $68 ; LAB _D049+1 +_F156 !WORD _D049+1 + !BYTE $26 ; LA _D044+0 +_F157 !WORD _D044+0 + !BYTE $BC ; IDXAB _D049+2 +_F158 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X031 +_F159 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B147-* +; samplesrc/rogue.pla: 0548: is LOCKED_TILE +_B148 +; samplesrc/rogue.pla: 0549: if not player.key +; samplesrc/rogue.pla: 0550: ouch +; samplesrc/rogue.pla: 0551: break + !BYTE $68 ; LAB _D049+11 +_F160 !WORD _D049+11 + !BYTE $4E ; BRTRU _B149 + !WORD _B149-* + !BYTE $54 ; CALL _C001 +_F161 !WORD _C001 + !BYTE $50 ; BRNCH _B146 + !WORD _B146-* +; samplesrc/rogue.pla: 0552: fin +_B149 +_B150 +; samplesrc/rogue.pla: 0553: is DOOR_TILE +_B151 +; samplesrc/rogue.pla: 0554: updtmaptile(player.xpos + xdir[player.angle], player.ypos + ydir[player.angle], FLOOR_TILE) +; samplesrc/rogue.pla: 0555: break + !BYTE $68 ; LAB _D049+0 +_F162 !WORD _D049+0 + !BYTE $26 ; LA _D043+0 +_F163 !WORD _D043+0 + !BYTE $BC ; IDXAB _D049+2 +_F164 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $68 ; LAB _D049+1 +_F165 !WORD _D049+1 + !BYTE $26 ; LA _D044+0 +_F166 !WORD _D044+0 + !BYTE $BC ; IDXAB _D049+2 +_F167 !WORD _D049+2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X033 +_F168 !WORD 0 + !BYTE $50 ; BRNCH _B146 + !WORD _B146-* +; samplesrc/rogue.pla: 0556: is ENTER_TILE +_B152 +; samplesrc/rogue.pla: 0557: break + !BYTE $50 ; BRNCH _B146 + !WORD _B146-* +; samplesrc/rogue.pla: 0558: is EXIT_TILE +_B153 +; samplesrc/rogue.pla: 0559: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0560: wend + !BYTE $50 ; BRNCH _B146 + !WORD _B146-* +_B147 + !BYTE $04 ; CASEBLOCK + !WORD $0025 + !WORD _B148-* + !WORD $002B + !WORD _B151-* + !WORD $002D + !WORD _B152-* + !WORD $003D + !WORD _B153-* +_B146 +; samplesrc/rogue.pla: 0561: break + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0562: is $0D // Return +_B154 +; samplesrc/rogue.pla: 0563: when getmaptile(player.xpos, player.ypos) & MAP_TILE + !BYTE $68 ; LAB _D049+0 +_F169 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F170 !WORD _D049+1 + !BYTE $54 ; CALL _X031 +_F171 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B156-* +; samplesrc/rogue.pla: 0564: is KEY_TILE +_B157 +; samplesrc/rogue.pla: 0565: player.key = 1 +; samplesrc/rogue.pla: 0566: updtmaptile(player.xpos, player.ypos, FLOOR_TILE) +; samplesrc/rogue.pla: 0567: gotit +; samplesrc/rogue.pla: 0568: break + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D049+11 +_F172 !WORD _D049+11 + !BYTE $68 ; LAB _D049+0 +_F173 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F174 !WORD _D049+1 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X033 +_F175 !WORD 0 + !BYTE $54 ; CALL _C002 +_F176 !WORD _C002 + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +; samplesrc/rogue.pla: 0569: is RAFT_TILE +_B158 +; samplesrc/rogue.pla: 0570: player.raft = 1 +; samplesrc/rogue.pla: 0571: updtmaptile(player.xpos, player.ypos, FLOOR_TILE) +; samplesrc/rogue.pla: 0572: gotit +; samplesrc/rogue.pla: 0573: break + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D049+12 +_F177 !WORD _D049+12 + !BYTE $68 ; LAB _D049+0 +_F178 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F179 !WORD _D049+1 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X033 +_F180 !WORD 0 + !BYTE $54 ; CALL _C002 +_F181 !WORD _C002 + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +; samplesrc/rogue.pla: 0574: is GOLD_TILE +_B159 +; samplesrc/rogue.pla: 0575: player.gold = player.gold + 1 +; samplesrc/rogue.pla: 0576: updtmaptile(player.xpos, player.ypos, FLOOR_TILE) +; samplesrc/rogue.pla: 0577: gotit +; samplesrc/rogue.pla: 0578: break + !BYTE $68 ; LAB _D049+10 +_F182 !WORD _D049+10 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D049+10 +_F183 !WORD _D049+10 + !BYTE $68 ; LAB _D049+0 +_F184 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F185 !WORD _D049+1 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X033 +_F186 !WORD 0 + !BYTE $54 ; CALL _C002 +_F187 !WORD _C002 + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +; samplesrc/rogue.pla: 0579: is TORCH_TILE +_B160 +; samplesrc/rogue.pla: 0580: if player.oil < 1000 +; samplesrc/rogue.pla: 0581: player:oil = player:oil + TORCH_OIL +; samplesrc/rogue.pla: 0582: if player:oil > 1000 +; samplesrc/rogue.pla: 0583: player:oil = 1000 +; samplesrc/rogue.pla: 0584: fin + !BYTE $68 ; LAB _D049+8 +_F188 !WORD _D049+8 + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $6A ; LAW _D049+8 +_F189 !WORD _D049+8 + !BYTE $38,$FA ; ADDI 250 + !BYTE $7E ; DAW _D049+8 +_F190 !WORD _D049+8 + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B163 + !WORD _B163-* + !BYTE $2C,$E8,$03 ; CW 1000 + !BYTE $7A ; SAW _D049+8 +_F191 !WORD _D049+8 +_B163 +_B164 +; samplesrc/rogue.pla: 0585: setmaptile(player.xpos, player.ypos, FLOOR_TILE) +; samplesrc/rogue.pla: 0586: for yt = player.ypos - 1 to player.ypos + 1 + !BYTE $68 ; LAB _D049+0 +_F192 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F193 !WORD _D049+1 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X032 +_F194 !WORD 0 + !BYTE $68 ; LAB _D049+1 +_F195 !WORD _D049+1 + !BYTE $8C ; INCR + !BYTE $68 ; LAB _D049+1 +_F196 !WORD _D049+1 + !BYTE $8E ; DECR + !BYTE $A0 ; BRGT _B165 + !WORD _B165-* +_B166 + !BYTE $6C,$01 ; DLB [1] +; samplesrc/rogue.pla: 0587: for xt = player.xpos - 1 to player.xpos + 1 + !BYTE $68 ; LAB _D049+0 +_F197 !WORD _D049+0 + !BYTE $8C ; INCR + !BYTE $68 ; LAB _D049+0 +_F198 !WORD _D049+0 + !BYTE $8E ; DECR + !BYTE $A0 ; BRGT _B168 + !WORD _B168-* +_B169 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rogue.pla: 0588: setmaptile(xt, yt, getmaptile(xt, yt) & MAP_TILE) +; samplesrc/rogue.pla: 0589: next + !BYTE $64,$00 ; LLB [0] + !BYTE $64,$01 ; LLB [1] + !BYTE $64,$00 ; LLB [0] + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _X031 +_F199 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $54 ; CALL _X032 +_F200 !WORD 0 +_B170 + !BYTE $A4 ; INCBRLE _B169 + !WORD _B169-* +_B168 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0590: next +_B167 + !BYTE $A4 ; INCBRLE _B166 + !WORD _B166-* +_B165 + !BYTE $74,$01 ; SLB [1] + !BYTE $30 ; DROP +; samplesrc/rogue.pla: 0591: gotit +; samplesrc/rogue.pla: 0592: fin + !BYTE $54 ; CALL _C002 +_F201 !WORD _C002 +_B161 +_B162 +; samplesrc/rogue.pla: 0593: break + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +; samplesrc/rogue.pla: 0594: is FOOD_TILE +_B171 +; samplesrc/rogue.pla: 0595: if player.health < 100 or player.energy < 100 +; samplesrc/rogue.pla: 0596: player.health = player.health + MANA/2 +; samplesrc/rogue.pla: 0597: if player.health > 100 +; samplesrc/rogue.pla: 0598: player.health = 100 +; samplesrc/rogue.pla: 0599: fin + !BYTE $68 ; LAB _D049+6 +_F202 !WORD _D049+6 + !BYTE $2A,$64 ; CB 100 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B172 + !WORD _B172-* + !BYTE $68 ; LAB _D049+7 +_F203 !WORD _D049+7 + !BYTE $2A,$64 ; CB 100 + !BYTE $46 ; ISLT +_B172 + !BYTE $4C ; BRFLS _B173 + !WORD _B173-* + !BYTE $68 ; LAB _D049+6 +_F204 !WORD _D049+6 + !BYTE $38,$19 ; ADDI 25 + !BYTE $7C ; DAB _D049+6 +_F205 !WORD _D049+6 + !BYTE $2A,$64 ; CB 100 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B175 + !WORD _B175-* + !BYTE $2A,$64 ; CB 100 + !BYTE $78 ; SAB _D049+6 +_F206 !WORD _D049+6 +_B175 +_B176 +; samplesrc/rogue.pla: 0600: player.energy = player.energy + MANA +; samplesrc/rogue.pla: 0601: if player.energy > 100 +; samplesrc/rogue.pla: 0602: player.energy = 100 +; samplesrc/rogue.pla: 0603: fin + !BYTE $68 ; LAB _D049+7 +_F207 !WORD _D049+7 + !BYTE $38,$32 ; ADDI 50 + !BYTE $7C ; DAB _D049+7 +_F208 !WORD _D049+7 + !BYTE $2A,$64 ; CB 100 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B177 + !WORD _B177-* + !BYTE $2A,$64 ; CB 100 + !BYTE $78 ; SAB _D049+7 +_F209 !WORD _D049+7 +_B177 +_B178 +; samplesrc/rogue.pla: 0604: updtmaptile(player.xpos, player.ypos, FLOOR_TILE) +; samplesrc/rogue.pla: 0605: player.fov = 1 +; samplesrc/rogue.pla: 0606: gotit +; samplesrc/rogue.pla: 0607: fin + !BYTE $68 ; LAB _D049+0 +_F210 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F211 !WORD _D049+1 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X033 +_F212 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D049+4 +_F213 !WORD _D049+4 + !BYTE $54 ; CALL _C002 +_F214 !WORD _C002 +_B173 +_B174 +; samplesrc/rogue.pla: 0608: break + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +; samplesrc/rogue.pla: 0609: wend + !BYTE $50 ; BRNCH _B155 + !WORD _B155-* +_B156 + !BYTE $05 ; CASEBLOCK + !WORD $0024 + !WORD _B159-* + !WORD $0026 + !WORD _B171-* + !WORD $002A + !WORD _B160-* + !WORD $002C + !WORD _B157-* + !WORD $0040 + !WORD _B158-* +_B155 +; samplesrc/rogue.pla: 0610: break + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0611: is 'O' +_B179 +; samplesrc/rogue.pla: 0612: player.lamp = 0 +; samplesrc/rogue.pla: 0613: break + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+3 +_F215 !WORD _D049+3 + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0614: is '<' +_B180 +; samplesrc/rogue.pla: 0615: is ',' +_B181 +; samplesrc/rogue.pla: 0616: if player.lamp > 0 +; samplesrc/rogue.pla: 0617: player.lamp = player.lamp - 1 +; samplesrc/rogue.pla: 0618: fin + !BYTE $68 ; LAB _D049+3 +_F216 !WORD _D049+3 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B182 + !WORD _B182-* + !BYTE $68 ; LAB _D049+3 +_F217 !WORD _D049+3 + !BYTE $8E ; DECR + !BYTE $78 ; SAB _D049+3 +_F218 !WORD _D049+3 +_B182 +_B183 +; samplesrc/rogue.pla: 0619: break + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0620: is '>' +_B184 +; samplesrc/rogue.pla: 0621: is '.' +_B185 +; samplesrc/rogue.pla: 0622: if player.lamp < maxlight - 1 +; samplesrc/rogue.pla: 0623: player.lamp = player.lamp + 1 +; samplesrc/rogue.pla: 0624: fin + !BYTE $68 ; LAB _D049+3 +_F219 !WORD _D049+3 + !BYTE $12 ; CN 9 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B186 + !WORD _B186-* + !BYTE $68 ; LAB _D049+3 +_F220 !WORD _D049+3 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D049+3 +_F221 !WORD _D049+3 +_B186 +_B187 +; samplesrc/rogue.pla: 0625: break + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +; samplesrc/rogue.pla: 0626: is 'X' +_B188 +; samplesrc/rogue.pla: 0627: clearstatus +; samplesrc/rogue.pla: 0628: conio:gotoxy(0, statusline) +; samplesrc/rogue.pla: 0629: puts(@quitstr) +; samplesrc/rogue.pla: 0630: if toupper(conio:getkey()) == 'Y' +; samplesrc/rogue.pla: 0631: player.health = 0 +; samplesrc/rogue.pla: 0632: return FALSE + !BYTE $54 ; CALL _C007 +_F222 !WORD _C007 + !BYTE $00 ; CN 0 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F223 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D060+0 +_F224 !WORD _D060+0 + !BYTE $54 ; CALL _X004 +_F225 !WORD 0 + !BYTE $6A ; LAW _X028+2 +_F226 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X021 +_F227 !WORD 0 + !BYTE $2A,$59 ; CB 89 + !BYTE $24 ; BRNE _B189 + !WORD _B189-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+6 +_F228 !WORD _D049+6 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0633: fin +_B189 +_B190 +; samplesrc/rogue.pla: 0634: wend + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +_B121 + !BYTE $15 ; CASEBLOCK + !WORD $0008 + !WORD _B142-* + !WORD $000A + !WORD _B140-* + !WORD $000B + !WORD _B138-* + !WORD $000D + !WORD _B154-* + !WORD $0015 + !WORD _B144-* + !WORD $0020 + !WORD _B145-* + !WORD $002C + !WORD _B181-* + !WORD $002E + !WORD _B185-* + !WORD $003C + !WORD _B180-* + !WORD $003E + !WORD _B184-* + !WORD $0041 + !WORD _B141-* + !WORD $0044 + !WORD _B143-* + !WORD $0049 + !WORD _B122-* + !WORD $004A + !WORD _B125-* + !WORD $004B + !WORD _B128-* + !WORD $004D + !WORD _B131-* + !WORD $004F + !WORD _B179-* + !WORD $0051 + !WORD _B134-* + !WORD $0053 + !WORD _B139-* + !WORD $0057 + !WORD _B137-* + !WORD $0058 + !WORD _B188-* +_B120 +; samplesrc/rogue.pla: 0635: if player.energy and player.health < 100 +; samplesrc/rogue.pla: 0636: player.health = player.health + 1 +; samplesrc/rogue.pla: 0637: fin + !BYTE $68 ; LAB _D049+7 +_F229 !WORD _D049+7 + !BYTE $AC ; BRAND _B191 + !WORD _B191-* + !BYTE $68 ; LAB _D049+6 +_F230 !WORD _D049+6 + !BYTE $2A,$64 ; CB 100 + !BYTE $46 ; ISLT +_B191 + !BYTE $4C ; BRFLS _B192 + !WORD _B192-* + !BYTE $68 ; LAB _D049+6 +_F231 !WORD _D049+6 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D049+6 +_F232 !WORD _D049+6 +_B192 +_B193 +; samplesrc/rogue.pla: 0638: if player:oil > player.lamp +; samplesrc/rogue.pla: 0639: player:oil = player:oil - player.lamp +; samplesrc/rogue.pla: 0640: else + !BYTE $6A ; LAW _D049+8 +_F233 !WORD _D049+8 + !BYTE $68 ; LAB _D049+3 +_F234 !WORD _D049+3 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B194 + !WORD _B194-* + !BYTE $6A ; LAW _D049+8 +_F235 !WORD _D049+8 + !BYTE $68 ; LAB _D049+3 +_F236 !WORD _D049+3 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D049+8 +_F237 !WORD _D049+8 + !BYTE $50 ; BRNCH _B195 + !WORD _B195-* +_B194 +; samplesrc/rogue.pla: 0641: player:oil = 0 +; samplesrc/rogue.pla: 0642: player.lamp = 0 +; samplesrc/rogue.pla: 0643: fin + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D049+8 +_F238 !WORD _D049+8 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+3 +_F239 !WORD _D049+3 +_B195 +; samplesrc/rogue.pla: 0644: return player.health + !BYTE $68 ; LAB _D049+6 +_F240 !WORD _D049+6 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.pla: 0645: end +; samplesrc/rogue.pla: 0646: +; samplesrc/rogue.pla: 0647: // +; samplesrc/rogue.pla: 0648: // Main loop +; samplesrc/rogue.pla: 0649: // +; samplesrc/rogue.pla: 0650: +; samplesrc/rogue.pla: 0651: puts(@namestr) +_INIT +; samplesrc/rogue.pla: 0652: instr = gets($BA) +; samplesrc/rogue.pla: 0653: if ^instr > 15 +; samplesrc/rogue.pla: 0654: ^instr = 15 +; samplesrc/rogue.pla: 0655: fin + !BYTE $26 ; LA _D058+0 +_F241 !WORD _D058+0 + !BYTE $54 ; CALL _X004 +_F242 !WORD 0 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _X007 +_F243 !WORD 0 + !BYTE $7A ; SAW _D057+0 +_F244 !WORD _D057+0 + !BYTE $6A ; LAW _D057+0 +_F245 !WORD _D057+0 + !BYTE $60 ; LB + !BYTE $1E ; CN 15 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B196 + !WORD _B196-* + !BYTE $1E ; CN 15 + !BYTE $6A ; LAW _D057+0 +_F246 !WORD _D057+0 + !BYTE $70 ; SB +_B196 +_B197 +; samplesrc/rogue.pla: 0656: memcpy(@player.name, instr, ^instr + 1) +; samplesrc/rogue.pla: 0657: conio:echo(ECHO_OFF) +; samplesrc/rogue.pla: 0658: while loadmap(level) + !BYTE $26 ; LA _D049+13 +_F247 !WORD _D049+13 + !BYTE $6A ; LAW _D057+0 +_F248 !WORD _D057+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F249 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F250 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B200 + !WORD _B200-* +_B198 +; samplesrc/rogue.pla: 0659: puts(@prepstr) +; samplesrc/rogue.pla: 0660: free_entities = heapmark() +; samplesrc/rogue.pla: 0661: findentities +; samplesrc/rogue.pla: 0662: lighttorches +; samplesrc/rogue.pla: 0663: repeat + !BYTE $26 ; LA _D059+0 +_F251 !WORD _D059+0 + !BYTE $54 ; CALL _X004 +_F252 !WORD 0 + !BYTE $54 ; CALL _X012 +_F253 !WORD 0 + !BYTE $7A ; SAW _D048+0 +_F254 !WORD _D048+0 + !BYTE $54 ; CALL _C009 +_F255 !WORD _C009 + !BYTE $54 ; CALL _X034 +_F256 !WORD 0 +_B202 +; samplesrc/rogue.pla: 0664: moveentities(player.lamp or getmaptile(player.xpos, player.ypos) & LIT_TILE)) +; samplesrc/rogue.pla: 0665: drawview +; samplesrc/rogue.pla: 0666: status +; samplesrc/rogue.pla: 0667: until not play + !BYTE $68 ; LAB _D049+3 +_F257 !WORD _D049+3 + !BYTE $AE ; BROR _B205 + !WORD _B205-* + !BYTE $68 ; LAB _D049+0 +_F258 !WORD _D049+0 + !BYTE $68 ; LAB _D049+1 +_F259 !WORD _D049+1 + !BYTE $54 ; CALL _X031 +_F260 !WORD 0 + !BYTE $3C,$80 ; ANDI 128 +_B205 + !BYTE $54 ; CALL _C012 +_F261 !WORD _C012 + !BYTE $54 ; CALL _C013 +_F262 !WORD _C013 + !BYTE $54 ; CALL _C006 +_F263 !WORD _C006 +_B203 + !BYTE $54 ; CALL _C015 +_F264 !WORD _C015 + !BYTE $4E ; BRTRU _B202 + !WORD _B202-* +_B201 +; samplesrc/rogue.pla: 0668: heaprelease(free_entities) +; samplesrc/rogue.pla: 0669: entities = 0 +; samplesrc/rogue.pla: 0670: player.key = 0 +; samplesrc/rogue.pla: 0671: level = level + 1 +; samplesrc/rogue.pla: 0672: clearstatus +; samplesrc/rogue.pla: 0673: conio:gotoxy(0, statusline) +; samplesrc/rogue.pla: 0674: if player.health == 0 +; samplesrc/rogue.pla: 0675: break + !BYTE $6A ; LAW _D048+0 +_F265 !WORD _D048+0 + !BYTE $54 ; CALL _X015 +_F266 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _X042+0 +_F267 !WORD 0+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D049+11 +_F268 !WORD _D049+11 + !BYTE $68 ; LAB _D047+0 +_F269 !WORD _D047+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D047+0 +_F270 !WORD _D047+0 + !BYTE $54 ; CALL _C007 +_F271 !WORD _C007 + !BYTE $00 ; CN 0 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X028+8 +_F272 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D049+6 +_F273 !WORD _D049+6 + !BYTE $4E ; BRTRU _B206 + !WORD _B206-* + !BYTE $50 ; BRNCH _B199 + !WORD _B199-* +; samplesrc/rogue.pla: 0676: fin +_B206 +_B207 +; samplesrc/rogue.pla: 0677: loop +_B200 + !BYTE $68 ; LAB _D047+0 +_F274 !WORD _D047+0 + !BYTE $54 ; CALL _X030 +_F275 !WORD 0 + !BYTE $4E ; BRTRU _B198 + !WORD _B198-* +_B199 +; samplesrc/rogue.pla: 0678: conio:echo(ECHO_ON) +; samplesrc/rogue.pla: 0679: if player.health > 0 +; samplesrc/rogue.pla: 0680: puts(@youmadeitstr) +; samplesrc/rogue.pla: 0681: puti(player.gold) +; samplesrc/rogue.pla: 0682: else + !BYTE $2A,$80 ; CB 128 + !BYTE $6A ; LAW _X028+4 +_F276 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D049+6 +_F277 !WORD _D049+6 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B208 + !WORD _B208-* + !BYTE $26 ; LA _D061+0 +_F278 !WORD _D061+0 + !BYTE $54 ; CALL _X004 +_F279 !WORD 0 + !BYTE $68 ; LAB _D049+10 +_F280 !WORD _D049+10 + !BYTE $54 ; CALL _X005 +_F281 !WORD 0 + !BYTE $50 ; BRNCH _B209 + !WORD _B209-* +_B208 +; samplesrc/rogue.pla: 0683: puts(@youdiedstr) +; samplesrc/rogue.pla: 0684: fin + !BYTE $26 ; LA _D062+0 +_F282 !WORD _D062+0 + !BYTE $54 ; CALL _X004 +_F283 !WORD 0 +_B209 +; samplesrc/rogue.pla: 0685: puts(@againstr) +; samplesrc/rogue.pla: 0686: done + !BYTE $26 ; LA _D063+0 +_F284 !WORD _D063+0 + !BYTE $54 ; CALL _X004 +_F285 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 17 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE 42 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: LOADMAP + !BYTE $CC,$CF,$C1,$C4,$CD,$C1,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: GETMAPTILE + !BYTE $C7,$C5,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: SETMAPTILE + !BYTE $D3,$C5,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: UPDTMAPTILE + !BYTE $D5,$D0,$C4,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: LIGHTTORCHES + !BYTE $CC,$C9,$C7,$C8,$D4,$D4,$CF,$D2,$C3,$C8,$C5,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: DRAWMAP + !BYTE $C4,$D2,$C1,$D7,$CD,$C1,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: DRAWVISENTITY + !BYTE $C4,$D2,$C1,$D7,$D6,$C9,$D3,$C5,$CE,$D4,$C9,$D4,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 36 ; ESD INDEX + ; DCI STRING: DRAWPLAYER + !BYTE $C4,$D2,$C1,$D7,$D0,$CC,$C1,$D9,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: UPDATESCREEN + !BYTE $D5,$D0,$C4,$C1,$D4,$C5,$D3,$C3,$D2,$C5,$C5,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: FIGHT + !BYTE $C6,$C9,$C7,$C8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + ; DCI STRING: ENTITY + !BYTE $C5,$CE,$D4,$C9,$D4,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 41 ; ESD INDEX + ; DCI STRING: ENTITIES + !BYTE $C5,$CE,$D4,$C9,$D4,$C9,$C5,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 42 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/rogue.combat.a b/src/samplesrc/rogue.combat.a new file mode 100644 index 0000000..7b7d5ae --- /dev/null +++ b/src/samplesrc/rogue.combat.a @@ -0,0 +1,1246 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/rogue.combat.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/rogue.combat.pla: 0001: +; samplesrc/rogue.combat.pla: 0002: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X028 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/rogue.combat.pla: 0002: +; samplesrc/rogue.combat.pla: 0003: +; samplesrc/rogue.combat.pla: 0004: import roguemap + ; DCI STRING: ROGUEMAP + !BYTE $D2,$CF,$C7,$D5,$C5,$CD,$C1,$50 + ; ROGUEMAP -> X029 +; samplesrc/rogue.combat.pla: 0005: predef moveplayer + ; MOVEPLAYER -> X030 +; samplesrc/rogue.combat.pla: 0006: end +; samplesrc/rogue.combat.pla: 0007: +; samplesrc/rogue.combat.pla: 0008: struc t_pos + !BYTE $00 ; END OF MODULE DEPENDENCIES +; samplesrc/rogue.combat.pla: 0009: byte xpos + ; xpos = 0 +; samplesrc/rogue.combat.pla: 0010: byte ypos + ; ypos = 1 +; samplesrc/rogue.combat.pla: 0011: end + ; t_pos = 2 +; samplesrc/rogue.combat.pla: 0012: +; samplesrc/rogue.combat.pla: 0013: // +; samplesrc/rogue.combat.pla: 0014: // Player +; samplesrc/rogue.combat.pla: 0015: // +; samplesrc/rogue.combat.pla: 0016: +; samplesrc/rogue.combat.pla: 0017: struc t_player +; samplesrc/rogue.combat.pla: 0018: byte[t_pos] +; samplesrc/rogue.combat.pla: 0019: byte angle + ; angle = 2 +; samplesrc/rogue.combat.pla: 0020: byte lamp + ; lamp = 3 +; samplesrc/rogue.combat.pla: 0021: byte fov + ; fov = 4 +; samplesrc/rogue.combat.pla: 0022: byte skill + ; skill = 5 +; samplesrc/rogue.combat.pla: 0023: byte health + ; health = 6 +; samplesrc/rogue.combat.pla: 0024: byte energy + ; energy = 7 +; samplesrc/rogue.combat.pla: 0025: word oil + ; oil = 8 +; samplesrc/rogue.combat.pla: 0026: byte gold + ; gold = 10 +; samplesrc/rogue.combat.pla: 0027: byte key + ; key = 11 +; samplesrc/rogue.combat.pla: 0028: byte raft + ; raft = 12 +; samplesrc/rogue.combat.pla: 0029: byte[32] name[32] + ; name = 13 +; samplesrc/rogue.combat.pla: 0030: end + ; t_player = 1037 +; samplesrc/rogue.combat.pla: 0031: +; samplesrc/rogue.combat.pla: 0032: // +; samplesrc/rogue.combat.pla: 0033: // ASCII Warrior +; samplesrc/rogue.combat.pla: 0034: // +; samplesrc/rogue.combat.pla: 0035: +; samplesrc/rogue.combat.pla: 0036: byte[] ascii_warrior +_D031 ; ascii_warrior +; samplesrc/rogue.combat.pla: 0037: byte = " | " + !BYTE $0A + !BYTE $20,$20,$20,$7C,$20,$20,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0038: byte = " T " + !BYTE $0A + !BYTE $20,$20,$20,$54,$20,$20,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0039: byte = " \\ () " + !BYTE $0A + !BYTE $20,$20,$20,$5C,$20,$28,$29,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0040: byte = " \\^ " + !BYTE $0A + !BYTE $20,$20,$20,$20,$5C,$5E,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0041: byte = " #\\_] " + !BYTE $0A + !BYTE $20,$20,$20,$20,$20,$23,$5C,$5F + !BYTE $5D,$20 +; samplesrc/rogue.combat.pla: 0042: byte = " # ] " + !BYTE $0A + !BYTE $20,$20,$20,$20,$20,$23,$20,$20 + !BYTE $5D,$20 +; samplesrc/rogue.combat.pla: 0043: byte = " /\\ " + !BYTE $0A + !BYTE $20,$20,$20,$20,$2F,$5C,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0044: byte = " / \\ " + !BYTE $0A + !BYTE $20,$20,$20,$2F,$20,$20,$5C,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0045: byte = " / / " + !BYTE $0A + !BYTE $20,$20,$20,$2F,$20,$20,$2F,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0046: byte = " = = " + !BYTE $0A + !BYTE $20,$20,$20,$3D,$20,$20,$3D,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0047: +; samplesrc/rogue.combat.pla: 0048: // +; samplesrc/rogue.combat.pla: 0049: // Other monsters +; samplesrc/rogue.combat.pla: 0050: // +; samplesrc/rogue.combat.pla: 0051: +; samplesrc/rogue.combat.pla: 0052: struc t_other +; samplesrc/rogue.combat.pla: 0053: byte[t_pos] +; samplesrc/rogue.combat.pla: 0054: byte kind + ; kind = 2 +; samplesrc/rogue.combat.pla: 0055: byte tileid + ; tileid = 3 +; samplesrc/rogue.combat.pla: 0056: byte life + ; life = 4 +; samplesrc/rogue.combat.pla: 0057: byte power + ; power = 5 +; samplesrc/rogue.combat.pla: 0058: word prev_other + ; prev_other = 6 +; samplesrc/rogue.combat.pla: 0059: word next_other + ; next_other = 8 +; samplesrc/rogue.combat.pla: 0060: end + ; t_other = 10 +; samplesrc/rogue.combat.pla: 0061: +; samplesrc/rogue.combat.pla: 0062: // +; samplesrc/rogue.combat.pla: 0063: // ASCII Enemy Art +; samplesrc/rogue.combat.pla: 0064: // +; samplesrc/rogue.combat.pla: 0065: byte[] ascii_thief +_D032 ; ascii_thief +; samplesrc/rogue.combat.pla: 0066: byte = " " + !BYTE $0A + !BYTE $20,$20,$20,$20,$20,$20,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0067: byte = " " + !BYTE $0A + !BYTE $20,$20,$20,$20,$20,$20,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0068: byte = " ____ " + !BYTE $0A + !BYTE $20,$20,$20,$5F,$5F,$5F,$5F,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0069: byte = " /o_o\\\\ " + !BYTE $0A + !BYTE $20,$20,$2F,$6F,$5F,$6F,$5C,$5C + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0070: byte = "| \\ = // " + !BYTE $0A + !BYTE $7C,$20,$5C,$20,$3D,$20,$2F,$2F + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0071: byte = "T /###|\\\\ " + !BYTE $0A + !BYTE $54,$20,$2F,$23,$23,$23,$7C,$5C + !BYTE $5C,$20 +; samplesrc/rogue.combat.pla: 0072: byte = "@==###||| " + !BYTE $0A + !BYTE $40,$3D,$3D,$23,$23,$23,$7C,$7C + !BYTE $7C,$20 +; samplesrc/rogue.combat.pla: 0073: byte = " xxx@// " + !BYTE $0A + !BYTE $20,$20,$20,$78,$78,$78,$40,$2F + !BYTE $2F,$20 +; samplesrc/rogue.combat.pla: 0074: byte = " #|#|\\\\ " + !BYTE $0A + !BYTE $20,$20,$20,$23,$7C,$23,$7C,$5C + !BYTE $5C,$20 +; samplesrc/rogue.combat.pla: 0075: byte = " #|#| \\\\" + !BYTE $0A + !BYTE $20,$20,$20,$23,$7C,$23,$7C,$20 + !BYTE $5C,$5C +; samplesrc/rogue.combat.pla: 0076: +; samplesrc/rogue.combat.pla: 0077: byte[] ascii_ogre +_D033 ; ascii_ogre +; samplesrc/rogue.combat.pla: 0078: byte = " :^; " + !BYTE $0A + !BYTE $20,$20,$20,$20,$3A,$5E,$3B,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0079: byte = " @ }\"{ " + !BYTE $0A + !BYTE $20,$40,$20,$20,$7D,$22,$7B,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0080: byte = " # /'\\ " + !BYTE $0A + !BYTE $20,$23,$20,$20,$2F,$27,$5C,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0081: byte = " ##=<#>=##" + !BYTE $0A + !BYTE $20,$23,$23,$3D,$3C,$23,$3E,$3D + !BYTE $23,$23 +; samplesrc/rogue.combat.pla: 0082: byte = " ===== #" + !BYTE $0A + !BYTE $20,$20,$20,$3D,$3D,$3D,$3D,$3D + !BYTE $20,$23 +; samplesrc/rogue.combat.pla: 0083: byte = " \\===/ ?" + !BYTE $0A + !BYTE $20,$20,$20,$5C,$3D,$3D,$3D,$2F + !BYTE $20,$3F +; samplesrc/rogue.combat.pla: 0084: byte = " ===== :" + !BYTE $0A + !BYTE $20,$20,$20,$3D,$3D,$3D,$3D,$3D + !BYTE $20,$3A +; samplesrc/rogue.combat.pla: 0085: byte = " ()^() :" + !BYTE $0A + !BYTE $20,$20,$20,$28,$29,$5E,$28,$29 + !BYTE $20,$3A +; samplesrc/rogue.combat.pla: 0086: byte = " () () *" + !BYTE $0A + !BYTE $20,$20,$20,$28,$29,$20,$28,$29 + !BYTE $20,$2A +; samplesrc/rogue.combat.pla: 0087: byte = " {{} {}} " + !BYTE $0A + !BYTE $20,$20,$7B,$7B,$7D,$20,$7B,$7D + !BYTE $7D,$20 +; samplesrc/rogue.combat.pla: 0088: +; samplesrc/rogue.combat.pla: 0089: byte[] ascii_zombie +_D034 ; ascii_zombie +; samplesrc/rogue.combat.pla: 0090: byte = " \\\\/ " + !BYTE $0A + !BYTE $20,$20,$20,$5C,$5C,$2F,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0091: byte = " {o|0} " + !BYTE $0A + !BYTE $20,$20,$7B,$6F,$7C,$30,$7D,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0092: byte = " { ^ } " + !BYTE $0A + !BYTE $20,$20,$7B,$20,$5E,$20,$7D,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0093: byte = " ### " + !BYTE $0A + !BYTE $20,$20,$20,$23,$23,$23,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0094: byte = " /:\\ " + !BYTE $0A + !BYTE $20,$20,$20,$2F,$3A,$5C,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0095: byte = " /%%%%%\\ " + !BYTE $0A + !BYTE $20,$2F,$25,$25,$25,$25,$25,$5C + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0096: byte = "|%%%//%%|\\" + !BYTE $0A + !BYTE $7C,$25,$25,$25,$2F,$2F,$25,$25 + !BYTE $7C,$5C +; samplesrc/rogue.combat.pla: 0097: byte = "|%%%\\%%%||" + !BYTE $0A + !BYTE $7C,$25,$25,$25,$5C,$25,$25,$25 + !BYTE $7C,$7C +; samplesrc/rogue.combat.pla: 0098: byte = "|%%//%%%/|" + !BYTE $0A + !BYTE $7C,$25,$25,$2F,$2F,$25,$25,$25 + !BYTE $2F,$7C +; samplesrc/rogue.combat.pla: 0099: byte = "<===|@___/" + !BYTE $0A + !BYTE $3C,$3D,$3D,$3D,$7C,$40,$5F,$5F + !BYTE $5F,$2F +; samplesrc/rogue.combat.pla: 0100: +; samplesrc/rogue.combat.pla: 0101: byte[] ascii_rogue +_D035 ; ascii_rogue +; samplesrc/rogue.combat.pla: 0102: byte = " " + !BYTE $0A + !BYTE $20,$20,$20,$20,$20,$20,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0103: byte = " \\ / " + !BYTE $0A + !BYTE $20,$20,$20,$5C,$20,$2F,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0104: byte = " < - - > " + !BYTE $0A + !BYTE $20,$3C,$20,$2D,$20,$2D,$20,$3E + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0105: byte = " ( \" ) " + !BYTE $0A + !BYTE $20,$28,$20,$20,$22,$20,$20,$29 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0106: byte = " \\VVV/ " + !BYTE $0A + !BYTE $20,$20,$5C,$56,$56,$56,$2F,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0107: byte = " \\M/ " + !BYTE $0A + !BYTE $20,$20,$20,$5C,$4D,$2F,$20,$20 + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0108: byte = " ^^^^^^ " + !BYTE $0A + !BYTE $20,$20,$5E,$5E,$5E,$5E,$5E,$5E + !BYTE $20,$20 +; samplesrc/rogue.combat.pla: 0109: byte = " / \\ " + !BYTE $0A + !BYTE $20,$2F,$20,$20,$20,$20,$20,$20 + !BYTE $5C,$20 +; samplesrc/rogue.combat.pla: 0110: byte = "( ) ^^>--=" + !BYTE $0A + !BYTE $28,$20,$29,$20,$5E,$5E,$3E,$2D + !BYTE $2D,$3D +; samplesrc/rogue.combat.pla: 0111: byte = "( ) WW>--//" + !BYTE $0B + !BYTE $28,$20,$29,$20,$57,$57,$3E,$2D + !BYTE $2D,$2F,$2F +; samplesrc/rogue.combat.pla: 0112: +; samplesrc/rogue.combat.pla: 0113: word ascii_entity = @ascii_thief, @ascii_ogre, @ascii_zombie, @ascii_rogue +_D036 ; ascii_entity = @ascii_thief, @ascii_ogre, @ascii_zombie, @ascii_rogue +_F000 !WORD _D032 +_F001 !WORD _D033 +_F002 !WORD _D034 +_F003 !WORD _D035 +; samplesrc/rogue.combat.pla: 0114: // +; samplesrc/rogue.combat.pla: 0115: // Monster types +; samplesrc/rogue.combat.pla: 0116: // +; samplesrc/rogue.combat.pla: 0117: byte thief = "Thief", 5 +_D037 ; thief = "Thief", 5 + !BYTE $05 + !BYTE $54,$68,$69,$65,$66 + !BYTE $05 +; samplesrc/rogue.combat.pla: 0118: byte ogre = "Ogre", 20 +_D038 ; ogre = "Ogre", 20 + !BYTE $04 + !BYTE $4F,$67,$72,$65 + !BYTE $14 +; samplesrc/rogue.combat.pla: 0119: byte zombie = "Zombie", 40 +_D039 ; zombie = "Zombie", 40 + !BYTE $06 + !BYTE $5A,$6F,$6D,$62,$69,$65 + !BYTE $28 +; samplesrc/rogue.combat.pla: 0120: byte rogue = "Rogue", 80 +_D040 ; rogue = "Rogue", 80 + !BYTE $05 + !BYTE $52,$6F,$67,$75,$65 + !BYTE $50 +; samplesrc/rogue.combat.pla: 0121: export word entity = @thief, @ogre, @zombie, @rogue +_D041 ; entity = @thief, @ogre, @zombie, @rogue +_F004 !WORD _D037 +_F005 !WORD _D038 +_F006 !WORD _D039 +_F007 !WORD _D040 +; samplesrc/rogue.combat.pla: 0122: export word entities = 0 +_D042 ; entities = 0 + !WORD $0000 +; samplesrc/rogue.combat.pla: 0123: +; samplesrc/rogue.combat.pla: 0124: // +; samplesrc/rogue.combat.pla: 0125: // Combat Return 1 if running away, 0 if end of fight +; samplesrc/rogue.combat.pla: 0126: // +; samplesrc/rogue.combat.pla: 0127: +; samplesrc/rogue.combat.pla: 0128: def win#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; win() +; samplesrc/rogue.combat.pla: 0129: conio:tone(30, 15) +; samplesrc/rogue.combat.pla: 0130: conio:tone(5, 15) +; samplesrc/rogue.combat.pla: 0131: conio:tone(5, 15) +; samplesrc/rogue.combat.pla: 0132: conio:tone(30, 5) +; samplesrc/rogue.combat.pla: 0133: end + !BYTE $2A,$1E ; CB 30 + !BYTE $1E ; CN 15 + !BYTE $6A ; LAW _X028+22 +_F008 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $0A ; CN 5 + !BYTE $1E ; CN 15 + !BYTE $6A ; LAW _X028+22 +_F009 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $0A ; CN 5 + !BYTE $1E ; CN 15 + !BYTE $6A ; LAW _X028+22 +_F010 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$1E ; CB 30 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+22 +_F011 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5C ; RET +; samplesrc/rogue.combat.pla: 0134: +; samplesrc/rogue.combat.pla: 0135: export def fight(player, enemy) + ; player -> [0] + ; enemy -> [2] +_C001 ; fight() +; samplesrc/rogue.combat.pla: 0136: word p_atck, e_atck + ; p_atck -> [4] + ; e_atck -> [6] +; samplesrc/rogue.combat.pla: 0137: +; samplesrc/rogue.combat.pla: 0138: conio:echo(ECHO_ON) + !BYTE $58,$08,$02 ; ENTER 8,2 +; samplesrc/rogue.combat.pla: 0139: repeat + !BYTE $2A,$80 ; CB 128 + !BYTE $6A ; LAW _X028+4 +_F012 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B002 +; samplesrc/rogue.combat.pla: 0140: conio:home() +; samplesrc/rogue.combat.pla: 0141: conio:gotoxy(0, 0) +; samplesrc/rogue.combat.pla: 0142: puts(player+name) +; samplesrc/rogue.combat.pla: 0143: conio:gotoxy(1, 2) +; samplesrc/rogue.combat.pla: 0144: puts("Skill :"); puti(player->skill) + !BYTE $6A ; LAW _X028+6 +_F013 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+8 +_F014 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$0D ; ADDI 13 + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X028+8 +_F016 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $08 + !BYTE $53,$6B,$69,$6C,$6C,$20,$20,$3A + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +; samplesrc/rogue.combat.pla: 0145: conio:gotoxy(1, 3) +; samplesrc/rogue.combat.pla: 0146: puts("Health :"); puti(player->health) + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F018 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X028+8 +_F019 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $08 + !BYTE $48,$65,$61,$6C,$74,$68,$20,$3A + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +; samplesrc/rogue.combat.pla: 0147: conio:gotoxy(1, 4) +; samplesrc/rogue.combat.pla: 0148: puts("Energy :"); puti(player->energy) + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F021 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X028+8 +_F022 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $08 + !BYTE $45,$6E,$65,$72,$67,$79,$20,$3A + !BYTE $54 ; CALL _X004 +_F023 !WORD 0 +; samplesrc/rogue.combat.pla: 0149: conio:gotoxy(20, 0) +; samplesrc/rogue.combat.pla: 0150: puts(entity[enemy->kind]) +; samplesrc/rogue.combat.pla: 0151: conio:gotoxy(21, 2) +; samplesrc/rogue.combat.pla: 0152: puts("Power :"); puti(enemy->power) + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F024 !WORD 0 + !BYTE $2A,$14 ; CB 20 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+8 +_F025 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D041+0 +_F026 !WORD _D041+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 + !BYTE $2A,$15 ; CB 21 + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X028+8 +_F028 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $08 + !BYTE $50,$6F,$77,$65,$72,$20,$20,$3A + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 +; samplesrc/rogue.combat.pla: 0153: conio:gotoxy(21, 3) +; samplesrc/rogue.combat.pla: 0154: puts("Life :"); puti(enemy->life) + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F030 !WORD 0 + !BYTE $2A,$15 ; CB 21 + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X028+8 +_F031 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $08 + !BYTE $4C,$69,$66,$65,$20,$20,$20,$3A + !BYTE $54 ; CALL _X004 +_F032 !WORD 0 +; samplesrc/rogue.combat.pla: 0155: for e_atck = 0 to 9 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F033 !WORD 0 + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 +_B005 + !BYTE $6E,$06 ; DLW [6] +; samplesrc/rogue.combat.pla: 0156: conio:gotoxy(0, 10 + e_atck) +; samplesrc/rogue.combat.pla: 0157: puts(@ascii_warrior + e_atck * 11) +; samplesrc/rogue.combat.pla: 0158: conio:gotoxy(20, 10 + e_atck) +; samplesrc/rogue.combat.pla: 0159: puts(ascii_entity[enemy->kind] + e_atck * 11) +; samplesrc/rogue.combat.pla: 0160: next + !BYTE $00 ; CN 0 + !BYTE $14 ; CN 10 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $6A ; LAW _X028+8 +_F034 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D031+0 +_F035 !WORD _D031+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $16 ; CN 11 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 + !BYTE $2A,$14 ; CB 20 + !BYTE $14 ; CN 10 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $6A ; LAW _X028+8 +_F037 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D036+0 +_F038 !WORD _D036+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$06 ; LLW [6] + !BYTE $16 ; CN 11 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X004 +_F039 !WORD 0 +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $76,$06 ; SLW [6] + !BYTE $30 ; DROP +; samplesrc/rogue.combat.pla: 0161: conio:gotoxy(12, 8); puts("F)ight or R)un?") + !BYTE $18 ; CN 12 + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _X028+8 +_F040 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $0F + !BYTE $46,$29,$69,$67,$68,$74,$20,$6F + !BYTE $72,$20,$52,$29,$75,$6E,$3F + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 +; samplesrc/rogue.combat.pla: 0162: if toupper(conio:getkey()) == 'R' +; samplesrc/rogue.combat.pla: 0163: conio:echo(ECHO_OFF) +; samplesrc/rogue.combat.pla: 0164: return 1 + !BYTE $6A ; LAW _X028+2 +_F042 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X021 +_F043 !WORD 0 + !BYTE $2A,$52 ; CB 82 + !BYTE $24 ; BRNE _B007 + !WORD _B007-* + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F044 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $02 ; CN 1 + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/rogue.combat.pla: 0165: fin +_B007 +_B008 +; samplesrc/rogue.combat.pla: 0166: // +; samplesrc/rogue.combat.pla: 0167: // Turn player in random direction +; samplesrc/rogue.combat.pla: 0168: // +; samplesrc/rogue.combat.pla: 0169: player->angle = conio:rnd() & 7 +; samplesrc/rogue.combat.pla: 0170: // +; samplesrc/rogue.combat.pla: 0171: // Calculate attack (with a little random variation) +; samplesrc/rogue.combat.pla: 0172: // +; samplesrc/rogue.combat.pla: 0173: p_atck = player->skill + player->energy / 10 - enemy->power / 25 + (conio:rnd() & 7) +; samplesrc/rogue.combat.pla: 0174: e_atck = enemy->power - player->skill / 5 - player->energy / 20 + (conio:rnd() & 7) +; samplesrc/rogue.combat.pla: 0175: if enemy->life > p_atck +; samplesrc/rogue.combat.pla: 0176: enemy->life = enemy->life - p_atck +; samplesrc/rogue.combat.pla: 0177: else + !BYTE $6A ; LAW _X028+24 +_F045 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $2A,$19 ; CB 25 + !BYTE $88 ; DIV + !BYTE $6A ; LAW _X028+24 +_F046 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $82 ; ADD + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $0A ; CN 5 + !BYTE $88 ; DIV + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $2A,$14 ; CB 20 + !BYTE $88 ; DIV + !BYTE $6A ; LAW _X028+24 +_F047 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $3C,$07 ; ANDI 7 + !BYTE $82 ; ADD + !BYTE $84 ; SUB + !BYTE $84 ; SUB + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; samplesrc/rogue.combat.pla: 0178: win +; samplesrc/rogue.combat.pla: 0179: enemy->life = 0 +; samplesrc/rogue.combat.pla: 0180: p_atck = player->skill + enemy->power / 3 +; samplesrc/rogue.combat.pla: 0181: if p_atck > 100 // Limit skill +; samplesrc/rogue.combat.pla: 0182: p_atck = 100 +; samplesrc/rogue.combat.pla: 0183: fin + !BYTE $54 ; CALL _C000 +_F048 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $06 ; CN 3 + !BYTE $88 ; DIV + !BYTE $82 ; ADD + !BYTE $6E,$04 ; DLW [4] + !BYTE $2A,$64 ; CB 100 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $2A,$64 ; CB 100 + !BYTE $76,$04 ; SLW [4] +_B011 +_B012 +; samplesrc/rogue.combat.pla: 0184: player->skill = p_atck +; samplesrc/rogue.combat.pla: 0185: // +; samplesrc/rogue.combat.pla: 0186: // Unlink dead enemy from entities list +; samplesrc/rogue.combat.pla: 0187: // +; samplesrc/rogue.combat.pla: 0188: if enemy == entities +; samplesrc/rogue.combat.pla: 0189: entities = enemy=>next_other +; samplesrc/rogue.combat.pla: 0190: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D042+0 +_F049 !WORD _D042+0 + !BYTE $24 ; BRNE _B013 + !WORD _B013-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D042+0 +_F050 !WORD _D042+0 +_B013 +_B014 +; samplesrc/rogue.combat.pla: 0191: if enemy=>next_other +; samplesrc/rogue.combat.pla: 0192: enemy=>next_other=>prev_other = enemy=>prev_other +; samplesrc/rogue.combat.pla: 0193: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW +_B015 +_B016 +; samplesrc/rogue.combat.pla: 0194: if enemy=>prev_other +; samplesrc/rogue.combat.pla: 0195: enemy=>prev_other=>next_other = enemy=>next_other +; samplesrc/rogue.combat.pla: 0196: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B017 +_B018 +; samplesrc/rogue.combat.pla: 0197: fin +_B010 +; samplesrc/rogue.combat.pla: 0198: if player->health > e_atck +; samplesrc/rogue.combat.pla: 0199: player->health = player->health - e_atck +; samplesrc/rogue.combat.pla: 0200: else + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B020 + !WORD _B020-* +_B019 +; samplesrc/rogue.combat.pla: 0201: player->energy = 0 +; samplesrc/rogue.combat.pla: 0202: player->health = 0 +; samplesrc/rogue.combat.pla: 0203: fin + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB +_B020 +; samplesrc/rogue.combat.pla: 0204: if player->energy >= 4 +; samplesrc/rogue.combat.pla: 0205: player->energy = player->energy - 4 +; samplesrc/rogue.combat.pla: 0206: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $08 ; CN 4 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $3A,$04 ; SUBI 4 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB +_B021 +_B022 +; samplesrc/rogue.combat.pla: 0207: until player->health == 0 or enemy->life == 0 +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B023 + !WORD _B023-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $80 ; NOT +_B023 + !BYTE $4C ; BRFLS _B002 + !WORD _B002-* +_B001 +; samplesrc/rogue.combat.pla: 0208: conio:echo(ECHO_OFF) +; samplesrc/rogue.combat.pla: 0209: return 0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F051 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/rogue.combat.pla: 0210: end +; samplesrc/rogue.combat.pla: 0211: +; samplesrc/rogue.combat.pla: 0212: done +_INIT + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: ENTITY + !BYTE $C5,$CE,$D4,$C9,$D4,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D041 + ; DCI STRING: ENTITIES + !BYTE $C5,$CE,$D4,$C9,$D4,$C9,$C5,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D042 + ; DCI STRING: FIGHT + !BYTE $C6,$C9,$C7,$C8,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/rogue.map.a b/src/samplesrc/rogue.map.a new file mode 100644 index 0000000..206bb2b --- /dev/null +++ b/src/samplesrc/rogue.map.a @@ -0,0 +1,6180 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/rogue.map.pla: 0001: // +; samplesrc/rogue.map.pla: 0002: // Map module +; samplesrc/rogue.map.pla: 0003: // +; samplesrc/rogue.map.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/rogue.map.pla: 0004: +; samplesrc/rogue.map.pla: 0005: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X028 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/rogue.map.pla: 0005: +; samplesrc/rogue.map.pla: 0006: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X029 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X030 +; inc/fileio.plh: 0080: end +; samplesrc/rogue.map.pla: 0006: +; samplesrc/rogue.map.pla: 0007: +; samplesrc/rogue.map.pla: 0008: // +; samplesrc/rogue.map.pla: 0009: // Title page +; samplesrc/rogue.map.pla: 0010: // +; samplesrc/rogue.map.pla: 0011: +; samplesrc/rogue.map.pla: 0012: byte[] initstr + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D031 ; initstr +; samplesrc/rogue.map.pla: 0013: byte = " ( )\n" + !BYTE $0C + !BYTE $20,$28,$20,$20,$20,$20,$20,$20 + !BYTE $20,$20,$29,$0D +; samplesrc/rogue.map.pla: 0014: byte = " )\\ ) ( /( (\n" + !BYTE $0F + !BYTE $20,$29,$5C,$20,$29,$20,$20,$28 + !BYTE $20,$2F,$28,$20,$20,$28,$0D +; samplesrc/rogue.map.pla: 0015: byte = "(()/( )\\()) )\\ ) ( (\n" + !BYTE $1E + !BYTE $28,$28,$29,$2F,$28,$20,$20,$29 + !BYTE $5C,$28,$29,$29,$20,$29,$5C,$20 + !BYTE $29,$20,$20,$20,$20,$20,$20,$20 + !BYTE $28,$20,$20,$20,$28,$0D +; samplesrc/rogue.map.pla: 0016: byte = " /(_))((_)\\ (()/( )\\ )\\\n" + !BYTE $1F + !BYTE $20,$2F,$28,$5F,$29,$29,$28,$28 + !BYTE $5F,$29,$5C,$20,$28,$28,$29,$2F + !BYTE $28,$20,$20,$20,$20,$20,$20,$20 + !BYTE $29,$5C,$20,$20,$29,$5C,$0D +; samplesrc/rogue.map.pla: 0017: byte = "(_)) ((_) /(_))_ _ ((_)((_)\n" + !BYTE $20 + !BYTE $28,$5F,$29,$29,$20,$20,$20,$20 + !BYTE $28,$28,$5F,$29,$20,$2F,$28,$5F + !BYTE $29,$29,$5F,$20,$20,$5F,$20,$28 + !BYTE $28,$5F,$29,$28,$28,$5F,$29,$0D +; samplesrc/rogue.map.pla: 0018: byte = "| _ \\ / _ \\(_)) __|| | | || __|\n" + !BYTE $21 + !BYTE $7C,$20,$5F,$20,$5C,$20,$20,$2F + !BYTE $20,$5F,$20,$5C,$28,$5F,$29,$29 + !BYTE $20,$5F,$5F,$7C,$7C,$20,$7C,$20 + !BYTE $7C,$20,$7C,$7C,$20,$5F,$5F,$7C + !BYTE $0D +; samplesrc/rogue.map.pla: 0019: byte = "| / | (_) | | (_ || |_| || _|\n" + !BYTE $20 + !BYTE $7C,$20,$20,$20,$2F,$20,$7C,$20 + !BYTE $28,$5F,$29,$20,$7C,$20,$7C,$20 + !BYTE $28,$5F,$20,$7C,$7C,$20,$7C,$5F + !BYTE $7C,$20,$7C,$7C,$20,$5F,$7C,$0D +; samplesrc/rogue.map.pla: 0020: byte = "|_|_\\ \\___/ \\___| \\___/ |___|\n" + !BYTE $21 + !BYTE $7C,$5F,$7C,$5F,$5C,$20,$20,$5C + !BYTE $5F,$5F,$5F,$2F,$20,$20,$20,$5C + !BYTE $5F,$5F,$5F,$7C,$20,$5C,$5F,$5F + !BYTE $5F,$2F,$20,$7C,$5F,$5F,$5F,$7C + !BYTE $0D +; samplesrc/rogue.map.pla: 0021: byte = "\n" + !BYTE $01 + !BYTE $0D +; samplesrc/rogue.map.pla: 0022: byte = " By Resman\n" + !BYTE $11 + !BYTE $20,$20,$20,$20,$20,$20,$20,$42 + !BYTE $79,$20,$52,$65,$73,$6D,$61,$6E + !BYTE $0D +; samplesrc/rogue.map.pla: 0023: byte = " Artwork by Seth Sternberger\n" + !BYTE $23 + !BYTE $20,$20,$20,$20,$20,$20,$20,$41 + !BYTE $72,$74,$77,$6F,$72,$6B,$20,$62 + !BYTE $79,$20,$53,$65,$74,$68,$20,$53 + !BYTE $74,$65,$72,$6E,$62,$65,$72,$67 + !BYTE $65,$72,$0D +; samplesrc/rogue.map.pla: 0024: byte = "" + !BYTE $00 +; samplesrc/rogue.map.pla: 0025: word titlestr = @initstr +_D032 ; titlestr = @initstr +_F000 !WORD _D031 +; samplesrc/rogue.map.pla: 0026: +; samplesrc/rogue.map.pla: 0027: // +; samplesrc/rogue.map.pla: 0028: // Animated tile sequence +; samplesrc/rogue.map.pla: 0029: // +; samplesrc/rogue.map.pla: 0030: +; samplesrc/rogue.map.pla: 0031: byte animseq = 0 +_D033 ; animseq = 0 + !BYTE $00 +; samplesrc/rogue.map.pla: 0032: +; samplesrc/rogue.map.pla: 0033: // +; samplesrc/rogue.map.pla: 0034: // Octant beam parameters +; samplesrc/rogue.map.pla: 0035: // +; samplesrc/rogue.map.pla: 0036: +; samplesrc/rogue.map.pla: 0037: const beamdepth = 23 + ; beamdepth = 23 +; samplesrc/rogue.map.pla: 0038: +; samplesrc/rogue.map.pla: 0039: byte dbeam = 0,2,4,8,12,17,22,28,37,44,53,63,72,83,96,109,123,137,151,166,183,202,220,239 +_D034 ; dbeam = 0,2,4,8,12,17,22,28,37,44,53,63,72,83,96,109,123,137,151,166,183,202,220,239 + !BYTE $00 + !BYTE $02 + !BYTE $04 + !BYTE $08 + !BYTE $0C + !BYTE $11 + !BYTE $16 + !BYTE $1C + !BYTE $25 + !BYTE $2C + !BYTE $35 + !BYTE $3F + !BYTE $48 + !BYTE $53 + !BYTE $60 + !BYTE $6D + !BYTE $7B + !BYTE $89 + !BYTE $97 + !BYTE $A6 + !BYTE $B7 + !BYTE $CA + !BYTE $DC + !BYTE $EF +; samplesrc/rogue.map.pla: 0040: const beampts = 240 + ; beampts = 240 +; samplesrc/rogue.map.pla: 0041: +; samplesrc/rogue.map.pla: 0042: byte[] xbeam +_D035 ; xbeam +; samplesrc/rogue.map.pla: 0043: byte = 0 + !BYTE $00 +; samplesrc/rogue.map.pla: 0044: byte = 1,0 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0045: byte = 1,0 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0046: byte = 2,2,1,0 + !BYTE $02 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0047: byte = 3,2,1,0 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0048: byte = 4,3,2,1,0 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0049: byte = 4,3,2,1,0 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0050: byte = 5,4,3,2,1,0 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0051: byte = 6,5,5,4,3,3,2,1,0 + !BYTE $06 + !BYTE $05 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0052: byte = 6,5,4,3,2,1,0 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0053: byte = 7,7,6,5,4,3,2,1,0 + !BYTE $07 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0054: byte = 8,7,6,6,5,4,3,2,1,0 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0055: byte = 8,7,6,5,4,3,2,1,0 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0056: byte = 9,9,8,7,6,5,4,3,2,1,0 + !BYTE $09 + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0057: byte = 10,9,8,8,7,6,5,4,4,3,2,1,0 + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0058: byte = 11,10,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $0B + !BYTE $0A + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0059: byte = 11,10,9,9,8,7,7,6,5,4,3,2,1,0 + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0060: byte = 12,12,11,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $0C + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0061: byte = 13,12,11,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0062: byte = 13,12,11,11,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0063: byte = 14,14,13,12,11,10,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $0E + !BYTE $0E + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0064: byte = 15,14,13,13,12,12,11,10,9,8,8,7,6,5,4,3,2,1,0 + !BYTE $0F + !BYTE $0E + !BYTE $0D + !BYTE $0D + !BYTE $0C + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0065: byte = 16,15,14,13,12,11,10,9,8,7,6,5,5,4,3,2,1,0 + !BYTE $10 + !BYTE $0F + !BYTE $0E + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0066: byte = 16,15,15,14,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0 + !BYTE $10 + !BYTE $0F + !BYTE $0F + !BYTE $0E + !BYTE $0E + !BYTE $0D + !BYTE $0C + !BYTE $0B + !BYTE $0A + !BYTE $09 + !BYTE $08 + !BYTE $07 + !BYTE $06 + !BYTE $05 + !BYTE $04 + !BYTE $03 + !BYTE $02 + !BYTE $01 + !BYTE $00 +; samplesrc/rogue.map.pla: 0067: +; samplesrc/rogue.map.pla: 0068: byte[] ybeam +_D036 ; ybeam +; samplesrc/rogue.map.pla: 0069: byte = 0 + !BYTE $00 +; samplesrc/rogue.map.pla: 0070: byte = 1,1 + !BYTE $01 + !BYTE $01 +; samplesrc/rogue.map.pla: 0071: byte = 2,2 + !BYTE $02 + !BYTE $02 +; samplesrc/rogue.map.pla: 0072: byte = 2,3,3,3 + !BYTE $02 + !BYTE $03 + !BYTE $03 + !BYTE $03 +; samplesrc/rogue.map.pla: 0073: byte = 3,4,4,4 + !BYTE $03 + !BYTE $04 + !BYTE $04 + !BYTE $04 +; samplesrc/rogue.map.pla: 0074: byte = 4,4,5,5,5 + !BYTE $04 + !BYTE $04 + !BYTE $05 + !BYTE $05 + !BYTE $05 +; samplesrc/rogue.map.pla: 0075: byte = 5,5,6,6,6 + !BYTE $05 + !BYTE $05 + !BYTE $06 + !BYTE $06 + !BYTE $06 +; samplesrc/rogue.map.pla: 0076: byte = 5,6,6,7,7,7 + !BYTE $05 + !BYTE $06 + !BYTE $06 + !BYTE $07 + !BYTE $07 + !BYTE $07 +; samplesrc/rogue.map.pla: 0077: byte = 6,6,7,7,7,8,8,8,8 + !BYTE $06 + !BYTE $06 + !BYTE $07 + !BYTE $07 + !BYTE $07 + !BYTE $08 + !BYTE $08 + !BYTE $08 + !BYTE $08 +; samplesrc/rogue.map.pla: 0078: byte = 7,8,8,9,9,9,9 + !BYTE $07 + !BYTE $08 + !BYTE $08 + !BYTE $09 + !BYTE $09 + !BYTE $09 + !BYTE $09 +; samplesrc/rogue.map.pla: 0079: byte = 7,8,8,9,9,10,10,10,10 + !BYTE $07 + !BYTE $08 + !BYTE $08 + !BYTE $09 + !BYTE $09 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0A +; samplesrc/rogue.map.pla: 0080: byte = 8,9,9,10,10,10,11,11,11,11 + !BYTE $08 + !BYTE $09 + !BYTE $09 + !BYTE $0A + !BYTE $0A + !BYTE $0A + !BYTE $0B + !BYTE $0B + !BYTE $0B + !BYTE $0B +; samplesrc/rogue.map.pla: 0081: byte = 9,10,11,11,11,12,12,12,12 + !BYTE $09 + !BYTE $0A + !BYTE $0B + !BYTE $0B + !BYTE $0B + !BYTE $0C + !BYTE $0C + !BYTE $0C + !BYTE $0C +; samplesrc/rogue.map.pla: 0082: byte = 9,10,10,11,12,12,12,13,13,13,13 + !BYTE $09 + !BYTE $0A + !BYTE $0A + !BYTE $0B + !BYTE $0C + !BYTE $0C + !BYTE $0C + !BYTE $0D + !BYTE $0D + !BYTE $0D + !BYTE $0D +; samplesrc/rogue.map.pla: 0083: byte = 10,11,11,12,12,13,13,13,14,14,14,14,14 + !BYTE $0A + !BYTE $0B + !BYTE $0B + !BYTE $0C + !BYTE $0C + !BYTE $0D + !BYTE $0D + !BYTE $0D + !BYTE $0E + !BYTE $0E + !BYTE $0E + !BYTE $0E + !BYTE $0E +; samplesrc/rogue.map.pla: 0084: byte = 11,11,12,12,13,13,14,14,15,15,15,15,15 + !BYTE $0B + !BYTE $0B + !BYTE $0C + !BYTE $0C + !BYTE $0D + !BYTE $0D + !BYTE $0E + !BYTE $0E + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $0F +; samplesrc/rogue.map.pla: 0085: byte = 12,13,13,14,14,14,15,15,15,16,16,16,16,16 + !BYTE $0C + !BYTE $0D + !BYTE $0D + !BYTE $0E + !BYTE $0E + !BYTE $0E + !BYTE $0F + !BYTE $0F + !BYTE $0F + !BYTE $10 + !BYTE $10 + !BYTE $10 + !BYTE $10 + !BYTE $10 +; samplesrc/rogue.map.pla: 0086: byte = 12,13,13,14,15,15,16,16,16,17,17,17,17,17 + !BYTE $0C + !BYTE $0D + !BYTE $0D + !BYTE $0E + !BYTE $0F + !BYTE $0F + !BYTE $10 + !BYTE $10 + !BYTE $10 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 +; samplesrc/rogue.map.pla: 0087: byte = 13,14,14,15,16,16,17,17,17,18,18,18,18,18 + !BYTE $0D + !BYTE $0E + !BYTE $0E + !BYTE $0F + !BYTE $10 + !BYTE $10 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $12 + !BYTE $12 + !BYTE $12 + !BYTE $12 + !BYTE $12 +; samplesrc/rogue.map.pla: 0088: byte = 14,15,15,16,16,17,17,18,18,18,19,19,19,19,19 + !BYTE $0E + !BYTE $0F + !BYTE $0F + !BYTE $10 + !BYTE $10 + !BYTE $11 + !BYTE $11 + !BYTE $12 + !BYTE $12 + !BYTE $12 + !BYTE $13 + !BYTE $13 + !BYTE $13 + !BYTE $13 + !BYTE $13 +; samplesrc/rogue.map.pla: 0089: byte = 14,15,15,16,17,17,18,18,18,19,19,19,20,20,20,20,20 + !BYTE $0E + !BYTE $0F + !BYTE $0F + !BYTE $10 + !BYTE $11 + !BYTE $11 + !BYTE $12 + !BYTE $12 + !BYTE $12 + !BYTE $13 + !BYTE $13 + !BYTE $13 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $14 +; samplesrc/rogue.map.pla: 0090: byte = 15,16,16,17,17,18,18,19,19,19,20,20,20,20,21,21,21,21,21 + !BYTE $0F + !BYTE $10 + !BYTE $10 + !BYTE $11 + !BYTE $11 + !BYTE $12 + !BYTE $12 + !BYTE $13 + !BYTE $13 + !BYTE $13 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $14 + !BYTE $15 + !BYTE $15 + !BYTE $15 + !BYTE $15 + !BYTE $15 +; samplesrc/rogue.map.pla: 0091: byte = 16,16,17,18,19,19,20,20,21,21,21,21,22,22,22,22,22,22 + !BYTE $10 + !BYTE $10 + !BYTE $11 + !BYTE $12 + !BYTE $13 + !BYTE $13 + !BYTE $14 + !BYTE $14 + !BYTE $15 + !BYTE $15 + !BYTE $15 + !BYTE $15 + !BYTE $16 + !BYTE $16 + !BYTE $16 + !BYTE $16 + !BYTE $16 + !BYTE $16 +; samplesrc/rogue.map.pla: 0092: byte = 17,17,18,18,19,19,20,20,21,21,22,22,22,23,23,23,23,23,23 + !BYTE $11 + !BYTE $11 + !BYTE $12 + !BYTE $12 + !BYTE $13 + !BYTE $13 + !BYTE $14 + !BYTE $14 + !BYTE $15 + !BYTE $15 + !BYTE $16 + !BYTE $16 + !BYTE $16 + !BYTE $17 + !BYTE $17 + !BYTE $17 + !BYTE $17 + !BYTE $17 + !BYTE $17 +; samplesrc/rogue.map.pla: 0093: +; samplesrc/rogue.map.pla: 0094: byte[] vbeam +_D037 ; vbeam +; samplesrc/rogue.map.pla: 0095: byte = 0 + !BYTE $00 +; samplesrc/rogue.map.pla: 0096: byte = 0,0 + !BYTE $00 + !BYTE $00 +; samplesrc/rogue.map.pla: 0097: byte = 2,2 + !BYTE $02 + !BYTE $02 +; samplesrc/rogue.map.pla: 0098: byte = 1,3,4,4 + !BYTE $01 + !BYTE $03 + !BYTE $04 + !BYTE $04 +; samplesrc/rogue.map.pla: 0099: byte = 5,7,7,8 + !BYTE $05 + !BYTE $07 + !BYTE $07 + !BYTE $08 +; samplesrc/rogue.map.pla: 0100: byte = 9,6,11,11,12 + !BYTE $09 + !BYTE $06 + !BYTE $0B + !BYTE $0B + !BYTE $0C +; samplesrc/rogue.map.pla: 0101: byte = 14,10,16,16,17 + !BYTE $0E + !BYTE $0A + !BYTE $10 + !BYTE $10 + !BYTE $11 +; samplesrc/rogue.map.pla: 0102: byte = 13,19,15,21,21,22 + !BYTE $0D + !BYTE $13 + !BYTE $0F + !BYTE $15 + !BYTE $15 + !BYTE $16 +; samplesrc/rogue.map.pla: 0103: byte = 23,18,24,25,20,26,26,27,28 + !BYTE $17 + !BYTE $12 + !BYTE $18 + !BYTE $19 + !BYTE $14 + !BYTE $1A + !BYTE $1A + !BYTE $1B + !BYTE $1C +; samplesrc/rogue.map.pla: 0104: byte = 30,32,33,35,35,36,37 + !BYTE $1E + !BYTE $20 + !BYTE $21 + !BYTE $23 + !BYTE $23 + !BYTE $24 + !BYTE $25 +; samplesrc/rogue.map.pla: 0105: byte = 29,38,31,40,34,42,42,43,44 + !BYTE $1D + !BYTE $26 + !BYTE $1F + !BYTE $28 + !BYTE $22 + !BYTE $2A + !BYTE $2A + !BYTE $2B + !BYTE $2C +; samplesrc/rogue.map.pla: 0106: byte = 45,47,39,48,49,41,51,51,52,53 + !BYTE $2D + !BYTE $2F + !BYTE $27 + !BYTE $30 + !BYTE $31 + !BYTE $29 + !BYTE $33 + !BYTE $33 + !BYTE $34 + !BYTE $35 +; samplesrc/rogue.map.pla: 0107: byte = 46,56,58,59,50,60,61,62,63 + !BYTE $2E + !BYTE $38 + !BYTE $3A + !BYTE $3B + !BYTE $32 + !BYTE $3C + !BYTE $3D + !BYTE $3E + !BYTE $3F +; samplesrc/rogue.map.pla: 0108: byte = 54,64,55,57,67,68,60,69,70,71,72 + !BYTE $36 + !BYTE $40 + !BYTE $37 + !BYTE $39 + !BYTE $43 + !BYTE $44 + !BYTE $3C + !BYTE $45 + !BYTE $46 + !BYTE $47 + !BYTE $48 +; samplesrc/rogue.map.pla: 0109: byte = 73,75,65,76,66,78,79,69,80,80,81,82,83 + !BYTE $49 + !BYTE $4B + !BYTE $41 + !BYTE $4C + !BYTE $42 + !BYTE $4E + !BYTE $4F + !BYTE $45 + !BYTE $50 + !BYTE $50 + !BYTE $51 + !BYTE $52 + !BYTE $53 +; samplesrc/rogue.map.pla: 0110: byte = 84,74,85,86,88,77,90,91,93,93,94,95,96 + !BYTE $54 + !BYTE $4A + !BYTE $55 + !BYTE $56 + !BYTE $58 + !BYTE $4D + !BYTE $5A + !BYTE $5B + !BYTE $5D + !BYTE $5D + !BYTE $5E + !BYTE $5F + !BYTE $60 +; samplesrc/rogue.map.pla: 0111: byte = 98,100,87,101,102,89,103,104,92,105,106,107,108,109 + !BYTE $62 + !BYTE $64 + !BYTE $57 + !BYTE $65 + !BYTE $66 + !BYTE $59 + !BYTE $67 + !BYTE $68 + !BYTE $5C + !BYTE $69 + !BYTE $6A + !BYTE $6B + !BYTE $6C + !BYTE $6D +; samplesrc/rogue.map.pla: 0112: byte = 97,110,99,112,114,115,117,118,105,119,120,121,122,123 + !BYTE $61 + !BYTE $6E + !BYTE $63 + !BYTE $70 + !BYTE $72 + !BYTE $73 + !BYTE $75 + !BYTE $76 + !BYTE $69 + !BYTE $77 + !BYTE $78 + !BYTE $79 + !BYTE $7A + !BYTE $7B +; samplesrc/rogue.map.pla: 0113: byte = 124,126,111,113,129,116,131,132,119,133,134,135,136,137 + !BYTE $7C + !BYTE $7E + !BYTE $6F + !BYTE $71 + !BYTE $81 + !BYTE $74 + !BYTE $83 + !BYTE $84 + !BYTE $77 + !BYTE $85 + !BYTE $86 + !BYTE $87 + !BYTE $88 + !BYTE $89 +; samplesrc/rogue.map.pla: 0114: byte = 125,140,127,141,128,143,130,145,146,133,147,148,149,150,151 + !BYTE $7D + !BYTE $8C + !BYTE $7F + !BYTE $8D + !BYTE $80 + !BYTE $8F + !BYTE $82 + !BYTE $91 + !BYTE $92 + !BYTE $85 + !BYTE $93 + !BYTE $94 + !BYTE $95 + !BYTE $96 + !BYTE $97 +; samplesrc/rogue.map.pla: 0115: byte = 138,152,139,154,156,142,157,158,144,160,161,147,162,163,164,165,166 + !BYTE $8A + !BYTE $98 + !BYTE $8B + !BYTE $9A + !BYTE $9C + !BYTE $8E + !BYTE $9D + !BYTE $9E + !BYTE $90 + !BYTE $A0 + !BYTE $A1 + !BYTE $93 + !BYTE $A2 + !BYTE $A3 + !BYTE $A4 + !BYTE $A5 + !BYTE $A6 +; samplesrc/rogue.map.pla: 0116: byte = 167,169,153,170,155,171,172,174,175,159,176,177,178,178,179,180,181,182,183 + !BYTE $A7 + !BYTE $A9 + !BYTE $99 + !BYTE $AA + !BYTE $9B + !BYTE $AB + !BYTE $AC + !BYTE $AE + !BYTE $AF + !BYTE $9F + !BYTE $B0 + !BYTE $B1 + !BYTE $B2 + !BYTE $B2 + !BYTE $B3 + !BYTE $B4 + !BYTE $B5 + !BYTE $B6 + !BYTE $B7 +; samplesrc/rogue.map.pla: 0117: byte = 184,168,186,188,190,173,192,193,195,196,197,197,214,198,199,200,201,202 + !BYTE $B8 + !BYTE $A8 + !BYTE $BA + !BYTE $BC + !BYTE $BE + !BYTE $AD + !BYTE $C0 + !BYTE $C1 + !BYTE $C3 + !BYTE $C4 + !BYTE $C5 + !BYTE $C5 + !BYTE $D6 + !BYTE $C6 + !BYTE $C7 + !BYTE $C8 + !BYTE $C9 + !BYTE $CA +; samplesrc/rogue.map.pla: 0118: byte = 204,185,205,187,206,189,208,191,210,194,212,213,214,215,216,217,218,219,220 + !BYTE $CC + !BYTE $B9 + !BYTE $CD + !BYTE $BB + !BYTE $CE + !BYTE $BD + !BYTE $D0 + !BYTE $BF + !BYTE $D2 + !BYTE $C2 + !BYTE $D4 + !BYTE $D5 + !BYTE $D6 + !BYTE $D7 + !BYTE $D8 + !BYTE $D9 + !BYTE $DA + !BYTE $DB + !BYTE $DC +; samplesrc/rogue.map.pla: 0119: +; samplesrc/rogue.map.pla: 0120: byte[beampts] vispix = 1 +_D038 ; vispix = 1 + !BYTE $01 + !FILL $EF +; samplesrc/rogue.map.pla: 0121: +; samplesrc/rogue.map.pla: 0122: const rowshift = 6 + ; rowshift = 6 +; samplesrc/rogue.map.pla: 0123: const maprows = 64 + ; maprows = 64 +; samplesrc/rogue.map.pla: 0124: const mapcols = 64 + ; mapcols = 64 +; samplesrc/rogue.map.pla: 0125: const mapsize = maprows*mapcols + ; mapsize = 4096 +; samplesrc/rogue.map.pla: 0126: +; samplesrc/rogue.map.pla: 0127: const WALL_TILE = '#' + ; WALL_TILE = 35 +; samplesrc/rogue.map.pla: 0128: const FLOOR_TILE = '.' + ; FLOOR_TILE = 46 +; samplesrc/rogue.map.pla: 0129: const TORCH_TILE = '*' + ; TORCH_TILE = 42 +; samplesrc/rogue.map.pla: 0130: const PIT_TILE = ' ' + ; PIT_TILE = 32 +; samplesrc/rogue.map.pla: 0131: const DOOR_TILE = '+' + ; DOOR_TILE = 43 +; samplesrc/rogue.map.pla: 0132: const LOCKED_TILE = '%' + ; LOCKED_TILE = 37 +; samplesrc/rogue.map.pla: 0133: const WATER1_TILE = '>' + ; WATER1_TILE = 62 +; samplesrc/rogue.map.pla: 0134: const WATER2_TILE = '<' + ; WATER2_TILE = 60 +; samplesrc/rogue.map.pla: 0135: const KEY_TILE = ',' + ; KEY_TILE = 44 +; samplesrc/rogue.map.pla: 0136: const RAFT_TILE = '@' + ; RAFT_TILE = 64 +; samplesrc/rogue.map.pla: 0137: const GOLD_TILE = '$' + ; GOLD_TILE = 36 +; samplesrc/rogue.map.pla: 0138: const FOOD_TILE = '&' + ; FOOD_TILE = 38 +; samplesrc/rogue.map.pla: 0139: const ENTER_TILE = '-' + ; ENTER_TILE = 45 +; samplesrc/rogue.map.pla: 0140: const EXIT_TILE = '=' + ; EXIT_TILE = 61 +; samplesrc/rogue.map.pla: 0141: const OPAQUE_TILE = $01 + ; OPAQUE_TILE = 1 +; samplesrc/rogue.map.pla: 0142: const VIEWED_TILE = $80 + ; VIEWED_TILE = 128 +; samplesrc/rogue.map.pla: 0143: const LIT_TILE = $80 + ; LIT_TILE = 128 +; samplesrc/rogue.map.pla: 0144: const INV_TILE = $3F + ; INV_TILE = 63 +; samplesrc/rogue.map.pla: 0145: const MAP_TILE = $7F + ; MAP_TILE = 127 +; samplesrc/rogue.map.pla: 0146: +; samplesrc/rogue.map.pla: 0147: byte catacomb = "LEVEL0" +_D039 ; catacomb = "LEVEL0" + !BYTE $06 + !BYTE $4C,$45,$56,$45,$4C,$30 +; samplesrc/rogue.map.pla: 0148: word map, viewmap +_D040 !FILL 2 ; map, viewmap +_D041 !FILL 2 ; viewmap +; samplesrc/rogue.map.pla: 0149: +; samplesrc/rogue.map.pla: 0150: const xcentr = 20 + ; xcentr = 20 +; samplesrc/rogue.map.pla: 0151: const ycentr = 12 + ; ycentr = 12 +; samplesrc/rogue.map.pla: 0152: const scrnwidth = 40 + ; scrnwidth = 40 +; samplesrc/rogue.map.pla: 0153: const scrnheight = 22 + ; scrnheight = 22 +; samplesrc/rogue.map.pla: 0154: +; samplesrc/rogue.map.pla: 0155: // +; samplesrc/rogue.map.pla: 0156: // Screen buffer +; samplesrc/rogue.map.pla: 0157: // +; samplesrc/rogue.map.pla: 0158: +; samplesrc/rogue.map.pla: 0159: byte[scrnheight * scrnwidth] screenbuffer +_D042 !FILL 880 ; screenbuffer +; samplesrc/rogue.map.pla: 0160: +; samplesrc/rogue.map.pla: 0161: // +; samplesrc/rogue.map.pla: 0162: // Buffer to void checks in octant caster +; samplesrc/rogue.map.pla: 0163: // +; samplesrc/rogue.map.pla: 0164: +; samplesrc/rogue.map.pla: 0165: byte[scrnwidth] linebuffer +_D043 !FILL 40 ; linebuffer +; samplesrc/rogue.map.pla: 0166: +; samplesrc/rogue.map.pla: 0167: word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +_F001 !WORD _D043 +_F002 !WORD _D043 +_F003 !WORD _D043 +_F004 !WORD _D043 +_F005 !WORD _D043 +; samplesrc/rogue.map.pla: 0168: word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +_F006 !WORD _D043 +_F007 !WORD _D043 +_F008 !WORD _D043 +_F009 !WORD _D043 +_F010 !WORD _D043 +; samplesrc/rogue.map.pla: 0169: +; samplesrc/rogue.map.pla: 0170: word[scrnheight] screen +_D044 !FILL 44 ; screen +; samplesrc/rogue.map.pla: 0171: +; samplesrc/rogue.map.pla: 0172: word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +_F011 !WORD _D043 +_F012 !WORD _D043 +_F013 !WORD _D043 +_F014 !WORD _D043 +_F015 !WORD _D043 +; samplesrc/rogue.map.pla: 0173: word = @linebuffer, @linebuffer, @linebuffer, @linebuffer, @linebuffer +_F016 !WORD _D043 +_F017 !WORD _D043 +_F018 !WORD _D043 +_F019 !WORD _D043 +_F020 !WORD _D043 +; samplesrc/rogue.map.pla: 0174: +; samplesrc/rogue.map.pla: 0175: // +; samplesrc/rogue.map.pla: 0176: // Visisble screen row addresses +; samplesrc/rogue.map.pla: 0177: // +; samplesrc/rogue.map.pla: 0178: +; samplesrc/rogue.map.pla: 0179: word[] viscreen +_D045 ; viscreen +; samplesrc/rogue.map.pla: 0180: word = $400, $480, $500, $580, $600, $680, $700, $780 + !WORD $0400 + !WORD $0480 + !WORD $0500 + !WORD $0580 + !WORD $0600 + !WORD $0680 + !WORD $0700 + !WORD $0780 +; samplesrc/rogue.map.pla: 0181: word = $428, $4A8, $528, $5A8, $628, $6A8, $728, $7A8 + !WORD $0428 + !WORD $04A8 + !WORD $0528 + !WORD $05A8 + !WORD $0628 + !WORD $06A8 + !WORD $0728 + !WORD $07A8 +; samplesrc/rogue.map.pla: 0182: word = $450, $4D0, $550, $5D0, $650, $6D0, $750, @linebuffer // $7D0 + !WORD $0450 + !WORD $04D0 + !WORD $0550 + !WORD $05D0 + !WORD $0650 + !WORD $06D0 + !WORD $0750 +_F021 !WORD _D043 +; samplesrc/rogue.map.pla: 0183: +; samplesrc/rogue.map.pla: 0184: // +; samplesrc/rogue.map.pla: 0185: // Load map - levels 0 to 9 +; samplesrc/rogue.map.pla: 0186: // +; samplesrc/rogue.map.pla: 0187: +; samplesrc/rogue.map.pla: 0188: export def loadmap(level) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; level -> [0] +_C000 ; loadmap() +; samplesrc/rogue.map.pla: 0189: byte mapref, row, l + ; mapref -> [2] + ; row -> [3] + ; l -> [4] +; samplesrc/rogue.map.pla: 0190: +; samplesrc/rogue.map.pla: 0191: // +; samplesrc/rogue.map.pla: 0192: // Init the view map +; samplesrc/rogue.map.pla: 0193: // +; samplesrc/rogue.map.pla: 0194: if not viewmap + !BYTE $58,$05,$01 ; ENTER 5,1 +; samplesrc/rogue.map.pla: 0195: viewmap = heapalloc(mapsize) +; samplesrc/rogue.map.pla: 0196: fin + !BYTE $6A ; LAW _D041+0 +_F022 !WORD _D041+0 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X014 +_F023 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F024 !WORD _D041+0 +_B001 +_B002 +; samplesrc/rogue.map.pla: 0197: memset(viewmap, $A0A0, mapsize) +; samplesrc/rogue.map.pla: 0198: // +; samplesrc/rogue.map.pla: 0199: // Load catacomb map from file +; samplesrc/rogue.map.pla: 0200: // +; samplesrc/rogue.map.pla: 0201: if not map +; samplesrc/rogue.map.pla: 0202: map = heapalloc(mapsize) +; samplesrc/rogue.map.pla: 0203: fin + !BYTE $6A ; LAW _D041+0 +_F025 !WORD _D041+0 + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X017 +_F026 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F027 !WORD _D040+0 + !BYTE $4E ; BRTRU _B003 + !WORD _B003-* + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X014 +_F028 !WORD 0 + !BYTE $7A ; SAW _D040+0 +_F029 !WORD _D040+0 +_B003 +_B004 +; samplesrc/rogue.map.pla: 0204: memset(map, $2323, mapsize) // Solid walls +; samplesrc/rogue.map.pla: 0205: // +; samplesrc/rogue.map.pla: 0206: // Set level map and read it +; samplesrc/rogue.map.pla: 0207: // +; samplesrc/rogue.map.pla: 0208: catacomb[catacomb] = '0' + level +; samplesrc/rogue.map.pla: 0209: mapref = fileio:open(@catacomb) +; samplesrc/rogue.map.pla: 0210: if mapref +; samplesrc/rogue.map.pla: 0211: fileio:newline(mapref, $7F, $0D) +; samplesrc/rogue.map.pla: 0212: for row = 1 to maprows - 2 + !BYTE $6A ; LAW _D040+0 +_F030 !WORD _D040+0 + !BYTE $2C,$23,$23 ; CW 8995 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X017 +_F031 !WORD 0 + !BYTE $2A,$30 ; CB 48 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D039+0 +_F032 !WORD _D039+0 + !BYTE $B4 ; ADDAB _D039+0 +_F033 !WORD _D039+0 + !BYTE $70 ; SB + !BYTE $26 ; LA _D039+0 +_F034 !WORD _D039+0 + !BYTE $6A ; LAW _X029+14 +_F035 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$02 ; DLB [2] + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$7F ; CB 127 + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _X029+28 +_F036 !WORD 0+28 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$3E ; CB 62 + !BYTE $02 ; CN 1 +_B008 + !BYTE $6C,$03 ; DLB [3] +; samplesrc/rogue.map.pla: 0213: l = fileio:read(mapref, map + (row << 6) + 1, mapcols) +; samplesrc/rogue.map.pla: 0214: ^(map + (row << 6) + l) = WALL_TILE +; samplesrc/rogue.map.pla: 0215: next + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _D040+0 +_F037 !WORD _D040+0 + !BYTE $64,$03 ; LLB [3] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $2A,$40 ; CB 64 + !BYTE $6A ; LAW _X029+18 +_F038 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $74,$04 ; SLB [4] + !BYTE $2A,$23 ; CB 35 + !BYTE $6A ; LAW _D040+0 +_F039 !WORD _D040+0 + !BYTE $64,$03 ; LLB [3] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B009 + !BYTE $A4 ; INCBRLE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$03 ; SLB [3] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0216: fileio:close(mapref) +; samplesrc/rogue.map.pla: 0217: return TRUE + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X029+16 +_F040 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $20 ; MINUS ONE + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/rogue.map.pla: 0218: fin +_B005 +_B006 +; samplesrc/rogue.map.pla: 0219: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/rogue.map.pla: 0220: end +; samplesrc/rogue.map.pla: 0221: +; samplesrc/rogue.map.pla: 0222: // +; samplesrc/rogue.map.pla: 0223: // Tile access to map +; samplesrc/rogue.map.pla: 0224: // +; samplesrc/rogue.map.pla: 0225: +; samplesrc/rogue.map.pla: 0226: export def getmaptile(xmap, ymap) + ; xmap -> [0] + ; ymap -> [2] +_C001 ; getmaptile() +; samplesrc/rogue.map.pla: 0227: return ^(map + (ymap << rowshift) + xmap) + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $6A ; LAW _D040+0 +_F041 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/rogue.map.pla: 0228: end +; samplesrc/rogue.map.pla: 0229: +; samplesrc/rogue.map.pla: 0230: export def setmaptile(xmap, ymap, tile)#0 + ; xmap -> [0] + ; ymap -> [2] + ; tile -> [4] +_C002 ; setmaptile() +; samplesrc/rogue.map.pla: 0231: word imap + ; imap -> [6] +; samplesrc/rogue.map.pla: 0232: +; samplesrc/rogue.map.pla: 0233: imap = (ymap << rowshift) + xmap + !BYTE $58,$08,$03 ; ENTER 8,3 +; samplesrc/rogue.map.pla: 0234: ^(map + imap) = tile +; samplesrc/rogue.map.pla: 0235: if ^(viewmap + imap) <> $A0 +; samplesrc/rogue.map.pla: 0236: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0237: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D040+0 +_F042 !WORD _D040+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D041+0 +_F043 !WORD _D041+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B010 + !WORD _B010-* + !BYTE $66,$04 ; LLW [4] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F044 !WORD _D041+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $70 ; SB +_B010 +_B011 +; samplesrc/rogue.map.pla: 0238: end + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/rogue.map.pla: 0239: +; samplesrc/rogue.map.pla: 0240: export def updtmaptile(xmap, ymap, tile)#0 + ; xmap -> [0] + ; ymap -> [2] + ; tile -> [4] +_C003 ; updtmaptile() +; samplesrc/rogue.map.pla: 0241: word imap + ; imap -> [6] +; samplesrc/rogue.map.pla: 0242: +; samplesrc/rogue.map.pla: 0243: imap = (ymap << rowshift) + xmap + !BYTE $58,$08,$03 ; ENTER 8,3 +; samplesrc/rogue.map.pla: 0244: ^(map + imap) = (^(map + imap) & LIT_TILE) | tile +; samplesrc/rogue.map.pla: 0245: if ^(viewmap + imap) <> $A0 +; samplesrc/rogue.map.pla: 0246: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0247: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D040+0 +_F045 !WORD _D040+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $66,$04 ; LLW [4] + !BYTE $96 ; OR + !BYTE $6A ; LAW _D040+0 +_F046 !WORD _D040+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D041+0 +_F047 !WORD _D041+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B012 + !WORD _B012-* + !BYTE $66,$04 ; LLW [4] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F048 !WORD _D041+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $70 ; SB +_B012 +_B013 +; samplesrc/rogue.map.pla: 0248: end + !BYTE $5A,$08 ; LEAVE 8 +; samplesrc/rogue.map.pla: 0249: +; samplesrc/rogue.map.pla: 0250: // +; samplesrc/rogue.map.pla: 0251: // Light torches in map +; samplesrc/rogue.map.pla: 0252: // +; samplesrc/rogue.map.pla: 0253: +; samplesrc/rogue.map.pla: 0254: export def lighttorches#0 +_C004 ; lighttorches() +; samplesrc/rogue.map.pla: 0255: word imap, tmap, rowmap + ; imap -> [0] + ; tmap -> [2] + ; rowmap -> [4] +; samplesrc/rogue.map.pla: 0256: byte xmap, ymap, xt, yt + ; xmap -> [6] + ; ymap -> [7] + ; xt -> [8] + ; yt -> [9] +; samplesrc/rogue.map.pla: 0257: +; samplesrc/rogue.map.pla: 0258: for ymap = 1 to maprows - 2 + !BYTE $58,$0A,$00 ; ENTER 10,0 + !BYTE $2A,$3E ; CB 62 + !BYTE $02 ; CN 1 +_B015 + !BYTE $6C,$07 ; DLB [7] +; samplesrc/rogue.map.pla: 0259: rowmap = map + (ymap << rowshift) +; samplesrc/rogue.map.pla: 0260: for xmap = 1 to mapcols - 2 + !BYTE $6A ; LAW _D040+0 +_F049 !WORD _D040+0 + !BYTE $64,$07 ; LLB [7] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $76,$04 ; SLW [4] + !BYTE $2A,$3E ; CB 62 + !BYTE $02 ; CN 1 +_B018 + !BYTE $6C,$06 ; DLB [6] +; samplesrc/rogue.map.pla: 0261: imap = rowmap + xmap +; samplesrc/rogue.map.pla: 0262: if ^imap & MAP_TILE == TORCH_TILE +; samplesrc/rogue.map.pla: 0263: for yt = ymap - 1 to ymap + 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $B0,$06 ; ADDLB [6] + !BYTE $6E,$00 ; DLW [0] + !BYTE $60 ; LB + !BYTE $3C,$7F ; ANDI 127 + !BYTE $2A,$2A ; CB 42 + !BYTE $24 ; BRNE _B020 + !WORD _B020-* + !BYTE $64,$07 ; LLB [7] + !BYTE $8C ; INCR + !BYTE $64,$07 ; LLB [7] + !BYTE $8E ; DECR + !BYTE $A0 ; BRGT _B022 + !WORD _B022-* +_B023 + !BYTE $6C,$09 ; DLB [9] +; samplesrc/rogue.map.pla: 0264: imap = map + (yt << rowshift) +; samplesrc/rogue.map.pla: 0265: for xt = xmap - 1 to xmap + 1 + !BYTE $6A ; LAW _D040+0 +_F050 !WORD _D040+0 + !BYTE $64,$09 ; LLB [9] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$06 ; LLB [6] + !BYTE $8C ; INCR + !BYTE $64,$06 ; LLB [6] + !BYTE $8E ; DECR + !BYTE $A0 ; BRGT _B025 + !WORD _B025-* +_B026 + !BYTE $6C,$08 ; DLB [8] +; samplesrc/rogue.map.pla: 0266: tmap = imap + xt +; samplesrc/rogue.map.pla: 0267: ^tmap = ^tmap | LIT_TILE +; samplesrc/rogue.map.pla: 0268: next + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $6E,$02 ; DLW [2] + !BYTE $60 ; LB + !BYTE $3E,$80 ; ORI 128 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB +_B027 + !BYTE $A4 ; INCBRLE _B026 + !WORD _B026-* +_B025 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0269: next +_B024 + !BYTE $A4 ; INCBRLE _B023 + !WORD _B023-* +_B022 + !BYTE $74,$09 ; SLB [9] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0270: fin +_B020 +_B021 +; samplesrc/rogue.map.pla: 0271: next +_B019 + !BYTE $A4 ; INCBRLE _B018 + !WORD _B018-* +_B017 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0272: if not (ymap & 7) +; samplesrc/rogue.map.pla: 0273: putc('.') +; samplesrc/rogue.map.pla: 0274: fin + !BYTE $64,$07 ; LLB [7] + !BYTE $3C,$07 ; ANDI 7 + !BYTE $4E ; BRTRU _B028 + !WORD _B028-* + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F051 !WORD 0 +_B028 +_B029 +; samplesrc/rogue.map.pla: 0275: next +_B016 + !BYTE $A4 ; INCBRLE _B015 + !WORD _B015-* +_B014 + !BYTE $74,$07 ; SLB [7] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0276: end + !BYTE $5A,$0A ; LEAVE 10 +; samplesrc/rogue.map.pla: 0277: +; samplesrc/rogue.map.pla: 0278: // +; samplesrc/rogue.map.pla: 0279: // Animate tiles in map +; samplesrc/rogue.map.pla: 0280: // +; samplesrc/rogue.map.pla: 0281: +; samplesrc/rogue.map.pla: 0282: export def animate(tile) + ; tile -> [0] +_C005 ; animate() +; samplesrc/rogue.map.pla: 0283: if animseq + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rogue.map.pla: 0284: when tile & MAP_TILE + !BYTE $68 ; LAB _D033+0 +_F052 !WORD _D033+0 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B033-* +; samplesrc/rogue.map.pla: 0285: is TORCH_TILE +_B034 +; samplesrc/rogue.map.pla: 0286: tile = 'X' +; samplesrc/rogue.map.pla: 0287: break + !BYTE $2A,$58 ; CB 88 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +; samplesrc/rogue.map.pla: 0288: is WATER1_TILE +_B035 +; samplesrc/rogue.map.pla: 0289: tile = '(' +; samplesrc/rogue.map.pla: 0290: break + !BYTE $2A,$28 ; CB 40 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +; samplesrc/rogue.map.pla: 0291: is WATER2_TILE +_B036 +; samplesrc/rogue.map.pla: 0292: tile = ')' +; samplesrc/rogue.map.pla: 0293: break + !BYTE $2A,$29 ; CB 41 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +; samplesrc/rogue.map.pla: 0294: wend + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +_B033 + !BYTE $03 ; CASEBLOCK + !WORD $002A + !WORD _B034-* + !WORD $003C + !WORD _B036-* + !WORD $003E + !WORD _B035-* +_B032 +; samplesrc/rogue.map.pla: 0295: else + !BYTE $50 ; BRNCH _B031 + !WORD _B031-* +_B030 +; samplesrc/rogue.map.pla: 0296: when tile & MAP_TILE + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $52 ; SEL + !WORD _B038-* +; samplesrc/rogue.map.pla: 0297: is WATER1_TILE +_B039 +; samplesrc/rogue.map.pla: 0298: tile = ')' +; samplesrc/rogue.map.pla: 0299: break + !BYTE $2A,$29 ; CB 41 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +; samplesrc/rogue.map.pla: 0300: is WATER2_TILE +_B040 +; samplesrc/rogue.map.pla: 0301: tile = '(' +; samplesrc/rogue.map.pla: 0302: break + !BYTE $2A,$28 ; CB 40 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +; samplesrc/rogue.map.pla: 0303: wend + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +_B038 + !BYTE $02 ; CASEBLOCK + !WORD $003C + !WORD _B040-* + !WORD $003E + !WORD _B039-* +_B037 +; samplesrc/rogue.map.pla: 0304: fin +_B031 +; samplesrc/rogue.map.pla: 0305: return tile & INV_TILE + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$3F ; ANDI 63 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.map.pla: 0306: end +; samplesrc/rogue.map.pla: 0307: +; samplesrc/rogue.map.pla: 0308: // +; samplesrc/rogue.map.pla: 0309: // Draw the map. Return 0 if any light visible, 1 if in complete darkness +; samplesrc/rogue.map.pla: 0310: // +; samplesrc/rogue.map.pla: 0311: +; samplesrc/rogue.map.pla: 0312: export def drawmap(xorg, yorg, viewfield, viewdir, lightdist, viewdist) + ; xorg -> [0] + ; yorg -> [2] + ; viewfield -> [4] + ; viewdir -> [6] + ; lightdist -> [8] + ; viewdist -> [10] +_C006 ; drawmap() +; samplesrc/rogue.map.pla: 0313: byte l, dist, tile, adjtile, occluded, darkness + ; l -> [12] + ; dist -> [13] + ; tile -> [14] + ; adjtile -> [15] + ; occluded -> [16] + ; darkness -> [17] +; samplesrc/rogue.map.pla: 0314: word ymap, xmap, imap, o + ; ymap -> [18] + ; xmap -> [20] + ; imap -> [22] + ; o -> [24] +; samplesrc/rogue.map.pla: 0315: byte yscr, xscr + ; yscr -> [26] + ; xscr -> [27] +; samplesrc/rogue.map.pla: 0316: +; samplesrc/rogue.map.pla: 0317: if viewdist > beamdepth + !BYTE $58,$1C,$06 ; ENTER 28,6 +; samplesrc/rogue.map.pla: 0318: viewdist = beamdepth +; samplesrc/rogue.map.pla: 0319: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $2A,$17 ; CB 23 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B041 + !WORD _B041-* + !BYTE $2A,$17 ; CB 23 + !BYTE $76,$0A ; SLW [10] +_B041 +_B042 +; samplesrc/rogue.map.pla: 0320: if lightdist > viewdist +; samplesrc/rogue.map.pla: 0321: lightdist = viewdist +; samplesrc/rogue.map.pla: 0322: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $66,$0A ; LLW [10] + !BYTE $76,$08 ; SLW [8] +_B043 +_B044 +; samplesrc/rogue.map.pla: 0323: // +; samplesrc/rogue.map.pla: 0324: // Clear screen +; samplesrc/rogue.map.pla: 0325: // +; samplesrc/rogue.map.pla: 0326: memset(@screenbuffer, $A0A0, scrnheight * scrnwidth) +; samplesrc/rogue.map.pla: 0327: // +; samplesrc/rogue.map.pla: 0328: // Draw background map if in light +; samplesrc/rogue.map.pla: 0329: // +; samplesrc/rogue.map.pla: 0330: darkness = 1 +; samplesrc/rogue.map.pla: 0331: imap = (yorg << rowshift) + xorg +; samplesrc/rogue.map.pla: 0332: if lightdist or ^(map + imap) & LIT_TILE +; samplesrc/rogue.map.pla: 0333: // +; samplesrc/rogue.map.pla: 0334: // Update current spot in viewmap +; samplesrc/rogue.map.pla: 0335: // +; samplesrc/rogue.map.pla: 0336: ^(viewmap + imap) = ^(map + imap) | VIEWED_TILE +; samplesrc/rogue.map.pla: 0337: // +; samplesrc/rogue.map.pla: 0338: // Draw the viewmap +; samplesrc/rogue.map.pla: 0339: // +; samplesrc/rogue.map.pla: 0340: xmap = xorg - xcentr +; samplesrc/rogue.map.pla: 0341: if xmap < 0 +; samplesrc/rogue.map.pla: 0342: l = mapcols +; samplesrc/rogue.map.pla: 0343: xscr = -xmap +; samplesrc/rogue.map.pla: 0344: xmap = 0 +; samplesrc/rogue.map.pla: 0345: else + !BYTE $26 ; LA _D042+0 +_F053 !WORD _D042+0 + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2C,$70,$03 ; CW 880 + !BYTE $54 ; CALL _X017 +_F054 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $74,$11 ; SLB [17] + !BYTE $66,$02 ; LLW [2] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $AE ; BROR _B045 + !WORD _B045-* + !BYTE $6A ; LAW _D040+0 +_F055 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 +_B045 + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $6A ; LAW _D040+0 +_F056 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F057 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $3A,$14 ; SUBI 20 + !BYTE $6E,$14 ; DLW [20] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B048 + !WORD _B048-* + !BYTE $2A,$40 ; CB 64 + !BYTE $74,$0C ; SLB [12] + !BYTE $66,$14 ; LLW [20] + !BYTE $90 ; NEG + !BYTE $74,$1B ; SLB [27] + !BYTE $00 ; CN 0 + !BYTE $76,$14 ; SLW [20] + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B048 +; samplesrc/rogue.map.pla: 0346: l = mapcols - xmap +; samplesrc/rogue.map.pla: 0347: xscr = 0 +; samplesrc/rogue.map.pla: 0348: fin + !BYTE $2A,$40 ; CB 64 + !BYTE $66,$14 ; LLW [20] + !BYTE $84 ; SUB + !BYTE $74,$0C ; SLB [12] + !BYTE $00 ; CN 0 + !BYTE $74,$1B ; SLB [27] +_B049 +; samplesrc/rogue.map.pla: 0349: if xscr + l > scrnwidth +; samplesrc/rogue.map.pla: 0350: l = scrnwidth - xscr +; samplesrc/rogue.map.pla: 0351: fin + !BYTE $64,$1B ; LLB [27] + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $2A,$28 ; CB 40 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B050 + !WORD _B050-* + !BYTE $2A,$28 ; CB 40 + !BYTE $64,$1B ; LLB [27] + !BYTE $84 ; SUB + !BYTE $74,$0C ; SLB [12] +_B050 +_B051 +; samplesrc/rogue.map.pla: 0352: for yscr = 0 to scrnheight + !BYTE $2A,$16 ; CB 22 + !BYTE $00 ; CN 0 +_B053 + !BYTE $6C,$1A ; DLB [26] +; samplesrc/rogue.map.pla: 0353: ymap = yscr - ycentr + yorg +; samplesrc/rogue.map.pla: 0354: if ymap >= 0 and ymap < maprows +; samplesrc/rogue.map.pla: 0355: memcpy(screen[yscr] + xscr, viewmap + (ymap << rowshift) + xmap, l) +; samplesrc/rogue.map.pla: 0356: fin + !BYTE $64,$1A ; LLB [26] + !BYTE $3A,$0C ; SUBI 12 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $6E,$12 ; DLW [18] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B055 + !WORD _B055-* + !BYTE $66,$12 ; LLW [18] + !BYTE $2A,$40 ; CB 64 + !BYTE $46 ; ISLT +_B055 + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $26 ; LA _D044+0 +_F058 !WORD _D044+0 + !BYTE $B8,$1A ; IDXLB [26] + !BYTE $62 ; LW + !BYTE $B0,$1B ; ADDLB [27] + !BYTE $6A ; LAW _D041+0 +_F059 !WORD _D041+0 + !BYTE $66,$12 ; LLW [18] + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $B2,$14 ; ADDLW [20] + !BYTE $64,$0C ; LLB [12] + !BYTE $54 ; CALL _X018 +_F060 !WORD 0 +_B056 +_B057 +; samplesrc/rogue.map.pla: 0357: next +_B054 + !BYTE $A4 ; INCBRLE _B053 + !WORD _B053-* +_B052 + !BYTE $74,$1A ; SLB [26] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0358: darkness = 0 +; samplesrc/rogue.map.pla: 0359: fin + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B046 +_B047 +; samplesrc/rogue.map.pla: 0360: // +; samplesrc/rogue.map.pla: 0361: // Draw visible octants +; samplesrc/rogue.map.pla: 0362: // +; samplesrc/rogue.map.pla: 0363: for o = viewdir - viewfield - 1 to viewdir + viewfield + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $A0 ; BRGT _B058 + !WORD _B058-* +_B059 + !BYTE $6E,$18 ; DLW [24] +; samplesrc/rogue.map.pla: 0364: dist = lightdist + 1 +; samplesrc/rogue.map.pla: 0365: occluded = 1 +; samplesrc/rogue.map.pla: 0366: when o & 7 + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR + !BYTE $74,$0D ; SLB [13] + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $66,$18 ; LLW [24] + !BYTE $3C,$07 ; ANDI 7 + !BYTE $52 ; SEL + !WORD _B062-* +; samplesrc/rogue.map.pla: 0367: is 0 +_B063 +; samplesrc/rogue.map.pla: 0368: // +; samplesrc/rogue.map.pla: 0369: // Run through lit octant beam points +; samplesrc/rogue.map.pla: 0370: // +; samplesrc/rogue.map.pla: 0371: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F061 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B064 + !WORD _B064-* +_B065 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0372: // +; samplesrc/rogue.map.pla: 0373: // Check parent visiblity +; samplesrc/rogue.map.pla: 0374: // +; samplesrc/rogue.map.pla: 0375: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0376: imap = ((yorg - ybeam[l]) << rowshift) + xorg + xbeam[l] +; samplesrc/rogue.map.pla: 0377: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0378: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0379: // +; samplesrc/rogue.map.pla: 0380: // The view stops here +; samplesrc/rogue.map.pla: 0381: // +; samplesrc/rogue.map.pla: 0382: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0383: else + !BYTE $26 ; LA _D038+0 +_F062 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F063 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B067 + !WORD _B067-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F064 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F065 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F066 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B069 + !WORD _B069-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F067 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B070 + !WORD _B070-* +_B069 +; samplesrc/rogue.map.pla: 0384: // +; samplesrc/rogue.map.pla: 0385: // This tile is transparent +; samplesrc/rogue.map.pla: 0386: // +; samplesrc/rogue.map.pla: 0387: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0388: // +; samplesrc/rogue.map.pla: 0389: // Check adjacent tile for opaqueness - improves wall display +; samplesrc/rogue.map.pla: 0390: // +; samplesrc/rogue.map.pla: 0391: adjtile = ^(map + imap + 1) & INV_TILE +; samplesrc/rogue.map.pla: 0392: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0393: ^(viewmap + imap + 1) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0394: screen.[ycentr-ybeam[l], xcentr+xbeam[l]+1] = adjtile +; samplesrc/rogue.map.pla: 0395: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F068 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F069 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F070 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F071 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F072 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F073 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B071 +_B072 +; samplesrc/rogue.map.pla: 0396: fin +_B070 +; samplesrc/rogue.map.pla: 0397: // +; samplesrc/rogue.map.pla: 0398: // Update view +; samplesrc/rogue.map.pla: 0399: // +; samplesrc/rogue.map.pla: 0400: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0401: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0402: screen.[ycentr-ybeam[l], xcentr+xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0403: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F074 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B073 + !WORD _B073-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F075 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F076 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F077 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F078 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B073 +_B074 +; samplesrc/rogue.map.pla: 0404: else + !BYTE $50 ; BRNCH _B068 + !WORD _B068-* +_B067 +; samplesrc/rogue.map.pla: 0405: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0406: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F079 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B068 +; samplesrc/rogue.map.pla: 0407: next +_B066 + !BYTE $A4 ; INCBRLE _B065 + !WORD _B065-* +_B064 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0408: // +; samplesrc/rogue.map.pla: 0409: // Run through visible octant beam points +; samplesrc/rogue.map.pla: 0410: // +; samplesrc/rogue.map.pla: 0411: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F080 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F081 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B075 + !WORD _B075-* +_B076 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0412: // +; samplesrc/rogue.map.pla: 0413: // Check parent visiblity +; samplesrc/rogue.map.pla: 0414: // +; samplesrc/rogue.map.pla: 0415: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0416: imap = ((yorg - ybeam[l]) << rowshift) + xorg + xbeam[l] +; samplesrc/rogue.map.pla: 0417: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0418: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0419: // +; samplesrc/rogue.map.pla: 0420: // The view stops here +; samplesrc/rogue.map.pla: 0421: // +; samplesrc/rogue.map.pla: 0422: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0423: else + !BYTE $26 ; LA _D038+0 +_F082 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F083 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B078 + !WORD _B078-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F084 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F085 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F086 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F087 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B080 +; samplesrc/rogue.map.pla: 0424: // +; samplesrc/rogue.map.pla: 0425: // This tile is transparent +; samplesrc/rogue.map.pla: 0426: // +; samplesrc/rogue.map.pla: 0427: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0428: occluded = 0 +; samplesrc/rogue.map.pla: 0429: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F088 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B081 +; samplesrc/rogue.map.pla: 0430: // +; samplesrc/rogue.map.pla: 0431: // If the tile is in light, update view +; samplesrc/rogue.map.pla: 0432: // +; samplesrc/rogue.map.pla: 0433: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0434: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0435: screen.[ycentr-ybeam[l], xcentr+xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0436: darkness = 0 +; samplesrc/rogue.map.pla: 0437: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F089 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F090 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F091 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F092 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F093 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B082 +_B083 +; samplesrc/rogue.map.pla: 0438: else + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +_B078 +; samplesrc/rogue.map.pla: 0439: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0440: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F094 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B079 +; samplesrc/rogue.map.pla: 0441: // +; samplesrc/rogue.map.pla: 0442: // Advance beam distance +; samplesrc/rogue.map.pla: 0443: // +; samplesrc/rogue.map.pla: 0444: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0445: if occluded +; samplesrc/rogue.map.pla: 0446: // +; samplesrc/rogue.map.pla: 0447: // Beam fully occluded +; samplesrc/rogue.map.pla: 0448: // +; samplesrc/rogue.map.pla: 0449: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F095 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B084 + !WORD _B084-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $50 ; BRNCH _B075 + !WORD _B075-* +; samplesrc/rogue.map.pla: 0450: fin +_B086 +_B087 +; samplesrc/rogue.map.pla: 0451: // +; samplesrc/rogue.map.pla: 0452: // Update distance +; samplesrc/rogue.map.pla: 0453: // +; samplesrc/rogue.map.pla: 0454: occluded = 1 +; samplesrc/rogue.map.pla: 0455: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0456: fin + !BYTE $74,$0D ; SLB [13] +_B084 +_B085 +; samplesrc/rogue.map.pla: 0457: next +_B077 + !BYTE $A4 ; INCBRLE _B076 + !WORD _B076-* +_B075 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0458: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0459: is 1 +_B088 +; samplesrc/rogue.map.pla: 0460: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F096 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B089 + !WORD _B089-* +_B090 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0461: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0462: imap = ((yorg - xbeam[l]) << rowshift) + xorg + ybeam[l] +; samplesrc/rogue.map.pla: 0463: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0464: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0465: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0466: else + !BYTE $26 ; LA _D038+0 +_F097 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F098 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B092 + !WORD _B092-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F099 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F100 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F101 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F102 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B095 + !WORD _B095-* +_B094 +; samplesrc/rogue.map.pla: 0467: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0468: adjtile = ^(map + imap - mapcols) & INV_TILE +; samplesrc/rogue.map.pla: 0469: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0470: ^(viewmap + imap - mapcols) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0471: screen.[ycentr-xbeam[l]-1, xcentr+ybeam[l]] = adjtile +; samplesrc/rogue.map.pla: 0472: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F103 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F104 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $3A,$40 ; SUBI 64 + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F105 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $3A,$40 ; SUBI 64 + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F106 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F107 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F108 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B096 +_B097 +; samplesrc/rogue.map.pla: 0473: fin +_B095 +; samplesrc/rogue.map.pla: 0474: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0475: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0476: screen.[ycentr-xbeam[l], xcentr+ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0477: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F109 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B098 + !WORD _B098-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F110 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F111 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F112 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F113 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B098 +_B099 +; samplesrc/rogue.map.pla: 0478: else + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +_B092 +; samplesrc/rogue.map.pla: 0479: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0480: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F114 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B093 +; samplesrc/rogue.map.pla: 0481: next +_B091 + !BYTE $A4 ; INCBRLE _B090 + !WORD _B090-* +_B089 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0482: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F115 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F116 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B100 + !WORD _B100-* +_B101 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0483: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0484: imap = ((yorg - xbeam[l]) << rowshift) + xorg + ybeam[l] +; samplesrc/rogue.map.pla: 0485: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0486: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0487: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0488: else + !BYTE $26 ; LA _D038+0 +_F117 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F118 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B103 + !WORD _B103-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F119 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F120 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F121 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F122 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B106 + !WORD _B106-* +_B105 +; samplesrc/rogue.map.pla: 0489: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0490: occluded = 0 +; samplesrc/rogue.map.pla: 0491: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F123 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B106 +; samplesrc/rogue.map.pla: 0492: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0493: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0494: screen.[ycentr-xbeam[l], xcentr+ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0495: darkness = 0 +; samplesrc/rogue.map.pla: 0496: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F124 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F125 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F126 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F127 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F128 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B107 +_B108 +; samplesrc/rogue.map.pla: 0497: else + !BYTE $50 ; BRNCH _B104 + !WORD _B104-* +_B103 +; samplesrc/rogue.map.pla: 0498: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0499: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F129 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B104 +; samplesrc/rogue.map.pla: 0500: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0501: if occluded +; samplesrc/rogue.map.pla: 0502: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F130 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B109 + !WORD _B109-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B111 + !WORD _B111-* + !BYTE $50 ; BRNCH _B100 + !WORD _B100-* +; samplesrc/rogue.map.pla: 0503: fin +_B111 +_B112 +; samplesrc/rogue.map.pla: 0504: occluded = 1 +; samplesrc/rogue.map.pla: 0505: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0506: fin + !BYTE $74,$0D ; SLB [13] +_B109 +_B110 +; samplesrc/rogue.map.pla: 0507: next +_B102 + !BYTE $A4 ; INCBRLE _B101 + !WORD _B101-* +_B100 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0508: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0509: is 2 +_B113 +; samplesrc/rogue.map.pla: 0510: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F131 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B114 + !WORD _B114-* +_B115 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0511: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0512: imap = ((yorg + xbeam[l]) << rowshift) + xorg + ybeam[l] +; samplesrc/rogue.map.pla: 0513: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0514: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0515: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0516: else + !BYTE $26 ; LA _D038+0 +_F132 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F133 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B117 + !WORD _B117-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F134 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F135 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F136 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B119 + !WORD _B119-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F137 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B120 + !WORD _B120-* +_B119 +; samplesrc/rogue.map.pla: 0517: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0518: adjtile = ^(map + imap + mapcols) & INV_TILE +; samplesrc/rogue.map.pla: 0519: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0520: ^(viewmap + imap + mapcols) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0521: screen.[ycentr+xbeam[l]+1, xcentr+ybeam[l]] = adjtile +; samplesrc/rogue.map.pla: 0522: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F138 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F139 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $38,$40 ; ADDI 64 + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B121 + !WORD _B121-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F140 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $38,$40 ; ADDI 64 + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F141 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F142 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F143 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B121 +_B122 +; samplesrc/rogue.map.pla: 0523: fin +_B120 +; samplesrc/rogue.map.pla: 0524: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0525: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0526: screen.[ycentr+xbeam[l], xcentr+ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0527: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F144 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B123 + !WORD _B123-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F145 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F146 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F147 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F148 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B123 +_B124 +; samplesrc/rogue.map.pla: 0528: else + !BYTE $50 ; BRNCH _B118 + !WORD _B118-* +_B117 +; samplesrc/rogue.map.pla: 0529: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0530: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F149 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B118 +; samplesrc/rogue.map.pla: 0531: next +_B116 + !BYTE $A4 ; INCBRLE _B115 + !WORD _B115-* +_B114 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0532: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F150 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F151 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B125 + !WORD _B125-* +_B126 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0533: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0534: imap = ((yorg + xbeam[l]) << rowshift) + xorg + ybeam[l] +; samplesrc/rogue.map.pla: 0535: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0536: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0537: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0538: else + !BYTE $26 ; LA _D038+0 +_F152 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F153 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B128 + !WORD _B128-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F154 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F155 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F156 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B130 + !WORD _B130-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F157 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B131 + !WORD _B131-* +_B130 +; samplesrc/rogue.map.pla: 0539: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0540: occluded = 0 +; samplesrc/rogue.map.pla: 0541: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F158 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B131 +; samplesrc/rogue.map.pla: 0542: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0543: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0544: screen.[ycentr+xbeam[l], xcentr+ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0545: darkness = 0 +; samplesrc/rogue.map.pla: 0546: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B132 + !WORD _B132-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F159 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F160 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F161 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F162 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F163 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B132 +_B133 +; samplesrc/rogue.map.pla: 0547: else + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B128 +; samplesrc/rogue.map.pla: 0548: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0549: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F164 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B129 +; samplesrc/rogue.map.pla: 0550: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0551: if occluded +; samplesrc/rogue.map.pla: 0552: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F165 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B134 + !WORD _B134-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B136 + !WORD _B136-* + !BYTE $50 ; BRNCH _B125 + !WORD _B125-* +; samplesrc/rogue.map.pla: 0553: fin +_B136 +_B137 +; samplesrc/rogue.map.pla: 0554: occluded = 1 +; samplesrc/rogue.map.pla: 0555: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0556: fin + !BYTE $74,$0D ; SLB [13] +_B134 +_B135 +; samplesrc/rogue.map.pla: 0557: next +_B127 + !BYTE $A4 ; INCBRLE _B126 + !WORD _B126-* +_B125 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0558: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0559: is 3 +_B138 +; samplesrc/rogue.map.pla: 0560: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F166 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B139 + !WORD _B139-* +_B140 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0561: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0562: imap = ((yorg + ybeam[l]) << rowshift) + xorg + xbeam[l] +; samplesrc/rogue.map.pla: 0563: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0564: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0565: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0566: else + !BYTE $26 ; LA _D038+0 +_F167 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F168 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B142 + !WORD _B142-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F169 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F170 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F171 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B144 + !WORD _B144-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F172 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B145 + !WORD _B145-* +_B144 +; samplesrc/rogue.map.pla: 0567: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0568: adjtile = ^(map + imap + 1) & INV_TILE +; samplesrc/rogue.map.pla: 0569: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0570: ^(viewmap + imap + 1) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0571: screen.[ycentr+ybeam[l], xcentr+xbeam[l]+1] = adjtile +; samplesrc/rogue.map.pla: 0572: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F173 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F174 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B146 + !WORD _B146-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F175 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F176 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F177 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F178 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B146 +_B147 +; samplesrc/rogue.map.pla: 0573: fin +_B145 +; samplesrc/rogue.map.pla: 0574: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0575: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0576: screen.[ycentr+ybeam[l], xcentr+xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0577: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F179 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B148 + !WORD _B148-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F180 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F181 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F182 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F183 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B148 +_B149 +; samplesrc/rogue.map.pla: 0578: else + !BYTE $50 ; BRNCH _B143 + !WORD _B143-* +_B142 +; samplesrc/rogue.map.pla: 0579: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0580: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F184 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B143 +; samplesrc/rogue.map.pla: 0581: next +_B141 + !BYTE $A4 ; INCBRLE _B140 + !WORD _B140-* +_B139 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0582: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F185 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F186 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B150 + !WORD _B150-* +_B151 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0583: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0584: imap = ((yorg + ybeam[l]) << rowshift) + xorg + xbeam[l] +; samplesrc/rogue.map.pla: 0585: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0586: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0587: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0588: else + !BYTE $26 ; LA _D038+0 +_F187 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F188 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B153 + !WORD _B153-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F189 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F190 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F191 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B155 + !WORD _B155-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F192 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B156 + !WORD _B156-* +_B155 +; samplesrc/rogue.map.pla: 0589: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0590: occluded = 0 +; samplesrc/rogue.map.pla: 0591: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F193 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B156 +; samplesrc/rogue.map.pla: 0592: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0593: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0594: screen.[ycentr+ybeam[l], xcentr+xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0595: darkness = 0 +; samplesrc/rogue.map.pla: 0596: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B157 + !WORD _B157-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F194 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F195 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F196 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F197 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F198 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B157 +_B158 +; samplesrc/rogue.map.pla: 0597: else + !BYTE $50 ; BRNCH _B154 + !WORD _B154-* +_B153 +; samplesrc/rogue.map.pla: 0598: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0599: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F199 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B154 +; samplesrc/rogue.map.pla: 0600: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0601: if occluded +; samplesrc/rogue.map.pla: 0602: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F200 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B159 + !WORD _B159-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $50 ; BRNCH _B150 + !WORD _B150-* +; samplesrc/rogue.map.pla: 0603: fin +_B161 +_B162 +; samplesrc/rogue.map.pla: 0604: occluded = 1 +; samplesrc/rogue.map.pla: 0605: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0606: fin + !BYTE $74,$0D ; SLB [13] +_B159 +_B160 +; samplesrc/rogue.map.pla: 0607: next +_B152 + !BYTE $A4 ; INCBRLE _B151 + !WORD _B151-* +_B150 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0608: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0609: is 4 +_B163 +; samplesrc/rogue.map.pla: 0610: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F201 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B164 + !WORD _B164-* +_B165 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0611: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0612: imap = ((yorg + ybeam[l]) << rowshift) + xorg - xbeam[l] +; samplesrc/rogue.map.pla: 0613: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0614: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0615: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0616: else + !BYTE $26 ; LA _D038+0 +_F202 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F203 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B167 + !WORD _B167-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F204 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F205 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F206 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B169 + !WORD _B169-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F207 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +_B169 +; samplesrc/rogue.map.pla: 0617: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0618: adjtile = ^(map + imap - 1) & INV_TILE +; samplesrc/rogue.map.pla: 0619: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0620: ^(viewmap + imap - 1) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0621: screen.[ycentr+ybeam[l], xcentr-xbeam[l]-1] = adjtile +; samplesrc/rogue.map.pla: 0622: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F208 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F209 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8E ; DECR + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B171 + !WORD _B171-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F210 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8E ; DECR + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F211 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F212 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F213 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B171 +_B172 +; samplesrc/rogue.map.pla: 0623: fin +_B170 +; samplesrc/rogue.map.pla: 0624: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0625: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0626: screen.[ycentr+ybeam[l], xcentr-xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0627: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F214 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B173 + !WORD _B173-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F215 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F216 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F217 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F218 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B173 +_B174 +; samplesrc/rogue.map.pla: 0628: else + !BYTE $50 ; BRNCH _B168 + !WORD _B168-* +_B167 +; samplesrc/rogue.map.pla: 0629: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0630: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F219 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B168 +; samplesrc/rogue.map.pla: 0631: next +_B166 + !BYTE $A4 ; INCBRLE _B165 + !WORD _B165-* +_B164 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0632: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F220 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F221 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B175 + !WORD _B175-* +_B176 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0633: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0634: imap = ((yorg + ybeam[l]) << rowshift) + xorg - xbeam[l] +; samplesrc/rogue.map.pla: 0635: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0636: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0637: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0638: else + !BYTE $26 ; LA _D038+0 +_F222 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F223 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B178 + !WORD _B178-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F224 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F225 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F226 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B180 + !WORD _B180-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F227 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B181 + !WORD _B181-* +_B180 +; samplesrc/rogue.map.pla: 0639: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0640: occluded = 0 +; samplesrc/rogue.map.pla: 0641: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F228 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B181 +; samplesrc/rogue.map.pla: 0642: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0643: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0644: screen.[ycentr+ybeam[l], xcentr-xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0645: darkness = 0 +; samplesrc/rogue.map.pla: 0646: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B182 + !WORD _B182-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F229 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F230 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F231 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F232 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F233 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B182 +_B183 +; samplesrc/rogue.map.pla: 0647: else + !BYTE $50 ; BRNCH _B179 + !WORD _B179-* +_B178 +; samplesrc/rogue.map.pla: 0648: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0649: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F234 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B179 +; samplesrc/rogue.map.pla: 0650: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0651: if occluded +; samplesrc/rogue.map.pla: 0652: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F235 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B184 + !WORD _B184-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B186 + !WORD _B186-* + !BYTE $50 ; BRNCH _B175 + !WORD _B175-* +; samplesrc/rogue.map.pla: 0653: fin +_B186 +_B187 +; samplesrc/rogue.map.pla: 0654: occluded = 1 +; samplesrc/rogue.map.pla: 0655: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0656: fin + !BYTE $74,$0D ; SLB [13] +_B184 +_B185 +; samplesrc/rogue.map.pla: 0657: next +_B177 + !BYTE $A4 ; INCBRLE _B176 + !WORD _B176-* +_B175 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0658: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0659: is 5 +_B188 +; samplesrc/rogue.map.pla: 0660: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F236 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B189 + !WORD _B189-* +_B190 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0661: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0662: imap = ((yorg + xbeam[l]) << rowshift) + xorg - ybeam[l] +; samplesrc/rogue.map.pla: 0663: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0664: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0665: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0666: else + !BYTE $26 ; LA _D038+0 +_F237 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F238 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B192 + !WORD _B192-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F239 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F240 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F241 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B194 + !WORD _B194-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F242 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B195 + !WORD _B195-* +_B194 +; samplesrc/rogue.map.pla: 0667: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0668: adjtile = ^(map + imap + mapcols) & INV_TILE +; samplesrc/rogue.map.pla: 0669: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0670: ^(viewmap + imap + mapcols) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0671: screen.[ycentr+xbeam[l]+1, xcentr-ybeam[l]] = adjtile +; samplesrc/rogue.map.pla: 0672: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F243 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F244 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $38,$40 ; ADDI 64 + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B196 + !WORD _B196-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F245 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $38,$40 ; ADDI 64 + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F246 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F247 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F248 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B196 +_B197 +; samplesrc/rogue.map.pla: 0673: fin +_B195 +; samplesrc/rogue.map.pla: 0674: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0675: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0676: screen.[ycentr+xbeam[l], xcentr-ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0677: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F249 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B198 + !WORD _B198-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F250 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F251 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F252 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F253 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B198 +_B199 +; samplesrc/rogue.map.pla: 0678: else + !BYTE $50 ; BRNCH _B193 + !WORD _B193-* +_B192 +; samplesrc/rogue.map.pla: 0679: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0680: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F254 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B193 +; samplesrc/rogue.map.pla: 0681: next +_B191 + !BYTE $A4 ; INCBRLE _B190 + !WORD _B190-* +_B189 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0682: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F255 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F256 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B200 + !WORD _B200-* +_B201 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0683: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0684: imap = ((yorg + xbeam[l]) << rowshift) + xorg - ybeam[l] +; samplesrc/rogue.map.pla: 0685: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0686: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0687: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0688: else + !BYTE $26 ; LA _D038+0 +_F257 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F258 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B203 + !WORD _B203-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F259 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F260 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F261 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B205 + !WORD _B205-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F262 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +_B205 +; samplesrc/rogue.map.pla: 0689: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0690: occluded = 0 +; samplesrc/rogue.map.pla: 0691: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F263 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B206 +; samplesrc/rogue.map.pla: 0692: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0693: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0694: screen.[ycentr+xbeam[l], xcentr-ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0695: darkness = 0 +; samplesrc/rogue.map.pla: 0696: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B207 + !WORD _B207-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F264 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F265 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F266 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F267 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F268 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B207 +_B208 +; samplesrc/rogue.map.pla: 0697: else + !BYTE $50 ; BRNCH _B204 + !WORD _B204-* +_B203 +; samplesrc/rogue.map.pla: 0698: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0699: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F269 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B204 +; samplesrc/rogue.map.pla: 0700: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0701: if occluded +; samplesrc/rogue.map.pla: 0702: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F270 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B209 + !WORD _B209-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B211 + !WORD _B211-* + !BYTE $50 ; BRNCH _B200 + !WORD _B200-* +; samplesrc/rogue.map.pla: 0703: fin +_B211 +_B212 +; samplesrc/rogue.map.pla: 0704: occluded = 1 +; samplesrc/rogue.map.pla: 0705: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0706: fin + !BYTE $74,$0D ; SLB [13] +_B209 +_B210 +; samplesrc/rogue.map.pla: 0707: next +_B202 + !BYTE $A4 ; INCBRLE _B201 + !WORD _B201-* +_B200 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0708: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0709: is 6 +_B213 +; samplesrc/rogue.map.pla: 0710: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F271 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B214 + !WORD _B214-* +_B215 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0711: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0712: imap = ((yorg - xbeam[l]) << rowshift) + xorg - ybeam[l] +; samplesrc/rogue.map.pla: 0713: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0714: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0715: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0716: else + !BYTE $26 ; LA _D038+0 +_F272 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F273 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B217 + !WORD _B217-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F274 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F275 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F276 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B219 + !WORD _B219-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F277 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B220 + !WORD _B220-* +_B219 +; samplesrc/rogue.map.pla: 0717: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0718: adjtile = ^(map + imap - mapcols) & INV_TILE +; samplesrc/rogue.map.pla: 0719: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0720: ^(viewmap + imap - mapcols) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0721: screen.[ycentr-xbeam[l]-1, xcentr-ybeam[l]] = adjtile +; samplesrc/rogue.map.pla: 0722: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F278 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F279 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $3A,$40 ; SUBI 64 + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B221 + !WORD _B221-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F280 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $3A,$40 ; SUBI 64 + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F281 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F282 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F283 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B221 +_B222 +; samplesrc/rogue.map.pla: 0723: fin +_B220 +; samplesrc/rogue.map.pla: 0724: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0725: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0726: screen.[ycentr-xbeam[l], xcentr-ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0727: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F284 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B223 + !WORD _B223-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F285 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F286 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F287 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F288 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B223 +_B224 +; samplesrc/rogue.map.pla: 0728: else + !BYTE $50 ; BRNCH _B218 + !WORD _B218-* +_B217 +; samplesrc/rogue.map.pla: 0729: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0730: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F289 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B218 +; samplesrc/rogue.map.pla: 0731: next +_B216 + !BYTE $A4 ; INCBRLE _B215 + !WORD _B215-* +_B214 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0732: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F290 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F291 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B225 + !WORD _B225-* +_B226 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0733: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0734: imap = ((yorg - xbeam[l]) << rowshift) + xorg - ybeam[l] +; samplesrc/rogue.map.pla: 0735: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0736: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0737: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0738: else + !BYTE $26 ; LA _D038+0 +_F292 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F293 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B228 + !WORD _B228-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D035+0 +_F294 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D036+0 +_F295 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F296 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B230 + !WORD _B230-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F297 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +_B230 +; samplesrc/rogue.map.pla: 0739: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0740: occluded = 0 +; samplesrc/rogue.map.pla: 0741: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F298 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B231 +; samplesrc/rogue.map.pla: 0742: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0743: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0744: screen.[ycentr-xbeam[l], xcentr-ybeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0745: darkness = 0 +; samplesrc/rogue.map.pla: 0746: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B232 + !WORD _B232-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F299 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F300 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F301 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D035+0 +_F302 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D036+0 +_F303 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B232 +_B233 +; samplesrc/rogue.map.pla: 0747: else + !BYTE $50 ; BRNCH _B229 + !WORD _B229-* +_B228 +; samplesrc/rogue.map.pla: 0748: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0749: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F304 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B229 +; samplesrc/rogue.map.pla: 0750: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0751: if occluded +; samplesrc/rogue.map.pla: 0752: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F305 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B234 + !WORD _B234-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B236 + !WORD _B236-* + !BYTE $50 ; BRNCH _B225 + !WORD _B225-* +; samplesrc/rogue.map.pla: 0753: fin +_B236 +_B237 +; samplesrc/rogue.map.pla: 0754: occluded = 1 +; samplesrc/rogue.map.pla: 0755: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0756: fin + !BYTE $74,$0D ; SLB [13] +_B234 +_B235 +; samplesrc/rogue.map.pla: 0757: next +_B227 + !BYTE $A4 ; INCBRLE _B226 + !WORD _B226-* +_B225 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0758: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0759: is 7 +_B238 +; samplesrc/rogue.map.pla: 0760: for l = 1 to dbeam[lightdist] + !BYTE $26 ; LA _D034+0 +_F306 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B239 + !WORD _B239-* +_B240 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0761: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0762: imap = ((yorg - ybeam[l]) << rowshift) + xorg - xbeam[l] +; samplesrc/rogue.map.pla: 0763: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0764: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0765: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0766: else + !BYTE $26 ; LA _D038+0 +_F307 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F308 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B242 + !WORD _B242-* + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F309 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F310 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D040+0 +_F311 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B244 + !WORD _B244-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F312 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B245 + !WORD _B245-* +_B244 +; samplesrc/rogue.map.pla: 0767: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0768: adjtile = ^(map + imap - 1) & INV_TILE +; samplesrc/rogue.map.pla: 0769: if adjtile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0770: ^(viewmap + imap - 1) = adjtile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0771: screen.[ycentr-ybeam[l], xcentr-xbeam[l]-1] = adjtile +; samplesrc/rogue.map.pla: 0772: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F313 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D040+0 +_F314 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8E ; DECR + !BYTE $60 ; LB + !BYTE $3C,$3F ; ANDI 63 + !BYTE $6C,$0F ; DLB [15] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B246 + !WORD _B246-* + !BYTE $64,$0F ; LLB [15] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F315 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $8E ; DECR + !BYTE $70 ; SB + !BYTE $64,$0F ; LLB [15] + !BYTE $26 ; LA _D044+0 +_F316 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F317 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F318 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B246 +_B247 +; samplesrc/rogue.map.pla: 0773: fin +_B245 +; samplesrc/rogue.map.pla: 0774: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0775: if tile <> PIT_TILE +; samplesrc/rogue.map.pla: 0776: screen.[ycentr-ybeam[l], xcentr-xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0777: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F319 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B248 + !WORD _B248-* + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F320 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F321 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F322 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F323 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B248 +_B249 +; samplesrc/rogue.map.pla: 0778: else + !BYTE $50 ; BRNCH _B243 + !WORD _B243-* +_B242 +; samplesrc/rogue.map.pla: 0779: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0780: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F324 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B243 +; samplesrc/rogue.map.pla: 0781: next +_B241 + !BYTE $A4 ; INCBRLE _B240 + !WORD _B240-* +_B239 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0782: for l = dbeam[lightdist]+1 to dbeam[viewdist] + !BYTE $26 ; LA _D034+0 +_F325 !WORD _D034+0 + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $26 ; LA _D034+0 +_F326 !WORD _D034+0 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B250 + !WORD _B250-* +_B251 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rogue.map.pla: 0783: imap = ((yorg - ybeam[l]) << rowshift) + xorg - xbeam[l] +; samplesrc/rogue.map.pla: 0784: if vispix[vbeam[l]] +; samplesrc/rogue.map.pla: 0785: tile = ^(map + imap) +; samplesrc/rogue.map.pla: 0786: if tile & OPAQUE_TILE +; samplesrc/rogue.map.pla: 0787: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0788: else + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D036+0 +_F327 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $0C ; CN 6 + !BYTE $9A ; SHL + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $26 ; LA _D035+0 +_F328 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $26 ; LA _D038+0 +_F329 !WORD _D038+0 + !BYTE $26 ; LA _D037+0 +_F330 !WORD _D037+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B253 + !WORD _B253-* + !BYTE $6A ; LAW _D040+0 +_F331 !WORD _D040+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $60 ; LB + !BYTE $6C,$0E ; DLB [14] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B255 + !WORD _B255-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F332 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B256 + !WORD _B256-* +_B255 +; samplesrc/rogue.map.pla: 0789: vispix[l] = 1 +; samplesrc/rogue.map.pla: 0790: occluded = 0 +; samplesrc/rogue.map.pla: 0791: fin + !BYTE $02 ; CN 1 + !BYTE $26 ; LA _D038+0 +_F333 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] +_B256 +; samplesrc/rogue.map.pla: 0792: if tile & LIT_TILE +; samplesrc/rogue.map.pla: 0793: ^(viewmap + imap) = tile | VIEWED_TILE +; samplesrc/rogue.map.pla: 0794: screen.[ycentr-ybeam[l], xcentr-xbeam[l]] = animate(tile) +; samplesrc/rogue.map.pla: 0795: darkness = 0 +; samplesrc/rogue.map.pla: 0796: fin + !BYTE $64,$0E ; LLB [14] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B257 + !WORD _B257-* + !BYTE $64,$0E ; LLB [14] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D041+0 +_F334 !WORD _D041+0 + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $54 ; CALL _C005 +_F335 !WORD _C005 + !BYTE $26 ; LA _D044+0 +_F336 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $26 ; LA _D036+0 +_F337 !WORD _D036+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $26 ; LA _D035+0 +_F338 !WORD _D035+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] +_B257 +_B258 +; samplesrc/rogue.map.pla: 0797: else + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +_B253 +; samplesrc/rogue.map.pla: 0798: vispix[l] = 0 +; samplesrc/rogue.map.pla: 0799: fin + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D038+0 +_F339 !WORD _D038+0 + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $70 ; SB +_B254 +; samplesrc/rogue.map.pla: 0800: if l == dbeam[dist] +; samplesrc/rogue.map.pla: 0801: if occluded +; samplesrc/rogue.map.pla: 0802: break + !BYTE $64,$0C ; LLB [12] + !BYTE $26 ; LA _D034+0 +_F340 !WORD _D034+0 + !BYTE $B0,$0D ; ADDLB [13] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B259 + !WORD _B259-* + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B261 + !WORD _B261-* + !BYTE $50 ; BRNCH _B250 + !WORD _B250-* +; samplesrc/rogue.map.pla: 0803: fin +_B261 +_B262 +; samplesrc/rogue.map.pla: 0804: occluded = 1 +; samplesrc/rogue.map.pla: 0805: dist++ + !BYTE $02 ; CN 1 + !BYTE $74,$10 ; SLB [16] + !BYTE $64,$0D ; LLB [13] + !BYTE $8C ; INCR +; samplesrc/rogue.map.pla: 0806: fin + !BYTE $74,$0D ; SLB [13] +_B259 +_B260 +; samplesrc/rogue.map.pla: 0807: next +_B252 + !BYTE $A4 ; INCBRLE _B251 + !WORD _B251-* +_B250 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0808: break + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +; samplesrc/rogue.map.pla: 0809: wend + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +_B062 + !BYTE $08 ; CASEBLOCK + !WORD $0000 + !WORD _B063-* + !WORD $0001 + !WORD _B088-* + !WORD $0002 + !WORD _B113-* + !WORD $0003 + !WORD _B138-* + !WORD $0004 + !WORD _B163-* + !WORD $0005 + !WORD _B188-* + !WORD $0006 + !WORD _B213-* + !WORD $0007 + !WORD _B238-* +_B061 +; samplesrc/rogue.map.pla: 0810: next +_B060 + !BYTE $A4 ; INCBRLE _B059 + !WORD _B059-* +_B058 + !BYTE $76,$18 ; SLW [24] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0811: animseq = animseq ^ 1 // Update animation sequence +; samplesrc/rogue.map.pla: 0812: return darkness + !BYTE $68 ; LAB _D033+0 +_F341 !WORD _D033+0 + !BYTE $02 ; CN 1 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D033+0 +_F342 !WORD _D033+0 + !BYTE $64,$11 ; LLB [17] + !BYTE $5A,$1C ; LEAVE 28 +; samplesrc/rogue.map.pla: 0813: end +; samplesrc/rogue.map.pla: 0814: +; samplesrc/rogue.map.pla: 0815: // +; samplesrc/rogue.map.pla: 0816: // Draw other entities +; samplesrc/rogue.map.pla: 0817: // +; samplesrc/rogue.map.pla: 0818: +; samplesrc/rogue.map.pla: 0819: export def drawvisentity(xofst, yofst, tile)#0 + ; xofst -> [0] + ; yofst -> [2] + ; tile -> [4] +_C007 ; drawvisentity() +; samplesrc/rogue.map.pla: 0820: if screen.[ycentr+yofst, xcentr+xofst] < $80 + !BYTE $58,$06,$03 ; ENTER 6,3 +; samplesrc/rogue.map.pla: 0821: screen.[ycentr+yofst, xcentr+xofst] = tile +; samplesrc/rogue.map.pla: 0822: fin + !BYTE $26 ; LA _D044+0 +_F343 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B263 + !WORD _B263-* + !BYTE $66,$04 ; LLW [4] + !BYTE $26 ; LA _D044+0 +_F344 !WORD _D044+0 + !BYTE $18 ; CN 12 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$14 ; CB 20 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B263 +_B264 +; samplesrc/rogue.map.pla: 0823: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/rogue.map.pla: 0824: +; samplesrc/rogue.map.pla: 0825: export def drawplayer(tile)#0 + ; tile -> [0] +_C008 ; drawplayer() +; samplesrc/rogue.map.pla: 0826: screen.[ycentr, xcentr] = tile | $80 + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rogue.map.pla: 0827: end + !BYTE $66,$00 ; LLW [0] + !BYTE $3E,$80 ; ORI 128 + !BYTE $6A ; LAW _D044+24 +_F345 !WORD _D044+24 + !BYTE $38,$14 ; ADDI 20 + !BYTE $70 ; SB + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rogue.map.pla: 0828: +; samplesrc/rogue.map.pla: 0829: // +; samplesrc/rogue.map.pla: 0830: // Update visible screen with screen buffer +; samplesrc/rogue.map.pla: 0831: // +; samplesrc/rogue.map.pla: 0832: +; samplesrc/rogue.map.pla: 0833: export def updatescreen#0 +_C009 ; updatescreen() +; samplesrc/rogue.map.pla: 0834: byte row + ; row -> [0] +; samplesrc/rogue.map.pla: 0835: +; samplesrc/rogue.map.pla: 0836: for row = 0 to scrnheight - 2 + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $2A,$14 ; CB 20 + !BYTE $00 ; CN 0 +_B266 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rogue.map.pla: 0837: memcpy(viscreen[row], screen[row], 40) +; samplesrc/rogue.map.pla: 0838: next + !BYTE $26 ; LA _D045+0 +_F346 !WORD _D045+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $26 ; LA _D044+0 +_F347 !WORD _D044+0 + !BYTE $B8,$00 ; IDXLB [0] + !BYTE $62 ; LW + !BYTE $2A,$28 ; CB 40 + !BYTE $54 ; CALL _X018 +_F348 !WORD 0 +_B267 + !BYTE $A4 ; INCBRLE _B266 + !WORD _B266-* +_B265 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0839: end + !BYTE $5A,$01 ; LEAVE 1 +; samplesrc/rogue.map.pla: 0840: +; samplesrc/rogue.map.pla: 0841: // +; samplesrc/rogue.map.pla: 0842: // Print title page +; samplesrc/rogue.map.pla: 0843: // +; samplesrc/rogue.map.pla: 0844: +; samplesrc/rogue.map.pla: 0845: conio:home() +_INIT +; samplesrc/rogue.map.pla: 0846: while ^titlestr + !BYTE $6A ; LAW _X028+6 +_F349 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B270 + !WORD _B270-* +_B268 +; samplesrc/rogue.map.pla: 0847: puts(titlestr) +; samplesrc/rogue.map.pla: 0848: titlestr = titlestr + ^titlestr + 1 +; samplesrc/rogue.map.pla: 0849: loop + !BYTE $6A ; LAW _D032+0 +_F350 !WORD _D032+0 + !BYTE $54 ; CALL _X004 +_F351 !WORD 0 + !BYTE $6A ; LAW _D032+0 +_F352 !WORD _D032+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D032+0 +_F353 !WORD _D032+0 +_B270 + !BYTE $6A ; LAW _D032+0 +_F354 !WORD _D032+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B268 + !WORD _B268-* +_B269 +; samplesrc/rogue.map.pla: 0850: for titlestr = 0 to scrnheight - 1 + !BYTE $2A,$15 ; CB 21 + !BYTE $00 ; CN 0 +_B272 + !BYTE $7E ; DAW _D032+0 +_F355 !WORD _D032+0 +; samplesrc/rogue.map.pla: 0851: screen[titlestr] = @screenbuffer + titlestr * scrnwidth +; samplesrc/rogue.map.pla: 0852: next + !BYTE $26 ; LA _D042+0 +_F356 !WORD _D042+0 + !BYTE $6A ; LAW _D032+0 +_F357 !WORD _D032+0 + !BYTE $2A,$28 ; CB 40 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $26 ; LA _D044+0 +_F358 !WORD _D044+0 + !BYTE $BE ; IDXAW _D032+0 +_F359 !WORD _D032+0 + !BYTE $72 ; SW +_B273 + !BYTE $A4 ; INCBRLE _B272 + !WORD _B272-* +_B271 + !BYTE $7A ; SAW _D032+0 +_F360 !WORD _D032+0 + !BYTE $30 ; DROP +; samplesrc/rogue.map.pla: 0853: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 11 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F286-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F287-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F288-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F289-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F290-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F291-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F292-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F293-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F294-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F295-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F296-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F297-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F298-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F299-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F300-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F301-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F302-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F303-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F304-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F305-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F306-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F307-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F308-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F309-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F310-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F311-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F312-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F313-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F314-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F315-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F316-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F317-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F318-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F319-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F320-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F321-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F322-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F323-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F324-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F325-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F326-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F327-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F328-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F329-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F330-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F331-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F332-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F333-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F334-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F335-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F336-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F337-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F338-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F339-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F340-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F341-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F342-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F343-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F344-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F345-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F346-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F347-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F348-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F349-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F350-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F351-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F352-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F353-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F354-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F355-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F356-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F357-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F358-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F359-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F360-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: LOADMAP + !BYTE $CC,$CF,$C1,$C4,$CD,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C000 + ; DCI STRING: GETMAPTILE + !BYTE $C7,$C5,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C001 + ; DCI STRING: SETMAPTILE + !BYTE $D3,$C5,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C002 + ; DCI STRING: UPDTMAPTILE + !BYTE $D5,$D0,$C4,$D4,$CD,$C1,$D0,$D4,$C9,$CC,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C003 + ; DCI STRING: LIGHTTORCHES + !BYTE $CC,$C9,$C7,$C8,$D4,$D4,$CF,$D2,$C3,$C8,$C5,$53 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C004 + ; DCI STRING: ANIMATE + !BYTE $C1,$CE,$C9,$CD,$C1,$D4,$45 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + ; DCI STRING: DRAWMAP + !BYTE $C4,$D2,$C1,$D7,$CD,$C1,$50 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C006 + ; DCI STRING: DRAWVISENTITY + !BYTE $C4,$D2,$C1,$D7,$D6,$C9,$D3,$C5,$CE,$D4,$C9,$D4,$59 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C007 + ; DCI STRING: DRAWPLAYER + !BYTE $C4,$D2,$C1,$D7,$D0,$CC,$C1,$D9,$C5,$52 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C008 + ; DCI STRING: UPDATESCREEN + !BYTE $D5,$D0,$C4,$C1,$D4,$C5,$D3,$C3,$D2,$C5,$C5,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C009 + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/rpncalc.a b/src/samplesrc/rpncalc.a new file mode 100644 index 0000000..ec673c9 --- /dev/null +++ b/src/samplesrc/rpncalc.a @@ -0,0 +1,3233 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/rpncalc.pla: 0001: // +; samplesrc/rpncalc.pla: 0002: // Desktop RPN calculator +; samplesrc/rpncalc.pla: 0003: // +; samplesrc/rpncalc.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/rpncalc.pla: 0004: +; samplesrc/rpncalc.pla: 0005: include "inc/fpstr.plh" +; inc/fpstr.plh: 0001: import fpstr + ; DCI STRING: FPSTR + !BYTE $C6,$D0,$D3,$D4,$52 + ; FPSTR -> X028 +; inc/fpstr.plh: 0002: // +; inc/fpstr.plh: 0003: // String formatting bits +; inc/fpstr.plh: 0004: // +; inc/fpstr.plh: 0005: const FPSTR_FIXED = 1 // Fixed count of fractional digits + ; FPSTR_FIXED = 1 +; inc/fpstr.plh: 0006: const FPSTR_FLOAT = 0 // Floating count of fractional digits + ; FPSTR_FLOAT = 0 +; inc/fpstr.plh: 0007: const FPSTR_STRIP = 2 // Strip trailing fractional zeros + ; FPSTR_STRIP = 2 +; inc/fpstr.plh: 0008: const FPSTR_EXP = 4 // Force exponential format + ; FPSTR_EXP = 4 +; inc/fpstr.plh: 0009: const FPSTR_FLEX = 8 // Flexible switch to EXP format if over/underflow + ; FPSTR_FLEX = 8 +; inc/fpstr.plh: 0010: // +; inc/fpstr.plh: 0011: // Parse string into decrecord, return SANE conversion output +; inc/fpstr.plh: 0012: // +; inc/fpstr.plh: 0013: predef str2ext(str, ext)#1 + ; STR2EXT -> X029 +; inc/fpstr.plh: 0014: // +; inc/fpstr.plh: 0015: // Convert extended FP to string using , return string +; inc/fpstr.plh: 0016: // +; inc/fpstr.plh: 0017: predef ext2str(ext, str, intdigits, fracdigits, format)#1 + ; EXT2STR -> X030 +; inc/fpstr.plh: 0018: end +; samplesrc/rpncalc.pla: 0005: +; samplesrc/rpncalc.pla: 0006: include "inc/fpu.plh" +; inc/fpu.plh: 0001: import fpu + ; DCI STRING: FPU + !BYTE $C6,$D0,$55 + ; FPU -> X031 +; inc/fpu.plh: 0002: // +; inc/fpu.plh: 0003: // FPU register type +; inc/fpu.plh: 0004: // +; inc/fpu.plh: 0005: struc t_fpureg +; inc/fpu.plh: 0006: byte[10] _regdata + ; _regdata = 0 +; inc/fpu.plh: 0007: end + ; t_fpureg = 10 +; inc/fpu.plh: 0008: // +; inc/fpu.plh: 0009: // RPN Register indeces +; inc/fpu.plh: 0010: // +; inc/fpu.plh: 0011: const X_REG = 0 + ; X_REG = 0 +; inc/fpu.plh: 0012: const Y_REG = 1 + ; Y_REG = 1 +; inc/fpu.plh: 0013: const Z_REG = 2 + ; Z_REG = 2 +; inc/fpu.plh: 0014: const T_REG = 3 + ; T_REG = 3 +; inc/fpu.plh: 0015: // +; inc/fpu.plh: 0016: // Comparison results +; inc/fpu.plh: 0017: // +; inc/fpu.plh: 0018: const FPUCMPGT = $4040 // Greater Than + ; FPUCMPGT = 16448 +; inc/fpu.plh: 0019: const FPUCMPLT = $8080 // Less Than + ; FPUCMPLT = 32896 +; inc/fpu.plh: 0020: const FPUCMPEQ = $0002 // EQual + ; FPUCMPEQ = 2 +; inc/fpu.plh: 0021: const FPUCMPUN = $0101 // UNordered + ; FPUCMPUN = 257 +; inc/fpu.plh: 0022: // +; inc/fpu.plh: 0023: // Exceptions +; inc/fpu.plh: 0024: // +; inc/fpu.plh: 0025: const FPUINVALID = $01 + ; FPUINVALID = 1 +; inc/fpu.plh: 0026: const FPUUFLOW = $02 + ; FPUUFLOW = 2 +; inc/fpu.plh: 0027: const FPUOFLOW = $04 + ; FPUOFLOW = 4 +; inc/fpu.plh: 0028: const FPUDIVZER = $08 + ; FPUDIVZER = 8 +; inc/fpu.plh: 0029: const FPUINEXACT = $10 + ; FPUINEXACT = 16 +; inc/fpu.plh: 0030: // +; inc/fpu.plh: 0031: // FP type +; inc/fpu.plh: 0032: // +; inc/fpu.plh: 0033: const FPUSNAN = $00FC // -4: signaling NAN + ; FPUSNAN = 252 +; inc/fpu.plh: 0034: const FPUQNAN = $00FD // -3: quiet NAN + ; FPUQNAN = 253 +; inc/fpu.plh: 0035: const FPUINF = $00FE // -2: infinite + ; FPUINF = 254 +; inc/fpu.plh: 0036: const FPUZERO = $00FF // -1: zero + ; FPUZERO = 255 +; inc/fpu.plh: 0037: const FPUNORM = $0000 // 0: normal + ; FPUNORM = 0 +; inc/fpu.plh: 0038: const FPUDENORM = $0001 // 1: denormal + ; FPUDENORM = 1 +; inc/fpu.plh: 0039: const FPUNEG = $8000 + ; FPUNEG = 32768 +; inc/fpu.plh: 0040: // +; inc/fpu.plh: 0041: // FPU API +; inc/fpu.plh: 0042: // +; inc/fpu.plh: 0043: struc t_fpu +; inc/fpu.plh: 0044: word reset + ; reset = 0 +; inc/fpu.plh: 0045: word getEnv + ; getEnv = 2 +; inc/fpu.plh: 0046: word setEnv + ; setEnv = 4 +; inc/fpu.plh: 0047: word testExept + ; testExept = 6 +; inc/fpu.plh: 0048: word setExcept + ; setExcept = 8 +; inc/fpu.plh: 0049: word enterProc + ; enterProc = 10 +; inc/fpu.plh: 0050: word exitProc + ; exitProc = 12 +; inc/fpu.plh: 0051: word constPi + ; constPi = 14 +; inc/fpu.plh: 0052: word constE + ; constE = 16 +; inc/fpu.plh: 0053: word pushInt + ; pushInt = 18 +; inc/fpu.plh: 0054: word pushSgl + ; pushSgl = 20 +; inc/fpu.plh: 0055: word pushDbl + ; pushDbl = 22 +; inc/fpu.plh: 0056: word pushExt + ; pushExt = 24 +; inc/fpu.plh: 0057: word pushStr + ; pushStr = 26 +; inc/fpu.plh: 0058: word pullInt + ; pullInt = 28 +; inc/fpu.plh: 0059: word pullSgl + ; pullSgl = 30 +; inc/fpu.plh: 0060: word pullDbl + ; pullDbl = 32 +; inc/fpu.plh: 0061: word pullExt + ; pullExt = 34 +; inc/fpu.plh: 0062: word pullStr + ; pullStr = 36 +; inc/fpu.plh: 0063: word loadInt + ; loadInt = 38 +; inc/fpu.plh: 0064: word loadSgl + ; loadSgl = 40 +; inc/fpu.plh: 0065: word loadDbl + ; loadDbl = 42 +; inc/fpu.plh: 0066: word loadExt + ; loadExt = 44 +; inc/fpu.plh: 0067: word loadStr + ; loadStr = 46 +; inc/fpu.plh: 0068: word storInt + ; storInt = 48 +; inc/fpu.plh: 0069: word storSgl + ; storSgl = 50 +; inc/fpu.plh: 0070: word storDbl + ; storDbl = 52 +; inc/fpu.plh: 0071: word storExt + ; storExt = 54 +; inc/fpu.plh: 0072: word storStr + ; storStr = 56 +; inc/fpu.plh: 0073: word shiftUp + ; shiftUp = 58 +; inc/fpu.plh: 0074: word shiftDown // dropX + ; shiftDown = 60 +; inc/fpu.plh: 0075: word rotateUp + ; rotateUp = 62 +; inc/fpu.plh: 0076: word rotateDown + ; rotateDown = 64 +; inc/fpu.plh: 0077: word dupX + ; dupX = 66 +; inc/fpu.plh: 0078: word swapXY + ; swapXY = 68 +; inc/fpu.plh: 0079: word clearX + ; clearX = 70 +; inc/fpu.plh: 0080: word addXY + ; addXY = 72 +; inc/fpu.plh: 0081: word subXY + ; subXY = 74 +; inc/fpu.plh: 0082: word mulXY + ; mulXY = 76 +; inc/fpu.plh: 0083: word divXY + ; divXY = 78 +; inc/fpu.plh: 0084: word remXY + ; remXY = 80 +; inc/fpu.plh: 0085: word negX + ; negX = 82 +; inc/fpu.plh: 0086: word absX + ; absX = 84 +; inc/fpu.plh: 0087: word typeX + ; typeX = 86 +; inc/fpu.plh: 0088: word cmpXY + ; cmpXY = 88 +; inc/fpu.plh: 0089: word logbX + ; logbX = 90 +; inc/fpu.plh: 0090: word scalebXInt + ; scalebXInt = 92 +; inc/fpu.plh: 0091: word truncX + ; truncX = 94 +; inc/fpu.plh: 0092: word roundX + ; roundX = 96 +; inc/fpu.plh: 0093: word sqrtX + ; sqrtX = 98 +; inc/fpu.plh: 0094: word squareX + ; squareX = 100 +; inc/fpu.plh: 0095: word cosX + ; cosX = 102 +; inc/fpu.plh: 0096: word sinX + ; sinX = 104 +; inc/fpu.plh: 0097: word tanX + ; tanX = 106 +; inc/fpu.plh: 0098: word atanX + ; atanX = 108 +; inc/fpu.plh: 0099: word log2X + ; log2X = 110 +; inc/fpu.plh: 0100: word log21X + ; log21X = 112 +; inc/fpu.plh: 0101: word lnX + ; lnX = 114 +; inc/fpu.plh: 0102: word ln1X + ; ln1X = 116 +; inc/fpu.plh: 0103: word pow2X + ; pow2X = 118 +; inc/fpu.plh: 0104: word pow21X + ; pow21X = 120 +; inc/fpu.plh: 0105: word powEX + ; powEX = 122 +; inc/fpu.plh: 0106: word powE1X + ; powE1X = 124 +; inc/fpu.plh: 0107: word powE21X + ; powE21X = 126 +; inc/fpu.plh: 0108: word powXInt + ; powXInt = 128 +; inc/fpu.plh: 0109: word powXY + ; powXY = 130 +; inc/fpu.plh: 0110: word compXY + ; compXY = 132 +; inc/fpu.plh: 0111: word annuityXY + ; annuityXY = 134 +; inc/fpu.plh: 0112: word randNum + ; randNum = 136 +; inc/fpu.plh: 0113: end + ; t_fpu = 138 +; inc/fpu.plh: 0114: const dropX = shiftDown // Alias dropX and shiftDown + ; dropX = 60 +; inc/fpu.plh: 0115: end +; samplesrc/rpncalc.pla: 0006: +; samplesrc/rpncalc.pla: 0007: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X032 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; samplesrc/rpncalc.pla: 0007: +; samplesrc/rpncalc.pla: 0008: const displayWidth = 15 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; displayWidth = 15 +; samplesrc/rpncalc.pla: 0009: const displayDefFix = 6 + ; displayDefFix = 6 +; samplesrc/rpncalc.pla: 0010: const inputLen = displayWidth+1 + ; inputLen = 16 +; samplesrc/rpncalc.pla: 0011: const ZEROSTR = $3001 + ; ZEROSTR = 12289 +; samplesrc/rpncalc.pla: 0012: // +; samplesrc/rpncalc.pla: 0013: // Keypad structure +; samplesrc/rpncalc.pla: 0014: // +; samplesrc/rpncalc.pla: 0015: struc t_keypad +; samplesrc/rpncalc.pla: 0016: byte keychar + ; keychar = 0 +; samplesrc/rpncalc.pla: 0017: byte xpos + ; xpos = 1 +; samplesrc/rpncalc.pla: 0018: byte ypos + ; ypos = 2 +; samplesrc/rpncalc.pla: 0019: byte keystr[8] + ; keystr = 3 +; samplesrc/rpncalc.pla: 0020: end + ; t_keypad = 11 +; samplesrc/rpncalc.pla: 0021: struc t_keyinput +; samplesrc/rpncalc.pla: 0022: byte keyinfo[t_keypad] + ; keyinfo = 0 +; samplesrc/rpncalc.pla: 0023: word phandler + ; phandler = 11 +; samplesrc/rpncalc.pla: 0024: end + ; t_keyinput = 13 +; samplesrc/rpncalc.pla: 0025: predef delKey(pkey)#0, cmdKey(pkey)#0, dropKey(pkey)#0, clearKey(pkey)#0 +; samplesrc/rpncalc.pla: 0026: predef digitKey(pkey)#0, pointKey(pkey)#0, opKey(pkey)#0 +; samplesrc/rpncalc.pla: 0027: predef enterKey(pkey)#0, copyKey(pkey)#0, chsKey(pkey)#0, memKey(pkey)#0 +; samplesrc/rpncalc.pla: 0028: predef elemsKey(pkey)#0 +; samplesrc/rpncalc.pla: 0029: // +; samplesrc/rpncalc.pla: 0030: // Run state +; samplesrc/rpncalc.pla: 0031: // +; samplesrc/rpncalc.pla: 0032: byte quit = FALSE +_D045 ; quit = FALSE + !BYTE $00 +; samplesrc/rpncalc.pla: 0033: // +; samplesrc/rpncalc.pla: 0034: // Current input +; samplesrc/rpncalc.pla: 0035: // +; samplesrc/rpncalc.pla: 0036: byte inputStr[32] = "" +_D046 ; inputStr[32] = "" + !BYTE $00 + !FILL $1F +; samplesrc/rpncalc.pla: 0037: // +; samplesrc/rpncalc.pla: 0038: // Display format state +; samplesrc/rpncalc.pla: 0039: // +; samplesrc/rpncalc.pla: 0040: byte displayFix = displayDefFix +_D047 ; displayFix = displayDefFix + !BYTE $06 +; samplesrc/rpncalc.pla: 0041: byte displayInt = displayWidth - displayDefFix - 2 +_D048 ; displayInt = displayWidth - displayDefFix - 2 + !BYTE $07 +; samplesrc/rpncalc.pla: 0042: // +; samplesrc/rpncalc.pla: 0043: // Store/load memory +; samplesrc/rpncalc.pla: 0044: // +; samplesrc/rpncalc.pla: 0045: byte memory[10*t_fpureg] +_D049 !FILL 100 ; memory[10*t_fpureg] +; samplesrc/rpncalc.pla: 0046: // +; samplesrc/rpncalc.pla: 0047: // Key values +; samplesrc/rpncalc.pla: 0048: // +; samplesrc/rpncalc.pla: 0049: byte[t_keypad] keypad = $08, 0, 0, "" +_D050 ; keypad = $08, 0, 0, "" + !BYTE $08 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !FILL $07 +; samplesrc/rpncalc.pla: 0050: word = @delKey +_F000 !WORD _P000 +; samplesrc/rpncalc.pla: 0051: byte[t_keypad] = $1B, 0, 0, "" + !BYTE $1B + !BYTE $00 + !BYTE $00 + !BYTE $00 + !FILL $07 +; samplesrc/rpncalc.pla: 0052: word = @cmdKey +_F001 !WORD _P001 +; samplesrc/rpncalc.pla: 0053: byte[t_keypad] = '=', 0, 0, "" + !BYTE $3D + !BYTE $00 + !BYTE $00 + !BYTE $00 + !FILL $07 +; samplesrc/rpncalc.pla: 0054: word = @copyKey +_F002 !WORD _P008 +; samplesrc/rpncalc.pla: 0055: byte[t_keypad] = 'Z', 0, 0, "" + !BYTE $5A + !BYTE $00 + !BYTE $00 + !BYTE $00 + !FILL $07 +; samplesrc/rpncalc.pla: 0056: word = @clearKey +_F003 !WORD _P003 +; samplesrc/rpncalc.pla: 0057: byte[t_keypad] = '7', 3, 10, "[7]" + !BYTE $37 + !BYTE $03 + !BYTE $0A + !BYTE $03 + !BYTE $5B,$37,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0058: word = @digitKey +_F004 !WORD _P004 +; samplesrc/rpncalc.pla: 0059: byte[t_keypad] = '8', 7, 10, "[8]" + !BYTE $38 + !BYTE $07 + !BYTE $0A + !BYTE $03 + !BYTE $5B,$38,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0060: word = @digitKey +_F005 !WORD _P004 +; samplesrc/rpncalc.pla: 0061: byte[t_keypad] = '9', 11, 10, "[9]" + !BYTE $39 + !BYTE $0B + !BYTE $0A + !BYTE $03 + !BYTE $5B,$39,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0062: word = @digitKey +_F006 !WORD _P004 +; samplesrc/rpncalc.pla: 0063: byte[t_keypad] = '/', 15, 10, "[/]" + !BYTE $2F + !BYTE $0F + !BYTE $0A + !BYTE $03 + !BYTE $5B,$2F,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0064: word = @opKey +_F007 !WORD _P006 +; samplesrc/rpncalc.pla: 0065: byte[t_keypad] = '4', 3, 12, "[4]" + !BYTE $34 + !BYTE $03 + !BYTE $0C + !BYTE $03 + !BYTE $5B,$34,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0066: word = @digitKey +_F008 !WORD _P004 +; samplesrc/rpncalc.pla: 0067: byte[t_keypad] = '5', 7, 12, "[5]" + !BYTE $35 + !BYTE $07 + !BYTE $0C + !BYTE $03 + !BYTE $5B,$35,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0068: word = @digitKey +_F009 !WORD _P004 +; samplesrc/rpncalc.pla: 0069: byte[t_keypad] = '6', 11, 12, "[6]" + !BYTE $36 + !BYTE $0B + !BYTE $0C + !BYTE $03 + !BYTE $5B,$36,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0070: word = @digitKey +_F010 !WORD _P004 +; samplesrc/rpncalc.pla: 0071: byte[t_keypad] = '*', 15, 12, "[*]" + !BYTE $2A + !BYTE $0F + !BYTE $0C + !BYTE $03 + !BYTE $5B,$2A,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0072: word = @opKey +_F011 !WORD _P006 +; samplesrc/rpncalc.pla: 0073: byte[t_keypad] = '1', 3, 14, "[1]" + !BYTE $31 + !BYTE $03 + !BYTE $0E + !BYTE $03 + !BYTE $5B,$31,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0074: word = @digitKey +_F012 !WORD _P004 +; samplesrc/rpncalc.pla: 0075: byte[t_keypad] = '2', 7, 14, "[2]" + !BYTE $32 + !BYTE $07 + !BYTE $0E + !BYTE $03 + !BYTE $5B,$32,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0076: word = @digitKey +_F013 !WORD _P004 +; samplesrc/rpncalc.pla: 0077: byte[t_keypad] = '3', 11, 14, "[3]" + !BYTE $33 + !BYTE $0B + !BYTE $0E + !BYTE $03 + !BYTE $5B,$33,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0078: word = @digitKey +_F014 !WORD _P004 +; samplesrc/rpncalc.pla: 0079: byte[t_keypad] = '-', 15, 14, "[-]" + !BYTE $2D + !BYTE $0F + !BYTE $0E + !BYTE $03 + !BYTE $5B,$2D,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0080: word = @opKey +_F015 !WORD _P006 +; samplesrc/rpncalc.pla: 0081: byte[t_keypad] = '0', 3, 16, "[0]" + !BYTE $30 + !BYTE $03 + !BYTE $10 + !BYTE $03 + !BYTE $5B,$30,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0082: word = @digitKey +_F016 !WORD _P004 +; samplesrc/rpncalc.pla: 0083: byte[t_keypad] = '.', 7, 16, "[.]" + !BYTE $2E + !BYTE $07 + !BYTE $10 + !BYTE $03 + !BYTE $5B,$2E,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0084: word = @pointKey +_F017 !WORD _P005 +; samplesrc/rpncalc.pla: 0085: byte[t_keypad] = 'X', 11, 16, "[X]" + !BYTE $58 + !BYTE $0B + !BYTE $10 + !BYTE $03 + !BYTE $5B,$58,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0086: word = @dropKey +_F018 !WORD _P002 +; samplesrc/rpncalc.pla: 0087: byte[t_keypad] = '+', 15, 16, "[+]" + !BYTE $2B + !BYTE $0F + !BYTE $10 + !BYTE $03 + !BYTE $5B,$2B,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0088: word = @opKey +_F019 !WORD _P006 +; samplesrc/rpncalc.pla: 0089: byte[t_keypad] = $0D, 3, 18, "[ENTER]" + !BYTE $0D + !BYTE $03 + !BYTE $12 + !BYTE $07 + !BYTE $5B,$45,$4E,$54,$45,$52,$5D +; samplesrc/rpncalc.pla: 0090: word = @enterKey +_F020 !WORD _P007 +; samplesrc/rpncalc.pla: 0091: byte[t_keypad] = '<', 11, 18, "[<]" + !BYTE $3C + !BYTE $0B + !BYTE $12 + !BYTE $03 + !BYTE $5B,$3C,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0092: word = @memKey +_F021 !WORD _P010 +; samplesrc/rpncalc.pla: 0093: byte[t_keypad] = '>', 15, 18, "[>]" + !BYTE $3E + !BYTE $0F + !BYTE $12 + !BYTE $03 + !BYTE $5B,$3E,$5D + !FILL $04 +; samplesrc/rpncalc.pla: 0094: word = @memKey +_F022 !WORD _P010 +; samplesrc/rpncalc.pla: 0095: byte[t_keypad] = 'R', 3, 20, "[SQ(R)]" + !BYTE $52 + !BYTE $03 + !BYTE $14 + !BYTE $07 + !BYTE $5B,$53,$51,$28,$52,$29,$5D +; samplesrc/rpncalc.pla: 0096: word = @opKey +_F023 !WORD _P006 +; samplesrc/rpncalc.pla: 0097: byte[t_keypad] = 'H', 11, 20, "[C(H)S]" + !BYTE $48 + !BYTE $0B + !BYTE $14 + !BYTE $07 + !BYTE $5B,$43,$28,$48,$29,$53,$5D +; samplesrc/rpncalc.pla: 0098: word = @chsKey +_F024 !WORD _P009 +; samplesrc/rpncalc.pla: 0099: byte[t_keypad] = 'C', 22, 14, "[(C)OS]" + !BYTE $43 + !BYTE $16 + !BYTE $0E + !BYTE $07 + !BYTE $5B,$28,$43,$29,$4F,$53,$5D +; samplesrc/rpncalc.pla: 0100: word = @elemsKey +_F025 !WORD _P011 +; samplesrc/rpncalc.pla: 0101: byte[t_keypad] = 'S', 22, 16, "[(S)IN]" + !BYTE $53 + !BYTE $16 + !BYTE $10 + !BYTE $07 + !BYTE $5B,$28,$53,$29,$49,$4E,$5D +; samplesrc/rpncalc.pla: 0102: word = @elemsKey +_F026 !WORD _P011 +; samplesrc/rpncalc.pla: 0103: byte[t_keypad] = 'T', 22, 18, "[(T)AN]" + !BYTE $54 + !BYTE $16 + !BYTE $12 + !BYTE $07 + !BYTE $5B,$28,$54,$29,$41,$4E,$5D +; samplesrc/rpncalc.pla: 0104: word = @elemsKey +_F027 !WORD _P011 +; samplesrc/rpncalc.pla: 0105: byte[t_keypad] = 'A', 22, 20, "[(A)TN]" + !BYTE $41 + !BYTE $16 + !BYTE $14 + !BYTE $07 + !BYTE $5B,$28,$41,$29,$54,$4E,$5D +; samplesrc/rpncalc.pla: 0106: word = @elemsKey +_F028 !WORD _P011 +; samplesrc/rpncalc.pla: 0107: byte[t_keypad] = '^', 30, 14, "[X(^)Y]" + !BYTE $5E + !BYTE $1E + !BYTE $0E + !BYTE $07 + !BYTE $5B,$58,$28,$5E,$29,$59,$5D +; samplesrc/rpncalc.pla: 0108: word = @elemsKey +_F029 !WORD _P011 +; samplesrc/rpncalc.pla: 0109: byte[t_keypad] = 'L', 30, 16, "[(L)G2]" + !BYTE $4C + !BYTE $1E + !BYTE $10 + !BYTE $07 + !BYTE $5B,$28,$4C,$29,$47,$32,$5D +; samplesrc/rpncalc.pla: 0110: word = @elemsKey +_F030 !WORD _P011 +; samplesrc/rpncalc.pla: 0111: byte[t_keypad] = 'E', 30, 18, "[(E)^X]" + !BYTE $45 + !BYTE $1E + !BYTE $12 + !BYTE $07 + !BYTE $5B,$28,$45,$29,$5E,$58,$5D +; samplesrc/rpncalc.pla: 0112: word = @elemsKey +_F031 !WORD _P011 +; samplesrc/rpncalc.pla: 0113: byte[t_keypad] = 'N', 30, 20, "[L(N)X]" + !BYTE $4E + !BYTE $1E + !BYTE $14 + !BYTE $07 + !BYTE $5B,$4C,$28,$4E,$29,$58,$5D +; samplesrc/rpncalc.pla: 0114: word = @elemsKey +_F032 !WORD _P011 +; samplesrc/rpncalc.pla: 0115: byte = 0 + !BYTE $00 +; samplesrc/rpncalc.pla: 0116: // +; samplesrc/rpncalc.pla: 0117: // Utility routines +; samplesrc/rpncalc.pla: 0118: // +; samplesrc/rpncalc.pla: 0119: def repc(rep, c)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; rep -> [0] + ; c -> [2] +_C000 ; repc() +; samplesrc/rpncalc.pla: 0120: while rep > 0 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; samplesrc/rpncalc.pla: 0121: putc(c) +; samplesrc/rpncalc.pla: 0122: rep-- + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X002 +_F033 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0123: loop + !BYTE $76,$00 ; SLW [0] +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; samplesrc/rpncalc.pla: 0124: end + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/rpncalc.pla: 0125: def rect(x, y, width, height, frame, title)#0 + ; x -> [0] + ; y -> [2] + ; width -> [4] + ; height -> [6] + ; frame -> [8] + ; title -> [10] +_C001 ; rect() +; samplesrc/rpncalc.pla: 0126: byte i + ; i -> [12] +; samplesrc/rpncalc.pla: 0127: +; samplesrc/rpncalc.pla: 0128: conio:gotoxy(x + 1, y) + !BYTE $58,$0D,$06 ; ENTER 13,6 +; samplesrc/rpncalc.pla: 0129: repc(width - 2, frame ?? '#' :: '-') +; samplesrc/rpncalc.pla: 0130: conio:gotoxy(x + 1, y + height - 1) +; samplesrc/rpncalc.pla: 0131: repc(width - 2, frame ?? '#' :: '-') +; samplesrc/rpncalc.pla: 0132: for i = 1 to height - 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X032+8 +_F034 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $2A,$23 ; CB 35 + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +_B006 + !BYTE $2A,$2D ; CB 45 +_B007 + !BYTE $54 ; CALL _C000 +_F035 !WORD _C000 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $6A ; LAW _X032+8 +_F036 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $2A,$23 ; CB 35 + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B010 + !BYTE $2A,$2D ; CB 45 +_B011 + !BYTE $54 ; CALL _C000 +_F037 !WORD _C000 + !BYTE $66,$06 ; LLW [6] + !BYTE $8E ; DECR + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B012 + !WORD _B012-* +_B013 + !BYTE $6C,$0C ; DLB [12] +; samplesrc/rpncalc.pla: 0133: conio:gotoxy(x, y + i) +; samplesrc/rpncalc.pla: 0134: putc(frame ?? '#' :: '!') +; samplesrc/rpncalc.pla: 0135: conio:gotoxy(x + width - 1, y + i) +; samplesrc/rpncalc.pla: 0136: putc(frame ?? '#' :: '!') +; samplesrc/rpncalc.pla: 0137: next + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $6A ; LAW _X032+8 +_F038 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2A,$23 ; CB 35 + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +_B017 + !BYTE $2A,$21 ; CB 33 +_B018 + !BYTE $54 ; CALL _X002 +_F039 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $6A ; LAW _X032+8 +_F040 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $2A,$23 ; CB 35 + !BYTE $50 ; BRNCH _B022 + !WORD _B022-* +_B021 + !BYTE $2A,$21 ; CB 33 +_B022 + !BYTE $54 ; CALL _X002 +_F041 !WORD 0 +_B014 + !BYTE $A4 ; INCBRLE _B013 + !WORD _B013-* +_B012 + !BYTE $74,$0C ; SLB [12] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0138: conio:gotoxy(x, y) +; samplesrc/rpncalc.pla: 0139: putc(frame ?? '/' :: '+') +; samplesrc/rpncalc.pla: 0140: conio:gotoxy(x + width - 1, y) +; samplesrc/rpncalc.pla: 0141: putc(frame ?? '\\' :: '+') +; samplesrc/rpncalc.pla: 0142: conio:gotoxy(x, y + height - 1) +; samplesrc/rpncalc.pla: 0143: putc(frame ?? '\\' :: '+') +; samplesrc/rpncalc.pla: 0144: conio:gotoxy(x + width - 1, y + height - 1) +; samplesrc/rpncalc.pla: 0145: putc(frame ?? '/' :: '+') +; samplesrc/rpncalc.pla: 0146: if title +; samplesrc/rpncalc.pla: 0147: conio:gotoxy(x + (width - ^title) / 2, y) +; samplesrc/rpncalc.pla: 0148: puts(title) +; samplesrc/rpncalc.pla: 0149: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X032+8 +_F042 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $2A,$2F ; CB 47 + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +_B025 + !BYTE $2A,$2B ; CB 43 +_B026 + !BYTE $54 ; CALL _X002 +_F043 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X032+8 +_F044 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $2A,$5C ; CB 92 + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +_B029 + !BYTE $2A,$2B ; CB 43 +_B030 + !BYTE $54 ; CALL _X002 +_F045 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $6A ; LAW _X032+8 +_F046 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $2A,$5C ; CB 92 + !BYTE $50 ; BRNCH _B034 + !WORD _B034-* +_B033 + !BYTE $2A,$2B ; CB 43 +_B034 + !BYTE $54 ; CALL _X002 +_F047 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $8E ; DECR + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $8E ; DECR + !BYTE $6A ; LAW _X032+8 +_F048 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $2A,$2F ; CB 47 + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B037 + !BYTE $2A,$2B ; CB 43 +_B038 + !BYTE $54 ; CALL _X002 +_F049 !WORD 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X032+8 +_F050 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _X004 +_F051 !WORD 0 +_B039 +_B040 +; samplesrc/rpncalc.pla: 0150: end + !BYTE $5A,$0D ; LEAVE 13 +; samplesrc/rpncalc.pla: 0151: def showStack#0 +_C002 ; showStack() +; samplesrc/rpncalc.pla: 0152: byte s + ; s -> [0] +; samplesrc/rpncalc.pla: 0153: byte strFP[displayWidth+1] + ; strFP -> [1] +; samplesrc/rpncalc.pla: 0154: +; samplesrc/rpncalc.pla: 0155: for s = 0 to 3 + !BYTE $58,$11,$00 ; ENTER 17,0 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 +_B042 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rpncalc.pla: 0156: fpu:storStr(@strFP, displayInt, displayFix, FPSTR_FIXED|FPSTR_FLEX, s) +; samplesrc/rpncalc.pla: 0157: conio:gotoxy(4, 5 - s) +; samplesrc/rpncalc.pla: 0158: //repc(displayWidth - strFP - 1, ' ') +; samplesrc/rpncalc.pla: 0159: repc(displayWidth - strFP, ' ') +; samplesrc/rpncalc.pla: 0160: puts(@strFP) +; samplesrc/rpncalc.pla: 0161: next + !BYTE $28,$01 ; LLA [1] + !BYTE $68 ; LAB _D048+0 +_F052 !WORD _D048+0 + !BYTE $68 ; LAB _D047+0 +_F053 !WORD _D047+0 + !BYTE $12 ; CN 9 + !BYTE $64,$00 ; LLB [0] + !BYTE $6A ; LAW _X031+56 +_F054 !WORD 0+56 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $0A ; CN 5 + !BYTE $64,$00 ; LLB [0] + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X032+8 +_F055 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $64,$01 ; LLB [1] + !BYTE $84 ; SUB + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C000 +_F056 !WORD _C000 + !BYTE $28,$01 ; LLA [1] + !BYTE $54 ; CALL _X004 +_F057 !WORD 0 +_B043 + !BYTE $A4 ; INCBRLE _B042 + !WORD _B042-* +_B041 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0162: end + !BYTE $5A,$11 ; LEAVE 17 +; samplesrc/rpncalc.pla: 0163: def showMem#0 +_C003 ; showMem() +; samplesrc/rpncalc.pla: 0164: byte m + ; m -> [0] +; samplesrc/rpncalc.pla: 0165: byte strFP[displayWidth+1] + ; strFP -> [1] +; samplesrc/rpncalc.pla: 0166: +; samplesrc/rpncalc.pla: 0167: for m = 0 to 9 + !BYTE $58,$11,$00 ; ENTER 17,0 + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 +_B045 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rpncalc.pla: 0168: ext2str(@memory[m*t_fpureg], @strFP, displayInt, displayFix, FPSTR_FIXED|FPSTR_FLEX) +; samplesrc/rpncalc.pla: 0169: conio:gotoxy(23, 2 + m) +; samplesrc/rpncalc.pla: 0170: repc(displayWidth - strFP - 1, ' ') +; samplesrc/rpncalc.pla: 0171: puts(@strFP) +; samplesrc/rpncalc.pla: 0172: next + !BYTE $26 ; LA _D049+0 +_F058 !WORD _D049+0 + !BYTE $64,$00 ; LLB [0] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $28,$01 ; LLA [1] + !BYTE $68 ; LAB _D048+0 +_F059 !WORD _D048+0 + !BYTE $68 ; LAB _D047+0 +_F060 !WORD _D047+0 + !BYTE $12 ; CN 9 + !BYTE $54 ; CALL _X030 +_F061 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$17 ; CB 23 + !BYTE $04 ; CN 2 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $6A ; LAW _X032+8 +_F062 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $64,$01 ; LLB [1] + !BYTE $84 ; SUB + !BYTE $8E ; DECR + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C000 +_F063 !WORD _C000 + !BYTE $28,$01 ; LLA [1] + !BYTE $54 ; CALL _X004 +_F064 !WORD 0 +_B046 + !BYTE $A4 ; INCBRLE _B045 + !WORD _B045-* +_B044 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0173: end + !BYTE $5A,$11 ; LEAVE 17 +; samplesrc/rpncalc.pla: 0174: def showInput#0 +_C004 ; showInput() +; samplesrc/rpncalc.pla: 0175: conio:gotoxy(2,7) +; samplesrc/rpncalc.pla: 0176: repc(17 - inputStr, ' ') +; samplesrc/rpncalc.pla: 0177: puts(@inputStr) +; samplesrc/rpncalc.pla: 0178: end + !BYTE $04 ; CN 2 + !BYTE $0E ; CN 7 + !BYTE $6A ; LAW _X032+8 +_F065 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$11 ; CB 17 + !BYTE $68 ; LAB _D046+0 +_F066 !WORD _D046+0 + !BYTE $84 ; SUB + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C000 +_F067 !WORD _C000 + !BYTE $26 ; LA _D046+0 +_F068 !WORD _D046+0 + !BYTE $54 ; CALL _X004 +_F069 !WORD 0 + !BYTE $5C ; RET +; samplesrc/rpncalc.pla: 0179: def showStatus(pstr)#0 + ; pstr -> [0] +_C005 ; showStatus() +; samplesrc/rpncalc.pla: 0180: conio:gotoxy(0,23) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0181: puts(pstr) +; samplesrc/rpncalc.pla: 0182: end + !BYTE $00 ; CN 0 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X032+8 +_F070 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F071 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0183: def clearStatus#0 +_C006 ; clearStatus() +; samplesrc/rpncalc.pla: 0184: conio:gotoxy(0,23) +; samplesrc/rpncalc.pla: 0185: repc(39, ' ') +; samplesrc/rpncalc.pla: 0186: end + !BYTE $00 ; CN 0 + !BYTE $2A,$17 ; CB 23 + !BYTE $6A ; LAW _X032+8 +_F072 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2A,$27 ; CB 39 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C000 +_F073 !WORD _C000 + !BYTE $5C ; RET +; samplesrc/rpncalc.pla: 0187: def initInput#0 +_C007 ; initInput() +; samplesrc/rpncalc.pla: 0188: inputStr = 0 +; samplesrc/rpncalc.pla: 0189: end + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D046+0 +_F074 !WORD _D046+0 + !BYTE $5C ; RET +; samplesrc/rpncalc.pla: 0190: def updateInput#0 +_C008 ; updateInput() +; samplesrc/rpncalc.pla: 0191: // +; samplesrc/rpncalc.pla: 0192: // Lift stack if something input +; samplesrc/rpncalc.pla: 0193: // +; samplesrc/rpncalc.pla: 0194: if inputStr +; samplesrc/rpncalc.pla: 0195: fpu:pushStr(@inputStr) +; samplesrc/rpncalc.pla: 0196: fin + !BYTE $68 ; LAB _D046+0 +_F075 !WORD _D046+0 + !BYTE $4C ; BRFLS _B047 + !WORD _B047-* + !BYTE $26 ; LA _D046+0 +_F076 !WORD _D046+0 + !BYTE $6A ; LAW _X031+26 +_F077 !WORD 0+26 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B047 +_B048 +; samplesrc/rpncalc.pla: 0197: initInput +; samplesrc/rpncalc.pla: 0198: showInput +; samplesrc/rpncalc.pla: 0199: end + !BYTE $54 ; CALL _C007 +_F078 !WORD _C007 + !BYTE $54 ; CALL _C004 +_F079 !WORD _C004 + !BYTE $5C ; RET +; samplesrc/rpncalc.pla: 0200: def initDisplay#0 +_C009 ; initDisplay() +; samplesrc/rpncalc.pla: 0201: byte i + ; i -> [0] +; samplesrc/rpncalc.pla: 0202: word pkeys + ; pkeys -> [1] +; samplesrc/rpncalc.pla: 0203: +; samplesrc/rpncalc.pla: 0204: conio:home() + !BYTE $58,$03,$00 ; ENTER 3,0 +; samplesrc/rpncalc.pla: 0205: rect(0, 0, 40, 23, 1, "") + !BYTE $6A ; LAW _X032+6 +_F080 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$28 ; CB 40 + !BYTE $2A,$17 ; CB 23 + !BYTE $02 ; CN 1 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $3C,$52,$50,$4E,$20,$43,$61,$6C + !BYTE $63,$75,$6C,$61,$74,$6F,$72,$3E + !BYTE $54 ; CALL _C001 +_F081 !WORD _C001 +; samplesrc/rpncalc.pla: 0206: rect(1, 1, 19, 6, 0, ":Stack:") + !BYTE $02 ; CN 1 + !BYTE $34 ; DUP + !BYTE $2A,$13 ; CB 19 + !BYTE $0C ; CN 6 + !BYTE $00 ; CN 0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $3A,$53,$74,$61,$63,$6B,$3A + !BYTE $54 ; CALL _C001 +_F082 !WORD _C001 +; samplesrc/rpncalc.pla: 0207: rect(1, 6, 19, 3, 0, 0) +; samplesrc/rpncalc.pla: 0208: conio:gotoxy(2, 2); puts("T:") + !BYTE $02 ; CN 1 + !BYTE $0C ; CN 6 + !BYTE $2A,$13 ; CB 19 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C001 +_F083 !WORD _C001 + !BYTE $04 ; CN 2 + !BYTE $34 ; DUP + !BYTE $6A ; LAW _X032+8 +_F084 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $54,$3A + !BYTE $54 ; CALL _X004 +_F085 !WORD 0 +; samplesrc/rpncalc.pla: 0209: conio:gotoxy(2, 3); puts("Z:") + !BYTE $04 ; CN 2 + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X032+8 +_F086 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $5A,$3A + !BYTE $54 ; CALL _X004 +_F087 !WORD 0 +; samplesrc/rpncalc.pla: 0210: conio:gotoxy(2, 4); puts("Y:") + !BYTE $04 ; CN 2 + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X032+8 +_F088 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $59,$3A + !BYTE $54 ; CALL _X004 +_F089 !WORD 0 +; samplesrc/rpncalc.pla: 0211: conio:gotoxy(2, 5); puts("X:") + !BYTE $04 ; CN 2 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X032+8 +_F090 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $58,$3A + !BYTE $54 ; CALL _X004 +_F091 !WORD 0 +; samplesrc/rpncalc.pla: 0212: rect(20, 1, 19, 12, 0, ":Memory:") + !BYTE $2A,$14 ; CB 20 + !BYTE $02 ; CN 1 + !BYTE $2A,$13 ; CB 19 + !BYTE $18 ; CN 12 + !BYTE $00 ; CN 0 + !BYTE $2E ; CS + !BYTE $08 + !BYTE $3A,$4D,$65,$6D,$6F,$72,$79,$3A + !BYTE $54 ; CALL _C001 +_F092 !WORD _C001 +; samplesrc/rpncalc.pla: 0213: for i = 0 to 9 + !BYTE $12 ; CN 9 + !BYTE $00 ; CN 0 +_B050 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rpncalc.pla: 0214: conio:gotoxy(21, 2 + i); puti(i); putc(':') +; samplesrc/rpncalc.pla: 0215: next + !BYTE $2A,$15 ; CB 21 + !BYTE $04 ; CN 2 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $6A ; LAW _X032+8 +_F093 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X005 +_F094 !WORD 0 + !BYTE $2A,$3A ; CB 58 + !BYTE $54 ; CALL _X002 +_F095 !WORD 0 +_B051 + !BYTE $A4 ; INCBRLE _B050 + !WORD _B050-* +_B049 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0216: pkeys = @keypad +; samplesrc/rpncalc.pla: 0217: while ^pkeys + !BYTE $26 ; LA _D050+0 +_F096 !WORD _D050+0 + !BYTE $76,$01 ; SLW [1] + !BYTE $50 ; BRNCH _B054 + !WORD _B054-* +_B052 +; samplesrc/rpncalc.pla: 0218: conio:gotoxy(pkeys->xpos, pkeys->ypos) +; samplesrc/rpncalc.pla: 0219: puts(pkeys + keystr) +; samplesrc/rpncalc.pla: 0220: pkeys = pkeys + t_keyinput +; samplesrc/rpncalc.pla: 0221: loop + !BYTE $66,$01 ; LLW [1] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $6A ; LAW _X032+8 +_F097 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _X004 +_F098 !WORD 0 + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$01 ; SLW [1] +_B054 + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B052 + !WORD _B052-* +_B053 +; samplesrc/rpncalc.pla: 0222: end + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/rpncalc.pla: 0223: def initState#0 +_C010 ; initState() +; samplesrc/rpncalc.pla: 0224: byte m + ; m -> [0] +; samplesrc/rpncalc.pla: 0225: +; samplesrc/rpncalc.pla: 0226: // +; samplesrc/rpncalc.pla: 0227: // Init FPU +; samplesrc/rpncalc.pla: 0228: // +; samplesrc/rpncalc.pla: 0229: fpu:reset() + !BYTE $58,$01,$00 ; ENTER 1,0 +; samplesrc/rpncalc.pla: 0230: // +; samplesrc/rpncalc.pla: 0231: // Fill memory +; samplesrc/rpncalc.pla: 0232: // +; samplesrc/rpncalc.pla: 0233: for m = 2 to 9 + !BYTE $6A ; LAW _X031+0 +_F099 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $12 ; CN 9 + !BYTE $04 ; CN 2 +_B056 + !BYTE $6C,$00 ; DLB [0] +; samplesrc/rpncalc.pla: 0234: fpu:storExt(@memory[m*t_fpureg], X_REG) +; samplesrc/rpncalc.pla: 0235: next + !BYTE $26 ; LA _D049+0 +_F100 !WORD _D049+0 + !BYTE $64,$00 ; LLB [0] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+54 +_F101 !WORD 0+54 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B057 + !BYTE $A4 ; INCBRLE _B056 + !WORD _B056-* +_B055 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0236: // +; samplesrc/rpncalc.pla: 0237: // Put some useful constants in there +; samplesrc/rpncalc.pla: 0238: // +; samplesrc/rpncalc.pla: 0239: fpu:constPi() +; samplesrc/rpncalc.pla: 0240: fpu:pullExt(@memory[0*t_fpureg]) +; samplesrc/rpncalc.pla: 0241: fpu:constE() +; samplesrc/rpncalc.pla: 0242: fpu:pullExt(@memory[1*t_fpureg]) +; samplesrc/rpncalc.pla: 0243: end + !BYTE $6A ; LAW _X031+14 +_F102 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D049+0 +_F103 !WORD _D049+0 + !BYTE $6A ; LAW _X031+34 +_F104 !WORD 0+34 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X031+16 +_F105 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D049+10 +_F106 !WORD _D049+10 + !BYTE $6A ; LAW _X031+34 +_F107 !WORD 0+34 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5A,$01 ; LEAVE 1 +; samplesrc/rpncalc.pla: 0244: // +; samplesrc/rpncalc.pla: 0245: // Keypress input handlers +; samplesrc/rpncalc.pla: 0246: // +; samplesrc/rpncalc.pla: 0247: def delKey(pkey)#0 + ; pkey -> [0] +_P000 ; delKey(pkey)#0() +_C011 ; delKey() +; samplesrc/rpncalc.pla: 0248: if inputStr + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0249: inputStr-- + !BYTE $68 ; LAB _D046+0 +_F108 !WORD _D046+0 + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $68 ; LAB _D046+0 +_F109 !WORD _D046+0 + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0250: fin + !BYTE $78 ; SAB _D046+0 +_F110 !WORD _D046+0 +_B058 +_B059 +; samplesrc/rpncalc.pla: 0251: if inputStr:0 == 1 | ('-' << 8) //inputStr == 1 and inputStr.1 == '-' +; samplesrc/rpncalc.pla: 0252: inputStr-- + !BYTE $6A ; LAW _D046+0 +_F111 !WORD _D046+0 + !BYTE $2C,$01,$2D ; CW 11521 + !BYTE $24 ; BRNE _B060 + !WORD _B060-* + !BYTE $68 ; LAB _D046+0 +_F112 !WORD _D046+0 + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0253: fin + !BYTE $78 ; SAB _D046+0 +_F113 !WORD _D046+0 +_B060 +_B061 +; samplesrc/rpncalc.pla: 0254: showInput +; samplesrc/rpncalc.pla: 0255: end + !BYTE $54 ; CALL _C004 +_F114 !WORD _C004 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0256: def dropKey(pkey)#0 + ; pkey -> [0] +_P002 ; dropKey(pkey)#0() +_C012 ; dropKey() +; samplesrc/rpncalc.pla: 0257: fpu:pullStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT|FPSTR_FLEX) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0258: if inputStr.1 == ' ' +; samplesrc/rpncalc.pla: 0259: inputStr-- + !BYTE $26 ; LA _D046+0 +_F115 !WORD _D046+0 + !BYTE $68 ; LAB _D048+0 +_F116 !WORD _D048+0 + !BYTE $68 ; LAB _D047+0 +_F117 !WORD _D047+0 + !BYTE $04 ; CN 2 + !BYTE $3E,$08 ; ORI 8 + !BYTE $6A ; LAW _X031+36 +_F118 !WORD 0+36 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D046+1 +_F119 !WORD _D046+1 + !BYTE $2A,$20 ; CB 32 + !BYTE $24 ; BRNE _B062 + !WORD _B062-* + !BYTE $68 ; LAB _D046+0 +_F120 !WORD _D046+0 + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0260: memcpy(@inputStr.1, @inputStr.2, inputStr) +; samplesrc/rpncalc.pla: 0261: fin + !BYTE $78 ; SAB _D046+0 +_F121 !WORD _D046+0 + !BYTE $26 ; LA _D046+1 +_F122 !WORD _D046+1 + !BYTE $26 ; LA _D046+2 +_F123 !WORD _D046+2 + !BYTE $68 ; LAB _D046+0 +_F124 !WORD _D046+0 + !BYTE $54 ; CALL _X018 +_F125 !WORD 0 +_B062 +_B063 +; samplesrc/rpncalc.pla: 0262: showInput +; samplesrc/rpncalc.pla: 0263: showStack +; samplesrc/rpncalc.pla: 0264: end + !BYTE $54 ; CALL _C004 +_F126 !WORD _C004 + !BYTE $54 ; CALL _C002 +_F127 !WORD _C002 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0265: def copyKey(pkey)#0 + ; pkey -> [0] +_P008 ; copyKey(pkey)#0() +_C013 ; copyKey() +; samplesrc/rpncalc.pla: 0266: fpu:storStr(@inputStr, displayInt, displayFix, FPSTR_STRIP|FPSTR_FLOAT|FPSTR_FLEX, X_REG) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0267: if inputStr.1 == ' ' +; samplesrc/rpncalc.pla: 0268: inputStr-- + !BYTE $26 ; LA _D046+0 +_F128 !WORD _D046+0 + !BYTE $68 ; LAB _D048+0 +_F129 !WORD _D048+0 + !BYTE $68 ; LAB _D047+0 +_F130 !WORD _D047+0 + !BYTE $04 ; CN 2 + !BYTE $3E,$08 ; ORI 8 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+56 +_F131 !WORD 0+56 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D046+1 +_F132 !WORD _D046+1 + !BYTE $2A,$20 ; CB 32 + !BYTE $24 ; BRNE _B064 + !WORD _B064-* + !BYTE $68 ; LAB _D046+0 +_F133 !WORD _D046+0 + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0269: memcpy(@inputStr.1, @inputStr.2, inputStr) +; samplesrc/rpncalc.pla: 0270: fin + !BYTE $78 ; SAB _D046+0 +_F134 !WORD _D046+0 + !BYTE $26 ; LA _D046+1 +_F135 !WORD _D046+1 + !BYTE $26 ; LA _D046+2 +_F136 !WORD _D046+2 + !BYTE $68 ; LAB _D046+0 +_F137 !WORD _D046+0 + !BYTE $54 ; CALL _X018 +_F138 !WORD 0 +_B064 +_B065 +; samplesrc/rpncalc.pla: 0271: showInput +; samplesrc/rpncalc.pla: 0272: end + !BYTE $54 ; CALL _C004 +_F139 !WORD _C004 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0273: def clearKey(pkey)#0 + ; pkey -> [0] +_P003 ; clearKey(pkey)#0() +_C014 ; clearKey() +; samplesrc/rpncalc.pla: 0274: initInput + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0275: showInput +; samplesrc/rpncalc.pla: 0276: end + !BYTE $54 ; CALL _C007 +_F140 !WORD _C007 + !BYTE $54 ; CALL _C004 +_F141 !WORD _C004 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0277: def digitKey(pkey)#0 + ; pkey -> [0] +_P004 ; digitKey(pkey)#0() +_C015 ; digitKey() +; samplesrc/rpncalc.pla: 0278: if inputStr < inputLen + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0279: if inputStr:0 <> ZEROSTR +; samplesrc/rpncalc.pla: 0280: inputStr++ + !BYTE $68 ; LAB _D046+0 +_F142 !WORD _D046+0 + !BYTE $2A,$10 ; CB 16 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $6A ; LAW _D046+0 +_F143 !WORD _D046+0 + !BYTE $2C,$01,$30 ; CW 12289 + !BYTE $22 ; BREQ _B068 + !WORD _B068-* + !BYTE $68 ; LAB _D046+0 +_F144 !WORD _D046+0 + !BYTE $8C ; INCR +; samplesrc/rpncalc.pla: 0281: fin + !BYTE $78 ; SAB _D046+0 +_F145 !WORD _D046+0 +_B068 +_B069 +; samplesrc/rpncalc.pla: 0282: inputStr[inputStr] = ^pkey +; samplesrc/rpncalc.pla: 0283: showInput +; samplesrc/rpncalc.pla: 0284: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $26 ; LA _D046+0 +_F146 !WORD _D046+0 + !BYTE $B4 ; ADDAB _D046+0 +_F147 !WORD _D046+0 + !BYTE $70 ; SB + !BYTE $54 ; CALL _C004 +_F148 !WORD _C004 +_B066 +_B067 +; samplesrc/rpncalc.pla: 0285: end + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0286: def pointKey(pkey)#0 + ; pkey -> [0] +_P005 ; pointKey(pkey)#0() +_C016 ; pointKey() +; samplesrc/rpncalc.pla: 0287: byte c + ; c -> [2] +; samplesrc/rpncalc.pla: 0288: +; samplesrc/rpncalc.pla: 0289: if !inputStr + !BYTE $58,$03,$01 ; ENTER 3,1 +; samplesrc/rpncalc.pla: 0290: // +; samplesrc/rpncalc.pla: 0291: // Start off with '0' if blank input +; samplesrc/rpncalc.pla: 0292: // +; samplesrc/rpncalc.pla: 0293: inputStr:0 = ZEROSTR +; samplesrc/rpncalc.pla: 0294: else + !BYTE $68 ; LAB _D046+0 +_F149 !WORD _D046+0 + !BYTE $4E ; BRTRU _B070 + !WORD _B070-* + !BYTE $2C,$01,$30 ; CW 12289 + !BYTE $7A ; SAW _D046+0 +_F150 !WORD _D046+0 + !BYTE $50 ; BRNCH _B071 + !WORD _B071-* +_B070 +; samplesrc/rpncalc.pla: 0295: // +; samplesrc/rpncalc.pla: 0296: // Check for existing decimal point +; samplesrc/rpncalc.pla: 0297: // +; samplesrc/rpncalc.pla: 0298: for c = 1 to inputStr + !BYTE $68 ; LAB _D046+0 +_F151 !WORD _D046+0 + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B072 + !WORD _B072-* +_B073 + !BYTE $6C,$02 ; DLB [2] +; samplesrc/rpncalc.pla: 0299: if inputStr[c] == '.' +; samplesrc/rpncalc.pla: 0300: return + !BYTE $26 ; LA _D046+0 +_F152 !WORD _D046+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B075 + !WORD _B075-* + !BYTE $32 ; DROP2 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/rpncalc.pla: 0301: fin +_B075 +_B076 +; samplesrc/rpncalc.pla: 0302: next +_B074 + !BYTE $A4 ; INCBRLE _B073 + !WORD _B073-* +_B072 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; samplesrc/rpncalc.pla: 0303: fin +_B071 +; samplesrc/rpncalc.pla: 0304: inputStr++ + !BYTE $68 ; LAB _D046+0 +_F153 !WORD _D046+0 + !BYTE $8C ; INCR +; samplesrc/rpncalc.pla: 0305: inputStr[inputStr] = '.' +; samplesrc/rpncalc.pla: 0306: showInput +; samplesrc/rpncalc.pla: 0307: end + !BYTE $78 ; SAB _D046+0 +_F154 !WORD _D046+0 + !BYTE $2A,$2E ; CB 46 + !BYTE $26 ; LA _D046+0 +_F155 !WORD _D046+0 + !BYTE $B4 ; ADDAB _D046+0 +_F156 !WORD _D046+0 + !BYTE $70 ; SB + !BYTE $54 ; CALL _C004 +_F157 !WORD _C004 + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/rpncalc.pla: 0308: def chsKey(pkey)#0 + ; pkey -> [0] +_P009 ; chsKey(pkey)#0() +_C017 ; chsKey() +; samplesrc/rpncalc.pla: 0309: if inputStr + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0310: if inputStr.1 <> '-' +; samplesrc/rpncalc.pla: 0311: memcpy(@inputStr.2, @inputStr.1, inputStr) +; samplesrc/rpncalc.pla: 0312: inputStr++ + !BYTE $68 ; LAB _D046+0 +_F158 !WORD _D046+0 + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $68 ; LAB _D046+1 +_F159 !WORD _D046+1 + !BYTE $2A,$2D ; CB 45 + !BYTE $22 ; BREQ _B079 + !WORD _B079-* + !BYTE $26 ; LA _D046+2 +_F160 !WORD _D046+2 + !BYTE $26 ; LA _D046+1 +_F161 !WORD _D046+1 + !BYTE $68 ; LAB _D046+0 +_F162 !WORD _D046+0 + !BYTE $54 ; CALL _X018 +_F163 !WORD 0 + !BYTE $68 ; LAB _D046+0 +_F164 !WORD _D046+0 + !BYTE $8C ; INCR +; samplesrc/rpncalc.pla: 0313: inputStr.1 = '-' +; samplesrc/rpncalc.pla: 0314: else + !BYTE $78 ; SAB _D046+0 +_F165 !WORD _D046+0 + !BYTE $2A,$2D ; CB 45 + !BYTE $78 ; SAB _D046+1 +_F166 !WORD _D046+1 + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B079 +; samplesrc/rpncalc.pla: 0315: inputStr-- + !BYTE $68 ; LAB _D046+0 +_F167 !WORD _D046+0 + !BYTE $8E ; DECR +; samplesrc/rpncalc.pla: 0316: memcpy(@inputStr.1, @inputStr.2, inputStr) +; samplesrc/rpncalc.pla: 0317: fin + !BYTE $78 ; SAB _D046+0 +_F168 !WORD _D046+0 + !BYTE $26 ; LA _D046+1 +_F169 !WORD _D046+1 + !BYTE $26 ; LA _D046+2 +_F170 !WORD _D046+2 + !BYTE $68 ; LAB _D046+0 +_F171 !WORD _D046+0 + !BYTE $54 ; CALL _X018 +_F172 !WORD 0 +_B080 +; samplesrc/rpncalc.pla: 0318: showInput +; samplesrc/rpncalc.pla: 0319: fin + !BYTE $54 ; CALL _C004 +_F173 !WORD _C004 +_B077 +_B078 +; samplesrc/rpncalc.pla: 0320: end + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0321: def enterKey(pkey)#0 + ; pkey -> [0] +_P007 ; enterKey(pkey)#0() +_C018 ; enterKey() +; samplesrc/rpncalc.pla: 0322: fpu:pushStr(@inputStr) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0323: showStack +; samplesrc/rpncalc.pla: 0324: initInput +; samplesrc/rpncalc.pla: 0325: showInput +; samplesrc/rpncalc.pla: 0326: end + !BYTE $26 ; LA _D046+0 +_F174 !WORD _D046+0 + !BYTE $6A ; LAW _X031+26 +_F175 !WORD 0+26 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C002 +_F176 !WORD _C002 + !BYTE $54 ; CALL _C007 +_F177 !WORD _C007 + !BYTE $54 ; CALL _C004 +_F178 !WORD _C004 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0327: def opKey(pkey)#0 + ; pkey -> [0] +_P006 ; opKey(pkey)#0() +_C019 ; opKey() +; samplesrc/rpncalc.pla: 0328: updateInput + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0329: when ^pkey + !BYTE $54 ; CALL _C008 +_F179 !WORD _C008 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B082-* +; samplesrc/rpncalc.pla: 0330: is '+' +_B083 +; samplesrc/rpncalc.pla: 0331: fpu:addXY() +; samplesrc/rpncalc.pla: 0332: break + !BYTE $6A ; LAW _X031+72 +_F180 !WORD 0+72 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; samplesrc/rpncalc.pla: 0333: is '-' +_B084 +; samplesrc/rpncalc.pla: 0334: fpu:subXY() +; samplesrc/rpncalc.pla: 0335: break + !BYTE $6A ; LAW _X031+74 +_F181 !WORD 0+74 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; samplesrc/rpncalc.pla: 0336: is '*' +_B085 +; samplesrc/rpncalc.pla: 0337: fpu:mulXY() +; samplesrc/rpncalc.pla: 0338: break + !BYTE $6A ; LAW _X031+76 +_F182 !WORD 0+76 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; samplesrc/rpncalc.pla: 0339: is '/' +_B086 +; samplesrc/rpncalc.pla: 0340: fpu:divXY() +; samplesrc/rpncalc.pla: 0341: break + !BYTE $6A ; LAW _X031+78 +_F183 !WORD 0+78 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; samplesrc/rpncalc.pla: 0342: is 'R' +_B087 +; samplesrc/rpncalc.pla: 0343: fpu:sqrtX() +; samplesrc/rpncalc.pla: 0344: break + !BYTE $6A ; LAW _X031+98 +_F184 !WORD 0+98 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +; samplesrc/rpncalc.pla: 0345: wend + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B082 + !BYTE $05 ; CASEBLOCK + !WORD $002A + !WORD _B085-* + !WORD $002B + !WORD _B083-* + !WORD $002D + !WORD _B084-* + !WORD $002F + !WORD _B086-* + !WORD $0052 + !WORD _B087-* +_B081 +; samplesrc/rpncalc.pla: 0346: showStack +; samplesrc/rpncalc.pla: 0347: end + !BYTE $54 ; CALL _C002 +_F185 !WORD _C002 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0348: def memKey(pkey)#0 + ; pkey -> [0] +_P010 ; memKey(pkey)#0() +_C020 ; memKey() +; samplesrc/rpncalc.pla: 0349: word r + ; r -> [2] +; samplesrc/rpncalc.pla: 0350: +; samplesrc/rpncalc.pla: 0351: showStatus("Press 0-9 for memory register:") + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $2E ; CS + !BYTE $1E + !BYTE $50,$72,$65,$73,$73,$20,$30,$2D + !BYTE $39,$20,$66,$6F,$72,$20,$6D,$65 + !BYTE $6D,$6F,$72,$79,$20,$72,$65,$67 + !BYTE $69,$73,$74,$65,$72,$3A + !BYTE $54 ; CALL _C005 +_F186 !WORD _C005 +; samplesrc/rpncalc.pla: 0352: r = getc - '0' +; samplesrc/rpncalc.pla: 0353: clearStatus +; samplesrc/rpncalc.pla: 0354: if r >= 0 and r <= 9 +; samplesrc/rpncalc.pla: 0355: if ^pkey == '<' +; samplesrc/rpncalc.pla: 0356: fpu:pushExt(@memory[r*t_fpureg]) +; samplesrc/rpncalc.pla: 0357: showStack +; samplesrc/rpncalc.pla: 0358: else + !BYTE $54 ; CALL _X006 +_F187 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$02 ; SLW [2] + !BYTE $54 ; CALL _C006 +_F188 !WORD _C006 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B088 + !WORD _B088-* + !BYTE $66,$02 ; LLW [2] + !BYTE $12 ; CN 9 + !BYTE $4A ; ISLE +_B088 + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$3C ; CB 60 + !BYTE $24 ; BRNE _B091 + !WORD _B091-* + !BYTE $26 ; LA _D049+0 +_F189 !WORD _D049+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6A ; LAW _X031+24 +_F190 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C002 +_F191 !WORD _C002 + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B091 +; samplesrc/rpncalc.pla: 0359: fpu:storExt(@memory[r*t_fpureg], X_REG) +; samplesrc/rpncalc.pla: 0360: showMem +; samplesrc/rpncalc.pla: 0361: fin + !BYTE $26 ; LA _D049+0 +_F192 !WORD _D049+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+54 +_F193 !WORD 0+54 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C003 +_F194 !WORD _C003 +_B092 +; samplesrc/rpncalc.pla: 0362: fin +_B089 +_B090 +; samplesrc/rpncalc.pla: 0363: end + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/rpncalc.pla: 0364: def elemsKey(pkey)#0 + ; pkey -> [0] +_P011 ; elemsKey(pkey)#0() +_C021 ; elemsKey() +; samplesrc/rpncalc.pla: 0365: updateInput + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/rpncalc.pla: 0366: when ^pkey + !BYTE $54 ; CALL _C008 +_F195 !WORD _C008 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B094-* +; samplesrc/rpncalc.pla: 0367: is 'C' +_B095 +; samplesrc/rpncalc.pla: 0368: fpu:cosX() +; samplesrc/rpncalc.pla: 0369: break + !BYTE $6A ; LAW _X031+102 +_F196 !WORD 0+102 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0370: is 'S' +_B096 +; samplesrc/rpncalc.pla: 0371: fpu:sinX() +; samplesrc/rpncalc.pla: 0372: break + !BYTE $6A ; LAW _X031+104 +_F197 !WORD 0+104 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0373: is 'T' +_B097 +; samplesrc/rpncalc.pla: 0374: fpu:tanX() +; samplesrc/rpncalc.pla: 0375: break + !BYTE $6A ; LAW _X031+106 +_F198 !WORD 0+106 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0376: is 'A' +_B098 +; samplesrc/rpncalc.pla: 0377: fpu:atanX() +; samplesrc/rpncalc.pla: 0378: break + !BYTE $6A ; LAW _X031+108 +_F199 !WORD 0+108 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0379: is '^' +_B099 +; samplesrc/rpncalc.pla: 0380: fpu:powXY() +; samplesrc/rpncalc.pla: 0381: break + !BYTE $6A ; LAW _X031+130 +_F200 !WORD 0+130 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0382: is 'L' +_B100 +; samplesrc/rpncalc.pla: 0383: fpu:log2X() +; samplesrc/rpncalc.pla: 0384: break + !BYTE $6A ; LAW _X031+110 +_F201 !WORD 0+110 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0385: is 'P' +_B101 +; samplesrc/rpncalc.pla: 0386: fpu:powEX() +; samplesrc/rpncalc.pla: 0387: break + !BYTE $6A ; LAW _X031+122 +_F202 !WORD 0+122 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0388: is 'N' +_B102 +; samplesrc/rpncalc.pla: 0389: fpu:lnX() +; samplesrc/rpncalc.pla: 0390: break + !BYTE $6A ; LAW _X031+114 +_F203 !WORD 0+114 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +; samplesrc/rpncalc.pla: 0391: wend + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +_B094 + !BYTE $08 ; CASEBLOCK + !WORD $0041 + !WORD _B098-* + !WORD $0043 + !WORD _B095-* + !WORD $004C + !WORD _B100-* + !WORD $004E + !WORD _B102-* + !WORD $0050 + !WORD _B101-* + !WORD $0053 + !WORD _B096-* + !WORD $0054 + !WORD _B097-* + !WORD $005E + !WORD _B099-* +_B093 +; samplesrc/rpncalc.pla: 0392: showStack +; samplesrc/rpncalc.pla: 0393: end + !BYTE $54 ; CALL _C002 +_F204 !WORD _C002 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/rpncalc.pla: 0394: // +; samplesrc/rpncalc.pla: 0395: // Command line handler +; samplesrc/rpncalc.pla: 0396: // +; samplesrc/rpncalc.pla: 0397: def cmdKey(pkey)#0 + ; pkey -> [0] +_P001 ; cmdKey(pkey)#0() +_C022 ; cmdKey() +; samplesrc/rpncalc.pla: 0398: // word cmdLine +; samplesrc/rpncalc.pla: 0399: +; samplesrc/rpncalc.pla: 0400: // showStatus("Command") +; samplesrc/rpncalc.pla: 0401: // cmdLine = gets(':'|$80) +; samplesrc/rpncalc.pla: 0402: word d + ; d -> [2] +; samplesrc/rpncalc.pla: 0403: +; samplesrc/rpncalc.pla: 0404: showStatus("Press 1-9 for fix point digits(Q=Quit):") + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $2E ; CS + !BYTE $27 + !BYTE $50,$72,$65,$73,$73,$20,$31,$2D + !BYTE $39,$20,$66,$6F,$72,$20,$66,$69 + !BYTE $78,$20,$70,$6F,$69,$6E,$74,$20 + !BYTE $64,$69,$67,$69,$74,$73,$28,$51 + !BYTE $3D,$51,$75,$69,$74,$29,$3A + !BYTE $54 ; CALL _C005 +_F205 !WORD _C005 +; samplesrc/rpncalc.pla: 0405: d = toupper(getc) - '0' +; samplesrc/rpncalc.pla: 0406: if d >= 1 and d <= 9 +; samplesrc/rpncalc.pla: 0407: displayFix = d +; samplesrc/rpncalc.pla: 0408: displayInt = displayWidth - displayFix - 2 +; samplesrc/rpncalc.pla: 0409: elsif d == 'Q' - '0' + !BYTE $54 ; CALL _X006 +_F206 !WORD 0 + !BYTE $54 ; CALL _X021 +_F207 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6E,$02 ; DLW [2] + !BYTE $02 ; CN 1 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B103 + !WORD _B103-* + !BYTE $66,$02 ; LLW [2] + !BYTE $12 ; CN 9 + !BYTE $4A ; ISLE +_B103 + !BYTE $4C ; BRFLS _B104 + !WORD _B104-* + !BYTE $66,$02 ; LLW [2] + !BYTE $78 ; SAB _D047+0 +_F208 !WORD _D047+0 + !BYTE $1E ; CN 15 + !BYTE $68 ; LAB _D047+0 +_F209 !WORD _D047+0 + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $78 ; SAB _D048+0 +_F210 !WORD _D048+0 + !BYTE $50 ; BRNCH _B105 + !WORD _B105-* +_B104 +; samplesrc/rpncalc.pla: 0410: quit = TRUE +; samplesrc/rpncalc.pla: 0411: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$21 ; CB 33 + !BYTE $24 ; BRNE _B106 + !WORD _B106-* + !BYTE $20 ; MINUS ONE + !BYTE $78 ; SAB _D045+0 +_F211 !WORD _D045+0 +_B106 +_B105 +; samplesrc/rpncalc.pla: 0412: clearStatus +; samplesrc/rpncalc.pla: 0413: // +; samplesrc/rpncalc.pla: 0414: // Do something +; samplesrc/rpncalc.pla: 0415: // +; samplesrc/rpncalc.pla: 0416: initDisplay +; samplesrc/rpncalc.pla: 0417: showStack +; samplesrc/rpncalc.pla: 0418: showMem +; samplesrc/rpncalc.pla: 0419: showInput +; samplesrc/rpncalc.pla: 0420: end + !BYTE $54 ; CALL _C006 +_F212 !WORD _C006 + !BYTE $54 ; CALL _C009 +_F213 !WORD _C009 + !BYTE $54 ; CALL _C002 +_F214 !WORD _C002 + !BYTE $54 ; CALL _C003 +_F215 !WORD _C003 + !BYTE $54 ; CALL _C004 +_F216 !WORD _C004 + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/rpncalc.pla: 0421: // +; samplesrc/rpncalc.pla: 0422: // Keypress handler +; samplesrc/rpncalc.pla: 0423: // +; samplesrc/rpncalc.pla: 0424: def inputKey#0 +_C023 ; inputKey() +; samplesrc/rpncalc.pla: 0425: byte inkey + ; inkey -> [0] +; samplesrc/rpncalc.pla: 0426: word pkeys + ; pkeys -> [1] +; samplesrc/rpncalc.pla: 0427: +; samplesrc/rpncalc.pla: 0428: conio:echo(ECHO_OFF) + !BYTE $58,$03,$00 ; ENTER 3,0 +; samplesrc/rpncalc.pla: 0429: while not quit + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X032+4 +_F217 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B109 + !WORD _B109-* +_B107 +; samplesrc/rpncalc.pla: 0430: pkeys = @keypad +; samplesrc/rpncalc.pla: 0431: conio:gotoxy(18, 7) +; samplesrc/rpncalc.pla: 0432: inkey = toupper(getc) +; samplesrc/rpncalc.pla: 0433: while ^pkeys + !BYTE $26 ; LA _D050+0 +_F218 !WORD _D050+0 + !BYTE $76,$01 ; SLW [1] + !BYTE $2A,$12 ; CB 18 + !BYTE $0E ; CN 7 + !BYTE $6A ; LAW _X032+8 +_F219 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X006 +_F220 !WORD 0 + !BYTE $54 ; CALL _X021 +_F221 !WORD 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B112 + !WORD _B112-* +_B110 +; samplesrc/rpncalc.pla: 0434: if inkey == ^pkeys +; samplesrc/rpncalc.pla: 0435: conio:texttype(INVERSE) +; samplesrc/rpncalc.pla: 0436: conio:gotoxy(pkeys->xpos, pkeys->ypos) +; samplesrc/rpncalc.pla: 0437: puts(pkeys + keystr) +; samplesrc/rpncalc.pla: 0438: conio:texttype(NORMAL) +; samplesrc/rpncalc.pla: 0439: pkeys=>phandler(pkeys)#0 +; samplesrc/rpncalc.pla: 0440: conio:gotoxy(pkeys->xpos, pkeys->ypos) +; samplesrc/rpncalc.pla: 0441: puts(pkeys + keystr) +; samplesrc/rpncalc.pla: 0442: break + !BYTE $64,$00 ; LLB [0] + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B113 + !WORD _B113-* + !BYTE $2A,$3F ; CB 63 + !BYTE $6A ; LAW _X032+12 +_F222 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$01 ; LLW [1] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $6A ; LAW _X032+8 +_F223 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _X004 +_F224 !WORD 0 + !BYTE $2A,$FF ; CB 255 + !BYTE $6A ; LAW _X032+12 +_F225 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$01 ; LLW [1] + !BYTE $34 ; DUP + !BYTE $38,$0B ; ADDI 11 + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $66,$01 ; LLW [1] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $6A ; LAW _X032+8 +_F226 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$03 ; ADDI 3 + !BYTE $54 ; CALL _X004 +_F227 !WORD 0 + !BYTE $50 ; BRNCH _B111 + !WORD _B111-* +; samplesrc/rpncalc.pla: 0443: fin +_B113 +_B114 +; samplesrc/rpncalc.pla: 0444: pkeys = pkeys + t_keyinput +; samplesrc/rpncalc.pla: 0445: loop + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$01 ; SLW [1] +_B112 + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B110 + !WORD _B110-* +_B111 +; samplesrc/rpncalc.pla: 0446: loop +_B109 + !BYTE $68 ; LAB _D045+0 +_F228 !WORD _D045+0 + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* +_B108 +; samplesrc/rpncalc.pla: 0447: conio:echo(ECHO_ON) +; samplesrc/rpncalc.pla: 0448: end + !BYTE $2A,$80 ; CB 128 + !BYTE $6A ; LAW _X032+4 +_F229 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5A,$03 ; LEAVE 3 +; samplesrc/rpncalc.pla: 0449: initDisplay +_INIT +; samplesrc/rpncalc.pla: 0450: initState +; samplesrc/rpncalc.pla: 0451: initInput +; samplesrc/rpncalc.pla: 0452: showStack +; samplesrc/rpncalc.pla: 0453: showMem +; samplesrc/rpncalc.pla: 0454: showInput +; samplesrc/rpncalc.pla: 0455: showStatus("Version 0.7") + !BYTE $54 ; CALL _C009 +_F230 !WORD _C009 + !BYTE $54 ; CALL _C010 +_F231 !WORD _C010 + !BYTE $54 ; CALL _C007 +_F232 !WORD _C007 + !BYTE $54 ; CALL _C002 +_F233 !WORD _C002 + !BYTE $54 ; CALL _C003 +_F234 !WORD _C003 + !BYTE $54 ; CALL _C004 +_F235 !WORD _C004 + !BYTE $2E ; CS + !BYTE $0B + !BYTE $56,$65,$72,$73,$69,$6F,$6E,$20 + !BYTE $30,$2E,$37 + !BYTE $54 ; CALL _C005 +_F236 !WORD _C005 +; samplesrc/rpncalc.pla: 0456: inputKey +; samplesrc/rpncalc.pla: 0457: conio:gotoxy(0, 22) +; samplesrc/rpncalc.pla: 0458: done + !BYTE $54 ; CALL _C023 +_F237 !WORD _C023 + !BYTE $00 ; CN 0 + !BYTE $2A,$16 ; CB 22 + !BYTE $6A ; LAW _X032+8 +_F238 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 25 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: EXT2STR + !BYTE $C5,$D8,$D4,$B2,$D3,$D4,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FPU + !BYTE $C6,$D0,$55 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/sanity.a b/src/samplesrc/sanity.a new file mode 100644 index 0000000..4a3638b --- /dev/null +++ b/src/samplesrc/sanity.a @@ -0,0 +1,2574 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/sanity.pla: 0001: // +; samplesrc/sanity.pla: 0002: // SANE library test program +; samplesrc/sanity.pla: 0003: // +; samplesrc/sanity.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/sanity.pla: 0004: +; samplesrc/sanity.pla: 0005: include "inc/sane.plh" +; inc/sane.plh: 0001: import sane + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + ; SANE -> X028 +; inc/sane.plh: 0002: //----------------------------------------------------------- +; inc/sane.plh: 0003: // Operation code masks. +; inc/sane.plh: 0004: //----------------------------------------------------------- +; inc/sane.plh: 0005: const FOADD = $0000 // add + ; FOADD = 0 +; inc/sane.plh: 0006: const FOSUB = $0002 // subtract + ; FOSUB = 2 +; inc/sane.plh: 0007: const FOMUL = $0004 // multiply + ; FOMUL = 4 +; inc/sane.plh: 0008: const FODIV = $0006 // divide + ; FODIV = 6 +; inc/sane.plh: 0009: const FOCMP = $0008 // compare, no exception from unordered + ; FOCMP = 8 +; inc/sane.plh: 0010: const FOCPX = $000A // compare, signal invalid if unordered + ; FOCPX = 10 +; inc/sane.plh: 0011: const FOREM = $000C // remainder + ; FOREM = 12 +; inc/sane.plh: 0012: const FOZ2X = $000E // convert to extended + ; FOZ2X = 14 +; inc/sane.plh: 0013: const FOX2Z = $0010 // convert from extended + ; FOX2Z = 16 +; inc/sane.plh: 0014: const FOSQRT = $0012 // square root + ; FOSQRT = 18 +; inc/sane.plh: 0015: const FORTI = $0014 // round to integral value + ; FORTI = 20 +; inc/sane.plh: 0016: const FOTTI = $0016 // truncate to integral value + ; FOTTI = 22 +; inc/sane.plh: 0017: const FOSCALB = $0018 // binary scale + ; FOSCALB = 24 +; inc/sane.plh: 0018: const FOLOGB = $001A // binary log + ; FOLOGB = 26 +; inc/sane.plh: 0019: const FOCLASS = $001C // classify + ; FOCLASS = 28 +; inc/sane.plh: 0020: const FONEXT = $001E // next-after + ; FONEXT = 30 +; inc/sane.plh: 0021: // +; inc/sane.plh: 0022: const FOSETENV = $0001 // set environment + ; FOSETENV = 1 +; inc/sane.plh: 0023: const FOGETENV = $0003 // get environment + ; FOGETENV = 3 +; inc/sane.plh: 0024: const FOSETHV = $0005 // set halt vector + ; FOSETHV = 5 +; inc/sane.plh: 0025: const FOGETHV = $0007 // get halt vector + ; FOGETHV = 7 +; inc/sane.plh: 0026: const FOD2B = $0009 // convert decimal to binary + ; FOD2B = 9 +; inc/sane.plh: 0027: const FOB2D = $000B // convert binary to decimal + ; FOB2D = 11 +; inc/sane.plh: 0028: const FONEG = $000D // negate + ; FONEG = 13 +; inc/sane.plh: 0029: const FOABS = $000F // absolute value + ; FOABS = 15 +; inc/sane.plh: 0030: const FOCPYSGN = $0011 // copy sign + ; FOCPYSGN = 17 +; inc/sane.plh: 0031: // UNDEFINED = $0013 +; inc/sane.plh: 0032: const FOSETXCP = $0015 // set exception + ; FOSETXCP = 21 +; inc/sane.plh: 0033: const FOPROCENTRY = $0017 // procedure-entry + ; FOPROCENTRY = 23 +; inc/sane.plh: 0034: const FOPROCEXIT = $0019 // procedure-exit + ; FOPROCEXIT = 25 +; inc/sane.plh: 0035: const FOTESTXCP = $001B // test exception + ; FOTESTXCP = 27 +; inc/sane.plh: 0036: // UNDEFINED = $001D +; inc/sane.plh: 0037: // UNDEFINED = $001F +; inc/sane.plh: 0038: //----------------------------------------------------------- +; inc/sane.plh: 0039: // Operand format masks. +; inc/sane.plh: 0040: //----------------------------------------------------------- +; inc/sane.plh: 0041: const FFEXT = $0000 // extended -- 80-bit float + ; FFEXT = 0 +; inc/sane.plh: 0042: const FFDBL = $0100 // double -- 64-bit float + ; FFDBL = 256 +; inc/sane.plh: 0043: const FFSGL = $0200 // single -- 32-bit float + ; FFSGL = 512 +; inc/sane.plh: 0044: // UNDEFINED = $0300 +; inc/sane.plh: 0045: const FFINT = $0400 // integer -- 16-bit integer + ; FFINT = 1024 +; inc/sane.plh: 0046: const FFCOMP = $0500 // comp -- 64-bit integer + ; FFCOMP = 1280 +; inc/sane.plh: 0047: // UNDEFINED = $0600 +; inc/sane.plh: 0048: // UNDEFINED = $0700 +; inc/sane.plh: 0049: //----------------------------------------------------------- +; inc/sane.plh: 0050: // Class. +; inc/sane.plh: 0051: //----------------------------------------------------------- +; inc/sane.plh: 0052: const FCSNAN = $FC // -4: signaling NAN + ; FCSNAN = 252 +; inc/sane.plh: 0053: const FCQNAN = $FD // -3: quiet NAN + ; FCQNAN = 253 +; inc/sane.plh: 0054: const FCINF = $FE // -2: infinite + ; FCINF = 254 +; inc/sane.plh: 0055: const FCZERO = $FF // -1: zero + ; FCZERO = 255 +; inc/sane.plh: 0056: const FCNORM = $00 // 0: normal + ; FCNORM = 0 +; inc/sane.plh: 0057: const FCDENORM = $01 // 1: denormal + ; FCDENORM = 1 +; inc/sane.plh: 0058: //----------------------------------------------------------- +; inc/sane.plh: 0059: // Exceptions. +; inc/sane.plh: 0060: //----------------------------------------------------------- +; inc/sane.plh: 0061: const FBINVALID = $01 + ; FBINVALID = 1 +; inc/sane.plh: 0062: const FBUFLOW = $02 + ; FBUFLOW = 2 +; inc/sane.plh: 0063: const FBOFLOW = $04 + ; FBOFLOW = 4 +; inc/sane.plh: 0064: const FBDIVZER = $08 + ; FBDIVZER = 8 +; inc/sane.plh: 0065: const FBINEXACT = $10 + ; FBINEXACT = 16 +; inc/sane.plh: 0066: //----------------------------------------------------------- +; inc/sane.plh: 0067: // Elementary function operation code masks. +; inc/sane.plh: 0068: //----------------------------------------------------------- +; inc/sane.plh: 0069: const FOLNX = $0000 // base-e log + ; FOLNX = 0 +; inc/sane.plh: 0070: const FOLOG2X = $0002 // base-2 log + ; FOLOG2X = 2 +; inc/sane.plh: 0071: const FOLN1X = $0004 // ln (1 + x) + ; FOLN1X = 4 +; inc/sane.plh: 0072: const FOLOG21X = $0006 // log2 (1 + x) + ; FOLOG21X = 6 +; inc/sane.plh: 0073: const FOEXPX = $0008 // base-e exponential + ; FOEXPX = 8 +; inc/sane.plh: 0074: const FOEXP2X = $000A // base-2 exponential + ; FOEXP2X = 10 +; inc/sane.plh: 0075: const FOEXP1X = $000C // exp (x) - 1 + ; FOEXP1X = 12 +; inc/sane.plh: 0076: const FOEXP21X = $000E // exp2 (x) - 1 + ; FOEXP21X = 14 +; inc/sane.plh: 0077: const FOXPWRI = $0010 // integer exponentiation + ; FOXPWRI = 16 +; inc/sane.plh: 0078: const FOXPWRY = $0012 // general exponentiation + ; FOXPWRY = 18 +; inc/sane.plh: 0079: const FOCOMPND = $0014 // compound + ; FOCOMPND = 20 +; inc/sane.plh: 0080: const FOANNUIT = $0016 // annuity + ; FOANNUIT = 22 +; inc/sane.plh: 0081: const FOATANX = $0018 // arctangent + ; FOATANX = 24 +; inc/sane.plh: 0082: const FOSINX = $001A // sine + ; FOSINX = 26 +; inc/sane.plh: 0083: const FOCOSX = $001C // cosine + ; FOCOSX = 28 +; inc/sane.plh: 0084: const FOTANX = $001E // tangent + ; FOTANX = 30 +; inc/sane.plh: 0085: const FORANDX = $0020 // random + ; FORANDX = 32 +; inc/sane.plh: 0086: //----------------------------------------------------------- +; inc/sane.plh: 0087: // NaN error codes. +; inc/sane.plh: 0088: //----------------------------------------------------------- +; inc/sane.plh: 0089: const NANSQRT = 1 // Invalid square root such as sqrt(-1). + ; NANSQRT = 1 +; inc/sane.plh: 0090: const NANADD = 2 // Invalid addition such as +INF - +INF. + ; NANADD = 2 +; inc/sane.plh: 0091: const NANDIV = 4 // Invalid division such as 0/0. + ; NANDIV = 4 +; inc/sane.plh: 0092: const NANMUL = 8 // Invalid multiply such as 0 * INF. + ; NANMUL = 8 +; inc/sane.plh: 0093: const NANREM = 9 // Invalid remainder or mod such as x REM 0. + ; NANREM = 9 +; inc/sane.plh: 0094: const NANASCBIN = 17 // Attempt to convert invalid ASCII string. + ; NANASCBIN = 17 +; inc/sane.plh: 0095: const NANCOMP = 20 // Result of converting comp NaN to floating. + ; NANCOMP = 20 +; inc/sane.plh: 0096: const NANZERO = 21 // Attempt to create a NaN with a zero code. + ; NANZERO = 21 +; inc/sane.plh: 0097: const NANTRIG = 33 // Invalid argument to trig routine. + ; NANTRIG = 33 +; inc/sane.plh: 0098: const NANINVTRIG = 34 // Invalid argument to inverse trig routine. + ; NANINVTRIG = 34 +; inc/sane.plh: 0099: const NANLOG = 36 // Invalid argument to log routine. + ; NANLOG = 36 +; inc/sane.plh: 0100: const NANPOWER = 37 // Invalid argument to x^i or x^y routine. + ; NANPOWER = 37 +; inc/sane.plh: 0101: const NANFINAN = 38 // Invalid argument to financial function. + ; NANFINAN = 38 +; inc/sane.plh: 0102: const NANINIT = 255 // Uninitialized storage. + ; NANINIT = 255 +; inc/sane.plh: 0103: //----------------------------------------------------------- +; inc/sane.plh: 0104: // Comparison results. +; inc/sane.plh: 0105: //----------------------------------------------------------- +; inc/sane.plh: 0106: const FCMPGT = $4040 // Greater Than + ; FCMPGT = 16448 +; inc/sane.plh: 0107: const FCMPLT = $8080 // Less Than + ; FCMPLT = 32896 +; inc/sane.plh: 0108: const FCMPEQ = $0002 // EQual + ; FCMPEQ = 2 +; inc/sane.plh: 0109: const FCMPUN = $0101 // UNordered + ; FCMPUN = 257 +; inc/sane.plh: 0110: //----------------------------------------------------------- +; inc/sane.plh: 0111: // +; inc/sane.plh: 0112: // Data types +; inc/sane.plh: 0113: // +; inc/sane.plh: 0114: struc t_single +; inc/sane.plh: 0115: byte[3] s_mantissa + ; s_mantissa = 0 +; inc/sane.plh: 0116: byte s_exponent + ; s_exponent = 3 +; inc/sane.plh: 0117: end + ; t_single = 4 +; inc/sane.plh: 0118: struc t_double +; inc/sane.plh: 0119: byte[6] d_mantissa + ; d_mantissa = 0 +; inc/sane.plh: 0120: word d_exponent + ; d_exponent = 6 +; inc/sane.plh: 0121: end + ; t_double = 8 +; inc/sane.plh: 0122: struc t_extended +; inc/sane.plh: 0123: byte[8] x_mantissa + ; x_mantissa = 0 +; inc/sane.plh: 0124: word x_exponent + ; x_exponent = 8 +; inc/sane.plh: 0125: end + ; t_extended = 10 +; inc/sane.plh: 0126: struc t_bigint +; inc/sane.plh: 0127: byte[8] l_int + ; l_int = 0 +; inc/sane.plh: 0128: end + ; t_bigint = 8 +; inc/sane.plh: 0129: // +; inc/sane.plh: 0130: // SANE PLASMA interface +; inc/sane.plh: 0131: // +; inc/sane.plh: 0132: struc t_sane +; inc/sane.plh: 0133: word initFP + ; initFP = 0 +; inc/sane.plh: 0134: word haltFP + ; haltFP = 2 +; inc/sane.plh: 0135: word op0FP + ; op0FP = 4 +; inc/sane.plh: 0136: word op1FP + ; op1FP = 6 +; inc/sane.plh: 0137: word op2FP + ; op2FP = 8 +; inc/sane.plh: 0138: word op3FP + ; op3FP = 10 +; inc/sane.plh: 0139: word op1ELEM + ; op1ELEM = 12 +; inc/sane.plh: 0140: word op2ELEM + ; op2ELEM = 14 +; inc/sane.plh: 0141: word op3ELEM + ; op3ELEM = 16 +; inc/sane.plh: 0142: word saveZP + ; saveZP = 18 +; inc/sane.plh: 0143: word restoreZP + ; restoreZP = 20 +; inc/sane.plh: 0144: end + ; t_sane = 22 +; inc/sane.plh: 0145: end +; samplesrc/sanity.pla: 0005: +; samplesrc/sanity.pla: 0006: +; samplesrc/sanity.pla: 0007: struc t_decrecord + !BYTE $00 ; END OF MODULE DEPENDENCIES +; samplesrc/sanity.pla: 0008: word sgn + ; sgn = 0 +; samplesrc/sanity.pla: 0009: word exp + ; exp = 2 +; samplesrc/sanity.pla: 0010: byte sig[29] + ; sig = 4 +; samplesrc/sanity.pla: 0011: end + ; t_decrecord = 33 +; samplesrc/sanity.pla: 0012: struc t_decformat +; samplesrc/sanity.pla: 0013: word style + ; style = 0 +; samplesrc/sanity.pla: 0014: word digits + ; digits = 2 +; samplesrc/sanity.pla: 0015: end + ; t_decformat = 4 +; samplesrc/sanity.pla: 0016: // +; samplesrc/sanity.pla: 0017: // Test values +; samplesrc/sanity.pla: 0018: // +; samplesrc/sanity.pla: 0019: word iA, iB, iC, zero, fpEnv +_D029 !FILL 2 ; iA, iB, iC, zero, fpEnv +_D030 !FILL 2 ; iB, iC, zero, fpEnv +_D031 !FILL 2 ; iC, zero, fpEnv +_D032 !FILL 2 ; zero, fpEnv +_D033 !FILL 2 ; fpEnv +; samplesrc/sanity.pla: 0020: byte xT[t_extended] +_D034 !FILL 10 ; xT[t_extended] +; samplesrc/sanity.pla: 0021: byte strNum = "-100.25" +_D035 ; strNum = "-100.25" + !BYTE $07 + !BYTE $2D,$31,$30,$30,$2E,$32,$35 +; samplesrc/sanity.pla: 0022: byte strA[16] +_D036 !FILL 16 ; strA[16] +; samplesrc/sanity.pla: 0023: def prbyte(h)#0 +_SUBSEG ; BYTECODE STARTS + ; h -> [0] +_C000 ; prbyte() +; samplesrc/sanity.pla: 0024: putc('$') + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/sanity.pla: 0025: call($FDDA, h, 0, 0, 0) +; samplesrc/sanity.pla: 0026: end + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $2C,$DA,$FD ; CW 64986 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F001 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/sanity.pla: 0027: def prword(h)#0 + ; h -> [0] +_C001 ; prword() +; samplesrc/sanity.pla: 0028: putc('$') + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/sanity.pla: 0029: call($F941, h >> 8, h, 0, 0) +; samplesrc/sanity.pla: 0030: end + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F002 !WORD 0 + !BYTE $2C,$41,$F9 ; CW 63809 + !BYTE $64,$01 ; LLB [1] + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F003 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/sanity.pla: 0031: // +; samplesrc/sanity.pla: 0032: // Parse string into decrecord +; samplesrc/sanity.pla: 0033: // +; samplesrc/sanity.pla: 0034: def str2ext(str, ext) + ; str -> [0] + ; ext -> [2] +_C002 ; str2ext() +; samplesrc/sanity.pla: 0035: byte i, s, d + ; i -> [4] + ; s -> [5] + ; d -> [6] +; samplesrc/sanity.pla: 0036: byte decrec[t_decrecord] + ; decrec -> [7] +; samplesrc/sanity.pla: 0037: word sgnadj, expadj + ; sgnadj -> [40] + ; expadj -> [42] +; samplesrc/sanity.pla: 0038: +; samplesrc/sanity.pla: 0039: decrec:sgn = 0 + !BYTE $58,$2C,$02 ; ENTER 44,2 +; samplesrc/sanity.pla: 0040: decrec:exp = 0 +; samplesrc/sanity.pla: 0041: decrec.sig = 0 +; samplesrc/sanity.pla: 0042: s = 1 +; samplesrc/sanity.pla: 0043: i = 1 +; samplesrc/sanity.pla: 0044: // +; samplesrc/sanity.pla: 0045: // Skip whitespace +; samplesrc/sanity.pla: 0046: // +; samplesrc/sanity.pla: 0047: while ^(str+i) <= ' ' and i <= ^str; i++; loop + !BYTE $00 ; CN 0 + !BYTE $76,$07 ; SLW [7] + !BYTE $00 ; CN 0 + !BYTE $76,$09 ; SLW [9] + !BYTE $00 ; CN 0 + !BYTE $74,$0B ; SLB [11] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $02 ; CN 1 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR + !BYTE $74,$04 ; SLB [4] +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE +_B004 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; samplesrc/sanity.pla: 0048: // +; samplesrc/sanity.pla: 0049: // Check for sign +; samplesrc/sanity.pla: 0050: // +; samplesrc/sanity.pla: 0051: if ^(str+i) == '-' +; samplesrc/sanity.pla: 0052: decrec:sgn = 1 +; samplesrc/sanity.pla: 0053: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B005 + !WORD _B005-* + !BYTE $02 ; CN 1 + !BYTE $76,$07 ; SLW [7] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0054: elsif ^(str+i) == '+' + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B005 +; samplesrc/sanity.pla: 0055: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2B ; CB 43 + !BYTE $24 ; BRNE _B007 + !WORD _B007-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0056: fin + !BYTE $74,$04 ; SLB [4] +_B007 +_B006 +; samplesrc/sanity.pla: 0057: // +; samplesrc/sanity.pla: 0058: // Skip leading zeros +; samplesrc/sanity.pla: 0059: // +; samplesrc/sanity.pla: 0060: while i <= ^str and ^(str+i) == '0' + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B008 +; samplesrc/sanity.pla: 0061: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0062: loop + !BYTE $74,$04 ; SLB [4] +_B010 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B011 + !WORD _B011-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B011 + !BYTE $4E ; BRTRU _B008 + !WORD _B008-* +_B009 +; samplesrc/sanity.pla: 0063: // +; samplesrc/sanity.pla: 0064: // Parse number +; samplesrc/sanity.pla: 0065: // +; samplesrc/sanity.pla: 0066: while i <= ^str + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B012 +; samplesrc/sanity.pla: 0067: d = toupper(^(str+i)) +; samplesrc/sanity.pla: 0068: if d >= '0' and d <= '9' +; samplesrc/sanity.pla: 0069: // +; samplesrc/sanity.pla: 0070: // Parse digit +; samplesrc/sanity.pla: 0071: // +; samplesrc/sanity.pla: 0072: decrec.sig[s] = ^(str+i) +; samplesrc/sanity.pla: 0073: decrec:sig++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F004 !WORD 0 + !BYTE $6C,$06 ; DLB [6] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B015 + !WORD _B015-* + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B015 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $28,$0B ; LLA [11] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $70 ; SB + !BYTE $66,$0B ; LLW [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0074: s++ + !BYTE $76,$0B ; SLW [11] + !BYTE $64,$05 ; LLB [5] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0075: elsif d == '.' + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B016 +; samplesrc/sanity.pla: 0076: // +; samplesrc/sanity.pla: 0077: // Parse decimal point +; samplesrc/sanity.pla: 0078: // +; samplesrc/sanity.pla: 0079: i++ + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B018 + !WORD _B018-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0080: while i <= ^str + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B019 +; samplesrc/sanity.pla: 0081: d = toupper(^(str+i)) +; samplesrc/sanity.pla: 0082: if d >= '0' and d <= '9' +; samplesrc/sanity.pla: 0083: decrec.sig[s] = ^(str+i) +; samplesrc/sanity.pla: 0084: decrec.sig++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F005 !WORD 0 + !BYTE $6C,$06 ; DLB [6] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B022 + !WORD _B022-* + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B022 + !BYTE $4C ; BRFLS _B023 + !WORD _B023-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $28,$0B ; LLA [11] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $70 ; SB + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0085: decrec:exp-- + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$09 ; LLW [9] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0086: s++ + !BYTE $76,$09 ; SLW [9] + !BYTE $64,$05 ; LLB [5] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0087: elsif d == 'E' + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B023 +; samplesrc/sanity.pla: 0088: i-- + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$45 ; CB 69 + !BYTE $24 ; BRNE _B025 + !WORD _B025-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0089: break + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B020 + !WORD _B020-* +; samplesrc/sanity.pla: 0090: else + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B025 +; samplesrc/sanity.pla: 0091: i = ^str +; samplesrc/sanity.pla: 0092: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B024 +; samplesrc/sanity.pla: 0093: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0094: loop + !BYTE $74,$04 ; SLB [4] +_B021 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B019 + !WORD _B019-* +_B020 +; samplesrc/sanity.pla: 0095: elsif d == 'E' + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B018 +; samplesrc/sanity.pla: 0096: // +; samplesrc/sanity.pla: 0097: // Parse exponent +; samplesrc/sanity.pla: 0098: // +; samplesrc/sanity.pla: 0099: i++ + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$45 ; CB 69 + !BYTE $24 ; BRNE _B026 + !WORD _B026-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0100: expadj = 0 +; samplesrc/sanity.pla: 0101: sgnadj = 1 +; samplesrc/sanity.pla: 0102: if ^(str+i) == '-' +; samplesrc/sanity.pla: 0103: sgnadj = -1 +; samplesrc/sanity.pla: 0104: i++ + !BYTE $74,$04 ; SLB [4] + !BYTE $00 ; CN 0 + !BYTE $76,$2A ; SLW [42] + !BYTE $02 ; CN 1 + !BYTE $76,$28 ; SLW [40] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B027 + !WORD _B027-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$28 ; SLW [40] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0105: elsif ^(str+i) == '+' + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B027 +; samplesrc/sanity.pla: 0106: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$2B ; CB 43 + !BYTE $24 ; BRNE _B029 + !WORD _B029-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0107: fin + !BYTE $74,$04 ; SLB [4] +_B029 +_B028 +; samplesrc/sanity.pla: 0108: while i <= ^str + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +_B030 +; samplesrc/sanity.pla: 0109: d = ^(str+i) +; samplesrc/sanity.pla: 0110: i++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $74,$06 ; SLB [6] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0111: if d >= '0' and d <= '9' +; samplesrc/sanity.pla: 0112: expadj = expadj * 10 + (d - '0') +; samplesrc/sanity.pla: 0113: else + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $66,$2A ; LLW [42] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $64,$06 ; LLB [6] + !BYTE $3A,$30 ; SUBI 48 + !BYTE $82 ; ADD + !BYTE $76,$2A ; SLW [42] + !BYTE $50 ; BRNCH _B035 + !WORD _B035-* +_B034 +; samplesrc/sanity.pla: 0114: i = ^str +; samplesrc/sanity.pla: 0115: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B035 +; samplesrc/sanity.pla: 0116: loop +_B032 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B030 + !WORD _B030-* +_B031 +; samplesrc/sanity.pla: 0117: decrec:exp = decrec:exp + (sgnadj * expadj) +; samplesrc/sanity.pla: 0118: else + !BYTE $66,$09 ; LLW [9] + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$2A ; LLW [42] + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $76,$09 ; SLW [9] + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B026 +; samplesrc/sanity.pla: 0119: i = ^str +; samplesrc/sanity.pla: 0120: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] +_B017 +; samplesrc/sanity.pla: 0121: i++ + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0122: loop + !BYTE $74,$04 ; SLB [4] +_B014 + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* +_B013 +; samplesrc/sanity.pla: 0123: // +; samplesrc/sanity.pla: 0124: // Strip leading zeros from sig +; samplesrc/sanity.pla: 0125: // +; samplesrc/sanity.pla: 0126: while decrec.sig > 1 and decrec.sig.1 == '0' + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B036 +; samplesrc/sanity.pla: 0127: decrec.sig-- + !BYTE $64,$0B ; LLB [11] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0128: if decrec:exp < 0 +; samplesrc/sanity.pla: 0129: decrec:exp-- + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$09 ; LLW [9] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $66,$09 ; LLW [9] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0130: fin + !BYTE $76,$09 ; SLW [9] +_B040 +_B041 +; samplesrc/sanity.pla: 0131: memcpy(@decrec.sig.1, @decrec.sig.2, decrec.sig) +; samplesrc/sanity.pla: 0132: loop + !BYTE $28,$0B ; LLA [11] + !BYTE $8C ; INCR + !BYTE $28,$0B ; LLA [11] + !BYTE $38,$02 ; ADDI 2 + !BYTE $64,$0B ; LLB [11] + !BYTE $54 ; CALL _X018 +_F006 !WORD 0 +_B038 + !BYTE $64,$0B ; LLB [11] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B039 + !WORD _B039-* + !BYTE $28,$0B ; LLA [11] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B039 + !BYTE $4E ; BRTRU _B036 + !WORD _B036-* +_B037 +; samplesrc/sanity.pla: 0133: // +; samplesrc/sanity.pla: 0134: // Check for zero +; samplesrc/sanity.pla: 0135: // +; samplesrc/sanity.pla: 0136: if !decrec.sig +; samplesrc/sanity.pla: 0137: decrec.sig = 1 +; samplesrc/sanity.pla: 0138: decrec.sig.1 = '0' +; samplesrc/sanity.pla: 0139: fin + !BYTE $64,$0B ; LLB [11] + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $02 ; CN 1 + !BYTE $74,$0B ; SLB [11] + !BYTE $2A,$30 ; CB 48 + !BYTE $28,$0B ; LLA [11] + !BYTE $8C ; INCR + !BYTE $70 ; SB +_B042 +_B043 +; samplesrc/sanity.pla: 0140: //putc(decrec.sgn ?? '-' :: '+'); puts(@decrec.sig); putc('e'); puti(decrec:exp); putln +; samplesrc/sanity.pla: 0141: sane:saveZP() +; samplesrc/sanity.pla: 0142: return sane:restoreZP(sane:op2FP(FFEXT|FOD2B, ext, @decrec)) + !BYTE $6A ; LAW _X028+18 +_F007 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $12 ; CN 9 + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$07 ; LLA [7] + !BYTE $6A ; LAW _X028+8 +_F008 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F009 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $5A,$2C ; LEAVE 44 +; samplesrc/sanity.pla: 0143: end +; samplesrc/sanity.pla: 0144: def ext2str(ext, str, intdigits, fracdigits, format) + ; ext -> [0] + ; str -> [2] + ; intdigits -> [4] + ; fracdigits -> [6] + ; format -> [8] +_C003 ; ext2str() +; samplesrc/sanity.pla: 0145: byte d, i, sigdigits, numdigits + ; d -> [10] + ; i -> [11] + ; sigdigits -> [12] + ; numdigits -> [13] +; samplesrc/sanity.pla: 0146: word dp, tens + ; dp -> [14] + ; tens -> [16] +; samplesrc/sanity.pla: 0147: byte decform[t_decformat] + ; decform -> [18] +; samplesrc/sanity.pla: 0148: byte decrec[t_decrecord] + ; decrec -> [22] +; samplesrc/sanity.pla: 0149: +; samplesrc/sanity.pla: 0150: numdigits = intdigits + fracdigits + !BYTE $58,$37,$05 ; ENTER 55,5 +; samplesrc/sanity.pla: 0151: decform:style = format & $01 +; samplesrc/sanity.pla: 0152: decform:digits = decform:style ?? fracdigits :: numdigits +; samplesrc/sanity.pla: 0153: sane:saveZP() +; samplesrc/sanity.pla: 0154: sane:restoreZP(sane:op3FP(FFEXT|FOB2D, @decrec, ext, @decform)) +; samplesrc/sanity.pla: 0155: ^(str+1) = decrec.sgn ?? '-' :: ' ' +; samplesrc/sanity.pla: 0156: if decrec.sig.1 == 'I' +; samplesrc/sanity.pla: 0157: ^(str+2) = 'I' +; samplesrc/sanity.pla: 0158: ^(str+3) = 'n' +; samplesrc/sanity.pla: 0159: ^(str+4) = 'f' +; samplesrc/sanity.pla: 0160: ^str = 4 +; samplesrc/sanity.pla: 0161: return str + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $74,$0D ; SLB [13] + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $6E,$12 ; DLW [18] + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $66,$06 ; LLW [6] + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B044 + !BYTE $64,$0D ; LLB [13] +_B045 + !BYTE $76,$14 ; SLW [20] + !BYTE $6A ; LAW _X028+18 +_F010 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $16 ; CN 11 + !BYTE $28,$16 ; LLA [22] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$12 ; LLA [18] + !BYTE $6A ; LAW _X028+10 +_F011 !WORD 0+10 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X028+20 +_F012 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$16 ; LLB [22] + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $2A,$2D ; CB 45 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B046 + !BYTE $2A,$20 ; CB 32 +_B047 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$49 ; CB 73 + !BYTE $24 ; BRNE _B048 + !WORD _B048-* + !BYTE $2A,$49 ; CB 73 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$6E ; CB 110 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$66 ; CB 102 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; samplesrc/sanity.pla: 0162: fin +_B048 +_B049 +; samplesrc/sanity.pla: 0163: if decrec.sig.1 == 'N' +; samplesrc/sanity.pla: 0164: ^(str+2) = 'N' +; samplesrc/sanity.pla: 0165: ^(str+3) = 'a' +; samplesrc/sanity.pla: 0166: ^(str+4) = 'N' +; samplesrc/sanity.pla: 0167: ^str = 4 +; samplesrc/sanity.pla: 0168: return str + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$4E ; CB 78 + !BYTE $24 ; BRNE _B050 + !WORD _B050-* + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$61 ; CB 97 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; samplesrc/sanity.pla: 0169: fin +_B050 +_B051 +; samplesrc/sanity.pla: 0170: if decrec.sig.1 == '0' +; samplesrc/sanity.pla: 0171: while decrec.sig < fracdigits + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $24 ; BRNE _B052 + !WORD _B052-* + !BYTE $50 ; BRNCH _B056 + !WORD _B056-* +_B054 +; samplesrc/sanity.pla: 0172: decrec.sig++ + !BYTE $64,$1A ; LLB [26] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0173: decrec.sig[decrec.sig] = '0' +; samplesrc/sanity.pla: 0174: loop + !BYTE $74,$1A ; SLB [26] + !BYTE $2A,$30 ; CB 48 + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$1A ; ADDLB [26] + !BYTE $70 ; SB +_B056 + !BYTE $64,$1A ; LLB [26] + !BYTE $66,$06 ; LLW [6] + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B054 + !WORD _B054-* +_B055 +; samplesrc/sanity.pla: 0175: decrec:exp = -decrec.sig +; samplesrc/sanity.pla: 0176: fin + !BYTE $64,$1A ; LLB [26] + !BYTE $90 ; NEG + !BYTE $76,$18 ; SLW [24] +_B052 +_B053 +; samplesrc/sanity.pla: 0177: dp = decrec.sig + decrec:exp +; samplesrc/sanity.pla: 0178: sigdigits = decrec.sig +; samplesrc/sanity.pla: 0179: if decrec:exp < 0 and format & $02 +; samplesrc/sanity.pla: 0180: // +; samplesrc/sanity.pla: 0181: // Strip off trailing fractional zeros +; samplesrc/sanity.pla: 0182: // +; samplesrc/sanity.pla: 0183: while sigdigits > dp and decrec.sig[sigdigits] == '0' + !BYTE $64,$1A ; LLB [26] + !BYTE $B2,$18 ; ADDLW [24] + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$1A ; LLB [26] + !BYTE $74,$0C ; SLB [12] + !BYTE $66,$18 ; LLW [24] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B057 + !WORD _B057-* + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$02 ; ANDI 2 +_B057 + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B060 +; samplesrc/sanity.pla: 0184: sigdigits-- + !BYTE $64,$0C ; LLB [12] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0185: decrec:exp++ + !BYTE $74,$0C ; SLB [12] + !BYTE $66,$18 ; LLW [24] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0186: loop + !BYTE $76,$18 ; SLW [24] +_B062 + !BYTE $64,$0C ; LLB [12] + !BYTE $66,$0E ; LLW [14] + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B063 + !WORD _B063-* + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$0C ; ADDLB [12] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $40 ; ISEQ +_B063 + !BYTE $4E ; BRTRU _B060 + !WORD _B060-* +_B061 +; samplesrc/sanity.pla: 0187: fin +_B058 +_B059 +; samplesrc/sanity.pla: 0188: //puts("sigdigits: "); puti(sigdigits); putln +; samplesrc/sanity.pla: 0189: //putc(decrec.sgn ?? '-' :: '+'); puts(@decrec.sig); putc('e'); puti(decrec:exp); putln +; samplesrc/sanity.pla: 0190: //if sigdigits - decrec:exp > numdigits or decrec:exp > 0 or format & $04 +; samplesrc/sanity.pla: 0191: if -decrec:exp > numdigits or decrec:exp > 0 or format & $04 +; samplesrc/sanity.pla: 0192: // +; samplesrc/sanity.pla: 0193: // Convert to exponential format +; samplesrc/sanity.pla: 0194: // +; samplesrc/sanity.pla: 0195: ^(str+2) = decrec.sig.1 +; samplesrc/sanity.pla: 0196: ^(str+3) = '.' +; samplesrc/sanity.pla: 0197: i = 3 +; samplesrc/sanity.pla: 0198: for d = 0 to fracdigits//decrec.sig + !BYTE $66,$18 ; LLW [24] + !BYTE $90 ; NEG + !BYTE $64,$0D ; LLB [13] + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B064 + !WORD _B064-* + !BYTE $66,$18 ; LLW [24] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B065 + !WORD _B065-* + !BYTE $66,$08 ; LLW [8] + !BYTE $3C,$04 ; ANDI 4 +_B065 +_B064 + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $28,$1A ; LLA [26] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2A,$2E ; CB 46 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $06 ; CN 3 + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$06 ; LLW [6] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B068 + !WORD _B068-* +_B069 + !BYTE $6C,$0A ; DLB [10] +; samplesrc/sanity.pla: 0199: i++ + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0200: ^(str+i) = decrec.sig.2[d] +; samplesrc/sanity.pla: 0201: next + !BYTE $74,$0B ; SLB [11] + !BYTE $28,$1A ; LLA [26] + !BYTE $38,$02 ; ADDI 2 + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB +_B070 + !BYTE $A4 ; INCBRLE _B069 + !WORD _B069-* +_B068 + !BYTE $74,$0A ; SLB [10] + !BYTE $30 ; DROP +; samplesrc/sanity.pla: 0202: // +; samplesrc/sanity.pla: 0203: // Copy over all significant digits +; samplesrc/sanity.pla: 0204: // +; samplesrc/sanity.pla: 0205: if ^(str+i) == '.'; i--; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B071 + !WORD _B071-* + !BYTE $64,$0B ; LLB [11] + !BYTE $8E ; DECR + !BYTE $74,$0B ; SLB [11] +_B071 +_B072 +; samplesrc/sanity.pla: 0206: i++ + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0207: ^(str+i) = 'E' +; samplesrc/sanity.pla: 0208: i++ + !BYTE $74,$0B ; SLB [11] + !BYTE $2A,$45 ; CB 69 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0209: dp-- + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; samplesrc/sanity.pla: 0210: if dp < 0 +; samplesrc/sanity.pla: 0211: ^(str+i) = '-' +; samplesrc/sanity.pla: 0212: dp = -dp +; samplesrc/sanity.pla: 0213: else + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $2A,$2D ; CB 45 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $76,$0E ; SLW [14] + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B073 +; samplesrc/sanity.pla: 0214: ^(str+i) = '+' +; samplesrc/sanity.pla: 0215: if dp == 0 +; samplesrc/sanity.pla: 0216: i++ + !BYTE $2A,$2B ; CB 43 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB + !BYTE $66,$0E ; LLW [14] + !BYTE $4E ; BRTRU _B075 + !WORD _B075-* + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0217: ^(str+i) = '0' +; samplesrc/sanity.pla: 0218: fin + !BYTE $74,$0B ; SLB [11] + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB +_B075 +_B076 +; samplesrc/sanity.pla: 0219: fin +_B074 +; samplesrc/sanity.pla: 0220: // +; samplesrc/sanity.pla: 0221: // Pretty output the exponent (preceding zero for values less than 10) +; samplesrc/sanity.pla: 0222: d = 0 +; samplesrc/sanity.pla: 0223: tens = 10000 +; samplesrc/sanity.pla: 0224: while dp + !BYTE $00 ; CN 0 + !BYTE $74,$0A ; SLB [10] + !BYTE $2C,$10,$27 ; CW 10000 + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +_B077 +; samplesrc/sanity.pla: 0225: d = d or tens <= 10 +; samplesrc/sanity.pla: 0226: if dp >= tens or d +; samplesrc/sanity.pla: 0227: d = 1 +; samplesrc/sanity.pla: 0228: i++ + !BYTE $64,$0A ; LLB [10] + !BYTE $AE ; BROR _B080 + !WORD _B080-* + !BYTE $66,$10 ; LLW [16] + !BYTE $14 ; CN 10 + !BYTE $4A ; ISLE +_B080 + !BYTE $74,$0A ; SLB [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $48 ; ISGE + !BYTE $AE ; BROR _B081 + !WORD _B081-* + !BYTE $64,$0A ; LLB [10] +_B081 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $02 ; CN 1 + !BYTE $74,$0A ; SLB [10] + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0229: ^(str+i) = (dp / tens) + '0' +; samplesrc/sanity.pla: 0230: fin + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $88 ; DIV + !BYTE $38,$30 ; ADDI 48 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB +_B082 +_B083 +; samplesrc/sanity.pla: 0231: dp = dp % tens +; samplesrc/sanity.pla: 0232: tens = tens / 10 +; samplesrc/sanity.pla: 0233: if !tens; break; fin + !BYTE $66,$0E ; LLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $8A ; MOD + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $6E,$10 ; DLW [16] + !BYTE $4E ; BRTRU _B084 + !WORD _B084-* + !BYTE $50 ; BRNCH _B078 + !WORD _B078-* +_B084 +_B085 +; samplesrc/sanity.pla: 0234: loop +_B079 + !BYTE $66,$0E ; LLW [14] + !BYTE $4E ; BRTRU _B077 + !WORD _B077-* +_B078 +; samplesrc/sanity.pla: 0235: //puts("DP=");puti(dp);puts(" digits="); puti(decrec.sig); puts(" exp="); puti(decrec:exp); putln +; samplesrc/sanity.pla: 0236: else + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B066 +; samplesrc/sanity.pla: 0237: // +; samplesrc/sanity.pla: 0238: // Convert as floating point +; samplesrc/sanity.pla: 0239: // +; samplesrc/sanity.pla: 0240: //puts("DP=");puti(dp);puts(" digits="); puti(decrec.sig); puts(" exp="); puti(decrec:exp); putln +; samplesrc/sanity.pla: 0241: i = 1 +; samplesrc/sanity.pla: 0242: if dp <= 0 +; samplesrc/sanity.pla: 0243: *(str+2) = '0'|('.'<<8) +; samplesrc/sanity.pla: 0244: i = 3 +; samplesrc/sanity.pla: 0245: while dp < 0 + !BYTE $02 ; CN 1 + !BYTE $74,$0B ; SLB [11] + !BYTE $66,$0E ; LLW [14] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $2C,$30,$2E ; CW 11824 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $06 ; CN 3 + !BYTE $74,$0B ; SLB [11] + !BYTE $50 ; BRNCH _B090 + !WORD _B090-* +_B088 +; samplesrc/sanity.pla: 0246: dp++ + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0247: i++ + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0248: ^(str+i) = '0' +; samplesrc/sanity.pla: 0249: loop + !BYTE $74,$0B ; SLB [11] + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB +_B090 + !BYTE $66,$0E ; LLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B088 + !WORD _B088-* +_B089 +; samplesrc/sanity.pla: 0250: fin +_B086 +_B087 +; samplesrc/sanity.pla: 0251: for d = 1 to sigdigits + !BYTE $64,$0C ; LLB [12] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B091 + !WORD _B091-* +_B092 + !BYTE $6C,$0A ; DLB [10] +; samplesrc/sanity.pla: 0252: i++ + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0253: ^(str+i) = decrec.sig[d] +; samplesrc/sanity.pla: 0254: if d == dp +; samplesrc/sanity.pla: 0255: i++ + !BYTE $74,$0B ; SLB [11] + !BYTE $28,$1A ; LLA [26] + !BYTE $B0,$0A ; ADDLB [10] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB + !BYTE $64,$0A ; LLB [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $24 ; BRNE _B094 + !WORD _B094-* + !BYTE $64,$0B ; LLB [11] + !BYTE $8C ; INCR +; samplesrc/sanity.pla: 0256: ^(str+i) = '.' +; samplesrc/sanity.pla: 0257: fin + !BYTE $74,$0B ; SLB [11] + !BYTE $2A,$2E ; CB 46 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $70 ; SB +_B094 +_B095 +; samplesrc/sanity.pla: 0258: next +_B093 + !BYTE $A4 ; INCBRLE _B092 + !WORD _B092-* +_B091 + !BYTE $74,$0A ; SLB [10] + !BYTE $30 ; DROP +; samplesrc/sanity.pla: 0259: if ^(str+i) == '.'; i--; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$0B ; ADDLB [11] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B096 + !WORD _B096-* + !BYTE $64,$0B ; LLB [11] + !BYTE $8E ; DECR + !BYTE $74,$0B ; SLB [11] +_B096 +_B097 +; samplesrc/sanity.pla: 0260: fin +_B067 +; samplesrc/sanity.pla: 0261: ^str = i +; samplesrc/sanity.pla: 0262: return str + !BYTE $64,$0B ; LLB [11] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$37 ; LEAVE 55 +; samplesrc/sanity.pla: 0263: end +; samplesrc/sanity.pla: 0264: def divstri(strNum, denom, format)#0 + ; strNum -> [0] + ; denom -> [2] + ; format -> [4] +_C004 ; divstri() +; samplesrc/sanity.pla: 0265: byte strResult[20] + ; strResult -> [6] +; samplesrc/sanity.pla: 0266: byte xResult[t_extended] + ; xResult -> [26] +; samplesrc/sanity.pla: 0267: +; samplesrc/sanity.pla: 0268: // +; samplesrc/sanity.pla: 0269: // Convert string to and from SANE +; samplesrc/sanity.pla: 0270: // +; samplesrc/sanity.pla: 0271: str2ext(strNum, @xResult) + !BYTE $58,$24,$03 ; ENTER 36,3 +; samplesrc/sanity.pla: 0272: sane:saveZP() +; samplesrc/sanity.pla: 0273: sane:op2FP(FFINT|FODIV, @xResult, @denom) // Div int denom into ext Result +; samplesrc/sanity.pla: 0274: sane:restoreZP(0) +; samplesrc/sanity.pla: 0275: ext2str(@xResult, @strResult, 6, 4, format)//format & $05 ?? 1 :: 6, 4, format) +; samplesrc/sanity.pla: 0276: puts(strNum); putc('/'); puti(denom); putc('='); puts(@strResult); putln +; samplesrc/sanity.pla: 0277: end + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$1A ; LLA [26] + !BYTE $54 ; CALL _C002 +_F013 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X028+18 +_F014 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$06,$04 ; CW 1030 + !BYTE $28,$1A ; LLA [26] + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X028+8 +_F015 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F016 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$1A ; LLA [26] + !BYTE $28,$06 ; LLA [6] + !BYTE $0C ; CN 6 + !BYTE $08 ; CN 4 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C003 +_F017 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F019 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F020 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F021 !WORD 0 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 + !BYTE $54 ; CALL _X003 +_F023 !WORD 0 + !BYTE $5A,$24 ; LEAVE 36 +; samplesrc/sanity.pla: 0278: // +; samplesrc/sanity.pla: 0279: // My custom SANE exception handler +; samplesrc/sanity.pla: 0280: // +; samplesrc/sanity.pla: 0281: def myException(pstatus) + ; pstatus -> [0] +_C005 ; myException() +; samplesrc/sanity.pla: 0282: sane:restoreZP(0) + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/sanity.pla: 0283: puts("Floating point exception:") + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F024 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $19 + !BYTE $46,$6C,$6F,$61,$74,$69,$6E,$67 + !BYTE $20,$70,$6F,$69,$6E,$74,$20,$65 + !BYTE $78,$63,$65,$70,$74,$69,$6F,$6E + !BYTE $3A + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 +; samplesrc/sanity.pla: 0284: if pstatus->8 & FBINVALID; puts(" INVALID"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B098 + !WORD _B098-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $20,$49,$4E,$56,$41,$4C,$49,$44 + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 +_B098 +_B099 +; samplesrc/sanity.pla: 0285: if pstatus->8 & FBUFLOW; puts(" UNDERFLOW"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B100 + !WORD _B100-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$55,$4E,$44,$45,$52,$46,$4C + !BYTE $4F,$57 + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +_B100 +_B101 +; samplesrc/sanity.pla: 0286: if pstatus->8 & FBOFLOW; puts(" OVERFLOW"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B102 + !WORD _B102-* + !BYTE $2E ; CS + !BYTE $09 + !BYTE $20,$4F,$56,$45,$52,$46,$4C,$4F + !BYTE $57 + !BYTE $54 ; CALL _X004 +_F028 !WORD 0 +_B102 +_B103 +; samplesrc/sanity.pla: 0287: if pstatus->8 & FBDIVZER; puts(" DIV_BY_ZERO"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B104 + !WORD _B104-* + !BYTE $2E ; CS + !BYTE $0C + !BYTE $20,$44,$49,$56,$5F,$42,$59,$5F + !BYTE $5A,$45,$52,$4F + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 +_B104 +_B105 +; samplesrc/sanity.pla: 0288: if pstatus->8 & FBINEXACT; puts(" INEXACT"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B106 + !WORD _B106-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $20,$49,$4E,$45,$58,$41,$43,$54 + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +_B106 +_B107 +; samplesrc/sanity.pla: 0289: putln +; samplesrc/sanity.pla: 0290: sane:saveZP() +; samplesrc/sanity.pla: 0291: return pstatus=>4 + !BYTE $54 ; CALL _X003 +_F031 !WORD 0 + !BYTE $6A ; LAW _X028+18 +_F032 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/sanity.pla: 0292: end +; samplesrc/sanity.pla: 0293: +; samplesrc/sanity.pla: 0294: +; samplesrc/sanity.pla: 0295: iA = 3 +_INIT +; samplesrc/sanity.pla: 0296: iB = 4 +; samplesrc/sanity.pla: 0297: iC = -1 +; samplesrc/sanity.pla: 0298: zero = 0 +; samplesrc/sanity.pla: 0299: puts("SANE sanity test...\n") + !BYTE $06 ; CN 3 + !BYTE $7A ; SAW _D029+0 +_F033 !WORD _D029+0 + !BYTE $08 ; CN 4 + !BYTE $7A ; SAW _D030+0 +_F034 !WORD _D030+0 + !BYTE $20 ; MINUS ONE + !BYTE $7A ; SAW _D031+0 +_F035 !WORD _D031+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D032+0 +_F036 !WORD _D032+0 + !BYTE $2E ; CS + !BYTE $14 + !BYTE $53,$41,$4E,$45,$20,$73,$61,$6E + !BYTE $69,$74,$79,$20,$74,$65,$73,$74 + !BYTE $2E,$2E,$2E,$0D + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 +; samplesrc/sanity.pla: 0300: sane:initFP() +; samplesrc/sanity.pla: 0301: sane:saveZP() +; samplesrc/sanity.pla: 0302: sane:op2FP(FFINT|FOZ2X, @xT, @iA) // Convert int A to ext T +; samplesrc/sanity.pla: 0303: sane:op2FP(FFINT|FOADD, @xT, @iB) // Add int B to ext T +; samplesrc/sanity.pla: 0304: sane:op2FP(FFINT|FOX2Z, @iC, @xT) // Convert ext T to int C +; samplesrc/sanity.pla: 0305: sane:restoreZP(0) +; samplesrc/sanity.pla: 0306: puti(iA); putc('+'); puti(iB); putc('='); puti(iC); putc('\n') +; samplesrc/sanity.pla: 0307: sane:saveZP() +; samplesrc/sanity.pla: 0308: sane:op2FP(FFINT|FOZ2X, @xT, @iA) // Convert int A to ext T +; samplesrc/sanity.pla: 0309: sane:op2FP(FFINT|FOSUB, @xT, @iB) // Sub int B from ext T +; samplesrc/sanity.pla: 0310: sane:op2FP(FFINT|FOX2Z, @iC, @xT) // Convert ext T to int C +; samplesrc/sanity.pla: 0311: sane:restoreZP(0) +; samplesrc/sanity.pla: 0312: puti(iA); putc('-'); puti(iB); putc('='); puti(iC); putc('\n') +; samplesrc/sanity.pla: 0313: sane:saveZP() +; samplesrc/sanity.pla: 0314: sane:op2FP(FFINT|FOZ2X, @xT, @iA) // Convert int A to ext T +; samplesrc/sanity.pla: 0315: sane:op2FP(FFINT|FOMUL, @xT, @iB) // Mul int B by ext T +; samplesrc/sanity.pla: 0316: sane:op2FP(FFINT|FOX2Z, @iC, @xT) // Convert ext T to int C +; samplesrc/sanity.pla: 0317: sane:restoreZP(0) +; samplesrc/sanity.pla: 0318: puti(iA); putc('*'); puti(iB); putc('='); puti(iC); putc('\n') +; samplesrc/sanity.pla: 0319: sane:saveZP() +; samplesrc/sanity.pla: 0320: sane:op2FP(FFINT|FOZ2X, @xT, @iA) // Convert int A to ext T +; samplesrc/sanity.pla: 0321: sane:op2FP(FFINT|FODIV, @xT, @iB) // Div int B into ext T +; samplesrc/sanity.pla: 0322: sane:op2FP(FFINT|FOX2Z, @iC, @xT) // Convert ext T to int C +; samplesrc/sanity.pla: 0323: sane:restoreZP(0) +; samplesrc/sanity.pla: 0324: puti(iA); putc('/'); puti(iB); putc('='); puti(iC); putc('\n') +; samplesrc/sanity.pla: 0325: // +; samplesrc/sanity.pla: 0326: // Hook custom HALT exception handler and divide by zero :-) +; samplesrc/sanity.pla: 0327: // Enable all exceptions +; samplesrc/sanity.pla: 0328: // +; samplesrc/sanity.pla: 0329: sane:saveZP() +; samplesrc/sanity.pla: 0330: sane:haltFP = @myException +; samplesrc/sanity.pla: 0331: fpEnv = sane:op0FP(FOGETENV) +; samplesrc/sanity.pla: 0332: sane:op1FP(FOSETENV, fpEnv | FBINVALID | FBUFLOW | FBOFLOW | FBDIVZER | FBINEXACT) +; samplesrc/sanity.pla: 0333: sane:restoreZP(0) +; samplesrc/sanity.pla: 0334: // +; samplesrc/sanity.pla: 0335: // String conversion tests +; samplesrc/sanity.pla: 0336: // +; samplesrc/sanity.pla: 0337: divstri("-3", 0, 2) + !BYTE $6A ; LAW _X028+0 +_F038 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X028+18 +_F039 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D034+0 +_F040 !WORD _D034+0 + !BYTE $26 ; LA _D029+0 +_F041 !WORD _D029+0 + !BYTE $6A ; LAW _X028+8 +_F042 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $26 ; LA _D034+0 +_F043 !WORD _D034+0 + !BYTE $26 ; LA _D030+0 +_F044 !WORD _D030+0 + !BYTE $6A ; LAW _X028+8 +_F045 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $26 ; LA _D031+0 +_F046 !WORD _D031+0 + !BYTE $26 ; LA _D034+0 +_F047 !WORD _D034+0 + !BYTE $6A ; LAW _X028+8 +_F048 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F049 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D029+0 +_F050 !WORD _D029+0 + !BYTE $54 ; CALL _X005 +_F051 !WORD 0 + !BYTE $2A,$2B ; CB 43 + !BYTE $54 ; CALL _X002 +_F052 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F053 !WORD _D030+0 + !BYTE $54 ; CALL _X005 +_F054 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F055 !WORD 0 + !BYTE $6A ; LAW _D031+0 +_F056 !WORD _D031+0 + !BYTE $54 ; CALL _X005 +_F057 !WORD 0 + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _X002 +_F058 !WORD 0 + !BYTE $6A ; LAW _X028+18 +_F059 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D034+0 +_F060 !WORD _D034+0 + !BYTE $26 ; LA _D029+0 +_F061 !WORD _D029+0 + !BYTE $6A ; LAW _X028+8 +_F062 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$02,$04 ; CW 1026 + !BYTE $26 ; LA _D034+0 +_F063 !WORD _D034+0 + !BYTE $26 ; LA _D030+0 +_F064 !WORD _D030+0 + !BYTE $6A ; LAW _X028+8 +_F065 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $26 ; LA _D031+0 +_F066 !WORD _D031+0 + !BYTE $26 ; LA _D034+0 +_F067 !WORD _D034+0 + !BYTE $6A ; LAW _X028+8 +_F068 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F069 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D029+0 +_F070 !WORD _D029+0 + !BYTE $54 ; CALL _X005 +_F071 !WORD 0 + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _X002 +_F072 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F073 !WORD _D030+0 + !BYTE $54 ; CALL _X005 +_F074 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F075 !WORD 0 + !BYTE $6A ; LAW _D031+0 +_F076 !WORD _D031+0 + !BYTE $54 ; CALL _X005 +_F077 !WORD 0 + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _X002 +_F078 !WORD 0 + !BYTE $6A ; LAW _X028+18 +_F079 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D034+0 +_F080 !WORD _D034+0 + !BYTE $26 ; LA _D029+0 +_F081 !WORD _D029+0 + !BYTE $6A ; LAW _X028+8 +_F082 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $26 ; LA _D034+0 +_F083 !WORD _D034+0 + !BYTE $26 ; LA _D030+0 +_F084 !WORD _D030+0 + !BYTE $6A ; LAW _X028+8 +_F085 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $26 ; LA _D031+0 +_F086 !WORD _D031+0 + !BYTE $26 ; LA _D034+0 +_F087 !WORD _D034+0 + !BYTE $6A ; LAW _X028+8 +_F088 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F089 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D029+0 +_F090 !WORD _D029+0 + !BYTE $54 ; CALL _X005 +_F091 !WORD 0 + !BYTE $2A,$2A ; CB 42 + !BYTE $54 ; CALL _X002 +_F092 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F093 !WORD _D030+0 + !BYTE $54 ; CALL _X005 +_F094 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F095 !WORD 0 + !BYTE $6A ; LAW _D031+0 +_F096 !WORD _D031+0 + !BYTE $54 ; CALL _X005 +_F097 !WORD 0 + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _X002 +_F098 !WORD 0 + !BYTE $6A ; LAW _X028+18 +_F099 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$0E,$04 ; CW 1038 + !BYTE $26 ; LA _D034+0 +_F100 !WORD _D034+0 + !BYTE $26 ; LA _D029+0 +_F101 !WORD _D029+0 + !BYTE $6A ; LAW _X028+8 +_F102 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$06,$04 ; CW 1030 + !BYTE $26 ; LA _D034+0 +_F103 !WORD _D034+0 + !BYTE $26 ; LA _D030+0 +_F104 !WORD _D030+0 + !BYTE $6A ; LAW _X028+8 +_F105 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $26 ; LA _D031+0 +_F106 !WORD _D031+0 + !BYTE $26 ; LA _D034+0 +_F107 !WORD _D034+0 + !BYTE $6A ; LAW _X028+8 +_F108 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F109 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D029+0 +_F110 !WORD _D029+0 + !BYTE $54 ; CALL _X005 +_F111 !WORD 0 + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F112 !WORD 0 + !BYTE $6A ; LAW _D030+0 +_F113 !WORD _D030+0 + !BYTE $54 ; CALL _X005 +_F114 !WORD 0 + !BYTE $2A,$3D ; CB 61 + !BYTE $54 ; CALL _X002 +_F115 !WORD 0 + !BYTE $6A ; LAW _D031+0 +_F116 !WORD _D031+0 + !BYTE $54 ; CALL _X005 +_F117 !WORD 0 + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _X002 +_F118 !WORD 0 + !BYTE $6A ; LAW _X028+18 +_F119 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _C005+0 +_F120 !WORD _C005+0 + !BYTE $7A ; SAW _X028+2 +_F121 !WORD 0+2 + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _X028+4 +_F122 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D033+0 +_F123 !WORD _D033+0 + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _D033+0 +_F124 !WORD _D033+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $3E,$02 ; ORI 2 + !BYTE $3E,$04 ; ORI 4 + !BYTE $3E,$08 ; ORI 8 + !BYTE $3E,$10 ; ORI 16 + !BYTE $6A ; LAW _X028+6 +_F125 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+20 +_F126 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2D,$33 + !BYTE $00 ; CN 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F127 !WORD _C004 +; samplesrc/sanity.pla: 0338: divstri("3", 0, 2) + !BYTE $2E ; CS + !BYTE $01 + !BYTE $33 + !BYTE $00 ; CN 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F128 !WORD _C004 +; samplesrc/sanity.pla: 0339: divstri("-100.5", 4, 2) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $2D,$31,$30,$30,$2E,$35 + !BYTE $08 ; CN 4 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F129 !WORD _C004 +; samplesrc/sanity.pla: 0340: divstri("00.5", 2, 2) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $30,$30,$2E,$35 + !BYTE $04 ; CN 2 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _C004 +_F130 !WORD _C004 +; samplesrc/sanity.pla: 0341: divstri(".5", 10, 3) + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2E,$35 + !BYTE $14 ; CN 10 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C004 +_F131 !WORD _C004 +; samplesrc/sanity.pla: 0342: divstri("800000", 2, 2) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $38,$30,$30,$30,$30,$30 + !BYTE $04 ; CN 2 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _C004 +_F132 !WORD _C004 +; samplesrc/sanity.pla: 0343: divstri("800000", 2, 4) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $38,$30,$30,$30,$30,$30 + !BYTE $04 ; CN 2 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _C004 +_F133 !WORD _C004 +; samplesrc/sanity.pla: 0344: divstri("1e+2", 2, 2) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $31,$65,$2B,$32 + !BYTE $04 ; CN 2 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _C004 +_F134 !WORD _C004 +; samplesrc/sanity.pla: 0345: divstri("-1e-2", 2, 2) + !BYTE $2E ; CS + !BYTE $05 + !BYTE $2D,$31,$65,$2D,$32 + !BYTE $04 ; CN 2 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _C004 +_F135 !WORD _C004 +; samplesrc/sanity.pla: 0346: divstri("0", 1, 2) + !BYTE $2E ; CS + !BYTE $01 + !BYTE $30 + !BYTE $02 ; CN 1 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F136 !WORD _C004 +; samplesrc/sanity.pla: 0347: divstri("1000", 1, 1) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $31,$30,$30,$30 + !BYTE $02 ; CN 1 + !BYTE $34 ; DUP + !BYTE $54 ; CALL _C004 +_F137 !WORD _C004 +; samplesrc/sanity.pla: 0348: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 7 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: SANE + !BYTE $D3,$C1,$CE,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/sfm.a b/src/samplesrc/sfm.a new file mode 100644 index 0000000..8cebcc2 --- /dev/null +++ b/src/samplesrc/sfm.a @@ -0,0 +1,3916 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/sfm.pla: 0001: // +; samplesrc/sfm.pla: 0002: // Ziggy Stardust and the Spiders from Mars +; samplesrc/sfm.pla: 0003: // +; samplesrc/sfm.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/sfm.pla: 0004: +; samplesrc/sfm.pla: 0005: include "inc/hgrlib.plh" +; inc/hgrlib.plh: 0001: import hgrlib + ; DCI STRING: HGRLIB + !BYTE $C8,$C7,$D2,$CC,$C9,$42 + ; HGRLIB -> X028 +; inc/hgrlib.plh: 0002: predef divmod7(x)#2 + ; DIVMOD7 -> X029 +; inc/hgrlib.plh: 0003: predef hgrPlot(x, y)#0 + ; HGRPLOT -> X030 +; inc/hgrlib.plh: 0004: predef hgrOrPlot(x, y)#0 + ; HGRORPLOT -> X031 +; inc/hgrlib.plh: 0005: predef hgrXorPlot(x, y)#0 + ; HGRXORPLOT -> X032 +; inc/hgrlib.plh: 0006: predef hgrHLin(x1, x2, y)#0 + ; HGRHLIN -> X033 +; inc/hgrlib.plh: 0007: predef hgrVLin(y1, y2, x)#0 + ; HGRVLIN -> X034 +; inc/hgrlib.plh: 0008: predef hgrXorHLin(x1, x2, y)#0 + ; HGRXORHLIN -> X035 +; inc/hgrlib.plh: 0009: predef hgrXorVLin(y1, y2, x)#0 + ; HGRXORVLIN -> X036 +; inc/hgrlib.plh: 0010: predef hgrRect(x1, y1, x2, y2)#0 + ; HGRRECT -> X037 +; inc/hgrlib.plh: 0011: predef hgrXorRect(x1, y1, x2, y2)#0 + ; HGRXORRECT -> X038 +; inc/hgrlib.plh: 0012: predef hgrBLT(x, y, width, height, srcptr)#0 + ; HGRBLT -> X039 +; inc/hgrlib.plh: 0013: predef hgrCopySrc(ofst, y, w, h, srcptr)#0 + ; HGRCOPYSRC -> X040 +; inc/hgrlib.plh: 0014: predef hgrAndSrc(ofst, y, w, h, srcptr)#0 + ; HGRANDSRC -> X041 +; inc/hgrlib.plh: 0015: predef hgrXorSrc(ofst, y, w, h, srcptr)#0 + ; HGRXORSRC -> X042 +; inc/hgrlib.plh: 0016: predef hgrOrSrc(ofst, y, w, h, srcptr)#0 + ; HGRORSRC -> X043 +; inc/hgrlib.plh: 0017: predef hgrCopyDst(ofst, y, w, h, dstptr)#0 + ; HGRCOPYDST -> X044 +; inc/hgrlib.plh: 0018: predef hgrMode(mode)#1 + ; HGRMODE -> X045 +; inc/hgrlib.plh: 0019: predef hgrClear#0 + ; HGRCLEAR -> X046 +; inc/hgrlib.plh: 0020: predef hgrShow(page)#1 + ; HGRSHOW -> X047 +; inc/hgrlib.plh: 0021: predef hgrSwap#1 + ; HGRSWAP -> X048 +; inc/hgrlib.plh: 0022: predef hgrDrawBuf(page)#1 + ; HGRDRAWBUF -> X049 +; inc/hgrlib.plh: 0023: predef hgrColor(clr)#0 + ; HGRCOLOR -> X050 +; inc/hgrlib.plh: 0024: end +; samplesrc/sfm.pla: 0005: +; samplesrc/sfm.pla: 0006: include "inc/hgrsprite.plh" +; inc/hgrsprite.plh: 0001: import hgrsprite + ; DCI STRING: HGRSPRITE + !BYTE $C8,$C7,$D2,$D3,$D0,$D2,$C9,$D4,$45 + ; HGRSPRITE -> X051 +; inc/hgrsprite.plh: 0002: predef spriteCompile(w, h, xcenter, ycenter, srcptr)#1 + ; SPRITECOMPILE -> X052 +; inc/hgrsprite.plh: 0003: predef spriteDup(sprtsrc)#1 + ; SPRITEDUP -> X053 +; inc/hgrsprite.plh: 0004: predef spriteRead(filestr)#1 + ; SPRITEREAD -> X054 +; inc/hgrsprite.plh: 0005: predef spriteSave(filestr, sprtptr)#1 + ; SPRITESAVE -> X055 +; inc/hgrsprite.plh: 0006: predef spriteDraw(sprtptr)#0 + ; SPRITEDRAW -> X056 +; inc/hgrsprite.plh: 0007: predef spriteDrawXor(sprtptr)#0 + ; SPRITEDRAWXOR -> X057 +; inc/hgrsprite.plh: 0008: predef spriteUnDraw(sprtptr)#0 + ; SPRITEUNDRAW -> X058 +; inc/hgrsprite.plh: 0009: predef spriteUnDrawXor(sprtptr)#0 + ; SPRITEUNDRAWXOR -> X059 +; inc/hgrsprite.plh: 0010: predef spritePos(x, y, sprtptr)#0 + ; SPRITEPOS -> X060 +; inc/hgrsprite.plh: 0011: predef spritePosIndex(x, y, i)#0 + ; SPRITEPOSINDEX -> X061 +; inc/hgrsprite.plh: 0012: predef spriteUnDrawList#0 + ; SPRITEUNDRAWLIST -> X062 +; inc/hgrsprite.plh: 0013: predef spriteUnDrawXorList#0 + ; SPRITEUNDRAWXORLIST -> X063 +; inc/hgrsprite.plh: 0014: predef spriteDrawList#0 + ; SPRITEDRAWLIST -> X064 +; inc/hgrsprite.plh: 0015: predef spriteDrawXorList#0 + ; SPRITEDRAWXORLIST -> X065 +; inc/hgrsprite.plh: 0016: predef spriteAdd(i, sprtptr)#1 + ; SPRITEADD -> X066 +; inc/hgrsprite.plh: 0017: predef spriteDel(i)#1 + ; SPRITEDEL -> X067 +; inc/hgrsprite.plh: 0018: predef spriteDrawBuf(page)#1 + ; SPRITEDRAWBUF -> X068 +; inc/hgrsprite.plh: 0019: end +; samplesrc/sfm.pla: 0006: +; samplesrc/sfm.pla: 0007: include "inc/joybuzz.plh" +; inc/joybuzz.plh: 0001: import joybuzz + ; DCI STRING: JOYBUZZ + !BYTE $CA,$CF,$D9,$C2,$D5,$DA,$5A + ; JOYBUZZ -> X069 +; inc/joybuzz.plh: 0002: const MAX_JOY = 79 + ; MAX_JOY = 79 +; inc/joybuzz.plh: 0003: predef joypos(buzz)#4 + ; JOYPOS -> X070 +; inc/joybuzz.plh: 0004: end +; samplesrc/sfm.pla: 0007: +; samplesrc/sfm.pla: 0008: sysflags reshgr1 // Reserve HGR page 1 + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0010 ; SYSTEM FLAGS +; samplesrc/sfm.pla: 0009: +; samplesrc/sfm.pla: 0010: const NUMSTARS = 32 + ; NUMSTARS = 32 +; samplesrc/sfm.pla: 0011: const SHIP_SPRTNUM = 0 + ; SHIP_SPRTNUM = 0 +; samplesrc/sfm.pla: 0012: const MISSLE_SPRTNUM = 1 + ; MISSLE_SPRTNUM = 1 +; samplesrc/sfm.pla: 0013: const WEB_SPRTBASE = 2 + ; WEB_SPRTBASE = 2 +; samplesrc/sfm.pla: 0014: const SPIDER_SPRTEBASE = 8 + ; SPIDER_SPRTEBASE = 8 +; samplesrc/sfm.pla: 0015: const LASER_RECHARGE = 20 + ; LASER_RECHARGE = 20 +; samplesrc/sfm.pla: 0016: const MISSLE_RELOAD = 10 + ; MISSLE_RELOAD = 10 +; samplesrc/sfm.pla: 0017: const ATTACK_SPEED = 12 + ; ATTACK_SPEED = 12 +; samplesrc/sfm.pla: 0018: const SWARM_LIMIT = 52 + ; SWARM_LIMIT = 52 +; samplesrc/sfm.pla: 0019: const FASTMOVE_LIMIT = 120 + ; FASTMOVE_LIMIT = 120 +; samplesrc/sfm.pla: 0020: const WEB_LIMIT = 152 + ; WEB_LIMIT = 152 +; samplesrc/sfm.pla: 0021: const YSHIP = 180 + ; YSHIP = 180 +; samplesrc/sfm.pla: 0022: const LASER_BUZZ = 20 + ; LASER_BUZZ = 20 +; samplesrc/sfm.pla: 0023: const ATTACK_BUZZ = 5 + ; ATTACK_BUZZ = 5 +; samplesrc/sfm.pla: 0024: const WEB1_BUZZ = 10 + ; WEB1_BUZZ = 10 +; samplesrc/sfm.pla: 0025: const WEB2_BUZZ = 12 + ; WEB2_BUZZ = 12 +; samplesrc/sfm.pla: 0026: const WEB3_BUZZ = 14 + ; WEB3_BUZZ = 14 +; samplesrc/sfm.pla: 0027: const SPLAT_BUZZ = 40 + ; SPLAT_BUZZ = 40 +; samplesrc/sfm.pla: 0028: +; samplesrc/sfm.pla: 0029: var sprtEgg1, sprtEgg2, sprtEgg3, sprtEgg +_D071 !FILL 2 ; sprtEgg1, sprtEgg2, sprtEgg3, sprtEgg +_D072 !FILL 2 ; sprtEgg2, sprtEgg3, sprtEgg +_D073 !FILL 2 ; sprtEgg3, sprtEgg +_D074 !FILL 2 ; sprtEgg +; samplesrc/sfm.pla: 0030: var sprtSpider1, sprtSpider2, sprtSpider3, sprtSpider +_D075 !FILL 2 ; sprtSpider1, sprtSpider2, sprtSpider3, sprtSpider +_D076 !FILL 2 ; sprtSpider2, sprtSpider3, sprtSpider +_D077 !FILL 2 ; sprtSpider3, sprtSpider +_D078 !FILL 2 ; sprtSpider +; samplesrc/sfm.pla: 0031: var sprtSplat1, sprtSplat2 +_D079 !FILL 2 ; sprtSplat1, sprtSplat2 +_D080 !FILL 2 ; sprtSplat2 +; samplesrc/sfm.pla: 0032: var sprtWeb1, sprtWeb2, sprtWeb3 +_D081 !FILL 2 ; sprtWeb1, sprtWeb2, sprtWeb3 +_D082 !FILL 2 ; sprtWeb2, sprtWeb3 +_D083 !FILL 2 ; sprtWeb3 +; samplesrc/sfm.pla: 0033: var sprtShip, sprtMissle, sprtDummy, heapstart +_D084 !FILL 2 ; sprtShip, sprtMissle, sprtDummy, heapstart +_D085 !FILL 2 ; sprtMissle, sprtDummy, heapstart +_D086 !FILL 2 ; sprtDummy, heapstart +_D087 !FILL 2 ; heapstart +; samplesrc/sfm.pla: 0034: var[NUMSTARS] xstar +_D088 !FILL 64 ; xstar +; samplesrc/sfm.pla: 0035: byte[NUMSTARS] ystar +_D089 !FILL 32 ; ystar +; samplesrc/sfm.pla: 0036: byte curstar, buzz +_D090 !FILL 1 ; curstar, buzz +_D091 !FILL 1 ; buzz +; samplesrc/sfm.pla: 0037: +; samplesrc/sfm.pla: 0038: // +; samplesrc/sfm.pla: 0039: // Apple II speaker tone generator routine +; samplesrc/sfm.pla: 0040: // +; samplesrc/sfm.pla: 0041: //asm spkrTone(pitch, duration)#0 +; samplesrc/sfm.pla: 0042: byte _spkrTone[] +_D092 ; _spkrTone[] +; samplesrc/sfm.pla: 0043: byte = $86, $E5 // STX ESP + !BYTE $86 + !BYTE $E5 +; samplesrc/sfm.pla: 0044: byte = $B4, $C0 // LDY ESTKH,X + !BYTE $B4 + !BYTE $C0 +; samplesrc/sfm.pla: 0045: byte = $B5, $D0 // LDA ESTKL,X + !BYTE $B5 + !BYTE $D0 +; samplesrc/sfm.pla: 0046: byte = $F0, $01 // BEQ +1 + !BYTE $F0 + !BYTE $01 +; samplesrc/sfm.pla: 0047: byte = $C8 // INY + !BYTE $C8 +; samplesrc/sfm.pla: 0048: byte = $85, $08 // STA DSTL + !BYTE $85 + !BYTE $08 +; samplesrc/sfm.pla: 0049: byte = $84, $09 // STY DSTH + !BYTE $84 + !BYTE $09 +; samplesrc/sfm.pla: 0050: byte = $B4, $C1 // LDY ESTKL+1,X + !BYTE $B4 + !BYTE $C1 +; samplesrc/sfm.pla: 0051: byte = $B5, $D1 // LDA ESTKL+1,X + !BYTE $B5 + !BYTE $D1 +; samplesrc/sfm.pla: 0052: byte = $F0, $01 // BEQ +1 + !BYTE $F0 + !BYTE $01 +; samplesrc/sfm.pla: 0053: byte = $C8 // INY + !BYTE $C8 +; samplesrc/sfm.pla: 0054: byte = $85, $E7 // STA TMPL + !BYTE $85 + !BYTE $E7 +; samplesrc/sfm.pla: 0055: byte = $84, $E8 // STY TMPH + !BYTE $84 + !BYTE $E8 +; samplesrc/sfm.pla: 0056: byte = $AA // TAX + !BYTE $AA +; samplesrc/sfm.pla: 0057: byte = $A9, $FF // LDA #$FF + !BYTE $A9 + !BYTE $FF +; samplesrc/sfm.pla: 0058: byte = $08 // PHP + !BYTE $08 +; samplesrc/sfm.pla: 0059: byte = $78 // SEI + !BYTE $78 +; samplesrc/sfm.pla: 0060: byte = $EA // NOP + !BYTE $EA +; samplesrc/sfm.pla: 0061: byte = $EA // NOP + !BYTE $EA +; samplesrc/sfm.pla: 0062: byte = $B0, $00 // BCS +0 + !BYTE $B0 + !BYTE $00 +; samplesrc/sfm.pla: 0063: byte = $38 // SEC + !BYTE $38 +; samplesrc/sfm.pla: 0064: byte = $CA // DEX + !BYTE $CA +; samplesrc/sfm.pla: 0065: byte = $D0, $18 // BNE +18 + !BYTE $D0 + !BYTE $18 +; samplesrc/sfm.pla: 0066: byte = $88 // DEY + !BYTE $88 +; samplesrc/sfm.pla: 0067: byte = $D0, $17 // BNE +17 + !BYTE $D0 + !BYTE $17 +; samplesrc/sfm.pla: 0068: byte = $2C, $30, $C0 // BIT $C030 + !BYTE $2C + !BYTE $30 + !BYTE $C0 +; samplesrc/sfm.pla: 0069: byte = $A6, $E7 // LDX TMPL + !BYTE $A6 + !BYTE $E7 +; samplesrc/sfm.pla: 0070: byte = $A4, $E8 // LDY TMPH + !BYTE $A4 + !BYTE $E8 +; samplesrc/sfm.pla: 0071: byte = $E9, $01 // SBC #$01 + !BYTE $E9 + !BYTE $01 +; samplesrc/sfm.pla: 0072: byte = $B0, $EA // BCS -EA + !BYTE $B0 + !BYTE $EA +; samplesrc/sfm.pla: 0073: byte = $C6, $08 // DEC DSTL + !BYTE $C6 + !BYTE $08 +; samplesrc/sfm.pla: 0074: byte = $D0, $EA // BNE -EA + !BYTE $D0 + !BYTE $EA +; samplesrc/sfm.pla: 0075: byte = $C6, $09 // DEC DSTH + !BYTE $C6 + !BYTE $09 +; samplesrc/sfm.pla: 0076: byte = $D0, $E6 // BNE -E6 + !BYTE $D0 + !BYTE $E6 +; samplesrc/sfm.pla: 0077: byte = $F0, $07 // BEQ +8 + !BYTE $F0 + !BYTE $07 +; samplesrc/sfm.pla: 0078: byte = $EA // NOP + !BYTE $EA +; samplesrc/sfm.pla: 0079: byte = $EA // NOP + !BYTE $EA +; samplesrc/sfm.pla: 0080: byte = $EA, $EA // BIT $C000 (nope) + !BYTE $EA + !BYTE $EA +; samplesrc/sfm.pla: 0081: byte = $EA // NOP + !BYTE $EA +; samplesrc/sfm.pla: 0082: byte = $D0, $EB // BNE -EA + !BYTE $D0 + !BYTE $EB +; samplesrc/sfm.pla: 0083: byte = $28 // PLP + !BYTE $28 +; samplesrc/sfm.pla: 0084: byte = $A6, $E5 // LDX ESP + !BYTE $A6 + !BYTE $E5 +; samplesrc/sfm.pla: 0085: byte = $E8 // INX + !BYTE $E8 +; samplesrc/sfm.pla: 0086: byte = $E8 // INX + !BYTE $E8 +; samplesrc/sfm.pla: 0087: byte = $60 // RTS + !BYTE $60 +; samplesrc/sfm.pla: 0088: +; samplesrc/sfm.pla: 0089: def game(spdrcnt)#1 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; spdrcnt -> [0] +_C000 ; game() +; samplesrc/sfm.pla: 0090: var[8] xspdr, yspdr, ixspdr, iyspdr, hatch + ; xspdr -> [2] + ; yspdr -> [18] + ; ixspdr -> [34] + ; iyspdr -> [50] + ; hatch -> [66] +; samplesrc/sfm.pla: 0091: var xship, xmissle, leftxlaser, rightxlaser, attack + ; xship -> [82] + ; xmissle -> [84] + ; leftxlaser -> [86] + ; rightxlaser -> [88] + ; attack -> [90] +; samplesrc/sfm.pla: 0092: byte[8] life, death + ; life -> [92] + ; death -> [100] +; samplesrc/sfm.pla: 0093: byte lasercharging, missleloading, misslecnt, ymissle + ; lasercharging -> [108] + ; missleloading -> [109] + ; misslecnt -> [110] + ; ymissle -> [111] +; samplesrc/sfm.pla: 0094: byte leftylaser, rightylaser, lefthit, righthit, sprtnum[], width + ; leftylaser -> [112] + ; rightylaser -> [113] + ; lefthit -> [114] + ; righthit -> [115] + ; sprtnum -> [116] + ; width -> [116] +; samplesrc/sfm.pla: 0095: byte spdrnum, k, xdelta, ydelta, btn0, btn1, webstate + ; spdrnum -> [117] + ; k -> [118] + ; xdelta -> [119] + ; ydelta -> [120] + ; btn0 -> [121] + ; btn1 -> [122] + ; webstate -> [123] +; samplesrc/sfm.pla: 0096: +; samplesrc/sfm.pla: 0097: xship = 140 + !BYTE $58,$7C,$01 ; ENTER 124,1 +; samplesrc/sfm.pla: 0098: ymissle = 255 // Not active value +; samplesrc/sfm.pla: 0099: misslecnt = 6 +; samplesrc/sfm.pla: 0100: missleloading = FALSE +; samplesrc/sfm.pla: 0101: lasercharging = FALSE +; samplesrc/sfm.pla: 0102: // +; samplesrc/sfm.pla: 0103: // Initialize the spiders (first is special) +; samplesrc/sfm.pla: 0104: // +; samplesrc/sfm.pla: 0105: xspdr[0] = 100 +; samplesrc/sfm.pla: 0106: ixspdr[0] = 1 +; samplesrc/sfm.pla: 0107: yspdr[0] = 60 +; samplesrc/sfm.pla: 0108: iyspdr[0] = -1 +; samplesrc/sfm.pla: 0109: hatch[0] = 1 +; samplesrc/sfm.pla: 0110: life[0] = 3 +; samplesrc/sfm.pla: 0111: death[0] = 0 +; samplesrc/sfm.pla: 0112: attack = -1 +; samplesrc/sfm.pla: 0113: webstate = 0 +; samplesrc/sfm.pla: 0114: // +; samplesrc/sfm.pla: 0115: // Initialize spiders +; samplesrc/sfm.pla: 0116: // +; samplesrc/sfm.pla: 0117: spdrnum = spdrcnt - 1 +; samplesrc/sfm.pla: 0118: for k = 1 to spdrnum + !BYTE $2A,$8C ; CB 140 + !BYTE $76,$52 ; SLW [82] + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$6F ; SLB [111] + !BYTE $0C ; CN 6 + !BYTE $74,$6E ; SLB [110] + !BYTE $00 ; CN 0 + !BYTE $74,$6D ; SLB [109] + !BYTE $00 ; CN 0 + !BYTE $74,$6C ; SLB [108] + !BYTE $2A,$64 ; CB 100 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $76,$22 ; SLW [34] + !BYTE $2A,$3C ; CB 60 + !BYTE $76,$12 ; SLW [18] + !BYTE $20 ; MINUS ONE + !BYTE $76,$32 ; SLW [50] + !BYTE $02 ; CN 1 + !BYTE $76,$42 ; SLW [66] + !BYTE $06 ; CN 3 + !BYTE $74,$5C ; SLB [92] + !BYTE $00 ; CN 0 + !BYTE $74,$64 ; SLB [100] + !BYTE $20 ; MINUS ONE + !BYTE $76,$5A ; SLW [90] + !BYTE $00 ; CN 0 + !BYTE $74,$7B ; SLB [123] + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $6C,$75 ; DLB [117] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $6C,$76 ; DLB [118] +; samplesrc/sfm.pla: 0119: spriteAdd(k + SPIDER_SPRTEBASE, spriteDup(sprtEgg3)) +; samplesrc/sfm.pla: 0120: xspdr[k] = ((xspdr[k - 1] ^ 37) + 97) & 255 +; samplesrc/sfm.pla: 0121: ixspdr[k] = -ixspdr[k - 1] +; samplesrc/sfm.pla: 0122: yspdr[k] = ((yspdr[k - 1] ^ 29) + 53) & 63 +; samplesrc/sfm.pla: 0123: iyspdr[k] = -iyspdr[k - 1] +; samplesrc/sfm.pla: 0124: hatch[k] = k / 2 + 1//hatch[k - 1] + 1 +; samplesrc/sfm.pla: 0125: life[k] = 3 +; samplesrc/sfm.pla: 0126: death[k] = 0 +; samplesrc/sfm.pla: 0127: next + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6A ; LAW _D073+0 +_F000 !WORD _D073+0 + !BYTE $54 ; CALL _X053 +_F001 !WORD 0 + !BYTE $54 ; CALL _X066 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $64,$76 ; LLB [118] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$25 ; CB 37 + !BYTE $98 ; XOR + !BYTE $38,$61 ; ADDI 97 + !BYTE $3C,$FF ; ANDI 255 + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$22 ; LLA [34] + !BYTE $64,$76 ; LLB [118] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$12 ; LLA [18] + !BYTE $64,$76 ; LLB [118] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $2A,$1D ; CB 29 + !BYTE $98 ; XOR + !BYTE $38,$35 ; ADDI 53 + !BYTE $3C,$3F ; ANDI 63 + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$32 ; LLA [50] + !BYTE $64,$76 ; LLB [118] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $64,$76 ; LLB [118] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $8C ; INCR + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $06 ; CN 3 + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$76 ; SLB [118] + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0128: // +; samplesrc/sfm.pla: 0129: // Initialize missle display +; samplesrc/sfm.pla: 0130: // +; samplesrc/sfm.pla: 0131: hgrColor(3) +; samplesrc/sfm.pla: 0132: hgrRect(0, YSHIP+3, 279, 191) +; samplesrc/sfm.pla: 0133: for k = 0 to misslecnt-1 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X050 +_F003 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $2A,$B7 ; CB 183 + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $2A,$BF ; CB 191 + !BYTE $54 ; CALL _X037 +_F004 !WORD 0 + !BYTE $64,$6E ; LLB [110] + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B004 + !WORD _B004-* +_B005 + !BYTE $6C,$76 ; DLB [118] +; samplesrc/sfm.pla: 0134: spritePos(k * 16 + 160, 184, sprtMissle) +; samplesrc/sfm.pla: 0135: spriteDrawXor(sprtMissle) +; samplesrc/sfm.pla: 0136: next + !BYTE $64,$76 ; LLB [118] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $38,$A0 ; ADDI 160 + !BYTE $2A,$B8 ; CB 184 + !BYTE $6A ; LAW _D085+0 +_F005 !WORD _D085+0 + !BYTE $54 ; CALL _X060 +_F006 !WORD 0 + !BYTE $6A ; LAW _D085+0 +_F007 !WORD _D085+0 + !BYTE $54 ; CALL _X057 +_F008 !WORD 0 +_B006 + !BYTE $A4 ; INCBRLE _B005 + !WORD _B005-* +_B004 + !BYTE $74,$76 ; SLB [118] + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0137: hgrColor(1) +; samplesrc/sfm.pla: 0138: hgrRect(4, YSHIP+6, LASER_RECHARGE * 4 + 4, 188) +; samplesrc/sfm.pla: 0139: // +; samplesrc/sfm.pla: 0140: // Main game loop +; samplesrc/sfm.pla: 0141: // +; samplesrc/sfm.pla: 0142: repeat + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X050 +_F009 !WORD 0 + !BYTE $08 ; CN 4 + !BYTE $2A,$BA ; CB 186 + !BYTE $2A,$50 ; CB 80 + !BYTE $38,$04 ; ADDI 4 + !BYTE $2A,$BC ; CB 188 + !BYTE $54 ; CALL _X037 +_F010 !WORD 0 +_B008 +; samplesrc/sfm.pla: 0143: // +; samplesrc/sfm.pla: 0144: // Move living spiders +; samplesrc/sfm.pla: 0145: // +; samplesrc/sfm.pla: 0146: for k = 0 to spdrnum + !BYTE $64,$75 ; LLB [117] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B010 + !WORD _B010-* +_B011 + !BYTE $6C,$76 ; DLB [118] +; samplesrc/sfm.pla: 0147: if life[k] +; samplesrc/sfm.pla: 0148: yspdr[k] = yspdr[k] + iyspdr[k] +; samplesrc/sfm.pla: 0149: if yspdr[k] < -5 +; samplesrc/sfm.pla: 0150: // +; samplesrc/sfm.pla: 0151: // Above screen +; samplesrc/sfm.pla: 0152: // +; samplesrc/sfm.pla: 0153: iyspdr[k] = 1 +; samplesrc/sfm.pla: 0154: if hatch[k] +; samplesrc/sfm.pla: 0155: hatch[k]-- + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $5E,$FB ; CFFB -5 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $02 ; CN 1 + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0156: if hatch[k] == 0 +; samplesrc/sfm.pla: 0157: // +; samplesrc/sfm.pla: 0158: // Hatch this egg into a spider +; samplesrc/sfm.pla: 0159: // +; samplesrc/sfm.pla: 0160: life[k] = 3 // Reset life +; samplesrc/sfm.pla: 0161: spriteAdd(k + SPIDER_SPRTEBASE, spriteDup(sprtSpider3)) +; samplesrc/sfm.pla: 0162: fin + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B019 + !WORD _B019-* + !BYTE $06 ; CN 3 + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6A ; LAW _D077+0 +_F011 !WORD _D077+0 + !BYTE $54 ; CALL _X053 +_F012 !WORD 0 + !BYTE $54 ; CALL _X066 +_F013 !WORD 0 + !BYTE $30 ; DROP +_B019 +_B020 +; samplesrc/sfm.pla: 0163: fin +_B017 +_B018 +; samplesrc/sfm.pla: 0164: fin +_B015 +_B016 +; samplesrc/sfm.pla: 0165: if yspdr[k] > SWARM_LIMIT +; samplesrc/sfm.pla: 0166: // +; samplesrc/sfm.pla: 0167: // Attack or not? +; samplesrc/sfm.pla: 0168: // +; samplesrc/sfm.pla: 0169: if hatch[k] == 0 and attack < 0 +; samplesrc/sfm.pla: 0170: attack = k +; samplesrc/sfm.pla: 0171: iyspdr[k] = ATTACK_SPEED +; samplesrc/sfm.pla: 0172: fin + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$34 ; CB 52 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B023 + !WORD _B023-* + !BYTE $66,$5A ; LLW [90] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT +_B023 + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $64,$76 ; LLB [118] + !BYTE $76,$5A ; SLW [90] + !BYTE $18 ; CN 12 + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B024 +_B025 +; samplesrc/sfm.pla: 0173: if attack == k +; samplesrc/sfm.pla: 0174: // +; samplesrc/sfm.pla: 0175: // Attacking +; samplesrc/sfm.pla: 0176: // +; samplesrc/sfm.pla: 0177: if yspdr[k] > WEB_LIMIT +; samplesrc/sfm.pla: 0178: // +; samplesrc/sfm.pla: 0179: // Iterate through web sequence +; samplesrc/sfm.pla: 0180: // +; samplesrc/sfm.pla: 0181: when webstate + !BYTE $66,$5A ; LLW [90] + !BYTE $64,$76 ; LLB [118] + !BYTE $24 ; BRNE _B026 + !WORD _B026-* + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$98 ; CB 152 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $64,$7B ; LLB [123] + !BYTE $52 ; SEL + !WORD _B031-* +; samplesrc/sfm.pla: 0182: is 10 +_B032 +; samplesrc/sfm.pla: 0183: iyspdr[k] = -8 // Retreat +; samplesrc/sfm.pla: 0184: yspdr[k] = WEB_LIMIT +; samplesrc/sfm.pla: 0185: spriteDel(2) +; samplesrc/sfm.pla: 0186: spriteDel(3) +; samplesrc/sfm.pla: 0187: spriteDel(4) +; samplesrc/sfm.pla: 0188: webstate = 0 +; samplesrc/sfm.pla: 0189: break + !BYTE $5E,$F8 ; CFFB -8 + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X067 +_F014 !WORD 0 + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X067 +_F015 !WORD 0 + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X067 +_F016 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$7B ; SLB [123] + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +; samplesrc/sfm.pla: 0190: is 0 +_B033 +; samplesrc/sfm.pla: 0191: iyspdr[k] = 0 +; samplesrc/sfm.pla: 0192: spriteAdd(2, sprtWeb1) +; samplesrc/sfm.pla: 0193: spritePosIndex(xspdr[k], WEB_LIMIT+7, 2) +; samplesrc/sfm.pla: 0194: buzz = WEB1_BUZZ +; samplesrc/sfm.pla: 0195: webstate = 1 +; samplesrc/sfm.pla: 0196: break + !BYTE $00 ; CN 0 + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _D081+0 +_F017 !WORD _D081+0 + !BYTE $54 ; CALL _X066 +_F018 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$9F ; CB 159 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X061 +_F019 !WORD 0 + !BYTE $14 ; CN 10 + !BYTE $78 ; SAB _D091+0 +_F020 !WORD _D091+0 + !BYTE $02 ; CN 1 + !BYTE $74,$7B ; SLB [123] + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +; samplesrc/sfm.pla: 0197: is 1 +_B034 +; samplesrc/sfm.pla: 0198: spriteAdd(3, sprtWeb2) +; samplesrc/sfm.pla: 0199: spritePosIndex(xspdr[k], WEB_LIMIT+15, 3) +; samplesrc/sfm.pla: 0200: buzz = WEB2_BUZZ +; samplesrc/sfm.pla: 0201: webstate = 2 +; samplesrc/sfm.pla: 0202: break + !BYTE $06 ; CN 3 + !BYTE $6A ; LAW _D082+0 +_F021 !WORD _D082+0 + !BYTE $54 ; CALL _X066 +_F022 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$A7 ; CB 167 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X061 +_F023 !WORD 0 + !BYTE $18 ; CN 12 + !BYTE $78 ; SAB _D091+0 +_F024 !WORD _D091+0 + !BYTE $04 ; CN 2 + !BYTE $74,$7B ; SLB [123] + !BYTE $50 ; BRNCH _B030 + !WORD _B030-* +; samplesrc/sfm.pla: 0203: is 2 +_B035 +; samplesrc/sfm.pla: 0204: spriteAdd(4, sprtWeb3) +; samplesrc/sfm.pla: 0205: spritePosIndex(xspdr[k], WEB_LIMIT+22, 4) +; samplesrc/sfm.pla: 0206: webstate = 3 +; samplesrc/sfm.pla: 0207: otherwise + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _D083+0 +_F025 !WORD _D083+0 + !BYTE $54 ; CALL _X066 +_F026 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$AE ; CB 174 + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X061 +_F027 !WORD 0 + !BYTE $06 ; CN 3 + !BYTE $74,$7B ; SLB [123] + !BYTE $50 ; BRNCH _B036 + !WORD _B036-* +_B031 + !BYTE $04 ; CASEBLOCK + !WORD $0000 + !WORD _B033-* + !WORD $0001 + !WORD _B034-* + !WORD $0002 + !WORD _B035-* + !WORD $000A + !WORD _B032-* +_B036 +; samplesrc/sfm.pla: 0208: // +; samplesrc/sfm.pla: 0209: // States 3..9 just repeat this +; samplesrc/sfm.pla: 0210: // +; samplesrc/sfm.pla: 0211: if xship >= xspdr[k] - 17 and xship <= xspdr[k] + 17 +; samplesrc/sfm.pla: 0212: // +; samplesrc/sfm.pla: 0213: // Capture ship +; samplesrc/sfm.pla: 0214: // +; samplesrc/sfm.pla: 0215: return FALSE + !BYTE $66,$52 ; LLW [82] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $3A,$11 ; SUBI 17 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B037 + !WORD _B037-* + !BYTE $66,$52 ; LLW [82] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$11 ; ADDI 17 + !BYTE $4A ; ISLE +_B037 + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $32 ; DROP2 + !BYTE $00 ; CN 0 + !BYTE $5A,$7C ; LEAVE 124 +; samplesrc/sfm.pla: 0216: fin +_B038 +_B039 +; samplesrc/sfm.pla: 0217: buzz = WEB3_BUZZ +; samplesrc/sfm.pla: 0218: webstate++ + !BYTE $1C ; CN 14 + !BYTE $78 ; SAB _D091+0 +_F028 !WORD _D091+0 + !BYTE $64,$7B ; LLB [123] + !BYTE $8C ; INCR +; samplesrc/sfm.pla: 0219: wend + !BYTE $74,$7B ; SLB [123] +_B030 +; samplesrc/sfm.pla: 0220: else + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 +; samplesrc/sfm.pla: 0221: if iyspdr[k] > 0 +; samplesrc/sfm.pla: 0222: // +; samplesrc/sfm.pla: 0223: // Move towards player during attack, but not too fast +; samplesrc/sfm.pla: 0224: // +; samplesrc/sfm.pla: 0225: xdelta = yspdr[k] > FASTMOVE_LIMIT ?? 2 :: 4 +; samplesrc/sfm.pla: 0226: xspdr[k] = xspdr[k] + (xship - xspdr[k]) / xdelta +; samplesrc/sfm.pla: 0227: buzz = ATTACK_BUZZ +; samplesrc/sfm.pla: 0228: else + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$78 ; CB 120 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $04 ; CN 2 + !BYTE $50 ; BRNCH _B043 + !WORD _B043-* +_B042 + !BYTE $08 ; CN 4 +_B043 + !BYTE $74,$77 ; SLB [119] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $66,$52 ; LLW [82] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $64,$77 ; LLB [119] + !BYTE $88 ; DIV + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $0A ; CN 5 + !BYTE $78 ; SAB _D091+0 +_F029 !WORD _D091+0 + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B040 +; samplesrc/sfm.pla: 0229: // +; samplesrc/sfm.pla: 0230: // Retreat at a progressively faster rate +; samplesrc/sfm.pla: 0231: // +; samplesrc/sfm.pla: 0232: if ixspdr[k] > 0 +; samplesrc/sfm.pla: 0233: xspdr[k] = xspdr[k] + (WEB_LIMIT - yspdr[k]) / 8 +; samplesrc/sfm.pla: 0234: else + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$98 ; CB 152 + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B044 +; samplesrc/sfm.pla: 0235: xspdr[k] = xspdr[k] - (WEB_LIMIT - yspdr[k]) / 8 +; samplesrc/sfm.pla: 0236: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2A,$98 ; CB 152 + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $84 ; SUB + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B045 +; samplesrc/sfm.pla: 0237: fin +_B041 +; samplesrc/sfm.pla: 0238: fin +_B029 +; samplesrc/sfm.pla: 0239: else + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B026 +; samplesrc/sfm.pla: 0240: // +; samplesrc/sfm.pla: 0241: // Just reverse direction towards top of screen +; samplesrc/sfm.pla: 0242: // +; samplesrc/sfm.pla: 0243: iyspdr[k] = -1 +; samplesrc/sfm.pla: 0244: fin + !BYTE $20 ; MINUS ONE + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B027 +; samplesrc/sfm.pla: 0245: else + !BYTE $50 ; BRNCH _B022 + !WORD _B022-* +_B021 +; samplesrc/sfm.pla: 0246: if attack == k +; samplesrc/sfm.pla: 0247: // +; samplesrc/sfm.pla: 0248: // Retreated back to swarm zone so stop attack +; samplesrc/sfm.pla: 0249: // +; samplesrc/sfm.pla: 0250: attack = -1 +; samplesrc/sfm.pla: 0251: iyspdr[k] = -1 +; samplesrc/sfm.pla: 0252: fin + !BYTE $66,$5A ; LLW [90] + !BYTE $64,$76 ; LLB [118] + !BYTE $24 ; BRNE _B046 + !WORD _B046-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$5A ; SLW [90] + !BYTE $20 ; MINUS ONE + !BYTE $28,$32 ; LLA [50] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B046 +_B047 +; samplesrc/sfm.pla: 0253: // +; samplesrc/sfm.pla: 0254: // Swarm movement +; samplesrc/sfm.pla: 0255: // +; samplesrc/sfm.pla: 0256: if ixspdr[k] > 0 +; samplesrc/sfm.pla: 0257: xspdr[k] = xspdr[k] + yspdr[k] / 8 +; samplesrc/sfm.pla: 0258: else + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B048 + !WORD _B048-* + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $82 ; ADD + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B048 +; samplesrc/sfm.pla: 0259: xspdr[k] = xspdr[k] - yspdr[k] / 8 +; samplesrc/sfm.pla: 0260: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $84 ; SUB + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B049 +; samplesrc/sfm.pla: 0261: if xspdr[k] < -5 or xspdr[k] > 284 +; samplesrc/sfm.pla: 0262: if xspdr[k] < -5 +; samplesrc/sfm.pla: 0263: xspdr[k] = -5 +; samplesrc/sfm.pla: 0264: ixspdr[k] = 1 +; samplesrc/sfm.pla: 0265: else + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $5E,$FB ; CFFB -5 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B050 + !WORD _B050-* + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $2C,$1C,$01 ; CW 284 + !BYTE $44 ; ISGT +_B050 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $5E,$FB ; CFFB -5 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B053 + !WORD _B053-* + !BYTE $5E,$FB ; CFFB -5 + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B054 + !WORD _B054-* +_B053 +; samplesrc/sfm.pla: 0266: xspdr[k] = 284 +; samplesrc/sfm.pla: 0267: ixspdr[k] = -1 +; samplesrc/sfm.pla: 0268: fin + !BYTE $2C,$1C,$01 ; CW 284 + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW + !BYTE $20 ; MINUS ONE + !BYTE $28,$22 ; LLA [34] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $72 ; SW +_B054 +; samplesrc/sfm.pla: 0269: fin +_B051 +_B052 +; samplesrc/sfm.pla: 0270: fin +_B022 +; samplesrc/sfm.pla: 0271: spritePosIndex(xspdr[k], yspdr[k], k+SPIDER_SPRTEBASE) +; samplesrc/sfm.pla: 0272: elsif death[k] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $54 ; CALL _X061 +_F030 !WORD 0 + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B013 +; samplesrc/sfm.pla: 0273: // +; samplesrc/sfm.pla: 0274: // Splat sequence +; samplesrc/sfm.pla: 0275: // +; samplesrc/sfm.pla: 0276: death[k]-- + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B055 + !WORD _B055-* + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0277: if death[k] +; samplesrc/sfm.pla: 0278: spriteAdd(k+SPIDER_SPRTEBASE, spriteDup(sprtSplat2)) +; samplesrc/sfm.pla: 0279: spritePosIndex(xspdr[k], yspdr[k], k+SPIDER_SPRTEBASE) +; samplesrc/sfm.pla: 0280: else + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6A ; LAW _D080+0 +_F031 !WORD _D080+0 + !BYTE $54 ; CALL _X053 +_F032 !WORD 0 + !BYTE $54 ; CALL _X066 +_F033 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $54 ; CALL _X061 +_F034 !WORD 0 + !BYTE $50 ; BRNCH _B057 + !WORD _B057-* +_B056 +; samplesrc/sfm.pla: 0281: spriteAdd(k+SPIDER_SPRTEBASE, spriteDup(sprtDummy)) +; samplesrc/sfm.pla: 0282: spritePosIndex(0, 0, k+SPIDER_SPRTEBASE) +; samplesrc/sfm.pla: 0283: spdrcnt-- + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6A ; LAW _D086+0 +_F035 !WORD _D086+0 + !BYTE $54 ; CALL _X053 +_F036 !WORD 0 + !BYTE $54 ; CALL _X066 +_F037 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $54 ; CALL _X061 +_F038 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0284: if not spdrcnt +; samplesrc/sfm.pla: 0285: return TRUE + !BYTE $6E,$00 ; DLW [0] + !BYTE $4E ; BRTRU _B058 + !WORD _B058-* + !BYTE $32 ; DROP2 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$7C ; LEAVE 124 +; samplesrc/sfm.pla: 0286: fin +_B058 +_B059 +; samplesrc/sfm.pla: 0287: buzz = SPLAT_BUZZ +; samplesrc/sfm.pla: 0288: fin + !BYTE $2A,$28 ; CB 40 + !BYTE $78 ; SAB _D091+0 +_F039 !WORD _D091+0 +_B057 +; samplesrc/sfm.pla: 0289: fin +_B055 +_B014 +; samplesrc/sfm.pla: 0290: next +_B012 + !BYTE $A4 ; INCBRLE _B011 + !WORD _B011-* +_B010 + !BYTE $74,$76 ; SLB [118] + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0291: // +; samplesrc/sfm.pla: 0292: // Move ship +; samplesrc/sfm.pla: 0293: // +; samplesrc/sfm.pla: 0294: xdelta, ydelta, btn0, btn1 = joypos(buzz) +; samplesrc/sfm.pla: 0295: buzz = spdrcnt * 4 +; samplesrc/sfm.pla: 0296: xship = xship + ((xdelta + 4) / 8 - 5) +; samplesrc/sfm.pla: 0297: if xship < 0; xship = 0; fin + !BYTE $68 ; LAB _D091+0 +_F040 !WORD _D091+0 + !BYTE $54 ; CALL _X070 +_F041 !WORD 0 + !BYTE $74,$7A ; SLB [122] + !BYTE $74,$79 ; SLB [121] + !BYTE $74,$78 ; SLB [120] + !BYTE $74,$77 ; SLB [119] + !BYTE $66,$00 ; LLW [0] + !BYTE $04 ; CN 2 + !BYTE $9A ; SHL + !BYTE $78 ; SAB _D091+0 +_F042 !WORD _D091+0 + !BYTE $66,$52 ; LLW [82] + !BYTE $64,$77 ; LLB [119] + !BYTE $38,$04 ; ADDI 4 + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $3A,$05 ; SUBI 5 + !BYTE $82 ; ADD + !BYTE $6E,$52 ; DLW [82] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $00 ; CN 0 + !BYTE $76,$52 ; SLW [82] +_B060 +_B061 +; samplesrc/sfm.pla: 0298: if xship > 279; xship = 279; fin + !BYTE $66,$52 ; LLW [82] + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B062 + !WORD _B062-* + !BYTE $2C,$17,$01 ; CW 279 + !BYTE $76,$52 ; SLW [82] +_B062 +_B063 +; samplesrc/sfm.pla: 0299: spritePosIndex(xship, YSHIP, SHIP_SPRTNUM) +; samplesrc/sfm.pla: 0300: // +; samplesrc/sfm.pla: 0301: // Missle +; samplesrc/sfm.pla: 0302: // +; samplesrc/sfm.pla: 0303: if misslecnt and missleloading +; samplesrc/sfm.pla: 0304: missleloading-- + !BYTE $66,$52 ; LLW [82] + !BYTE $2A,$B4 ; CB 180 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X061 +_F043 !WORD 0 + !BYTE $64,$6E ; LLB [110] + !BYTE $AC ; BRAND _B064 + !WORD _B064-* + !BYTE $64,$6D ; LLB [109] +_B064 + !BYTE $4C ; BRFLS _B065 + !WORD _B065-* + !BYTE $64,$6D ; LLB [109] + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0305: fin + !BYTE $74,$6D ; SLB [109] +_B065 +_B066 +; samplesrc/sfm.pla: 0306: if btn1 and not missleloading and ymissle == 255 +; samplesrc/sfm.pla: 0307: // +; samplesrc/sfm.pla: 0308: // Fire missle +; samplesrc/sfm.pla: 0309: // +; samplesrc/sfm.pla: 0310: xmissle = xship +; samplesrc/sfm.pla: 0311: ymissle = YSHIP-15 +; samplesrc/sfm.pla: 0312: missleloading = MISSLE_RELOAD +; samplesrc/sfm.pla: 0313: misslecnt-- + !BYTE $64,$7A ; LLB [122] + !BYTE $AC ; BRAND _B067 + !WORD _B067-* + !BYTE $64,$6D ; LLB [109] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B068 + !WORD _B068-* + !BYTE $64,$6F ; LLB [111] + !BYTE $2A,$FF ; CB 255 + !BYTE $40 ; ISEQ +_B068 +_B067 + !BYTE $4C ; BRFLS _B069 + !WORD _B069-* + !BYTE $66,$52 ; LLW [82] + !BYTE $76,$54 ; SLW [84] + !BYTE $2A,$A5 ; CB 165 + !BYTE $74,$6F ; SLB [111] + !BYTE $14 ; CN 10 + !BYTE $74,$6D ; SLB [109] + !BYTE $64,$6E ; LLB [110] + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0314: spritePos(misslecnt * 16 + 160, 184, sprtMissle) // Erase from armory +; samplesrc/sfm.pla: 0315: spriteDrawXor(sprtMissle) +; samplesrc/sfm.pla: 0316: spriteAdd(1, sprtMissle) +; samplesrc/sfm.pla: 0317: fin + !BYTE $6C,$6E ; DLB [110] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $38,$A0 ; ADDI 160 + !BYTE $2A,$B8 ; CB 184 + !BYTE $6A ; LAW _D085+0 +_F044 !WORD _D085+0 + !BYTE $54 ; CALL _X060 +_F045 !WORD 0 + !BYTE $6A ; LAW _D085+0 +_F046 !WORD _D085+0 + !BYTE $54 ; CALL _X057 +_F047 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _D085+0 +_F048 !WORD _D085+0 + !BYTE $54 ; CALL _X066 +_F049 !WORD 0 + !BYTE $30 ; DROP +_B069 +_B070 +; samplesrc/sfm.pla: 0318: if ymissle <> 255 +; samplesrc/sfm.pla: 0319: if ymissle < 8 +; samplesrc/sfm.pla: 0320: // +; samplesrc/sfm.pla: 0321: // Missle off top of screen +; samplesrc/sfm.pla: 0322: // +; samplesrc/sfm.pla: 0323: spriteDel(1) +; samplesrc/sfm.pla: 0324: ymissle = 255 +; samplesrc/sfm.pla: 0325: else + !BYTE $64,$6F ; LLB [111] + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B071 + !WORD _B071-* + !BYTE $64,$6F ; LLB [111] + !BYTE $10 ; CN 8 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X067 +_F050 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$6F ; SLB [111] + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B073 +; samplesrc/sfm.pla: 0326: ymissle = ymissle - 8 +; samplesrc/sfm.pla: 0327: spritePosIndex(xmissle, ymissle, MISSLE_SPRTNUM) +; samplesrc/sfm.pla: 0328: for k = 0 to spdrnum + !BYTE $64,$6F ; LLB [111] + !BYTE $3A,$08 ; SUBI 8 + !BYTE $74,$6F ; SLB [111] + !BYTE $66,$54 ; LLW [84] + !BYTE $64,$6F ; LLB [111] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X061 +_F051 !WORD 0 + !BYTE $64,$75 ; LLB [117] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B075 + !WORD _B075-* +_B076 + !BYTE $6C,$76 ; DLB [118] +; samplesrc/sfm.pla: 0329: if life[k] +; samplesrc/sfm.pla: 0330: // +; samplesrc/sfm.pla: 0331: // Hit test will all living spiders +; samplesrc/sfm.pla: 0332: // +; samplesrc/sfm.pla: 0333: if ymissle >= yspdr[k] - 15 and ymissle <= yspdr[k] + 5 +; samplesrc/sfm.pla: 0334: if hatch[k] +; samplesrc/sfm.pla: 0335: width = 7 // Egg width +; samplesrc/sfm.pla: 0336: else + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B078 + !WORD _B078-* + !BYTE $64,$6F ; LLB [111] + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $3A,$0F ; SUBI 15 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B080 + !WORD _B080-* + !BYTE $64,$6F ; LLB [111] + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$05 ; ADDI 5 + !BYTE $4A ; ISLE +_B080 + !BYTE $4C ; BRFLS _B081 + !WORD _B081-* + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B083 + !WORD _B083-* + !BYTE $0E ; CN 7 + !BYTE $74,$74 ; SLB [116] + !BYTE $50 ; BRNCH _B084 + !WORD _B084-* +_B083 +; samplesrc/sfm.pla: 0337: width = 10 // Spider width +; samplesrc/sfm.pla: 0338: fin + !BYTE $14 ; CN 10 + !BYTE $74,$74 ; SLB [116] +_B084 +; samplesrc/sfm.pla: 0339: if xmissle >= xspdr[k] - width and xmissle <= xspdr[k] + width +; samplesrc/sfm.pla: 0340: // +; samplesrc/sfm.pla: 0341: // Hit & kill spider +; samplesrc/sfm.pla: 0342: // +; samplesrc/sfm.pla: 0343: life[k] = 0 +; samplesrc/sfm.pla: 0344: death[k] = 2 +; samplesrc/sfm.pla: 0345: spriteAdd(k+SPIDER_SPRTEBASE, spriteDup(sprtSplat1)) +; samplesrc/sfm.pla: 0346: spritePosIndex(xspdr[k], yspdr[k], k+SPIDER_SPRTEBASE) +; samplesrc/sfm.pla: 0347: if attack == k // Was it attacking? +; samplesrc/sfm.pla: 0348: attack = -1 +; samplesrc/sfm.pla: 0349: spriteDel(2) +; samplesrc/sfm.pla: 0350: spriteDel(3) +; samplesrc/sfm.pla: 0351: spriteDel(4) +; samplesrc/sfm.pla: 0352: webstate = 0 +; samplesrc/sfm.pla: 0353: fin + !BYTE $66,$54 ; LLW [84] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $84 ; SUB + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B085 + !WORD _B085-* + !BYTE $66,$54 ; LLW [84] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $B0,$74 ; ADDLB [116] + !BYTE $4A ; ISLE +_B085 + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $00 ; CN 0 + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $70 ; SB + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $6A ; LAW _D079+0 +_F052 !WORD _D079+0 + !BYTE $54 ; CALL _X053 +_F053 !WORD 0 + !BYTE $54 ; CALL _X066 +_F054 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$76 ; LLB [118] + !BYTE $38,$08 ; ADDI 8 + !BYTE $54 ; CALL _X061 +_F055 !WORD 0 + !BYTE $66,$5A ; LLW [90] + !BYTE $64,$76 ; LLB [118] + !BYTE $24 ; BRNE _B088 + !WORD _B088-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$5A ; SLW [90] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X067 +_F056 !WORD 0 + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X067 +_F057 !WORD 0 + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X067 +_F058 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$7B ; SLB [123] +_B088 +_B089 +; samplesrc/sfm.pla: 0354: // +; samplesrc/sfm.pla: 0355: // Remove missle +; samplesrc/sfm.pla: 0356: // +; samplesrc/sfm.pla: 0357: spriteDel(MISSLE_SPRTNUM) +; samplesrc/sfm.pla: 0358: ymissle = 255 +; samplesrc/sfm.pla: 0359: fin + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X067 +_F059 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$6F ; SLB [111] +_B086 +_B087 +; samplesrc/sfm.pla: 0360: fin +_B081 +_B082 +; samplesrc/sfm.pla: 0361: fin +_B078 +_B079 +; samplesrc/sfm.pla: 0362: next +_B077 + !BYTE $A4 ; INCBRLE _B076 + !WORD _B076-* +_B075 + !BYTE $74,$76 ; SLB [118] + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0363: buzz = ymissle/4 +; samplesrc/sfm.pla: 0364: fin + !BYTE $64,$6F ; LLB [111] + !BYTE $04 ; CN 2 + !BYTE $9C ; SHR + !BYTE $78 ; SAB _D091+0 +_F060 !WORD _D091+0 +_B074 +; samplesrc/sfm.pla: 0365: fin +_B071 +_B072 +; samplesrc/sfm.pla: 0366: // +; samplesrc/sfm.pla: 0367: // Update sprites +; samplesrc/sfm.pla: 0368: // +; samplesrc/sfm.pla: 0369: spriteDrawXorList() +; samplesrc/sfm.pla: 0370: // +; samplesrc/sfm.pla: 0371: // Lasers +; samplesrc/sfm.pla: 0372: // +; samplesrc/sfm.pla: 0373: if lasercharging +; samplesrc/sfm.pla: 0374: lasercharging-- + !BYTE $54 ; CALL _X065 +_F061 !WORD 0 + !BYTE $64,$6C ; LLB [108] + !BYTE $4C ; BRFLS _B090 + !WORD _B090-* + !BYTE $64,$6C ; LLB [108] + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0375: hgrColor(1) +; samplesrc/sfm.pla: 0376: hgrRect(81 - lasercharging*4, YSHIP+6, 84 - lasercharging*4, 188) +; samplesrc/sfm.pla: 0377: fin + !BYTE $74,$6C ; SLB [108] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X050 +_F062 !WORD 0 + !BYTE $2A,$51 ; CB 81 + !BYTE $64,$6C ; LLB [108] + !BYTE $04 ; CN 2 + !BYTE $9A ; SHL + !BYTE $84 ; SUB + !BYTE $2A,$BA ; CB 186 + !BYTE $2A,$54 ; CB 84 + !BYTE $64,$6C ; LLB [108] + !BYTE $04 ; CN 2 + !BYTE $9A ; SHL + !BYTE $84 ; SUB + !BYTE $2A,$BC ; CB 188 + !BYTE $54 ; CALL _X037 +_F063 !WORD 0 +_B090 +_B091 +; samplesrc/sfm.pla: 0378: if btn0 and not lasercharging +; samplesrc/sfm.pla: 0379: // +; samplesrc/sfm.pla: 0380: // Fire laser +; samplesrc/sfm.pla: 0381: // +; samplesrc/sfm.pla: 0382: hgrColor(0) +; samplesrc/sfm.pla: 0383: hgrRect(4, YSHIP+6, LASER_RECHARGE * 4 + 4, 188) +; samplesrc/sfm.pla: 0384: lasercharging = LASER_RECHARGE +; samplesrc/sfm.pla: 0385: leftxlaser = xship - 7 +; samplesrc/sfm.pla: 0386: rightxlaser = xship + 7 +; samplesrc/sfm.pla: 0387: leftylaser = 0 +; samplesrc/sfm.pla: 0388: rightylaser = 0 +; samplesrc/sfm.pla: 0389: lefthit = 255 +; samplesrc/sfm.pla: 0390: righthit = 255 +; samplesrc/sfm.pla: 0391: for k = 0 to spdrnum + !BYTE $64,$79 ; LLB [121] + !BYTE $AC ; BRAND _B092 + !WORD _B092-* + !BYTE $64,$6C ; LLB [108] + !BYTE $80 ; NOT +_B092 + !BYTE $4C ; BRFLS _B093 + !WORD _B093-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X050 +_F064 !WORD 0 + !BYTE $08 ; CN 4 + !BYTE $2A,$BA ; CB 186 + !BYTE $2A,$50 ; CB 80 + !BYTE $38,$04 ; ADDI 4 + !BYTE $2A,$BC ; CB 188 + !BYTE $54 ; CALL _X037 +_F065 !WORD 0 + !BYTE $2A,$14 ; CB 20 + !BYTE $74,$6C ; SLB [108] + !BYTE $66,$52 ; LLW [82] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $76,$56 ; SLW [86] + !BYTE $66,$52 ; LLW [82] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$58 ; SLW [88] + !BYTE $00 ; CN 0 + !BYTE $74,$70 ; SLB [112] + !BYTE $00 ; CN 0 + !BYTE $74,$71 ; SLB [113] + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$72 ; SLB [114] + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$73 ; SLB [115] + !BYTE $64,$75 ; LLB [117] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B095 + !WORD _B095-* +_B096 + !BYTE $6C,$76 ; DLB [118] +; samplesrc/sfm.pla: 0392: if life[k] +; samplesrc/sfm.pla: 0393: // +; samplesrc/sfm.pla: 0394: // Hit test will all living spiders +; samplesrc/sfm.pla: 0395: // +; samplesrc/sfm.pla: 0396: if hatch[k] +; samplesrc/sfm.pla: 0397: width = 7 // Egg width +; samplesrc/sfm.pla: 0398: else + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$76 ; ADDLB [118] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B098 + !WORD _B098-* + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B100 + !WORD _B100-* + !BYTE $0E ; CN 7 + !BYTE $74,$74 ; SLB [116] + !BYTE $50 ; BRNCH _B101 + !WORD _B101-* +_B100 +; samplesrc/sfm.pla: 0399: width = 10 // Spider width +; samplesrc/sfm.pla: 0400: fin + !BYTE $14 ; CN 10 + !BYTE $74,$74 ; SLB [116] +_B101 +; samplesrc/sfm.pla: 0401: if leftxlaser >= xspdr[k]-width and leftxlaser <= xspdr[k]+width +; samplesrc/sfm.pla: 0402: if yspdr[k] + 5 > leftylaser +; samplesrc/sfm.pla: 0403: lefthit = k +; samplesrc/sfm.pla: 0404: leftylaser = yspdr[k] + 5 +; samplesrc/sfm.pla: 0405: fin + !BYTE $66,$56 ; LLW [86] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $84 ; SUB + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B102 + !WORD _B102-* + !BYTE $66,$56 ; LLW [86] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $B0,$74 ; ADDLB [116] + !BYTE $4A ; ISLE +_B102 + !BYTE $4C ; BRFLS _B103 + !WORD _B103-* + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$05 ; ADDI 5 + !BYTE $64,$70 ; LLB [112] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $64,$76 ; LLB [118] + !BYTE $74,$72 ; SLB [114] + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$05 ; ADDI 5 + !BYTE $74,$70 ; SLB [112] +_B105 +_B106 +; samplesrc/sfm.pla: 0406: fin +_B103 +_B104 +; samplesrc/sfm.pla: 0407: if rightxlaser >= xspdr[k]-width and rightxlaser <= xspdr[k]+width +; samplesrc/sfm.pla: 0408: if yspdr[k] + 5 > rightylaser +; samplesrc/sfm.pla: 0409: righthit = k +; samplesrc/sfm.pla: 0410: rightylaser = yspdr[k] + 5 +; samplesrc/sfm.pla: 0411: fin + !BYTE $66,$58 ; LLW [88] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $84 ; SUB + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B107 + !WORD _B107-* + !BYTE $66,$58 ; LLW [88] + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $B0,$74 ; ADDLB [116] + !BYTE $4A ; ISLE +_B107 + !BYTE $4C ; BRFLS _B108 + !WORD _B108-* + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$05 ; ADDI 5 + !BYTE $64,$71 ; LLB [113] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B110 + !WORD _B110-* + !BYTE $64,$76 ; LLB [118] + !BYTE $74,$73 ; SLB [115] + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$76 ; IDXLB [118] + !BYTE $62 ; LW + !BYTE $38,$05 ; ADDI 5 + !BYTE $74,$71 ; SLB [113] +_B110 +_B111 +; samplesrc/sfm.pla: 0412: fin +_B108 +_B109 +; samplesrc/sfm.pla: 0413: fin +_B098 +_B099 +; samplesrc/sfm.pla: 0414: next +_B097 + !BYTE $A4 ; INCBRLE _B096 + !WORD _B096-* +_B095 + !BYTE $74,$76 ; SLB [118] + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0415: // +; samplesrc/sfm.pla: 0416: // Draw Laser beams +; samplesrc/sfm.pla: 0417: // +; samplesrc/sfm.pla: 0418: hgrColor(3) +; samplesrc/sfm.pla: 0419: if leftxlaser >= 0 +; samplesrc/sfm.pla: 0420: hgrXorVLin(leftylaser, YSHIP-8, leftxlaser) +; samplesrc/sfm.pla: 0421: hgrXorVLin(leftylaser, YSHIP-8, leftxlaser+1) +; samplesrc/sfm.pla: 0422: fin + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X050 +_F066 !WORD 0 + !BYTE $66,$56 ; LLW [86] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B112 + !WORD _B112-* + !BYTE $64,$70 ; LLB [112] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$56 ; LLW [86] + !BYTE $54 ; CALL _X036 +_F067 !WORD 0 + !BYTE $64,$70 ; LLB [112] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$56 ; LLW [86] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X036 +_F068 !WORD 0 +_B112 +_B113 +; samplesrc/sfm.pla: 0423: if rightxlaser < 280 +; samplesrc/sfm.pla: 0424: hgrXorVLin(rightylaser, YSHIP-8, rightxlaser) +; samplesrc/sfm.pla: 0425: hgrXorVLin(rightylaser, YSHIP-8, rightxlaser-1) +; samplesrc/sfm.pla: 0426: fin + !BYTE $66,$58 ; LLW [88] + !BYTE $2C,$18,$01 ; CW 280 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $64,$71 ; LLB [113] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$58 ; LLW [88] + !BYTE $54 ; CALL _X036 +_F069 !WORD 0 + !BYTE $64,$71 ; LLB [113] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$58 ; LLW [88] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X036 +_F070 !WORD 0 +_B114 +_B115 +; samplesrc/sfm.pla: 0427: buzz = LASER_BUZZ +; samplesrc/sfm.pla: 0428: (@_spkrTone)(15, 1)#0 +; samplesrc/sfm.pla: 0429: if lefthit <> 255 +; samplesrc/sfm.pla: 0430: sprtnum = lefthit + SPIDER_SPRTEBASE +; samplesrc/sfm.pla: 0431: // +; samplesrc/sfm.pla: 0432: // Hit +; samplesrc/sfm.pla: 0433: // +; samplesrc/sfm.pla: 0434: life[lefthit]-- + !BYTE $2A,$14 ; CB 20 + !BYTE $78 ; SAB _D091+0 +_F071 !WORD _D091+0 + !BYTE $1E ; CN 15 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _D092 +_F072 !WORD _D092 + !BYTE $64,$72 ; LLB [114] + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B116 + !WORD _B116-* + !BYTE $64,$72 ; LLB [114] + !BYTE $38,$08 ; ADDI 8 + !BYTE $74,$74 ; SLB [116] + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0435: if not life[lefthit] +; samplesrc/sfm.pla: 0436: // +; samplesrc/sfm.pla: 0437: // Kill spider +; samplesrc/sfm.pla: 0438: // +; samplesrc/sfm.pla: 0439: death[lefthit] = 2 +; samplesrc/sfm.pla: 0440: spriteAdd(sprtnum, spriteDup(sprtSplat1)) +; samplesrc/sfm.pla: 0441: spritePosIndex(xspdr[lefthit], yspdr[lefthit], sprtnum) +; samplesrc/sfm.pla: 0442: if attack == lefthit // Was it attacking? +; samplesrc/sfm.pla: 0443: spriteDel(2) +; samplesrc/sfm.pla: 0444: spriteDel(3) +; samplesrc/sfm.pla: 0445: spriteDel(4) +; samplesrc/sfm.pla: 0446: webstate = 0 +; samplesrc/sfm.pla: 0447: attack = -1 +; samplesrc/sfm.pla: 0448: fin + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $70 ; SB + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B118 + !WORD _B118-* + !BYTE $04 ; CN 2 + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $70 ; SB + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D079+0 +_F073 !WORD _D079+0 + !BYTE $54 ; CALL _X053 +_F074 !WORD 0 + !BYTE $54 ; CALL _X066 +_F075 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$72 ; IDXLB [114] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$72 ; IDXLB [114] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $54 ; CALL _X061 +_F076 !WORD 0 + !BYTE $66,$5A ; LLW [90] + !BYTE $64,$72 ; LLB [114] + !BYTE $24 ; BRNE _B120 + !WORD _B120-* + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X067 +_F077 !WORD 0 + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X067 +_F078 !WORD 0 + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X067 +_F079 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$7B ; SLB [123] + !BYTE $20 ; MINUS ONE + !BYTE $76,$5A ; SLW [90] +_B120 +_B121 +; samplesrc/sfm.pla: 0449: else + !BYTE $50 ; BRNCH _B119 + !WORD _B119-* +_B118 +; samplesrc/sfm.pla: 0450: // +; samplesrc/sfm.pla: 0451: // Dim color to show life status +; samplesrc/sfm.pla: 0452: // +; samplesrc/sfm.pla: 0453: if hatch[lefthit] +; samplesrc/sfm.pla: 0454: sprtEgg = life[lefthit] == 2 ?? sprtEgg2 :: sprtEgg1 +; samplesrc/sfm.pla: 0455: spriteAdd(sprtnum, spriteDup(sprtEgg)) +; samplesrc/sfm.pla: 0456: else + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$72 ; IDXLB [114] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B122 + !WORD _B122-* + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B124 + !WORD _B124-* + !BYTE $6A ; LAW _D072+0 +_F080 !WORD _D072+0 + !BYTE $50 ; BRNCH _B125 + !WORD _B125-* +_B124 + !BYTE $6A ; LAW _D071+0 +_F081 !WORD _D071+0 +_B125 + !BYTE $7A ; SAW _D074+0 +_F082 !WORD _D074+0 + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D074+0 +_F083 !WORD _D074+0 + !BYTE $54 ; CALL _X053 +_F084 !WORD 0 + !BYTE $54 ; CALL _X066 +_F085 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +_B122 +; samplesrc/sfm.pla: 0457: sprtSpider = life[lefthit] == 2 ?? sprtSpider2 :: sprtSpider1 +; samplesrc/sfm.pla: 0458: spriteAdd(sprtnum, spriteDup(sprtSpider)) +; samplesrc/sfm.pla: 0459: fin + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$72 ; ADDLB [114] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B126 + !WORD _B126-* + !BYTE $6A ; LAW _D076+0 +_F086 !WORD _D076+0 + !BYTE $50 ; BRNCH _B127 + !WORD _B127-* +_B126 + !BYTE $6A ; LAW _D075+0 +_F087 !WORD _D075+0 +_B127 + !BYTE $7A ; SAW _D078+0 +_F088 !WORD _D078+0 + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D078+0 +_F089 !WORD _D078+0 + !BYTE $54 ; CALL _X053 +_F090 !WORD 0 + !BYTE $54 ; CALL _X066 +_F091 !WORD 0 + !BYTE $30 ; DROP +_B123 +; samplesrc/sfm.pla: 0460: spritePosIndex(xspdr[lefthit], yspdr[lefthit], sprtnum) +; samplesrc/sfm.pla: 0461: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$72 ; IDXLB [114] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$72 ; IDXLB [114] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $54 ; CALL _X061 +_F092 !WORD 0 +_B119 +; samplesrc/sfm.pla: 0462: fin +_B116 +_B117 +; samplesrc/sfm.pla: 0463: if righthit <> 255 and life[righthit] +; samplesrc/sfm.pla: 0464: sprtnum = righthit + SPIDER_SPRTEBASE +; samplesrc/sfm.pla: 0465: // +; samplesrc/sfm.pla: 0466: // Hit +; samplesrc/sfm.pla: 0467: // +; samplesrc/sfm.pla: 0468: life[righthit]-- + !BYTE $64,$73 ; LLB [115] + !BYTE $2A,$FF ; CB 255 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B128 + !WORD _B128-* + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $60 ; LB +_B128 + !BYTE $4C ; BRFLS _B129 + !WORD _B129-* + !BYTE $64,$73 ; LLB [115] + !BYTE $38,$08 ; ADDI 8 + !BYTE $74,$74 ; SLB [116] + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; samplesrc/sfm.pla: 0469: if not life[righthit] +; samplesrc/sfm.pla: 0470: // +; samplesrc/sfm.pla: 0471: // Kill spider +; samplesrc/sfm.pla: 0472: // +; samplesrc/sfm.pla: 0473: death[righthit] = 2 +; samplesrc/sfm.pla: 0474: spriteAdd(sprtnum, spriteDup(sprtSplat1)) +; samplesrc/sfm.pla: 0475: spritePosIndex(xspdr[righthit], yspdr[righthit], sprtnum) +; samplesrc/sfm.pla: 0476: if attack == righthit // Was it attacking? +; samplesrc/sfm.pla: 0477: spriteDel(2) +; samplesrc/sfm.pla: 0478: spriteDel(3) +; samplesrc/sfm.pla: 0479: spriteDel(4) +; samplesrc/sfm.pla: 0480: webstate = 0 +; samplesrc/sfm.pla: 0481: attack = -1 +; samplesrc/sfm.pla: 0482: fin + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $70 ; SB + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B131 + !WORD _B131-* + !BYTE $04 ; CN 2 + !BYTE $28,$64 ; LLA [100] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $70 ; SB + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D079+0 +_F093 !WORD _D079+0 + !BYTE $54 ; CALL _X053 +_F094 !WORD 0 + !BYTE $54 ; CALL _X066 +_F095 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$73 ; IDXLB [115] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$73 ; IDXLB [115] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $54 ; CALL _X061 +_F096 !WORD 0 + !BYTE $66,$5A ; LLW [90] + !BYTE $64,$73 ; LLB [115] + !BYTE $24 ; BRNE _B133 + !WORD _B133-* + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X067 +_F097 !WORD 0 + !BYTE $30 ; DROP + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X067 +_F098 !WORD 0 + !BYTE $30 ; DROP + !BYTE $08 ; CN 4 + !BYTE $54 ; CALL _X067 +_F099 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$7B ; SLB [123] + !BYTE $20 ; MINUS ONE + !BYTE $76,$5A ; SLW [90] +_B133 +_B134 +; samplesrc/sfm.pla: 0483: else + !BYTE $50 ; BRNCH _B132 + !WORD _B132-* +_B131 +; samplesrc/sfm.pla: 0484: // +; samplesrc/sfm.pla: 0485: // Dim color to show life status +; samplesrc/sfm.pla: 0486: // +; samplesrc/sfm.pla: 0487: if hatch[righthit] +; samplesrc/sfm.pla: 0488: sprtEgg = life[righthit] == 2 ?? sprtEgg2 :: sprtEgg1 +; samplesrc/sfm.pla: 0489: spriteAdd(sprtnum, spriteDup(sprtEgg)) +; samplesrc/sfm.pla: 0490: else + !BYTE $28,$42 ; LLA [66] + !BYTE $B8,$73 ; IDXLB [115] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B135 + !WORD _B135-* + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B137 + !WORD _B137-* + !BYTE $6A ; LAW _D072+0 +_F100 !WORD _D072+0 + !BYTE $50 ; BRNCH _B138 + !WORD _B138-* +_B137 + !BYTE $6A ; LAW _D071+0 +_F101 !WORD _D071+0 +_B138 + !BYTE $7A ; SAW _D074+0 +_F102 !WORD _D074+0 + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D074+0 +_F103 !WORD _D074+0 + !BYTE $54 ; CALL _X053 +_F104 !WORD 0 + !BYTE $54 ; CALL _X066 +_F105 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B136 + !WORD _B136-* +_B135 +; samplesrc/sfm.pla: 0491: sprtSpider = life[righthit] == 2 ?? sprtSpider2 :: sprtSpider1 +; samplesrc/sfm.pla: 0492: spriteAdd(sprtnum, spriteDup(sprtSpider)) +; samplesrc/sfm.pla: 0493: fin + !BYTE $28,$5C ; LLA [92] + !BYTE $B0,$73 ; ADDLB [115] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B139 + !WORD _B139-* + !BYTE $6A ; LAW _D076+0 +_F106 !WORD _D076+0 + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +_B139 + !BYTE $6A ; LAW _D075+0 +_F107 !WORD _D075+0 +_B140 + !BYTE $7A ; SAW _D078+0 +_F108 !WORD _D078+0 + !BYTE $64,$74 ; LLB [116] + !BYTE $6A ; LAW _D078+0 +_F109 !WORD _D078+0 + !BYTE $54 ; CALL _X053 +_F110 !WORD 0 + !BYTE $54 ; CALL _X066 +_F111 !WORD 0 + !BYTE $30 ; DROP +_B136 +; samplesrc/sfm.pla: 0494: spritePosIndex(xspdr[righthit], yspdr[righthit], sprtnum) +; samplesrc/sfm.pla: 0495: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $B8,$73 ; IDXLB [115] + !BYTE $62 ; LW + !BYTE $28,$12 ; LLA [18] + !BYTE $B8,$73 ; IDXLB [115] + !BYTE $62 ; LW + !BYTE $64,$74 ; LLB [116] + !BYTE $54 ; CALL _X061 +_F112 !WORD 0 +_B132 +; samplesrc/sfm.pla: 0496: fin +_B129 +_B130 +; samplesrc/sfm.pla: 0497: // +; samplesrc/sfm.pla: 0498: // Undraw lasers +; samplesrc/sfm.pla: 0499: // +; samplesrc/sfm.pla: 0500: hgrColor(3) +; samplesrc/sfm.pla: 0501: if leftxlaser >= 0 +; samplesrc/sfm.pla: 0502: hgrXorVLin(leftylaser, YSHIP-8, leftxlaser) +; samplesrc/sfm.pla: 0503: hgrXorVLin(leftylaser, YSHIP-8, leftxlaser+1) +; samplesrc/sfm.pla: 0504: fin + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X050 +_F113 !WORD 0 + !BYTE $66,$56 ; LLW [86] + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B141 + !WORD _B141-* + !BYTE $64,$70 ; LLB [112] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$56 ; LLW [86] + !BYTE $54 ; CALL _X036 +_F114 !WORD 0 + !BYTE $64,$70 ; LLB [112] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$56 ; LLW [86] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X036 +_F115 !WORD 0 +_B141 +_B142 +; samplesrc/sfm.pla: 0505: if rightxlaser < 280 +; samplesrc/sfm.pla: 0506: hgrXorVLin(rightylaser, YSHIP-8, rightxlaser) +; samplesrc/sfm.pla: 0507: hgrXorVLin(rightylaser, YSHIP-8, rightxlaser-1) +; samplesrc/sfm.pla: 0508: fin + !BYTE $66,$58 ; LLW [88] + !BYTE $2C,$18,$01 ; CW 280 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B143 + !WORD _B143-* + !BYTE $64,$71 ; LLB [113] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$58 ; LLW [88] + !BYTE $54 ; CALL _X036 +_F116 !WORD 0 + !BYTE $64,$71 ; LLB [113] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$58 ; LLW [88] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X036 +_F117 !WORD 0 +_B143 +_B144 +; samplesrc/sfm.pla: 0509: fin +_B093 +_B094 +; samplesrc/sfm.pla: 0510: // +; samplesrc/sfm.pla: 0511: // Update stars +; samplesrc/sfm.pla: 0512: // +; samplesrc/sfm.pla: 0513: hgrColor(3) +; samplesrc/sfm.pla: 0514: hgrXorPlot(xstar[curstar], ystar[curstar]) +; samplesrc/sfm.pla: 0515: ystar[curstar]++ + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X050 +_F118 !WORD 0 + !BYTE $26 ; LA _D088+0 +_F119 !WORD _D088+0 + !BYTE $BC ; IDXAB _D090+0 +_F120 !WORD _D090+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D089+0 +_F121 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F122 !WORD _D090+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X032 +_F123 !WORD 0 + !BYTE $26 ; LA _D089+0 +_F124 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F125 !WORD _D090+0 + !BYTE $60 ; LB + !BYTE $8C ; INCR +; samplesrc/sfm.pla: 0516: if ystar[curstar] > YSHIP +; samplesrc/sfm.pla: 0517: ystar[curstar] = 0 +; samplesrc/sfm.pla: 0518: fin + !BYTE $26 ; LA _D089+0 +_F126 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F127 !WORD _D090+0 + !BYTE $70 ; SB + !BYTE $26 ; LA _D089+0 +_F128 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F129 !WORD _D090+0 + !BYTE $60 ; LB + !BYTE $2A,$B4 ; CB 180 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B145 + !WORD _B145-* + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D089+0 +_F130 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F131 !WORD _D090+0 + !BYTE $70 ; SB +_B145 +_B146 +; samplesrc/sfm.pla: 0519: hgrXorPlot(xstar[curstar], ystar[curstar]) +; samplesrc/sfm.pla: 0520: curstar++ + !BYTE $26 ; LA _D088+0 +_F132 !WORD _D088+0 + !BYTE $BC ; IDXAB _D090+0 +_F133 !WORD _D090+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D089+0 +_F134 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F135 !WORD _D090+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X032 +_F136 !WORD 0 + !BYTE $68 ; LAB _D090+0 +_F137 !WORD _D090+0 + !BYTE $8C ; INCR +; samplesrc/sfm.pla: 0521: if curstar >= NUMSTARS; curstar = 0; fin + !BYTE $7C ; DAB _D090+0 +_F138 !WORD _D090+0 + !BYTE $2A,$20 ; CB 32 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B147 + !WORD _B147-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D090+0 +_F139 !WORD _D090+0 +_B147 +_B148 +; samplesrc/sfm.pla: 0522: until ^$C000 == $9B // ESCape key pressed +_B009 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $2A,$9B ; CB 155 + !BYTE $24 ; BRNE _B008 + !WORD _B008-* +_B007 +; samplesrc/sfm.pla: 0523: getc +; samplesrc/sfm.pla: 0524: return FALSE + !BYTE $54 ; CALL _X006 +_F140 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$7C ; LEAVE 124 +; samplesrc/sfm.pla: 0525: end +; samplesrc/sfm.pla: 0526: // +; samplesrc/sfm.pla: 0527: // Initialization +; samplesrc/sfm.pla: 0528: // +; samplesrc/sfm.pla: 0529: puts("Loading"); +_INIT + !BYTE $2E ; CS + !BYTE $07 + !BYTE $4C,$6F,$61,$64,$69,$6E,$67 + !BYTE $54 ; CALL _X004 +_F141 !WORD 0 +; samplesrc/sfm.pla: 0530: putc('.') +; samplesrc/sfm.pla: 0531: sprtShip = spriteRead("SHIP") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F142 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$48,$49,$50 + !BYTE $54 ; CALL _X054 +_F143 !WORD 0 + !BYTE $7A ; SAW _D084+0 +_F144 !WORD _D084+0 +; samplesrc/sfm.pla: 0532: if not sprtShip +; samplesrc/sfm.pla: 0533: cmdsys:modexec("SFMSPRT") + !BYTE $6A ; LAW _D084+0 +_F145 !WORD _D084+0 + !BYTE $4E ; BRTRU _B149 + !WORD _B149-* + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$46,$4D,$53,$50,$52,$54 + !BYTE $6A ; LAW _X000+6 +_F146 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0534: sprtShip = spriteRead("SHIP") + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$48,$49,$50 + !BYTE $54 ; CALL _X054 +_F147 !WORD 0 + !BYTE $7A ; SAW _D084+0 +_F148 !WORD _D084+0 +; samplesrc/sfm.pla: 0535: if not sprtShip +; samplesrc/sfm.pla: 0536: puts("\nError: Unable to compile sprites.\n") + !BYTE $6A ; LAW _D084+0 +_F149 !WORD _D084+0 + !BYTE $4E ; BRTRU _B151 + !WORD _B151-* + !BYTE $2E ; CS + !BYTE $23 + !BYTE $0D,$45,$72,$72,$6F,$72,$3A,$20 + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$63,$6F,$6D,$70,$69,$6C + !BYTE $65,$20,$73,$70,$72,$69,$74,$65 + !BYTE $73,$2E,$0D + !BYTE $54 ; CALL _X004 +_F150 !WORD 0 +; samplesrc/sfm.pla: 0537: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; samplesrc/sfm.pla: 0538: fin +_B151 +_B152 +; samplesrc/sfm.pla: 0539: fin +_B149 +_B150 +; samplesrc/sfm.pla: 0540: putc('.') +; samplesrc/sfm.pla: 0541: sprtMissle = spriteRead("MISSLE") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F151 !WORD 0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $4D,$49,$53,$53,$4C,$45 + !BYTE $54 ; CALL _X054 +_F152 !WORD 0 + !BYTE $7A ; SAW _D085+0 +_F153 !WORD _D085+0 +; samplesrc/sfm.pla: 0542: putc('.') +; samplesrc/sfm.pla: 0543: sprtEgg3 = spriteRead("EGG3") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F154 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$33 + !BYTE $54 ; CALL _X054 +_F155 !WORD 0 + !BYTE $7A ; SAW _D073+0 +_F156 !WORD _D073+0 +; samplesrc/sfm.pla: 0544: putc('.') +; samplesrc/sfm.pla: 0545: sprtEgg2 = spriteRead("EGG2") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F157 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$32 + !BYTE $54 ; CALL _X054 +_F158 !WORD 0 + !BYTE $7A ; SAW _D072+0 +_F159 !WORD _D072+0 +; samplesrc/sfm.pla: 0546: putc('.') +; samplesrc/sfm.pla: 0547: sprtEgg1 = spriteRead("EGG1") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F160 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$31 + !BYTE $54 ; CALL _X054 +_F161 !WORD 0 + !BYTE $7A ; SAW _D071+0 +_F162 !WORD _D071+0 +; samplesrc/sfm.pla: 0548: putc('.') +; samplesrc/sfm.pla: 0549: sprtSpider3= spriteRead("SPIDER3") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F163 !WORD 0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$33 + !BYTE $54 ; CALL _X054 +_F164 !WORD 0 + !BYTE $7A ; SAW _D077+0 +_F165 !WORD _D077+0 +; samplesrc/sfm.pla: 0550: putc('.') +; samplesrc/sfm.pla: 0551: sprtSpider2= spriteRead("SPIDER2") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F166 !WORD 0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$32 + !BYTE $54 ; CALL _X054 +_F167 !WORD 0 + !BYTE $7A ; SAW _D076+0 +_F168 !WORD _D076+0 +; samplesrc/sfm.pla: 0552: putc('.') +; samplesrc/sfm.pla: 0553: sprtSpider1= spriteRead("SPIDER1") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F169 !WORD 0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$31 + !BYTE $54 ; CALL _X054 +_F170 !WORD 0 + !BYTE $7A ; SAW _D075+0 +_F171 !WORD _D075+0 +; samplesrc/sfm.pla: 0554: putc('.') +; samplesrc/sfm.pla: 0555: sprtWeb1 = spriteRead("WEB1") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F172 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$31 + !BYTE $54 ; CALL _X054 +_F173 !WORD 0 + !BYTE $7A ; SAW _D081+0 +_F174 !WORD _D081+0 +; samplesrc/sfm.pla: 0556: putc('.') +; samplesrc/sfm.pla: 0557: sprtWeb2 = spriteRead("WEB2") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F175 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$32 + !BYTE $54 ; CALL _X054 +_F176 !WORD 0 + !BYTE $7A ; SAW _D082+0 +_F177 !WORD _D082+0 +; samplesrc/sfm.pla: 0558: putc('.') +; samplesrc/sfm.pla: 0559: sprtWeb3 = spriteRead("WEB3") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F178 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$33 + !BYTE $54 ; CALL _X054 +_F179 !WORD 0 + !BYTE $7A ; SAW _D083+0 +_F180 !WORD _D083+0 +; samplesrc/sfm.pla: 0560: putc('.') +; samplesrc/sfm.pla: 0561: sprtSplat1 = spriteRead("SPLAT1") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F181 !WORD 0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $53,$50,$4C,$41,$54,$31 + !BYTE $54 ; CALL _X054 +_F182 !WORD 0 + !BYTE $7A ; SAW _D079+0 +_F183 !WORD _D079+0 +; samplesrc/sfm.pla: 0562: putc('.') +; samplesrc/sfm.pla: 0563: sprtSplat2 = spriteRead("SPLAT2") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F184 !WORD 0 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $53,$50,$4C,$41,$54,$32 + !BYTE $54 ; CALL _X054 +_F185 !WORD 0 + !BYTE $7A ; SAW _D080+0 +_F186 !WORD _D080+0 +; samplesrc/sfm.pla: 0564: putc('.') +; samplesrc/sfm.pla: 0565: sprtDummy = spriteRead("DUMMY") + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F187 !WORD 0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $44,$55,$4D,$4D,$59 + !BYTE $54 ; CALL _X054 +_F188 !WORD 0 + !BYTE $7A ; SAW _D086+0 +_F189 !WORD _D086+0 +; samplesrc/sfm.pla: 0566: // +; samplesrc/sfm.pla: 0567: // Heat up JIT compiler +; samplesrc/sfm.pla: 0568: // +; samplesrc/sfm.pla: 0569: for curstar = 0 to 50 + !BYTE $2A,$32 ; CB 50 + !BYTE $00 ; CN 0 +_B154 + !BYTE $7C ; DAB _D090+0 +_F190 !WORD _D090+0 +; samplesrc/sfm.pla: 0570: putc('.') +; samplesrc/sfm.pla: 0571: spriteAdd(0, sprtDummy) +; samplesrc/sfm.pla: 0572: spritePosIndex(0, 0, 0) +; samplesrc/sfm.pla: 0573: spriteDrawXorList() +; samplesrc/sfm.pla: 0574: next + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F191 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D086+0 +_F192 !WORD _D086+0 + !BYTE $54 ; CALL _X066 +_F193 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X061 +_F194 !WORD 0 + !BYTE $54 ; CALL _X065 +_F195 !WORD 0 +_B155 + !BYTE $A4 ; INCBRLE _B154 + !WORD _B154-* +_B153 + !BYTE $78 ; SAB _D090+0 +_F196 !WORD _D090+0 + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0575: heapstart = heapmark() +; samplesrc/sfm.pla: 0576: //puts("\nBeginning available memory: "); puti(heapavail()); putln +; samplesrc/sfm.pla: 0577: repeat + !BYTE $54 ; CALL _X012 +_F197 !WORD 0 + !BYTE $7A ; SAW _D087+0 +_F198 !WORD _D087+0 +_B157 +; samplesrc/sfm.pla: 0578: hgrMode(TRUE) +; samplesrc/sfm.pla: 0579: spriteDrawBuf(hgrDrawBuf(0)) // Single buffered +; samplesrc/sfm.pla: 0580: spriteAdd(SHIP_SPRTNUM, sprtShip) +; samplesrc/sfm.pla: 0581: spriteAdd(SPIDER_SPRTEBASE, sprtEgg3) +; samplesrc/sfm.pla: 0582: // +; samplesrc/sfm.pla: 0583: // Init stars +; samplesrc/sfm.pla: 0584: // +; samplesrc/sfm.pla: 0585: xstar[0] = 99 +; samplesrc/sfm.pla: 0586: ystar[0] = 10 +; samplesrc/sfm.pla: 0587: hgrColor(3) +; samplesrc/sfm.pla: 0588: hgrXorPlot(xstar[0], ystar[0]) +; samplesrc/sfm.pla: 0589: for curstar = 1 to NUMSTARS-1 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X045 +_F199 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X049 +_F200 !WORD 0 + !BYTE $54 ; CALL _X068 +_F201 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D084+0 +_F202 !WORD _D084+0 + !BYTE $54 ; CALL _X066 +_F203 !WORD 0 + !BYTE $30 ; DROP + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _D073+0 +_F204 !WORD _D073+0 + !BYTE $54 ; CALL _X066 +_F205 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2A,$63 ; CB 99 + !BYTE $7A ; SAW _D088+0 +_F206 !WORD _D088+0 + !BYTE $14 ; CN 10 + !BYTE $78 ; SAB _D089+0 +_F207 !WORD _D089+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X050 +_F208 !WORD 0 + !BYTE $6A ; LAW _D088+0 +_F209 !WORD _D088+0 + !BYTE $68 ; LAB _D089+0 +_F210 !WORD _D089+0 + !BYTE $54 ; CALL _X032 +_F211 !WORD 0 + !BYTE $2A,$1F ; CB 31 + !BYTE $02 ; CN 1 +_B160 + !BYTE $7C ; DAB _D090+0 +_F212 !WORD _D090+0 +; samplesrc/sfm.pla: 0590: xstar[curstar] = (xstar[curstar - 1] + 97 - curstar) % 280 +; samplesrc/sfm.pla: 0591: ystar[curstar] = (ystar[curstar - 1] + 19 + curstar) % YSHIP +; samplesrc/sfm.pla: 0592: hgrXorPlot(xstar[curstar], ystar[curstar]) +; samplesrc/sfm.pla: 0593: next + !BYTE $26 ; LA _D088+0 +_F213 !WORD _D088+0 + !BYTE $68 ; LAB _D090+0 +_F214 !WORD _D090+0 + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $38,$61 ; ADDI 97 + !BYTE $68 ; LAB _D090+0 +_F215 !WORD _D090+0 + !BYTE $84 ; SUB + !BYTE $2C,$18,$01 ; CW 280 + !BYTE $8A ; MOD + !BYTE $26 ; LA _D088+0 +_F216 !WORD _D088+0 + !BYTE $BC ; IDXAB _D090+0 +_F217 !WORD _D090+0 + !BYTE $72 ; SW + !BYTE $26 ; LA _D089+0 +_F218 !WORD _D089+0 + !BYTE $68 ; LAB _D090+0 +_F219 !WORD _D090+0 + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $38,$13 ; ADDI 19 + !BYTE $B4 ; ADDAB _D090+0 +_F220 !WORD _D090+0 + !BYTE $2A,$B4 ; CB 180 + !BYTE $8A ; MOD + !BYTE $26 ; LA _D089+0 +_F221 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F222 !WORD _D090+0 + !BYTE $70 ; SB + !BYTE $26 ; LA _D088+0 +_F223 !WORD _D088+0 + !BYTE $BC ; IDXAB _D090+0 +_F224 !WORD _D090+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D089+0 +_F225 !WORD _D089+0 + !BYTE $B4 ; ADDAB _D090+0 +_F226 !WORD _D090+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X032 +_F227 !WORD 0 +_B161 + !BYTE $A4 ; INCBRLE _B160 + !WORD _B160-* +_B159 + !BYTE $78 ; SAB _D090+0 +_F228 !WORD _D090+0 + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0594: curstar = 0 +; samplesrc/sfm.pla: 0595: if game(8) +; samplesrc/sfm.pla: 0596: // +; samplesrc/sfm.pla: 0597: // Won +; samplesrc/sfm.pla: 0598: // +; samplesrc/sfm.pla: 0599: spriteDrawXorList() +; samplesrc/sfm.pla: 0600: (@_spkrTone)(100, 20)#0 +; samplesrc/sfm.pla: 0601: (@_spkrTone)(75, 20)#0 +; samplesrc/sfm.pla: 0602: (@_spkrTone)(15, 20)#0 +; samplesrc/sfm.pla: 0603: (@_spkrTone)(25, 100)#0 +; samplesrc/sfm.pla: 0604: puts("\nZiggy Stardust has saved Earth!\n") + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D090+0 +_F229 !WORD _D090+0 + !BYTE $10 ; CN 8 + !BYTE $54 ; CALL _C000 +_F230 !WORD _C000 + !BYTE $4C ; BRFLS _B162 + !WORD _B162-* + !BYTE $54 ; CALL _X065 +_F231 !WORD 0 + !BYTE $2A,$64 ; CB 100 + !BYTE $2A,$14 ; CB 20 + !BYTE $54 ; CALL _D092 +_F232 !WORD _D092 + !BYTE $2A,$4B ; CB 75 + !BYTE $2A,$14 ; CB 20 + !BYTE $54 ; CALL _D092 +_F233 !WORD _D092 + !BYTE $1E ; CN 15 + !BYTE $2A,$14 ; CB 20 + !BYTE $54 ; CALL _D092 +_F234 !WORD _D092 + !BYTE $2A,$19 ; CB 25 + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _D092 +_F235 !WORD _D092 + !BYTE $2E ; CS + !BYTE $21 + !BYTE $0D,$5A,$69,$67,$67,$79,$20,$53 + !BYTE $74,$61,$72,$64,$75,$73,$74,$20 + !BYTE $68,$61,$73,$20,$73,$61,$76,$65 + !BYTE $64,$20,$45,$61,$72,$74,$68,$21 + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F236 !WORD 0 +; samplesrc/sfm.pla: 0605: else + !BYTE $50 ; BRNCH _B163 + !WORD _B163-* +_B162 +; samplesrc/sfm.pla: 0606: // +; samplesrc/sfm.pla: 0607: // Lost +; samplesrc/sfm.pla: 0608: // +; samplesrc/sfm.pla: 0609: spriteDrawXorList() +; samplesrc/sfm.pla: 0610: (@_spkrTone)(100, 50)#0 +; samplesrc/sfm.pla: 0611: spriteDrawXor(sprtShip) +; samplesrc/sfm.pla: 0612: (@_spkrTone)(150, 50)#0 +; samplesrc/sfm.pla: 0613: spriteDrawXor(sprtShip) +; samplesrc/sfm.pla: 0614: (@_spkrTone)(100, 50)#0 +; samplesrc/sfm.pla: 0615: spriteDrawXor(sprtShip) +; samplesrc/sfm.pla: 0616: (@_spkrTone)(150, 50)#0 +; samplesrc/sfm.pla: 0617: puts("\nEarth has been overrun") + !BYTE $54 ; CALL _X065 +_F237 !WORD 0 + !BYTE $2A,$64 ; CB 100 + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _D092 +_F238 !WORD _D092 + !BYTE $6A ; LAW _D084+0 +_F239 !WORD _D084+0 + !BYTE $54 ; CALL _X057 +_F240 !WORD 0 + !BYTE $2A,$96 ; CB 150 + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _D092 +_F241 !WORD _D092 + !BYTE $6A ; LAW _D084+0 +_F242 !WORD _D084+0 + !BYTE $54 ; CALL _X057 +_F243 !WORD 0 + !BYTE $2A,$64 ; CB 100 + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _D092 +_F244 !WORD _D092 + !BYTE $6A ; LAW _D084+0 +_F245 !WORD _D084+0 + !BYTE $54 ; CALL _X057 +_F246 !WORD 0 + !BYTE $2A,$96 ; CB 150 + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _D092 +_F247 !WORD _D092 + !BYTE $2E ; CS + !BYTE $17 + !BYTE $0D,$45,$61,$72,$74,$68,$20,$68 + !BYTE $61,$73,$20,$62,$65,$65,$6E,$20 + !BYTE $6F,$76,$65,$72,$72,$75,$6E + !BYTE $54 ; CALL _X004 +_F248 !WORD 0 +; samplesrc/sfm.pla: 0618: puts("\nby the Spiders from Mars\n") + !BYTE $2E ; CS + !BYTE $1A + !BYTE $0D,$62,$79,$20,$74,$68,$65,$20 + !BYTE $53,$70,$69,$64,$65,$72,$73,$20 + !BYTE $66,$72,$6F,$6D,$20,$4D,$61,$72 + !BYTE $73,$0D + !BYTE $54 ; CALL _X004 +_F249 !WORD 0 +; samplesrc/sfm.pla: 0619: fin +_B163 +; samplesrc/sfm.pla: 0620: hgrMode(FALSE) +; samplesrc/sfm.pla: 0621: // +; samplesrc/sfm.pla: 0622: // Clear sprite lists +; samplesrc/sfm.pla: 0623: // +; samplesrc/sfm.pla: 0624: for curstar = 0 to 15 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X045 +_F250 !WORD 0 + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B165 + !BYTE $7C ; DAB _D090+0 +_F251 !WORD _D090+0 +; samplesrc/sfm.pla: 0625: spriteDel(curstar) +; samplesrc/sfm.pla: 0626: next + !BYTE $68 ; LAB _D090+0 +_F252 !WORD _D090+0 + !BYTE $54 ; CALL _X067 +_F253 !WORD 0 + !BYTE $30 ; DROP +_B166 + !BYTE $A4 ; INCBRLE _B165 + !WORD _B165-* +_B164 + !BYTE $78 ; SAB _D090+0 +_F254 !WORD _D090+0 + !BYTE $30 ; DROP +; samplesrc/sfm.pla: 0627: spriteDrawXorList() +; samplesrc/sfm.pla: 0628: spriteDrawXorList() +; samplesrc/sfm.pla: 0629: // +; samplesrc/sfm.pla: 0630: // Reset heap +; samplesrc/sfm.pla: 0631: // +; samplesrc/sfm.pla: 0632: heaprelease(heapstart) +; samplesrc/sfm.pla: 0633: //puts("\nAvailable memory: "); puti(heapavail()); putln +; samplesrc/sfm.pla: 0634: puts("Play again (Y/N)?") + !BYTE $54 ; CALL _X065 +_F255 !WORD 0 + !BYTE $54 ; CALL _X065 +_F256 !WORD 0 + !BYTE $6A ; LAW _D087+0 +_F257 !WORD _D087+0 + !BYTE $54 ; CALL _X015 +_F258 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $11 + !BYTE $50,$6C,$61,$79,$20,$61,$67,$61 + !BYTE $69,$6E,$20,$28,$59,$2F,$4E,$29 + !BYTE $3F + !BYTE $54 ; CALL _X004 +_F259 !WORD 0 +; samplesrc/sfm.pla: 0635: until toupper(getc) <> 'Y' +_B158 + !BYTE $54 ; CALL _X006 +_F260 !WORD 0 + !BYTE $54 ; CALL _X021 +_F261 !WORD 0 + !BYTE $2A,$59 ; CB 89 + !BYTE $22 ; BREQ _B157 + !WORD _B157-* +_B156 +; samplesrc/sfm.pla: 0636: putln +; samplesrc/sfm.pla: 0637: done + !BYTE $54 ; CALL _X003 +_F262 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 60 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 57 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 70 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 60 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 57 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 37 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE 53 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE 54 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE 61 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE 49 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE 66 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE 50 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE 57 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE 57 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE 57 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE 67 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE 65 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: HGRXORPLOT + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D0,$CC,$CF,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: HGRXORVLIN + !BYTE $C8,$C7,$D2,$D8,$CF,$D2,$D6,$CC,$C9,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 36 ; ESD INDEX + ; DCI STRING: HGRRECT + !BYTE $C8,$C7,$D2,$D2,$C5,$C3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 37 ; ESD INDEX + ; DCI STRING: HGRMODE + !BYTE $C8,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + ; DCI STRING: HGRDRAWBUF + !BYTE $C8,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 49 ; ESD INDEX + ; DCI STRING: HGRCOLOR + !BYTE $C8,$C7,$D2,$C3,$CF,$CC,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 50 ; ESD INDEX + ; DCI STRING: SPRITEDUP + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D5,$50 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 53 ; ESD INDEX + ; DCI STRING: SPRITEREAD + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D2,$C5,$C1,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 54 ; ESD INDEX + ; DCI STRING: SPRITEDRAWXOR + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$D8,$CF,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 57 ; ESD INDEX + ; DCI STRING: SPRITEPOS + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D0,$CF,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 60 ; ESD INDEX + ; DCI STRING: SPRITEPOSINDEX + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D0,$CF,$D3,$C9,$CE,$C4,$C5,$58 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 61 ; ESD INDEX + ; DCI STRING: SPRITEDRAWXORLIST + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$D8,$CF,$D2,$CC,$C9,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 65 ; ESD INDEX + ; DCI STRING: SPRITEADD + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C1,$C4,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 66 ; ESD INDEX + ; DCI STRING: SPRITEDEL + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$C5,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 67 ; ESD INDEX + ; DCI STRING: SPRITEDRAWBUF + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 68 ; ESD INDEX + ; DCI STRING: JOYPOS + !BYTE $CA,$CF,$D9,$D0,$CF,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 70 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/sfmsprt.a b/src/samplesrc/sfmsprt.a new file mode 100644 index 0000000..2ed308b --- /dev/null +++ b/src/samplesrc/sfmsprt.a @@ -0,0 +1,2284 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/sfmsprt.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/sfmsprt.pla: 0001: +; samplesrc/sfmsprt.pla: 0002: include "inc/hgrlib.plh" +; inc/hgrlib.plh: 0001: import hgrlib + ; DCI STRING: HGRLIB + !BYTE $C8,$C7,$D2,$CC,$C9,$42 + ; HGRLIB -> X028 +; inc/hgrlib.plh: 0002: predef divmod7(x)#2 + ; DIVMOD7 -> X029 +; inc/hgrlib.plh: 0003: predef hgrPlot(x, y)#0 + ; HGRPLOT -> X030 +; inc/hgrlib.plh: 0004: predef hgrOrPlot(x, y)#0 + ; HGRORPLOT -> X031 +; inc/hgrlib.plh: 0005: predef hgrXorPlot(x, y)#0 + ; HGRXORPLOT -> X032 +; inc/hgrlib.plh: 0006: predef hgrHLin(x1, x2, y)#0 + ; HGRHLIN -> X033 +; inc/hgrlib.plh: 0007: predef hgrVLin(y1, y2, x)#0 + ; HGRVLIN -> X034 +; inc/hgrlib.plh: 0008: predef hgrXorHLin(x1, x2, y)#0 + ; HGRXORHLIN -> X035 +; inc/hgrlib.plh: 0009: predef hgrXorVLin(y1, y2, x)#0 + ; HGRXORVLIN -> X036 +; inc/hgrlib.plh: 0010: predef hgrRect(x1, y1, x2, y2)#0 + ; HGRRECT -> X037 +; inc/hgrlib.plh: 0011: predef hgrXorRect(x1, y1, x2, y2)#0 + ; HGRXORRECT -> X038 +; inc/hgrlib.plh: 0012: predef hgrBLT(x, y, width, height, srcptr)#0 + ; HGRBLT -> X039 +; inc/hgrlib.plh: 0013: predef hgrCopySrc(ofst, y, w, h, srcptr)#0 + ; HGRCOPYSRC -> X040 +; inc/hgrlib.plh: 0014: predef hgrAndSrc(ofst, y, w, h, srcptr)#0 + ; HGRANDSRC -> X041 +; inc/hgrlib.plh: 0015: predef hgrXorSrc(ofst, y, w, h, srcptr)#0 + ; HGRXORSRC -> X042 +; inc/hgrlib.plh: 0016: predef hgrOrSrc(ofst, y, w, h, srcptr)#0 + ; HGRORSRC -> X043 +; inc/hgrlib.plh: 0017: predef hgrCopyDst(ofst, y, w, h, dstptr)#0 + ; HGRCOPYDST -> X044 +; inc/hgrlib.plh: 0018: predef hgrMode(mode)#1 + ; HGRMODE -> X045 +; inc/hgrlib.plh: 0019: predef hgrClear#0 + ; HGRCLEAR -> X046 +; inc/hgrlib.plh: 0020: predef hgrShow(page)#1 + ; HGRSHOW -> X047 +; inc/hgrlib.plh: 0021: predef hgrSwap#1 + ; HGRSWAP -> X048 +; inc/hgrlib.plh: 0022: predef hgrDrawBuf(page)#1 + ; HGRDRAWBUF -> X049 +; inc/hgrlib.plh: 0023: predef hgrColor(clr)#0 + ; HGRCOLOR -> X050 +; inc/hgrlib.plh: 0024: end +; samplesrc/sfmsprt.pla: 0002: +; samplesrc/sfmsprt.pla: 0003: include "inc/hgrsprite.plh" +; inc/hgrsprite.plh: 0001: import hgrsprite + ; DCI STRING: HGRSPRITE + !BYTE $C8,$C7,$D2,$D3,$D0,$D2,$C9,$D4,$45 + ; HGRSPRITE -> X051 +; inc/hgrsprite.plh: 0002: predef spriteCompile(w, h, xcenter, ycenter, srcptr)#1 + ; SPRITECOMPILE -> X052 +; inc/hgrsprite.plh: 0003: predef spriteDup(sprtsrc)#1 + ; SPRITEDUP -> X053 +; inc/hgrsprite.plh: 0004: predef spriteRead(filestr)#1 + ; SPRITEREAD -> X054 +; inc/hgrsprite.plh: 0005: predef spriteSave(filestr, sprtptr)#1 + ; SPRITESAVE -> X055 +; inc/hgrsprite.plh: 0006: predef spriteDraw(sprtptr)#0 + ; SPRITEDRAW -> X056 +; inc/hgrsprite.plh: 0007: predef spriteDrawXor(sprtptr)#0 + ; SPRITEDRAWXOR -> X057 +; inc/hgrsprite.plh: 0008: predef spriteUnDraw(sprtptr)#0 + ; SPRITEUNDRAW -> X058 +; inc/hgrsprite.plh: 0009: predef spriteUnDrawXor(sprtptr)#0 + ; SPRITEUNDRAWXOR -> X059 +; inc/hgrsprite.plh: 0010: predef spritePos(x, y, sprtptr)#0 + ; SPRITEPOS -> X060 +; inc/hgrsprite.plh: 0011: predef spritePosIndex(x, y, i)#0 + ; SPRITEPOSINDEX -> X061 +; inc/hgrsprite.plh: 0012: predef spriteUnDrawList#0 + ; SPRITEUNDRAWLIST -> X062 +; inc/hgrsprite.plh: 0013: predef spriteUnDrawXorList#0 + ; SPRITEUNDRAWXORLIST -> X063 +; inc/hgrsprite.plh: 0014: predef spriteDrawList#0 + ; SPRITEDRAWLIST -> X064 +; inc/hgrsprite.plh: 0015: predef spriteDrawXorList#0 + ; SPRITEDRAWXORLIST -> X065 +; inc/hgrsprite.plh: 0016: predef spriteAdd(i, sprtptr)#1 + ; SPRITEADD -> X066 +; inc/hgrsprite.plh: 0017: predef spriteDel(i)#1 + ; SPRITEDEL -> X067 +; inc/hgrsprite.plh: 0018: predef spriteDrawBuf(page)#1 + ; SPRITEDRAWBUF -> X068 +; inc/hgrsprite.plh: 0019: end +; samplesrc/sfmsprt.pla: 0003: +; samplesrc/sfmsprt.pla: 0004: sysflags reshgr1 // Reserve HGR page 1 + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0010 ; SYSTEM FLAGS +; samplesrc/sfmsprt.pla: 0005: +; samplesrc/sfmsprt.pla: 0006: +; samplesrc/sfmsprt.pla: 0007: byte egg3 = $88,$88,$83,$33,$38,$88,$88 +_D069 ; egg3 = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0008: byte = $88,$83,$33,$11,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0009: byte = $83,$31,$11,$11,$11,$13,$38 + !BYTE $83 + !BYTE $31 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $13 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0010: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0011: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0012: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0013: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0014: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0015: byte = $33,$11,$11,$11,$11,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0016: byte = $83,$31,$11,$11,$11,$13,$38 + !BYTE $83 + !BYTE $31 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $13 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0017: byte = $88,$83,$33,$11,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0018: byte = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0019: byte egg2 = $88,$88,$83,$33,$38,$88,$88 +_D070 ; egg2 = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0020: byte = $88,$83,$33,$11,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0021: byte = $83,$30,$11,$00,$11,$13,$38 + !BYTE $83 + !BYTE $30 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $13 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0022: byte = $33,$11,$00,$11,$00,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0023: byte = $33,$00,$11,$00,$11,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0024: byte = $33,$11,$00,$11,$00,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0025: byte = $33,$00,$11,$00,$11,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0026: byte = $33,$11,$00,$11,$00,$11,$33 + !BYTE $33 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0027: byte = $33,$00,$11,$00,$11,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0028: byte = $83,$31,$00,$11,$00,$13,$38 + !BYTE $83 + !BYTE $31 + !BYTE $00 + !BYTE $11 + !BYTE $00 + !BYTE $13 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0029: byte = $88,$83,$33,$00,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $00 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0030: byte = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0031: byte egg1 = $88,$88,$83,$33,$38,$88,$88 +_D071 ; egg1 = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0032: byte = $88,$83,$33,$00,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $00 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0033: byte = $83,$30,$00,$00,$00,$03,$38 + !BYTE $83 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0034: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0035: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0036: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0037: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0038: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0039: byte = $33,$00,$00,$00,$00,$00,$33 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0040: byte = $83,$30,$00,$00,$00,$03,$38 + !BYTE $83 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0041: byte = $88,$83,$33,$11,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $11 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0042: byte = $88,$88,$83,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0043: byte spider3 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 +_D072 ; spider3 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0044: byte = $33,$88,$83,$32,$22,$22,$23,$38,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $23 + !BYTE $38 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0045: byte = $83,$38,$83,$32,$22,$22,$23,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $32 + !BYTE $22 + !BYTE $22 + !BYTE $23 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0046: byte = $88,$83,$33,$22,$22,$22,$22,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0047: byte = $33,$88,$33,$22,$22,$22,$22,$33,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0048: byte = $88,$33,$38,$33,$22,$22,$33,$83,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $38 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $83 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0049: byte = $88,$88,$83,$33,$22,$22,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0050: byte = $88,$33,$33,$33,$22,$22,$33,$33,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0051: byte = $33,$88,$88,$88,$33,$33,$88,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0052: byte = $88,$88,$33,$33,$22,$22,$33,$33,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0053: byte = $88,$33,$88,$33,$22,$22,$33,$88,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $22 + !BYTE $22 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0054: byte = $33,$88,$88,$83,$32,$23,$38,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $32 + !BYTE $23 + !BYTE $38 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0055: byte = $88,$88,$88,$88,$33,$33,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0056: byte spider2 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 +_D073 ; spider2 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0057: byte = $33,$88,$83,$30,$02,$20,$03,$38,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $30 + !BYTE $02 + !BYTE $20 + !BYTE $03 + !BYTE $38 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0058: byte = $83,$38,$83,$32,$20,$02,$23,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $32 + !BYTE $20 + !BYTE $02 + !BYTE $23 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0059: byte = $88,$83,$33,$20,$02,$20,$02,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $20 + !BYTE $02 + !BYTE $20 + !BYTE $02 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0060: byte = $33,$88,$33,$02,$20,$02,$20,$33,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $02 + !BYTE $20 + !BYTE $02 + !BYTE $20 + !BYTE $33 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0061: byte = $88,$33,$38,$30,$02,$20,$03,$83,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $38 + !BYTE $30 + !BYTE $02 + !BYTE $20 + !BYTE $03 + !BYTE $83 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0062: byte = $88,$88,$83,$33,$20,$02,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $20 + !BYTE $02 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0063: byte = $88,$33,$33,$30,$02,$20,$03,$33,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $30 + !BYTE $02 + !BYTE $20 + !BYTE $03 + !BYTE $33 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0064: byte = $33,$88,$88,$88,$33,$33,$88,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0065: byte = $88,$88,$33,$30,$02,$20,$03,$33,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $30 + !BYTE $02 + !BYTE $20 + !BYTE $03 + !BYTE $33 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0066: byte = $88,$33,$88,$33,$20,$02,$33,$88,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $20 + !BYTE $02 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0067: byte = $33,$88,$88,$83,$32,$23,$38,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $32 + !BYTE $23 + !BYTE $38 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0068: byte = $88,$88,$88,$88,$33,$33,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0069: byte spider1 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 +_D074 ; spider1 = $33,$88,$88,$33,$33,$33,$33,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0070: byte = $33,$88,$83,$30,$00,$00,$03,$38,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $38 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0071: byte = $83,$38,$83,$30,$00,$00,$03,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0072: byte = $88,$83,$33,$00,$00,$00,$00,$33,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0073: byte = $33,$88,$33,$00,$00,$00,$00,$33,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $00 + !BYTE $33 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0074: byte = $88,$33,$38,$33,$00,$00,$33,$83,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $38 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $33 + !BYTE $83 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0075: byte = $88,$88,$83,$33,$00,$00,$33,$38,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $33 + !BYTE $38 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0076: byte = $88,$33,$33,$30,$00,$00,$03,$33,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $33 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0077: byte = $33,$88,$88,$88,$33,$33,$88,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0078: byte = $88,$88,$33,$30,$00,$00,$03,$33,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $30 + !BYTE $00 + !BYTE $00 + !BYTE $03 + !BYTE $33 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0079: byte = $88,$33,$88,$33,$00,$00,$33,$88,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $00 + !BYTE $00 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0080: byte = $33,$88,$88,$83,$30,$03,$38,$88,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $83 + !BYTE $30 + !BYTE $03 + !BYTE $38 + !BYTE $88 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0081: byte = $88,$88,$88,$88,$33,$33,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0082: byte web1 = $88,$83,$38,$88 +_D075 ; web1 = $88,$83,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0083: byte = $88,$38,$83,$88 + !BYTE $88 + !BYTE $38 + !BYTE $83 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0084: byte = $88,$38,$83,$88 + !BYTE $88 + !BYTE $38 + !BYTE $83 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0085: byte = $88,$33,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0086: byte = $83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0087: byte = $83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0088: byte = $83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0089: byte = $33,$33,$33,$33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0090: byte web2 = $88,$33,$83,$38,$33,$88 +_D076 ; web2 = $88,$33,$83,$38,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $83 + !BYTE $38 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0091: byte = $88,$38,$83,$38,$83,$88 + !BYTE $88 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0092: byte = $83,$38,$83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0093: byte = $83,$33,$33,$33,$33,$38 + !BYTE $83 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0094: byte = $83,$38,$83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0095: byte = $83,$38,$83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0096: byte = $33,$88,$83,$38,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $38 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0097: byte = $33,$33,$33,$33,$33,$33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0098: byte web3 = $88,$83,$38,$83,$38,$83,$38,$83,$38,$88 +_D077 ; web3 = $88,$83,$38,$83,$38,$83,$38,$83,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0099: byte = $88,$83,$38,$83,$38,$83,$38,$83,$38,$88 + !BYTE $88 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0100: byte = $88,$33,$88,$33,$88,$88,$33,$88,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $88 + !BYTE $33 + !BYTE $88 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0101: byte = $88,$33,$33,$33,$33,$33,$33,$33,$33,$88 + !BYTE $88 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0102: byte = $83,$38,$88,$33,$83,$38,$33,$88,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $88 + !BYTE $33 + !BYTE $83 + !BYTE $38 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0103: byte = $83,$38,$83,$38,$83,$38,$83,$38,$83,$38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 +; samplesrc/sfmsprt.pla: 0104: byte = $33,$88,$83,$38,$83,$38,$83,$38,$88,$33 + !BYTE $33 + !BYTE $88 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $83 + !BYTE $38 + !BYTE $88 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0105: byte = $33,$38,$33,$33,$33,$33,$33,$33,$33,$33 + !BYTE $33 + !BYTE $38 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 + !BYTE $33 +; samplesrc/sfmsprt.pla: 0106: byte splat1 = $88,$88,$88,$22,$22,$22,$22,$88,$88,$88 +_D078 ; splat1 = $88,$88,$88,$22,$22,$22,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0107: byte = $88,$88,$88,$22,$11,$11,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0108: byte = $88,$88,$88,$22,$11,$11,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0109: byte = $88,$82,$22,$11,$11,$11,$11,$22,$28,$88 + !BYTE $88 + !BYTE $82 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $28 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0110: byte = $22,$22,$22,$11,$11,$11,$11,$22,$22,$22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 +; samplesrc/sfmsprt.pla: 0111: byte = $88,$22,$28,$22,$11,$11,$22,$82,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $28 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $82 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0112: byte = $88,$88,$82,$22,$11,$11,$22,$28,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $82 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $28 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0113: byte = $88,$22,$22,$22,$11,$11,$22,$22,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0114: byte = $22,$22,$88,$88,$22,$22,$88,$88,$22,$22 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 +; samplesrc/sfmsprt.pla: 0115: byte = $88,$88,$22,$22,$11,$11,$22,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0116: byte = $88,$22,$22,$22,$11,$11,$22,$22,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0117: byte = $22,$22,$88,$82,$21,$12,$28,$88,$22,$22 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $82 + !BYTE $21 + !BYTE $12 + !BYTE $28 + !BYTE $88 + !BYTE $22 + !BYTE $22 +; samplesrc/sfmsprt.pla: 0118: byte = $88,$88,$88,$88,$22,$22,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0119: byte splat2 = $88,$88,$88,$88,$22,$22,$22,$22,$88,$88,$88,$88 +_D079 ; splat2 = $88,$88,$88,$88,$22,$22,$22,$22,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0120: byte = $88,$88,$88,$88,$22,$11,$11,$22,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0121: byte = $88,$88,$88,$82,$22,$11,$11,$22,$88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $82 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0122: byte = $88,$88,$88,$22,$11,$11,$11,$11,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0123: byte = $88,$88,$82,$22,$11,$18,$81,$11,$22,$28,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $82 + !BYTE $22 + !BYTE $11 + !BYTE $18 + !BYTE $81 + !BYTE $11 + !BYTE $22 + !BYTE $28 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0124: byte = $88,$22,$22,$22,$11,$88,$88,$11,$22,$22,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $88 + !BYTE $88 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0125: byte = $22,$28,$82,$22,$11,$88,$88,$11,$22,$28,$82,$22 + !BYTE $22 + !BYTE $28 + !BYTE $82 + !BYTE $22 + !BYTE $11 + !BYTE $88 + !BYTE $88 + !BYTE $11 + !BYTE $22 + !BYTE $28 + !BYTE $82 + !BYTE $22 +; samplesrc/sfmsprt.pla: 0126: byte = $88,$88,$22,$28,$88,$88,$88,$88,$82,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $28 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $82 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0127: byte = $88,$88,$88,$22,$88,$88,$88,$11,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0128: byte = $88,$88,$22,$22,$11,$88,$88,$11,$22,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $88 + !BYTE $88 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0129: byte = $88,$22,$22,$22,$11,$18,$81,$11,$22,$22,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $18 + !BYTE $81 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0130: byte = $88,$88,$88,$22,$11,$18,$81,$11,$22,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $18 + !BYTE $81 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0131: byte = $88,$88,$22,$22,$11,$11,$11,$11,$22,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0132: byte = $88,$22,$22,$88,$22,$11,$11,$22,$88,$22,$22,$88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0133: byte = $22,$28,$88,$88,$88,$22,$22,$88,$88,$88,$82,$22 + !BYTE $22 + !BYTE $28 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $82 + !BYTE $22 +; samplesrc/sfmsprt.pla: 0134: byte = $88,$88,$22,$22,$22,$11,$11,$22,$22,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $22 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0135: byte = $88,$88,$22,$28,$22,$11,$11,$22,$82,$22,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $22 + !BYTE $28 + !BYTE $22 + !BYTE $11 + !BYTE $11 + !BYTE $22 + !BYTE $82 + !BYTE $22 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0136: byte ship = $CC,$CC,$CC,$77,$CC,$CC,$CC +_D080 ; ship = $CC,$CC,$CC,$77,$CC,$CC,$CC + !BYTE $CC + !BYTE $CC + !BYTE $CC + !BYTE $77 + !BYTE $CC + !BYTE $CC + !BYTE $CC +; samplesrc/sfmsprt.pla: 0137: byte = $CC,$CC,$C7,$77,$7C,$CC,$CC + !BYTE $CC + !BYTE $CC + !BYTE $C7 + !BYTE $77 + !BYTE $7C + !BYTE $CC + !BYTE $CC +; samplesrc/sfmsprt.pla: 0138: byte = $CC,$CC,$C7,$77,$7C,$CC,$CC + !BYTE $CC + !BYTE $CC + !BYTE $C7 + !BYTE $77 + !BYTE $7C + !BYTE $CC + !BYTE $CC +; samplesrc/sfmsprt.pla: 0139: byte = $CC,$CC,$C7,$77,$7C,$CC,$CC + !BYTE $CC + !BYTE $CC + !BYTE $C7 + !BYTE $77 + !BYTE $7C + !BYTE $CC + !BYTE $CC +; samplesrc/sfmsprt.pla: 0140: byte = $CC,$CC,$C7,$77,$7C,$CC,$CC + !BYTE $CC + !BYTE $CC + !BYTE $C7 + !BYTE $77 + !BYTE $7C + !BYTE $CC + !BYTE $CC +; samplesrc/sfmsprt.pla: 0141: byte = $77,$CC,$77,$66,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $66 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0142: byte = $77,$CC,$77,$66,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $66 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0143: byte = $77,$CC,$77,$66,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $66 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0144: byte = $77,$CC,$77,$77,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $77 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0145: byte = $77,$CC,$77,$77,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $77 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0146: byte = $77,$CC,$77,$77,$77,$CC,$77 + !BYTE $77 + !BYTE $CC + !BYTE $77 + !BYTE $77 + !BYTE $77 + !BYTE $CC + !BYTE $77 +; samplesrc/sfmsprt.pla: 0147: byte = $77,$C7,$77,$77,$77,$7C,$77 + !BYTE $77 + !BYTE $C7 + !BYTE $77 + !BYTE $77 + !BYTE $77 + !BYTE $7C + !BYTE $77 +; samplesrc/sfmsprt.pla: 0148: byte = $77,$77,$75,$55,$57,$77,$77 + !BYTE $77 + !BYTE $77 + !BYTE $75 + !BYTE $55 + !BYTE $57 + !BYTE $77 + !BYTE $77 +; samplesrc/sfmsprt.pla: 0149: byte = $77,$77,$75,$55,$57,$77,$77 + !BYTE $77 + !BYTE $77 + !BYTE $75 + !BYTE $55 + !BYTE $57 + !BYTE $77 + !BYTE $77 +; samplesrc/sfmsprt.pla: 0150: byte missle = $CC,$55,$CC +_D081 ; missle = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0151: byte = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0152: byte = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0153: byte = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0154: byte = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0155: byte = $CC,$55,$CC + !BYTE $CC + !BYTE $55 + !BYTE $CC +; samplesrc/sfmsprt.pla: 0156: byte = $C5,$55,$5C + !BYTE $C5 + !BYTE $55 + !BYTE $5C +; samplesrc/sfmsprt.pla: 0157: byte = $55,$55,$55 + !BYTE $55 + !BYTE $55 + !BYTE $55 +; samplesrc/sfmsprt.pla: 0158: byte dummy = $88,$88,$88,$88 +_D082 ; dummy = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0159: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0160: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0161: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0162: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0163: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0164: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0165: byte = $88,$88,$88,$88 + !BYTE $88 + !BYTE $88 + !BYTE $88 + !BYTE $88 +; samplesrc/sfmsprt.pla: 0166: var sprtEgg1, sprtEgg2, sprtEgg3 +_D083 !FILL 2 ; sprtEgg1, sprtEgg2, sprtEgg3 +_D084 !FILL 2 ; sprtEgg2, sprtEgg3 +_D085 !FILL 2 ; sprtEgg3 +; samplesrc/sfmsprt.pla: 0167: var sprtSpider1, sprtSpider2, sprtSpider3 +_D086 !FILL 2 ; sprtSpider1, sprtSpider2, sprtSpider3 +_D087 !FILL 2 ; sprtSpider2, sprtSpider3 +_D088 !FILL 2 ; sprtSpider3 +; samplesrc/sfmsprt.pla: 0168: var sprtSplat1, sprtSplat2 +_D089 !FILL 2 ; sprtSplat1, sprtSplat2 +_D090 !FILL 2 ; sprtSplat2 +; samplesrc/sfmsprt.pla: 0169: var sprtWeb1, sprtWeb2, sprtWeb3 +_D091 !FILL 2 ; sprtWeb1, sprtWeb2, sprtWeb3 +_D092 !FILL 2 ; sprtWeb2, sprtWeb3 +_D093 !FILL 2 ; sprtWeb3 +; samplesrc/sfmsprt.pla: 0170: var sprtShip, sprtMissle, sprtDummy +_D094 !FILL 2 ; sprtShip, sprtMissle, sprtDummy +_D095 !FILL 2 ; sprtMissle, sprtDummy +_D096 !FILL 2 ; sprtDummy +; samplesrc/sfmsprt.pla: 0171: +; samplesrc/sfmsprt.pla: 0172: hgrMode(TRUE) +_SUBSEG ; BYTECODE STARTS +_INIT +; samplesrc/sfmsprt.pla: 0173: spriteDrawBuf(hgrDrawBuf(0)) // So we can see the compile process +; samplesrc/sfmsprt.pla: 0174: sprtShip = spriteCompile(14, 14, 7, 13, @ship) +; samplesrc/sfmsprt.pla: 0175: sprtMissle = spriteCompile( 6, 8, 3, 0, @missle) +; samplesrc/sfmsprt.pla: 0176: sprtEgg3 = spriteCompile(14, 12, 7, 6, @egg3) +; samplesrc/sfmsprt.pla: 0177: sprtEgg2 = spriteCompile(14, 12, 7, 6, @egg2) +; samplesrc/sfmsprt.pla: 0178: sprtEgg1 = spriteCompile(14, 12, 7, 6, @egg1) +; samplesrc/sfmsprt.pla: 0179: sprtSpider3= spriteCompile(20, 13, 10, 6, @spider3) +; samplesrc/sfmsprt.pla: 0180: sprtSpider2= spriteCompile(20, 13, 10, 6, @spider2) +; samplesrc/sfmsprt.pla: 0181: sprtSpider1= spriteCompile(20, 13, 10, 6, @spider1) +; samplesrc/sfmsprt.pla: 0182: sprtWeb1 = spriteCompile( 8, 8, 4, 0, @web1) +; samplesrc/sfmsprt.pla: 0183: sprtWeb2 = spriteCompile(12, 8, 6, 0, @web2) +; samplesrc/sfmsprt.pla: 0184: sprtWeb3 = spriteCompile(20, 8, 10, 0, @web3) +; samplesrc/sfmsprt.pla: 0185: sprtSplat1 = spriteCompile(20, 13, 10, 6, @splat1) +; samplesrc/sfmsprt.pla: 0186: sprtSplat2 = spriteCompile(24, 17, 12, 8, @splat2) +; samplesrc/sfmsprt.pla: 0187: sprtDummy = spriteCompile( 7, 8, 0, 0, @dummy) +; samplesrc/sfmsprt.pla: 0188: hgrMode(FALSE) +; samplesrc/sfmsprt.pla: 0189: spriteSave("SHIP", sprtShip) + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X045 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X049 +_F001 !WORD 0 + !BYTE $54 ; CALL _X068 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $1C ; CN 14 + !BYTE $34 ; DUP + !BYTE $0E ; CN 7 + !BYTE $1A ; CN 13 + !BYTE $26 ; LA _D080+0 +_F003 !WORD _D080+0 + !BYTE $54 ; CALL _X052 +_F004 !WORD 0 + !BYTE $7A ; SAW _D094+0 +_F005 !WORD _D094+0 + !BYTE $0C ; CN 6 + !BYTE $10 ; CN 8 + !BYTE $06 ; CN 3 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D081+0 +_F006 !WORD _D081+0 + !BYTE $54 ; CALL _X052 +_F007 !WORD 0 + !BYTE $7A ; SAW _D095+0 +_F008 !WORD _D095+0 + !BYTE $1C ; CN 14 + !BYTE $18 ; CN 12 + !BYTE $0E ; CN 7 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D069+0 +_F009 !WORD _D069+0 + !BYTE $54 ; CALL _X052 +_F010 !WORD 0 + !BYTE $7A ; SAW _D085+0 +_F011 !WORD _D085+0 + !BYTE $1C ; CN 14 + !BYTE $18 ; CN 12 + !BYTE $0E ; CN 7 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D070+0 +_F012 !WORD _D070+0 + !BYTE $54 ; CALL _X052 +_F013 !WORD 0 + !BYTE $7A ; SAW _D084+0 +_F014 !WORD _D084+0 + !BYTE $1C ; CN 14 + !BYTE $18 ; CN 12 + !BYTE $0E ; CN 7 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D071+0 +_F015 !WORD _D071+0 + !BYTE $54 ; CALL _X052 +_F016 !WORD 0 + !BYTE $7A ; SAW _D083+0 +_F017 !WORD _D083+0 + !BYTE $2A,$14 ; CB 20 + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D072+0 +_F018 !WORD _D072+0 + !BYTE $54 ; CALL _X052 +_F019 !WORD 0 + !BYTE $7A ; SAW _D088+0 +_F020 !WORD _D088+0 + !BYTE $2A,$14 ; CB 20 + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D073+0 +_F021 !WORD _D073+0 + !BYTE $54 ; CALL _X052 +_F022 !WORD 0 + !BYTE $7A ; SAW _D087+0 +_F023 !WORD _D087+0 + !BYTE $2A,$14 ; CB 20 + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D074+0 +_F024 !WORD _D074+0 + !BYTE $54 ; CALL _X052 +_F025 !WORD 0 + !BYTE $7A ; SAW _D086+0 +_F026 !WORD _D086+0 + !BYTE $10 ; CN 8 + !BYTE $34 ; DUP + !BYTE $08 ; CN 4 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D075+0 +_F027 !WORD _D075+0 + !BYTE $54 ; CALL _X052 +_F028 !WORD 0 + !BYTE $7A ; SAW _D091+0 +_F029 !WORD _D091+0 + !BYTE $18 ; CN 12 + !BYTE $10 ; CN 8 + !BYTE $0C ; CN 6 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D076+0 +_F030 !WORD _D076+0 + !BYTE $54 ; CALL _X052 +_F031 !WORD 0 + !BYTE $7A ; SAW _D092+0 +_F032 !WORD _D092+0 + !BYTE $2A,$14 ; CB 20 + !BYTE $10 ; CN 8 + !BYTE $14 ; CN 10 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D077+0 +_F033 !WORD _D077+0 + !BYTE $54 ; CALL _X052 +_F034 !WORD 0 + !BYTE $7A ; SAW _D093+0 +_F035 !WORD _D093+0 + !BYTE $2A,$14 ; CB 20 + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $0C ; CN 6 + !BYTE $26 ; LA _D078+0 +_F036 !WORD _D078+0 + !BYTE $54 ; CALL _X052 +_F037 !WORD 0 + !BYTE $7A ; SAW _D089+0 +_F038 !WORD _D089+0 + !BYTE $2A,$18 ; CB 24 + !BYTE $2A,$11 ; CB 17 + !BYTE $18 ; CN 12 + !BYTE $10 ; CN 8 + !BYTE $26 ; LA _D079+0 +_F039 !WORD _D079+0 + !BYTE $54 ; CALL _X052 +_F040 !WORD 0 + !BYTE $7A ; SAW _D090+0 +_F041 !WORD _D090+0 + !BYTE $0E ; CN 7 + !BYTE $10 ; CN 8 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D082+0 +_F042 !WORD _D082+0 + !BYTE $54 ; CALL _X052 +_F043 !WORD 0 + !BYTE $7A ; SAW _D096+0 +_F044 !WORD _D096+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X045 +_F045 !WORD 0 + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$48,$49,$50 + !BYTE $6A ; LAW _D094+0 +_F046 !WORD _D094+0 + !BYTE $54 ; CALL _X055 +_F047 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0190: spriteSave("MISSLE", sprtMissle) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $4D,$49,$53,$53,$4C,$45 + !BYTE $6A ; LAW _D095+0 +_F048 !WORD _D095+0 + !BYTE $54 ; CALL _X055 +_F049 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0191: spriteSave("EGG3", sprtEgg3) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$33 + !BYTE $6A ; LAW _D085+0 +_F050 !WORD _D085+0 + !BYTE $54 ; CALL _X055 +_F051 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0192: spriteSave("EGG2", sprtEgg2) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$32 + !BYTE $6A ; LAW _D084+0 +_F052 !WORD _D084+0 + !BYTE $54 ; CALL _X055 +_F053 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0193: spriteSave("EGG1", sprtEgg1) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $45,$47,$47,$31 + !BYTE $6A ; LAW _D083+0 +_F054 !WORD _D083+0 + !BYTE $54 ; CALL _X055 +_F055 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0194: spriteSave("SPIDER1", sprtSpider1) + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$31 + !BYTE $6A ; LAW _D086+0 +_F056 !WORD _D086+0 + !BYTE $54 ; CALL _X055 +_F057 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0195: spriteSave("SPIDER2", sprtSpider2) + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$32 + !BYTE $6A ; LAW _D087+0 +_F058 !WORD _D087+0 + !BYTE $54 ; CALL _X055 +_F059 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0196: spriteSave("SPIDER3", sprtSpider3) + !BYTE $2E ; CS + !BYTE $07 + !BYTE $53,$50,$49,$44,$45,$52,$33 + !BYTE $6A ; LAW _D088+0 +_F060 !WORD _D088+0 + !BYTE $54 ; CALL _X055 +_F061 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0197: spriteSave("WEB1", sprtWeb1) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$31 + !BYTE $6A ; LAW _D091+0 +_F062 !WORD _D091+0 + !BYTE $54 ; CALL _X055 +_F063 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0198: spriteSave("WEB2", sprtWeb2) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$32 + !BYTE $6A ; LAW _D092+0 +_F064 !WORD _D092+0 + !BYTE $54 ; CALL _X055 +_F065 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0199: spriteSave("WEB3", sprtWeb3) + !BYTE $2E ; CS + !BYTE $04 + !BYTE $57,$45,$42,$33 + !BYTE $6A ; LAW _D093+0 +_F066 !WORD _D093+0 + !BYTE $54 ; CALL _X055 +_F067 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0200: spriteSave("SPLAT1", sprtSplat1) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $53,$50,$4C,$41,$54,$31 + !BYTE $6A ; LAW _D089+0 +_F068 !WORD _D089+0 + !BYTE $54 ; CALL _X055 +_F069 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0201: spriteSave("SPLAT2", sprtSplat2) + !BYTE $2E ; CS + !BYTE $06 + !BYTE $53,$50,$4C,$41,$54,$32 + !BYTE $6A ; LAW _D090+0 +_F070 !WORD _D090+0 + !BYTE $54 ; CALL _X055 +_F071 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0202: spriteSave("DUMMY", sprtDummy) + !BYTE $2E ; CS + !BYTE $05 + !BYTE $44,$55,$4D,$4D,$59 + !BYTE $6A ; LAW _D096+0 +_F072 !WORD _D096+0 + !BYTE $54 ; CALL _X055 +_F073 !WORD 0 + !BYTE $30 ; DROP +; samplesrc/sfmsprt.pla: 0203: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 49 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 52 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 45 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 55 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: HGRMODE + !BYTE $C8,$C7,$D2,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 45 ; ESD INDEX + ; DCI STRING: HGRDRAWBUF + !BYTE $C8,$C7,$D2,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 49 ; ESD INDEX + ; DCI STRING: SPRITECOMPILE + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C3,$CF,$CD,$D0,$C9,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 52 ; ESD INDEX + ; DCI STRING: SPRITESAVE + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$D3,$C1,$D6,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 55 ; ESD INDEX + ; DCI STRING: SPRITEDRAWBUF + !BYTE $D3,$D0,$D2,$C9,$D4,$C5,$C4,$D2,$C1,$D7,$C2,$D5,$46 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 68 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/sieve.a b/src/samplesrc/sieve.a new file mode 100644 index 0000000..4764e96 --- /dev/null +++ b/src/samplesrc/sieve.a @@ -0,0 +1,487 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/sieve.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/sieve.pla: 0001: +; samplesrc/sieve.pla: 0002: +; samplesrc/sieve.pla: 0003: const size = 8190 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; size = 8190 +; samplesrc/sieve.pla: 0004: const sizepl = size+1 + ; sizepl = 8191 +; samplesrc/sieve.pla: 0005: +; samplesrc/sieve.pla: 0006: word flag +_D028 !FILL 2 ; flag +; samplesrc/sieve.pla: 0007: byte iter +_D029 !FILL 1 ; iter +; samplesrc/sieve.pla: 0008: word prime, i, k, count +_D030 !FILL 2 ; prime, i, k, count +_D031 !FILL 2 ; i, k, count +_D032 !FILL 2 ; k, count +_D033 !FILL 2 ; count +; samplesrc/sieve.pla: 0009: +; samplesrc/sieve.pla: 0010: def beep#0 +_SUBSEG ; BYTECODE STARTS +_C000 ; beep() +; samplesrc/sieve.pla: 0011: putc(7) + !BYTE $0E ; CN 7 + !BYTE $26 ; LA _X002+0 +_F000 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0012: end + !BYTE $5C ; RET +; samplesrc/sieve.pla: 0013: +; samplesrc/sieve.pla: 0014: def sieve#0 +_C001 ; sieve() +; samplesrc/sieve.pla: 0015: beep + !BYTE $26 ; LA _C000+0 +_F001 !WORD _C000+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0016: //for iter = 1 to 10 +; samplesrc/sieve.pla: 0017: flag = heapalloc(sizepl) + !BYTE $2C,$FF,$1F ; CW 8191 + !BYTE $26 ; LA _X014+0 +_F002 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D028+0 +_F003 !WORD _D028+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0018: memset(flag, TRUE, sizepl) + !BYTE $26 ; LA _D028+0 +_F004 !WORD _D028+0 + !BYTE $62 ; LW + !BYTE $20 ; MINUS ONE + !BYTE $2C,$FF,$1F ; CW 8191 + !BYTE $26 ; LA _X017+0 +_F005 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0019: count = 0 + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D033+0 +_F006 !WORD _D033+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0020: for i = 0 to size + !BYTE $2C,$FE,$1F ; CW 8190 + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $7E ; DAW _D031+0 +_F007 !WORD _D031+0 +; samplesrc/sieve.pla: 0021: if flag->[i] + !BYTE $26 ; LA _D028+0 +_F008 !WORD _D028+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F009 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* +; samplesrc/sieve.pla: 0022: prime = i + i + 3 + !BYTE $26 ; LA _D031+0 +_F010 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D031+0 +_F011 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $06 ; CN 3 + !BYTE $82 ; ADD + !BYTE $26 ; LA _D030+0 +_F012 !WORD _D030+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0023: k = i + prime + !BYTE $26 ; LA _D031+0 +_F013 !WORD _D031+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D030+0 +_F014 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $26 ; LA _D032+0 +_F015 !WORD _D032+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0024: while k <= size + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B006 +; samplesrc/sieve.pla: 0025: flag->[k] = FALSE + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _D028+0 +_F016 !WORD _D028+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D032+0 +_F017 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $70 ; SB +; samplesrc/sieve.pla: 0026: k = k + prime + !BYTE $26 ; LA _D032+0 +_F018 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D030+0 +_F019 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $26 ; LA _D032+0 +_F020 !WORD _D032+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0027: loop +_B008 + !BYTE $26 ; LA _D032+0 +_F021 !WORD _D032+0 + !BYTE $62 ; LW + !BYTE $2C,$FE,$1F ; CW 8190 + !BYTE $4A ; ISLE + !BYTE $4E ; BRTRU _B006 + !WORD _B006-* +_B007 +; samplesrc/sieve.pla: 0028: count = count + 1 + !BYTE $26 ; LA _D033+0 +_F022 !WORD _D033+0 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $82 ; ADD + !BYTE $26 ; LA _D033+0 +_F023 !WORD _D033+0 + !BYTE $72 ; SW +; samplesrc/sieve.pla: 0029: puti(prime) + !BYTE $26 ; LA _D030+0 +_F024 !WORD _D030+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _X005+0 +_F025 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0030: putln + !BYTE $26 ; LA _X003+0 +_F026 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0031: fin +_B004 +_B005 +; samplesrc/sieve.pla: 0032: next +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $7A ; SAW _D031+0 +_F027 !WORD _D031+0 + !BYTE $30 ; DROP +; samplesrc/sieve.pla: 0033: //next +; samplesrc/sieve.pla: 0034: beep + !BYTE $26 ; LA _C000+0 +_F028 !WORD _C000+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0035: end + !BYTE $5C ; RET +; samplesrc/sieve.pla: 0036: +; samplesrc/sieve.pla: 0037: sieve +_INIT + !BYTE $26 ; LA _C001+0 +_F029 !WORD _C001+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0038: puti(count) + !BYTE $26 ; LA _D033+0 +_F030 !WORD _D033+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _X005+0 +_F031 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0039: puts(" primes.\n") + !BYTE $2E ; CS + !BYTE $09 + !BYTE $20,$70,$72,$69,$6D,$65,$73,$2E + !BYTE $0D + !BYTE $26 ; LA _X004+0 +_F032 !WORD 0+0 + !BYTE $56 ; ICAL +; samplesrc/sieve.pla: 0040: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/test.a b/src/samplesrc/test.a new file mode 100644 index 0000000..665747a --- /dev/null +++ b/src/samplesrc/test.a @@ -0,0 +1,2678 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/test.pla: 0001: // +; samplesrc/test.pla: 0002: // Include all imported modules and their data/functions. +; samplesrc/test.pla: 0003: // +; samplesrc/test.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/test.pla: 0004: +; samplesrc/test.pla: 0005: include "inc/testlib.plh" +; inc/testlib.plh: 0001: import testlib + ; DCI STRING: TESTLIB + !BYTE $D4,$C5,$D3,$D4,$CC,$C9,$42 + ; TESTLIB -> X028 +; inc/testlib.plh: 0002: word print + ; PRINT -> X029 +; inc/testlib.plh: 0003: const dec = 0 + ; dec = 0 +; inc/testlib.plh: 0004: const hex = 2 + ; hex = 2 +; inc/testlib.plh: 0005: const newln = 4 + ; newln = 4 +; inc/testlib.plh: 0006: const str = 6 + ; str = 6 +; inc/testlib.plh: 0007: const chr = 8 + ; chr = 8 +; inc/testlib.plh: 0008: end +; samplesrc/test.pla: 0005: +; samplesrc/test.pla: 0006: // +; samplesrc/test.pla: 0007: // Structure definition. +; samplesrc/test.pla: 0008: // +; samplesrc/test.pla: 0009: struc mystruc + !BYTE $00 ; END OF MODULE DEPENDENCIES +; samplesrc/test.pla: 0010: byte cmd + ; cmd = 0 +; samplesrc/test.pla: 0011: word param + ; param = 1 +; samplesrc/test.pla: 0012: byte[3] +; samplesrc/test.pla: 0013: word data + ; data = 6 +; samplesrc/test.pla: 0014: end + ; mystruc = 8 +; samplesrc/test.pla: 0015: // +; samplesrc/test.pla: 0016: // Const expression +; samplesrc/test.pla: 0017: // +; samplesrc/test.pla: 0018: const constval = 2*(2+3) // a test expression should evaluate to 10 + ; constval = 10 +; samplesrc/test.pla: 0019: // +; samplesrc/test.pla: 0020: // Declare all global variables for this module. +; samplesrc/test.pla: 0021: // Note that arrays are declared with prefix []. postfix [], or no []. +; samplesrc/test.pla: 0022: // Only arrays with predclared sizes need [ and ], such as "int[3] a". +; samplesrc/test.pla: 0023: // +; samplesrc/test.pla: 0024: byte[] hello = "Hello, Apple " +_D030 ; hello = "Hello, Apple " + !BYTE $0D + !BYTE $48,$65,$6C,$6C,$6F,$2C,$20,$41 + !BYTE $70,$70,$6C,$65,$20 +; samplesrc/test.pla: 0025: byte[] a1 = "1" +_D031 ; a1 = "1" + !BYTE $01 + !BYTE $31 +; samplesrc/test.pla: 0026: byte[] a2 = "][" +_D032 ; a2 = "][" + !BYTE $02 + !BYTE $5D,$5B +; samplesrc/test.pla: 0027: byte[] a2p = "][+" +_D033 ; a2p = "][+" + !BYTE $03 + !BYTE $5D,$5B,$2B +; samplesrc/test.pla: 0028: byte[] a2e = "//e" +_D034 ; a2e = "//e" + !BYTE $03 + !BYTE $2F,$2F,$65 +; samplesrc/test.pla: 0029: byte[] a2c = "//c" +_D035 ; a2c = "//c" + !BYTE $03 + !BYTE $2F,$2F,$63 +; samplesrc/test.pla: 0030: byte[] a3 = "///" +_D036 ; a3 = "///" + !BYTE $03 + !BYTE $2F,$2F,$2F +; samplesrc/test.pla: 0031: byte constr = "Constant expression = " +_D037 ; constr = "Constant expression = " + !BYTE $16 + !BYTE $43,$6F,$6E,$73,$74,$61,$6E,$74 + !BYTE $20,$65,$78,$70,$72,$65,$73,$73 + !BYTE $69,$6F,$6E,$20,$3D,$20 +; samplesrc/test.pla: 0032: byte[] offsets = "Structure offsets:" +_D038 ; offsets = "Structure offsets:" + !BYTE $12 + !BYTE $53,$74,$72,$75,$63,$74,$75,$72 + !BYTE $65,$20,$6F,$66,$66,$73,$65,$74 + !BYTE $73,$3A +; samplesrc/test.pla: 0033: word array[] = 1, 10, 100, 1000, 10000 +_D039 ; array[] = 1, 10, 100, 1000, 10000 + !WORD $0001 + !WORD $000A + !WORD $0064 + !WORD $03E8 + !WORD $2710 +; samplesrc/test.pla: 0034: word ptr +_D040 !FILL 2 ; ptr +; samplesrc/test.pla: 0035: // +; samplesrc/test.pla: 0036: // Define functions. +; samplesrc/test.pla: 0037: // +; samplesrc/test.pla: 0038: def tens(start)#0 +_SUBSEG ; BYTECODE STARTS + ; start -> [0] +_C000 ; tens() +; samplesrc/test.pla: 0039: word i, pptr + ; i -> [2] + ; pptr -> [4] +; samplesrc/test.pla: 0040: +; samplesrc/test.pla: 0041: i = start + !BYTE $58,$06,$01 ; ENTER 6,1 +; samplesrc/test.pla: 0042: pptr = @print +; samplesrc/test.pla: 0043: repeat + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$02 ; SLW [2] + !BYTE $26 ; LA _X029+0 +_F000 !WORD 0+0 + !BYTE $76,$04 ; SLW [4] +_B002 +; samplesrc/test.pla: 0044: print:hex(i)#0 +; samplesrc/test.pla: 0045: print:str(" ")#0 + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X029+2 +_F001 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $2E ; CS + !BYTE $03 + !BYTE $20,$20,$20 + !BYTE $6A ; LAW _X029+6 +_F002 !WORD 0+6 + !BYTE $56 ; ICAL +; samplesrc/test.pla: 0046: pptr=>dec(i)#0 +; samplesrc/test.pla: 0047: print:newln()#0 +; samplesrc/test.pla: 0048: i = i / 10 +; samplesrc/test.pla: 0049: until i == 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _X029+4 +_F003 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $76,$02 ; SLW [2] +_B003 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B002 + !WORD _B002-* +_B001 +; samplesrc/test.pla: 0050: end + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/test.pla: 0051: def ascii#0 +_C001 ; ascii() +; samplesrc/test.pla: 0052: byte i + ; i -> [0] +; samplesrc/test.pla: 0053: i = 32 + !BYTE $58,$01,$00 ; ENTER 1,0 +; samplesrc/test.pla: 0054: while i < 128 + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; samplesrc/test.pla: 0055: putc(i) +; samplesrc/test.pla: 0056: i = i + 1 +; samplesrc/test.pla: 0057: loop + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X002 +_F004 !WORD 0 + !BYTE $64,$00 ; LLB [0] + !BYTE $8C ; INCR + !BYTE $74,$00 ; SLB [0] +_B006 + !BYTE $64,$00 ; LLB [0] + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; samplesrc/test.pla: 0058: end + !BYTE $5A,$01 ; LEAVE 1 +; samplesrc/test.pla: 0059: def nums(range)#0 + ; range -> [0] +_C002 ; nums() +; samplesrc/test.pla: 0060: word i + ; i -> [2] +; samplesrc/test.pla: 0061: byte j + ; j -> [4] +; samplesrc/test.pla: 0062: for i = range downto -range step range/10 + !BYTE $58,$05,$01 ; ENTER 5,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $66,$00 ; LLW [0] + !BYTE $A2 ; BRLT _B007 + !WORD _B007-* +_B008 + !BYTE $6E,$02 ; DLW [2] +; samplesrc/test.pla: 0063: puti(i) +; samplesrc/test.pla: 0064: putln +; samplesrc/test.pla: 0065: next + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F005 !WORD 0 + !BYTE $54 ; CALL _X003 +_F006 !WORD 0 +_B009 + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $AA ; SUBBRGE _B008 + !WORD _B008-* +_B007 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; samplesrc/test.pla: 0066: puti(array[0]);putln +; samplesrc/test.pla: 0067: puti(array[1]);putln +; samplesrc/test.pla: 0068: i++ + !BYTE $6A ; LAW _D039+0 +_F007 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F008 !WORD 0 + !BYTE $54 ; CALL _X003 +_F009 !WORD 0 + !BYTE $6A ; LAW _D039+2 +_F010 !WORD _D039+2 + !BYTE $54 ; CALL _X005 +_F011 !WORD 0 + !BYTE $54 ; CALL _X003 +_F012 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; samplesrc/test.pla: 0069: j = 2 +; samplesrc/test.pla: 0070: j++ + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $6C,$04 ; DLB [4] + !BYTE $8C ; INCR +; samplesrc/test.pla: 0071: array[1]++ + !BYTE $74,$04 ; SLB [4] + !BYTE $6A ; LAW _D039+2 +_F013 !WORD _D039+2 + !BYTE $8C ; INCR +; samplesrc/test.pla: 0072: array[0] = array[0] + 1 +; samplesrc/test.pla: 0073: array++ + !BYTE $7A ; SAW _D039+2 +_F014 !WORD _D039+2 + !BYTE $6A ; LAW _D039+0 +_F015 !WORD _D039+0 + !BYTE $8C ; INCR + !BYTE $7E ; DAW _D039+0 +_F016 !WORD _D039+0 + !BYTE $8C ; INCR +; samplesrc/test.pla: 0074: a1[0]++ + !BYTE $7A ; SAW _D039+0 +_F017 !WORD _D039+0 + !BYTE $68 ; LAB _D031+0 +_F018 !WORD _D031+0 + !BYTE $8C ; INCR +; samplesrc/test.pla: 0075: a1++ + !BYTE $7C ; DAB _D031+0 +_F019 !WORD _D031+0 + !BYTE $8C ; INCR +; samplesrc/test.pla: 0076: puti(array[0]);putln +; samplesrc/test.pla: 0077: puti(array[1]);putln +; samplesrc/test.pla: 0078: end + !BYTE $78 ; SAB _D031+0 +_F020 !WORD _D031+0 + !BYTE $6A ; LAW _D039+0 +_F021 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F022 !WORD 0 + !BYTE $54 ; CALL _X003 +_F023 !WORD 0 + !BYTE $6A ; LAW _D039+2 +_F024 !WORD _D039+2 + !BYTE $54 ; CALL _X005 +_F025 !WORD 0 + !BYTE $54 ; CALL _X003 +_F026 !WORD 0 + !BYTE $5A,$05 ; LEAVE 5 +; samplesrc/test.pla: 0079: def printfunc(a, b, lambda)#0 + ; a -> [0] + ; b -> [2] + ; lambda -> [4] +_C003 ; printfunc() +; samplesrc/test.pla: 0080: puts("func(a,b)=") + !BYTE $58,$06,$03 ; ENTER 6,3 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $66,$75,$6E,$63,$28,$61,$2C,$62 + !BYTE $29,$3D + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +; samplesrc/test.pla: 0081: puti(lambda(a,b)) +; samplesrc/test.pla: 0082: putln +; samplesrc/test.pla: 0083: end + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X005 +_F028 !WORD 0 + !BYTE $54 ; CALL _X003 +_F029 !WORD 0 + !BYTE $5A,$06 ; LEAVE 6 +; samplesrc/test.pla: 0084: def vals123#3 +_C004 ; vals123() +; samplesrc/test.pla: 0085: return 1, 2, 3 + !BYTE $02 ; CN 1 + !BYTE $04 ; CN 2 + !BYTE $06 ; CN 3 + !BYTE $5C ; RET +; samplesrc/test.pla: 0086: end +; samplesrc/test.pla: 0087: export def main(range)#0 + ; range -> [0] +_C005 ; main() +; samplesrc/test.pla: 0088: word a, b, c + ; a -> [2] + ; b -> [4] + ; c -> [6] +; samplesrc/test.pla: 0089: word lambda + ; lambda -> [8] +; samplesrc/test.pla: 0090: +; samplesrc/test.pla: 0091: a = 10 + !BYTE $58,$0A,$01 ; ENTER 10,1 +; samplesrc/test.pla: 0092: nums(*range) +; samplesrc/test.pla: 0093: tens(*range*10) +; samplesrc/test.pla: 0094: ascii +; samplesrc/test.pla: 0095: putln +; samplesrc/test.pla: 0096: puts("10 * 8 = "); puti(a * 8); putln + !BYTE $14 ; CN 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C002 +_F030 !WORD _C002 + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $54 ; CALL _C000 +_F031 !WORD _C000 + !BYTE $54 ; CALL _C001 +_F032 !WORD _C001 + !BYTE $54 ; CALL _X003 +_F033 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $31,$30,$20,$2A,$20,$38,$20,$3D + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F034 !WORD 0 +; samplesrc/test.pla: 0097: puts("10 / 2 = "); puti(a / 2); putln + !BYTE $66,$02 ; LLW [2] + !BYTE $06 ; CN 3 + !BYTE $9A ; SHL + !BYTE $54 ; CALL _X005 +_F035 !WORD 0 + !BYTE $54 ; CALL _X003 +_F036 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $31,$30,$20,$2F,$20,$32,$20,$3D + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 +; samplesrc/test.pla: 0098: puts(@hello) +; samplesrc/test.pla: 0099: when MACHID & $C8 + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $54 ; CALL _X005 +_F038 !WORD 0 + !BYTE $54 ; CALL _X003 +_F039 !WORD 0 + !BYTE $26 ; LA _D030+0 +_F040 !WORD _D030+0 + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 + !BYTE $68 ; LAB _X001+0 +_F042 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $52 ; SEL + !WORD _B011-* +; samplesrc/test.pla: 0100: is $08 +_B012 +; samplesrc/test.pla: 0101: puts(@a1) +; samplesrc/test.pla: 0102: break + !BYTE $26 ; LA _D031+0 +_F043 !WORD _D031+0 + !BYTE $54 ; CALL _X004 +_F044 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0103: is $00 +_B013 +; samplesrc/test.pla: 0104: puts(@a2) +; samplesrc/test.pla: 0105: break + !BYTE $26 ; LA _D032+0 +_F045 !WORD _D032+0 + !BYTE $54 ; CALL _X004 +_F046 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0106: is $40 +_B014 +; samplesrc/test.pla: 0107: puts(@a2p) +; samplesrc/test.pla: 0108: break + !BYTE $26 ; LA _D033+0 +_F047 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0109: is $80 +_B015 +; samplesrc/test.pla: 0110: puts(@a2e) +; samplesrc/test.pla: 0111: break + !BYTE $26 ; LA _D034+0 +_F049 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F050 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0112: is $88 +_B016 +; samplesrc/test.pla: 0113: puts(@a2c) +; samplesrc/test.pla: 0114: break + !BYTE $26 ; LA _D035+0 +_F051 !WORD _D035+0 + !BYTE $54 ; CALL _X004 +_F052 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0115: is $C0 +_B017 +; samplesrc/test.pla: 0116: puts(@a3) +; samplesrc/test.pla: 0117: break + !BYTE $26 ; LA _D036+0 +_F053 !WORD _D036+0 + !BYTE $54 ; CALL _X004 +_F054 !WORD 0 + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +; samplesrc/test.pla: 0118: otherwise +_B011 + !BYTE $06 ; CASEBLOCK + !WORD $0000 + !WORD _B013-* + !WORD $0008 + !WORD _B012-* + !WORD $0040 + !WORD _B014-* + !WORD $0080 + !WORD _B015-* + !WORD $0088 + !WORD _B016-* + !WORD $00C0 + !WORD _B017-* +; samplesrc/test.pla: 0119: putc('?') +; samplesrc/test.pla: 0120: wend + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _X002 +_F055 !WORD 0 +_B010 +; samplesrc/test.pla: 0121: putln +; samplesrc/test.pla: 0122: printfunc(1, 2, &(a,b) a+b) + ; a -> [0] + ; b -> [2] + ; a -> [0] + ; b -> [2] +; samplesrc/test.pla: 0123: printfunc(1, 2, &(a,b) (a-b)) + ; a -> [0] + ; b -> [2] + ; a -> [0] + ; b -> [2] +; samplesrc/test.pla: 0124: lambda = &(x,y) x * y + ; x -> [0] + ; y -> [2] +; samplesrc/test.pla: 0125: puti(lambda(2,3));putln +; samplesrc/test.pla: 0126: a = vals123 +; samplesrc/test.pla: 0127: drop, b, drop = vals123 +; samplesrc/test.pla: 0128: drop, drop, c = vals123 +; samplesrc/test.pla: 0129: puts("a, b, c = "); puti(a); puts(", "); puti(b); puts(", "); puti(c); putln + !BYTE $54 ; CALL _X003 +_F056 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $04 ; CN 2 + !BYTE $26 ; LA _C006+0 +_F057 !WORD _C006+0 + !BYTE $54 ; CALL _C003 +_F058 !WORD _C003 + !BYTE $02 ; CN 1 + !BYTE $04 ; CN 2 + !BYTE $26 ; LA _C007+0 +_F059 !WORD _C007+0 + !BYTE $54 ; CALL _C003 +_F060 !WORD _C003 + !BYTE $26 ; LA _C008+0 +_F061 !WORD _C008+0 + !BYTE $76,$08 ; SLW [8] + !BYTE $04 ; CN 2 + !BYTE $06 ; CN 3 + !BYTE $66,$08 ; LLW [8] + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X005 +_F062 !WORD 0 + !BYTE $54 ; CALL _X003 +_F063 !WORD 0 + !BYTE $54 ; CALL _C004 +_F064 !WORD _C004 + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $76,$02 ; SLW [2] + !BYTE $54 ; CALL _C004 +_F065 !WORD _C004 + !BYTE $30 ; DROP + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C004 +_F066 !WORD _C004 + !BYTE $76,$06 ; SLW [6] + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $0A + !BYTE $61,$2C,$20,$62,$2C,$20,$63,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F067 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F068 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F069 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X005 +_F070 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F071 !WORD 0 +; samplesrc/test.pla: 0130: puts(" 7 / 3 = "); puti(7/3); puts(" ; 7 % 3 = "); puti(7%3); putln + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X005 +_F072 !WORD 0 + !BYTE $54 ; CALL _X003 +_F073 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$37,$20,$2F,$20,$20,$33,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F074 !WORD 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X005 +_F075 !WORD 0 + !BYTE $2E ; CS + !BYTE $0D + !BYTE $20,$3B,$20,$20,$37,$20,$25,$20 + !BYTE $20,$33,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F076 !WORD 0 +; samplesrc/test.pla: 0131: puts(" 7 / -3 = "); puti(7/-3); puts("; 7 % -3 = "); puti(7%-3); putln + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X005 +_F077 !WORD 0 + !BYTE $54 ; CALL _X003 +_F078 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$37,$20,$2F,$20,$2D,$33,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F079 !WORD 0 + !BYTE $5E,$FE ; CFFB -2 + !BYTE $54 ; CALL _X005 +_F080 !WORD 0 + !BYTE $2E ; CS + !BYTE $0C + !BYTE $3B,$20,$20,$37,$20,$25,$20,$2D + !BYTE $33,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F081 !WORD 0 +; samplesrc/test.pla: 0132: puts("-7 / 3 = "); puti(-7/3); puts("; -7 % 3 = "); puti(-7%3); putln + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X005 +_F082 !WORD 0 + !BYTE $54 ; CALL _X003 +_F083 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $2D,$37,$20,$2F,$20,$20,$33,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F084 !WORD 0 + !BYTE $5E,$FE ; CFFB -2 + !BYTE $54 ; CALL _X005 +_F085 !WORD 0 + !BYTE $2E ; CS + !BYTE $0C + !BYTE $3B,$20,$2D,$37,$20,$25,$20,$20 + !BYTE $33,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F086 !WORD 0 +; samplesrc/test.pla: 0133: puts("-7 / -3 = "); puti(-7/-3); puts(" ; -7 % -3 = "); puti(-7%-3); putln + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X005 +_F087 !WORD 0 + !BYTE $54 ; CALL _X003 +_F088 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $2D,$37,$20,$2F,$20,$2D,$33,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F089 !WORD 0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _X005 +_F090 !WORD 0 + !BYTE $2E ; CS + !BYTE $0D + !BYTE $20,$3B,$20,$2D,$37,$20,$25,$20 + !BYTE $2D,$33,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F091 !WORD 0 +; samplesrc/test.pla: 0134: a,b=divmod(7,3); puts("divmod( 7, 3) = "); puti(a); puts(", "); puti(b); putln + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X005 +_F092 !WORD 0 + !BYTE $54 ; CALL _X003 +_F093 !WORD 0 + !BYTE $0E ; CN 7 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X023 +_F094 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $2E ; CS + !BYTE $10 + !BYTE $64,$69,$76,$6D,$6F,$64,$28,$20 + !BYTE $37,$2C,$20,$33,$29,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F095 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F096 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F097 !WORD 0 +; samplesrc/test.pla: 0135: a,b=divmod(7,-3); puts("divmod( 7,-3) = "); puti(a); puts(", "); puti(b); putln + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X005 +_F098 !WORD 0 + !BYTE $54 ; CALL _X003 +_F099 !WORD 0 + !BYTE $0E ; CN 7 + !BYTE $5E,$FD ; CFFB -3 + !BYTE $54 ; CALL _X023 +_F100 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $2E ; CS + !BYTE $10 + !BYTE $64,$69,$76,$6D,$6F,$64,$28,$20 + !BYTE $37,$2C,$2D,$33,$29,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F101 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F102 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F103 !WORD 0 +; samplesrc/test.pla: 0136: a,b=divmod(-7,3); puts("divmod(-7, 3) = "); puti(a); puts(", "); puti(b); putln + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X005 +_F104 !WORD 0 + !BYTE $54 ; CALL _X003 +_F105 !WORD 0 + !BYTE $5E,$F9 ; CFFB -7 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _X023 +_F106 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $2E ; CS + !BYTE $10 + !BYTE $64,$69,$76,$6D,$6F,$64,$28,$2D + !BYTE $37,$2C,$20,$33,$29,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F107 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F108 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F109 !WORD 0 +; samplesrc/test.pla: 0137: a,b=divmod(-7,-3);puts("divmod(-7,-3) = "); puti(a); puts(", "); puti(b); putln + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X005 +_F110 !WORD 0 + !BYTE $54 ; CALL _X003 +_F111 !WORD 0 + !BYTE $5E,$F9 ; CFFB -7 + !BYTE $5E,$FD ; CFFB -3 + !BYTE $54 ; CALL _X023 +_F112 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $2E ; CS + !BYTE $10 + !BYTE $64,$69,$76,$6D,$6F,$64,$28,$2D + !BYTE $37,$2C,$2D,$33,$29,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F113 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X005 +_F114 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $2C,$20 + !BYTE $54 ; CALL _X004 +_F115 !WORD 0 +; samplesrc/test.pla: 0138: end + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X005 +_F116 !WORD 0 + !BYTE $54 ; CALL _X003 +_F117 !WORD 0 + !BYTE $5A,$0A ; LEAVE 10 +_C006 ; _LAMBDA0000() + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $5A,$04 ; LEAVE 4 +_C007 ; _LAMBDA0001() + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $5A,$04 ; LEAVE 4 +_C008 ; _LAMBDA0002() + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $86 ; MUL + !BYTE $5A,$04 ; LEAVE 4 +; samplesrc/test.pla: 0139: +; samplesrc/test.pla: 0140: def dummy(zz)#2 + ; zz -> [0] +_C009 ; dummy() +; samplesrc/test.pla: 0141: puts("dummy func"); putln + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $64,$75,$6D,$6D,$79,$20,$66,$75 + !BYTE $6E,$63 + !BYTE $54 ; CALL _X004 +_F118 !WORD 0 +; samplesrc/test.pla: 0142: return 0 + !BYTE $54 ; CALL _X003 +_F119 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/test.pla: 0143: end +; samplesrc/test.pla: 0144: +; samplesrc/test.pla: 0145: def value1 +_C010 ; value1() +; samplesrc/test.pla: 0146: return 1 + !BYTE $02 ; CN 1 + !BYTE $5C ; RET +; samplesrc/test.pla: 0147: end +; samplesrc/test.pla: 0148: +; samplesrc/test.pla: 0149: puti(array[0]);putc(' ') +_INIT +; samplesrc/test.pla: 0150: puti(array[1]);putc(' ') +; samplesrc/test.pla: 0151: puti(array[2]);putc(' ') +; samplesrc/test.pla: 0152: puti(array[3]);putc(' ') +; samplesrc/test.pla: 0153: puti(array[4]);putln +; samplesrc/test.pla: 0154: puti((@array)=>0);putc(' ') +; samplesrc/test.pla: 0155: puti((@array)=>2);putc(' ') +; samplesrc/test.pla: 0156: puti((@array)=>4);putc(' ') +; samplesrc/test.pla: 0157: puti((@array)=>6);putc(' ') +; samplesrc/test.pla: 0158: puti((@array)=>8);putln +; samplesrc/test.pla: 0159: ptr = @main +; samplesrc/test.pla: 0160: ptr(@array:6)#0 +; samplesrc/test.pla: 0161: ptr = @array +; samplesrc/test.pla: 0162: puti((ptr):6) +; samplesrc/test.pla: 0163: putln +; samplesrc/test.pla: 0164: puti(ptr=>6) +; samplesrc/test.pla: 0165: putln +; samplesrc/test.pla: 0166: puti((ptr).6) +; samplesrc/test.pla: 0167: putln +; samplesrc/test.pla: 0168: puti(ptr->6) +; samplesrc/test.pla: 0169: putln +; samplesrc/test.pla: 0170: puts(@offsets) +; samplesrc/test.pla: 0171: putln +; samplesrc/test.pla: 0172: puti(cmd) +; samplesrc/test.pla: 0173: putln +; samplesrc/test.pla: 0174: puti(param) +; samplesrc/test.pla: 0175: putln +; samplesrc/test.pla: 0176: puti(data) +; samplesrc/test.pla: 0177: putln +; samplesrc/test.pla: 0178: puti(mystruc) +; samplesrc/test.pla: 0179: putln +; samplesrc/test.pla: 0180: puts(@constr); puti(constval); putln +; samplesrc/test.pla: 0181: puts("Signed byte constant:"); puti(-3); putln + !BYTE $6A ; LAW _D039+0 +_F120 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F121 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F122 !WORD 0 + !BYTE $6A ; LAW _D039+2 +_F123 !WORD _D039+2 + !BYTE $54 ; CALL _X005 +_F124 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F125 !WORD 0 + !BYTE $6A ; LAW _D039+4 +_F126 !WORD _D039+4 + !BYTE $54 ; CALL _X005 +_F127 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F128 !WORD 0 + !BYTE $6A ; LAW _D039+6 +_F129 !WORD _D039+6 + !BYTE $54 ; CALL _X005 +_F130 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F131 !WORD 0 + !BYTE $6A ; LAW _D039+8 +_F132 !WORD _D039+8 + !BYTE $54 ; CALL _X005 +_F133 !WORD 0 + !BYTE $54 ; CALL _X003 +_F134 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F135 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F136 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F137 !WORD 0 + !BYTE $6A ; LAW _D039+2 +_F138 !WORD _D039+2 + !BYTE $54 ; CALL _X005 +_F139 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F140 !WORD 0 + !BYTE $6A ; LAW _D039+4 +_F141 !WORD _D039+4 + !BYTE $54 ; CALL _X005 +_F142 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F143 !WORD 0 + !BYTE $6A ; LAW _D039+6 +_F144 !WORD _D039+6 + !BYTE $54 ; CALL _X005 +_F145 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F146 !WORD 0 + !BYTE $6A ; LAW _D039+8 +_F147 !WORD _D039+8 + !BYTE $54 ; CALL _X005 +_F148 !WORD 0 + !BYTE $54 ; CALL _X003 +_F149 !WORD 0 + !BYTE $26 ; LA _C005+0 +_F150 !WORD _C005+0 + !BYTE $7A ; SAW _D040+0 +_F151 !WORD _D040+0 + !BYTE $26 ; LA _D039+6 +_F152 !WORD _D039+6 + !BYTE $6A ; LAW _D040+0 +_F153 !WORD _D040+0 + !BYTE $56 ; ICAL + !BYTE $26 ; LA _D039+0 +_F154 !WORD _D039+0 + !BYTE $7E ; DAW _D040+0 +_F155 !WORD _D040+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X005 +_F156 !WORD 0 + !BYTE $54 ; CALL _X003 +_F157 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F158 !WORD _D040+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X005 +_F159 !WORD 0 + !BYTE $54 ; CALL _X003 +_F160 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F161 !WORD _D040+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F162 !WORD 0 + !BYTE $54 ; CALL _X003 +_F163 !WORD 0 + !BYTE $6A ; LAW _D040+0 +_F164 !WORD _D040+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X005 +_F165 !WORD 0 + !BYTE $54 ; CALL _X003 +_F166 !WORD 0 + !BYTE $26 ; LA _D038+0 +_F167 !WORD _D038+0 + !BYTE $54 ; CALL _X004 +_F168 !WORD 0 + !BYTE $54 ; CALL _X003 +_F169 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X005 +_F170 !WORD 0 + !BYTE $54 ; CALL _X003 +_F171 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _X005 +_F172 !WORD 0 + !BYTE $54 ; CALL _X003 +_F173 !WORD 0 + !BYTE $0C ; CN 6 + !BYTE $54 ; CALL _X005 +_F174 !WORD 0 + !BYTE $54 ; CALL _X003 +_F175 !WORD 0 + !BYTE $10 ; CN 8 + !BYTE $54 ; CALL _X005 +_F176 !WORD 0 + !BYTE $54 ; CALL _X003 +_F177 !WORD 0 + !BYTE $26 ; LA _D037+0 +_F178 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F179 !WORD 0 + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X005 +_F180 !WORD 0 + !BYTE $54 ; CALL _X003 +_F181 !WORD 0 + !BYTE $2E ; CS + !BYTE $15 + !BYTE $53,$69,$67,$6E,$65,$64,$20,$62 + !BYTE $79,$74,$65,$20,$63,$6F,$6E,$73 + !BYTE $74,$61,$6E,$74,$3A + !BYTE $54 ; CALL _X004 +_F182 !WORD 0 +; samplesrc/test.pla: 0182: puts("Hello from in-line string!\$7F\n") + !BYTE $5E,$FD ; CFFB -3 + !BYTE $54 ; CALL _X005 +_F183 !WORD 0 + !BYTE $54 ; CALL _X003 +_F184 !WORD 0 + !BYTE $2E ; CS + !BYTE $1C + !BYTE $48,$65,$6C,$6C,$6F,$20,$66,$72 + !BYTE $6F,$6D,$20,$69,$6E,$2D,$6C,$69 + !BYTE $6E,$65,$20,$73,$74,$72,$69,$6E + !BYTE $67,$21,$7F,$0D + !BYTE $54 ; CALL _X004 +_F185 !WORD 0 +; samplesrc/test.pla: 0183: puti(array:0); puts(" == "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F186 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F187 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3D,$3D,$20 + !BYTE $54 ; CALL _X004 +_F188 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F189 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F190 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F191 !WORD 0 +; samplesrc/test.pla: 0184: puts(array:0 == array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F192 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F193 !WORD _D039+1 + !BYTE $24 ; BRNE _B020 + !WORD _B020-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B021 + !WORD _B021-* +_B020 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B021 + !BYTE $54 ; CALL _X004 +_F194 !WORD 0 +; samplesrc/test.pla: 0185: puti(array:0); puts(" <> "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F195 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F196 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$3E,$20 + !BYTE $54 ; CALL _X004 +_F197 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F198 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F199 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F200 !WORD 0 +; samplesrc/test.pla: 0186: puts(array:0 <> array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F201 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F202 !WORD _D039+1 + !BYTE $22 ; BREQ _B024 + !WORD _B024-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B025 + !WORD _B025-* +_B024 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B025 + !BYTE $54 ; CALL _X004 +_F203 !WORD 0 +; samplesrc/test.pla: 0187: puti(array:0); puts(" >= "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F204 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F205 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3E,$3D,$20 + !BYTE $54 ; CALL _X004 +_F206 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F207 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F208 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F209 !WORD 0 +; samplesrc/test.pla: 0188: puts(array:0 >= array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F210 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F211 !WORD _D039+1 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B029 + !WORD _B029-* +_B028 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B029 + !BYTE $54 ; CALL _X004 +_F212 !WORD 0 +; samplesrc/test.pla: 0189: puti(array:0); puts(" <= "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F213 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F214 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$3D,$20 + !BYTE $54 ; CALL _X004 +_F215 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F216 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F217 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F218 !WORD 0 +; samplesrc/test.pla: 0190: puts(array:0 <= array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F219 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F220 !WORD _D039+1 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B033 + !WORD _B033-* +_B032 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B033 + !BYTE $54 ; CALL _X004 +_F221 !WORD 0 +; samplesrc/test.pla: 0191: puti(array:0); puts(" > "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F222 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F223 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3E,$20,$20 + !BYTE $54 ; CALL _X004 +_F224 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F225 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F226 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F227 !WORD 0 +; samplesrc/test.pla: 0192: puts(array:0 > array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F228 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F229 !WORD _D039+1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +_B036 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B037 + !BYTE $54 ; CALL _X004 +_F230 !WORD 0 +; samplesrc/test.pla: 0193: puti(array:0); puts(" < "); puti(array:1); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F231 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F232 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$20,$20 + !BYTE $54 ; CALL _X004 +_F233 !WORD 0 + !BYTE $6A ; LAW _D039+1 +_F234 !WORD _D039+1 + !BYTE $54 ; CALL _X005 +_F235 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F236 !WORD 0 +; samplesrc/test.pla: 0194: puts(array:0 < array:1 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F237 !WORD _D039+0 + !BYTE $6A ; LAW _D039+1 +_F238 !WORD _D039+1 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B040 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B041 + !BYTE $54 ; CALL _X004 +_F239 !WORD 0 +; samplesrc/test.pla: 0195: puti(array:0); puts(" == "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F240 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F241 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3D,$3D,$20 + !BYTE $54 ; CALL _X004 +_F242 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F243 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F244 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F245 !WORD 0 +; samplesrc/test.pla: 0196: puts(array:0 == array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F246 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $24 ; BRNE _B044 + !WORD _B044-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B044 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B045 + !BYTE $54 ; CALL _X004 +_F247 !WORD 0 +; samplesrc/test.pla: 0197: puti(array:0); puts(" <> "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F248 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F249 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$3E,$20 + !BYTE $54 ; CALL _X004 +_F250 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F251 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F252 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F253 !WORD 0 +; samplesrc/test.pla: 0198: puts(array:0 <> array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F254 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $22 ; BREQ _B048 + !WORD _B048-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B048 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B049 + !BYTE $54 ; CALL _X004 +_F255 !WORD 0 +; samplesrc/test.pla: 0199: puti(array:0); puts(" >= "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F256 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F257 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3E,$3D,$20 + !BYTE $54 ; CALL _X004 +_F258 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F259 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F260 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F261 !WORD 0 +; samplesrc/test.pla: 0200: puts(array:0 >= array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F262 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B052 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B053 + !BYTE $54 ; CALL _X004 +_F263 !WORD 0 +; samplesrc/test.pla: 0201: puti(array:0); puts(" <= "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F264 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F265 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$3D,$20 + !BYTE $54 ; CALL _X004 +_F266 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F267 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F268 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F269 !WORD 0 +; samplesrc/test.pla: 0202: puts(array:0 <= array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F270 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B057 + !WORD _B057-* +_B056 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B057 + !BYTE $54 ; CALL _X004 +_F271 !WORD 0 +; samplesrc/test.pla: 0203: puti(array:0); puts(" > "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F272 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F273 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3E,$20,$20 + !BYTE $54 ; CALL _X004 +_F274 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F275 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F276 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F277 !WORD 0 +; samplesrc/test.pla: 0204: puts(array:0 > array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F278 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +_B060 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B061 + !BYTE $54 ; CALL _X004 +_F279 !WORD 0 +; samplesrc/test.pla: 0205: puti(array:0); puts(" < "); puti(array:0); puts (" is ") + !BYTE $6A ; LAW _D039+0 +_F280 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F281 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$3C,$20,$20 + !BYTE $54 ; CALL _X004 +_F282 !WORD 0 + !BYTE $6A ; LAW _D039+0 +_F283 !WORD _D039+0 + !BYTE $54 ; CALL _X005 +_F284 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $20,$69,$73,$20 + !BYTE $54 ; CALL _X004 +_F285 !WORD 0 +; samplesrc/test.pla: 0206: puts(array:0 < array:0 ?? "TRUE\n" :: "FALSE\n") + !BYTE $6A ; LAW _D039+0 +_F286 !WORD _D039+0 + !BYTE $34 ; DUP + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B064 + !WORD _B064-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $54,$52,$55,$45,$0D + !BYTE $50 ; BRNCH _B065 + !WORD _B065-* +_B064 + !BYTE $2E ; CS + !BYTE $06 + !BYTE $46,$41,$4C,$53,$45,$0D +_B065 + !BYTE $54 ; CALL _X004 +_F287 !WORD 0 +; samplesrc/test.pla: 0207: ptr = 5 +; samplesrc/test.pla: 0208: puts("5*0="); puti(ptr*0); putln + !BYTE $0A ; CN 5 + !BYTE $7A ; SAW _D040+0 +_F288 !WORD _D040+0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $35,$2A,$30,$3D + !BYTE $54 ; CALL _X004 +_F289 !WORD 0 +; samplesrc/test.pla: 0209: puts("5*1="); puti(ptr*1); putln + !BYTE $6A ; LAW _D040+0 +_F290 !WORD _D040+0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X005 +_F291 !WORD 0 + !BYTE $54 ; CALL _X003 +_F292 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $35,$2A,$31,$3D + !BYTE $54 ; CALL _X004 +_F293 !WORD 0 +; samplesrc/test.pla: 0210: puts("5*2="); puti(ptr*2); putln + !BYTE $6A ; LAW _D040+0 +_F294 !WORD _D040+0 + !BYTE $54 ; CALL _X005 +_F295 !WORD 0 + !BYTE $54 ; CALL _X003 +_F296 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $35,$2A,$32,$3D + !BYTE $54 ; CALL _X004 +_F297 !WORD 0 +; samplesrc/test.pla: 0211: puts("5/1="); puti(ptr/1); putln + !BYTE $6A ; LAW _D040+0 +_F298 !WORD _D040+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X005 +_F299 !WORD 0 + !BYTE $54 ; CALL _X003 +_F300 !WORD 0 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $35,$2F,$31,$3D + !BYTE $54 ; CALL _X004 +_F301 !WORD 0 +; samplesrc/test.pla: 0212: ptr = -1 +; samplesrc/test.pla: 0213: puts("-1 * -1 = "); puti(ptr * ptr); putln + !BYTE $6A ; LAW _D040+0 +_F302 !WORD _D040+0 + !BYTE $54 ; CALL _X005 +_F303 !WORD 0 + !BYTE $54 ; CALL _X003 +_F304 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $7A ; SAW _D040+0 +_F305 !WORD _D040+0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $2D,$31,$20,$2A,$20,$2D,$31,$20 + !BYTE $3D,$20 + !BYTE $54 ; CALL _X004 +_F306 !WORD 0 +; samplesrc/test.pla: 0214: done + !BYTE $6A ; LAW _D040+0 +_F307 !WORD _D040+0 + !BYTE $34 ; DUP + !BYTE $86 ; MUL + !BYTE $54 ; CALL _X005 +_F308 !WORD 0 + !BYTE $54 ; CALL _X003 +_F309 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 12 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F286-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F287-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F288-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F289-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F290-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F291-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F292-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F293-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F294-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F295-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F296-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F297-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F298-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F299-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F300-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F301-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F302-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F303-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F304-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F305-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F306-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F307-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F308-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F309-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: DIVMOD + !BYTE $C4,$C9,$D6,$CD,$CF,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 23 ; ESD INDEX + ; DCI STRING: PRINT + !BYTE $D0,$D2,$C9,$CE,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: MAIN + !BYTE $CD,$C1,$C9,$4E + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _C005 + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/test.pla b/src/samplesrc/test.pla index 73a29eb..d61c7ad 100755 --- a/src/samplesrc/test.pla +++ b/src/samplesrc/test.pla @@ -209,4 +209,6 @@ puts("5*0="); puti(ptr*0); putln puts("5*1="); puti(ptr*1); putln puts("5*2="); puti(ptr*2); putln puts("5/1="); puti(ptr/1); putln +ptr = -1 +puts("-1 * -1 = "); puti(ptr * ptr); putln done diff --git a/src/samplesrc/testlib.a b/src/samplesrc/testlib.a new file mode 100644 index 0000000..961ac10 --- /dev/null +++ b/src/samplesrc/testlib.a @@ -0,0 +1,341 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/testlib.pla: 0001: // +; samplesrc/testlib.pla: 0002: // Include all imported modules and their data/functions. +; samplesrc/testlib.pla: 0003: // +; samplesrc/testlib.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/testlib.pla: 0004: +; samplesrc/testlib.pla: 0005: // +; samplesrc/testlib.pla: 0006: // Module data. +; samplesrc/testlib.pla: 0007: // +; samplesrc/testlib.pla: 0008: predef puthex(h)#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES +; samplesrc/testlib.pla: 0009: export word print[] = @puti, @puthex, @putln, @puts, @putc +_D029 ; print[] = @puti, @puthex, @putln, @puts, @putc +_F000 !WORD 0 ; _X005 +_F001 !WORD _P000 +_F002 !WORD 0 ; _X003 +_F003 !WORD 0 ; _X004 +_F004 !WORD 0 ; _X002 +; samplesrc/testlib.pla: 0010: byte valstr[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +_D030 ; valstr[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + !BYTE $30 + !BYTE $31 + !BYTE $32 + !BYTE $33 + !BYTE $34 + !BYTE $35 + !BYTE $36 + !BYTE $37 + !BYTE $38 + !BYTE $39 + !BYTE $41 + !BYTE $42 + !BYTE $43 + !BYTE $44 + !BYTE $45 + !BYTE $46 +; samplesrc/testlib.pla: 0011: byte loadstr[] = "testlib loaded!" +_D031 ; loadstr[] = "testlib loaded!" + !BYTE $0F + !BYTE $74,$65,$73,$74,$6C,$69,$62,$20 + !BYTE $6C,$6F,$61,$64,$65,$64,$21 +; samplesrc/testlib.pla: 0012: // +; samplesrc/testlib.pla: 0013: // Define functions. +; samplesrc/testlib.pla: 0014: // +; samplesrc/testlib.pla: 0015: def puthex(h)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; h -> [0] +_P000 ; puthex(h)#0() +_C000 ; puthex() +; samplesrc/testlib.pla: 0016: putc('$') + !BYTE $58,$02,$01 ; ENTER 2,1 +; samplesrc/testlib.pla: 0017: putc(valstr[(h >> 12) & $0F]) +; samplesrc/testlib.pla: 0018: putc(valstr[(h >> 8) & $0F]) +; samplesrc/testlib.pla: 0019: putc(valstr[(h >> 4) & $0F]) +; samplesrc/testlib.pla: 0020: putc(valstr[ h & $0F]) +; samplesrc/testlib.pla: 0021: end + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F005 !WORD 0 + !BYTE $26 ; LA _D030+0 +_F006 !WORD _D030+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $18 ; CN 12 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X002 +_F007 !WORD 0 + !BYTE $26 ; LA _D030+0 +_F008 !WORD _D030+0 + !BYTE $64,$01 ; LLB [1] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X002 +_F009 !WORD 0 + !BYTE $26 ; LA _D030+0 +_F010 !WORD _D030+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X002 +_F011 !WORD 0 + !BYTE $26 ; LA _D030+0 +_F012 !WORD _D030+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X002 +_F013 !WORD 0 + !BYTE $5A,$02 ; LEAVE 2 +; samplesrc/testlib.pla: 0022: puts(@loadstr) +_INIT +; samplesrc/testlib.pla: 0023: putln +; samplesrc/testlib.pla: 0024: done + !BYTE $26 ; LA _D031+0 +_F014 !WORD _D031+0 + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 + !BYTE $54 ; CALL _X003 +_F016 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: PRINT + !BYTE $D0,$D2,$C9,$CE,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D029 + !BYTE $00 ; END OF ESD diff --git a/src/samplesrc/tiletest.a b/src/samplesrc/tiletest.a new file mode 100644 index 0000000..87d973d --- /dev/null +++ b/src/samplesrc/tiletest.a @@ -0,0 +1,283 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; samplesrc/tiletest.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; samplesrc/tiletest.pla: 0001: +; samplesrc/tiletest.pla: 0002: include "inc/hgrtile.plh" +; inc/hgrtile.plh: 0001: import hgrtile + ; DCI STRING: HGRTILE + !BYTE $C8,$C7,$D2,$D4,$C9,$CC,$45 + ; HGRTILE -> X028 +; inc/hgrtile.plh: 0002: predef tileDraw(x, y, tileptr)#0 + ; TILEDRAW -> X029 +; inc/hgrtile.plh: 0003: predef tileXorDraw(x, y, tileptr)#0 + ; TILEXORDRAW -> X030 +; inc/hgrtile.plh: 0004: predef tileOrDraw(x, y, tileptr)#0 + ; TILEORDRAW -> X031 +; inc/hgrtile.plh: 0005: predef tileAndDraw(x, y, tileptr)#0 + ; TILEANDDRAW -> X032 +; inc/hgrtile.plh: 0006: predef tileDrawStr(x, y, strptr, strlen, tileset)#0 + ; TILEDRAWSTR -> X033 +; inc/hgrtile.plh: 0007: predef tileFromText(txtpage, tileset)#0 + ; TILEFROMTEXT -> X034 +; inc/hgrtile.plh: 0008: predef tileMode(mode)#1 + ; TILEMODE -> X035 +; inc/hgrtile.plh: 0009: predef tileClear#0 + ; TILECLEAR -> X036 +; inc/hgrtile.plh: 0010: predef tileShow(page)#1 + ; TILESHOW -> X037 +; inc/hgrtile.plh: 0011: predef tileSwap#1 + ; TILESWAP -> X038 +; inc/hgrtile.plh: 0012: predef tileDrawBuf(page)#1 + ; TILEDRAWBUF -> X039 +; inc/hgrtile.plh: 0013: end +; samplesrc/tiletest.pla: 0002: +; samplesrc/tiletest.pla: 0003: include "inc/hgrfont.plh" +; inc/hgrfont.plh: 0001: import hgrfont + ; DCI STRING: HGRFONT + !BYTE $C8,$C7,$D2,$C6,$CF,$CE,$54 + ; HGRFONT -> X040 +; inc/hgrfont.plh: 0002: predef hgrPutStr(x, y, strptr)#0 + ; HGRPUTSTR -> X041 +; inc/hgrfont.plh: 0003: end +; samplesrc/tiletest.pla: 0003: +; samplesrc/tiletest.pla: 0004: sysflags reshgr1 // Reserve HGR page 1 + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0010 ; SYSTEM FLAGS +; samplesrc/tiletest.pla: 0005: +; samplesrc/tiletest.pla: 0006: tileMode(TRUE) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_INIT +; samplesrc/tiletest.pla: 0007: hgrPutStr(5, 1, "Hello HiRes Tile Demo") + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X035 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $0A ; CN 5 + !BYTE $02 ; CN 1 + !BYTE $2E ; CS + !BYTE $15 + !BYTE $48,$65,$6C,$6C,$6F,$20,$48,$69 + !BYTE $52,$65,$73,$20,$54,$69,$6C,$65 + !BYTE $20,$44,$65,$6D,$6F + !BYTE $54 ; CALL _X041 +_F001 !WORD 0 +; samplesrc/tiletest.pla: 0008: getc +; samplesrc/tiletest.pla: 0009: tileFromText(0, @hgrFont) +; samplesrc/tiletest.pla: 0010: getc +; samplesrc/tiletest.pla: 0011: tileMode(FALSE) +; samplesrc/tiletest.pla: 0012: done + !BYTE $54 ; CALL _X006 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $26 ; LA _X040+0 +_F003 !WORD 0+0 + !BYTE $54 ; CALL _X034 +_F004 !WORD 0 + !BYTE $54 ; CALL _X006 +_F005 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X035 +_F006 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 41 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: TILEFROMTEXT + !BYTE $D4,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D4,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: TILEMODE + !BYTE $D4,$C9,$CC,$C5,$CD,$CF,$C4,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: HGRFONT + !BYTE $C8,$C7,$D2,$C6,$CF,$CE,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + ; DCI STRING: HGRPUTSTR + !BYTE $C8,$C7,$D2,$D0,$D5,$D4,$D3,$D4,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 41 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/toolsrc/codeopt.a b/src/toolsrc/codeopt.a new file mode 100644 index 0000000..9a05d2e --- /dev/null +++ b/src/toolsrc/codeopt.a @@ -0,0 +1,3135 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; toolsrc/codeopt.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; toolsrc/codeopt.pla: 0001: +; toolsrc/codeopt.pla: 0002: // +; toolsrc/codeopt.pla: 0003: // Imports from main compiler +; toolsrc/codeopt.pla: 0004: // +; toolsrc/codeopt.pla: 0005: import plasm + ; DCI STRING: PLASM + !BYTE $D0,$CC,$C1,$D3,$4D + ; PLASM -> X028 +; toolsrc/codeopt.pla: 0006: word freeop_lst + ; FREEOP_LST -> X029 +; toolsrc/codeopt.pla: 0007: word optimize_seq + ; OPTIMIZE_SEQ -> X030 +; toolsrc/codeopt.pla: 0008: end +; toolsrc/codeopt.pla: 0009: // +; toolsrc/codeopt.pla: 0010: // Code sequence values shares with main compiler +; toolsrc/codeopt.pla: 0011: // +; toolsrc/codeopt.pla: 0012: include "toolsrc/codeseq.plh" +; toolsrc/codeseq.plh: 0001: // +; toolsrc/codeseq.plh: 0002: // Constant code group +; toolsrc/codeseq.plh: 0003: // +; toolsrc/codeseq.plh: 0004: const CONST_GROUP = $00 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; CONST_GROUP = 0 +; toolsrc/codeseq.plh: 0005: const CONST_CODE = $2C + ; CONST_CODE = 44 +; toolsrc/codeseq.plh: 0006: const ADDI_CODE = $38 + ; ADDI_CODE = 56 +; toolsrc/codeseq.plh: 0007: const SUBI_CODE = $3A + ; SUBI_CODE = 58 +; toolsrc/codeseq.plh: 0008: const ANDI_CODE = $3C + ; ANDI_CODE = 60 +; toolsrc/codeseq.plh: 0009: const ORI_CODE = $3E + ; ORI_CODE = 62 +; toolsrc/codeseq.plh: 0010: const CONSTR_GROUP = $01 + ; CONSTR_GROUP = 1 +; toolsrc/codeseq.plh: 0011: const CONSTR_CODE = $2E + ; CONSTR_CODE = 46 +; toolsrc/codeseq.plh: 0012: // +; toolsrc/codeseq.plh: 0013: // Stack code group +; toolsrc/codeseq.plh: 0014: // +; toolsrc/codeseq.plh: 0015: const STACK_GROUP = $02 + ; STACK_GROUP = 2 +; toolsrc/codeseq.plh: 0016: const INDEXB_CODE = $82 + ; INDEXB_CODE = 130 +; toolsrc/codeseq.plh: 0017: const ADD_CODE = $82 + ; ADD_CODE = 130 +; toolsrc/codeseq.plh: 0018: const SUB_CODE = $84 + ; SUB_CODE = 132 +; toolsrc/codeseq.plh: 0019: const MUL_CODE = $86 + ; MUL_CODE = 134 +; toolsrc/codeseq.plh: 0020: const DIV_CODE = $88 + ; DIV_CODE = 136 +; toolsrc/codeseq.plh: 0021: const MOD_CODE = $8A + ; MOD_CODE = 138 +; toolsrc/codeseq.plh: 0022: const INC_CODE = $8C + ; INC_CODE = 140 +; toolsrc/codeseq.plh: 0023: const DEC_CODE = $8E + ; DEC_CODE = 142 +; toolsrc/codeseq.plh: 0024: const NEG_CODE = $90 + ; NEG_CODE = 144 +; toolsrc/codeseq.plh: 0025: const COMP_CODE = $92 + ; COMP_CODE = 146 +; toolsrc/codeseq.plh: 0026: const AND_CODE = $94 + ; AND_CODE = 148 +; toolsrc/codeseq.plh: 0027: const OR_CODE = $96 + ; OR_CODE = 150 +; toolsrc/codeseq.plh: 0028: const EOR_CODE = $98 + ; EOR_CODE = 152 +; toolsrc/codeseq.plh: 0029: const SHL_CODE = $9A + ; SHL_CODE = 154 +; toolsrc/codeseq.plh: 0030: const SHR_CODE = $9C + ; SHR_CODE = 156 +; toolsrc/codeseq.plh: 0031: const INDEXW_CODE = $9E + ; INDEXW_CODE = 158 +; toolsrc/codeseq.plh: 0032: const LOGIC_NOT_CODE = $80 + ; LOGIC_NOT_CODE = 128 +; toolsrc/codeseq.plh: 0033: const DROP_CODE = $30 + ; DROP_CODE = 48 +; toolsrc/codeseq.plh: 0034: const DROP2_CODE = $32 + ; DROP2_CODE = 50 +; toolsrc/codeseq.plh: 0035: const DUP_CODE = $34 + ; DUP_CODE = 52 +; toolsrc/codeseq.plh: 0036: const EQ_CODE = $40 + ; EQ_CODE = 64 +; toolsrc/codeseq.plh: 0037: const NE_CODE = $42 + ; NE_CODE = 66 +; toolsrc/codeseq.plh: 0038: const GT_CODE = $44 + ; GT_CODE = 68 +; toolsrc/codeseq.plh: 0039: const LT_CODE = $46 + ; LT_CODE = 70 +; toolsrc/codeseq.plh: 0040: const GE_CODE = $48 + ; GE_CODE = 72 +; toolsrc/codeseq.plh: 0041: const LE_CODE = $4A + ; LE_CODE = 74 +; toolsrc/codeseq.plh: 0042: const ICAL_CODE = $56 + ; ICAL_CODE = 86 +; toolsrc/codeseq.plh: 0043: const RET_CODE = $5C + ; RET_CODE = 92 +; toolsrc/codeseq.plh: 0044: const LB_CODE = $60 + ; LB_CODE = 96 +; toolsrc/codeseq.plh: 0045: const BPTR_CODE = $60 + ; BPTR_CODE = 96 +; toolsrc/codeseq.plh: 0046: const LW_CODE = $62 + ; LW_CODE = 98 +; toolsrc/codeseq.plh: 0047: const WPTR_CODE = $62 + ; WPTR_CODE = 98 +; toolsrc/codeseq.plh: 0048: const SB_CODE = $70 + ; SB_CODE = 112 +; toolsrc/codeseq.plh: 0049: const SW_CODE = $72 + ; SW_CODE = 114 +; toolsrc/codeseq.plh: 0050: // +; toolsrc/codeseq.plh: 0051: // Local address code group +; toolsrc/codeseq.plh: 0052: // +; toolsrc/codeseq.plh: 0053: const LOCAL_GROUP = $03 + ; LOCAL_GROUP = 3 +; toolsrc/codeseq.plh: 0054: const LADDR_CODE = $28 + ; LADDR_CODE = 40 +; toolsrc/codeseq.plh: 0055: const LLB_CODE = $64 + ; LLB_CODE = 100 +; toolsrc/codeseq.plh: 0056: const LLW_CODE = $66 + ; LLW_CODE = 102 +; toolsrc/codeseq.plh: 0057: const DLB_CODE = $6C + ; DLB_CODE = 108 +; toolsrc/codeseq.plh: 0058: const DLW_CODE = $6E + ; DLW_CODE = 110 +; toolsrc/codeseq.plh: 0059: const SLB_CODE = $74 + ; SLB_CODE = 116 +; toolsrc/codeseq.plh: 0060: const SLW_CODE = $76 + ; SLW_CODE = 118 +; toolsrc/codeseq.plh: 0061: const ADDLB_CODE = $B0 + ; ADDLB_CODE = 176 +; toolsrc/codeseq.plh: 0062: const ADDLW_CODE = $B2 + ; ADDLW_CODE = 178 +; toolsrc/codeseq.plh: 0063: const IDXLB_CODE = $B8 + ; IDXLB_CODE = 184 +; toolsrc/codeseq.plh: 0064: const IDXLW_CODE = $BA + ; IDXLW_CODE = 186 +; toolsrc/codeseq.plh: 0065: // +; toolsrc/codeseq.plh: 0066: // Global address code group +; toolsrc/codeseq.plh: 0067: // +; toolsrc/codeseq.plh: 0068: const GLOBAL_GROUP = $04 + ; GLOBAL_GROUP = 4 +; toolsrc/codeseq.plh: 0069: const GADDR_CODE = $26 + ; GADDR_CODE = 38 +; toolsrc/codeseq.plh: 0070: const CALL_CODE = $54 + ; CALL_CODE = 84 +; toolsrc/codeseq.plh: 0071: const LAB_CODE = $68 + ; LAB_CODE = 104 +; toolsrc/codeseq.plh: 0072: const LAW_CODE = $6A + ; LAW_CODE = 106 +; toolsrc/codeseq.plh: 0073: const SAB_CODE = $78 + ; SAB_CODE = 120 +; toolsrc/codeseq.plh: 0074: const SAW_CODE = $7A + ; SAW_CODE = 122 +; toolsrc/codeseq.plh: 0075: const DAB_CODE = $7C + ; DAB_CODE = 124 +; toolsrc/codeseq.plh: 0076: const DAW_CODE = $7E + ; DAW_CODE = 126 +; toolsrc/codeseq.plh: 0077: const ADDAB_CODE = $B4 + ; ADDAB_CODE = 180 +; toolsrc/codeseq.plh: 0078: const ADDAW_CODE = $B6 + ; ADDAW_CODE = 182 +; toolsrc/codeseq.plh: 0079: const IDXAB_CODE = $BC + ; IDXAB_CODE = 188 +; toolsrc/codeseq.plh: 0080: const IDXAW_CODE = $BE + ; IDXAW_CODE = 190 +; toolsrc/codeseq.plh: 0081: // +; toolsrc/codeseq.plh: 0082: // Relative address code group +; toolsrc/codeseq.plh: 0083: // +; toolsrc/codeseq.plh: 0084: const RELATIVE_GROUP = $05 + ; RELATIVE_GROUP = 5 +; toolsrc/codeseq.plh: 0085: const BREQ_CODE = $22 + ; BREQ_CODE = 34 +; toolsrc/codeseq.plh: 0086: const BRNE_CODE = $24 + ; BRNE_CODE = 36 +; toolsrc/codeseq.plh: 0087: const BRFALSE_CODE = $4C + ; BRFALSE_CODE = 76 +; toolsrc/codeseq.plh: 0088: const BRTRUE_CODE = $4E + ; BRTRUE_CODE = 78 +; toolsrc/codeseq.plh: 0089: const BRNCH_CODE = $50 + ; BRNCH_CODE = 80 +; toolsrc/codeseq.plh: 0090: const BRAND_CODE = $AC + ; BRAND_CODE = 172 +; toolsrc/codeseq.plh: 0091: const BROR_CODE = $AE + ; BROR_CODE = 174 +; toolsrc/codeseq.plh: 0092: const BRGT_CODE = $A0 + ; BRGT_CODE = 160 +; toolsrc/codeseq.plh: 0093: const BRLT_CODE = $A2 + ; BRLT_CODE = 162 +; toolsrc/codeseq.plh: 0094: // +; toolsrc/codeseq.plh: 0095: // Code tag address group +; toolsrc/codeseq.plh: 0096: // +; toolsrc/codeseq.plh: 0097: const CODETAG_GROUP = $06 + ; CODETAG_GROUP = 6 +; toolsrc/codeseq.plh: 0098: // +; toolsrc/codeseq.plh: 0099: // Invalid code +; toolsrc/codeseq.plh: 0100: // +; toolsrc/codeseq.plh: 0101: const INVALID_CODE = $FF + ; INVALID_CODE = 255 +; toolsrc/codeseq.plh: 0102: // +; toolsrc/codeseq.plh: 0103: // Code sequence op +; toolsrc/codeseq.plh: 0104: // +; toolsrc/codeseq.plh: 0105: struc t_opseq +; toolsrc/codeseq.plh: 0106: byte opcode + ; opcode = 0 +; toolsrc/codeseq.plh: 0107: byte opgroup + ; opgroup = 1 +; toolsrc/codeseq.plh: 0108: word opval[] + ; opval = 2 +; toolsrc/codeseq.plh: 0109: word optag + ; optag = 2 +; toolsrc/codeseq.plh: 0110: word opoffset + ; opoffset = 4 +; toolsrc/codeseq.plh: 0111: word opnext + ; opnext = 6 +; toolsrc/codeseq.plh: 0112: end + ; t_opseq = 8 +; toolsrc/codeopt.pla: 0012: +; toolsrc/codeopt.pla: 0013: // +; toolsrc/codeopt.pla: 0014: // Replace all but the first of a series of identical load opcodes by DUP. This +; toolsrc/codeopt.pla: 0015: // doesn't reduce the number of opcodes but does reduce their size in bytes. +; toolsrc/codeopt.pla: 0016: // This is only called on the second optimisation pass because the DUP opcodes +; toolsrc/codeopt.pla: 0017: // may inhibit other peephole optimisations which are more valuable. +; toolsrc/codeopt.pla: 0018: // +; toolsrc/codeopt.pla: 0019: def try_dupify(op) + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; op -> [0] +_C000 ; try_dupify() +; toolsrc/codeopt.pla: 0020: byte crunched + ; crunched -> [2] +; toolsrc/codeopt.pla: 0021: word nextop + ; nextop -> [3] +; toolsrc/codeopt.pla: 0022: +; toolsrc/codeopt.pla: 0023: crunched = FALSE + !BYTE $58,$05,$01 ; ENTER 5,1 +; toolsrc/codeopt.pla: 0024: nextop = op=>opnext +; toolsrc/codeopt.pla: 0025: while nextop + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$03 ; SLW [3] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; toolsrc/codeopt.pla: 0026: if op->opcode <> nextop->opcode; return crunched; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$03 ; LLW [3] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B004 + !WORD _B004-* + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +_B004 +_B005 +; toolsrc/codeopt.pla: 0027: when op->opcode + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B007-* +; toolsrc/codeopt.pla: 0028: is CONST_CODE +_B008 +; toolsrc/codeopt.pla: 0029: if op=>opval <> nextop=>opval; return crunched; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $22 ; BREQ _B009 + !WORD _B009-* + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +_B009 +_B010 +; toolsrc/codeopt.pla: 0030: break + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +; toolsrc/codeopt.pla: 0031: is LADDR_CODE +_B011 +; toolsrc/codeopt.pla: 0032: is LLB_CODE +_B012 +; toolsrc/codeopt.pla: 0033: is LLW_CODE +_B013 +; toolsrc/codeopt.pla: 0034: if op=>opoffset <> nextop=>opoffset; return crunched; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $22 ; BREQ _B014 + !WORD _B014-* + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +_B014 +_B015 +; toolsrc/codeopt.pla: 0035: break + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +; toolsrc/codeopt.pla: 0036: is GADDR_CODE +_B016 +; toolsrc/codeopt.pla: 0037: is LAB_CODE +_B017 +; toolsrc/codeopt.pla: 0038: is LAW_CODE +_B018 +; toolsrc/codeopt.pla: 0039: if (op=>optag <> nextop=>optag) or (op=>opoffset <> nextop=>opoffset); return crunched; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B019 + !WORD _B019-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $42 ; ISNE +_B019 + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +_B020 +_B021 +; toolsrc/codeopt.pla: 0040: break + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +; toolsrc/codeopt.pla: 0041: otherwise +_B007 + !BYTE $07 ; CASEBLOCK + !WORD $0026 + !WORD _B016-* + !WORD $0028 + !WORD _B011-* + !WORD $002C + !WORD _B008-* + !WORD $0064 + !WORD _B012-* + !WORD $0066 + !WORD _B013-* + !WORD $0068 + !WORD _B017-* + !WORD $006A + !WORD _B018-* +; toolsrc/codeopt.pla: 0042: return crunched + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/codeopt.pla: 0043: wend +_B006 +; toolsrc/codeopt.pla: 0044: nextop->opcode = DUP_CODE +; toolsrc/codeopt.pla: 0045: nextop->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0046: nextop = nextop=>opnext +; toolsrc/codeopt.pla: 0047: crunched = TRUE +; toolsrc/codeopt.pla: 0048: loop + !BYTE $2A,$34 ; CB 52 + !BYTE $66,$03 ; LLW [3] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$03 ; LLW [3] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$03 ; LLW [3] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$03 ; SLW [3] + !BYTE $20 ; MINUS ONE + !BYTE $74,$02 ; SLB [2] +_B003 + !BYTE $66,$03 ; LLW [3] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; toolsrc/codeopt.pla: 0049: return crunched + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/codeopt.pla: 0050: end +; toolsrc/codeopt.pla: 0051: def is_hardware_address(addr) + ; addr -> [0] +_C001 ; is_hardware_address() +; toolsrc/codeopt.pla: 0052: return isuge(addr, $C000) and isult(addr, $D000) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $54 ; CALL _X025 +_F000 !WORD 0 + !BYTE $AC ; BRAND _B022 + !WORD _B022-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$D0 ; CW 53248 + !BYTE $54 ; CALL _X026 +_F001 !WORD 0 +_B022 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codeopt.pla: 0053: end +; toolsrc/codeopt.pla: 0054: // +; toolsrc/codeopt.pla: 0055: // Crunch sequence (peephole optimize) +; toolsrc/codeopt.pla: 0056: // +; toolsrc/codeopt.pla: 0057: def crunch_seq(seq, pass) + ; seq -> [0] + ; pass -> [2] +_C002 ; crunch_seq() +; toolsrc/codeopt.pla: 0058: word nextop, nextopnext, opprev, op, freeops + ; nextop -> [4] + ; nextopnext -> [6] + ; opprev -> [8] + ; op -> [10] + ; freeops -> [12] +; toolsrc/codeopt.pla: 0059: byte crunched, shiftcnt + ; crunched -> [14] + ; shiftcnt -> [15] +; toolsrc/codeopt.pla: 0060: +; toolsrc/codeopt.pla: 0061: opprev = NULL + !BYTE $58,$10,$02 ; ENTER 16,2 +; toolsrc/codeopt.pla: 0062: op = *seq +; toolsrc/codeopt.pla: 0063: nextop = op=>opnext +; toolsrc/codeopt.pla: 0064: crunched = FALSE +; toolsrc/codeopt.pla: 0065: freeops = 0 +; toolsrc/codeopt.pla: 0066: while op and nextop + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $6E,$0A ; DLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $00 ; CN 0 + !BYTE $74,$0E ; SLB [14] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B025 + !WORD _B025-* +_B023 +; toolsrc/codeopt.pla: 0067: when op->opcode + !BYTE $66,$0A ; LLW [10] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B028-* +; toolsrc/codeopt.pla: 0068: is CONST_CODE +_B029 +; toolsrc/codeopt.pla: 0069: if op=>opval == 1 +; toolsrc/codeopt.pla: 0070: if nextop->opcode == ADD_CODE +; toolsrc/codeopt.pla: 0071: op->opcode = INC_CODE +; toolsrc/codeopt.pla: 0072: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0073: freeops = 1 +; toolsrc/codeopt.pla: 0074: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $24 ; BRNE _B030 + !WORD _B030-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$82 ; CB 130 + !BYTE $24 ; BRNE _B032 + !WORD _B032-* + !BYTE $2A,$8C ; CB 140 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0075: fin +_B032 +_B033 +; toolsrc/codeopt.pla: 0076: if nextop->opcode == SUB_CODE +; toolsrc/codeopt.pla: 0077: op->opcode = DEC_CODE +; toolsrc/codeopt.pla: 0078: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0079: freeops = 1 +; toolsrc/codeopt.pla: 0080: break + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$84 ; CB 132 + !BYTE $24 ; BRNE _B034 + !WORD _B034-* + !BYTE $2A,$8E ; CB 142 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0081: fin +_B034 +_B035 +; toolsrc/codeopt.pla: 0082: if nextop->opcode == SHL_CODE +; toolsrc/codeopt.pla: 0083: op->opcode = DUP_CODE +; toolsrc/codeopt.pla: 0084: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0085: nextop->opcode = ADD_CODE +; toolsrc/codeopt.pla: 0086: break + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$9A ; CB 154 + !BYTE $24 ; BRNE _B036 + !WORD _B036-* + !BYTE $2A,$34 ; CB 52 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $2A,$82 ; CB 130 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0087: fin +_B036 +_B037 +; toolsrc/codeopt.pla: 0088: if nextop->opcode == MUL_CODE or nextop->opcode == DIV_CODE +; toolsrc/codeopt.pla: 0089: freeops = -2 +; toolsrc/codeopt.pla: 0090: break + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$86 ; CB 134 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B038 + !WORD _B038-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$88 ; CB 136 + !BYTE $40 ; ISEQ +_B038 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0091: fin +_B039 +_B040 +; toolsrc/codeopt.pla: 0092: fin +_B030 +_B031 +; toolsrc/codeopt.pla: 0093: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B042-* +; toolsrc/codeopt.pla: 0094: is NEG_CODE +_B043 +; toolsrc/codeopt.pla: 0095: op=>opval = -op=>opval +; toolsrc/codeopt.pla: 0096: freeops = 1 +; toolsrc/codeopt.pla: 0097: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0098: is COMP_CODE +_B044 +; toolsrc/codeopt.pla: 0099: op=>opval = ~op=>opval +; toolsrc/codeopt.pla: 0100: freeops = 1 +; toolsrc/codeopt.pla: 0101: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $92 ; COMP + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0102: is LOGIC_NOT_CODE +_B045 +; toolsrc/codeopt.pla: 0103: op=>opval = op=>opval ?? FALSE :: TRUE +; toolsrc/codeopt.pla: 0104: freeops = 1 +; toolsrc/codeopt.pla: 0105: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $00 ; CN 0 + !BYTE $50 ; BRNCH _B047 + !WORD _B047-* +_B046 + !BYTE $20 ; MINUS ONE +_B047 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0106: is BRFALSE_CODE +_B048 +; toolsrc/codeopt.pla: 0107: if op=>opval +; toolsrc/codeopt.pla: 0108: freeops = -2 // Remove constant and never taken branch +; toolsrc/codeopt.pla: 0109: else + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B050 + !WORD _B050-* +_B049 +; toolsrc/codeopt.pla: 0110: op->opcode = BRNCH_CODE // Always taken branch +; toolsrc/codeopt.pla: 0111: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0112: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0113: freeops = 1 +; toolsrc/codeopt.pla: 0114: fin + !BYTE $2A,$50 ; CB 80 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B050 +; toolsrc/codeopt.pla: 0115: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0116: is BRTRUE_CODE +_B051 +; toolsrc/codeopt.pla: 0117: if not op=>opval +; toolsrc/codeopt.pla: 0118: freeops = -2 // Remove constant never taken branch +; toolsrc/codeopt.pla: 0119: else + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B052 + !WORD _B052-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B052 +; toolsrc/codeopt.pla: 0120: op->opcode = BRNCH_CODE // Always taken branch +; toolsrc/codeopt.pla: 0121: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0122: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0123: freeops = 1 +; toolsrc/codeopt.pla: 0124: fin + !BYTE $2A,$50 ; CB 80 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B053 +; toolsrc/codeopt.pla: 0125: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0126: is BRGT_CODE +_B054 +; toolsrc/codeopt.pla: 0127: if opprev and (opprev->opcode == CONST_CODE) and (op=>opval <= opprev=>opval) +; toolsrc/codeopt.pla: 0128: freeops = 1 +; toolsrc/codeopt.pla: 0129: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $AC ; BRAND _B055 + !WORD _B055-* + !BYTE $66,$08 ; LLW [8] + !BYTE $60 ; LB + !BYTE $2A,$2C ; CB 44 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B056 + !WORD _B056-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4A ; ISLE +_B056 +_B055 + !BYTE $4C ; BRFLS _B057 + !WORD _B057-* + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B057 +_B058 +; toolsrc/codeopt.pla: 0130: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0131: is BRLT_CODE +_B059 +; toolsrc/codeopt.pla: 0132: if opprev and (opprev->opcode == CONST_CODE) and (op=>opval >= opprev=>opval) +; toolsrc/codeopt.pla: 0133: freeops = 1 +; toolsrc/codeopt.pla: 0134: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $AC ; BRAND _B060 + !WORD _B060-* + !BYTE $66,$08 ; LLW [8] + !BYTE $60 ; LB + !BYTE $2A,$2C ; CB 44 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B061 + !WORD _B061-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $48 ; ISGE +_B061 +_B060 + !BYTE $4C ; BRFLS _B062 + !WORD _B062-* + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B062 +_B063 +; toolsrc/codeopt.pla: 0135: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0136: is BROR_CODE +_B064 +; toolsrc/codeopt.pla: 0137: if not op=>opval +; toolsrc/codeopt.pla: 0138: freeops = -2 // Remove zero constant +; toolsrc/codeopt.pla: 0139: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B065 + !WORD _B065-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] +_B065 +_B066 +; toolsrc/codeopt.pla: 0140: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0141: is BRAND_CODE +_B067 +; toolsrc/codeopt.pla: 0142: if op=>opval +; toolsrc/codeopt.pla: 0143: freeops = -2 // Remove non-zero constant +; toolsrc/codeopt.pla: 0144: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] +_B068 +_B069 +; toolsrc/codeopt.pla: 0145: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0146: is NE_CODE +_B070 +; toolsrc/codeopt.pla: 0147: if not op=>opval +; toolsrc/codeopt.pla: 0148: freeops = -2 // Remove ZERO:ISNE +; toolsrc/codeopt.pla: 0149: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B071 + !WORD _B071-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] +_B071 +_B072 +; toolsrc/codeopt.pla: 0150: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0151: is EQ_CODE +_B073 +; toolsrc/codeopt.pla: 0152: if not op=>opval +; toolsrc/codeopt.pla: 0153: op->opcode = LOGIC_NOT_CODE // Replace ZERO:ISEQ +; toolsrc/codeopt.pla: 0154: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0155: freeops = 1 +; toolsrc/codeopt.pla: 0156: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B074 + !WORD _B074-* + !BYTE $2A,$80 ; CB 128 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B074 +_B075 +; toolsrc/codeopt.pla: 0157: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0158: is CONST_CODE // Collapse constant operation +_B076 +; toolsrc/codeopt.pla: 0159: nextopnext = nextop=>opnext +; toolsrc/codeopt.pla: 0160: if nextopnext +; toolsrc/codeopt.pla: 0161: when nextopnext->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B080-* +; toolsrc/codeopt.pla: 0162: is MUL_CODE +_B081 +; toolsrc/codeopt.pla: 0163: op=>opval = op=>opval * nextop=>opval +; toolsrc/codeopt.pla: 0164: freeops = 2 +; toolsrc/codeopt.pla: 0165: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $86 ; MUL + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0166: is DIV_CODE +_B082 +; toolsrc/codeopt.pla: 0167: op=>opval = op=>opval / nextop=>opval +; toolsrc/codeopt.pla: 0168: freeops = 2 +; toolsrc/codeopt.pla: 0169: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $88 ; DIV + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0170: is MOD_CODE +_B083 +; toolsrc/codeopt.pla: 0171: op=>opval = op=>opval % nextop=>opval +; toolsrc/codeopt.pla: 0172: freeops = 2 +; toolsrc/codeopt.pla: 0173: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $8A ; MOD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0174: is ADD_CODE +_B084 +; toolsrc/codeopt.pla: 0175: op=>opval = op=>opval + nextop=>opval +; toolsrc/codeopt.pla: 0176: freeops = 2 +; toolsrc/codeopt.pla: 0177: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0178: is SUB_CODE +_B085 +; toolsrc/codeopt.pla: 0179: op=>opval = op=>opval - nextop=>opval +; toolsrc/codeopt.pla: 0180: freeops = 2 +; toolsrc/codeopt.pla: 0181: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0182: is SHL_CODE +_B086 +; toolsrc/codeopt.pla: 0183: op=>opval = op=>opval << nextop=>opval +; toolsrc/codeopt.pla: 0184: freeops = 2 +; toolsrc/codeopt.pla: 0185: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $9A ; SHL + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0186: is SHR_CODE +_B087 +; toolsrc/codeopt.pla: 0187: op=>opval = op=>opval >> nextop=>opval +; toolsrc/codeopt.pla: 0188: freeops = 2 +; toolsrc/codeopt.pla: 0189: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $9C ; SHR + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0190: is AND_CODE +_B088 +; toolsrc/codeopt.pla: 0191: op=>opval = op=>opval & nextop=>opval +; toolsrc/codeopt.pla: 0192: freeops = 2 +; toolsrc/codeopt.pla: 0193: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $94 ; AND + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0194: is OR_CODE +_B089 +; toolsrc/codeopt.pla: 0195: op=>opval = op=>opval | nextop=>opval +; toolsrc/codeopt.pla: 0196: freeops = 2 +; toolsrc/codeopt.pla: 0197: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $96 ; OR + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0198: is EOR_CODE +_B090 +; toolsrc/codeopt.pla: 0199: op=>opval = op=>opval ^ nextop=>opval +; toolsrc/codeopt.pla: 0200: freeops = 2 +; toolsrc/codeopt.pla: 0201: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $98 ; XOR + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0202: is EQ_CODE +_B091 +; toolsrc/codeopt.pla: 0203: op=>opval = op=>opval == nextop=>opval +; toolsrc/codeopt.pla: 0204: freeops = 2 +; toolsrc/codeopt.pla: 0205: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0206: is NE_CODE +_B092 +; toolsrc/codeopt.pla: 0207: op=>opval = op=>opval <> nextop=>opval +; toolsrc/codeopt.pla: 0208: freeops = 2 +; toolsrc/codeopt.pla: 0209: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $42 ; ISNE + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0210: is GE_CODE +_B093 +; toolsrc/codeopt.pla: 0211: op=>opval = op=>opval >= nextop=>opval +; toolsrc/codeopt.pla: 0212: freeops = 2 +; toolsrc/codeopt.pla: 0213: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $48 ; ISGE + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0214: is LT_CODE +_B094 +; toolsrc/codeopt.pla: 0215: op=>opval = op=>opval < nextop=>opval +; toolsrc/codeopt.pla: 0216: freeops = 2 +; toolsrc/codeopt.pla: 0217: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $46 ; ISLT + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0218: is GT_CODE +_B095 +; toolsrc/codeopt.pla: 0219: op=>opval = op=>opval > nextop=>opval +; toolsrc/codeopt.pla: 0220: freeops = 2 +; toolsrc/codeopt.pla: 0221: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $44 ; ISGT + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0222: is LE_CODE +_B096 +; toolsrc/codeopt.pla: 0223: op=>opval = op=>opval <= nextop=>opval +; toolsrc/codeopt.pla: 0224: freeops = 2 +; toolsrc/codeopt.pla: 0225: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4A ; ISLE + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +; toolsrc/codeopt.pla: 0226: wend // End of collapse constant operation + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +_B080 + !BYTE $10 ; CASEBLOCK + !WORD $0040 + !WORD _B091-* + !WORD $0042 + !WORD _B092-* + !WORD $0044 + !WORD _B095-* + !WORD $0046 + !WORD _B094-* + !WORD $0048 + !WORD _B093-* + !WORD $004A + !WORD _B096-* + !WORD $0082 + !WORD _B084-* + !WORD $0084 + !WORD _B085-* + !WORD $0086 + !WORD _B081-* + !WORD $0088 + !WORD _B082-* + !WORD $008A + !WORD _B083-* + !WORD $0094 + !WORD _B088-* + !WORD $0096 + !WORD _B089-* + !WORD $0098 + !WORD _B090-* + !WORD $009A + !WORD _B086-* + !WORD $009C + !WORD _B087-* +_B079 +; toolsrc/codeopt.pla: 0227: fin +_B077 +_B078 +; toolsrc/codeopt.pla: 0228: if pass and not freeops and op=>opval +; toolsrc/codeopt.pla: 0229: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0230: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B097 + !WORD _B097-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B098 + !WORD _B098-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW +_B098 +_B097 + !BYTE $4C ; BRFLS _B099 + !WORD _B099-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F002 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B099 +_B100 +; toolsrc/codeopt.pla: 0231: break // CONST_CODE + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0232: is ADD_CODE +_B101 +; toolsrc/codeopt.pla: 0233: if op=>opval == 0 +; toolsrc/codeopt.pla: 0234: freeops = -2 +; toolsrc/codeopt.pla: 0235: elsif op=>opval > 0 and op=>opval <= 255 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B102 + !WORD _B102-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B103 + !WORD _B103-* +_B102 +; toolsrc/codeopt.pla: 0236: op->opcode = ADDI_CODE +; toolsrc/codeopt.pla: 0237: freeops = 1 +; toolsrc/codeopt.pla: 0238: elsif op=>opval >= -255 and op=>opval < 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B104 + !WORD _B104-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2A,$FF ; CB 255 + !BYTE $4A ; ISLE +_B104 + !BYTE $4C ; BRFLS _B105 + !WORD _B105-* + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B103 + !WORD _B103-* +_B105 +; toolsrc/codeopt.pla: 0239: op->opcode = SUBI_CODE +; toolsrc/codeopt.pla: 0240: op=>opval = -op=>opval +; toolsrc/codeopt.pla: 0241: freeops = 1 +; toolsrc/codeopt.pla: 0242: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $5E,$01 ; CFFB -255 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B106 + !WORD _B106-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT +_B106 + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* + !BYTE $2A,$3A ; CB 58 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B107 +_B103 +; toolsrc/codeopt.pla: 0243: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0244: is SUB_CODE +_B108 +; toolsrc/codeopt.pla: 0245: if op=>opval == 0 +; toolsrc/codeopt.pla: 0246: freeops = -2 +; toolsrc/codeopt.pla: 0247: elsif op=>opval > 0 and op=>opval <= 255 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B109 + !WORD _B109-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B110 + !WORD _B110-* +_B109 +; toolsrc/codeopt.pla: 0248: op->opcode = SUBI_CODE +; toolsrc/codeopt.pla: 0249: freeops = 1 +; toolsrc/codeopt.pla: 0250: elsif op=>opval >= -255 and op=>opval < 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B111 + !WORD _B111-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2A,$FF ; CB 255 + !BYTE $4A ; ISLE +_B111 + !BYTE $4C ; BRFLS _B112 + !WORD _B112-* + !BYTE $2A,$3A ; CB 58 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B110 + !WORD _B110-* +_B112 +; toolsrc/codeopt.pla: 0251: op->opcode = ADDI_CODE +; toolsrc/codeopt.pla: 0252: op=>opval = -op=>opval +; toolsrc/codeopt.pla: 0253: freeops = 1 +; toolsrc/codeopt.pla: 0254: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $5E,$01 ; CFFB -255 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B113 + !WORD _B113-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT +_B113 + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $90 ; NEG + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B114 +_B110 +; toolsrc/codeopt.pla: 0255: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0256: is AND_CODE +_B115 +; toolsrc/codeopt.pla: 0257: if op=>opval >= 0 and op=>opval <= 255 +; toolsrc/codeopt.pla: 0258: op->opcode = ANDI_CODE +; toolsrc/codeopt.pla: 0259: freeops = 1 +; toolsrc/codeopt.pla: 0260: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B116 + !WORD _B116-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2A,$FF ; CB 255 + !BYTE $4A ; ISLE +_B116 + !BYTE $4C ; BRFLS _B117 + !WORD _B117-* + !BYTE $2A,$3C ; CB 60 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B117 +_B118 +; toolsrc/codeopt.pla: 0261: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0262: is OR_CODE +_B119 +; toolsrc/codeopt.pla: 0263: if op=>opval == 0 +; toolsrc/codeopt.pla: 0264: freeops = -2 +; toolsrc/codeopt.pla: 0265: elsif op=>opval > 0 and op=>opval <= 255 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B120 + !WORD _B120-* + !BYTE $5E,$FE ; CFFB -2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B121 + !WORD _B121-* +_B120 +; toolsrc/codeopt.pla: 0266: op->opcode = ORI_CODE +; toolsrc/codeopt.pla: 0267: freeops = 1 +; toolsrc/codeopt.pla: 0268: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B122 + !WORD _B122-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2A,$FF ; CB 255 + !BYTE $4A ; ISLE +_B122 + !BYTE $4C ; BRFLS _B123 + !WORD _B123-* + !BYTE $2A,$3E ; CB 62 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B123 +_B121 +; toolsrc/codeopt.pla: 0269: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0270: is MUL_CODE +_B124 +; toolsrc/codeopt.pla: 0271: if op=>opval == 0 +; toolsrc/codeopt.pla: 0272: op->opcode = DROP_CODE +; toolsrc/codeopt.pla: 0273: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0274: nextop->opcode = CONST_CODE +; toolsrc/codeopt.pla: 0275: nextop->opgroup = CONST_GROUP +; toolsrc/codeopt.pla: 0276: nextop=>opval = 0 +; toolsrc/codeopt.pla: 0277: elsif op=>opval == 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B125 + !WORD _B125-* + !BYTE $2A,$30 ; CB 48 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $2A,$2C ; CB 44 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +_B125 +; toolsrc/codeopt.pla: 0278: op->opcode = DUP_CODE +; toolsrc/codeopt.pla: 0279: op->opgroup = STACK_GROUP +; toolsrc/codeopt.pla: 0280: nextop->opcode = ADD_CODE +; toolsrc/codeopt.pla: 0281: else + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B127 + !WORD _B127-* + !BYTE $2A,$34 ; CB 52 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $2A,$82 ; CB 130 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +_B127 +; toolsrc/codeopt.pla: 0282: for shiftcnt = 2 to 15 + !BYTE $1E ; CN 15 + !BYTE $04 ; CN 2 +_B129 + !BYTE $6C,$0F ; DLB [15] +; toolsrc/codeopt.pla: 0283: if op=>opval == 1 << shiftcnt +; toolsrc/codeopt.pla: 0284: op=>opval = shiftcnt +; toolsrc/codeopt.pla: 0285: nextop->opcode = SHL_CODE +; toolsrc/codeopt.pla: 0286: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $64,$0F ; LLB [15] + !BYTE $9A ; SHL + !BYTE $24 ; BRNE _B131 + !WORD _B131-* + !BYTE $64,$0F ; LLB [15] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$9A ; CB 154 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B128 + !WORD _B128-* +; toolsrc/codeopt.pla: 0287: fin +_B131 +_B132 +; toolsrc/codeopt.pla: 0288: next +_B130 + !BYTE $A4 ; INCBRLE _B129 + !WORD _B129-* +_B128 + !BYTE $74,$0F ; SLB [15] + !BYTE $30 ; DROP +; toolsrc/codeopt.pla: 0289: fin +_B126 +; toolsrc/codeopt.pla: 0290: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0291: is DIV_CODE +_B133 +; toolsrc/codeopt.pla: 0292: for shiftcnt = 1 to 15 + !BYTE $1E ; CN 15 + !BYTE $02 ; CN 1 +_B135 + !BYTE $6C,$0F ; DLB [15] +; toolsrc/codeopt.pla: 0293: if op=>opval == 1 << shiftcnt +; toolsrc/codeopt.pla: 0294: op=>opval = shiftcnt +; toolsrc/codeopt.pla: 0295: nextop->opcode = SHR_CODE +; toolsrc/codeopt.pla: 0296: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $64,$0F ; LLB [15] + !BYTE $9A ; SHL + !BYTE $24 ; BRNE _B137 + !WORD _B137-* + !BYTE $64,$0F ; LLB [15] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$9C ; CB 156 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B134 + !WORD _B134-* +; toolsrc/codeopt.pla: 0297: fin +_B137 +_B138 +; toolsrc/codeopt.pla: 0298: next +_B136 + !BYTE $A4 ; INCBRLE _B135 + !WORD _B135-* +_B134 + !BYTE $74,$0F ; SLB [15] + !BYTE $30 ; DROP +; toolsrc/codeopt.pla: 0299: break + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +; toolsrc/codeopt.pla: 0300: wend + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B042 + !BYTE $12 ; CASEBLOCK + !WORD $002C + !WORD _B076-* + !WORD $0040 + !WORD _B073-* + !WORD $0042 + !WORD _B070-* + !WORD $004C + !WORD _B048-* + !WORD $004E + !WORD _B051-* + !WORD $0080 + !WORD _B045-* + !WORD $0082 + !WORD _B101-* + !WORD $0084 + !WORD _B108-* + !WORD $0086 + !WORD _B124-* + !WORD $0088 + !WORD _B133-* + !WORD $0090 + !WORD _B043-* + !WORD $0092 + !WORD _B044-* + !WORD $0094 + !WORD _B115-* + !WORD $0096 + !WORD _B119-* + !WORD $00A0 + !WORD _B054-* + !WORD $00A2 + !WORD _B059-* + !WORD $00AC + !WORD _B067-* + !WORD $00AE + !WORD _B064-* +_B041 +; toolsrc/codeopt.pla: 0301: break // CONST_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0302: is LADDR_CODE +_B139 +; toolsrc/codeopt.pla: 0303: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B141-* +; toolsrc/codeopt.pla: 0304: is CONST_CODE +_B142 +; toolsrc/codeopt.pla: 0305: if nextop=>opnext +; toolsrc/codeopt.pla: 0306: nextopnext = nextop=>opnext +; toolsrc/codeopt.pla: 0307: when nextopnext->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B143 + !WORD _B143-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B146-* +; toolsrc/codeopt.pla: 0308: is ADD_CODE // INDEXB_CODE +_B147 +; toolsrc/codeopt.pla: 0309: op=>opoffset = op=>opoffset + nextop=>opval +; toolsrc/codeopt.pla: 0310: freeops = 2 +; toolsrc/codeopt.pla: 0311: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B145 + !WORD _B145-* +; toolsrc/codeopt.pla: 0312: is INDEXW_CODE +_B148 +; toolsrc/codeopt.pla: 0313: op=>opoffset = op=>opoffset + nextop=>opval * 2 +; toolsrc/codeopt.pla: 0314: freeops = 2 +; toolsrc/codeopt.pla: 0315: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B145 + !WORD _B145-* +; toolsrc/codeopt.pla: 0316: wend + !BYTE $50 ; BRNCH _B145 + !WORD _B145-* +_B146 + !BYTE $02 ; CASEBLOCK + !WORD $0082 + !WORD _B147-* + !WORD $009E + !WORD _B148-* +_B145 +; toolsrc/codeopt.pla: 0317: fin +_B143 +_B144 +; toolsrc/codeopt.pla: 0318: break + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +; toolsrc/codeopt.pla: 0319: is LB_CODE +_B149 +; toolsrc/codeopt.pla: 0320: op->opcode = LLB_CODE +; toolsrc/codeopt.pla: 0321: freeops = 1 +; toolsrc/codeopt.pla: 0322: break + !BYTE $2A,$64 ; CB 100 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +; toolsrc/codeopt.pla: 0323: is LW_CODE +_B150 +; toolsrc/codeopt.pla: 0324: op->opcode = LLW_CODE +; toolsrc/codeopt.pla: 0325: freeops = 1 +; toolsrc/codeopt.pla: 0326: break + !BYTE $2A,$66 ; CB 102 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +; toolsrc/codeopt.pla: 0327: is SB_CODE +_B151 +; toolsrc/codeopt.pla: 0328: op->opcode = SLB_CODE +; toolsrc/codeopt.pla: 0329: freeops = 1 +; toolsrc/codeopt.pla: 0330: break + !BYTE $2A,$74 ; CB 116 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +; toolsrc/codeopt.pla: 0331: is SW_CODE +_B152 +; toolsrc/codeopt.pla: 0332: op->opcode = SLW_CODE +; toolsrc/codeopt.pla: 0333: freeops = 1 +; toolsrc/codeopt.pla: 0334: break + !BYTE $2A,$76 ; CB 118 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +; toolsrc/codeopt.pla: 0335: wend + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +_B141 + !BYTE $05 ; CASEBLOCK + !WORD $002C + !WORD _B142-* + !WORD $0060 + !WORD _B149-* + !WORD $0062 + !WORD _B150-* + !WORD $0070 + !WORD _B151-* + !WORD $0072 + !WORD _B152-* +_B140 +; toolsrc/codeopt.pla: 0336: if pass > 0 and not freeops +; toolsrc/codeopt.pla: 0337: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0338: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B153 + !WORD _B153-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT +_B153 + !BYTE $4C ; BRFLS _B154 + !WORD _B154-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B154 +_B155 +; toolsrc/codeopt.pla: 0339: break // LADDR_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0340: is GADDR_CODE +_B156 +; toolsrc/codeopt.pla: 0341: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B158-* +; toolsrc/codeopt.pla: 0342: is CONST_CODE +_B159 +; toolsrc/codeopt.pla: 0343: if nextop=>opnext +; toolsrc/codeopt.pla: 0344: nextopnext = nextop=>opnext +; toolsrc/codeopt.pla: 0345: when nextopnext->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B160 + !WORD _B160-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B163-* +; toolsrc/codeopt.pla: 0346: is ADD_CODE // INDEXB_CODE +_B164 +; toolsrc/codeopt.pla: 0347: op=>opoffset = op=>opoffset + nextop=>opval +; toolsrc/codeopt.pla: 0348: freeops = 2 +; toolsrc/codeopt.pla: 0349: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B162 + !WORD _B162-* +; toolsrc/codeopt.pla: 0350: is INDEXW_CODE +_B165 +; toolsrc/codeopt.pla: 0351: op=>opoffset = op=>opoffset + nextop=>opval * 2 +; toolsrc/codeopt.pla: 0352: freeops = 2 +; toolsrc/codeopt.pla: 0353: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $82 ; ADD + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B162 + !WORD _B162-* +; toolsrc/codeopt.pla: 0354: wend + !BYTE $50 ; BRNCH _B162 + !WORD _B162-* +_B163 + !BYTE $02 ; CASEBLOCK + !WORD $0082 + !WORD _B164-* + !WORD $009E + !WORD _B165-* +_B162 +; toolsrc/codeopt.pla: 0355: fin +_B160 +_B161 +; toolsrc/codeopt.pla: 0356: break + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0357: is LB_CODE +_B166 +; toolsrc/codeopt.pla: 0358: op->opcode = LAB_CODE +; toolsrc/codeopt.pla: 0359: freeops = 1 +; toolsrc/codeopt.pla: 0360: break + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0361: is LW_CODE +_B167 +; toolsrc/codeopt.pla: 0362: op->opcode = LAW_CODE +; toolsrc/codeopt.pla: 0363: freeops = 1 +; toolsrc/codeopt.pla: 0364: break + !BYTE $2A,$6A ; CB 106 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0365: is SB_CODE +_B168 +; toolsrc/codeopt.pla: 0366: op->opcode = SAB_CODE +; toolsrc/codeopt.pla: 0367: freeops = 1 +; toolsrc/codeopt.pla: 0368: break + !BYTE $2A,$78 ; CB 120 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0369: is SW_CODE +_B169 +; toolsrc/codeopt.pla: 0370: op->opcode = SAW_CODE +; toolsrc/codeopt.pla: 0371: freeops = 1 +; toolsrc/codeopt.pla: 0372: break + !BYTE $2A,$7A ; CB 122 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0373: is ICAL_CODE +_B170 +; toolsrc/codeopt.pla: 0374: op->opcode = CALL_CODE +; toolsrc/codeopt.pla: 0375: freeops = 1 +; toolsrc/codeopt.pla: 0376: break + !BYTE $2A,$54 ; CB 84 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +; toolsrc/codeopt.pla: 0377: wend + !BYTE $50 ; BRNCH _B157 + !WORD _B157-* +_B158 + !BYTE $06 ; CASEBLOCK + !WORD $002C + !WORD _B159-* + !WORD $0056 + !WORD _B170-* + !WORD $0060 + !WORD _B166-* + !WORD $0062 + !WORD _B167-* + !WORD $0070 + !WORD _B168-* + !WORD $0072 + !WORD _B169-* +_B157 +; toolsrc/codeopt.pla: 0378: if pass and not freeops +; toolsrc/codeopt.pla: 0379: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0380: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B171 + !WORD _B171-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT +_B171 + !BYTE $4C ; BRFLS _B172 + !WORD _B172-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F004 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B172 +_B173 +; toolsrc/codeopt.pla: 0381: break // GADDR_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0382: is LLB_CODE +_B174 +; toolsrc/codeopt.pla: 0383: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B176-* +; toolsrc/codeopt.pla: 0384: is ADD_CODE // INDEXB_CODE +_B177 +; toolsrc/codeopt.pla: 0385: op->opcode = ADDLB_CODE +; toolsrc/codeopt.pla: 0386: freeops = 1 +; toolsrc/codeopt.pla: 0387: break + !BYTE $2A,$B0 ; CB 176 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B175 + !WORD _B175-* +; toolsrc/codeopt.pla: 0388: is INDEXW_CODE +_B178 +; toolsrc/codeopt.pla: 0389: op->opcode = IDXLB_CODE +; toolsrc/codeopt.pla: 0390: freeops = 1 +; toolsrc/codeopt.pla: 0391: break + !BYTE $2A,$B8 ; CB 184 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B175 + !WORD _B175-* +; toolsrc/codeopt.pla: 0392: wend + !BYTE $50 ; BRNCH _B175 + !WORD _B175-* +_B176 + !BYTE $02 ; CASEBLOCK + !WORD $0082 + !WORD _B177-* + !WORD $009E + !WORD _B178-* +_B175 +; toolsrc/codeopt.pla: 0393: if pass and not freeops +; toolsrc/codeopt.pla: 0394: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0395: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B179 + !WORD _B179-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT +_B179 + !BYTE $4C ; BRFLS _B180 + !WORD _B180-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F005 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B180 +_B181 +; toolsrc/codeopt.pla: 0396: break // LLB_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0397: is LLW_CODE +_B182 +; toolsrc/codeopt.pla: 0398: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B184-* +; toolsrc/codeopt.pla: 0399: is ADD_CODE // INDEXB_CODE +_B185 +; toolsrc/codeopt.pla: 0400: op->opcode = ADDLW_CODE +; toolsrc/codeopt.pla: 0401: freeops = 1 +; toolsrc/codeopt.pla: 0402: break + !BYTE $2A,$B2 ; CB 178 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B183 + !WORD _B183-* +; toolsrc/codeopt.pla: 0403: is INDEXW_CODE +_B186 +; toolsrc/codeopt.pla: 0404: op->opcode = IDXLW_CODE +; toolsrc/codeopt.pla: 0405: freeops = 1 +; toolsrc/codeopt.pla: 0406: break + !BYTE $2A,$BA ; CB 186 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B183 + !WORD _B183-* +; toolsrc/codeopt.pla: 0407: is CONST_CODE +_B187 +; toolsrc/codeopt.pla: 0408: // LLW [n]:CB 8:SHR -> LLB [n+1] +; toolsrc/codeopt.pla: 0409: if nextop=>opval == 8 and nextop=>opnext +; toolsrc/codeopt.pla: 0410: nextopnext = nextop=>opnext +; toolsrc/codeopt.pla: 0411: if nextopnext->opcode == SHR_CODE +; toolsrc/codeopt.pla: 0412: op->opcode = LLB_CODE +; toolsrc/codeopt.pla: 0413: op=>opoffset++ + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $10 ; CN 8 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B188 + !WORD _B188-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW +_B188 + !BYTE $4C ; BRFLS _B189 + !WORD _B189-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $60 ; LB + !BYTE $2A,$9C ; CB 156 + !BYTE $24 ; BRNE _B191 + !WORD _B191-* + !BYTE $2A,$64 ; CB 100 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $8C ; INCR +; toolsrc/codeopt.pla: 0414: freeops = 2 +; toolsrc/codeopt.pla: 0415: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B183 + !WORD _B183-* +; toolsrc/codeopt.pla: 0416: fin +_B191 +_B192 +; toolsrc/codeopt.pla: 0417: fin +_B189 +_B190 +; toolsrc/codeopt.pla: 0418: break + !BYTE $50 ; BRNCH _B183 + !WORD _B183-* +; toolsrc/codeopt.pla: 0419: wend + !BYTE $50 ; BRNCH _B183 + !WORD _B183-* +_B184 + !BYTE $03 ; CASEBLOCK + !WORD $002C + !WORD _B187-* + !WORD $0082 + !WORD _B185-* + !WORD $009E + !WORD _B186-* +_B183 +; toolsrc/codeopt.pla: 0420: if pass and not freeops +; toolsrc/codeopt.pla: 0421: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0422: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B193 + !WORD _B193-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT +_B193 + !BYTE $4C ; BRFLS _B194 + !WORD _B194-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F006 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B194 +_B195 +; toolsrc/codeopt.pla: 0423: break // LLW_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0424: is LAB_CODE +_B196 +; toolsrc/codeopt.pla: 0425: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B198-* +; toolsrc/codeopt.pla: 0426: is ADD_CODE // INDEXB_CODE +_B199 +; toolsrc/codeopt.pla: 0427: op->opcode = ADDAB_CODE +; toolsrc/codeopt.pla: 0428: freeops = 1 +; toolsrc/codeopt.pla: 0429: break + !BYTE $2A,$B4 ; CB 180 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B197 + !WORD _B197-* +; toolsrc/codeopt.pla: 0430: is INDEXW_CODE +_B200 +; toolsrc/codeopt.pla: 0431: op->opcode = IDXAB_CODE +; toolsrc/codeopt.pla: 0432: freeops = 1 +; toolsrc/codeopt.pla: 0433: break + !BYTE $2A,$BC ; CB 188 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B197 + !WORD _B197-* +; toolsrc/codeopt.pla: 0434: wend + !BYTE $50 ; BRNCH _B197 + !WORD _B197-* +_B198 + !BYTE $02 ; CASEBLOCK + !WORD $0082 + !WORD _B199-* + !WORD $009E + !WORD _B200-* +_B197 +; toolsrc/codeopt.pla: 0435: if pass and not freeops and not is_hardware_address(op=>opoffset) +; toolsrc/codeopt.pla: 0436: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0437: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B201 + !WORD _B201-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B202 + !WORD _B202-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C001 +_F007 !WORD _C001 + !BYTE $80 ; NOT +_B202 +_B201 + !BYTE $4C ; BRFLS _B203 + !WORD _B203-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F008 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B203 +_B204 +; toolsrc/codeopt.pla: 0438: break // LAB_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0439: is LAW_CODE +_B205 +; toolsrc/codeopt.pla: 0440: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B207-* +; toolsrc/codeopt.pla: 0441: is ADD_CODE // INDEXB_CODE +_B208 +; toolsrc/codeopt.pla: 0442: op->opcode = ADDAW_CODE +; toolsrc/codeopt.pla: 0443: freeops = 1 +; toolsrc/codeopt.pla: 0444: break + !BYTE $2A,$B6 ; CB 182 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +; toolsrc/codeopt.pla: 0445: is INDEXW_CODE +_B209 +; toolsrc/codeopt.pla: 0446: op->opcode = IDXAW_CODE +; toolsrc/codeopt.pla: 0447: freeops = 1 +; toolsrc/codeopt.pla: 0448: break + !BYTE $2A,$BE ; CB 190 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +; toolsrc/codeopt.pla: 0449: is CONST_CODE +_B210 +; toolsrc/codeopt.pla: 0450: // LLW [n]:CB 8:SHR -> LLB [n+1] +; toolsrc/codeopt.pla: 0451: if nextop=>opval == 8 and nextop=>opnext +; toolsrc/codeopt.pla: 0452: nextopnext = nextop=>opnext +; toolsrc/codeopt.pla: 0453: if nextopnext->opcode == SHR_CODE +; toolsrc/codeopt.pla: 0454: op->opcode = LAB_CODE +; toolsrc/codeopt.pla: 0455: op=>opoffset++ + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $10 ; CN 8 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B211 + !WORD _B211-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW +_B211 + !BYTE $4C ; BRFLS _B212 + !WORD _B212-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $6E,$06 ; DLW [6] + !BYTE $60 ; LB + !BYTE $2A,$9C ; CB 156 + !BYTE $24 ; BRNE _B214 + !WORD _B214-* + !BYTE $2A,$68 ; CB 104 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $8C ; INCR +; toolsrc/codeopt.pla: 0456: freeops = 2 +; toolsrc/codeopt.pla: 0457: break + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $04 ; CN 2 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +; toolsrc/codeopt.pla: 0458: fin +_B214 +_B215 +; toolsrc/codeopt.pla: 0459: fin +_B212 +_B213 +; toolsrc/codeopt.pla: 0460: break + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +; toolsrc/codeopt.pla: 0461: wend + !BYTE $50 ; BRNCH _B206 + !WORD _B206-* +_B207 + !BYTE $03 ; CASEBLOCK + !WORD $002C + !WORD _B210-* + !WORD $0082 + !WORD _B208-* + !WORD $009E + !WORD _B209-* +_B206 +; toolsrc/codeopt.pla: 0462: if pass and not freeops and not is_hardware_address(op=>opoffset) +; toolsrc/codeopt.pla: 0463: crunched = try_dupify(op) +; toolsrc/codeopt.pla: 0464: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $AC ; BRAND _B216 + !WORD _B216-* + !BYTE $66,$0C ; LLW [12] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B217 + !WORD _B217-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C001 +_F009 !WORD _C001 + !BYTE $80 ; NOT +_B217 +_B216 + !BYTE $4C ; BRFLS _B218 + !WORD _B218-* + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C000 +_F010 !WORD _C000 + !BYTE $74,$0E ; SLB [14] +_B218 +_B219 +; toolsrc/codeopt.pla: 0465: break // LAW_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0466: is LOGIC_NOT_CODE +_B220 +; toolsrc/codeopt.pla: 0467: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B222-* +; toolsrc/codeopt.pla: 0468: is BRFALSE_CODE +_B223 +; toolsrc/codeopt.pla: 0469: op->opcode = BRTRUE_CODE +; toolsrc/codeopt.pla: 0470: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0471: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0472: freeops = 1 +; toolsrc/codeopt.pla: 0473: break + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B221 + !WORD _B221-* +; toolsrc/codeopt.pla: 0474: is BRTRUE_CODE +_B224 +; toolsrc/codeopt.pla: 0475: op->opcode = BRFALSE_CODE +; toolsrc/codeopt.pla: 0476: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0477: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0478: freeops = 1 +; toolsrc/codeopt.pla: 0479: break + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B221 + !WORD _B221-* +; toolsrc/codeopt.pla: 0480: wend + !BYTE $50 ; BRNCH _B221 + !WORD _B221-* +_B222 + !BYTE $02 ; CASEBLOCK + !WORD $004C + !WORD _B223-* + !WORD $004E + !WORD _B224-* +_B221 +; toolsrc/codeopt.pla: 0481: break // LOGIC_NOT_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0482: is EQ_CODE +_B225 +; toolsrc/codeopt.pla: 0483: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B227-* +; toolsrc/codeopt.pla: 0484: is BRFALSE_CODE +_B228 +; toolsrc/codeopt.pla: 0485: op->opcode = BRNE_CODE +; toolsrc/codeopt.pla: 0486: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0487: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0488: freeops = 1 +; toolsrc/codeopt.pla: 0489: break + !BYTE $2A,$24 ; CB 36 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B226 + !WORD _B226-* +; toolsrc/codeopt.pla: 0490: is BRTRUE_CODE +_B229 +; toolsrc/codeopt.pla: 0491: op->opcode = BREQ_CODE +; toolsrc/codeopt.pla: 0492: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0493: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0494: freeops = 1 +; toolsrc/codeopt.pla: 0495: break + !BYTE $2A,$22 ; CB 34 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B226 + !WORD _B226-* +; toolsrc/codeopt.pla: 0496: wend + !BYTE $50 ; BRNCH _B226 + !WORD _B226-* +_B227 + !BYTE $02 ; CASEBLOCK + !WORD $004C + !WORD _B228-* + !WORD $004E + !WORD _B229-* +_B226 +; toolsrc/codeopt.pla: 0497: break // EQ_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0498: is NE_CODE +_B230 +; toolsrc/codeopt.pla: 0499: when nextop->opcode + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B232-* +; toolsrc/codeopt.pla: 0500: is BRFALSE_CODE +_B233 +; toolsrc/codeopt.pla: 0501: op->opcode = BREQ_CODE +; toolsrc/codeopt.pla: 0502: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0503: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0504: freeops = 1 +; toolsrc/codeopt.pla: 0505: break + !BYTE $2A,$22 ; CB 34 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +; toolsrc/codeopt.pla: 0506: is BRTRUE_CODE +_B234 +; toolsrc/codeopt.pla: 0507: op->opcode = BRNE_CODE +; toolsrc/codeopt.pla: 0508: op->opgroup = RELATIVE_GROUP +; toolsrc/codeopt.pla: 0509: op=>optag = nextop=>optag +; toolsrc/codeopt.pla: 0510: freeops = 1 +; toolsrc/codeopt.pla: 0511: break + !BYTE $2A,$24 ; CB 36 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +; toolsrc/codeopt.pla: 0512: wend + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +_B232 + !BYTE $02 ; CASEBLOCK + !WORD $004C + !WORD _B233-* + !WORD $004E + !WORD _B234-* +_B231 +; toolsrc/codeopt.pla: 0513: break // NE_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0514: is SLB_CODE +_B235 +; toolsrc/codeopt.pla: 0515: if nextop->opcode == LLB_CODE and op=>opoffset == nextop=>opoffset +; toolsrc/codeopt.pla: 0516: op->opcode = DLB_CODE +; toolsrc/codeopt.pla: 0517: freeops = 1 +; toolsrc/codeopt.pla: 0518: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$64 ; CB 100 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B236 + !WORD _B236-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ +_B236 + !BYTE $4C ; BRFLS _B237 + !WORD _B237-* + !BYTE $2A,$6C ; CB 108 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B237 +_B238 +; toolsrc/codeopt.pla: 0519: break // SLB_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0520: is SLW_CODE +_B239 +; toolsrc/codeopt.pla: 0521: if nextop->opcode == LLW_CODE and op=>opoffset == nextop=>opoffset +; toolsrc/codeopt.pla: 0522: op->opcode = DLW_CODE +; toolsrc/codeopt.pla: 0523: freeops = 1 +; toolsrc/codeopt.pla: 0524: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$66 ; CB 102 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B240 + !WORD _B240-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ +_B240 + !BYTE $4C ; BRFLS _B241 + !WORD _B241-* + !BYTE $2A,$6E ; CB 110 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B241 +_B242 +; toolsrc/codeopt.pla: 0525: break // SLW_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0526: is SAB_CODE +_B243 +; toolsrc/codeopt.pla: 0527: if nextop->opcode == LAB_CODE and op=>optag == nextop=>optag and op=>opoffset == nextop=>opoffset +; toolsrc/codeopt.pla: 0528: op->opcode = DAB_CODE +; toolsrc/codeopt.pla: 0529: freeops = 1 +; toolsrc/codeopt.pla: 0530: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$68 ; CB 104 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B244 + !WORD _B244-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B245 + !WORD _B245-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ +_B245 +_B244 + !BYTE $4C ; BRFLS _B246 + !WORD _B246-* + !BYTE $2A,$7C ; CB 124 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B246 +_B247 +; toolsrc/codeopt.pla: 0531: break // SAB_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0532: is SAW_CODE +_B248 +; toolsrc/codeopt.pla: 0533: if nextop->opcode == LAW_CODE and op=>optag == nextop=>optag and op=>opoffset == nextop=>opoffset +; toolsrc/codeopt.pla: 0534: op->opcode = DAW_CODE +; toolsrc/codeopt.pla: 0535: freeops = 1 +; toolsrc/codeopt.pla: 0536: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $2A,$6A ; CB 106 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B249 + !WORD _B249-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B250 + !WORD _B250-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $40 ; ISEQ +_B250 +_B249 + !BYTE $4C ; BRFLS _B251 + !WORD _B251-* + !BYTE $2A,$7E ; CB 126 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $76,$0C ; SLW [12] +_B251 +_B252 +; toolsrc/codeopt.pla: 0537: break // SAW_CODE + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/codeopt.pla: 0538: wend + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B028 + !BYTE $0E ; CASEBLOCK + !WORD $0026 + !WORD _B156-* + !WORD $0028 + !WORD _B139-* + !WORD $002C + !WORD _B029-* + !WORD $0040 + !WORD _B225-* + !WORD $0042 + !WORD _B230-* + !WORD $0064 + !WORD _B174-* + !WORD $0066 + !WORD _B182-* + !WORD $0068 + !WORD _B196-* + !WORD $006A + !WORD _B205-* + !WORD $0074 + !WORD _B235-* + !WORD $0076 + !WORD _B239-* + !WORD $0078 + !WORD _B243-* + !WORD $007A + !WORD _B248-* + !WORD $0080 + !WORD _B220-* +_B027 +; toolsrc/codeopt.pla: 0539: // +; toolsrc/codeopt.pla: 0540: // Free up crunched ops. If freeops is positive we free up that many ops +; toolsrc/codeopt.pla: 0541: // *after* op; if it's negative, we free up abs(freeops) ops *starting +; toolsrc/codeopt.pla: 0542: // with* op. +; toolsrc/codeopt.pla: 0543: // +; toolsrc/codeopt.pla: 0544: if freeops < 0 +; toolsrc/codeopt.pla: 0545: freeops = -freeops +; toolsrc/codeopt.pla: 0546: if op == *seq +; toolsrc/codeopt.pla: 0547: // +; toolsrc/codeopt.pla: 0548: // If op is at the start of the sequence, we treat this as a special case. +; toolsrc/codeopt.pla: 0549: // +; toolsrc/codeopt.pla: 0550: while freeops + !BYTE $66,$0C ; LLW [12] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B253 + !WORD _B253-* + !BYTE $66,$0C ; LLW [12] + !BYTE $90 ; NEG + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $24 ; BRNE _B255 + !WORD _B255-* + !BYTE $50 ; BRNCH _B259 + !WORD _B259-* +_B257 +; toolsrc/codeopt.pla: 0551: nextop = op=>opnext +; toolsrc/codeopt.pla: 0552: op=>opnext = freeop_lst +; toolsrc/codeopt.pla: 0553: freeop_lst = op +; toolsrc/codeopt.pla: 0554: *seq = nextop +; toolsrc/codeopt.pla: 0555: op = nextop +; toolsrc/codeopt.pla: 0556: freeops-- + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $6A ; LAW _X029+0 +_F011 !WORD 0+0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _X029+0 +_F012 !WORD 0+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$0C ; LLW [12] + !BYTE $8E ; DECR +; toolsrc/codeopt.pla: 0557: loop + !BYTE $76,$0C ; SLW [12] +_B259 + !BYTE $66,$0C ; LLW [12] + !BYTE $4E ; BRTRU _B257 + !WORD _B257-* +_B258 +; toolsrc/codeopt.pla: 0558: crunched = TRUE +; toolsrc/codeopt.pla: 0559: else + !BYTE $20 ; MINUS ONE + !BYTE $74,$0E ; SLB [14] + !BYTE $50 ; BRNCH _B256 + !WORD _B256-* +_B255 +; toolsrc/codeopt.pla: 0560: // +; toolsrc/codeopt.pla: 0561: // Otherwise we just move op back to point to the previous op and +; toolsrc/codeopt.pla: 0562: // let the following loop remove the required number of ops. +; toolsrc/codeopt.pla: 0563: // +; toolsrc/codeopt.pla: 0564: op = opprev +; toolsrc/codeopt.pla: 0565: nextop = op=>opnext +; toolsrc/codeopt.pla: 0566: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $6E,$0A ; DLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B256 +; toolsrc/codeopt.pla: 0567: fin +_B253 +_B254 +; toolsrc/codeopt.pla: 0568: while freeops + !BYTE $50 ; BRNCH _B262 + !WORD _B262-* +_B260 +; toolsrc/codeopt.pla: 0569: op=>opnext = nextop=>opnext +; toolsrc/codeopt.pla: 0570: nextop=>opnext = freeop_lst +; toolsrc/codeopt.pla: 0571: freeop_lst = nextop +; toolsrc/codeopt.pla: 0572: nextop = op=>opnext +; toolsrc/codeopt.pla: 0573: crunched = TRUE +; toolsrc/codeopt.pla: 0574: freeops-- + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _X029+0 +_F013 !WORD 0+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $7A ; SAW _X029+0 +_F014 !WORD 0+0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $20 ; MINUS ONE + !BYTE $74,$0E ; SLB [14] + !BYTE $66,$0C ; LLW [12] + !BYTE $8E ; DECR +; toolsrc/codeopt.pla: 0575: loop + !BYTE $76,$0C ; SLW [12] +_B262 + !BYTE $66,$0C ; LLW [12] + !BYTE $4E ; BRTRU _B260 + !WORD _B260-* +_B261 +; toolsrc/codeopt.pla: 0576: opprev = op +; toolsrc/codeopt.pla: 0577: op = nextop +; toolsrc/codeopt.pla: 0578: nextop = op=>opnext +; toolsrc/codeopt.pla: 0579: loop + !BYTE $66,$0A ; LLW [10] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $6E,$0A ; DLW [10] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B025 + !BYTE $66,$0A ; LLW [10] + !BYTE $AC ; BRAND _B026 + !WORD _B026-* + !BYTE $66,$04 ; LLW [4] +_B026 + !BYTE $4E ; BRTRU _B023 + !WORD _B023-* +_B024 +; toolsrc/codeopt.pla: 0580: return crunched + !BYTE $64,$0E ; LLB [14] + !BYTE $5A,$10 ; LEAVE 16 +; toolsrc/codeopt.pla: 0581: end +; toolsrc/codeopt.pla: 0582: // +; toolsrc/codeopt.pla: 0583: // Point to crunch function +; toolsrc/codeopt.pla: 0584: // +; toolsrc/codeopt.pla: 0585: optimize_seq = @crunch_seq +_INIT +; toolsrc/codeopt.pla: 0586: // +; toolsrc/codeopt.pla: 0587: // Keep this module in memory +; toolsrc/codeopt.pla: 0588: // +; toolsrc/codeopt.pla: 0589: return modkeep + !BYTE $26 ; LA _C002+0 +_F015 !WORD _C002+0 + !BYTE $7A ; SAW _X030+0 +_F016 !WORD 0+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $5C ; RET +; toolsrc/codeopt.pla: 0590: done +_SYSFLAGS = 0 +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 25 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: ISUGE + !BYTE $C9,$D3,$D5,$C7,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 25 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: FREEOP_LST + !BYTE $C6,$D2,$C5,$C5,$CF,$D0,$DF,$CC,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: OPTIMIZE_SEQ + !BYTE $CF,$D0,$D4,$C9,$CD,$C9,$DA,$C5,$DF,$D3,$C5,$51 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/toolsrc/ed.a b/src/toolsrc/ed.a new file mode 100644 index 0000000..6c7441a --- /dev/null +++ b/src/toolsrc/ed.a @@ -0,0 +1,10959 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; toolsrc/ed.pla: 0001: //===================================== +; toolsrc/ed.pla: 0002: // +; toolsrc/ed.pla: 0003: // Text Editor +; toolsrc/ed.pla: 0004: // +; toolsrc/ed.pla: 0005: //===================================== +; toolsrc/ed.pla: 0006: +; toolsrc/ed.pla: 0007: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; toolsrc/ed.pla: 0007: +; toolsrc/ed.pla: 0008: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; toolsrc/ed.pla: 0008: +; toolsrc/ed.pla: 0009: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; toolsrc/ed.pla: 0009: +; toolsrc/ed.pla: 0010: sysflags nojitc // Keep JITC from compiling and pausing while editing + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; toolsrc/ed.pla: 0011: // +; toolsrc/ed.pla: 0012: // Hardware constants +; toolsrc/ed.pla: 0013: // +; toolsrc/ed.pla: 0014: const csw = $0036 + ; csw = 54 +; toolsrc/ed.pla: 0015: const pushbttn1 = $C061 + ; pushbttn1 = 49249 +; toolsrc/ed.pla: 0016: const pushbttn2 = $C062 + ; pushbttn2 = 49250 +; toolsrc/ed.pla: 0017: const pushbttn3 = $C063 + ; pushbttn3 = 49251 +; toolsrc/ed.pla: 0018: const keyboard = $C000 + ; keyboard = 49152 +; toolsrc/ed.pla: 0019: const keystrobe = $C010 + ; keystrobe = 49168 +; toolsrc/ed.pla: 0020: const inputln = $01FF + ; inputln = 511 +; toolsrc/ed.pla: 0021: // +; toolsrc/ed.pla: 0022: // ASCII key values +; toolsrc/ed.pla: 0023: // +; toolsrc/ed.pla: 0024: const keyenter = $8D + ; keyenter = 141 +; toolsrc/ed.pla: 0025: const keyspace = $A0 + ; keyspace = 160 +; toolsrc/ed.pla: 0026: const keyarrowup = $8B + ; keyarrowup = 139 +; toolsrc/ed.pla: 0027: const keyarrowdown = $8A + ; keyarrowdown = 138 +; toolsrc/ed.pla: 0028: const keyarrowleft = $88 + ; keyarrowleft = 136 +; toolsrc/ed.pla: 0029: const keyarrowright = $95 + ; keyarrowright = 149 +; toolsrc/ed.pla: 0030: const keyescape = $9B + ; keyescape = 155 +; toolsrc/ed.pla: 0031: const keyctrla = $81 + ; keyctrla = 129 +; toolsrc/ed.pla: 0032: const keyctrlb = $82 + ; keyctrlb = 130 +; toolsrc/ed.pla: 0033: const keyctrlc = $83 + ; keyctrlc = 131 +; toolsrc/ed.pla: 0034: const keyctrld = $84 + ; keyctrld = 132 +; toolsrc/ed.pla: 0035: const keyctrle = $85 + ; keyctrle = 133 +; toolsrc/ed.pla: 0036: const keyctrlf = $86 + ; keyctrlf = 134 +; toolsrc/ed.pla: 0037: const keyctrlg = $87 + ; keyctrlg = 135 +; toolsrc/ed.pla: 0038: const keyctrli = $89 + ; keyctrli = 137 +; toolsrc/ed.pla: 0039: const keyctrlk = $8B + ; keyctrlk = 139 +; toolsrc/ed.pla: 0040: const keyctrll = $8C + ; keyctrll = 140 +; toolsrc/ed.pla: 0041: const keyctrln = $8E + ; keyctrln = 142 +; toolsrc/ed.pla: 0042: const keyctrlo = $8F + ; keyctrlo = 143 +; toolsrc/ed.pla: 0043: const keyctrlp = $90 + ; keyctrlp = 144 +; toolsrc/ed.pla: 0044: const keyctrlq = $91 + ; keyctrlq = 145 +; toolsrc/ed.pla: 0045: const keyctrlr = $92 + ; keyctrlr = 146 +; toolsrc/ed.pla: 0046: const keyctrls = $93 + ; keyctrls = 147 +; toolsrc/ed.pla: 0047: const keyctrlt = $94 + ; keyctrlt = 148 +; toolsrc/ed.pla: 0048: const keyctrlu = $95 + ; keyctrlu = 149 +; toolsrc/ed.pla: 0049: const keyctrlv = $96 + ; keyctrlv = 150 +; toolsrc/ed.pla: 0050: const keyctrlw = $97 + ; keyctrlw = 151 +; toolsrc/ed.pla: 0051: const keyctrlx = $98 + ; keyctrlx = 152 +; toolsrc/ed.pla: 0052: const keyctrly = $99 + ; keyctrly = 153 +; toolsrc/ed.pla: 0053: const keyctrlz = $9A + ; keyctrlz = 154 +; toolsrc/ed.pla: 0054: const keytab = keyctrli + ; keytab = 137 +; toolsrc/ed.pla: 0055: const keydetab = $9D + ; keydetab = 157 +; toolsrc/ed.pla: 0056: const keydelete = $FF + ; keydelete = 255 +; toolsrc/ed.pla: 0057: // +; toolsrc/ed.pla: 0058: // Data and text buffer constants +; toolsrc/ed.pla: 0059: // +; toolsrc/ed.pla: 0060: const MAXLINES = 999 + ; MAXLINES = 999 +; toolsrc/ed.pla: 0061: const MAXLINESSIZE = MAXLINES+24 + ; MAXLINESSIZE = 1023 +; toolsrc/ed.pla: 0062: const MAXCLIPLINES = 256 + ; MAXCLIPLINES = 256 +; toolsrc/ed.pla: 0063: const MAXLNLEN = 79 + ; MAXLNLEN = 79 +; toolsrc/ed.pla: 0064: const MAXSTRPLSIZE = $8000 + ; MAXSTRPLSIZE = 32768 +; toolsrc/ed.pla: 0065: //const STRPLMAPSIZE = 224 // $E0 = 28K is memory@16 bytes per bit map, 128 bytes per 8 bit map, 1K bytes per 8 byte map +; toolsrc/ed.pla: 0066: const pgjmp = 16 + ; pgjmp = 16 +; toolsrc/ed.pla: 0067: const changed = 1 + ; changed = 1 +; toolsrc/ed.pla: 0068: const insmode = 2 + ; insmode = 2 +; toolsrc/ed.pla: 0069: const gutter = 4 + ; gutter = 4 +; toolsrc/ed.pla: 0070: const uppercase = 8 + ; uppercase = 8 +; toolsrc/ed.pla: 0071: const selection = 16 + ; selection = 16 +; toolsrc/ed.pla: 0072: const showcurs = 32 + ; showcurs = 32 +; toolsrc/ed.pla: 0073: const shiftlock = 128 + ; shiftlock = 128 +; toolsrc/ed.pla: 0074: // +; toolsrc/ed.pla: 0075: // Text screen row address array +; toolsrc/ed.pla: 0076: // +; toolsrc/ed.pla: 0077: const scrnheight = 24 + ; scrnheight = 24 +; toolsrc/ed.pla: 0078: const scrnbottom = 23 + ; scrnbottom = 23 +; toolsrc/ed.pla: 0079: word scrnwidth = 36 +_D033 ; scrnwidth = 36 + !WORD $0024 +; toolsrc/ed.pla: 0080: word scrnright = 35 +_D034 ; scrnright = 35 + !WORD $0023 +; toolsrc/ed.pla: 0081: word txtscrn = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 +_D035 ; txtscrn = $0400,$0480,$0500,$0580,$0600,$0680,$0700,$0780 + !WORD $0400 + !WORD $0480 + !WORD $0500 + !WORD $0580 + !WORD $0600 + !WORD $0680 + !WORD $0700 + !WORD $0780 +; toolsrc/ed.pla: 0082: word = $0428,$04A8,$0528,$05A8,$0628,$06A8,$0728,$07A8 + !WORD $0428 + !WORD $04A8 + !WORD $0528 + !WORD $05A8 + !WORD $0628 + !WORD $06A8 + !WORD $0728 + !WORD $07A8 +; toolsrc/ed.pla: 0083: word = $0450,$04D0,$0550,$05D0,$0650,$06D0,$0750,$07D0 + !WORD $0450 + !WORD $04D0 + !WORD $0550 + !WORD $05D0 + !WORD $0650 + !WORD $06D0 + !WORD $0750 + !WORD $07D0 +; toolsrc/ed.pla: 0084: // +; toolsrc/ed.pla: 0085: // Editor variables +; toolsrc/ed.pla: 0086: // +; toolsrc/ed.pla: 0087: byte nullstr = "" +_D036 ; nullstr = "" + !BYTE $00 +; toolsrc/ed.pla: 0088: byte[80] findstr = "" +_D037 ; findstr = "" + !BYTE $00 + !FILL $4F +; toolsrc/ed.pla: 0089: byte[64] filename = "UNTITLED" +_D038 ; filename = "UNTITLED" + !BYTE $08 + !BYTE $55,$4E,$54,$49,$54,$4C,$45,$44 + !FILL $37 +; toolsrc/ed.pla: 0090: byte exit = FALSE +_D039 ; exit = FALSE + !BYTE $00 +; toolsrc/ed.pla: 0091: byte flags = 0 +_D040 ; flags = 0 + !BYTE $00 +; toolsrc/ed.pla: 0092: byte flash = 0 +_D041 ; flash = 0 + !BYTE $00 +; toolsrc/ed.pla: 0093: word numlines = 0 +_D042 ; numlines = 0 + !WORD $0000 +; toolsrc/ed.pla: 0094: word numcliplines = 0 +_D043 ; numcliplines = 0 + !WORD $0000 +; toolsrc/ed.pla: 0095: word arg +_D044 !FILL 2 ; arg +; toolsrc/ed.pla: 0096: word strplsize = MAXSTRPLSIZE +_D045 ; strplsize = MAXSTRPLSIZE + !WORD $8000 +; toolsrc/ed.pla: 0097: word strpool, strplmapsize, txtlinbuf, cliplinbuf, strpoolmap +_D046 !FILL 2 ; strpool, strplmapsize, txtlinbuf, cliplinbuf, strpoolmap +_D047 !FILL 2 ; strplmapsize, txtlinbuf, cliplinbuf, strpoolmap +_D048 !FILL 2 ; txtlinbuf, cliplinbuf, strpoolmap +_D049 !FILL 2 ; cliplinbuf, strpoolmap +_D050 !FILL 2 ; strpoolmap +; toolsrc/ed.pla: 0098: word cursx, cursy, scrnleft, curscol +_D051 !FILL 2 ; cursx, cursy, scrnleft, curscol +_D052 !FILL 2 ; cursy, scrnleft, curscol +_D053 !FILL 2 ; scrnleft, curscol +_D054 !FILL 2 ; curscol +; toolsrc/ed.pla: 0099: byte underchr, curschr +_D055 !FILL 1 ; underchr, curschr +_D056 !FILL 1 ; curschr +; toolsrc/ed.pla: 0100: word keyin, cursrow, selrow, scrntop, cursptr +_D057 !FILL 2 ; keyin, cursrow, selrow, scrntop, cursptr +_D058 !FILL 2 ; cursrow, selrow, scrntop, cursptr +_D059 !FILL 2 ; selrow, scrntop, cursptr +_D060 !FILL 2 ; scrntop, cursptr +_D061 !FILL 2 ; cursptr +; toolsrc/ed.pla: 0101: byte a3echo = $80 +_D062 ; a3echo = $80 + !BYTE $80 +; toolsrc/ed.pla: 0102: byte a3noecho = $00 +_D063 ; a3noecho = $00 + !BYTE $00 +; toolsrc/ed.pla: 0103: // +; toolsrc/ed.pla: 0104: // Predeclared functions +; toolsrc/ed.pla: 0105: // +; toolsrc/ed.pla: 0106: predef cmdmode#0 +; toolsrc/ed.pla: 0107: // +; toolsrc/ed.pla: 0108: // Utility functions +; toolsrc/ed.pla: 0109: // +; toolsrc/ed.pla: 0110: // Defines for ASM routines +; toolsrc/ed.pla: 0111: // +; toolsrc/ed.pla: 0112: asm equates +_A000 ; equates() +; toolsrc/ed.pla: 0113: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; toolsrc/ed.pla: 0114: end +; toolsrc/ed.pla: 0115: asm sethibit(strptr)#0 +_A001 ; sethibit() +; toolsrc/ed.pla: 0116: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/ed.pla: 0117: STA SRCL + STA SRCL +; toolsrc/ed.pla: 0118: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/ed.pla: 0119: STA SRCH + STA SRCH +; toolsrc/ed.pla: 0120: INX + INX +; toolsrc/ed.pla: 0121: LDY #$00 + LDY #$00 +; toolsrc/ed.pla: 0122: LDA (SRC),Y + LDA (SRC),Y +; toolsrc/ed.pla: 0123: BEQ + + BEQ + +; toolsrc/ed.pla: 0124: TAY + TAY +; toolsrc/ed.pla: 0125: STHILP LDA (SRC),Y +STHILP LDA (SRC),Y +; toolsrc/ed.pla: 0126: ORA #$80 + ORA #$80 +; toolsrc/ed.pla: 0127: STA (SRC),Y + STA (SRC),Y +; toolsrc/ed.pla: 0128: DEY + DEY +; toolsrc/ed.pla: 0129: BNE STHILP + BNE STHILP +; toolsrc/ed.pla: 0130: + RTS ++ RTS +; toolsrc/ed.pla: 0131: end +; toolsrc/ed.pla: 0132: asm lncpy(dststr, srcstr)#0 +_A002 ; lncpy() +; toolsrc/ed.pla: 0133: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/ed.pla: 0134: STA SRCL + STA SRCL +; toolsrc/ed.pla: 0135: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/ed.pla: 0136: STA SRCH + STA SRCH +; toolsrc/ed.pla: 0137: INX + INX +; toolsrc/ed.pla: 0138: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/ed.pla: 0139: STA DSTL + STA DSTL +; toolsrc/ed.pla: 0140: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/ed.pla: 0141: STA DSTH + STA DSTH +; toolsrc/ed.pla: 0142: INX + INX +; toolsrc/ed.pla: 0143: LDY #$00 + LDY #$00 +; toolsrc/ed.pla: 0144: LDA (SRC),Y + LDA (SRC),Y +; toolsrc/ed.pla: 0145: CMP #80 + CMP #80 +; toolsrc/ed.pla: 0146: BCC + + BCC + +; toolsrc/ed.pla: 0147: LDA #79 + LDA #79 +; toolsrc/ed.pla: 0148: CLC + CLC +; toolsrc/ed.pla: 0149: + ADC #$01 ; APPEND CR TO END OF STRING ++ ADC #$01 ; APPEND CR TO END OF STRING +; toolsrc/ed.pla: 0150: STA (DST),Y + STA (DST),Y +; toolsrc/ed.pla: 0151: TAY + TAY +; toolsrc/ed.pla: 0152: LDA #$0D + LDA #$0D +; toolsrc/ed.pla: 0153: STA (DST),Y + STA (DST),Y +; toolsrc/ed.pla: 0154: DEY + DEY +; toolsrc/ed.pla: 0155: BEQ ++ + BEQ ++ +; toolsrc/ed.pla: 0156: CPLNLP LDA (SRC),Y +CPLNLP LDA (SRC),Y +; toolsrc/ed.pla: 0157: CMP #$20 + CMP #$20 +; toolsrc/ed.pla: 0158: BCS + + BCS + +; toolsrc/ed.pla: 0159: ADC #$60 + ADC #$60 +; toolsrc/ed.pla: 0160: + AND #$7F ++ AND #$7F +; toolsrc/ed.pla: 0161: STA (DST),Y + STA (DST),Y +; toolsrc/ed.pla: 0162: DEY + DEY +; toolsrc/ed.pla: 0163: BNE CPLNLP + BNE CPLNLP +; toolsrc/ed.pla: 0164: ++ RTS +++ RTS +; toolsrc/ed.pla: 0165: end +; toolsrc/ed.pla: 0166: asm lnupcpy(dststr, srcstr)#0 +_A003 ; lnupcpy() +; toolsrc/ed.pla: 0167: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/ed.pla: 0168: STA SRCL + STA SRCL +; toolsrc/ed.pla: 0169: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/ed.pla: 0170: STA SRCH + STA SRCH +; toolsrc/ed.pla: 0171: INX + INX +; toolsrc/ed.pla: 0172: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/ed.pla: 0173: STA DSTL + STA DSTL +; toolsrc/ed.pla: 0174: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/ed.pla: 0175: STA DSTH + STA DSTH +; toolsrc/ed.pla: 0176: INX + INX +; toolsrc/ed.pla: 0177: LDY #$00 + LDY #$00 +; toolsrc/ed.pla: 0178: LDA (SRC),Y + LDA (SRC),Y +; toolsrc/ed.pla: 0179: CMP #80 + CMP #80 +; toolsrc/ed.pla: 0180: BCC + + BCC + +; toolsrc/ed.pla: 0181: LDA #79 + LDA #79 +; toolsrc/ed.pla: 0182: + STA (DST),Y ++ STA (DST),Y +; toolsrc/ed.pla: 0183: TAY + TAY +; toolsrc/ed.pla: 0184: BEQ +++ + BEQ +++ +; toolsrc/ed.pla: 0185: CPUPLP LDA (SRC),Y +CPUPLP LDA (SRC),Y +; toolsrc/ed.pla: 0186: CMP #$20 + CMP #$20 +; toolsrc/ed.pla: 0187: BCS + + BCS + +; toolsrc/ed.pla: 0188: ADC #$60 + ADC #$60 +; toolsrc/ed.pla: 0189: + AND #$7F ++ AND #$7F +; toolsrc/ed.pla: 0190: CMP #$7B + CMP #$7B +; toolsrc/ed.pla: 0191: BCS ++ + BCS ++ +; toolsrc/ed.pla: 0192: CMP #$61 + CMP #$61 +; toolsrc/ed.pla: 0193: BCC ++ + BCC ++ +; toolsrc/ed.pla: 0194: SEC + SEC +; toolsrc/ed.pla: 0195: SBC #$20 + SBC #$20 +; toolsrc/ed.pla: 0196: ++ STA (DST),Y +++ STA (DST),Y +; toolsrc/ed.pla: 0197: DEY + DEY +; toolsrc/ed.pla: 0198: BNE CPUPLP + BNE CPUPLP +; toolsrc/ed.pla: 0199: +++ RTS ++++ RTS +; toolsrc/ed.pla: 0200: end +; toolsrc/ed.pla: 0201: def bell#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; bell() +; toolsrc/ed.pla: 0202: putc($07) +; toolsrc/ed.pla: 0203: end + !BYTE $0E ; CN 7 + !BYTE $54 ; CALL _X002 +_F000 !WORD 0 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0204: // +; toolsrc/ed.pla: 0205: // Memory management routines +; toolsrc/ed.pla: 0206: // +; toolsrc/ed.pla: 0207: def sizemask(size) + ; size -> [0] +_C001 ; sizemask() +; toolsrc/ed.pla: 0208: if size <= 16 + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/ed.pla: 0209: return $01 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$10 ; CB 16 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $02 ; CN 1 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0210: elsif size <= 32 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B001 +; toolsrc/ed.pla: 0211: return $03 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $06 ; CN 3 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0212: elsif size <= 48 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B003 +; toolsrc/ed.pla: 0213: return $07 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$30 ; CB 48 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $0E ; CN 7 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0214: elsif size <= 64 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B004 +; toolsrc/ed.pla: 0215: return $0F + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$40 ; CB 64 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $1E ; CN 15 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0216: elsif size <= 80 + !BYTE $50 ; BRNCH _B002 + !WORD _B002-* +_B005 +; toolsrc/ed.pla: 0217: return $1F + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$50 ; CB 80 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $2A,$1F ; CB 31 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0218: fin +_B006 +_B002 +; toolsrc/ed.pla: 0219: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0220: end +; toolsrc/ed.pla: 0221: def strpoolalloc(size) + ; size -> [0] +_C002 ; strpoolalloc() +; toolsrc/ed.pla: 0222: byte szmask + ; szmask -> [2] +; toolsrc/ed.pla: 0223: word mapmask, addr, i + ; mapmask -> [3] + ; addr -> [5] + ; i -> [7] +; toolsrc/ed.pla: 0224: +; toolsrc/ed.pla: 0225: szmask = sizemask(size) + !BYTE $58,$09,$01 ; ENTER 9,1 +; toolsrc/ed.pla: 0226: for i = strplmapsize - 1 downto 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C001 +_F001 !WORD _C001 + !BYTE $74,$02 ; SLB [2] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D047+0 +_F002 !WORD _D047+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B007 + !WORD _B007-* +_B008 + !BYTE $6E,$07 ; DLW [7] +; toolsrc/ed.pla: 0227: if ^(strpoolmap + i) <> $FF +; toolsrc/ed.pla: 0228: mapmask = szmask +; toolsrc/ed.pla: 0229: repeat + !BYTE $6A ; LAW _D050+0 +_F003 !WORD _D050+0 + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $60 ; LB + !BYTE $2A,$FF ; CB 255 + !BYTE $22 ; BREQ _B010 + !WORD _B010-* + !BYTE $64,$02 ; LLB [2] + !BYTE $76,$03 ; SLW [3] +_B013 +; toolsrc/ed.pla: 0230: if ^(strpoolmap + i) & mapmask +; toolsrc/ed.pla: 0231: mapmask = mapmask << 1 +; toolsrc/ed.pla: 0232: else + !BYTE $6A ; LAW _D050+0 +_F004 !WORD _D050+0 + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $60 ; LB + !BYTE $66,$03 ; LLW [3] + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$03 ; LLW [3] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$03 ; SLW [3] + !BYTE $50 ; BRNCH _B016 + !WORD _B016-* +_B015 +; toolsrc/ed.pla: 0233: ^(strpoolmap + i) = ^(strpoolmap + i) | mapmask +; toolsrc/ed.pla: 0234: addr = (i << 7) + strpool +; toolsrc/ed.pla: 0235: while !(mapmask & 1) + !BYTE $6A ; LAW _D050+0 +_F005 !WORD _D050+0 + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $60 ; LB + !BYTE $66,$03 ; LLW [3] + !BYTE $96 ; OR + !BYTE $6A ; LAW _D050+0 +_F006 !WORD _D050+0 + !BYTE $B2,$07 ; ADDLW [7] + !BYTE $70 ; SB + !BYTE $66,$07 ; LLW [7] + !BYTE $0E ; CN 7 + !BYTE $9A ; SHL + !BYTE $B6 ; ADDAW _D046+0 +_F007 !WORD _D046+0 + !BYTE $76,$05 ; SLW [5] + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B017 +; toolsrc/ed.pla: 0236: addr = addr + 16 +; toolsrc/ed.pla: 0237: mapmask = mapmask >> 1 +; toolsrc/ed.pla: 0238: loop + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$03 ; LLW [3] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $76,$03 ; SLW [3] +_B019 + !BYTE $66,$03 ; LLW [3] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* +_B018 +; toolsrc/ed.pla: 0239: return addr + !BYTE $32 ; DROP2 + !BYTE $66,$05 ; LLW [5] + !BYTE $5A,$09 ; LEAVE 9 +; toolsrc/ed.pla: 0240: fin +_B016 +; toolsrc/ed.pla: 0241: until mapmask & $100 +_B014 + !BYTE $66,$03 ; LLW [3] + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* +_B012 +; toolsrc/ed.pla: 0242: fin +_B010 +_B011 +; toolsrc/ed.pla: 0243: next +_B009 + !BYTE $A8 ; DECBRGE _B008 + !WORD _B008-* +_B007 + !BYTE $76,$07 ; SLW [7] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0244: bell() +; toolsrc/ed.pla: 0245: puts("OUT OF MEMORY!") + !BYTE $54 ; CALL _C000 +_F008 !WORD _C000 + !BYTE $2E ; CS + !BYTE $0E + !BYTE $4F,$55,$54,$20,$4F,$46,$20,$4D + !BYTE $45,$4D,$4F,$52,$59,$21 + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 +; toolsrc/ed.pla: 0246: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; toolsrc/ed.pla: 0247: end +; toolsrc/ed.pla: 0248: def striplead(strptr, chr)#0 + ; strptr -> [0] + ; chr -> [2] +_C003 ; striplead() +; toolsrc/ed.pla: 0249: byte striplen + ; striplen -> [4] +; toolsrc/ed.pla: 0250: +; toolsrc/ed.pla: 0251: for striplen = 1 to ^strptr + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B020 + !WORD _B020-* +_B021 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0252: if ^(strptr + striplen) <> chr +; toolsrc/ed.pla: 0253: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $22 ; BREQ _B023 + !WORD _B023-* + !BYTE $50 ; BRNCH _B020 + !WORD _B020-* +; toolsrc/ed.pla: 0254: fin +_B023 +_B024 +; toolsrc/ed.pla: 0255: next +_B022 + !BYTE $A4 ; INCBRLE _B021 + !WORD _B021-* +_B020 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0256: if striplen > 1 +; toolsrc/ed.pla: 0257: ^strptr = ^strptr - (striplen - 1) +; toolsrc/ed.pla: 0258: memcpy(strptr + 1, strptr + striplen, ^strptr) +; toolsrc/ed.pla: 0259: fin + !BYTE $64,$04 ; LLB [4] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR + !BYTE $84 ; SUB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F010 !WORD 0 +_B025 +_B026 +; toolsrc/ed.pla: 0260: end + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 0261: def striptail(strptr, chr)#0 + ; strptr -> [0] + ; chr -> [2] +_C004 ; striptail() +; toolsrc/ed.pla: 0262: byte strlen + ; strlen -> [4] +; toolsrc/ed.pla: 0263: +; toolsrc/ed.pla: 0264: for strlen = ^strptr downto 1 + !BYTE $58,$05,$02 ; ENTER 5,2 + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $A2 ; BRLT _B027 + !WORD _B027-* +_B028 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0265: if ^(strptr + strlen) <> $8D and ^(strptr + strlen) <> chr +; toolsrc/ed.pla: 0266: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $2A,$8D ; CB 141 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B030 + !WORD _B030-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $42 ; ISNE +_B030 + !BYTE $4C ; BRFLS _B031 + !WORD _B031-* + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +; toolsrc/ed.pla: 0267: fin +_B031 +_B032 +; toolsrc/ed.pla: 0268: next +_B029 + !BYTE $A8 ; DECBRGE _B028 + !WORD _B028-* +_B027 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0269: ^strptr = strlen +; toolsrc/ed.pla: 0270: end + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 0271: def strstripcpy(dststr, srcstr)#0 + ; dststr -> [0] + ; srcstr -> [2] +_C005 ; strstripcpy() +; toolsrc/ed.pla: 0272: memcpy(dststr, srcstr, ^srcstr + 1) + !BYTE $58,$04,$02 ; ENTER 4,2 +; toolsrc/ed.pla: 0273: striptail(dststr, keyspace) +; toolsrc/ed.pla: 0274: end + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F011 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$A0 ; CB 160 + !BYTE $54 ; CALL _C004 +_F012 !WORD _C004 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0275: def delstr(strptr)#0 + ; strptr -> [0] +_C006 ; delstr() +; toolsrc/ed.pla: 0276: byte mask, ofst + ; mask -> [2] + ; ofst -> [3] +; toolsrc/ed.pla: 0277: +; toolsrc/ed.pla: 0278: if strptr and strptr <> @nullstr + !BYTE $58,$04,$01 ; ENTER 4,1 +; toolsrc/ed.pla: 0279: mask = sizemask(^strptr + 1) +; toolsrc/ed.pla: 0280: ofst = (strptr - strpool) >> 4 +; toolsrc/ed.pla: 0281: mask = mask << (ofst & $07) +; toolsrc/ed.pla: 0282: ofst = ofst >> 3 +; toolsrc/ed.pla: 0283: ^(strpoolmap + ofst) = ^(strpoolmap + ofst) & ~mask +; toolsrc/ed.pla: 0284: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D036+0 +_F013 !WORD _D036+0 + !BYTE $42 ; ISNE +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C001 +_F014 !WORD _C001 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D046+0 +_F015 !WORD _D046+0 + !BYTE $84 ; SUB + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $74,$03 ; SLB [3] + !BYTE $64,$02 ; LLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $3C,$07 ; ANDI 7 + !BYTE $9A ; SHL + !BYTE $74,$02 ; SLB [2] + !BYTE $64,$03 ; LLB [3] + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $74,$03 ; SLB [3] + !BYTE $6A ; LAW _D050+0 +_F016 !WORD _D050+0 + !BYTE $B0,$03 ; ADDLB [3] + !BYTE $60 ; LB + !BYTE $64,$02 ; LLB [2] + !BYTE $92 ; COMP + !BYTE $94 ; AND + !BYTE $6A ; LAW _D050+0 +_F017 !WORD _D050+0 + !BYTE $B0,$03 ; ADDLB [3] + !BYTE $70 ; SB +_B034 +_B035 +; toolsrc/ed.pla: 0285: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0286: def newstr(strptr) + ; strptr -> [0] +_C007 ; newstr() +; toolsrc/ed.pla: 0287: byte strlen + ; strlen -> [2] +; toolsrc/ed.pla: 0288: word newptr + ; newptr -> [3] +; toolsrc/ed.pla: 0289: +; toolsrc/ed.pla: 0290: strlen = ^strptr + !BYTE $58,$05,$01 ; ENTER 5,1 +; toolsrc/ed.pla: 0291: while ^(strptr + strlen) == keyenter or ^(strptr + strlen) == keyspace + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B036 +; toolsrc/ed.pla: 0292: strlen-- + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0293: loop + !BYTE $74,$02 ; SLB [2] +_B038 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$8D ; CB 141 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B039 + !WORD _B039-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $40 ; ISEQ +_B039 + !BYTE $4E ; BRTRU _B036 + !WORD _B036-* +_B037 +; toolsrc/ed.pla: 0294: if strlen == 0 +; toolsrc/ed.pla: 0295: return @nullstr + !BYTE $64,$02 ; LLB [2] + !BYTE $4E ; BRTRU _B040 + !WORD _B040-* + !BYTE $26 ; LA _D036+0 +_F018 !WORD _D036+0 + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 0296: fin +_B040 +_B041 +; toolsrc/ed.pla: 0297: newptr = strpoolalloc(strlen + 1) +; toolsrc/ed.pla: 0298: if newptr +; toolsrc/ed.pla: 0299: memcpy(newptr, strptr, strlen + 1) +; toolsrc/ed.pla: 0300: ^newptr = strlen +; toolsrc/ed.pla: 0301: return newptr + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C002 +_F019 !WORD _C002 + !BYTE $6E,$03 ; DLW [3] + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $66,$03 ; LLW [3] + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F020 !WORD 0 + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$03 ; LLW [3] + !BYTE $70 ; SB + !BYTE $66,$03 ; LLW [3] + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 0302: fin +_B042 +_B043 +; toolsrc/ed.pla: 0303: return @nullstr + !BYTE $26 ; LA _D036+0 +_F021 !WORD _D036+0 + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 0304: end +; toolsrc/ed.pla: 0305: def inittxtbuf#0 +_C008 ; inittxtbuf() +; toolsrc/ed.pla: 0306: word i + ; i -> [0] +; toolsrc/ed.pla: 0307: +; toolsrc/ed.pla: 0308: if not strpool + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/ed.pla: 0309: txtlinbuf = heapalloc(MAXLINESSIZE*2) +; toolsrc/ed.pla: 0310: cliplinbuf = heapalloc(MAXCLIPLINES*2) +; toolsrc/ed.pla: 0311: while isult(heapavail, strplsize) + !BYTE $6A ; LAW _D046+0 +_F022 !WORD _D046+0 + !BYTE $4E ; BRTRU _B044 + !WORD _B044-* + !BYTE $2C,$FE,$07 ; CW 2046 + !BYTE $54 ; CALL _X014 +_F023 !WORD 0 + !BYTE $7A ; SAW _D048+0 +_F024 !WORD _D048+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X014 +_F025 !WORD 0 + !BYTE $7A ; SAW _D049+0 +_F026 !WORD _D049+0 + !BYTE $50 ; BRNCH _B048 + !WORD _B048-* +_B046 +; toolsrc/ed.pla: 0312: strplsize = strplsize - 4096 +; toolsrc/ed.pla: 0313: loop + !BYTE $6A ; LAW _D045+0 +_F027 !WORD _D045+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D045+0 +_F028 !WORD _D045+0 +_B048 + !BYTE $54 ; CALL _X016 +_F029 !WORD 0 + !BYTE $6A ; LAW _D045+0 +_F030 !WORD _D045+0 + !BYTE $54 ; CALL _X026 +_F031 !WORD 0 + !BYTE $4E ; BRTRU _B046 + !WORD _B046-* +_B047 +; toolsrc/ed.pla: 0314: if isult(heapavail - strplsize, 4096) // Keep at least 4096 free +; toolsrc/ed.pla: 0315: strplsize = strplsize - 4096 +; toolsrc/ed.pla: 0316: fin + !BYTE $54 ; CALL _X016 +_F032 !WORD 0 + !BYTE $6A ; LAW _D045+0 +_F033 !WORD _D045+0 + !BYTE $84 ; SUB + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _X026 +_F034 !WORD 0 + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* + !BYTE $6A ; LAW _D045+0 +_F035 !WORD _D045+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D045+0 +_F036 !WORD _D045+0 +_B049 +_B050 +; toolsrc/ed.pla: 0317: strplmapsize = strplsize / 128 +; toolsrc/ed.pla: 0318: strpoolmap = heapalloc(strplmapsize) +; toolsrc/ed.pla: 0319: strpool = heapalloc(strplsize) +; toolsrc/ed.pla: 0320: memset(txtlinbuf, @nullstr, MAXLINESSIZE*2) +; toolsrc/ed.pla: 0321: memset(cliplinbuf, @nullstr, MAXCLIPLINES*2) +; toolsrc/ed.pla: 0322: memset(strpoolmap, 0, strplmapsize) +; toolsrc/ed.pla: 0323: else + !BYTE $6A ; LAW _D045+0 +_F037 !WORD _D045+0 + !BYTE $0E ; CN 7 + !BYTE $9C ; SHR + !BYTE $7E ; DAW _D047+0 +_F038 !WORD _D047+0 + !BYTE $54 ; CALL _X014 +_F039 !WORD 0 + !BYTE $7A ; SAW _D050+0 +_F040 !WORD _D050+0 + !BYTE $6A ; LAW _D045+0 +_F041 !WORD _D045+0 + !BYTE $54 ; CALL _X014 +_F042 !WORD 0 + !BYTE $7A ; SAW _D046+0 +_F043 !WORD _D046+0 + !BYTE $6A ; LAW _D048+0 +_F044 !WORD _D048+0 + !BYTE $26 ; LA _D036+0 +_F045 !WORD _D036+0 + !BYTE $2C,$FE,$07 ; CW 2046 + !BYTE $54 ; CALL _X017 +_F046 !WORD 0 + !BYTE $6A ; LAW _D049+0 +_F047 !WORD _D049+0 + !BYTE $26 ; LA _D036+0 +_F048 !WORD _D036+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X017 +_F049 !WORD 0 + !BYTE $6A ; LAW _D050+0 +_F050 !WORD _D050+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D047+0 +_F051 !WORD _D047+0 + !BYTE $54 ; CALL _X017 +_F052 !WORD 0 + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B044 +; toolsrc/ed.pla: 0324: for i = 0 to MAXLINESSIZE-1 + !BYTE $2C,$FE,$03 ; CW 1022 + !BYTE $00 ; CN 0 +_B052 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0325: if txtlinbuf=>[i] <> @nullstr +; toolsrc/ed.pla: 0326: delstr(txtlinbuf=>[i]) +; toolsrc/ed.pla: 0327: txtlinbuf=>[i] = @nullstr +; toolsrc/ed.pla: 0328: fin + !BYTE $6A ; LAW _D048+0 +_F053 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $26 ; LA _D036+0 +_F054 !WORD _D036+0 + !BYTE $22 ; BREQ _B054 + !WORD _B054-* + !BYTE $6A ; LAW _D048+0 +_F055 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F056 !WORD _C006 + !BYTE $26 ; LA _D036+0 +_F057 !WORD _D036+0 + !BYTE $6A ; LAW _D048+0 +_F058 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW +_B054 +_B055 +; toolsrc/ed.pla: 0329: next +_B053 + !BYTE $A4 ; INCBRLE _B052 + !WORD _B052-* +_B051 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0330: fin +_B045 +; toolsrc/ed.pla: 0331: numlines = 1 +; toolsrc/ed.pla: 0332: cursrow = 0 +; toolsrc/ed.pla: 0333: curscol = 0 +; toolsrc/ed.pla: 0334: cursx = 0 +; toolsrc/ed.pla: 0335: cursy = 0 +; toolsrc/ed.pla: 0336: scrnleft = 0 +; toolsrc/ed.pla: 0337: scrntop = 0 +; toolsrc/ed.pla: 0338: flags = flags & ~selection +; toolsrc/ed.pla: 0339: end + !BYTE $02 ; CN 1 + !BYTE $7A ; SAW _D042+0 +_F059 !WORD _D042+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D058+0 +_F060 !WORD _D058+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D054+0 +_F061 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D051+0 +_F062 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D052+0 +_F063 !WORD _D052+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D053+0 +_F064 !WORD _D053+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D060+0 +_F065 !WORD _D060+0 + !BYTE $68 ; LAB _D040+0 +_F066 !WORD _D040+0 + !BYTE $5E,$EF ; CFFB -17 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F067 !WORD _D040+0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0340: // +; toolsrc/ed.pla: 0341: // Case conversion/printing routines +; toolsrc/ed.pla: 0342: // +; toolsrc/ed.pla: 0343: def caseconv(chr) + ; chr -> [0] +_C009 ; caseconv() +; toolsrc/ed.pla: 0344: if flags & uppercase + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/ed.pla: 0345: if chr & $E0 == $E0 +; toolsrc/ed.pla: 0346: chr = chr - $E0 +; toolsrc/ed.pla: 0347: fin + !BYTE $68 ; LAB _D040+0 +_F068 !WORD _D040+0 + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$E0 ; ANDI 224 + !BYTE $2A,$E0 ; CB 224 + !BYTE $24 ; BRNE _B058 + !WORD _B058-* + !BYTE $66,$00 ; LLW [0] + !BYTE $3A,$E0 ; SUBI 224 + !BYTE $76,$00 ; SLW [0] +_B058 +_B059 +; toolsrc/ed.pla: 0348: fin +_B056 +_B057 +; toolsrc/ed.pla: 0349: return chr + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0350: end +; toolsrc/ed.pla: 0351: def strupper(strptr)#0 + ; strptr -> [0] +_C010 ; strupper() +; toolsrc/ed.pla: 0352: byte i, chr + ; i -> [2] + ; chr -> [3] +; toolsrc/ed.pla: 0353: +; toolsrc/ed.pla: 0354: if ^strptr + !BYTE $58,$04,$01 ; ENTER 4,1 +; toolsrc/ed.pla: 0355: for i = ^strptr downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $A2 ; BRLT _B062 + !WORD _B062-* +_B063 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/ed.pla: 0356: chr = (strptr).[i] +; toolsrc/ed.pla: 0357: if chr & $E0 == $E0 +; toolsrc/ed.pla: 0358: (strptr).[i] = chr - $E0 +; toolsrc/ed.pla: 0359: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $6C,$03 ; DLB [3] + !BYTE $3C,$E0 ; ANDI 224 + !BYTE $2A,$E0 ; CB 224 + !BYTE $24 ; BRNE _B065 + !WORD _B065-* + !BYTE $64,$03 ; LLB [3] + !BYTE $3A,$E0 ; SUBI 224 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB +_B065 +_B066 +; toolsrc/ed.pla: 0360: next +_B064 + !BYTE $A8 ; DECBRGE _B063 + !WORD _B063-* +_B062 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0361: fin +_B060 +_B061 +; toolsrc/ed.pla: 0362: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0363: def strlower(strptr)#0 + ; strptr -> [0] +_C011 ; strlower() +; toolsrc/ed.pla: 0364: byte i, chr + ; i -> [2] + ; chr -> [3] +; toolsrc/ed.pla: 0365: +; toolsrc/ed.pla: 0366: if ^strptr + !BYTE $58,$04,$01 ; ENTER 4,1 +; toolsrc/ed.pla: 0367: for i = ^strptr downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B067 + !WORD _B067-* + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $A2 ; BRLT _B069 + !WORD _B069-* +_B070 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/ed.pla: 0368: chr = (strptr).[i] +; toolsrc/ed.pla: 0369: if chr & $E0 == $00 +; toolsrc/ed.pla: 0370: (strptr).[i] = chr + $E0 +; toolsrc/ed.pla: 0371: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $6C,$03 ; DLB [3] + !BYTE $3C,$E0 ; ANDI 224 + !BYTE $4E ; BRTRU _B072 + !WORD _B072-* + !BYTE $64,$03 ; LLB [3] + !BYTE $38,$E0 ; ADDI 224 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB +_B072 +_B073 +; toolsrc/ed.pla: 0372: next +_B071 + !BYTE $A8 ; DECBRGE _B070 + !WORD _B070-* +_B069 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0373: fin +_B067 +_B068 +; toolsrc/ed.pla: 0374: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0375: def txtupper#0 +_C012 ; txtupper() +; toolsrc/ed.pla: 0376: word i, strptr + ; i -> [0] + ; strptr -> [2] +; toolsrc/ed.pla: 0377: +; toolsrc/ed.pla: 0378: flags = flags | uppercase + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 0379: for i = numlines - 1 downto 0 + !BYTE $68 ; LAB _D040+0 +_F069 !WORD _D040+0 + !BYTE $3E,$08 ; ORI 8 + !BYTE $78 ; SAB _D040+0 +_F070 !WORD _D040+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D042+0 +_F071 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B074 + !WORD _B074-* +_B075 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0380: strupper(txtlinbuf=>[i]) +; toolsrc/ed.pla: 0381: next + !BYTE $6A ; LAW _D048+0 +_F072 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C010 +_F073 !WORD _C010 +_B076 + !BYTE $A8 ; DECBRGE _B075 + !WORD _B075-* +_B074 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0382: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0383: def txtlower#0 +_C013 ; txtlower() +; toolsrc/ed.pla: 0384: word i, strptr + ; i -> [0] + ; strptr -> [2] +; toolsrc/ed.pla: 0385: +; toolsrc/ed.pla: 0386: flags = flags & ~uppercase + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 0387: for i = numlines - 1 downto 0 + !BYTE $68 ; LAB _D040+0 +_F074 !WORD _D040+0 + !BYTE $5E,$F7 ; CFFB -9 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F075 !WORD _D040+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D042+0 +_F076 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B077 + !WORD _B077-* +_B078 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0388: strlower(txtlinbuf=>[i]) +; toolsrc/ed.pla: 0389: next + !BYTE $6A ; LAW _D048+0 +_F077 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C011 +_F078 !WORD _C011 +_B079 + !BYTE $A8 ; DECBRGE _B078 + !WORD _B078-* +_B077 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0390: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0391: def strtonum(strptr) + ; strptr -> [0] +_C014 ; strtonum() +; toolsrc/ed.pla: 0392: word num, i + ; num -> [2] + ; i -> [4] +; toolsrc/ed.pla: 0393: byte c + ; c -> [6] +; toolsrc/ed.pla: 0394: +; toolsrc/ed.pla: 0395: num = 0 + !BYTE $58,$07,$01 ; ENTER 7,1 +; toolsrc/ed.pla: 0396: for i = 1 to ^strptr + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B080 + !WORD _B080-* +_B081 + !BYTE $6E,$04 ; DLW [4] +; toolsrc/ed.pla: 0397: c = ^(strptr + i) & $7F +; toolsrc/ed.pla: 0398: if c < '0' and c > '9' +; toolsrc/ed.pla: 0399: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $60 ; LB + !BYTE $3C,$7F ; ANDI 127 + !BYTE $6C,$06 ; DLB [6] + !BYTE $2A,$30 ; CB 48 + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B083 + !WORD _B083-* + !BYTE $64,$06 ; LLB [6] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT +_B083 + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +; toolsrc/ed.pla: 0400: fin +_B084 +_B085 +; toolsrc/ed.pla: 0401: num = num * 10 + c - '0' +; toolsrc/ed.pla: 0402: next + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $B0,$06 ; ADDLB [6] + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$02 ; SLW [2] +_B082 + !BYTE $A4 ; INCBRLE _B081 + !WORD _B081-* +_B080 + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0403: return num + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/ed.pla: 0404: end +; toolsrc/ed.pla: 0405: def nametostr(namestr, len, strptr)#0 + ; namestr -> [0] + ; len -> [2] + ; strptr -> [4] +_C015 ; nametostr() +; toolsrc/ed.pla: 0406: ^strptr = len + !BYTE $58,$06,$03 ; ENTER 6,3 +; toolsrc/ed.pla: 0407: memcpy(strptr + 1, namestr, len) +; toolsrc/ed.pla: 0408: end + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X018 +_F079 !WORD 0 + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/ed.pla: 0409: // +; toolsrc/ed.pla: 0410: // File routines +; toolsrc/ed.pla: 0411: // +; toolsrc/ed.pla: 0412: def readtxt(filename, startline)#0 + ; filename -> [0] + ; startline -> [2] +_C016 ; readtxt() +; toolsrc/ed.pla: 0413: byte refnum, i, j, txtbuf[MAXLNLEN+2] + ; refnum -> [4] + ; i -> [5] + ; j -> [6] + ; txtbuf -> [7] +; toolsrc/ed.pla: 0414: +; toolsrc/ed.pla: 0415: refnum = fileio:open(filename) + !BYTE $58,$58,$02 ; ENTER 88,2 +; toolsrc/ed.pla: 0416: if refnum +; toolsrc/ed.pla: 0417: fileio:newline(refnum, $7F, $0D) +; toolsrc/ed.pla: 0418: numlines = startline +; toolsrc/ed.pla: 0419: repeat + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X031+14 +_F080 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$04 ; DLB [4] + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $64,$04 ; LLB [4] + !BYTE $2A,$7F ; CB 127 + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _X031+28 +_F081 !WORD 0+28 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D042+0 +_F082 !WORD _D042+0 +_B089 +; toolsrc/ed.pla: 0420: txtbuf = fileio:read(refnum, @txtbuf + 1, MAXLNLEN) +; toolsrc/ed.pla: 0421: if txtbuf +; toolsrc/ed.pla: 0422: sethibit(@txtbuf) +; toolsrc/ed.pla: 0423: if flags & uppercase; strupper(@txtbuf); fin + !BYTE $64,$04 ; LLB [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $2A,$4F ; CB 79 + !BYTE $6A ; LAW _X031+18 +_F083 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6C,$07 ; DLB [7] + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $28,$07 ; LLA [7] + !BYTE $54 ; CALL _A001 +_F084 !WORD _A001 + !BYTE $68 ; LAB _D040+0 +_F085 !WORD _D040+0 + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B093 + !WORD _B093-* + !BYTE $28,$07 ; LLA [7] + !BYTE $54 ; CALL _C010 +_F086 !WORD _C010 +_B093 +_B094 +; toolsrc/ed.pla: 0424: txtlinbuf=>[numlines] = newstr(@txtbuf) +; toolsrc/ed.pla: 0425: numlines++ + !BYTE $28,$07 ; LLA [7] + !BYTE $54 ; CALL _C007 +_F087 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F088 !WORD _D048+0 + !BYTE $BE ; IDXAW _D042+0 +_F089 !WORD _D042+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D042+0 +_F090 !WORD _D042+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0426: fin + !BYTE $7A ; SAW _D042+0 +_F091 !WORD _D042+0 +_B091 +_B092 +; toolsrc/ed.pla: 0427: if !(numlines & $0F); putc('.'); fin + !BYTE $6A ; LAW _D042+0 +_F092 !WORD _D042+0 + !BYTE $3C,$0F ; ANDI 15 + !BYTE $4E ; BRTRU _B095 + !WORD _B095-* + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F093 !WORD 0 +_B095 +_B096 +; toolsrc/ed.pla: 0428: until txtbuf == 0 or numlines == MAXLINES +_B090 + !BYTE $64,$07 ; LLB [7] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B097 + !WORD _B097-* + !BYTE $6A ; LAW _D042+0 +_F094 !WORD _D042+0 + !BYTE $2C,$E7,$03 ; CW 999 + !BYTE $40 ; ISEQ +_B097 + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* +_B088 +; toolsrc/ed.pla: 0429: fileio:close(refnum) +; toolsrc/ed.pla: 0430: // +; toolsrc/ed.pla: 0431: // Make sure there is a blank line at the end of the buffer +; toolsrc/ed.pla: 0432: // +; toolsrc/ed.pla: 0433: if numlines < MAXLINES and txtlinbuf=>[numlines - 1] <> @nullstr +; toolsrc/ed.pla: 0434: txtlinbuf=>[numlines] = @nullstr +; toolsrc/ed.pla: 0435: numlines++ + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X031+16 +_F095 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D042+0 +_F096 !WORD _D042+0 + !BYTE $2C,$E7,$03 ; CW 999 + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B098 + !WORD _B098-* + !BYTE $6A ; LAW _D048+0 +_F097 !WORD _D048+0 + !BYTE $6A ; LAW _D042+0 +_F098 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $26 ; LA _D036+0 +_F099 !WORD _D036+0 + !BYTE $42 ; ISNE +_B098 + !BYTE $4C ; BRFLS _B099 + !WORD _B099-* + !BYTE $26 ; LA _D036+0 +_F100 !WORD _D036+0 + !BYTE $6A ; LAW _D048+0 +_F101 !WORD _D048+0 + !BYTE $BE ; IDXAW _D042+0 +_F102 !WORD _D042+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D042+0 +_F103 !WORD _D042+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0436: fin + !BYTE $7A ; SAW _D042+0 +_F104 !WORD _D042+0 +_B099 +_B100 +; toolsrc/ed.pla: 0437: fin +_B086 +_B087 +; toolsrc/ed.pla: 0438: putln +; toolsrc/ed.pla: 0439: end + !BYTE $54 ; CALL _X003 +_F105 !WORD 0 + !BYTE $5A,$58 ; LEAVE 88 +; toolsrc/ed.pla: 0440: def writetxt(filename)#0 + ; filename -> [0] +_C017 ; writetxt() +; toolsrc/ed.pla: 0441: word i + ; i -> [2] +; toolsrc/ed.pla: 0442: byte refnum, txtbuf[MAXLNLEN+2] + ; refnum -> [4] + ; txtbuf -> [5] +; toolsrc/ed.pla: 0443: +; toolsrc/ed.pla: 0444: // +; toolsrc/ed.pla: 0445: // Remove blank lines at end of text. +; toolsrc/ed.pla: 0446: // +; toolsrc/ed.pla: 0447: while numlines > 1 and txtlinbuf=>[numlines - 1] == @nullstr; numlines--; loop + !BYTE $58,$56,$01 ; ENTER 86,1 + !BYTE $50 ; BRNCH _B103 + !WORD _B103-* +_B101 + !BYTE $6A ; LAW _D042+0 +_F106 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D042+0 +_F107 !WORD _D042+0 +_B103 + !BYTE $6A ; LAW _D042+0 +_F108 !WORD _D042+0 + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B104 + !WORD _B104-* + !BYTE $6A ; LAW _D048+0 +_F109 !WORD _D048+0 + !BYTE $6A ; LAW _D042+0 +_F110 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $26 ; LA _D036+0 +_F111 !WORD _D036+0 + !BYTE $40 ; ISEQ +_B104 + !BYTE $4E ; BRTRU _B101 + !WORD _B101-* +_B102 +; toolsrc/ed.pla: 0448: // +; toolsrc/ed.pla: 0449: // Delete old file and re-create +; toolsrc/ed.pla: 0450: // +; toolsrc/ed.pla: 0451: fileio:destroy(filename) +; toolsrc/ed.pla: 0452: fileio:create(filename, $04, $00) // full access, TXT file +; toolsrc/ed.pla: 0453: refnum = fileio:open(filename) +; toolsrc/ed.pla: 0454: if refnum == 0 +; toolsrc/ed.pla: 0455: puts("\nError $"); puth(perr); puts(" opening: "); puts(filename); putln + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X031+24 +_F112 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+22 +_F113 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X031+14 +_F114 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6C,$04 ; DLB [4] + !BYTE $4E ; BRTRU _B105 + !WORD _B105-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$24 + !BYTE $54 ; CALL _X004 +_F115 !WORD 0 + !BYTE $68 ; LAB _X032+0 +_F116 !WORD 0+0 + !BYTE $54 ; CALL _X009 +_F117 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$6F,$70,$65,$6E,$69,$6E,$67 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F118 !WORD 0 +; toolsrc/ed.pla: 0456: return + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F119 !WORD 0 + !BYTE $54 ; CALL _X003 +_F120 !WORD 0 + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 0457: fin +_B105 +_B106 +; toolsrc/ed.pla: 0458: // +; toolsrc/ed.pla: 0459: // Write all the text lines to the file. +; toolsrc/ed.pla: 0460: // +; toolsrc/ed.pla: 0461: for i = 0 to numlines - 1 + !BYTE $6A ; LAW _D042+0 +_F121 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B107 + !WORD _B107-* +_B108 + !BYTE $6E,$02 ; DLW [2] +; toolsrc/ed.pla: 0462: lncpy(@txtbuf, txtlinbuf=>[i]) +; toolsrc/ed.pla: 0463: if fileio:write(refnum, @txtbuf + 1, txtbuf) <> txtbuf +; toolsrc/ed.pla: 0464: puts("\nError $"); puth(perr); puts(" writing: "); puts(filename); putln + !BYTE $28,$05 ; LLA [5] + !BYTE $6A ; LAW _D048+0 +_F122 !WORD _D048+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _A002 +_F123 !WORD _A002 + !BYTE $64,$04 ; LLB [4] + !BYTE $28,$06 ; LLA [6] + !BYTE $64,$05 ; LLB [5] + !BYTE $6A ; LAW _X031+20 +_F124 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $64,$05 ; LLB [5] + !BYTE $22 ; BREQ _B110 + !WORD _B110-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$24 + !BYTE $54 ; CALL _X004 +_F125 !WORD 0 + !BYTE $68 ; LAB _X032+0 +_F126 !WORD 0+0 + !BYTE $54 ; CALL _X009 +_F127 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$77,$72,$69,$74,$69,$6E,$67 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F128 !WORD 0 +; toolsrc/ed.pla: 0465: fileio:close(refnum) +; toolsrc/ed.pla: 0466: return + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F129 !WORD 0 + !BYTE $54 ; CALL _X003 +_F130 !WORD 0 + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X031+16 +_F131 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 0467: fin +_B110 +_B111 +; toolsrc/ed.pla: 0468: if !(i & $0F); putc('.'); fin + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $4E ; BRTRU _B112 + !WORD _B112-* + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F132 !WORD 0 +_B112 +_B113 +; toolsrc/ed.pla: 0469: next +_B109 + !BYTE $A4 ; INCBRLE _B108 + !WORD _B108-* +_B107 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0470: if fileio:close(refnum) <> FILE_ERR_OK +; toolsrc/ed.pla: 0471: puts("\nError $"); puth(perr); puts(" closing: "); puts(filename) + !BYTE $64,$04 ; LLB [4] + !BYTE $6A ; LAW _X031+16 +_F133 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$24 + !BYTE $54 ; CALL _X004 +_F134 !WORD 0 + !BYTE $68 ; LAB _X032+0 +_F135 !WORD 0+0 + !BYTE $54 ; CALL _X009 +_F136 !WORD 0 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $20,$63,$6C,$6F,$73,$69,$6E,$67 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F137 !WORD 0 +; toolsrc/ed.pla: 0472: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F138 !WORD 0 +_B114 +_B115 +; toolsrc/ed.pla: 0473: putln +; toolsrc/ed.pla: 0474: end + !BYTE $54 ; CALL _X003 +_F139 !WORD 0 + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 0475: // +; toolsrc/ed.pla: 0476: // Screen routines +; toolsrc/ed.pla: 0477: // +; toolsrc/ed.pla: 0478: def clrscrn#0 +_C018 ; clrscrn() +; toolsrc/ed.pla: 0479: if MACHID == $F2 // Apple 3 +; toolsrc/ed.pla: 0480: putc(28) +; toolsrc/ed.pla: 0481: else + !BYTE $68 ; LAB _X001+0 +_F140 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $24 ; BRNE _B116 + !WORD _B116-* + !BYTE $2A,$1C ; CB 28 + !BYTE $54 ; CALL _X002 +_F141 !WORD 0 + !BYTE $50 ; BRNCH _B117 + !WORD _B117-* +_B116 +; toolsrc/ed.pla: 0482: call($FC58, 0, 0, 0, 0) +; toolsrc/ed.pla: 0483: fin + !BYTE $2C,$58,$FC ; CW 64600 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F142 !WORD 0 + !BYTE $30 ; DROP +_B117 +; toolsrc/ed.pla: 0484: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0485: def drawrow(row, ofst, strptr)#0 + ; row -> [0] + ; ofst -> [2] + ; strptr -> [4] +_C019 ; drawrow() +; toolsrc/ed.pla: 0486: byte numchars + ; numchars -> [6] +; toolsrc/ed.pla: 0487: word scrnptr + ; scrnptr -> [7] +; toolsrc/ed.pla: 0488: +; toolsrc/ed.pla: 0489: scrnptr = txtscrn[row] + (flags & gutter) + !BYTE $58,$09,$03 ; ENTER 9,3 +; toolsrc/ed.pla: 0490: if ofst >= ^strptr +; toolsrc/ed.pla: 0491: numchars = 0 +; toolsrc/ed.pla: 0492: else + !BYTE $26 ; LA _D035+0 +_F143 !WORD _D035+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $68 ; LAB _D040+0 +_F144 !WORD _D040+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $82 ; ADD + !BYTE $76,$07 ; SLW [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B118 + !WORD _B118-* + !BYTE $00 ; CN 0 + !BYTE $74,$06 ; SLB [6] + !BYTE $50 ; BRNCH _B119 + !WORD _B119-* +_B118 +; toolsrc/ed.pla: 0493: numchars = ^strptr - ofst +; toolsrc/ed.pla: 0494: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $74,$06 ; SLB [6] +_B119 +; toolsrc/ed.pla: 0495: if numchars >= scrnwidth +; toolsrc/ed.pla: 0496: numchars = scrnwidth +; toolsrc/ed.pla: 0497: else + !BYTE $64,$06 ; LLB [6] + !BYTE $6A ; LAW _D033+0 +_F145 !WORD _D033+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B120 + !WORD _B120-* + !BYTE $6A ; LAW _D033+0 +_F146 !WORD _D033+0 + !BYTE $74,$06 ; SLB [6] + !BYTE $50 ; BRNCH _B121 + !WORD _B121-* +_B120 +; toolsrc/ed.pla: 0498: memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) +; toolsrc/ed.pla: 0499: fin + !BYTE $66,$07 ; LLW [7] + !BYTE $B0,$06 ; ADDLB [6] + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $6A ; LAW _D033+0 +_F147 !WORD _D033+0 + !BYTE $64,$06 ; LLB [6] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X017 +_F148 !WORD 0 +_B121 +; toolsrc/ed.pla: 0500: memcpy(scrnptr, strptr + ofst + 1, numchars) +; toolsrc/ed.pla: 0501: end + !BYTE $66,$07 ; LLW [7] + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $8C ; INCR + !BYTE $64,$06 ; LLB [6] + !BYTE $54 ; CALL _X018 +_F149 !WORD 0 + !BYTE $5A,$09 ; LEAVE 9 +; toolsrc/ed.pla: 0502: def drawgutter(scrnrow, ofst)#0 + ; scrnrow -> [0] + ; ofst -> [2] +_C020 ; drawgutter() +; toolsrc/ed.pla: 0503: byte row, hilite, ofstch, huns, tens, ones + ; row -> [4] + ; hilite -> [5] + ; ofstch -> [6] + ; huns -> [7] + ; tens -> [8] + ; ones -> [9] +; toolsrc/ed.pla: 0504: word scrnptr, scrnrow + ; scrnptr -> [10] + ; scrnrow -> [12] +; toolsrc/ed.pla: 0505: +; toolsrc/ed.pla: 0506: // +; toolsrc/ed.pla: 0507: // Draw line numbers and gutter hilites +; toolsrc/ed.pla: 0508: // +; toolsrc/ed.pla: 0509: //ofstch = ofst ?? $80 | '<' :: keyspace +; toolsrc/ed.pla: 0510: ofstch = ofst ?? '<' :: ' ' + !BYTE $58,$0E,$02 ; ENTER 14,2 +; toolsrc/ed.pla: 0511: huns, tens = divmod(scrnrow + 1, 100) +; toolsrc/ed.pla: 0512: tens, ones = divmod(tens, 10) +; toolsrc/ed.pla: 0513: for row = 0 to 23 + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B122 + !WORD _B122-* + !BYTE $2A,$3C ; CB 60 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +_B122 + !BYTE $2A,$20 ; CB 32 +_B123 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $2A,$64 ; CB 100 + !BYTE $54 ; CALL _X023 +_F150 !WORD 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $74,$07 ; SLB [7] + !BYTE $64,$08 ; LLB [8] + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _X023 +_F151 !WORD 0 + !BYTE $74,$09 ; SLB [9] + !BYTE $74,$08 ; SLB [8] + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B125 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0514: scrnptr = txtscrn[row] +; toolsrc/ed.pla: 0515: if scrnrow < numlines +; toolsrc/ed.pla: 0516: if flags & selection and (scrnrow >= selrow and scrnrow <= cursrow) or (scrnrow >= cursrow and scrnrow <= selrow) +; toolsrc/ed.pla: 0517: hilite = $00 +; toolsrc/ed.pla: 0518: elsif scrnrow == cursrow + !BYTE $26 ; LA _D035+0 +_F152 !WORD _D035+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D042+0 +_F153 !WORD _D042+0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B127 + !WORD _B127-* + !BYTE $68 ; LAB _D040+0 +_F154 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $AC ; BRAND _B129 + !WORD _B129-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D059+0 +_F155 !WORD _D059+0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B130 + !WORD _B130-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D058+0 +_F156 !WORD _D058+0 + !BYTE $4A ; ISLE +_B130 + !BYTE $AE ; BROR _B131 + !WORD _B131-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D058+0 +_F157 !WORD _D058+0 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B132 + !WORD _B132-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D059+0 +_F158 !WORD _D059+0 + !BYTE $4A ; ISLE +_B132 +_B131 +_B129 + !BYTE $4C ; BRFLS _B133 + !WORD _B133-* + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B134 + !WORD _B134-* +_B133 +; toolsrc/ed.pla: 0519: hilite = $00 +; toolsrc/ed.pla: 0520: else + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D058+0 +_F159 !WORD _D058+0 + !BYTE $24 ; BRNE _B135 + !WORD _B135-* + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B134 + !WORD _B134-* +_B135 +; toolsrc/ed.pla: 0521: hilite = $80 +; toolsrc/ed.pla: 0522: fin + !BYTE $2A,$80 ; CB 128 + !BYTE $74,$05 ; SLB [5] +_B134 +; toolsrc/ed.pla: 0523: if huns +; toolsrc/ed.pla: 0524: ^scrnptr = hilite + '0' + huns +; toolsrc/ed.pla: 0525: ^(scrnptr+1) = hilite + '0' + tens +; toolsrc/ed.pla: 0526: ^(scrnptr+2) = hilite + '0' + ones +; toolsrc/ed.pla: 0527: ones++ + !BYTE $64,$07 ; LLB [7] + !BYTE $4C ; BRFLS _B136 + !WORD _B136-* + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$07 ; ADDLB [7] + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $64,$09 ; LLB [9] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0528: if ones > 9 +; toolsrc/ed.pla: 0529: ones = 0 +; toolsrc/ed.pla: 0530: tens++ + !BYTE $6C,$09 ; DLB [9] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B138 + !WORD _B138-* + !BYTE $00 ; CN 0 + !BYTE $74,$09 ; SLB [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0531: if tens > 9 +; toolsrc/ed.pla: 0532: tens = 0 +; toolsrc/ed.pla: 0533: huns++ + !BYTE $6C,$08 ; DLB [8] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B140 + !WORD _B140-* + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $64,$07 ; LLB [7] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0534: fin + !BYTE $74,$07 ; SLB [7] +_B140 +_B141 +; toolsrc/ed.pla: 0535: fin +_B138 +_B139 +; toolsrc/ed.pla: 0536: elsif tens + !BYTE $50 ; BRNCH _B137 + !WORD _B137-* +_B136 +; toolsrc/ed.pla: 0537: ^scrnptr = hilite + ' ' +; toolsrc/ed.pla: 0538: ^(scrnptr+1) = hilite + '0' + tens +; toolsrc/ed.pla: 0539: ^(scrnptr+2) = hilite + '0' + ones +; toolsrc/ed.pla: 0540: ones++ + !BYTE $64,$08 ; LLB [8] + !BYTE $4C ; BRFLS _B142 + !WORD _B142-* + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$20 ; ADDI 32 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $64,$09 ; LLB [9] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0541: if ones > 9 +; toolsrc/ed.pla: 0542: ones = 0 +; toolsrc/ed.pla: 0543: tens++ + !BYTE $6C,$09 ; DLB [9] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B143 + !WORD _B143-* + !BYTE $00 ; CN 0 + !BYTE $74,$09 ; SLB [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0544: if tens > 9 +; toolsrc/ed.pla: 0545: tens = 0 +; toolsrc/ed.pla: 0546: huns = 1 +; toolsrc/ed.pla: 0547: fin + !BYTE $6C,$08 ; DLB [8] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B145 + !WORD _B145-* + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $02 ; CN 1 + !BYTE $74,$07 ; SLB [7] +_B145 +_B146 +; toolsrc/ed.pla: 0548: fin +_B143 +_B144 +; toolsrc/ed.pla: 0549: elsif ones + !BYTE $50 ; BRNCH _B137 + !WORD _B137-* +_B142 +; toolsrc/ed.pla: 0550: ^scrnptr = hilite + ' ' +; toolsrc/ed.pla: 0551: ^(scrnptr+1) = hilite + ' ' +; toolsrc/ed.pla: 0552: ^(scrnptr+2) = hilite + '0' + ones +; toolsrc/ed.pla: 0553: ones++ + !BYTE $64,$09 ; LLB [9] + !BYTE $4C ; BRFLS _B147 + !WORD _B147-* + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$20 ; ADDI 32 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$20 ; ADDI 32 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $64,$05 ; LLB [5] + !BYTE $38,$30 ; ADDI 48 + !BYTE $B0,$09 ; ADDLB [9] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $64,$09 ; LLB [9] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0554: if ones > 9 +; toolsrc/ed.pla: 0555: ones = 0 +; toolsrc/ed.pla: 0556: tens = 1 +; toolsrc/ed.pla: 0557: fin + !BYTE $6C,$09 ; DLB [9] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B148 + !WORD _B148-* + !BYTE $00 ; CN 0 + !BYTE $74,$09 ; SLB [9] + !BYTE $02 ; CN 1 + !BYTE $74,$08 ; SLB [8] +_B148 +_B149 +; toolsrc/ed.pla: 0558: fin +_B147 +_B137 +; toolsrc/ed.pla: 0559: ^(scrnptr+3) = ofstch +; toolsrc/ed.pla: 0560: else + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B128 + !WORD _B128-* +_B127 +; toolsrc/ed.pla: 0561: *scrnptr = $A0A0 +; toolsrc/ed.pla: 0562: *(scrnptr+2) = $A0A0 +; toolsrc/ed.pla: 0563: fin + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $66,$0A ; LLW [10] + !BYTE $72 ; SW + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B128 +; toolsrc/ed.pla: 0564: scrnrow++ + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0565: next + !BYTE $76,$00 ; SLW [0] +_B126 + !BYTE $A4 ; INCBRLE _B125 + !WORD _B125-* +_B124 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0566: end + !BYTE $5A,$0E ; LEAVE 14 +; toolsrc/ed.pla: 0567: def drawscrn(toprow, ofst)#0 + ; toprow -> [0] + ; ofst -> [2] +_C021 ; drawscrn() +; toolsrc/ed.pla: 0568: byte row, numchars, lofst + ; row -> [4] + ; numchars -> [5] + ; lofst -> [6] +; toolsrc/ed.pla: 0569: word strptr, scrnptr + ; strptr -> [7] + ; scrnptr -> [9] +; toolsrc/ed.pla: 0570: +; toolsrc/ed.pla: 0571: lofst = flags & gutter + !BYTE $58,$0B,$02 ; ENTER 11,2 +; toolsrc/ed.pla: 0572: if lofst +; toolsrc/ed.pla: 0573: drawgutter(toprow, ofst) +; toolsrc/ed.pla: 0574: fin + !BYTE $68 ; LAB _D040+0 +_F160 !WORD _D040+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $6C,$06 ; DLB [6] + !BYTE $4C ; BRFLS _B150 + !WORD _B150-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C020 +_F161 !WORD _C020 +_B150 +_B151 +; toolsrc/ed.pla: 0575: // +; toolsrc/ed.pla: 0576: // Draw text +; toolsrc/ed.pla: 0577: // +; toolsrc/ed.pla: 0578: if ofst +; toolsrc/ed.pla: 0579: for row = 0 to 23 + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B152 + !WORD _B152-* + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B155 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0580: strptr = txtlinbuf=>[toprow + row] +; toolsrc/ed.pla: 0581: scrnptr = txtscrn[row] + lofst +; toolsrc/ed.pla: 0582: if ofst >= ^strptr +; toolsrc/ed.pla: 0583: numchars = 0 +; toolsrc/ed.pla: 0584: else + !BYTE $6A ; LAW _D048+0 +_F162 !WORD _D048+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $76,$07 ; SLW [7] + !BYTE $26 ; LA _D035+0 +_F163 !WORD _D035+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $B0,$06 ; ADDLB [6] + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$07 ; LLW [7] + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B157 + !WORD _B157-* + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +_B157 +; toolsrc/ed.pla: 0585: numchars = ^strptr - ofst +; toolsrc/ed.pla: 0586: fin + !BYTE $66,$07 ; LLW [7] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $74,$05 ; SLB [5] +_B158 +; toolsrc/ed.pla: 0587: if numchars >= scrnwidth +; toolsrc/ed.pla: 0588: numchars = scrnwidth +; toolsrc/ed.pla: 0589: else + !BYTE $64,$05 ; LLB [5] + !BYTE $6A ; LAW _D033+0 +_F164 !WORD _D033+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B159 + !WORD _B159-* + !BYTE $6A ; LAW _D033+0 +_F165 !WORD _D033+0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B160 + !WORD _B160-* +_B159 +; toolsrc/ed.pla: 0590: memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) +; toolsrc/ed.pla: 0591: fin + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $6A ; LAW _D033+0 +_F166 !WORD _D033+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X017 +_F167 !WORD 0 +_B160 +; toolsrc/ed.pla: 0592: memcpy(scrnptr, strptr + ofst + 1, numchars) +; toolsrc/ed.pla: 0593: next + !BYTE $66,$09 ; LLW [9] + !BYTE $66,$07 ; LLW [7] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $8C ; INCR + !BYTE $64,$05 ; LLB [5] + !BYTE $54 ; CALL _X018 +_F168 !WORD 0 +_B156 + !BYTE $A4 ; INCBRLE _B155 + !WORD _B155-* +_B154 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0594: else + !BYTE $50 ; BRNCH _B153 + !WORD _B153-* +_B152 +; toolsrc/ed.pla: 0595: for row = 0 to 23 + !BYTE $2A,$17 ; CB 23 + !BYTE $00 ; CN 0 +_B162 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0596: strptr = txtlinbuf=>[toprow + row] +; toolsrc/ed.pla: 0597: scrnptr = txtscrn[row] + lofst +; toolsrc/ed.pla: 0598: numchars = ^strptr +; toolsrc/ed.pla: 0599: if numchars >= scrnwidth +; toolsrc/ed.pla: 0600: numchars = scrnwidth +; toolsrc/ed.pla: 0601: else + !BYTE $6A ; LAW _D048+0 +_F169 !WORD _D048+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $76,$07 ; SLW [7] + !BYTE $26 ; LA _D035+0 +_F170 !WORD _D035+0 + !BYTE $B8,$04 ; IDXLB [4] + !BYTE $62 ; LW + !BYTE $B0,$06 ; ADDLB [6] + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$07 ; LLW [7] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $6A ; LAW _D033+0 +_F171 !WORD _D033+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B164 + !WORD _B164-* + !BYTE $6A ; LAW _D033+0 +_F172 !WORD _D033+0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B165 + !WORD _B165-* +_B164 +; toolsrc/ed.pla: 0602: memset(scrnptr + numchars, $A0A0, scrnwidth - numchars) +; toolsrc/ed.pla: 0603: fin + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $6A ; LAW _D033+0 +_F173 !WORD _D033+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X017 +_F174 !WORD 0 +_B165 +; toolsrc/ed.pla: 0604: memcpy(scrnptr, strptr + 1, numchars) +; toolsrc/ed.pla: 0605: next + !BYTE $66,$09 ; LLW [9] + !BYTE $66,$07 ; LLW [7] + !BYTE $8C ; INCR + !BYTE $64,$05 ; LLB [5] + !BYTE $54 ; CALL _X018 +_F175 !WORD 0 +_B163 + !BYTE $A4 ; INCBRLE _B162 + !WORD _B162-* +_B161 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0606: fin +_B153 +; toolsrc/ed.pla: 0607: end + !BYTE $5A,$0B ; LEAVE 11 +; toolsrc/ed.pla: 0608: def cursoff#0 +_C022 ; cursoff() +; toolsrc/ed.pla: 0609: word scrnptr + ; scrnptr -> [0] +; toolsrc/ed.pla: 0610: +; toolsrc/ed.pla: 0611: if flags & showcurs + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/ed.pla: 0612: ^cursptr = underchr +; toolsrc/ed.pla: 0613: if flags & gutter +; toolsrc/ed.pla: 0614: scrnptr = txtscrn[cursy] +; toolsrc/ed.pla: 0615: *scrnptr = *scrnptr | $8080 +; toolsrc/ed.pla: 0616: ^(scrnptr+2) = ^(scrnptr+2) | $80 +; toolsrc/ed.pla: 0617: fin + !BYTE $68 ; LAB _D040+0 +_F176 !WORD _D040+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B166 + !WORD _B166-* + !BYTE $68 ; LAB _D055+0 +_F177 !WORD _D055+0 + !BYTE $6A ; LAW _D061+0 +_F178 !WORD _D061+0 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D040+0 +_F179 !WORD _D040+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B168 + !WORD _B168-* + !BYTE $26 ; LA _D035+0 +_F180 !WORD _D035+0 + !BYTE $BE ; IDXAW _D052+0 +_F181 !WORD _D052+0 + !BYTE $62 ; LW + !BYTE $6E,$00 ; DLW [0] + !BYTE $62 ; LW + !BYTE $2C,$80,$80 ; CW 32896 + !BYTE $96 ; OR + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3E,$80 ; ORI 128 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB +_B168 +_B169 +; toolsrc/ed.pla: 0618: flags = flags & ~showcurs +; toolsrc/ed.pla: 0619: +; toolsrc/ed.pla: 0620: fin + !BYTE $68 ; LAB _D040+0 +_F182 !WORD _D040+0 + !BYTE $5E,$DF ; CFFB -33 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F183 !WORD _D040+0 +_B166 +_B167 +; toolsrc/ed.pla: 0621: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0622: def curson#0 +_C023 ; curson() +; toolsrc/ed.pla: 0623: byte lofst + ; lofst -> [0] +; toolsrc/ed.pla: 0624: word scrnptr + ; scrnptr -> [1] +; toolsrc/ed.pla: 0625: +; toolsrc/ed.pla: 0626: if !(flags & showcurs) + !BYTE $58,$03,$00 ; ENTER 3,0 +; toolsrc/ed.pla: 0627: lofst = flags & gutter +; toolsrc/ed.pla: 0628: if lofst +; toolsrc/ed.pla: 0629: scrnptr = txtscrn[cursy] +; toolsrc/ed.pla: 0630: *scrnptr = *scrnptr & $7F7F +; toolsrc/ed.pla: 0631: ^(scrnptr+2) = ^(scrnptr+2) & $7F +; toolsrc/ed.pla: 0632: fin + !BYTE $68 ; LAB _D040+0 +_F184 !WORD _D040+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4E ; BRTRU _B170 + !WORD _B170-* + !BYTE $68 ; LAB _D040+0 +_F185 !WORD _D040+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $6C,$00 ; DLB [0] + !BYTE $4C ; BRFLS _B172 + !WORD _B172-* + !BYTE $26 ; LA _D035+0 +_F186 !WORD _D035+0 + !BYTE $BE ; IDXAW _D052+0 +_F187 !WORD _D052+0 + !BYTE $62 ; LW + !BYTE $6E,$01 ; DLW [1] + !BYTE $62 ; LW + !BYTE $2C,$7F,$7F ; CW 32639 + !BYTE $94 ; AND + !BYTE $66,$01 ; LLW [1] + !BYTE $72 ; SW + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$7F ; ANDI 127 + !BYTE $66,$01 ; LLW [1] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB +_B172 +_B173 +; toolsrc/ed.pla: 0633: cursptr = txtscrn[cursy] + lofst + cursx +; toolsrc/ed.pla: 0634: underchr = ^cursptr +; toolsrc/ed.pla: 0635: ^cursptr = curschr +; toolsrc/ed.pla: 0636: flags = flags | showcurs +; toolsrc/ed.pla: 0637: fin + !BYTE $26 ; LA _D035+0 +_F188 !WORD _D035+0 + !BYTE $BE ; IDXAW _D052+0 +_F189 !WORD _D052+0 + !BYTE $62 ; LW + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $B6 ; ADDAW _D051+0 +_F190 !WORD _D051+0 + !BYTE $7A ; SAW _D061+0 +_F191 !WORD _D061+0 + !BYTE $6A ; LAW _D061+0 +_F192 !WORD _D061+0 + !BYTE $60 ; LB + !BYTE $78 ; SAB _D055+0 +_F193 !WORD _D055+0 + !BYTE $68 ; LAB _D056+0 +_F194 !WORD _D056+0 + !BYTE $6A ; LAW _D061+0 +_F195 !WORD _D061+0 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D040+0 +_F196 !WORD _D040+0 + !BYTE $3E,$20 ; ORI 32 + !BYTE $78 ; SAB _D040+0 +_F197 !WORD _D040+0 +_B170 +_B171 +; toolsrc/ed.pla: 0638: end + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/ed.pla: 0639: def cursflash#0 +_C024 ; cursflash() +; toolsrc/ed.pla: 0640: if flags & showcurs +; toolsrc/ed.pla: 0641: if flash == 0 +; toolsrc/ed.pla: 0642: ^cursptr = curschr +; toolsrc/ed.pla: 0643: elsif flash == 128 + !BYTE $68 ; LAB _D040+0 +_F198 !WORD _D040+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B174 + !WORD _B174-* + !BYTE $68 ; LAB _D041+0 +_F199 !WORD _D041+0 + !BYTE $4E ; BRTRU _B176 + !WORD _B176-* + !BYTE $68 ; LAB _D056+0 +_F200 !WORD _D056+0 + !BYTE $6A ; LAW _D061+0 +_F201 !WORD _D061+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B177 + !WORD _B177-* +_B176 +; toolsrc/ed.pla: 0644: ^cursptr = underchr +; toolsrc/ed.pla: 0645: fin + !BYTE $68 ; LAB _D041+0 +_F202 !WORD _D041+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $24 ; BRNE _B178 + !WORD _B178-* + !BYTE $68 ; LAB _D055+0 +_F203 !WORD _D055+0 + !BYTE $6A ; LAW _D061+0 +_F204 !WORD _D061+0 + !BYTE $70 ; SB +_B178 +_B177 +; toolsrc/ed.pla: 0646: flash++ + !BYTE $68 ; LAB _D041+0 +_F205 !WORD _D041+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0647: fin + !BYTE $78 ; SAB _D041+0 +_F206 !WORD _D041+0 +_B174 +_B175 +; toolsrc/ed.pla: 0648: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0649: def redraw#0 +_C025 ; redraw() +; toolsrc/ed.pla: 0650: cursoff +; toolsrc/ed.pla: 0651: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0652: curson +; toolsrc/ed.pla: 0653: end + !BYTE $54 ; CALL _C022 +_F207 !WORD _C022 + !BYTE $6A ; LAW _D060+0 +_F208 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F209 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F210 !WORD _C021 + !BYTE $54 ; CALL _C023 +_F211 !WORD _C023 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0654: def curshpos(hpos)#1 + ; hpos -> [0] +_C026 ; curshpos() +; toolsrc/ed.pla: 0655: byte needredraw + ; needredraw -> [2] +; toolsrc/ed.pla: 0656: +; toolsrc/ed.pla: 0657: needredraw = TRUE + !BYTE $58,$03,$01 ; ENTER 3,1 +; toolsrc/ed.pla: 0658: if hpos < 0; hpos = 0; fin + !BYTE $20 ; MINUS ONE + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B179 + !WORD _B179-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B179 +_B180 +; toolsrc/ed.pla: 0659: if hpos > MAXLNLEN; hpos = MAXLNLEN; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$4F ; CB 79 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B181 + !WORD _B181-* + !BYTE $2A,$4F ; CB 79 + !BYTE $76,$00 ; SLW [0] +_B181 +_B182 +; toolsrc/ed.pla: 0660: curscol = hpos +; toolsrc/ed.pla: 0661: cursx = curscol - scrnleft +; toolsrc/ed.pla: 0662: if cursx > scrnright +; toolsrc/ed.pla: 0663: cursx = scrnright +; toolsrc/ed.pla: 0664: scrnleft = curscol - scrnright +; toolsrc/ed.pla: 0665: elsif cursx < 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7E ; DAW _D054+0 +_F212 !WORD _D054+0 + !BYTE $6A ; LAW _D053+0 +_F213 !WORD _D053+0 + !BYTE $84 ; SUB + !BYTE $7E ; DAW _D051+0 +_F214 !WORD _D051+0 + !BYTE $6A ; LAW _D034+0 +_F215 !WORD _D034+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B183 + !WORD _B183-* + !BYTE $6A ; LAW _D034+0 +_F216 !WORD _D034+0 + !BYTE $7A ; SAW _D051+0 +_F217 !WORD _D051+0 + !BYTE $6A ; LAW _D054+0 +_F218 !WORD _D054+0 + !BYTE $6A ; LAW _D034+0 +_F219 !WORD _D034+0 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D053+0 +_F220 !WORD _D053+0 + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +_B183 +; toolsrc/ed.pla: 0666: cursx = 0 +; toolsrc/ed.pla: 0667: scrnleft = curscol +; toolsrc/ed.pla: 0668: else + !BYTE $6A ; LAW _D051+0 +_F221 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B185 + !WORD _B185-* + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D051+0 +_F222 !WORD _D051+0 + !BYTE $6A ; LAW _D054+0 +_F223 !WORD _D054+0 + !BYTE $7A ; SAW _D053+0 +_F224 !WORD _D053+0 + !BYTE $50 ; BRNCH _B184 + !WORD _B184-* +_B185 +; toolsrc/ed.pla: 0669: needredraw = FALSE +; toolsrc/ed.pla: 0670: fin + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] +_B184 +; toolsrc/ed.pla: 0671: return needredraw + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/ed.pla: 0672: end +; toolsrc/ed.pla: 0673: def cursvpos(vpos)#1 + ; vpos -> [0] +_C027 ; cursvpos() +; toolsrc/ed.pla: 0674: byte needredraw + ; needredraw -> [2] +; toolsrc/ed.pla: 0675: +; toolsrc/ed.pla: 0676: needredraw = TRUE + !BYTE $58,$03,$01 ; ENTER 3,1 +; toolsrc/ed.pla: 0677: if vpos < 0; vpos = 0; fin + !BYTE $20 ; MINUS ONE + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B186 + !WORD _B186-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B186 +_B187 +; toolsrc/ed.pla: 0678: if vpos > numlines - 1; vpos = numlines - 1; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D042+0 +_F225 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B188 + !WORD _B188-* + !BYTE $6A ; LAW _D042+0 +_F226 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $76,$00 ; SLW [0] +_B188 +_B189 +; toolsrc/ed.pla: 0679: cursrow = vpos +; toolsrc/ed.pla: 0680: cursy = cursrow - scrntop +; toolsrc/ed.pla: 0681: if cursy > scrnbottom +; toolsrc/ed.pla: 0682: cursy = scrnbottom +; toolsrc/ed.pla: 0683: scrntop = cursrow - scrnbottom +; toolsrc/ed.pla: 0684: elsif cursy < 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7E ; DAW _D058+0 +_F227 !WORD _D058+0 + !BYTE $6A ; LAW _D060+0 +_F228 !WORD _D060+0 + !BYTE $84 ; SUB + !BYTE $7E ; DAW _D052+0 +_F229 !WORD _D052+0 + !BYTE $2A,$17 ; CB 23 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B190 + !WORD _B190-* + !BYTE $2A,$17 ; CB 23 + !BYTE $7A ; SAW _D052+0 +_F230 !WORD _D052+0 + !BYTE $6A ; LAW _D058+0 +_F231 !WORD _D058+0 + !BYTE $3A,$17 ; SUBI 23 + !BYTE $7A ; SAW _D060+0 +_F232 !WORD _D060+0 + !BYTE $50 ; BRNCH _B191 + !WORD _B191-* +_B190 +; toolsrc/ed.pla: 0685: cursy = 0 +; toolsrc/ed.pla: 0686: scrntop = cursrow +; toolsrc/ed.pla: 0687: else + !BYTE $6A ; LAW _D052+0 +_F233 !WORD _D052+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B192 + !WORD _B192-* + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D052+0 +_F234 !WORD _D052+0 + !BYTE $6A ; LAW _D058+0 +_F235 !WORD _D058+0 + !BYTE $7A ; SAW _D060+0 +_F236 !WORD _D060+0 + !BYTE $50 ; BRNCH _B191 + !WORD _B191-* +_B192 +; toolsrc/ed.pla: 0688: needredraw = FALSE +; toolsrc/ed.pla: 0689: fin + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] +_B191 +; toolsrc/ed.pla: 0690: return needredraw + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/ed.pla: 0691: end +; toolsrc/ed.pla: 0692: def curshome#0 +_C028 ; curshome() +; toolsrc/ed.pla: 0693: cursoff +; toolsrc/ed.pla: 0694: cursrow = 0 +; toolsrc/ed.pla: 0695: curscol = 0 +; toolsrc/ed.pla: 0696: cursx = 0 +; toolsrc/ed.pla: 0697: cursy = 0 +; toolsrc/ed.pla: 0698: scrnleft = 0 +; toolsrc/ed.pla: 0699: scrntop = 0 +; toolsrc/ed.pla: 0700: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0701: curson +; toolsrc/ed.pla: 0702: end + !BYTE $54 ; CALL _C022 +_F237 !WORD _C022 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D058+0 +_F238 !WORD _D058+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D054+0 +_F239 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D051+0 +_F240 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D052+0 +_F241 !WORD _D052+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D053+0 +_F242 !WORD _D053+0 + !BYTE $00 ; CN 0 + !BYTE $7E ; DAW _D060+0 +_F243 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F244 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F245 !WORD _C021 + !BYTE $54 ; CALL _C023 +_F246 !WORD _C023 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0703: def cursend#0 +_C029 ; cursend() +; toolsrc/ed.pla: 0704: cursoff +; toolsrc/ed.pla: 0705: if numlines > 23 +; toolsrc/ed.pla: 0706: cursrow = numlines - 1 +; toolsrc/ed.pla: 0707: cursy = 23 +; toolsrc/ed.pla: 0708: scrntop = cursrow - 23 +; toolsrc/ed.pla: 0709: else + !BYTE $54 ; CALL _C022 +_F247 !WORD _C022 + !BYTE $6A ; LAW _D042+0 +_F248 !WORD _D042+0 + !BYTE $2A,$17 ; CB 23 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B193 + !WORD _B193-* + !BYTE $6A ; LAW _D042+0 +_F249 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D058+0 +_F250 !WORD _D058+0 + !BYTE $2A,$17 ; CB 23 + !BYTE $7A ; SAW _D052+0 +_F251 !WORD _D052+0 + !BYTE $6A ; LAW _D058+0 +_F252 !WORD _D058+0 + !BYTE $3A,$17 ; SUBI 23 + !BYTE $7A ; SAW _D060+0 +_F253 !WORD _D060+0 + !BYTE $50 ; BRNCH _B194 + !WORD _B194-* +_B193 +; toolsrc/ed.pla: 0710: cursrow = numlines - 1 +; toolsrc/ed.pla: 0711: cursy = numlines - 1 +; toolsrc/ed.pla: 0712: scrntop = 0 +; toolsrc/ed.pla: 0713: fin + !BYTE $6A ; LAW _D042+0 +_F254 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D058+0 +_F255 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F256 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D052+0 +_F257 !WORD _D052+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D060+0 +_F258 !WORD _D060+0 +_B194 +; toolsrc/ed.pla: 0714: curscol = 0 +; toolsrc/ed.pla: 0715: cursx = 0 +; toolsrc/ed.pla: 0716: scrnleft = 0 +; toolsrc/ed.pla: 0717: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0718: curson +; toolsrc/ed.pla: 0719: end + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D054+0 +_F259 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D051+0 +_F260 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D053+0 +_F261 !WORD _D053+0 + !BYTE $6A ; LAW _D060+0 +_F262 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F263 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F264 !WORD _C021 + !BYTE $54 ; CALL _C023 +_F265 !WORD _C023 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0720: def cursup#0 +_C030 ; cursup() +; toolsrc/ed.pla: 0721: if cursrow > 0 +; toolsrc/ed.pla: 0722: cursoff +; toolsrc/ed.pla: 0723: cursrow-- + !BYTE $6A ; LAW _D058+0 +_F266 !WORD _D058+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B195 + !WORD _B195-* + !BYTE $54 ; CALL _C022 +_F267 !WORD _C022 + !BYTE $6A ; LAW _D058+0 +_F268 !WORD _D058+0 + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0724: if cursy > 0 +; toolsrc/ed.pla: 0725: cursy-- + !BYTE $7A ; SAW _D058+0 +_F269 !WORD _D058+0 + !BYTE $6A ; LAW _D052+0 +_F270 !WORD _D052+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B197 + !WORD _B197-* + !BYTE $6A ; LAW _D052+0 +_F271 !WORD _D052+0 + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0726: if flags & selection +; toolsrc/ed.pla: 0727: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0728: fin + !BYTE $7A ; SAW _D052+0 +_F272 !WORD _D052+0 + !BYTE $68 ; LAB _D040+0 +_F273 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B199 + !WORD _B199-* + !BYTE $6A ; LAW _D060+0 +_F274 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F275 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F276 !WORD _C020 +_B199 +_B200 +; toolsrc/ed.pla: 0729: else + !BYTE $50 ; BRNCH _B198 + !WORD _B198-* +_B197 +; toolsrc/ed.pla: 0730: scrntop = cursrow +; toolsrc/ed.pla: 0731: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0732: fin + !BYTE $6A ; LAW _D058+0 +_F277 !WORD _D058+0 + !BYTE $7E ; DAW _D060+0 +_F278 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F279 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F280 !WORD _C021 +_B198 +; toolsrc/ed.pla: 0733: curson +; toolsrc/ed.pla: 0734: fin + !BYTE $54 ; CALL _C023 +_F281 !WORD _C023 +_B195 +_B196 +; toolsrc/ed.pla: 0735: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0736: def pgup#0 +_C031 ; pgup() +; toolsrc/ed.pla: 0737: cursoff +; toolsrc/ed.pla: 0738: if cursvpos(cursrow - pgjmp) +; toolsrc/ed.pla: 0739: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0740: else + !BYTE $54 ; CALL _C022 +_F282 !WORD _C022 + !BYTE $6A ; LAW _D058+0 +_F283 !WORD _D058+0 + !BYTE $3A,$10 ; SUBI 16 + !BYTE $54 ; CALL _C027 +_F284 !WORD _C027 + !BYTE $4C ; BRFLS _B201 + !WORD _B201-* + !BYTE $6A ; LAW _D060+0 +_F285 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F286 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F287 !WORD _C021 + !BYTE $50 ; BRNCH _B202 + !WORD _B202-* +_B201 +; toolsrc/ed.pla: 0741: if flags & selection +; toolsrc/ed.pla: 0742: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0743: fin + !BYTE $68 ; LAB _D040+0 +_F288 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B203 + !WORD _B203-* + !BYTE $6A ; LAW _D060+0 +_F289 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F290 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F291 !WORD _C020 +_B203 +_B204 +; toolsrc/ed.pla: 0744: fin +_B202 +; toolsrc/ed.pla: 0745: curson +; toolsrc/ed.pla: 0746: end + !BYTE $54 ; CALL _C023 +_F292 !WORD _C023 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0747: def cursdown#0 +_C032 ; cursdown() +; toolsrc/ed.pla: 0748: if cursrow < numlines - 1 +; toolsrc/ed.pla: 0749: cursoff +; toolsrc/ed.pla: 0750: cursrow++ + !BYTE $6A ; LAW _D058+0 +_F293 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F294 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B205 + !WORD _B205-* + !BYTE $54 ; CALL _C022 +_F295 !WORD _C022 + !BYTE $6A ; LAW _D058+0 +_F296 !WORD _D058+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0751: if cursy < 23 +; toolsrc/ed.pla: 0752: cursy++ + !BYTE $7A ; SAW _D058+0 +_F297 !WORD _D058+0 + !BYTE $6A ; LAW _D052+0 +_F298 !WORD _D052+0 + !BYTE $2A,$17 ; CB 23 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B207 + !WORD _B207-* + !BYTE $6A ; LAW _D052+0 +_F299 !WORD _D052+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0753: if flags & selection +; toolsrc/ed.pla: 0754: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0755: fin + !BYTE $7A ; SAW _D052+0 +_F300 !WORD _D052+0 + !BYTE $68 ; LAB _D040+0 +_F301 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B209 + !WORD _B209-* + !BYTE $6A ; LAW _D060+0 +_F302 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F303 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F304 !WORD _C020 +_B209 +_B210 +; toolsrc/ed.pla: 0756: else + !BYTE $50 ; BRNCH _B208 + !WORD _B208-* +_B207 +; toolsrc/ed.pla: 0757: scrntop = cursrow - 23 +; toolsrc/ed.pla: 0758: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0759: fin + !BYTE $6A ; LAW _D058+0 +_F305 !WORD _D058+0 + !BYTE $3A,$17 ; SUBI 23 + !BYTE $7E ; DAW _D060+0 +_F306 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F307 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F308 !WORD _C021 +_B208 +; toolsrc/ed.pla: 0760: curson +; toolsrc/ed.pla: 0761: fin + !BYTE $54 ; CALL _C023 +_F309 !WORD _C023 +_B205 +_B206 +; toolsrc/ed.pla: 0762: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0763: def pgdown#0 +_C033 ; pgdown() +; toolsrc/ed.pla: 0764: cursoff +; toolsrc/ed.pla: 0765: if cursvpos(cursrow + pgjmp) +; toolsrc/ed.pla: 0766: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0767: else + !BYTE $54 ; CALL _C022 +_F310 !WORD _C022 + !BYTE $6A ; LAW _D058+0 +_F311 !WORD _D058+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $54 ; CALL _C027 +_F312 !WORD _C027 + !BYTE $4C ; BRFLS _B211 + !WORD _B211-* + !BYTE $6A ; LAW _D060+0 +_F313 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F314 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F315 !WORD _C021 + !BYTE $50 ; BRNCH _B212 + !WORD _B212-* +_B211 +; toolsrc/ed.pla: 0768: if flags & selection +; toolsrc/ed.pla: 0769: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0770: fin + !BYTE $68 ; LAB _D040+0 +_F316 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B213 + !WORD _B213-* + !BYTE $6A ; LAW _D060+0 +_F317 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F318 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F319 !WORD _C020 +_B213 +_B214 +; toolsrc/ed.pla: 0771: fin +_B212 +; toolsrc/ed.pla: 0772: curson +; toolsrc/ed.pla: 0773: end + !BYTE $54 ; CALL _C023 +_F320 !WORD _C023 + !BYTE $5C ; RET +; toolsrc/ed.pla: 0774: def cursleft#0 +_C034 ; cursleft() +; toolsrc/ed.pla: 0775: if curscol > 0 +; toolsrc/ed.pla: 0776: cursoff +; toolsrc/ed.pla: 0777: curscol-- + !BYTE $6A ; LAW _D054+0 +_F321 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B215 + !WORD _B215-* + !BYTE $54 ; CALL _C022 +_F322 !WORD _C022 + !BYTE $6A ; LAW _D054+0 +_F323 !WORD _D054+0 + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0778: if cursx > 0 +; toolsrc/ed.pla: 0779: cursx-- + !BYTE $7A ; SAW _D054+0 +_F324 !WORD _D054+0 + !BYTE $6A ; LAW _D051+0 +_F325 !WORD _D051+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B217 + !WORD _B217-* + !BYTE $6A ; LAW _D051+0 +_F326 !WORD _D051+0 + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0780: else + !BYTE $7A ; SAW _D051+0 +_F327 !WORD _D051+0 + !BYTE $50 ; BRNCH _B218 + !WORD _B218-* +_B217 +; toolsrc/ed.pla: 0781: scrnleft = curscol +; toolsrc/ed.pla: 0782: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0783: fin + !BYTE $6A ; LAW _D054+0 +_F328 !WORD _D054+0 + !BYTE $7A ; SAW _D053+0 +_F329 !WORD _D053+0 + !BYTE $6A ; LAW _D060+0 +_F330 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F331 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F332 !WORD _C021 +_B218 +; toolsrc/ed.pla: 0784: curson +; toolsrc/ed.pla: 0785: fin + !BYTE $54 ; CALL _C023 +_F333 !WORD _C023 +_B215 +_B216 +; toolsrc/ed.pla: 0786: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0787: def pgleft#0 +_C035 ; pgleft() +; toolsrc/ed.pla: 0788: word i, strptr + ; i -> [0] + ; strptr -> [2] +; toolsrc/ed.pla: 0789: +; toolsrc/ed.pla: 0790: strptr = txtlinbuf=>[cursrow] + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 0791: if curscol > ^strptr +; toolsrc/ed.pla: 0792: i = ^strptr +; toolsrc/ed.pla: 0793: else + !BYTE $6A ; LAW _D048+0 +_F334 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F335 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D054+0 +_F336 !WORD _D054+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B219 + !WORD _B219-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B220 + !WORD _B220-* +_B219 +; toolsrc/ed.pla: 0794: for i = 1 to ^strptr + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B221 + !WORD _B221-* +_B222 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0795: if ^(strptr + i) <> keyspace +; toolsrc/ed.pla: 0796: break + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B224 + !WORD _B224-* + !BYTE $50 ; BRNCH _B221 + !WORD _B221-* +; toolsrc/ed.pla: 0797: fin +_B224 +_B225 +; toolsrc/ed.pla: 0798: next +_B223 + !BYTE $A4 ; INCBRLE _B222 + !WORD _B222-* +_B221 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0799: i-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0800: if i >= curscol +; toolsrc/ed.pla: 0801: i = 0 +; toolsrc/ed.pla: 0802: fin + !BYTE $6E,$00 ; DLW [0] + !BYTE $6A ; LAW _D054+0 +_F337 !WORD _D054+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B226 + !WORD _B226-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B226 +_B227 +; toolsrc/ed.pla: 0803: fin +_B220 +; toolsrc/ed.pla: 0804: cursoff +; toolsrc/ed.pla: 0805: if curshpos(i) +; toolsrc/ed.pla: 0806: //if curshpos(curscol - 8) +; toolsrc/ed.pla: 0807: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0808: else + !BYTE $54 ; CALL _C022 +_F338 !WORD _C022 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C026 +_F339 !WORD _C026 + !BYTE $4C ; BRFLS _B228 + !WORD _B228-* + !BYTE $6A ; LAW _D060+0 +_F340 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F341 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F342 !WORD _C021 + !BYTE $50 ; BRNCH _B229 + !WORD _B229-* +_B228 +; toolsrc/ed.pla: 0809: if flags & selection +; toolsrc/ed.pla: 0810: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0811: fin + !BYTE $68 ; LAB _D040+0 +_F343 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B230 + !WORD _B230-* + !BYTE $6A ; LAW _D060+0 +_F344 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F345 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F346 !WORD _C020 +_B230 +_B231 +; toolsrc/ed.pla: 0812: fin +_B229 +; toolsrc/ed.pla: 0813: curson +; toolsrc/ed.pla: 0814: end + !BYTE $54 ; CALL _C023 +_F347 !WORD _C023 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0815: def cursright#0 +_C036 ; cursright() +; toolsrc/ed.pla: 0816: if curscol < MAXLNLEN +; toolsrc/ed.pla: 0817: cursoff +; toolsrc/ed.pla: 0818: curscol++ + !BYTE $6A ; LAW _D054+0 +_F348 !WORD _D054+0 + !BYTE $2A,$4F ; CB 79 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B232 + !WORD _B232-* + !BYTE $54 ; CALL _C022 +_F349 !WORD _C022 + !BYTE $6A ; LAW _D054+0 +_F350 !WORD _D054+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0819: if cursx < scrnright +; toolsrc/ed.pla: 0820: cursx++ + !BYTE $7A ; SAW _D054+0 +_F351 !WORD _D054+0 + !BYTE $6A ; LAW _D051+0 +_F352 !WORD _D051+0 + !BYTE $6A ; LAW _D034+0 +_F353 !WORD _D034+0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B234 + !WORD _B234-* + !BYTE $6A ; LAW _D051+0 +_F354 !WORD _D051+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 0821: else + !BYTE $7A ; SAW _D051+0 +_F355 !WORD _D051+0 + !BYTE $50 ; BRNCH _B235 + !WORD _B235-* +_B234 +; toolsrc/ed.pla: 0822: scrnleft = curscol - scrnright +; toolsrc/ed.pla: 0823: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0824: fin + !BYTE $6A ; LAW _D054+0 +_F356 !WORD _D054+0 + !BYTE $6A ; LAW _D034+0 +_F357 !WORD _D034+0 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D053+0 +_F358 !WORD _D053+0 + !BYTE $6A ; LAW _D060+0 +_F359 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F360 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F361 !WORD _C021 +_B235 +; toolsrc/ed.pla: 0825: curson +; toolsrc/ed.pla: 0826: fin + !BYTE $54 ; CALL _C023 +_F362 !WORD _C023 +_B232 +_B233 +; toolsrc/ed.pla: 0827: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 0828: def pgright#0 +_C037 ; pgright() +; toolsrc/ed.pla: 0829: word i, strptr + ; i -> [0] + ; strptr -> [2] +; toolsrc/ed.pla: 0830: +; toolsrc/ed.pla: 0831: strptr = txtlinbuf=>[cursrow] + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 0832: if curscol >= ^strptr +; toolsrc/ed.pla: 0833: i = curscol + 8 +; toolsrc/ed.pla: 0834: else + !BYTE $6A ; LAW _D048+0 +_F363 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F364 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D054+0 +_F365 !WORD _D054+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B236 + !WORD _B236-* + !BYTE $6A ; LAW _D054+0 +_F366 !WORD _D054+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B237 + !WORD _B237-* +_B236 +; toolsrc/ed.pla: 0835: for i = 1 to ^strptr + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B238 + !WORD _B238-* +_B239 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0836: if ^(strptr + i) <> keyspace +; toolsrc/ed.pla: 0837: break + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B241 + !WORD _B241-* + !BYTE $50 ; BRNCH _B238 + !WORD _B238-* +; toolsrc/ed.pla: 0838: fin +_B241 +_B242 +; toolsrc/ed.pla: 0839: next +_B240 + !BYTE $A4 ; INCBRLE _B239 + !WORD _B239-* +_B238 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0840: i-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 0841: if curscol >= i +; toolsrc/ed.pla: 0842: i = ^strptr +; toolsrc/ed.pla: 0843: fin + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D054+0 +_F367 !WORD _D054+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B243 + !WORD _B243-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $76,$00 ; SLW [0] +_B243 +_B244 +; toolsrc/ed.pla: 0844: fin +_B237 +; toolsrc/ed.pla: 0845: cursoff +; toolsrc/ed.pla: 0846: if curshpos(i) +; toolsrc/ed.pla: 0847: //if curshpos(curscol + 8) +; toolsrc/ed.pla: 0848: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 0849: else + !BYTE $54 ; CALL _C022 +_F368 !WORD _C022 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C026 +_F369 !WORD _C026 + !BYTE $4C ; BRFLS _B245 + !WORD _B245-* + !BYTE $6A ; LAW _D060+0 +_F370 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F371 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F372 !WORD _C021 + !BYTE $50 ; BRNCH _B246 + !WORD _B246-* +_B245 +; toolsrc/ed.pla: 0850: if flags & selection +; toolsrc/ed.pla: 0851: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 0852: fin + !BYTE $68 ; LAB _D040+0 +_F373 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B247 + !WORD _B247-* + !BYTE $6A ; LAW _D060+0 +_F374 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F375 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F376 !WORD _C020 +_B247 +_B248 +; toolsrc/ed.pla: 0853: fin +_B246 +; toolsrc/ed.pla: 0854: curson +; toolsrc/ed.pla: 0855: end + !BYTE $54 ; CALL _C023 +_F377 !WORD _C023 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 0856: // +; toolsrc/ed.pla: 0857: // Find string in text +; toolsrc/ed.pla: 0858: // +; toolsrc/ed.pla: 0859: def findline(strptr, start)#1 + ; strptr -> [0] + ; start -> [2] +_C038 ; findline() +; toolsrc/ed.pla: 0860: byte scan, i, upstr[MAXLNLEN+1] + ; scan -> [4] + ; i -> [5] + ; upstr -> [6] +; toolsrc/ed.pla: 0861: +; toolsrc/ed.pla: 0862: if ^strptr >= findstr + !BYTE $58,$56,$02 ; ENTER 86,2 +; toolsrc/ed.pla: 0863: lnupcpy(@upstr, strptr) +; toolsrc/ed.pla: 0864: for scan = start to upstr - findstr + 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $68 ; LAB _D037+0 +_F378 !WORD _D037+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B249 + !WORD _B249-* + !BYTE $28,$06 ; LLA [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A003 +_F379 !WORD _A003 + !BYTE $64,$06 ; LLB [6] + !BYTE $68 ; LAB _D037+0 +_F380 !WORD _D037+0 + !BYTE $84 ; SUB + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $A0 ; BRGT _B251 + !WORD _B251-* +_B252 + !BYTE $6C,$04 ; DLB [4] +; toolsrc/ed.pla: 0865: if upstr[scan] == findstr[1] +; toolsrc/ed.pla: 0866: for i = 2 to findstr + !BYTE $28,$06 ; LLA [6] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $68 ; LAB _D037+1 +_F381 !WORD _D037+1 + !BYTE $24 ; BRNE _B254 + !WORD _B254-* + !BYTE $68 ; LAB _D037+0 +_F382 !WORD _D037+0 + !BYTE $04 ; CN 2 + !BYTE $A0 ; BRGT _B256 + !WORD _B256-* +_B257 + !BYTE $6C,$05 ; DLB [5] +; toolsrc/ed.pla: 0867: if upstr[scan + i - 1] <> findstr[i] +; toolsrc/ed.pla: 0868: break + !BYTE $28,$06 ; LLA [6] + !BYTE $64,$04 ; LLB [4] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $26 ; LA _D037+0 +_F383 !WORD _D037+0 + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B259 + !WORD _B259-* + !BYTE $50 ; BRNCH _B256 + !WORD _B256-* +; toolsrc/ed.pla: 0869: fin +_B259 +_B260 +; toolsrc/ed.pla: 0870: next +_B258 + !BYTE $A4 ; INCBRLE _B257 + !WORD _B257-* +_B256 + !BYTE $74,$05 ; SLB [5] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0871: if i > findstr +; toolsrc/ed.pla: 0872: curshpos(scan - 1) +; toolsrc/ed.pla: 0873: return TRUE + !BYTE $64,$05 ; LLB [5] + !BYTE $68 ; LAB _D037+0 +_F384 !WORD _D037+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B261 + !WORD _B261-* + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C026 +_F385 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 0874: fin +_B261 +_B262 +; toolsrc/ed.pla: 0875: fin +_B254 +_B255 +; toolsrc/ed.pla: 0876: next +_B253 + !BYTE $A4 ; INCBRLE _B252 + !WORD _B252-* +_B251 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0877: fin +_B249 +_B250 +; toolsrc/ed.pla: 0878: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 0879: end +; toolsrc/ed.pla: 0880: def findtxt#0 +_C039 ; findtxt() +; toolsrc/ed.pla: 0881: word f + ; f -> [0] +; toolsrc/ed.pla: 0882: +; toolsrc/ed.pla: 0883: // +; toolsrc/ed.pla: 0884: // Search from current pos to end +; toolsrc/ed.pla: 0885: // +; toolsrc/ed.pla: 0886: if findline(txtlinbuf=>[cursrow], curscol + 2) + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/ed.pla: 0887: return + !BYTE $6A ; LAW _D048+0 +_F386 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F387 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D054+0 +_F388 !WORD _D054+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C038 +_F389 !WORD _C038 + !BYTE $4C ; BRFLS _B263 + !WORD _B263-* + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0888: fin +_B263 +_B264 +; toolsrc/ed.pla: 0889: for f = cursrow + 1 to numlines - 1 + !BYTE $6A ; LAW _D042+0 +_F390 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $6A ; LAW _D058+0 +_F391 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $A0 ; BRGT _B265 + !WORD _B265-* +_B266 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0890: if findline(txtlinbuf=>[f], 1) +; toolsrc/ed.pla: 0891: cursvpos(f) +; toolsrc/ed.pla: 0892: return + !BYTE $6A ; LAW _D048+0 +_F392 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C038 +_F393 !WORD _C038 + !BYTE $4C ; BRFLS _B268 + !WORD _B268-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C027 +_F394 !WORD _C027 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0893: fin +_B268 +_B269 +; toolsrc/ed.pla: 0894: next +_B267 + !BYTE $A4 ; INCBRLE _B266 + !WORD _B266-* +_B265 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0895: // +; toolsrc/ed.pla: 0896: // Search from beginning to current pos +; toolsrc/ed.pla: 0897: // +; toolsrc/ed.pla: 0898: for f = 0 to cursrow + !BYTE $6A ; LAW _D058+0 +_F395 !WORD _D058+0 + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B270 + !WORD _B270-* +_B271 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 0899: if findline(txtlinbuf=>[f], 1) +; toolsrc/ed.pla: 0900: cursvpos(f) +; toolsrc/ed.pla: 0901: return + !BYTE $6A ; LAW _D048+0 +_F396 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C038 +_F397 !WORD _C038 + !BYTE $4C ; BRFLS _B273 + !WORD _B273-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C027 +_F398 !WORD _C027 + !BYTE $30 ; DROP + !BYTE $32 ; DROP2 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0902: fin +_B273 +_B274 +; toolsrc/ed.pla: 0903: next +_B272 + !BYTE $A4 ; INCBRLE _B271 + !WORD _B271-* +_B270 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 0904: bell +; toolsrc/ed.pla: 0905: end + !BYTE $54 ; CALL _C000 +_F399 !WORD _C000 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 0906: // +; toolsrc/ed.pla: 0907: // Keyboard routines +; toolsrc/ed.pla: 0908: // +; toolsrc/ed.pla: 0909: def dev_control(devnum, code, list)#1 + ; devnum -> [0] + ; code -> [2] + ; list -> [4] +_C040 ; dev_control() +; toolsrc/ed.pla: 0910: byte params[5] + ; params -> [6] +; toolsrc/ed.pla: 0911: +; toolsrc/ed.pla: 0912: params.0 = 3 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; toolsrc/ed.pla: 0913: params.1 = devnum +; toolsrc/ed.pla: 0914: params.2 = code +; toolsrc/ed.pla: 0915: params:3 = list +; toolsrc/ed.pla: 0916: perr = syscall($83, @params) +; toolsrc/ed.pla: 0917: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$83 ; CB 131 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _X011 +_F400 !WORD 0 + !BYTE $7C ; DAB _X032+0 +_F401 !WORD 0+0 + !BYTE $5A,$0B ; LEAVE 11 +; toolsrc/ed.pla: 0918: end +; toolsrc/ed.pla: 0919: def cons_keyavail +_C041 ; cons_keyavail() +; toolsrc/ed.pla: 0920: byte params[5] + ; params -> [0] +; toolsrc/ed.pla: 0921: byte count + ; count -> [5] +; toolsrc/ed.pla: 0922: +; toolsrc/ed.pla: 0923: params.0 = 3 + !BYTE $58,$06,$00 ; ENTER 6,0 +; toolsrc/ed.pla: 0924: params.1 = cmdsys.devcons +; toolsrc/ed.pla: 0925: params.2 = 5 +; toolsrc/ed.pla: 0926: params:3 = @count +; toolsrc/ed.pla: 0927: return syscall($82, @params) ?? 0 :: count + !BYTE $06 ; CN 3 + !BYTE $74,$00 ; SLB [0] + !BYTE $68 ; LAB _X000+20 +_F402 !WORD 0+20 + !BYTE $74,$01 ; SLB [1] + !BYTE $0A ; CN 5 + !BYTE $74,$02 ; SLB [2] + !BYTE $28,$05 ; LLA [5] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$82 ; CB 130 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _X011 +_F403 !WORD 0 + !BYTE $4C ; BRFLS _B275 + !WORD _B275-* + !BYTE $00 ; CN 0 + !BYTE $50 ; BRNCH _B276 + !WORD _B276-* +_B275 + !BYTE $64,$05 ; LLB [5] +_B276 + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/ed.pla: 0928: end +; toolsrc/ed.pla: 0929: def cons_keyread +_C042 ; cons_keyread() +; toolsrc/ed.pla: 0930: byte params[8] + ; params -> [0] +; toolsrc/ed.pla: 0931: byte key + ; key -> [8] +; toolsrc/ed.pla: 0932: +; toolsrc/ed.pla: 0933: params.0 = 4 + !BYTE $58,$09,$00 ; ENTER 9,0 +; toolsrc/ed.pla: 0934: params.1 = cmdsys.refcons +; toolsrc/ed.pla: 0935: params:2 = @key +; toolsrc/ed.pla: 0936: params:4 = 1 +; toolsrc/ed.pla: 0937: params:6 = 0 +; toolsrc/ed.pla: 0938: syscall($CA, @params) +; toolsrc/ed.pla: 0939: return params:6 ?? key :: 0 + !BYTE $08 ; CN 4 + !BYTE $74,$00 ; SLB [0] + !BYTE $68 ; LAB _X000+19 +_F404 !WORD 0+19 + !BYTE $74,$01 ; SLB [1] + !BYTE $28,$08 ; LLA [8] + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $76,$04 ; SLW [4] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _X011 +_F405 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$06 ; LLW [6] + !BYTE $4C ; BRFLS _B277 + !WORD _B277-* + !BYTE $64,$08 ; LLB [8] + !BYTE $50 ; BRNCH _B278 + !WORD _B278-* +_B277 + !BYTE $00 ; CN 0 +_B278 + !BYTE $5A,$09 ; LEAVE 9 +; toolsrc/ed.pla: 0940: end +; toolsrc/ed.pla: 0941: def keyin3 +_C043 ; keyin3() +; toolsrc/ed.pla: 0942: byte key + ; key -> [0] +; toolsrc/ed.pla: 0943: +; toolsrc/ed.pla: 0944: repeat + !BYTE $58,$01,$00 ; ENTER 1,0 +_B280 +; toolsrc/ed.pla: 0945: cursflash +; toolsrc/ed.pla: 0946: until cons_keyavail + !BYTE $54 ; CALL _C024 +_F406 !WORD _C024 +_B281 + !BYTE $54 ; CALL _C041 +_F407 !WORD _C041 + !BYTE $4C ; BRFLS _B280 + !WORD _B280-* +_B279 +; toolsrc/ed.pla: 0947: key = cons_keyread +; toolsrc/ed.pla: 0948: if key & $80 // Open Apple modifier +; toolsrc/ed.pla: 0949: when key + !BYTE $54 ; CALL _C042 +_F408 !WORD _C042 + !BYTE $6C,$00 ; DLB [0] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B282 + !WORD _B282-* + !BYTE $64,$00 ; LLB [0] + !BYTE $52 ; SEL + !WORD _B285-* +; toolsrc/ed.pla: 0950: is keyarrowleft +_B286 +; toolsrc/ed.pla: 0951: key = keyctrla; break + !BYTE $2A,$81 ; CB 129 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0952: is keyarrowright +_B287 +; toolsrc/ed.pla: 0953: key = keyctrls; break + !BYTE $2A,$93 ; CB 147 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0954: is keyarrowup +_B288 +; toolsrc/ed.pla: 0955: key = keyctrlw; break + !BYTE $2A,$97 ; CB 151 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0956: is keyarrowdown +_B289 +; toolsrc/ed.pla: 0957: key = keyctrlz; break + !BYTE $2A,$9A ; CB 154 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0958: is keyenter +_B290 +; toolsrc/ed.pla: 0959: key = keyctrlf; break + !BYTE $2A,$86 ; CB 134 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0960: is keytab +_B291 +; toolsrc/ed.pla: 0961: key = keydetab; break + !BYTE $2A,$9D ; CB 157 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0962: is $80 | '\\' +_B292 +; toolsrc/ed.pla: 0963: key = keydelete; break // Delete + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0964: // +; toolsrc/ed.pla: 0965: // Map OA+keypad +; toolsrc/ed.pla: 0966: // +; toolsrc/ed.pla: 0967: is $80 | '4' +_B293 +; toolsrc/ed.pla: 0968: key = keyarrowleft; break + !BYTE $2A,$88 ; CB 136 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0969: is $80 | '6' +_B294 +; toolsrc/ed.pla: 0970: key = keyarrowright; break + !BYTE $2A,$95 ; CB 149 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0971: is $80 | '8' +_B295 +; toolsrc/ed.pla: 0972: key = keyarrowup; break + !BYTE $2A,$8B ; CB 139 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0973: is $80 | '2' +_B296 +; toolsrc/ed.pla: 0974: key = keyarrowdown; break + !BYTE $2A,$8A ; CB 138 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0975: is $80 | '7' +_B297 +; toolsrc/ed.pla: 0976: key = keyctrlq; break // Top + !BYTE $2A,$91 ; CB 145 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0977: is $80 | '1' +_B298 +; toolsrc/ed.pla: 0978: key = keyctrle; break // Bottom + !BYTE $2A,$85 ; CB 133 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0979: is $80 | '9' +_B299 +; toolsrc/ed.pla: 0980: key = keyctrlw; break // Pg Up + !BYTE $2A,$97 ; CB 151 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0981: is $80 | '3' +_B300 +; toolsrc/ed.pla: 0982: key = keyctrlz; break // Pg Dn + !BYTE $2A,$9A ; CB 154 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0983: is $80 | '5' +_B301 +; toolsrc/ed.pla: 0984: key = keyctrld; break // Del + !BYTE $2A,$84 ; CB 132 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0985: is $80 | '.' +_B302 +; toolsrc/ed.pla: 0986: key = keyctrlc; break // Copy + !BYTE $2A,$83 ; CB 131 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0987: is $80 | '0' +_B303 +; toolsrc/ed.pla: 0988: key = keyctrlv; break // Paste + !BYTE $2A,$96 ; CB 150 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0989: is $80 | '-' +_B304 +; toolsrc/ed.pla: 0990: key = keyctrlx; break // Cut + !BYTE $2A,$98 ; CB 152 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +; toolsrc/ed.pla: 0991: wend + !BYTE $50 ; BRNCH _B284 + !WORD _B284-* +_B285 + !BYTE $13 ; CASEBLOCK + !WORD $0088 + !WORD _B286-* + !WORD $0089 + !WORD _B291-* + !WORD $008A + !WORD _B289-* + !WORD $008B + !WORD _B288-* + !WORD $008D + !WORD _B290-* + !WORD $0095 + !WORD _B287-* + !WORD $00AD + !WORD _B304-* + !WORD $00AE + !WORD _B302-* + !WORD $00B0 + !WORD _B303-* + !WORD $00B1 + !WORD _B298-* + !WORD $00B2 + !WORD _B296-* + !WORD $00B3 + !WORD _B300-* + !WORD $00B4 + !WORD _B293-* + !WORD $00B5 + !WORD _B301-* + !WORD $00B6 + !WORD _B294-* + !WORD $00B7 + !WORD _B297-* + !WORD $00B8 + !WORD _B295-* + !WORD $00B9 + !WORD _B299-* + !WORD $00DC + !WORD _B292-* +_B284 +; toolsrc/ed.pla: 0992: fin +_B282 +_B283 +; toolsrc/ed.pla: 0993: return key | $80 + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$80 ; ORI 128 + !BYTE $5A,$01 ; LEAVE 1 +; toolsrc/ed.pla: 0994: end +; toolsrc/ed.pla: 0995: def keyin2e +_C044 ; keyin2e() +; toolsrc/ed.pla: 0996: byte key, vbl + ; key -> [0] + ; vbl -> [1] +; toolsrc/ed.pla: 0997: ^$C079 = 0 // IOU enable and clear VBL int on //c + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/ed.pla: 0998: ^$C05B = 0 // Enable VBL Ints on //c +; toolsrc/ed.pla: 0999: vbl = ^$C019 +; toolsrc/ed.pla: 1000: repeat + !BYTE $00 ; CN 0 + !BYTE $78,$79,$C0 ; SAB 49273 + !BYTE $00 ; CN 0 + !BYTE $78,$5B,$C0 ; SAB 49243 + !BYTE $68,$19,$C0 ; LAB 49177 + !BYTE $74,$01 ; SLB [1] +_B306 +; toolsrc/ed.pla: 1001: if flags & showcurs +; toolsrc/ed.pla: 1002: if flash == 0 +; toolsrc/ed.pla: 1003: ^cursptr = curschr +; toolsrc/ed.pla: 1004: elsif flash == 128 + !BYTE $68 ; LAB _D040+0 +_F409 !WORD _D040+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B308 + !WORD _B308-* + !BYTE $68 ; LAB _D041+0 +_F410 !WORD _D041+0 + !BYTE $4E ; BRTRU _B310 + !WORD _B310-* + !BYTE $68 ; LAB _D056+0 +_F411 !WORD _D056+0 + !BYTE $6A ; LAW _D061+0 +_F412 !WORD _D061+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B311 + !WORD _B311-* +_B310 +; toolsrc/ed.pla: 1005: ^cursptr = underchr +; toolsrc/ed.pla: 1006: fin + !BYTE $68 ; LAB _D041+0 +_F413 !WORD _D041+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $24 ; BRNE _B312 + !WORD _B312-* + !BYTE $68 ; LAB _D055+0 +_F414 !WORD _D055+0 + !BYTE $6A ; LAW _D061+0 +_F415 !WORD _D061+0 + !BYTE $70 ; SB +_B312 +_B311 +; toolsrc/ed.pla: 1007: if vbl ^ ^$C019 +; toolsrc/ed.pla: 1008: flash = flash + 8 +; toolsrc/ed.pla: 1009: vbl = ^$C019 +; toolsrc/ed.pla: 1010: ^$C079 = 0 // Clear VBL int on //c +; toolsrc/ed.pla: 1011: fin + !BYTE $64,$01 ; LLB [1] + !BYTE $68,$19,$C0 ; LAB 49177 + !BYTE $98 ; XOR + !BYTE $4C ; BRFLS _B313 + !WORD _B313-* + !BYTE $68 ; LAB _D041+0 +_F416 !WORD _D041+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $78 ; SAB _D041+0 +_F417 !WORD _D041+0 + !BYTE $68,$19,$C0 ; LAB 49177 + !BYTE $74,$01 ; SLB [1] + !BYTE $00 ; CN 0 + !BYTE $78,$79,$C0 ; SAB 49273 +_B313 +_B314 +; toolsrc/ed.pla: 1012: fin +_B308 +_B309 +; toolsrc/ed.pla: 1013: key = ^keyboard +; toolsrc/ed.pla: 1014: until key >= 128 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $74,$00 ; SLB [0] +_B307 + !BYTE $64,$00 ; LLB [0] + !BYTE $2A,$80 ; CB 128 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B306 + !WORD _B306-* +_B305 +; toolsrc/ed.pla: 1015: ^$C05A = 0 // Disable VBL Ints on //c +; toolsrc/ed.pla: 1016: ^$C078 = 0 // IOU disable on //c +; toolsrc/ed.pla: 1017: ^keystrobe +; toolsrc/ed.pla: 1018: if ^pushbttn2 & 128 // Closed Apple pressed +; toolsrc/ed.pla: 1019: when key + !BYTE $00 ; CN 0 + !BYTE $78,$5A,$C0 ; SAB 49242 + !BYTE $00 ; CN 0 + !BYTE $78,$78,$C0 ; SAB 49272 + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $68,$62,$C0 ; LAB 49250 + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B315 + !WORD _B315-* + !BYTE $64,$00 ; LLB [0] + !BYTE $52 ; SEL + !WORD _B318-* +; toolsrc/ed.pla: 1020: is keyarrowleft +_B319 +; toolsrc/ed.pla: 1021: key = keyctrla; break + !BYTE $2A,$81 ; CB 129 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1022: is keyarrowright +_B320 +; toolsrc/ed.pla: 1023: key = keyctrls; break + !BYTE $2A,$93 ; CB 147 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1024: is keyarrowup +_B321 +; toolsrc/ed.pla: 1025: key = keyctrlw; break + !BYTE $2A,$97 ; CB 151 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1026: is keyarrowdown +_B322 +; toolsrc/ed.pla: 1027: key = keyctrlz; break + !BYTE $2A,$9A ; CB 154 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1028: is keyenter +_B323 +; toolsrc/ed.pla: 1029: key = keyctrlf; break + !BYTE $2A,$86 ; CB 134 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1030: is keytab +_B324 +; toolsrc/ed.pla: 1031: key = keydetab; break + !BYTE $2A,$9D ; CB 157 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +; toolsrc/ed.pla: 1032: wend + !BYTE $50 ; BRNCH _B317 + !WORD _B317-* +_B318 + !BYTE $06 ; CASEBLOCK + !WORD $0088 + !WORD _B319-* + !WORD $0089 + !WORD _B324-* + !WORD $008A + !WORD _B322-* + !WORD $008B + !WORD _B321-* + !WORD $008D + !WORD _B323-* + !WORD $0095 + !WORD _B320-* +_B317 +; toolsrc/ed.pla: 1033: fin +_B315 +_B316 +; toolsrc/ed.pla: 1034: return key + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1035: end +; toolsrc/ed.pla: 1036: def keyin2 +_C045 ; keyin2() +; toolsrc/ed.pla: 1037: byte key + ; key -> [0] +; toolsrc/ed.pla: 1038: +; toolsrc/ed.pla: 1039: repeat + !BYTE $58,$01,$00 ; ENTER 1,0 +_B326 +; toolsrc/ed.pla: 1040: cursflash +; toolsrc/ed.pla: 1041: key = ^keyboard +; toolsrc/ed.pla: 1042: if key == keyctrll +; toolsrc/ed.pla: 1043: ^keystrobe +; toolsrc/ed.pla: 1044: flags = flags ^ shiftlock +; toolsrc/ed.pla: 1045: key = 0 +; toolsrc/ed.pla: 1046: fin + !BYTE $54 ; CALL _C024 +_F418 !WORD _C024 + !BYTE $68,$00,$C0 ; LAB 49152 + !BYTE $6C,$00 ; DLB [0] + !BYTE $2A,$8C ; CB 140 + !BYTE $24 ; BRNE _B328 + !WORD _B328-* + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D040+0 +_F419 !WORD _D040+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D040+0 +_F420 !WORD _D040+0 + !BYTE $00 ; CN 0 + !BYTE $74,$00 ; SLB [0] +_B328 +_B329 +; toolsrc/ed.pla: 1047: until key >= 128 +_B327 + !BYTE $64,$00 ; LLB [0] + !BYTE $2A,$80 ; CB 128 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B326 + !WORD _B326-* +_B325 +; toolsrc/ed.pla: 1048: ^keystrobe +; toolsrc/ed.pla: 1049: when key + !BYTE $68,$10,$C0 ; LAB 49168 + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $52 ; SEL + !WORD _B331-* +; toolsrc/ed.pla: 1050: is keyctrln +_B332 +; toolsrc/ed.pla: 1051: key = $DB // '[' +; toolsrc/ed.pla: 1052: break + !BYTE $2A,$DB ; CB 219 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1053: is $9E // SHIFT+CTRL+N +_B333 +; toolsrc/ed.pla: 1054: key = $FE // '~' +; toolsrc/ed.pla: 1055: break + !BYTE $2A,$FE ; CB 254 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1056: is keyctrlp +_B334 +; toolsrc/ed.pla: 1057: key = $DC // '\' +; toolsrc/ed.pla: 1058: break + !BYTE $2A,$DC ; CB 220 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1059: is $80 // SHIFT+CTRL+P -> CTRL+@ +_B335 +; toolsrc/ed.pla: 1060: key = $FC // '|' +; toolsrc/ed.pla: 1061: break + !BYTE $2A,$FC ; CB 252 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1062: is keyctrlg +_B336 +; toolsrc/ed.pla: 1063: key = $DF // '_' +; toolsrc/ed.pla: 1064: break + !BYTE $2A,$DF ; CB 223 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1065: is keyarrowleft +_B337 +; toolsrc/ed.pla: 1066: if ^pushbttn3 < 128 +; toolsrc/ed.pla: 1067: key = keydelete +; toolsrc/ed.pla: 1068: fin + !BYTE $68,$63,$C0 ; LAB 49251 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B338 + !WORD _B338-* + !BYTE $2A,$FF ; CB 255 + !BYTE $74,$00 ; SLB [0] +_B338 +_B339 +; toolsrc/ed.pla: 1069: break + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1070: is keyarrowright +_B340 +; toolsrc/ed.pla: 1071: if ^pushbttn3 < 128 +; toolsrc/ed.pla: 1072: key = keytab +; toolsrc/ed.pla: 1073: fin + !BYTE $68,$63,$C0 ; LAB 49251 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B341 + !WORD _B341-* + !BYTE $2A,$89 ; CB 137 + !BYTE $74,$00 ; SLB [0] +_B341 +_B342 +; toolsrc/ed.pla: 1074: break + !BYTE $50 ; BRNCH _B330 + !WORD _B330-* +; toolsrc/ed.pla: 1075: otherwise +_B331 + !BYTE $07 ; CASEBLOCK + !WORD $0080 + !WORD _B335-* + !WORD $0087 + !WORD _B336-* + !WORD $0088 + !WORD _B337-* + !WORD $008E + !WORD _B332-* + !WORD $0090 + !WORD _B334-* + !WORD $0095 + !WORD _B340-* + !WORD $009E + !WORD _B333-* +; toolsrc/ed.pla: 1076: if key >= $C0 and flags < shiftlock +; toolsrc/ed.pla: 1077: if ^pushbttn3 < 128 +; toolsrc/ed.pla: 1078: when key + !BYTE $64,$00 ; LLB [0] + !BYTE $2A,$C0 ; CB 192 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B343 + !WORD _B343-* + !BYTE $68 ; LAB _D040+0 +_F421 !WORD _D040+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT +_B343 + !BYTE $4C ; BRFLS _B344 + !WORD _B344-* + !BYTE $68,$63,$C0 ; LAB 49251 + !BYTE $2A,$80 ; CB 128 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B346 + !WORD _B346-* + !BYTE $64,$00 ; LLB [0] + !BYTE $52 ; SEL + !WORD _B349-* +; toolsrc/ed.pla: 1079: is $C0 +_B350 +; toolsrc/ed.pla: 1080: key = $D0 // P +; toolsrc/ed.pla: 1081: break + !BYTE $2A,$D0 ; CB 208 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B348 + !WORD _B348-* +; toolsrc/ed.pla: 1082: is $DD +_B351 +; toolsrc/ed.pla: 1083: key = $CD // M +; toolsrc/ed.pla: 1084: break + !BYTE $2A,$CD ; CB 205 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B348 + !WORD _B348-* +; toolsrc/ed.pla: 1085: is $DE +_B352 +; toolsrc/ed.pla: 1086: key = $CE // N +; toolsrc/ed.pla: 1087: wend + !BYTE $2A,$CE ; CB 206 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B348 + !WORD _B348-* +_B349 + !BYTE $03 ; CASEBLOCK + !WORD $00C0 + !WORD _B350-* + !WORD $00DD + !WORD _B351-* + !WORD $00DE + !WORD _B352-* +_B348 +; toolsrc/ed.pla: 1088: else + !BYTE $50 ; BRNCH _B347 + !WORD _B347-* +_B346 +; toolsrc/ed.pla: 1089: key = key | $E0 +; toolsrc/ed.pla: 1090: fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$E0 ; ORI 224 + !BYTE $74,$00 ; SLB [0] +_B347 +; toolsrc/ed.pla: 1091: fin +_B344 +_B345 +; toolsrc/ed.pla: 1092: wend +_B330 +; toolsrc/ed.pla: 1093: return key + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$01 ; LEAVE 1 +; toolsrc/ed.pla: 1094: end +; toolsrc/ed.pla: 1095: def setkeyin#0 +_C046 ; setkeyin() +; toolsrc/ed.pla: 1096: when MACHID & MACHID_MODEL + !BYTE $68 ; LAB _X001+0 +_F422 !WORD 0+0 + !BYTE $3C,$C8 ; ANDI 200 + !BYTE $52 ; SEL + !WORD _B354-* +; toolsrc/ed.pla: 1097: is MACHID_IIE +_B355 +; toolsrc/ed.pla: 1098: is MACHID_IIC +_B356 +; toolsrc/ed.pla: 1099: keyin = @keyin2e +; toolsrc/ed.pla: 1100: break + !BYTE $26 ; LA _C044+0 +_F423 !WORD _C044+0 + !BYTE $7A ; SAW _D057+0 +_F424 !WORD _D057+0 + !BYTE $50 ; BRNCH _B353 + !WORD _B353-* +; toolsrc/ed.pla: 1101: is MACHID_III +_B357 +; toolsrc/ed.pla: 1102: keyin = @keyin3 +; toolsrc/ed.pla: 1103: break + !BYTE $26 ; LA _C043+0 +_F425 !WORD _C043+0 + !BYTE $7A ; SAW _D057+0 +_F426 !WORD _D057+0 + !BYTE $50 ; BRNCH _B353 + !WORD _B353-* +; toolsrc/ed.pla: 1104: otherwise // ][ or ][+ +_B354 + !BYTE $03 ; CASEBLOCK + !WORD $0080 + !WORD _B355-* + !WORD $0088 + !WORD _B356-* + !WORD $00C0 + !WORD _B357-* +; toolsrc/ed.pla: 1105: keyin = @keyin2 +; toolsrc/ed.pla: 1106: wend + !BYTE $26 ; LA _C045+0 +_F427 !WORD _C045+0 + !BYTE $7A ; SAW _D057+0 +_F428 !WORD _D057+0 +_B353 +; toolsrc/ed.pla: 1107: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 1108: // +; toolsrc/ed.pla: 1109: // Printer routines +; toolsrc/ed.pla: 1110: // +; toolsrc/ed.pla: 1111: def printtxt(slot)#0 + ; slot -> [0] +_C047 ; printtxt() +; toolsrc/ed.pla: 1112: byte txtbuf[MAXLNLEN+1] + ; txtbuf -> [2] +; toolsrc/ed.pla: 1113: word i, scrncsw + ; i -> [82] + ; scrncsw -> [84] +; toolsrc/ed.pla: 1114: +; toolsrc/ed.pla: 1115: scrncsw = *csw + !BYTE $58,$56,$01 ; ENTER 86,1 +; toolsrc/ed.pla: 1116: *csw = $C000 | (slot << 8) +; toolsrc/ed.pla: 1117: for i = 0 to numlines - 1 + !BYTE $6A,$36,$00 ; LAW 54 + !BYTE $76,$54 ; SLW [84] + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $66,$00 ; LLW [0] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $7A,$36,$00 ; SAW 54 + !BYTE $6A ; LAW _D042+0 +_F429 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B358 + !WORD _B358-* +_B359 + !BYTE $6E,$52 ; DLW [82] +; toolsrc/ed.pla: 1118: lncpy(@txtbuf, txtlinbuf=>[i]) +; toolsrc/ed.pla: 1119: puts(@txtbuf) +; toolsrc/ed.pla: 1120: putln +; toolsrc/ed.pla: 1121: next + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _D048+0 +_F430 !WORD _D048+0 + !BYTE $BA,$52 ; IDXLW [82] + !BYTE $62 ; LW + !BYTE $54 ; CALL _A002 +_F431 !WORD _A002 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X004 +_F432 !WORD 0 + !BYTE $54 ; CALL _X003 +_F433 !WORD 0 +_B360 + !BYTE $A4 ; INCBRLE _B359 + !WORD _B359-* +_B358 + !BYTE $76,$52 ; SLW [82] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1122: *csw = scrncsw +; toolsrc/ed.pla: 1123: end + !BYTE $66,$54 ; LLW [84] + !BYTE $7A,$36,$00 ; SAW 54 + !BYTE $5A,$56 ; LEAVE 86 +; toolsrc/ed.pla: 1124: def freesel#0 +_C048 ; freesel() +; toolsrc/ed.pla: 1125: word i + ; i -> [0] +; toolsrc/ed.pla: 1126: +; toolsrc/ed.pla: 1127: for i = 0 to numcliplines - 1 + !BYTE $58,$02,$00 ; ENTER 2,0 + !BYTE $6A ; LAW _D043+0 +_F434 !WORD _D043+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B361 + !WORD _B361-* +_B362 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 1128: if cliplinbuf=>[i] <> @nullstr +; toolsrc/ed.pla: 1129: delstr(cliplinbuf=>[i]) +; toolsrc/ed.pla: 1130: cliplinbuf=>[i] = @nullstr +; toolsrc/ed.pla: 1131: fin + !BYTE $6A ; LAW _D049+0 +_F435 !WORD _D049+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $26 ; LA _D036+0 +_F436 !WORD _D036+0 + !BYTE $22 ; BREQ _B364 + !WORD _B364-* + !BYTE $6A ; LAW _D049+0 +_F437 !WORD _D049+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F438 !WORD _C006 + !BYTE $26 ; LA _D036+0 +_F439 !WORD _D036+0 + !BYTE $6A ; LAW _D049+0 +_F440 !WORD _D049+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW +_B364 +_B365 +; toolsrc/ed.pla: 1132: next +_B363 + !BYTE $A4 ; INCBRLE _B362 + !WORD _B362-* +_B361 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1133: numcliplines = 0 +; toolsrc/ed.pla: 1134: end + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D043+0 +_F441 !WORD _D043+0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1135: def selrange#2 +_C049 ; selrange() +; toolsrc/ed.pla: 1136: word first, last + ; first -> [0] + ; last -> [2] +; toolsrc/ed.pla: 1137: +; toolsrc/ed.pla: 1138: if flags & selection + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 1139: if cursrow > selrow +; toolsrc/ed.pla: 1140: first, last = selrow, cursrow +; toolsrc/ed.pla: 1141: else + !BYTE $68 ; LAB _D040+0 +_F442 !WORD _D040+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B366 + !WORD _B366-* + !BYTE $6A ; LAW _D058+0 +_F443 !WORD _D058+0 + !BYTE $6A ; LAW _D059+0 +_F444 !WORD _D059+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B368 + !WORD _B368-* + !BYTE $6A ; LAW _D059+0 +_F445 !WORD _D059+0 + !BYTE $6A ; LAW _D058+0 +_F446 !WORD _D058+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B369 + !WORD _B369-* +_B368 +; toolsrc/ed.pla: 1142: first, last = cursrow, selrow +; toolsrc/ed.pla: 1143: fin + !BYTE $6A ; LAW _D058+0 +_F447 !WORD _D058+0 + !BYTE $6A ; LAW _D059+0 +_F448 !WORD _D059+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $76,$00 ; SLW [0] +_B369 +; toolsrc/ed.pla: 1144: else + !BYTE $50 ; BRNCH _B367 + !WORD _B367-* +_B366 +; toolsrc/ed.pla: 1145: first = cursrow +; toolsrc/ed.pla: 1146: last = first +; toolsrc/ed.pla: 1147: fin + !BYTE $6A ; LAW _D058+0 +_F449 !WORD _D058+0 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$02 ; SLW [2] +_B367 +; toolsrc/ed.pla: 1148: return first, last + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 1149: end +; toolsrc/ed.pla: 1150: def beginsel#0 +_C050 ; beginsel() +; toolsrc/ed.pla: 1151: flags = flags ^ selection +; toolsrc/ed.pla: 1152: selrow = cursrow +; toolsrc/ed.pla: 1153: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 1154: end + !BYTE $68 ; LAB _D040+0 +_F450 !WORD _D040+0 + !BYTE $2A,$10 ; CB 16 + !BYTE $98 ; XOR + !BYTE $78 ; SAB _D040+0 +_F451 !WORD _D040+0 + !BYTE $6A ; LAW _D058+0 +_F452 !WORD _D058+0 + !BYTE $7A ; SAW _D059+0 +_F453 !WORD _D059+0 + !BYTE $6A ; LAW _D060+0 +_F454 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F455 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F456 !WORD _C020 + !BYTE $5C ; RET +; toolsrc/ed.pla: 1155: def copysel#0 +_C051 ; copysel() +; toolsrc/ed.pla: 1156: word firstsel, lastsel + ; firstsel -> [0] + ; lastsel -> [2] +; toolsrc/ed.pla: 1157: +; toolsrc/ed.pla: 1158: freesel + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 1159: firstsel, lastsel = selrange +; toolsrc/ed.pla: 1160: for numcliplines = 0 to lastsel - firstsel + !BYTE $54 ; CALL _C048 +_F457 !WORD _C048 + !BYTE $54 ; CALL _C049 +_F458 !WORD _C049 + !BYTE $76,$02 ; SLW [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B370 + !WORD _B370-* +_B371 + !BYTE $7E ; DAW _D043+0 +_F459 !WORD _D043+0 +; toolsrc/ed.pla: 1161: cliplinbuf=>[numcliplines] = newstr(txtlinbuf=>[firstsel + numcliplines]) +; toolsrc/ed.pla: 1162: next + !BYTE $6A ; LAW _D048+0 +_F460 !WORD _D048+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B6 ; ADDAW _D043+0 +_F461 !WORD _D043+0 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $54 ; CALL _C007 +_F462 !WORD _C007 + !BYTE $6A ; LAW _D049+0 +_F463 !WORD _D049+0 + !BYTE $BE ; IDXAW _D043+0 +_F464 !WORD _D043+0 + !BYTE $72 ; SW +_B372 + !BYTE $A4 ; INCBRLE _B371 + !WORD _B371-* +_B370 + !BYTE $7A ; SAW _D043+0 +_F465 !WORD _D043+0 + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1163: flags = flags & ~selection +; toolsrc/ed.pla: 1164: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 1165: end + !BYTE $68 ; LAB _D040+0 +_F466 !WORD _D040+0 + !BYTE $5E,$EF ; CFFB -17 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F467 !WORD _D040+0 + !BYTE $6A ; LAW _D060+0 +_F468 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F469 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F470 !WORD _C020 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 1166: def cutsel#0 +_C052 ; cutsel() +; toolsrc/ed.pla: 1167: word firstsel, lastsel + ; firstsel -> [0] + ; lastsel -> [2] +; toolsrc/ed.pla: 1168: +; toolsrc/ed.pla: 1169: freesel + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/ed.pla: 1170: firstsel, lastsel = selrange +; toolsrc/ed.pla: 1171: if lastsel - firstsel < MAXCLIPLINES +; toolsrc/ed.pla: 1172: for numcliplines = 0 to lastsel - firstsel + !BYTE $54 ; CALL _C048 +_F471 !WORD _C048 + !BYTE $54 ; CALL _C049 +_F472 !WORD _C049 + !BYTE $76,$02 ; SLW [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B373 + !WORD _B373-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B375 + !WORD _B375-* +_B376 + !BYTE $7E ; DAW _D043+0 +_F473 !WORD _D043+0 +; toolsrc/ed.pla: 1173: cliplinbuf=>[numcliplines] = txtlinbuf=>[firstsel + numcliplines] +; toolsrc/ed.pla: 1174: next + !BYTE $6A ; LAW _D048+0 +_F474 !WORD _D048+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $B6 ; ADDAW _D043+0 +_F475 !WORD _D043+0 + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _D049+0 +_F476 !WORD _D049+0 + !BYTE $BE ; IDXAW _D043+0 +_F477 !WORD _D043+0 + !BYTE $72 ; SW +_B377 + !BYTE $A4 ; INCBRLE _B376 + !WORD _B376-* +_B375 + !BYTE $7A ; SAW _D043+0 +_F478 !WORD _D043+0 + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1175: memcpy(@txtlinbuf=>[firstsel], @txtlinbuf=>[lastsel + 1], (numlines - lastsel + 1) * 2) +; toolsrc/ed.pla: 1176: numlines = numlines - numcliplines +; toolsrc/ed.pla: 1177: for lastsel = numlines to numlines + numcliplines + !BYTE $6A ; LAW _D048+0 +_F479 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $6A ; LAW _D048+0 +_F480 !WORD _D048+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $6A ; LAW _D042+0 +_F481 !WORD _D042+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $8C ; INCR + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X018 +_F482 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F483 !WORD _D042+0 + !BYTE $6A ; LAW _D043+0 +_F484 !WORD _D043+0 + !BYTE $84 ; SUB + !BYTE $7E ; DAW _D042+0 +_F485 !WORD _D042+0 + !BYTE $B6 ; ADDAW _D043+0 +_F486 !WORD _D043+0 + !BYTE $6A ; LAW _D042+0 +_F487 !WORD _D042+0 + !BYTE $A0 ; BRGT _B378 + !WORD _B378-* +_B379 + !BYTE $6E,$02 ; DLW [2] +; toolsrc/ed.pla: 1178: txtlinbuf=>[lastsel] = @nullstr +; toolsrc/ed.pla: 1179: next + !BYTE $26 ; LA _D036+0 +_F488 !WORD _D036+0 + !BYTE $6A ; LAW _D048+0 +_F489 !WORD _D048+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $72 ; SW +_B380 + !BYTE $A4 ; INCBRLE _B379 + !WORD _B379-* +_B378 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1180: cursrow = firstsel +; toolsrc/ed.pla: 1181: if cursrow >= numlines +; toolsrc/ed.pla: 1182: cursrow = numlines - 1 +; toolsrc/ed.pla: 1183: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $7E ; DAW _D058+0 +_F490 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F491 !WORD _D042+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B381 + !WORD _B381-* + !BYTE $6A ; LAW _D042+0 +_F492 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $7A ; SAW _D058+0 +_F493 !WORD _D058+0 +_B381 +_B382 +; toolsrc/ed.pla: 1184: if cursrow < scrntop +; toolsrc/ed.pla: 1185: scrntop = cursrow +; toolsrc/ed.pla: 1186: fin + !BYTE $6A ; LAW _D058+0 +_F494 !WORD _D058+0 + !BYTE $6A ; LAW _D060+0 +_F495 !WORD _D060+0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B383 + !WORD _B383-* + !BYTE $6A ; LAW _D058+0 +_F496 !WORD _D058+0 + !BYTE $7A ; SAW _D060+0 +_F497 !WORD _D060+0 +_B383 +_B384 +; toolsrc/ed.pla: 1187: cursy = cursrow - scrntop +; toolsrc/ed.pla: 1188: flags = flags | changed +; toolsrc/ed.pla: 1189: flags = flags & ~selection +; toolsrc/ed.pla: 1190: redraw +; toolsrc/ed.pla: 1191: else + !BYTE $6A ; LAW _D058+0 +_F498 !WORD _D058+0 + !BYTE $6A ; LAW _D060+0 +_F499 !WORD _D060+0 + !BYTE $84 ; SUB + !BYTE $7A ; SAW _D052+0 +_F500 !WORD _D052+0 + !BYTE $68 ; LAB _D040+0 +_F501 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $7C ; DAB _D040+0 +_F502 !WORD _D040+0 + !BYTE $5E,$EF ; CFFB -17 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F503 !WORD _D040+0 + !BYTE $54 ; CALL _C025 +_F504 !WORD _C025 + !BYTE $50 ; BRNCH _B374 + !WORD _B374-* +_B373 +; toolsrc/ed.pla: 1192: bell +; toolsrc/ed.pla: 1193: fin + !BYTE $54 ; CALL _C000 +_F505 !WORD _C000 +_B374 +; toolsrc/ed.pla: 1194: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/ed.pla: 1195: def pastesel#0 +_C053 ; pastesel() +; toolsrc/ed.pla: 1196: word p + ; p -> [0] +; toolsrc/ed.pla: 1197: +; toolsrc/ed.pla: 1198: if numcliplines and numcliplines + numlines < MAXLINES + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/ed.pla: 1199: memcpy(@txtlinbuf=>[cursrow + numcliplines], @txtlinbuf=>[cursrow], (numlines - cursrow) * 2) +; toolsrc/ed.pla: 1200: for p = 0 to numcliplines - 1 + !BYTE $6A ; LAW _D043+0 +_F506 !WORD _D043+0 + !BYTE $AC ; BRAND _B385 + !WORD _B385-* + !BYTE $6A ; LAW _D043+0 +_F507 !WORD _D043+0 + !BYTE $B6 ; ADDAW _D042+0 +_F508 !WORD _D042+0 + !BYTE $2C,$E7,$03 ; CW 999 + !BYTE $46 ; ISLT +_B385 + !BYTE $4C ; BRFLS _B386 + !WORD _B386-* + !BYTE $6A ; LAW _D048+0 +_F509 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F510 !WORD _D058+0 + !BYTE $B6 ; ADDAW _D043+0 +_F511 !WORD _D043+0 + !BYTE $9E ; IDXW + !BYTE $6A ; LAW _D048+0 +_F512 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F513 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F514 !WORD _D042+0 + !BYTE $6A ; LAW _D058+0 +_F515 !WORD _D058+0 + !BYTE $84 ; SUB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X018 +_F516 !WORD 0 + !BYTE $6A ; LAW _D043+0 +_F517 !WORD _D043+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B388 + !WORD _B388-* +_B389 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/ed.pla: 1201: txtlinbuf=>[cursrow + p] = newstr(cliplinbuf=>[p]) +; toolsrc/ed.pla: 1202: next + !BYTE $6A ; LAW _D049+0 +_F518 !WORD _D049+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C007 +_F519 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F520 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F521 !WORD _D058+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $9E ; IDXW + !BYTE $72 ; SW +_B390 + !BYTE $A4 ; INCBRLE _B389 + !WORD _B389-* +_B388 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1203: numlines = numlines + numcliplines +; toolsrc/ed.pla: 1204: flags = flags | changed +; toolsrc/ed.pla: 1205: redraw +; toolsrc/ed.pla: 1206: else + !BYTE $6A ; LAW _D042+0 +_F522 !WORD _D042+0 + !BYTE $B6 ; ADDAW _D043+0 +_F523 !WORD _D043+0 + !BYTE $7A ; SAW _D042+0 +_F524 !WORD _D042+0 + !BYTE $68 ; LAB _D040+0 +_F525 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F526 !WORD _D040+0 + !BYTE $54 ; CALL _C025 +_F527 !WORD _C025 + !BYTE $50 ; BRNCH _B387 + !WORD _B387-* +_B386 +; toolsrc/ed.pla: 1207: bell +; toolsrc/ed.pla: 1208: fin + !BYTE $54 ; CALL _C000 +_F528 !WORD _C000 +_B387 +; toolsrc/ed.pla: 1209: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1210: def indentsel#0 +_C054 ; indentsel() +; toolsrc/ed.pla: 1211: byte indentstr[MAXLNLEN+1], j, l + ; indentstr -> [0] + ; j -> [80] + ; l -> [81] +; toolsrc/ed.pla: 1212: word firstsel, lastsel, i + ; firstsel -> [82] + ; lastsel -> [84] + ; i -> [86] +; toolsrc/ed.pla: 1213: +; toolsrc/ed.pla: 1214: freesel + !BYTE $58,$58,$00 ; ENTER 88,0 +; toolsrc/ed.pla: 1215: firstsel, lastsel = selrange +; toolsrc/ed.pla: 1216: for i = firstsel to lastsel + !BYTE $54 ; CALL _C048 +_F529 !WORD _C048 + !BYTE $54 ; CALL _C049 +_F530 !WORD _C049 + !BYTE $76,$54 ; SLW [84] + !BYTE $76,$52 ; SLW [82] + !BYTE $66,$54 ; LLW [84] + !BYTE $66,$52 ; LLW [82] + !BYTE $A0 ; BRGT _B391 + !WORD _B391-* +_B392 + !BYTE $6E,$56 ; DLW [86] +; toolsrc/ed.pla: 1217: l = ^(txtlinbuf=>[i]) +; toolsrc/ed.pla: 1218: if l and l < MAXLNLEN - 2 +; toolsrc/ed.pla: 1219: memcpy(@indentstr + 3, txtlinbuf=>[i] + 1, l) +; toolsrc/ed.pla: 1220: indentstr[0] = l + 2 +; toolsrc/ed.pla: 1221: indentstr[1] = keyspace +; toolsrc/ed.pla: 1222: indentstr[2] = keyspace +; toolsrc/ed.pla: 1223: // +; toolsrc/ed.pla: 1224: // Align indent +; toolsrc/ed.pla: 1225: // +; toolsrc/ed.pla: 1226: for j = 3 to indentstr[0] + !BYTE $6A ; LAW _D048+0 +_F531 !WORD _D048+0 + !BYTE $BA,$56 ; IDXLW [86] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $6C,$51 ; DLB [81] + !BYTE $AC ; BRAND _B394 + !WORD _B394-* + !BYTE $64,$51 ; LLB [81] + !BYTE $2A,$4D ; CB 77 + !BYTE $46 ; ISLT +_B394 + !BYTE $4C ; BRFLS _B395 + !WORD _B395-* + !BYTE $28,$03 ; LLA [3] + !BYTE $6A ; LAW _D048+0 +_F532 !WORD _D048+0 + !BYTE $BA,$56 ; IDXLW [86] + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $64,$51 ; LLB [81] + !BYTE $54 ; CALL _X018 +_F533 !WORD 0 + !BYTE $64,$51 ; LLB [81] + !BYTE $38,$02 ; ADDI 2 + !BYTE $74,$00 ; SLB [0] + !BYTE $2A,$A0 ; CB 160 + !BYTE $74,$01 ; SLB [1] + !BYTE $2A,$A0 ; CB 160 + !BYTE $74,$02 ; SLB [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $06 ; CN 3 + !BYTE $A0 ; BRGT _B397 + !WORD _B397-* +_B398 + !BYTE $6C,$50 ; DLB [80] +; toolsrc/ed.pla: 1227: if indentstr[j] <> keyspace +; toolsrc/ed.pla: 1228: if j & 1 == 0 +; toolsrc/ed.pla: 1229: indentstr[0]-- + !BYTE $28,$00 ; LLA [0] + !BYTE $B0,$50 ; ADDLB [80] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B400 + !WORD _B400-* + !BYTE $64,$50 ; LLB [80] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4E ; BRTRU _B402 + !WORD _B402-* + !BYTE $64,$00 ; LLB [0] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 1230: memcpy(@indentstr + 1, @indentstr + 2, indentstr[0]) +; toolsrc/ed.pla: 1231: fin + !BYTE $74,$00 ; SLB [0] + !BYTE $28,$01 ; LLA [1] + !BYTE $28,$02 ; LLA [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X018 +_F534 !WORD 0 +_B402 +_B403 +; toolsrc/ed.pla: 1232: break + !BYTE $50 ; BRNCH _B397 + !WORD _B397-* +; toolsrc/ed.pla: 1233: fin +_B400 +_B401 +; toolsrc/ed.pla: 1234: next +_B399 + !BYTE $A4 ; INCBRLE _B398 + !WORD _B398-* +_B397 + !BYTE $74,$50 ; SLB [80] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1235: delstr(txtlinbuf=>[i]) +; toolsrc/ed.pla: 1236: txtlinbuf=>[i] = newstr(@indentstr) +; toolsrc/ed.pla: 1237: flags = flags | changed +; toolsrc/ed.pla: 1238: fin + !BYTE $6A ; LAW _D048+0 +_F535 !WORD _D048+0 + !BYTE $BA,$56 ; IDXLW [86] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F536 !WORD _C006 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C007 +_F537 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F538 !WORD _D048+0 + !BYTE $BA,$56 ; IDXLW [86] + !BYTE $72 ; SW + !BYTE $68 ; LAB _D040+0 +_F539 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F540 !WORD _D040+0 +_B395 +_B396 +; toolsrc/ed.pla: 1239: next +_B393 + !BYTE $A4 ; INCBRLE _B392 + !WORD _B392-* +_B391 + !BYTE $76,$56 ; SLW [86] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1240: redraw +; toolsrc/ed.pla: 1241: end + !BYTE $54 ; CALL _C025 +_F541 !WORD _C025 + !BYTE $5A,$58 ; LEAVE 88 +; toolsrc/ed.pla: 1242: def undentsel#0 +_C055 ; undentsel() +; toolsrc/ed.pla: 1243: byte undentstr[MAXLNLEN+1], l + ; undentstr -> [0] + ; l -> [80] +; toolsrc/ed.pla: 1244: word firstsel, lastsel, i + ; firstsel -> [81] + ; lastsel -> [83] + ; i -> [85] +; toolsrc/ed.pla: 1245: +; toolsrc/ed.pla: 1246: freesel + !BYTE $58,$57,$00 ; ENTER 87,0 +; toolsrc/ed.pla: 1247: firstsel, lastsel = selrange +; toolsrc/ed.pla: 1248: for i = firstsel to lastsel + !BYTE $54 ; CALL _C048 +_F542 !WORD _C048 + !BYTE $54 ; CALL _C049 +_F543 !WORD _C049 + !BYTE $76,$53 ; SLW [83] + !BYTE $76,$51 ; SLW [81] + !BYTE $66,$53 ; LLW [83] + !BYTE $66,$51 ; LLW [81] + !BYTE $A0 ; BRGT _B404 + !WORD _B404-* +_B405 + !BYTE $6E,$55 ; DLW [85] +; toolsrc/ed.pla: 1249: l = ^(txtlinbuf=>[i]) +; toolsrc/ed.pla: 1250: if l +; toolsrc/ed.pla: 1251: memcpy(@undentstr + 1, txtlinbuf=>[i] + 1, l) +; toolsrc/ed.pla: 1252: if undentstr[1] == keyspace +; toolsrc/ed.pla: 1253: memcpy(@undentstr + 1, @undentstr + 2, l - 1) +; toolsrc/ed.pla: 1254: l-- + !BYTE $6A ; LAW _D048+0 +_F544 !WORD _D048+0 + !BYTE $BA,$55 ; IDXLW [85] + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $6C,$50 ; DLB [80] + !BYTE $4C ; BRFLS _B407 + !WORD _B407-* + !BYTE $28,$01 ; LLA [1] + !BYTE $6A ; LAW _D048+0 +_F545 !WORD _D048+0 + !BYTE $BA,$55 ; IDXLW [85] + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $64,$50 ; LLB [80] + !BYTE $54 ; CALL _X018 +_F546 !WORD 0 + !BYTE $64,$01 ; LLB [1] + !BYTE $2A,$A0 ; CB 160 + !BYTE $24 ; BRNE _B409 + !WORD _B409-* + !BYTE $28,$01 ; LLA [1] + !BYTE $28,$02 ; LLA [2] + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X018 +_F547 !WORD 0 + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 1255: if l and undentstr[1] == keyspace +; toolsrc/ed.pla: 1256: memcpy(@undentstr + 1, @undentstr + 2, l - 1) +; toolsrc/ed.pla: 1257: l-- + !BYTE $6C,$50 ; DLB [80] + !BYTE $AC ; BRAND _B411 + !WORD _B411-* + !BYTE $64,$01 ; LLB [1] + !BYTE $2A,$A0 ; CB 160 + !BYTE $40 ; ISEQ +_B411 + !BYTE $4C ; BRFLS _B412 + !WORD _B412-* + !BYTE $28,$01 ; LLA [1] + !BYTE $28,$02 ; LLA [2] + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _X018 +_F548 !WORD 0 + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR +; toolsrc/ed.pla: 1258: fin + !BYTE $74,$50 ; SLB [80] +_B412 +_B413 +; toolsrc/ed.pla: 1259: undentstr[0] = l +; toolsrc/ed.pla: 1260: delstr(txtlinbuf=>[i]) +; toolsrc/ed.pla: 1261: txtlinbuf=>[i] = newstr(@undentstr) +; toolsrc/ed.pla: 1262: flags = flags | changed +; toolsrc/ed.pla: 1263: fin + !BYTE $64,$50 ; LLB [80] + !BYTE $74,$00 ; SLB [0] + !BYTE $6A ; LAW _D048+0 +_F549 !WORD _D048+0 + !BYTE $BA,$55 ; IDXLW [85] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F550 !WORD _C006 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C007 +_F551 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F552 !WORD _D048+0 + !BYTE $BA,$55 ; IDXLW [85] + !BYTE $72 ; SW + !BYTE $68 ; LAB _D040+0 +_F553 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F554 !WORD _D040+0 +_B409 +_B410 +; toolsrc/ed.pla: 1264: fin +_B407 +_B408 +; toolsrc/ed.pla: 1265: next +_B406 + !BYTE $A4 ; INCBRLE _B405 + !WORD _B405-* +_B404 + !BYTE $76,$55 ; SLW [85] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1266: redraw +; toolsrc/ed.pla: 1267: end + !BYTE $54 ; CALL _C025 +_F555 !WORD _C025 + !BYTE $5A,$57 ; LEAVE 87 +; toolsrc/ed.pla: 1268: def autoindent(strptr)#0 + ; strptr -> [0] +_C056 ; autoindent() +; toolsrc/ed.pla: 1269: byte i + ; i -> [2] +; toolsrc/ed.pla: 1270: +; toolsrc/ed.pla: 1271: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B414 + !WORD _B414-* +_B415 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/ed.pla: 1272: if ^(strptr + i) <> keyspace +; toolsrc/ed.pla: 1273: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B417 + !WORD _B417-* + !BYTE $50 ; BRNCH _B414 + !WORD _B414-* +; toolsrc/ed.pla: 1274: fin +_B417 +_B418 +; toolsrc/ed.pla: 1275: next +_B416 + !BYTE $A4 ; INCBRLE _B415 + !WORD _B415-* +_B414 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1276: curshpos(i - 1) +; toolsrc/ed.pla: 1277: end + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C026 +_F556 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/ed.pla: 1278: def openline(row) + ; row -> [0] +_C057 ; openline() +; toolsrc/ed.pla: 1279: if numlines < MAXLINES + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/ed.pla: 1280: memcpy(@txtlinbuf=>[row + 1], @txtlinbuf=>[row], (numlines - row) * 2) +; toolsrc/ed.pla: 1281: txtlinbuf=>[row] = @nullstr +; toolsrc/ed.pla: 1282: numlines++ + !BYTE $6A ; LAW _D042+0 +_F557 !WORD _D042+0 + !BYTE $2C,$E7,$03 ; CW 999 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B419 + !WORD _B419-* + !BYTE $6A ; LAW _D048+0 +_F558 !WORD _D048+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $6A ; LAW _D048+0 +_F559 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $6A ; LAW _D042+0 +_F560 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $84 ; SUB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X018 +_F561 !WORD 0 + !BYTE $26 ; LA _D036+0 +_F562 !WORD _D036+0 + !BYTE $6A ; LAW _D048+0 +_F563 !WORD _D048+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW + !BYTE $6A ; LAW _D042+0 +_F564 !WORD _D042+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 1283: flags = flags | changed +; toolsrc/ed.pla: 1284: return TRUE + !BYTE $7A ; SAW _D042+0 +_F565 !WORD _D042+0 + !BYTE $68 ; LAB _D040+0 +_F566 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F567 !WORD _D040+0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1285: fin +_B419 +_B420 +; toolsrc/ed.pla: 1286: bell +; toolsrc/ed.pla: 1287: return FALSE + !BYTE $54 ; CALL _C000 +_F568 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1288: end +; toolsrc/ed.pla: 1289: def joinline#0 +_C058 ; joinline() +; toolsrc/ed.pla: 1290: byte joinstr[MAXLNLEN+1], joinlen, stripjoin[MAXLNLEN+1] + ; joinstr -> [0] + ; joinlen -> [80] + ; stripjoin -> [81] +; toolsrc/ed.pla: 1291: +; toolsrc/ed.pla: 1292: if cursrow < numlines - 1 + !BYTE $58,$A1,$00 ; ENTER 161,0 +; toolsrc/ed.pla: 1293: strstripcpy(@joinstr, txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1294: memcpy(@stripjoin, txtlinbuf=>[cursrow + 1], ^(txtlinbuf=>[cursrow + 1]) + 1) +; toolsrc/ed.pla: 1295: striplead(@stripjoin, keyspace); +; toolsrc/ed.pla: 1296: joinlen = joinstr + stripjoin +; toolsrc/ed.pla: 1297: if joinlen <= MAXLNLEN +; toolsrc/ed.pla: 1298: curshpos(joinstr) +; toolsrc/ed.pla: 1299: memcpy(@joinstr + joinstr + 1, @stripjoin + 1, stripjoin) +; toolsrc/ed.pla: 1300: joinstr = joinlen +; toolsrc/ed.pla: 1301: delstr(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1302: txtlinbuf=>[cursrow] = newstr(@joinstr) +; toolsrc/ed.pla: 1303: delstr(txtlinbuf=>[cursrow + 1]) +; toolsrc/ed.pla: 1304: numlines-- + !BYTE $6A ; LAW _D058+0 +_F569 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F570 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B421 + !WORD _B421-* + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D048+0 +_F571 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F572 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C005 +_F573 !WORD _C005 + !BYTE $28,$51 ; LLA [81] + !BYTE $6A ; LAW _D048+0 +_F574 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F575 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $6A ; LAW _D048+0 +_F576 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F577 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X018 +_F578 !WORD 0 + !BYTE $28,$51 ; LLA [81] + !BYTE $2A,$A0 ; CB 160 + !BYTE $54 ; CALL _C003 +_F579 !WORD _C003 + !BYTE $64,$00 ; LLB [0] + !BYTE $B0,$51 ; ADDLB [81] + !BYTE $6C,$50 ; DLB [80] + !BYTE $2A,$4F ; CB 79 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B423 + !WORD _B423-* + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _C026 +_F580 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $28,$00 ; LLA [0] + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $8C ; INCR + !BYTE $28,$52 ; LLA [82] + !BYTE $64,$51 ; LLB [81] + !BYTE $54 ; CALL _X018 +_F581 !WORD 0 + !BYTE $64,$50 ; LLB [80] + !BYTE $74,$00 ; SLB [0] + !BYTE $6A ; LAW _D048+0 +_F582 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F583 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F584 !WORD _C006 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C007 +_F585 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F586 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F587 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D048+0 +_F588 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F589 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F590 !WORD _C006 + !BYTE $6A ; LAW _D042+0 +_F591 !WORD _D042+0 + !BYTE $8E ; DECR +; toolsrc/ed.pla: 1305: memcpy(@txtlinbuf=>[cursrow + 1], @txtlinbuf=>[cursrow + 2], (numlines - cursrow) * 2) +; toolsrc/ed.pla: 1306: flags = flags | changed +; toolsrc/ed.pla: 1307: return + !BYTE $7A ; SAW _D042+0 +_F592 !WORD _D042+0 + !BYTE $6A ; LAW _D048+0 +_F593 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F594 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $6A ; LAW _D048+0 +_F595 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F596 !WORD _D058+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $9E ; IDXW + !BYTE $6A ; LAW _D042+0 +_F597 !WORD _D042+0 + !BYTE $6A ; LAW _D058+0 +_F598 !WORD _D058+0 + !BYTE $84 ; SUB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X018 +_F599 !WORD 0 + !BYTE $68 ; LAB _D040+0 +_F600 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F601 !WORD _D040+0 + !BYTE $5A,$A1 ; LEAVE 161 +; toolsrc/ed.pla: 1308: fin +_B423 +_B424 +; toolsrc/ed.pla: 1309: fin +_B421 +_B422 +; toolsrc/ed.pla: 1310: bell +; toolsrc/ed.pla: 1311: end + !BYTE $54 ; CALL _C000 +_F602 !WORD _C000 + !BYTE $5A,$A1 ; LEAVE 161 +; toolsrc/ed.pla: 1312: def splitline#0 +_C059 ; splitline() +; toolsrc/ed.pla: 1313: byte splitstr[MAXLNLEN+1], splitlen, i + ; splitstr -> [0] + ; splitlen -> [80] + ; i -> [81] +; toolsrc/ed.pla: 1314: +; toolsrc/ed.pla: 1315: if openline(cursrow + 1) + !BYTE $58,$52,$00 ; ENTER 82,0 +; toolsrc/ed.pla: 1316: if curscol +; toolsrc/ed.pla: 1317: splitlen = ^(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1318: if curscol < splitlen - 1 +; toolsrc/ed.pla: 1319: splitstr = splitlen - curscol +; toolsrc/ed.pla: 1320: memcpy(@splitstr + 1, txtlinbuf=>[cursrow] + curscol + 1, splitstr) +; toolsrc/ed.pla: 1321: striplead(@splitstr, keyspace) +; toolsrc/ed.pla: 1322: for i = 1 to curscol + !BYTE $6A ; LAW _D058+0 +_F603 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C057 +_F604 !WORD _C057 + !BYTE $4C ; BRFLS _B425 + !WORD _B425-* + !BYTE $6A ; LAW _D054+0 +_F605 !WORD _D054+0 + !BYTE $4C ; BRFLS _B427 + !WORD _B427-* + !BYTE $6A ; LAW _D048+0 +_F606 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F607 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $74,$50 ; SLB [80] + !BYTE $6A ; LAW _D054+0 +_F608 !WORD _D054+0 + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B429 + !WORD _B429-* + !BYTE $64,$50 ; LLB [80] + !BYTE $6A ; LAW _D054+0 +_F609 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $74,$00 ; SLB [0] + !BYTE $28,$01 ; LLA [1] + !BYTE $6A ; LAW _D048+0 +_F610 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F611 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $B6 ; ADDAW _D054+0 +_F612 !WORD _D054+0 + !BYTE $8C ; INCR + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X018 +_F613 !WORD 0 + !BYTE $28,$00 ; LLA [0] + !BYTE $2A,$A0 ; CB 160 + !BYTE $54 ; CALL _C003 +_F614 !WORD _C003 + !BYTE $6A ; LAW _D054+0 +_F615 !WORD _D054+0 + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B431 + !WORD _B431-* +_B432 + !BYTE $6C,$51 ; DLB [81] +; toolsrc/ed.pla: 1323: if ^(txtlinbuf=>[cursrow] + i) <> keyspace +; toolsrc/ed.pla: 1324: break + !BYTE $6A ; LAW _D048+0 +_F616 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F617 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $B0,$51 ; ADDLB [81] + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B434 + !WORD _B434-* + !BYTE $50 ; BRNCH _B431 + !WORD _B431-* +; toolsrc/ed.pla: 1325: fin +_B434 +_B435 +; toolsrc/ed.pla: 1326: memcpy(@splitstr + 2, @splitstr + 1, splitstr) +; toolsrc/ed.pla: 1327: splitstr[1] = keyspace +; toolsrc/ed.pla: 1328: splitstr++ + !BYTE $28,$02 ; LLA [2] + !BYTE $28,$01 ; LLA [1] + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X018 +_F618 !WORD 0 + !BYTE $2A,$A0 ; CB 160 + !BYTE $74,$01 ; SLB [1] + !BYTE $64,$00 ; LLB [0] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 1329: next + !BYTE $74,$00 ; SLB [0] +_B433 + !BYTE $A4 ; INCBRLE _B432 + !WORD _B432-* +_B431 + !BYTE $74,$51 ; SLB [81] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1330: txtlinbuf=>[cursrow + 1] = newstr(@splitstr) +; toolsrc/ed.pla: 1331: splitstr = curscol +; toolsrc/ed.pla: 1332: memcpy(@splitstr + 1, txtlinbuf=>[cursrow] + 1, splitstr) +; toolsrc/ed.pla: 1333: delstr(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1334: txtlinbuf=>[cursrow] = newstr(@splitstr) +; toolsrc/ed.pla: 1335: curshpos(i - 1) +; toolsrc/ed.pla: 1336: else + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C007 +_F619 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F620 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F621 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $6A ; LAW _D054+0 +_F622 !WORD _D054+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $28,$01 ; LLA [1] + !BYTE $6A ; LAW _D048+0 +_F623 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F624 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $8C ; INCR + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _X018 +_F625 !WORD 0 + !BYTE $6A ; LAW _D048+0 +_F626 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F627 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C006 +_F628 !WORD _C006 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C007 +_F629 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F630 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F631 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $64,$51 ; LLB [81] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C026 +_F632 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B430 + !WORD _B430-* +_B429 +; toolsrc/ed.pla: 1337: if splitlen > 0 +; toolsrc/ed.pla: 1338: for curscol = 1 to splitlen - 1 + !BYTE $64,$50 ; LLB [80] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B436 + !WORD _B436-* + !BYTE $64,$50 ; LLB [80] + !BYTE $8E ; DECR + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B438 + !WORD _B438-* +_B439 + !BYTE $7E ; DAW _D054+0 +_F633 !WORD _D054+0 +; toolsrc/ed.pla: 1339: if ^(txtlinbuf=>[cursrow] + curscol) <> keyspace +; toolsrc/ed.pla: 1340: break + !BYTE $6A ; LAW _D048+0 +_F634 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F635 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $B6 ; ADDAW _D054+0 +_F636 !WORD _D054+0 + !BYTE $60 ; LB + !BYTE $2A,$A0 ; CB 160 + !BYTE $22 ; BREQ _B441 + !WORD _B441-* + !BYTE $50 ; BRNCH _B438 + !WORD _B438-* +; toolsrc/ed.pla: 1341: fin +_B441 +_B442 +; toolsrc/ed.pla: 1342: next +_B440 + !BYTE $A4 ; INCBRLE _B439 + !WORD _B439-* +_B438 + !BYTE $7A ; SAW _D054+0 +_F637 !WORD _D054+0 + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1343: curshpos(curscol - 1) +; toolsrc/ed.pla: 1344: fin + !BYTE $6A ; LAW _D054+0 +_F638 !WORD _D054+0 + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C026 +_F639 !WORD _C026 + !BYTE $30 ; DROP +_B436 +_B437 +; toolsrc/ed.pla: 1345: fin +_B430 +; toolsrc/ed.pla: 1346: else + !BYTE $50 ; BRNCH _B428 + !WORD _B428-* +_B427 +; toolsrc/ed.pla: 1347: txtlinbuf=>[cursrow + 1] = txtlinbuf=>[cursrow] +; toolsrc/ed.pla: 1348: txtlinbuf=>[cursrow] = @nullstr +; toolsrc/ed.pla: 1349: fin + !BYTE $6A ; LAW _D048+0 +_F640 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F641 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D048+0 +_F642 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F643 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $9E ; IDXW + !BYTE $72 ; SW + !BYTE $26 ; LA _D036+0 +_F644 !WORD _D036+0 + !BYTE $6A ; LAW _D048+0 +_F645 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F646 !WORD _D058+0 + !BYTE $72 ; SW +_B428 +; toolsrc/ed.pla: 1350: fin +_B425 +_B426 +; toolsrc/ed.pla: 1351: end + !BYTE $5A,$52 ; LEAVE 82 +; toolsrc/ed.pla: 1352: def editkey(key) + ; key -> [0] +_C060 ; editkey() +; toolsrc/ed.pla: 1353: if key >= keyspace or key == keydelete or key == keyctrld or key == keyctrlr + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/ed.pla: 1354: return TRUE + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$A0 ; CB 160 + !BYTE $48 ; ISGE + !BYTE $AE ; BROR _B443 + !WORD _B443-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$FF ; CB 255 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B444 + !WORD _B444-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$84 ; CB 132 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B445 + !WORD _B445-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$92 ; CB 146 + !BYTE $40 ; ISEQ +_B445 +_B444 +_B443 + !BYTE $4C ; BRFLS _B446 + !WORD _B446-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1355: fin +_B446 +_B447 +; toolsrc/ed.pla: 1356: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/ed.pla: 1357: end +; toolsrc/ed.pla: 1358: def editline(key) + ; key -> [0] +_C061 ; editline() +; toolsrc/ed.pla: 1359: word undoline + ; undoline -> [2] +; toolsrc/ed.pla: 1360: byte undopos, localchange, editstr[], editlen, editchars[MAXLNLEN+1] + ; undopos -> [4] + ; localchange -> [5] + ; editstr -> [6] + ; editlen -> [6] + ; editchars -> [7] +; toolsrc/ed.pla: 1361: +; toolsrc/ed.pla: 1362: if (editkey(key)) + !BYTE $58,$57,$01 ; ENTER 87,1 +; toolsrc/ed.pla: 1363: undopos = curscol +; toolsrc/ed.pla: 1364: undoline = txtlinbuf=>[cursrow] +; toolsrc/ed.pla: 1365: editlen = MAXLNLEN +; toolsrc/ed.pla: 1366: memset(@editchars, $A0A0, MAXLNLEN) +; toolsrc/ed.pla: 1367: memcpy(@editchars, undoline + 1, ^undoline) +; toolsrc/ed.pla: 1368: txtlinbuf=>[cursrow] = @editstr +; toolsrc/ed.pla: 1369: localchange = FALSE +; toolsrc/ed.pla: 1370: repeat + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C060 +_F647 !WORD _C060 + !BYTE $4C ; BRFLS _B448 + !WORD _B448-* + !BYTE $6A ; LAW _D054+0 +_F648 !WORD _D054+0 + !BYTE $74,$04 ; SLB [4] + !BYTE $6A ; LAW _D048+0 +_F649 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F650 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$4F ; CB 79 + !BYTE $74,$06 ; SLB [6] + !BYTE $28,$07 ; LLA [7] + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2A,$4F ; CB 79 + !BYTE $54 ; CALL _X017 +_F651 !WORD 0 + !BYTE $28,$07 ; LLA [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F652 !WORD 0 + !BYTE $28,$06 ; LLA [6] + !BYTE $6A ; LAW _D048+0 +_F653 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F654 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] +_B451 +; toolsrc/ed.pla: 1371: when key + !BYTE $66,$00 ; LLW [0] + !BYTE $52 ; SEL + !WORD _B454-* +; toolsrc/ed.pla: 1372: is keyctrld +_B455 +; toolsrc/ed.pla: 1373: memcpy(@editchars[curscol], @editchars[curscol + 1], MAXLNLEN - 1 - curscol) +; toolsrc/ed.pla: 1374: editchars[MAXLNLEN - 1] = keyspace +; toolsrc/ed.pla: 1375: cursoff +; toolsrc/ed.pla: 1376: drawrow(cursy, scrnleft, @editstr) +; toolsrc/ed.pla: 1377: curson +; toolsrc/ed.pla: 1378: localchange = TRUE +; toolsrc/ed.pla: 1379: break + !BYTE $28,$07 ; LLA [7] + !BYTE $B6 ; ADDAW _D054+0 +_F655 !WORD _D054+0 + !BYTE $28,$07 ; LLA [7] + !BYTE $6A ; LAW _D054+0 +_F656 !WORD _D054+0 + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $2A,$4E ; CB 78 + !BYTE $6A ; LAW _D054+0 +_F657 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F658 !WORD 0 + !BYTE $2A,$A0 ; CB 160 + !BYTE $74,$55 ; SLB [85] + !BYTE $54 ; CALL _C022 +_F659 !WORD _C022 + !BYTE $6A ; LAW _D052+0 +_F660 !WORD _D052+0 + !BYTE $6A ; LAW _D053+0 +_F661 !WORD _D053+0 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C019 +_F662 !WORD _C019 + !BYTE $54 ; CALL _C023 +_F663 !WORD _C023 + !BYTE $20 ; MINUS ONE + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B453 + !WORD _B453-* +; toolsrc/ed.pla: 1380: is keyctrlr +_B456 +; toolsrc/ed.pla: 1381: memset(@editchars, $A0A0, MAXLNLEN) +; toolsrc/ed.pla: 1382: memcpy(@editchars, undoline + 1, ^undoline) +; toolsrc/ed.pla: 1383: cursoff +; toolsrc/ed.pla: 1384: if curshpos(undopos) +; toolsrc/ed.pla: 1385: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 1386: else + !BYTE $28,$07 ; LLA [7] + !BYTE $2C,$A0,$A0 ; CW 41120 + !BYTE $2A,$4F ; CB 79 + !BYTE $54 ; CALL _X017 +_F664 !WORD 0 + !BYTE $28,$07 ; LLA [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F665 !WORD 0 + !BYTE $54 ; CALL _C022 +_F666 !WORD _C022 + !BYTE $64,$04 ; LLB [4] + !BYTE $54 ; CALL _C026 +_F667 !WORD _C026 + !BYTE $4C ; BRFLS _B457 + !WORD _B457-* + !BYTE $6A ; LAW _D060+0 +_F668 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F669 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F670 !WORD _C021 + !BYTE $50 ; BRNCH _B458 + !WORD _B458-* +_B457 +; toolsrc/ed.pla: 1387: drawrow(cursy, scrnleft, @editstr) +; toolsrc/ed.pla: 1388: fin + !BYTE $6A ; LAW _D052+0 +_F671 !WORD _D052+0 + !BYTE $6A ; LAW _D053+0 +_F672 !WORD _D053+0 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C019 +_F673 !WORD _C019 +_B458 +; toolsrc/ed.pla: 1389: curson +; toolsrc/ed.pla: 1390: localchange = FALSE +; toolsrc/ed.pla: 1391: break + !BYTE $54 ; CALL _C023 +_F674 !WORD _C023 + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B453 + !WORD _B453-* +; toolsrc/ed.pla: 1392: is keydelete +_B459 +; toolsrc/ed.pla: 1393: if curscol > 0 +; toolsrc/ed.pla: 1394: memcpy(@editchars[curscol - 1], @editchars[curscol], MAXLNLEN - curscol) +; toolsrc/ed.pla: 1395: editchars[MAXLNLEN - 1] = keyspace +; toolsrc/ed.pla: 1396: cursoff +; toolsrc/ed.pla: 1397: if curshpos(curscol - 1) +; toolsrc/ed.pla: 1398: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 1399: else + !BYTE $6A ; LAW _D054+0 +_F675 !WORD _D054+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B460 + !WORD _B460-* + !BYTE $28,$07 ; LLA [7] + !BYTE $6A ; LAW _D054+0 +_F676 !WORD _D054+0 + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $28,$07 ; LLA [7] + !BYTE $B6 ; ADDAW _D054+0 +_F677 !WORD _D054+0 + !BYTE $2A,$4F ; CB 79 + !BYTE $6A ; LAW _D054+0 +_F678 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F679 !WORD 0 + !BYTE $2A,$A0 ; CB 160 + !BYTE $74,$55 ; SLB [85] + !BYTE $54 ; CALL _C022 +_F680 !WORD _C022 + !BYTE $6A ; LAW _D054+0 +_F681 !WORD _D054+0 + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C026 +_F682 !WORD _C026 + !BYTE $4C ; BRFLS _B462 + !WORD _B462-* + !BYTE $6A ; LAW _D060+0 +_F683 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F684 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F685 !WORD _C021 + !BYTE $50 ; BRNCH _B463 + !WORD _B463-* +_B462 +; toolsrc/ed.pla: 1400: drawrow(cursy, scrnleft, @editstr) +; toolsrc/ed.pla: 1401: fin + !BYTE $6A ; LAW _D052+0 +_F686 !WORD _D052+0 + !BYTE $6A ; LAW _D053+0 +_F687 !WORD _D053+0 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C019 +_F688 !WORD _C019 +_B463 +; toolsrc/ed.pla: 1402: curson +; toolsrc/ed.pla: 1403: localchange = TRUE +; toolsrc/ed.pla: 1404: fin + !BYTE $54 ; CALL _C023 +_F689 !WORD _C023 + !BYTE $20 ; MINUS ONE + !BYTE $74,$05 ; SLB [5] +_B460 +_B461 +; toolsrc/ed.pla: 1405: break + !BYTE $50 ; BRNCH _B453 + !WORD _B453-* +; toolsrc/ed.pla: 1406: otherwise +_B454 + !BYTE $03 ; CASEBLOCK + !WORD $0084 + !WORD _B455-* + !WORD $0092 + !WORD _B456-* + !WORD $00FF + !WORD _B459-* +; toolsrc/ed.pla: 1407: if flags & insmode +; toolsrc/ed.pla: 1408: if editchars[MAXLNLEN - 1] == keyspace +; toolsrc/ed.pla: 1409: memcpy(@editchars[curscol+1], @editchars[curscol], MAXLNLEN - 1 - curscol) +; toolsrc/ed.pla: 1410: else + !BYTE $68 ; LAB _D040+0 +_F690 !WORD _D040+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B464 + !WORD _B464-* + !BYTE $64,$55 ; LLB [85] + !BYTE $2A,$A0 ; CB 160 + !BYTE $24 ; BRNE _B466 + !WORD _B466-* + !BYTE $28,$07 ; LLA [7] + !BYTE $6A ; LAW _D054+0 +_F691 !WORD _D054+0 + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $28,$07 ; LLA [7] + !BYTE $B6 ; ADDAW _D054+0 +_F692 !WORD _D054+0 + !BYTE $2A,$4E ; CB 78 + !BYTE $6A ; LAW _D054+0 +_F693 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F694 !WORD 0 + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +_B466 +; toolsrc/ed.pla: 1411: bell +; toolsrc/ed.pla: 1412: break + !BYTE $54 ; CALL _C000 +_F695 !WORD _C000 + !BYTE $50 ; BRNCH _B453 + !WORD _B453-* +; toolsrc/ed.pla: 1413: fin +_B467 +; toolsrc/ed.pla: 1414: fin +_B464 +_B465 +; toolsrc/ed.pla: 1415: editchars[curscol] = caseconv(key) +; toolsrc/ed.pla: 1416: cursoff +; toolsrc/ed.pla: 1417: if curshpos(curscol + 1) +; toolsrc/ed.pla: 1418: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 1419: else + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F696 !WORD _C009 + !BYTE $28,$07 ; LLA [7] + !BYTE $B6 ; ADDAW _D054+0 +_F697 !WORD _D054+0 + !BYTE $70 ; SB + !BYTE $54 ; CALL _C022 +_F698 !WORD _C022 + !BYTE $6A ; LAW _D054+0 +_F699 !WORD _D054+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C026 +_F700 !WORD _C026 + !BYTE $4C ; BRFLS _B468 + !WORD _B468-* + !BYTE $6A ; LAW _D060+0 +_F701 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F702 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F703 !WORD _C021 + !BYTE $50 ; BRNCH _B469 + !WORD _B469-* +_B468 +; toolsrc/ed.pla: 1420: drawrow(cursy, scrnleft, @editstr) +; toolsrc/ed.pla: 1421: fin + !BYTE $6A ; LAW _D052+0 +_F704 !WORD _D052+0 + !BYTE $6A ; LAW _D053+0 +_F705 !WORD _D053+0 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C019 +_F706 !WORD _C019 +_B469 +; toolsrc/ed.pla: 1422: curson +; toolsrc/ed.pla: 1423: localchange = TRUE +; toolsrc/ed.pla: 1424: break + !BYTE $54 ; CALL _C023 +_F707 !WORD _C023 + !BYTE $20 ; MINUS ONE + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B453 + !WORD _B453-* +; toolsrc/ed.pla: 1425: wend +_B453 +; toolsrc/ed.pla: 1426: key = keyin() +; toolsrc/ed.pla: 1427: until not editkey(key) + !BYTE $6A ; LAW _D057+0 +_F708 !WORD _D057+0 + !BYTE $56 ; ICAL + !BYTE $76,$00 ; SLW [0] +_B452 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C060 +_F709 !WORD _C060 + !BYTE $4E ; BRTRU _B451 + !WORD _B451-* +_B450 +; toolsrc/ed.pla: 1428: if localchange +; toolsrc/ed.pla: 1429: flags = flags | changed +; toolsrc/ed.pla: 1430: delstr(undoline) +; toolsrc/ed.pla: 1431: txtlinbuf=>[cursrow] = newstr(@editstr) +; toolsrc/ed.pla: 1432: else + !BYTE $64,$05 ; LLB [5] + !BYTE $4C ; BRFLS _B470 + !WORD _B470-* + !BYTE $68 ; LAB _D040+0 +_F710 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F711 !WORD _D040+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C006 +_F712 !WORD _C006 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C007 +_F713 !WORD _C007 + !BYTE $6A ; LAW _D048+0 +_F714 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F715 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B471 + !WORD _B471-* +_B470 +; toolsrc/ed.pla: 1433: txtlinbuf=>[cursrow] = undoline +; toolsrc/ed.pla: 1434: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D048+0 +_F716 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F717 !WORD _D058+0 + !BYTE $72 ; SW +_B471 +; toolsrc/ed.pla: 1435: fin +_B448 +_B449 +; toolsrc/ed.pla: 1436: return key + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$57 ; LEAVE 87 +; toolsrc/ed.pla: 1437: end +; toolsrc/ed.pla: 1438: def editmode#0 +_C062 ; editmode() +; toolsrc/ed.pla: 1439: if MACHID == $F2 // Apple 3 +; toolsrc/ed.pla: 1440: dev_control(cmdsys.devcons, 11, @a3noecho) +; toolsrc/ed.pla: 1441: fin + !BYTE $68 ; LAB _X001+0 +_F718 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $24 ; BRNE _B472 + !WORD _B472-* + !BYTE $68 ; LAB _X000+20 +_F719 !WORD 0+20 + !BYTE $16 ; CN 11 + !BYTE $26 ; LA _D063+0 +_F720 !WORD _D063+0 + !BYTE $54 ; CALL _C040 +_F721 !WORD _C040 + !BYTE $30 ; DROP +_B472 +_B473 +; toolsrc/ed.pla: 1442: repeat +_B475 +; toolsrc/ed.pla: 1443: when editline(keyin()) + !BYTE $6A ; LAW _D057+0 +_F722 !WORD _D057+0 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C061 +_F723 !WORD _C061 + !BYTE $52 ; SEL + !WORD _B478-* +; toolsrc/ed.pla: 1444: is keyarrowup +_B479 +; toolsrc/ed.pla: 1445: cursup; break + !BYTE $54 ; CALL _C030 +_F724 !WORD _C030 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1446: is keyarrowdown +_B480 +; toolsrc/ed.pla: 1447: cursdown; break + !BYTE $54 ; CALL _C032 +_F725 !WORD _C032 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1448: is keyarrowleft +_B481 +; toolsrc/ed.pla: 1449: cursleft; break + !BYTE $54 ; CALL _C034 +_F726 !WORD _C034 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1450: is keyarrowright +_B482 +; toolsrc/ed.pla: 1451: cursright; break + !BYTE $54 ; CALL _C036 +_F727 !WORD _C036 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1452: is keyctrlw +_B483 +; toolsrc/ed.pla: 1453: pgup; break + !BYTE $54 ; CALL _C031 +_F728 !WORD _C031 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1454: is keyctrlz +_B484 +; toolsrc/ed.pla: 1455: pgdown; break + !BYTE $54 ; CALL _C033 +_F729 !WORD _C033 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1456: is keyctrla +_B485 +; toolsrc/ed.pla: 1457: pgleft; break + !BYTE $54 ; CALL _C035 +_F730 !WORD _C035 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1458: is keyctrls +_B486 +; toolsrc/ed.pla: 1459: pgright; break + !BYTE $54 ; CALL _C037 +_F731 !WORD _C037 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1460: is keyctrlq +_B487 +; toolsrc/ed.pla: 1461: curshome; break + !BYTE $54 ; CALL _C028 +_F732 !WORD _C028 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1462: is keyctrle +_B488 +; toolsrc/ed.pla: 1463: cursend; break + !BYTE $54 ; CALL _C029 +_F733 !WORD _C029 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1464: is keyctrlb +_B489 +; toolsrc/ed.pla: 1465: beginsel; break + !BYTE $54 ; CALL _C050 +_F734 !WORD _C050 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1466: is keyctrlc +_B490 +; toolsrc/ed.pla: 1467: copysel; break + !BYTE $54 ; CALL _C051 +_F735 !WORD _C051 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1468: is keyctrlx +_B491 +; toolsrc/ed.pla: 1469: cutsel; break + !BYTE $54 ; CALL _C052 +_F736 !WORD _C052 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1470: is keyctrlv +_B492 +; toolsrc/ed.pla: 1471: pastesel; break + !BYTE $54 ; CALL _C053 +_F737 !WORD _C053 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1472: is keyctrlf +_B493 +; toolsrc/ed.pla: 1473: if cursrow == (numlines - 1) +; toolsrc/ed.pla: 1474: if numlines < MAXLINES +; toolsrc/ed.pla: 1475: numlines++ + !BYTE $6A ; LAW _D058+0 +_F738 !WORD _D058+0 + !BYTE $6A ; LAW _D042+0 +_F739 !WORD _D042+0 + !BYTE $8E ; DECR + !BYTE $24 ; BRNE _B494 + !WORD _B494-* + !BYTE $6A ; LAW _D042+0 +_F740 !WORD _D042+0 + !BYTE $2C,$E7,$03 ; CW 999 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B496 + !WORD _B496-* + !BYTE $6A ; LAW _D042+0 +_F741 !WORD _D042+0 + !BYTE $8C ; INCR +; toolsrc/ed.pla: 1476: cursdown +; toolsrc/ed.pla: 1477: flags = flags | changed +; toolsrc/ed.pla: 1478: drawgutter(scrntop, scrnleft) +; toolsrc/ed.pla: 1479: else + !BYTE $7A ; SAW _D042+0 +_F742 !WORD _D042+0 + !BYTE $54 ; CALL _C032 +_F743 !WORD _C032 + !BYTE $68 ; LAB _D040+0 +_F744 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F745 !WORD _D040+0 + !BYTE $6A ; LAW _D060+0 +_F746 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F747 !WORD _D053+0 + !BYTE $54 ; CALL _C020 +_F748 !WORD _C020 + !BYTE $50 ; BRNCH _B497 + !WORD _B497-* +_B496 +; toolsrc/ed.pla: 1480: bell +; toolsrc/ed.pla: 1481: fin + !BYTE $54 ; CALL _C000 +_F749 !WORD _C000 +_B497 +; toolsrc/ed.pla: 1482: break + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1483: fin +_B494 +_B495 +; toolsrc/ed.pla: 1484: cursdown +; toolsrc/ed.pla: 1485: is keyctrlo + !BYTE $54 ; CALL _C032 +_F750 !WORD _C032 +_B498 +; toolsrc/ed.pla: 1486: openline(cursrow) +; toolsrc/ed.pla: 1487: if cursrow +; toolsrc/ed.pla: 1488: autoindent(txtlinbuf=>[cursrow - 1]) +; toolsrc/ed.pla: 1489: else + !BYTE $6A ; LAW _D058+0 +_F751 !WORD _D058+0 + !BYTE $54 ; CALL _C057 +_F752 !WORD _C057 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D058+0 +_F753 !WORD _D058+0 + !BYTE $4C ; BRFLS _B499 + !WORD _B499-* + !BYTE $6A ; LAW _D048+0 +_F754 !WORD _D048+0 + !BYTE $6A ; LAW _D058+0 +_F755 !WORD _D058+0 + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $54 ; CALL _C056 +_F756 !WORD _C056 + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +_B499 +; toolsrc/ed.pla: 1490: curshpos(0) +; toolsrc/ed.pla: 1491: fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C026 +_F757 !WORD _C026 + !BYTE $30 ; DROP +_B500 +; toolsrc/ed.pla: 1492: redraw +; toolsrc/ed.pla: 1493: break + !BYTE $54 ; CALL _C025 +_F758 !WORD _C025 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1494: is keyenter +_B501 +; toolsrc/ed.pla: 1495: if flags & insmode +; toolsrc/ed.pla: 1496: splitline +; toolsrc/ed.pla: 1497: else + !BYTE $68 ; LAB _D040+0 +_F759 !WORD _D040+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B502 + !WORD _B502-* + !BYTE $54 ; CALL _C059 +_F760 !WORD _C059 + !BYTE $50 ; BRNCH _B503 + !WORD _B503-* +_B502 +; toolsrc/ed.pla: 1498: openline(cursrow + 1) +; toolsrc/ed.pla: 1499: fin + !BYTE $6A ; LAW _D058+0 +_F761 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C057 +_F762 !WORD _C057 + !BYTE $30 ; DROP +_B503 +; toolsrc/ed.pla: 1500: autoindent(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1501: cursvpos(cursrow + 1) +; toolsrc/ed.pla: 1502: redraw +; toolsrc/ed.pla: 1503: break + !BYTE $6A ; LAW _D048+0 +_F763 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F764 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C056 +_F765 !WORD _C056 + !BYTE $6A ; LAW _D058+0 +_F766 !WORD _D058+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C027 +_F767 !WORD _C027 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C025 +_F768 !WORD _C025 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1504: is keyctrlt +_B504 +; toolsrc/ed.pla: 1505: joinline +; toolsrc/ed.pla: 1506: redraw +; toolsrc/ed.pla: 1507: break + !BYTE $54 ; CALL _C058 +_F769 !WORD _C058 + !BYTE $54 ; CALL _C025 +_F770 !WORD _C025 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1508: is keytab +_B505 +; toolsrc/ed.pla: 1509: if flags & insmode +; toolsrc/ed.pla: 1510: indentsel +; toolsrc/ed.pla: 1511: cursoff +; toolsrc/ed.pla: 1512: if not ^(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1513: curshpos((curscol + 2) & $FE) +; toolsrc/ed.pla: 1514: else + !BYTE $68 ; LAB _D040+0 +_F771 !WORD _D040+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B506 + !WORD _B506-* + !BYTE $54 ; CALL _C054 +_F772 !WORD _C054 + !BYTE $54 ; CALL _C022 +_F773 !WORD _C022 + !BYTE $6A ; LAW _D048+0 +_F774 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F775 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B508 + !WORD _B508-* + !BYTE $6A ; LAW _D054+0 +_F776 !WORD _D054+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $3C,$FE ; ANDI 254 + !BYTE $54 ; CALL _C026 +_F777 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B509 + !WORD _B509-* +_B508 +; toolsrc/ed.pla: 1515: autoindent(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1516: fin + !BYTE $6A ; LAW _D048+0 +_F778 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F779 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C056 +_F780 !WORD _C056 +_B509 +; toolsrc/ed.pla: 1517: curson +; toolsrc/ed.pla: 1518: break + !BYTE $54 ; CALL _C023 +_F781 !WORD _C023 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1519: fin +_B506 +_B507 +; toolsrc/ed.pla: 1520: is keydetab +_B510 +; toolsrc/ed.pla: 1521: undentsel +; toolsrc/ed.pla: 1522: cursoff +; toolsrc/ed.pla: 1523: if not ^(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1524: curshpos((curscol - 2) & $FFFE) +; toolsrc/ed.pla: 1525: else + !BYTE $54 ; CALL _C055 +_F782 !WORD _C055 + !BYTE $54 ; CALL _C022 +_F783 !WORD _C022 + !BYTE $6A ; LAW _D048+0 +_F784 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F785 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B511 + !WORD _B511-* + !BYTE $6A ; LAW _D054+0 +_F786 !WORD _D054+0 + !BYTE $3A,$02 ; SUBI 2 + !BYTE $5E,$FE ; CFFB 65534 + !BYTE $94 ; AND + !BYTE $54 ; CALL _C026 +_F787 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B512 + !WORD _B512-* +_B511 +; toolsrc/ed.pla: 1526: autoindent(txtlinbuf=>[cursrow]) +; toolsrc/ed.pla: 1527: fin + !BYTE $6A ; LAW _D048+0 +_F788 !WORD _D048+0 + !BYTE $BE ; IDXAW _D058+0 +_F789 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C056 +_F790 !WORD _C056 +_B512 +; toolsrc/ed.pla: 1528: curson +; toolsrc/ed.pla: 1529: break + !BYTE $54 ; CALL _C023 +_F791 !WORD _C023 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1530: is keyctrly +_B513 +; toolsrc/ed.pla: 1531: flags = flags ^ insmode +; toolsrc/ed.pla: 1532: curschr = flags & insmode ?? '+' :: ' ' +; toolsrc/ed.pla: 1533: break + !BYTE $68 ; LAB _D040+0 +_F792 !WORD _D040+0 + !BYTE $04 ; CN 2 + !BYTE $98 ; XOR + !BYTE $7C ; DAB _D040+0 +_F793 !WORD _D040+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B514 + !WORD _B514-* + !BYTE $2A,$2B ; CB 43 + !BYTE $50 ; BRNCH _B515 + !WORD _B515-* +_B514 + !BYTE $2A,$20 ; CB 32 +_B515 + !BYTE $78 ; SAB _D056+0 +_F794 !WORD _D056+0 + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +; toolsrc/ed.pla: 1534: is keyescape +_B516 +; toolsrc/ed.pla: 1535: if MACHID == $F2 // Apple 3 +; toolsrc/ed.pla: 1536: dev_control(cmdsys.devcons, 11, @a3echo) +; toolsrc/ed.pla: 1537: fin + !BYTE $68 ; LAB _X001+0 +_F795 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $24 ; BRNE _B517 + !WORD _B517-* + !BYTE $68 ; LAB _X000+20 +_F796 !WORD 0+20 + !BYTE $16 ; CN 11 + !BYTE $26 ; LA _D062+0 +_F797 !WORD _D062+0 + !BYTE $54 ; CALL _C040 +_F798 !WORD _C040 + !BYTE $30 ; DROP +_B517 +_B518 +; toolsrc/ed.pla: 1538: cursoff +; toolsrc/ed.pla: 1539: cmdmode +; toolsrc/ed.pla: 1540: if not exit +; toolsrc/ed.pla: 1541: if MACHID == $F2 // Apple 3 +; toolsrc/ed.pla: 1542: dev_control(cmdsys.devcons, 11, @a3noecho) +; toolsrc/ed.pla: 1543: fin + !BYTE $54 ; CALL _C022 +_F799 !WORD _C022 + !BYTE $54 ; CALL _P000 +_F800 !WORD _P000 + !BYTE $68 ; LAB _D039+0 +_F801 !WORD _D039+0 + !BYTE $4E ; BRTRU _B519 + !WORD _B519-* + !BYTE $68 ; LAB _X001+0 +_F802 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $24 ; BRNE _B521 + !WORD _B521-* + !BYTE $68 ; LAB _X000+20 +_F803 !WORD 0+20 + !BYTE $16 ; CN 11 + !BYTE $26 ; LA _D063+0 +_F804 !WORD _D063+0 + !BYTE $54 ; CALL _C040 +_F805 !WORD _C040 + !BYTE $30 ; DROP +_B521 +_B522 +; toolsrc/ed.pla: 1544: redraw +; toolsrc/ed.pla: 1545: fin + !BYTE $54 ; CALL _C025 +_F806 !WORD _C025 +_B519 +_B520 +; toolsrc/ed.pla: 1546: wend + !BYTE $50 ; BRNCH _B477 + !WORD _B477-* +_B478 + !BYTE $16 ; CASEBLOCK + !WORD $0081 + !WORD _B485-* + !WORD $0082 + !WORD _B489-* + !WORD $0083 + !WORD _B490-* + !WORD $0085 + !WORD _B488-* + !WORD $0086 + !WORD _B493-* + !WORD $0088 + !WORD _B481-* + !WORD $0089 + !WORD _B505-* + !WORD $008A + !WORD _B480-* + !WORD $008B + !WORD _B479-* + !WORD $008D + !WORD _B501-* + !WORD $008F + !WORD _B498-* + !WORD $0091 + !WORD _B487-* + !WORD $0093 + !WORD _B486-* + !WORD $0094 + !WORD _B504-* + !WORD $0095 + !WORD _B482-* + !WORD $0096 + !WORD _B492-* + !WORD $0097 + !WORD _B483-* + !WORD $0098 + !WORD _B491-* + !WORD $0099 + !WORD _B513-* + !WORD $009A + !WORD _B484-* + !WORD $009B + !WORD _B516-* + !WORD $009D + !WORD _B510-* +_B477 +; toolsrc/ed.pla: 1547: until exit +_B476 + !BYTE $68 ; LAB _D039+0 +_F807 !WORD _D039+0 + !BYTE $4C ; BRFLS _B475 + !WORD _B475-* +_B474 +; toolsrc/ed.pla: 1548: end + !BYTE $5C ; RET +; toolsrc/ed.pla: 1549: // +; toolsrc/ed.pla: 1550: // Command mode +; toolsrc/ed.pla: 1551: // +; toolsrc/ed.pla: 1552: def prfiles(optpath) + ; optpath -> [0] +_C063 ; prfiles() +; toolsrc/ed.pla: 1553: byte path[64] + ; path -> [2] +; toolsrc/ed.pla: 1554: byte refnum + ; refnum -> [66] +; toolsrc/ed.pla: 1555: byte firstblk + ; firstblk -> [67] +; toolsrc/ed.pla: 1556: byte entrylen, entriesblk + ; entrylen -> [68] + ; entriesblk -> [69] +; toolsrc/ed.pla: 1557: byte i, type, len + ; i -> [70] + ; type -> [71] + ; len -> [72] +; toolsrc/ed.pla: 1558: word databuff, entry + ; databuff -> [73] + ; entry -> [75] +; toolsrc/ed.pla: 1559: +; toolsrc/ed.pla: 1560: if ^optpath + !BYTE $58,$4D,$01 ; ENTER 77,1 +; toolsrc/ed.pla: 1561: strstripcpy(@path, optpath) +; toolsrc/ed.pla: 1562: else + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B523 + !WORD _B523-* + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C005 +_F808 !WORD _C005 + !BYTE $50 ; BRNCH _B524 + !WORD _B524-* +_B523 +; toolsrc/ed.pla: 1563: fileio:getpfx(@path) +; toolsrc/ed.pla: 1564: puts(@path) +; toolsrc/ed.pla: 1565: putln +; toolsrc/ed.pla: 1566: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X031+0 +_F809 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X004 +_F810 !WORD 0 + !BYTE $54 ; CALL _X003 +_F811 !WORD 0 +_B524 +; toolsrc/ed.pla: 1567: databuff = heapalloc(512) +; toolsrc/ed.pla: 1568: refnum = fileio:open(@path) +; toolsrc/ed.pla: 1569: if perr +; toolsrc/ed.pla: 1570: return perr + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X014 +_F812 !WORD 0 + !BYTE $76,$49 ; SLW [73] + !BYTE $28,$02 ; LLA [2] + !BYTE $6A ; LAW _X031+14 +_F813 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $74,$42 ; SLB [66] + !BYTE $68 ; LAB _X032+0 +_F814 !WORD 0+0 + !BYTE $4C ; BRFLS _B525 + !WORD _B525-* + !BYTE $68 ; LAB _X032+0 +_F815 !WORD 0+0 + !BYTE $5A,$4D ; LEAVE 77 +; toolsrc/ed.pla: 1571: fin +_B525 +_B526 +; toolsrc/ed.pla: 1572: firstblk = 1 +; toolsrc/ed.pla: 1573: while fileio:read(refnum, databuff, 512) == 512 + !BYTE $02 ; CN 1 + !BYTE $74,$43 ; SLB [67] + !BYTE $50 ; BRNCH _B529 + !WORD _B529-* +_B527 +; toolsrc/ed.pla: 1574: entry = databuff + 4 +; toolsrc/ed.pla: 1575: if firstblk +; toolsrc/ed.pla: 1576: entrylen = databuff->$23 +; toolsrc/ed.pla: 1577: entriesblk = databuff->$24 +; toolsrc/ed.pla: 1578: entry = entry + entrylen +; toolsrc/ed.pla: 1579: fin + !BYTE $66,$49 ; LLW [73] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$4B ; SLW [75] + !BYTE $64,$43 ; LLB [67] + !BYTE $4C ; BRFLS _B530 + !WORD _B530-* + !BYTE $66,$49 ; LLW [73] + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $74,$44 ; SLB [68] + !BYTE $66,$49 ; LLW [73] + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $74,$45 ; SLB [69] + !BYTE $66,$4B ; LLW [75] + !BYTE $B0,$44 ; ADDLB [68] + !BYTE $76,$4B ; SLW [75] +_B530 +_B531 +; toolsrc/ed.pla: 1580: for i = firstblk to entriesblk + !BYTE $64,$45 ; LLB [69] + !BYTE $64,$43 ; LLB [67] + !BYTE $A0 ; BRGT _B532 + !WORD _B532-* +_B533 + !BYTE $6C,$46 ; DLB [70] +; toolsrc/ed.pla: 1581: type = ^entry +; toolsrc/ed.pla: 1582: if type <> 0 +; toolsrc/ed.pla: 1583: len = type & $0F +; toolsrc/ed.pla: 1584: ^entry = len +; toolsrc/ed.pla: 1585: puts(entry) +; toolsrc/ed.pla: 1586: if type & $F0 == $D0 // Is it a directory? +; toolsrc/ed.pla: 1587: putc('/') +; toolsrc/ed.pla: 1588: len++ + !BYTE $66,$4B ; LLW [75] + !BYTE $60 ; LB + !BYTE $6C,$47 ; DLB [71] + !BYTE $4C ; BRFLS _B535 + !WORD _B535-* + !BYTE $64,$47 ; LLB [71] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $6C,$48 ; DLB [72] + !BYTE $66,$4B ; LLW [75] + !BYTE $70 ; SB + !BYTE $66,$4B ; LLW [75] + !BYTE $54 ; CALL _X004 +_F816 !WORD 0 + !BYTE $64,$47 ; LLB [71] + !BYTE $3C,$F0 ; ANDI 240 + !BYTE $2A,$D0 ; CB 208 + !BYTE $24 ; BRNE _B537 + !WORD _B537-* + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F817 !WORD 0 + !BYTE $64,$48 ; LLB [72] + !BYTE $8C ; INCR +; toolsrc/ed.pla: 1589: fin + !BYTE $74,$48 ; SLB [72] +_B537 +_B538 +; toolsrc/ed.pla: 1590: for len = 20 - len downto 1 + !BYTE $02 ; CN 1 + !BYTE $2A,$14 ; CB 20 + !BYTE $64,$48 ; LLB [72] + !BYTE $84 ; SUB + !BYTE $A2 ; BRLT _B539 + !WORD _B539-* +_B540 + !BYTE $6C,$48 ; DLB [72] +; toolsrc/ed.pla: 1591: putc(' ') +; toolsrc/ed.pla: 1592: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F818 !WORD 0 +_B541 + !BYTE $A8 ; DECBRGE _B540 + !WORD _B540-* +_B539 + !BYTE $74,$48 ; SLB [72] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1593: fin +_B535 +_B536 +; toolsrc/ed.pla: 1594: entry = entry + entrylen +; toolsrc/ed.pla: 1595: next + !BYTE $66,$4B ; LLW [75] + !BYTE $B0,$44 ; ADDLB [68] + !BYTE $76,$4B ; SLW [75] +_B534 + !BYTE $A4 ; INCBRLE _B533 + !WORD _B533-* +_B532 + !BYTE $74,$46 ; SLB [70] + !BYTE $30 ; DROP +; toolsrc/ed.pla: 1596: firstblk = 0 +; toolsrc/ed.pla: 1597: loop + !BYTE $00 ; CN 0 + !BYTE $74,$43 ; SLB [67] +_B529 + !BYTE $64,$42 ; LLB [66] + !BYTE $66,$49 ; LLW [73] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X031+18 +_F819 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B527 + !WORD _B527-* +_B528 +; toolsrc/ed.pla: 1598: fileio:close(refnum) +; toolsrc/ed.pla: 1599: heaprelease(databuff) +; toolsrc/ed.pla: 1600: putln +; toolsrc/ed.pla: 1601: return 0 + !BYTE $64,$42 ; LLB [66] + !BYTE $6A ; LAW _X031+16 +_F820 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$49 ; LLW [73] + !BYTE $54 ; CALL _X015 +_F821 !WORD 0 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X003 +_F822 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$4D ; LEAVE 77 +; toolsrc/ed.pla: 1602: end +; toolsrc/ed.pla: 1603: def parsecmd(strptr) + ; strptr -> [0] +_C064 ; parsecmd() +; toolsrc/ed.pla: 1604: byte cmd + ; cmd -> [2] +; toolsrc/ed.pla: 1605: +; toolsrc/ed.pla: 1606: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; toolsrc/ed.pla: 1607: striplead(strptr, ' ') +; toolsrc/ed.pla: 1608: if ^strptr +; toolsrc/ed.pla: 1609: cmd = ^(strptr + 1) +; toolsrc/ed.pla: 1610: memcpy(strptr + 1, strptr + 2, ^strptr) +; toolsrc/ed.pla: 1611: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C003 +_F823 !WORD _C003 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B542 + !WORD _B542-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F824 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; toolsrc/ed.pla: 1612: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B542 +_B543 +; toolsrc/ed.pla: 1613: if ^strptr +; toolsrc/ed.pla: 1614: striplead(strptr, ' ') +; toolsrc/ed.pla: 1615: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B544 + !WORD _B544-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C003 +_F825 !WORD _C003 +_B544 +_B545 +; toolsrc/ed.pla: 1616: return cmd + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/ed.pla: 1617: end +; toolsrc/ed.pla: 1618: def chkchng +_C065 ; chkchng() +; toolsrc/ed.pla: 1619: if flags & changed +; toolsrc/ed.pla: 1620: puts("LOSE CHANGES TO FILE (Y/N)?") + !BYTE $68 ; LAB _D040+0 +_F826 !WORD _D040+0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B546 + !WORD _B546-* + !BYTE $2E ; CS + !BYTE $1B + !BYTE $4C,$4F,$53,$45,$20,$43,$48,$41 + !BYTE $4E,$47,$45,$53,$20,$54,$4F,$20 + !BYTE $46,$49,$4C,$45,$20,$28,$59,$2F + !BYTE $4E,$29,$3F + !BYTE $54 ; CALL _X004 +_F827 !WORD 0 +; toolsrc/ed.pla: 1621: if toupper(keyin()) == 'N' +; toolsrc/ed.pla: 1622: putln +; toolsrc/ed.pla: 1623: return FALSE + !BYTE $6A ; LAW _D057+0 +_F828 !WORD _D057+0 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _X021 +_F829 !WORD 0 + !BYTE $2A,$4E ; CB 78 + !BYTE $24 ; BRNE _B548 + !WORD _B548-* + !BYTE $54 ; CALL _X003 +_F830 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; toolsrc/ed.pla: 1624: fin +_B548 +_B549 +; toolsrc/ed.pla: 1625: putln +; toolsrc/ed.pla: 1626: fin + !BYTE $54 ; CALL _X003 +_F831 !WORD 0 +_B546 +_B547 +; toolsrc/ed.pla: 1627: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; toolsrc/ed.pla: 1628: end +; toolsrc/ed.pla: 1629: def cmdmode#0 +_P000 ; cmdmode#0() +_C066 ; cmdmode() +; toolsrc/ed.pla: 1630: byte slot + ; slot -> [0] +; toolsrc/ed.pla: 1631: word cmdptr, line + ; cmdptr -> [1] + ; line -> [3] +; toolsrc/ed.pla: 1632: +; toolsrc/ed.pla: 1633: clrscrn + !BYTE $58,$05,$00 ; ENTER 5,0 +; toolsrc/ed.pla: 1634: puts("PLASMA Editor, Version 2.0\n") + !BYTE $54 ; CALL _C018 +_F832 !WORD _C018 + !BYTE $2E ; CS + !BYTE $1B + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$45 + !BYTE $64,$69,$74,$6F,$72,$2C,$20,$56 + !BYTE $65,$72,$73,$69,$6F,$6E,$20,$32 + !BYTE $2E,$30,$0D + !BYTE $54 ; CALL _X004 +_F833 !WORD 0 +; toolsrc/ed.pla: 1635: while not exit + !BYTE $50 ; BRNCH _B552 + !WORD _B552-* +_B550 +; toolsrc/ed.pla: 1636: puts(@filename) +; toolsrc/ed.pla: 1637: cmdptr = gets($BA) +; toolsrc/ed.pla: 1638: when toupper(parsecmd(cmdptr)) + !BYTE $26 ; LA _D038+0 +_F834 !WORD _D038+0 + !BYTE $54 ; CALL _X004 +_F835 !WORD 0 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _X007 +_F836 !WORD 0 + !BYTE $6E,$01 ; DLW [1] + !BYTE $54 ; CALL _C064 +_F837 !WORD _C064 + !BYTE $54 ; CALL _X021 +_F838 !WORD 0 + !BYTE $52 ; SEL + !WORD _B554-* +; toolsrc/ed.pla: 1639: is 'F' // Find string +_B555 +; toolsrc/ed.pla: 1640: if ^cmdptr +; toolsrc/ed.pla: 1641: lnupcpy(@findstr, cmdptr) +; toolsrc/ed.pla: 1642: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B556 + !WORD _B556-* + !BYTE $26 ; LA _D037+0 +_F839 !WORD _D037+0 + !BYTE $66,$01 ; LLW [1] + !BYTE $54 ; CALL _A003 +_F840 !WORD _A003 +_B556 +_B557 +; toolsrc/ed.pla: 1643: findtxt +; toolsrc/ed.pla: 1644: return + !BYTE $54 ; CALL _C039 +_F841 !WORD _C039 + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 1645: is 'T' // Toggle upper/lower case display +_B558 +; toolsrc/ed.pla: 1646: if ^cmdptr +; toolsrc/ed.pla: 1647: when toupper(^(cmdptr + 1)) + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B559 + !WORD _B559-* + !BYTE $66,$01 ; LLW [1] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F842 !WORD 0 + !BYTE $52 ; SEL + !WORD _B562-* +; toolsrc/ed.pla: 1648: is 'G' // Gutter view +_B563 +; toolsrc/ed.pla: 1649: flags = flags ^ gutter +; toolsrc/ed.pla: 1650: if flags & gutter +; toolsrc/ed.pla: 1651: scrnwidth = 36 +; toolsrc/ed.pla: 1652: scrnright = 35 +; toolsrc/ed.pla: 1653: else + !BYTE $68 ; LAB _D040+0 +_F843 !WORD _D040+0 + !BYTE $08 ; CN 4 + !BYTE $98 ; XOR + !BYTE $7C ; DAB _D040+0 +_F844 !WORD _D040+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B564 + !WORD _B564-* + !BYTE $2A,$24 ; CB 36 + !BYTE $7A ; SAW _D033+0 +_F845 !WORD _D033+0 + !BYTE $2A,$23 ; CB 35 + !BYTE $7A ; SAW _D034+0 +_F846 !WORD _D034+0 + !BYTE $50 ; BRNCH _B565 + !WORD _B565-* +_B564 +; toolsrc/ed.pla: 1654: scrnwidth = 40 +; toolsrc/ed.pla: 1655: scrnright = 39 +; toolsrc/ed.pla: 1656: fin + !BYTE $2A,$28 ; CB 40 + !BYTE $7A ; SAW _D033+0 +_F847 !WORD _D033+0 + !BYTE $2A,$27 ; CB 39 + !BYTE $7A ; SAW _D034+0 +_F848 !WORD _D034+0 +_B565 +; toolsrc/ed.pla: 1657: break + !BYTE $50 ; BRNCH _B561 + !WORD _B561-* +; toolsrc/ed.pla: 1658: is 'C' // Lower case chip (Apple ][/][+ only) +_B566 +; toolsrc/ed.pla: 1659: if flags & uppercase +; toolsrc/ed.pla: 1660: txtlower +; toolsrc/ed.pla: 1661: else + !BYTE $68 ; LAB _D040+0 +_F849 !WORD _D040+0 + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B567 + !WORD _B567-* + !BYTE $54 ; CALL _C013 +_F850 !WORD _C013 + !BYTE $50 ; BRNCH _B568 + !WORD _B568-* +_B567 +; toolsrc/ed.pla: 1662: txtupper +; toolsrc/ed.pla: 1663: fin + !BYTE $54 ; CALL _C012 +_F851 !WORD _C012 +_B568 +; toolsrc/ed.pla: 1664: break + !BYTE $50 ; BRNCH _B561 + !WORD _B561-* +; toolsrc/ed.pla: 1665: wend + !BYTE $50 ; BRNCH _B561 + !WORD _B561-* +_B562 + !BYTE $02 ; CASEBLOCK + !WORD $0043 + !WORD _B566-* + !WORD $0047 + !WORD _B563-* +_B561 +; toolsrc/ed.pla: 1666: fin +_B559 +_B560 +; toolsrc/ed.pla: 1667: return + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 1668: is 'G' // Goto line # +_B569 +; toolsrc/ed.pla: 1669: line = strtonum(cmdptr) +; toolsrc/ed.pla: 1670: if line +; toolsrc/ed.pla: 1671: curshpos(0) +; toolsrc/ed.pla: 1672: cursvpos(line - 1) +; toolsrc/ed.pla: 1673: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $54 ; CALL _C014 +_F852 !WORD _C014 + !BYTE $6E,$03 ; DLW [3] + !BYTE $4C ; BRFLS _B570 + !WORD _B570-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C026 +_F853 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $66,$03 ; LLW [3] + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C027 +_F854 !WORD _C027 + !BYTE $30 ; DROP +_B570 +_B571 +; toolsrc/ed.pla: 1674: is 'E' // Edit mode +_B572 +; toolsrc/ed.pla: 1675: is 0 +_B573 +; toolsrc/ed.pla: 1676: return + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 1677: is 'A' // Append file +_B574 +; toolsrc/ed.pla: 1678: readtxt(cmdptr, numlines) +; toolsrc/ed.pla: 1679: flags = flags | changed +; toolsrc/ed.pla: 1680: break + !BYTE $66,$01 ; LLW [1] + !BYTE $6A ; LAW _D042+0 +_F855 !WORD _D042+0 + !BYTE $54 ; CALL _C016 +_F856 !WORD _C016 + !BYTE $68 ; LAB _D040+0 +_F857 !WORD _D040+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D040+0 +_F858 !WORD _D040+0 + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1681: is 'R' // Read file +_B575 +; toolsrc/ed.pla: 1682: if chkchng +; toolsrc/ed.pla: 1683: inittxtbuf +; toolsrc/ed.pla: 1684: strstripcpy(@filename, cmdptr) +; toolsrc/ed.pla: 1685: readtxt(@filename, 0) +; toolsrc/ed.pla: 1686: flags = flags & ~changed +; toolsrc/ed.pla: 1687: fin + !BYTE $54 ; CALL _C065 +_F859 !WORD _C065 + !BYTE $4C ; BRFLS _B576 + !WORD _B576-* + !BYTE $54 ; CALL _C008 +_F860 !WORD _C008 + !BYTE $26 ; LA _D038+0 +_F861 !WORD _D038+0 + !BYTE $66,$01 ; LLW [1] + !BYTE $54 ; CALL _C005 +_F862 !WORD _C005 + !BYTE $26 ; LA _D038+0 +_F863 !WORD _D038+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F864 !WORD _C016 + !BYTE $68 ; LAB _D040+0 +_F865 !WORD _D040+0 + !BYTE $5E,$FE ; CFFB -2 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F866 !WORD _D040+0 +_B576 +_B577 +; toolsrc/ed.pla: 1688: break + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1689: is 'W' // Write file +_B578 +; toolsrc/ed.pla: 1690: if ^cmdptr +; toolsrc/ed.pla: 1691: strstripcpy(@filename, cmdptr) +; toolsrc/ed.pla: 1692: fin + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B579 + !WORD _B579-* + !BYTE $26 ; LA _D038+0 +_F867 !WORD _D038+0 + !BYTE $66,$01 ; LLW [1] + !BYTE $54 ; CALL _C005 +_F868 !WORD _C005 +_B579 +_B580 +; toolsrc/ed.pla: 1693: writetxt(@filename) +; toolsrc/ed.pla: 1694: //if flags & changed; fin +; toolsrc/ed.pla: 1695: flags = flags & ~changed +; toolsrc/ed.pla: 1696: break + !BYTE $26 ; LA _D038+0 +_F869 !WORD _D038+0 + !BYTE $54 ; CALL _C017 +_F870 !WORD _C017 + !BYTE $68 ; LAB _D040+0 +_F871 !WORD _D040+0 + !BYTE $5E,$FE ; CFFB -2 + !BYTE $94 ; AND + !BYTE $78 ; SAB _D040+0 +_F872 !WORD _D040+0 + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1697: is 'C' // Catalog +_B581 +; toolsrc/ed.pla: 1698: prfiles(cmdptr); break + !BYTE $66,$01 ; LLW [1] + !BYTE $54 ; CALL _C063 +_F873 !WORD _C063 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1699: is 'P' // Prefix +_B582 +; toolsrc/ed.pla: 1700: fileio:setpfx(cmdptr); break + !BYTE $66,$01 ; LLW [1] + !BYTE $6A ; LAW _X031+2 +_F874 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1701: is 'H' // Hardcopy +_B583 +; toolsrc/ed.pla: 1702: if ^cmdptr +; toolsrc/ed.pla: 1703: slot = cmdptr.1 - '0' +; toolsrc/ed.pla: 1704: else + !BYTE $66,$01 ; LLW [1] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B584 + !WORD _B584-* + !BYTE $64,$02 ; LLB [2] + !BYTE $3A,$30 ; SUBI 48 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B585 + !WORD _B585-* +_B584 +; toolsrc/ed.pla: 1705: slot = 1 +; toolsrc/ed.pla: 1706: fin + !BYTE $02 ; CN 1 + !BYTE $74,$00 ; SLB [0] +_B585 +; toolsrc/ed.pla: 1707: printtxt(slot) +; toolsrc/ed.pla: 1708: break + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _C047 +_F875 !WORD _C047 + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1709: is 'Q' // Quit +_B586 +; toolsrc/ed.pla: 1710: exit = chkchng +; toolsrc/ed.pla: 1711: if not exit +; toolsrc/ed.pla: 1712: return + !BYTE $54 ; CALL _C065 +_F876 !WORD _C065 + !BYTE $7C ; DAB _D039+0 +_F877 !WORD _D039+0 + !BYTE $4E ; BRTRU _B587 + !WORD _B587-* + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 1713: fin +_B587 +_B588 +; toolsrc/ed.pla: 1714: break + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1715: is 'N' +_B589 +; toolsrc/ed.pla: 1716: if chkchng +; toolsrc/ed.pla: 1717: inittxtbuf +; toolsrc/ed.pla: 1718: strstripcpy(@filename, "UNTITLED") + !BYTE $54 ; CALL _C065 +_F878 !WORD _C065 + !BYTE $4C ; BRFLS _B590 + !WORD _B590-* + !BYTE $54 ; CALL _C008 +_F879 !WORD _C008 + !BYTE $26 ; LA _D038+0 +_F880 !WORD _D038+0 + !BYTE $2E ; CS + !BYTE $08 + !BYTE $55,$4E,$54,$49,$54,$4C,$45,$44 + !BYTE $54 ; CALL _C005 +_F881 !WORD _C005 +; toolsrc/ed.pla: 1719: fin +_B590 +_B591 +; toolsrc/ed.pla: 1720: break + !BYTE $50 ; BRNCH _B553 + !WORD _B553-* +; toolsrc/ed.pla: 1721: otherwise +_B554 + !BYTE $0D ; CASEBLOCK + !WORD $0000 + !WORD _B573-* + !WORD $0041 + !WORD _B574-* + !WORD $0043 + !WORD _B581-* + !WORD $0045 + !WORD _B572-* + !WORD $0046 + !WORD _B555-* + !WORD $0047 + !WORD _B569-* + !WORD $0048 + !WORD _B583-* + !WORD $004E + !WORD _B589-* + !WORD $0050 + !WORD _B582-* + !WORD $0051 + !WORD _B586-* + !WORD $0052 + !WORD _B575-* + !WORD $0054 + !WORD _B558-* + !WORD $0057 + !WORD _B578-* +; toolsrc/ed.pla: 1722: bell +; toolsrc/ed.pla: 1723: putc('?') +; toolsrc/ed.pla: 1724: putln +; toolsrc/ed.pla: 1725: wend + !BYTE $54 ; CALL _C000 +_F882 !WORD _C000 + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _X002 +_F883 !WORD 0 + !BYTE $54 ; CALL _X003 +_F884 !WORD 0 +_B553 +; toolsrc/ed.pla: 1726: if perr +; toolsrc/ed.pla: 1727: puts("ERROR: $") + !BYTE $68 ; LAB _X032+0 +_F885 !WORD 0+0 + !BYTE $4C ; BRFLS _B592 + !WORD _B592-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $45,$52,$52,$4F,$52,$3A,$20,$24 + !BYTE $54 ; CALL _X004 +_F886 !WORD 0 +; toolsrc/ed.pla: 1728: putb(perr) +; toolsrc/ed.pla: 1729: putln +; toolsrc/ed.pla: 1730: fin + !BYTE $68 ; LAB _X032+0 +_F887 !WORD 0+0 + !BYTE $54 ; CALL _X008 +_F888 !WORD 0 + !BYTE $54 ; CALL _X003 +_F889 !WORD 0 +_B592 +_B593 +; toolsrc/ed.pla: 1731: loop +_B552 + !BYTE $68 ; LAB _D039+0 +_F890 !WORD _D039+0 + !BYTE $4C ; BRFLS _B550 + !WORD _B550-* +_B551 +; toolsrc/ed.pla: 1732: end + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/ed.pla: 1733: // +; toolsrc/ed.pla: 1734: // Init editor +; toolsrc/ed.pla: 1735: // +; toolsrc/ed.pla: 1736: setkeyin +_INIT +; toolsrc/ed.pla: 1737: if not (MACHID & $80) // ][ or ][+ +; toolsrc/ed.pla: 1738: flags = uppercase | shiftlock +; toolsrc/ed.pla: 1739: fin + !BYTE $54 ; CALL _C046 +_F891 !WORD _C046 + !BYTE $68 ; LAB _X001+0 +_F892 !WORD 0+0 + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B594 + !WORD _B594-* + !BYTE $2A,$88 ; CB 136 + !BYTE $78 ; SAB _D040+0 +_F893 !WORD _D040+0 +_B594 +_B595 +; toolsrc/ed.pla: 1740: inittxtbuf +; toolsrc/ed.pla: 1741: arg = argNext(argFirst) +; toolsrc/ed.pla: 1742: if ^arg +; toolsrc/ed.pla: 1743: strcpy(@filename, arg) +; toolsrc/ed.pla: 1744: puts(@filename) +; toolsrc/ed.pla: 1745: readtxt(@filename, 0) +; toolsrc/ed.pla: 1746: arg = argNext(arg) +; toolsrc/ed.pla: 1747: if ^arg +; toolsrc/ed.pla: 1748: cursrow = strtonum(arg) +; toolsrc/ed.pla: 1749: if cursrow +; toolsrc/ed.pla: 1750: curshpos(0) +; toolsrc/ed.pla: 1751: cursvpos(cursrow - 1) +; toolsrc/ed.pla: 1752: fin + !BYTE $54 ; CALL _C008 +_F894 !WORD _C008 + !BYTE $54 ; CALL _X029 +_F895 !WORD 0 + !BYTE $54 ; CALL _X030 +_F896 !WORD 0 + !BYTE $7A ; SAW _D044+0 +_F897 !WORD _D044+0 + !BYTE $6A ; LAW _D044+0 +_F898 !WORD _D044+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B596 + !WORD _B596-* + !BYTE $26 ; LA _D038+0 +_F899 !WORD _D038+0 + !BYTE $6A ; LAW _D044+0 +_F900 !WORD _D044+0 + !BYTE $54 ; CALL _X019 +_F901 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D038+0 +_F902 !WORD _D038+0 + !BYTE $54 ; CALL _X004 +_F903 !WORD 0 + !BYTE $26 ; LA _D038+0 +_F904 !WORD _D038+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F905 !WORD _C016 + !BYTE $6A ; LAW _D044+0 +_F906 !WORD _D044+0 + !BYTE $54 ; CALL _X030 +_F907 !WORD 0 + !BYTE $7A ; SAW _D044+0 +_F908 !WORD _D044+0 + !BYTE $6A ; LAW _D044+0 +_F909 !WORD _D044+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B598 + !WORD _B598-* + !BYTE $6A ; LAW _D044+0 +_F910 !WORD _D044+0 + !BYTE $54 ; CALL _C014 +_F911 !WORD _C014 + !BYTE $7E ; DAW _D058+0 +_F912 !WORD _D058+0 + !BYTE $4C ; BRFLS _B600 + !WORD _B600-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C026 +_F913 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D058+0 +_F914 !WORD _D058+0 + !BYTE $8E ; DECR + !BYTE $54 ; CALL _C027 +_F915 !WORD _C027 + !BYTE $30 ; DROP +_B600 +_B601 +; toolsrc/ed.pla: 1753: fin +_B598 +_B599 +; toolsrc/ed.pla: 1754: fin +_B596 +_B597 +; toolsrc/ed.pla: 1755: curschr = '+' +; toolsrc/ed.pla: 1756: flags = flags | insmode | gutter +; toolsrc/ed.pla: 1757: drawscrn(scrntop, scrnleft) +; toolsrc/ed.pla: 1758: curson +; toolsrc/ed.pla: 1759: editmode +; toolsrc/ed.pla: 1760: done + !BYTE $2A,$2B ; CB 43 + !BYTE $78 ; SAB _D056+0 +_F916 !WORD _D056+0 + !BYTE $68 ; LAB _D040+0 +_F917 !WORD _D040+0 + !BYTE $3E,$02 ; ORI 2 + !BYTE $3E,$04 ; ORI 4 + !BYTE $78 ; SAB _D040+0 +_F918 !WORD _D040+0 + !BYTE $6A ; LAW _D060+0 +_F919 !WORD _D060+0 + !BYTE $6A ; LAW _D053+0 +_F920 !WORD _D053+0 + !BYTE $54 ; CALL _C021 +_F921 !WORD _C021 + !BYTE $54 ; CALL _C023 +_F922 !WORD _C023 + !BYTE $54 ; CALL _C062 +_F923 !WORD _C062 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 68 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C024 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C025 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C026 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C027 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C028 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C029 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C030 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C031 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C032 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C033 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C034 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C035 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C036 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C037 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C038 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C039 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C040 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C041 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C042 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C043 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C044 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C045 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C046 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C047 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C048 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C049 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C050 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C051 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C052 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C053 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C054 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C055 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C056 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C057 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C058 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C059 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C060 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C061 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C062 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C063 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C064 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C065 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C066 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE 23 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F286-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F287-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F288-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F289-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F290-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F291-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F292-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F293-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F294-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F295-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F296-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F297-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F298-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F299-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F300-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F301-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F302-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F303-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F304-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F305-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F306-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F307-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F308-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F309-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F310-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F311-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F312-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F313-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F314-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F315-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F316-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F317-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F318-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F319-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F320-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F321-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F322-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F323-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F324-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F325-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F326-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F327-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F328-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F329-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F330-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F331-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F332-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F333-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F334-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F335-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F336-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F337-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F338-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F339-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F340-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F341-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F342-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F343-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F344-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F345-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F346-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F347-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F348-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F349-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F350-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F351-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F352-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F353-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F354-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F355-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F356-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F357-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F358-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F359-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F360-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F361-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F362-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F363-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F364-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F365-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F366-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F367-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F368-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F369-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F370-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F371-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F372-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F373-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F374-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F375-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F376-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F377-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F378-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F379-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F380-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F381-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F382-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F383-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F384-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F385-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F386-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F387-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F388-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F389-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F390-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F391-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F392-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F393-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F394-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F395-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F396-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F397-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F398-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F399-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F400-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F401-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F402-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F403-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F404-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F405-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F406-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F407-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F408-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F409-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F410-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F411-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F412-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F413-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F414-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F415-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F416-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F417-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F418-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F419-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F420-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F421-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F422-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F423-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F424-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F425-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F426-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F427-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F428-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F429-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F430-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F431-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F432-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F433-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F434-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F435-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F436-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F437-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F438-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F439-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F440-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F441-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F442-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F443-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F444-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F445-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F446-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F447-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F448-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F449-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F450-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F451-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F452-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F453-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F454-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F455-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F456-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F457-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F458-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F459-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F460-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F461-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F462-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F463-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F464-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F465-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F466-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F467-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F468-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F469-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F470-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F471-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F472-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F473-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F474-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F475-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F476-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F477-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F478-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F479-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F480-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F481-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F482-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F483-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F484-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F485-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F486-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F487-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F488-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F489-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F490-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F491-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F492-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F493-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F494-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F495-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F496-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F497-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F498-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F499-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F500-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F501-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F502-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F503-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F504-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F505-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F506-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F507-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F508-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F509-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F510-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F511-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F512-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F513-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F514-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F515-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F516-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F517-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F518-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F519-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F520-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F521-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F522-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F523-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F524-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F525-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F526-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F527-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F528-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F529-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F530-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F531-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F532-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F533-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F534-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F535-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F536-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F537-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F538-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F539-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F540-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F541-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F542-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F543-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F544-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F545-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F546-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F547-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F548-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F549-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F550-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F551-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F552-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F553-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F554-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F555-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F556-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F557-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F558-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F559-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F560-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F561-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F562-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F563-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F564-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F565-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F566-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F567-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F568-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F569-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F570-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F571-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F572-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F573-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F574-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F575-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F576-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F577-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F578-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F579-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F580-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F581-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F582-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F583-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F584-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F585-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F586-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F587-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F588-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F589-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F590-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F591-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F592-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F593-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F594-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F595-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F596-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F597-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F598-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F599-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F600-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F601-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F602-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F603-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F604-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F605-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F606-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F607-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F608-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F609-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F610-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F611-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F612-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F613-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F614-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F615-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F616-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F617-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F618-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F619-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F620-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F621-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F622-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F623-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F624-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F625-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F626-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F627-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F628-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F629-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F630-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F631-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F632-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F633-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F634-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F635-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F636-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F637-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F638-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F639-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F640-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F641-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F642-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F643-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F644-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F645-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F646-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F647-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F648-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F649-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F650-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F651-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F652-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F653-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F654-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F655-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F656-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F657-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F658-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F659-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F660-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F661-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F662-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F663-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F664-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F665-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F666-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F667-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F668-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F669-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F670-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F671-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F672-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F673-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F674-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F675-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F676-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F677-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F678-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F679-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F680-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F681-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F682-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F683-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F684-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F685-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F686-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F687-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F688-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F689-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F690-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F691-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F692-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F693-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F694-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F695-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F696-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F697-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F698-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F699-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F700-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F701-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F702-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F703-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F704-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F705-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F706-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F707-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F708-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F709-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F710-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F711-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F712-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F713-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F714-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F715-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F716-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F717-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F718-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F719-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F720-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F721-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F722-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F723-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F724-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F725-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F726-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F727-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F728-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F729-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F730-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F731-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F732-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F733-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F734-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F735-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F736-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F737-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F738-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F739-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F740-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F741-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F742-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F743-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F744-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F745-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F746-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F747-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F748-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F749-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F750-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F751-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F752-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F753-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F754-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F755-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F756-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F757-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F758-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F759-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F760-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F761-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F762-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F763-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F764-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F765-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F766-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F767-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F768-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F769-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F770-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F771-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F772-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F773-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F774-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F775-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F776-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F777-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F778-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F779-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F780-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F781-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F782-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F783-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F784-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F785-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F786-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F787-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F788-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F789-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F790-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F791-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F792-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F793-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F794-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F795-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F796-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F797-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F798-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F799-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F800-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F801-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F802-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F803-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F804-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F805-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F806-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F807-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F808-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F809-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F810-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F811-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F812-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F813-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F814-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F815-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F816-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F817-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F818-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F819-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F820-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F821-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F822-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F823-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F824-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F825-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F826-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F827-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F828-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F829-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F830-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F831-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F832-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F833-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F834-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F835-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F836-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F837-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F838-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F839-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F840-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F841-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F842-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F843-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F844-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F845-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F846-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F847-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F848-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F849-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F850-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F851-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F852-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F853-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F854-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F855-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F856-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F857-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F858-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F859-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F860-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F861-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F862-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F863-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F864-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F865-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F866-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F867-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F868-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F869-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F870-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F871-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F872-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F873-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F874-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F875-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F876-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F877-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F878-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F879-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F880-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F881-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F882-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F883-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F884-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F885-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F886-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F887-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F888-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F889-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F890-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F891-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F892-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F893-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F894-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F895-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F896-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F897-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F898-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F899-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F900-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F901-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F902-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F903-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F904-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F905-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F906-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F907-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F908-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F909-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F910-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F911-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F912-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F913-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F914-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F915-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F916-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F917-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F918-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F919-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F920-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F921-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F922-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F923-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: DIVMOD + !BYTE $C4,$C9,$D6,$CD,$CF,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 23 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/toolsrc/plasm.a b/src/toolsrc/plasm.a new file mode 100644 index 0000000..74e44df --- /dev/null +++ b/src/toolsrc/plasm.a @@ -0,0 +1,20990 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; toolsrc/plasm.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; toolsrc/plasm.pla: 0001: +; toolsrc/plasm.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; toolsrc/plasm.pla: 0002: +; toolsrc/plasm.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; toolsrc/plasm.pla: 0003: +; toolsrc/plasm.pla: 0004: include "inc/longjmp.plh" +; inc/longjmp.plh: 0001: import longjmp + ; DCI STRING: LONGJMP + !BYTE $CC,$CF,$CE,$C7,$CA,$CD,$50 + ; LONGJMP -> X033 +; inc/longjmp.plh: 0002: const t_except = $0140 + ; t_except = 320 +; inc/longjmp.plh: 0003: predef except(env), throw(env, retval) + ; EXCEPT -> X034 + ; THROW -> X035 +; inc/longjmp.plh: 0004: end +; toolsrc/plasm.pla: 0004: +; toolsrc/plasm.pla: 0005: // +; toolsrc/plasm.pla: 0006: // Tokens +; toolsrc/plasm.pla: 0007: // +; toolsrc/plasm.pla: 0008: const ID_LEN = 32 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; ID_LEN = 32 +; toolsrc/plasm.pla: 0009: const ID_TKN = $D6 // V + ; ID_TKN = 214 +; toolsrc/plasm.pla: 0010: const CHR_TKN = $C3 // C + ; CHR_TKN = 195 +; toolsrc/plasm.pla: 0011: const INT_TKN = $C9 // I + ; INT_TKN = 201 +; toolsrc/plasm.pla: 0012: const STR_TKN = $D3 // S + ; STR_TKN = 211 +; toolsrc/plasm.pla: 0013: const EOL_TKN = $02 + ; EOL_TKN = 2 +; toolsrc/plasm.pla: 0014: const EOF_TKN = $01 + ; EOF_TKN = 1 +; toolsrc/plasm.pla: 0015: const ERR_TKN = $00 + ; ERR_TKN = 0 +; toolsrc/plasm.pla: 0016: // +; toolsrc/plasm.pla: 0017: //Ternary operand operators +; toolsrc/plasm.pla: 0018: // +; toolsrc/plasm.pla: 0019: const TERNARY_TKN = $BF // ? + ; TERNARY_TKN = 191 +; toolsrc/plasm.pla: 0020: const TRIELSE_TKN = $DF // _ + ; TRIELSE_TKN = 223 +; toolsrc/plasm.pla: 0021: // +; toolsrc/plasm.pla: 0022: // Binary operand operators +; toolsrc/plasm.pla: 0023: // +; toolsrc/plasm.pla: 0024: const SET_TKN = $BD // = + ; SET_TKN = 189 +; toolsrc/plasm.pla: 0025: const ADD_TKN = $AB // + + ; ADD_TKN = 171 +; toolsrc/plasm.pla: 0026: const SUB_TKN = $AD // - + ; SUB_TKN = 173 +; toolsrc/plasm.pla: 0027: const MUL_TKN = $AA // * + ; MUL_TKN = 170 +; toolsrc/plasm.pla: 0028: const DIV_TKN = $AF // / + ; DIV_TKN = 175 +; toolsrc/plasm.pla: 0029: const MOD_TKN = $A5 // % + ; MOD_TKN = 165 +; toolsrc/plasm.pla: 0030: const OR_TKN = $FC // | + ; OR_TKN = 252 +; toolsrc/plasm.pla: 0031: const EOR_TKN = $DE // ^ + ; EOR_TKN = 222 +; toolsrc/plasm.pla: 0032: const AND_TKN = $A6 // & + ; AND_TKN = 166 +; toolsrc/plasm.pla: 0033: const SHR_TKN = $D2 // R + ; SHR_TKN = 210 +; toolsrc/plasm.pla: 0034: const SHL_TKN = $CC // L + ; SHL_TKN = 204 +; toolsrc/plasm.pla: 0035: const GT_TKN = $BE // > + ; GT_TKN = 190 +; toolsrc/plasm.pla: 0036: const GE_TKN = $C8 // H + ; GE_TKN = 200 +; toolsrc/plasm.pla: 0037: const LT_TKN = $BC // < + ; LT_TKN = 188 +; toolsrc/plasm.pla: 0038: const LE_TKN = $C2 // B + ; LE_TKN = 194 +; toolsrc/plasm.pla: 0039: const NE_TKN = $D5 // U + ; NE_TKN = 213 +; toolsrc/plasm.pla: 0040: const EQ_TKN = $C5 // E + ; EQ_TKN = 197 +; toolsrc/plasm.pla: 0041: const LOGIC_AND_TKN = $CE // N + ; LOGIC_AND_TKN = 206 +; toolsrc/plasm.pla: 0042: const LOGIC_OR_TKN = $CF // O + ; LOGIC_OR_TKN = 207 +; toolsrc/plasm.pla: 0043: // +; toolsrc/plasm.pla: 0044: // Unary operand operators +; toolsrc/plasm.pla: 0045: // +; toolsrc/plasm.pla: 0046: const AT_TKN = $C0 // @ + ; AT_TKN = 192 +; toolsrc/plasm.pla: 0047: const DOT_TKN = $AE // . + ; DOT_TKN = 174 +; toolsrc/plasm.pla: 0048: const COLON_TKN = $BA // : + ; COLON_TKN = 186 +; toolsrc/plasm.pla: 0049: const NEG_TKN = $AD // - + ; NEG_TKN = 173 +; toolsrc/plasm.pla: 0050: const POUND_TKN = $A3 // # + ; POUND_TKN = 163 +; toolsrc/plasm.pla: 0051: const COMP_TKN = $FE // ~ + ; COMP_TKN = 254 +; toolsrc/plasm.pla: 0052: const LOGIC_NOT_TKN = $A1 // ! + ; LOGIC_NOT_TKN = 161 +; toolsrc/plasm.pla: 0053: const BPTR_TKN = $DE // ^ + ; BPTR_TKN = 222 +; toolsrc/plasm.pla: 0054: const WPTR_TKN = $AA // * + ; WPTR_TKN = 170 +; toolsrc/plasm.pla: 0055: const PTRB_TKN = $D8 // X + ; PTRB_TKN = 216 +; toolsrc/plasm.pla: 0056: const PTRW_TKN = $D7 // W + ; PTRW_TKN = 215 +; toolsrc/plasm.pla: 0057: const INC_TKN = $C1 // A + ; INC_TKN = 193 +; toolsrc/plasm.pla: 0058: const DEC_TKN = $C4 // D + ; DEC_TKN = 196 +; toolsrc/plasm.pla: 0059: const LAMBDA_TKN = $A6 // & + ; LAMBDA_TKN = 166 +; toolsrc/plasm.pla: 0060: // +; toolsrc/plasm.pla: 0061: // Enclosure tokens +; toolsrc/plasm.pla: 0062: // +; toolsrc/plasm.pla: 0063: const OPEN_PAREN_TKN = $A8 // ( + ; OPEN_PAREN_TKN = 168 +; toolsrc/plasm.pla: 0064: const CLOSE_PAREN_TKN = $A9 // ) + ; CLOSE_PAREN_TKN = 169 +; toolsrc/plasm.pla: 0065: const OPEN_BRACKET_TKN = $DB // [ + ; OPEN_BRACKET_TKN = 219 +; toolsrc/plasm.pla: 0066: const CLOSE_BRACKET_TKN = $DD // ] + ; CLOSE_BRACKET_TKN = 221 +; toolsrc/plasm.pla: 0067: // +; toolsrc/plasm.pla: 0068: // Misc. tokens +; toolsrc/plasm.pla: 0069: // +; toolsrc/plasm.pla: 0070: const COMMA_TKN = $AC // , + ; COMMA_TKN = 172 +; toolsrc/plasm.pla: 0071: //const COMMENT_TKN = $BB // // +; toolsrc/plasm.pla: 0072: const DROP_TKN = $BB + ; DROP_TKN = 187 +; toolsrc/plasm.pla: 0073: // +; toolsrc/plasm.pla: 0074: // Keyword tokens +; toolsrc/plasm.pla: 0075: // +; toolsrc/plasm.pla: 0076: const CONST_TKN = $80 + ; CONST_TKN = 128 +; toolsrc/plasm.pla: 0077: const BYTE_TKN = $81 + ; BYTE_TKN = 129 +; toolsrc/plasm.pla: 0078: const WORD_TKN = $82 + ; WORD_TKN = 130 +; toolsrc/plasm.pla: 0079: const IF_TKN = $83 + ; IF_TKN = 131 +; toolsrc/plasm.pla: 0080: const ELSEIF_TKN = $84 + ; ELSEIF_TKN = 132 +; toolsrc/plasm.pla: 0081: const ELSE_TKN = $85 + ; ELSE_TKN = 133 +; toolsrc/plasm.pla: 0082: const FIN_TKN = $86 + ; FIN_TKN = 134 +; toolsrc/plasm.pla: 0083: const END_TKN = $87 + ; END_TKN = 135 +; toolsrc/plasm.pla: 0084: const WHILE_TKN = $88 + ; WHILE_TKN = 136 +; toolsrc/plasm.pla: 0085: const LOOP_TKN = $89 + ; LOOP_TKN = 137 +; toolsrc/plasm.pla: 0086: const CASE_TKN = $8A + ; CASE_TKN = 138 +; toolsrc/plasm.pla: 0087: const OF_TKN = $8B + ; OF_TKN = 139 +; toolsrc/plasm.pla: 0088: const DEFAULT_TKN = $8C + ; DEFAULT_TKN = 140 +; toolsrc/plasm.pla: 0089: const ENDCASE_TKN = $8D + ; ENDCASE_TKN = 141 +; toolsrc/plasm.pla: 0090: const FOR_TKN = $8E + ; FOR_TKN = 142 +; toolsrc/plasm.pla: 0091: const TO_TKN = $8F + ; TO_TKN = 143 +; toolsrc/plasm.pla: 0092: const DOWNTO_TKN = $90 + ; DOWNTO_TKN = 144 +; toolsrc/plasm.pla: 0093: const STEP_TKN = $91 + ; STEP_TKN = 145 +; toolsrc/plasm.pla: 0094: const NEXT_TKN = $92 + ; NEXT_TKN = 146 +; toolsrc/plasm.pla: 0095: const REPEAT_TKN = $93 + ; REPEAT_TKN = 147 +; toolsrc/plasm.pla: 0096: const UNTIL_TKN = $94 + ; UNTIL_TKN = 148 +; toolsrc/plasm.pla: 0097: const DEF_TKN = $95 + ; DEF_TKN = 149 +; toolsrc/plasm.pla: 0098: const STRUC_TKN = $96 + ; STRUC_TKN = 150 +; toolsrc/plasm.pla: 0099: const SYSFLAGS_TKN = $97 + ; SYSFLAGS_TKN = 151 +; toolsrc/plasm.pla: 0100: const DONE_TKN = $98 + ; DONE_TKN = 152 +; toolsrc/plasm.pla: 0101: const RETURN_TKN = $99 + ; RETURN_TKN = 153 +; toolsrc/plasm.pla: 0102: const BREAK_TKN = $9A + ; BREAK_TKN = 154 +; toolsrc/plasm.pla: 0103: const CONT_TKN = $9B + ; CONT_TKN = 155 +; toolsrc/plasm.pla: 0104: const PREDEF_TKN = $9C + ; PREDEF_TKN = 156 +; toolsrc/plasm.pla: 0105: const IMPORT_TKN = $9D + ; IMPORT_TKN = 157 +; toolsrc/plasm.pla: 0106: const EXPORT_TKN = $9E + ; EXPORT_TKN = 158 +; toolsrc/plasm.pla: 0107: const INCLUDE_TKN = $9F + ; INCLUDE_TKN = 159 +; toolsrc/plasm.pla: 0108: // +; toolsrc/plasm.pla: 0109: // Types +; toolsrc/plasm.pla: 0110: // +; toolsrc/plasm.pla: 0111: const GLOBAL_TYPE = $0000 + ; GLOBAL_TYPE = 0 +; toolsrc/plasm.pla: 0112: const CONST_TYPE = $0001 + ; CONST_TYPE = 1 +; toolsrc/plasm.pla: 0113: const BYTE_TYPE = $0002 + ; BYTE_TYPE = 2 +; toolsrc/plasm.pla: 0114: const WORD_TYPE = $0004 + ; WORD_TYPE = 4 +; toolsrc/plasm.pla: 0115: const VAR_TYPE = $0006 // (WORD_TYPE | BYTE_TYPE) + ; VAR_TYPE = 6 +; toolsrc/plasm.pla: 0116: const FUNC_TYPE = $0008 + ; FUNC_TYPE = 8 +; toolsrc/plasm.pla: 0117: const FUNC_CONST_TYPE = $0009 + ; FUNC_CONST_TYPE = 9 +; toolsrc/plasm.pla: 0118: const ADDR_TYPE = $000E // (VAR_TYPE | FUNC_TYPE) + ; ADDR_TYPE = 14 +; toolsrc/plasm.pla: 0119: const LOCAL_TYPE = $0010 + ; LOCAL_TYPE = 16 +; toolsrc/plasm.pla: 0120: const BPTR_TYPE = $0020 + ; BPTR_TYPE = 32 +; toolsrc/plasm.pla: 0121: const WPTR_TYPE = $0040 + ; WPTR_TYPE = 64 +; toolsrc/plasm.pla: 0122: const PTR_TYPE = $0060 // (BPTR_TYPE | WPTR_TYPE) + ; PTR_TYPE = 96 +; toolsrc/plasm.pla: 0123: const XBYTE_TYPE = $0022 // (BPTR_TYPE | BYTE_TYPE) + ; XBYTE_TYPE = 34 +; toolsrc/plasm.pla: 0124: const XWORD_TYPE = $0044 // (WPTR_TYPE | WORD_TYPE) + ; XWORD_TYPE = 68 +; toolsrc/plasm.pla: 0125: const CONSTADDR_TYPE = $0061 // (CONST_TYPE | PTR_TYPE) + ; CONSTADDR_TYPE = 97 +; toolsrc/plasm.pla: 0126: const STR_TYPE = $0080 + ; STR_TYPE = 128 +; toolsrc/plasm.pla: 0127: const PREDEF_TYPE = $0100 + ; PREDEF_TYPE = 256 +; toolsrc/plasm.pla: 0128: const EXPORT_TYPE = $0200 + ; EXPORT_TYPE = 512 +; toolsrc/plasm.pla: 0129: const EXTERN_TYPE = $0400 + ; EXTERN_TYPE = 1024 +; toolsrc/plasm.pla: 0130: const EXTACCESS_TYPE = $0800 + ; EXTACCESS_TYPE = 2048 +; toolsrc/plasm.pla: 0131: const RELATIVE_TYPE = $8000 + ; RELATIVE_TYPE = 32768 +; toolsrc/plasm.pla: 0132: // +; toolsrc/plasm.pla: 0133: // Fixup flags mask +; toolsrc/plasm.pla: 0134: // +; toolsrc/plasm.pla: 0135: const RESOLVED_FIXUP = $01 + ; RESOLVED_FIXUP = 1 +; toolsrc/plasm.pla: 0136: const RELATIVE_FIXUP = $02 + ; RELATIVE_FIXUP = 2 +; toolsrc/plasm.pla: 0137: const MASK_FIXUP = $90 + ; MASK_FIXUP = 144 +; toolsrc/plasm.pla: 0138: const WORD_FIXUP = $80 + ; WORD_FIXUP = 128 +; toolsrc/plasm.pla: 0139: const BYTE_FIXUP = $00 + ; BYTE_FIXUP = 0 +; toolsrc/plasm.pla: 0140: const EXTERN_FIXUP = $10 + ; EXTERN_FIXUP = 16 +; toolsrc/plasm.pla: 0141: // +; toolsrc/plasm.pla: 0142: // Keywords +; toolsrc/plasm.pla: 0143: // +; toolsrc/plasm.pla: 0144: byte keywrds = "IF", IF_TKN +_D036 ; keywrds = "IF", IF_TKN + !BYTE $02 + !BYTE $49,$46 + !BYTE $83 +; toolsrc/plasm.pla: 0145: byte = "TO", TO_TKN + !BYTE $02 + !BYTE $54,$4F + !BYTE $8F +; toolsrc/plasm.pla: 0146: byte = "IS", OF_TKN + !BYTE $02 + !BYTE $49,$53 + !BYTE $8B +; toolsrc/plasm.pla: 0147: byte = "OR", LOGIC_OR_TKN + !BYTE $02 + !BYTE $4F,$52 + !BYTE $CF +; toolsrc/plasm.pla: 0148: byte = "FOR", FOR_TKN + !BYTE $03 + !BYTE $46,$4F,$52 + !BYTE $8E +; toolsrc/plasm.pla: 0149: byte = "FIN", FIN_TKN + !BYTE $03 + !BYTE $46,$49,$4E + !BYTE $86 +; toolsrc/plasm.pla: 0150: byte = "DEF", DEF_TKN + !BYTE $03 + !BYTE $44,$45,$46 + !BYTE $95 +; toolsrc/plasm.pla: 0151: byte = "END", END_TKN + !BYTE $03 + !BYTE $45,$4E,$44 + !BYTE $87 +; toolsrc/plasm.pla: 0152: byte = "AND", LOGIC_AND_TKN + !BYTE $03 + !BYTE $41,$4E,$44 + !BYTE $CE +; toolsrc/plasm.pla: 0153: byte = "NOT", LOGIC_NOT_TKN + !BYTE $03 + !BYTE $4E,$4F,$54 + !BYTE $A1 +; toolsrc/plasm.pla: 0154: byte = "RES", BYTE_TKN + !BYTE $03 + !BYTE $52,$45,$53 + !BYTE $81 +; toolsrc/plasm.pla: 0155: byte = "VAR", WORD_TKN + !BYTE $03 + !BYTE $56,$41,$52 + !BYTE $82 +; toolsrc/plasm.pla: 0156: byte = "WORD", WORD_TKN + !BYTE $04 + !BYTE $57,$4F,$52,$44 + !BYTE $82 +; toolsrc/plasm.pla: 0157: byte = "CHAR", BYTE_TKN + !BYTE $04 + !BYTE $43,$48,$41,$52 + !BYTE $81 +; toolsrc/plasm.pla: 0158: byte = "BYTE", BYTE_TKN + !BYTE $04 + !BYTE $42,$59,$54,$45 + !BYTE $81 +; toolsrc/plasm.pla: 0159: byte = "ELSE", ELSE_TKN + !BYTE $04 + !BYTE $45,$4C,$53,$45 + !BYTE $85 +; toolsrc/plasm.pla: 0160: byte = "NEXT", NEXT_TKN + !BYTE $04 + !BYTE $4E,$45,$58,$54 + !BYTE $92 +; toolsrc/plasm.pla: 0161: byte = "WHEN", CASE_TKN + !BYTE $04 + !BYTE $57,$48,$45,$4E + !BYTE $8A +; toolsrc/plasm.pla: 0162: byte = "LOOP", LOOP_TKN + !BYTE $04 + !BYTE $4C,$4F,$4F,$50 + !BYTE $89 +; toolsrc/plasm.pla: 0163: byte = "STEP", STEP_TKN + !BYTE $04 + !BYTE $53,$54,$45,$50 + !BYTE $91 +; toolsrc/plasm.pla: 0164: byte = "DONE", DONE_TKN + !BYTE $04 + !BYTE $44,$4F,$4E,$45 + !BYTE $98 +; toolsrc/plasm.pla: 0165: byte = "WEND", ENDCASE_TKN + !BYTE $04 + !BYTE $57,$45,$4E,$44 + !BYTE $8D +; toolsrc/plasm.pla: 0166: byte = "DROP", DROP_TKN + !BYTE $04 + !BYTE $44,$52,$4F,$50 + !BYTE $BB +; toolsrc/plasm.pla: 0167: byte = "CONST", CONST_TKN + !BYTE $05 + !BYTE $43,$4F,$4E,$53,$54 + !BYTE $80 +; toolsrc/plasm.pla: 0168: byte = "STRUC", STRUC_TKN + !BYTE $05 + !BYTE $53,$54,$52,$55,$43 + !BYTE $96 +; toolsrc/plasm.pla: 0169: byte = "ELSIF", ELSEIF_TKN + !BYTE $05 + !BYTE $45,$4C,$53,$49,$46 + !BYTE $84 +; toolsrc/plasm.pla: 0170: byte = "WHILE", WHILE_TKN + !BYTE $05 + !BYTE $57,$48,$49,$4C,$45 + !BYTE $88 +; toolsrc/plasm.pla: 0171: byte = "UNTIL", UNTIL_TKN + !BYTE $05 + !BYTE $55,$4E,$54,$49,$4C + !BYTE $94 +; toolsrc/plasm.pla: 0172: byte = "BREAK", BREAK_TKN + !BYTE $05 + !BYTE $42,$52,$45,$41,$4B + !BYTE $9A +; toolsrc/plasm.pla: 0173: byte = "IMPORT", IMPORT_TKN + !BYTE $06 + !BYTE $49,$4D,$50,$4F,$52,$54 + !BYTE $9D +; toolsrc/plasm.pla: 0174: byte = "EXPORT", EXPORT_TKN + !BYTE $06 + !BYTE $45,$58,$50,$4F,$52,$54 + !BYTE $9E +; toolsrc/plasm.pla: 0175: byte = "DOWNTO", DOWNTO_TKN + !BYTE $06 + !BYTE $44,$4F,$57,$4E,$54,$4F + !BYTE $90 +; toolsrc/plasm.pla: 0176: byte = "REPEAT", REPEAT_TKN + !BYTE $06 + !BYTE $52,$45,$50,$45,$41,$54 + !BYTE $93 +; toolsrc/plasm.pla: 0177: byte = "RETURN", RETURN_TKN + !BYTE $06 + !BYTE $52,$45,$54,$55,$52,$4E + !BYTE $99 +; toolsrc/plasm.pla: 0178: byte = "PREDEF", PREDEF_TKN + !BYTE $06 + !BYTE $50,$52,$45,$44,$45,$46 + !BYTE $9C +; toolsrc/plasm.pla: 0179: byte = "INCLUDE", INCLUDE_TKN + !BYTE $07 + !BYTE $49,$4E,$43,$4C,$55,$44,$45 + !BYTE $9F +; toolsrc/plasm.pla: 0180: byte = "CONTINUE", CONT_TKN + !BYTE $08 + !BYTE $43,$4F,$4E,$54,$49,$4E,$55,$45 + !BYTE $9B +; toolsrc/plasm.pla: 0181: byte = "SYSFLAGS", SYSFLAGS_TKN + !BYTE $08 + !BYTE $53,$59,$53,$46,$4C,$41,$47,$53 + !BYTE $97 +; toolsrc/plasm.pla: 0182: byte = "OTHERWISE",DEFAULT_TKN + !BYTE $09 + !BYTE $4F,$54,$48,$45,$52,$57,$49,$53 + !BYTE $45 + !BYTE $8C +; toolsrc/plasm.pla: 0183: byte = $FF + !BYTE $FF +; toolsrc/plasm.pla: 0184: // +; toolsrc/plasm.pla: 0185: // Mathematical ops +; toolsrc/plasm.pla: 0186: // +; toolsrc/plasm.pla: 0187: const bops_tblsz = 17 // minus 1 + ; bops_tblsz = 17 +; toolsrc/plasm.pla: 0188: byte[] bops_tbl // Highest precedence +_D037 ; bops_tbl // Highest precedence +; toolsrc/plasm.pla: 0189: byte = MUL_TKN, DIV_TKN, MOD_TKN + !BYTE $AA + !BYTE $AF + !BYTE $A5 +; toolsrc/plasm.pla: 0190: byte = ADD_TKN, SUB_TKN + !BYTE $AB + !BYTE $AD +; toolsrc/plasm.pla: 0191: byte = SHR_TKN, SHL_TKN + !BYTE $D2 + !BYTE $CC +; toolsrc/plasm.pla: 0192: byte = AND_TKN + !BYTE $A6 +; toolsrc/plasm.pla: 0193: byte = EOR_TKN + !BYTE $DE +; toolsrc/plasm.pla: 0194: byte = OR_TKN + !BYTE $FC +; toolsrc/plasm.pla: 0195: byte = GT_TKN, GE_TKN, LT_TKN, LE_TKN + !BYTE $BE + !BYTE $C8 + !BYTE $BC + !BYTE $C2 +; toolsrc/plasm.pla: 0196: byte = EQ_TKN, NE_TKN + !BYTE $C5 + !BYTE $D5 +; toolsrc/plasm.pla: 0197: // Lowest precedence +; toolsrc/plasm.pla: 0198: byte[] bops_prec // Highest precedence +_D038 ; bops_prec // Highest precedence +; toolsrc/plasm.pla: 0199: byte = 1, 1, 1 + !BYTE $01 + !BYTE $01 + !BYTE $01 +; toolsrc/plasm.pla: 0200: byte = 2, 2 + !BYTE $02 + !BYTE $02 +; toolsrc/plasm.pla: 0201: byte = 3, 3 + !BYTE $03 + !BYTE $03 +; toolsrc/plasm.pla: 0202: byte = 4 + !BYTE $04 +; toolsrc/plasm.pla: 0203: byte = 5 + !BYTE $05 +; toolsrc/plasm.pla: 0204: byte = 6 + !BYTE $06 +; toolsrc/plasm.pla: 0205: byte = 7, 7, 7, 7 + !BYTE $07 + !BYTE $07 + !BYTE $07 + !BYTE $07 +; toolsrc/plasm.pla: 0206: byte = 8, 8 + !BYTE $08 + !BYTE $08 +; toolsrc/plasm.pla: 0207: // Lowest precedence +; toolsrc/plasm.pla: 0208: byte[16] opstack +_D039 !FILL 16 ; opstack +; toolsrc/plasm.pla: 0209: byte[16] precstack +_D040 !FILL 16 ; precstack +; toolsrc/plasm.pla: 0210: word opsp +_D041 !FILL 2 ; opsp +; toolsrc/plasm.pla: 0211: word[16] valstack +_D042 !FILL 32 ; valstack +; toolsrc/plasm.pla: 0212: byte[16] sizestack +_D043 !FILL 16 ; sizestack +; toolsrc/plasm.pla: 0213: byte[16] typestack +_D044 !FILL 16 ; typestack +; toolsrc/plasm.pla: 0214: word valsp +_D045 !FILL 2 ; valsp +; toolsrc/plasm.pla: 0215: // +; toolsrc/plasm.pla: 0216: // Code sequence shared with optimizer +; toolsrc/plasm.pla: 0217: // +; toolsrc/plasm.pla: 0218: include "toolsrc/codeseq.plh" +; toolsrc/codeseq.plh: 0001: // +; toolsrc/codeseq.plh: 0002: // Constant code group +; toolsrc/codeseq.plh: 0003: // +; toolsrc/codeseq.plh: 0004: const CONST_GROUP = $00 + ; CONST_GROUP = 0 +; toolsrc/codeseq.plh: 0005: const CONST_CODE = $2C + ; CONST_CODE = 44 +; toolsrc/codeseq.plh: 0006: const ADDI_CODE = $38 + ; ADDI_CODE = 56 +; toolsrc/codeseq.plh: 0007: const SUBI_CODE = $3A + ; SUBI_CODE = 58 +; toolsrc/codeseq.plh: 0008: const ANDI_CODE = $3C + ; ANDI_CODE = 60 +; toolsrc/codeseq.plh: 0009: const ORI_CODE = $3E + ; ORI_CODE = 62 +; toolsrc/codeseq.plh: 0010: const CONSTR_GROUP = $01 + ; CONSTR_GROUP = 1 +; toolsrc/codeseq.plh: 0011: const CONSTR_CODE = $2E + ; CONSTR_CODE = 46 +; toolsrc/codeseq.plh: 0012: // +; toolsrc/codeseq.plh: 0013: // Stack code group +; toolsrc/codeseq.plh: 0014: // +; toolsrc/codeseq.plh: 0015: const STACK_GROUP = $02 + ; STACK_GROUP = 2 +; toolsrc/codeseq.plh: 0016: const INDEXB_CODE = $82 + ; INDEXB_CODE = 130 +; toolsrc/codeseq.plh: 0017: const ADD_CODE = $82 + ; ADD_CODE = 130 +; toolsrc/codeseq.plh: 0018: const SUB_CODE = $84 + ; SUB_CODE = 132 +; toolsrc/codeseq.plh: 0019: const MUL_CODE = $86 + ; MUL_CODE = 134 +; toolsrc/codeseq.plh: 0020: const DIV_CODE = $88 + ; DIV_CODE = 136 +; toolsrc/codeseq.plh: 0021: const MOD_CODE = $8A + ; MOD_CODE = 138 +; toolsrc/codeseq.plh: 0022: const INC_CODE = $8C + ; INC_CODE = 140 +; toolsrc/codeseq.plh: 0023: const DEC_CODE = $8E + ; DEC_CODE = 142 +; toolsrc/codeseq.plh: 0024: const NEG_CODE = $90 + ; NEG_CODE = 144 +; toolsrc/codeseq.plh: 0025: const COMP_CODE = $92 + ; COMP_CODE = 146 +; toolsrc/codeseq.plh: 0026: const AND_CODE = $94 + ; AND_CODE = 148 +; toolsrc/codeseq.plh: 0027: const OR_CODE = $96 + ; OR_CODE = 150 +; toolsrc/codeseq.plh: 0028: const EOR_CODE = $98 + ; EOR_CODE = 152 +; toolsrc/codeseq.plh: 0029: const SHL_CODE = $9A + ; SHL_CODE = 154 +; toolsrc/codeseq.plh: 0030: const SHR_CODE = $9C + ; SHR_CODE = 156 +; toolsrc/codeseq.plh: 0031: const INDEXW_CODE = $9E + ; INDEXW_CODE = 158 +; toolsrc/codeseq.plh: 0032: const LOGIC_NOT_CODE = $80 + ; LOGIC_NOT_CODE = 128 +; toolsrc/codeseq.plh: 0033: const DROP_CODE = $30 + ; DROP_CODE = 48 +; toolsrc/codeseq.plh: 0034: const DROP2_CODE = $32 + ; DROP2_CODE = 50 +; toolsrc/codeseq.plh: 0035: const DUP_CODE = $34 + ; DUP_CODE = 52 +; toolsrc/codeseq.plh: 0036: const EQ_CODE = $40 + ; EQ_CODE = 64 +; toolsrc/codeseq.plh: 0037: const NE_CODE = $42 + ; NE_CODE = 66 +; toolsrc/codeseq.plh: 0038: const GT_CODE = $44 + ; GT_CODE = 68 +; toolsrc/codeseq.plh: 0039: const LT_CODE = $46 + ; LT_CODE = 70 +; toolsrc/codeseq.plh: 0040: const GE_CODE = $48 + ; GE_CODE = 72 +; toolsrc/codeseq.plh: 0041: const LE_CODE = $4A + ; LE_CODE = 74 +; toolsrc/codeseq.plh: 0042: const ICAL_CODE = $56 + ; ICAL_CODE = 86 +; toolsrc/codeseq.plh: 0043: const RET_CODE = $5C + ; RET_CODE = 92 +; toolsrc/codeseq.plh: 0044: const LB_CODE = $60 + ; LB_CODE = 96 +; toolsrc/codeseq.plh: 0045: const BPTR_CODE = $60 + ; BPTR_CODE = 96 +; toolsrc/codeseq.plh: 0046: const LW_CODE = $62 + ; LW_CODE = 98 +; toolsrc/codeseq.plh: 0047: const WPTR_CODE = $62 + ; WPTR_CODE = 98 +; toolsrc/codeseq.plh: 0048: const SB_CODE = $70 + ; SB_CODE = 112 +; toolsrc/codeseq.plh: 0049: const SW_CODE = $72 + ; SW_CODE = 114 +; toolsrc/codeseq.plh: 0050: // +; toolsrc/codeseq.plh: 0051: // Local address code group +; toolsrc/codeseq.plh: 0052: // +; toolsrc/codeseq.plh: 0053: const LOCAL_GROUP = $03 + ; LOCAL_GROUP = 3 +; toolsrc/codeseq.plh: 0054: const LADDR_CODE = $28 + ; LADDR_CODE = 40 +; toolsrc/codeseq.plh: 0055: const LLB_CODE = $64 + ; LLB_CODE = 100 +; toolsrc/codeseq.plh: 0056: const LLW_CODE = $66 + ; LLW_CODE = 102 +; toolsrc/codeseq.plh: 0057: const DLB_CODE = $6C + ; DLB_CODE = 108 +; toolsrc/codeseq.plh: 0058: const DLW_CODE = $6E + ; DLW_CODE = 110 +; toolsrc/codeseq.plh: 0059: const SLB_CODE = $74 + ; SLB_CODE = 116 +; toolsrc/codeseq.plh: 0060: const SLW_CODE = $76 + ; SLW_CODE = 118 +; toolsrc/codeseq.plh: 0061: const ADDLB_CODE = $B0 + ; ADDLB_CODE = 176 +; toolsrc/codeseq.plh: 0062: const ADDLW_CODE = $B2 + ; ADDLW_CODE = 178 +; toolsrc/codeseq.plh: 0063: const IDXLB_CODE = $B8 + ; IDXLB_CODE = 184 +; toolsrc/codeseq.plh: 0064: const IDXLW_CODE = $BA + ; IDXLW_CODE = 186 +; toolsrc/codeseq.plh: 0065: // +; toolsrc/codeseq.plh: 0066: // Global address code group +; toolsrc/codeseq.plh: 0067: // +; toolsrc/codeseq.plh: 0068: const GLOBAL_GROUP = $04 + ; GLOBAL_GROUP = 4 +; toolsrc/codeseq.plh: 0069: const GADDR_CODE = $26 + ; GADDR_CODE = 38 +; toolsrc/codeseq.plh: 0070: const CALL_CODE = $54 + ; CALL_CODE = 84 +; toolsrc/codeseq.plh: 0071: const LAB_CODE = $68 + ; LAB_CODE = 104 +; toolsrc/codeseq.plh: 0072: const LAW_CODE = $6A + ; LAW_CODE = 106 +; toolsrc/codeseq.plh: 0073: const SAB_CODE = $78 + ; SAB_CODE = 120 +; toolsrc/codeseq.plh: 0074: const SAW_CODE = $7A + ; SAW_CODE = 122 +; toolsrc/codeseq.plh: 0075: const DAB_CODE = $7C + ; DAB_CODE = 124 +; toolsrc/codeseq.plh: 0076: const DAW_CODE = $7E + ; DAW_CODE = 126 +; toolsrc/codeseq.plh: 0077: const ADDAB_CODE = $B4 + ; ADDAB_CODE = 180 +; toolsrc/codeseq.plh: 0078: const ADDAW_CODE = $B6 + ; ADDAW_CODE = 182 +; toolsrc/codeseq.plh: 0079: const IDXAB_CODE = $BC + ; IDXAB_CODE = 188 +; toolsrc/codeseq.plh: 0080: const IDXAW_CODE = $BE + ; IDXAW_CODE = 190 +; toolsrc/codeseq.plh: 0081: // +; toolsrc/codeseq.plh: 0082: // Relative address code group +; toolsrc/codeseq.plh: 0083: // +; toolsrc/codeseq.plh: 0084: const RELATIVE_GROUP = $05 + ; RELATIVE_GROUP = 5 +; toolsrc/codeseq.plh: 0085: const BREQ_CODE = $22 + ; BREQ_CODE = 34 +; toolsrc/codeseq.plh: 0086: const BRNE_CODE = $24 + ; BRNE_CODE = 36 +; toolsrc/codeseq.plh: 0087: const BRFALSE_CODE = $4C + ; BRFALSE_CODE = 76 +; toolsrc/codeseq.plh: 0088: const BRTRUE_CODE = $4E + ; BRTRUE_CODE = 78 +; toolsrc/codeseq.plh: 0089: const BRNCH_CODE = $50 + ; BRNCH_CODE = 80 +; toolsrc/codeseq.plh: 0090: const BRAND_CODE = $AC + ; BRAND_CODE = 172 +; toolsrc/codeseq.plh: 0091: const BROR_CODE = $AE + ; BROR_CODE = 174 +; toolsrc/codeseq.plh: 0092: const BRGT_CODE = $A0 + ; BRGT_CODE = 160 +; toolsrc/codeseq.plh: 0093: const BRLT_CODE = $A2 + ; BRLT_CODE = 162 +; toolsrc/codeseq.plh: 0094: // +; toolsrc/codeseq.plh: 0095: // Code tag address group +; toolsrc/codeseq.plh: 0096: // +; toolsrc/codeseq.plh: 0097: const CODETAG_GROUP = $06 + ; CODETAG_GROUP = 6 +; toolsrc/codeseq.plh: 0098: // +; toolsrc/codeseq.plh: 0099: // Invalid code +; toolsrc/codeseq.plh: 0100: // +; toolsrc/codeseq.plh: 0101: const INVALID_CODE = $FF + ; INVALID_CODE = 255 +; toolsrc/codeseq.plh: 0102: // +; toolsrc/codeseq.plh: 0103: // Code sequence op +; toolsrc/codeseq.plh: 0104: // +; toolsrc/codeseq.plh: 0105: struc t_opseq +; toolsrc/codeseq.plh: 0106: byte opcode + ; opcode = 0 +; toolsrc/codeseq.plh: 0107: byte opgroup + ; opgroup = 1 +; toolsrc/codeseq.plh: 0108: word opval[] + ; opval = 2 +; toolsrc/codeseq.plh: 0109: word optag + ; optag = 2 +; toolsrc/codeseq.plh: 0110: word opoffset + ; opoffset = 4 +; toolsrc/codeseq.plh: 0111: word opnext + ; opnext = 6 +; toolsrc/codeseq.plh: 0112: end + ; t_opseq = 8 +; toolsrc/plasm.pla: 0218: +; toolsrc/plasm.pla: 0219: // +; toolsrc/plasm.pla: 0220: // +; toolsrc/plasm.pla: 0221: // Symbol table variables +; toolsrc/plasm.pla: 0222: // +; toolsrc/plasm.pla: 0223: struc t_id +; toolsrc/plasm.pla: 0224: word idval + ; idval = 0 +; toolsrc/plasm.pla: 0225: word idtype + ; idtype = 2 +; toolsrc/plasm.pla: 0226: byte funcparms + ; funcparms = 4 +; toolsrc/plasm.pla: 0227: byte funcvals + ; funcvals = 5 +; toolsrc/plasm.pla: 0228: byte extnum + ; extnum = 6 +; toolsrc/plasm.pla: 0229: byte idname + ; idname = 7 +; toolsrc/plasm.pla: 0230: end + ; t_id = 8 +; toolsrc/plasm.pla: 0231: // +; toolsrc/plasm.pla: 0232: // Generated code buffers +; toolsrc/plasm.pla: 0233: // +; toolsrc/plasm.pla: 0234: const OPSEQNUM = 256 + ; OPSEQNUM = 256 +; toolsrc/plasm.pla: 0235: const DFDNUM = 128 + ; DFDNUM = 128 +; toolsrc/plasm.pla: 0236: const TAGNUM = 1024 + ; TAGNUM = 1024 +; toolsrc/plasm.pla: 0237: const FIXUPNUM = 2048 + ; FIXUPNUM = 2048 +; toolsrc/plasm.pla: 0238: const MODDEPNUM = 8 + ; MODDEPNUM = 8 +; toolsrc/plasm.pla: 0239: const IDGLOBALSZ = 4096 + ; IDGLOBALSZ = 4096 +; toolsrc/plasm.pla: 0240: const IDLOCALSZ = 512 + ; IDLOCALSZ = 512 +; toolsrc/plasm.pla: 0241: const CASENUM = 64 + ; CASENUM = 64 +; toolsrc/plasm.pla: 0242: word fixup_cnt, tag_cnt = -1 +_D046 !FILL 2 ; fixup_cnt, tag_cnt = -1 +_D047 ; tag_cnt = -1 + !WORD $FFFF +; toolsrc/plasm.pla: 0243: word dfd_tag, dfd_cnt +_D048 !FILL 2 ; dfd_tag, dfd_cnt +_D049 !FILL 2 ; dfd_cnt +; toolsrc/plasm.pla: 0244: word fixup_tag, fixup_addr +_D050 !FILL 2 ; fixup_tag, fixup_addr +_D051 !FILL 2 ; fixup_addr +; toolsrc/plasm.pla: 0245: word tag_addr, tag_type +_D052 !FILL 2 ; tag_addr, tag_type +_D053 !FILL 2 ; tag_type +; toolsrc/plasm.pla: 0246: word idglobal_tbl, idlocal_tbl +_D054 !FILL 2 ; idglobal_tbl, idlocal_tbl +_D055 !FILL 2 ; idlocal_tbl +; toolsrc/plasm.pla: 0247: word pending_seq +_D056 !FILL 2 ; pending_seq +; toolsrc/plasm.pla: 0248: word globals, lastglobal, lastglobalsize, lastlocal, savelast, savetbl +_D057 !FILL 2 ; globals, lastglobal, lastglobalsize, lastlocal, savelast, savetbl +_D058 !FILL 2 ; lastglobal, lastglobalsize, lastlocal, savelast, savetbl +_D059 !FILL 2 ; lastglobalsize, lastlocal, savelast, savetbl +_D060 !FILL 2 ; lastlocal, savelast, savetbl +_D061 !FILL 2 ; savelast, savetbl +_D062 !FILL 2 ; savetbl +; toolsrc/plasm.pla: 0249: word dfd_num, tag_num, fixup_num, globalbufsz, localbufsz, codebufsz +_D063 !FILL 2 ; dfd_num, tag_num, fixup_num, globalbufsz, localbufsz, codebufsz +_D064 !FILL 2 ; tag_num, fixup_num, globalbufsz, localbufsz, codebufsz +_D065 !FILL 2 ; fixup_num, globalbufsz, localbufsz, codebufsz +_D066 !FILL 2 ; globalbufsz, localbufsz, codebufsz +_D067 !FILL 2 ; localbufsz, codebufsz +_D068 !FILL 2 ; codebufsz +; toolsrc/plasm.pla: 0250: word datasize, framesize, savesize +_D069 !FILL 2 ; datasize, framesize, savesize +_D070 !FILL 2 ; framesize, savesize +_D071 !FILL 2 ; savesize +; toolsrc/plasm.pla: 0251: byte locals, savelocals +_D072 !FILL 1 ; locals, savelocals +_D073 !FILL 1 ; savelocals +; toolsrc/plasm.pla: 0252: word codebuff, codeptr, entrypoint +_D074 !FILL 2 ; codebuff, codeptr, entrypoint +_D075 !FILL 2 ; codeptr, entrypoint +_D076 !FILL 2 ; entrypoint +; toolsrc/plasm.pla: 0253: word modsysflags +_D077 !FILL 2 ; modsysflags +; toolsrc/plasm.pla: 0254: byte[16] moddep_tbl[MODDEPNUM] +_D078 !FILL 128 ; moddep_tbl[MODDEPNUM] +; toolsrc/plasm.pla: 0255: byte moddep_cnt, def_cnt = 1 +_D079 !FILL 1 ; moddep_cnt, def_cnt = 1 +_D080 ; def_cnt = 1 + !BYTE $01 +; toolsrc/plasm.pla: 0256: predef parse_mods +; toolsrc/plasm.pla: 0257: predef emit_pending_seq#0 +; toolsrc/plasm.pla: 0258: // +; toolsrc/plasm.pla: 0259: // Module relocation base address +; toolsrc/plasm.pla: 0260: // +; toolsrc/plasm.pla: 0261: const RELADDR = $1000 + ; RELADDR = 4096 +; toolsrc/plasm.pla: 0262: // +; toolsrc/plasm.pla: 0263: // Exports for optimizer module +; toolsrc/plasm.pla: 0264: // +; toolsrc/plasm.pla: 0265: export word freeop_lst +_D083 !FILL 2 ; freeop_lst +; toolsrc/plasm.pla: 0266: export word optimize_seq +_D084 !FILL 2 ; optimize_seq +; toolsrc/plasm.pla: 0267: // +; toolsrc/plasm.pla: 0268: // Compiler flags +; toolsrc/plasm.pla: 0269: // +; toolsrc/plasm.pla: 0270: const OPTIMIZE = 1 + ; OPTIMIZE = 1 +; toolsrc/plasm.pla: 0271: const OPTIMIZE2 = 2 + ; OPTIMIZE2 = 2 +; toolsrc/plasm.pla: 0272: const NO_COMBINE = 4 + ; NO_COMBINE = 4 +; toolsrc/plasm.pla: 0273: const WARNINGS = 8 + ; WARNINGS = 8 +; toolsrc/plasm.pla: 0274: byte outflags +_D085 !FILL 1 ; outflags +; toolsrc/plasm.pla: 0275: // +; toolsrc/plasm.pla: 0276: // ProDOS/SOS file references +; toolsrc/plasm.pla: 0277: // +; toolsrc/plasm.pla: 0278: byte refnum, srcref, incref +_D086 !FILL 1 ; refnum, srcref, incref +_D087 !FILL 1 ; srcref, incref +_D088 !FILL 1 ; incref +; toolsrc/plasm.pla: 0279: byte[32] srcfile, incfile, relfile, modfile +_D089 !FILL 32 ; srcfile, incfile, relfile, modfile +_D090 !FILL 32 ; incfile, relfile, modfile +_D091 !FILL 32 ; relfile, modfile +_D092 !FILL 32 ; modfile +; toolsrc/plasm.pla: 0280: word parsefile // Pointer to current file +_D093 !FILL 2 ; parsefile // Pointer to current file +; toolsrc/plasm.pla: 0281: word srcline // Saved source line number +_D094 !FILL 2 ; srcline // Saved source line number +; toolsrc/plasm.pla: 0282: // +; toolsrc/plasm.pla: 0283: // Scanner variables +; toolsrc/plasm.pla: 0284: // +; toolsrc/plasm.pla: 0285: word instr +_D095 !FILL 2 ; instr +; toolsrc/plasm.pla: 0286: word inbuff +_D096 !FILL 2 ; inbuff +; toolsrc/plasm.pla: 0287: word scanptr +_D097 !FILL 2 ; scanptr +; toolsrc/plasm.pla: 0288: byte token = EOL_TKN +_D098 ; token = EOL_TKN + !BYTE $02 +; toolsrc/plasm.pla: 0289: byte scanchr, tknlen +_D099 !FILL 1 ; scanchr, tknlen +_D100 !FILL 1 ; tknlen +; toolsrc/plasm.pla: 0290: word tknptr, parserrln +_D101 !FILL 2 ; tknptr, parserrln +_D102 !FILL 2 ; parserrln +; toolsrc/plasm.pla: 0291: word constval +_D103 !FILL 2 ; constval +; toolsrc/plasm.pla: 0292: word lineno +_D104 !FILL 2 ; lineno +; toolsrc/plasm.pla: 0293: // +; toolsrc/plasm.pla: 0294: // Parser variables +; toolsrc/plasm.pla: 0295: // +; toolsrc/plasm.pla: 0296: const LVALUE = 0 + ; LVALUE = 0 +; toolsrc/plasm.pla: 0297: const RVALUE = 1 + ; RVALUE = 1 +; toolsrc/plasm.pla: 0298: const LAMBDANUM = 16 + ; LAMBDANUM = 16 +; toolsrc/plasm.pla: 0299: word strconstbuff +_D105 !FILL 2 ; strconstbuff +; toolsrc/plasm.pla: 0300: word strconstptr +_D106 !FILL 2 ; strconstptr +; toolsrc/plasm.pla: 0301: byte infunc, inlambda +_D107 !FILL 1 ; infunc, inlambda +_D108 !FILL 1 ; inlambda +; toolsrc/plasm.pla: 0302: byte stack_loop +_D109 !FILL 1 ; stack_loop +; toolsrc/plasm.pla: 0303: byte prevstmnt +_D110 !FILL 1 ; prevstmnt +; toolsrc/plasm.pla: 0304: word infuncvals +_D111 !FILL 2 ; infuncvals +; toolsrc/plasm.pla: 0305: word break_tag +_D112 !FILL 2 ; break_tag +; toolsrc/plasm.pla: 0306: word cont_tag +_D113 !FILL 2 ; cont_tag +; toolsrc/plasm.pla: 0307: byte lambda_cnt, lambda_num +_D114 !FILL 1 ; lambda_cnt, lambda_num +_D115 !FILL 1 ; lambda_num +; toolsrc/plasm.pla: 0308: byte[LAMBDANUM] lambda_cparms +_D116 !FILL 16 ; lambda_cparms +; toolsrc/plasm.pla: 0309: word[LAMBDANUM] lambda_seq, lambda_tag +_D117 !FILL 32 ; lambda_seq, lambda_tag +_D118 !FILL 32 ; lambda_tag +; toolsrc/plasm.pla: 0310: predef parse_constexpr#3, parse_expr(codeseq)#2, parse_lambda +; toolsrc/plasm.pla: 0311: byte bytesln = " bytes\n" +_D122 ; bytesln = " bytes\n" + !BYTE $07 + !BYTE $20,$62,$79,$74,$65,$73,$0D +; toolsrc/plasm.pla: 0312: // +; toolsrc/plasm.pla: 0313: // Arg pointer +; toolsrc/plasm.pla: 0314: // +; toolsrc/plasm.pla: 0315: word arg, opt +_D123 !FILL 2 ; arg, opt +_D124 !FILL 2 ; opt +; toolsrc/plasm.pla: 0316: // +; toolsrc/plasm.pla: 0317: // Long jump environment +; toolsrc/plasm.pla: 0318: // +; toolsrc/plasm.pla: 0319: word exit +_D125 !FILL 2 ; exit +; toolsrc/plasm.pla: 0320: // +; toolsrc/plasm.pla: 0321: // Error string flags +; toolsrc/plasm.pla: 0322: // +; toolsrc/plasm.pla: 0323: const ERR_DUP = $0001 + ; ERR_DUP = 1 +; toolsrc/plasm.pla: 0324: const ERR_UNDECL = $0002 + ; ERR_UNDECL = 2 +; toolsrc/plasm.pla: 0325: const ERR_INVAL = $0004 + ; ERR_INVAL = 4 +; toolsrc/plasm.pla: 0326: const ERR_MISS = $0008 + ; ERR_MISS = 8 +; toolsrc/plasm.pla: 0327: const ERR_OVER = $0010 + ; ERR_OVER = 16 +; toolsrc/plasm.pla: 0328: const ERR_CLOSE = $0020 + ; ERR_CLOSE = 32 +; toolsrc/plasm.pla: 0329: const ERR_LOCAL = $0040 + ; ERR_LOCAL = 64 +; toolsrc/plasm.pla: 0330: const ERR_GLOBAL = $0080 + ; ERR_GLOBAL = 128 +; toolsrc/plasm.pla: 0331: const ERR_CODE = $0100 + ; ERR_CODE = 256 +; toolsrc/plasm.pla: 0332: const ERR_ID = $0200 + ; ERR_ID = 512 +; toolsrc/plasm.pla: 0333: const ERR_CONST = $0400 + ; ERR_CONST = 1024 +; toolsrc/plasm.pla: 0334: const ERR_INIT = $0800 + ; ERR_INIT = 2048 +; toolsrc/plasm.pla: 0335: const ERR_STATE = $1000 + ; ERR_STATE = 4096 +; toolsrc/plasm.pla: 0336: const ERR_FRAME = $2000 + ; ERR_FRAME = 8192 +; toolsrc/plasm.pla: 0337: const ERR_TABLE = $4000 + ; ERR_TABLE = 16384 +; toolsrc/plasm.pla: 0338: const ERR_SYNTAX = $8000 + ; ERR_SYNTAX = 32768 +; toolsrc/plasm.pla: 0339: +; toolsrc/plasm.pla: 0340: //===================================== +; toolsrc/plasm.pla: 0341: // +; toolsrc/plasm.pla: 0342: // PLASMA Compiler +; toolsrc/plasm.pla: 0343: // +; toolsrc/plasm.pla: 0344: //===================================== +; toolsrc/plasm.pla: 0345: +; toolsrc/plasm.pla: 0346: // +; toolsrc/plasm.pla: 0347: // Lexical scanner helper for keyword/IDs +; toolsrc/plasm.pla: 0348: // +; toolsrc/plasm.pla: 0349: asm scanid(scanptr, keywrds)#3 +_A000 ; scanid() +; toolsrc/plasm.pla: 0350: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; toolsrc/plasm.pla: 0351: LDA ESTKL,X + LDA ESTKL,X +; toolsrc/plasm.pla: 0352: STA DSTL + STA DSTL +; toolsrc/plasm.pla: 0353: LDA ESTKH,X + LDA ESTKH,X +; toolsrc/plasm.pla: 0354: STA DSTH + STA DSTH +; toolsrc/plasm.pla: 0355: LDA ESTKL+1,X + LDA ESTKL+1,X +; toolsrc/plasm.pla: 0356: STA ESTKL,X ; COPY OUTPUT SCANPTR + STA ESTKL,X ; COPY OUTPUT SCANPTR +; toolsrc/plasm.pla: 0357: STA SRCL + STA SRCL +; toolsrc/plasm.pla: 0358: LDA ESTKH+1,X + LDA ESTKH+1,X +; toolsrc/plasm.pla: 0359: STA ESTKH,X + STA ESTKH,X +; toolsrc/plasm.pla: 0360: STA SRCH + STA SRCH +; toolsrc/plasm.pla: 0361: DEX + DEX +; toolsrc/plasm.pla: 0362: LDA #$00 + LDA #$00 +; toolsrc/plasm.pla: 0363: STA ESTKL,X ; CLEAR OUTPUT TOKEN + STA ESTKL,X ; CLEAR OUTPUT TOKEN +; toolsrc/plasm.pla: 0364: STA ESTKH,X + STA ESTKH,X +; toolsrc/plasm.pla: 0365: STA ESTKH+2,X ; CLEAR MSB OF SCANCHR + STA ESTKH+2,X ; CLEAR MSB OF SCANCHR +; toolsrc/plasm.pla: 0366: TAY + TAY +; toolsrc/plasm.pla: 0367: LDA (SRC),Y + LDA (SRC),Y +; toolsrc/plasm.pla: 0368: AND #$7F + AND #$7F +; toolsrc/plasm.pla: 0369: CMP #'a' + CMP #'a' +; toolsrc/plasm.pla: 0370: BCC + + BCC + +; toolsrc/plasm.pla: 0371: CMP #'z'+1 + CMP #'z'+1 +; toolsrc/plasm.pla: 0372: BCS + + BCS + +; toolsrc/plasm.pla: 0373: SBC #$1F + SBC #$1F +; toolsrc/plasm.pla: 0374: STA (SRC),Y + STA (SRC),Y +; toolsrc/plasm.pla: 0375: + STA ESTKL+2,X ; SET SCANCHR ++ STA ESTKL+2,X ; SET SCANCHR +; toolsrc/plasm.pla: 0376: CMP #'_' + CMP #'_' +; toolsrc/plasm.pla: 0377: BEQ + + BEQ + +; toolsrc/plasm.pla: 0378: CMP #'A' + CMP #'A' +; toolsrc/plasm.pla: 0379: BCC SCANEX + BCC SCANEX +; toolsrc/plasm.pla: 0380: CMP #'Z'+1 + CMP #'Z'+1 +; toolsrc/plasm.pla: 0381: BCS SCANEX + BCS SCANEX +; toolsrc/plasm.pla: 0382: + LDA #$D6 ; ID_TKN ++ LDA #$D6 ; ID_TKN +; toolsrc/plasm.pla: 0383: STA ESTKL,X ; SET OUTPUT TOKEN = ID_TKN + STA ESTKL,X ; SET OUTPUT TOKEN = ID_TKN +; toolsrc/plasm.pla: 0384: SCANID INY +SCANID INY +; toolsrc/plasm.pla: 0385: LDA (SRC),Y + LDA (SRC),Y +; toolsrc/plasm.pla: 0386: AND #$7F + AND #$7F +; toolsrc/plasm.pla: 0387: BEQ ++ + BEQ ++ +; toolsrc/plasm.pla: 0388: CMP #'a' + CMP #'a' +; toolsrc/plasm.pla: 0389: BCC + + BCC + +; toolsrc/plasm.pla: 0390: CMP #'z'+1 + CMP #'z'+1 +; toolsrc/plasm.pla: 0391: BCS ++ + BCS ++ +; toolsrc/plasm.pla: 0392: SBC #$1F + SBC #$1F +; toolsrc/plasm.pla: 0393: STA (SRC),Y ; COPY UPPERCASE CHAR BACK TO ^SCANPTR + STA (SRC),Y ; COPY UPPERCASE CHAR BACK TO ^SCANPTR +; toolsrc/plasm.pla: 0394: BNE SCANID + BNE SCANID +; toolsrc/plasm.pla: 0395: + CMP #'_' ++ CMP #'_' +; toolsrc/plasm.pla: 0396: BEQ SCANID + BEQ SCANID +; toolsrc/plasm.pla: 0397: CMP #'0' + CMP #'0' +; toolsrc/plasm.pla: 0398: BCC ++ + BCC ++ +; toolsrc/plasm.pla: 0399: CMP #'9'+1 + CMP #'9'+1 +; toolsrc/plasm.pla: 0400: BCC SCANID + BCC SCANID +; toolsrc/plasm.pla: 0401: CMP #'A' + CMP #'A' +; toolsrc/plasm.pla: 0402: BCC ++ + BCC ++ +; toolsrc/plasm.pla: 0403: CMP #'Z'+1 + CMP #'Z'+1 +; toolsrc/plasm.pla: 0404: BCC SCANID + BCC SCANID +; toolsrc/plasm.pla: 0405: ++ STY TMPL +++ STY TMPL +; toolsrc/plasm.pla: 0406: TYA + TYA +; toolsrc/plasm.pla: 0407: LDY #$00 + LDY #$00 +; toolsrc/plasm.pla: 0408: CLC + CLC +; toolsrc/plasm.pla: 0409: ADC SRCL + ADC SRCL +; toolsrc/plasm.pla: 0410: STA ESTKL+1,X ; UPDATE SCANPTR + STA ESTKL+1,X ; UPDATE SCANPTR +; toolsrc/plasm.pla: 0411: BCC MATCHLEN + BCC MATCHLEN +; toolsrc/plasm.pla: 0412: INC ESTKH+1,X + INC ESTKH+1,X +; toolsrc/plasm.pla: 0413: MATCHLEN LDA (DST),Y +MATCHLEN LDA (DST),Y +; toolsrc/plasm.pla: 0414: CMP TMPL + CMP TMPL +; toolsrc/plasm.pla: 0415: BCS + + BCS + +; toolsrc/plasm.pla: 0416: ADC #$02 + ADC #$02 +; toolsrc/plasm.pla: 0417: ADC DSTL + ADC DSTL +; toolsrc/plasm.pla: 0418: STA DSTL + STA DSTL +; toolsrc/plasm.pla: 0419: BCC MATCHLEN + BCC MATCHLEN +; toolsrc/plasm.pla: 0420: INC DSTH + INC DSTH +; toolsrc/plasm.pla: 0421: BNE MATCHLEN + BNE MATCHLEN +; toolsrc/plasm.pla: 0422: + BNE SCANEX ; NO KEY MATCH ++ BNE SCANEX ; NO KEY MATCH +; toolsrc/plasm.pla: 0423: TAY + TAY +; toolsrc/plasm.pla: 0424: DEY + DEY +; toolsrc/plasm.pla: 0425: INC DSTL + INC DSTL +; toolsrc/plasm.pla: 0426: BNE MATCHKEY + BNE MATCHKEY +; toolsrc/plasm.pla: 0427: INC DSTH + INC DSTH +; toolsrc/plasm.pla: 0428: MATCHKEY LDA (SRC),Y +MATCHKEY LDA (SRC),Y +; toolsrc/plasm.pla: 0429: CMP (DST),Y + CMP (DST),Y +; toolsrc/plasm.pla: 0430: BNE NEXTKEY + BNE NEXTKEY +; toolsrc/plasm.pla: 0431: DEY + DEY +; toolsrc/plasm.pla: 0432: BPL MATCHKEY + BPL MATCHKEY +; toolsrc/plasm.pla: 0433: LDY TMPL + LDY TMPL +; toolsrc/plasm.pla: 0434: LDA (DST),Y + LDA (DST),Y +; toolsrc/plasm.pla: 0435: STA ESTKL,X ; SET OUTPUT TOKEN + STA ESTKL,X ; SET OUTPUT TOKEN +; toolsrc/plasm.pla: 0436: SCANEX RTS +SCANEX RTS +; toolsrc/plasm.pla: 0437: NEXTKEY LDY #$00 +NEXTKEY LDY #$00 +; toolsrc/plasm.pla: 0438: LDA TMPL + LDA TMPL +; toolsrc/plasm.pla: 0439: SEC + SEC +; toolsrc/plasm.pla: 0440: ADC DSTL + ADC DSTL +; toolsrc/plasm.pla: 0441: STA DSTL + STA DSTL +; toolsrc/plasm.pla: 0442: BCC MATCHLEN + BCC MATCHLEN +; toolsrc/plasm.pla: 0443: INC DSTH + INC DSTH +; toolsrc/plasm.pla: 0444: BNE MATCHLEN + BNE MATCHLEN +; toolsrc/plasm.pla: 0445: end +; toolsrc/plasm.pla: 0446: // +; toolsrc/plasm.pla: 0447: // Handy functions +; toolsrc/plasm.pla: 0448: // +; toolsrc/plasm.pla: 0449: def nametostr(namestr, len, strptr)#0 +_SUBSEG ; BYTECODE STARTS + ; namestr -> [0] + ; len -> [2] + ; strptr -> [4] +_C000 ; nametostr() +; toolsrc/plasm.pla: 0450: ^strptr = len + !BYTE $58,$06,$03 ; ENTER 6,3 +; toolsrc/plasm.pla: 0451: memcpy(strptr + 1, namestr, len) +; toolsrc/plasm.pla: 0452: end + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X018 +_F000 !WORD 0 + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/plasm.pla: 0453: def putcurln#0 +_C001 ; putcurln() +; toolsrc/plasm.pla: 0454: byte i + ; i -> [0] +; toolsrc/plasm.pla: 0455: putln; puts(parsefile); putc('['); puti(lineno); puts("]\n") + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $54 ; CALL _X003 +_F001 !WORD 0 + !BYTE $6A ; LAW _D093+0 +_F002 !WORD _D093+0 + !BYTE $54 ; CALL _X004 +_F003 !WORD 0 + !BYTE $2A,$5B ; CB 91 + !BYTE $54 ; CALL _X002 +_F004 !WORD 0 + !BYTE $6A ; LAW _D104+0 +_F005 !WORD _D104+0 + !BYTE $54 ; CALL _X005 +_F006 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $5D,$0D + !BYTE $54 ; CALL _X004 +_F007 !WORD 0 +; toolsrc/plasm.pla: 0456: puts(instr); putln +; toolsrc/plasm.pla: 0457: for i = tknptr - inbuff downto 1 + !BYTE $6A ; LAW _D095+0 +_F008 !WORD _D095+0 + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 + !BYTE $54 ; CALL _X003 +_F010 !WORD 0 + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _D101+0 +_F011 !WORD _D101+0 + !BYTE $6A ; LAW _D096+0 +_F012 !WORD _D096+0 + !BYTE $84 ; SUB + !BYTE $A2 ; BRLT _B001 + !WORD _B001-* +_B002 + !BYTE $6C,$00 ; DLB [0] +; toolsrc/plasm.pla: 0458: putc(' ') +; toolsrc/plasm.pla: 0459: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F013 !WORD 0 +_B003 + !BYTE $A8 ; DECBRGE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; toolsrc/plasm.pla: 0460: puts("^\n") + !BYTE $2E ; CS + !BYTE $02 + !BYTE $5E,$0D + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 +; toolsrc/plasm.pla: 0461: end + !BYTE $5A,$01 ; LEAVE 1 +; toolsrc/plasm.pla: 0462: // +; toolsrc/plasm.pla: 0463: // Error handler +; toolsrc/plasm.pla: 0464: // +; toolsrc/plasm.pla: 0465: def exit_err(err)#0 + ; err -> [0] +_C002 ; exit_err() +; toolsrc/plasm.pla: 0466: byte i + ; i -> [2] +; toolsrc/plasm.pla: 0467: +; toolsrc/plasm.pla: 0468: puts("\nError:") + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $0D,$45,$72,$72,$6F,$72,$3A + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 +; toolsrc/plasm.pla: 0469: if err & ERR_DUP; puts("duplicate "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $64,$75,$70,$6C,$69,$63,$61,$74 + !BYTE $65,$20 + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +_B004 +_B005 +; toolsrc/plasm.pla: 0470: if err & ERR_UNDECL; puts("undeclared "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $75,$6E,$64,$65,$63,$6C,$61,$72 + !BYTE $65,$64,$20 + !BYTE $54 ; CALL _X004 +_F017 !WORD 0 +_B006 +_B007 +; toolsrc/plasm.pla: 0471: if err & ERR_INVAL; puts("invalid "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $69,$6E,$76,$61,$6C,$69,$64,$20 + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 +_B008 +_B009 +; toolsrc/plasm.pla: 0472: if err & ERR_MISS; puts("missing "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $6D,$69,$73,$73,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 +_B010 +_B011 +; toolsrc/plasm.pla: 0473: if err & ERR_OVER; puts("overflowed "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $6F,$76,$65,$72,$66,$6C,$6F,$77 + !BYTE $65,$64,$20 + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +_B012 +_B013 +; toolsrc/plasm.pla: 0474: if err & ERR_CLOSE; puts("closing "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $63,$6C,$6F,$73,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F021 !WORD 0 +_B014 +_B015 +; toolsrc/plasm.pla: 0475: if err & ERR_LOCAL; puts("local "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$40 ; ANDI 64 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* + !BYTE $2E ; CS + !BYTE $06 + !BYTE $6C,$6F,$63,$61,$6C,$20 + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +_B016 +_B017 +; toolsrc/plasm.pla: 0476: if err & ERR_GLOBAL; puts("global "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B018 + !WORD _B018-* + !BYTE $2E ; CS + !BYTE $07 + !BYTE $67,$6C,$6F,$62,$61,$6C,$20 + !BYTE $54 ; CALL _X004 +_F023 !WORD 0 +_B018 +_B019 +; toolsrc/plasm.pla: 0477: if err & ERR_CODE; puts("code "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $63,$6F,$64,$65,$20 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +_B020 +_B021 +; toolsrc/plasm.pla: 0478: if err & ERR_ID; puts("identifier "); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B022 + !WORD _B022-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $69,$64,$65,$6E,$74,$69,$66,$69 + !BYTE $65,$72,$20 + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 +_B022 +_B023 +; toolsrc/plasm.pla: 0479: if err & ERR_CONST; puts("constant"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $2E ; CS + !BYTE $08 + !BYTE $63,$6F,$6E,$73,$74,$61,$6E,$74 + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 +_B024 +_B025 +; toolsrc/plasm.pla: 0480: if err & ERR_INIT; puts("initializer"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $69,$6E,$69,$74,$69,$61,$6C,$69 + !BYTE $7A,$65,$72 + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +_B026 +_B027 +; toolsrc/plasm.pla: 0481: if err & ERR_STATE; puts("statement"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $2E ; CS + !BYTE $09 + !BYTE $73,$74,$61,$74,$65,$6D,$65,$6E + !BYTE $74 + !BYTE $54 ; CALL _X004 +_F028 !WORD 0 +_B028 +_B029 +; toolsrc/plasm.pla: 0482: if err & ERR_FRAME; puts("frame"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $66,$72,$61,$6D,$65 + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 +_B030 +_B031 +; toolsrc/plasm.pla: 0483: if err & ERR_TABLE; puts("table"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B032 + !WORD _B032-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $74,$61,$62,$6C,$65 + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +_B032 +_B033 +; toolsrc/plasm.pla: 0484: if err & ERR_SYNTAX; puts("syntax"); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $2E ; CS + !BYTE $06 + !BYTE $73,$79,$6E,$74,$61,$78 + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 +_B034 +_B035 +; toolsrc/plasm.pla: 0485: putcurln +; toolsrc/plasm.pla: 0486: if incref +; toolsrc/plasm.pla: 0487: fileio:close(incref) // Close include file if open +; toolsrc/plasm.pla: 0488: fin + !BYTE $54 ; CALL _C001 +_F032 !WORD _C001 + !BYTE $68 ; LAB _D088+0 +_F033 !WORD _D088+0 + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $68 ; LAB _D088+0 +_F034 !WORD _D088+0 + !BYTE $6A ; LAW _X031+16 +_F035 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B036 +_B037 +; toolsrc/plasm.pla: 0489: fileio:close(srcref) // Close source file +; toolsrc/plasm.pla: 0490: throw(exit, TRUE) +; toolsrc/plasm.pla: 0491: end + !BYTE $68 ; LAB _D087+0 +_F036 !WORD _D087+0 + !BYTE $6A ; LAW _X031+16 +_F037 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D125+0 +_F038 !WORD _D125+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X035 +_F039 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/plasm.pla: 0492: // +; toolsrc/plasm.pla: 0493: // Warning +; toolsrc/plasm.pla: 0494: // +; toolsrc/plasm.pla: 0495: def parse_warn(msg)#0 + ; msg -> [0] +_C003 ; parse_warn() +; toolsrc/plasm.pla: 0496: if outflags & WARNINGS + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/plasm.pla: 0497: puts("\nWarning:") + !BYTE $68 ; LAB _D085+0 +_F040 !WORD _D085+0 + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $2E ; CS + !BYTE $09 + !BYTE $0D,$57,$61,$72,$6E,$69,$6E,$67 + !BYTE $3A + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 +; toolsrc/plasm.pla: 0498: puts(msg) +; toolsrc/plasm.pla: 0499: putcurln +; toolsrc/plasm.pla: 0500: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F042 !WORD 0 + !BYTE $54 ; CALL _C001 +_F043 !WORD _C001 +_B038 +_B039 +; toolsrc/plasm.pla: 0501: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/plasm.pla: 0502: // +; toolsrc/plasm.pla: 0503: // Include code to reduce size of this file +; toolsrc/plasm.pla: 0504: // +; toolsrc/plasm.pla: 0505: include "toolsrc/codegen.pla" +; toolsrc/codegen.pla: 0001: // +; toolsrc/codegen.pla: 0002: // Address tags +; toolsrc/codegen.pla: 0003: // +; toolsrc/codegen.pla: 0004: def new_tag(type) + ; type -> [0] +_C004 ; new_tag() +; toolsrc/codegen.pla: 0005: tag_cnt++ + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $6A ; LAW _D047+0 +_F044 !WORD _D047+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0006: if tag_cnt >= tag_num; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $7E ; DAW _D047+0 +_F045 !WORD _D047+0 + !BYTE $6A ; LAW _D064+0 +_F046 !WORD _D064+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F047 !WORD _C002 +_B040 +_B041 +; toolsrc/codegen.pla: 0007: tag_addr=>[tag_cnt] = 0 // Unresolved, nothing to update yet +; toolsrc/codegen.pla: 0008: tag_type->[tag_cnt] = type +; toolsrc/codegen.pla: 0009: return tag_cnt + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D052+0 +_F048 !WORD _D052+0 + !BYTE $BE ; IDXAW _D047+0 +_F049 !WORD _D047+0 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D053+0 +_F050 !WORD _D053+0 + !BYTE $B6 ; ADDAW _D047+0 +_F051 !WORD _D047+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D047+0 +_F052 !WORD _D047+0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0010: end +; toolsrc/codegen.pla: 0011: // +; toolsrc/codegen.pla: 0012: // New/release sequence ops +; toolsrc/codegen.pla: 0013: // +; toolsrc/codegen.pla: 0014: def new_op +_C005 ; new_op() +; toolsrc/codegen.pla: 0015: word op + ; op -> [0] +; toolsrc/codegen.pla: 0016: op = freeop_lst + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/codegen.pla: 0017: if not op +; toolsrc/codegen.pla: 0018: puts("Compiler out of sequence ops!") + !BYTE $6A ; LAW _D083+0 +_F053 !WORD _D083+0 + !BYTE $6E,$00 ; DLW [0] + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $2E ; CS + !BYTE $1D + !BYTE $43,$6F,$6D,$70,$69,$6C,$65,$72 + !BYTE $20,$6F,$75,$74,$20,$6F,$66,$20 + !BYTE $73,$65,$71,$75,$65,$6E,$63,$65 + !BYTE $20,$6F,$70,$73,$21 + !BYTE $54 ; CALL _X004 +_F054 !WORD 0 +; toolsrc/codegen.pla: 0019: return NULL + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0020: fin +_B042 +_B043 +; toolsrc/codegen.pla: 0021: freeop_lst = freeop_lst=>opnext +; toolsrc/codegen.pla: 0022: op=>opnext = NULL +; toolsrc/codegen.pla: 0023: return op + !BYTE $6A ; LAW _D083+0 +_F055 !WORD _D083+0 + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $7A ; SAW _D083+0 +_F056 !WORD _D083+0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0024: end +; toolsrc/codegen.pla: 0025: def release_op(op)#0 + ; op -> [0] +_C006 ; release_op() +; toolsrc/codegen.pla: 0026: if op + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0027: op=>opnext = freeop_lst +; toolsrc/codegen.pla: 0028: freeop_lst = op +; toolsrc/codegen.pla: 0029: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $6A ; LAW _D083+0 +_F057 !WORD _D083+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D083+0 +_F058 !WORD _D083+0 +_B044 +_B045 +; toolsrc/codegen.pla: 0030: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0031: def release_seq(seq)#0 + ; seq -> [0] +_C007 ; release_seq() +; toolsrc/codegen.pla: 0032: word op + ; op -> [2] +; toolsrc/codegen.pla: 0033: +; toolsrc/codegen.pla: 0034: while seq + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $50 ; BRNCH _B048 + !WORD _B048-* +_B046 +; toolsrc/codegen.pla: 0035: op = seq +; toolsrc/codegen.pla: 0036: seq = seq=>opnext +; toolsrc/codegen.pla: 0037: // +; toolsrc/codegen.pla: 0038: //Free this op +; toolsrc/codegen.pla: 0039: // +; toolsrc/codegen.pla: 0040: op=>opnext = freeop_lst +; toolsrc/codegen.pla: 0041: freeop_lst = op +; toolsrc/codegen.pla: 0042: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D083+0 +_F059 !WORD _D083+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D083+0 +_F060 !WORD _D083+0 +_B048 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B046 + !WORD _B046-* +_B047 +; toolsrc/codegen.pla: 0043: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0044: // +; toolsrc/codegen.pla: 0045: // Append one sequence to the end of another +; toolsrc/codegen.pla: 0046: // +; toolsrc/codegen.pla: 0047: def cat_seq(seq1, seq2) + ; seq1 -> [0] + ; seq2 -> [2] +_C008 ; cat_seq() +; toolsrc/codegen.pla: 0048: word op + ; op -> [4] +; toolsrc/codegen.pla: 0049: +; toolsrc/codegen.pla: 0050: if not seq1; return seq2; fin + !BYTE $58,$06,$02 ; ENTER 6,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B049 + !WORD _B049-* + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$06 ; LEAVE 6 +_B049 +_B050 +; toolsrc/codegen.pla: 0051: op = seq1 +; toolsrc/codegen.pla: 0052: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B051 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B053 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B051 + !WORD _B051-* +_B052 +; toolsrc/codegen.pla: 0053: op=>opnext = seq2 +; toolsrc/codegen.pla: 0054: return seq1 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0055: end +; toolsrc/codegen.pla: 0056: // +; toolsrc/codegen.pla: 0057: // Emit data/bytecode +; toolsrc/codegen.pla: 0058: // +; toolsrc/codegen.pla: 0059: def emit_byte(bval)#0 + ; bval -> [0] +_C009 ; emit_byte() +; toolsrc/codegen.pla: 0060: ^codeptr = bval + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0061: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D075+0 +_F061 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F062 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0062: if codeptr - codebuff > codebufsz; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $7E ; DAW _D075+0 +_F063 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F064 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D068+0 +_F065 !WORD _D068+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B054 + !WORD _B054-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F066 !WORD _C002 +_B054 +_B055 +; toolsrc/codegen.pla: 0063: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0064: def emit_word(wval)#0 + ; wval -> [0] +_C010 ; emit_word() +; toolsrc/codegen.pla: 0065: *codeptr = wval + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0066: codeptr = codeptr + 2 +; toolsrc/codegen.pla: 0067: if codeptr - codebuff > codebufsz; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D075+0 +_F067 !WORD _D075+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F068 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7E ; DAW _D075+0 +_F069 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F070 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D068+0 +_F071 !WORD _D068+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F072 !WORD _C002 +_B056 +_B057 +; toolsrc/codegen.pla: 0068: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0069: def emit_fill(size)#0 + ; size -> [0] +_C011 ; emit_fill() +; toolsrc/codegen.pla: 0070: memset(codeptr, 0, size) + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0071: codeptr = codeptr + size +; toolsrc/codegen.pla: 0072: if codeptr - codebuff > codebufsz; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $6A ; LAW _D075+0 +_F073 !WORD _D075+0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X017 +_F074 !WORD 0 + !BYTE $6A ; LAW _D075+0 +_F075 !WORD _D075+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D075+0 +_F076 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F077 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D068+0 +_F078 !WORD _D068+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F079 !WORD _C002 +_B058 +_B059 +; toolsrc/codegen.pla: 0073: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0074: def emit_addr(tag, offset)#0 + ; tag -> [0] + ; offset -> [2] +_C012 ; emit_addr() +; toolsrc/codegen.pla: 0075: if tag_type->[tag] & RELATIVE_FIXUP; puts("Global fixup to relative tag"); exit_err(0); fin // DEBUG + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $6A ; LAW _D053+0 +_F080 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $2E ; CS + !BYTE $1C + !BYTE $47,$6C,$6F,$62,$61,$6C,$20,$66 + !BYTE $69,$78,$75,$70,$20,$74,$6F,$20 + !BYTE $72,$65,$6C,$61,$74,$69,$76,$65 + !BYTE $20,$74,$61,$67 + !BYTE $54 ; CALL _X004 +_F081 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F082 !WORD _C002 +_B060 +_B061 +; toolsrc/codegen.pla: 0076: fixup_tag=>[fixup_cnt] = tag +; toolsrc/codegen.pla: 0077: fixup_addr=>[fixup_cnt] = codeptr +; toolsrc/codegen.pla: 0078: fixup_cnt++ + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D050+0 +_F083 !WORD _D050+0 + !BYTE $BE ; IDXAW _D046+0 +_F084 !WORD _D046+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F085 !WORD _D075+0 + !BYTE $6A ; LAW _D051+0 +_F086 !WORD _D051+0 + !BYTE $BE ; IDXAW _D046+0 +_F087 !WORD _D046+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D046+0 +_F088 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0079: if fixup_cnt >= fixup_num; exit_err(ERR_OVER|ERR_ID|ERR_TABLE); fin + !BYTE $7E ; DAW _D046+0 +_F089 !WORD _D046+0 + !BYTE $6A ; LAW _D065+0 +_F090 !WORD _D065+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B062 + !WORD _B062-* + !BYTE $2C,$10,$42 ; CW 16912 + !BYTE $54 ; CALL _C002 +_F091 !WORD _C002 +_B062 +_B063 +; toolsrc/codegen.pla: 0080: emit_word(offset + tag_addr=>[tag]) +; toolsrc/codegen.pla: 0081: end + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D052+0 +_F092 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $54 ; CALL _C010 +_F093 !WORD _C010 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0082: def emit_reladdr(tag)#0 + ; tag -> [0] +_C013 ; emit_reladdr() +; toolsrc/codegen.pla: 0083: word updtptr + ; updtptr -> [2] +; toolsrc/codegen.pla: 0084: +; toolsrc/codegen.pla: 0085: if not (tag_type->[tag] & RELATIVE_FIXUP); puts("Not relative tag fixup"); exit_err(0); fin // DEBUG + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $6A ; LAW _D053+0 +_F094 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4E ; BRTRU _B064 + !WORD _B064-* + !BYTE $2E ; CS + !BYTE $16 + !BYTE $4E,$6F,$74,$20,$72,$65,$6C,$61 + !BYTE $74,$69,$76,$65,$20,$74,$61,$67 + !BYTE $20,$66,$69,$78,$75,$70 + !BYTE $54 ; CALL _X004 +_F095 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F096 !WORD _C002 +_B064 +_B065 +; toolsrc/codegen.pla: 0086: if tag_type->[tag] & RESOLVED_FIXUP +; toolsrc/codegen.pla: 0087: updtptr = tag_addr=>[tag] - codeptr +; toolsrc/codegen.pla: 0088: else + !BYTE $6A ; LAW _D053+0 +_F097 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $6A ; LAW _D052+0 +_F098 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $6A ; LAW _D075+0 +_F099 !WORD _D075+0 + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B066 +; toolsrc/codegen.pla: 0089: // +; toolsrc/codegen.pla: 0090: // Add to list of tags needing resolution +; toolsrc/codegen.pla: 0091: // +; toolsrc/codegen.pla: 0092: updtptr = tag_addr=>[tag] +; toolsrc/codegen.pla: 0093: tag_addr=>[tag] = codeptr +; toolsrc/codegen.pla: 0094: fin + !BYTE $6A ; LAW _D052+0 +_F100 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D075+0 +_F101 !WORD _D075+0 + !BYTE $6A ; LAW _D052+0 +_F102 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW +_B067 +; toolsrc/codegen.pla: 0095: emit_word(updtptr) +; toolsrc/codegen.pla: 0096: end + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C010 +_F103 !WORD _C010 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0097: def emit_data(vartype, consttype, constval, constsize) + ; vartype -> [0] + ; consttype -> [2] + ; constval -> [4] + ; constsize -> [6] +_C014 ; emit_data() +; toolsrc/codegen.pla: 0098: byte type + ; type -> [8] +; toolsrc/codegen.pla: 0099: word size, chrptr + ; size -> [9] + ; chrptr -> [11] +; toolsrc/codegen.pla: 0100: +; toolsrc/codegen.pla: 0101: if consttype == 0 + !BYTE $58,$0D,$04 ; ENTER 13,4 +; toolsrc/codegen.pla: 0102: size = constsize +; toolsrc/codegen.pla: 0103: emit_fill(constsize) +; toolsrc/codegen.pla: 0104: elsif consttype == STR_TYPE + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B068 + !WORD _B068-* + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C011 +_F104 !WORD _C011 + !BYTE $50 ; BRNCH _B069 + !WORD _B069-* +_B068 +; toolsrc/codegen.pla: 0105: constsize = ^constval +; toolsrc/codegen.pla: 0106: size = constsize + 1 +; toolsrc/codegen.pla: 0107: chrptr = constval + 1 +; toolsrc/codegen.pla: 0108: emit_byte(constsize) +; toolsrc/codegen.pla: 0109: while constsize > 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$80 ; CB 128 + !BYTE $24 ; BRNE _B070 + !WORD _B070-* + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $6E,$06 ; DLW [6] + !BYTE $8C ; INCR + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $76,$0B ; SLW [11] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C009 +_F105 !WORD _C009 + !BYTE $50 ; BRNCH _B073 + !WORD _B073-* +_B071 +; toolsrc/codegen.pla: 0110: emit_byte(^chrptr) +; toolsrc/codegen.pla: 0111: chrptr++ + !BYTE $66,$0B ; LLW [11] + !BYTE $60 ; LB + !BYTE $54 ; CALL _C009 +_F106 !WORD _C009 + !BYTE $66,$0B ; LLW [11] + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0112: constsize-- + !BYTE $76,$0B ; SLW [11] + !BYTE $66,$06 ; LLW [6] + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0113: loop + !BYTE $76,$06 ; SLW [6] +_B073 + !BYTE $66,$06 ; LLW [6] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B071 + !WORD _B071-* +_B072 +; toolsrc/codegen.pla: 0114: elsif consttype == CONSTADDR_TYPE + !BYTE $50 ; BRNCH _B069 + !WORD _B069-* +_B070 +; toolsrc/codegen.pla: 0115: size = 2 +; toolsrc/codegen.pla: 0116: emit_addr(constval, 0) +; toolsrc/codegen.pla: 0117: else + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$61 ; CB 97 + !BYTE $24 ; BRNE _B074 + !WORD _B074-* + !BYTE $04 ; CN 2 + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C012 +_F107 !WORD _C012 + !BYTE $50 ; BRNCH _B069 + !WORD _B069-* +_B074 +; toolsrc/codegen.pla: 0118: if vartype & BYTE_TYPE +; toolsrc/codegen.pla: 0119: size = 1 +; toolsrc/codegen.pla: 0120: emit_byte(constval) +; toolsrc/codegen.pla: 0121: else + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $02 ; CN 1 + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C009 +_F108 !WORD _C009 + !BYTE $50 ; BRNCH _B076 + !WORD _B076-* +_B075 +; toolsrc/codegen.pla: 0122: size = 2 +; toolsrc/codegen.pla: 0123: emit_word(constval) +; toolsrc/codegen.pla: 0124: fin + !BYTE $04 ; CN 2 + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C010 +_F109 !WORD _C010 +_B076 +; toolsrc/codegen.pla: 0125: fin +_B069 +; toolsrc/codegen.pla: 0126: return size + !BYTE $66,$09 ; LLW [9] + !BYTE $5A,$0D ; LEAVE 13 +; toolsrc/codegen.pla: 0127: end +; toolsrc/codegen.pla: 0128: def emit_codeseg#0 +_C015 ; emit_codeseg() +; toolsrc/codegen.pla: 0129: if lastglobalsize == 0 +; toolsrc/codegen.pla: 0130: emit_byte($00) // Pad byte between last data tag and code seg +; toolsrc/codegen.pla: 0131: fin + !BYTE $6A ; LAW _D059+0 +_F110 !WORD _D059+0 + !BYTE $4E ; BRTRU _B077 + !WORD _B077-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C009 +_F111 !WORD _C009 +_B077 +_B078 +; toolsrc/codegen.pla: 0132: end + !BYTE $5C ; RET +; toolsrc/codegen.pla: 0133: def emit_const(cval)#0 + ; cval -> [0] +_C016 ; emit_const() +; toolsrc/codegen.pla: 0134: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0135: if cval == $FFFF // MINUS ONE +; toolsrc/codegen.pla: 0136: emit_byte($20) +; toolsrc/codegen.pla: 0137: elsif cval & $FFF0 == $0000 // Constant NYBBLE + !BYTE $54 ; CALL _P001 +_F112 !WORD _P001 + !BYTE $66,$00 ; LLW [0] + !BYTE $20 ; MINUS ONE + !BYTE $24 ; BRNE _B079 + !WORD _B079-* + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _C009 +_F113 !WORD _C009 + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B079 +; toolsrc/codegen.pla: 0138: emit_byte(cval*2) +; toolsrc/codegen.pla: 0139: elsif cval & $FF00 == $0000 // Constant BYTE + !BYTE $66,$00 ; LLW [0] + !BYTE $5E,$F0 ; CFFB 65520 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B081 + !WORD _B081-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _C009 +_F114 !WORD _C009 + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B081 +; toolsrc/codegen.pla: 0140: emit_byte($2A) +; toolsrc/codegen.pla: 0141: emit_byte(cval) +; toolsrc/codegen.pla: 0142: elsif cval & $FF00 == $FF00 // Constant $FF00 | BYTE + !BYTE $66,$00 ; LLW [0] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B082 + !WORD _B082-* + !BYTE $2A,$2A ; CB 42 + !BYTE $54 ; CALL _C009 +_F115 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F116 !WORD _C009 + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B082 +; toolsrc/codegen.pla: 0143: emit_byte($5E) +; toolsrc/codegen.pla: 0144: emit_byte(cval) +; toolsrc/codegen.pla: 0145: else // Constant WORD + !BYTE $66,$00 ; LLW [0] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $24 ; BRNE _B083 + !WORD _B083-* + !BYTE $2A,$5E ; CB 94 + !BYTE $54 ; CALL _C009 +_F117 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F118 !WORD _C009 + !BYTE $50 ; BRNCH _B080 + !WORD _B080-* +_B083 +; toolsrc/codegen.pla: 0146: emit_byte($2C) +; toolsrc/codegen.pla: 0147: emit_word(cval) +; toolsrc/codegen.pla: 0148: fin + !BYTE $2A,$2C ; CB 44 + !BYTE $54 ; CALL _C009 +_F119 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C010 +_F120 !WORD _C010 +_B080 +; toolsrc/codegen.pla: 0149: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0150: def emit_code(bval)#0 + ; bval -> [0] +_C017 ; emit_code() +; toolsrc/codegen.pla: 0151: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0152: ^codeptr = bval +; toolsrc/codegen.pla: 0153: codeptr++ + !BYTE $54 ; CALL _P001 +_F121 !WORD _P001 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D075+0 +_F122 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F123 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0154: if codeptr - codebuff > codebufsz; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $7E ; DAW _D075+0 +_F124 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F125 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D068+0 +_F126 !WORD _D068+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F127 !WORD _C002 +_B084 +_B085 +; toolsrc/codegen.pla: 0155: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0156: def emit_slb(offset)#0 + ; offset -> [0] +_C018 ; emit_slb() +; toolsrc/codegen.pla: 0157: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0158: emit_byte($74) +; toolsrc/codegen.pla: 0159: emit_byte(offset) +; toolsrc/codegen.pla: 0160: end + !BYTE $54 ; CALL _P001 +_F128 !WORD _P001 + !BYTE $2A,$74 ; CB 116 + !BYTE $54 ; CALL _C009 +_F129 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F130 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0161: def emit_slw(offset)#0 + ; offset -> [0] +_C019 ; emit_slw() +; toolsrc/codegen.pla: 0162: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0163: emit_byte($76) +; toolsrc/codegen.pla: 0164: emit_byte(offset) +; toolsrc/codegen.pla: 0165: end + !BYTE $54 ; CALL _P001 +_F131 !WORD _P001 + !BYTE $2A,$76 ; CB 118 + !BYTE $54 ; CALL _C009 +_F132 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F133 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0166: def emit_sab(tag, offset)#0 + ; tag -> [0] + ; offset -> [2] +_C020 ; emit_sab() +; toolsrc/codegen.pla: 0167: emit_pending_seq + !BYTE $58,$04,$02 ; ENTER 4,2 +; toolsrc/codegen.pla: 0168: emit_byte($78) +; toolsrc/codegen.pla: 0169: emit_addr(tag, offset) +; toolsrc/codegen.pla: 0170: end + !BYTE $54 ; CALL _P001 +_F134 !WORD _P001 + !BYTE $2A,$78 ; CB 120 + !BYTE $54 ; CALL _C009 +_F135 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C012 +_F136 !WORD _C012 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0171: def emit_saw(tag, offset)#0 + ; tag -> [0] + ; offset -> [2] +_C021 ; emit_saw() +; toolsrc/codegen.pla: 0172: emit_pending_seq + !BYTE $58,$04,$02 ; ENTER 4,2 +; toolsrc/codegen.pla: 0173: emit_byte($7A) +; toolsrc/codegen.pla: 0174: emit_addr(tag, offset) +; toolsrc/codegen.pla: 0175: end + !BYTE $54 ; CALL _P001 +_F137 !WORD _P001 + !BYTE $2A,$7A ; CB 122 + !BYTE $54 ; CALL _C009 +_F138 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C012 +_F139 !WORD _C012 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0176: def emit_dlb(offset)#0 + ; offset -> [0] +_C022 ; emit_dlb() +; toolsrc/codegen.pla: 0177: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0178: emit_byte($6C) +; toolsrc/codegen.pla: 0179: emit_byte(offset) +; toolsrc/codegen.pla: 0180: end + !BYTE $54 ; CALL _P001 +_F140 !WORD _P001 + !BYTE $2A,$6C ; CB 108 + !BYTE $54 ; CALL _C009 +_F141 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F142 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0181: def emit_dlw(offset)#0 + ; offset -> [0] +_C023 ; emit_dlw() +; toolsrc/codegen.pla: 0182: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0183: emit_byte($6E) +; toolsrc/codegen.pla: 0184: emit_byte(offset) +; toolsrc/codegen.pla: 0185: end + !BYTE $54 ; CALL _P001 +_F143 !WORD _P001 + !BYTE $2A,$6E ; CB 110 + !BYTE $54 ; CALL _C009 +_F144 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F145 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0186: def emit_dab(tag, offset)#0 + ; tag -> [0] + ; offset -> [2] +_C024 ; emit_dab() +; toolsrc/codegen.pla: 0187: emit_pending_seq + !BYTE $58,$04,$02 ; ENTER 4,2 +; toolsrc/codegen.pla: 0188: emit_byte($7C) +; toolsrc/codegen.pla: 0189: emit_addr(tag, offset) +; toolsrc/codegen.pla: 0190: end + !BYTE $54 ; CALL _P001 +_F146 !WORD _P001 + !BYTE $2A,$7C ; CB 124 + !BYTE $54 ; CALL _C009 +_F147 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C012 +_F148 !WORD _C012 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0191: def emit_daw(tag, offset)#0 + ; tag -> [0] + ; offset -> [2] +_C025 ; emit_daw() +; toolsrc/codegen.pla: 0192: emit_pending_seq + !BYTE $58,$04,$02 ; ENTER 4,2 +; toolsrc/codegen.pla: 0193: emit_byte($7E) +; toolsrc/codegen.pla: 0194: emit_addr(tag, offset) +; toolsrc/codegen.pla: 0195: end + !BYTE $54 ; CALL _P001 +_F149 !WORD _P001 + !BYTE $2A,$7E ; CB 126 + !BYTE $54 ; CALL _C009 +_F150 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C012 +_F151 !WORD _C012 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0196: def emit_select(tag)#0 + ; tag -> [0] +_C026 ; emit_select() +; toolsrc/codegen.pla: 0197: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0198: emit_byte($52) +; toolsrc/codegen.pla: 0199: emit_reladdr(tag) +; toolsrc/codegen.pla: 0200: end + !BYTE $54 ; CALL _P001 +_F152 !WORD _P001 + !BYTE $2A,$52 ; CB 82 + !BYTE $54 ; CALL _C009 +_F153 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F154 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0201: def emit_caseblock(cnt, oflist, taglist)#0 + ; cnt -> [0] + ; oflist -> [2] + ; taglist -> [4] +_C027 ; emit_caseblock() +; toolsrc/codegen.pla: 0202: byte i + ; i -> [6] +; toolsrc/codegen.pla: 0203: +; toolsrc/codegen.pla: 0204: if not cnt or cnt > 256; exit_err(ERR_OVER|ERR_STATE); fin + !BYTE $58,$07,$03 ; ENTER 7,3 + !BYTE $66,$00 ; LLW [0] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B086 + !WORD _B086-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $44 ; ISGT +_B086 + !BYTE $4C ; BRFLS _B087 + !WORD _B087-* + !BYTE $2C,$10,$10 ; CW 4112 + !BYTE $54 ; CALL _C002 +_F155 !WORD _C002 +_B087 +_B088 +; toolsrc/codegen.pla: 0205: emit_pending_seq +; toolsrc/codegen.pla: 0206: emit_byte(cnt) +; toolsrc/codegen.pla: 0207: for i = 0 to cnt-1 + !BYTE $54 ; CALL _P001 +_F156 !WORD _P001 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F157 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B089 + !WORD _B089-* +_B090 + !BYTE $6C,$06 ; DLB [6] +; toolsrc/codegen.pla: 0208: emit_word(oflist=>[i]) +; toolsrc/codegen.pla: 0209: emit_reladdr(taglist=>[i]) +; toolsrc/codegen.pla: 0210: next + !BYTE $66,$02 ; LLW [2] + !BYTE $B8,$06 ; IDXLB [6] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C010 +_F158 !WORD _C010 + !BYTE $66,$04 ; LLW [4] + !BYTE $B8,$06 ; IDXLB [6] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C013 +_F159 !WORD _C013 +_B091 + !BYTE $A4 ; INCBRLE _B090 + !WORD _B090-* +_B089 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0211: end + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/codegen.pla: 0212: def emit_branch(tag)#0 + ; tag -> [0] +_C028 ; emit_branch() +; toolsrc/codegen.pla: 0213: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0214: emit_byte($50) +; toolsrc/codegen.pla: 0215: emit_reladdr(tag) +; toolsrc/codegen.pla: 0216: end + !BYTE $54 ; CALL _P001 +_F160 !WORD _P001 + !BYTE $2A,$50 ; CB 80 + !BYTE $54 ; CALL _C009 +_F161 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F162 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0217: def emit_brgt(tag)#0 + ; tag -> [0] +_C029 ; emit_brgt() +; toolsrc/codegen.pla: 0218: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0219: emit_byte($A0) +; toolsrc/codegen.pla: 0220: emit_reladdr(tag) +; toolsrc/codegen.pla: 0221: end + !BYTE $54 ; CALL _P001 +_F163 !WORD _P001 + !BYTE $2A,$A0 ; CB 160 + !BYTE $54 ; CALL _C009 +_F164 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F165 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0222: def emit_brlt(tag)#0 + ; tag -> [0] +_C030 ; emit_brlt() +; toolsrc/codegen.pla: 0223: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0224: emit_byte($A2) +; toolsrc/codegen.pla: 0225: emit_reladdr(tag) +; toolsrc/codegen.pla: 0226: end + !BYTE $54 ; CALL _P001 +_F166 !WORD _P001 + !BYTE $2A,$A2 ; CB 162 + !BYTE $54 ; CALL _C009 +_F167 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F168 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0227: def emit_incbrle(tag)#0 + ; tag -> [0] +_C031 ; emit_incbrle() +; toolsrc/codegen.pla: 0228: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0229: emit_byte($A4) +; toolsrc/codegen.pla: 0230: emit_reladdr(tag) +; toolsrc/codegen.pla: 0231: end + !BYTE $54 ; CALL _P001 +_F169 !WORD _P001 + !BYTE $2A,$A4 ; CB 164 + !BYTE $54 ; CALL _C009 +_F170 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F171 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0232: def emit_addbrle(tag)#0 + ; tag -> [0] +_C032 ; emit_addbrle() +; toolsrc/codegen.pla: 0233: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0234: emit_byte($A6) +; toolsrc/codegen.pla: 0235: emit_reladdr(tag) +; toolsrc/codegen.pla: 0236: end + !BYTE $54 ; CALL _P001 +_F172 !WORD _P001 + !BYTE $2A,$A6 ; CB 166 + !BYTE $54 ; CALL _C009 +_F173 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F174 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0237: def emit_decbrge(tag)#0 + ; tag -> [0] +_C033 ; emit_decbrge() +; toolsrc/codegen.pla: 0238: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0239: emit_byte($A8) +; toolsrc/codegen.pla: 0240: emit_reladdr(tag) +; toolsrc/codegen.pla: 0241: end + !BYTE $54 ; CALL _P001 +_F175 !WORD _P001 + !BYTE $2A,$A8 ; CB 168 + !BYTE $54 ; CALL _C009 +_F176 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F177 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0242: def emit_subbrge(tag)#0 + ; tag -> [0] +_C034 ; emit_subbrge() +; toolsrc/codegen.pla: 0243: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0244: emit_byte($AA) +; toolsrc/codegen.pla: 0245: emit_reladdr(tag) +; toolsrc/codegen.pla: 0246: end + !BYTE $54 ; CALL _P001 +_F178 !WORD _P001 + !BYTE $2A,$AA ; CB 170 + !BYTE $54 ; CALL _C009 +_F179 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F180 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0247: def emit_brand(tag)#0 + ; tag -> [0] +_C035 ; emit_brand() +; toolsrc/codegen.pla: 0248: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0249: emit_byte($AC) +; toolsrc/codegen.pla: 0250: emit_reladdr(tag) +; toolsrc/codegen.pla: 0251: end + !BYTE $54 ; CALL _P001 +_F181 !WORD _P001 + !BYTE $2A,$AC ; CB 172 + !BYTE $54 ; CALL _C009 +_F182 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F183 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0252: def emit_bror(tag)#0 + ; tag -> [0] +_C036 ; emit_bror() +; toolsrc/codegen.pla: 0253: emit_pending_seq + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0254: emit_byte($AE) +; toolsrc/codegen.pla: 0255: emit_reladdr(tag) +; toolsrc/codegen.pla: 0256: end + !BYTE $54 ; CALL _P001 +_F184 !WORD _P001 + !BYTE $2A,$AE ; CB 174 + !BYTE $54 ; CALL _C009 +_F185 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C013 +_F186 !WORD _C013 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0257: def emit_leave#0 +_C037 ; emit_leave() +; toolsrc/codegen.pla: 0258: emit_pending_seq +; toolsrc/codegen.pla: 0259: if framesize +; toolsrc/codegen.pla: 0260: emit_byte($5A) +; toolsrc/codegen.pla: 0261: emit_byte(framesize) +; toolsrc/codegen.pla: 0262: else + !BYTE $54 ; CALL _P001 +_F187 !WORD _P001 + !BYTE $6A ; LAW _D070+0 +_F188 !WORD _D070+0 + !BYTE $4C ; BRFLS _B092 + !WORD _B092-* + !BYTE $2A,$5A ; CB 90 + !BYTE $54 ; CALL _C009 +_F189 !WORD _C009 + !BYTE $6A ; LAW _D070+0 +_F190 !WORD _D070+0 + !BYTE $54 ; CALL _C009 +_F191 !WORD _C009 + !BYTE $50 ; BRNCH _B093 + !WORD _B093-* +_B092 +; toolsrc/codegen.pla: 0263: emit_byte($5C) +; toolsrc/codegen.pla: 0264: fin + !BYTE $2A,$5C ; CB 92 + !BYTE $54 ; CALL _C009 +_F192 !WORD _C009 +_B093 +; toolsrc/codegen.pla: 0265: end + !BYTE $5C ; RET +; toolsrc/codegen.pla: 0266: def emit_enter(cparms)#0 + ; cparms -> [0] +_C038 ; emit_enter() +; toolsrc/codegen.pla: 0267: if framesize + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/codegen.pla: 0268: emit_byte($58) +; toolsrc/codegen.pla: 0269: emit_byte(framesize) +; toolsrc/codegen.pla: 0270: emit_byte(cparms) +; toolsrc/codegen.pla: 0271: fin + !BYTE $6A ; LAW _D070+0 +_F193 !WORD _D070+0 + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $2A,$58 ; CB 88 + !BYTE $54 ; CALL _C009 +_F194 !WORD _C009 + !BYTE $6A ; LAW _D070+0 +_F195 !WORD _D070+0 + !BYTE $54 ; CALL _C009 +_F196 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F197 !WORD _C009 +_B094 +_B095 +; toolsrc/codegen.pla: 0272: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0273: def emit_tag(tag)#0 + ; tag -> [0] +_C039 ; emit_tag() +; toolsrc/codegen.pla: 0274: word fixups, updtptr, nextptr, codeofst + ; fixups -> [2] + ; updtptr -> [4] + ; nextptr -> [6] + ; codeofst -> [8] +; toolsrc/codegen.pla: 0275: +; toolsrc/codegen.pla: 0276: emit_pending_seq + !BYTE $58,$0A,$01 ; ENTER 10,1 +; toolsrc/codegen.pla: 0277: if tag_type->[tag] & RESOLVED_FIXUP; puts("Tag already resolved"); exit_err(0); fin // DEBUG + !BYTE $54 ; CALL _P001 +_F198 !WORD _P001 + !BYTE $6A ; LAW _D053+0 +_F199 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B096 + !WORD _B096-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $54,$61,$67,$20,$61,$6C,$72,$65 + !BYTE $61,$64,$79,$20,$72,$65,$73,$6F + !BYTE $6C,$76,$65,$64 + !BYTE $54 ; CALL _X004 +_F200 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F201 !WORD _C002 +_B096 +_B097 +; toolsrc/codegen.pla: 0278: // +; toolsrc/codegen.pla: 0279: // Update list of addresses needing resolution +; toolsrc/codegen.pla: 0280: // +; toolsrc/codegen.pla: 0281: if tag_type->[tag] & RELATIVE_FIXUP +; toolsrc/codegen.pla: 0282: updtptr = tag_addr=>[tag] +; toolsrc/codegen.pla: 0283: while updtptr + !BYTE $6A ; LAW _D053+0 +_F202 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B098 + !WORD _B098-* + !BYTE $6A ; LAW _D052+0 +_F203 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B102 + !WORD _B102-* +_B100 +; toolsrc/codegen.pla: 0284: nextptr = *updtptr +; toolsrc/codegen.pla: 0285: *updtptr = codeptr - updtptr +; toolsrc/codegen.pla: 0286: updtptr = nextptr +; toolsrc/codegen.pla: 0287: loop + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D075+0 +_F204 !WORD _D075+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $76,$04 ; SLW [4] +_B102 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B100 + !WORD _B100-* +_B101 +; toolsrc/codegen.pla: 0288: updtptr = codeptr +; toolsrc/codegen.pla: 0289: else + !BYTE $6A ; LAW _D075+0 +_F205 !WORD _D075+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B099 + !WORD _B099-* +_B098 +; toolsrc/codegen.pla: 0290: codeofst = codeptr - codebuff +; toolsrc/codegen.pla: 0291: for fixups = fixup_cnt-1 downto 0 + !BYTE $6A ; LAW _D075+0 +_F206 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F207 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D046+0 +_F208 !WORD _D046+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B103 + !WORD _B103-* +_B104 + !BYTE $6E,$02 ; DLW [2] +; toolsrc/codegen.pla: 0292: if fixup_tag=>[fixups] == tag +; toolsrc/codegen.pla: 0293: updtptr = fixup_addr=>[fixups] +; toolsrc/codegen.pla: 0294: *updtptr = *updtptr + codeofst +; toolsrc/codegen.pla: 0295: fin + !BYTE $6A ; LAW _D050+0 +_F209 !WORD _D050+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $24 ; BRNE _B106 + !WORD _B106-* + !BYTE $6A ; LAW _D051+0 +_F210 !WORD _D051+0 + !BYTE $BA,$02 ; IDXLW [2] + !BYTE $62 ; LW + !BYTE $6E,$04 ; DLW [4] + !BYTE $62 ; LW + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B106 +_B107 +; toolsrc/codegen.pla: 0296: next +_B105 + !BYTE $A8 ; DECBRGE _B104 + !WORD _B104-* +_B103 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0297: updtptr = codeptr - codebuff +; toolsrc/codegen.pla: 0298: fin + !BYTE $6A ; LAW _D075+0 +_F211 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F212 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] +_B099 +; toolsrc/codegen.pla: 0299: tag_addr=>[tag] = updtptr +; toolsrc/codegen.pla: 0300: tag_type->[tag] = tag_type->[tag] | RESOLVED_FIXUP +; toolsrc/codegen.pla: 0301: end + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D052+0 +_F213 !WORD _D052+0 + !BYTE $BA,$00 ; IDXLW [0] + !BYTE $72 ; SW + !BYTE $6A ; LAW _D053+0 +_F214 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $6A ; LAW _D053+0 +_F215 !WORD _D053+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $70 ; SB + !BYTE $5A,$0A ; LEAVE 10 +; toolsrc/codegen.pla: 0302: // +; toolsrc/codegen.pla: 0303: // Emit the pending sequence +; toolsrc/codegen.pla: 0304: // +; toolsrc/codegen.pla: 0305: def emit_pending_seq#0 +_P001 ; emit_pending_seq#0() +_C040 ; emit_pending_seq() +; toolsrc/codegen.pla: 0306: word op, pending + ; op -> [0] + ; pending -> [2] +; toolsrc/codegen.pla: 0307: // +; toolsrc/codegen.pla: 0308: // This is called by some of the emit_*() functions to ensure that any +; toolsrc/codegen.pla: 0309: // pending ops are emitted before they emit their own op when they are +; toolsrc/codegen.pla: 0310: // called from the parser. However, this function itself calls some of those +; toolsrc/codegen.pla: 0311: // emit_*() functions to emit instructions from the pending sequence, which +; toolsrc/codegen.pla: 0312: // would cause an infinite loop if we weren't careful. We therefore set +; toolsrc/codegen.pla: 0313: // pending_seq to null on entry and work with a local copy, so if this +; toolsrc/codegen.pla: 0314: // function calls back into itself it is a no-op. +; toolsrc/codegen.pla: 0315: // +; toolsrc/codegen.pla: 0316: if not pending_seq; return; fin + !BYTE $58,$04,$00 ; ENTER 4,0 + !BYTE $6A ; LAW _D056+0 +_F216 !WORD _D056+0 + !BYTE $4E ; BRTRU _B108 + !WORD _B108-* + !BYTE $5A,$04 ; LEAVE 4 +_B108 +_B109 +; toolsrc/codegen.pla: 0317: pending = pending_seq; pending_seq = NULL +; toolsrc/codegen.pla: 0318: if outflags & OPTIMIZE +; toolsrc/codegen.pla: 0319: while optimize_seq(@pending, 0); loop + !BYTE $6A ; LAW _D056+0 +_F217 !WORD _D056+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D056+0 +_F218 !WORD _D056+0 + !BYTE $68 ; LAB _D085+0 +_F219 !WORD _D085+0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B110 + !WORD _B110-* + !BYTE $50 ; BRNCH _B114 + !WORD _B114-* +_B112 +_B114 + !BYTE $28,$02 ; LLA [2] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D084+0 +_F220 !WORD _D084+0 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B112 + !WORD _B112-* +_B113 +; toolsrc/codegen.pla: 0320: if outflags & OPTIMIZE2 +; toolsrc/codegen.pla: 0321: while optimize_seq(@pending, 1); loop + !BYTE $68 ; LAB _D085+0 +_F221 !WORD _D085+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B115 + !WORD _B115-* + !BYTE $50 ; BRNCH _B119 + !WORD _B119-* +_B117 +_B119 + !BYTE $28,$02 ; LLA [2] + !BYTE $02 ; CN 1 + !BYTE $6A ; LAW _D084+0 +_F222 !WORD _D084+0 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B117 + !WORD _B117-* +_B118 +; toolsrc/codegen.pla: 0322: fin +_B115 +_B116 +; toolsrc/codegen.pla: 0323: fin +_B110 +_B111 +; toolsrc/codegen.pla: 0324: while pending + !BYTE $50 ; BRNCH _B122 + !WORD _B122-* +_B120 +; toolsrc/codegen.pla: 0325: op = pending +; toolsrc/codegen.pla: 0326: when op->opgroup + !BYTE $66,$02 ; LLW [2] + !BYTE $6E,$00 ; DLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B124-* +; toolsrc/codegen.pla: 0327: // +; toolsrc/codegen.pla: 0328: // Constant value +; toolsrc/codegen.pla: 0329: // +; toolsrc/codegen.pla: 0330: is CONST_GROUP +_B125 +; toolsrc/codegen.pla: 0331: if op->opcode == CONST_CODE +; toolsrc/codegen.pla: 0332: if op=>opval == $FFFF // MINUS 1 +; toolsrc/codegen.pla: 0333: ^codeptr = $20 +; toolsrc/codegen.pla: 0334: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$2C ; CB 44 + !BYTE $24 ; BRNE _B126 + !WORD _B126-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $20 ; MINUS ONE + !BYTE $24 ; BRNE _B128 + !WORD _B128-* + !BYTE $2A,$20 ; CB 32 + !BYTE $6A ; LAW _D075+0 +_F223 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F224 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0335: elsif op=>opval & $FFF0 == $0000 // Constant NYBBLE + !BYTE $7A ; SAW _D075+0 +_F225 !WORD _D075+0 + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B128 +; toolsrc/codegen.pla: 0336: ^codeptr = op->opval*2 +; toolsrc/codegen.pla: 0337: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $5E,$F0 ; CFFB 65520 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B130 + !WORD _B130-* + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D075+0 +_F226 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F227 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0338: elsif op=>opval & $FF00 == $0000 // Constant BYTE + !BYTE $7A ; SAW _D075+0 +_F228 !WORD _D075+0 + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B130 +; toolsrc/codegen.pla: 0339: *codeptr = $2A | (op->opval << 8) +; toolsrc/codegen.pla: 0340: codeptr = codeptr + 2 +; toolsrc/codegen.pla: 0341: elsif op=>opval & $FF00 == $FF00 // Constant $FF00 | BYTE + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B131 + !WORD _B131-* + !BYTE $2A,$2A ; CB 42 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $6A ; LAW _D075+0 +_F229 !WORD _D075+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F230 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D075+0 +_F231 !WORD _D075+0 + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B131 +; toolsrc/codegen.pla: 0342: *codeptr = $5E | (op->opval << 8) +; toolsrc/codegen.pla: 0343: codeptr = codeptr + 2 +; toolsrc/codegen.pla: 0344: else // Constant WORD + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $24 ; BRNE _B132 + !WORD _B132-* + !BYTE $2A,$5E ; CB 94 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $6A ; LAW _D075+0 +_F232 !WORD _D075+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F233 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D075+0 +_F234 !WORD _D075+0 + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B132 +; toolsrc/codegen.pla: 0345: codeptr->0 = $2C +; toolsrc/codegen.pla: 0346: codeptr=>1 = op=>opval +; toolsrc/codegen.pla: 0347: codeptr = codeptr + 3 +; toolsrc/codegen.pla: 0348: fin + !BYTE $2A,$2C ; CB 44 + !BYTE $6A ; LAW _D075+0 +_F235 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D075+0 +_F236 !WORD _D075+0 + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F237 !WORD _D075+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D075+0 +_F238 !WORD _D075+0 +_B129 +; toolsrc/codegen.pla: 0349: else + !BYTE $50 ; BRNCH _B127 + !WORD _B127-* +_B126 +; toolsrc/codegen.pla: 0350: *codeptr = op->opcode | (op->opval << 8) // IMMEDIATE BYTE OP +; toolsrc/codegen.pla: 0351: codeptr = codeptr + 2 +; toolsrc/codegen.pla: 0352: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $6A ; LAW _D075+0 +_F239 !WORD _D075+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F240 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D075+0 +_F241 !WORD _D075+0 +_B127 +; toolsrc/codegen.pla: 0353: break + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0354: // +; toolsrc/codegen.pla: 0355: // Constant string +; toolsrc/codegen.pla: 0356: // +; toolsrc/codegen.pla: 0357: is CONSTR_GROUP +_B133 +; toolsrc/codegen.pla: 0358: ^codeptr = $2E +; toolsrc/codegen.pla: 0359: codeptr++ + !BYTE $2A,$2E ; CB 46 + !BYTE $6A ; LAW _D075+0 +_F242 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F243 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0360: emit_data(0, STR_TYPE, op=>opval, 0) +; toolsrc/codegen.pla: 0361: break + !BYTE $7A ; SAW _D075+0 +_F244 !WORD _D075+0 + !BYTE $00 ; CN 0 + !BYTE $2A,$80 ; CB 128 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C014 +_F245 !WORD _C014 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0362: // +; toolsrc/codegen.pla: 0363: // Single op codes +; toolsrc/codegen.pla: 0364: // +; toolsrc/codegen.pla: 0365: is STACK_GROUP +_B134 +; toolsrc/codegen.pla: 0366: ^codeptr = op->opcode +; toolsrc/codegen.pla: 0367: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D075+0 +_F246 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F247 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0368: break + !BYTE $7A ; SAW _D075+0 +_F248 !WORD _D075+0 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0369: // +; toolsrc/codegen.pla: 0370: // Local address codes +; toolsrc/codegen.pla: 0371: // +; toolsrc/codegen.pla: 0372: is LOCAL_GROUP +_B135 +; toolsrc/codegen.pla: 0373: *codeptr = op->opcode | (op->opoffset << 8) +; toolsrc/codegen.pla: 0374: codeptr = codeptr + 2 +; toolsrc/codegen.pla: 0375: break + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $96 ; OR + !BYTE $6A ; LAW _D075+0 +_F249 !WORD _D075+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D075+0 +_F250 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D075+0 +_F251 !WORD _D075+0 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0376: // +; toolsrc/codegen.pla: 0377: // Global address codes +; toolsrc/codegen.pla: 0378: // +; toolsrc/codegen.pla: 0379: is GLOBAL_GROUP +_B136 +; toolsrc/codegen.pla: 0380: ^codeptr = op->opcode +; toolsrc/codegen.pla: 0381: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D075+0 +_F252 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F253 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0382: emit_addr(op=>optag, op=>opoffset) +; toolsrc/codegen.pla: 0383: break + !BYTE $7A ; SAW _D075+0 +_F254 !WORD _D075+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$04 ; ADDI 4 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C012 +_F255 !WORD _C012 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0384: // +; toolsrc/codegen.pla: 0385: // Relative address codes +; toolsrc/codegen.pla: 0386: // +; toolsrc/codegen.pla: 0387: is RELATIVE_GROUP +_B137 +; toolsrc/codegen.pla: 0388: ^codeptr = op->opcode +; toolsrc/codegen.pla: 0389: codeptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D075+0 +_F256 !WORD _D075+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D075+0 +_F257 !WORD _D075+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0390: emit_reladdr(op=>optag) +; toolsrc/codegen.pla: 0391: break + !BYTE $7A ; SAW _D075+0 +_F258 !WORD _D075+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C013 +_F259 !WORD _C013 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0392: // +; toolsrc/codegen.pla: 0393: // Code tags +; toolsrc/codegen.pla: 0394: // +; toolsrc/codegen.pla: 0395: is CODETAG_GROUP +_B138 +; toolsrc/codegen.pla: 0396: emit_tag(op=>optag) +; toolsrc/codegen.pla: 0397: break + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C039 +_F260 !WORD _C039 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +; toolsrc/codegen.pla: 0398: otherwise +_B124 + !BYTE $07 ; CASEBLOCK + !WORD $0000 + !WORD _B125-* + !WORD $0001 + !WORD _B133-* + !WORD $0002 + !WORD _B134-* + !WORD $0003 + !WORD _B135-* + !WORD $0004 + !WORD _B136-* + !WORD $0005 + !WORD _B137-* + !WORD $0006 + !WORD _B138-* +; toolsrc/codegen.pla: 0399: return + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0400: wend +_B123 +; toolsrc/codegen.pla: 0401: pending = pending=>opnext; +; toolsrc/codegen.pla: 0402: // +; toolsrc/codegen.pla: 0403: // Free this op +; toolsrc/codegen.pla: 0404: // +; toolsrc/codegen.pla: 0405: op=>opnext = freeop_lst +; toolsrc/codegen.pla: 0406: freeop_lst = op +; toolsrc/codegen.pla: 0407: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D083+0 +_F261 !WORD _D083+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D083+0 +_F262 !WORD _D083+0 +_B122 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B120 + !WORD _B120-* +_B121 +; toolsrc/codegen.pla: 0408: if codeptr - codebuff > codebufsz; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $6A ; LAW _D075+0 +_F263 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F264 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D068+0 +_F265 !WORD _D068+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B139 + !WORD _B139-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F266 !WORD _C002 +_B139 +_B140 +; toolsrc/codegen.pla: 0409: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0410: // +; toolsrc/codegen.pla: 0411: // Emit a sequence of ops (into the pending sequence) +; toolsrc/codegen.pla: 0412: // +; toolsrc/codegen.pla: 0413: def emit_seq(seq)#0 + ; seq -> [0] +_C041 ; emit_seq() +; toolsrc/codegen.pla: 0414: word op + ; op -> [2] +; toolsrc/codegen.pla: 0415: byte string + ; string -> [4] +; toolsrc/codegen.pla: 0416: string = FALSE + !BYTE $58,$05,$01 ; ENTER 5,1 +; toolsrc/codegen.pla: 0417: op = seq +; toolsrc/codegen.pla: 0418: while op + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B143 + !WORD _B143-* +_B141 +; toolsrc/codegen.pla: 0419: if op->opcode == CONSTR_CODE; string = TRUE; break; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $24 ; BRNE _B144 + !WORD _B144-* + !BYTE $20 ; MINUS ONE + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B142 + !WORD _B142-* +_B144 +_B145 +; toolsrc/codegen.pla: 0420: op = op=>opnext +; toolsrc/codegen.pla: 0421: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] +_B143 + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B141 + !WORD _B141-* +_B142 +; toolsrc/codegen.pla: 0422: pending_seq = cat_seq(pending_seq, seq) +; toolsrc/codegen.pla: 0423: // +; toolsrc/codegen.pla: 0424: // The source code comments in the output are much more logical if we don't +; toolsrc/codegen.pla: 0425: // merge multiple sequences together. There's no value in doing this merging +; toolsrc/codegen.pla: 0426: // if we're not optimizing, and we optionally allow it to be prevented even +; toolsrc/codegen.pla: 0427: // when we are optimizing by specifing the -N (NO_COMBINE) flag. +; toolsrc/codegen.pla: 0428: // +; toolsrc/codegen.pla: 0429: // We must also force output if the sequence includes a CS opcode, as the +; toolsrc/codegen.pla: 0430: // associated 'constant' is only temporarily valid. +; toolsrc/codegen.pla: 0431: // +; toolsrc/codegen.pla: 0432: if not (outflags & (OPTIMIZE|OPTIMIZE2)) or outflags & NO_COMBINE or string +; toolsrc/codegen.pla: 0433: emit_pending_seq +; toolsrc/codegen.pla: 0434: fin + !BYTE $6A ; LAW _D056+0 +_F267 !WORD _D056+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C008 +_F268 !WORD _C008 + !BYTE $7A ; SAW _D056+0 +_F269 !WORD _D056+0 + !BYTE $68 ; LAB _D085+0 +_F270 !WORD _D085+0 + !BYTE $3C,$03 ; ANDI 3 + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B146 + !WORD _B146-* + !BYTE $68 ; LAB _D085+0 +_F271 !WORD _D085+0 + !BYTE $3C,$04 ; ANDI 4 + !BYTE $AE ; BROR _B147 + !WORD _B147-* + !BYTE $64,$04 ; LLB [4] +_B147 +_B146 + !BYTE $4C ; BRFLS _B148 + !WORD _B148-* + !BYTE $54 ; CALL _C040 +_F272 !WORD _C040 +_B148 +_B149 +; toolsrc/codegen.pla: 0435: end + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/codegen.pla: 0436: // +; toolsrc/codegen.pla: 0437: // Emit lambda function +; toolsrc/codegen.pla: 0438: // +; toolsrc/codegen.pla: 0439: def emit_lambdafunc(tag, cparms, lambda_seq)#0 + ; tag -> [0] + ; cparms -> [2] + ; lambda_seq -> [4] +_C042 ; emit_lambdafunc() +; toolsrc/codegen.pla: 0440: emit_tag(tag) + !BYTE $58,$06,$03 ; ENTER 6,3 +; toolsrc/codegen.pla: 0441: framesize = cparms * 2 +; toolsrc/codegen.pla: 0442: emit_enter(cparms) +; toolsrc/codegen.pla: 0443: emit_seq(lambda_seq) +; toolsrc/codegen.pla: 0444: emit_leave +; toolsrc/codegen.pla: 0445: end + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C039 +_F273 !WORD _C039 + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $7A ; SAW _D070+0 +_F274 !WORD _D070+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C038 +_F275 !WORD _C038 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F276 !WORD _C041 + !BYTE $54 ; CALL _C037 +_F277 !WORD _C037 + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0446: // +; toolsrc/codegen.pla: 0447: // ID manager +; toolsrc/codegen.pla: 0448: // +; toolsrc/codegen.pla: 0449: def idmatch(nameptr, len, idptr, idcnt) + ; nameptr -> [0] + ; len -> [2] + ; idptr -> [4] + ; idcnt -> [6] +_C043 ; idmatch() +; toolsrc/codegen.pla: 0450: byte i + ; i -> [8] +; toolsrc/codegen.pla: 0451: +; toolsrc/codegen.pla: 0452: if len > ID_LEN; len = ID_LEN; fin + !BYTE $58,$09,$04 ; ENTER 9,4 + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B150 + !WORD _B150-* + !BYTE $2A,$20 ; CB 32 + !BYTE $76,$02 ; SLW [2] +_B150 +_B151 +; toolsrc/codegen.pla: 0453: while idcnt + !BYTE $50 ; BRNCH _B154 + !WORD _B154-* +_B152 +; toolsrc/codegen.pla: 0454: if len == idptr->idname +; toolsrc/codegen.pla: 0455: i = 1; while i <= len and nameptr->[i - 1] == idptr->idname.[i]; i++; loop + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B155 + !WORD _B155-* + !BYTE $02 ; CN 1 + !BYTE $74,$08 ; SLB [8] + !BYTE $50 ; BRNCH _B159 + !WORD _B159-* +_B157 + !BYTE $64,$08 ; LLB [8] + !BYTE $8C ; INCR + !BYTE $74,$08 ; SLB [8] +_B159 + !BYTE $64,$08 ; LLB [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $4A ; ISLE + !BYTE $AC ; BRAND _B160 + !WORD _B160-* + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$08 ; LLB [8] + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $60 ; LB + !BYTE $40 ; ISEQ +_B160 + !BYTE $4E ; BRTRU _B157 + !WORD _B157-* +_B158 +; toolsrc/codegen.pla: 0456: //for i = 1 to len +; toolsrc/codegen.pla: 0457: // if nameptr->[i - 1] <> idptr->idname.[i]; break; fin +; toolsrc/codegen.pla: 0458: //next +; toolsrc/codegen.pla: 0459: if i > len; return idptr; fin + !BYTE $64,$08 ; LLB [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$09 ; LEAVE 9 +_B161 +_B162 +; toolsrc/codegen.pla: 0460: fin +_B155 +_B156 +; toolsrc/codegen.pla: 0461: idptr = idptr + idptr->idname + t_id +; toolsrc/codegen.pla: 0462: idcnt-- + !BYTE $66,$04 ; LLW [4] + !BYTE $34 ; DUP + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0463: loop + !BYTE $76,$06 ; SLW [6] +_B154 + !BYTE $66,$06 ; LLW [6] + !BYTE $4E ; BRTRU _B152 + !WORD _B152-* +_B153 +; toolsrc/codegen.pla: 0464: return NULL + !BYTE $00 ; CN 0 + !BYTE $5A,$09 ; LEAVE 9 +; toolsrc/codegen.pla: 0465: end +; toolsrc/codegen.pla: 0466: def lookup_id(nameptr, len) + ; nameptr -> [0] + ; len -> [2] +_C044 ; lookup_id() +; toolsrc/codegen.pla: 0467: word idptr + ; idptr -> [4] +; toolsrc/codegen.pla: 0468: +; toolsrc/codegen.pla: 0469: idptr = idmatch(nameptr, len, idlocal_tbl, locals) + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0470: if not idptr +; toolsrc/codegen.pla: 0471: idptr = idmatch(nameptr, len, idglobal_tbl, globals) +; toolsrc/codegen.pla: 0472: if idptr +; toolsrc/codegen.pla: 0473: if idptr=>idtype & EXTERN_TYPE +; toolsrc/codegen.pla: 0474: idptr=>idtype = idptr=>idtype | EXTACCESS_TYPE +; toolsrc/codegen.pla: 0475: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D055+0 +_F278 !WORD _D055+0 + !BYTE $68 ; LAB _D072+0 +_F279 !WORD _D072+0 + !BYTE $54 ; CALL _C043 +_F280 !WORD _C043 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B163 + !WORD _B163-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D054+0 +_F281 !WORD _D054+0 + !BYTE $6A ; LAW _D057+0 +_F282 !WORD _D057+0 + !BYTE $54 ; CALL _C043 +_F283 !WORD _C043 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B165 + !WORD _B165-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B167 + !WORD _B167-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $96 ; OR + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B167 +_B168 +; toolsrc/codegen.pla: 0476: fin +_B165 +_B166 +; toolsrc/codegen.pla: 0477: fin +_B163 +_B164 +; toolsrc/codegen.pla: 0478: return idptr + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0479: end +; toolsrc/codegen.pla: 0480: def lookup_idglobal(nameptr, len) + ; nameptr -> [0] + ; len -> [2] +_C045 ; lookup_idglobal() +; toolsrc/codegen.pla: 0481: word idptr + ; idptr -> [4] +; toolsrc/codegen.pla: 0482: +; toolsrc/codegen.pla: 0483: idptr = idmatch(nameptr, len, idglobal_tbl, globals) + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0484: if idptr +; toolsrc/codegen.pla: 0485: if idptr=>idtype & EXTERN_TYPE +; toolsrc/codegen.pla: 0486: idptr=>idtype = idptr=>idtype | EXTACCESS_TYPE +; toolsrc/codegen.pla: 0487: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D054+0 +_F284 !WORD _D054+0 + !BYTE $6A ; LAW _D057+0 +_F285 !WORD _D057+0 + !BYTE $54 ; CALL _C043 +_F286 !WORD _C043 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B169 + !WORD _B169-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B171 + !WORD _B171-* + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $96 ; OR + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B171 +_B172 +; toolsrc/codegen.pla: 0488: fin +_B169 +_B170 +; toolsrc/codegen.pla: 0489: return idptr + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0490: end +; toolsrc/codegen.pla: 0491: def new_iddata(nameptr, len, type, size)#0 + ; nameptr -> [0] + ; len -> [2] + ; type -> [4] + ; size -> [6] +_C046 ; new_iddata() +; toolsrc/codegen.pla: 0492: if idmatch(nameptr, len, idglobal_tbl, globals); exit_err(ERR_DUP|ERR_ID); fin + !BYTE $58,$08,$04 ; ENTER 8,4 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D054+0 +_F287 !WORD _D054+0 + !BYTE $6A ; LAW _D057+0 +_F288 !WORD _D057+0 + !BYTE $54 ; CALL _C043 +_F289 !WORD _C043 + !BYTE $4C ; BRFLS _B173 + !WORD _B173-* + !BYTE $2C,$01,$02 ; CW 513 + !BYTE $54 ; CALL _C002 +_F290 !WORD _C002 +_B173 +_B174 +; toolsrc/codegen.pla: 0493: nametostr(nameptr, len, lastglobal + idname) +; toolsrc/codegen.pla: 0494: lastglobal=>idtype = type +; toolsrc/codegen.pla: 0495: if type & EXTERN_TYPE +; toolsrc/codegen.pla: 0496: lastglobal=>idval = new_tag(EXTERN_FIXUP|WORD_FIXUP)//datasize +; toolsrc/codegen.pla: 0497: else + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D058+0 +_F291 !WORD _D058+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $54 ; CALL _C000 +_F292 !WORD _C000 + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D058+0 +_F293 !WORD _D058+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B175 + !WORD _B175-* + !BYTE $2A,$90 ; CB 144 + !BYTE $54 ; CALL _C004 +_F294 !WORD _C004 + !BYTE $6A ; LAW _D058+0 +_F295 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B176 + !WORD _B176-* +_B175 +; toolsrc/codegen.pla: 0498: lastglobal=>idval = new_tag(WORD_FIXUP)//datasize +; toolsrc/codegen.pla: 0499: emit_tag(lastglobal=>idval) +; toolsrc/codegen.pla: 0500: lastglobalsize = size +; toolsrc/codegen.pla: 0501: if size +; toolsrc/codegen.pla: 0502: emit_fill(size) +; toolsrc/codegen.pla: 0503: datasize = datasize + size +; toolsrc/codegen.pla: 0504: fin + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F296 !WORD _C004 + !BYTE $6A ; LAW _D058+0 +_F297 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D058+0 +_F298 !WORD _D058+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C039 +_F299 !WORD _C039 + !BYTE $66,$06 ; LLW [6] + !BYTE $7A ; SAW _D059+0 +_F300 !WORD _D059+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $4C ; BRFLS _B177 + !WORD _B177-* + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C011 +_F301 !WORD _C011 + !BYTE $6A ; LAW _D069+0 +_F302 !WORD _D069+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $7A ; SAW _D069+0 +_F303 !WORD _D069+0 +_B177 +_B178 +; toolsrc/codegen.pla: 0505: fin +_B176 +; toolsrc/codegen.pla: 0506: globals++ + !BYTE $6A ; LAW _D057+0 +_F304 !WORD _D057+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0507: lastglobal = lastglobal + t_id + len +; toolsrc/codegen.pla: 0508: if lastglobal - idglobal_tbl > globalbufsz; exit_err(ERR_OVER|ERR_GLOBAL|ERR_ID|ERR_TABLE); fin + !BYTE $7A ; SAW _D057+0 +_F305 !WORD _D057+0 + !BYTE $6A ; LAW _D058+0 +_F306 !WORD _D058+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $7E ; DAW _D058+0 +_F307 !WORD _D058+0 + !BYTE $6A ; LAW _D054+0 +_F308 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D066+0 +_F309 !WORD _D066+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B179 + !WORD _B179-* + !BYTE $2C,$90,$42 ; CW 17040 + !BYTE $54 ; CALL _C002 +_F310 !WORD _C002 +_B179 +_B180 +; toolsrc/codegen.pla: 0509: end + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/codegen.pla: 0510: def size_iddata(type, varsize, initsize)#0 + ; type -> [0] + ; varsize -> [2] + ; initsize -> [4] +_C047 ; size_iddata() +; toolsrc/codegen.pla: 0511: if varsize > initsize + !BYTE $58,$06,$03 ; ENTER 6,3 +; toolsrc/codegen.pla: 0512: datasize = datasize + varsize +; toolsrc/codegen.pla: 0513: emit_data(0, 0, 0, varsize - initsize) +; toolsrc/codegen.pla: 0514: else + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B181 + !WORD _B181-* + !BYTE $6A ; LAW _D069+0 +_F311 !WORD _D069+0 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $7A ; SAW _D069+0 +_F312 !WORD _D069+0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C014 +_F313 !WORD _C014 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B182 + !WORD _B182-* +_B181 +; toolsrc/codegen.pla: 0515: datasize = datasize + initsize +; toolsrc/codegen.pla: 0516: fin + !BYTE $6A ; LAW _D069+0 +_F314 !WORD _D069+0 + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $7A ; SAW _D069+0 +_F315 !WORD _D069+0 +_B182 +; toolsrc/codegen.pla: 0517: end + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0518: def new_idglobal(nameptr, len, type, value, cparms, cvals)#0 + ; nameptr -> [0] + ; len -> [2] + ; type -> [4] + ; value -> [6] + ; cparms -> [8] + ; cvals -> [10] +_C048 ; new_idglobal() +; toolsrc/codegen.pla: 0519: if idmatch(nameptr, len, idglobal_tbl, globals); exit_err(ERR_DUP|ERR_ID); fin + !BYTE $58,$0C,$06 ; ENTER 12,6 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D054+0 +_F316 !WORD _D054+0 + !BYTE $6A ; LAW _D057+0 +_F317 !WORD _D057+0 + !BYTE $54 ; CALL _C043 +_F318 !WORD _C043 + !BYTE $4C ; BRFLS _B183 + !WORD _B183-* + !BYTE $2C,$01,$02 ; CW 513 + !BYTE $54 ; CALL _C002 +_F319 !WORD _C002 +_B183 +_B184 +; toolsrc/codegen.pla: 0520: if len > ID_LEN; len = ID_LEN; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B185 + !WORD _B185-* + !BYTE $2A,$20 ; CB 32 + !BYTE $76,$02 ; SLW [2] +_B185 +_B186 +; toolsrc/codegen.pla: 0521: lastglobal=>idval = value +; toolsrc/codegen.pla: 0522: lastglobal=>idtype = type +; toolsrc/codegen.pla: 0523: lastglobal->funcparms = cparms +; toolsrc/codegen.pla: 0524: lastglobal->funcvals = cvals +; toolsrc/codegen.pla: 0525: nametostr(nameptr, len, lastglobal + idname) +; toolsrc/codegen.pla: 0526: globals++ + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _D058+0 +_F320 !WORD _D058+0 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D058+0 +_F321 !WORD _D058+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$08 ; LLW [8] + !BYTE $6A ; LAW _D058+0 +_F322 !WORD _D058+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $6A ; LAW _D058+0 +_F323 !WORD _D058+0 + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D058+0 +_F324 !WORD _D058+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $54 ; CALL _C000 +_F325 !WORD _C000 + !BYTE $6A ; LAW _D057+0 +_F326 !WORD _D057+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0527: lastglobal = lastglobal + t_id + len +; toolsrc/codegen.pla: 0528: if lastglobal - idglobal_tbl > globalbufsz; exit_err(ERR_OVER|ERR_GLOBAL|ERR_ID|ERR_TABLE); fin + !BYTE $7A ; SAW _D057+0 +_F327 !WORD _D057+0 + !BYTE $6A ; LAW _D058+0 +_F328 !WORD _D058+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $7E ; DAW _D058+0 +_F329 !WORD _D058+0 + !BYTE $6A ; LAW _D054+0 +_F330 !WORD _D054+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D066+0 +_F331 !WORD _D066+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B187 + !WORD _B187-* + !BYTE $2C,$90,$42 ; CW 17040 + !BYTE $54 ; CALL _C002 +_F332 !WORD _C002 +_B187 +_B188 +; toolsrc/codegen.pla: 0529: end + !BYTE $5A,$0C ; LEAVE 12 +; toolsrc/codegen.pla: 0530: def new_idconst(nameptr, len, value)#0 + ; nameptr -> [0] + ; len -> [2] + ; value -> [4] +_C049 ; new_idconst() +; toolsrc/codegen.pla: 0531: new_idglobal(nameptr, len, CONST_TYPE, value, 0, 0) + !BYTE $58,$06,$03 ; ENTER 6,3 +; toolsrc/codegen.pla: 0532: end + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C048 +_F333 !WORD _C048 + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0533: def new_idfunc(nameptr, len, type, tag, cfnparms, cfnvals)#0 + ; nameptr -> [0] + ; len -> [2] + ; type -> [4] + ; tag -> [6] + ; cfnparms -> [8] + ; cfnvals -> [10] +_C050 ; new_idfunc() +; toolsrc/codegen.pla: 0534: new_idglobal(nameptr, len, type|FUNC_TYPE, tag, cfnparms, cfnvals) + !BYTE $58,$0C,$06 ; ENTER 12,6 +; toolsrc/codegen.pla: 0535: if not (type & EXTERN_TYPE); def_cnt++; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $3E,$08 ; ORI 8 + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $54 ; CALL _C048 +_F334 !WORD _C048 + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B189 + !WORD _B189-* + !BYTE $68 ; LAB _D080+0 +_F335 !WORD _D080+0 + !BYTE $8C ; INCR + !BYTE $78 ; SAB _D080+0 +_F336 !WORD _D080+0 +_B189 +_B190 +; toolsrc/codegen.pla: 0536: end + !BYTE $5A,$0C ; LEAVE 12 +; toolsrc/codegen.pla: 0537: def set_idfunc(nameptr, len, tag, cparms, cvals)#0 + ; nameptr -> [0] + ; len -> [2] + ; tag -> [4] + ; cparms -> [6] + ; cvals -> [8] +_C051 ; set_idfunc() +; toolsrc/codegen.pla: 0538: word idptr + ; idptr -> [10] +; toolsrc/codegen.pla: 0539: +; toolsrc/codegen.pla: 0540: idptr = lookup_idglobal(nameptr, len) + !BYTE $58,$0C,$05 ; ENTER 12,5 +; toolsrc/codegen.pla: 0541: if idptr +; toolsrc/codegen.pla: 0542: if not (idptr=>idtype & FUNC_TYPE); exit_err(ERR_UNDECL|ERR_CODE); fin // DEBUG + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C045 +_F337 !WORD _C045 + !BYTE $6E,$0A ; DLW [10] + !BYTE $4C ; BRFLS _B191 + !WORD _B191-* + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4E ; BRTRU _B193 + !WORD _B193-* + !BYTE $2C,$02,$01 ; CW 258 + !BYTE $54 ; CALL _C002 +_F338 !WORD _C002 +_B193 +_B194 +; toolsrc/codegen.pla: 0543: idptr=>idval = tag +; toolsrc/codegen.pla: 0544: idptr->funcparms = cparms +; toolsrc/codegen.pla: 0545: idptr->funcvals = cvals +; toolsrc/codegen.pla: 0546: else + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B192 + !WORD _B192-* +_B191 +; toolsrc/codegen.pla: 0547: exit_err(ERR_UNDECL|ERR_ID) +; toolsrc/codegen.pla: 0548: fin + !BYTE $2C,$02,$02 ; CW 514 + !BYTE $54 ; CALL _C002 +_F339 !WORD _C002 +_B192 +; toolsrc/codegen.pla: 0549: end + !BYTE $5A,$0C ; LEAVE 12 +; toolsrc/codegen.pla: 0550: def init_idglobal#0 +_C052 ; init_idglobal() +; toolsrc/codegen.pla: 0551: word op + ; op -> [0] +; toolsrc/codegen.pla: 0552: word i + ; i -> [2] +; toolsrc/codegen.pla: 0553: +; toolsrc/codegen.pla: 0554: dfd_num = DFDNUM + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/codegen.pla: 0555: tag_num = TAGNUM +; toolsrc/codegen.pla: 0556: fixup_num = FIXUPNUM +; toolsrc/codegen.pla: 0557: globalbufsz = IDGLOBALSZ +; toolsrc/codegen.pla: 0558: localbufsz = IDLOCALSZ +; toolsrc/codegen.pla: 0559: if isult(heapavail, $6000) +; toolsrc/codegen.pla: 0560: dfd_num = DFDNUM/2 +; toolsrc/codegen.pla: 0561: tag_num = TAGNUM/2 +; toolsrc/codegen.pla: 0562: fixup_num = FIXUPNUM/2 +; toolsrc/codegen.pla: 0563: globalbufsz = IDGLOBALSZ +; toolsrc/codegen.pla: 0564: localbufsz = IDLOCALSZ/2 +; toolsrc/codegen.pla: 0565: fin + !BYTE $2A,$80 ; CB 128 + !BYTE $7A ; SAW _D063+0 +_F340 !WORD _D063+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $7A ; SAW _D064+0 +_F341 !WORD _D064+0 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $7A ; SAW _D065+0 +_F342 !WORD _D065+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $7A ; SAW _D066+0 +_F343 !WORD _D066+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $7A ; SAW _D067+0 +_F344 !WORD _D067+0 + !BYTE $54 ; CALL _X016 +_F345 !WORD 0 + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $54 ; CALL _X026 +_F346 !WORD 0 + !BYTE $4C ; BRFLS _B195 + !WORD _B195-* + !BYTE $2A,$40 ; CB 64 + !BYTE $7A ; SAW _D063+0 +_F347 !WORD _D063+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $7A ; SAW _D064+0 +_F348 !WORD _D064+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $7A ; SAW _D065+0 +_F349 !WORD _D065+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $7A ; SAW _D066+0 +_F350 !WORD _D066+0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $7A ; SAW _D067+0 +_F351 !WORD _D067+0 +_B195 +_B196 +; toolsrc/codegen.pla: 0566: // +; toolsrc/codegen.pla: 0567: //Init free op sequence list +; toolsrc/codegen.pla: 0568: // +; toolsrc/codegen.pla: 0569: freeop_lst = heapalloc(OPSEQNUM*t_opseq) +; toolsrc/codegen.pla: 0570: op = freeop_lst +; toolsrc/codegen.pla: 0571: for i = OPSEQNUM-1 downto 0 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $54 ; CALL _X014 +_F352 !WORD 0 + !BYTE $7E ; DAW _D083+0 +_F353 !WORD _D083+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $00 ; CN 0 + !BYTE $2A,$FF ; CB 255 +_B198 + !BYTE $6E,$02 ; DLW [2] +; toolsrc/codegen.pla: 0572: op=>opnext = op + t_opseq +; toolsrc/codegen.pla: 0573: op = op + t_opseq +; toolsrc/codegen.pla: 0574: next + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$00 ; SLW [0] +_B199 + !BYTE $A8 ; DECBRGE _B198 + !WORD _B198-* +_B197 + !BYTE $76,$02 ; SLW [2] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0575: op=>opnext = NULL +; toolsrc/codegen.pla: 0576: // +; toolsrc/codegen.pla: 0577: // Allocate remaining buffers +; toolsrc/codegen.pla: 0578: // +; toolsrc/codegen.pla: 0579: dfd_tag = heapalloc(dfd_num*2) +; toolsrc/codegen.pla: 0580: tag_addr = heapalloc(tag_num*2) +; toolsrc/codegen.pla: 0581: tag_type = heapalloc(tag_num) +; toolsrc/codegen.pla: 0582: fixup_tag = heapalloc(fixup_num*2) +; toolsrc/codegen.pla: 0583: fixup_addr = heapalloc(fixup_num*2) +; toolsrc/codegen.pla: 0584: idglobal_tbl = heapalloc(globalbufsz) +; toolsrc/codegen.pla: 0585: idlocal_tbl = heapalloc(localbufsz) +; toolsrc/codegen.pla: 0586: codebufsz = heapavail - 2048 +; toolsrc/codegen.pla: 0587: codebuff = heapalloc(codebufsz) +; toolsrc/codegen.pla: 0588: codeptr = codebuff +; toolsrc/codegen.pla: 0589: lastglobal = idglobal_tbl +; toolsrc/codegen.pla: 0590: end + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D063+0 +_F354 !WORD _D063+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X014 +_F355 !WORD 0 + !BYTE $7A ; SAW _D048+0 +_F356 !WORD _D048+0 + !BYTE $6A ; LAW _D064+0 +_F357 !WORD _D064+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X014 +_F358 !WORD 0 + !BYTE $7A ; SAW _D052+0 +_F359 !WORD _D052+0 + !BYTE $6A ; LAW _D064+0 +_F360 !WORD _D064+0 + !BYTE $54 ; CALL _X014 +_F361 !WORD 0 + !BYTE $7A ; SAW _D053+0 +_F362 !WORD _D053+0 + !BYTE $6A ; LAW _D065+0 +_F363 !WORD _D065+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X014 +_F364 !WORD 0 + !BYTE $7A ; SAW _D050+0 +_F365 !WORD _D050+0 + !BYTE $6A ; LAW _D065+0 +_F366 !WORD _D065+0 + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X014 +_F367 !WORD 0 + !BYTE $7A ; SAW _D051+0 +_F368 !WORD _D051+0 + !BYTE $6A ; LAW _D066+0 +_F369 !WORD _D066+0 + !BYTE $54 ; CALL _X014 +_F370 !WORD 0 + !BYTE $7A ; SAW _D054+0 +_F371 !WORD _D054+0 + !BYTE $6A ; LAW _D067+0 +_F372 !WORD _D067+0 + !BYTE $54 ; CALL _X014 +_F373 !WORD 0 + !BYTE $7A ; SAW _D055+0 +_F374 !WORD _D055+0 + !BYTE $54 ; CALL _X016 +_F375 !WORD 0 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $84 ; SUB + !BYTE $7E ; DAW _D068+0 +_F376 !WORD _D068+0 + !BYTE $54 ; CALL _X014 +_F377 !WORD 0 + !BYTE $7E ; DAW _D074+0 +_F378 !WORD _D074+0 + !BYTE $7A ; SAW _D075+0 +_F379 !WORD _D075+0 + !BYTE $6A ; LAW _D054+0 +_F380 !WORD _D054+0 + !BYTE $7A ; SAW _D058+0 +_F381 !WORD _D058+0 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0591: def new_idlocal(nameptr, len, type, size)#0 + ; nameptr -> [0] + ; len -> [2] + ; type -> [4] + ; size -> [6] +_C053 ; new_idlocal() +; toolsrc/codegen.pla: 0592: if idmatch(nameptr, len, @idlocal_tbl, locals); exit_err(ERR_DUP|ERR_ID); fin + !BYTE $58,$08,$04 ; ENTER 8,4 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D055+0 +_F382 !WORD _D055+0 + !BYTE $68 ; LAB _D072+0 +_F383 !WORD _D072+0 + !BYTE $54 ; CALL _C043 +_F384 !WORD _C043 + !BYTE $4C ; BRFLS _B200 + !WORD _B200-* + !BYTE $2C,$01,$02 ; CW 513 + !BYTE $54 ; CALL _C002 +_F385 !WORD _C002 +_B200 +_B201 +; toolsrc/codegen.pla: 0593: if len > ID_LEN; len = ID_LEN; fin + !BYTE $66,$02 ; LLW [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B202 + !WORD _B202-* + !BYTE $2A,$20 ; CB 32 + !BYTE $76,$02 ; SLW [2] +_B202 +_B203 +; toolsrc/codegen.pla: 0594: lastlocal=>idval = framesize +; toolsrc/codegen.pla: 0595: lastlocal=>idtype = type | LOCAL_TYPE +; toolsrc/codegen.pla: 0596: nametostr(nameptr, len, lastlocal + idname) +; toolsrc/codegen.pla: 0597: locals++ + !BYTE $6A ; LAW _D070+0 +_F386 !WORD _D070+0 + !BYTE $6A ; LAW _D060+0 +_F387 !WORD _D060+0 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $3E,$10 ; ORI 16 + !BYTE $6A ; LAW _D060+0 +_F388 !WORD _D060+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D060+0 +_F389 !WORD _D060+0 + !BYTE $38,$07 ; ADDI 7 + !BYTE $54 ; CALL _C000 +_F390 !WORD _C000 + !BYTE $68 ; LAB _D072+0 +_F391 !WORD _D072+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0598: lastlocal = lastlocal + t_id + len +; toolsrc/codegen.pla: 0599: if lastlocal - idlocal_tbl > localbufsz; exit_err(ERR_OVER|ERR_LOCAL|ERR_TABLE); fin + !BYTE $78 ; SAB _D072+0 +_F392 !WORD _D072+0 + !BYTE $6A ; LAW _D060+0 +_F393 !WORD _D060+0 + !BYTE $38,$08 ; ADDI 8 + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $7E ; DAW _D060+0 +_F394 !WORD _D060+0 + !BYTE $6A ; LAW _D055+0 +_F395 !WORD _D055+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _D067+0 +_F396 !WORD _D067+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B204 + !WORD _B204-* + !BYTE $2C,$50,$40 ; CW 16464 + !BYTE $54 ; CALL _C002 +_F397 !WORD _C002 +_B204 +_B205 +; toolsrc/codegen.pla: 0600: framesize = framesize + size +; toolsrc/codegen.pla: 0601: if framesize > 255; exit_err(ERR_OVER|ERR_LOCAL|ERR_FRAME); fin + !BYTE $6A ; LAW _D070+0 +_F398 !WORD _D070+0 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $7E ; DAW _D070+0 +_F399 !WORD _D070+0 + !BYTE $2A,$FF ; CB 255 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B206 + !WORD _B206-* + !BYTE $2C,$50,$20 ; CW 8272 + !BYTE $54 ; CALL _C002 +_F400 !WORD _C002 +_B206 +_B207 +; toolsrc/codegen.pla: 0602: end + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/codegen.pla: 0603: def init_idlocal#0 +_C054 ; init_idlocal() +; toolsrc/codegen.pla: 0604: locals = 0 +; toolsrc/codegen.pla: 0605: framesize = 0 +; toolsrc/codegen.pla: 0606: lastlocal = idlocal_tbl +; toolsrc/codegen.pla: 0607: end + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D072+0 +_F401 !WORD _D072+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D070+0 +_F402 !WORD _D070+0 + !BYTE $6A ; LAW _D055+0 +_F403 !WORD _D055+0 + !BYTE $7A ; SAW _D060+0 +_F404 !WORD _D060+0 + !BYTE $5C ; RET +; toolsrc/codegen.pla: 0608: def save_idlocal#0 +_C055 ; save_idlocal() +; toolsrc/codegen.pla: 0609: savelocals = locals +; toolsrc/codegen.pla: 0610: savesize = framesize +; toolsrc/codegen.pla: 0611: savelast = lastlocal +; toolsrc/codegen.pla: 0612: savetbl = heapalloc(lastlocal - idlocal_tbl) +; toolsrc/codegen.pla: 0613: memcpy(savetbl, idlocal_tbl, lastlocal - idlocal_tbl) +; toolsrc/codegen.pla: 0614: end + !BYTE $68 ; LAB _D072+0 +_F405 !WORD _D072+0 + !BYTE $78 ; SAB _D073+0 +_F406 !WORD _D073+0 + !BYTE $6A ; LAW _D070+0 +_F407 !WORD _D070+0 + !BYTE $7A ; SAW _D071+0 +_F408 !WORD _D071+0 + !BYTE $6A ; LAW _D060+0 +_F409 !WORD _D060+0 + !BYTE $7A ; SAW _D061+0 +_F410 !WORD _D061+0 + !BYTE $6A ; LAW _D060+0 +_F411 !WORD _D060+0 + !BYTE $6A ; LAW _D055+0 +_F412 !WORD _D055+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X014 +_F413 !WORD 0 + !BYTE $7E ; DAW _D062+0 +_F414 !WORD _D062+0 + !BYTE $6A ; LAW _D055+0 +_F415 !WORD _D055+0 + !BYTE $6A ; LAW _D060+0 +_F416 !WORD _D060+0 + !BYTE $6A ; LAW _D055+0 +_F417 !WORD _D055+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F418 !WORD 0 + !BYTE $5C ; RET +; toolsrc/codegen.pla: 0615: def restore_idlocal#0 +_C056 ; restore_idlocal() +; toolsrc/codegen.pla: 0616: locals = savelocals +; toolsrc/codegen.pla: 0617: framesize = savesize +; toolsrc/codegen.pla: 0618: lastlocal = savelast +; toolsrc/codegen.pla: 0619: memcpy(idlocal_tbl, savetbl, lastlocal - idlocal_tbl) +; toolsrc/codegen.pla: 0620: heaprelease(savetbl) +; toolsrc/codegen.pla: 0621: end + !BYTE $68 ; LAB _D073+0 +_F419 !WORD _D073+0 + !BYTE $78 ; SAB _D072+0 +_F420 !WORD _D072+0 + !BYTE $6A ; LAW _D071+0 +_F421 !WORD _D071+0 + !BYTE $7A ; SAW _D070+0 +_F422 !WORD _D070+0 + !BYTE $6A ; LAW _D061+0 +_F423 !WORD _D061+0 + !BYTE $7A ; SAW _D060+0 +_F424 !WORD _D060+0 + !BYTE $6A ; LAW _D055+0 +_F425 !WORD _D055+0 + !BYTE $6A ; LAW _D062+0 +_F426 !WORD _D062+0 + !BYTE $6A ; LAW _D060+0 +_F427 !WORD _D060+0 + !BYTE $6A ; LAW _D055+0 +_F428 !WORD _D055+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F429 !WORD 0 + !BYTE $6A ; LAW _D062+0 +_F430 !WORD _D062+0 + !BYTE $54 ; CALL _X015 +_F431 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5C ; RET +; toolsrc/codegen.pla: 0622: // +; toolsrc/codegen.pla: 0623: // Module dependency list +; toolsrc/codegen.pla: 0624: // +; toolsrc/codegen.pla: 0625: def new_moddep(nameptr, len)#0 + ; nameptr -> [0] + ; len -> [2] +_C057 ; new_moddep() +; toolsrc/codegen.pla: 0626: if len > 15; len = 15; fin + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$02 ; LLW [2] + !BYTE $1E ; CN 15 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B208 + !WORD _B208-* + !BYTE $1E ; CN 15 + !BYTE $76,$02 ; SLW [2] +_B208 +_B209 +; toolsrc/codegen.pla: 0627: new_iddata(nameptr, len, EXTERN_TYPE|WORD_TYPE, 2) +; toolsrc/codegen.pla: 0628: memcpy(@moddep_tbl[moddep_cnt*16] + 1, nameptr, len) +; toolsrc/codegen.pla: 0629: moddep_tbl[moddep_cnt*16] = len +; toolsrc/codegen.pla: 0630: moddep_cnt++ + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C046 +_F432 !WORD _C046 + !BYTE $26 ; LA _D078+0 +_F433 !WORD _D078+0 + !BYTE $68 ; LAB _D079+0 +_F434 !WORD _D079+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X018 +_F435 !WORD 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D078+0 +_F436 !WORD _D078+0 + !BYTE $68 ; LAB _D079+0 +_F437 !WORD _D079+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $68 ; LAB _D079+0 +_F438 !WORD _D079+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0631: if moddep_cnt > MODDEPNUM; parse_warn("Module dependency overflow"); fin + !BYTE $7C ; DAB _D079+0 +_F439 !WORD _D079+0 + !BYTE $10 ; CN 8 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B210 + !WORD _B210-* + !BYTE $2E ; CS + !BYTE $1A + !BYTE $4D,$6F,$64,$75,$6C,$65,$20,$64 + !BYTE $65,$70,$65,$6E,$64,$65,$6E,$63 + !BYTE $79,$20,$6F,$76,$65,$72,$66,$6C + !BYTE $6F,$77 + !BYTE $54 ; CALL _C003 +_F440 !WORD _C003 +_B210 +_B211 +; toolsrc/codegen.pla: 0632: end + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/codegen.pla: 0633: // +; toolsrc/codegen.pla: 0634: // DFD list +; toolsrc/codegen.pla: 0635: // +; toolsrc/codegen.pla: 0636: def new_dfd(tag)#0 + ; tag -> [0] +_C058 ; new_dfd() +; toolsrc/codegen.pla: 0637: if dfd_cnt >= dfd_num; exit_err(ERR_OVER|ERR_CODE|ERR_TABLE); fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $6A ; LAW _D049+0 +_F441 !WORD _D049+0 + !BYTE $6A ; LAW _D063+0 +_F442 !WORD _D063+0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B212 + !WORD _B212-* + !BYTE $2C,$10,$41 ; CW 16656 + !BYTE $54 ; CALL _C002 +_F443 !WORD _C002 +_B212 +_B213 +; toolsrc/codegen.pla: 0638: dfd_tag=>[dfd_cnt] = tag +; toolsrc/codegen.pla: 0639: dfd_cnt++ + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D048+0 +_F444 !WORD _D048+0 + !BYTE $BE ; IDXAW _D049+0 +_F445 !WORD _D049+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D049+0 +_F446 !WORD _D049+0 + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0640: end + !BYTE $7A ; SAW _D049+0 +_F447 !WORD _D049+0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/codegen.pla: 0641: // +; toolsrc/codegen.pla: 0642: // Generate/add to a sequence of code +; toolsrc/codegen.pla: 0643: // +; toolsrc/codegen.pla: 0644: def gen_op(seq, code) + ; seq -> [0] + ; code -> [2] +_C059 ; gen_op() +; toolsrc/codegen.pla: 0645: word op + ; op -> [4] +; toolsrc/codegen.pla: 0646: +; toolsrc/codegen.pla: 0647: if not seq + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0648: seq = new_op +; toolsrc/codegen.pla: 0649: op = seq +; toolsrc/codegen.pla: 0650: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B214 + !WORD _B214-* + !BYTE $54 ; CALL _C005 +_F448 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B215 + !WORD _B215-* +_B214 +; toolsrc/codegen.pla: 0651: op = seq +; toolsrc/codegen.pla: 0652: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B218 + !WORD _B218-* +_B216 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B218 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B216 + !WORD _B216-* +_B217 +; toolsrc/codegen.pla: 0653: op=>opnext = new_op +; toolsrc/codegen.pla: 0654: op = op=>opnext +; toolsrc/codegen.pla: 0655: fin + !BYTE $54 ; CALL _C005 +_F449 !WORD _C005 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B215 +; toolsrc/codegen.pla: 0656: op->opcode = code +; toolsrc/codegen.pla: 0657: op->opgroup = STACK_GROUP +; toolsrc/codegen.pla: 0658: return seq + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0659: end +; toolsrc/codegen.pla: 0660: def gen_const(seq, cval) + ; seq -> [0] + ; cval -> [2] +_C060 ; gen_const() +; toolsrc/codegen.pla: 0661: word op + ; op -> [4] +; toolsrc/codegen.pla: 0662: +; toolsrc/codegen.pla: 0663: if not seq + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0664: seq = new_op +; toolsrc/codegen.pla: 0665: op = seq +; toolsrc/codegen.pla: 0666: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B219 + !WORD _B219-* + !BYTE $54 ; CALL _C005 +_F450 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B220 + !WORD _B220-* +_B219 +; toolsrc/codegen.pla: 0667: op = seq +; toolsrc/codegen.pla: 0668: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B223 + !WORD _B223-* +_B221 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B223 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B221 + !WORD _B221-* +_B222 +; toolsrc/codegen.pla: 0669: op=>opnext = new_op +; toolsrc/codegen.pla: 0670: op = op=>opnext +; toolsrc/codegen.pla: 0671: fin + !BYTE $54 ; CALL _C005 +_F451 !WORD _C005 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B220 +; toolsrc/codegen.pla: 0672: op->opcode = CONST_CODE +; toolsrc/codegen.pla: 0673: op->opgroup = CONST_GROUP +; toolsrc/codegen.pla: 0674: op=>opval = cval +; toolsrc/codegen.pla: 0675: return seq + !BYTE $2A,$2C ; CB 44 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0676: end +; toolsrc/codegen.pla: 0677: def gen_str(seq, cval) + ; seq -> [0] + ; cval -> [2] +_C061 ; gen_str() +; toolsrc/codegen.pla: 0678: word op + ; op -> [4] +; toolsrc/codegen.pla: 0679: +; toolsrc/codegen.pla: 0680: if not seq + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0681: seq = new_op +; toolsrc/codegen.pla: 0682: op = seq +; toolsrc/codegen.pla: 0683: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B224 + !WORD _B224-* + !BYTE $54 ; CALL _C005 +_F452 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B225 + !WORD _B225-* +_B224 +; toolsrc/codegen.pla: 0684: op = seq +; toolsrc/codegen.pla: 0685: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B228 + !WORD _B228-* +_B226 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B228 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B226 + !WORD _B226-* +_B227 +; toolsrc/codegen.pla: 0686: op=>opnext = new_op +; toolsrc/codegen.pla: 0687: op = op=>opnext +; toolsrc/codegen.pla: 0688: fin + !BYTE $54 ; CALL _C005 +_F453 !WORD _C005 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B225 +; toolsrc/codegen.pla: 0689: op->opcode = CONSTR_CODE +; toolsrc/codegen.pla: 0690: op->opgroup = CONSTR_GROUP +; toolsrc/codegen.pla: 0691: op=>opval = cval +; toolsrc/codegen.pla: 0692: return seq + !BYTE $2A,$2E ; CB 46 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $02 ; CN 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0693: end +; toolsrc/codegen.pla: 0694: def gen_oplcl(seq, code, offsz) + ; seq -> [0] + ; code -> [2] + ; offsz -> [4] +_C062 ; gen_oplcl() +; toolsrc/codegen.pla: 0695: word op + ; op -> [6] +; toolsrc/codegen.pla: 0696: +; toolsrc/codegen.pla: 0697: if not seq + !BYTE $58,$08,$03 ; ENTER 8,3 +; toolsrc/codegen.pla: 0698: seq = new_op +; toolsrc/codegen.pla: 0699: op = seq +; toolsrc/codegen.pla: 0700: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B229 + !WORD _B229-* + !BYTE $54 ; CALL _C005 +_F454 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B230 + !WORD _B230-* +_B229 +; toolsrc/codegen.pla: 0701: op = seq +; toolsrc/codegen.pla: 0702: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B233 + !WORD _B233-* +_B231 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B233 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B231 + !WORD _B231-* +_B232 +; toolsrc/codegen.pla: 0703: op=>opnext = new_op +; toolsrc/codegen.pla: 0704: op = op=>opnext +; toolsrc/codegen.pla: 0705: fin + !BYTE $54 ; CALL _C005 +_F455 !WORD _C005 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B230 +; toolsrc/codegen.pla: 0706: op->opcode = code +; toolsrc/codegen.pla: 0707: op->opgroup = LOCAL_GROUP +; toolsrc/codegen.pla: 0708: op=>opoffset = offsz +; toolsrc/codegen.pla: 0709: return seq + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $06 ; CN 3 + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/codegen.pla: 0710: end +; toolsrc/codegen.pla: 0711: def gen_opglbl(seq, code, tag, offsz) + ; seq -> [0] + ; code -> [2] + ; tag -> [4] + ; offsz -> [6] +_C063 ; gen_opglbl() +; toolsrc/codegen.pla: 0712: word op + ; op -> [8] +; toolsrc/codegen.pla: 0713: +; toolsrc/codegen.pla: 0714: if not seq + !BYTE $58,$0A,$04 ; ENTER 10,4 +; toolsrc/codegen.pla: 0715: seq = new_op +; toolsrc/codegen.pla: 0716: op = seq +; toolsrc/codegen.pla: 0717: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B234 + !WORD _B234-* + !BYTE $54 ; CALL _C005 +_F456 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B235 + !WORD _B235-* +_B234 +; toolsrc/codegen.pla: 0718: op = seq +; toolsrc/codegen.pla: 0719: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B238 + !WORD _B238-* +_B236 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$08 ; SLW [8] +_B238 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B236 + !WORD _B236-* +_B237 +; toolsrc/codegen.pla: 0720: op=>opnext = new_op +; toolsrc/codegen.pla: 0721: op = op=>opnext +; toolsrc/codegen.pla: 0722: fin + !BYTE $54 ; CALL _C005 +_F457 !WORD _C005 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$08 ; SLW [8] +_B235 +; toolsrc/codegen.pla: 0723: op->opcode = code +; toolsrc/codegen.pla: 0724: op->opgroup = GLOBAL_GROUP +; toolsrc/codegen.pla: 0725: op=>optag = tag +; toolsrc/codegen.pla: 0726: op=>opoffset = offsz +; toolsrc/codegen.pla: 0727: return seq + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $70 ; SB + !BYTE $08 ; CN 4 + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$0A ; LEAVE 10 +; toolsrc/codegen.pla: 0728: end +; toolsrc/codegen.pla: 0729: def gen_oprel(seq, code, tag) + ; seq -> [0] + ; code -> [2] + ; tag -> [4] +_C064 ; gen_oprel() +; toolsrc/codegen.pla: 0730: word op + ; op -> [6] +; toolsrc/codegen.pla: 0731: +; toolsrc/codegen.pla: 0732: if not seq + !BYTE $58,$08,$03 ; ENTER 8,3 +; toolsrc/codegen.pla: 0733: seq = new_op +; toolsrc/codegen.pla: 0734: op = seq +; toolsrc/codegen.pla: 0735: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B239 + !WORD _B239-* + !BYTE $54 ; CALL _C005 +_F458 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B240 + !WORD _B240-* +_B239 +; toolsrc/codegen.pla: 0736: op = seq +; toolsrc/codegen.pla: 0737: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B243 + !WORD _B243-* +_B241 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B243 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B241 + !WORD _B241-* +_B242 +; toolsrc/codegen.pla: 0738: op=>opnext = new_op +; toolsrc/codegen.pla: 0739: op = op=>opnext +; toolsrc/codegen.pla: 0740: fin + !BYTE $54 ; CALL _C005 +_F459 !WORD _C005 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B240 +; toolsrc/codegen.pla: 0741: op->opcode = code +; toolsrc/codegen.pla: 0742: op->opgroup = RELATIVE_GROUP +; toolsrc/codegen.pla: 0743: op=>optag = tag +; toolsrc/codegen.pla: 0744: return seq + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $0A ; CN 5 + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/codegen.pla: 0745: end +; toolsrc/codegen.pla: 0746: def gen_ctag(seq, tag) + ; seq -> [0] + ; tag -> [2] +_C065 ; gen_ctag() +; toolsrc/codegen.pla: 0747: word op + ; op -> [4] +; toolsrc/codegen.pla: 0748: +; toolsrc/codegen.pla: 0749: if not seq + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0750: seq = new_op +; toolsrc/codegen.pla: 0751: op = seq +; toolsrc/codegen.pla: 0752: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B244 + !WORD _B244-* + !BYTE $54 ; CALL _C005 +_F460 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B245 + !WORD _B245-* +_B244 +; toolsrc/codegen.pla: 0753: op = seq +; toolsrc/codegen.pla: 0754: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B248 + !WORD _B248-* +_B246 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B248 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B246 + !WORD _B246-* +_B247 +; toolsrc/codegen.pla: 0755: op=>opnext = new_op +; toolsrc/codegen.pla: 0756: op = op=>opnext +; toolsrc/codegen.pla: 0757: fin + !BYTE $54 ; CALL _C005 +_F461 !WORD _C005 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$04 ; SLW [4] +_B245 +; toolsrc/codegen.pla: 0758: op->opcode = INVALID_CODE +; toolsrc/codegen.pla: 0759: op->opgroup = CODETAG_GROUP +; toolsrc/codegen.pla: 0760: op=>optag = tag +; toolsrc/codegen.pla: 0761: return seq + !BYTE $2A,$FF ; CB 255 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $0C ; CN 6 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0762: end +; toolsrc/codegen.pla: 0763: def gen_uop(seq, tkn) + ; seq -> [0] + ; tkn -> [2] +_C066 ; gen_uop() +; toolsrc/codegen.pla: 0764: byte code + ; code -> [4] +; toolsrc/codegen.pla: 0765: word op + ; op -> [5] +; toolsrc/codegen.pla: 0766: +; toolsrc/codegen.pla: 0767: if not seq + !BYTE $58,$07,$02 ; ENTER 7,2 +; toolsrc/codegen.pla: 0768: seq = new_op +; toolsrc/codegen.pla: 0769: op = seq +; toolsrc/codegen.pla: 0770: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B249 + !WORD _B249-* + !BYTE $54 ; CALL _C005 +_F462 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $50 ; BRNCH _B250 + !WORD _B250-* +_B249 +; toolsrc/codegen.pla: 0771: op = seq +; toolsrc/codegen.pla: 0772: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $50 ; BRNCH _B253 + !WORD _B253-* +_B251 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$05 ; SLW [5] +_B253 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B251 + !WORD _B251-* +_B252 +; toolsrc/codegen.pla: 0773: op=>opnext = new_op +; toolsrc/codegen.pla: 0774: op = op=>opnext +; toolsrc/codegen.pla: 0775: fin + !BYTE $54 ; CALL _C005 +_F463 !WORD _C005 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$05 ; SLW [5] +_B250 +; toolsrc/codegen.pla: 0776: when tkn + !BYTE $66,$02 ; LLW [2] + !BYTE $52 ; SEL + !WORD _B255-* +; toolsrc/codegen.pla: 0777: is NEG_TKN +_B256 +; toolsrc/codegen.pla: 0778: code = $90; break + !BYTE $2A,$90 ; CB 144 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0779: is COMP_TKN +_B257 +; toolsrc/codegen.pla: 0780: code = $92; break + !BYTE $2A,$92 ; CB 146 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0781: is LOGIC_NOT_TKN +_B258 +; toolsrc/codegen.pla: 0782: code = $80; break + !BYTE $2A,$80 ; CB 128 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0783: is INC_TKN +_B259 +; toolsrc/codegen.pla: 0784: code = $8C; break + !BYTE $2A,$8C ; CB 140 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0785: is DEC_TKN +_B260 +; toolsrc/codegen.pla: 0786: code = $8E; break + !BYTE $2A,$8E ; CB 142 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0787: is BPTR_TKN +_B261 +; toolsrc/codegen.pla: 0788: code = $60; break + !BYTE $2A,$60 ; CB 96 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0789: is WPTR_TKN +_B262 +; toolsrc/codegen.pla: 0790: code = $62; break + !BYTE $2A,$62 ; CB 98 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B254 + !WORD _B254-* +; toolsrc/codegen.pla: 0791: otherwise +_B255 + !BYTE $07 ; CASEBLOCK + !WORD $00A1 + !WORD _B258-* + !WORD $00AA + !WORD _B262-* + !WORD $00AD + !WORD _B256-* + !WORD $00C1 + !WORD _B259-* + !WORD $00C4 + !WORD _B260-* + !WORD $00DE + !WORD _B261-* + !WORD $00FE + !WORD _B257-* +; toolsrc/codegen.pla: 0792: exit_err(ERR_INVAL|ERR_SYNTAX) +; toolsrc/codegen.pla: 0793: wend + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F464 !WORD _C002 +_B254 +; toolsrc/codegen.pla: 0794: op->opcode = code +; toolsrc/codegen.pla: 0795: op->opgroup = STACK_GROUP +; toolsrc/codegen.pla: 0796: return seq + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$05 ; LLW [5] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$05 ; LLW [5] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/codegen.pla: 0797: end +; toolsrc/codegen.pla: 0798: def gen_bop(seq, tkn) + ; seq -> [0] + ; tkn -> [2] +_C067 ; gen_bop() +; toolsrc/codegen.pla: 0799: byte code + ; code -> [4] +; toolsrc/codegen.pla: 0800: word op + ; op -> [5] +; toolsrc/codegen.pla: 0801: +; toolsrc/codegen.pla: 0802: if not seq + !BYTE $58,$07,$02 ; ENTER 7,2 +; toolsrc/codegen.pla: 0803: seq = new_op +; toolsrc/codegen.pla: 0804: op = seq +; toolsrc/codegen.pla: 0805: else + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B263 + !WORD _B263-* + !BYTE $54 ; CALL _C005 +_F465 !WORD _C005 + !BYTE $6E,$00 ; DLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $50 ; BRNCH _B264 + !WORD _B264-* +_B263 +; toolsrc/codegen.pla: 0806: op = seq +; toolsrc/codegen.pla: 0807: while op=>opnext; op = op=>opnext; loop + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $50 ; BRNCH _B267 + !WORD _B267-* +_B265 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$05 ; SLW [5] +_B267 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B265 + !WORD _B265-* +_B266 +; toolsrc/codegen.pla: 0808: op=>opnext = new_op +; toolsrc/codegen.pla: 0809: op = op=>opnext +; toolsrc/codegen.pla: 0810: fin + !BYTE $54 ; CALL _C005 +_F466 !WORD _C005 + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$05 ; LLW [5] + !BYTE $38,$06 ; ADDI 6 + !BYTE $62 ; LW + !BYTE $76,$05 ; SLW [5] +_B264 +; toolsrc/codegen.pla: 0811: when tkn + !BYTE $66,$02 ; LLW [2] + !BYTE $52 ; SEL + !WORD _B269-* +; toolsrc/codegen.pla: 0812: is MUL_TKN +_B270 +; toolsrc/codegen.pla: 0813: code = $86; break + !BYTE $2A,$86 ; CB 134 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0814: is DIV_TKN +_B271 +; toolsrc/codegen.pla: 0815: code = $88; break + !BYTE $2A,$88 ; CB 136 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0816: is MOD_TKN +_B272 +; toolsrc/codegen.pla: 0817: code = $8A; break + !BYTE $2A,$8A ; CB 138 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0818: is ADD_TKN +_B273 +; toolsrc/codegen.pla: 0819: code = $82; break + !BYTE $2A,$82 ; CB 130 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0820: is SUB_TKN +_B274 +; toolsrc/codegen.pla: 0821: code = $84; break + !BYTE $2A,$84 ; CB 132 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0822: is SHL_TKN +_B275 +; toolsrc/codegen.pla: 0823: code = $9A; break + !BYTE $2A,$9A ; CB 154 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0824: is SHR_TKN +_B276 +; toolsrc/codegen.pla: 0825: code = $9C; break + !BYTE $2A,$9C ; CB 156 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0826: is AND_TKN +_B277 +; toolsrc/codegen.pla: 0827: code = $94; break + !BYTE $2A,$94 ; CB 148 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0828: is OR_TKN +_B278 +; toolsrc/codegen.pla: 0829: code = $96; break + !BYTE $2A,$96 ; CB 150 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0830: is EOR_TKN +_B279 +; toolsrc/codegen.pla: 0831: code = $98; break + !BYTE $2A,$98 ; CB 152 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0832: is EQ_TKN +_B280 +; toolsrc/codegen.pla: 0833: code = $40; break + !BYTE $2A,$40 ; CB 64 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0834: is NE_TKN +_B281 +; toolsrc/codegen.pla: 0835: code = $42; break + !BYTE $2A,$42 ; CB 66 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0836: is GE_TKN +_B282 +; toolsrc/codegen.pla: 0837: code = $48; break + !BYTE $2A,$48 ; CB 72 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0838: is LT_TKN +_B283 +; toolsrc/codegen.pla: 0839: code = $46; break + !BYTE $2A,$46 ; CB 70 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0840: is GT_TKN +_B284 +; toolsrc/codegen.pla: 0841: code = $44; break + !BYTE $2A,$44 ; CB 68 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0842: is LE_TKN +_B285 +; toolsrc/codegen.pla: 0843: code = $4A; break + !BYTE $2A,$4A ; CB 74 + !BYTE $74,$04 ; SLB [4] + !BYTE $50 ; BRNCH _B268 + !WORD _B268-* +; toolsrc/codegen.pla: 0844: otherwise +_B269 + !BYTE $10 ; CASEBLOCK + !WORD $00A5 + !WORD _B272-* + !WORD $00A6 + !WORD _B277-* + !WORD $00AA + !WORD _B270-* + !WORD $00AB + !WORD _B273-* + !WORD $00AD + !WORD _B274-* + !WORD $00AF + !WORD _B271-* + !WORD $00BC + !WORD _B283-* + !WORD $00BE + !WORD _B284-* + !WORD $00C2 + !WORD _B285-* + !WORD $00C5 + !WORD _B280-* + !WORD $00C8 + !WORD _B282-* + !WORD $00CC + !WORD _B275-* + !WORD $00D2 + !WORD _B276-* + !WORD $00D5 + !WORD _B281-* + !WORD $00DE + !WORD _B279-* + !WORD $00FC + !WORD _B278-* +; toolsrc/codegen.pla: 0845: exit_err(ERR_INVAL|ERR_SYNTAX) +; toolsrc/codegen.pla: 0846: wend + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F467 !WORD _C002 +_B268 +; toolsrc/codegen.pla: 0847: op->opcode = code +; toolsrc/codegen.pla: 0848: op->opgroup = STACK_GROUP +; toolsrc/codegen.pla: 0849: return seq + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$05 ; LLW [5] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $66,$05 ; LLW [5] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/codegen.pla: 0850: end +; toolsrc/codegen.pla: 0851: // +; toolsrc/codegen.pla: 0852: // A DCI string is one that has the high bit set for every character except the last. +; toolsrc/codegen.pla: 0853: // More efficient than C or Pascal strings. +; toolsrc/codegen.pla: 0854: // +; toolsrc/codegen.pla: 0855: def dcitos(dci, str) + ; dci -> [0] + ; str -> [2] +_C068 ; dcitos() +; toolsrc/codegen.pla: 0856: byte len, c + ; len -> [4] + ; c -> [5] +; toolsrc/codegen.pla: 0857: len = 0 + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0858: repeat + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] +_B287 +; toolsrc/codegen.pla: 0859: c = ^(dci + len) +; toolsrc/codegen.pla: 0860: len++ + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $74,$05 ; SLB [5] + !BYTE $64,$04 ; LLB [4] + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0861: ^(str + len) = c & $7F +; toolsrc/codegen.pla: 0862: until not (c & $80) + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B288 + !BYTE $64,$05 ; LLB [5] + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B287 + !WORD _B287-* +_B286 +; toolsrc/codegen.pla: 0863: ^str = len +; toolsrc/codegen.pla: 0864: return len + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $64,$04 ; LLB [4] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0865: end +; toolsrc/codegen.pla: 0866: def stodci(str, dci) + ; str -> [0] + ; dci -> [2] +_C069 ; stodci() +; toolsrc/codegen.pla: 0867: byte len, c + ; len -> [4] + ; c -> [5] +; toolsrc/codegen.pla: 0868: len = ^str + !BYTE $58,$06,$02 ; ENTER 6,2 +; toolsrc/codegen.pla: 0869: if not len; return 0; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6C,$04 ; DLB [4] + !BYTE $4E ; BRTRU _B289 + !WORD _B289-* + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +_B289 +_B290 +; toolsrc/codegen.pla: 0870: c = toupper(^(str + len)) & $7F +; toolsrc/codegen.pla: 0871: len-- + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F468 !WORD 0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $74,$05 ; SLB [5] + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0872: ^(dci + len) = c +; toolsrc/codegen.pla: 0873: while len + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B293 + !WORD _B293-* +_B291 +; toolsrc/codegen.pla: 0874: c = toupper(^(str + len)) | $80 +; toolsrc/codegen.pla: 0875: len-- + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F469 !WORD 0 + !BYTE $3E,$80 ; ORI 128 + !BYTE $74,$05 ; SLB [5] + !BYTE $64,$04 ; LLB [4] + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0876: ^(dci + len) = c +; toolsrc/codegen.pla: 0877: loop + !BYTE $74,$04 ; SLB [4] + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B293 + !BYTE $64,$04 ; LLB [4] + !BYTE $4E ; BRTRU _B291 + !WORD _B291-* +_B292 +; toolsrc/codegen.pla: 0878: return ^str + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/codegen.pla: 0879: end +; toolsrc/codegen.pla: 0880: // +; toolsrc/codegen.pla: 0881: // Write Extended REL header +; toolsrc/codegen.pla: 0882: // +; toolsrc/codegen.pla: 0883: def writeheader(refnum) + ; refnum -> [0] +_C070 ; writeheader() +; toolsrc/codegen.pla: 0884: word moddep, modfix + ; moddep -> [2] + ; modfix -> [4] +; toolsrc/codegen.pla: 0885: byte len, header[128] + ; len -> [6] + ; header -> [7] +; toolsrc/codegen.pla: 0886: +; toolsrc/codegen.pla: 0887: moddep = @header:12 // Beginning of module dependency list + !BYTE $58,$87,$01 ; ENTER 135,1 +; toolsrc/codegen.pla: 0888: while moddep_cnt + !BYTE $28,$13 ; LLA [19] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B296 + !WORD _B296-* +_B294 +; toolsrc/codegen.pla: 0889: moddep_cnt-- + !BYTE $68 ; LAB _D079+0 +_F470 !WORD _D079+0 + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0890: moddep = moddep + stodci(@moddep_tbl[moddep_cnt*16], moddep) +; toolsrc/codegen.pla: 0891: loop + !BYTE $78 ; SAB _D079+0 +_F471 !WORD _D079+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D078+0 +_F472 !WORD _D078+0 + !BYTE $68 ; LAB _D079+0 +_F473 !WORD _D079+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C069 +_F474 !WORD _C069 + !BYTE $82 ; ADD + !BYTE $76,$02 ; SLW [2] +_B296 + !BYTE $68 ; LAB _D079+0 +_F475 !WORD _D079+0 + !BYTE $4E ; BRTRU _B294 + !WORD _B294-* +_B295 +; toolsrc/codegen.pla: 0892: ^moddep = 0 // Terminate dependency list +; toolsrc/codegen.pla: 0893: len = moddep - 1 - @header +; toolsrc/codegen.pla: 0894: modfix = len + RELADDR - codebuff // Convert generated address into module adress +; toolsrc/codegen.pla: 0895: header:0 = len + codeptr - codebuff // sizeof header+data+bytecode +; toolsrc/codegen.pla: 0896: header:2 = $6502 // Magic # +; toolsrc/codegen.pla: 0897: header:4 = modsysflags // Module SYSFLAGS +; toolsrc/codegen.pla: 0898: header:6 = len + RELADDR + datasize // Byte code offset +; toolsrc/codegen.pla: 0899: header:8 = def_cnt // DEFinition count +; toolsrc/codegen.pla: 0900: header:10 = entrypoint + modfix // Init entrypoint +; toolsrc/codegen.pla: 0901: fileio:write(refnum, @header, len + 2) +; toolsrc/codegen.pla: 0902: return len + !BYTE $00 ; CN 0 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR + !BYTE $28,$07 ; LLA [7] + !BYTE $84 ; SUB + !BYTE $6C,$06 ; DLB [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $6A ; LAW _D074+0 +_F476 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $64,$06 ; LLB [6] + !BYTE $B6 ; ADDAW _D075+0 +_F477 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F478 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $76,$07 ; SLW [7] + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $76,$09 ; SLW [9] + !BYTE $6A ; LAW _D077+0 +_F479 !WORD _D077+0 + !BYTE $76,$0B ; SLW [11] + !BYTE $64,$06 ; LLB [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $B6 ; ADDAW _D069+0 +_F480 !WORD _D069+0 + !BYTE $76,$0D ; SLW [13] + !BYTE $68 ; LAB _D080+0 +_F481 !WORD _D080+0 + !BYTE $76,$0F ; SLW [15] + !BYTE $6A ; LAW _D076+0 +_F482 !WORD _D076+0 + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$11 ; SLW [17] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$07 ; LLA [7] + !BYTE $64,$06 ; LLB [6] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6A ; LAW _X031+20 +_F483 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $64,$06 ; LLB [6] + !BYTE $5A,$87 ; LEAVE 135 +; toolsrc/codegen.pla: 0903: end +; toolsrc/codegen.pla: 0904: // +; toolsrc/codegen.pla: 0905: // Write DeFinition Directory +; toolsrc/codegen.pla: 0906: // +; toolsrc/codegen.pla: 0907: def writeDFD(refnum, modfix)#0 + ; refnum -> [0] + ; modfix -> [2] +_C071 ; writeDFD() +; toolsrc/codegen.pla: 0908: word dfd, idptr, cnt + ; dfd -> [4] + ; idptr -> [6] + ; cnt -> [8] +; toolsrc/codegen.pla: 0909: byte defdir[128] + ; defdir -> [10] +; toolsrc/codegen.pla: 0910: +; toolsrc/codegen.pla: 0911: dfd = @defdir + !BYTE $58,$8A,$02 ; ENTER 138,2 +; toolsrc/codegen.pla: 0912: for cnt = 0 to dfd_cnt-1 + !BYTE $28,$0A ; LLA [10] + !BYTE $76,$04 ; SLW [4] + !BYTE $6A ; LAW _D049+0 +_F484 !WORD _D049+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B297 + !WORD _B297-* +_B298 + !BYTE $6E,$08 ; DLW [8] +; toolsrc/codegen.pla: 0913: dfd->0 = $02 +; toolsrc/codegen.pla: 0914: dfd=>1 = tag_addr=>[dfd_tag=>[cnt]] + modfix +; toolsrc/codegen.pla: 0915: dfd->3 = 0 +; toolsrc/codegen.pla: 0916: dfd = dfd + 4 +; toolsrc/codegen.pla: 0917: next + !BYTE $04 ; CN 2 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D052+0 +_F485 !WORD _D052+0 + !BYTE $6A ; LAW _D048+0 +_F486 !WORD _D048+0 + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$04 ; SLW [4] +_B299 + !BYTE $A4 ; INCBRLE _B298 + !WORD _B298-* +_B297 + !BYTE $76,$08 ; SLW [8] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0918: fileio:write(refnum, @defdir, dfd - @defdir) +; toolsrc/codegen.pla: 0919: end + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$0A ; LLA [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$0A ; LLA [10] + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X031+20 +_F487 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $5A,$8A ; LEAVE 138 +; toolsrc/codegen.pla: 0920: // +; toolsrc/codegen.pla: 0921: // Build External Symbol Directory on heap +; toolsrc/codegen.pla: 0922: // +; toolsrc/codegen.pla: 0923: def buildESD(modfix)#2 + ; modfix -> [0] +_C072 ; buildESD() +; toolsrc/codegen.pla: 0924: word modofst, esdtbl, esd, idptr, idcnt, len + ; modofst -> [2] + ; esdtbl -> [4] + ; esd -> [6] + ; idptr -> [8] + ; idcnt -> [10] + ; len -> [12] +; toolsrc/codegen.pla: 0925: byte symnum + ; symnum -> [14] +; toolsrc/codegen.pla: 0926: +; toolsrc/codegen.pla: 0927: symnum, esdtbl, idptr, idcnt = 0, heapalloc(heapavail - 256), idglobal_tbl, globals + !BYTE $58,$0F,$01 ; ENTER 15,1 +; toolsrc/codegen.pla: 0928: esd = esdtbl +; toolsrc/codegen.pla: 0929: while idcnt + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X016 +_F488 !WORD 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X014 +_F489 !WORD 0 + !BYTE $6A ; LAW _D054+0 +_F490 !WORD _D054+0 + !BYTE $6A ; LAW _D057+0 +_F491 !WORD _D057+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $76,$08 ; SLW [8] + !BYTE $76,$04 ; SLW [4] + !BYTE $74,$0E ; SLB [14] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B302 + !WORD _B302-* +_B300 +; toolsrc/codegen.pla: 0930: if idptr=>idtype & EXPORT_TYPE +; toolsrc/codegen.pla: 0931: esd = esd + stodci(@idptr->idname, esd) +; toolsrc/codegen.pla: 0932: esd->0 = $08 +; toolsrc/codegen.pla: 0933: esd=>1 = tag_addr=>[idptr=>idval] + modfix +; toolsrc/codegen.pla: 0934: esd = esd + 3 +; toolsrc/codegen.pla: 0935: elsif idptr=>idtype & EXTACCESS_TYPE + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B303 + !WORD _B303-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$07 ; ADDI 7 + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C069 +_F492 !WORD _C069 + !BYTE $82 ; ADD + !BYTE $76,$06 ; SLW [6] + !BYTE $10 ; CN 8 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D052+0 +_F493 !WORD _D052+0 + !BYTE $66,$08 ; LLW [8] + !BYTE $62 ; LW + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B304 + !WORD _B304-* +_B303 +; toolsrc/codegen.pla: 0936: esd = esd + stodci(@idptr->idname, esd) +; toolsrc/codegen.pla: 0937: esd->0 = $10 +; toolsrc/codegen.pla: 0938: esd=>1 = symnum +; toolsrc/codegen.pla: 0939: esd = esd + 3 +; toolsrc/codegen.pla: 0940: idptr->extnum = symnum +; toolsrc/codegen.pla: 0941: symnum++ + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B305 + !WORD _B305-* + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$07 ; ADDI 7 + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C069 +_F494 !WORD _C069 + !BYTE $82 ; ADD + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$10 ; CB 16 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$06 ; SLW [6] + !BYTE $64,$0E ; LLB [14] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $64,$0E ; LLB [14] + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0942: fin + !BYTE $74,$0E ; SLB [14] +_B305 +_B304 +; toolsrc/codegen.pla: 0943: idptr = idptr + idptr->idname + t_id +; toolsrc/codegen.pla: 0944: idcnt-- + !BYTE $66,$08 ; LLW [8] + !BYTE $34 ; DUP + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$0A ; LLW [10] + !BYTE $8E ; DECR +; toolsrc/codegen.pla: 0945: loop + !BYTE $76,$0A ; SLW [10] +_B302 + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B300 + !WORD _B300-* +_B301 +; toolsrc/codegen.pla: 0946: ^esd = 0 +; toolsrc/codegen.pla: 0947: len = esd - esdtbl + 1 +; toolsrc/codegen.pla: 0948: heaprelease(esdtbl + len) +; toolsrc/codegen.pla: 0949: return esdtbl, len + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $8C ; INCR + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $54 ; CALL _X015 +_F495 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0F ; LEAVE 15 +; toolsrc/codegen.pla: 0950: end +; toolsrc/codegen.pla: 0951: // +; toolsrc/codegen.pla: 0952: // Write ReLocation Directory +; toolsrc/codegen.pla: 0953: // +; toolsrc/codegen.pla: 0954: def writeRLD(refnum, modofst)#0 + ; refnum -> [0] + ; modofst -> [2] +_C073 ; writeRLD() +; toolsrc/codegen.pla: 0955: word rldtbl, rld, rldlen, fixups, updtptr, idptr, idcnt, tag + ; rldtbl -> [4] + ; rld -> [6] + ; rldlen -> [8] + ; fixups -> [10] + ; updtptr -> [12] + ; idptr -> [14] + ; idcnt -> [16] + ; tag -> [18] +; toolsrc/codegen.pla: 0956: byte type + ; type -> [20] +; toolsrc/codegen.pla: 0957: +; toolsrc/codegen.pla: 0958: rldtbl = heapalloc(heapavail - 256) + !BYTE $58,$15,$02 ; ENTER 21,2 +; toolsrc/codegen.pla: 0959: rld = rldtbl +; toolsrc/codegen.pla: 0960: rldlen = 0 +; toolsrc/codegen.pla: 0961: for fixups = fixup_cnt-1 downto 0 + !BYTE $54 ; CALL _X016 +_F496 !WORD 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X014 +_F497 !WORD 0 + !BYTE $6E,$04 ; DLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D046+0 +_F498 !WORD _D046+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B306 + !WORD _B306-* +_B307 + !BYTE $6E,$0A ; DLW [10] +; toolsrc/codegen.pla: 0962: tag = fixup_tag=>[fixups] +; toolsrc/codegen.pla: 0963: type = tag_type->[tag] +; toolsrc/codegen.pla: 0964: if not (type & RELATIVE_FIXUP) +; toolsrc/codegen.pla: 0965: if rldlen == 64 // Write out blocks of entries +; toolsrc/codegen.pla: 0966: fileio:write(refnum, rldtbl, rld - rldtbl) +; toolsrc/codegen.pla: 0967: rld = rldtbl +; toolsrc/codegen.pla: 0968: rldlen = 0 +; toolsrc/codegen.pla: 0969: fin + !BYTE $6A ; LAW _D050+0 +_F499 !WORD _D050+0 + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $62 ; LW + !BYTE $76,$12 ; SLW [18] + !BYTE $6A ; LAW _D053+0 +_F500 !WORD _D053+0 + !BYTE $B2,$12 ; ADDLW [18] + !BYTE $60 ; LB + !BYTE $6C,$14 ; DLB [20] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4E ; BRTRU _B309 + !WORD _B309-* + !BYTE $66,$08 ; LLW [8] + !BYTE $2A,$40 ; CB 64 + !BYTE $24 ; BRNE _B311 + !WORD _B311-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X031+20 +_F501 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] +_B311 +_B312 +; toolsrc/codegen.pla: 0970: if type & EXTERN_FIXUP +; toolsrc/codegen.pla: 0971: idptr = idglobal_tbl +; toolsrc/codegen.pla: 0972: for idcnt = globals-1 downto 0 + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B313 + !WORD _B313-* + !BYTE $6A ; LAW _D054+0 +_F502 !WORD _D054+0 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D057+0 +_F503 !WORD _D057+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B315 + !WORD _B315-* +_B316 + !BYTE $6E,$10 ; DLW [16] +; toolsrc/codegen.pla: 0973: if (idptr=>idtype & EXTERN_TYPE) and (idptr=>idval == tag) +; toolsrc/codegen.pla: 0974: rld->3 = idptr->extnum +; toolsrc/codegen.pla: 0975: break + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $AC ; BRAND _B318 + !WORD _B318-* + !BYTE $66,$0E ; LLW [14] + !BYTE $62 ; LW + !BYTE $66,$12 ; LLW [18] + !BYTE $40 ; ISEQ +_B318 + !BYTE $4C ; BRFLS _B319 + !WORD _B319-* + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B315 + !WORD _B315-* +; toolsrc/codegen.pla: 0976: fin +_B319 +_B320 +; toolsrc/codegen.pla: 0977: idptr = idptr + idptr->idname + t_id +; toolsrc/codegen.pla: 0978: next + !BYTE $66,$0E ; LLW [14] + !BYTE $34 ; DUP + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$0E ; SLW [14] +_B317 + !BYTE $A8 ; DECBRGE _B316 + !WORD _B316-* +_B315 + !BYTE $76,$10 ; SLW [16] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0979: else + !BYTE $50 ; BRNCH _B314 + !WORD _B314-* +_B313 +; toolsrc/codegen.pla: 0980: rld->3 = 0 +; toolsrc/codegen.pla: 0981: fin + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB +_B314 +; toolsrc/codegen.pla: 0982: rld->0 = $01 | (type & MASK_FIXUP) +; toolsrc/codegen.pla: 0983: rld=>1 = fixup_addr=>[fixups] + modofst +; toolsrc/codegen.pla: 0984: rld = rld + 4 +; toolsrc/codegen.pla: 0985: rldlen++ + !BYTE $02 ; CN 1 + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$90 ; ANDI 144 + !BYTE $96 ; OR + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D051+0 +_F504 !WORD _D051+0 + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $62 ; LW + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/codegen.pla: 0986: fin + !BYTE $76,$08 ; SLW [8] +_B309 +_B310 +; toolsrc/codegen.pla: 0987: next +_B308 + !BYTE $A8 ; DECBRGE _B307 + !WORD _B307-* +_B306 + !BYTE $76,$0A ; SLW [10] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 0988: ^rld = 0 +; toolsrc/codegen.pla: 0989: fileio:write(refnum, rldtbl, rld - rldtbl + 1) +; toolsrc/codegen.pla: 0990: heaprelease(rldtbl) +; toolsrc/codegen.pla: 0991: end + !BYTE $00 ; CN 0 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $8C ; INCR + !BYTE $6A ; LAW _X031+20 +_F505 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X015 +_F506 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$15 ; LEAVE 21 +; toolsrc/codegen.pla: 0992: // +; toolsrc/codegen.pla: 0993: // Write Extended REL file +; toolsrc/codegen.pla: 0994: // +; toolsrc/codegen.pla: 0995: def writemodule(refnum)#0 + ; refnum -> [0] +_C074 ; writemodule() +; toolsrc/codegen.pla: 0996: word hdrlen, esd, esdlen, modfix, modadj, modofst, fixups, updtptr + ; hdrlen -> [2] + ; esd -> [4] + ; esdlen -> [6] + ; modfix -> [8] + ; modadj -> [10] + ; modofst -> [12] + ; fixups -> [14] + ; updtptr -> [16] +; toolsrc/codegen.pla: 0997: +; toolsrc/codegen.pla: 0998: // +; toolsrc/codegen.pla: 0999: // Write module header +; toolsrc/codegen.pla: 1000: // +; toolsrc/codegen.pla: 1001: hdrlen = writeheader(refnum) + !BYTE $58,$12,$01 ; ENTER 18,1 +; toolsrc/codegen.pla: 1002: modfix = hdrlen + RELADDR +; toolsrc/codegen.pla: 1003: modofst = hdrlen - codebuff +; toolsrc/codegen.pla: 1004: // +; toolsrc/codegen.pla: 1005: // Adjust internal fixups for header size +; toolsrc/codegen.pla: 1006: // +; toolsrc/codegen.pla: 1007: for fixups = fixup_cnt-1 downto 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C070 +_F507 !WORD _C070 + !BYTE $6E,$02 ; DLW [2] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D074+0 +_F508 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $76,$0C ; SLW [12] + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D046+0 +_F509 !WORD _D046+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B321 + !WORD _B321-* +_B322 + !BYTE $6E,$0E ; DLW [14] +; toolsrc/codegen.pla: 1008: if not (tag_type->[fixup_tag=>[fixups]] & (EXTERN_FIXUP|RELATIVE_FIXUP)) +; toolsrc/codegen.pla: 1009: updtptr = fixup_addr=>[fixups] +; toolsrc/codegen.pla: 1010: *updtptr = *updtptr + modfix +; toolsrc/codegen.pla: 1011: fin + !BYTE $6A ; LAW _D053+0 +_F510 !WORD _D053+0 + !BYTE $6A ; LAW _D050+0 +_F511 !WORD _D050+0 + !BYTE $BA,$0E ; IDXLW [14] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $3C,$12 ; ANDI 18 + !BYTE $4E ; BRTRU _B324 + !WORD _B324-* + !BYTE $6A ; LAW _D051+0 +_F512 !WORD _D051+0 + !BYTE $BA,$0E ; IDXLW [14] + !BYTE $62 ; LW + !BYTE $6E,$10 ; DLW [16] + !BYTE $62 ; LW + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$10 ; LLW [16] + !BYTE $72 ; SW +_B324 +_B325 +; toolsrc/codegen.pla: 1012: next +_B323 + !BYTE $A8 ; DECBRGE _B322 + !WORD _B322-* +_B321 + !BYTE $76,$0E ; SLW [14] + !BYTE $30 ; DROP +; toolsrc/codegen.pla: 1013: // +; toolsrc/codegen.pla: 1014: // Write data/code buffer +; toolsrc/codegen.pla: 1015: // +; toolsrc/codegen.pla: 1016: fileio:write(refnum, codebuff, codeptr - codebuff) +; toolsrc/codegen.pla: 1017: // +; toolsrc/codegen.pla: 1018: // Write bytecode definition directory +; toolsrc/codegen.pla: 1019: // +; toolsrc/codegen.pla: 1020: writeDFD(refnum, modfix) +; toolsrc/codegen.pla: 1021: // +; toolsrc/codegen.pla: 1022: // Build EXERN/ENTRY directory +; toolsrc/codegen.pla: 1023: // +; toolsrc/codegen.pla: 1024: esd, esdlen = buildESD(modfix) +; toolsrc/codegen.pla: 1025: // +; toolsrc/codegen.pla: 1026: // Write relocation directory +; toolsrc/codegen.pla: 1027: // +; toolsrc/codegen.pla: 1028: writeRLD(refnum, modofst) +; toolsrc/codegen.pla: 1029: // +; toolsrc/codegen.pla: 1030: // Write EXTERN/EBTRY directory +; toolsrc/codegen.pla: 1031: // +; toolsrc/codegen.pla: 1032: fileio:write(refnum, esd, esdlen) +; toolsrc/codegen.pla: 1033: heaprelease(esd) +; toolsrc/codegen.pla: 1034: end + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D074+0 +_F513 !WORD _D074+0 + !BYTE $6A ; LAW _D075+0 +_F514 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F515 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $6A ; LAW _X031+20 +_F516 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C071 +_F517 !WORD _C071 + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C072 +_F518 !WORD _C072 + !BYTE $76,$06 ; SLW [6] + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C073 +_F519 !WORD _C073 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X031+20 +_F520 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X015 +_F521 !WORD 0 + !BYTE $30 ; DROP + !BYTE $5A,$12 ; LEAVE 18 +; toolsrc/plasm.pla: 0505: +; toolsrc/plasm.pla: 0506: include "toolsrc/lex.pla" +; toolsrc/lex.pla: 0001: // +; toolsrc/lex.pla: 0002: // Lexical anaylzer +; toolsrc/lex.pla: 0003: // +; toolsrc/lex.pla: 0004: //def isalpha(c) +; toolsrc/lex.pla: 0005: // if c >= 'A' and c <= 'Z' +; toolsrc/lex.pla: 0006: // return TRUE +; toolsrc/lex.pla: 0007: // //elsif c >= 'a' and c <= 'z' +; toolsrc/lex.pla: 0008: // // return TRUE +; toolsrc/lex.pla: 0009: // elsif c == '_' +; toolsrc/lex.pla: 0010: // return TRUE +; toolsrc/lex.pla: 0011: // fin +; toolsrc/lex.pla: 0012: // return FALSE +; toolsrc/lex.pla: 0013: //end +; toolsrc/lex.pla: 0014: //def isnum(c) +; toolsrc/lex.pla: 0015: // return c >= '0' and c <= '9' +; toolsrc/lex.pla: 0016: //end +; toolsrc/lex.pla: 0017: //def isalphanum(c) +; toolsrc/lex.pla: 0018: // if c >= 'A' and c <= 'Z' +; toolsrc/lex.pla: 0019: // return TRUE +; toolsrc/lex.pla: 0020: // //elsif c >= 'a' and c <= 'z' +; toolsrc/lex.pla: 0021: // // return TRUE +; toolsrc/lex.pla: 0022: // elsif c >= '0' and c <= '9' +; toolsrc/lex.pla: 0023: // return TRUE +; toolsrc/lex.pla: 0024: // elsif c == '_' +; toolsrc/lex.pla: 0025: // return TRUE +; toolsrc/lex.pla: 0026: // fin +; toolsrc/lex.pla: 0027: // return FALSE +; toolsrc/lex.pla: 0028: //end +; toolsrc/lex.pla: 0029: //def keymatch +; toolsrc/lex.pla: 0030: // byte i, keypos +; toolsrc/lex.pla: 0031: // word chrptr +; toolsrc/lex.pla: 0032: // +; toolsrc/lex.pla: 0033: // keypos = 0 +; toolsrc/lex.pla: 0034: // while keywrds[keypos] < tknlen +; toolsrc/lex.pla: 0035: // keypos = keypos + keywrds[keypos] + 2 +; toolsrc/lex.pla: 0036: // loop +; toolsrc/lex.pla: 0037: // chrptr = tknptr - 1 +; toolsrc/lex.pla: 0038: // while keywrds[keypos] == tknlen +; toolsrc/lex.pla: 0039: // for i = 1 to tknlen +; toolsrc/lex.pla: 0040: // if ^(chrptr + i) <> keywrds[keypos + i]; break; fin +; toolsrc/lex.pla: 0041: // next +; toolsrc/lex.pla: 0042: // if i > tknlen +; toolsrc/lex.pla: 0043: // return keywrds[keypos + keywrds[keypos] + 1] +; toolsrc/lex.pla: 0044: // fin +; toolsrc/lex.pla: 0045: // keypos = keypos + keywrds[keypos] + 2 +; toolsrc/lex.pla: 0046: // loop +; toolsrc/lex.pla: 0047: // return ID_TKN +; toolsrc/lex.pla: 0048: //end +; toolsrc/lex.pla: 0049: def scannum +_C075 ; scannum() +; toolsrc/lex.pla: 0050: word num + ; num -> [0] +; toolsrc/lex.pla: 0051: num = 0 + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/lex.pla: 0052: +; toolsrc/lex.pla: 0053: if ^scanptr == '$' +; toolsrc/lex.pla: 0054: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D097+0 +_F522 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$24 ; CB 36 + !BYTE $24 ; BRNE _B326 + !WORD _B326-* +_B329 +; toolsrc/lex.pla: 0055: scanptr++ + !BYTE $6A ; LAW _D097+0 +_F523 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0056: if ^scanptr >= '0' and ^scanptr <= '9' +; toolsrc/lex.pla: 0057: num = (num << 4) + ^scanptr - '0' +; toolsrc/lex.pla: 0058: elsif ^scanptr >= 'A' and ^scanptr <= 'F' + !BYTE $7A ; SAW _D097+0 +_F524 !WORD _D097+0 + !BYTE $6A ; LAW _D097+0 +_F525 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B331 + !WORD _B331-* + !BYTE $6A ; LAW _D097+0 +_F526 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B331 + !BYTE $4C ; BRFLS _B332 + !WORD _B332-* + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F527 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B333 + !WORD _B333-* +_B332 +; toolsrc/lex.pla: 0059: num = (num << 4) + ^scanptr - '7'// 'A'-10 +; toolsrc/lex.pla: 0060: elsif ^scanptr >= 'a' and ^scanptr <= 'f' + !BYTE $6A ; LAW _D097+0 +_F528 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$41 ; CB 65 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B334 + !WORD _B334-* + !BYTE $6A ; LAW _D097+0 +_F529 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$46 ; CB 70 + !BYTE $4A ; ISLE +_B334 + !BYTE $4C ; BRFLS _B335 + !WORD _B335-* + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F530 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$37 ; SUBI 55 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B333 + !WORD _B333-* +_B335 +; toolsrc/lex.pla: 0061: num = (num << 4) + ^scanptr - 'W'// 'a'-10 +; toolsrc/lex.pla: 0062: else + !BYTE $6A ; LAW _D097+0 +_F531 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$61 ; CB 97 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B336 + !WORD _B336-* + !BYTE $6A ; LAW _D097+0 +_F532 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$66 ; CB 102 + !BYTE $4A ; ISLE +_B336 + !BYTE $4C ; BRFLS _B337 + !WORD _B337-* + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F533 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$57 ; SUBI 87 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B333 + !WORD _B333-* +_B337 +; toolsrc/lex.pla: 0063: break + !BYTE $50 ; BRNCH _B328 + !WORD _B328-* +; toolsrc/lex.pla: 0064: fin +_B333 +; toolsrc/lex.pla: 0065: until not ^scanptr +_B330 + !BYTE $6A ; LAW _D097+0 +_F534 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B329 + !WORD _B329-* +_B328 +; toolsrc/lex.pla: 0066: elsif ^scanptr < '0' or ^scanptr > '9' + !BYTE $50 ; BRNCH _B327 + !WORD _B327-* +_B326 +; toolsrc/lex.pla: 0067: repeat + !BYTE $6A ; LAW _D097+0 +_F535 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B338 + !WORD _B338-* + !BYTE $6A ; LAW _D097+0 +_F536 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT +_B338 + !BYTE $4C ; BRFLS _B339 + !WORD _B339-* +_B341 +; toolsrc/lex.pla: 0068: num = num * 10 + ^scanptr - '0' +; toolsrc/lex.pla: 0069: scanptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $6A ; LAW _D097+0 +_F537 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D097+0 +_F538 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0070: until ^scanptr < '0' or ^scanptr > '9' + !BYTE $7A ; SAW _D097+0 +_F539 !WORD _D097+0 +_B342 + !BYTE $6A ; LAW _D097+0 +_F540 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B343 + !WORD _B343-* + !BYTE $6A ; LAW _D097+0 +_F541 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT +_B343 + !BYTE $4C ; BRFLS _B341 + !WORD _B341-* +_B340 +; toolsrc/lex.pla: 0071: else + !BYTE $50 ; BRNCH _B327 + !WORD _B327-* +_B339 +; toolsrc/lex.pla: 0072: num = ^scanptr +; toolsrc/lex.pla: 0073: fin + !BYTE $6A ; LAW _D097+0 +_F542 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $76,$00 ; SLW [0] +_B327 +; toolsrc/lex.pla: 0074: return num + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/lex.pla: 0075: end +; toolsrc/lex.pla: 0076: +; toolsrc/lex.pla: 0077: def scan +_C076 ; scan() +; toolsrc/lex.pla: 0078: // +; toolsrc/lex.pla: 0079: // Skip whitespace +; toolsrc/lex.pla: 0080: // +; toolsrc/lex.pla: 0081: while ^scanptr == ' ' + !BYTE $50 ; BRNCH _B346 + !WORD _B346-* +_B344 +; toolsrc/lex.pla: 0082: scanptr++ + !BYTE $6A ; LAW _D097+0 +_F543 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0083: loop + !BYTE $7A ; SAW _D097+0 +_F544 !WORD _D097+0 +_B346 + !BYTE $6A ; LAW _D097+0 +_F545 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B344 + !WORD _B344-* +_B345 +; toolsrc/lex.pla: 0084: tknptr = scanptr +; toolsrc/lex.pla: 0085: scanchr, scanptr, token = scanid(scanptr, @keywrds) //scanchr = toupper(^scanptr) +; toolsrc/lex.pla: 0086: // +; toolsrc/lex.pla: 0087: // Scan for token based on first character +; toolsrc/lex.pla: 0088: // +; toolsrc/lex.pla: 0089: if token //if isalpha(scanchr) +; toolsrc/lex.pla: 0090: // +; toolsrc/lex.pla: 0091: // ID, either variable name or reserved word +; toolsrc/lex.pla: 0092: // +; toolsrc/lex.pla: 0093: //repeat +; toolsrc/lex.pla: 0094: // ^scanptr = scanchr +; toolsrc/lex.pla: 0095: // scanptr++ +; toolsrc/lex.pla: 0096: // scanchr = toupper(^scanptr) +; toolsrc/lex.pla: 0097: //until not isalphanum(scanchr) +; toolsrc/lex.pla: 0098: tknlen = scanptr - tknptr +; toolsrc/lex.pla: 0099: elsif scanchr >= '0' and scanchr <= '9' // isnum() + !BYTE $6A ; LAW _D097+0 +_F546 !WORD _D097+0 + !BYTE $7A ; SAW _D101+0 +_F547 !WORD _D101+0 + !BYTE $6A ; LAW _D097+0 +_F548 !WORD _D097+0 + !BYTE $26 ; LA _D036+0 +_F549 !WORD _D036+0 + !BYTE $54 ; CALL _A000 +_F550 !WORD _A000 + !BYTE $78 ; SAB _D098+0 +_F551 !WORD _D098+0 + !BYTE $7A ; SAW _D097+0 +_F552 !WORD _D097+0 + !BYTE $78 ; SAB _D099+0 +_F553 !WORD _D099+0 + !BYTE $68 ; LAB _D098+0 +_F554 !WORD _D098+0 + !BYTE $4C ; BRFLS _B347 + !WORD _B347-* + !BYTE $6A ; LAW _D097+0 +_F555 !WORD _D097+0 + !BYTE $6A ; LAW _D101+0 +_F556 !WORD _D101+0 + !BYTE $84 ; SUB + !BYTE $78 ; SAB _D100+0 +_F557 !WORD _D100+0 + !BYTE $50 ; BRNCH _B348 + !WORD _B348-* +_B347 +; toolsrc/lex.pla: 0100: // +; toolsrc/lex.pla: 0101: // Decimal constant +; toolsrc/lex.pla: 0102: // +; toolsrc/lex.pla: 0103: token = INT_TKN +; toolsrc/lex.pla: 0104: constval = 0 +; toolsrc/lex.pla: 0105: repeat + !BYTE $68 ; LAB _D099+0 +_F558 !WORD _D099+0 + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B349 + !WORD _B349-* + !BYTE $68 ; LAB _D099+0 +_F559 !WORD _D099+0 + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B349 + !BYTE $4C ; BRFLS _B350 + !WORD _B350-* + !BYTE $2A,$C9 ; CB 201 + !BYTE $78 ; SAB _D098+0 +_F560 !WORD _D098+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D103+0 +_F561 !WORD _D103+0 +_B352 +; toolsrc/lex.pla: 0106: constval = constval * 10 + ^scanptr - '0' +; toolsrc/lex.pla: 0107: scanptr++ + !BYTE $6A ; LAW _D103+0 +_F562 !WORD _D103+0 + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $6A ; LAW _D097+0 +_F563 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $7A ; SAW _D103+0 +_F564 !WORD _D103+0 + !BYTE $6A ; LAW _D097+0 +_F565 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0108: until ^scanptr < '0' or ^scanptr > '9' + !BYTE $7A ; SAW _D097+0 +_F566 !WORD _D097+0 +_B353 + !BYTE $6A ; LAW _D097+0 +_F567 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B354 + !WORD _B354-* + !BYTE $6A ; LAW _D097+0 +_F568 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT +_B354 + !BYTE $4C ; BRFLS _B352 + !WORD _B352-* +_B351 +; toolsrc/lex.pla: 0109: else + !BYTE $50 ; BRNCH _B348 + !WORD _B348-* +_B350 +; toolsrc/lex.pla: 0110: // +; toolsrc/lex.pla: 0111: // Potential multiple character tokens +; toolsrc/lex.pla: 0112: // +; toolsrc/lex.pla: 0113: when scanchr + !BYTE $68 ; LAB _D099+0 +_F569 !WORD _D099+0 + !BYTE $52 ; SEL + !WORD _B356-* +; toolsrc/lex.pla: 0114: is '$' +_B357 +; toolsrc/lex.pla: 0115: // +; toolsrc/lex.pla: 0116: // Hexadecimal constant +; toolsrc/lex.pla: 0117: // +; toolsrc/lex.pla: 0118: token = INT_TKN +; toolsrc/lex.pla: 0119: constval = 0 +; toolsrc/lex.pla: 0120: repeat + !BYTE $2A,$C9 ; CB 201 + !BYTE $78 ; SAB _D098+0 +_F570 !WORD _D098+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D103+0 +_F571 !WORD _D103+0 +_B359 +; toolsrc/lex.pla: 0121: scanptr++ + !BYTE $6A ; LAW _D097+0 +_F572 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0122: if ^scanptr >= '0' and ^scanptr <= '9' +; toolsrc/lex.pla: 0123: constval = (constval << 4) + ^scanptr - '0' +; toolsrc/lex.pla: 0124: elsif ^scanptr >= 'A' and ^scanptr <= 'F' + !BYTE $7A ; SAW _D097+0 +_F573 !WORD _D097+0 + !BYTE $6A ; LAW _D097+0 +_F574 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B361 + !WORD _B361-* + !BYTE $6A ; LAW _D097+0 +_F575 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B361 + !BYTE $4C ; BRFLS _B362 + !WORD _B362-* + !BYTE $6A ; LAW _D103+0 +_F576 !WORD _D103+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F577 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $7A ; SAW _D103+0 +_F578 !WORD _D103+0 + !BYTE $50 ; BRNCH _B363 + !WORD _B363-* +_B362 +; toolsrc/lex.pla: 0125: constval = (constval << 4) + ^scanptr - '7'// 'A'-10 +; toolsrc/lex.pla: 0126: elsif ^scanptr >= 'a' and ^scanptr <= 'f' + !BYTE $6A ; LAW _D097+0 +_F579 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$41 ; CB 65 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B364 + !WORD _B364-* + !BYTE $6A ; LAW _D097+0 +_F580 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$46 ; CB 70 + !BYTE $4A ; ISLE +_B364 + !BYTE $4C ; BRFLS _B365 + !WORD _B365-* + !BYTE $6A ; LAW _D103+0 +_F581 !WORD _D103+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F582 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$37 ; SUBI 55 + !BYTE $7A ; SAW _D103+0 +_F583 !WORD _D103+0 + !BYTE $50 ; BRNCH _B363 + !WORD _B363-* +_B365 +; toolsrc/lex.pla: 0127: constval = (constval << 4) + ^scanptr - 'W'// 'a'-10 +; toolsrc/lex.pla: 0128: else + !BYTE $6A ; LAW _D097+0 +_F584 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$61 ; CB 97 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B366 + !WORD _B366-* + !BYTE $6A ; LAW _D097+0 +_F585 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$66 ; CB 102 + !BYTE $4A ; ISLE +_B366 + !BYTE $4C ; BRFLS _B367 + !WORD _B367-* + !BYTE $6A ; LAW _D103+0 +_F586 !WORD _D103+0 + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $6A ; LAW _D097+0 +_F587 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$57 ; SUBI 87 + !BYTE $7A ; SAW _D103+0 +_F588 !WORD _D103+0 + !BYTE $50 ; BRNCH _B363 + !WORD _B363-* +_B367 +; toolsrc/lex.pla: 0129: break + !BYTE $50 ; BRNCH _B358 + !WORD _B358-* +; toolsrc/lex.pla: 0130: fin +_B363 +; toolsrc/lex.pla: 0131: until not ^scanptr +_B360 + !BYTE $6A ; LAW _D097+0 +_F589 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B359 + !WORD _B359-* +_B358 +; toolsrc/lex.pla: 0132: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0133: is '\'' +_B368 +; toolsrc/lex.pla: 0134: // +; toolsrc/lex.pla: 0135: // Character constant +; toolsrc/lex.pla: 0136: // +; toolsrc/lex.pla: 0137: token = CHR_TKN +; toolsrc/lex.pla: 0138: scanptr++ + !BYTE $2A,$C3 ; CB 195 + !BYTE $78 ; SAB _D098+0 +_F590 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F591 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0139: if ^scanptr <> '\\' +; toolsrc/lex.pla: 0140: constval = ^scanptr +; toolsrc/lex.pla: 0141: else + !BYTE $7A ; SAW _D097+0 +_F592 !WORD _D097+0 + !BYTE $6A ; LAW _D097+0 +_F593 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$5C ; CB 92 + !BYTE $22 ; BREQ _B369 + !WORD _B369-* + !BYTE $6A ; LAW _D097+0 +_F594 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $7A ; SAW _D103+0 +_F595 !WORD _D103+0 + !BYTE $50 ; BRNCH _B370 + !WORD _B370-* +_B369 +; toolsrc/lex.pla: 0142: scanptr++ + !BYTE $6A ; LAW _D097+0 +_F596 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0143: when ^scanptr + !BYTE $7A ; SAW _D097+0 +_F597 !WORD _D097+0 + !BYTE $6A ; LAW _D097+0 +_F598 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B372-* +; toolsrc/lex.pla: 0144: is 'n' +_B373 +; toolsrc/lex.pla: 0145: is 'N' +_B374 +; toolsrc/lex.pla: 0146: constval = $0D; break + !BYTE $1A ; CN 13 + !BYTE $7A ; SAW _D103+0 +_F599 !WORD _D103+0 + !BYTE $50 ; BRNCH _B371 + !WORD _B371-* +; toolsrc/lex.pla: 0147: is 'r' +_B375 +; toolsrc/lex.pla: 0148: is 'R' +_B376 +; toolsrc/lex.pla: 0149: constval = $0A; break + !BYTE $14 ; CN 10 + !BYTE $7A ; SAW _D103+0 +_F600 !WORD _D103+0 + !BYTE $50 ; BRNCH _B371 + !WORD _B371-* +; toolsrc/lex.pla: 0150: is 't' +_B377 +; toolsrc/lex.pla: 0151: is 'T' +_B378 +; toolsrc/lex.pla: 0152: constval = $09; break + !BYTE $12 ; CN 9 + !BYTE $7A ; SAW _D103+0 +_F601 !WORD _D103+0 + !BYTE $50 ; BRNCH _B371 + !WORD _B371-* +; toolsrc/lex.pla: 0153: is '\\' +_B379 +; toolsrc/lex.pla: 0154: constval = '\\'; break + !BYTE $2A,$5C ; CB 92 + !BYTE $7A ; SAW _D103+0 +_F602 !WORD _D103+0 + !BYTE $50 ; BRNCH _B371 + !WORD _B371-* +; toolsrc/lex.pla: 0155: otherwise +_B372 + !BYTE $07 ; CASEBLOCK + !WORD $004E + !WORD _B374-* + !WORD $0052 + !WORD _B376-* + !WORD $0054 + !WORD _B378-* + !WORD $005C + !WORD _B379-* + !WORD $006E + !WORD _B373-* + !WORD $0072 + !WORD _B375-* + !WORD $0074 + !WORD _B377-* +; toolsrc/lex.pla: 0156: constval = scannum +; toolsrc/lex.pla: 0157: scanptr-- + !BYTE $54 ; CALL _C075 +_F603 !WORD _C075 + !BYTE $7A ; SAW _D103+0 +_F604 !WORD _D103+0 + !BYTE $6A ; LAW _D097+0 +_F605 !WORD _D097+0 + !BYTE $8E ; DECR +; toolsrc/lex.pla: 0158: wend + !BYTE $7A ; SAW _D097+0 +_F606 !WORD _D097+0 +_B371 +; toolsrc/lex.pla: 0159: fin +_B370 +; toolsrc/lex.pla: 0160: if ^(scanptr + 1) <> '\''; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $6A ; LAW _D097+0 +_F607 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$27 ; CB 39 + !BYTE $22 ; BREQ _B380 + !WORD _B380-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F608 !WORD _C002 +_B380 +_B381 +; toolsrc/lex.pla: 0161: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0162: break + !BYTE $6A ; LAW _D097+0 +_F609 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F610 !WORD _D097+0 + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0163: is '"' +_B382 +; toolsrc/lex.pla: 0164: // +; toolsrc/lex.pla: 0165: // String constant +; toolsrc/lex.pla: 0166: // +; toolsrc/lex.pla: 0167: token = STR_TKN +; toolsrc/lex.pla: 0168: constval = strconstptr +; toolsrc/lex.pla: 0169: ^constval = 0 +; toolsrc/lex.pla: 0170: strconstptr++ + !BYTE $2A,$D3 ; CB 211 + !BYTE $78 ; SAB _D098+0 +_F611 !WORD _D098+0 + !BYTE $6A ; LAW _D106+0 +_F612 !WORD _D106+0 + !BYTE $7A ; SAW _D103+0 +_F613 !WORD _D103+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D103+0 +_F614 !WORD _D103+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D106+0 +_F615 !WORD _D106+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0171: scanptr++ + !BYTE $7A ; SAW _D106+0 +_F616 !WORD _D106+0 + !BYTE $6A ; LAW _D097+0 +_F617 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0172: while ^scanptr and ^scanptr <> '"' + !BYTE $7A ; SAW _D097+0 +_F618 !WORD _D097+0 + !BYTE $50 ; BRNCH _B385 + !WORD _B385-* +_B383 +; toolsrc/lex.pla: 0173: if ^scanptr <> '\\' +; toolsrc/lex.pla: 0174: ^strconstptr = ^scanptr +; toolsrc/lex.pla: 0175: else + !BYTE $6A ; LAW _D097+0 +_F619 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$5C ; CB 92 + !BYTE $22 ; BREQ _B387 + !WORD _B387-* + !BYTE $6A ; LAW _D097+0 +_F620 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D106+0 +_F621 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B388 + !WORD _B388-* +_B387 +; toolsrc/lex.pla: 0176: scanptr++ + !BYTE $6A ; LAW _D097+0 +_F622 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0177: when ^scanptr + !BYTE $7A ; SAW _D097+0 +_F623 !WORD _D097+0 + !BYTE $6A ; LAW _D097+0 +_F624 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B390-* +; toolsrc/lex.pla: 0178: is 'n' +_B391 +; toolsrc/lex.pla: 0179: is 'N' +_B392 +; toolsrc/lex.pla: 0180: ^strconstptr = $0D; break + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _D106+0 +_F625 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B389 + !WORD _B389-* +; toolsrc/lex.pla: 0181: is 'r' +_B393 +; toolsrc/lex.pla: 0182: is 'R' +_B394 +; toolsrc/lex.pla: 0183: ^strconstptr = $0A; break + !BYTE $14 ; CN 10 + !BYTE $6A ; LAW _D106+0 +_F626 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B389 + !WORD _B389-* +; toolsrc/lex.pla: 0184: is 't' +_B395 +; toolsrc/lex.pla: 0185: is 'T' +_B396 +; toolsrc/lex.pla: 0186: ^strconstptr = $09; break + !BYTE $12 ; CN 9 + !BYTE $6A ; LAW _D106+0 +_F627 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B389 + !WORD _B389-* +; toolsrc/lex.pla: 0187: is '\\' +_B397 +; toolsrc/lex.pla: 0188: ^strconstptr = '\\'; break + !BYTE $2A,$5C ; CB 92 + !BYTE $6A ; LAW _D106+0 +_F628 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B389 + !WORD _B389-* +; toolsrc/lex.pla: 0189: otherwise +_B390 + !BYTE $07 ; CASEBLOCK + !WORD $004E + !WORD _B392-* + !WORD $0052 + !WORD _B394-* + !WORD $0054 + !WORD _B396-* + !WORD $005C + !WORD _B397-* + !WORD $006E + !WORD _B391-* + !WORD $0072 + !WORD _B393-* + !WORD $0074 + !WORD _B395-* +; toolsrc/lex.pla: 0190: ^strconstptr = scannum +; toolsrc/lex.pla: 0191: scanptr-- + !BYTE $54 ; CALL _C075 +_F629 !WORD _C075 + !BYTE $6A ; LAW _D106+0 +_F630 !WORD _D106+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D097+0 +_F631 !WORD _D097+0 + !BYTE $8E ; DECR +; toolsrc/lex.pla: 0192: wend + !BYTE $7A ; SAW _D097+0 +_F632 !WORD _D097+0 +_B389 +; toolsrc/lex.pla: 0193: fin +_B388 +; toolsrc/lex.pla: 0194: strconstptr++ + !BYTE $6A ; LAW _D106+0 +_F633 !WORD _D106+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0195: ^constval++ + !BYTE $7A ; SAW _D106+0 +_F634 !WORD _D106+0 + !BYTE $6A ; LAW _D103+0 +_F635 !WORD _D103+0 + !BYTE $60 ; LB + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0196: scanptr++ + !BYTE $6A ; LAW _D103+0 +_F636 !WORD _D103+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D097+0 +_F637 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0197: loop + !BYTE $7A ; SAW _D097+0 +_F638 !WORD _D097+0 +_B385 + !BYTE $6A ; LAW _D097+0 +_F639 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B386 + !WORD _B386-* + !BYTE $6A ; LAW _D097+0 +_F640 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$22 ; CB 34 + !BYTE $42 ; ISNE +_B386 + !BYTE $4E ; BRTRU _B383 + !WORD _B383-* +_B384 +; toolsrc/lex.pla: 0198: if not ^scanptr; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $6A ; LAW _D097+0 +_F641 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B398 + !WORD _B398-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F642 !WORD _C002 +_B398 +_B399 +; toolsrc/lex.pla: 0199: strconstptr++ + !BYTE $6A ; LAW _D106+0 +_F643 !WORD _D106+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0200: scanptr++ + !BYTE $7A ; SAW _D106+0 +_F644 !WORD _D106+0 + !BYTE $6A ; LAW _D097+0 +_F645 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0201: break + !BYTE $7A ; SAW _D097+0 +_F646 !WORD _D097+0 + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0202: is '/' +_B400 +; toolsrc/lex.pla: 0203: if ^(scanptr + 1) == '/' +; toolsrc/lex.pla: 0204: token = EOL_TKN +; toolsrc/lex.pla: 0205: ^scanptr = $00 +; toolsrc/lex.pla: 0206: else + !BYTE $6A ; LAW _D097+0 +_F647 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B401 + !WORD _B401-* + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D098+0 +_F648 !WORD _D098+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D097+0 +_F649 !WORD _D097+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B402 + !WORD _B402-* +_B401 +; toolsrc/lex.pla: 0207: token = DIV_TKN +; toolsrc/lex.pla: 0208: scanptr++ + !BYTE $2A,$AF ; CB 175 + !BYTE $78 ; SAB _D098+0 +_F650 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F651 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0209: fin + !BYTE $7A ; SAW _D097+0 +_F652 !WORD _D097+0 +_B402 +; toolsrc/lex.pla: 0210: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0211: is '=' +_B403 +; toolsrc/lex.pla: 0212: if ^(scanptr + 1) == '=' +; toolsrc/lex.pla: 0213: token = EQ_TKN +; toolsrc/lex.pla: 0214: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0215: elsif ^(scanptr + 1) == '>' + !BYTE $6A ; LAW _D097+0 +_F653 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3D ; CB 61 + !BYTE $24 ; BRNE _B404 + !WORD _B404-* + !BYTE $2A,$C5 ; CB 197 + !BYTE $78 ; SAB _D098+0 +_F654 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F655 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F656 !WORD _D097+0 + !BYTE $50 ; BRNCH _B405 + !WORD _B405-* +_B404 +; toolsrc/lex.pla: 0216: token = PTRW_TKN +; toolsrc/lex.pla: 0217: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0218: else + !BYTE $6A ; LAW _D097+0 +_F657 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3E ; CB 62 + !BYTE $24 ; BRNE _B406 + !WORD _B406-* + !BYTE $2A,$D7 ; CB 215 + !BYTE $78 ; SAB _D098+0 +_F658 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F659 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F660 !WORD _D097+0 + !BYTE $50 ; BRNCH _B405 + !WORD _B405-* +_B406 +; toolsrc/lex.pla: 0219: token = SET_TKN +; toolsrc/lex.pla: 0220: scanptr++ + !BYTE $2A,$BD ; CB 189 + !BYTE $78 ; SAB _D098+0 +_F661 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F662 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0221: fin + !BYTE $7A ; SAW _D097+0 +_F663 !WORD _D097+0 +_B405 +; toolsrc/lex.pla: 0222: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0223: is '-' +_B407 +; toolsrc/lex.pla: 0224: if ^(scanptr + 1) == '>' +; toolsrc/lex.pla: 0225: token = PTRB_TKN +; toolsrc/lex.pla: 0226: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0227: elsif ^(scanptr + 1) == '-' + !BYTE $6A ; LAW _D097+0 +_F664 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3E ; CB 62 + !BYTE $24 ; BRNE _B408 + !WORD _B408-* + !BYTE $2A,$D8 ; CB 216 + !BYTE $78 ; SAB _D098+0 +_F665 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F666 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F667 !WORD _D097+0 + !BYTE $50 ; BRNCH _B409 + !WORD _B409-* +_B408 +; toolsrc/lex.pla: 0228: token = DEC_TKN +; toolsrc/lex.pla: 0229: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0230: else + !BYTE $6A ; LAW _D097+0 +_F668 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B410 + !WORD _B410-* + !BYTE $2A,$C4 ; CB 196 + !BYTE $78 ; SAB _D098+0 +_F669 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F670 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F671 !WORD _D097+0 + !BYTE $50 ; BRNCH _B409 + !WORD _B409-* +_B410 +; toolsrc/lex.pla: 0231: token = SUB_TKN +; toolsrc/lex.pla: 0232: scanptr++ + !BYTE $2A,$AD ; CB 173 + !BYTE $78 ; SAB _D098+0 +_F672 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F673 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0233: fin + !BYTE $7A ; SAW _D097+0 +_F674 !WORD _D097+0 +_B409 +; toolsrc/lex.pla: 0234: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0235: is '+' +_B411 +; toolsrc/lex.pla: 0236: if ^(scanptr + 1) == '+' +; toolsrc/lex.pla: 0237: token = INC_TKN +; toolsrc/lex.pla: 0238: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0239: else + !BYTE $6A ; LAW _D097+0 +_F675 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2B ; CB 43 + !BYTE $24 ; BRNE _B412 + !WORD _B412-* + !BYTE $2A,$C1 ; CB 193 + !BYTE $78 ; SAB _D098+0 +_F676 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F677 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F678 !WORD _D097+0 + !BYTE $50 ; BRNCH _B413 + !WORD _B413-* +_B412 +; toolsrc/lex.pla: 0240: token = ADD_TKN +; toolsrc/lex.pla: 0241: scanptr++ + !BYTE $2A,$AB ; CB 171 + !BYTE $78 ; SAB _D098+0 +_F679 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F680 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0242: fin + !BYTE $7A ; SAW _D097+0 +_F681 !WORD _D097+0 +_B413 +; toolsrc/lex.pla: 0243: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0244: is '>' +_B414 +; toolsrc/lex.pla: 0245: if ^(scanptr + 1) == '>' +; toolsrc/lex.pla: 0246: token = SHR_TKN +; toolsrc/lex.pla: 0247: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0248: elsif ^(scanptr + 1) == '=' + !BYTE $6A ; LAW _D097+0 +_F682 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3E ; CB 62 + !BYTE $24 ; BRNE _B415 + !WORD _B415-* + !BYTE $2A,$D2 ; CB 210 + !BYTE $78 ; SAB _D098+0 +_F683 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F684 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F685 !WORD _D097+0 + !BYTE $50 ; BRNCH _B416 + !WORD _B416-* +_B415 +; toolsrc/lex.pla: 0249: token = GE_TKN +; toolsrc/lex.pla: 0250: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0251: else + !BYTE $6A ; LAW _D097+0 +_F686 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3D ; CB 61 + !BYTE $24 ; BRNE _B417 + !WORD _B417-* + !BYTE $2A,$C8 ; CB 200 + !BYTE $78 ; SAB _D098+0 +_F687 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F688 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F689 !WORD _D097+0 + !BYTE $50 ; BRNCH _B416 + !WORD _B416-* +_B417 +; toolsrc/lex.pla: 0252: token = GT_TKN +; toolsrc/lex.pla: 0253: scanptr++ + !BYTE $2A,$BE ; CB 190 + !BYTE $78 ; SAB _D098+0 +_F690 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F691 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0254: fin + !BYTE $7A ; SAW _D097+0 +_F692 !WORD _D097+0 +_B416 +; toolsrc/lex.pla: 0255: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0256: is '<' +_B418 +; toolsrc/lex.pla: 0257: if ^(scanptr + 1) == '<' +; toolsrc/lex.pla: 0258: token = SHL_TKN +; toolsrc/lex.pla: 0259: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0260: elsif ^(scanptr + 1) == '=' + !BYTE $6A ; LAW _D097+0 +_F693 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3C ; CB 60 + !BYTE $24 ; BRNE _B419 + !WORD _B419-* + !BYTE $2A,$CC ; CB 204 + !BYTE $78 ; SAB _D098+0 +_F694 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F695 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F696 !WORD _D097+0 + !BYTE $50 ; BRNCH _B420 + !WORD _B420-* +_B419 +; toolsrc/lex.pla: 0261: token = LE_TKN +; toolsrc/lex.pla: 0262: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0263: elsif ^(scanptr + 1) == '>' + !BYTE $6A ; LAW _D097+0 +_F697 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3D ; CB 61 + !BYTE $24 ; BRNE _B421 + !WORD _B421-* + !BYTE $2A,$C2 ; CB 194 + !BYTE $78 ; SAB _D098+0 +_F698 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F699 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F700 !WORD _D097+0 + !BYTE $50 ; BRNCH _B420 + !WORD _B420-* +_B421 +; toolsrc/lex.pla: 0264: token = NE_TKN +; toolsrc/lex.pla: 0265: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0266: else + !BYTE $6A ; LAW _D097+0 +_F701 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3E ; CB 62 + !BYTE $24 ; BRNE _B422 + !WORD _B422-* + !BYTE $2A,$D5 ; CB 213 + !BYTE $78 ; SAB _D098+0 +_F702 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F703 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F704 !WORD _D097+0 + !BYTE $50 ; BRNCH _B420 + !WORD _B420-* +_B422 +; toolsrc/lex.pla: 0267: token = LT_TKN +; toolsrc/lex.pla: 0268: scanptr++ + !BYTE $2A,$BC ; CB 188 + !BYTE $78 ; SAB _D098+0 +_F705 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F706 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0269: fin + !BYTE $7A ; SAW _D097+0 +_F707 !WORD _D097+0 +_B420 +; toolsrc/lex.pla: 0270: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0271: is ':' +_B423 +; toolsrc/lex.pla: 0272: if ^(scanptr + 1) == ':' +; toolsrc/lex.pla: 0273: token = TRIELSE_TKN; +; toolsrc/lex.pla: 0274: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0275: else + !BYTE $6A ; LAW _D097+0 +_F708 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3A ; CB 58 + !BYTE $24 ; BRNE _B424 + !WORD _B424-* + !BYTE $2A,$DF ; CB 223 + !BYTE $78 ; SAB _D098+0 +_F709 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F710 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F711 !WORD _D097+0 + !BYTE $50 ; BRNCH _B425 + !WORD _B425-* +_B424 +; toolsrc/lex.pla: 0276: token = COLON_TKN; +; toolsrc/lex.pla: 0277: scanptr++ + !BYTE $2A,$BA ; CB 186 + !BYTE $78 ; SAB _D098+0 +_F712 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F713 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0278: fin + !BYTE $7A ; SAW _D097+0 +_F714 !WORD _D097+0 +_B425 +; toolsrc/lex.pla: 0279: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0280: is '?' +_B426 +; toolsrc/lex.pla: 0281: if ^(scanptr + 1) == '?' +; toolsrc/lex.pla: 0282: token = TERNARY_TKN; +; toolsrc/lex.pla: 0283: scanptr = scanptr + 2 +; toolsrc/lex.pla: 0284: fin + !BYTE $6A ; LAW _D097+0 +_F715 !WORD _D097+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$3F ; CB 63 + !BYTE $24 ; BRNE _B427 + !WORD _B427-* + !BYTE $2A,$BF ; CB 191 + !BYTE $78 ; SAB _D098+0 +_F716 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F717 !WORD _D097+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D097+0 +_F718 !WORD _D097+0 +_B427 +_B428 +; toolsrc/lex.pla: 0285: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0286: is 0 +_B429 +; toolsrc/lex.pla: 0287: is ';' +_B430 +; toolsrc/lex.pla: 0288: if token <> EOF_TKN +; toolsrc/lex.pla: 0289: token = EOL_TKN +; toolsrc/lex.pla: 0290: fin + !BYTE $68 ; LAB _D098+0 +_F719 !WORD _D098+0 + !BYTE $02 ; CN 1 + !BYTE $22 ; BREQ _B431 + !WORD _B431-* + !BYTE $04 ; CN 2 + !BYTE $78 ; SAB _D098+0 +_F720 !WORD _D098+0 +_B431 +_B432 +; toolsrc/lex.pla: 0291: break + !BYTE $50 ; BRNCH _B355 + !WORD _B355-* +; toolsrc/lex.pla: 0292: otherwise +_B356 + !BYTE $0D ; CASEBLOCK + !WORD $0000 + !WORD _B429-* + !WORD $0022 + !WORD _B382-* + !WORD $0024 + !WORD _B357-* + !WORD $0027 + !WORD _B368-* + !WORD $002B + !WORD _B411-* + !WORD $002D + !WORD _B407-* + !WORD $002F + !WORD _B400-* + !WORD $003A + !WORD _B423-* + !WORD $003B + !WORD _B430-* + !WORD $003C + !WORD _B418-* + !WORD $003D + !WORD _B403-* + !WORD $003E + !WORD _B414-* + !WORD $003F + !WORD _B426-* +; toolsrc/lex.pla: 0293: // +; toolsrc/lex.pla: 0294: // Simple single character tokens +; toolsrc/lex.pla: 0295: // +; toolsrc/lex.pla: 0296: token = scanchr | $80 +; toolsrc/lex.pla: 0297: scanptr++ + !BYTE $68 ; LAB _D099+0 +_F721 !WORD _D099+0 + !BYTE $3E,$80 ; ORI 128 + !BYTE $78 ; SAB _D098+0 +_F722 !WORD _D098+0 + !BYTE $6A ; LAW _D097+0 +_F723 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0298: wend + !BYTE $7A ; SAW _D097+0 +_F724 !WORD _D097+0 +_B355 +; toolsrc/lex.pla: 0299: fin +_B348 +; toolsrc/lex.pla: 0300: tknlen = scanptr - tknptr +; toolsrc/lex.pla: 0301: return token + !BYTE $6A ; LAW _D097+0 +_F725 !WORD _D097+0 + !BYTE $6A ; LAW _D101+0 +_F726 !WORD _D101+0 + !BYTE $84 ; SUB + !BYTE $78 ; SAB _D100+0 +_F727 !WORD _D100+0 + !BYTE $68 ; LAB _D098+0 +_F728 !WORD _D098+0 + !BYTE $5C ; RET +; toolsrc/lex.pla: 0302: end +; toolsrc/lex.pla: 0303: def rewind(ptr)#0 + ; ptr -> [0] +_C077 ; rewind() +; toolsrc/lex.pla: 0304: scanptr = ptr + !BYTE $58,$02,$01 ; ENTER 2,1 +; toolsrc/lex.pla: 0305: tknptr = ptr +; toolsrc/lex.pla: 0306: end + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D097+0 +_F729 !WORD _D097+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D101+0 +_F730 !WORD _D101+0 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/lex.pla: 0307: def lookahead +_C078 ; lookahead() +; toolsrc/lex.pla: 0308: word backptr, backtkn + ; backptr -> [0] + ; backtkn -> [2] +; toolsrc/lex.pla: 0309: byte prevtkn, prevlen, look + ; prevtkn -> [4] + ; prevlen -> [5] + ; look -> [6] +; toolsrc/lex.pla: 0310: backptr = scanptr + !BYTE $58,$07,$00 ; ENTER 7,0 +; toolsrc/lex.pla: 0311: backtkn = tknptr +; toolsrc/lex.pla: 0312: prevtkn = token +; toolsrc/lex.pla: 0313: prevlen = tknlen +; toolsrc/lex.pla: 0314: look = scan +; toolsrc/lex.pla: 0315: scanptr = backptr +; toolsrc/lex.pla: 0316: tknptr = backtkn +; toolsrc/lex.pla: 0317: token = prevtkn +; toolsrc/lex.pla: 0318: tknlen = prevlen +; toolsrc/lex.pla: 0319: return look + !BYTE $6A ; LAW _D097+0 +_F731 !WORD _D097+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D101+0 +_F732 !WORD _D101+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $68 ; LAB _D098+0 +_F733 !WORD _D098+0 + !BYTE $74,$04 ; SLB [4] + !BYTE $68 ; LAB _D100+0 +_F734 !WORD _D100+0 + !BYTE $74,$05 ; SLB [5] + !BYTE $54 ; CALL _C076 +_F735 !WORD _C076 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D097+0 +_F736 !WORD _D097+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D101+0 +_F737 !WORD _D101+0 + !BYTE $64,$04 ; LLB [4] + !BYTE $78 ; SAB _D098+0 +_F738 !WORD _D098+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $78 ; SAB _D100+0 +_F739 !WORD _D100+0 + !BYTE $64,$06 ; LLB [6] + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/lex.pla: 0320: end +; toolsrc/lex.pla: 0321: // +; toolsrc/lex.pla: 0322: // Get next line of input +; toolsrc/lex.pla: 0323: // +; toolsrc/lex.pla: 0324: def nextln +_C079 ; nextln() +; toolsrc/lex.pla: 0325: strconstptr = strconstbuff // Reset string constant buffer +; toolsrc/lex.pla: 0326: if ^scanptr == ';' +; toolsrc/lex.pla: 0327: scanptr++ + !BYTE $6A ; LAW _D105+0 +_F740 !WORD _D105+0 + !BYTE $7A ; SAW _D106+0 +_F741 !WORD _D106+0 + !BYTE $6A ; LAW _D097+0 +_F742 !WORD _D097+0 + !BYTE $60 ; LB + !BYTE $2A,$3B ; CB 59 + !BYTE $24 ; BRNE _B433 + !WORD _B433-* + !BYTE $6A ; LAW _D097+0 +_F743 !WORD _D097+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0328: scan +; toolsrc/lex.pla: 0329: else + !BYTE $7A ; SAW _D097+0 +_F744 !WORD _D097+0 + !BYTE $54 ; CALL _C076 +_F745 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B434 + !WORD _B434-* +_B433 +; toolsrc/lex.pla: 0330: if token <> EOL_TKN and token <> EOF_TKN; putc(token&$7F); puts("Extraneous characters\n"); exit_err(0); fin + !BYTE $68 ; LAB _D098+0 +_F746 !WORD _D098+0 + !BYTE $04 ; CN 2 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B435 + !WORD _B435-* + !BYTE $68 ; LAB _D098+0 +_F747 !WORD _D098+0 + !BYTE $02 ; CN 1 + !BYTE $42 ; ISNE +_B435 + !BYTE $4C ; BRFLS _B436 + !WORD _B436-* + !BYTE $68 ; LAB _D098+0 +_F748 !WORD _D098+0 + !BYTE $3C,$7F ; ANDI 127 + !BYTE $54 ; CALL _X002 +_F749 !WORD 0 + !BYTE $2E ; CS + !BYTE $16 + !BYTE $45,$78,$74,$72,$61,$6E,$65,$6F + !BYTE $75,$73,$20,$63,$68,$61,$72,$61 + !BYTE $63,$74,$65,$72,$73,$0D + !BYTE $54 ; CALL _X004 +_F750 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F751 !WORD _C002 +_B436 +_B437 +; toolsrc/lex.pla: 0331: scanptr = inbuff +; toolsrc/lex.pla: 0332: ^instr = fileio:read(refnum, inbuff, 127) +; toolsrc/lex.pla: 0333: if ^instr +; toolsrc/lex.pla: 0334: ^(instr + ^instr) = NULL // NULL terminate string +; toolsrc/lex.pla: 0335: lineno++ + !BYTE $6A ; LAW _D096+0 +_F752 !WORD _D096+0 + !BYTE $7A ; SAW _D097+0 +_F753 !WORD _D097+0 + !BYTE $68 ; LAB _D086+0 +_F754 !WORD _D086+0 + !BYTE $6A ; LAW _D096+0 +_F755 !WORD _D096+0 + !BYTE $2A,$7F ; CB 127 + !BYTE $6A ; LAW _X031+18 +_F756 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6A ; LAW _D095+0 +_F757 !WORD _D095+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D095+0 +_F758 !WORD _D095+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B438 + !WORD _B438-* + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D095+0 +_F759 !WORD _D095+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $70 ; SB + !BYTE $6A ; LAW _D104+0 +_F760 !WORD _D104+0 + !BYTE $8C ; INCR +; toolsrc/lex.pla: 0336: if !(lineno & $0F); putc('.'); fin + !BYTE $7E ; DAW _D104+0 +_F761 !WORD _D104+0 + !BYTE $3C,$0F ; ANDI 15 + !BYTE $4E ; BRTRU _B440 + !WORD _B440-* + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _X002 +_F762 !WORD 0 +_B440 +_B441 +; toolsrc/lex.pla: 0337: if scan == INCLUDE_TKN +; toolsrc/lex.pla: 0338: if incref; puts("Nested INCLUDEs not allowed\n"); exit_err(0); fin + !BYTE $54 ; CALL _C076 +_F763 !WORD _C076 + !BYTE $2A,$9F ; CB 159 + !BYTE $24 ; BRNE _B442 + !WORD _B442-* + !BYTE $68 ; LAB _D088+0 +_F764 !WORD _D088+0 + !BYTE $4C ; BRFLS _B444 + !WORD _B444-* + !BYTE $2E ; CS + !BYTE $1C + !BYTE $4E,$65,$73,$74,$65,$64,$20,$49 + !BYTE $4E,$43,$4C,$55,$44,$45,$73,$20 + !BYTE $6E,$6F,$74,$20,$61,$6C,$6C,$6F + !BYTE $77,$65,$64,$0D + !BYTE $54 ; CALL _X004 +_F765 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F766 !WORD _C002 +_B444 +_B445 +; toolsrc/lex.pla: 0339: if scan <> STR_TKN; puts("Missing INCLUDE file\n"); exit_err(0); fin + !BYTE $54 ; CALL _C076 +_F767 !WORD _C076 + !BYTE $2A,$D3 ; CB 211 + !BYTE $22 ; BREQ _B446 + !WORD _B446-* + !BYTE $2E ; CS + !BYTE $15 + !BYTE $4D,$69,$73,$73,$69,$6E,$67,$20 + !BYTE $49,$4E,$43,$4C,$55,$44,$45,$20 + !BYTE $66,$69,$6C,$65,$0D + !BYTE $54 ; CALL _X004 +_F768 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F769 !WORD _C002 +_B446 +_B447 +; toolsrc/lex.pla: 0340: strcpy(@incfile, constval) +; toolsrc/lex.pla: 0341: incref = fileio:open(@incfile) +; toolsrc/lex.pla: 0342: if not incref +; toolsrc/lex.pla: 0343: puts("Unable to open INCLUDE file: ") + !BYTE $26 ; LA _D090+0 +_F770 !WORD _D090+0 + !BYTE $6A ; LAW _D103+0 +_F771 !WORD _D103+0 + !BYTE $54 ; CALL _X019 +_F772 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D090+0 +_F773 !WORD _D090+0 + !BYTE $6A ; LAW _X031+14 +_F774 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D088+0 +_F775 !WORD _D088+0 + !BYTE $4E ; BRTRU _B448 + !WORD _B448-* + !BYTE $2E ; CS + !BYTE $1D + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$6F,$70,$65,$6E,$20,$49 + !BYTE $4E,$43,$4C,$55,$44,$45,$20,$66 + !BYTE $69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F776 !WORD 0 +; toolsrc/lex.pla: 0344: puts(@incfile) +; toolsrc/lex.pla: 0345: putln +; toolsrc/lex.pla: 0346: exit_err(0) +; toolsrc/lex.pla: 0347: fin + !BYTE $26 ; LA _D090+0 +_F777 !WORD _D090+0 + !BYTE $54 ; CALL _X004 +_F778 !WORD 0 + !BYTE $54 ; CALL _X003 +_F779 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F780 !WORD _C002 +_B448 +_B449 +; toolsrc/lex.pla: 0348: fileio:newline(incref, $7F, $0D) +; toolsrc/lex.pla: 0349: refnum = incref +; toolsrc/lex.pla: 0350: parsefile = @incfile +; toolsrc/lex.pla: 0351: srcline = lineno +; toolsrc/lex.pla: 0352: lineno = 0 +; toolsrc/lex.pla: 0353: scan +; toolsrc/lex.pla: 0354: return nextln + !BYTE $68 ; LAB _D088+0 +_F781 !WORD _D088+0 + !BYTE $2A,$7F ; CB 127 + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _X031+28 +_F782 !WORD 0+28 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D088+0 +_F783 !WORD _D088+0 + !BYTE $78 ; SAB _D086+0 +_F784 !WORD _D086+0 + !BYTE $26 ; LA _D090+0 +_F785 !WORD _D090+0 + !BYTE $7A ; SAW _D093+0 +_F786 !WORD _D093+0 + !BYTE $6A ; LAW _D104+0 +_F787 !WORD _D104+0 + !BYTE $7A ; SAW _D094+0 +_F788 !WORD _D094+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D104+0 +_F789 !WORD _D104+0 + !BYTE $54 ; CALL _C076 +_F790 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C079 +_F791 !WORD _C079 + !BYTE $5C ; RET +; toolsrc/lex.pla: 0355: fin +_B442 +_B443 +; toolsrc/lex.pla: 0356: else + !BYTE $50 ; BRNCH _B439 + !WORD _B439-* +_B438 +; toolsrc/lex.pla: 0357: if refnum == incref +; toolsrc/lex.pla: 0358: fileio:close(incref) +; toolsrc/lex.pla: 0359: incref = 0 +; toolsrc/lex.pla: 0360: refnum = srcref +; toolsrc/lex.pla: 0361: parsefile = @srcfile +; toolsrc/lex.pla: 0362: lineno = srcline +; toolsrc/lex.pla: 0363: return nextln + !BYTE $68 ; LAB _D086+0 +_F792 !WORD _D086+0 + !BYTE $68 ; LAB _D088+0 +_F793 !WORD _D088+0 + !BYTE $24 ; BRNE _B450 + !WORD _B450-* + !BYTE $68 ; LAB _D088+0 +_F794 !WORD _D088+0 + !BYTE $6A ; LAW _X031+16 +_F795 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D088+0 +_F796 !WORD _D088+0 + !BYTE $68 ; LAB _D087+0 +_F797 !WORD _D087+0 + !BYTE $78 ; SAB _D086+0 +_F798 !WORD _D086+0 + !BYTE $26 ; LA _D089+0 +_F799 !WORD _D089+0 + !BYTE $7A ; SAW _D093+0 +_F800 !WORD _D093+0 + !BYTE $6A ; LAW _D094+0 +_F801 !WORD _D094+0 + !BYTE $7A ; SAW _D104+0 +_F802 !WORD _D104+0 + !BYTE $54 ; CALL _C079 +_F803 !WORD _C079 + !BYTE $5C ; RET +; toolsrc/lex.pla: 0364: else + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +_B450 +; toolsrc/lex.pla: 0365: *instr = NULL // NULL terminated 0 length string +; toolsrc/lex.pla: 0366: token = EOF_TKN +; toolsrc/lex.pla: 0367: fin + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D095+0 +_F804 !WORD _D095+0 + !BYTE $72 ; SW + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D098+0 +_F805 !WORD _D098+0 +_B451 +; toolsrc/lex.pla: 0368: fin +_B439 +; toolsrc/lex.pla: 0369: fin +_B434 +; toolsrc/lex.pla: 0370: return token + !BYTE $68 ; LAB _D098+0 +_F806 !WORD _D098+0 + !BYTE $5C ; RET +; toolsrc/lex.pla: 0371: end +; toolsrc/plasm.pla: 0506: +; toolsrc/plasm.pla: 0507: include "toolsrc/parse.pla" +; toolsrc/parse.pla: 0001: // +; toolsrc/parse.pla: 0002: // Alebraic op to stack op +; toolsrc/parse.pla: 0003: // +; toolsrc/parse.pla: 0004: def push_op(op, prec)#0 + ; op -> [0] + ; prec -> [2] +_C080 ; push_op() +; toolsrc/parse.pla: 0005: if opsp == 16; exit_err(ERR_OVER|ERR_CODE|ERR_FRAME); fin + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $6A ; LAW _D041+0 +_F807 !WORD _D041+0 + !BYTE $2A,$10 ; CB 16 + !BYTE $24 ; BRNE _B452 + !WORD _B452-* + !BYTE $2C,$10,$21 ; CW 8464 + !BYTE $54 ; CALL _C002 +_F808 !WORD _C002 +_B452 +_B453 +; toolsrc/parse.pla: 0006: opstack[opsp] = op +; toolsrc/parse.pla: 0007: precstack[opsp] = prec +; toolsrc/parse.pla: 0008: opsp++ + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D039+0 +_F809 !WORD _D039+0 + !BYTE $B6 ; ADDAW _D041+0 +_F810 !WORD _D041+0 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D040+0 +_F811 !WORD _D040+0 + !BYTE $B6 ; ADDAW _D041+0 +_F812 !WORD _D041+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D041+0 +_F813 !WORD _D041+0 + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0009: end + !BYTE $7A ; SAW _D041+0 +_F814 !WORD _D041+0 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/parse.pla: 0010: def pop_op +_C081 ; pop_op() +; toolsrc/parse.pla: 0011: opsp-- + !BYTE $6A ; LAW _D041+0 +_F815 !WORD _D041+0 + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0012: if opsp < 0; exit_err(ERR_INVAL|ERR_CODE|ERR_FRAME); fin + !BYTE $7E ; DAW _D041+0 +_F816 !WORD _D041+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B454 + !WORD _B454-* + !BYTE $2C,$04,$21 ; CW 8452 + !BYTE $54 ; CALL _C002 +_F817 !WORD _C002 +_B454 +_B455 +; toolsrc/parse.pla: 0013: return opstack[opsp] + !BYTE $26 ; LA _D039+0 +_F818 !WORD _D039+0 + !BYTE $B6 ; ADDAW _D041+0 +_F819 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $5C ; RET +; toolsrc/parse.pla: 0014: end +; toolsrc/parse.pla: 0015: def tos_op +_C082 ; tos_op() +; toolsrc/parse.pla: 0016: return opsp < 0 ?? 0 :: opstack[opsp-1] + !BYTE $6A ; LAW _D041+0 +_F820 !WORD _D041+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B456 + !WORD _B456-* + !BYTE $00 ; CN 0 + !BYTE $50 ; BRNCH _B457 + !WORD _B457-* +_B456 + !BYTE $26 ; LA _D039+0 +_F821 !WORD _D039+0 + !BYTE $6A ; LAW _D041+0 +_F822 !WORD _D041+0 + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB +_B457 + !BYTE $5C ; RET +; toolsrc/parse.pla: 0017: end +; toolsrc/parse.pla: 0018: def tos_op_prec(tos) + ; tos -> [0] +_C083 ; tos_op_prec() +; toolsrc/parse.pla: 0019: return opsp <= tos ?? 100 :: precstack[opsp-1] + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $6A ; LAW _D041+0 +_F823 !WORD _D041+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B458 + !WORD _B458-* + !BYTE $2A,$64 ; CB 100 + !BYTE $50 ; BRNCH _B459 + !WORD _B459-* +_B458 + !BYTE $26 ; LA _D040+0 +_F824 !WORD _D040+0 + !BYTE $6A ; LAW _D041+0 +_F825 !WORD _D041+0 + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB +_B459 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/parse.pla: 0020: end +; toolsrc/parse.pla: 0021: def push_val(value, size, type)#0 + ; value -> [0] + ; size -> [2] + ; type -> [4] +_C084 ; push_val() +; toolsrc/parse.pla: 0022: byte i + ; i -> [6] +; toolsrc/parse.pla: 0023: if valsp == 16; exit_err(ERR_OVER|ERR_CODE|ERR_FRAME); fin + !BYTE $58,$07,$03 ; ENTER 7,3 + !BYTE $6A ; LAW _D045+0 +_F826 !WORD _D045+0 + !BYTE $2A,$10 ; CB 16 + !BYTE $24 ; BRNE _B460 + !WORD _B460-* + !BYTE $2C,$10,$21 ; CW 8464 + !BYTE $54 ; CALL _C002 +_F827 !WORD _C002 +_B460 +_B461 +; toolsrc/parse.pla: 0024: valstack[valsp] = value +; toolsrc/parse.pla: 0025: sizestack[valsp] = size +; toolsrc/parse.pla: 0026: typestack[valsp] = type +; toolsrc/parse.pla: 0027: valsp++ + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D042+0 +_F828 !WORD _D042+0 + !BYTE $BE ; IDXAW _D045+0 +_F829 !WORD _D045+0 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D043+0 +_F830 !WORD _D043+0 + !BYTE $B6 ; ADDAW _D045+0 +_F831 !WORD _D045+0 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $26 ; LA _D044+0 +_F832 !WORD _D044+0 + !BYTE $B6 ; ADDAW _D045+0 +_F833 !WORD _D045+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D045+0 +_F834 !WORD _D045+0 + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0028: end + !BYTE $7A ; SAW _D045+0 +_F835 !WORD _D045+0 + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/parse.pla: 0029: def pop_val#3 +_C085 ; pop_val() +; toolsrc/parse.pla: 0030: byte i + ; i -> [0] +; toolsrc/parse.pla: 0031: valsp-- + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $6A ; LAW _D045+0 +_F836 !WORD _D045+0 + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0032: if valsp < 0; exit_err(ERR_INVAL|ERR_CODE|ERR_FRAME); fin + !BYTE $7E ; DAW _D045+0 +_F837 !WORD _D045+0 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B462 + !WORD _B462-* + !BYTE $2C,$04,$21 ; CW 8452 + !BYTE $54 ; CALL _C002 +_F838 !WORD _C002 +_B462 +_B463 +; toolsrc/parse.pla: 0033: return valstack[valsp], sizestack[valsp], typestack[valsp] + !BYTE $26 ; LA _D042+0 +_F839 !WORD _D042+0 + !BYTE $BE ; IDXAW _D045+0 +_F840 !WORD _D045+0 + !BYTE $62 ; LW + !BYTE $26 ; LA _D043+0 +_F841 !WORD _D043+0 + !BYTE $B6 ; ADDAW _D045+0 +_F842 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $26 ; LA _D044+0 +_F843 !WORD _D044+0 + !BYTE $B6 ; ADDAW _D045+0 +_F844 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $5A,$01 ; LEAVE 1 +; toolsrc/parse.pla: 0034: end +; toolsrc/parse.pla: 0035: // +; toolsrc/parse.pla: 0036: // Constant expression parsing +; toolsrc/parse.pla: 0037: // +; toolsrc/parse.pla: 0038: def calc_binaryop(op)#0 + ; op -> [0] +_C086 ; calc_binaryop() +; toolsrc/parse.pla: 0039: word val1, val2 + ; val1 -> [2] + ; val2 -> [4] +; toolsrc/parse.pla: 0040: byte size1, size2, type1, type2 + ; size1 -> [6] + ; size2 -> [7] + ; type1 -> [8] + ; type2 -> [9] +; toolsrc/parse.pla: 0041: +; toolsrc/parse.pla: 0042: val2, size2, type2 = pop_val + !BYTE $58,$0A,$01 ; ENTER 10,1 +; toolsrc/parse.pla: 0043: val1, size1, type1 = pop_val +; toolsrc/parse.pla: 0044: if type1 <> CONST_TYPE and type2 <> CONST_TYPE; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $54 ; CALL _C085 +_F845 !WORD _C085 + !BYTE $74,$09 ; SLB [9] + !BYTE $74,$07 ; SLB [7] + !BYTE $76,$04 ; SLW [4] + !BYTE $54 ; CALL _C085 +_F846 !WORD _C085 + !BYTE $74,$08 ; SLB [8] + !BYTE $74,$06 ; SLB [6] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$08 ; LLB [8] + !BYTE $02 ; CN 1 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B464 + !WORD _B464-* + !BYTE $64,$09 ; LLB [9] + !BYTE $02 ; CN 1 + !BYTE $42 ; ISNE +_B464 + !BYTE $4C ; BRFLS _B465 + !WORD _B465-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F847 !WORD _C002 +_B465 +_B466 +; toolsrc/parse.pla: 0045: when op + !BYTE $66,$00 ; LLW [0] + !BYTE $52 ; SEL + !WORD _B468-* +; toolsrc/parse.pla: 0046: is MUL_TKN +_B469 +; toolsrc/parse.pla: 0047: val1 = val1 * val2 +; toolsrc/parse.pla: 0048: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $86 ; MUL + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0049: is DIV_TKN +_B470 +; toolsrc/parse.pla: 0050: val1 = val1 / val2 +; toolsrc/parse.pla: 0051: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $88 ; DIV + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0052: is MOD_TKN +_B471 +; toolsrc/parse.pla: 0053: val1 = val1 % val2 +; toolsrc/parse.pla: 0054: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $8A ; MOD + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0055: is ADD_TKN +_B472 +; toolsrc/parse.pla: 0056: val1 = val1 + val2 +; toolsrc/parse.pla: 0057: break + !BYTE $66,$02 ; LLW [2] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0058: is SUB_TKN +_B473 +; toolsrc/parse.pla: 0059: val1 = val1 - val2 +; toolsrc/parse.pla: 0060: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $84 ; SUB + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0061: is SHL_TKN +_B474 +; toolsrc/parse.pla: 0062: val1 = val1 << val2 +; toolsrc/parse.pla: 0063: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $9A ; SHL + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0064: is SHR_TKN +_B475 +; toolsrc/parse.pla: 0065: val1 = val1 >> val2 +; toolsrc/parse.pla: 0066: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $9C ; SHR + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0067: is AND_TKN +_B476 +; toolsrc/parse.pla: 0068: val1 = val1 & val2 +; toolsrc/parse.pla: 0069: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $94 ; AND + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0070: is OR_TKN +_B477 +; toolsrc/parse.pla: 0071: val1 = val1 | val2 +; toolsrc/parse.pla: 0072: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $96 ; OR + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0073: is EOR_TKN +_B478 +; toolsrc/parse.pla: 0074: val1 = val1 ^ val2 +; toolsrc/parse.pla: 0075: break + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $98 ; XOR + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B467 + !WORD _B467-* +; toolsrc/parse.pla: 0076: otherwise +_B468 + !BYTE $0A ; CASEBLOCK + !WORD $00A5 + !WORD _B471-* + !WORD $00A6 + !WORD _B476-* + !WORD $00AA + !WORD _B469-* + !WORD $00AB + !WORD _B472-* + !WORD $00AD + !WORD _B473-* + !WORD $00AF + !WORD _B470-* + !WORD $00CC + !WORD _B474-* + !WORD $00D2 + !WORD _B475-* + !WORD $00DE + !WORD _B478-* + !WORD $00FC + !WORD _B477-* +; toolsrc/parse.pla: 0077: exit_err(ERR_INVAL|ERR_CONST) +; toolsrc/parse.pla: 0078: wend + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F848 !WORD _C002 +_B467 +; toolsrc/parse.pla: 0079: if size2 > size1; size1 = size2; fin + !BYTE $64,$07 ; LLB [7] + !BYTE $64,$06 ; LLB [6] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B479 + !WORD _B479-* + !BYTE $64,$07 ; LLB [7] + !BYTE $74,$06 ; SLB [6] +_B479 +_B480 +; toolsrc/parse.pla: 0080: push_val(val1, size1, type1) +; toolsrc/parse.pla: 0081: end + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$06 ; LLB [6] + !BYTE $64,$08 ; LLB [8] + !BYTE $54 ; CALL _C084 +_F849 !WORD _C084 + !BYTE $5A,$0A ; LEAVE 10 +; toolsrc/parse.pla: 0082: def parse_constterm +_C087 ; parse_constterm() +; toolsrc/parse.pla: 0083: +; toolsrc/parse.pla: 0084: when scan + !BYTE $54 ; CALL _C076 +_F850 !WORD _C076 + !BYTE $52 ; SEL + !WORD _B482-* +; toolsrc/parse.pla: 0085: is OPEN_PAREN_TKN +_B483 +; toolsrc/parse.pla: 0086: push_val(parse_constexpr) +; toolsrc/parse.pla: 0087: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $54 ; CALL _P002 +_F851 !WORD _P002 + !BYTE $54 ; CALL _C084 +_F852 !WORD _C084 + !BYTE $68 ; LAB _D098+0 +_F853 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B484 + !WORD _B484-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F854 !WORD _C002 +_B484 +_B485 +; toolsrc/parse.pla: 0088: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; toolsrc/parse.pla: 0089: is ID_TKN +_B486 +; toolsrc/parse.pla: 0090: is INT_TKN +_B487 +; toolsrc/parse.pla: 0091: is CHR_TKN +_B488 +; toolsrc/parse.pla: 0092: is STR_TKN +_B489 +; toolsrc/parse.pla: 0093: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; toolsrc/parse.pla: 0094: wend + !BYTE $50 ; BRNCH _B481 + !WORD _B481-* +_B482 + !BYTE $05 ; CASEBLOCK + !WORD $00A8 + !WORD _B483-* + !WORD $00C3 + !WORD _B488-* + !WORD $00C9 + !WORD _B487-* + !WORD $00D3 + !WORD _B489-* + !WORD $00D6 + !WORD _B486-* +_B481 +; toolsrc/parse.pla: 0095: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; toolsrc/parse.pla: 0096: end +; toolsrc/parse.pla: 0097: def parse_constval +_C088 ; parse_constval() +; toolsrc/parse.pla: 0098: byte mod, size + ; mod -> [0] + ; size -> [1] +; toolsrc/parse.pla: 0099: word type, idptr, value + ; type -> [2] + ; idptr -> [4] + ; value -> [6] +; toolsrc/parse.pla: 0100: +; toolsrc/parse.pla: 0101: mod = 0 + !BYTE $58,$08,$00 ; ENTER 8,0 +; toolsrc/parse.pla: 0102: while not parse_constterm + !BYTE $00 ; CN 0 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B492 + !WORD _B492-* +_B490 +; toolsrc/parse.pla: 0103: when token + !BYTE $68 ; LAB _D098+0 +_F855 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B494-* +; toolsrc/parse.pla: 0104: is SUB_TKN +_B495 +; toolsrc/parse.pla: 0105: mod = mod | 1; break + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$01 ; ORI 1 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B493 + !WORD _B493-* +; toolsrc/parse.pla: 0106: is COMP_TKN +_B496 +; toolsrc/parse.pla: 0107: mod = mod | 2; break + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$02 ; ORI 2 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B493 + !WORD _B493-* +; toolsrc/parse.pla: 0108: is LOGIC_NOT_TKN +_B497 +; toolsrc/parse.pla: 0109: mod = mod | 4; break + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$04 ; ORI 4 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B493 + !WORD _B493-* +; toolsrc/parse.pla: 0110: is AT_TKN +_B498 +; toolsrc/parse.pla: 0111: mod = mod | 8; break + !BYTE $64,$00 ; LLB [0] + !BYTE $3E,$08 ; ORI 8 + !BYTE $74,$00 ; SLB [0] + !BYTE $50 ; BRNCH _B493 + !WORD _B493-* +; toolsrc/parse.pla: 0112: is ADD_TKN +_B499 +; toolsrc/parse.pla: 0113: break + !BYTE $50 ; BRNCH _B493 + !WORD _B493-* +; toolsrc/parse.pla: 0114: otherwise +_B494 + !BYTE $05 ; CASEBLOCK + !WORD $00A1 + !WORD _B497-* + !WORD $00AB + !WORD _B499-* + !WORD $00AD + !WORD _B495-* + !WORD $00C0 + !WORD _B498-* + !WORD $00FE + !WORD _B496-* +; toolsrc/parse.pla: 0115: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/parse.pla: 0116: wend +_B493 +; toolsrc/parse.pla: 0117: loop +_B492 + !BYTE $54 ; CALL _C087 +_F856 !WORD _C087 + !BYTE $4C ; BRFLS _B490 + !WORD _B490-* +_B491 +; toolsrc/parse.pla: 0118: when token + !BYTE $68 ; LAB _D098+0 +_F857 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B501-* +; toolsrc/parse.pla: 0119: is CLOSE_PAREN_TKN +_B502 +; toolsrc/parse.pla: 0120: value, size, type = pop_val +; toolsrc/parse.pla: 0121: break + !BYTE $54 ; CALL _C085 +_F858 !WORD _C085 + !BYTE $76,$02 ; SLW [2] + !BYTE $74,$01 ; SLB [1] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +; toolsrc/parse.pla: 0122: is STR_TKN +_B503 +; toolsrc/parse.pla: 0123: size = tknlen - 1 +; toolsrc/parse.pla: 0124: value = constval +; toolsrc/parse.pla: 0125: type = STR_TYPE +; toolsrc/parse.pla: 0126: if mod; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $68 ; LAB _D100+0 +_F859 !WORD _D100+0 + !BYTE $8E ; DECR + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D103+0 +_F860 !WORD _D103+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$80 ; CB 128 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $4C ; BRFLS _B504 + !WORD _B504-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F861 !WORD _C002 +_B504 +_B505 +; toolsrc/parse.pla: 0127: break + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +; toolsrc/parse.pla: 0128: is CHR_TKN +_B506 +; toolsrc/parse.pla: 0129: size = 1 +; toolsrc/parse.pla: 0130: value = constval +; toolsrc/parse.pla: 0131: type = CONST_TYPE +; toolsrc/parse.pla: 0132: break + !BYTE $02 ; CN 1 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D103+0 +_F862 !WORD _D103+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $02 ; CN 1 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +; toolsrc/parse.pla: 0133: is INT_TKN +_B507 +; toolsrc/parse.pla: 0134: size = 2 +; toolsrc/parse.pla: 0135: value = constval +; toolsrc/parse.pla: 0136: type = CONST_TYPE +; toolsrc/parse.pla: 0137: break + !BYTE $04 ; CN 2 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D103+0 +_F863 !WORD _D103+0 + !BYTE $76,$06 ; SLW [6] + !BYTE $02 ; CN 1 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +; toolsrc/parse.pla: 0138: is ID_TKN +_B508 +; toolsrc/parse.pla: 0139: size = 2 +; toolsrc/parse.pla: 0140: idptr = lookup_id(tknptr, tknlen) +; toolsrc/parse.pla: 0141: if not idptr; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $04 ; CN 2 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D101+0 +_F864 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F865 !WORD _D100+0 + !BYTE $54 ; CALL _C044 +_F866 !WORD _C044 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B509 + !WORD _B509-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F867 !WORD _C002 +_B509 +_B510 +; toolsrc/parse.pla: 0142: type = idptr=>idtype +; toolsrc/parse.pla: 0143: if type & (FUNC_TYPE|ADDR_TYPE) +; toolsrc/parse.pla: 0144: if mod <> 8; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $6E,$02 ; DLW [2] + !BYTE $3C,$0E ; ANDI 14 + !BYTE $4C ; BRFLS _B511 + !WORD _B511-* + !BYTE $64,$00 ; LLB [0] + !BYTE $10 ; CN 8 + !BYTE $22 ; BREQ _B513 + !WORD _B513-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F868 !WORD _C002 +_B513 +_B514 +; toolsrc/parse.pla: 0145: type = CONSTADDR_TYPE +; toolsrc/parse.pla: 0146: elsif type <> CONST_TYPE + !BYTE $2A,$61 ; CB 97 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B512 + !WORD _B512-* +_B511 +; toolsrc/parse.pla: 0147: exit_err(ERR_INVAL|ERR_CONST) +; toolsrc/parse.pla: 0148: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $02 ; CN 1 + !BYTE $22 ; BREQ _B515 + !WORD _B515-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F869 !WORD _C002 +_B515 +_B512 +; toolsrc/parse.pla: 0149: value = idptr=>idval +; toolsrc/parse.pla: 0150: break + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B500 + !WORD _B500-* +; toolsrc/parse.pla: 0151: otherwise +_B501 + !BYTE $05 ; CASEBLOCK + !WORD $00A9 + !WORD _B502-* + !WORD $00C3 + !WORD _B506-* + !WORD $00C9 + !WORD _B507-* + !WORD $00D3 + !WORD _B503-* + !WORD $00D6 + !WORD _B508-* +; toolsrc/parse.pla: 0152: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/parse.pla: 0153: wend +_B500 +; toolsrc/parse.pla: 0154: if mod & 1 +; toolsrc/parse.pla: 0155: value = -value +; toolsrc/parse.pla: 0156: fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B516 + !WORD _B516-* + !BYTE $66,$06 ; LLW [6] + !BYTE $90 ; NEG + !BYTE $76,$06 ; SLW [6] +_B516 +_B517 +; toolsrc/parse.pla: 0157: if mod & 2 +; toolsrc/parse.pla: 0158: value = ~value +; toolsrc/parse.pla: 0159: fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B518 + !WORD _B518-* + !BYTE $66,$06 ; LLW [6] + !BYTE $92 ; COMP + !BYTE $76,$06 ; SLW [6] +_B518 +_B519 +; toolsrc/parse.pla: 0160: if mod & 4 +; toolsrc/parse.pla: 0161: value = !value +; toolsrc/parse.pla: 0162: fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B520 + !WORD _B520-* + !BYTE $66,$06 ; LLW [6] + !BYTE $80 ; NOT + !BYTE $76,$06 ; SLW [6] +_B520 +_B521 +; toolsrc/parse.pla: 0163: push_val(value, size, type) +; toolsrc/parse.pla: 0164: return TRUE + !BYTE $66,$06 ; LLW [6] + !BYTE $64,$01 ; LLB [1] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C084 +_F870 !WORD _C084 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/parse.pla: 0165: end +; toolsrc/parse.pla: 0166: def parse_constexpr#3 +_P002 ; parse_constexpr#3() +_C089 ; parse_constexpr() +; toolsrc/parse.pla: 0167: byte prevmatch, matchop, i + ; prevmatch -> [0] + ; matchop -> [1] + ; i -> [2] +; toolsrc/parse.pla: 0168: word optos + ; optos -> [3] +; toolsrc/parse.pla: 0169: +; toolsrc/parse.pla: 0170: matchop = 0 + !BYTE $58,$05,$00 ; ENTER 5,0 +; toolsrc/parse.pla: 0171: optos = opsp +; toolsrc/parse.pla: 0172: repeat + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D041+0 +_F871 !WORD _D041+0 + !BYTE $76,$03 ; SLW [3] +_B523 +; toolsrc/parse.pla: 0173: prevmatch = matchop +; toolsrc/parse.pla: 0174: matchop = 0 +; toolsrc/parse.pla: 0175: if parse_constval +; toolsrc/parse.pla: 0176: matchop = 1 +; toolsrc/parse.pla: 0177: scan +; toolsrc/parse.pla: 0178: for i = 0 to bops_tblsz + !BYTE $64,$01 ; LLB [1] + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $54 ; CALL _C088 +_F872 !WORD _C088 + !BYTE $4C ; BRFLS _B525 + !WORD _B525-* + !BYTE $02 ; CN 1 + !BYTE $74,$01 ; SLB [1] + !BYTE $54 ; CALL _C076 +_F873 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $2A,$11 ; CB 17 + !BYTE $00 ; CN 0 +_B528 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/parse.pla: 0179: if token == bops_tbl[i] +; toolsrc/parse.pla: 0180: matchop = 2 +; toolsrc/parse.pla: 0181: if bops_prec[i] >= tos_op_prec(optos) +; toolsrc/parse.pla: 0182: calc_binaryop(pop_op) +; toolsrc/parse.pla: 0183: fin + !BYTE $68 ; LAB _D098+0 +_F874 !WORD _D098+0 + !BYTE $26 ; LA _D037+0 +_F875 !WORD _D037+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B530 + !WORD _B530-* + !BYTE $04 ; CN 2 + !BYTE $74,$01 ; SLB [1] + !BYTE $26 ; LA _D038+0 +_F876 !WORD _D038+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $66,$03 ; LLW [3] + !BYTE $54 ; CALL _C083 +_F877 !WORD _C083 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B532 + !WORD _B532-* + !BYTE $54 ; CALL _C081 +_F878 !WORD _C081 + !BYTE $54 ; CALL _C086 +_F879 !WORD _C086 +_B532 +_B533 +; toolsrc/parse.pla: 0184: push_op(token, bops_prec[i]) +; toolsrc/parse.pla: 0185: break + !BYTE $68 ; LAB _D098+0 +_F880 !WORD _D098+0 + !BYTE $26 ; LA _D038+0 +_F881 !WORD _D038+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _C080 +_F882 !WORD _C080 + !BYTE $50 ; BRNCH _B527 + !WORD _B527-* +; toolsrc/parse.pla: 0186: fin +_B530 +_B531 +; toolsrc/parse.pla: 0187: next +_B529 + !BYTE $A4 ; INCBRLE _B528 + !WORD _B528-* +_B527 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 0188: fin +_B525 +_B526 +; toolsrc/parse.pla: 0189: until matchop <> 2 +_B524 + !BYTE $64,$01 ; LLB [1] + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B523 + !WORD _B523-* +_B522 +; toolsrc/parse.pla: 0190: if matchop == 0 and prevmatch == 0; return 0, 0, 0; fin + !BYTE $64,$01 ; LLB [1] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B534 + !WORD _B534-* + !BYTE $64,$00 ; LLB [0] + !BYTE $80 ; NOT +_B534 + !BYTE $4C ; BRFLS _B535 + !WORD _B535-* + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +_B535 +_B536 +; toolsrc/parse.pla: 0191: if matchop == 0 and prevmatch == 2; exit_err(ERR_INVAL|ERR_SYNTAX); fin + !BYTE $64,$01 ; LLB [1] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B537 + !WORD _B537-* + !BYTE $64,$00 ; LLB [0] + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ +_B537 + !BYTE $4C ; BRFLS _B538 + !WORD _B538-* + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F883 !WORD _C002 +_B538 +_B539 +; toolsrc/parse.pla: 0192: while optos < opsp + !BYTE $50 ; BRNCH _B542 + !WORD _B542-* +_B540 +; toolsrc/parse.pla: 0193: calc_binaryop(pop_op) +; toolsrc/parse.pla: 0194: loop + !BYTE $54 ; CALL _C081 +_F884 !WORD _C081 + !BYTE $54 ; CALL _C086 +_F885 !WORD _C086 +_B542 + !BYTE $66,$03 ; LLW [3] + !BYTE $6A ; LAW _D041+0 +_F886 !WORD _D041+0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B540 + !WORD _B540-* +_B541 +; toolsrc/parse.pla: 0195: return pop_val + !BYTE $54 ; CALL _C085 +_F887 !WORD _C085 + !BYTE $5A,$05 ; LEAVE 5 +; toolsrc/parse.pla: 0196: end +; toolsrc/parse.pla: 0197: def parse_const(valptr) + ; valptr -> [0] +_C090 ; parse_const() +; toolsrc/parse.pla: 0198: word idptr + ; idptr -> [2] +; toolsrc/parse.pla: 0199: +; toolsrc/parse.pla: 0200: when scan + !BYTE $58,$04,$01 ; ENTER 4,1 + !BYTE $54 ; CALL _C076 +_F888 !WORD _C076 + !BYTE $52 ; SEL + !WORD _B544-* +; toolsrc/parse.pla: 0201: is CHR_TKN +_B545 +; toolsrc/parse.pla: 0202: is INT_TKN +_B546 +; toolsrc/parse.pla: 0203: *valptr = constval +; toolsrc/parse.pla: 0204: break + !BYTE $6A ; LAW _D103+0 +_F889 !WORD _D103+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B543 + !WORD _B543-* +; toolsrc/parse.pla: 0205: is ID_TKN +_B547 +; toolsrc/parse.pla: 0206: idptr = lookup_id(tknptr, tknlen) +; toolsrc/parse.pla: 0207: if idptr=>idtype & CONST_TYPE +; toolsrc/parse.pla: 0208: *valptr = idptr=>idval +; toolsrc/parse.pla: 0209: break + !BYTE $6A ; LAW _D101+0 +_F890 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F891 !WORD _D100+0 + !BYTE $54 ; CALL _C044 +_F892 !WORD _C044 + !BYTE $6E,$02 ; DLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B548 + !WORD _B548-* + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $66,$00 ; LLW [0] + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B543 + !WORD _B543-* +; toolsrc/parse.pla: 0210: fin +_B548 +_B549 +; toolsrc/parse.pla: 0211: otherwise + !BYTE $50 ; BRNCH _B550 + !WORD _B550-* +_B544 + !BYTE $03 ; CASEBLOCK + !WORD $00C3 + !WORD _B545-* + !WORD $00C9 + !WORD _B546-* + !WORD $00D6 + !WORD _B547-* +_B550 +; toolsrc/parse.pla: 0212: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/parse.pla: 0213: wend +_B543 +; toolsrc/parse.pla: 0214: return CONST_TYPE + !BYTE $02 ; CN 1 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/parse.pla: 0215: end +; toolsrc/parse.pla: 0216: // +; toolsrc/parse.pla: 0217: // Normal expression parsing +; toolsrc/parse.pla: 0218: // +; toolsrc/parse.pla: 0219: def parse_list#2 +_C091 ; parse_list() +; toolsrc/parse.pla: 0220: byte listdepth, stackdepth + ; listdepth -> [0] + ; stackdepth -> [1] +; toolsrc/parse.pla: 0221: word listseq, exprseq + ; listseq -> [2] + ; exprseq -> [4] +; toolsrc/parse.pla: 0222: +; toolsrc/parse.pla: 0223: listseq = NULL + !BYTE $58,$06,$00 ; ENTER 6,0 +; toolsrc/parse.pla: 0224: listdepth = 0 +; toolsrc/parse.pla: 0225: repeat + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$00 ; SLB [0] +_B552 +; toolsrc/parse.pla: 0226: listseq, stackdepth = parse_expr(listseq) +; toolsrc/parse.pla: 0227: listdepth = listdepth + stackdepth +; toolsrc/parse.pla: 0228: until token <> COMMA_TKN + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _P003 +_F893 !WORD _P003 + !BYTE $74,$01 ; SLB [1] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $B0,$01 ; ADDLB [1] + !BYTE $74,$00 ; SLB [0] +_B553 + !BYTE $68 ; LAB _D098+0 +_F894 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B552 + !WORD _B552-* +_B551 +; toolsrc/parse.pla: 0229: return listseq, listdepth + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$00 ; LLB [0] + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/parse.pla: 0230: end +; toolsrc/parse.pla: 0231: def parse_value(codeseq, r_val)#2 + ; codeseq -> [0] + ; r_val -> [2] +_C092 ; parse_value() +; toolsrc/parse.pla: 0232: byte cfnparms, cfnvals, stackdepth, operation + ; cfnparms -> [4] + ; cfnvals -> [5] + ; stackdepth -> [6] + ; operation -> [7] +; toolsrc/parse.pla: 0233: word deref, type, optos, idptr, value, const_offset + ; deref -> [8] + ; type -> [10] + ; optos -> [12] + ; idptr -> [14] + ; value -> [16] + ; const_offset -> [18] +; toolsrc/parse.pla: 0234: word uopseq, valseq, idxseq + ; uopseq -> [20] + ; valseq -> [22] + ; idxseq -> [24] +; toolsrc/parse.pla: 0235: +; toolsrc/parse.pla: 0236: deref = r_val + !BYTE $58,$1A,$02 ; ENTER 26,2 +; toolsrc/parse.pla: 0237: optos = opsp +; toolsrc/parse.pla: 0238: type = 0 +; toolsrc/parse.pla: 0239: value = 0 +; toolsrc/parse.pla: 0240: cfnparms = 0 +; toolsrc/parse.pla: 0241: cfnvals = 1 +; toolsrc/parse.pla: 0242: stackdepth = 1 +; toolsrc/parse.pla: 0243: uopseq = NULL +; toolsrc/parse.pla: 0244: valseq = NULL +; toolsrc/parse.pla: 0245: idxseq = NULL +; toolsrc/parse.pla: 0246: // +; toolsrc/parse.pla: 0247: // Parse pre-ops +; toolsrc/parse.pla: 0248: // +; toolsrc/parse.pla: 0249: operation = TRUE +; toolsrc/parse.pla: 0250: repeat + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $6A ; LAW _D041+0 +_F895 !WORD _D041+0 + !BYTE $76,$0C ; SLW [12] + !BYTE $00 ; CN 0 + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $02 ; CN 1 + !BYTE $74,$06 ; SLB [6] + !BYTE $00 ; CN 0 + !BYTE $76,$14 ; SLW [20] + !BYTE $00 ; CN 0 + !BYTE $76,$16 ; SLW [22] + !BYTE $00 ; CN 0 + !BYTE $76,$18 ; SLW [24] + !BYTE $20 ; MINUS ONE + !BYTE $74,$07 ; SLB [7] +_B555 +; toolsrc/parse.pla: 0251: when scan + !BYTE $54 ; CALL _C076 +_F896 !WORD _C076 + !BYTE $52 ; SEL + !WORD _B558-* +; toolsrc/parse.pla: 0252: is NEG_TKN +_B559 +; toolsrc/parse.pla: 0253: is COMP_TKN +_B560 +; toolsrc/parse.pla: 0254: is LOGIC_NOT_TKN +_B561 +; toolsrc/parse.pla: 0255: uopseq = gen_uop(uopseq, token); +; toolsrc/parse.pla: 0256: is ADD_TKN + !BYTE $66,$14 ; LLW [20] + !BYTE $68 ; LAB _D098+0 +_F897 !WORD _D098+0 + !BYTE $54 ; CALL _C066 +_F898 !WORD _C066 + !BYTE $76,$14 ; SLW [20] +_B562 +; toolsrc/parse.pla: 0257: if not r_val; exit_err(ERR_INVAL|ERR_SYNTAX); fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B563 + !WORD _B563-* + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F899 !WORD _C002 +_B563 +_B564 +; toolsrc/parse.pla: 0258: break + !BYTE $50 ; BRNCH _B557 + !WORD _B557-* +; toolsrc/parse.pla: 0259: is BPTR_TKN +_B565 +; toolsrc/parse.pla: 0260: is WPTR_TKN +_B566 +; toolsrc/parse.pla: 0261: if type & BPTR_TYPE; exit_err(ERR_INVAL|ERR_SYNTAX); fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B567 + !WORD _B567-* + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F900 !WORD _C002 +_B567 +_B568 +; toolsrc/parse.pla: 0262: type = token == BPTR_TKN ?? BPTR_TYPE :: WPTR_TYPE +; toolsrc/parse.pla: 0263: deref++ + !BYTE $68 ; LAB _D098+0 +_F901 !WORD _D098+0 + !BYTE $2A,$DE ; CB 222 + !BYTE $24 ; BRNE _B569 + !WORD _B569-* + !BYTE $2A,$20 ; CB 32 + !BYTE $50 ; BRNCH _B570 + !WORD _B570-* +_B569 + !BYTE $2A,$40 ; CB 64 +_B570 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0264: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B557 + !WORD _B557-* +; toolsrc/parse.pla: 0265: is AT_TKN +_B571 +; toolsrc/parse.pla: 0266: if not deref; exit_err(ERR_INVAL|ERR_SYNTAX); fin + !BYTE $66,$08 ; LLW [8] + !BYTE $4E ; BRTRU _B572 + !WORD _B572-* + !BYTE $2C,$04,$80 ; CW 32772 + !BYTE $54 ; CALL _C002 +_F902 !WORD _C002 +_B572 +_B573 +; toolsrc/parse.pla: 0267: deref-- + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0268: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B557 + !WORD _B557-* +; toolsrc/parse.pla: 0269: otherwise +_B558 + !BYTE $07 ; CASEBLOCK + !WORD $00A1 + !WORD _B561-* + !WORD $00AA + !WORD _B566-* + !WORD $00AB + !WORD _B562-* + !WORD $00AD + !WORD _B559-* + !WORD $00C0 + !WORD _B571-* + !WORD $00DE + !WORD _B565-* + !WORD $00FE + !WORD _B560-* +; toolsrc/parse.pla: 0270: operation = FALSE +; toolsrc/parse.pla: 0271: wend + !BYTE $00 ; CN 0 + !BYTE $74,$07 ; SLB [7] +_B557 +; toolsrc/parse.pla: 0272: until not operation +_B556 + !BYTE $64,$07 ; LLB [7] + !BYTE $4E ; BRTRU _B555 + !WORD _B555-* +_B554 +; toolsrc/parse.pla: 0273: // +; toolsrc/parse.pla: 0274: // Determine terminal type +; toolsrc/parse.pla: 0275: // +; toolsrc/parse.pla: 0276: when token + !BYTE $68 ; LAB _D098+0 +_F903 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B575-* +; toolsrc/parse.pla: 0277: is ID_TKN +_B576 +; toolsrc/parse.pla: 0278: idptr = lookup_id(tknptr, tknlen) +; toolsrc/parse.pla: 0279: if not idptr; return codeseq, 0; fin + !BYTE $6A ; LAW _D101+0 +_F904 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F905 !WORD _D100+0 + !BYTE $54 ; CALL _C044 +_F906 !WORD _C044 + !BYTE $6E,$0E ; DLW [14] + !BYTE $4E ; BRTRU _B577 + !WORD _B577-* + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +_B577 +_B578 +; toolsrc/parse.pla: 0280: if not idptr=>idtype; return codeseq, 0; fin // DEBUG + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B579 + !WORD _B579-* + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +_B579 +_B580 +; toolsrc/parse.pla: 0281: type = type | idptr=>idtype +; toolsrc/parse.pla: 0282: value = idptr=>idval +; toolsrc/parse.pla: 0283: if type & CONST_TYPE +; toolsrc/parse.pla: 0284: valseq = gen_const(NULL, value) +; toolsrc/parse.pla: 0285: deref-- + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $96 ; OR + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$0E ; LLW [14] + !BYTE $62 ; LW + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B581 + !WORD _B581-* + !BYTE $00 ; CN 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C060 +_F907 !WORD _C060 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0286: else + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B582 + !WORD _B582-* +_B581 +; toolsrc/parse.pla: 0287: valseq = type & LOCAL_TYPE ?? gen_oplcl(NULL, LADDR_CODE, value) :: gen_opglbl(NULL, GADDR_CODE, value, 0) +; toolsrc/parse.pla: 0288: if type & FUNC_TYPE +; toolsrc/parse.pla: 0289: cfnparms = idptr->funcparms +; toolsrc/parse.pla: 0290: cfnvals = idptr->funcvals +; toolsrc/parse.pla: 0291: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B583 + !WORD _B583-* + !BYTE $00 ; CN 0 + !BYTE $2A,$28 ; CB 40 + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C062 +_F908 !WORD _C062 + !BYTE $50 ; BRNCH _B584 + !WORD _B584-* +_B583 + !BYTE $00 ; CN 0 + !BYTE $2A,$26 ; CB 38 + !BYTE $66,$10 ; LLW [16] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C063 +_F909 !WORD _C063 +_B584 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B585 + !WORD _B585-* + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $74,$05 ; SLB [5] +_B585 +_B586 +; toolsrc/parse.pla: 0292: fin +_B582 +; toolsrc/parse.pla: 0293: break + !BYTE $50 ; BRNCH _B574 + !WORD _B574-* +; toolsrc/parse.pla: 0294: is INT_TKN +_B587 +; toolsrc/parse.pla: 0295: is CHR_TKN +_B588 +; toolsrc/parse.pla: 0296: value = constval +; toolsrc/parse.pla: 0297: valseq = gen_const(NULL, value) +; toolsrc/parse.pla: 0298: deref-- + !BYTE $6A ; LAW _D103+0 +_F910 !WORD _D103+0 + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C060 +_F911 !WORD _C060 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0299: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B574 + !WORD _B574-* +; toolsrc/parse.pla: 0300: is STR_TKN +_B589 +; toolsrc/parse.pla: 0301: codeseq = gen_str(codeseq, constval) +; toolsrc/parse.pla: 0302: scan +; toolsrc/parse.pla: 0303: return codeseq, stackdepth // Special case return + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _D103+0 +_F912 !WORD _D103+0 + !BYTE $54 ; CALL _C061 +_F913 !WORD _C061 + !BYTE $76,$00 ; SLW [0] + !BYTE $54 ; CALL _C076 +_F914 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$06 ; LLB [6] + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0304: break + !BYTE $50 ; BRNCH _B574 + !WORD _B574-* +; toolsrc/parse.pla: 0305: is OPEN_PAREN_TKN +_B590 +; toolsrc/parse.pla: 0306: valseq, stackdepth = parse_expr(NULL) +; toolsrc/parse.pla: 0307: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _P003 +_F915 !WORD _P003 + !BYTE $74,$06 ; SLB [6] + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D098+0 +_F916 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B591 + !WORD _B591-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F917 !WORD _C002 +_B591 +_B592 +; toolsrc/parse.pla: 0308: deref-- + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0309: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B574 + !WORD _B574-* +; toolsrc/parse.pla: 0310: is DROP_TKN +_B593 +; toolsrc/parse.pla: 0311: if r_val; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B594 + !WORD _B594-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F918 !WORD _C002 +_B594 +_B595 +; toolsrc/parse.pla: 0312: codeseq = gen_op(codeseq, DROP_CODE) +; toolsrc/parse.pla: 0313: scan +; toolsrc/parse.pla: 0314: return codeseq, 0 // Special case return + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F919 !WORD _C059 + !BYTE $76,$00 ; SLW [0] + !BYTE $54 ; CALL _C076 +_F920 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0315: is LAMBDA_TKN +_B596 +; toolsrc/parse.pla: 0316: if not r_val; return codeseq, 0; fin // Lambdas can't be LVALUES + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B597 + !WORD _B597-* + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +_B597 +_B598 +; toolsrc/parse.pla: 0317: value = parse_lambda +; toolsrc/parse.pla: 0318: valseq = gen_opglbl(NULL, GADDR_CODE, value, 0) +; toolsrc/parse.pla: 0319: deref-- + !BYTE $54 ; CALL _P004 +_F921 !WORD _P004 + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $2A,$26 ; CB 38 + !BYTE $66,$10 ; LLW [16] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C063 +_F922 !WORD _C063 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0320: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B574 + !WORD _B574-* +; toolsrc/parse.pla: 0321: otherwise +_B575 + !BYTE $07 ; CASEBLOCK + !WORD $00A6 + !WORD _B596-* + !WORD $00A8 + !WORD _B590-* + !WORD $00BB + !WORD _B593-* + !WORD $00C3 + !WORD _B588-* + !WORD $00C9 + !WORD _B587-* + !WORD $00D3 + !WORD _B589-* + !WORD $00D6 + !WORD _B576-* +; toolsrc/parse.pla: 0322: if uopseq; release_seq(uopseq); fin + !BYTE $66,$14 ; LLW [20] + !BYTE $4C ; BRFLS _B599 + !WORD _B599-* + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C007 +_F923 !WORD _C007 +_B599 +_B600 +; toolsrc/parse.pla: 0323: if codeseq; release_seq(codeseq); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $4C ; BRFLS _B601 + !WORD _B601-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C007 +_F924 !WORD _C007 +_B601 +_B602 +; toolsrc/parse.pla: 0324: return NULL, 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0325: wend +_B574 +; toolsrc/parse.pla: 0326: // +; toolsrc/parse.pla: 0327: // Parse post-ops +; toolsrc/parse.pla: 0328: // +; toolsrc/parse.pla: 0329: operation = TRUE +; toolsrc/parse.pla: 0330: repeat + !BYTE $20 ; MINUS ONE + !BYTE $74,$07 ; SLB [7] +_B604 +; toolsrc/parse.pla: 0331: when scan + !BYTE $54 ; CALL _C076 +_F925 !WORD _C076 + !BYTE $52 ; SEL + !WORD _B607-* +; toolsrc/parse.pla: 0332: is OPEN_PAREN_TKN +_B608 +; toolsrc/parse.pla: 0333: // +; toolsrc/parse.pla: 0334: // Function call - parameters generate before call address +; toolsrc/parse.pla: 0335: // +; toolsrc/parse.pla: 0336: idxseq, value = parse_list +; toolsrc/parse.pla: 0337: valseq = cat_seq(idxseq, valseq) +; toolsrc/parse.pla: 0338: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $54 ; CALL _C091 +_F926 !WORD _C091 + !BYTE $76,$10 ; SLW [16] + !BYTE $6E,$18 ; DLW [24] + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C008 +_F927 !WORD _C008 + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D098+0 +_F928 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B609 + !WORD _B609-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F929 !WORD _C002 +_B609 +_B610 +; toolsrc/parse.pla: 0339: if type & FUNC_TYPE // Can't check parm count on function pointers +; toolsrc/parse.pla: 0340: if cfnparms <> value; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B611 + !WORD _B611-* + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$10 ; LLW [16] + !BYTE $22 ; BREQ _B613 + !WORD _B613-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F930 !WORD _C002 +_B613 +_B614 +; toolsrc/parse.pla: 0341: else + !BYTE $50 ; BRNCH _B612 + !WORD _B612-* +_B611 +; toolsrc/parse.pla: 0342: if scan == POUND_TKN // Set function pointer return vals count - can't do this to regular function call +; toolsrc/parse.pla: 0343: if not parse_const(@value); exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $54 ; CALL _C076 +_F931 !WORD _C076 + !BYTE $2A,$A3 ; CB 163 + !BYTE $24 ; BRNE _B615 + !WORD _B615-* + !BYTE $28,$10 ; LLA [16] + !BYTE $54 ; CALL _C090 +_F932 !WORD _C090 + !BYTE $4E ; BRTRU _B617 + !WORD _B617-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F933 !WORD _C002 +_B617 +_B618 +; toolsrc/parse.pla: 0344: cfnvals = value +; toolsrc/parse.pla: 0345: else + !BYTE $66,$10 ; LLW [16] + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B616 + !WORD _B616-* +_B615 +; toolsrc/parse.pla: 0346: rewind(tknptr) +; toolsrc/parse.pla: 0347: fin + !BYTE $6A ; LAW _D101+0 +_F934 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F935 !WORD _C077 +_B616 +; toolsrc/parse.pla: 0348: if type & WORD_TYPE +; toolsrc/parse.pla: 0349: valseq = gen_op(valseq, LW_CODE) +; toolsrc/parse.pla: 0350: elsif type & BYTE_TYPE + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B619 + !WORD _B619-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F936 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B620 + !WORD _B620-* +_B619 +; toolsrc/parse.pla: 0351: exit_err(ERR_INVAL|ERR_CODE) +; toolsrc/parse.pla: 0352: else + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B621 + !WORD _B621-* + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F937 !WORD _C002 + !BYTE $50 ; BRNCH _B620 + !WORD _B620-* +_B621 +; toolsrc/parse.pla: 0353: deref++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0354: fin + !BYTE $76,$08 ; SLW [8] +_B620 +; toolsrc/parse.pla: 0355: fin +_B612 +; toolsrc/parse.pla: 0356: valseq = gen_op(valseq, ICAL_CODE) +; toolsrc/parse.pla: 0357: stackdepth = stackdepth + cfnvals - 1 +; toolsrc/parse.pla: 0358: cfnparms = 0 +; toolsrc/parse.pla: 0359: cfnvals = 1 +; toolsrc/parse.pla: 0360: type = type & PTR_TYPE +; toolsrc/parse.pla: 0361: deref-- + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$56 ; CB 86 + !BYTE $54 ; CALL _C059 +_F938 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $64,$06 ; LLB [6] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $8E ; DECR + !BYTE $74,$06 ; SLB [6] + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$60 ; ANDI 96 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0362: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B606 + !WORD _B606-* +; toolsrc/parse.pla: 0363: is OPEN_BRACKET_TKN +_B622 +; toolsrc/parse.pla: 0364: // +; toolsrc/parse.pla: 0365: // Array of arrays +; toolsrc/parse.pla: 0366: // +; toolsrc/parse.pla: 0367: if type & FUNC_TYPE // Function address dereference +; toolsrc/parse.pla: 0368: cfnparms = 0 +; toolsrc/parse.pla: 0369: cfnvals = 1 +; toolsrc/parse.pla: 0370: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B623 + !WORD _B623-* + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] +_B623 +_B624 +; toolsrc/parse.pla: 0371: repeat +_B626 +; toolsrc/parse.pla: 0372: valseq, drop = parse_expr(valseq) +; toolsrc/parse.pla: 0373: if token <> COMMA_TKN; break; fin + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _P003 +_F939 !WORD _P003 + !BYTE $30 ; DROP + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D098+0 +_F940 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B628 + !WORD _B628-* + !BYTE $50 ; BRNCH _B625 + !WORD _B625-* +_B628 +_B629 +; toolsrc/parse.pla: 0374: valseq = gen_op(valseq, INDEXW_CODE) +; toolsrc/parse.pla: 0375: valseq = gen_op(valseq, LW_CODE) // Multi-dimenstion arrays are array pointers to arrays +; toolsrc/parse.pla: 0376: until FALSE + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$9E ; CB 158 + !BYTE $54 ; CALL _C059 +_F941 !WORD _C059 + !BYTE $6E,$16 ; DLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F942 !WORD _C059 + !BYTE $76,$16 ; SLW [22] +_B627 + !BYTE $50 ; BRNCH _B626 + !WORD _B626-* +_B625 +; toolsrc/parse.pla: 0377: if token <> CLOSE_BRACKET_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F943 !WORD _D098+0 + !BYTE $2A,$DD ; CB 221 + !BYTE $22 ; BREQ _B630 + !WORD _B630-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F944 !WORD _C002 +_B630 +_B631 +; toolsrc/parse.pla: 0378: if type & WORD_TYPE +; toolsrc/parse.pla: 0379: valseq = gen_op(valseq, INDEXW_CODE) +; toolsrc/parse.pla: 0380: else + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B632 + !WORD _B632-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$9E ; CB 158 + !BYTE $54 ; CALL _C059 +_F945 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B633 + !WORD _B633-* +_B632 +; toolsrc/parse.pla: 0381: valseq = gen_op(valseq, INDEXB_CODE) +; toolsrc/parse.pla: 0382: if not (type & BYTE_TYPE) +; toolsrc/parse.pla: 0383: type = (type & PTR_TYPE) | BYTE_TYPE +; toolsrc/parse.pla: 0384: deref++ + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$82 ; CB 130 + !BYTE $54 ; CALL _C059 +_F946 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4E ; BRTRU _B634 + !WORD _B634-* + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$60 ; ANDI 96 + !BYTE $3E,$02 ; ORI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0385: fin + !BYTE $76,$08 ; SLW [8] +_B634 +_B635 +; toolsrc/parse.pla: 0386: fin +_B633 +; toolsrc/parse.pla: 0387: break + !BYTE $50 ; BRNCH _B606 + !WORD _B606-* +; toolsrc/parse.pla: 0388: is PTRB_TKN +_B636 +; toolsrc/parse.pla: 0389: is PTRW_TKN +_B637 +; toolsrc/parse.pla: 0390: // +; toolsrc/parse.pla: 0391: // Structure member pointer +; toolsrc/parse.pla: 0392: // +; toolsrc/parse.pla: 0393: if type & FUNC_TYPE // Function call dereference +; toolsrc/parse.pla: 0394: if cfnparms; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B638 + !WORD _B638-* + !BYTE $64,$04 ; LLB [4] + !BYTE $4C ; BRFLS _B640 + !WORD _B640-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F947 !WORD _C002 +_B640 +_B641 +; toolsrc/parse.pla: 0395: valseq = gen_op(valseq, ICAL_CODE) +; toolsrc/parse.pla: 0396: stackdepth = stackdepth + cfnvals - 1 +; toolsrc/parse.pla: 0397: cfnparms = 0 +; toolsrc/parse.pla: 0398: cfnvals = 1 +; toolsrc/parse.pla: 0399: elsif type & WORD_TYPE + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$56 ; CB 86 + !BYTE $54 ; CALL _C059 +_F948 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $64,$06 ; LLB [6] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $8E ; DECR + !BYTE $74,$06 ; SLB [6] + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B639 + !WORD _B639-* +_B638 +; toolsrc/parse.pla: 0400: valseq = gen_op(valseq, LW_CODE) // Pointer dereference +; toolsrc/parse.pla: 0401: elsif type & BYTE_TYPE + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B642 + !WORD _B642-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F949 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B639 + !WORD _B639-* +_B642 +; toolsrc/parse.pla: 0402: exit_err(ERR_INVAL|ERR_CODE) +; toolsrc/parse.pla: 0403: else + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B643 + !WORD _B643-* + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F950 !WORD _C002 + !BYTE $50 ; BRNCH _B639 + !WORD _B639-* +_B643 +; toolsrc/parse.pla: 0404: deref++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0405: fin + !BYTE $76,$08 ; SLW [8] +_B639 +; toolsrc/parse.pla: 0406: type = token == PTRB_TKN ?? BYTE_TYPE :: WORD_TYPE +; toolsrc/parse.pla: 0407: if not parse_const(@const_offset) +; toolsrc/parse.pla: 0408: rewind(tknptr) // Setting type override for following operations +; toolsrc/parse.pla: 0409: elsif const_offset <> 0 + !BYTE $68 ; LAB _D098+0 +_F951 !WORD _D098+0 + !BYTE $2A,$D8 ; CB 216 + !BYTE $24 ; BRNE _B644 + !WORD _B644-* + !BYTE $04 ; CN 2 + !BYTE $50 ; BRNCH _B645 + !WORD _B645-* +_B644 + !BYTE $08 ; CN 4 +_B645 + !BYTE $76,$0A ; SLW [10] + !BYTE $28,$12 ; LLA [18] + !BYTE $54 ; CALL _C090 +_F952 !WORD _C090 + !BYTE $4E ; BRTRU _B646 + !WORD _B646-* + !BYTE $6A ; LAW _D101+0 +_F953 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F954 !WORD _C077 + !BYTE $50 ; BRNCH _B647 + !WORD _B647-* +_B646 +; toolsrc/parse.pla: 0410: valseq = gen_const(valseq, const_offset) // Structure member pointer +; toolsrc/parse.pla: 0411: valseq = gen_op(valseq, ADD_CODE) +; toolsrc/parse.pla: 0412: fin + !BYTE $66,$12 ; LLW [18] + !BYTE $4C ; BRFLS _B648 + !WORD _B648-* + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C060 +_F955 !WORD _C060 + !BYTE $6E,$16 ; DLW [22] + !BYTE $2A,$82 ; CB 130 + !BYTE $54 ; CALL _C059 +_F956 !WORD _C059 + !BYTE $76,$16 ; SLW [22] +_B648 +_B647 +; toolsrc/parse.pla: 0413: break + !BYTE $50 ; BRNCH _B606 + !WORD _B606-* +; toolsrc/parse.pla: 0414: is DOT_TKN +_B649 +; toolsrc/parse.pla: 0415: is COLON_TKN +_B650 +; toolsrc/parse.pla: 0416: // +; toolsrc/parse.pla: 0417: // Structure member offset +; toolsrc/parse.pla: 0418: // +; toolsrc/parse.pla: 0419: if type & FUNC_TYPE // Function address dereference +; toolsrc/parse.pla: 0420: cfnparms = 0 +; toolsrc/parse.pla: 0421: cfnvals = 1 +; toolsrc/parse.pla: 0422: elsif not (type & VAR_TYPE) + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B651 + !WORD _B651-* + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $50 ; BRNCH _B652 + !WORD _B652-* +_B651 +; toolsrc/parse.pla: 0423: deref++ + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$06 ; ANDI 6 + !BYTE $4E ; BRTRU _B653 + !WORD _B653-* + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0424: fin + !BYTE $76,$08 ; SLW [8] +_B653 +_B652 +; toolsrc/parse.pla: 0425: type = token == DOT_TKN ?? BYTE_TYPE :: WORD_TYPE +; toolsrc/parse.pla: 0426: if not parse_const(@const_offset) +; toolsrc/parse.pla: 0427: rewind(tknptr) // Setting type override for following operations +; toolsrc/parse.pla: 0428: elsif const_offset <> 0 + !BYTE $68 ; LAB _D098+0 +_F957 !WORD _D098+0 + !BYTE $2A,$AE ; CB 174 + !BYTE $24 ; BRNE _B654 + !WORD _B654-* + !BYTE $04 ; CN 2 + !BYTE $50 ; BRNCH _B655 + !WORD _B655-* +_B654 + !BYTE $08 ; CN 4 +_B655 + !BYTE $76,$0A ; SLW [10] + !BYTE $28,$12 ; LLA [18] + !BYTE $54 ; CALL _C090 +_F958 !WORD _C090 + !BYTE $4E ; BRTRU _B656 + !WORD _B656-* + !BYTE $6A ; LAW _D101+0 +_F959 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F960 !WORD _C077 + !BYTE $50 ; BRNCH _B657 + !WORD _B657-* +_B656 +; toolsrc/parse.pla: 0429: valseq = gen_const(valseq, const_offset) // Structure member offset +; toolsrc/parse.pla: 0430: valseq = gen_op(valseq, ADD_CODE) +; toolsrc/parse.pla: 0431: fin + !BYTE $66,$12 ; LLW [18] + !BYTE $4C ; BRFLS _B658 + !WORD _B658-* + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C060 +_F961 !WORD _C060 + !BYTE $6E,$16 ; DLW [22] + !BYTE $2A,$82 ; CB 130 + !BYTE $54 ; CALL _C059 +_F962 !WORD _C059 + !BYTE $76,$16 ; SLW [22] +_B658 +_B657 +; toolsrc/parse.pla: 0432: break + !BYTE $50 ; BRNCH _B606 + !WORD _B606-* +; toolsrc/parse.pla: 0433: otherwise +_B607 + !BYTE $06 ; CASEBLOCK + !WORD $00A8 + !WORD _B608-* + !WORD $00AE + !WORD _B649-* + !WORD $00BA + !WORD _B650-* + !WORD $00D7 + !WORD _B637-* + !WORD $00D8 + !WORD _B636-* + !WORD $00DB + !WORD _B622-* +; toolsrc/parse.pla: 0434: operation = FALSE +; toolsrc/parse.pla: 0435: wend + !BYTE $00 ; CN 0 + !BYTE $74,$07 ; SLB [7] +_B606 +; toolsrc/parse.pla: 0436: until not operation +_B605 + !BYTE $64,$07 ; LLB [7] + !BYTE $4E ; BRTRU _B604 + !WORD _B604-* +_B603 +; toolsrc/parse.pla: 0437: // +; toolsrc/parse.pla: 0438: //Probably parsing RVALUE as LVALUE +; toolsrc/parse.pla: 0439: // +; toolsrc/parse.pla: 0440: if deref < 0 +; toolsrc/parse.pla: 0441: release_seq(valseq) +; toolsrc/parse.pla: 0442: release_seq(uopseq) +; toolsrc/parse.pla: 0443: return codeseq, 0 + !BYTE $66,$08 ; LLW [8] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B659 + !WORD _B659-* + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C007 +_F963 !WORD _C007 + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C007 +_F964 !WORD _C007 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0444: fin +_B659 +_B660 +; toolsrc/parse.pla: 0445: // +; toolsrc/parse.pla: 0446: // Resolve outstanding dereference pointer loads +; toolsrc/parse.pla: 0447: // +; toolsrc/parse.pla: 0448: while deref > r_val + !BYTE $50 ; BRNCH _B663 + !WORD _B663-* +_B661 +; toolsrc/parse.pla: 0449: if type & FUNC_TYPE +; toolsrc/parse.pla: 0450: if cfnparms; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B664 + !WORD _B664-* + !BYTE $64,$04 ; LLB [4] + !BYTE $4C ; BRFLS _B666 + !WORD _B666-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F965 !WORD _C002 +_B666 +_B667 +; toolsrc/parse.pla: 0451: valseq = gen_op(valseq, ICAL_CODE) +; toolsrc/parse.pla: 0452: stackdepth = stackdepth + cfnvals - 1 +; toolsrc/parse.pla: 0453: cfnparms = 0 +; toolsrc/parse.pla: 0454: cfnvals = 1 +; toolsrc/parse.pla: 0455: type = type & ~FUNC_TYPE; +; toolsrc/parse.pla: 0456: else + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$56 ; CB 86 + !BYTE $54 ; CALL _C059 +_F966 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $64,$06 ; LLB [6] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $8E ; DECR + !BYTE $74,$06 ; SLB [6] + !BYTE $00 ; CN 0 + !BYTE $74,$04 ; SLB [4] + !BYTE $02 ; CN 1 + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$0A ; LLW [10] + !BYTE $5E,$F7 ; CFFB -9 + !BYTE $94 ; AND + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B665 + !WORD _B665-* +_B664 +; toolsrc/parse.pla: 0457: valseq = gen_op(valseq, LW_CODE) +; toolsrc/parse.pla: 0458: fin + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F967 !WORD _C059 + !BYTE $76,$16 ; SLW [22] +_B665 +; toolsrc/parse.pla: 0459: deref-- + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0460: loop + !BYTE $76,$08 ; SLW [8] +_B663 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B661 + !WORD _B661-* +_B662 +; toolsrc/parse.pla: 0461: if deref +; toolsrc/parse.pla: 0462: if type & FUNC_TYPE +; toolsrc/parse.pla: 0463: if cfnparms; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $66,$08 ; LLW [8] + !BYTE $4C ; BRFLS _B668 + !WORD _B668-* + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B670 + !WORD _B670-* + !BYTE $64,$04 ; LLB [4] + !BYTE $4C ; BRFLS _B672 + !WORD _B672-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F968 !WORD _C002 +_B672 +_B673 +; toolsrc/parse.pla: 0464: valseq = gen_op(valseq, ICAL_CODE) +; toolsrc/parse.pla: 0465: stackdepth = stackdepth + cfnvals - 1 +; toolsrc/parse.pla: 0466: type = type & ~FUNC_TYPE +; toolsrc/parse.pla: 0467: elsif type & (BPTR_TYPE) // Prefer the pointer type. + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$56 ; CB 86 + !BYTE $54 ; CALL _C059 +_F969 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $64,$06 ; LLB [6] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $8E ; DECR + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$0A ; LLW [10] + !BYTE $5E,$F7 ; CFFB -9 + !BYTE $94 ; AND + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B671 + !WORD _B671-* +_B670 +; toolsrc/parse.pla: 0468: valseq = gen_op(valseq, LB_CODE) +; toolsrc/parse.pla: 0469: elsif type & (WPTR_TYPE) + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B674 + !WORD _B674-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$60 ; CB 96 + !BYTE $54 ; CALL _C059 +_F970 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B671 + !WORD _B671-* +_B674 +; toolsrc/parse.pla: 0470: valseq = gen_op(valseq, LW_CODE) +; toolsrc/parse.pla: 0471: elsif type & (BYTE_TYPE) + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$40 ; ANDI 64 + !BYTE $4C ; BRFLS _B675 + !WORD _B675-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F971 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B671 + !WORD _B671-* +_B675 +; toolsrc/parse.pla: 0472: valseq = gen_op(valseq, LB_CODE) +; toolsrc/parse.pla: 0473: elsif type & (WORD_TYPE) + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B676 + !WORD _B676-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$60 ; CB 96 + !BYTE $54 ; CALL _C059 +_F972 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B671 + !WORD _B671-* +_B676 +; toolsrc/parse.pla: 0474: valseq = gen_op(valseq, LW_CODE) +; toolsrc/parse.pla: 0475: else + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B677 + !WORD _B677-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$62 ; CB 98 + !BYTE $54 ; CALL _C059 +_F973 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B671 + !WORD _B671-* +_B677 +; toolsrc/parse.pla: 0476: exit_err(ERR_INVAL|ERR_CODE) +; toolsrc/parse.pla: 0477: fin + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F974 !WORD _C002 +_B671 +; toolsrc/parse.pla: 0478: fin +_B668 +_B669 +; toolsrc/parse.pla: 0479: // +; toolsrc/parse.pla: 0480: // Output pre-operations +; toolsrc/parse.pla: 0481: // +; toolsrc/parse.pla: 0482: valseq = cat_seq(valseq, uopseq) +; toolsrc/parse.pla: 0483: // +; toolsrc/parse.pla: 0484: // Wrap up LVALUE store +; toolsrc/parse.pla: 0485: // +; toolsrc/parse.pla: 0486: if not r_val +; toolsrc/parse.pla: 0487: if type & (BYTE_TYPE | BPTR_TYPE) +; toolsrc/parse.pla: 0488: valseq = gen_op(valseq, SB_CODE) +; toolsrc/parse.pla: 0489: elsif type & (WORD_TYPE | WPTR_TYPE) + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C008 +_F975 !WORD _C008 + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B678 + !WORD _B678-* + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$22 ; ANDI 34 + !BYTE $4C ; BRFLS _B680 + !WORD _B680-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$70 ; CB 112 + !BYTE $54 ; CALL _C059 +_F976 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B681 + !WORD _B681-* +_B680 +; toolsrc/parse.pla: 0490: valseq = gen_op(valseq, SW_CODE) +; toolsrc/parse.pla: 0491: else + !BYTE $66,$0A ; LLW [10] + !BYTE $3C,$44 ; ANDI 68 + !BYTE $4C ; BRFLS _B682 + !WORD _B682-* + !BYTE $66,$16 ; LLW [22] + !BYTE $2A,$72 ; CB 114 + !BYTE $54 ; CALL _C059 +_F977 !WORD _C059 + !BYTE $76,$16 ; SLW [22] + !BYTE $50 ; BRNCH _B681 + !WORD _B681-* +_B682 +; toolsrc/parse.pla: 0492: release_seq(valseq) +; toolsrc/parse.pla: 0493: return codeseq, 0 // Function or const cannot be LVALUE, must be RVALUE + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C007 +_F978 !WORD _C007 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0494: fin +_B681 +; toolsrc/parse.pla: 0495: stackdepth-- + !BYTE $64,$06 ; LLB [6] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0496: fin + !BYTE $74,$06 ; SLB [6] +_B678 +_B679 +; toolsrc/parse.pla: 0497: return cat_seq(codeseq, valseq), stackdepth + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C008 +_F979 !WORD _C008 + !BYTE $64,$06 ; LLB [6] + !BYTE $5A,$1A ; LEAVE 26 +; toolsrc/parse.pla: 0498: end +; toolsrc/parse.pla: 0499: def parse_subexpr(codeseq)#2 + ; codeseq -> [0] +_C093 ; parse_subexpr() +; toolsrc/parse.pla: 0500: byte stackdepth, matchdepth, stkdepth1, prevmatch, matchop, i + ; stackdepth -> [2] + ; matchdepth -> [3] + ; stkdepth1 -> [4] + ; prevmatch -> [5] + ; matchop -> [6] + ; i -> [7] +; toolsrc/parse.pla: 0501: word optos + ; optos -> [8] +; toolsrc/parse.pla: 0502: word tag_else, tag_endop + ; tag_else -> [10] + ; tag_endop -> [12] +; toolsrc/parse.pla: 0503: +; toolsrc/parse.pla: 0504: stackdepth = 0 + !BYTE $58,$0E,$01 ; ENTER 14,1 +; toolsrc/parse.pla: 0505: matchop = 0 +; toolsrc/parse.pla: 0506: optos = opsp +; toolsrc/parse.pla: 0507: repeat + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $00 ; CN 0 + !BYTE $74,$06 ; SLB [6] + !BYTE $6A ; LAW _D041+0 +_F980 !WORD _D041+0 + !BYTE $76,$08 ; SLW [8] +_B684 +; toolsrc/parse.pla: 0508: prevmatch = matchop +; toolsrc/parse.pla: 0509: matchop = 0 +; toolsrc/parse.pla: 0510: codeseq, matchdepth = parse_value(codeseq, RVALUE) +; toolsrc/parse.pla: 0511: if matchdepth +; toolsrc/parse.pla: 0512: stackdepth = stackdepth + matchdepth +; toolsrc/parse.pla: 0513: matchop = 1 +; toolsrc/parse.pla: 0514: for i = 0 to bops_tblsz + !BYTE $64,$06 ; LLB [6] + !BYTE $74,$05 ; SLB [5] + !BYTE $00 ; CN 0 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C092 +_F981 !WORD _C092 + !BYTE $74,$03 ; SLB [3] + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$03 ; LLB [3] + !BYTE $4C ; BRFLS _B686 + !WORD _B686-* + !BYTE $64,$02 ; LLB [2] + !BYTE $B0,$03 ; ADDLB [3] + !BYTE $74,$02 ; SLB [2] + !BYTE $02 ; CN 1 + !BYTE $74,$06 ; SLB [6] + !BYTE $2A,$11 ; CB 17 + !BYTE $00 ; CN 0 +_B689 + !BYTE $6C,$07 ; DLB [7] +; toolsrc/parse.pla: 0515: if token == bops_tbl[i] +; toolsrc/parse.pla: 0516: matchop = 2 +; toolsrc/parse.pla: 0517: if bops_prec[i] >= tos_op_prec(optos) +; toolsrc/parse.pla: 0518: codeseq = gen_bop(codeseq, pop_op) +; toolsrc/parse.pla: 0519: stackdepth-- + !BYTE $68 ; LAB _D098+0 +_F982 !WORD _D098+0 + !BYTE $26 ; LA _D037+0 +_F983 !WORD _D037+0 + !BYTE $B0,$07 ; ADDLB [7] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B691 + !WORD _B691-* + !BYTE $04 ; CN 2 + !BYTE $74,$06 ; SLB [6] + !BYTE $26 ; LA _D038+0 +_F984 !WORD _D038+0 + !BYTE $B0,$07 ; ADDLB [7] + !BYTE $60 ; LB + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C083 +_F985 !WORD _C083 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B693 + !WORD _B693-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C081 +_F986 !WORD _C081 + !BYTE $54 ; CALL _C067 +_F987 !WORD _C067 + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0520: fin + !BYTE $74,$02 ; SLB [2] +_B693 +_B694 +; toolsrc/parse.pla: 0521: push_op(token, bops_prec[i]) +; toolsrc/parse.pla: 0522: break + !BYTE $68 ; LAB _D098+0 +_F988 !WORD _D098+0 + !BYTE $26 ; LA _D038+0 +_F989 !WORD _D038+0 + !BYTE $B0,$07 ; ADDLB [7] + !BYTE $60 ; LB + !BYTE $54 ; CALL _C080 +_F990 !WORD _C080 + !BYTE $50 ; BRNCH _B688 + !WORD _B688-* +; toolsrc/parse.pla: 0523: fin +_B691 +_B692 +; toolsrc/parse.pla: 0524: next +_B690 + !BYTE $A4 ; INCBRLE _B689 + !WORD _B689-* +_B688 + !BYTE $74,$07 ; SLB [7] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 0525: fin +_B686 +_B687 +; toolsrc/parse.pla: 0526: until matchop <> 2 +_B685 + !BYTE $64,$06 ; LLB [6] + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B684 + !WORD _B684-* +_B683 +; toolsrc/parse.pla: 0527: if matchop == 0 and prevmatch == 2; exit_err(ERR_SYNTAX); fin + !BYTE $64,$06 ; LLB [6] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B695 + !WORD _B695-* + !BYTE $64,$05 ; LLB [5] + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ +_B695 + !BYTE $4C ; BRFLS _B696 + !WORD _B696-* + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $54 ; CALL _C002 +_F991 !WORD _C002 +_B696 +_B697 +; toolsrc/parse.pla: 0528: while optos < opsp + !BYTE $50 ; BRNCH _B700 + !WORD _B700-* +_B698 +; toolsrc/parse.pla: 0529: codeseq = gen_bop(codeseq, pop_op) +; toolsrc/parse.pla: 0530: stackdepth-- + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C081 +_F992 !WORD _C081 + !BYTE $54 ; CALL _C067 +_F993 !WORD _C067 + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0531: loop + !BYTE $74,$02 ; SLB [2] +_B700 + !BYTE $66,$08 ; LLW [8] + !BYTE $6A ; LAW _D041+0 +_F994 !WORD _D041+0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B698 + !WORD _B698-* +_B699 +; toolsrc/parse.pla: 0532: if token == LOGIC_AND_TKN +; toolsrc/parse.pla: 0533: if stackdepth <> 1; exit_err(ERR_OVER|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F995 !WORD _D098+0 + !BYTE $2A,$CE ; CB 206 + !BYTE $24 ; BRNE _B701 + !WORD _B701-* + !BYTE $64,$02 ; LLB [2] + !BYTE $02 ; CN 1 + !BYTE $22 ; BREQ _B703 + !WORD _B703-* + !BYTE $2C,$10,$80 ; CW 32784 + !BYTE $54 ; CALL _C002 +_F996 !WORD _C002 +_B703 +_B704 +; toolsrc/parse.pla: 0534: tag_endop = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0535: codeseq = gen_oprel(codeseq, BRAND_CODE, tag_endop) +; toolsrc/parse.pla: 0536: codeseq, stkdepth1 = parse_subexpr(codeseq) +; toolsrc/parse.pla: 0537: if stkdepth1 <> stackdepth; exit_err(ERR_INVAL|ERR_CODE); fin + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F997 !WORD _C004 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$AC ; CB 172 + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C064 +_F998 !WORD _C064 + !BYTE $6E,$00 ; DLW [0] + !BYTE $54 ; CALL _C093 +_F999 !WORD _C093 + !BYTE $74,$04 ; SLB [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$02 ; LLB [2] + !BYTE $22 ; BREQ _B705 + !WORD _B705-* + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F1000 !WORD _C002 +_B705 +_B706 +; toolsrc/parse.pla: 0538: codeseq = gen_ctag(codeseq, tag_endop) +; toolsrc/parse.pla: 0539: elsif token == LOGIC_OR_TKN + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C065 +_F1001 !WORD _C065 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B702 + !WORD _B702-* +_B701 +; toolsrc/parse.pla: 0540: if stackdepth <> 1; exit_err(ERR_OVER|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F1002 !WORD _D098+0 + !BYTE $2A,$CF ; CB 207 + !BYTE $24 ; BRNE _B707 + !WORD _B707-* + !BYTE $64,$02 ; LLB [2] + !BYTE $02 ; CN 1 + !BYTE $22 ; BREQ _B708 + !WORD _B708-* + !BYTE $2C,$10,$80 ; CW 32784 + !BYTE $54 ; CALL _C002 +_F1003 !WORD _C002 +_B708 +_B709 +; toolsrc/parse.pla: 0541: tag_endop = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0542: codeseq = gen_oprel(codeseq, BROR_CODE, tag_endop) +; toolsrc/parse.pla: 0543: codeseq, stkdepth1 = parse_subexpr(codeseq) +; toolsrc/parse.pla: 0544: if stkdepth1 <> stackdepth; exit_err(ERR_INVAL|ERR_CODE); fin + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1004 !WORD _C004 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$AE ; CB 174 + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C064 +_F1005 !WORD _C064 + !BYTE $6E,$00 ; DLW [0] + !BYTE $54 ; CALL _C093 +_F1006 !WORD _C093 + !BYTE $74,$04 ; SLB [4] + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$04 ; LLB [4] + !BYTE $64,$02 ; LLB [2] + !BYTE $22 ; BREQ _B710 + !WORD _B710-* + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F1007 !WORD _C002 +_B710 +_B711 +; toolsrc/parse.pla: 0545: codeseq = gen_ctag(codeseq, tag_endop) +; toolsrc/parse.pla: 0546: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C065 +_F1008 !WORD _C065 + !BYTE $76,$00 ; SLW [0] +_B707 +_B702 +; toolsrc/parse.pla: 0547: return codeseq, stackdepth + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$0E ; LEAVE 14 +; toolsrc/parse.pla: 0548: end +; toolsrc/parse.pla: 0549: def parse_expr(codeseq)#2 + ; codeseq -> [0] +_P003 ; parse_expr(codeseq)#2() +_C094 ; parse_expr() +; toolsrc/parse.pla: 0550: byte stackdepth, stkdepth1 + ; stackdepth -> [2] + ; stkdepth1 -> [3] +; toolsrc/parse.pla: 0551: word tag_else, tag_endop + ; tag_else -> [4] + ; tag_endop -> [6] +; toolsrc/parse.pla: 0552: +; toolsrc/parse.pla: 0553: codeseq, stackdepth = parse_subexpr(codeseq) + !BYTE $58,$08,$01 ; ENTER 8,1 +; toolsrc/parse.pla: 0554: if token == TERNARY_TKN +; toolsrc/parse.pla: 0555: if stackdepth <> 1; exit_err(ERR_OVER|ERR_SYNTAX); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C093 +_F1009 !WORD _C093 + !BYTE $74,$02 ; SLB [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $68 ; LAB _D098+0 +_F1010 !WORD _D098+0 + !BYTE $2A,$BF ; CB 191 + !BYTE $24 ; BRNE _B712 + !WORD _B712-* + !BYTE $64,$02 ; LLB [2] + !BYTE $02 ; CN 1 + !BYTE $22 ; BREQ _B714 + !WORD _B714-* + !BYTE $2C,$10,$80 ; CW 32784 + !BYTE $54 ; CALL _C002 +_F1011 !WORD _C002 +_B714 +_B715 +; toolsrc/parse.pla: 0556: tag_else = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0557: tag_endop = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0558: codeseq = gen_oprel(codeseq, BRFALSE_CODE, tag_else) +; toolsrc/parse.pla: 0559: codeseq, stkdepth1 = parse_expr(codeseq) +; toolsrc/parse.pla: 0560: if token <> TRIELSE_TKN; exit_err(ERR_MISS|ERR_SYNTAX); fin + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1012 !WORD _C004 + !BYTE $76,$04 ; SLW [4] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1013 !WORD _C004 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C064 +_F1014 !WORD _C064 + !BYTE $6E,$00 ; DLW [0] + !BYTE $54 ; CALL _C094 +_F1015 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $76,$00 ; SLW [0] + !BYTE $68 ; LAB _D098+0 +_F1016 !WORD _D098+0 + !BYTE $2A,$DF ; CB 223 + !BYTE $22 ; BREQ _B716 + !WORD _B716-* + !BYTE $2C,$08,$80 ; CW 32776 + !BYTE $54 ; CALL _C002 +_F1017 !WORD _C002 +_B716 +_B717 +; toolsrc/parse.pla: 0561: codeseq = gen_oprel(codeseq, BRNCH_CODE, tag_endop) +; toolsrc/parse.pla: 0562: codeseq = gen_ctag(codeseq, tag_else) +; toolsrc/parse.pla: 0563: codeseq, stackdepth = parse_expr(codeseq) +; toolsrc/parse.pla: 0564: if stkdepth1 <> stackdepth; exit_err(ERR_INVAL|ERR_CODE); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$50 ; CB 80 + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C064 +_F1018 !WORD _C064 + !BYTE $6E,$00 ; DLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C065 +_F1019 !WORD _C065 + !BYTE $6E,$00 ; DLW [0] + !BYTE $54 ; CALL _C094 +_F1020 !WORD _C094 + !BYTE $74,$02 ; SLB [2] + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$03 ; LLB [3] + !BYTE $64,$02 ; LLB [2] + !BYTE $22 ; BREQ _B718 + !WORD _B718-* + !BYTE $2C,$04,$01 ; CW 260 + !BYTE $54 ; CALL _C002 +_F1021 !WORD _C002 +_B718 +_B719 +; toolsrc/parse.pla: 0565: codeseq = gen_ctag(codeseq, tag_endop) +; toolsrc/parse.pla: 0566: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C065 +_F1022 !WORD _C065 + !BYTE $76,$00 ; SLW [0] +_B712 +_B713 +; toolsrc/parse.pla: 0567: return codeseq, stackdepth + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$08 ; LEAVE 8 +; toolsrc/parse.pla: 0568: end +; toolsrc/parse.pla: 0569: def parse_set(codeseq) + ; codeseq -> [0] +_C095 ; parse_set() +; toolsrc/parse.pla: 0570: word setptr, rseq, setseq[16] + ; setptr -> [2] + ; rseq -> [4] + ; setseq -> [6] +; toolsrc/parse.pla: 0571: byte lparms, rparms, i, lambda_set + ; lparms -> [38] + ; rparms -> [39] + ; i -> [40] + ; lambda_set -> [41] +; toolsrc/parse.pla: 0572: +; toolsrc/parse.pla: 0573: lparms = 0 + !BYTE $58,$2A,$01 ; ENTER 42,1 +; toolsrc/parse.pla: 0574: rparms = 0 +; toolsrc/parse.pla: 0575: lambda_set = lambda_cnt +; toolsrc/parse.pla: 0576: setptr = tknptr +; toolsrc/parse.pla: 0577: repeat + !BYTE $00 ; CN 0 + !BYTE $74,$26 ; SLB [38] + !BYTE $00 ; CN 0 + !BYTE $74,$27 ; SLB [39] + !BYTE $68 ; LAB _D114+0 +_F1023 !WORD _D114+0 + !BYTE $74,$29 ; SLB [41] + !BYTE $6A ; LAW _D101+0 +_F1024 !WORD _D101+0 + !BYTE $76,$02 ; SLW [2] +_B721 +; toolsrc/parse.pla: 0578: setseq[lparms], drop = parse_value(NULL, LVALUE) +; toolsrc/parse.pla: 0579: if not setseq[lparms]; break; fin + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C092 +_F1025 !WORD _C092 + !BYTE $30 ; DROP + !BYTE $28,$06 ; LLA [6] + !BYTE $B8,$26 ; IDXLB [38] + !BYTE $72 ; SW + !BYTE $28,$06 ; LLA [6] + !BYTE $B8,$26 ; IDXLB [38] + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B723 + !WORD _B723-* + !BYTE $50 ; BRNCH _B720 + !WORD _B720-* +_B723 +_B724 +; toolsrc/parse.pla: 0580: lparms++ + !BYTE $64,$26 ; LLB [38] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0581: until token <> COMMA_TKN + !BYTE $74,$26 ; SLB [38] +_B722 + !BYTE $68 ; LAB _D098+0 +_F1026 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B721 + !WORD _B721-* +_B720 +; toolsrc/parse.pla: 0582: if not lparms or token <> SET_TKN +; toolsrc/parse.pla: 0583: // +; toolsrc/parse.pla: 0584: // Not a set list - free everything up +; toolsrc/parse.pla: 0585: // +; toolsrc/parse.pla: 0586: rewind(setptr) +; toolsrc/parse.pla: 0587: while lparms + !BYTE $64,$26 ; LLB [38] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B725 + !WORD _B725-* + !BYTE $68 ; LAB _D098+0 +_F1027 !WORD _D098+0 + !BYTE $2A,$BD ; CB 189 + !BYTE $42 ; ISNE +_B725 + !BYTE $4C ; BRFLS _B726 + !WORD _B726-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C077 +_F1028 !WORD _C077 + !BYTE $50 ; BRNCH _B730 + !WORD _B730-* +_B728 +; toolsrc/parse.pla: 0588: lparms-- + !BYTE $64,$26 ; LLB [38] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0589: release_seq(setseq[lparms]) +; toolsrc/parse.pla: 0590: loop + !BYTE $74,$26 ; SLB [38] + !BYTE $28,$06 ; LLA [6] + !BYTE $B8,$26 ; IDXLB [38] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C007 +_F1029 !WORD _C007 +_B730 + !BYTE $64,$26 ; LLB [38] + !BYTE $4E ; BRTRU _B728 + !WORD _B728-* +_B729 +; toolsrc/parse.pla: 0591: while lambda_cnt > lambda_set + !BYTE $50 ; BRNCH _B733 + !WORD _B733-* +_B731 +; toolsrc/parse.pla: 0592: lambda_cnt-- + !BYTE $68 ; LAB _D114+0 +_F1030 !WORD _D114+0 + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0593: lambda_num-- + !BYTE $78 ; SAB _D114+0 +_F1031 !WORD _D114+0 + !BYTE $68 ; LAB _D115+0 +_F1032 !WORD _D115+0 + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0594: release_seq(lambda_seq[lambda_cnt]) +; toolsrc/parse.pla: 0595: loop + !BYTE $78 ; SAB _D115+0 +_F1033 !WORD _D115+0 + !BYTE $26 ; LA _D117+0 +_F1034 !WORD _D117+0 + !BYTE $BC ; IDXAB _D114+0 +_F1035 !WORD _D114+0 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C007 +_F1036 !WORD _C007 +_B733 + !BYTE $68 ; LAB _D114+0 +_F1037 !WORD _D114+0 + !BYTE $64,$29 ; LLB [41] + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B731 + !WORD _B731-* +_B732 +; toolsrc/parse.pla: 0596: return NULL + !BYTE $00 ; CN 0 + !BYTE $5A,$2A ; LEAVE 42 +; toolsrc/parse.pla: 0597: fin +_B726 +_B727 +; toolsrc/parse.pla: 0598: rseq, rparms = parse_list +; toolsrc/parse.pla: 0599: if lparms > rparms; exit_err(ERR_MISS|ERR_CODE|ERR_FRAME); fin + !BYTE $54 ; CALL _C091 +_F1038 !WORD _C091 + !BYTE $74,$27 ; SLB [39] + !BYTE $76,$04 ; SLW [4] + !BYTE $64,$26 ; LLB [38] + !BYTE $64,$27 ; LLB [39] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B734 + !WORD _B734-* + !BYTE $2C,$08,$21 ; CW 8456 + !BYTE $54 ; CALL _C002 +_F1039 !WORD _C002 +_B734 +_B735 +; toolsrc/parse.pla: 0600: codeseq = cat_seq(codeseq, rseq) +; toolsrc/parse.pla: 0601: if lparms < rparms +; toolsrc/parse.pla: 0602: parse_warn("Silently dropping extra set values") + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C008 +_F1040 !WORD _C008 + !BYTE $76,$00 ; SLW [0] + !BYTE $64,$26 ; LLB [38] + !BYTE $64,$27 ; LLB [39] + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B736 + !WORD _B736-* + !BYTE $2E ; CS + !BYTE $22 + !BYTE $53,$69,$6C,$65,$6E,$74,$6C,$79 + !BYTE $20,$64,$72,$6F,$70,$70,$69,$6E + !BYTE $67,$20,$65,$78,$74,$72,$61,$20 + !BYTE $73,$65,$74,$20,$76,$61,$6C,$75 + !BYTE $65,$73 + !BYTE $54 ; CALL _C003 +_F1041 !WORD _C003 +; toolsrc/parse.pla: 0603: for i = rparms - lparms downto 1 + !BYTE $02 ; CN 1 + !BYTE $64,$27 ; LLB [39] + !BYTE $64,$26 ; LLB [38] + !BYTE $84 ; SUB + !BYTE $A2 ; BRLT _B738 + !WORD _B738-* +_B739 + !BYTE $6C,$28 ; DLB [40] +; toolsrc/parse.pla: 0604: codeseq = gen_op(codeseq, DROP_CODE) +; toolsrc/parse.pla: 0605: next + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1042 !WORD _C059 + !BYTE $76,$00 ; SLW [0] +_B740 + !BYTE $A8 ; DECBRGE _B739 + !WORD _B739-* +_B738 + !BYTE $74,$28 ; SLB [40] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 0606: fin +_B736 +_B737 +; toolsrc/parse.pla: 0607: while lparms + !BYTE $50 ; BRNCH _B743 + !WORD _B743-* +_B741 +; toolsrc/parse.pla: 0608: lparms-- + !BYTE $64,$26 ; LLB [38] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0609: codeseq = cat_seq(codeseq, setseq[lparms]) +; toolsrc/parse.pla: 0610: loop + !BYTE $74,$26 ; SLB [38] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$06 ; LLA [6] + !BYTE $B8,$26 ; IDXLB [38] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C008 +_F1043 !WORD _C008 + !BYTE $76,$00 ; SLW [0] +_B743 + !BYTE $64,$26 ; LLB [38] + !BYTE $4E ; BRTRU _B741 + !WORD _B741-* +_B742 +; toolsrc/parse.pla: 0611: return codeseq + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$2A ; LEAVE 42 +; toolsrc/parse.pla: 0612: end +; toolsrc/parse.pla: 0613: def parse_stmnt +_C096 ; parse_stmnt() +; toolsrc/parse.pla: 0614: byte type, elem_type, elem_size, cfnvals + ; type -> [0] + ; elem_type -> [1] + ; elem_size -> [2] + ; cfnvals -> [3] +; toolsrc/parse.pla: 0615: word seq, fromseq, toseq, tag_prevbrk, tag_prevcnt, tag_else, tag_endif, tag_while, tag_wend + ; seq -> [4] + ; fromseq -> [6] + ; toseq -> [8] + ; tag_prevbrk -> [10] + ; tag_prevcnt -> [12] + ; tag_else -> [14] + ; tag_endif -> [16] + ; tag_while -> [18] + ; tag_wend -> [20] +; toolsrc/parse.pla: 0616: word tag_repeat, tag_for, tag_choice, tag_of, idptr, addr, stepdir + ; tag_repeat -> [22] + ; tag_for -> [24] + ; tag_choice -> [26] + ; tag_of -> [28] + ; idptr -> [30] + ; addr -> [32] + ; stepdir -> [34] +; toolsrc/parse.pla: 0617: word caseconst, casecnt, caseval, casetag, i + ; caseconst -> [36] + ; casecnt -> [38] + ; caseval -> [40] + ; casetag -> [42] + ; i -> [44] +; toolsrc/parse.pla: 0618: +; toolsrc/parse.pla: 0619: if token <> END_TKN and token <> DONE_TKN and token <> OF_TKN and token <> DEFAULT_TKN + !BYTE $58,$2E,$00 ; ENTER 46,0 +; toolsrc/parse.pla: 0620: prevstmnt = token +; toolsrc/parse.pla: 0621: fin + !BYTE $68 ; LAB _D098+0 +_F1044 !WORD _D098+0 + !BYTE $2A,$87 ; CB 135 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B744 + !WORD _B744-* + !BYTE $68 ; LAB _D098+0 +_F1045 !WORD _D098+0 + !BYTE $2A,$98 ; CB 152 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B745 + !WORD _B745-* + !BYTE $68 ; LAB _D098+0 +_F1046 !WORD _D098+0 + !BYTE $2A,$8B ; CB 139 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B746 + !WORD _B746-* + !BYTE $68 ; LAB _D098+0 +_F1047 !WORD _D098+0 + !BYTE $2A,$8C ; CB 140 + !BYTE $42 ; ISNE +_B746 +_B745 +_B744 + !BYTE $4C ; BRFLS _B747 + !WORD _B747-* + !BYTE $68 ; LAB _D098+0 +_F1048 !WORD _D098+0 + !BYTE $78 ; SAB _D110+0 +_F1049 !WORD _D110+0 +_B747 +_B748 +; toolsrc/parse.pla: 0622: when token + !BYTE $68 ; LAB _D098+0 +_F1050 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B750-* +; toolsrc/parse.pla: 0623: is IF_TKN +_B751 +; toolsrc/parse.pla: 0624: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0625: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1051 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B752 + !WORD _B752-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1052 !WORD _C002 +_B752 +_B753 +; toolsrc/parse.pla: 0626: if cfnvals > 1 +; toolsrc/parse.pla: 0627: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B754 + !WORD _B754-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1053 !WORD _C003 +; toolsrc/parse.pla: 0628: while cfnvals > 1; cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B758 + !WORD _B758-* +_B756 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1054 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B758 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B756 + !WORD _B756-* +_B757 +; toolsrc/parse.pla: 0629: fin +_B754 +_B755 +; toolsrc/parse.pla: 0630: tag_else = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0631: tag_endif = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0632: seq = gen_oprel(seq, BRFALSE_CODE, tag_else) +; toolsrc/parse.pla: 0633: emit_seq(seq) +; toolsrc/parse.pla: 0634: repeat + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1055 !WORD _C004 + !BYTE $76,$0E ; SLW [14] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1056 !WORD _C004 + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C064 +_F1057 !WORD _C064 + !BYTE $6E,$04 ; DLW [4] + !BYTE $54 ; CALL _C041 +_F1058 !WORD _C041 +_B760 +; toolsrc/parse.pla: 0635: while parse_stmnt + !BYTE $50 ; BRNCH _B764 + !WORD _B764-* +_B762 +; toolsrc/parse.pla: 0636: nextln +; toolsrc/parse.pla: 0637: loop + !BYTE $54 ; CALL _C079 +_F1059 !WORD _C079 + !BYTE $30 ; DROP +_B764 + !BYTE $54 ; CALL _C096 +_F1060 !WORD _C096 + !BYTE $4E ; BRTRU _B762 + !WORD _B762-* +_B763 +; toolsrc/parse.pla: 0638: if token <> ELSEIF_TKN +; toolsrc/parse.pla: 0639: break + !BYTE $68 ; LAB _D098+0 +_F1061 !WORD _D098+0 + !BYTE $2A,$84 ; CB 132 + !BYTE $22 ; BREQ _B765 + !WORD _B765-* + !BYTE $50 ; BRNCH _B759 + !WORD _B759-* +; toolsrc/parse.pla: 0640: fin +_B765 +_B766 +; toolsrc/parse.pla: 0641: emit_branch(tag_endif) +; toolsrc/parse.pla: 0642: emit_tag(tag_else) +; toolsrc/parse.pla: 0643: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0644: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C028 +_F1062 !WORD _C028 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C039 +_F1063 !WORD _C039 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1064 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B767 + !WORD _B767-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1065 !WORD _C002 +_B767 +_B768 +; toolsrc/parse.pla: 0645: if cfnvals > 1 +; toolsrc/parse.pla: 0646: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B769 + !WORD _B769-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1066 !WORD _C003 +; toolsrc/parse.pla: 0647: while cfnvals > 1; cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B773 + !WORD _B773-* +_B771 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1067 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B773 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B771 + !WORD _B771-* +_B772 +; toolsrc/parse.pla: 0648: fin +_B769 +_B770 +; toolsrc/parse.pla: 0649: tag_else = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0650: seq = gen_oprel(seq, BRFALSE_CODE, tag_else) +; toolsrc/parse.pla: 0651: emit_seq(seq) +; toolsrc/parse.pla: 0652: until FALSE + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1068 !WORD _C004 + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C064 +_F1069 !WORD _C064 + !BYTE $6E,$04 ; DLW [4] + !BYTE $54 ; CALL _C041 +_F1070 !WORD _C041 +_B761 + !BYTE $50 ; BRNCH _B760 + !WORD _B760-* +_B759 +; toolsrc/parse.pla: 0653: if token == ELSE_TKN +; toolsrc/parse.pla: 0654: emit_branch(tag_endif) +; toolsrc/parse.pla: 0655: emit_tag(tag_else) +; toolsrc/parse.pla: 0656: scan +; toolsrc/parse.pla: 0657: while parse_stmnt + !BYTE $68 ; LAB _D098+0 +_F1071 !WORD _D098+0 + !BYTE $2A,$85 ; CB 133 + !BYTE $24 ; BRNE _B774 + !WORD _B774-* + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C028 +_F1072 !WORD _C028 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C039 +_F1073 !WORD _C039 + !BYTE $54 ; CALL _C076 +_F1074 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B778 + !WORD _B778-* +_B776 +; toolsrc/parse.pla: 0658: nextln +; toolsrc/parse.pla: 0659: loop + !BYTE $54 ; CALL _C079 +_F1075 !WORD _C079 + !BYTE $30 ; DROP +_B778 + !BYTE $54 ; CALL _C096 +_F1076 !WORD _C096 + !BYTE $4E ; BRTRU _B776 + !WORD _B776-* +_B777 +; toolsrc/parse.pla: 0660: emit_tag(tag_endif) +; toolsrc/parse.pla: 0661: else + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C039 +_F1077 !WORD _C039 + !BYTE $50 ; BRNCH _B775 + !WORD _B775-* +_B774 +; toolsrc/parse.pla: 0662: emit_tag(tag_else) +; toolsrc/parse.pla: 0663: emit_tag(tag_endif) +; toolsrc/parse.pla: 0664: fin + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C039 +_F1078 !WORD _C039 + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C039 +_F1079 !WORD _C039 +_B775 +; toolsrc/parse.pla: 0665: if token <> FIN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1080 !WORD _D098+0 + !BYTE $2A,$86 ; CB 134 + !BYTE $22 ; BREQ _B779 + !WORD _B779-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1081 !WORD _C002 +_B779 +_B780 +; toolsrc/parse.pla: 0666: break + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0667: is WHILE_TKN +_B781 +; toolsrc/parse.pla: 0668: tag_while = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0669: tag_wend = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0670: tag_prevcnt = cont_tag +; toolsrc/parse.pla: 0671: cont_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0672: tag_prevbrk = break_tag +; toolsrc/parse.pla: 0673: break_tag = tag_wend +; toolsrc/parse.pla: 0674: emit_branch(cont_tag) +; toolsrc/parse.pla: 0675: emit_tag(tag_while) +; toolsrc/parse.pla: 0676: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0677: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1082 !WORD _C004 + !BYTE $76,$12 ; SLW [18] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1083 !WORD _C004 + !BYTE $76,$14 ; SLW [20] + !BYTE $6A ; LAW _D113+0 +_F1084 !WORD _D113+0 + !BYTE $76,$0C ; SLW [12] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1085 !WORD _C004 + !BYTE $7A ; SAW _D113+0 +_F1086 !WORD _D113+0 + !BYTE $6A ; LAW _D112+0 +_F1087 !WORD _D112+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$14 ; LLW [20] + !BYTE $7A ; SAW _D112+0 +_F1088 !WORD _D112+0 + !BYTE $6A ; LAW _D113+0 +_F1089 !WORD _D113+0 + !BYTE $54 ; CALL _C028 +_F1090 !WORD _C028 + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C039 +_F1091 !WORD _C039 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1092 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B782 + !WORD _B782-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1093 !WORD _C002 +_B782 +_B783 +; toolsrc/parse.pla: 0678: if cfnvals > 1 +; toolsrc/parse.pla: 0679: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B784 + !WORD _B784-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1094 !WORD _C003 +; toolsrc/parse.pla: 0680: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B788 + !WORD _B788-* +_B786 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1095 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B788 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B786 + !WORD _B786-* +_B787 +; toolsrc/parse.pla: 0681: fin +_B784 +_B785 +; toolsrc/parse.pla: 0682: seq = gen_oprel(seq, BRTRUE_CODE, tag_while) +; toolsrc/parse.pla: 0683: while parse_stmnt + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$4E ; CB 78 + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C064 +_F1096 !WORD _C064 + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B791 + !WORD _B791-* +_B789 +; toolsrc/parse.pla: 0684: nextln +; toolsrc/parse.pla: 0685: loop + !BYTE $54 ; CALL _C079 +_F1097 !WORD _C079 + !BYTE $30 ; DROP +_B791 + !BYTE $54 ; CALL _C096 +_F1098 !WORD _C096 + !BYTE $4E ; BRTRU _B789 + !WORD _B789-* +_B790 +; toolsrc/parse.pla: 0686: if token <> LOOP_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1099 !WORD _D098+0 + !BYTE $2A,$89 ; CB 137 + !BYTE $22 ; BREQ _B792 + !WORD _B792-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1100 !WORD _C002 +_B792 +_B793 +; toolsrc/parse.pla: 0687: emit_tag(cont_tag) +; toolsrc/parse.pla: 0688: emit_seq(seq) +; toolsrc/parse.pla: 0689: emit_tag(tag_wend) +; toolsrc/parse.pla: 0690: break_tag = tag_prevbrk +; toolsrc/parse.pla: 0691: cont_tag = tag_prevcnt +; toolsrc/parse.pla: 0692: break + !BYTE $6A ; LAW _D113+0 +_F1101 !WORD _D113+0 + !BYTE $54 ; CALL _C039 +_F1102 !WORD _C039 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1103 !WORD _C041 + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C039 +_F1104 !WORD _C039 + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D112+0 +_F1105 !WORD _D112+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $7A ; SAW _D113+0 +_F1106 !WORD _D113+0 + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0693: is REPEAT_TKN +_B794 +; toolsrc/parse.pla: 0694: tag_repeat = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0695: tag_prevbrk = break_tag +; toolsrc/parse.pla: 0696: break_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0697: tag_prevcnt = cont_tag +; toolsrc/parse.pla: 0698: cont_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0699: emit_tag(tag_repeat) +; toolsrc/parse.pla: 0700: scan +; toolsrc/parse.pla: 0701: while parse_stmnt + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1107 !WORD _C004 + !BYTE $76,$16 ; SLW [22] + !BYTE $6A ; LAW _D112+0 +_F1108 !WORD _D112+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1109 !WORD _C004 + !BYTE $7A ; SAW _D112+0 +_F1110 !WORD _D112+0 + !BYTE $6A ; LAW _D113+0 +_F1111 !WORD _D113+0 + !BYTE $76,$0C ; SLW [12] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1112 !WORD _C004 + !BYTE $7A ; SAW _D113+0 +_F1113 !WORD _D113+0 + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C039 +_F1114 !WORD _C039 + !BYTE $54 ; CALL _C076 +_F1115 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B797 + !WORD _B797-* +_B795 +; toolsrc/parse.pla: 0702: nextln +; toolsrc/parse.pla: 0703: loop + !BYTE $54 ; CALL _C079 +_F1116 !WORD _C079 + !BYTE $30 ; DROP +_B797 + !BYTE $54 ; CALL _C096 +_F1117 !WORD _C096 + !BYTE $4E ; BRTRU _B795 + !WORD _B795-* +_B796 +; toolsrc/parse.pla: 0704: if token <> UNTIL_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1118 !WORD _D098+0 + !BYTE $2A,$94 ; CB 148 + !BYTE $22 ; BREQ _B798 + !WORD _B798-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1119 !WORD _C002 +_B798 +_B799 +; toolsrc/parse.pla: 0705: emit_tag(cont_tag) +; toolsrc/parse.pla: 0706: cont_tag = tag_prevcnt +; toolsrc/parse.pla: 0707: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0708: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $6A ; LAW _D113+0 +_F1120 !WORD _D113+0 + !BYTE $54 ; CALL _C039 +_F1121 !WORD _C039 + !BYTE $66,$0C ; LLW [12] + !BYTE $7A ; SAW _D113+0 +_F1122 !WORD _D113+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1123 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B800 + !WORD _B800-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1124 !WORD _C002 +_B800 +_B801 +; toolsrc/parse.pla: 0709: if cfnvals > 1 +; toolsrc/parse.pla: 0710: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B802 + !WORD _B802-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1125 !WORD _C003 +; toolsrc/parse.pla: 0711: while cfnvals > 1; cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B806 + !WORD _B806-* +_B804 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1126 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B806 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B804 + !WORD _B804-* +_B805 +; toolsrc/parse.pla: 0712: fin +_B802 +_B803 +; toolsrc/parse.pla: 0713: seq = gen_oprel(seq, BRFALSE_CODE, tag_repeat) +; toolsrc/parse.pla: 0714: emit_seq(seq) +; toolsrc/parse.pla: 0715: emit_tag(break_tag) +; toolsrc/parse.pla: 0716: break_tag = tag_prevbrk +; toolsrc/parse.pla: 0717: break + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C064 +_F1127 !WORD _C064 + !BYTE $6E,$04 ; DLW [4] + !BYTE $54 ; CALL _C041 +_F1128 !WORD _C041 + !BYTE $6A ; LAW _D112+0 +_F1129 !WORD _D112+0 + !BYTE $54 ; CALL _C039 +_F1130 !WORD _C039 + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D112+0 +_F1131 !WORD _D112+0 + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0718: is FOR_TKN +_B807 +; toolsrc/parse.pla: 0719: stack_loop = stack_loop + 2 +; toolsrc/parse.pla: 0720: tag_for = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0721: tag_prevcnt = cont_tag +; toolsrc/parse.pla: 0722: cont_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0723: tag_prevbrk = break_tag +; toolsrc/parse.pla: 0724: break_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0725: if scan <> ID_TKN; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $68 ; LAB _D109+0 +_F1132 !WORD _D109+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $78 ; SAB _D109+0 +_F1133 !WORD _D109+0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1134 !WORD _C004 + !BYTE $76,$18 ; SLW [24] + !BYTE $6A ; LAW _D113+0 +_F1135 !WORD _D113+0 + !BYTE $76,$0C ; SLW [12] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1136 !WORD _C004 + !BYTE $7A ; SAW _D113+0 +_F1137 !WORD _D113+0 + !BYTE $6A ; LAW _D112+0 +_F1138 !WORD _D112+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1139 !WORD _C004 + !BYTE $7A ; SAW _D112+0 +_F1140 !WORD _D112+0 + !BYTE $54 ; CALL _C076 +_F1141 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $22 ; BREQ _B808 + !WORD _B808-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F1142 !WORD _C002 +_B808 +_B809 +; toolsrc/parse.pla: 0726: idptr = lookup_id(tknptr, tknlen) +; toolsrc/parse.pla: 0727: if idptr +; toolsrc/parse.pla: 0728: type = idptr=>idtype +; toolsrc/parse.pla: 0729: addr = idptr=>idval +; toolsrc/parse.pla: 0730: else + !BYTE $6A ; LAW _D101+0 +_F1143 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F1144 !WORD _D100+0 + !BYTE $54 ; CALL _C044 +_F1145 !WORD _C044 + !BYTE $6E,$1E ; DLW [30] + !BYTE $4C ; BRFLS _B810 + !WORD _B810-* + !BYTE $66,$1E ; LLW [30] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $74,$00 ; SLB [0] + !BYTE $66,$1E ; LLW [30] + !BYTE $62 ; LW + !BYTE $76,$20 ; SLW [32] + !BYTE $50 ; BRNCH _B811 + !WORD _B811-* +_B810 +; toolsrc/parse.pla: 0731: exit_err(ERR_INVAL|ERR_ID) +; toolsrc/parse.pla: 0732: fin + !BYTE $2C,$04,$02 ; CW 516 + !BYTE $54 ; CALL _C002 +_F1146 !WORD _C002 +_B811 +; toolsrc/parse.pla: 0733: if scan <> SET_TKN; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $54 ; CALL _C076 +_F1147 !WORD _C076 + !BYTE $2A,$BD ; CB 189 + !BYTE $22 ; BREQ _B812 + !WORD _B812-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1148 !WORD _C002 +_B812 +_B813 +; toolsrc/parse.pla: 0734: fromseq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0735: if !fromseq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1149 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B814 + !WORD _B814-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1150 !WORD _C002 +_B814 +_B815 +; toolsrc/parse.pla: 0736: if cfnvals > 1 +; toolsrc/parse.pla: 0737: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B816 + !WORD _B816-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1151 !WORD _C003 +; toolsrc/parse.pla: 0738: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B820 + !WORD _B820-* +_B818 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1152 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B820 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B818 + !WORD _B818-* +_B819 +; toolsrc/parse.pla: 0739: fin +_B816 +_B817 +; toolsrc/parse.pla: 0740: if token == TO_TKN +; toolsrc/parse.pla: 0741: stepdir = 1 +; toolsrc/parse.pla: 0742: elsif token == DOWNTO_TKN + !BYTE $68 ; LAB _D098+0 +_F1153 !WORD _D098+0 + !BYTE $2A,$8F ; CB 143 + !BYTE $24 ; BRNE _B821 + !WORD _B821-* + !BYTE $02 ; CN 1 + !BYTE $76,$22 ; SLW [34] + !BYTE $50 ; BRNCH _B822 + !WORD _B822-* +_B821 +; toolsrc/parse.pla: 0743: stepdir = -1 +; toolsrc/parse.pla: 0744: else + !BYTE $68 ; LAB _D098+0 +_F1154 !WORD _D098+0 + !BYTE $2A,$90 ; CB 144 + !BYTE $24 ; BRNE _B823 + !WORD _B823-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$22 ; SLW [34] + !BYTE $50 ; BRNCH _B822 + !WORD _B822-* +_B823 +; toolsrc/parse.pla: 0745: exit_err(ERR_INVAL|ERR_STATE) +; toolsrc/parse.pla: 0746: fin + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1155 !WORD _C002 +_B822 +; toolsrc/parse.pla: 0747: toseq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0748: if !toseq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1156 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$08 ; DLW [8] + !BYTE $4E ; BRTRU _B824 + !WORD _B824-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1157 !WORD _C002 +_B824 +_B825 +; toolsrc/parse.pla: 0749: if cfnvals > 1 +; toolsrc/parse.pla: 0750: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B826 + !WORD _B826-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1158 !WORD _C003 +; toolsrc/parse.pla: 0751: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B830 + !WORD _B830-* +_B828 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1159 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B830 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B828 + !WORD _B828-* +_B829 +; toolsrc/parse.pla: 0752: fin +_B826 +_B827 +; toolsrc/parse.pla: 0753: if token == STEP_TKN +; toolsrc/parse.pla: 0754: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0755: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1160 !WORD _D098+0 + !BYTE $2A,$91 ; CB 145 + !BYTE $24 ; BRNE _B831 + !WORD _B831-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1161 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B833 + !WORD _B833-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1162 !WORD _C002 +_B833 +_B834 +; toolsrc/parse.pla: 0756: if cfnvals > 1 +; toolsrc/parse.pla: 0757: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B835 + !WORD _B835-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1163 !WORD _C003 +; toolsrc/parse.pla: 0758: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B839 + !WORD _B839-* +_B837 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1164 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B839 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B837 + !WORD _B837-* +_B838 +; toolsrc/parse.pla: 0759: fin +_B835 +_B836 +; toolsrc/parse.pla: 0760: else + !BYTE $50 ; BRNCH _B832 + !WORD _B832-* +_B831 +; toolsrc/parse.pla: 0761: seq = NULL +; toolsrc/parse.pla: 0762: fin + !BYTE $00 ; CN 0 + !BYTE $76,$04 ; SLW [4] +_B832 +; toolsrc/parse.pla: 0763: emit_seq(gen_oprel(cat_seq(toseq, fromseq), stepdir > 0 ?? BRGT_CODE :: BRLT_CODE, break_tag)) +; toolsrc/parse.pla: 0764: emit_tag(tag_for) +; toolsrc/parse.pla: 0765: if type & LOCAL_TYPE +; toolsrc/parse.pla: 0766: if type & BYTE_TYPE; emit_dlb(addr); else; emit_dlw(addr); fin + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C008 +_F1165 !WORD _C008 + !BYTE $66,$22 ; LLW [34] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B842 + !WORD _B842-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $50 ; BRNCH _B843 + !WORD _B843-* +_B842 + !BYTE $2A,$A2 ; CB 162 +_B843 + !BYTE $6A ; LAW _D112+0 +_F1166 !WORD _D112+0 + !BYTE $54 ; CALL _C064 +_F1167 !WORD _C064 + !BYTE $54 ; CALL _C041 +_F1168 !WORD _C041 + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C039 +_F1169 !WORD _C039 + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B844 + !WORD _B844-* + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B846 + !WORD _B846-* + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _C022 +_F1170 !WORD _C022 + !BYTE $50 ; BRNCH _B847 + !WORD _B847-* +_B846 + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _C023 +_F1171 !WORD _C023 +_B847 +; toolsrc/parse.pla: 0767: else + !BYTE $50 ; BRNCH _B845 + !WORD _B845-* +_B844 +; toolsrc/parse.pla: 0768: if type & BYTE_TYPE; emit_dab(addr, 0); else; emit_daw(addr, 0); fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B848 + !WORD _B848-* + !BYTE $66,$20 ; LLW [32] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C024 +_F1172 !WORD _C024 + !BYTE $50 ; BRNCH _B849 + !WORD _B849-* +_B848 + !BYTE $66,$20 ; LLW [32] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C025 +_F1173 !WORD _C025 +_B849 +; toolsrc/parse.pla: 0769: fin +_B845 +; toolsrc/parse.pla: 0770: while parse_stmnt + !BYTE $50 ; BRNCH _B852 + !WORD _B852-* +_B850 +; toolsrc/parse.pla: 0771: nextln +; toolsrc/parse.pla: 0772: loop + !BYTE $54 ; CALL _C079 +_F1174 !WORD _C079 + !BYTE $30 ; DROP +_B852 + !BYTE $54 ; CALL _C096 +_F1175 !WORD _C096 + !BYTE $4E ; BRTRU _B850 + !WORD _B850-* +_B851 +; toolsrc/parse.pla: 0773: if token <> NEXT_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1176 !WORD _D098+0 + !BYTE $2A,$92 ; CB 146 + !BYTE $22 ; BREQ _B853 + !WORD _B853-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1177 !WORD _C002 +_B853 +_B854 +; toolsrc/parse.pla: 0774: emit_tag(cont_tag) +; toolsrc/parse.pla: 0775: cont_tag = tag_prevcnt +; toolsrc/parse.pla: 0776: if stepdir > 0 +; toolsrc/parse.pla: 0777: if seq +; toolsrc/parse.pla: 0778: emit_seq(seq) +; toolsrc/parse.pla: 0779: emit_addbrle(tag_for) +; toolsrc/parse.pla: 0780: else + !BYTE $6A ; LAW _D113+0 +_F1178 !WORD _D113+0 + !BYTE $54 ; CALL _C039 +_F1179 !WORD _C039 + !BYTE $66,$0C ; LLW [12] + !BYTE $7A ; SAW _D113+0 +_F1180 !WORD _D113+0 + !BYTE $66,$22 ; LLW [34] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B855 + !WORD _B855-* + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B857 + !WORD _B857-* + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1181 !WORD _C041 + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C032 +_F1182 !WORD _C032 + !BYTE $50 ; BRNCH _B858 + !WORD _B858-* +_B857 +; toolsrc/parse.pla: 0781: emit_incbrle(tag_for) +; toolsrc/parse.pla: 0782: fin + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C031 +_F1183 !WORD _C031 +_B858 +; toolsrc/parse.pla: 0783: else + !BYTE $50 ; BRNCH _B856 + !WORD _B856-* +_B855 +; toolsrc/parse.pla: 0784: if seq +; toolsrc/parse.pla: 0785: emit_seq(seq) +; toolsrc/parse.pla: 0786: emit_subbrge(tag_for) +; toolsrc/parse.pla: 0787: else + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B859 + !WORD _B859-* + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1184 !WORD _C041 + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C034 +_F1185 !WORD _C034 + !BYTE $50 ; BRNCH _B860 + !WORD _B860-* +_B859 +; toolsrc/parse.pla: 0788: emit_decbrge(tag_for) +; toolsrc/parse.pla: 0789: fin + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C033 +_F1186 !WORD _C033 +_B860 +; toolsrc/parse.pla: 0790: fin +_B856 +; toolsrc/parse.pla: 0791: emit_tag(break_tag) +; toolsrc/parse.pla: 0792: if type & LOCAL_TYPE +; toolsrc/parse.pla: 0793: if type & BYTE_TYPE; emit_slb(addr); else; emit_slw(addr); fin + !BYTE $6A ; LAW _D112+0 +_F1187 !WORD _D112+0 + !BYTE $54 ; CALL _C039 +_F1188 !WORD _C039 + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B861 + !WORD _B861-* + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B863 + !WORD _B863-* + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _C018 +_F1189 !WORD _C018 + !BYTE $50 ; BRNCH _B864 + !WORD _B864-* +_B863 + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _C019 +_F1190 !WORD _C019 +_B864 +; toolsrc/parse.pla: 0794: else + !BYTE $50 ; BRNCH _B862 + !WORD _B862-* +_B861 +; toolsrc/parse.pla: 0795: if type & BYTE_TYPE; emit_sab(addr, 0); else; emit_saw(addr, 0); fin + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B865 + !WORD _B865-* + !BYTE $66,$20 ; LLW [32] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C020 +_F1191 !WORD _C020 + !BYTE $50 ; BRNCH _B866 + !WORD _B866-* +_B865 + !BYTE $66,$20 ; LLW [32] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C021 +_F1192 !WORD _C021 +_B866 +; toolsrc/parse.pla: 0796: fin +_B862 +; toolsrc/parse.pla: 0797: emit_code(DROP_CODE) +; toolsrc/parse.pla: 0798: break_tag = tag_prevbrk +; toolsrc/parse.pla: 0799: stack_loop = stack_loop - 2 +; toolsrc/parse.pla: 0800: break + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C017 +_F1193 !WORD _C017 + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D112+0 +_F1194 !WORD _D112+0 + !BYTE $68 ; LAB _D109+0 +_F1195 !WORD _D109+0 + !BYTE $3A,$02 ; SUBI 2 + !BYTE $78 ; SAB _D109+0 +_F1196 !WORD _D109+0 + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0801: is CASE_TKN +_B867 +; toolsrc/parse.pla: 0802: tag_prevbrk = break_tag +; toolsrc/parse.pla: 0803: break_tag = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0804: tag_choice = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0805: caseval = heapalloc(CASENUM) +; toolsrc/parse.pla: 0806: casetag = heapalloc(CASENUM) +; toolsrc/parse.pla: 0807: casecnt = 0 +; toolsrc/parse.pla: 0808: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0809: if !seq; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $6A ; LAW _D112+0 +_F1197 !WORD _D112+0 + !BYTE $76,$0A ; SLW [10] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1198 !WORD _C004 + !BYTE $7A ; SAW _D112+0 +_F1199 !WORD _D112+0 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1200 !WORD _C004 + !BYTE $76,$1A ; SLW [26] + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _X014 +_F1201 !WORD 0 + !BYTE $76,$28 ; SLW [40] + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _X014 +_F1202 !WORD 0 + !BYTE $76,$2A ; SLW [42] + !BYTE $00 ; CN 0 + !BYTE $76,$26 ; SLW [38] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1203 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B868 + !WORD _B868-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1204 !WORD _C002 +_B868 +_B869 +; toolsrc/parse.pla: 0810: if cfnvals > 1 +; toolsrc/parse.pla: 0811: parse_warn("Expression value overflow") + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B870 + !WORD _B870-* + !BYTE $2E ; CS + !BYTE $19 + !BYTE $45,$78,$70,$72,$65,$73,$73,$69 + !BYTE $6F,$6E,$20,$76,$61,$6C,$75,$65 + !BYTE $20,$6F,$76,$65,$72,$66,$6C,$6F + !BYTE $77 + !BYTE $54 ; CALL _C003 +_F1205 !WORD _C003 +; toolsrc/parse.pla: 0812: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $50 ; BRNCH _B874 + !WORD _B874-* +_B872 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1206 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B874 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B872 + !WORD _B872-* +_B873 +; toolsrc/parse.pla: 0813: fin +_B870 +_B871 +; toolsrc/parse.pla: 0814: emit_seq(seq) +; toolsrc/parse.pla: 0815: emit_select(tag_choice) +; toolsrc/parse.pla: 0816: nextln +; toolsrc/parse.pla: 0817: while token <> ENDCASE_TKN + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1207 !WORD _C041 + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C026 +_F1208 !WORD _C026 + !BYTE $54 ; CALL _C079 +_F1209 !WORD _C079 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B877 + !WORD _B877-* +_B875 +; toolsrc/parse.pla: 0818: when token + !BYTE $68 ; LAB _D098+0 +_F1210 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B879-* +; toolsrc/parse.pla: 0819: is OF_TKN +_B880 +; toolsrc/parse.pla: 0820: if casecnt == CASENUM; exit_err(ERR_OVER|ERR_TABLE); fin + !BYTE $66,$26 ; LLW [38] + !BYTE $2A,$40 ; CB 64 + !BYTE $24 ; BRNE _B881 + !WORD _B881-* + !BYTE $2C,$10,$40 ; CW 16400 + !BYTE $54 ; CALL _C002 +_F1211 !WORD _C002 +_B881 +_B882 +; toolsrc/parse.pla: 0821: caseconst, drop, drop = parse_constexpr +; toolsrc/parse.pla: 0822: tag_of = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0823: i = casecnt +; toolsrc/parse.pla: 0824: while i > 0 and caseval=>[i-1] > caseconst + !BYTE $54 ; CALL _C089 +_F1212 !WORD _C089 + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $76,$24 ; SLW [36] + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1213 !WORD _C004 + !BYTE $76,$1C ; SLW [28] + !BYTE $66,$26 ; LLW [38] + !BYTE $76,$2C ; SLW [44] + !BYTE $50 ; BRNCH _B885 + !WORD _B885-* +_B883 +; toolsrc/parse.pla: 0825: // +; toolsrc/parse.pla: 0826: // Move larger case consts up +; toolsrc/parse.pla: 0827: // +; toolsrc/parse.pla: 0828: caseval=>[i] = caseval=>[i-1] +; toolsrc/parse.pla: 0829: casetag=>[i] = casetag=>[i-1] +; toolsrc/parse.pla: 0830: i-- + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$2C ; LLW [44] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$28 ; LLW [40] + !BYTE $BA,$2C ; IDXLW [44] + !BYTE $72 ; SW + !BYTE $66,$2A ; LLW [42] + !BYTE $66,$2C ; LLW [44] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$2A ; LLW [42] + !BYTE $BA,$2C ; IDXLW [44] + !BYTE $72 ; SW + !BYTE $66,$2C ; LLW [44] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0831: loop + !BYTE $76,$2C ; SLW [44] +_B885 + !BYTE $66,$2C ; LLW [44] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B886 + !WORD _B886-* + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$2C ; LLW [44] + !BYTE $8E ; DECR + !BYTE $9E ; IDXW + !BYTE $62 ; LW + !BYTE $66,$24 ; LLW [36] + !BYTE $44 ; ISGT +_B886 + !BYTE $4E ; BRTRU _B883 + !WORD _B883-* +_B884 +; toolsrc/parse.pla: 0832: if i < casecnt and caseval=>[i] == caseconst; exit_err(ERR_DUP|ERR_STATE); fin + !BYTE $66,$2C ; LLW [44] + !BYTE $66,$26 ; LLW [38] + !BYTE $46 ; ISLT + !BYTE $AC ; BRAND _B887 + !WORD _B887-* + !BYTE $66,$28 ; LLW [40] + !BYTE $BA,$2C ; IDXLW [44] + !BYTE $62 ; LW + !BYTE $66,$24 ; LLW [36] + !BYTE $40 ; ISEQ +_B887 + !BYTE $4C ; BRFLS _B888 + !WORD _B888-* + !BYTE $2C,$01,$10 ; CW 4097 + !BYTE $54 ; CALL _C002 +_F1214 !WORD _C002 +_B888 +_B889 +; toolsrc/parse.pla: 0833: caseval=>[i] = caseconst +; toolsrc/parse.pla: 0834: casetag=>[i] = tag_of +; toolsrc/parse.pla: 0835: casecnt++ + !BYTE $66,$24 ; LLW [36] + !BYTE $66,$28 ; LLW [40] + !BYTE $BA,$2C ; IDXLW [44] + !BYTE $72 ; SW + !BYTE $66,$1C ; LLW [28] + !BYTE $66,$2A ; LLW [42] + !BYTE $BA,$2C ; IDXLW [44] + !BYTE $72 ; SW + !BYTE $66,$26 ; LLW [38] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0836: emit_tag(tag_of) +; toolsrc/parse.pla: 0837: while parse_stmnt + !BYTE $76,$26 ; SLW [38] + !BYTE $66,$1C ; LLW [28] + !BYTE $54 ; CALL _C039 +_F1215 !WORD _C039 + !BYTE $50 ; BRNCH _B892 + !WORD _B892-* +_B890 +; toolsrc/parse.pla: 0838: nextln +; toolsrc/parse.pla: 0839: loop + !BYTE $54 ; CALL _C079 +_F1216 !WORD _C079 + !BYTE $30 ; DROP +_B892 + !BYTE $54 ; CALL _C096 +_F1217 !WORD _C096 + !BYTE $4E ; BRTRU _B890 + !WORD _B890-* +_B891 +; toolsrc/parse.pla: 0840: break + !BYTE $50 ; BRNCH _B878 + !WORD _B878-* +; toolsrc/parse.pla: 0841: is DEFAULT_TKN +_B893 +; toolsrc/parse.pla: 0842: tag_of = 0 +; toolsrc/parse.pla: 0843: if prevstmnt <> BREAK_TKN // Branch around caseblock if falling through +; toolsrc/parse.pla: 0844: tag_of = new_tag(RELATIVE_FIXUP) +; toolsrc/parse.pla: 0845: emit_branch(tag_of) +; toolsrc/parse.pla: 0846: fin + !BYTE $00 ; CN 0 + !BYTE $76,$1C ; SLW [28] + !BYTE $68 ; LAB _D110+0 +_F1218 !WORD _D110+0 + !BYTE $2A,$9A ; CB 154 + !BYTE $22 ; BREQ _B894 + !WORD _B894-* + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C004 +_F1219 !WORD _C004 + !BYTE $6E,$1C ; DLW [28] + !BYTE $54 ; CALL _C028 +_F1220 !WORD _C028 +_B894 +_B895 +; toolsrc/parse.pla: 0847: emit_tag(tag_choice) +; toolsrc/parse.pla: 0848: emit_caseblock(casecnt, caseval, casetag) +; toolsrc/parse.pla: 0849: tag_choice = 0 +; toolsrc/parse.pla: 0850: if tag_of +; toolsrc/parse.pla: 0851: emit_tag(tag_of) +; toolsrc/parse.pla: 0852: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C039 +_F1221 !WORD _C039 + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$2A ; LLW [42] + !BYTE $54 ; CALL _C027 +_F1222 !WORD _C027 + !BYTE $00 ; CN 0 + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$1C ; LLW [28] + !BYTE $4C ; BRFLS _B896 + !WORD _B896-* + !BYTE $66,$1C ; LLW [28] + !BYTE $54 ; CALL _C039 +_F1223 !WORD _C039 +_B896 +_B897 +; toolsrc/parse.pla: 0853: scan +; toolsrc/parse.pla: 0854: while parse_stmnt + !BYTE $54 ; CALL _C076 +_F1224 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B900 + !WORD _B900-* +_B898 +; toolsrc/parse.pla: 0855: nextln +; toolsrc/parse.pla: 0856: loop + !BYTE $54 ; CALL _C079 +_F1225 !WORD _C079 + !BYTE $30 ; DROP +_B900 + !BYTE $54 ; CALL _C096 +_F1226 !WORD _C096 + !BYTE $4E ; BRTRU _B898 + !WORD _B898-* +_B899 +; toolsrc/parse.pla: 0857: if token <> ENDCASE_TKN; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1227 !WORD _D098+0 + !BYTE $2A,$8D ; CB 141 + !BYTE $22 ; BREQ _B901 + !WORD _B901-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1228 !WORD _C002 +_B901 +_B902 +; toolsrc/parse.pla: 0858: break + !BYTE $50 ; BRNCH _B878 + !WORD _B878-* +; toolsrc/parse.pla: 0859: is EOL_TKN +_B903 +; toolsrc/parse.pla: 0860: nextln +; toolsrc/parse.pla: 0861: break + !BYTE $54 ; CALL _C079 +_F1229 !WORD _C079 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B878 + !WORD _B878-* +; toolsrc/parse.pla: 0862: otherwise +_B879 + !BYTE $03 ; CASEBLOCK + !WORD $0002 + !WORD _B903-* + !WORD $008B + !WORD _B880-* + !WORD $008C + !WORD _B893-* +; toolsrc/parse.pla: 0863: exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE) +; toolsrc/parse.pla: 0864: wend + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1230 !WORD _C002 +_B878 +; toolsrc/parse.pla: 0865: loop +_B877 + !BYTE $68 ; LAB _D098+0 +_F1231 !WORD _D098+0 + !BYTE $2A,$8D ; CB 141 + !BYTE $24 ; BRNE _B875 + !WORD _B875-* +_B876 +; toolsrc/parse.pla: 0866: if tag_choice +; toolsrc/parse.pla: 0867: emit_branch(break_tag) +; toolsrc/parse.pla: 0868: emit_tag(tag_choice) +; toolsrc/parse.pla: 0869: emit_caseblock(casecnt, caseval, casetag) +; toolsrc/parse.pla: 0870: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $4C ; BRFLS _B904 + !WORD _B904-* + !BYTE $6A ; LAW _D112+0 +_F1232 !WORD _D112+0 + !BYTE $54 ; CALL _C028 +_F1233 !WORD _C028 + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C039 +_F1234 !WORD _C039 + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$2A ; LLW [42] + !BYTE $54 ; CALL _C027 +_F1235 !WORD _C027 +_B904 +_B905 +; toolsrc/parse.pla: 0871: heaprelease(caseval) +; toolsrc/parse.pla: 0872: emit_tag(break_tag) +; toolsrc/parse.pla: 0873: break_tag = tag_prevbrk +; toolsrc/parse.pla: 0874: break + !BYTE $66,$28 ; LLW [40] + !BYTE $54 ; CALL _X015 +_F1236 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D112+0 +_F1237 !WORD _D112+0 + !BYTE $54 ; CALL _C039 +_F1238 !WORD _C039 + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D112+0 +_F1239 !WORD _D112+0 + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0875: is BREAK_TKN +_B906 +; toolsrc/parse.pla: 0876: if break_tag +; toolsrc/parse.pla: 0877: emit_branch(break_tag) +; toolsrc/parse.pla: 0878: else + !BYTE $6A ; LAW _D112+0 +_F1240 !WORD _D112+0 + !BYTE $4C ; BRFLS _B907 + !WORD _B907-* + !BYTE $6A ; LAW _D112+0 +_F1241 !WORD _D112+0 + !BYTE $54 ; CALL _C028 +_F1242 !WORD _C028 + !BYTE $50 ; BRNCH _B908 + !WORD _B908-* +_B907 +; toolsrc/parse.pla: 0879: exit_err(ERR_INVAL|ERR_STATE) +; toolsrc/parse.pla: 0880: fin + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1243 !WORD _C002 +_B908 +; toolsrc/parse.pla: 0881: break + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0882: is CONT_TKN +_B909 +; toolsrc/parse.pla: 0883: if cont_tag +; toolsrc/parse.pla: 0884: emit_branch(cont_tag) +; toolsrc/parse.pla: 0885: else + !BYTE $6A ; LAW _D113+0 +_F1244 !WORD _D113+0 + !BYTE $4C ; BRFLS _B910 + !WORD _B910-* + !BYTE $6A ; LAW _D113+0 +_F1245 !WORD _D113+0 + !BYTE $54 ; CALL _C028 +_F1246 !WORD _C028 + !BYTE $50 ; BRNCH _B911 + !WORD _B911-* +_B910 +; toolsrc/parse.pla: 0886: exit_err(ERR_INVAL|ERR_STATE) +; toolsrc/parse.pla: 0887: fin + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1247 !WORD _C002 +_B911 +; toolsrc/parse.pla: 0888: break + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0889: is RETURN_TKN +_B912 +; toolsrc/parse.pla: 0890: i = stack_loop +; toolsrc/parse.pla: 0891: while i >= 2 + !BYTE $68 ; LAB _D109+0 +_F1248 !WORD _D109+0 + !BYTE $76,$2C ; SLW [44] + !BYTE $50 ; BRNCH _B915 + !WORD _B915-* +_B913 +; toolsrc/parse.pla: 0892: emit_code(DROP2_CODE) +; toolsrc/parse.pla: 0893: i = i - 2 +; toolsrc/parse.pla: 0894: loop + !BYTE $2A,$32 ; CB 50 + !BYTE $54 ; CALL _C017 +_F1249 !WORD _C017 + !BYTE $66,$2C ; LLW [44] + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$2C ; SLW [44] +_B915 + !BYTE $66,$2C ; LLW [44] + !BYTE $04 ; CN 2 + !BYTE $48 ; ISGE + !BYTE $4E ; BRTRU _B913 + !WORD _B913-* +_B914 +; toolsrc/parse.pla: 0895: if i +; toolsrc/parse.pla: 0896: emit_code(DROP_CODE) +; toolsrc/parse.pla: 0897: fin + !BYTE $66,$2C ; LLW [44] + !BYTE $4C ; BRFLS _B916 + !WORD _B916-* + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C017 +_F1250 !WORD _C017 +_B916 +_B917 +; toolsrc/parse.pla: 0898: if infunc +; toolsrc/parse.pla: 0899: seq, cfnvals = parse_list +; toolsrc/parse.pla: 0900: emit_seq(seq) +; toolsrc/parse.pla: 0901: if cfnvals > infuncvals +; toolsrc/parse.pla: 0902: exit_err(ERR_OVER|ERR_CLOSE|ERR_STATE) +; toolsrc/parse.pla: 0903: elsif cfnvals < infuncvals + !BYTE $68 ; LAB _D107+0 +_F1251 !WORD _D107+0 + !BYTE $4C ; BRFLS _B918 + !WORD _B918-* + !BYTE $54 ; CALL _C091 +_F1252 !WORD _C091 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $54 ; CALL _C041 +_F1253 !WORD _C041 + !BYTE $64,$03 ; LLB [3] + !BYTE $6A ; LAW _D111+0 +_F1254 !WORD _D111+0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B920 + !WORD _B920-* + !BYTE $2C,$30,$10 ; CW 4144 + !BYTE $54 ; CALL _C002 +_F1255 !WORD _C002 + !BYTE $50 ; BRNCH _B921 + !WORD _B921-* +_B920 +; toolsrc/parse.pla: 0904: parse_warn("Too few return values") + !BYTE $64,$03 ; LLB [3] + !BYTE $6A ; LAW _D111+0 +_F1256 !WORD _D111+0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B922 + !WORD _B922-* + !BYTE $2E ; CS + !BYTE $15 + !BYTE $54,$6F,$6F,$20,$66,$65,$77,$20 + !BYTE $72,$65,$74,$75,$72,$6E,$20,$76 + !BYTE $61,$6C,$75,$65,$73 + !BYTE $54 ; CALL _C003 +_F1257 !WORD _C003 +; toolsrc/parse.pla: 0905: while cfnvals < infuncvals + !BYTE $50 ; BRNCH _B925 + !WORD _B925-* +_B923 +; toolsrc/parse.pla: 0906: cfnvals++ + !BYTE $64,$03 ; LLB [3] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 0907: emit_const(0) +; toolsrc/parse.pla: 0908: loop + !BYTE $74,$03 ; SLB [3] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F1258 !WORD _C016 +_B925 + !BYTE $64,$03 ; LLB [3] + !BYTE $6A ; LAW _D111+0 +_F1259 !WORD _D111+0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B923 + !WORD _B923-* +_B924 +; toolsrc/parse.pla: 0909: fin +_B922 +_B921 +; toolsrc/parse.pla: 0910: emit_leave +; toolsrc/parse.pla: 0911: else + !BYTE $54 ; CALL _C037 +_F1260 !WORD _C037 + !BYTE $50 ; BRNCH _B919 + !WORD _B919-* +_B918 +; toolsrc/parse.pla: 0912: seq, cfnvals = parse_expr(NULL) +; toolsrc/parse.pla: 0913: if not seq +; toolsrc/parse.pla: 0914: emit_const(0) +; toolsrc/parse.pla: 0915: else + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1261 !WORD _C094 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B926 + !WORD _B926-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F1262 !WORD _C016 + !BYTE $50 ; BRNCH _B927 + !WORD _B927-* +_B926 +; toolsrc/parse.pla: 0916: if cfnvals > 1 +; toolsrc/parse.pla: 0917: exit_err(ERR_OVER|ERR_CLOSE|ERR_STATE) +; toolsrc/parse.pla: 0918: while cfnvals > 1;cfnvals--; seq = gen_op(seq, DROP_CODE); loop + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B928 + !WORD _B928-* + !BYTE $2C,$30,$10 ; CW 4144 + !BYTE $54 ; CALL _C002 +_F1263 !WORD _C002 + !BYTE $50 ; BRNCH _B932 + !WORD _B932-* +_B930 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR + !BYTE $74,$03 ; SLB [3] + !BYTE $66,$04 ; LLW [4] + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1264 !WORD _C059 + !BYTE $76,$04 ; SLW [4] +_B932 + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B930 + !WORD _B930-* +_B931 +; toolsrc/parse.pla: 0919: fin +_B928 +_B929 +; toolsrc/parse.pla: 0920: emit_seq(seq) +; toolsrc/parse.pla: 0921: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1265 !WORD _C041 +_B927 +; toolsrc/parse.pla: 0922: emit_code(RET_CODE) +; toolsrc/parse.pla: 0923: fin + !BYTE $2A,$5C ; CB 92 + !BYTE $54 ; CALL _C017 +_F1266 !WORD _C017 +_B919 +; toolsrc/parse.pla: 0924: break + !BYTE $50 ; BRNCH _B749 + !WORD _B749-* +; toolsrc/parse.pla: 0925: is EOL_TKN +_B933 +; toolsrc/parse.pla: 0926: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$2E ; LEAVE 46 +; toolsrc/parse.pla: 0927: is ELSE_TKN +_B934 +; toolsrc/parse.pla: 0928: is ELSEIF_TKN +_B935 +; toolsrc/parse.pla: 0929: is FIN_TKN +_B936 +; toolsrc/parse.pla: 0930: is LOOP_TKN +_B937 +; toolsrc/parse.pla: 0931: is UNTIL_TKN +_B938 +; toolsrc/parse.pla: 0932: is NEXT_TKN +_B939 +; toolsrc/parse.pla: 0933: is OF_TKN +_B940 +; toolsrc/parse.pla: 0934: is DEFAULT_TKN +_B941 +; toolsrc/parse.pla: 0935: is ENDCASE_TKN +_B942 +; toolsrc/parse.pla: 0936: is END_TKN +_B943 +; toolsrc/parse.pla: 0937: is DONE_TKN +_B944 +; toolsrc/parse.pla: 0938: is DEF_TKN +_B945 +; toolsrc/parse.pla: 0939: is EOF_TKN +_B946 +; toolsrc/parse.pla: 0940: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$2E ; LEAVE 46 +; toolsrc/parse.pla: 0941: otherwise + !BYTE $50 ; BRNCH _B947 + !WORD _B947-* +_B750 + !BYTE $16 ; CASEBLOCK + !WORD $0001 + !WORD _B946-* + !WORD $0002 + !WORD _B933-* + !WORD $0083 + !WORD _B751-* + !WORD $0084 + !WORD _B935-* + !WORD $0085 + !WORD _B934-* + !WORD $0086 + !WORD _B936-* + !WORD $0087 + !WORD _B943-* + !WORD $0088 + !WORD _B781-* + !WORD $0089 + !WORD _B937-* + !WORD $008A + !WORD _B867-* + !WORD $008B + !WORD _B940-* + !WORD $008C + !WORD _B941-* + !WORD $008D + !WORD _B942-* + !WORD $008E + !WORD _B807-* + !WORD $0092 + !WORD _B939-* + !WORD $0093 + !WORD _B794-* + !WORD $0094 + !WORD _B938-* + !WORD $0095 + !WORD _B945-* + !WORD $0098 + !WORD _B944-* + !WORD $0099 + !WORD _B912-* + !WORD $009A + !WORD _B906-* + !WORD $009B + !WORD _B909-* +_B947 +; toolsrc/parse.pla: 0942: rewind(tknptr) +; toolsrc/parse.pla: 0943: seq = parse_set(NULL) +; toolsrc/parse.pla: 0944: if seq +; toolsrc/parse.pla: 0945: emit_seq(seq) +; toolsrc/parse.pla: 0946: else + !BYTE $6A ; LAW _D101+0 +_F1267 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F1268 !WORD _C077 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C095 +_F1269 !WORD _C095 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B948 + !WORD _B948-* + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1270 !WORD _C041 + !BYTE $50 ; BRNCH _B949 + !WORD _B949-* +_B948 +; toolsrc/parse.pla: 0947: idptr = tknptr +; toolsrc/parse.pla: 0948: seq, cfnvals = parse_value(NULL, RVALUE) +; toolsrc/parse.pla: 0949: if seq +; toolsrc/parse.pla: 0950: if token == INC_TKN or token == DEC_TKN +; toolsrc/parse.pla: 0951: emit_seq(seq) +; toolsrc/parse.pla: 0952: emit_code(token == INC_TKN ?? INC_CODE :: DEC_CODE) +; toolsrc/parse.pla: 0953: rewind(idptr) +; toolsrc/parse.pla: 0954: seq, drop = parse_value(NULL, LVALUE) +; toolsrc/parse.pla: 0955: emit_seq(seq) +; toolsrc/parse.pla: 0956: else + !BYTE $6A ; LAW _D101+0 +_F1271 !WORD _D101+0 + !BYTE $76,$1E ; SLW [30] + !BYTE $00 ; CN 0 + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C092 +_F1272 !WORD _C092 + !BYTE $74,$03 ; SLB [3] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B950 + !WORD _B950-* + !BYTE $68 ; LAB _D098+0 +_F1273 !WORD _D098+0 + !BYTE $2A,$C1 ; CB 193 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B952 + !WORD _B952-* + !BYTE $68 ; LAB _D098+0 +_F1274 !WORD _D098+0 + !BYTE $2A,$C4 ; CB 196 + !BYTE $40 ; ISEQ +_B952 + !BYTE $4C ; BRFLS _B953 + !WORD _B953-* + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1275 !WORD _C041 + !BYTE $68 ; LAB _D098+0 +_F1276 !WORD _D098+0 + !BYTE $2A,$C1 ; CB 193 + !BYTE $24 ; BRNE _B957 + !WORD _B957-* + !BYTE $2A,$8C ; CB 140 + !BYTE $50 ; BRNCH _B958 + !WORD _B958-* +_B957 + !BYTE $2A,$8E ; CB 142 +_B958 + !BYTE $54 ; CALL _C017 +_F1277 !WORD _C017 + !BYTE $66,$1E ; LLW [30] + !BYTE $54 ; CALL _C077 +_F1278 !WORD _C077 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C092 +_F1279 !WORD _C092 + !BYTE $30 ; DROP + !BYTE $6E,$04 ; DLW [4] + !BYTE $54 ; CALL _C041 +_F1280 !WORD _C041 + !BYTE $50 ; BRNCH _B954 + !WORD _B954-* +_B953 +; toolsrc/parse.pla: 0957: while cfnvals + !BYTE $50 ; BRNCH _B961 + !WORD _B961-* +_B959 +; toolsrc/parse.pla: 0958: seq = cat_seq(seq, gen_op(NULL, DROP_CODE)) +; toolsrc/parse.pla: 0959: cfnvals-- + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2A,$30 ; CB 48 + !BYTE $54 ; CALL _C059 +_F1281 !WORD _C059 + !BYTE $54 ; CALL _C008 +_F1282 !WORD _C008 + !BYTE $76,$04 ; SLW [4] + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR +; toolsrc/parse.pla: 0960: loop + !BYTE $74,$03 ; SLB [3] +_B961 + !BYTE $64,$03 ; LLB [3] + !BYTE $4E ; BRTRU _B959 + !WORD _B959-* +_B960 +; toolsrc/parse.pla: 0961: emit_seq(seq) +; toolsrc/parse.pla: 0962: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C041 +_F1283 !WORD _C041 +_B954 +; toolsrc/parse.pla: 0963: else + !BYTE $50 ; BRNCH _B951 + !WORD _B951-* +_B950 +; toolsrc/parse.pla: 0964: exit_err(ERR_SYNTAX) +; toolsrc/parse.pla: 0965: fin + !BYTE $2C,$00,$80 ; CW 32768 + !BYTE $54 ; CALL _C002 +_F1284 !WORD _C002 +_B951 +; toolsrc/parse.pla: 0966: fin +_B949 +; toolsrc/parse.pla: 0967: wend +_B749 +; toolsrc/parse.pla: 0968: return scan == EOL_TKN + !BYTE $54 ; CALL _C076 +_F1285 !WORD _C076 + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ + !BYTE $5A,$2E ; LEAVE 46 +; toolsrc/parse.pla: 0969: end +; toolsrc/parse.pla: 0970: def parse_var(type, basesize, ignore_var)#0 + ; type -> [0] + ; basesize -> [2] + ; ignore_var -> [4] +_C097 ; parse_var() +; toolsrc/parse.pla: 0971: byte consttype, constsize, idlen + ; consttype -> [6] + ; constsize -> [7] + ; idlen -> [8] +; toolsrc/parse.pla: 0972: word idptr, constval, arraysize, size + ; idptr -> [9] + ; constval -> [11] + ; arraysize -> [13] + ; size -> [15] +; toolsrc/parse.pla: 0973: +; toolsrc/parse.pla: 0974: idlen = 0 + !BYTE $58,$11,$03 ; ENTER 17,3 +; toolsrc/parse.pla: 0975: size = 1 +; toolsrc/parse.pla: 0976: if scan == ID_TKN +; toolsrc/parse.pla: 0977: idptr = tknptr +; toolsrc/parse.pla: 0978: idlen = tknlen +; toolsrc/parse.pla: 0979: if scan == OPEN_BRACKET_TKN +; toolsrc/parse.pla: 0980: size, constsize, consttype = parse_constexpr +; toolsrc/parse.pla: 0981: if token <> CLOSE_BRACKET_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $02 ; CN 1 + !BYTE $76,$0F ; SLW [15] + !BYTE $54 ; CALL _C076 +_F1286 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B962 + !WORD _B962-* + !BYTE $6A ; LAW _D101+0 +_F1287 !WORD _D101+0 + !BYTE $76,$09 ; SLW [9] + !BYTE $68 ; LAB _D100+0 +_F1288 !WORD _D100+0 + !BYTE $74,$08 ; SLB [8] + !BYTE $54 ; CALL _C076 +_F1289 !WORD _C076 + !BYTE $2A,$DB ; CB 219 + !BYTE $24 ; BRNE _B964 + !WORD _B964-* + !BYTE $54 ; CALL _C089 +_F1290 !WORD _C089 + !BYTE $74,$06 ; SLB [6] + !BYTE $74,$07 ; SLB [7] + !BYTE $76,$0F ; SLW [15] + !BYTE $68 ; LAB _D098+0 +_F1291 !WORD _D098+0 + !BYTE $2A,$DD ; CB 221 + !BYTE $22 ; BREQ _B966 + !WORD _B966-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1292 !WORD _C002 +_B966 +_B967 +; toolsrc/parse.pla: 0982: scan +; toolsrc/parse.pla: 0983: fin + !BYTE $54 ; CALL _C076 +_F1293 !WORD _C076 + !BYTE $30 ; DROP +_B964 +_B965 +; toolsrc/parse.pla: 0984: fin +_B962 +_B963 +; toolsrc/parse.pla: 0985: size = size * basesize +; toolsrc/parse.pla: 0986: if token == SET_TKN +; toolsrc/parse.pla: 0987: if type & (EXTERN_TYPE|LOCAL_TYPE); exit_err(ERR_INVAL|ERR_LOCAL|ERR_INIT); fin + !BYTE $66,$0F ; LLW [15] + !BYTE $66,$02 ; LLW [2] + !BYTE $86 ; MUL + !BYTE $76,$0F ; SLW [15] + !BYTE $68 ; LAB _D098+0 +_F1294 !WORD _D098+0 + !BYTE $2A,$BD ; CB 189 + !BYTE $24 ; BRNE _B968 + !WORD _B968-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B970 + !WORD _B970-* + !BYTE $2C,$44,$08 ; CW 2116 + !BYTE $54 ; CALL _C002 +_F1295 !WORD _C002 +_B970 +_B971 +; toolsrc/parse.pla: 0988: if idlen +; toolsrc/parse.pla: 0989: new_iddata(idptr, idlen, type, 0) +; toolsrc/parse.pla: 0990: fin + !BYTE $64,$08 ; LLB [8] + !BYTE $4C ; BRFLS _B972 + !WORD _B972-* + !BYTE $66,$09 ; LLW [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C046 +_F1296 !WORD _C046 +_B972 +_B973 +; toolsrc/parse.pla: 0991: constval, constsize, consttype = parse_constexpr +; toolsrc/parse.pla: 0992: arraysize = emit_data(type, consttype, constval, constsize) +; toolsrc/parse.pla: 0993: while token == COMMA_TKN + !BYTE $54 ; CALL _C089 +_F1297 !WORD _C089 + !BYTE $74,$06 ; SLB [6] + !BYTE $74,$07 ; SLB [7] + !BYTE $76,$0B ; SLW [11] + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$0B ; LLW [11] + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _C014 +_F1298 !WORD _C014 + !BYTE $76,$0D ; SLW [13] + !BYTE $50 ; BRNCH _B976 + !WORD _B976-* +_B974 +; toolsrc/parse.pla: 0994: constval, constsize, consttype = parse_constexpr +; toolsrc/parse.pla: 0995: arraysize = arraysize + emit_data(type, consttype, constval, constsize) +; toolsrc/parse.pla: 0996: loop + !BYTE $54 ; CALL _C089 +_F1299 !WORD _C089 + !BYTE $74,$06 ; SLB [6] + !BYTE $74,$07 ; SLB [7] + !BYTE $76,$0B ; SLW [11] + !BYTE $66,$0D ; LLW [13] + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$06 ; LLB [6] + !BYTE $66,$0B ; LLW [11] + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _C014 +_F1300 !WORD _C014 + !BYTE $82 ; ADD + !BYTE $76,$0D ; SLW [13] +_B976 + !BYTE $68 ; LAB _D098+0 +_F1301 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B974 + !WORD _B974-* +_B975 +; toolsrc/parse.pla: 0997: size_iddata(PTR_TYPE, size, arraysize) +; toolsrc/parse.pla: 0998: elsif not ignore_var + !BYTE $2A,$60 ; CB 96 + !BYTE $66,$0F ; LLW [15] + !BYTE $66,$0D ; LLW [13] + !BYTE $54 ; CALL _C047 +_F1302 !WORD _C047 + !BYTE $50 ; BRNCH _B969 + !WORD _B969-* +_B968 +; toolsrc/parse.pla: 0999: if idlen +; toolsrc/parse.pla: 1000: if infunc +; toolsrc/parse.pla: 1001: new_idlocal(idptr, idlen, type, size) +; toolsrc/parse.pla: 1002: else + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B977 + !WORD _B977-* + !BYTE $64,$08 ; LLB [8] + !BYTE $4C ; BRFLS _B978 + !WORD _B978-* + !BYTE $68 ; LAB _D107+0 +_F1303 !WORD _D107+0 + !BYTE $4C ; BRFLS _B980 + !WORD _B980-* + !BYTE $66,$09 ; LLW [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0F ; LLW [15] + !BYTE $54 ; CALL _C053 +_F1304 !WORD _C053 + !BYTE $50 ; BRNCH _B981 + !WORD _B981-* +_B980 +; toolsrc/parse.pla: 1003: new_iddata(idptr, idlen, type, size) +; toolsrc/parse.pla: 1004: fin + !BYTE $66,$09 ; LLW [9] + !BYTE $64,$08 ; LLB [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0F ; LLW [15] + !BYTE $54 ; CALL _C046 +_F1305 !WORD _C046 +_B981 +; toolsrc/parse.pla: 1005: elsif not type & EXTERN_TYPE + !BYTE $50 ; BRNCH _B979 + !WORD _B979-* +_B978 +; toolsrc/parse.pla: 1006: if type & LOCAL_TYPE +; toolsrc/parse.pla: 1007: framesize = framesize + size +; toolsrc/parse.pla: 1008: else + !BYTE $66,$00 ; LLW [0] + !BYTE $80 ; NOT + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B982 + !WORD _B982-* + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B983 + !WORD _B983-* + !BYTE $6A ; LAW _D070+0 +_F1306 !WORD _D070+0 + !BYTE $B2,$0F ; ADDLW [15] + !BYTE $7A ; SAW _D070+0 +_F1307 !WORD _D070+0 + !BYTE $50 ; BRNCH _B984 + !WORD _B984-* +_B983 +; toolsrc/parse.pla: 1009: size_iddata(type, size, 0) +; toolsrc/parse.pla: 1010: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$0F ; LLW [15] + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C047 +_F1308 !WORD _C047 +_B984 +; toolsrc/parse.pla: 1011: fin +_B982 +_B979 +; toolsrc/parse.pla: 1012: fin +_B977 +_B969 +; toolsrc/parse.pla: 1013: end + !BYTE $5A,$11 ; LEAVE 17 +; toolsrc/parse.pla: 1014: def parse_struc#0 +_C098 ; parse_struc() +; toolsrc/parse.pla: 1015: byte strucid[16] + ; strucid -> [0] +; toolsrc/parse.pla: 1016: byte idlen, struclen, constsize, consttype + ; idlen -> [16] + ; struclen -> [17] + ; constsize -> [18] + ; consttype -> [19] +; toolsrc/parse.pla: 1017: word type, basesize, size, offset, idstr + ; type -> [20] + ; basesize -> [22] + ; size -> [24] + ; offset -> [26] + ; idstr -> [28] +; toolsrc/parse.pla: 1018: +; toolsrc/parse.pla: 1019: struclen = 0 + !BYTE $58,$1E,$00 ; ENTER 30,0 +; toolsrc/parse.pla: 1020: if scan == ID_TKN +; toolsrc/parse.pla: 1021: struclen = tknlen +; toolsrc/parse.pla: 1022: if struclen > 16 +; toolsrc/parse.pla: 1023: struclen = 16 +; toolsrc/parse.pla: 1024: fin + !BYTE $00 ; CN 0 + !BYTE $74,$11 ; SLB [17] + !BYTE $54 ; CALL _C076 +_F1309 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B985 + !WORD _B985-* + !BYTE $68 ; LAB _D100+0 +_F1310 !WORD _D100+0 + !BYTE $6C,$11 ; DLB [17] + !BYTE $2A,$10 ; CB 16 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B987 + !WORD _B987-* + !BYTE $2A,$10 ; CB 16 + !BYTE $74,$11 ; SLB [17] +_B987 +_B988 +; toolsrc/parse.pla: 1025: for idlen = 0 to struclen + !BYTE $64,$11 ; LLB [17] + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B989 + !WORD _B989-* +_B990 + !BYTE $6C,$10 ; DLB [16] +; toolsrc/parse.pla: 1026: strucid[idlen] = ^(tknptr + idlen) +; toolsrc/parse.pla: 1027: next + !BYTE $6A ; LAW _D101+0 +_F1311 !WORD _D101+0 + !BYTE $B0,$10 ; ADDLB [16] + !BYTE $60 ; LB + !BYTE $28,$00 ; LLA [0] + !BYTE $B0,$10 ; ADDLB [16] + !BYTE $70 ; SB +_B991 + !BYTE $A4 ; INCBRLE _B990 + !WORD _B990-* +_B989 + !BYTE $74,$10 ; SLB [16] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 1028: scan +; toolsrc/parse.pla: 1029: fin + !BYTE $54 ; CALL _C076 +_F1312 !WORD _C076 + !BYTE $30 ; DROP +_B985 +_B986 +; toolsrc/parse.pla: 1030: offset = 0 +; toolsrc/parse.pla: 1031: while nextln == BYTE_TKN or token == WORD_TKN or token == EOL_TKN + !BYTE $00 ; CN 0 + !BYTE $76,$1A ; SLW [26] + !BYTE $50 ; BRNCH _B994 + !WORD _B994-* +_B992 +; toolsrc/parse.pla: 1032: if token <> EOL_TKN +; toolsrc/parse.pla: 1033: basesize = 1 +; toolsrc/parse.pla: 1034: type = token == BYTE_TKN ?? BYTE_TYPE :: WORD_TYPE +; toolsrc/parse.pla: 1035: if scan == OPEN_BRACKET_TKN +; toolsrc/parse.pla: 1036: basesize, constsize, consttype = parse_constexpr +; toolsrc/parse.pla: 1037: if token <> CLOSE_BRACKET_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F1313 !WORD _D098+0 + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B997 + !WORD _B997-* + !BYTE $02 ; CN 1 + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D098+0 +_F1314 !WORD _D098+0 + !BYTE $2A,$81 ; CB 129 + !BYTE $24 ; BRNE _B999 + !WORD _B999-* + !BYTE $04 ; CN 2 + !BYTE $50 ; BRNCH _B1000 + !WORD _B1000-* +_B999 + !BYTE $08 ; CN 4 +_B1000 + !BYTE $76,$14 ; SLW [20] + !BYTE $54 ; CALL _C076 +_F1315 !WORD _C076 + !BYTE $2A,$DB ; CB 219 + !BYTE $24 ; BRNE _B1001 + !WORD _B1001-* + !BYTE $54 ; CALL _C089 +_F1316 !WORD _C089 + !BYTE $74,$13 ; SLB [19] + !BYTE $74,$12 ; SLB [18] + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D098+0 +_F1317 !WORD _D098+0 + !BYTE $2A,$DD ; CB 221 + !BYTE $22 ; BREQ _B1003 + !WORD _B1003-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1318 !WORD _C002 +_B1003 +_B1004 +; toolsrc/parse.pla: 1038: scan +; toolsrc/parse.pla: 1039: fin + !BYTE $54 ; CALL _C076 +_F1319 !WORD _C076 + !BYTE $30 ; DROP +_B1001 +_B1002 +; toolsrc/parse.pla: 1040: repeat +_B1006 +; toolsrc/parse.pla: 1041: size = 1 +; toolsrc/parse.pla: 1042: idlen = 0 +; toolsrc/parse.pla: 1043: if token == ID_TKN +; toolsrc/parse.pla: 1044: idstr = tknptr +; toolsrc/parse.pla: 1045: idlen = tknlen +; toolsrc/parse.pla: 1046: if scan == OPEN_BRACKET_TKN +; toolsrc/parse.pla: 1047: size, constsize, consttype = parse_constexpr +; toolsrc/parse.pla: 1048: if token <> CLOSE_BRACKET_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $02 ; CN 1 + !BYTE $76,$18 ; SLW [24] + !BYTE $00 ; CN 0 + !BYTE $74,$10 ; SLB [16] + !BYTE $68 ; LAB _D098+0 +_F1320 !WORD _D098+0 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B1008 + !WORD _B1008-* + !BYTE $6A ; LAW _D101+0 +_F1321 !WORD _D101+0 + !BYTE $76,$1C ; SLW [28] + !BYTE $68 ; LAB _D100+0 +_F1322 !WORD _D100+0 + !BYTE $74,$10 ; SLB [16] + !BYTE $54 ; CALL _C076 +_F1323 !WORD _C076 + !BYTE $2A,$DB ; CB 219 + !BYTE $24 ; BRNE _B1010 + !WORD _B1010-* + !BYTE $54 ; CALL _C089 +_F1324 !WORD _C089 + !BYTE $74,$13 ; SLB [19] + !BYTE $74,$12 ; SLB [18] + !BYTE $76,$18 ; SLW [24] + !BYTE $68 ; LAB _D098+0 +_F1325 !WORD _D098+0 + !BYTE $2A,$DD ; CB 221 + !BYTE $22 ; BREQ _B1012 + !WORD _B1012-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1326 !WORD _C002 +_B1012 +_B1013 +; toolsrc/parse.pla: 1049: scan +; toolsrc/parse.pla: 1050: fin + !BYTE $54 ; CALL _C076 +_F1327 !WORD _C076 + !BYTE $30 ; DROP +_B1010 +_B1011 +; toolsrc/parse.pla: 1051: fin +_B1008 +_B1009 +; toolsrc/parse.pla: 1052: size = size * basesize +; toolsrc/parse.pla: 1053: if type & WORD_TYPE +; toolsrc/parse.pla: 1054: size = size * 2 +; toolsrc/parse.pla: 1055: fin + !BYTE $66,$18 ; LLW [24] + !BYTE $66,$16 ; LLW [22] + !BYTE $86 ; MUL + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$14 ; LLW [20] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B1014 + !WORD _B1014-* + !BYTE $66,$18 ; LLW [24] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$18 ; SLW [24] +_B1014 +_B1015 +; toolsrc/parse.pla: 1056: if idlen +; toolsrc/parse.pla: 1057: new_idconst(idstr, idlen, offset) +; toolsrc/parse.pla: 1058: fin + !BYTE $64,$10 ; LLB [16] + !BYTE $4C ; BRFLS _B1016 + !WORD _B1016-* + !BYTE $66,$1C ; LLW [28] + !BYTE $64,$10 ; LLB [16] + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C049 +_F1328 !WORD _C049 +_B1016 +_B1017 +; toolsrc/parse.pla: 1059: offset = offset + size +; toolsrc/parse.pla: 1060: until token <> COMMA_TKN + !BYTE $66,$1A ; LLW [26] + !BYTE $B2,$18 ; ADDLW [24] + !BYTE $76,$1A ; SLW [26] +_B1007 + !BYTE $68 ; LAB _D098+0 +_F1329 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1006 + !WORD _B1006-* +_B1005 +; toolsrc/parse.pla: 1061: fin +_B997 +_B998 +; toolsrc/parse.pla: 1062: loop +_B994 + !BYTE $54 ; CALL _C079 +_F1330 !WORD _C079 + !BYTE $2A,$81 ; CB 129 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B995 + !WORD _B995-* + !BYTE $68 ; LAB _D098+0 +_F1331 !WORD _D098+0 + !BYTE $2A,$82 ; CB 130 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B996 + !WORD _B996-* + !BYTE $68 ; LAB _D098+0 +_F1332 !WORD _D098+0 + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ +_B996 +_B995 + !BYTE $4E ; BRTRU _B992 + !WORD _B992-* +_B993 +; toolsrc/parse.pla: 1063: if struclen +; toolsrc/parse.pla: 1064: new_idconst(@strucid, struclen, offset) +; toolsrc/parse.pla: 1065: fin + !BYTE $64,$11 ; LLB [17] + !BYTE $4C ; BRFLS _B1018 + !WORD _B1018-* + !BYTE $28,$00 ; LLA [0] + !BYTE $64,$11 ; LLB [17] + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C049 +_F1333 !WORD _C049 +_B1018 +_B1019 +; toolsrc/parse.pla: 1066: if token <> END_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1334 !WORD _D098+0 + !BYTE $2A,$87 ; CB 135 + !BYTE $22 ; BREQ _B1020 + !WORD _B1020-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1335 !WORD _C002 +_B1020 +_B1021 +; toolsrc/parse.pla: 1067: scan +; toolsrc/parse.pla: 1068: end + !BYTE $54 ; CALL _C076 +_F1336 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $5A,$1E ; LEAVE 30 +; toolsrc/parse.pla: 1069: def parse_vars(type, ignore_vars) + ; type -> [0] + ; ignore_vars -> [2] +_C099 ; parse_vars() +; toolsrc/parse.pla: 1070: byte idlen, cfnparms, cfnvals + ; idlen -> [4] + ; cfnparms -> [5] + ; cfnvals -> [6] +; toolsrc/parse.pla: 1071: word size, value, idptr + ; size -> [7] + ; value -> [9] + ; idptr -> [11] +; toolsrc/parse.pla: 1072: +; toolsrc/parse.pla: 1073: when token + !BYTE $58,$0D,$02 ; ENTER 13,2 + !BYTE $68 ; LAB _D098+0 +_F1337 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B1023-* +; toolsrc/parse.pla: 1074: is SYSFLAGS_TKN +_B1024 +; toolsrc/parse.pla: 1075: if type & (EXTERN_TYPE | LOCAL_TYPE); exit_err(ERR_INVAL|ERR_GLOBAL|ERR_INIT); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B1025 + !WORD _B1025-* + !BYTE $2C,$84,$08 ; CW 2180 + !BYTE $54 ; CALL _C002 +_F1338 !WORD _C002 +_B1025 +_B1026 +; toolsrc/parse.pla: 1076: modsysflags, drop, drop = parse_constexpr +; toolsrc/parse.pla: 1077: break + !BYTE $54 ; CALL _C089 +_F1339 !WORD _C089 + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $7A ; SAW _D077+0 +_F1340 !WORD _D077+0 + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1078: is CONST_TKN +_B1027 +; toolsrc/parse.pla: 1079: if type & LOCAL_TYPE; exit_err(ERR_INVAL|ERR_GLOBAL|ERR_INIT); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B1028 + !WORD _B1028-* + !BYTE $2C,$84,$08 ; CW 2180 + !BYTE $54 ; CALL _C002 +_F1341 !WORD _C002 +_B1028 +_B1029 +; toolsrc/parse.pla: 1080: if scan <> ID_TKN; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $54 ; CALL _C076 +_F1342 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $22 ; BREQ _B1030 + !WORD _B1030-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F1343 !WORD _C002 +_B1030 +_B1031 +; toolsrc/parse.pla: 1081: idptr = tknptr +; toolsrc/parse.pla: 1082: idlen = tknlen +; toolsrc/parse.pla: 1083: if scan <> SET_TKN; exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $6A ; LAW _D101+0 +_F1344 !WORD _D101+0 + !BYTE $76,$0B ; SLW [11] + !BYTE $68 ; LAB _D100+0 +_F1345 !WORD _D100+0 + !BYTE $74,$04 ; SLB [4] + !BYTE $54 ; CALL _C076 +_F1346 !WORD _C076 + !BYTE $2A,$BD ; CB 189 + !BYTE $22 ; BREQ _B1032 + !WORD _B1032-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F1347 !WORD _C002 +_B1032 +_B1033 +; toolsrc/parse.pla: 1084: value, size, type = parse_constexpr +; toolsrc/parse.pla: 1085: new_idconst(idptr, idlen, value) +; toolsrc/parse.pla: 1086: break + !BYTE $54 ; CALL _C089 +_F1348 !WORD _C089 + !BYTE $76,$00 ; SLW [0] + !BYTE $76,$07 ; SLW [7] + !BYTE $76,$09 ; SLW [9] + !BYTE $66,$0B ; LLW [11] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$09 ; LLW [9] + !BYTE $54 ; CALL _C049 +_F1349 !WORD _C049 + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1087: is STRUC_TKN +_B1034 +; toolsrc/parse.pla: 1088: parse_struc +; toolsrc/parse.pla: 1089: break + !BYTE $54 ; CALL _C098 +_F1350 !WORD _C098 + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1090: is EXPORT_TKN +_B1035 +; toolsrc/parse.pla: 1091: if type & (EXTERN_TYPE|LOCAL_TYPE); exit_err(ERR_INVAL|ERR_LOCAL|ERR_SYNTAX); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$10,$04 ; CW 1040 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B1036 + !WORD _B1036-* + !BYTE $2C,$44,$80 ; CW 32836 + !BYTE $54 ; CALL _C002 +_F1351 !WORD _C002 +_B1036 +_B1037 +; toolsrc/parse.pla: 1092: type = EXPORT_TYPE +; toolsrc/parse.pla: 1093: idptr = tknptr +; toolsrc/parse.pla: 1094: if scan <> BYTE_TKN and token <> WORD_TKN // This could be an exported definition +; toolsrc/parse.pla: 1095: rewind(idptr) +; toolsrc/parse.pla: 1096: scan +; toolsrc/parse.pla: 1097: return FALSE + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D101+0 +_F1352 !WORD _D101+0 + !BYTE $76,$0B ; SLW [11] + !BYTE $54 ; CALL _C076 +_F1353 !WORD _C076 + !BYTE $2A,$81 ; CB 129 + !BYTE $42 ; ISNE + !BYTE $AC ; BRAND _B1038 + !WORD _B1038-* + !BYTE $68 ; LAB _D098+0 +_F1354 !WORD _D098+0 + !BYTE $2A,$82 ; CB 130 + !BYTE $42 ; ISNE +_B1038 + !BYTE $4C ; BRFLS _B1039 + !WORD _B1039-* + !BYTE $66,$0B ; LLW [11] + !BYTE $54 ; CALL _C077 +_F1355 !WORD _C077 + !BYTE $54 ; CALL _C076 +_F1356 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$0D ; LEAVE 13 +; toolsrc/parse.pla: 1098: fin +_B1039 +_B1040 +; toolsrc/parse.pla: 1099: // Fall through to BYTE or WORD declaration +; toolsrc/parse.pla: 1100: is BYTE_TKN +_B1041 +; toolsrc/parse.pla: 1101: is WORD_TKN +_B1042 +; toolsrc/parse.pla: 1102: type = type | (token == BYTE_TKN ?? BYTE_TYPE :: WORD_TYPE) +; toolsrc/parse.pla: 1103: size = 1 +; toolsrc/parse.pla: 1104: if scan == OPEN_BRACKET_TKN // Get basesize for data elements +; toolsrc/parse.pla: 1105: size, drop, drop = parse_constexpr +; toolsrc/parse.pla: 1106: if token <> CLOSE_BRACKET_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $68 ; LAB _D098+0 +_F1357 !WORD _D098+0 + !BYTE $2A,$81 ; CB 129 + !BYTE $24 ; BRNE _B1043 + !WORD _B1043-* + !BYTE $04 ; CN 2 + !BYTE $50 ; BRNCH _B1044 + !WORD _B1044-* +_B1043 + !BYTE $08 ; CN 4 +_B1044 + !BYTE $96 ; OR + !BYTE $76,$00 ; SLW [0] + !BYTE $02 ; CN 1 + !BYTE $76,$07 ; SLW [7] + !BYTE $54 ; CALL _C076 +_F1358 !WORD _C076 + !BYTE $2A,$DB ; CB 219 + !BYTE $24 ; BRNE _B1045 + !WORD _B1045-* + !BYTE $54 ; CALL _C089 +_F1359 !WORD _C089 + !BYTE $30 ; DROP + !BYTE $30 ; DROP + !BYTE $76,$07 ; SLW [7] + !BYTE $68 ; LAB _D098+0 +_F1360 !WORD _D098+0 + !BYTE $2A,$DD ; CB 221 + !BYTE $22 ; BREQ _B1047 + !WORD _B1047-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1361 !WORD _C002 +_B1047 +_B1048 +; toolsrc/parse.pla: 1107: else + !BYTE $50 ; BRNCH _B1046 + !WORD _B1046-* +_B1045 +; toolsrc/parse.pla: 1108: rewind(tknptr) +; toolsrc/parse.pla: 1109: fin + !BYTE $6A ; LAW _D101+0 +_F1362 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F1363 !WORD _C077 +_B1046 +; toolsrc/parse.pla: 1110: if type & WORD_TYPE; size = size * 2; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$04 ; ANDI 4 + !BYTE $4C ; BRFLS _B1049 + !WORD _B1049-* + !BYTE $66,$07 ; LLW [7] + !BYTE $34 ; DUP + !BYTE $82 ; ADD + !BYTE $76,$07 ; SLW [7] +_B1049 +_B1050 +; toolsrc/parse.pla: 1111: repeat; parse_var(type, size, ignore_vars); until token <> COMMA_TKN +_B1052 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$07 ; LLW [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C097 +_F1364 !WORD _C097 +_B1053 + !BYTE $68 ; LAB _D098+0 +_F1365 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1052 + !WORD _B1052-* +_B1051 +; toolsrc/parse.pla: 1112: break + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1113: is PREDEF_TKN +_B1054 +; toolsrc/parse.pla: 1114: repeat +_B1056 +; toolsrc/parse.pla: 1115: if scan == ID_TKN +; toolsrc/parse.pla: 1116: type = type | PREDEF_TYPE +; toolsrc/parse.pla: 1117: idptr = tknptr +; toolsrc/parse.pla: 1118: idlen = tknlen +; toolsrc/parse.pla: 1119: cfnparms = 0 +; toolsrc/parse.pla: 1120: cfnvals = 1 // Default to one return value for compatibility +; toolsrc/parse.pla: 1121: if scan == OPEN_PAREN_TKN +; toolsrc/parse.pla: 1122: repeat + !BYTE $54 ; CALL _C076 +_F1366 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B1058 + !WORD _B1058-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $96 ; OR + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D101+0 +_F1367 !WORD _D101+0 + !BYTE $76,$0B ; SLW [11] + !BYTE $68 ; LAB _D100+0 +_F1368 !WORD _D100+0 + !BYTE $74,$04 ; SLB [4] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $02 ; CN 1 + !BYTE $74,$06 ; SLB [6] + !BYTE $54 ; CALL _C076 +_F1369 !WORD _C076 + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B1060 + !WORD _B1060-* +_B1063 +; toolsrc/parse.pla: 1123: if scan == ID_TKN +; toolsrc/parse.pla: 1124: cfnparms++ + !BYTE $54 ; CALL _C076 +_F1370 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B1065 + !WORD _B1065-* + !BYTE $64,$05 ; LLB [5] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 1125: scan +; toolsrc/parse.pla: 1126: fin + !BYTE $74,$05 ; SLB [5] + !BYTE $54 ; CALL _C076 +_F1371 !WORD _C076 + !BYTE $30 ; DROP +_B1065 +_B1066 +; toolsrc/parse.pla: 1127: until token <> COMMA_TKN +_B1064 + !BYTE $68 ; LAB _D098+0 +_F1372 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1063 + !WORD _B1063-* +_B1062 +; toolsrc/parse.pla: 1128: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F1373 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B1067 + !WORD _B1067-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1374 !WORD _C002 +_B1067 +_B1068 +; toolsrc/parse.pla: 1129: scan +; toolsrc/parse.pla: 1130: fin + !BYTE $54 ; CALL _C076 +_F1375 !WORD _C076 + !BYTE $30 ; DROP +_B1060 +_B1061 +; toolsrc/parse.pla: 1131: if token == POUND_TKN +; toolsrc/parse.pla: 1132: if not parse_const(@cfnvals); exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $68 ; LAB _D098+0 +_F1376 !WORD _D098+0 + !BYTE $2A,$A3 ; CB 163 + !BYTE $24 ; BRNE _B1069 + !WORD _B1069-* + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _C090 +_F1377 !WORD _C090 + !BYTE $4E ; BRTRU _B1071 + !WORD _B1071-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F1378 !WORD _C002 +_B1071 +_B1072 +; toolsrc/parse.pla: 1133: scan +; toolsrc/parse.pla: 1134: fin + !BYTE $54 ; CALL _C076 +_F1379 !WORD _C076 + !BYTE $30 ; DROP +_B1069 +_B1070 +; toolsrc/parse.pla: 1135: new_idfunc(idptr, idlen, type, new_tag(type & EXTERN_TYPE ?? EXTERN_FIXUP|WORD_FIXUP :: WORD_FIXUP), cfnparms, cfnvals) +; toolsrc/parse.pla: 1136: else + !BYTE $66,$0B ; LLW [11] + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B1075 + !WORD _B1075-* + !BYTE $2A,$90 ; CB 144 + !BYTE $50 ; BRNCH _B1076 + !WORD _B1076-* +_B1075 + !BYTE $2A,$80 ; CB 128 +_B1076 + !BYTE $54 ; CALL _C004 +_F1380 !WORD _C004 + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$06 ; LLB [6] + !BYTE $54 ; CALL _C050 +_F1381 !WORD _C050 + !BYTE $50 ; BRNCH _B1059 + !WORD _B1059-* +_B1058 +; toolsrc/parse.pla: 1137: exit_err(ERR_MISS|ERR_ID) +; toolsrc/parse.pla: 1138: fin + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F1382 !WORD _C002 +_B1059 +; toolsrc/parse.pla: 1139: until token <> COMMA_TKN +_B1057 + !BYTE $68 ; LAB _D098+0 +_F1383 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1056 + !WORD _B1056-* +_B1055 +; toolsrc/parse.pla: 1140: break + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1141: is IMPORT_TKN +_B1077 +; toolsrc/parse.pla: 1142: if codeptr <> codebuff or type <> GLOBAL_TYPE; exit_err(ERR_INVAL|ERR_INIT); fin + !BYTE $6A ; LAW _D075+0 +_F1384 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F1385 !WORD _D074+0 + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B1078 + !WORD _B1078-* + !BYTE $66,$00 ; LLW [0] +_B1078 + !BYTE $4C ; BRFLS _B1079 + !WORD _B1079-* + !BYTE $2C,$04,$08 ; CW 2052 + !BYTE $54 ; CALL _C002 +_F1386 !WORD _C002 +_B1079 +_B1080 +; toolsrc/parse.pla: 1143: parse_mods +; toolsrc/parse.pla: 1144: break + !BYTE $54 ; CALL _P000 +_F1387 !WORD _P000 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1145: is EOL_TKN +_B1081 +; toolsrc/parse.pla: 1146: break + !BYTE $50 ; BRNCH _B1022 + !WORD _B1022-* +; toolsrc/parse.pla: 1147: otherwise +_B1023 + !BYTE $09 ; CASEBLOCK + !WORD $0002 + !WORD _B1081-* + !WORD $0080 + !WORD _B1027-* + !WORD $0081 + !WORD _B1041-* + !WORD $0082 + !WORD _B1042-* + !WORD $0096 + !WORD _B1034-* + !WORD $0097 + !WORD _B1024-* + !WORD $009C + !WORD _B1054-* + !WORD $009D + !WORD _B1077-* + !WORD $009E + !WORD _B1035-* +; toolsrc/parse.pla: 1148: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$0D ; LEAVE 13 +; toolsrc/parse.pla: 1149: wend +_B1022 +; toolsrc/parse.pla: 1150: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$0D ; LEAVE 13 +; toolsrc/parse.pla: 1151: end +; toolsrc/parse.pla: 1152: def parse_mods +_P000 ; parse_mods() +_C100 ; parse_mods() +; toolsrc/parse.pla: 1153: byte i, ignore_emit + ; i -> [0] + ; ignore_emit -> [1] +; toolsrc/parse.pla: 1154: +; toolsrc/parse.pla: 1155: if token == IMPORT_TKN + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/parse.pla: 1156: if scan <> ID_TKN; exit_err(ERR_MISS|ERR_ID); fin + !BYTE $68 ; LAB _D098+0 +_F1388 !WORD _D098+0 + !BYTE $2A,$9D ; CB 157 + !BYTE $24 ; BRNE _B1082 + !WORD _B1082-* + !BYTE $54 ; CALL _C076 +_F1389 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $22 ; BREQ _B1084 + !WORD _B1084-* + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F1390 !WORD _C002 +_B1084 +_B1085 +; toolsrc/parse.pla: 1157: if tknlen == modfile +; toolsrc/parse.pla: 1158: ignore_emit = TRUE +; toolsrc/parse.pla: 1159: for i = 1 to tknlen + !BYTE $68 ; LAB _D100+0 +_F1391 !WORD _D100+0 + !BYTE $68 ; LAB _D092+0 +_F1392 !WORD _D092+0 + !BYTE $24 ; BRNE _B1086 + !WORD _B1086-* + !BYTE $20 ; MINUS ONE + !BYTE $74,$01 ; SLB [1] + !BYTE $68 ; LAB _D100+0 +_F1393 !WORD _D100+0 + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B1088 + !WORD _B1088-* +_B1089 + !BYTE $6C,$00 ; DLB [0] +; toolsrc/parse.pla: 1160: if toupper(tknptr->[i - 1]) <> modfile[i]; ignore_emit = FALSE; break; fin + !BYTE $6A ; LAW _D101+0 +_F1394 !WORD _D101+0 + !BYTE $64,$00 ; LLB [0] + !BYTE $8E ; DECR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F1395 !WORD 0 + !BYTE $26 ; LA _D092+0 +_F1396 !WORD _D092+0 + !BYTE $B0,$00 ; ADDLB [0] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B1091 + !WORD _B1091-* + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $50 ; BRNCH _B1088 + !WORD _B1088-* +_B1091 +_B1092 +; toolsrc/parse.pla: 1161: next +_B1090 + !BYTE $A4 ; INCBRLE _B1089 + !WORD _B1089-* +_B1088 + !BYTE $74,$00 ; SLB [0] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 1162: else + !BYTE $50 ; BRNCH _B1087 + !WORD _B1087-* +_B1086 +; toolsrc/parse.pla: 1163: ignore_emit = FALSE +; toolsrc/parse.pla: 1164: fin + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] +_B1087 +; toolsrc/parse.pla: 1165: if not ignore_emit +; toolsrc/parse.pla: 1166: new_moddep(tknptr, tknlen) +; toolsrc/parse.pla: 1167: fin + !BYTE $64,$01 ; LLB [1] + !BYTE $4E ; BRTRU _B1093 + !WORD _B1093-* + !BYTE $6A ; LAW _D101+0 +_F1397 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F1398 !WORD _D100+0 + !BYTE $54 ; CALL _C057 +_F1399 !WORD _C057 +_B1093 +_B1094 +; toolsrc/parse.pla: 1168: scan +; toolsrc/parse.pla: 1169: while parse_vars(EXTERN_TYPE, ignore_emit); nextln; loop + !BYTE $54 ; CALL _C076 +_F1400 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B1097 + !WORD _B1097-* +_B1095 + !BYTE $54 ; CALL _C079 +_F1401 !WORD _C079 + !BYTE $30 ; DROP +_B1097 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C099 +_F1402 !WORD _C099 + !BYTE $4E ; BRTRU _B1095 + !WORD _B1095-* +_B1096 +; toolsrc/parse.pla: 1170: if token <> END_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $68 ; LAB _D098+0 +_F1403 !WORD _D098+0 + !BYTE $2A,$87 ; CB 135 + !BYTE $22 ; BREQ _B1098 + !WORD _B1098-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1404 !WORD _C002 +_B1098 +_B1099 +; toolsrc/parse.pla: 1171: scan +; toolsrc/parse.pla: 1172: fin + !BYTE $54 ; CALL _C076 +_F1405 !WORD _C076 + !BYTE $30 ; DROP +_B1082 +_B1083 +; toolsrc/parse.pla: 1173: return token == EOL_TKN + !BYTE $68 ; LAB _D098+0 +_F1406 !WORD _D098+0 + !BYTE $04 ; CN 2 + !BYTE $40 ; ISEQ + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/parse.pla: 1174: end +; toolsrc/parse.pla: 1175: def parse_lambda +_P004 ; parse_lambda() +_C101 ; parse_lambda() +; toolsrc/parse.pla: 1176: word func_tag + ; func_tag -> [0] +; toolsrc/parse.pla: 1177: byte cfnparms + ; cfnparms -> [2] +; toolsrc/parse.pla: 1178: byte lambda_id[4] + ; lambda_id -> [3] +; toolsrc/parse.pla: 1179: +; toolsrc/parse.pla: 1180: if not infunc; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $58,$07,$00 ; ENTER 7,0 + !BYTE $68 ; LAB _D107+0 +_F1407 !WORD _D107+0 + !BYTE $4E ; BRTRU _B1100 + !WORD _B1100-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1408 !WORD _C002 +_B1100 +_B1101 +; toolsrc/parse.pla: 1181: if inlambda; puts("Nested lambdas!\n"); exit_err(0); fin + !BYTE $68 ; LAB _D108+0 +_F1409 !WORD _D108+0 + !BYTE $4C ; BRFLS _B1102 + !WORD _B1102-* + !BYTE $2E ; CS + !BYTE $10 + !BYTE $4E,$65,$73,$74,$65,$64,$20,$6C + !BYTE $61,$6D,$62,$64,$61,$73,$21,$0D + !BYTE $54 ; CALL _X004 +_F1410 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C002 +_F1411 !WORD _C002 +_B1102 +_B1103 +; toolsrc/parse.pla: 1182: // +; toolsrc/parse.pla: 1183: // Parse parameters and return value count +; toolsrc/parse.pla: 1184: // +; toolsrc/parse.pla: 1185: save_idlocal +; toolsrc/parse.pla: 1186: init_idlocal +; toolsrc/parse.pla: 1187: cfnparms = 0 +; toolsrc/parse.pla: 1188: inlambda = TRUE +; toolsrc/parse.pla: 1189: if scan == OPEN_PAREN_TKN +; toolsrc/parse.pla: 1190: repeat + !BYTE $54 ; CALL _C055 +_F1412 !WORD _C055 + !BYTE $54 ; CALL _C054 +_F1413 !WORD _C054 + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $20 ; MINUS ONE + !BYTE $78 ; SAB _D108+0 +_F1414 !WORD _D108+0 + !BYTE $54 ; CALL _C076 +_F1415 !WORD _C076 + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B1104 + !WORD _B1104-* +_B1107 +; toolsrc/parse.pla: 1191: if scan == ID_TKN +; toolsrc/parse.pla: 1192: cfnparms++ + !BYTE $54 ; CALL _C076 +_F1416 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B1109 + !WORD _B1109-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 1193: new_idlocal(tknptr, tknlen, WORD_TYPE, 2) +; toolsrc/parse.pla: 1194: scan +; toolsrc/parse.pla: 1195: fin + !BYTE $74,$02 ; SLB [2] + !BYTE $6A ; LAW _D101+0 +_F1417 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F1418 !WORD _D100+0 + !BYTE $08 ; CN 4 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C053 +_F1419 !WORD _C053 + !BYTE $54 ; CALL _C076 +_F1420 !WORD _C076 + !BYTE $30 ; DROP +_B1109 +_B1110 +; toolsrc/parse.pla: 1196: until token <> COMMA_TKN +_B1108 + !BYTE $68 ; LAB _D098+0 +_F1421 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1107 + !WORD _B1107-* +_B1106 +; toolsrc/parse.pla: 1197: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F1422 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B1111 + !WORD _B1111-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1423 !WORD _C002 +_B1111 +_B1112 +; toolsrc/parse.pla: 1198: else + !BYTE $50 ; BRNCH _B1105 + !WORD _B1105-* +_B1104 +; toolsrc/parse.pla: 1199: exit_err(ERR_MISS|ERR_ID) +; toolsrc/parse.pla: 1200: fin + !BYTE $2C,$08,$02 ; CW 520 + !BYTE $54 ; CALL _C002 +_F1424 !WORD _C002 +_B1105 +; toolsrc/parse.pla: 1201: if lookahead == OPEN_PAREN_TKN +; toolsrc/parse.pla: 1202: scan +; toolsrc/parse.pla: 1203: lambda_seq[lambda_cnt], drop = parse_list +; toolsrc/parse.pla: 1204: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $54 ; CALL _C078 +_F1425 !WORD _C078 + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B1113 + !WORD _B1113-* + !BYTE $54 ; CALL _C076 +_F1426 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C091 +_F1427 !WORD _C091 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D117+0 +_F1428 !WORD _D117+0 + !BYTE $BC ; IDXAB _D114+0 +_F1429 !WORD _D114+0 + !BYTE $72 ; SW + !BYTE $68 ; LAB _D098+0 +_F1430 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B1115 + !WORD _B1115-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1431 !WORD _C002 +_B1115 +_B1116 +; toolsrc/parse.pla: 1205: else + !BYTE $50 ; BRNCH _B1114 + !WORD _B1114-* +_B1113 +; toolsrc/parse.pla: 1206: lambda_seq[lambda_cnt], drop = parse_expr(NULL) +; toolsrc/parse.pla: 1207: rewind(tknptr) +; toolsrc/parse.pla: 1208: fin + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C094 +_F1432 !WORD _C094 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D117+0 +_F1433 !WORD _D117+0 + !BYTE $BC ; IDXAB _D114+0 +_F1434 !WORD _D114+0 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D101+0 +_F1435 !WORD _D101+0 + !BYTE $54 ; CALL _C077 +_F1436 !WORD _C077 +_B1114 +; toolsrc/parse.pla: 1209: // +; toolsrc/parse.pla: 1210: // Build an anonymous ID string for the Lambda function +; toolsrc/parse.pla: 1211: // +; toolsrc/parse.pla: 1212: lambda_id:0 = 3 | ('&' << 8) +; toolsrc/parse.pla: 1213: lambda_id.2 = ((lambda_num >> 3) & $07) + '0' +; toolsrc/parse.pla: 1214: lambda_id.3 = (lambda_num & $07) + '0' +; toolsrc/parse.pla: 1215: lambda_num++ + !BYTE $2C,$03,$26 ; CW 9731 + !BYTE $76,$03 ; SLW [3] + !BYTE $68 ; LAB _D115+0 +_F1437 !WORD _D115+0 + !BYTE $06 ; CN 3 + !BYTE $9C ; SHR + !BYTE $3C,$07 ; ANDI 7 + !BYTE $38,$30 ; ADDI 48 + !BYTE $74,$05 ; SLB [5] + !BYTE $68 ; LAB _D115+0 +_F1438 !WORD _D115+0 + !BYTE $3C,$07 ; ANDI 7 + !BYTE $38,$30 ; ADDI 48 + !BYTE $74,$06 ; SLB [6] + !BYTE $68 ; LAB _D115+0 +_F1439 !WORD _D115+0 + !BYTE $8C ; INCR +; toolsrc/parse.pla: 1216: if lookup_idglobal(@lambda_id.1, 3) +; toolsrc/parse.pla: 1217: // +; toolsrc/parse.pla: 1218: // Lambda ID already exists (from failed scanning for '=') +; toolsrc/parse.pla: 1219: // +; toolsrc/parse.pla: 1220: func_tag = lambda_tag[lambda_cnt] +; toolsrc/parse.pla: 1221: set_idfunc(@lambda_id.1, 3, func_tag, cfnparms, 1) // Override any predef type & tag +; toolsrc/parse.pla: 1222: else + !BYTE $78 ; SAB _D115+0 +_F1440 !WORD _D115+0 + !BYTE $28,$04 ; LLA [4] + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C045 +_F1441 !WORD _C045 + !BYTE $4C ; BRFLS _B1117 + !WORD _B1117-* + !BYTE $26 ; LA _D118+0 +_F1442 !WORD _D118+0 + !BYTE $BC ; IDXAB _D114+0 +_F1443 !WORD _D114+0 + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] + !BYTE $28,$04 ; LLA [4] + !BYTE $06 ; CN 3 + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C051 +_F1444 !WORD _C051 + !BYTE $50 ; BRNCH _B1118 + !WORD _B1118-* +_B1117 +; toolsrc/parse.pla: 1223: // +; toolsrc/parse.pla: 1224: // Creat new Lambda ID +; toolsrc/parse.pla: 1225: // +; toolsrc/parse.pla: 1226: func_tag = new_tag(WORD_FIXUP) +; toolsrc/parse.pla: 1227: lambda_tag[lambda_cnt] = func_tag +; toolsrc/parse.pla: 1228: lambda_cparms[lambda_cnt] = cfnparms +; toolsrc/parse.pla: 1229: new_idfunc(@lambda_id.1, 3, FUNC_TYPE, func_tag, cfnparms, 1) +; toolsrc/parse.pla: 1230: fin + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F1445 !WORD _C004 + !BYTE $6E,$00 ; DLW [0] + !BYTE $26 ; LA _D118+0 +_F1446 !WORD _D118+0 + !BYTE $BC ; IDXAB _D114+0 +_F1447 !WORD _D114+0 + !BYTE $72 ; SW + !BYTE $64,$02 ; LLB [2] + !BYTE $26 ; LA _D116+0 +_F1448 !WORD _D116+0 + !BYTE $B4 ; ADDAB _D114+0 +_F1449 !WORD _D114+0 + !BYTE $70 ; SB + !BYTE $28,$04 ; LLA [4] + !BYTE $06 ; CN 3 + !BYTE $10 ; CN 8 + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C050 +_F1450 !WORD _C050 +_B1118 +; toolsrc/parse.pla: 1231: lambda_cnt++ + !BYTE $68 ; LAB _D114+0 +_F1451 !WORD _D114+0 + !BYTE $8C ; INCR +; toolsrc/parse.pla: 1232: if lambda_cnt >= LAMBDANUM; parse_warn("Lambda function overflow"); fin + !BYTE $7C ; DAB _D114+0 +_F1452 !WORD _D114+0 + !BYTE $2A,$10 ; CB 16 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B1119 + !WORD _B1119-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $4C,$61,$6D,$62,$64,$61,$20,$66 + !BYTE $75,$6E,$63,$74,$69,$6F,$6E,$20 + !BYTE $6F,$76,$65,$72,$66,$6C,$6F,$77 + !BYTE $54 ; CALL _C003 +_F1453 !WORD _C003 +_B1119 +_B1120 +; toolsrc/parse.pla: 1233: inlambda = FALSE +; toolsrc/parse.pla: 1234: restore_idlocal +; toolsrc/parse.pla: 1235: return func_tag + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D108+0 +_F1454 !WORD _D108+0 + !BYTE $54 ; CALL _C056 +_F1455 !WORD _C056 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$07 ; LEAVE 7 +; toolsrc/parse.pla: 1236: end +; toolsrc/parse.pla: 1237: def parse_defs +_C102 ; parse_defs() +; toolsrc/parse.pla: 1238: byte idlen, cfnparms, cfnvals, defstr[17] + ; idlen -> [0] + ; cfnparms -> [1] + ; cfnvals -> [2] + ; defstr -> [3] +; toolsrc/parse.pla: 1239: word type, idstr, func_tag, idptr, defcodeptr + ; type -> [20] + ; idstr -> [22] + ; func_tag -> [24] + ; idptr -> [26] + ; defcodeptr -> [28] +; toolsrc/parse.pla: 1240: type = FUNC_TYPE + !BYTE $58,$1E,$00 ; ENTER 30,0 +; toolsrc/parse.pla: 1241: when token + !BYTE $10 ; CN 8 + !BYTE $76,$14 ; SLW [20] + !BYTE $68 ; LAB _D098+0 +_F1456 !WORD _D098+0 + !BYTE $52 ; SEL + !WORD _B1122-* +; toolsrc/parse.pla: 1242: is CONST_TKN +_B1123 +; toolsrc/parse.pla: 1243: is STRUC_TKN +_B1124 +; toolsrc/parse.pla: 1244: return parse_vars(GLOBAL_TYPE, FALSE) + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C099 +_F1457 !WORD _C099 + !BYTE $5A,$1E ; LEAVE 30 +; toolsrc/parse.pla: 1245: is EXPORT_TKN +_B1125 +; toolsrc/parse.pla: 1246: if scan <> DEF_TKN; exit_err(ERR_INVAL|ERR_STATE); fin + !BYTE $54 ; CALL _C076 +_F1458 !WORD _C076 + !BYTE $2A,$95 ; CB 149 + !BYTE $22 ; BREQ _B1126 + !WORD _B1126-* + !BYTE $2C,$04,$10 ; CW 4100 + !BYTE $54 ; CALL _C002 +_F1459 !WORD _C002 +_B1126 +_B1127 +; toolsrc/parse.pla: 1247: type = type | EXPORT_TYPE +; toolsrc/parse.pla: 1248: is DEF_TKN + !BYTE $66,$14 ; LLW [20] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $96 ; OR + !BYTE $76,$14 ; SLW [20] +_B1128 +; toolsrc/parse.pla: 1249: if scan <> ID_TKN; exit_err(ERR_INVAL|ERR_ID); fin + !BYTE $54 ; CALL _C076 +_F1460 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $22 ; BREQ _B1129 + !WORD _B1129-* + !BYTE $2C,$04,$02 ; CW 516 + !BYTE $54 ; CALL _C002 +_F1461 !WORD _C002 +_B1129 +_B1130 +; toolsrc/parse.pla: 1250: lambda_cnt = 0 +; toolsrc/parse.pla: 1251: cfnparms = 0 +; toolsrc/parse.pla: 1252: infuncvals = 1 +; toolsrc/parse.pla: 1253: infunc = TRUE +; toolsrc/parse.pla: 1254: idstr = tknptr +; toolsrc/parse.pla: 1255: idlen = tknlen +; toolsrc/parse.pla: 1256: init_idlocal +; toolsrc/parse.pla: 1257: if scan == OPEN_PAREN_TKN +; toolsrc/parse.pla: 1258: repeat + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D114+0 +_F1462 !WORD _D114+0 + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $02 ; CN 1 + !BYTE $7A ; SAW _D111+0 +_F1463 !WORD _D111+0 + !BYTE $20 ; MINUS ONE + !BYTE $78 ; SAB _D107+0 +_F1464 !WORD _D107+0 + !BYTE $6A ; LAW _D101+0 +_F1465 !WORD _D101+0 + !BYTE $76,$16 ; SLW [22] + !BYTE $68 ; LAB _D100+0 +_F1466 !WORD _D100+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $54 ; CALL _C054 +_F1467 !WORD _C054 + !BYTE $54 ; CALL _C076 +_F1468 !WORD _C076 + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B1131 + !WORD _B1131-* +_B1134 +; toolsrc/parse.pla: 1259: if scan == ID_TKN +; toolsrc/parse.pla: 1260: cfnparms++ + !BYTE $54 ; CALL _C076 +_F1469 !WORD _C076 + !BYTE $2A,$D6 ; CB 214 + !BYTE $24 ; BRNE _B1136 + !WORD _B1136-* + !BYTE $64,$01 ; LLB [1] + !BYTE $8C ; INCR +; toolsrc/parse.pla: 1261: new_idlocal(tknptr, tknlen, WORD_TYPE, 2) +; toolsrc/parse.pla: 1262: scan +; toolsrc/parse.pla: 1263: fin + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D101+0 +_F1470 !WORD _D101+0 + !BYTE $68 ; LAB _D100+0 +_F1471 !WORD _D100+0 + !BYTE $08 ; CN 4 + !BYTE $04 ; CN 2 + !BYTE $54 ; CALL _C053 +_F1472 !WORD _C053 + !BYTE $54 ; CALL _C076 +_F1473 !WORD _C076 + !BYTE $30 ; DROP +_B1136 +_B1137 +; toolsrc/parse.pla: 1264: until token <> COMMA_TKN +_B1135 + !BYTE $68 ; LAB _D098+0 +_F1474 !WORD _D098+0 + !BYTE $2A,$AC ; CB 172 + !BYTE $22 ; BREQ _B1134 + !WORD _B1134-* +_B1133 +; toolsrc/parse.pla: 1265: if token <> CLOSE_PAREN_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_SYNTAX); fin + !BYTE $68 ; LAB _D098+0 +_F1475 !WORD _D098+0 + !BYTE $2A,$A9 ; CB 169 + !BYTE $22 ; BREQ _B1138 + !WORD _B1138-* + !BYTE $2C,$28,$80 ; CW 32808 + !BYTE $54 ; CALL _C002 +_F1476 !WORD _C002 +_B1138 +_B1139 +; toolsrc/parse.pla: 1266: scan +; toolsrc/parse.pla: 1267: fin + !BYTE $54 ; CALL _C076 +_F1477 !WORD _C076 + !BYTE $30 ; DROP +_B1131 +_B1132 +; toolsrc/parse.pla: 1268: if token == POUND_TKN +; toolsrc/parse.pla: 1269: if not parse_const(@infuncvals); exit_err(ERR_INVAL|ERR_CONST); fin + !BYTE $68 ; LAB _D098+0 +_F1478 !WORD _D098+0 + !BYTE $2A,$A3 ; CB 163 + !BYTE $24 ; BRNE _B1140 + !WORD _B1140-* + !BYTE $26 ; LA _D111+0 +_F1479 !WORD _D111+0 + !BYTE $54 ; CALL _C090 +_F1480 !WORD _C090 + !BYTE $4E ; BRTRU _B1142 + !WORD _B1142-* + !BYTE $2C,$04,$04 ; CW 1028 + !BYTE $54 ; CALL _C002 +_F1481 !WORD _C002 +_B1142 +_B1143 +; toolsrc/parse.pla: 1270: scan +; toolsrc/parse.pla: 1271: fin + !BYTE $54 ; CALL _C076 +_F1482 !WORD _C076 + !BYTE $30 ; DROP +_B1140 +_B1141 +; toolsrc/parse.pla: 1272: idptr = lookup_idglobal(idstr, idlen) +; toolsrc/parse.pla: 1273: if idptr +; toolsrc/parse.pla: 1274: if not idptr=>idtype & PREDEF_TYPE; exit_err(ERR_DUP|ERR_ID); fin + !BYTE $66,$16 ; LLW [22] + !BYTE $64,$00 ; LLB [0] + !BYTE $54 ; CALL _C045 +_F1483 !WORD _C045 + !BYTE $6E,$1A ; DLW [26] + !BYTE $4C ; BRFLS _B1144 + !WORD _B1144-* + !BYTE $66,$1A ; LLW [26] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $80 ; NOT + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $94 ; AND + !BYTE $4C ; BRFLS _B1146 + !WORD _B1146-* + !BYTE $2C,$01,$02 ; CW 513 + !BYTE $54 ; CALL _C002 +_F1484 !WORD _C002 +_B1146 +_B1147 +; toolsrc/parse.pla: 1275: if idptr->funcparms <> cfnparms or idptr->funcvals <> infuncvals; exit_err(ERR_DUP|ERR_CODE|ERR_ID); fin + !BYTE $66,$1A ; LLW [26] + !BYTE $38,$04 ; ADDI 4 + !BYTE $60 ; LB + !BYTE $64,$01 ; LLB [1] + !BYTE $42 ; ISNE + !BYTE $AE ; BROR _B1148 + !WORD _B1148-* + !BYTE $66,$1A ; LLW [26] + !BYTE $38,$05 ; ADDI 5 + !BYTE $60 ; LB + !BYTE $6A ; LAW _D111+0 +_F1485 !WORD _D111+0 + !BYTE $42 ; ISNE +_B1148 + !BYTE $4C ; BRFLS _B1149 + !WORD _B1149-* + !BYTE $2C,$01,$03 ; CW 769 + !BYTE $54 ; CALL _C002 +_F1486 !WORD _C002 +_B1149 +_B1150 +; toolsrc/parse.pla: 1276: func_tag = idptr=>idval +; toolsrc/parse.pla: 1277: idptr=>idtype = idptr=>idtype | type +; toolsrc/parse.pla: 1278: else + !BYTE $66,$1A ; LLW [26] + !BYTE $62 ; LW + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$1A ; LLW [26] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $66,$14 ; LLW [20] + !BYTE $96 ; OR + !BYTE $66,$1A ; LLW [26] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B1145 + !WORD _B1145-* +_B1144 +; toolsrc/parse.pla: 1279: func_tag = new_tag(WORD_FIXUP) +; toolsrc/parse.pla: 1280: new_idfunc(idstr, idlen, type, func_tag, cfnparms, infuncvals) +; toolsrc/parse.pla: 1281: fin + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F1487 !WORD _C004 + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$16 ; LLW [22] + !BYTE $64,$00 ; LLB [0] + !BYTE $66,$14 ; LLW [20] + !BYTE $66,$18 ; LLW [24] + !BYTE $64,$01 ; LLB [1] + !BYTE $6A ; LAW _D111+0 +_F1488 !WORD _D111+0 + !BYTE $54 ; CALL _C050 +_F1489 !WORD _C050 +_B1145 +; toolsrc/parse.pla: 1282: // +; toolsrc/parse.pla: 1283: // Print def name +; toolsrc/parse.pla: 1284: // +; toolsrc/parse.pla: 1285: nametostr(idstr, idlen > 16 ?? 16 :: idlen, @defstr); puts(@defstr); putc(':') +; toolsrc/parse.pla: 1286: defcodeptr = codeptr +; toolsrc/parse.pla: 1287: emit_tag(func_tag) +; toolsrc/parse.pla: 1288: new_dfd(func_tag) +; toolsrc/parse.pla: 1289: while parse_vars(LOCAL_TYPE, FALSE); nextln; loop + !BYTE $66,$16 ; LLW [22] + !BYTE $64,$00 ; LLB [0] + !BYTE $2A,$10 ; CB 16 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B1153 + !WORD _B1153-* + !BYTE $2A,$10 ; CB 16 + !BYTE $50 ; BRNCH _B1154 + !WORD _B1154-* +_B1153 + !BYTE $64,$00 ; LLB [0] +_B1154 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C000 +_F1490 !WORD _C000 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _X004 +_F1491 !WORD 0 + !BYTE $2A,$3A ; CB 58 + !BYTE $54 ; CALL _X002 +_F1492 !WORD 0 + !BYTE $6A ; LAW _D075+0 +_F1493 !WORD _D075+0 + !BYTE $76,$1C ; SLW [28] + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C039 +_F1494 !WORD _C039 + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C058 +_F1495 !WORD _C058 + !BYTE $50 ; BRNCH _B1157 + !WORD _B1157-* +_B1155 + !BYTE $54 ; CALL _C079 +_F1496 !WORD _C079 + !BYTE $30 ; DROP +_B1157 + !BYTE $2A,$10 ; CB 16 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C099 +_F1497 !WORD _C099 + !BYTE $4E ; BRTRU _B1155 + !WORD _B1155-* +_B1156 +; toolsrc/parse.pla: 1290: emit_enter(cfnparms) +; toolsrc/parse.pla: 1291: prevstmnt = 0 +; toolsrc/parse.pla: 1292: while parse_stmnt; nextln; loop + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C038 +_F1498 !WORD _C038 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D110+0 +_F1499 !WORD _D110+0 + !BYTE $50 ; BRNCH _B1160 + !WORD _B1160-* +_B1158 + !BYTE $54 ; CALL _C079 +_F1500 !WORD _C079 + !BYTE $30 ; DROP +_B1160 + !BYTE $54 ; CALL _C096 +_F1501 !WORD _C096 + !BYTE $4E ; BRTRU _B1158 + !WORD _B1158-* +_B1159 +; toolsrc/parse.pla: 1293: infunc = FALSE +; toolsrc/parse.pla: 1294: if token <> END_TKN; exit_err(ERR_MISS|ERR_CLOSE|ERR_STATE); fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D107+0 +_F1502 !WORD _D107+0 + !BYTE $68 ; LAB _D098+0 +_F1503 !WORD _D098+0 + !BYTE $2A,$87 ; CB 135 + !BYTE $22 ; BREQ _B1161 + !WORD _B1161-* + !BYTE $2C,$28,$10 ; CW 4136 + !BYTE $54 ; CALL _C002 +_F1504 !WORD _C002 +_B1161 +_B1162 +; toolsrc/parse.pla: 1295: scan +; toolsrc/parse.pla: 1296: if prevstmnt <> RETURN_TKN +; toolsrc/parse.pla: 1297: if infuncvals; parse_warn("No return values"); fin + !BYTE $54 ; CALL _C076 +_F1505 !WORD _C076 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D110+0 +_F1506 !WORD _D110+0 + !BYTE $2A,$99 ; CB 153 + !BYTE $22 ; BREQ _B1163 + !WORD _B1163-* + !BYTE $6A ; LAW _D111+0 +_F1507 !WORD _D111+0 + !BYTE $4C ; BRFLS _B1165 + !WORD _B1165-* + !BYTE $2E ; CS + !BYTE $10 + !BYTE $4E,$6F,$20,$72,$65,$74,$75,$72 + !BYTE $6E,$20,$76,$61,$6C,$75,$65,$73 + !BYTE $54 ; CALL _C003 +_F1508 !WORD _C003 +_B1165 +_B1166 +; toolsrc/parse.pla: 1298: for cfnvals = infuncvals - 1 downto 0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D111+0 +_F1509 !WORD _D111+0 + !BYTE $8E ; DECR + !BYTE $A2 ; BRLT _B1167 + !WORD _B1167-* +_B1168 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/parse.pla: 1299: emit_const(0) +; toolsrc/parse.pla: 1300: next + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F1510 !WORD _C016 +_B1169 + !BYTE $A8 ; DECBRGE _B1168 + !WORD _B1168-* +_B1167 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 1301: emit_leave +; toolsrc/parse.pla: 1302: fin + !BYTE $54 ; CALL _C037 +_F1511 !WORD _C037 +_B1163 +_B1164 +; toolsrc/parse.pla: 1303: for cfnvals = 0 to lambda_cnt-1 + !BYTE $68 ; LAB _D114+0 +_F1512 !WORD _D114+0 + !BYTE $8E ; DECR + !BYTE $00 ; CN 0 + !BYTE $A0 ; BRGT _B1170 + !WORD _B1170-* +_B1171 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/parse.pla: 1304: emit_lambdafunc(lambda_tag[cfnvals], lambda_cparms[cfnvals], lambda_seq[cfnvals]) +; toolsrc/parse.pla: 1305: new_dfd(lambda_tag[cfnvals]) +; toolsrc/parse.pla: 1306: next + !BYTE $26 ; LA _D118+0 +_F1513 !WORD _D118+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $26 ; LA _D116+0 +_F1514 !WORD _D116+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $26 ; LA _D117+0 +_F1515 !WORD _D117+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C042 +_F1516 !WORD _C042 + !BYTE $26 ; LA _D118+0 +_F1517 !WORD _D118+0 + !BYTE $B8,$02 ; IDXLB [2] + !BYTE $62 ; LW + !BYTE $54 ; CALL _C058 +_F1518 !WORD _C058 +_B1172 + !BYTE $A4 ; INCBRLE _B1171 + !WORD _B1171-* +_B1170 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/parse.pla: 1307: puti(codeptr - defcodeptr); puts(@bytesln) +; toolsrc/parse.pla: 1308: +; toolsrc/parse.pla: 1309: wend + !BYTE $6A ; LAW _D075+0 +_F1519 !WORD _D075+0 + !BYTE $66,$1C ; LLW [28] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X005 +_F1520 !WORD 0 + !BYTE $26 ; LA _D122+0 +_F1521 !WORD _D122+0 + !BYTE $54 ; CALL _X004 +_F1522 !WORD 0 + !BYTE $50 ; BRNCH _B1121 + !WORD _B1121-* +_B1122 + !BYTE $04 ; CASEBLOCK + !WORD $0080 + !WORD _B1123-* + !WORD $0095 + !WORD _B1128-* + !WORD $0096 + !WORD _B1124-* + !WORD $009E + !WORD _B1125-* +_B1121 +; toolsrc/parse.pla: 1310: return token == EOL_TKN ?? TRUE :: FALSE + !BYTE $68 ; LAB _D098+0 +_F1523 !WORD _D098+0 + !BYTE $04 ; CN 2 + !BYTE $24 ; BRNE _B1173 + !WORD _B1173-* + !BYTE $20 ; MINUS ONE + !BYTE $50 ; BRNCH _B1174 + !WORD _B1174-* +_B1173 + !BYTE $00 ; CN 0 +_B1174 + !BYTE $5A,$1E ; LEAVE 30 +; toolsrc/parse.pla: 1311: end +; toolsrc/parse.pla: 1312: def parse_module#0 +_C103 ; parse_module() +; toolsrc/parse.pla: 1313: init_idglobal +; toolsrc/parse.pla: 1314: init_idlocal +; toolsrc/parse.pla: 1315: puts("Data+Code buffer size = "); puti(codebufsz); putln; putln + !BYTE $54 ; CALL _C052 +_F1524 !WORD _C052 + !BYTE $54 ; CALL _C054 +_F1525 !WORD _C054 + !BYTE $2E ; CS + !BYTE $18 + !BYTE $44,$61,$74,$61,$2B,$43,$6F,$64 + !BYTE $65,$20,$62,$75,$66,$66,$65,$72 + !BYTE $20,$73,$69,$7A,$65,$20,$3D,$20 + !BYTE $54 ; CALL _X004 +_F1526 !WORD 0 +; toolsrc/parse.pla: 1316: puts(@modfile); putln +; toolsrc/parse.pla: 1317: if nextln +; toolsrc/parse.pla: 1318: // +; toolsrc/parse.pla: 1319: // Compile module +; toolsrc/parse.pla: 1320: // +; toolsrc/parse.pla: 1321: puts("DATA:"); + !BYTE $6A ; LAW _D068+0 +_F1527 !WORD _D068+0 + !BYTE $54 ; CALL _X005 +_F1528 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1529 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1530 !WORD 0 + !BYTE $26 ; LA _D092+0 +_F1531 !WORD _D092+0 + !BYTE $54 ; CALL _X004 +_F1532 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1533 !WORD 0 + !BYTE $54 ; CALL _C079 +_F1534 !WORD _C079 + !BYTE $4C ; BRFLS _B1175 + !WORD _B1175-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $44,$41,$54,$41,$3A + !BYTE $54 ; CALL _X004 +_F1535 !WORD 0 +; toolsrc/parse.pla: 1322: while parse_mods; nextln; loop + !BYTE $50 ; BRNCH _B1179 + !WORD _B1179-* +_B1177 + !BYTE $54 ; CALL _C079 +_F1536 !WORD _C079 + !BYTE $30 ; DROP +_B1179 + !BYTE $54 ; CALL _C100 +_F1537 !WORD _C100 + !BYTE $4E ; BRTRU _B1177 + !WORD _B1177-* +_B1178 +; toolsrc/parse.pla: 1323: while parse_vars(GLOBAL_TYPE, FALSE); nextln; loop + !BYTE $50 ; BRNCH _B1182 + !WORD _B1182-* +_B1180 + !BYTE $54 ; CALL _C079 +_F1538 !WORD _C079 + !BYTE $30 ; DROP +_B1182 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C099 +_F1539 !WORD _C099 + !BYTE $4E ; BRTRU _B1180 + !WORD _B1180-* +_B1181 +; toolsrc/parse.pla: 1324: emit_codeseg +; toolsrc/parse.pla: 1325: puti(codeptr - codebuff); puts(@bytesln) +; toolsrc/parse.pla: 1326: while parse_defs; nextln; loop + !BYTE $54 ; CALL _C015 +_F1540 !WORD _C015 + !BYTE $6A ; LAW _D075+0 +_F1541 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F1542 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X005 +_F1543 !WORD 0 + !BYTE $26 ; LA _D122+0 +_F1544 !WORD _D122+0 + !BYTE $54 ; CALL _X004 +_F1545 !WORD 0 + !BYTE $50 ; BRNCH _B1185 + !WORD _B1185-* +_B1183 + !BYTE $54 ; CALL _C079 +_F1546 !WORD _C079 + !BYTE $30 ; DROP +_B1185 + !BYTE $54 ; CALL _C102 +_F1547 !WORD _C102 + !BYTE $4E ; BRTRU _B1183 + !WORD _B1183-* +_B1184 +; toolsrc/parse.pla: 1327: puts("INIT:"); + !BYTE $2E ; CS + !BYTE $05 + !BYTE $49,$4E,$49,$54,$3A + !BYTE $54 ; CALL _X004 +_F1548 !WORD 0 +; toolsrc/parse.pla: 1328: entrypoint = codeptr +; toolsrc/parse.pla: 1329: prevstmnt = 0 +; toolsrc/parse.pla: 1330: init_idlocal +; toolsrc/parse.pla: 1331: emit_enter(0) +; toolsrc/parse.pla: 1332: if token <> DONE_TKN +; toolsrc/parse.pla: 1333: while parse_stmnt; nextln; loop + !BYTE $6A ; LAW _D075+0 +_F1549 !WORD _D075+0 + !BYTE $7A ; SAW _D076+0 +_F1550 !WORD _D076+0 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D110+0 +_F1551 !WORD _D110+0 + !BYTE $54 ; CALL _C054 +_F1552 !WORD _C054 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C038 +_F1553 !WORD _C038 + !BYTE $68 ; LAB _D098+0 +_F1554 !WORD _D098+0 + !BYTE $2A,$98 ; CB 152 + !BYTE $22 ; BREQ _B1186 + !WORD _B1186-* + !BYTE $50 ; BRNCH _B1190 + !WORD _B1190-* +_B1188 + !BYTE $54 ; CALL _C079 +_F1555 !WORD _C079 + !BYTE $30 ; DROP +_B1190 + !BYTE $54 ; CALL _C096 +_F1556 !WORD _C096 + !BYTE $4E ; BRTRU _B1188 + !WORD _B1188-* +_B1189 +; toolsrc/parse.pla: 1334: fin +_B1186 +_B1187 +; toolsrc/parse.pla: 1335: if prevstmnt <> RETURN_TKN +; toolsrc/parse.pla: 1336: emit_const(0) +; toolsrc/parse.pla: 1337: emit_leave +; toolsrc/parse.pla: 1338: fin + !BYTE $68 ; LAB _D110+0 +_F1557 !WORD _D110+0 + !BYTE $2A,$99 ; CB 153 + !BYTE $22 ; BREQ _B1191 + !WORD _B1191-* + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C016 +_F1558 !WORD _C016 + !BYTE $54 ; CALL _C037 +_F1559 !WORD _C037 +_B1191 +_B1192 +; toolsrc/parse.pla: 1339: puti(codeptr - entrypoint); puts(@bytesln) +; toolsrc/parse.pla: 1340: puts("\nTotal bytes compiled: "); puti(codeptr - codebuff); putln + !BYTE $6A ; LAW _D075+0 +_F1560 !WORD _D075+0 + !BYTE $6A ; LAW _D076+0 +_F1561 !WORD _D076+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X005 +_F1562 !WORD 0 + !BYTE $26 ; LA _D122+0 +_F1563 !WORD _D122+0 + !BYTE $54 ; CALL _X004 +_F1564 !WORD 0 + !BYTE $2E ; CS + !BYTE $17 + !BYTE $0D,$54,$6F,$74,$61,$6C,$20,$62 + !BYTE $79,$74,$65,$73,$20,$63,$6F,$6D + !BYTE $70,$69,$6C,$65,$64,$3A,$20 + !BYTE $54 ; CALL _X004 +_F1565 !WORD 0 +; toolsrc/parse.pla: 1341: if token <> DONE_TKN; parse_warn("Missing DONE\n"); fin + !BYTE $6A ; LAW _D075+0 +_F1566 !WORD _D075+0 + !BYTE $6A ; LAW _D074+0 +_F1567 !WORD _D074+0 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X005 +_F1568 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1569 !WORD 0 + !BYTE $68 ; LAB _D098+0 +_F1570 !WORD _D098+0 + !BYTE $2A,$98 ; CB 152 + !BYTE $22 ; BREQ _B1193 + !WORD _B1193-* + !BYTE $2E ; CS + !BYTE $0D + !BYTE $4D,$69,$73,$73,$69,$6E,$67,$20 + !BYTE $44,$4F,$4E,$45,$0D + !BYTE $54 ; CALL _C003 +_F1571 !WORD _C003 +_B1193 +_B1194 +; toolsrc/parse.pla: 1342: //dumpsym(idglobal_tbl, globals) +; toolsrc/parse.pla: 1343: fin +_B1175 +_B1176 +; toolsrc/parse.pla: 1344: end + !BYTE $5C ; RET +; toolsrc/plasm.pla: 0507: +; toolsrc/plasm.pla: 0508: // +; toolsrc/plasm.pla: 0509: // Look at command line arguments and compile module +; toolsrc/plasm.pla: 0510: // +; toolsrc/plasm.pla: 0511: puts("PLASMA Compiler, Version 2.0\n") +_INIT + !BYTE $2E ; CS + !BYTE $1D + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$43 + !BYTE $6F,$6D,$70,$69,$6C,$65,$72,$2C + !BYTE $20,$56,$65,$72,$73,$69,$6F,$6E + !BYTE $20,$32,$2E,$30,$0D + !BYTE $54 ; CALL _X004 +_F1572 !WORD 0 +; toolsrc/plasm.pla: 0512: arg = argNext(argFirst) +; toolsrc/plasm.pla: 0513: if ^arg and ^(arg + 1) == '-' +; toolsrc/plasm.pla: 0514: opt = arg + 2 +; toolsrc/plasm.pla: 0515: while TRUE + !BYTE $54 ; CALL _X029 +_F1573 !WORD 0 + !BYTE $54 ; CALL _X030 +_F1574 !WORD 0 + !BYTE $7A ; SAW _D123+0 +_F1575 !WORD _D123+0 + !BYTE $6A ; LAW _D123+0 +_F1576 !WORD _D123+0 + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B1195 + !WORD _B1195-* + !BYTE $6A ; LAW _D123+0 +_F1577 !WORD _D123+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $40 ; ISEQ +_B1195 + !BYTE $4C ; BRFLS _B1196 + !WORD _B1196-* + !BYTE $6A ; LAW _D123+0 +_F1578 !WORD _D123+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $7A ; SAW _D124+0 +_F1579 !WORD _D124+0 + !BYTE $50 ; BRNCH _B1200 + !WORD _B1200-* +_B1198 +; toolsrc/plasm.pla: 0516: if toupper(^opt) == 'O' +; toolsrc/plasm.pla: 0517: // +; toolsrc/plasm.pla: 0518: // Load optimizer module here +; toolsrc/plasm.pla: 0519: // +; toolsrc/plasm.pla: 0520: if cmdsys:modexec("CODEOPT") >= 0 + !BYTE $6A ; LAW _D124+0 +_F1580 !WORD _D124+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F1581 !WORD 0 + !BYTE $2A,$4F ; CB 79 + !BYTE $24 ; BRNE _B1201 + !WORD _B1201-* + !BYTE $2E ; CS + !BYTE $07 + !BYTE $43,$4F,$44,$45,$4F,$50,$54 + !BYTE $6A ; LAW _X000+6 +_F1582 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $00 ; CN 0 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B1203 + !WORD _B1203-* +; toolsrc/plasm.pla: 0521: outflags = outflags | OPTIMIZE +; toolsrc/plasm.pla: 0522: fin + !BYTE $68 ; LAB _D085+0 +_F1583 !WORD _D085+0 + !BYTE $3E,$01 ; ORI 1 + !BYTE $78 ; SAB _D085+0 +_F1584 !WORD _D085+0 +_B1203 +_B1204 +; toolsrc/plasm.pla: 0523: if not (outflags & OPTIMIZE) +; toolsrc/plasm.pla: 0524: puts("\nOptimizer disabled\n") + !BYTE $68 ; LAB _D085+0 +_F1585 !WORD _D085+0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4E ; BRTRU _B1205 + !WORD _B1205-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $0D,$4F,$70,$74,$69,$6D,$69,$7A + !BYTE $65,$72,$20,$64,$69,$73,$61,$62 + !BYTE $6C,$65,$64,$0D + !BYTE $54 ; CALL _X004 +_F1586 !WORD 0 +; toolsrc/plasm.pla: 0525: fin +_B1205 +_B1206 +; toolsrc/plasm.pla: 0526: opt++ + !BYTE $6A ; LAW _D124+0 +_F1587 !WORD _D124+0 + !BYTE $8C ; INCR +; toolsrc/plasm.pla: 0527: if ^opt == '2' +; toolsrc/plasm.pla: 0528: outflags = outflags | OPTIMIZE2 +; toolsrc/plasm.pla: 0529: opt++ + !BYTE $7A ; SAW _D124+0 +_F1588 !WORD _D124+0 + !BYTE $6A ; LAW _D124+0 +_F1589 !WORD _D124+0 + !BYTE $60 ; LB + !BYTE $2A,$32 ; CB 50 + !BYTE $24 ; BRNE _B1207 + !WORD _B1207-* + !BYTE $68 ; LAB _D085+0 +_F1590 !WORD _D085+0 + !BYTE $3E,$02 ; ORI 2 + !BYTE $78 ; SAB _D085+0 +_F1591 !WORD _D085+0 + !BYTE $6A ; LAW _D124+0 +_F1592 !WORD _D124+0 + !BYTE $8C ; INCR +; toolsrc/plasm.pla: 0530: fin + !BYTE $7A ; SAW _D124+0 +_F1593 !WORD _D124+0 +_B1207 +_B1208 +; toolsrc/plasm.pla: 0531: elsif toupper(^opt) == 'N' + !BYTE $50 ; BRNCH _B1202 + !WORD _B1202-* +_B1201 +; toolsrc/plasm.pla: 0532: outflags = outflags | NO_COMBINE +; toolsrc/plasm.pla: 0533: opt++ + !BYTE $6A ; LAW _D124+0 +_F1594 !WORD _D124+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F1595 !WORD 0 + !BYTE $2A,$4E ; CB 78 + !BYTE $24 ; BRNE _B1209 + !WORD _B1209-* + !BYTE $68 ; LAB _D085+0 +_F1596 !WORD _D085+0 + !BYTE $3E,$04 ; ORI 4 + !BYTE $78 ; SAB _D085+0 +_F1597 !WORD _D085+0 + !BYTE $6A ; LAW _D124+0 +_F1598 !WORD _D124+0 + !BYTE $8C ; INCR +; toolsrc/plasm.pla: 0534: elsif toupper(^opt) == 'W' + !BYTE $7A ; SAW _D124+0 +_F1599 !WORD _D124+0 + !BYTE $50 ; BRNCH _B1202 + !WORD _B1202-* +_B1209 +; toolsrc/plasm.pla: 0535: outflags = outflags | WARNINGS +; toolsrc/plasm.pla: 0536: opt++ + !BYTE $6A ; LAW _D124+0 +_F1600 !WORD _D124+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F1601 !WORD 0 + !BYTE $2A,$57 ; CB 87 + !BYTE $24 ; BRNE _B1210 + !WORD _B1210-* + !BYTE $68 ; LAB _D085+0 +_F1602 !WORD _D085+0 + !BYTE $3E,$08 ; ORI 8 + !BYTE $78 ; SAB _D085+0 +_F1603 !WORD _D085+0 + !BYTE $6A ; LAW _D124+0 +_F1604 !WORD _D124+0 + !BYTE $8C ; INCR +; toolsrc/plasm.pla: 0537: else + !BYTE $7A ; SAW _D124+0 +_F1605 !WORD _D124+0 + !BYTE $50 ; BRNCH _B1202 + !WORD _B1202-* +_B1210 +; toolsrc/plasm.pla: 0538: break + !BYTE $50 ; BRNCH _B1199 + !WORD _B1199-* +; toolsrc/plasm.pla: 0539: fin +_B1202 +; toolsrc/plasm.pla: 0540: loop +_B1200 + !BYTE $50 ; BRNCH _B1198 + !WORD _B1198-* +_B1199 +; toolsrc/plasm.pla: 0541: arg = argNext(arg) +; toolsrc/plasm.pla: 0542: fin + !BYTE $6A ; LAW _D123+0 +_F1606 !WORD _D123+0 + !BYTE $54 ; CALL _X030 +_F1607 !WORD 0 + !BYTE $7A ; SAW _D123+0 +_F1608 !WORD _D123+0 +_B1196 +_B1197 +; toolsrc/plasm.pla: 0543: if ^arg +; toolsrc/plasm.pla: 0544: strcpy(@srcfile, arg) +; toolsrc/plasm.pla: 0545: arg = argNext(arg) +; toolsrc/plasm.pla: 0546: if ^arg +; toolsrc/plasm.pla: 0547: strcpy(@relfile, arg) +; toolsrc/plasm.pla: 0548: else + !BYTE $6A ; LAW _D123+0 +_F1609 !WORD _D123+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B1211 + !WORD _B1211-* + !BYTE $26 ; LA _D089+0 +_F1610 !WORD _D089+0 + !BYTE $6A ; LAW _D123+0 +_F1611 !WORD _D123+0 + !BYTE $54 ; CALL _X019 +_F1612 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D123+0 +_F1613 !WORD _D123+0 + !BYTE $54 ; CALL _X030 +_F1614 !WORD 0 + !BYTE $7A ; SAW _D123+0 +_F1615 !WORD _D123+0 + !BYTE $6A ; LAW _D123+0 +_F1616 !WORD _D123+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B1213 + !WORD _B1213-* + !BYTE $26 ; LA _D091+0 +_F1617 !WORD _D091+0 + !BYTE $6A ; LAW _D123+0 +_F1618 !WORD _D123+0 + !BYTE $54 ; CALL _X019 +_F1619 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B1214 + !WORD _B1214-* +_B1213 +; toolsrc/plasm.pla: 0549: strcpy(@relfile, @srcfile) +; toolsrc/plasm.pla: 0550: // +; toolsrc/plasm.pla: 0551: // Strip trailing extension +; toolsrc/plasm.pla: 0552: // +; toolsrc/plasm.pla: 0553: while relfile and relfile[relfile] <> '.' + !BYTE $26 ; LA _D091+0 +_F1620 !WORD _D091+0 + !BYTE $26 ; LA _D089+0 +_F1621 !WORD _D089+0 + !BYTE $54 ; CALL _X019 +_F1622 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B1217 + !WORD _B1217-* +_B1215 +; toolsrc/plasm.pla: 0554: relfile-- + !BYTE $68 ; LAB _D091+0 +_F1623 !WORD _D091+0 + !BYTE $8E ; DECR +; toolsrc/plasm.pla: 0555: loop + !BYTE $78 ; SAB _D091+0 +_F1624 !WORD _D091+0 +_B1217 + !BYTE $68 ; LAB _D091+0 +_F1625 !WORD _D091+0 + !BYTE $AC ; BRAND _B1218 + !WORD _B1218-* + !BYTE $26 ; LA _D091+0 +_F1626 !WORD _D091+0 + !BYTE $B4 ; ADDAB _D091+0 +_F1627 !WORD _D091+0 + !BYTE $60 ; LB + !BYTE $2A,$2E ; CB 46 + !BYTE $42 ; ISNE +_B1218 + !BYTE $4E ; BRTRU _B1215 + !WORD _B1215-* +_B1216 +; toolsrc/plasm.pla: 0556: if relfile; relfile--; fin // Strip '.' + !BYTE $68 ; LAB _D091+0 +_F1628 !WORD _D091+0 + !BYTE $4C ; BRFLS _B1219 + !WORD _B1219-* + !BYTE $68 ; LAB _D091+0 +_F1629 !WORD _D091+0 + !BYTE $8E ; DECR + !BYTE $78 ; SAB _D091+0 +_F1630 !WORD _D091+0 +_B1219 +_B1220 +; toolsrc/plasm.pla: 0557: if not relfile +; toolsrc/plasm.pla: 0558: // +; toolsrc/plasm.pla: 0559: // Copy default name over +; toolsrc/plasm.pla: 0560: // +; toolsrc/plasm.pla: 0561: strcpy(@relfile, "A.OUT") + !BYTE $68 ; LAB _D091+0 +_F1631 !WORD _D091+0 + !BYTE $4E ; BRTRU _B1221 + !WORD _B1221-* + !BYTE $26 ; LA _D091+0 +_F1632 !WORD _D091+0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $41,$2E,$4F,$55,$54 + !BYTE $54 ; CALL _X019 +_F1633 !WORD 0 + !BYTE $30 ; DROP +; toolsrc/plasm.pla: 0562: fin +_B1221 +_B1222 +; toolsrc/plasm.pla: 0563: modfile = 0 +; toolsrc/plasm.pla: 0564: for srcref = 1 to relfile + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D092+0 +_F1634 !WORD _D092+0 + !BYTE $68 ; LAB _D091+0 +_F1635 !WORD _D091+0 + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B1223 + !WORD _B1223-* +_B1224 + !BYTE $7C ; DAB _D087+0 +_F1636 !WORD _D087+0 +; toolsrc/plasm.pla: 0565: if relfile[srcref] == '/' +; toolsrc/plasm.pla: 0566: modfile = 0 +; toolsrc/plasm.pla: 0567: else + !BYTE $26 ; LA _D091+0 +_F1637 !WORD _D091+0 + !BYTE $B4 ; ADDAB _D087+0 +_F1638 !WORD _D087+0 + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B1226 + !WORD _B1226-* + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D092+0 +_F1639 !WORD _D092+0 + !BYTE $50 ; BRNCH _B1227 + !WORD _B1227-* +_B1226 +; toolsrc/plasm.pla: 0568: modfile++ + !BYTE $68 ; LAB _D092+0 +_F1640 !WORD _D092+0 + !BYTE $8C ; INCR +; toolsrc/plasm.pla: 0569: modfile[modfile] = toupper(relfile[srcref]) +; toolsrc/plasm.pla: 0570: fin + !BYTE $78 ; SAB _D092+0 +_F1641 !WORD _D092+0 + !BYTE $26 ; LA _D091+0 +_F1642 !WORD _D091+0 + !BYTE $B4 ; ADDAB _D087+0 +_F1643 !WORD _D087+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F1644 !WORD 0 + !BYTE $26 ; LA _D092+0 +_F1645 !WORD _D092+0 + !BYTE $B4 ; ADDAB _D092+0 +_F1646 !WORD _D092+0 + !BYTE $70 ; SB +_B1227 +; toolsrc/plasm.pla: 0571: next +_B1225 + !BYTE $A4 ; INCBRLE _B1224 + !WORD _B1224-* +_B1223 + !BYTE $78 ; SAB _D087+0 +_F1647 !WORD _D087+0 + !BYTE $30 ; DROP +; toolsrc/plasm.pla: 0572: fin +_B1214 +; toolsrc/plasm.pla: 0573: fin +_B1211 +_B1212 +; toolsrc/plasm.pla: 0574: if srcfile and relfile +; toolsrc/plasm.pla: 0575: fileio:iobufalloc(2) // Reserve two I/O buffers +; toolsrc/plasm.pla: 0576: srcref = fileio:open(@srcfile) +; toolsrc/plasm.pla: 0577: if srcref +; toolsrc/plasm.pla: 0578: fileio:newline(srcref, $7F, $0D) +; toolsrc/plasm.pla: 0579: refnum = srcref +; toolsrc/plasm.pla: 0580: parsefile = @srcfile +; toolsrc/plasm.pla: 0581: strconstbuff = heapalloc(80) +; toolsrc/plasm.pla: 0582: instr = cmdsys:cmdline +; toolsrc/plasm.pla: 0583: inbuff = instr + 1 +; toolsrc/plasm.pla: 0584: scanptr = inbuff +; toolsrc/plasm.pla: 0585: *instr = NULL +; toolsrc/plasm.pla: 0586: exit = heapalloc(t_except) +; toolsrc/plasm.pla: 0587: if not except(exit) +; toolsrc/plasm.pla: 0588: // +; toolsrc/plasm.pla: 0589: // Parse source code module +; toolsrc/plasm.pla: 0590: // +; toolsrc/plasm.pla: 0591: parse_module +; toolsrc/plasm.pla: 0592: fileio:close(srcref) +; toolsrc/plasm.pla: 0593: // +; toolsrc/plasm.pla: 0594: // Write REL file +; toolsrc/plasm.pla: 0595: // +; toolsrc/plasm.pla: 0596: fileio:destroy(@relfile) +; toolsrc/plasm.pla: 0597: fileio:create(@relfile, $FE, $1000) // full access, REL file +; toolsrc/plasm.pla: 0598: srcref = fileio:open(@relfile) +; toolsrc/plasm.pla: 0599: if srcref +; toolsrc/plasm.pla: 0600: writemodule(srcref) +; toolsrc/plasm.pla: 0601: fileio:close(srcref) +; toolsrc/plasm.pla: 0602: else + !BYTE $68 ; LAB _D089+0 +_F1648 !WORD _D089+0 + !BYTE $AC ; BRAND _B1228 + !WORD _B1228-* + !BYTE $68 ; LAB _D091+0 +_F1649 !WORD _D091+0 +_B1228 + !BYTE $4C ; BRFLS _B1229 + !WORD _B1229-* + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X031+12 +_F1650 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D089+0 +_F1651 !WORD _D089+0 + !BYTE $6A ; LAW _X031+14 +_F1652 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D087+0 +_F1653 !WORD _D087+0 + !BYTE $4C ; BRFLS _B1231 + !WORD _B1231-* + !BYTE $68 ; LAB _D087+0 +_F1654 !WORD _D087+0 + !BYTE $2A,$7F ; CB 127 + !BYTE $1A ; CN 13 + !BYTE $6A ; LAW _X031+28 +_F1655 !WORD 0+28 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D087+0 +_F1656 !WORD _D087+0 + !BYTE $78 ; SAB _D086+0 +_F1657 !WORD _D086+0 + !BYTE $26 ; LA _D089+0 +_F1658 !WORD _D089+0 + !BYTE $7A ; SAW _D093+0 +_F1659 !WORD _D093+0 + !BYTE $2A,$50 ; CB 80 + !BYTE $54 ; CALL _X014 +_F1660 !WORD 0 + !BYTE $7A ; SAW _D105+0 +_F1661 !WORD _D105+0 + !BYTE $6A ; LAW _X000+4 +_F1662 !WORD 0+4 + !BYTE $7E ; DAW _D095+0 +_F1663 !WORD _D095+0 + !BYTE $8C ; INCR + !BYTE $7E ; DAW _D096+0 +_F1664 !WORD _D096+0 + !BYTE $7A ; SAW _D097+0 +_F1665 !WORD _D097+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D095+0 +_F1666 !WORD _D095+0 + !BYTE $72 ; SW + !BYTE $2C,$40,$01 ; CW 320 + !BYTE $54 ; CALL _X014 +_F1667 !WORD 0 + !BYTE $7E ; DAW _D125+0 +_F1668 !WORD _D125+0 + !BYTE $54 ; CALL _X034 +_F1669 !WORD 0 + !BYTE $4E ; BRTRU _B1233 + !WORD _B1233-* + !BYTE $54 ; CALL _C103 +_F1670 !WORD _C103 + !BYTE $68 ; LAB _D087+0 +_F1671 !WORD _D087+0 + !BYTE $6A ; LAW _X031+16 +_F1672 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D091+0 +_F1673 !WORD _D091+0 + !BYTE $6A ; LAW _X031+24 +_F1674 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D091+0 +_F1675 !WORD _D091+0 + !BYTE $2A,$FE ; CB 254 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $6A ; LAW _X031+22 +_F1676 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D091+0 +_F1677 !WORD _D091+0 + !BYTE $6A ; LAW _X031+14 +_F1678 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D087+0 +_F1679 !WORD _D087+0 + !BYTE $4C ; BRFLS _B1235 + !WORD _B1235-* + !BYTE $68 ; LAB _D087+0 +_F1680 !WORD _D087+0 + !BYTE $54 ; CALL _C074 +_F1681 !WORD _C074 + !BYTE $68 ; LAB _D087+0 +_F1682 !WORD _D087+0 + !BYTE $6A ; LAW _X031+16 +_F1683 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B1236 + !WORD _B1236-* +_B1235 +; toolsrc/plasm.pla: 0603: puts("\nError opening: "); puts(@relfile); putln + !BYTE $2E ; CS + !BYTE $10 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$6F + !BYTE $70,$65,$6E,$69,$6E,$67,$3A,$20 + !BYTE $54 ; CALL _X004 +_F1684 !WORD 0 +; toolsrc/plasm.pla: 0604: fin + !BYTE $26 ; LA _D091+0 +_F1685 !WORD _D091+0 + !BYTE $54 ; CALL _X004 +_F1686 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1687 !WORD 0 +_B1236 +; toolsrc/plasm.pla: 0605: fin +_B1233 +_B1234 +; toolsrc/plasm.pla: 0606: else + !BYTE $50 ; BRNCH _B1232 + !WORD _B1232-* +_B1231 +; toolsrc/plasm.pla: 0607: puts("\nError opening: "); puts(@srcfile); putln + !BYTE $2E ; CS + !BYTE $10 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$6F + !BYTE $70,$65,$6E,$69,$6E,$67,$3A,$20 + !BYTE $54 ; CALL _X004 +_F1688 !WORD 0 +; toolsrc/plasm.pla: 0608: fin + !BYTE $26 ; LA _D089+0 +_F1689 !WORD _D089+0 + !BYTE $54 ; CALL _X004 +_F1690 !WORD 0 + !BYTE $54 ; CALL _X003 +_F1691 !WORD 0 +_B1232 +; toolsrc/plasm.pla: 0609: else + !BYTE $50 ; BRNCH _B1230 + !WORD _B1230-* +_B1229 +; toolsrc/plasm.pla: 0610: puts("Usage:+PLASM [-[W][O[2]][N]] [out]\n") + !BYTE $2E ; CS + !BYTE $29 + !BYTE $55,$73,$61,$67,$65,$3A,$2B,$50 + !BYTE $4C,$41,$53,$4D,$20,$5B,$2D,$5B + !BYTE $57,$5D,$5B,$4F,$5B,$32,$5D,$5D + !BYTE $5B,$4E,$5D,$5D,$20,$3C,$73,$72 + !BYTE $63,$3E,$20,$5B,$6F,$75,$74,$5D + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F1692 !WORD 0 +; toolsrc/plasm.pla: 0611: fin +_B1230 +; toolsrc/plasm.pla: 0612: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 105 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C013 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C014 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C015 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C016 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C017 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C018 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C019 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C020 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C021 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C022 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C023 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C024 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C025 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C026 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C027 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C028 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C029 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C030 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C031 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C032 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C033 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C034 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C035 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C036 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C037 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C038 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C039 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C040 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C041 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C042 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C043 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C044 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C045 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C046 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C047 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C048 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C049 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C050 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C051 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C052 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C053 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C054 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C055 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C056 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C057 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C058 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C059 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C060 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C061 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C062 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C063 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C064 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C065 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C066 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C067 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C068 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C069 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C070 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C071 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C072 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C073 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C074 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C075 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C076 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C077 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C078 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C079 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C080 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C081 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C082 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C083 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C084 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C085 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C086 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C087 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C088 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C089 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C090 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C091 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C092 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C093 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C094 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C095 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C096 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C097 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C098 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C099 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C100 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C101 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C102 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C103 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 35 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F198-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F199-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F200-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F201-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F202-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F235-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F236-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F242-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F243-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F247-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F248-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F253-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F265-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F266-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F267-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F268-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F270-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F271-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F272-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F273-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F274-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F275-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F276-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F277-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F278-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F279-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F280-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F281-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F282-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F283-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F284-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F285-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F286-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F287-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F288-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F289-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F290-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F291-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F292-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F293-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F294-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F295-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F296-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F297-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F298-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F299-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F300-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F301-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F302-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F303-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F304-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F305-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F306-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F307-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F308-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F309-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F310-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F311-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F312-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F313-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F314-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F315-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F316-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F317-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F318-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F319-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F320-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F321-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F322-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F323-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F324-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F325-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F326-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F327-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F328-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F329-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F330-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F331-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F332-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F333-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F334-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F335-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F336-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F337-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F338-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F339-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F340-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F341-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F342-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F343-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F344-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F345-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F346-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F347-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F348-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F349-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F350-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F351-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F352-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F353-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F354-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F355-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F356-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F357-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F358-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F359-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F360-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F361-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F362-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F363-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F364-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F365-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F366-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F367-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F368-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F369-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F370-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F371-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F372-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F373-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F374-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F375-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F376-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F377-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F378-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F379-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F380-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F381-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F382-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F383-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F384-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F385-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F386-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F387-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F388-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F389-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F390-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F391-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F392-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F393-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F394-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F395-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F396-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F397-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F398-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F399-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F400-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F401-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F402-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F403-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F404-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F405-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F406-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F407-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F408-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F409-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F410-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F411-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F412-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F413-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F414-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F415-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F416-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F417-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F418-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F419-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F420-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F421-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F422-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F423-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F424-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F425-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F426-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F427-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F428-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F429-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F430-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F431-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F432-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F433-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F434-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F435-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F436-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F437-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F438-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F439-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F440-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F441-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F442-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F443-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F444-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F445-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F446-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F447-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F448-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F449-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F450-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F451-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F452-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F453-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F454-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F455-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F456-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F457-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F458-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F459-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F460-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F461-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F462-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F463-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F464-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F465-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F466-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F467-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F468-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F469-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F470-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F471-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F472-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F473-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F474-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F475-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F476-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F477-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F478-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F479-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F480-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F481-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F482-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F483-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F484-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F485-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F486-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F487-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F488-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F489-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F490-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F491-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F492-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F493-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F494-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F495-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F496-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F497-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F498-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F499-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F500-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F501-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F502-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F503-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F504-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F505-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F506-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F507-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F508-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F509-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F510-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F511-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F512-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F513-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F514-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F515-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F516-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F517-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F518-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F519-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F520-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F521-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F522-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F523-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F524-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F525-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F526-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F527-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F528-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F529-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F530-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F531-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F532-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F533-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F534-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F535-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F536-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F537-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F538-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F539-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F540-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F541-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F542-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F543-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F544-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F545-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F546-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F547-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F548-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F549-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F550-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F551-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F552-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F553-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F554-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F555-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F556-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F557-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F558-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F559-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F560-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F561-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F562-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F563-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F564-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F565-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F566-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F567-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F568-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F569-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F570-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F571-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F572-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F573-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F574-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F575-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F576-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F577-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F578-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F579-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F580-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F581-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F582-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F583-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F584-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F585-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F586-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F587-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F588-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F589-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F590-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F591-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F592-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F593-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F594-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F595-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F596-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F597-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F598-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F599-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F600-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F601-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F602-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F603-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F604-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F605-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F606-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F607-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F608-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F609-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F610-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F611-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F612-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F613-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F614-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F615-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F616-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F617-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F618-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F619-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F620-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F621-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F622-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F623-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F624-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F625-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F626-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F627-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F628-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F629-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F630-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F631-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F632-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F633-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F634-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F635-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F636-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F637-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F638-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F639-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F640-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F641-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F642-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F643-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F644-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F645-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F646-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F647-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F648-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F649-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F650-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F651-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F652-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F653-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F654-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F655-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F656-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F657-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F658-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F659-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F660-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F661-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F662-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F663-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F664-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F665-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F666-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F667-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F668-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F669-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F670-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F671-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F672-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F673-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F674-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F675-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F676-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F677-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F678-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F679-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F680-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F681-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F682-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F683-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F684-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F685-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F686-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F687-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F688-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F689-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F690-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F691-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F692-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F693-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F694-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F695-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F696-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F697-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F698-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F699-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F700-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F701-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F702-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F703-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F704-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F705-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F706-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F707-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F708-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F709-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F710-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F711-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F712-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F713-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F714-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F715-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F716-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F717-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F718-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F719-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F720-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F721-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F722-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F723-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F724-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F725-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F726-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F727-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F728-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F729-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F730-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F731-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F732-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F733-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F734-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F735-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F736-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F737-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F738-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F739-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F740-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F741-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F742-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F743-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F744-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F745-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F746-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F747-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F748-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F749-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F750-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F751-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F752-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F753-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F754-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F755-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F756-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F757-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F758-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F759-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F760-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F761-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F762-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F763-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F764-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F765-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F766-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F767-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F768-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F769-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F770-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F771-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F772-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F773-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F774-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F775-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F776-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F777-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F778-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F779-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F780-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F781-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F782-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F783-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F784-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F785-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F786-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F787-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F788-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F789-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F790-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F791-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F792-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F793-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F794-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F795-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F796-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F797-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F798-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F799-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F800-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F801-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F802-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F803-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F804-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F805-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F806-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F807-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F808-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F809-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F810-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F811-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F812-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F813-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F814-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F815-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F816-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F817-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F818-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F819-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F820-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F821-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F822-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F823-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F824-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F825-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F826-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F827-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F828-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F829-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F830-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F831-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F832-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F833-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F834-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F835-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F836-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F837-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F838-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F839-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F840-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F841-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F842-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F843-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F844-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F845-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F846-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F847-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F848-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F849-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F850-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F851-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F852-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F853-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F854-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F855-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F856-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F857-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F858-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F859-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F860-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F861-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F862-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F863-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F864-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F865-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F866-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F867-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F868-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F869-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F870-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F871-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F872-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F873-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F874-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F875-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F876-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F877-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F878-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F879-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F880-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F881-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F882-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F883-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F884-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F885-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F886-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F887-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F888-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F889-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F890-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F891-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F892-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F893-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F894-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F895-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F896-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F897-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F898-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F899-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F900-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F901-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F902-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F903-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F904-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F905-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F906-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F907-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F908-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F909-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F910-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F911-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F912-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F913-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F914-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F915-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F916-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F917-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F918-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F919-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F920-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F921-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F922-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F923-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F924-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F925-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F926-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F927-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F928-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F929-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F930-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F931-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F932-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F933-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F934-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F935-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F936-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F937-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F938-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F939-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F940-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F941-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F942-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F943-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F944-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F945-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F946-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F947-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F948-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F949-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F950-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F951-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F952-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F953-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F954-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F955-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F956-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F957-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F958-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F959-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F960-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F961-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F962-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F963-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F964-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F965-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F966-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F967-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F968-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F969-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F970-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F971-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F972-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F973-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F974-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F975-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F976-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F977-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F978-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F979-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F980-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F981-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F982-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F983-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F984-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F985-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F986-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F987-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F988-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F989-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F990-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F991-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F992-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F993-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F994-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F995-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F996-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F997-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F998-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F999-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1043-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1064-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1065-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1072-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1095-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1101-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1102-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1120-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1125-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1134-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1136-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1137-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1140-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1141-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1149-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1150-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1160-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1161-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1163-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1169-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1172-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1173-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1174-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1175-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1176-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1177-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1178-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1179-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1194-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1195-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1196-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1197-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1198-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1199-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1200-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1201-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1202-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1203-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1204-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1205-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1206-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1207-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1208-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1209-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1210-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1211-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1212-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1213-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1214-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1215-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1216-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1217-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1218-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1219-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1220-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1221-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1222-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1223-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1224-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1225-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1226-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1227-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1228-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1229-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1230-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1231-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1232-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1233-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1234-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1235-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1236-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1237-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1238-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1239-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1240-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1241-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1242-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1243-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1244-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1245-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1246-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1247-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1248-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1249-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1250-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1251-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1252-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1253-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1254-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1255-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1256-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1257-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1258-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1259-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1260-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1261-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1262-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1263-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1264-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1265-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1266-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1267-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1268-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1269-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1270-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1271-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1272-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1273-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1274-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1275-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1276-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1277-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1278-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1279-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1280-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1281-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1282-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1283-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1284-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1285-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1286-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1287-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1288-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1289-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1290-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1291-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1292-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1293-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1294-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1295-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1296-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1297-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1298-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1299-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1300-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1301-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1302-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1303-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1304-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1305-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1306-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1307-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1308-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1309-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1310-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1311-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1312-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1313-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1314-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1315-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1316-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1317-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1318-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1319-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1320-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1321-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1322-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1323-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1324-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1325-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1326-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1327-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1328-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1329-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1330-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1331-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1332-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1333-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1334-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1335-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1336-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1337-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1338-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1339-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1340-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1341-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1342-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1343-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1344-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1345-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1346-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1347-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1348-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1349-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1350-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1351-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1352-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1353-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1354-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1355-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1356-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1357-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1358-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1359-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1360-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1361-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1362-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1363-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1364-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1365-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1366-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1367-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1368-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1369-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1370-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1371-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1372-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1373-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1374-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1375-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1376-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1377-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1378-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1379-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1380-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1381-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1382-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1383-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1384-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1385-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1386-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1387-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1388-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1389-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1390-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1391-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1392-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1393-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1394-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1395-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1396-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1397-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1398-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1399-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1400-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1401-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1402-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1403-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1404-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1405-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1406-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1407-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1408-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1409-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1410-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1411-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1412-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1413-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1414-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1415-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1416-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1417-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1418-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1419-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1420-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1421-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1422-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1423-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1424-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1425-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1426-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1427-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1428-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1429-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1430-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1431-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1432-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1433-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1434-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1435-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1436-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1437-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1438-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1439-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1440-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1441-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1442-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1443-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1444-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1445-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1446-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1447-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1448-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1449-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1450-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1451-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1452-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1453-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1454-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1455-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1456-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1457-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1458-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1459-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1460-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1461-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1462-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1463-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1464-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1465-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1466-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1467-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1468-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1469-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1470-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1471-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1472-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1473-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1474-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1475-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1476-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1477-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1478-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1479-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1480-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1481-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1482-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1483-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1484-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1485-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1486-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1487-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1488-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1489-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1490-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1491-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1492-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1493-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1494-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1495-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1496-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1497-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1498-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1499-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1500-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1501-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1502-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1503-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1504-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1505-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1506-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1507-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1508-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1509-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1510-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1511-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1512-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1513-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1514-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1515-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1516-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1517-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1518-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1519-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1520-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1521-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1522-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1523-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1524-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1525-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1526-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1527-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1528-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1529-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1530-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1531-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1532-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1533-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1534-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1535-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1536-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1537-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1538-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1539-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1540-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1541-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1542-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1543-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1544-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1545-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1546-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1547-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1548-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1549-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1550-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1551-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1552-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1553-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1554-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1555-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1556-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1557-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1558-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1559-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1560-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1561-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1562-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1563-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1564-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1565-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1566-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1567-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1568-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1569-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1570-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1571-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1572-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1573-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1574-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1575-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1576-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1577-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1578-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1579-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1580-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1581-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1582-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1583-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1584-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1585-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1586-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1587-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1588-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1589-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1590-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1591-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1592-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1593-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1594-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1595-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1596-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1597-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1598-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1599-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1600-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1601-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1602-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1603-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1604-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1605-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1606-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1607-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1608-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1609-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1610-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1611-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1612-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1613-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1614-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1615-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1616-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1617-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1618-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1619-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1620-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1621-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1622-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1623-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1624-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1625-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1626-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1627-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1628-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1629-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1630-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1631-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1632-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1633-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1634-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1635-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1636-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1637-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1638-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1639-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1640-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1641-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1642-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1643-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1644-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1645-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1646-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1647-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1648-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1649-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1650-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1651-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1652-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1653-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1654-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1655-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1656-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1657-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1658-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1659-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1660-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1661-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1662-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1663-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1664-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1665-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1666-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1667-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1668-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1669-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1670-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1671-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1672-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1673-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1674-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1675-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1676-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1677-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1678-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1679-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1680-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1681-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1682-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1683-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1684-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1685-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1686-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1687-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1688-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F1689-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1690-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1691-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F1692-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: EXCEPT + !BYTE $C5,$D8,$C3,$C5,$D0,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: THROW + !BYTE $D4,$C8,$D2,$CF,$57 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 35 ; ESD INDEX + ; DCI STRING: FREEOP_LST + !BYTE $C6,$D2,$C5,$C5,$CF,$D0,$DF,$CC,$D3,$54 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D083 + ; DCI STRING: OPTIMIZE_SEQ + !BYTE $CF,$D0,$D4,$C9,$CD,$C9,$DA,$C5,$DF,$D3,$C5,$51 + !BYTE $08 ; ENTRY SYMBOL FLAG + !WORD _D084 + !BYTE $00 ; END OF ESD diff --git a/src/toolsrc/plforth.a b/src/toolsrc/plforth.a new file mode 100644 index 0000000..2361813 --- /dev/null +++ b/src/toolsrc/plforth.a @@ -0,0 +1,1037 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; toolsrc/plforth.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; toolsrc/plforth.pla: 0001: +; toolsrc/plforth.pla: 0002: +; toolsrc/plforth.pla: 0003: // +; toolsrc/plforth.pla: 0004: // FORTH dictionary layout +; toolsrc/plforth.pla: 0005: // +; toolsrc/plforth.pla: 0006: // bytes usage +; toolsrc/plforth.pla: 0007: // ----- ----- +; toolsrc/plforth.pla: 0008: // [1..32] name string +; toolsrc/plforth.pla: 0009: // [2] LFA (link field address) +; toolsrc/plforth.pla: 0010: // [2] CFA (code field address) +; toolsrc/plforth.pla: 0011: // [2] PFA (param field address) +; toolsrc/plforth.pla: 0012: // +; toolsrc/plforth.pla: 0013: +; toolsrc/plforth.pla: 0014: // +; toolsrc/plforth.pla: 0015: // Predefine instrinsics +; toolsrc/plforth.pla: 0016: // +; toolsrc/plforth.pla: 0017: predef _drop_(a)#0, _swap_(a,b)#2 + !BYTE $00 ; END OF MODULE DEPENDENCIES +; toolsrc/plforth.pla: 0018: predef _add_(a,b)#1, _sub_(a,b)#1, _mul_(a,b)#1, _div_(a,b)#1 +; toolsrc/plforth.pla: 0019: predef _vlist_#0, _exit_#0 +; toolsrc/plforth.pla: 0020: // DROP +; toolsrc/plforth.pla: 0021: char d_drop = "drop" +_D036 ; d_drop = "drop" + !BYTE $04 + !BYTE $64,$72,$6F,$70 +; toolsrc/plforth.pla: 0022: word = 0, @_drop_, 0 + !WORD $0000 +_F000 !WORD _P000 + !WORD $0000 +; toolsrc/plforth.pla: 0023: // SWAP +; toolsrc/plforth.pla: 0024: char d_swap = "swap" +_D037 ; d_swap = "swap" + !BYTE $04 + !BYTE $73,$77,$61,$70 +; toolsrc/plforth.pla: 0025: word = @d_drop, @_swap_ +_F001 !WORD _D036 +_F002 !WORD _P001 +; toolsrc/plforth.pla: 0026: // ADD +; toolsrc/plforth.pla: 0027: char d_add = "+" +_D038 ; d_add = "+" + !BYTE $01 + !BYTE $2B +; toolsrc/plforth.pla: 0028: word = @d_swap, @_add_ +_F003 !WORD _D037 +_F004 !WORD _P002 +; toolsrc/plforth.pla: 0029: // SUB +; toolsrc/plforth.pla: 0030: char d_sub = "-" +_D039 ; d_sub = "-" + !BYTE $01 + !BYTE $2D +; toolsrc/plforth.pla: 0031: word = @d_add, @_sub_ +_F005 !WORD _D038 +_F006 !WORD _P003 +; toolsrc/plforth.pla: 0032: // MUL +; toolsrc/plforth.pla: 0033: char d_mul = "*" +_D040 ; d_mul = "*" + !BYTE $01 + !BYTE $2A +; toolsrc/plforth.pla: 0034: word = @d_sub, @_mul_ +_F007 !WORD _D039 +_F008 !WORD _P004 +; toolsrc/plforth.pla: 0035: // DIV +; toolsrc/plforth.pla: 0036: char d_div = "/" +_D041 ; d_div = "/" + !BYTE $01 + !BYTE $2F +; toolsrc/plforth.pla: 0037: word = @d_mul, @_div_ +_F009 !WORD _D040 +_F010 !WORD _P005 +; toolsrc/plforth.pla: 0038: // PRINT TOS +; toolsrc/plforth.pla: 0039: char d_prtos = "." +_D042 ; d_prtos = "." + !BYTE $01 + !BYTE $2E +; toolsrc/plforth.pla: 0040: word = @d_div, @puti +_F011 !WORD _D041 +_F012 !WORD 0 ; _X005 +; toolsrc/plforth.pla: 0041: // EXIT +; toolsrc/plforth.pla: 0042: char d_exit = "exit" +_D043 ; d_exit = "exit" + !BYTE $04 + !BYTE $65,$78,$69,$74 +; toolsrc/plforth.pla: 0043: word = @d_prtos, @_exit_ +_F013 !WORD _D042 +_F014 !WORD _P007 +; toolsrc/plforth.pla: 0044: // LIST VOCAB +; toolsrc/plforth.pla: 0045: char d_vlist = "vlist" +_D044 ; d_vlist = "vlist" + !BYTE $05 + !BYTE $76,$6C,$69,$73,$74 +; toolsrc/plforth.pla: 0046: word = @d_exit, @_vlist_ +_F015 !WORD _D043 +_F016 !WORD _P006 +; toolsrc/plforth.pla: 0047: // +; toolsrc/plforth.pla: 0048: // Internal variables +; toolsrc/plforth.pla: 0049: // +; toolsrc/plforth.pla: 0050: word vocab=@d_vlist +_D045 ; vocab=@d_vlist +_F017 !WORD _D044 +; toolsrc/plforth.pla: 0051: word inptr +_D046 !FILL 2 ; inptr +; toolsrc/plforth.pla: 0052: char exit = 0 +_D047 ; exit = 0 + !BYTE $00 +; toolsrc/plforth.pla: 0053: // +; toolsrc/plforth.pla: 0054: // Intrinsics +; toolsrc/plforth.pla: 0055: // +; toolsrc/plforth.pla: 0056: def _drop_(a)#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; a -> [0] +_P000 ; _drop_(a)#0() +_C000 ; _drop_() +; toolsrc/plforth.pla: 0057: return + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/plforth.pla: 0058: end +; toolsrc/plforth.pla: 0059: def _swap_(a,b)#2 + ; a -> [0] + ; b -> [2] +_P001 ; _swap_(a,b)#2() +_C001 ; _swap_() +; toolsrc/plforth.pla: 0060: return b,a + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0061: end +; toolsrc/plforth.pla: 0062: def _add_(a,b)#1 + ; a -> [0] + ; b -> [2] +_P002 ; _add_(a,b)#1() +_C002 ; _add_() +; toolsrc/plforth.pla: 0063: return a+b + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0064: end +; toolsrc/plforth.pla: 0065: def _sub_(a,b)#1 + ; a -> [0] + ; b -> [2] +_P003 ; _sub_(a,b)#1() +_C003 ; _sub_() +; toolsrc/plforth.pla: 0066: return a-b + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0067: end +; toolsrc/plforth.pla: 0068: def _mul_(a,b)#1 + ; a -> [0] + ; b -> [2] +_P004 ; _mul_(a,b)#1() +_C004 ; _mul_() +; toolsrc/plforth.pla: 0069: return a*b + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $86 ; MUL + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0070: end +; toolsrc/plforth.pla: 0071: def _div_(a,b)#1 + ; a -> [0] + ; b -> [2] +_P005 ; _div_(a,b)#1() +_C005 ; _div_() +; toolsrc/plforth.pla: 0072: return a/b + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $88 ; DIV + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0073: end +; toolsrc/plforth.pla: 0074: def _exit_#0 +_P007 ; _exit_#0() +_C006 ; _exit_() +; toolsrc/plforth.pla: 0075: exit = 1 +; toolsrc/plforth.pla: 0076: end + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D047+0 +_F018 !WORD _D047+0 + !BYTE $5C ; RET +; toolsrc/plforth.pla: 0077: def _vlist_#0 +_P006 ; _vlist_#0() +_C007 ; _vlist_() +; toolsrc/plforth.pla: 0078: word v + ; v -> [0] +; toolsrc/plforth.pla: 0079: +; toolsrc/plforth.pla: 0080: v = vocab + !BYTE $58,$02,$00 ; ENTER 2,0 +; toolsrc/plforth.pla: 0081: while v + !BYTE $6A ; LAW _D045+0 +_F019 !WORD _D045+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; toolsrc/plforth.pla: 0082: puts(v); puts(" ") + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 + !BYTE $2E ; CS + !BYTE $02 + !BYTE $20,$20 + !BYTE $54 ; CALL _X004 +_F021 !WORD 0 +; toolsrc/plforth.pla: 0083: v = *(v + ^v + 1) +; toolsrc/plforth.pla: 0084: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] +_B003 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; toolsrc/plforth.pla: 0085: end + !BYTE $5A,$02 ; LEAVE 2 +; toolsrc/plforth.pla: 0086: // +; toolsrc/plforth.pla: 0087: // Find match in vocabulary +; toolsrc/plforth.pla: 0088: // +; toolsrc/plforth.pla: 0089: def find#1 +_C008 ; find() +; toolsrc/plforth.pla: 0090: word v + ; v -> [0] +; toolsrc/plforth.pla: 0091: byte len + ; len -> [2] +; toolsrc/plforth.pla: 0092: +; toolsrc/plforth.pla: 0093: inptr-- + !BYTE $58,$03,$00 ; ENTER 3,0 + !BYTE $6A ; LAW _D046+0 +_F022 !WORD _D046+0 + !BYTE $8E ; DECR +; toolsrc/plforth.pla: 0094: v = vocab +; toolsrc/plforth.pla: 0095: while v + !BYTE $7A ; SAW _D046+0 +_F023 !WORD _D046+0 + !BYTE $6A ; LAW _D045+0 +_F024 !WORD _D045+0 + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; toolsrc/plforth.pla: 0096: for len = 1 to ^v + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B007 + !WORD _B007-* +_B008 + !BYTE $6C,$02 ; DLB [2] +; toolsrc/plforth.pla: 0097: if ^(inptr+len) <> ^(v+len) +; toolsrc/plforth.pla: 0098: break + !BYTE $6A ; LAW _D046+0 +_F025 !WORD _D046+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B010 + !WORD _B010-* + !BYTE $50 ; BRNCH _B007 + !WORD _B007-* +; toolsrc/plforth.pla: 0099: fin +_B010 +_B011 +; toolsrc/plforth.pla: 0100: next +_B009 + !BYTE $A4 ; INCBRLE _B008 + !WORD _B008-* +_B007 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; toolsrc/plforth.pla: 0101: if len > ^v and ^(inptr+len) <= ' ' +; toolsrc/plforth.pla: 0102: //puts("[Found name = "); puts(v); puts("]\n") +; toolsrc/plforth.pla: 0103: inptr = inptr + len +; toolsrc/plforth.pla: 0104: return v + ^v + 3 + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B012 + !WORD _B012-* + !BYTE $6A ; LAW _D046+0 +_F026 !WORD _D046+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B012 + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D046+0 +_F027 !WORD _D046+0 + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $7A ; SAW _D046+0 +_F028 !WORD _D046+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $38,$03 ; ADDI 3 + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/plforth.pla: 0105: fin +_B013 +_B014 +; toolsrc/plforth.pla: 0106: v = *(v + ^v + 1) +; toolsrc/plforth.pla: 0107: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$00 ; SLW [0] +_B006 + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; toolsrc/plforth.pla: 0108: // Not found +; toolsrc/plforth.pla: 0109: inptr++ + !BYTE $6A ; LAW _D046+0 +_F029 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/plforth.pla: 0110: return 0 + !BYTE $7A ; SAW _D046+0 +_F030 !WORD _D046+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$03 ; LEAVE 3 +; toolsrc/plforth.pla: 0111: end +; toolsrc/plforth.pla: 0112: // +; toolsrc/plforth.pla: 0113: // Execute code in CFA +; toolsrc/plforth.pla: 0114: // +; toolsrc/plforth.pla: 0115: def exec(cfa)#0 + ; cfa -> [0] +_C009 ; exec() +; toolsrc/plforth.pla: 0116: word w + ; w -> [2] +; toolsrc/plforth.pla: 0117: +; toolsrc/plforth.pla: 0118: w = *cfa + !BYTE $58,$04,$01 ; ENTER 4,1 +; toolsrc/plforth.pla: 0119: w()#0 +; toolsrc/plforth.pla: 0120: end + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $6E,$02 ; DLW [2] + !BYTE $56 ; ICAL + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0121: // +; toolsrc/plforth.pla: 0122: // Convert input into number +; toolsrc/plforth.pla: 0123: // +; toolsrc/plforth.pla: 0124: def isnum#2 +_C010 ; isnum() +; toolsrc/plforth.pla: 0125: word num, sign + ; num -> [0] + ; sign -> [2] +; toolsrc/plforth.pla: 0126: +; toolsrc/plforth.pla: 0127: sign = 1 + !BYTE $58,$04,$00 ; ENTER 4,0 +; toolsrc/plforth.pla: 0128: if ^inptr == '-' +; toolsrc/plforth.pla: 0129: sign = -1 +; toolsrc/plforth.pla: 0130: inptr++ + !BYTE $02 ; CN 1 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D046+0 +_F031 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $24 ; BRNE _B015 + !WORD _B015-* + !BYTE $20 ; MINUS ONE + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D046+0 +_F032 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/plforth.pla: 0131: fin + !BYTE $7A ; SAW _D046+0 +_F033 !WORD _D046+0 +_B015 +_B016 +; toolsrc/plforth.pla: 0132: if ^inptr >= '0' and ^inptr <= '9' +; toolsrc/plforth.pla: 0133: num = 0 +; toolsrc/plforth.pla: 0134: repeat + !BYTE $6A ; LAW _D046+0 +_F034 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B017 + !WORD _B017-* + !BYTE $6A ; LAW _D046+0 +_F035 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B017 + !BYTE $4C ; BRFLS _B018 + !WORD _B018-* + !BYTE $00 ; CN 0 + !BYTE $76,$00 ; SLW [0] +_B021 +; toolsrc/plforth.pla: 0135: num = num * 10 + ^inptr - '0' +; toolsrc/plforth.pla: 0136: inptr++ + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $6A ; LAW _D046+0 +_F036 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$00 ; SLW [0] + !BYTE $6A ; LAW _D046+0 +_F037 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/plforth.pla: 0137: until ^inptr < '0' or ^inptr > '9' + !BYTE $7A ; SAW _D046+0 +_F038 !WORD _D046+0 +_B022 + !BYTE $6A ; LAW _D046+0 +_F039 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B023 + !WORD _B023-* + !BYTE $6A ; LAW _D046+0 +_F040 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT +_B023 + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* +_B020 +; toolsrc/plforth.pla: 0138: //if ^inptr <= ' ' +; toolsrc/plforth.pla: 0139: // puts("[Found number = "); puti(num); puts("]\n") +; toolsrc/plforth.pla: 0140: //fin +; toolsrc/plforth.pla: 0141: return num * sign, ^inptr <= ' ' + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $86 ; MUL + !BYTE $6A ; LAW _D046+0 +_F041 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0142: fin +_B018 +_B019 +; toolsrc/plforth.pla: 0143: return 0, FALSE + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; toolsrc/plforth.pla: 0144: end +; toolsrc/plforth.pla: 0145: // +; toolsrc/plforth.pla: 0146: // Quit and look for user input +; toolsrc/plforth.pla: 0147: // +; toolsrc/plforth.pla: 0148: def _quit_#0 +_C011 ; _quit_() +; toolsrc/plforth.pla: 0149: word cfa, __drop, __isnum + ; cfa -> [0] + ; __drop -> [2] + ; __isnum -> [4] +; toolsrc/plforth.pla: 0150: +; toolsrc/plforth.pla: 0151: __drop = @_drop_ + !BYTE $58,$06,$00 ; ENTER 6,0 +; toolsrc/plforth.pla: 0152: __isnum = @isnum +; toolsrc/plforth.pla: 0153: repeat + !BYTE $26 ; LA _C000+0 +_F042 !WORD _C000+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $26 ; LA _C010+0 +_F043 !WORD _C010+0 + !BYTE $76,$04 ; SLW [4] +_B025 +; toolsrc/plforth.pla: 0154: puts("\nOK") + !BYTE $2E ; CS + !BYTE $03 + !BYTE $0D,$4F,$4B + !BYTE $54 ; CALL _X004 +_F044 !WORD 0 +; toolsrc/plforth.pla: 0155: inptr = gets(':'|$80) +; toolsrc/plforth.pla: 0156: if ^inptr +; toolsrc/plforth.pla: 0157: ^(inptr + ^inptr + 1) = 0 +; toolsrc/plforth.pla: 0158: // +; toolsrc/plforth.pla: 0159: // Clear high bit of input buffer +; toolsrc/plforth.pla: 0160: // +; toolsrc/plforth.pla: 0161: for cfa = 1 to ^inptr + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _X007 +_F045 !WORD 0 + !BYTE $7A ; SAW _D046+0 +_F046 !WORD _D046+0 + !BYTE $6A ; LAW _D046+0 +_F047 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D046+0 +_F048 !WORD _D046+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $6A ; LAW _D046+0 +_F049 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B029 + !WORD _B029-* +_B030 + !BYTE $6E,$00 ; DLW [0] +; toolsrc/plforth.pla: 0162: ^(inptr + cfa) = ^(inptr + cfa) & $7F +; toolsrc/plforth.pla: 0163: next + !BYTE $6A ; LAW _D046+0 +_F050 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $60 ; LB + !BYTE $3C,$7F ; ANDI 127 + !BYTE $6A ; LAW _D046+0 +_F051 !WORD _D046+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $70 ; SB +_B031 + !BYTE $A4 ; INCBRLE _B030 + !WORD _B030-* +_B029 + !BYTE $76,$00 ; SLW [0] + !BYTE $30 ; DROP +; toolsrc/plforth.pla: 0164: inptr++ + !BYTE $6A ; LAW _D046+0 +_F052 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/plforth.pla: 0165: repeat + !BYTE $7A ; SAW _D046+0 +_F053 !WORD _D046+0 +_B033 +; toolsrc/plforth.pla: 0166: while ^inptr == ' ' + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +_B035 +; toolsrc/plforth.pla: 0167: inptr++ + !BYTE $6A ; LAW _D046+0 +_F054 !WORD _D046+0 + !BYTE $8C ; INCR +; toolsrc/plforth.pla: 0168: loop + !BYTE $7A ; SAW _D046+0 +_F055 !WORD _D046+0 +_B037 + !BYTE $6A ; LAW _D046+0 +_F056 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $22 ; BREQ _B035 + !WORD _B035-* +_B036 +; toolsrc/plforth.pla: 0169: if ^inptr > ' ' +; toolsrc/plforth.pla: 0170: cfa = find +; toolsrc/plforth.pla: 0171: if cfa +; toolsrc/plforth.pla: 0172: (*cfa)()#0 //exec(*cfa) +; toolsrc/plforth.pla: 0173: elsif not __isnum()#1 + !BYTE $6A ; LAW _D046+0 +_F057 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B038 + !WORD _B038-* + !BYTE $54 ; CALL _C008 +_F058 !WORD _C008 + !BYTE $6E,$00 ; DLW [0] + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $66,$00 ; LLW [0] + !BYTE $62 ; LW + !BYTE $56 ; ICAL + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B040 +; toolsrc/plforth.pla: 0174: __drop()#0 +; toolsrc/plforth.pla: 0175: puts("? No match\n") + !BYTE $66,$04 ; LLW [4] + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $66,$02 ; LLW [2] + !BYTE $56 ; ICAL + !BYTE $2E ; CS + !BYTE $0B + !BYTE $3F,$20,$4E,$6F,$20,$6D,$61,$74 + !BYTE $63,$68,$0D + !BYTE $54 ; CALL _X004 +_F059 !WORD 0 +; toolsrc/plforth.pla: 0176: fin +_B042 +_B041 +; toolsrc/plforth.pla: 0177: fin +_B038 +_B039 +; toolsrc/plforth.pla: 0178: until ^inptr < ' ' +_B034 + !BYTE $6A ; LAW _D046+0 +_F060 !WORD _D046+0 + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* +_B032 +; toolsrc/plforth.pla: 0179: fin +_B027 +_B028 +; toolsrc/plforth.pla: 0180: until exit +_B026 + !BYTE $68 ; LAB _D047+0 +_F061 !WORD _D047+0 + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* +_B024 +; toolsrc/plforth.pla: 0181: end + !BYTE $5A,$06 ; LEAVE 6 +; toolsrc/plforth.pla: 0182: _quit_ +_INIT +; toolsrc/plforth.pla: 0183: done + !BYTE $54 ; CALL _C011 +_F062 !WORD _C011 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 13 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/toolsrc/plforth.pla b/src/toolsrc/plforth.pla index 9e9e17d..ee5520d 100644 --- a/src/toolsrc/plforth.pla +++ b/src/toolsrc/plforth.pla @@ -14,37 +14,41 @@ include "inc/cmdsys.plh" // // Predefine instrinsics // -predef _drop_(a)#0, _add_(a,b)#1, _vlist_#0 -predef _exit_#0 -// +predef _drop_(a)#0, _swap_(a,b)#2 +predef _add_(a,b)#1, _sub_(a,b)#1, _mul_(a,b)#1, _div_(a,b)#1 +predef _vlist_#0, _exit_#0 // DROP -// char d_drop = "drop" word = 0, @_drop_, 0 -// +// SWAP +char d_swap = "swap" +word = @d_drop, @_swap_ // ADD -// char d_add = "+" -word = @d_drop, @_add_, 0 -// +word = @d_swap, @_add_ +// SUB +char d_sub = "-" +word = @d_add, @_sub_ +// MUL +char d_mul = "*" +word = @d_sub, @_mul_ +// DIV +char d_div = "/" +word = @d_mul, @_div_ // PRINT TOS -// char d_prtos = "." -word = @d_add, @puti, 0 -// -// EXIT FORTH -// +word = @d_div, @puti +// EXIT char d_exit = "exit" -word = @d_prtos, @_exit_, 0 -// -// List vocabulary -// +word = @d_prtos, @_exit_ +// LIST VOCAB char d_vlist = "vlist" -word = @d_exit, @_vlist_, 0 +word = @d_exit, @_vlist_ // -// Vocabulary +// Internal variables // word vocab=@d_vlist +word inptr char exit = 0 // // Intrinsics @@ -52,9 +56,21 @@ char exit = 0 def _drop_(a)#0 return end +def _swap_(a,b)#2 + return b,a +end def _add_(a,b)#1 return a+b end +def _sub_(a,b)#1 + return a-b +end +def _mul_(a,b)#1 + return a*b +end +def _div_(a,b)#1 + return a/b +end def _exit_#0 exit = 1 end @@ -70,26 +86,27 @@ end // // Find match in vocabulary // -def find(name)#1 +def find#1 word v byte len - name-- + inptr-- v = vocab while v for len = 1 to ^v - putc(^(name+len)); putc('='); putc(^(v+len)) - if ^(name+len) <> ^(v+len) - putln + if ^(inptr+len) <> ^(v+len) break fin next - if len > ^v and ^(name+len) <= ' ' - puts("[Found name = "); puts(v); puts("]\n") + if len > ^v and ^(inptr+len) <= ' ' + //puts("[Found name = "); puts(v); puts("]\n") + inptr = inptr + len return v + ^v + 3 fin v = *(v + ^v + 1) loop + // Not found + inptr++ return 0 end // @@ -104,20 +121,24 @@ end // // Convert input into number // -def isnum(inbuf)#2 - word num +def isnum#2 + word num, sign - - if ^inbuf >= '0' and ^inbuf <= '9' + sign = 1 + if ^inptr == '-' + sign = -1 + inptr++ + fin + if ^inptr >= '0' and ^inptr <= '9' num = 0 - while ^inbuf >= '0' and ^inbuf <= '9' - num = num * 10 + ^inbuf - '0' - putc(^inbuf); inbuf++ - loop - if inbuf <= ' ' - puts("[Found number = "); puti(num); puts("]\n") - fin - return num, inbuf <= ' ' + repeat + num = num * 10 + ^inptr - '0' + inptr++ + until ^inptr < '0' or ^inptr > '9' + //if ^inptr <= ' ' + // puts("[Found number = "); puti(num); puts("]\n") + //fin + return num * sign, ^inptr <= ' ' fin return 0, FALSE end @@ -125,34 +146,36 @@ end // Quit and look for user input // def _quit_#0 - word instr, cfa, __drop, __isnum + word cfa, __drop, __isnum __drop = @_drop_ __isnum = @isnum repeat - puts("OK") - instr = gets(':'|$80) - if ^instr - ^(instr + ^instr + 1) = 0 + puts("\nOK") + inptr = gets(':'|$80) + if ^inptr + ^(inptr + ^inptr + 1) = 0 // // Clear high bit of input buffer // - for cfa = 1 to ^instr - ^(instr + cfa) = ^(instr + cfa) & $7F + for cfa = 1 to ^inptr + ^(inptr + cfa) = ^(inptr + cfa) & $7F next - instr++ - while ^instr == ' ' - instr++ - loop - if ^instr > ' ' - cfa = find(instr) - if cfa - (*cfa)()#0 //exec(*cfa) - elsif not __isnum(instr)#1 - __drop()#0 - puts("? No match\n") + inptr++ + repeat + while ^inptr == ' ' + inptr++ + loop + if ^inptr > ' ' + cfa = find + if cfa + (*cfa)()#0 //exec(*cfa) + elsif not __isnum()#1 + __drop()#0 + puts("? No match\n") + fin fin - fin + until ^inptr < ' ' fin until exit end diff --git a/src/utilsrc/apple/cat.a b/src/utilsrc/apple/cat.a new file mode 100644 index 0000000..915e806 --- /dev/null +++ b/src/utilsrc/apple/cat.a @@ -0,0 +1,1340 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/cat.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/cat.pla: 0001: +; utilsrc/apple/cat.pla: 0002: include "inc/longjmp.plh" +; inc/longjmp.plh: 0001: import longjmp + ; DCI STRING: LONGJMP + !BYTE $CC,$CF,$CE,$C7,$CA,$CD,$50 + ; LONGJMP -> X028 +; inc/longjmp.plh: 0002: const t_except = $0140 + ; t_except = 320 +; inc/longjmp.plh: 0003: predef except(env), throw(env, retval) + ; EXCEPT -> X029 + ; THROW -> X030 +; inc/longjmp.plh: 0004: end +; utilsrc/apple/cat.pla: 0002: +; utilsrc/apple/cat.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X031 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X032 + ; ARGNEXT -> X033 +; inc/args.plh: 0003: end +; utilsrc/apple/cat.pla: 0003: +; utilsrc/apple/cat.pla: 0004: include "inc/matchfiles.plh" +; inc/matchfiles.plh: 0001: import matchfiles + ; DCI STRING: MATCHFILES + !BYTE $CD,$C1,$D4,$C3,$C8,$C6,$C9,$CC,$C5,$53 + ; MATCHFILES -> X034 +; inc/matchfiles.plh: 0002: predef matchName(src, exp)#1 + ; MATCHNAME -> X035 +; inc/matchfiles.plh: 0003: predef matchList(pathptr, exp)#2 + ; MATCHLIST -> X036 +; inc/matchfiles.plh: 0004: predef isWildName(exp)#1 + ; ISWILDNAME -> X037 +; inc/matchfiles.plh: 0005: predef fileFromPath(filestr, pathstr)#0 + ; FILEFROMPATH -> X038 +; inc/matchfiles.plh: 0006: end +; utilsrc/apple/cat.pla: 0004: +; utilsrc/apple/cat.pla: 0005: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X039 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X040 +; inc/fileio.plh: 0080: end +; utilsrc/apple/cat.pla: 0005: +; utilsrc/apple/cat.pla: 0006: include "inc/int32.plh" +; inc/int32.plh: 0001: import int32 + ; DCI STRING: INT32 + !BYTE $C9,$CE,$D4,$B3,$32 + ; INT32 -> X041 +; inc/int32.plh: 0002: const t_i32 = 4 + ; t_i32 = 4 +; inc/int32.plh: 0003: +; inc/int32.plh: 0004: predef zero32#0 + ; ZERO32 -> X042 +; inc/int32.plh: 0005: predef zext16to32#0 + ; ZEXT16TO32 -> X043 +; inc/int32.plh: 0006: predef neg32#0 + ; NEG32 -> X044 +; inc/int32.plh: 0007: predef load32(i32ptr)#0 + ; LOAD32 -> X045 +; inc/int32.plh: 0008: predef loadi16(imm16)#0 + ; LOADI16 -> X046 +; inc/int32.plh: 0009: predef store32(i32ptr)#0 + ; STORE32 -> X047 +; inc/int32.plh: 0010: predef add32(i32ptr)#0 + ; ADD32 -> X048 +; inc/int32.plh: 0011: predef addi16(imm16)#0 + ; ADDI16 -> X049 +; inc/int32.plh: 0012: predef sub32(i32ptr)#0 + ; SUB32 -> X050 +; inc/int32.plh: 0013: predef subi16(imm16)#0 + ; SUBI16 -> X051 +; inc/int32.plh: 0014: predef shl32(imm8)#0 + ; SHL32 -> X052 +; inc/int32.plh: 0015: predef shr32(imm8)#0 + ; SHR32 -> X053 +; inc/int32.plh: 0016: predef mul32(i32ptr)#0 + ; MUL32 -> X054 +; inc/int32.plh: 0017: predef muli16(imm16)#0 + ; MULI16 -> X055 +; inc/int32.plh: 0018: predef div32(i32ptr)#2 + ; DIV32 -> X056 +; inc/int32.plh: 0019: predef divi16(imm16)#2 + ; DIVI16 -> X057 +; inc/int32.plh: 0020: predef iseq32(i32ptr)#1 + ; ISEQ32 -> X058 +; inc/int32.plh: 0021: predef iseqi16(imm16)#1 + ; ISEQI16 -> X059 +; inc/int32.plh: 0022: predef isge32(i32ptr)#1 + ; ISGE32 -> X060 +; inc/int32.plh: 0023: predef isgei16(imm16)#1 + ; ISGEI16 -> X061 +; inc/int32.plh: 0024: predef isle32(i32ptr)#1 + ; ISLE32 -> X062 +; inc/int32.plh: 0025: predef islei16(imm16)#1 + ; ISLEI16 -> X063 +; inc/int32.plh: 0026: predef isgt32(i32ptr)#1 + ; ISGT32 -> X064 +; inc/int32.plh: 0027: predef isgti16(imm16)#1 + ; ISGTI16 -> X065 +; inc/int32.plh: 0028: predef islt32(i32ptr)#1 + ; ISLT32 -> X066 +; inc/int32.plh: 0029: predef islti16(imm16)#1 + ; ISLTI16 -> X067 +; inc/int32.plh: 0030: predef i32tos(i32ptr, strptr)#1 + ; I32TOS -> X068 +; inc/int32.plh: 0031: predef puti32(i32ptr)#0 + ; PUTI32 -> X069 +; inc/int32.plh: 0032: end +; utilsrc/apple/cat.pla: 0006: +; utilsrc/apple/cat.pla: 0007: +; utilsrc/apple/cat.pla: 0008: predef catalog(pathstr)#0 + !BYTE $00 ; END OF MODULE DEPENDENCIES +; utilsrc/apple/cat.pla: 0009: +; utilsrc/apple/cat.pla: 0010: var arg, recurse, exit +_D071 !FILL 2 ; arg, recurse, exit +_D072 !FILL 2 ; recurse, exit +_D073 !FILL 2 ; exit +; utilsrc/apple/cat.pla: 0011: char[64] path, wildname +_D074 !FILL 64 ; path, wildname +_D075 !FILL 64 ; wildname +; utilsrc/apple/cat.pla: 0012: res[t_fileinfo] fileinfo +_D076 !FILL 15 ; fileinfo +; utilsrc/apple/cat.pla: 0013: res[t_fileentry] fileentry +_D077 !FILL 39 ; fileentry +; utilsrc/apple/cat.pla: 0014: // +; utilsrc/apple/cat.pla: 0015: // Copy string with upper case conversion +; utilsrc/apple/cat.pla: 0016: // +; utilsrc/apple/cat.pla: 0017: def struprcpy(dst, src)#0 +_SUBSEG ; BYTECODE STARTS + ; dst -> [0] + ; src -> [2] +_C000 ; struprcpy() +; utilsrc/apple/cat.pla: 0018: byte i, chr + ; i -> [4] + ; chr -> [5] +; utilsrc/apple/cat.pla: 0019: +; utilsrc/apple/cat.pla: 0020: if ^src + !BYTE $58,$06,$02 ; ENTER 6,2 +; utilsrc/apple/cat.pla: 0021: for i = 1 to ^src + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B003 + !WORD _B003-* +_B004 + !BYTE $6C,$04 ; DLB [4] +; utilsrc/apple/cat.pla: 0022: chr = src->[i] +; utilsrc/apple/cat.pla: 0023: if chr >= 'a' and chr <= 'z' +; utilsrc/apple/cat.pla: 0024: dst->[i] = chr - 'a' + 'A' +; utilsrc/apple/cat.pla: 0025: else + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $2A,$61 ; CB 97 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B006 + !WORD _B006-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$7A ; CB 122 + !BYTE $4A ; ISLE +_B006 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$05 ; LLB [5] + !BYTE $3A,$61 ; SUBI 97 + !BYTE $38,$41 ; ADDI 65 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; utilsrc/apple/cat.pla: 0026: dst->[i] = chr +; utilsrc/apple/cat.pla: 0027: fin + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B008 +; utilsrc/apple/cat.pla: 0028: next +_B005 + !BYTE $A4 ; INCBRLE _B004 + !WORD _B004-* +_B003 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; utilsrc/apple/cat.pla: 0029: fin +_B001 +_B002 +; utilsrc/apple/cat.pla: 0030: ^dst = ^src +; utilsrc/apple/cat.pla: 0031: end + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$06 ; LEAVE 6 +; utilsrc/apple/cat.pla: 0032: // +; utilsrc/apple/cat.pla: 0033: // Print out a directory entry +; utilsrc/apple/cat.pla: 0034: // +; utilsrc/apple/cat.pla: 0035: def printentry(entryptr)#0 + ; entryptr -> [0] +_C001 ; printentry() +; utilsrc/apple/cat.pla: 0036: char type, pad, eofstr[12] + ; type -> [2] + ; pad -> [3] + ; eofstr -> [4] +; utilsrc/apple/cat.pla: 0037: +; utilsrc/apple/cat.pla: 0038: puts(entryptr) + !BYTE $58,$10,$01 ; ENTER 16,1 +; utilsrc/apple/cat.pla: 0039: when entryptr->entry_type + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F000 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B010-* +; utilsrc/apple/cat.pla: 0040: is $0F // Is it a directory? +_B011 +; utilsrc/apple/cat.pla: 0041: type = '/' +; utilsrc/apple/cat.pla: 0042: break + !BYTE $2A,$2F ; CB 47 + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; utilsrc/apple/cat.pla: 0043: is $FF // SYSTEM file +_B012 +; utilsrc/apple/cat.pla: 0044: type = '-' +; utilsrc/apple/cat.pla: 0045: break + !BYTE $2A,$2D ; CB 45 + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; utilsrc/apple/cat.pla: 0046: is $FE // REL file +_B013 +; utilsrc/apple/cat.pla: 0047: type = '+' +; utilsrc/apple/cat.pla: 0048: break + !BYTE $2A,$2B ; CB 43 + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +; utilsrc/apple/cat.pla: 0049: otherwise +_B010 + !BYTE $03 ; CASEBLOCK + !WORD $000F + !WORD _B011-* + !WORD $00FE + !WORD _B013-* + !WORD $00FF + !WORD _B012-* +; utilsrc/apple/cat.pla: 0050: type = ' ' +; utilsrc/apple/cat.pla: 0051: wend + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$02 ; SLB [2] +_B009 +; utilsrc/apple/cat.pla: 0052: putc(type) +; utilsrc/apple/cat.pla: 0053: for pad = ^entryptr to 14 + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _X002 +_F001 !WORD 0 + !BYTE $1C ; CN 14 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B014 + !WORD _B014-* +_B015 + !BYTE $6C,$03 ; DLB [3] +; utilsrc/apple/cat.pla: 0054: putc(' ') +; utilsrc/apple/cat.pla: 0055: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F002 !WORD 0 +_B016 + !BYTE $A4 ; INCBRLE _B015 + !WORD _B015-* +_B014 + !BYTE $74,$03 ; SLB [3] + !BYTE $30 ; DROP +; utilsrc/apple/cat.pla: 0056: putc('$'); putb(entryptr->entry_type) +; utilsrc/apple/cat.pla: 0057: puts(" $"); puth(entryptr=>entry_aux) + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F003 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X008 +_F004 !WORD 0 + !BYTE $2E ; CS + !BYTE $03 + !BYTE $20,$20,$24 + !BYTE $54 ; CALL _X004 +_F005 !WORD 0 +; utilsrc/apple/cat.pla: 0058: entryptr->entry_EOFH.1 = 0 +; utilsrc/apple/cat.pla: 0059: i32tos(entryptr+entry_EOFL, @eofstr) +; utilsrc/apple/cat.pla: 0060: for pad = eofstr to 9 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$1F ; ADDI 31 + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F006 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$17 ; ADDI 23 + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$15 ; ADDI 21 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X068 +_F007 !WORD 0 + !BYTE $30 ; DROP + !BYTE $12 ; CN 9 + !BYTE $64,$04 ; LLB [4] + !BYTE $A0 ; BRGT _B017 + !WORD _B017-* +_B018 + !BYTE $6C,$03 ; DLB [3] +; utilsrc/apple/cat.pla: 0061: putc(' ') +; utilsrc/apple/cat.pla: 0062: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F008 !WORD 0 +_B019 + !BYTE $A4 ; INCBRLE _B018 + !WORD _B018-* +_B017 + !BYTE $74,$03 ; SLB [3] + !BYTE $30 ; DROP +; utilsrc/apple/cat.pla: 0063: puts(@eofstr) +; utilsrc/apple/cat.pla: 0064: putln +; utilsrc/apple/cat.pla: 0065: end + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 + !BYTE $54 ; CALL _X003 +_F010 !WORD 0 + !BYTE $5A,$10 ; LEAVE 16 +; utilsrc/apple/cat.pla: 0066: def printentries(pathstr, entries, num)#0 + ; pathstr -> [0] + ; entries -> [2] + ; num -> [4] +_C002 ; printentries() +; utilsrc/apple/cat.pla: 0067: byte page + ; page -> [6] +; utilsrc/apple/cat.pla: 0068: +; utilsrc/apple/cat.pla: 0069: puts(pathstr); putln + !BYTE $58,$07,$03 ; ENTER 7,3 +; utilsrc/apple/cat.pla: 0070: puts("=NAME==========TYPE===AUX====LENGTH=\n") + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F011 !WORD 0 + !BYTE $54 ; CALL _X003 +_F012 !WORD 0 + !BYTE $2E ; CS + !BYTE $25 + !BYTE $3D,$4E,$41,$4D,$45,$3D,$3D,$3D + !BYTE $3D,$3D,$3D,$3D,$3D,$3D,$3D,$54 + !BYTE $59,$50,$45,$3D,$3D,$3D,$41,$55 + !BYTE $58,$3D,$3D,$3D,$3D,$4C,$45,$4E + !BYTE $47,$54,$48,$3D,$0D + !BYTE $54 ; CALL _X004 +_F013 !WORD 0 +; utilsrc/apple/cat.pla: 0071: page = 20 +; utilsrc/apple/cat.pla: 0072: repeat + !BYTE $2A,$14 ; CB 20 + !BYTE $74,$06 ; SLB [6] +_B021 +; utilsrc/apple/cat.pla: 0073: printentry(entries) +; utilsrc/apple/cat.pla: 0074: entries = entries + t_fileentry +; utilsrc/apple/cat.pla: 0075: // +; utilsrc/apple/cat.pla: 0076: // Pause display every screenfull +; utilsrc/apple/cat.pla: 0077: // +; utilsrc/apple/cat.pla: 0078: if not page +; utilsrc/apple/cat.pla: 0079: if toupper(getc()) == 'Q' +; utilsrc/apple/cat.pla: 0080: throw(exit, TRUE) +; utilsrc/apple/cat.pla: 0081: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F014 !WORD _C001 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$27 ; ADDI 39 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$06 ; LLB [6] + !BYTE $4E ; BRTRU _B023 + !WORD _B023-* + !BYTE $54 ; CALL _X006 +_F015 !WORD 0 + !BYTE $54 ; CALL _X021 +_F016 !WORD 0 + !BYTE $2A,$51 ; CB 81 + !BYTE $24 ; BRNE _B025 + !WORD _B025-* + !BYTE $6A ; LAW _D073+0 +_F017 !WORD _D073+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F018 !WORD 0 + !BYTE $30 ; DROP +_B025 +_B026 +; utilsrc/apple/cat.pla: 0082: page = 22 +; utilsrc/apple/cat.pla: 0083: else + !BYTE $2A,$16 ; CB 22 + !BYTE $74,$06 ; SLB [6] + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B023 +; utilsrc/apple/cat.pla: 0084: page-- + !BYTE $64,$06 ; LLB [6] + !BYTE $8E ; DECR +; utilsrc/apple/cat.pla: 0085: fin + !BYTE $74,$06 ; SLB [6] +_B024 +; utilsrc/apple/cat.pla: 0086: num-- + !BYTE $66,$04 ; LLW [4] + !BYTE $8E ; DECR +; utilsrc/apple/cat.pla: 0087: until not num + !BYTE $76,$04 ; SLW [4] +_B022 + !BYTE $66,$04 ; LLW [4] + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* +_B020 +; utilsrc/apple/cat.pla: 0088: end + !BYTE $5A,$07 ; LEAVE 7 +; utilsrc/apple/cat.pla: 0089: def catalog(pathstr)#0 + ; pathstr -> [0] +_P000 ; catalog(pathstr)#0() +_C003 ; catalog() +; utilsrc/apple/cat.pla: 0090: char recursepath[64] + ; recursepath -> [2] +; utilsrc/apple/cat.pla: 0091: var entrylist, entryptr, entrycnt + ; entrylist -> [66] + ; entryptr -> [68] + ; entrycnt -> [70] +; utilsrc/apple/cat.pla: 0092: +; utilsrc/apple/cat.pla: 0093: entrylist, entrycnt = matchList(pathstr, @wildname) + !BYTE $58,$48,$01 ; ENTER 72,1 +; utilsrc/apple/cat.pla: 0094: if entrylist +; utilsrc/apple/cat.pla: 0095: printentries(pathstr, entrylist, entrycnt) +; utilsrc/apple/cat.pla: 0096: if recurse +; utilsrc/apple/cat.pla: 0097: entryptr = entrylist +; utilsrc/apple/cat.pla: 0098: repeat + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D075+0 +_F019 !WORD _D075+0 + !BYTE $54 ; CALL _X036 +_F020 !WORD 0 + !BYTE $76,$46 ; SLW [70] + !BYTE $6E,$42 ; DLW [66] + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$42 ; LLW [66] + !BYTE $66,$46 ; LLW [70] + !BYTE $54 ; CALL _C002 +_F021 !WORD _C002 + !BYTE $6A ; LAW _D072+0 +_F022 !WORD _D072+0 + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $66,$42 ; LLW [66] + !BYTE $76,$44 ; SLW [68] +_B032 +; utilsrc/apple/cat.pla: 0099: if entryptr->entry_type == $0F +; utilsrc/apple/cat.pla: 0100: // +; utilsrc/apple/cat.pla: 0101: // A directory, so recurse +; utilsrc/apple/cat.pla: 0102: // +; utilsrc/apple/cat.pla: 0103: strcpy(@recursepath, pathstr) +; utilsrc/apple/cat.pla: 0104: strcat(@recursepath, entryptr) +; utilsrc/apple/cat.pla: 0105: recursepath++ + !BYTE $66,$44 ; LLW [68] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B034 + !WORD _B034-* + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X019 +_F023 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$02 ; LLA [2] + !BYTE $66,$44 ; LLW [68] + !BYTE $54 ; CALL _X020 +_F024 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$02 ; LLB [2] + !BYTE $8C ; INCR +; utilsrc/apple/cat.pla: 0106: recursepath[recursepath] = '/' +; utilsrc/apple/cat.pla: 0107: if toupper(getc()) == 'Q' +; utilsrc/apple/cat.pla: 0108: throw(exit, TRUE) +; utilsrc/apple/cat.pla: 0109: fin + !BYTE $74,$02 ; SLB [2] + !BYTE $2A,$2F ; CB 47 + !BYTE $28,$02 ; LLA [2] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $70 ; SB + !BYTE $54 ; CALL _X006 +_F025 !WORD 0 + !BYTE $54 ; CALL _X021 +_F026 !WORD 0 + !BYTE $2A,$51 ; CB 81 + !BYTE $24 ; BRNE _B036 + !WORD _B036-* + !BYTE $6A ; LAW _D073+0 +_F027 !WORD _D073+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F028 !WORD 0 + !BYTE $30 ; DROP +_B036 +_B037 +; utilsrc/apple/cat.pla: 0110: catalog(@recursepath) +; utilsrc/apple/cat.pla: 0111: fin + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C003 +_F029 !WORD _C003 +_B034 +_B035 +; utilsrc/apple/cat.pla: 0112: entryptr = entryptr + t_fileentry +; utilsrc/apple/cat.pla: 0113: entrycnt-- + !BYTE $66,$44 ; LLW [68] + !BYTE $38,$27 ; ADDI 39 + !BYTE $76,$44 ; SLW [68] + !BYTE $66,$46 ; LLW [70] + !BYTE $8E ; DECR +; utilsrc/apple/cat.pla: 0114: until not entrycnt + !BYTE $76,$46 ; SLW [70] +_B033 + !BYTE $66,$46 ; LLW [70] + !BYTE $4E ; BRTRU _B032 + !WORD _B032-* +_B031 +; utilsrc/apple/cat.pla: 0115: fin +_B029 +_B030 +; utilsrc/apple/cat.pla: 0116: heaprelease(entrylist) +; utilsrc/apple/cat.pla: 0117: fin + !BYTE $66,$42 ; LLW [66] + !BYTE $54 ; CALL _X015 +_F030 !WORD 0 + !BYTE $30 ; DROP +_B027 +_B028 +; utilsrc/apple/cat.pla: 0118: end + !BYTE $5A,$48 ; LEAVE 72 +; utilsrc/apple/cat.pla: 0119: // +; utilsrc/apple/cat.pla: 0120: // Install error exit +; utilsrc/apple/cat.pla: 0121: // +; utilsrc/apple/cat.pla: 0122: exit = heapalloc(t_except) +_INIT +; utilsrc/apple/cat.pla: 0123: if not except(exit) +; utilsrc/apple/cat.pla: 0124: // +; utilsrc/apple/cat.pla: 0125: // Check arguments and file types +; utilsrc/apple/cat.pla: 0126: // +; utilsrc/apple/cat.pla: 0127: arg = argNext(argFirst) +; utilsrc/apple/cat.pla: 0128: if ^arg and arg->[1] == '-' +; utilsrc/apple/cat.pla: 0129: if ^arg > 1 and toupper(arg->[2]) == 'R' +; utilsrc/apple/cat.pla: 0130: recurse = TRUE +; utilsrc/apple/cat.pla: 0131: fin + !BYTE $2C,$40,$01 ; CW 320 + !BYTE $54 ; CALL _X014 +_F031 !WORD 0 + !BYTE $7E ; DAW _D073+0 +_F032 !WORD _D073+0 + !BYTE $54 ; CALL _X029 +_F033 !WORD 0 + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* + !BYTE $54 ; CALL _X032 +_F034 !WORD 0 + !BYTE $54 ; CALL _X033 +_F035 !WORD 0 + !BYTE $7A ; SAW _D071+0 +_F036 !WORD _D071+0 + !BYTE $6A ; LAW _D071+0 +_F037 !WORD _D071+0 + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B040 + !WORD _B040-* + !BYTE $6A ; LAW _D071+0 +_F038 !WORD _D071+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $40 ; ISEQ +_B040 + !BYTE $4C ; BRFLS _B041 + !WORD _B041-* + !BYTE $6A ; LAW _D071+0 +_F039 !WORD _D071+0 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B043 + !WORD _B043-* + !BYTE $6A ; LAW _D071+0 +_F040 !WORD _D071+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F041 !WORD 0 + !BYTE $2A,$52 ; CB 82 + !BYTE $40 ; ISEQ +_B043 + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $20 ; MINUS ONE + !BYTE $7A ; SAW _D072+0 +_F042 !WORD _D072+0 +_B044 +_B045 +; utilsrc/apple/cat.pla: 0132: arg = argNext(arg) +; utilsrc/apple/cat.pla: 0133: fin + !BYTE $6A ; LAW _D071+0 +_F043 !WORD _D071+0 + !BYTE $54 ; CALL _X033 +_F044 !WORD 0 + !BYTE $7A ; SAW _D071+0 +_F045 !WORD _D071+0 +_B041 +_B042 +; utilsrc/apple/cat.pla: 0134: if ^arg +; utilsrc/apple/cat.pla: 0135: struprcpy(@path, arg) +; utilsrc/apple/cat.pla: 0136: // +; utilsrc/apple/cat.pla: 0137: // Check if cataloging a directory or volume +; utilsrc/apple/cat.pla: 0138: // +; utilsrc/apple/cat.pla: 0139: if fileio:getfileinfo(@path, @fileinfo) <> FILE_ERR_OK or (fileinfo.storage_type & $0D <> $0D) +; utilsrc/apple/cat.pla: 0140: filefrompath(@wildname, @path) +; utilsrc/apple/cat.pla: 0141: fin + !BYTE $6A ; LAW _D071+0 +_F046 !WORD _D071+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $26 ; LA _D074+0 +_F047 !WORD _D074+0 + !BYTE $6A ; LAW _D071+0 +_F048 !WORD _D071+0 + !BYTE $54 ; CALL _C000 +_F049 !WORD _C000 + !BYTE $26 ; LA _D074+0 +_F050 !WORD _D074+0 + !BYTE $26 ; LA _D076+0 +_F051 !WORD _D076+0 + !BYTE $6A ; LAW _X039+4 +_F052 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $AE ; BROR _B048 + !WORD _B048-* + !BYTE $68 ; LAB _D076+4 +_F053 !WORD _D076+4 + !BYTE $3C,$0D ; ANDI 13 + !BYTE $1A ; CN 13 + !BYTE $42 ; ISNE +_B048 + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* + !BYTE $26 ; LA _D075+0 +_F054 !WORD _D075+0 + !BYTE $26 ; LA _D074+0 +_F055 !WORD _D074+0 + !BYTE $54 ; CALL _X038 +_F056 !WORD 0 +_B049 +_B050 +; utilsrc/apple/cat.pla: 0142: path = path - wildname +; utilsrc/apple/cat.pla: 0143: fin + !BYTE $68 ; LAB _D074+0 +_F057 !WORD _D074+0 + !BYTE $68 ; LAB _D075+0 +_F058 !WORD _D075+0 + !BYTE $84 ; SUB + !BYTE $78 ; SAB _D074+0 +_F059 !WORD _D074+0 +_B046 +_B047 +; utilsrc/apple/cat.pla: 0144: if not path +; utilsrc/apple/cat.pla: 0145: fileio:getpfx(@path) +; utilsrc/apple/cat.pla: 0146: fin + !BYTE $68 ; LAB _D074+0 +_F060 !WORD _D074+0 + !BYTE $4E ; BRTRU _B051 + !WORD _B051-* + !BYTE $26 ; LA _D074+0 +_F061 !WORD _D074+0 + !BYTE $6A ; LAW _X039+0 +_F062 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B051 +_B052 +; utilsrc/apple/cat.pla: 0147: // +; utilsrc/apple/cat.pla: 0148: // Check if directory exists +; utilsrc/apple/cat.pla: 0149: // +; utilsrc/apple/cat.pla: 0150: if fileio:getfileinfo(@path, @fileinfo) == FILE_ERR_OK +; utilsrc/apple/cat.pla: 0151: catalog(@path) +; utilsrc/apple/cat.pla: 0152: else + !BYTE $26 ; LA _D074+0 +_F063 !WORD _D074+0 + !BYTE $26 ; LA _D076+0 +_F064 !WORD _D076+0 + !BYTE $6A ; LAW _X039+4 +_F065 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B053 + !WORD _B053-* + !BYTE $26 ; LA _D074+0 +_F066 !WORD _D074+0 + !BYTE $54 ; CALL _C003 +_F067 !WORD _C003 + !BYTE $50 ; BRNCH _B054 + !WORD _B054-* +_B053 +; utilsrc/apple/cat.pla: 0153: puts("Unable to open: "); puts(@path); putln + !BYTE $2E ; CS + !BYTE $10 + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$6F,$70,$65,$6E,$3A,$20 + !BYTE $54 ; CALL _X004 +_F068 !WORD 0 +; utilsrc/apple/cat.pla: 0154: fin + !BYTE $26 ; LA _D074+0 +_F069 !WORD _D074+0 + !BYTE $54 ; CALL _X004 +_F070 !WORD 0 + !BYTE $54 ; CALL _X003 +_F071 !WORD 0 +_B054 +; utilsrc/apple/cat.pla: 0155: fin +_B038 +_B039 +; utilsrc/apple/cat.pla: 0156: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 5 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 68 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 36 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: EXCEPT + !BYTE $C5,$D8,$C3,$C5,$D0,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: THROW + !BYTE $D4,$C8,$D2,$CF,$57 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: MATCHLIST + !BYTE $CD,$C1,$D4,$C3,$C8,$CC,$C9,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 36 ; ESD INDEX + ; DCI STRING: FILEFROMPATH + !BYTE $C6,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D0,$C1,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 39 ; ESD INDEX + ; DCI STRING: I32TOS + !BYTE $C9,$B3,$B2,$D4,$CF,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 68 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/copy.a b/src/utilsrc/apple/copy.a new file mode 100644 index 0000000..6aa78b5 --- /dev/null +++ b/src/utilsrc/apple/copy.a @@ -0,0 +1,2341 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/copy.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/copy.pla: 0001: +; utilsrc/apple/copy.pla: 0002: include "inc/longjmp.plh" +; inc/longjmp.plh: 0001: import longjmp + ; DCI STRING: LONGJMP + !BYTE $CC,$CF,$CE,$C7,$CA,$CD,$50 + ; LONGJMP -> X028 +; inc/longjmp.plh: 0002: const t_except = $0140 + ; t_except = 320 +; inc/longjmp.plh: 0003: predef except(env), throw(env, retval) + ; EXCEPT -> X029 + ; THROW -> X030 +; inc/longjmp.plh: 0004: end +; utilsrc/apple/copy.pla: 0002: +; utilsrc/apple/copy.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X031 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X032 + ; ARGNEXT -> X033 +; inc/args.plh: 0003: end +; utilsrc/apple/copy.pla: 0003: +; utilsrc/apple/copy.pla: 0004: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X034 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X035 +; inc/fileio.plh: 0080: end +; utilsrc/apple/copy.pla: 0004: +; utilsrc/apple/copy.pla: 0005: include "inc/matchfiles.plh" +; inc/matchfiles.plh: 0001: import matchfiles + ; DCI STRING: MATCHFILES + !BYTE $CD,$C1,$D4,$C3,$C8,$C6,$C9,$CC,$C5,$53 + ; MATCHFILES -> X036 +; inc/matchfiles.plh: 0002: predef matchName(src, exp)#1 + ; MATCHNAME -> X037 +; inc/matchfiles.plh: 0003: predef matchList(pathptr, exp)#2 + ; MATCHLIST -> X038 +; inc/matchfiles.plh: 0004: predef isWildName(exp)#1 + ; ISWILDNAME -> X039 +; inc/matchfiles.plh: 0005: predef fileFromPath(filestr, pathstr)#0 + ; FILEFROMPATH -> X040 +; inc/matchfiles.plh: 0006: end +; utilsrc/apple/copy.pla: 0005: +; utilsrc/apple/copy.pla: 0006: +; utilsrc/apple/copy.pla: 0007: const MAXBUFSIZE = 16384 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; MAXBUFSIZE = 16384 +; utilsrc/apple/copy.pla: 0008: var arg, exit, srcfilelist, srcfileptr, srccnt +_D041 !FILL 2 ; arg, exit, srcfilelist, srcfileptr, srccnt +_D042 !FILL 2 ; exit, srcfilelist, srcfileptr, srccnt +_D043 !FILL 2 ; srcfilelist, srcfileptr, srccnt +_D044 !FILL 2 ; srcfileptr, srccnt +_D045 !FILL 2 ; srccnt +; utilsrc/apple/copy.pla: 0009: var copybuff, copyrel, copysize +_D046 !FILL 2 ; copybuff, copyrel, copysize +_D047 !FILL 2 ; copyrel, copysize +_D048 !FILL 2 ; copysize +; utilsrc/apple/copy.pla: 0010: byte recurse, dstlen +_D049 !FILL 1 ; recurse, dstlen +_D050 !FILL 1 ; dstlen +; utilsrc/apple/copy.pla: 0011: char[64] curpath, dstpath +_D051 !FILL 64 ; curpath, dstpath +_D052 !FILL 64 ; dstpath +; utilsrc/apple/copy.pla: 0012: char[16] srcdir +_D053 !FILL 16 ; srcdir +; utilsrc/apple/copy.pla: 0013: res[t_fileinfo] srcfileinfo, dstfileinfo +_D054 !FILL 15 ; srcfileinfo, dstfileinfo +_D055 !FILL 15 ; dstfileinfo +; utilsrc/apple/copy.pla: 0014: // +; utilsrc/apple/copy.pla: 0015: // Copy path with upper case conversion +; utilsrc/apple/copy.pla: 0016: // +; utilsrc/apple/copy.pla: 0017: def pathcpy(dst, src)#0 +_SUBSEG ; BYTECODE STARTS + ; dst -> [0] + ; src -> [2] +_C000 ; pathcpy() +; utilsrc/apple/copy.pla: 0018: byte i, chr + ; i -> [4] + ; chr -> [5] +; utilsrc/apple/copy.pla: 0019: +; utilsrc/apple/copy.pla: 0020: if ^src + !BYTE $58,$06,$02 ; ENTER 6,2 +; utilsrc/apple/copy.pla: 0021: for i = 1 to ^src + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B003 + !WORD _B003-* +_B004 + !BYTE $6C,$04 ; DLB [4] +; utilsrc/apple/copy.pla: 0022: chr = src->[i] +; utilsrc/apple/copy.pla: 0023: if chr >= 'a' and chr <= 'z' +; utilsrc/apple/copy.pla: 0024: dst->[i] = chr - 'a' + 'A' +; utilsrc/apple/copy.pla: 0025: else + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $2A,$61 ; CB 97 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B006 + !WORD _B006-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$7A ; CB 122 + !BYTE $4A ; ISLE +_B006 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$05 ; LLB [5] + !BYTE $3A,$61 ; SUBI 97 + !BYTE $38,$41 ; ADDI 65 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; utilsrc/apple/copy.pla: 0026: dst->[i] = chr +; utilsrc/apple/copy.pla: 0027: fin + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B008 +; utilsrc/apple/copy.pla: 0028: next +_B005 + !BYTE $A4 ; INCBRLE _B004 + !WORD _B004-* +_B003 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; utilsrc/apple/copy.pla: 0029: fin +_B001 +_B002 +; utilsrc/apple/copy.pla: 0030: ^dst = ^src +; utilsrc/apple/copy.pla: 0031: end + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$06 ; LEAVE 6 +; utilsrc/apple/copy.pla: 0032: def abspath(abs, path)#0 + ; abs -> [0] + ; path -> [2] +_C001 ; abspath() +; utilsrc/apple/copy.pla: 0033: if ^path == 0 or path->[1] <> '/' + !BYTE $58,$04,$02 ; ENTER 4,2 +; utilsrc/apple/copy.pla: 0034: // +; utilsrc/apple/copy.pla: 0035: // Append relative path to absolute path +; utilsrc/apple/copy.pla: 0036: // +; utilsrc/apple/copy.pla: 0037: strcpy(abs, @curpath) +; utilsrc/apple/copy.pla: 0038: else + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B009 + !WORD _B009-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $42 ; ISNE +_B009 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D051+0 +_F000 !WORD _D051+0 + !BYTE $54 ; CALL _X019 +_F001 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B010 +; utilsrc/apple/copy.pla: 0039: // +; utilsrc/apple/copy.pla: 0040: // Absolute path +; utilsrc/apple/copy.pla: 0041: // +; utilsrc/apple/copy.pla: 0042: ^abs = 0 +; utilsrc/apple/copy.pla: 0043: fin + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B011 +; utilsrc/apple/copy.pla: 0044: strcat(abs, path) +; utilsrc/apple/copy.pla: 0045: // +; utilsrc/apple/copy.pla: 0046: // Strip trailing path seperator +; utilsrc/apple/copy.pla: 0047: // +; utilsrc/apple/copy.pla: 0048: if abs->[^abs] == '/' +; utilsrc/apple/copy.pla: 0049: ^abs-- + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X020 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B012 + !WORD _B012-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; utilsrc/apple/copy.pla: 0050: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B012 +_B013 +; utilsrc/apple/copy.pla: 0051: end + !BYTE $5A,$04 ; LEAVE 4 +; utilsrc/apple/copy.pla: 0052: def pathdiff(path1, path2)#1 + ; path1 -> [0] + ; path2 -> [2] +_C002 ; pathdiff() +; utilsrc/apple/copy.pla: 0053: byte i, d + ; i -> [4] + ; d -> [5] +; utilsrc/apple/copy.pla: 0054: char[64] abs1, abs2 + ; abs1 -> [6] + ; abs2 -> [70] +; utilsrc/apple/copy.pla: 0055: +; utilsrc/apple/copy.pla: 0056: abspath(@abs1, path1) + !BYTE $58,$86,$02 ; ENTER 134,2 +; utilsrc/apple/copy.pla: 0057: abspath(@abs2, path2) +; utilsrc/apple/copy.pla: 0058: +; utilsrc/apple/copy.pla: 0059: if abs1 <> abs2 +; utilsrc/apple/copy.pla: 0060: return TRUE + !BYTE $28,$06 ; LLA [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C001 +_F003 !WORD _C001 + !BYTE $28,$46 ; LLA [70] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F004 !WORD _C001 + !BYTE $64,$06 ; LLB [6] + !BYTE $64,$46 ; LLB [70] + !BYTE $22 ; BREQ _B014 + !WORD _B014-* + !BYTE $20 ; MINUS ONE + !BYTE $5A,$86 ; LEAVE 134 +; utilsrc/apple/copy.pla: 0061: fin +_B014 +_B015 +; utilsrc/apple/copy.pla: 0062: for i = 1 to abs1 + !BYTE $64,$06 ; LLB [6] + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B016 + !WORD _B016-* +_B017 + !BYTE $6C,$04 ; DLB [4] +; utilsrc/apple/copy.pla: 0063: d = abs1[i] - abs2[i] +; utilsrc/apple/copy.pla: 0064: if d +; utilsrc/apple/copy.pla: 0065: return d + !BYTE $28,$06 ; LLA [6] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $28,$46 ; LLA [70] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $84 ; SUB + !BYTE $6C,$05 ; DLB [5] + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $32 ; DROP2 + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$86 ; LEAVE 134 +; utilsrc/apple/copy.pla: 0066: fin +_B019 +_B020 +; utilsrc/apple/copy.pla: 0067: next +_B018 + !BYTE $A4 ; INCBRLE _B017 + !WORD _B017-* +_B016 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; utilsrc/apple/copy.pla: 0068: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$86 ; LEAVE 134 +; utilsrc/apple/copy.pla: 0069: end +; utilsrc/apple/copy.pla: 0070: // +; utilsrc/apple/copy.pla: 0071: // Check destination path +; utilsrc/apple/copy.pla: 0072: // +; utilsrc/apple/copy.pla: 0073: def chkdstpath(dstfile) + ; dstfile -> [0] +_C003 ; chkdstpath() +; utilsrc/apple/copy.pla: 0074: // +; utilsrc/apple/copy.pla: 0075: // Check if destination exists +; utilsrc/apple/copy.pla: 0076: // +; utilsrc/apple/copy.pla: 0077: if fileio:getfileinfo(dstfile, @dstfileinfo) == FILE_ERR_OK + !BYTE $58,$02,$01 ; ENTER 2,1 +; utilsrc/apple/copy.pla: 0078: // +; utilsrc/apple/copy.pla: 0079: // Check if copying into a directory +; utilsrc/apple/copy.pla: 0080: // +; utilsrc/apple/copy.pla: 0081: if dstfileinfo.storage_type & $0D == $0D +; utilsrc/apple/copy.pla: 0082: if dstfile->[^dstfile] <> '/' +; utilsrc/apple/copy.pla: 0083: // +; utilsrc/apple/copy.pla: 0084: // Add path seperator +; utilsrc/apple/copy.pla: 0085: // +; utilsrc/apple/copy.pla: 0086: ^dstfile++ + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D055+0 +_F005 !WORD _D055+0 + !BYTE $6A ; LAW _X034+4 +_F006 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* + !BYTE $68 ; LAB _D055+4 +_F007 !WORD _D055+4 + !BYTE $3C,$0D ; ANDI 13 + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B023 + !WORD _B023-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B025 + !WORD _B025-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR +; utilsrc/apple/copy.pla: 0087: dstfile->[^dstfile] = '/' +; utilsrc/apple/copy.pla: 0088: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $2A,$2F ; CB 47 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $70 ; SB +_B025 +_B026 +; utilsrc/apple/copy.pla: 0089: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$02 ; LEAVE 2 +; utilsrc/apple/copy.pla: 0090: fin +_B023 +_B024 +; utilsrc/apple/copy.pla: 0091: fin +_B021 +_B022 +; utilsrc/apple/copy.pla: 0092: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$02 ; LEAVE 2 +; utilsrc/apple/copy.pla: 0093: end +; utilsrc/apple/copy.pla: 0094: def copyfiles(srcfile, dstfile)#0 + ; srcfile -> [0] + ; dstfile -> [2] +_C004 ; copyfiles() +; utilsrc/apple/copy.pla: 0095: var entrylist, entry, entrycnt, srcref, dstref, copyxfer + ; entrylist -> [4] + ; entry -> [6] + ; entrycnt -> [8] + ; srcref -> [10] + ; dstref -> [12] + ; copyxfer -> [14] +; utilsrc/apple/copy.pla: 0096: char[64] srcpath + ; srcpath -> [16] +; utilsrc/apple/copy.pla: 0097: char[64] srcfilepath + ; srcfilepath -> [80] +; utilsrc/apple/copy.pla: 0098: char[64] dstfilepath + ; dstfilepath -> [144] +; utilsrc/apple/copy.pla: 0099: char[16] wildname + ; wildname -> [208] +; utilsrc/apple/copy.pla: 0100: +; utilsrc/apple/copy.pla: 0101: // +; utilsrc/apple/copy.pla: 0102: // Check if copying a directory +; utilsrc/apple/copy.pla: 0103: // +; utilsrc/apple/copy.pla: 0104: strcpy(@srcpath, srcfile) + !BYTE $58,$E0,$02 ; ENTER 224,2 +; utilsrc/apple/copy.pla: 0105: wildname = 0 +; utilsrc/apple/copy.pla: 0106: if fileio:getfileinfo(@srcpath, @srcfileinfo) <> FILE_ERR_OK or (srcfileinfo.storage_type & $0D <> $0D) +; utilsrc/apple/copy.pla: 0107: fileFromPath(@wildname, @srcpath) +; utilsrc/apple/copy.pla: 0108: srcpath = srcpath - wildname +; utilsrc/apple/copy.pla: 0109: fin + !BYTE $28,$10 ; LLA [16] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X019 +_F008 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$D0 ; SLB [208] + !BYTE $28,$10 ; LLA [16] + !BYTE $26 ; LA _D054+0 +_F009 !WORD _D054+0 + !BYTE $6A ; LAW _X034+4 +_F010 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $AE ; BROR _B027 + !WORD _B027-* + !BYTE $68 ; LAB _D054+4 +_F011 !WORD _D054+4 + !BYTE $3C,$0D ; ANDI 13 + !BYTE $1A ; CN 13 + !BYTE $42 ; ISNE +_B027 + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $28,$D0 ; LLA [208] + !BYTE $28,$10 ; LLA [16] + !BYTE $54 ; CALL _X040 +_F012 !WORD 0 + !BYTE $64,$10 ; LLB [16] + !BYTE $64,$D0 ; LLB [208] + !BYTE $84 ; SUB + !BYTE $74,$10 ; SLB [16] +_B028 +_B029 +; utilsrc/apple/copy.pla: 0110: entrylist, entrycnt = matchList(@srcpath, @wildname) +; utilsrc/apple/copy.pla: 0111: if not entrylist +; utilsrc/apple/copy.pla: 0112: puts(srcfile); puts(" ???\n") + !BYTE $28,$10 ; LLA [16] + !BYTE $28,$D0 ; LLA [208] + !BYTE $54 ; CALL _X038 +_F013 !WORD 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $6E,$04 ; DLW [4] + !BYTE $4E ; BRTRU _B030 + !WORD _B030-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3F,$3F,$3F,$0D + !BYTE $54 ; CALL _X004 +_F015 !WORD 0 +; utilsrc/apple/copy.pla: 0113: else + !BYTE $50 ; BRNCH _B031 + !WORD _B031-* +_B030 +; utilsrc/apple/copy.pla: 0114: entry = entrylist +; utilsrc/apple/copy.pla: 0115: while entrycnt + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$06 ; SLW [6] + !BYTE $50 ; BRNCH _B034 + !WORD _B034-* +_B032 +; utilsrc/apple/copy.pla: 0116: strcpy(@srcfilepath, @srcpath) +; utilsrc/apple/copy.pla: 0117: strcat(@srcfilepath, entry) +; utilsrc/apple/copy.pla: 0118: strcpy(@dstfilepath, dstfile) +; utilsrc/apple/copy.pla: 0119: if chkdstpath(@dstfilepath) +; utilsrc/apple/copy.pla: 0120: strcat(@dstfilepath, entry) +; utilsrc/apple/copy.pla: 0121: fin + !BYTE $28,$50 ; LLA [80] + !BYTE $28,$10 ; LLA [16] + !BYTE $54 ; CALL _X019 +_F016 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$50 ; LLA [80] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X020 +_F017 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$90 ; LLA [144] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _X019 +_F018 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _C003 +_F019 !WORD _C003 + !BYTE $4C ; BRFLS _B035 + !WORD _B035-* + !BYTE $28,$90 ; LLA [144] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _X020 +_F020 !WORD 0 + !BYTE $30 ; DROP +_B035 +_B036 +; utilsrc/apple/copy.pla: 0122: if entry->entry_type == $0F +; utilsrc/apple/copy.pla: 0123: // +; utilsrc/apple/copy.pla: 0124: // Source is a directory and not referencing the destination +; utilsrc/apple/copy.pla: 0125: // +; utilsrc/apple/copy.pla: 0126: if pathdiff(@srcfilepath, dstfile) +; utilsrc/apple/copy.pla: 0127: fileio:create(@dstfilepath, $0F, $0000) +; utilsrc/apple/copy.pla: 0128: if not chkdstpath(@dstfilepath) +; utilsrc/apple/copy.pla: 0129: puts("Unable to create directory: "); puts(@dstfilepath); putln + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B037 + !WORD _B037-* + !BYTE $28,$50 ; LLA [80] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C002 +_F021 !WORD _C002 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $28,$90 ; LLA [144] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X034+22 +_F022 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _C003 +_F023 !WORD _C003 + !BYTE $4E ; BRTRU _B041 + !WORD _B041-* + !BYTE $2E ; CS + !BYTE $1C + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$63,$72,$65,$61,$74,$65 + !BYTE $20,$64,$69,$72,$65,$63,$74,$6F + !BYTE $72,$79,$3A,$20 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +; utilsrc/apple/copy.pla: 0130: throw(exit, TRUE) +; utilsrc/apple/copy.pla: 0131: fin + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _X004 +_F025 !WORD 0 + !BYTE $54 ; CALL _X003 +_F026 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F027 !WORD _D042+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F028 !WORD 0 + !BYTE $30 ; DROP +_B041 +_B042 +; utilsrc/apple/copy.pla: 0132: if recurse +; utilsrc/apple/copy.pla: 0133: copyfiles(@srcfilepath, @dstfilepath) +; utilsrc/apple/copy.pla: 0134: fin + !BYTE $68 ; LAB _D049+0 +_F029 !WORD _D049+0 + !BYTE $4C ; BRFLS _B043 + !WORD _B043-* + !BYTE $28,$50 ; LLA [80] + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _C004 +_F030 !WORD _C004 +_B043 +_B044 +; utilsrc/apple/copy.pla: 0135: fin +_B039 +_B040 +; utilsrc/apple/copy.pla: 0136: else + !BYTE $50 ; BRNCH _B038 + !WORD _B038-* +_B037 +; utilsrc/apple/copy.pla: 0137: puts(@srcfilepath) +; utilsrc/apple/copy.pla: 0138: // +; utilsrc/apple/copy.pla: 0139: // Check if destination file exists +; utilsrc/apple/copy.pla: 0140: // +; utilsrc/apple/copy.pla: 0141: if fileio:getfileinfo(@dstfilepath, @dstfileinfo) == FILE_ERR_OK +; utilsrc/apple/copy.pla: 0142: fileio:destroy(@dstfilepath) +; utilsrc/apple/copy.pla: 0143: fin + !BYTE $28,$50 ; LLA [80] + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 + !BYTE $28,$90 ; LLA [144] + !BYTE $26 ; LA _D055+0 +_F032 !WORD _D055+0 + !BYTE $6A ; LAW _X034+4 +_F033 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B045 + !WORD _B045-* + !BYTE $28,$90 ; LLA [144] + !BYTE $6A ; LAW _X034+24 +_F034 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B045 +_B046 +; utilsrc/apple/copy.pla: 0144: // +; utilsrc/apple/copy.pla: 0145: // Create the destination file and open for writing +; utilsrc/apple/copy.pla: 0146: // +; utilsrc/apple/copy.pla: 0147: if fileio:create(@dstfilepath, entry->entry_type, entry=>entry_aux) <> FILE_ERR_OK +; utilsrc/apple/copy.pla: 0148: puts("\nUnable to create file: "); puts(@dstfilepath); putln + !BYTE $28,$90 ; LLA [144] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$1F ; ADDI 31 + !BYTE $62 ; LW + !BYTE $6A ; LAW _X034+22 +_F035 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B047 + !WORD _B047-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $0D,$55,$6E,$61,$62,$6C,$65,$20 + !BYTE $74,$6F,$20,$63,$72,$65,$61,$74 + !BYTE $65,$20,$66,$69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 +; utilsrc/apple/copy.pla: 0149: throw(exit, TRUE) +; utilsrc/apple/copy.pla: 0150: fin + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 + !BYTE $54 ; CALL _X003 +_F038 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F039 !WORD _D042+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F040 !WORD 0 + !BYTE $30 ; DROP +_B047 +_B048 +; utilsrc/apple/copy.pla: 0151: srcref = fileio:open(@srcfilepath) +; utilsrc/apple/copy.pla: 0152: if not srcref +; utilsrc/apple/copy.pla: 0153: puts("\nUnable to open file: "); puts(@srcfilepath); putln + !BYTE $28,$50 ; LLA [80] + !BYTE $6A ; LAW _X034+14 +_F041 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6E,$0A ; DLW [10] + !BYTE $4E ; BRTRU _B049 + !WORD _B049-* + !BYTE $2E ; CS + !BYTE $16 + !BYTE $0D,$55,$6E,$61,$62,$6C,$65,$20 + !BYTE $74,$6F,$20,$6F,$70,$65,$6E,$20 + !BYTE $66,$69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F042 !WORD 0 +; utilsrc/apple/copy.pla: 0154: throw(exit, TRUE) +; utilsrc/apple/copy.pla: 0155: fin + !BYTE $28,$50 ; LLA [80] + !BYTE $54 ; CALL _X004 +_F043 !WORD 0 + !BYTE $54 ; CALL _X003 +_F044 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F045 !WORD _D042+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F046 !WORD 0 + !BYTE $30 ; DROP +_B049 +_B050 +; utilsrc/apple/copy.pla: 0156: dstref = fileio:open(@dstfilepath) +; utilsrc/apple/copy.pla: 0157: if not dstref +; utilsrc/apple/copy.pla: 0158: puts("\nUnable to open file: "); puts(@dstfilepath); putln + !BYTE $28,$90 ; LLA [144] + !BYTE $6A ; LAW _X034+14 +_F047 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6E,$0C ; DLW [12] + !BYTE $4E ; BRTRU _B051 + !WORD _B051-* + !BYTE $2E ; CS + !BYTE $16 + !BYTE $0D,$55,$6E,$61,$62,$6C,$65,$20 + !BYTE $74,$6F,$20,$6F,$70,$65,$6E,$20 + !BYTE $66,$69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 +; utilsrc/apple/copy.pla: 0159: throw(exit, TRUE) +; utilsrc/apple/copy.pla: 0160: fin + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _X004 +_F049 !WORD 0 + !BYTE $54 ; CALL _X003 +_F050 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F051 !WORD _D042+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F052 !WORD 0 + !BYTE $30 ; DROP +_B051 +_B052 +; utilsrc/apple/copy.pla: 0161: // +; utilsrc/apple/copy.pla: 0162: // Let the copying begin +; utilsrc/apple/copy.pla: 0163: // +; utilsrc/apple/copy.pla: 0164: repeat +_B054 +; utilsrc/apple/copy.pla: 0165: copyxfer = fileio:read(srcref, copybuff, copysize) +; utilsrc/apple/copy.pla: 0166: if copyxfer +; utilsrc/apple/copy.pla: 0167: if fileio:write(dstref, copybuff, copyxfer) <> copyxfer +; utilsrc/apple/copy.pla: 0168: puts("\nError writing: "); puts(@dstfilepath); putln + !BYTE $66,$0A ; LLW [10] + !BYTE $6A ; LAW _D046+0 +_F053 !WORD _D046+0 + !BYTE $6A ; LAW _D048+0 +_F054 !WORD _D048+0 + !BYTE $6A ; LAW _X034+18 +_F055 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $6E,$0E ; DLW [14] + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $66,$0C ; LLW [12] + !BYTE $6A ; LAW _D046+0 +_F056 !WORD _D046+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $6A ; LAW _X034+20 +_F057 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $66,$0E ; LLW [14] + !BYTE $22 ; BREQ _B058 + !WORD _B058-* + !BYTE $2E ; CS + !BYTE $10 + !BYTE $0D,$45,$72,$72,$6F,$72,$20,$77 + !BYTE $72,$69,$74,$69,$6E,$67,$3A,$20 + !BYTE $54 ; CALL _X004 +_F058 !WORD 0 +; utilsrc/apple/copy.pla: 0169: throw(exit, TRUE) +; utilsrc/apple/copy.pla: 0170: fin + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _X004 +_F059 !WORD 0 + !BYTE $54 ; CALL _X003 +_F060 !WORD 0 + !BYTE $6A ; LAW _D042+0 +_F061 !WORD _D042+0 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _X030 +_F062 !WORD 0 + !BYTE $30 ; DROP +_B058 +_B059 +; utilsrc/apple/copy.pla: 0171: fin +_B056 +_B057 +; utilsrc/apple/copy.pla: 0172: until copyxfer == 0 +_B055 + !BYTE $66,$0E ; LLW [14] + !BYTE $4E ; BRTRU _B054 + !WORD _B054-* +_B053 +; utilsrc/apple/copy.pla: 0173: fileio:close(dstref) +; utilsrc/apple/copy.pla: 0174: fileio:close(srcref) +; utilsrc/apple/copy.pla: 0175: puts(" ==> "); puts(@dstfilepath); putln + !BYTE $66,$0C ; LLW [12] + !BYTE $6A ; LAW _X034+16 +_F063 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$0A ; LLW [10] + !BYTE $6A ; LAW _X034+16 +_F064 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3D,$3D,$3E,$20 + !BYTE $54 ; CALL _X004 +_F065 !WORD 0 +; utilsrc/apple/copy.pla: 0176: fin + !BYTE $28,$90 ; LLA [144] + !BYTE $54 ; CALL _X004 +_F066 !WORD 0 + !BYTE $54 ; CALL _X003 +_F067 !WORD 0 +_B038 +; utilsrc/apple/copy.pla: 0177: entry = entry + t_fileentry +; utilsrc/apple/copy.pla: 0178: entrycnt-- + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$27 ; ADDI 39 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $8E ; DECR +; utilsrc/apple/copy.pla: 0179: loop + !BYTE $76,$08 ; SLW [8] +_B034 + !BYTE $66,$08 ; LLW [8] + !BYTE $4E ; BRTRU _B032 + !WORD _B032-* +_B033 +; utilsrc/apple/copy.pla: 0180: heaprelease(entrylist) +; utilsrc/apple/copy.pla: 0181: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X015 +_F068 !WORD 0 + !BYTE $30 ; DROP +_B031 +; utilsrc/apple/copy.pla: 0182: end + !BYTE $5A,$E0 ; LEAVE 224 +; utilsrc/apple/copy.pla: 0183: // +; utilsrc/apple/copy.pla: 0184: // Install error exit +; utilsrc/apple/copy.pla: 0185: // +; utilsrc/apple/copy.pla: 0186: exit = heapalloc(t_except) +_INIT +; utilsrc/apple/copy.pla: 0187: if not except(exit) +; utilsrc/apple/copy.pla: 0188: fileio:getpfx(@curpath) +; utilsrc/apple/copy.pla: 0189: // +; utilsrc/apple/copy.pla: 0190: // Check arguments and file types +; utilsrc/apple/copy.pla: 0191: // +; utilsrc/apple/copy.pla: 0192: arg = argNext(argFirst) +; utilsrc/apple/copy.pla: 0193: if ^arg and arg->[1] == '-' +; utilsrc/apple/copy.pla: 0194: if ^arg > 1 and toupper(arg->[2]) == 'R' +; utilsrc/apple/copy.pla: 0195: recurse = TRUE +; utilsrc/apple/copy.pla: 0196: fin + !BYTE $2C,$40,$01 ; CW 320 + !BYTE $54 ; CALL _X014 +_F069 !WORD 0 + !BYTE $7E ; DAW _D042+0 +_F070 !WORD _D042+0 + !BYTE $54 ; CALL _X029 +_F071 !WORD 0 + !BYTE $4E ; BRTRU _B060 + !WORD _B060-* + !BYTE $26 ; LA _D051+0 +_F072 !WORD _D051+0 + !BYTE $6A ; LAW _X034+0 +_F073 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X032 +_F074 !WORD 0 + !BYTE $54 ; CALL _X033 +_F075 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F076 !WORD _D041+0 + !BYTE $6A ; LAW _D041+0 +_F077 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B062 + !WORD _B062-* + !BYTE $6A ; LAW _D041+0 +_F078 !WORD _D041+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $40 ; ISEQ +_B062 + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $6A ; LAW _D041+0 +_F079 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B065 + !WORD _B065-* + !BYTE $6A ; LAW _D041+0 +_F080 !WORD _D041+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F081 !WORD 0 + !BYTE $2A,$52 ; CB 82 + !BYTE $40 ; ISEQ +_B065 + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $20 ; MINUS ONE + !BYTE $78 ; SAB _D049+0 +_F082 !WORD _D049+0 +_B066 +_B067 +; utilsrc/apple/copy.pla: 0197: arg = argNext(arg) +; utilsrc/apple/copy.pla: 0198: fin + !BYTE $6A ; LAW _D041+0 +_F083 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F084 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F085 !WORD _D041+0 +_B063 +_B064 +; utilsrc/apple/copy.pla: 0199: if ^arg +; utilsrc/apple/copy.pla: 0200: srcfilelist = heapalloc(^arg + 1) +; utilsrc/apple/copy.pla: 0201: pathcpy(srcfilelist, arg) +; utilsrc/apple/copy.pla: 0202: srccnt++ + !BYTE $6A ; LAW _D041+0 +_F086 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $6A ; LAW _D041+0 +_F087 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X014 +_F088 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F089 !WORD _D043+0 + !BYTE $6A ; LAW _D041+0 +_F090 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F091 !WORD _C000 + !BYTE $6A ; LAW _D045+0 +_F092 !WORD _D045+0 + !BYTE $8C ; INCR +; utilsrc/apple/copy.pla: 0203: arg = argNext(arg) +; utilsrc/apple/copy.pla: 0204: if ^arg +; utilsrc/apple/copy.pla: 0205: pathcpy(@dstpath, arg) +; utilsrc/apple/copy.pla: 0206: arg = argNext(arg) +; utilsrc/apple/copy.pla: 0207: while ^arg + !BYTE $7A ; SAW _D045+0 +_F093 !WORD _D045+0 + !BYTE $6A ; LAW _D041+0 +_F094 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F095 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F096 !WORD _D041+0 + !BYTE $6A ; LAW _D041+0 +_F097 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B070 + !WORD _B070-* + !BYTE $26 ; LA _D052+0 +_F098 !WORD _D052+0 + !BYTE $6A ; LAW _D041+0 +_F099 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F100 !WORD _C000 + !BYTE $6A ; LAW _D041+0 +_F101 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F102 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F103 !WORD _D041+0 + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B072 +; utilsrc/apple/copy.pla: 0208: // +; utilsrc/apple/copy.pla: 0209: // Add to source list +; utilsrc/apple/copy.pla: 0210: // +; utilsrc/apple/copy.pla: 0211: srcfileptr = heapalloc(dstpath + 1) +; utilsrc/apple/copy.pla: 0212: strcpy(srcfileptr, @dstpath) +; utilsrc/apple/copy.pla: 0213: srccnt++ + !BYTE $68 ; LAB _D052+0 +_F104 !WORD _D052+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X014 +_F105 !WORD 0 + !BYTE $7E ; DAW _D044+0 +_F106 !WORD _D044+0 + !BYTE $26 ; LA _D052+0 +_F107 !WORD _D052+0 + !BYTE $54 ; CALL _X019 +_F108 !WORD 0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D045+0 +_F109 !WORD _D045+0 + !BYTE $8C ; INCR +; utilsrc/apple/copy.pla: 0214: // +; utilsrc/apple/copy.pla: 0215: // Set new destination +; utilsrc/apple/copy.pla: 0216: // +; utilsrc/apple/copy.pla: 0217: pathcpy(@dstpath, arg) +; utilsrc/apple/copy.pla: 0218: arg = argNext(arg) +; utilsrc/apple/copy.pla: 0219: loop + !BYTE $7A ; SAW _D045+0 +_F110 !WORD _D045+0 + !BYTE $26 ; LA _D052+0 +_F111 !WORD _D052+0 + !BYTE $6A ; LAW _D041+0 +_F112 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F113 !WORD _C000 + !BYTE $6A ; LAW _D041+0 +_F114 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F115 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F116 !WORD _D041+0 +_B074 + !BYTE $6A ; LAW _D041+0 +_F117 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B072 + !WORD _B072-* +_B073 +; utilsrc/apple/copy.pla: 0220: if dstpath[0] == 1 and dstpath[1] == '=' +; utilsrc/apple/copy.pla: 0221: fileio:getpfx(@dstpath) +; utilsrc/apple/copy.pla: 0222: fin + !BYTE $68 ; LAB _D052+0 +_F118 !WORD _D052+0 + !BYTE $02 ; CN 1 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B075 + !WORD _B075-* + !BYTE $68 ; LAB _D052+1 +_F119 !WORD _D052+1 + !BYTE $2A,$3D ; CB 61 + !BYTE $40 ; ISEQ +_B075 + !BYTE $4C ; BRFLS _B076 + !WORD _B076-* + !BYTE $26 ; LA _D052+0 +_F120 !WORD _D052+0 + !BYTE $6A ; LAW _X034+0 +_F121 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B076 +_B077 +; utilsrc/apple/copy.pla: 0223: if not chkdstpath(@dstpath) and (srccnt > 1 or isWildName(srcfilelist)) +; utilsrc/apple/copy.pla: 0224: puts("Destination must be a directory: "); puts(@dstpath); putln + !BYTE $26 ; LA _D052+0 +_F122 !WORD _D052+0 + !BYTE $54 ; CALL _C003 +_F123 !WORD _C003 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B078 + !WORD _B078-* + !BYTE $6A ; LAW _D045+0 +_F124 !WORD _D045+0 + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B079 + !WORD _B079-* + !BYTE $6A ; LAW _D043+0 +_F125 !WORD _D043+0 + !BYTE $54 ; CALL _X039 +_F126 !WORD 0 +_B079 +_B078 + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $2E ; CS + !BYTE $21 + !BYTE $44,$65,$73,$74,$69,$6E,$61,$74 + !BYTE $69,$6F,$6E,$20,$6D,$75,$73,$74 + !BYTE $20,$62,$65,$20,$61,$20,$64,$69 + !BYTE $72,$65,$63,$74,$6F,$72,$79,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F127 !WORD 0 +; utilsrc/apple/copy.pla: 0225: return + !BYTE $26 ; LA _D052+0 +_F128 !WORD _D052+0 + !BYTE $54 ; CALL _X004 +_F129 !WORD 0 + !BYTE $54 ; CALL _X003 +_F130 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/copy.pla: 0226: fin +_B080 +_B081 +; utilsrc/apple/copy.pla: 0227: fileio:iobufalloc(2) // Reserve two I/O buffers +; utilsrc/apple/copy.pla: 0228: copysize = MAXBUFSIZE +; utilsrc/apple/copy.pla: 0229: while isult(heapavail, copysize + 512) + !BYTE $04 ; CN 2 + !BYTE $6A ; LAW _X034+12 +_F131 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $7A ; SAW _D048+0 +_F132 !WORD _D048+0 + !BYTE $50 ; BRNCH _B084 + !WORD _B084-* +_B082 +; utilsrc/apple/copy.pla: 0230: copysize = copysize / 2 +; utilsrc/apple/copy.pla: 0231: loop + !BYTE $6A ; LAW _D048+0 +_F133 !WORD _D048+0 + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $7A ; SAW _D048+0 +_F134 !WORD _D048+0 +_B084 + !BYTE $54 ; CALL _X016 +_F135 !WORD 0 + !BYTE $6A ; LAW _D048+0 +_F136 !WORD _D048+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X026 +_F137 !WORD 0 + !BYTE $4E ; BRTRU _B082 + !WORD _B082-* +_B083 +; utilsrc/apple/copy.pla: 0232: copyrel = heapalloc(copysize) +; utilsrc/apple/copy.pla: 0233: if not copyrel +; utilsrc/apple/copy.pla: 0234: puts(" No available memory for copy buffer\n") + !BYTE $6A ; LAW _D048+0 +_F138 !WORD _D048+0 + !BYTE $54 ; CALL _X014 +_F139 !WORD 0 + !BYTE $7E ; DAW _D047+0 +_F140 !WORD _D047+0 + !BYTE $4E ; BRTRU _B085 + !WORD _B085-* + !BYTE $2E ; CS + !BYTE $25 + !BYTE $20,$4E,$6F,$20,$61,$76,$61,$69 + !BYTE $6C,$61,$62,$6C,$65,$20,$6D,$65 + !BYTE $6D,$6F,$72,$79,$20,$66,$6F,$72 + !BYTE $20,$63,$6F,$70,$79,$20,$62,$75 + !BYTE $66,$66,$65,$72,$0D + !BYTE $54 ; CALL _X004 +_F141 !WORD 0 +; utilsrc/apple/copy.pla: 0235: return + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/copy.pla: 0236: fin +_B085 +_B086 +; utilsrc/apple/copy.pla: 0237: // +; utilsrc/apple/copy.pla: 0238: // Round buffer to page boundary for faster transfers +; utilsrc/apple/copy.pla: 0239: // +; utilsrc/apple/copy.pla: 0240: copybuff = (copyrel + $FF) & $FF00 +; utilsrc/apple/copy.pla: 0241: // +; utilsrc/apple/copy.pla: 0242: // Iterate through all sources +; utilsrc/apple/copy.pla: 0243: // +; utilsrc/apple/copy.pla: 0244: srcfileptr = srcfilelist +; utilsrc/apple/copy.pla: 0245: while srccnt + !BYTE $6A ; LAW _D047+0 +_F142 !WORD _D047+0 + !BYTE $38,$FF ; ADDI 255 + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D046+0 +_F143 !WORD _D046+0 + !BYTE $6A ; LAW _D043+0 +_F144 !WORD _D043+0 + !BYTE $7A ; SAW _D044+0 +_F145 !WORD _D044+0 + !BYTE $50 ; BRNCH _B089 + !WORD _B089-* +_B087 +; utilsrc/apple/copy.pla: 0246: dstlen = dstpath +; utilsrc/apple/copy.pla: 0247: if fileio:getfileinfo(srcfileptr, @srcfileinfo) == FILE_ERR_OK and (srcfileinfo.storage_type & $0D == $0D) +; utilsrc/apple/copy.pla: 0248: if recurse +; utilsrc/apple/copy.pla: 0249: // +; utilsrc/apple/copy.pla: 0250: // Copy directory +; utilsrc/apple/copy.pla: 0251: // +; utilsrc/apple/copy.pla: 0252: if dstpath[dstpath] <> '/' +; utilsrc/apple/copy.pla: 0253: dstpath++ + !BYTE $68 ; LAB _D052+0 +_F146 !WORD _D052+0 + !BYTE $78 ; SAB _D050+0 +_F147 !WORD _D050+0 + !BYTE $6A ; LAW _D044+0 +_F148 !WORD _D044+0 + !BYTE $26 ; LA _D054+0 +_F149 !WORD _D054+0 + !BYTE $6A ; LAW _X034+4 +_F150 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B090 + !WORD _B090-* + !BYTE $68 ; LAB _D054+4 +_F151 !WORD _D054+4 + !BYTE $3C,$0D ; ANDI 13 + !BYTE $1A ; CN 13 + !BYTE $40 ; ISEQ +_B090 + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $68 ; LAB _D049+0 +_F152 !WORD _D049+0 + !BYTE $4C ; BRFLS _B093 + !WORD _B093-* + !BYTE $26 ; LA _D052+0 +_F153 !WORD _D052+0 + !BYTE $B4 ; ADDAB _D052+0 +_F154 !WORD _D052+0 + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B095 + !WORD _B095-* + !BYTE $68 ; LAB _D052+0 +_F155 !WORD _D052+0 + !BYTE $8C ; INCR +; utilsrc/apple/copy.pla: 0254: dstpath[dstpath] = '/' +; utilsrc/apple/copy.pla: 0255: fin + !BYTE $78 ; SAB _D052+0 +_F156 !WORD _D052+0 + !BYTE $2A,$2F ; CB 47 + !BYTE $26 ; LA _D052+0 +_F157 !WORD _D052+0 + !BYTE $B4 ; ADDAB _D052+0 +_F158 !WORD _D052+0 + !BYTE $70 ; SB +_B095 +_B096 +; utilsrc/apple/copy.pla: 0256: filefrompath(@srcdir, srcfileptr) +; utilsrc/apple/copy.pla: 0257: strcat(@dstpath, @srcdir) +; utilsrc/apple/copy.pla: 0258: if fileio:getfileinfo(@dstpath, @dstfileinfo) <> FILE_ERR_OK +; utilsrc/apple/copy.pla: 0259: fileio:create(@dstpath, $0F, $0000) +; utilsrc/apple/copy.pla: 0260: fin + !BYTE $26 ; LA _D053+0 +_F159 !WORD _D053+0 + !BYTE $6A ; LAW _D044+0 +_F160 !WORD _D044+0 + !BYTE $54 ; CALL _X040 +_F161 !WORD 0 + !BYTE $26 ; LA _D052+0 +_F162 !WORD _D052+0 + !BYTE $26 ; LA _D053+0 +_F163 !WORD _D053+0 + !BYTE $54 ; CALL _X020 +_F164 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D052+0 +_F165 !WORD _D052+0 + !BYTE $26 ; LA _D055+0 +_F166 !WORD _D055+0 + !BYTE $6A ; LAW _X034+4 +_F167 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B097 + !WORD _B097-* + !BYTE $26 ; LA _D052+0 +_F168 !WORD _D052+0 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X034+22 +_F169 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B097 +_B098 +; utilsrc/apple/copy.pla: 0261: if not chkdstpath(@dstpath) +; utilsrc/apple/copy.pla: 0262: puts("Destination must be a directory: "); puts(@dstpath); putln + !BYTE $26 ; LA _D052+0 +_F170 !WORD _D052+0 + !BYTE $54 ; CALL _C003 +_F171 !WORD _C003 + !BYTE $4E ; BRTRU _B099 + !WORD _B099-* + !BYTE $2E ; CS + !BYTE $21 + !BYTE $44,$65,$73,$74,$69,$6E,$61,$74 + !BYTE $69,$6F,$6E,$20,$6D,$75,$73,$74 + !BYTE $20,$62,$65,$20,$61,$20,$64,$69 + !BYTE $72,$65,$63,$74,$6F,$72,$79,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F172 !WORD 0 +; utilsrc/apple/copy.pla: 0263: return + !BYTE $26 ; LA _D052+0 +_F173 !WORD _D052+0 + !BYTE $54 ; CALL _X004 +_F174 !WORD 0 + !BYTE $54 ; CALL _X003 +_F175 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/copy.pla: 0264: fin +_B099 +_B100 +; utilsrc/apple/copy.pla: 0265: else + !BYTE $50 ; BRNCH _B094 + !WORD _B094-* +_B093 +; utilsrc/apple/copy.pla: 0266: puts("Omitting directory without -r: "); puts(srcfileptr); putln + !BYTE $2E ; CS + !BYTE $1F + !BYTE $4F,$6D,$69,$74,$74,$69,$6E,$67 + !BYTE $20,$64,$69,$72,$65,$63,$74,$6F + !BYTE $72,$79,$20,$77,$69,$74,$68,$6F + !BYTE $75,$74,$20,$2D,$72,$3A,$20 + !BYTE $54 ; CALL _X004 +_F176 !WORD 0 +; utilsrc/apple/copy.pla: 0267: srcfileptr = srcfileptr + ^srcfileptr + 1 +; utilsrc/apple/copy.pla: 0268: srccnt-- + !BYTE $6A ; LAW _D044+0 +_F177 !WORD _D044+0 + !BYTE $54 ; CALL _X004 +_F178 !WORD 0 + !BYTE $54 ; CALL _X003 +_F179 !WORD 0 + !BYTE $6A ; LAW _D044+0 +_F180 !WORD _D044+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D044+0 +_F181 !WORD _D044+0 + !BYTE $6A ; LAW _D045+0 +_F182 !WORD _D045+0 + !BYTE $8E ; DECR +; utilsrc/apple/copy.pla: 0269: continue + !BYTE $7A ; SAW _D045+0 +_F183 !WORD _D045+0 + !BYTE $50 ; BRNCH _B089 + !WORD _B089-* +; utilsrc/apple/copy.pla: 0270: fin +_B094 +; utilsrc/apple/copy.pla: 0271: fin +_B091 +_B092 +; utilsrc/apple/copy.pla: 0272: // +; utilsrc/apple/copy.pla: 0273: // Copy files +; utilsrc/apple/copy.pla: 0274: // +; utilsrc/apple/copy.pla: 0275: copyfiles(srcfileptr, @dstpath) +; utilsrc/apple/copy.pla: 0276: dstpath = dstlen +; utilsrc/apple/copy.pla: 0277: srcfileptr = srcfileptr + ^srcfileptr + 1 +; utilsrc/apple/copy.pla: 0278: srccnt-- + !BYTE $6A ; LAW _D044+0 +_F184 !WORD _D044+0 + !BYTE $26 ; LA _D052+0 +_F185 !WORD _D052+0 + !BYTE $54 ; CALL _C004 +_F186 !WORD _C004 + !BYTE $68 ; LAB _D050+0 +_F187 !WORD _D050+0 + !BYTE $78 ; SAB _D052+0 +_F188 !WORD _D052+0 + !BYTE $6A ; LAW _D044+0 +_F189 !WORD _D044+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D044+0 +_F190 !WORD _D044+0 + !BYTE $6A ; LAW _D045+0 +_F191 !WORD _D045+0 + !BYTE $8E ; DECR +; utilsrc/apple/copy.pla: 0279: loop + !BYTE $7A ; SAW _D045+0 +_F192 !WORD _D045+0 +_B089 + !BYTE $6A ; LAW _D045+0 +_F193 !WORD _D045+0 + !BYTE $4E ; BRTRU _B087 + !WORD _B087-* +_B088 +; utilsrc/apple/copy.pla: 0280: heaprelease(copyrel) +; utilsrc/apple/copy.pla: 0281: return + !BYTE $6A ; LAW _D047+0 +_F194 !WORD _D047+0 + !BYTE $54 ; CALL _X015 +_F195 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/copy.pla: 0282: fin +_B070 +_B071 +; utilsrc/apple/copy.pla: 0283: fin +_B068 +_B069 +; utilsrc/apple/copy.pla: 0284: puts("Usage: +COPY + \n") + !BYTE $2E ; CS + !BYTE $1F + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $43,$4F,$50,$59,$20,$3C,$53,$52 + !BYTE $43,$46,$49,$4C,$45,$3E,$2B,$20 + !BYTE $3C,$44,$45,$53,$54,$3E,$0D + !BYTE $54 ; CALL _X004 +_F196 !WORD 0 +; utilsrc/apple/copy.pla: 0285: fin +_B060 +_B061 +; utilsrc/apple/copy.pla: 0286: fileio:close(0) +; utilsrc/apple/copy.pla: 0287: done + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X034+16 +_F197 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 6 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE 39 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F195-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F196-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F197-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: EXCEPT + !BYTE $C5,$D8,$C3,$C5,$D0,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: THROW + !BYTE $D4,$C8,$D2,$CF,$57 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: MATCHLIST + !BYTE $CD,$C1,$D4,$C3,$C8,$CC,$C9,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: ISWILDNAME + !BYTE $C9,$D3,$D7,$C9,$CC,$C4,$CE,$C1,$CD,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 39 ; ESD INDEX + ; DCI STRING: FILEFROMPATH + !BYTE $C6,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D0,$C1,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/del.a b/src/utilsrc/apple/del.a new file mode 100644 index 0000000..f6bc57d --- /dev/null +++ b/src/utilsrc/apple/del.a @@ -0,0 +1,1352 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/del.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/del.pla: 0001: +; utilsrc/apple/del.pla: 0002: include "inc/longjmp.plh" +; inc/longjmp.plh: 0001: import longjmp + ; DCI STRING: LONGJMP + !BYTE $CC,$CF,$CE,$C7,$CA,$CD,$50 + ; LONGJMP -> X028 +; inc/longjmp.plh: 0002: const t_except = $0140 + ; t_except = 320 +; inc/longjmp.plh: 0003: predef except(env), throw(env, retval) + ; EXCEPT -> X029 + ; THROW -> X030 +; inc/longjmp.plh: 0004: end +; utilsrc/apple/del.pla: 0002: +; utilsrc/apple/del.pla: 0003: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X031 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X032 + ; ARGNEXT -> X033 +; inc/args.plh: 0003: end +; utilsrc/apple/del.pla: 0003: +; utilsrc/apple/del.pla: 0004: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X034 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X035 +; inc/fileio.plh: 0080: end +; utilsrc/apple/del.pla: 0004: +; utilsrc/apple/del.pla: 0005: include "inc/matchfiles.plh" +; inc/matchfiles.plh: 0001: import matchfiles + ; DCI STRING: MATCHFILES + !BYTE $CD,$C1,$D4,$C3,$C8,$C6,$C9,$CC,$C5,$53 + ; MATCHFILES -> X036 +; inc/matchfiles.plh: 0002: predef matchName(src, exp)#1 + ; MATCHNAME -> X037 +; inc/matchfiles.plh: 0003: predef matchList(pathptr, exp)#2 + ; MATCHLIST -> X038 +; inc/matchfiles.plh: 0004: predef isWildName(exp)#1 + ; ISWILDNAME -> X039 +; inc/matchfiles.plh: 0005: predef fileFromPath(filestr, pathstr)#0 + ; FILEFROMPATH -> X040 +; inc/matchfiles.plh: 0006: end +; utilsrc/apple/del.pla: 0005: +; utilsrc/apple/del.pla: 0006: +; utilsrc/apple/del.pla: 0007: var arg, recurse, exit, filelist, fileptr, filecnt + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D041 !FILL 2 ; arg, recurse, exit, filelist, fileptr, filecnt +_D042 !FILL 2 ; recurse, exit, filelist, fileptr, filecnt +_D043 !FILL 2 ; exit, filelist, fileptr, filecnt +_D044 !FILL 2 ; filelist, fileptr, filecnt +_D045 !FILL 2 ; fileptr, filecnt +_D046 !FILL 2 ; filecnt +; utilsrc/apple/del.pla: 0008: char[64] path +_D047 !FILL 64 ; path +; utilsrc/apple/del.pla: 0009: res[t_fileinfo] fileinfo +_D048 !FILL 15 ; fileinfo +; utilsrc/apple/del.pla: 0010: // +; utilsrc/apple/del.pla: 0011: // Copy string with upper case conversion +; utilsrc/apple/del.pla: 0012: // +; utilsrc/apple/del.pla: 0013: def struprcpy(dst, src)#0 +_SUBSEG ; BYTECODE STARTS + ; dst -> [0] + ; src -> [2] +_C000 ; struprcpy() +; utilsrc/apple/del.pla: 0014: byte i, chr + ; i -> [4] + ; chr -> [5] +; utilsrc/apple/del.pla: 0015: +; utilsrc/apple/del.pla: 0016: if ^src + !BYTE $58,$06,$02 ; ENTER 6,2 +; utilsrc/apple/del.pla: 0017: for i = 1 to ^src + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B003 + !WORD _B003-* +_B004 + !BYTE $6C,$04 ; DLB [4] +; utilsrc/apple/del.pla: 0018: chr = src->[i] +; utilsrc/apple/del.pla: 0019: if chr >= 'a' and chr <= 'z' +; utilsrc/apple/del.pla: 0020: dst->[i] = chr - 'a' + 'A' +; utilsrc/apple/del.pla: 0021: else + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $6C,$05 ; DLB [5] + !BYTE $2A,$61 ; CB 97 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B006 + !WORD _B006-* + !BYTE $64,$05 ; LLB [5] + !BYTE $2A,$7A ; CB 122 + !BYTE $4A ; ISLE +_B006 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$05 ; LLB [5] + !BYTE $3A,$61 ; SUBI 97 + !BYTE $38,$41 ; ADDI 65 + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B008 + !WORD _B008-* +_B007 +; utilsrc/apple/del.pla: 0022: dst->[i] = chr +; utilsrc/apple/del.pla: 0023: fin + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $70 ; SB +_B008 +; utilsrc/apple/del.pla: 0024: next +_B005 + !BYTE $A4 ; INCBRLE _B004 + !WORD _B004-* +_B003 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; utilsrc/apple/del.pla: 0025: fin +_B001 +_B002 +; utilsrc/apple/del.pla: 0026: ^dst = ^src +; utilsrc/apple/del.pla: 0027: end + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$06 ; LEAVE 6 +; utilsrc/apple/del.pla: 0028: // +; utilsrc/apple/del.pla: 0029: // Check filename +; utilsrc/apple/del.pla: 0030: // +; utilsrc/apple/del.pla: 0031: def chkfile(file)#1 + ; file -> [0] +_C001 ; chkfile() +; utilsrc/apple/del.pla: 0032: var refnum, dirbuf, filecnt + ; refnum -> [2] + ; dirbuf -> [4] + ; filecnt -> [6] +; utilsrc/apple/del.pla: 0033: +; utilsrc/apple/del.pla: 0034: // +; utilsrc/apple/del.pla: 0035: // Check if file exists +; utilsrc/apple/del.pla: 0036: // +; utilsrc/apple/del.pla: 0037: if fileio:getfileinfo(file, @fileinfo) == FILE_ERR_OK + !BYTE $58,$08,$01 ; ENTER 8,1 +; utilsrc/apple/del.pla: 0038: // +; utilsrc/apple/del.pla: 0039: // Check if deleting a directory +; utilsrc/apple/del.pla: 0040: // +; utilsrc/apple/del.pla: 0041: if fileinfo.file_type == $0F +; utilsrc/apple/del.pla: 0042: refnum = fileio:open(file) +; utilsrc/apple/del.pla: 0043: if refnum +; utilsrc/apple/del.pla: 0044: // +; utilsrc/apple/del.pla: 0045: // Check for files inside directory +; utilsrc/apple/del.pla: 0046: // +; utilsrc/apple/del.pla: 0047: filecnt = 0 +; utilsrc/apple/del.pla: 0048: dirbuf = heapalloc(512) +; utilsrc/apple/del.pla: 0049: if fileio:read(refnum, dirbuf, 512) == 512 +; utilsrc/apple/del.pla: 0050: fileio:close(refnum) +; utilsrc/apple/del.pla: 0051: filecnt = dirbuf=>$25 // File count in directory +; utilsrc/apple/del.pla: 0052: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $26 ; LA _D048+0 +_F000 !WORD _D048+0 + !BYTE $6A ; LAW _X034+4 +_F001 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B009 + !WORD _B009-* + !BYTE $68 ; LAB _D048+1 +_F002 !WORD _D048+1 + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B011 + !WORD _B011-* + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X034+14 +_F003 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $6E,$02 ; DLW [2] + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X014 +_F004 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X034+18 +_F005 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $24 ; BRNE _B015 + !WORD _B015-* + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _X034+16 +_F006 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$25 ; ADDI 37 + !BYTE $62 ; LW + !BYTE $76,$06 ; SLW [6] +_B015 +_B016 +; utilsrc/apple/del.pla: 0053: heaprelease(dirbuf) +; utilsrc/apple/del.pla: 0054: if filecnt +; utilsrc/apple/del.pla: 0055: puts("Directory not empty: "); puts(file); putln + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X015 +_F007 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$06 ; LLW [6] + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2E ; CS + !BYTE $15 + !BYTE $44,$69,$72,$65,$63,$74,$6F,$72 + !BYTE $79,$20,$6E,$6F,$74,$20,$65,$6D + !BYTE $70,$74,$79,$3A,$20 + !BYTE $54 ; CALL _X004 +_F008 !WORD 0 +; utilsrc/apple/del.pla: 0056: return FALSE + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 + !BYTE $54 ; CALL _X003 +_F010 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; utilsrc/apple/del.pla: 0057: fin +_B017 +_B018 +; utilsrc/apple/del.pla: 0058: fin +_B013 +_B014 +; utilsrc/apple/del.pla: 0059: fin +_B011 +_B012 +; utilsrc/apple/del.pla: 0060: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$08 ; LEAVE 8 +; utilsrc/apple/del.pla: 0061: fin +_B009 +_B010 +; utilsrc/apple/del.pla: 0062: puts("File not found: "); puts(file); putln + !BYTE $2E ; CS + !BYTE $10 + !BYTE $46,$69,$6C,$65,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$3A,$20 + !BYTE $54 ; CALL _X004 +_F011 !WORD 0 +; utilsrc/apple/del.pla: 0063: return FALSE + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 + !BYTE $54 ; CALL _X003 +_F013 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$08 ; LEAVE 8 +; utilsrc/apple/del.pla: 0064: end +; utilsrc/apple/del.pla: 0065: def delfiles(delfile)#0 + ; delfile -> [0] +_C002 ; delfiles() +; utilsrc/apple/del.pla: 0066: var entrylist, entry, entrycnt + ; entrylist -> [2] + ; entry -> [4] + ; entrycnt -> [6] +; utilsrc/apple/del.pla: 0067: char[64] delpath + ; delpath -> [8] +; utilsrc/apple/del.pla: 0068: char[64] delfilepath + ; delfilepath -> [72] +; utilsrc/apple/del.pla: 0069: char[16] wildname + ; wildname -> [136] +; utilsrc/apple/del.pla: 0070: +; utilsrc/apple/del.pla: 0071: strcpy(@delpath, delfile) + !BYTE $58,$98,$01 ; ENTER 152,1 +; utilsrc/apple/del.pla: 0072: wildname = 0 +; utilsrc/apple/del.pla: 0073: if delpath[delpath] <> '/' +; utilsrc/apple/del.pla: 0074: fileFromPath(@wildname, @delpath) +; utilsrc/apple/del.pla: 0075: delpath = delpath - wildname +; utilsrc/apple/del.pla: 0076: fin + !BYTE $28,$08 ; LLA [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X019 +_F014 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$88 ; SLB [136] + !BYTE $28,$08 ; LLA [8] + !BYTE $B0,$08 ; ADDLB [8] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $22 ; BREQ _B019 + !WORD _B019-* + !BYTE $28,$88 ; LLA [136] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X040 +_F015 !WORD 0 + !BYTE $64,$08 ; LLB [8] + !BYTE $64,$88 ; LLB [136] + !BYTE $84 ; SUB + !BYTE $74,$08 ; SLB [8] +_B019 +_B020 +; utilsrc/apple/del.pla: 0077: // +; utilsrc/apple/del.pla: 0078: // Check arguments and file types +; utilsrc/apple/del.pla: 0079: // +; utilsrc/apple/del.pla: 0080: entrylist, entrycnt = matchList(@delpath, @wildname) +; utilsrc/apple/del.pla: 0081: if entrylist +; utilsrc/apple/del.pla: 0082: entry = entrylist +; utilsrc/apple/del.pla: 0083: while entrycnt + !BYTE $28,$08 ; LLA [8] + !BYTE $28,$88 ; LLA [136] + !BYTE $54 ; CALL _X038 +_F016 !WORD 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $6E,$02 ; DLW [2] + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$04 ; SLW [4] + !BYTE $50 ; BRNCH _B025 + !WORD _B025-* +_B023 +; utilsrc/apple/del.pla: 0084: strcpy(@delfilepath, @delpath) +; utilsrc/apple/del.pla: 0085: strcat(@delfilepath, entry) +; utilsrc/apple/del.pla: 0086: // +; utilsrc/apple/del.pla: 0087: // Check if file is a directory +; utilsrc/apple/del.pla: 0088: // +; utilsrc/apple/del.pla: 0089: if entry->entry_type == $0F +; utilsrc/apple/del.pla: 0090: if recurse +; utilsrc/apple/del.pla: 0091: strcat(@delfilepath, "/") + !BYTE $28,$48 ; LLA [72] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X019 +_F017 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$48 ; LLA [72] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X020 +_F018 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $1E ; CN 15 + !BYTE $24 ; BRNE _B026 + !WORD _B026-* + !BYTE $6A ; LAW _D042+0 +_F019 !WORD _D042+0 + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $28,$48 ; LLA [72] + !BYTE $2E ; CS + !BYTE $01 + !BYTE $2F + !BYTE $54 ; CALL _X020 +_F020 !WORD 0 + !BYTE $30 ; DROP +; utilsrc/apple/del.pla: 0092: strcat(@delfilepath, @wildname) +; utilsrc/apple/del.pla: 0093: delfiles(@delfilepath) +; utilsrc/apple/del.pla: 0094: fin + !BYTE $28,$48 ; LLA [72] + !BYTE $28,$88 ; LLA [136] + !BYTE $54 ; CALL _X020 +_F021 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$48 ; LLA [72] + !BYTE $54 ; CALL _C002 +_F022 !WORD _C002 +_B028 +_B029 +; utilsrc/apple/del.pla: 0095: strcpy(@delfilepath, @delpath) +; utilsrc/apple/del.pla: 0096: strcat(@delfilepath, entry) +; utilsrc/apple/del.pla: 0097: if chkfile(@delfilepath) +; utilsrc/apple/del.pla: 0098: puts("Removing: "); puts(@delfilepath); putln + !BYTE $28,$48 ; LLA [72] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X019 +_F023 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$48 ; LLA [72] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _X020 +_F024 !WORD 0 + !BYTE $30 ; DROP + !BYTE $28,$48 ; LLA [72] + !BYTE $54 ; CALL _C001 +_F025 !WORD _C001 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $2E ; CS + !BYTE $0A + !BYTE $52,$65,$6D,$6F,$76,$69,$6E,$67 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 +; utilsrc/apple/del.pla: 0099: fileio:destroy(@delfilepath) +; utilsrc/apple/del.pla: 0100: fin + !BYTE $28,$48 ; LLA [72] + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 + !BYTE $54 ; CALL _X003 +_F028 !WORD 0 + !BYTE $28,$48 ; LLA [72] + !BYTE $6A ; LAW _X034+24 +_F029 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B030 +_B031 +; utilsrc/apple/del.pla: 0101: else + !BYTE $50 ; BRNCH _B027 + !WORD _B027-* +_B026 +; utilsrc/apple/del.pla: 0102: puts("Removing: "); puts(@delfilepath); putln + !BYTE $2E ; CS + !BYTE $0A + !BYTE $52,$65,$6D,$6F,$76,$69,$6E,$67 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F030 !WORD 0 +; utilsrc/apple/del.pla: 0103: fileio:destroy(@delfilepath) +; utilsrc/apple/del.pla: 0104: fin + !BYTE $28,$48 ; LLA [72] + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 + !BYTE $54 ; CALL _X003 +_F032 !WORD 0 + !BYTE $28,$48 ; LLA [72] + !BYTE $6A ; LAW _X034+24 +_F033 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B027 +; utilsrc/apple/del.pla: 0105: entry = entry + t_fileentry +; utilsrc/apple/del.pla: 0106: entrycnt-- + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$27 ; ADDI 39 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $8E ; DECR +; utilsrc/apple/del.pla: 0107: loop + !BYTE $76,$06 ; SLW [6] +_B025 + !BYTE $66,$06 ; LLW [6] + !BYTE $4E ; BRTRU _B023 + !WORD _B023-* +_B024 +; utilsrc/apple/del.pla: 0108: elsif not wildname + !BYTE $50 ; BRNCH _B022 + !WORD _B022-* +_B021 +; utilsrc/apple/del.pla: 0109: puts("Not found: "); puts(@delpath); puts("/"); puts(@wildname); putln + !BYTE $64,$88 ; LLB [136] + !BYTE $4E ; BRTRU _B032 + !WORD _B032-* + !BYTE $2E ; CS + !BYTE $0B + !BYTE $4E,$6F,$74,$20,$66,$6F,$75,$6E + !BYTE $64,$3A,$20 + !BYTE $54 ; CALL _X004 +_F034 !WORD 0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X004 +_F035 !WORD 0 + !BYTE $2E ; CS + !BYTE $01 + !BYTE $2F + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 +; utilsrc/apple/del.pla: 0110: fin + !BYTE $28,$88 ; LLA [136] + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 + !BYTE $54 ; CALL _X003 +_F038 !WORD 0 +_B032 +_B022 +; utilsrc/apple/del.pla: 0111: end + !BYTE $5A,$98 ; LEAVE 152 +; utilsrc/apple/del.pla: 0112: // +; utilsrc/apple/del.pla: 0113: // Install error exit +; utilsrc/apple/del.pla: 0114: // +; utilsrc/apple/del.pla: 0115: exit = heapalloc(t_except) +_INIT +; utilsrc/apple/del.pla: 0116: if not except(exit) +; utilsrc/apple/del.pla: 0117: // +; utilsrc/apple/del.pla: 0118: // Check arguments and file types +; utilsrc/apple/del.pla: 0119: // +; utilsrc/apple/del.pla: 0120: arg = argNext(argFirst) +; utilsrc/apple/del.pla: 0121: if ^arg and arg->[1] == '-' +; utilsrc/apple/del.pla: 0122: if ^arg > 1 and toupper(arg->[2]) == 'R' +; utilsrc/apple/del.pla: 0123: recurse = TRUE +; utilsrc/apple/del.pla: 0124: fin + !BYTE $2C,$40,$01 ; CW 320 + !BYTE $54 ; CALL _X014 +_F039 !WORD 0 + !BYTE $7E ; DAW _D043+0 +_F040 !WORD _D043+0 + !BYTE $54 ; CALL _X029 +_F041 !WORD 0 + !BYTE $4E ; BRTRU _B033 + !WORD _B033-* + !BYTE $54 ; CALL _X032 +_F042 !WORD 0 + !BYTE $54 ; CALL _X033 +_F043 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F044 !WORD _D041+0 + !BYTE $6A ; LAW _D041+0 +_F045 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B035 + !WORD _B035-* + !BYTE $6A ; LAW _D041+0 +_F046 !WORD _D041+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2D ; CB 45 + !BYTE $40 ; ISEQ +_B035 + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $6A ; LAW _D041+0 +_F047 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B038 + !WORD _B038-* + !BYTE $6A ; LAW _D041+0 +_F048 !WORD _D041+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F049 !WORD 0 + !BYTE $2A,$52 ; CB 82 + !BYTE $40 ; ISEQ +_B038 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $20 ; MINUS ONE + !BYTE $7A ; SAW _D042+0 +_F050 !WORD _D042+0 +_B039 +_B040 +; utilsrc/apple/del.pla: 0125: arg = argNext(arg) +; utilsrc/apple/del.pla: 0126: fin + !BYTE $6A ; LAW _D041+0 +_F051 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F052 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F053 !WORD _D041+0 +_B036 +_B037 +; utilsrc/apple/del.pla: 0127: if ^arg +; utilsrc/apple/del.pla: 0128: filelist = heapmark() +; utilsrc/apple/del.pla: 0129: while ^arg + !BYTE $6A ; LAW _D041+0 +_F054 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B041 + !WORD _B041-* + !BYTE $54 ; CALL _X012 +_F055 !WORD 0 + !BYTE $7A ; SAW _D044+0 +_F056 !WORD _D044+0 + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B043 +; utilsrc/apple/del.pla: 0130: // +; utilsrc/apple/del.pla: 0131: // Add to file list +; utilsrc/apple/del.pla: 0132: // +; utilsrc/apple/del.pla: 0133: fileptr = heapalloc(^arg + 1) +; utilsrc/apple/del.pla: 0134: struprcpy(fileptr, arg) +; utilsrc/apple/del.pla: 0135: filecnt++ + !BYTE $6A ; LAW _D041+0 +_F057 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $54 ; CALL _X014 +_F058 !WORD 0 + !BYTE $7E ; DAW _D045+0 +_F059 !WORD _D045+0 + !BYTE $6A ; LAW _D041+0 +_F060 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F061 !WORD _C000 + !BYTE $6A ; LAW _D046+0 +_F062 !WORD _D046+0 + !BYTE $8C ; INCR +; utilsrc/apple/del.pla: 0136: arg = argNext(arg) +; utilsrc/apple/del.pla: 0137: loop + !BYTE $7A ; SAW _D046+0 +_F063 !WORD _D046+0 + !BYTE $6A ; LAW _D041+0 +_F064 !WORD _D041+0 + !BYTE $54 ; CALL _X033 +_F065 !WORD 0 + !BYTE $7A ; SAW _D041+0 +_F066 !WORD _D041+0 +_B045 + !BYTE $6A ; LAW _D041+0 +_F067 !WORD _D041+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B043 + !WORD _B043-* +_B044 +; utilsrc/apple/del.pla: 0138: fileptr = filelist +; utilsrc/apple/del.pla: 0139: while filecnt + !BYTE $6A ; LAW _D044+0 +_F068 !WORD _D044+0 + !BYTE $7A ; SAW _D045+0 +_F069 !WORD _D045+0 + !BYTE $50 ; BRNCH _B048 + !WORD _B048-* +_B046 +; utilsrc/apple/del.pla: 0140: // +; utilsrc/apple/del.pla: 0141: // Delete files in list +; utilsrc/apple/del.pla: 0142: // +; utilsrc/apple/del.pla: 0143: if recurse and fileio:getfileinfo(fileptr, @fileinfo) == FILE_ERR_OK and (fileinfo.storage_type & $0D == $0D) +; utilsrc/apple/del.pla: 0144: strcpy(@path,fileptr) +; utilsrc/apple/del.pla: 0145: strcat(@path, "/") + !BYTE $6A ; LAW _D042+0 +_F070 !WORD _D042+0 + !BYTE $AC ; BRAND _B049 + !WORD _B049-* + !BYTE $6A ; LAW _D045+0 +_F071 !WORD _D045+0 + !BYTE $26 ; LA _D048+0 +_F072 !WORD _D048+0 + !BYTE $6A ; LAW _X034+4 +_F073 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B050 + !WORD _B050-* + !BYTE $68 ; LAB _D048+4 +_F074 !WORD _D048+4 + !BYTE $3C,$0D ; ANDI 13 + !BYTE $1A ; CN 13 + !BYTE $40 ; ISEQ +_B050 +_B049 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $26 ; LA _D047+0 +_F075 !WORD _D047+0 + !BYTE $6A ; LAW _D045+0 +_F076 !WORD _D045+0 + !BYTE $54 ; CALL _X019 +_F077 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D047+0 +_F078 !WORD _D047+0 + !BYTE $2E ; CS + !BYTE $01 + !BYTE $2F + !BYTE $54 ; CALL _X020 +_F079 !WORD 0 + !BYTE $30 ; DROP +; utilsrc/apple/del.pla: 0146: delfiles(@path) +; utilsrc/apple/del.pla: 0147: fin + !BYTE $26 ; LA _D047+0 +_F080 !WORD _D047+0 + !BYTE $54 ; CALL _C002 +_F081 !WORD _C002 +_B051 +_B052 +; utilsrc/apple/del.pla: 0148: delfiles(fileptr) +; utilsrc/apple/del.pla: 0149: fileptr = fileptr + ^fileptr + 1 +; utilsrc/apple/del.pla: 0150: filecnt-- + !BYTE $6A ; LAW _D045+0 +_F082 !WORD _D045+0 + !BYTE $54 ; CALL _C002 +_F083 !WORD _C002 + !BYTE $6A ; LAW _D045+0 +_F084 !WORD _D045+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D045+0 +_F085 !WORD _D045+0 + !BYTE $6A ; LAW _D046+0 +_F086 !WORD _D046+0 + !BYTE $8E ; DECR +; utilsrc/apple/del.pla: 0151: loop + !BYTE $7A ; SAW _D046+0 +_F087 !WORD _D046+0 +_B048 + !BYTE $6A ; LAW _D046+0 +_F088 !WORD _D046+0 + !BYTE $4E ; BRTRU _B046 + !WORD _B046-* +_B047 +; utilsrc/apple/del.pla: 0152: else + !BYTE $50 ; BRNCH _B042 + !WORD _B042-* +_B041 +; utilsrc/apple/del.pla: 0153: puts("Usage: +DEL +\n") + !BYTE $2E ; CS + !BYTE $14 + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $44,$45,$4C,$20,$3C,$46,$49,$4C + !BYTE $45,$3E,$2B,$0D + !BYTE $54 ; CALL _X004 +_F089 !WORD 0 +; utilsrc/apple/del.pla: 0154: fin +_B042 +; utilsrc/apple/del.pla: 0155: fin +_B033 +_B034 +; utilsrc/apple/del.pla: 0156: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 4 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 15 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 40 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 38 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 33 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE 34 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: HEAPRELEASE + !BYTE $C8,$C5,$C1,$D0,$D2,$C5,$CC,$C5,$C1,$D3,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 15 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: EXCEPT + !BYTE $C5,$D8,$C3,$C5,$D0,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 33 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 34 ; ESD INDEX + ; DCI STRING: MATCHLIST + !BYTE $CD,$C1,$D4,$C3,$C8,$CC,$C9,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 38 ; ESD INDEX + ; DCI STRING: FILEFROMPATH + !BYTE $C6,$C9,$CC,$C5,$C6,$D2,$CF,$CD,$D0,$C1,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 40 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/jitune.a b/src/utilsrc/apple/jitune.a new file mode 100644 index 0000000..7be9b10 --- /dev/null +++ b/src/utilsrc/apple/jitune.a @@ -0,0 +1,511 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/jitune.pla: 0001: // +; utilsrc/apple/jitune.pla: 0002: // PLASMA JIT bytecode compiler tuner +; utilsrc/apple/jitune.pla: 0003: // +; utilsrc/apple/jitune.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/jitune.pla: 0004: +; utilsrc/apple/jitune.pla: 0005: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/jitune.pla: 0005: +; utilsrc/apple/jitune.pla: 0006: +; utilsrc/apple/jitune.pla: 0007: var arg, val + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D031 !FILL 2 ; arg, val +_D032 !FILL 2 ; val +; utilsrc/apple/jitune.pla: 0008: +; utilsrc/apple/jitune.pla: 0009: def atoi(strptr) +_SUBSEG ; BYTECODE STARTS + ; strptr -> [0] +_C000 ; atoi() +; utilsrc/apple/jitune.pla: 0010: var num, len + ; num -> [2] + ; len -> [4] +; utilsrc/apple/jitune.pla: 0011: +; utilsrc/apple/jitune.pla: 0012: num = 0 + !BYTE $58,$06,$01 ; ENTER 6,1 +; utilsrc/apple/jitune.pla: 0013: len = ^strptr +; utilsrc/apple/jitune.pla: 0014: strptr++ + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; utilsrc/apple/jitune.pla: 0015: while len and ^strptr >= '0' and ^strptr <= '9' + !BYTE $76,$00 ; SLW [0] + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; utilsrc/apple/jitune.pla: 0016: num = num * 10 + ^strptr - '0' +; utilsrc/apple/jitune.pla: 0017: strptr++ + !BYTE $66,$02 ; LLW [2] + !BYTE $14 ; CN 10 + !BYTE $86 ; MUL + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$30 ; SUBI 48 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; utilsrc/apple/jitune.pla: 0018: len-- + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $8E ; DECR +; utilsrc/apple/jitune.pla: 0019: loop + !BYTE $76,$04 ; SLW [4] +_B003 + !BYTE $66,$04 ; LLW [4] + !BYTE $AC ; BRAND _B004 + !WORD _B004-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B005 + !WORD _B005-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B005 +_B004 + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; utilsrc/apple/jitune.pla: 0020: return num + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$06 ; LEAVE 6 +; utilsrc/apple/jitune.pla: 0021: end +; utilsrc/apple/jitune.pla: 0022: +; utilsrc/apple/jitune.pla: 0023: arg = argNext(argFirst) +_INIT +; utilsrc/apple/jitune.pla: 0024: if ^arg +; utilsrc/apple/jitune.pla: 0025: if arg->1 >= '0' and arg->1 <= '9' +; utilsrc/apple/jitune.pla: 0026: val = atoi(arg) +; utilsrc/apple/jitune.pla: 0027: if val > 255 +; utilsrc/apple/jitune.pla: 0028: val = 255 +; utilsrc/apple/jitune.pla: 0029: fin + !BYTE $54 ; CALL _X029 +_F000 !WORD 0 + !BYTE $54 ; CALL _X030 +_F001 !WORD 0 + !BYTE $7A ; SAW _D031+0 +_F002 !WORD _D031+0 + !BYTE $6A ; LAW _D031+0 +_F003 !WORD _D031+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $6A ; LAW _D031+0 +_F004 !WORD _D031+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$30 ; CB 48 + !BYTE $48 ; ISGE + !BYTE $AC ; BRAND _B008 + !WORD _B008-* + !BYTE $6A ; LAW _D031+0 +_F005 !WORD _D031+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$39 ; CB 57 + !BYTE $4A ; ISLE +_B008 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $6A ; LAW _D031+0 +_F006 !WORD _D031+0 + !BYTE $54 ; CALL _C000 +_F007 !WORD _C000 + !BYTE $7E ; DAW _D032+0 +_F008 !WORD _D032+0 + !BYTE $2A,$FF ; CB 255 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $2A,$FF ; CB 255 + !BYTE $7A ; SAW _D032+0 +_F009 !WORD _D032+0 +_B011 +_B012 +; utilsrc/apple/jitune.pla: 0030: cmdsys.jitcount = val +; utilsrc/apple/jitune.pla: 0031: arg = argNext(arg) +; utilsrc/apple/jitune.pla: 0032: if ^arg +; utilsrc/apple/jitune.pla: 0033: val = atoi(arg) +; utilsrc/apple/jitune.pla: 0034: if val > 255 +; utilsrc/apple/jitune.pla: 0035: val = 255 +; utilsrc/apple/jitune.pla: 0036: fin + !BYTE $6A ; LAW _D032+0 +_F010 !WORD _D032+0 + !BYTE $78 ; SAB _X000+17 +_F011 !WORD 0+17 + !BYTE $6A ; LAW _D031+0 +_F012 !WORD _D031+0 + !BYTE $54 ; CALL _X030 +_F013 !WORD 0 + !BYTE $7A ; SAW _D031+0 +_F014 !WORD _D031+0 + !BYTE $6A ; LAW _D031+0 +_F015 !WORD _D031+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D031+0 +_F016 !WORD _D031+0 + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $7E ; DAW _D032+0 +_F018 !WORD _D032+0 + !BYTE $2A,$FF ; CB 255 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $2A,$FF ; CB 255 + !BYTE $7A ; SAW _D032+0 +_F019 !WORD _D032+0 +_B015 +_B016 +; utilsrc/apple/jitune.pla: 0037: cmdsys.jitsize = val +; utilsrc/apple/jitune.pla: 0038: fin + !BYTE $6A ; LAW _D032+0 +_F020 !WORD _D032+0 + !BYTE $78 ; SAB _X000+18 +_F021 !WORD 0+18 +_B013 +_B014 +; utilsrc/apple/jitune.pla: 0039: else + !BYTE $50 ; BRNCH _B010 + !WORD _B010-* +_B009 +; utilsrc/apple/jitune.pla: 0040: puts("Usage: JITUNE WARMUP [CALLCOUNT [MAXSIZE]]\n") + !BYTE $2E ; CS + !BYTE $2B + !BYTE $55,$73,$61,$67,$65,$3A,$20,$4A + !BYTE $49,$54,$55,$4E,$45,$20,$57,$41 + !BYTE $52,$4D,$55,$50,$20,$5B,$43,$41 + !BYTE $4C,$4C,$43,$4F,$55,$4E,$54,$20 + !BYTE $5B,$4D,$41,$58,$53,$49,$5A,$45 + !BYTE $5D,$5D,$0D + !BYTE $54 ; CALL _X004 +_F022 !WORD 0 +; utilsrc/apple/jitune.pla: 0041: fin +_B010 +; utilsrc/apple/jitune.pla: 0042: fin +_B006 +_B007 +; utilsrc/apple/jitune.pla: 0043: puts("JIT Call Count: "); puti(cmdsys.jitcount); putln + !BYTE $2E ; CS + !BYTE $10 + !BYTE $4A,$49,$54,$20,$43,$61,$6C,$6C + !BYTE $20,$43,$6F,$75,$6E,$74,$3A,$20 + !BYTE $54 ; CALL _X004 +_F023 !WORD 0 +; utilsrc/apple/jitune.pla: 0044: puts("JIT Max Size: "); puti(cmdsys.jitsize); putln + !BYTE $68 ; LAB _X000+17 +_F024 !WORD 0+17 + !BYTE $54 ; CALL _X005 +_F025 !WORD 0 + !BYTE $54 ; CALL _X003 +_F026 !WORD 0 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $4A,$49,$54,$20,$4D,$61,$78,$20 + !BYTE $53,$69,$7A,$65,$3A,$20,$20,$20 + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +; utilsrc/apple/jitune.pla: 0045: done + !BYTE $68 ; LAB _X000+18 +_F028 !WORD 0+18 + !BYTE $54 ; CALL _X005 +_F029 !WORD 0 + !BYTE $54 ; CALL _X003 +_F030 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 5 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTI + !BYTE $D0,$D5,$D4,$49 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 5 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/mon.a b/src/utilsrc/apple/mon.a new file mode 100644 index 0000000..039b8bc --- /dev/null +++ b/src/utilsrc/apple/mon.a @@ -0,0 +1,227 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/mon.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/mon.pla: 0001: +; utilsrc/apple/mon.pla: 0002: byte bye = $20, $00, $BF, $65 + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D028 ; bye = $20, $00, $BF, $65 + !BYTE $20 + !BYTE $00 + !BYTE $BF + !BYTE $65 +; utilsrc/apple/mon.pla: 0003: word paramsptr +_D029 !FILL 2 ; paramsptr +; utilsrc/apple/mon.pla: 0004: byte[7] params = 4 +_D030 ; params = 4 + !BYTE $04 + !FILL $06 +; utilsrc/apple/mon.pla: 0005: +; utilsrc/apple/mon.pla: 0006: // +; utilsrc/apple/mon.pla: 0007: // Set 'BYE' params +; utilsrc/apple/mon.pla: 0008: // +; utilsrc/apple/mon.pla: 0009: paramsptr = @params + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_INIT +; utilsrc/apple/mon.pla: 0010: // +; utilsrc/apple/mon.pla: 0011: // Set up CTRL-Y to point to 'BYE' routine +; utilsrc/apple/mon.pla: 0012: // +; utilsrc/apple/mon.pla: 0013: ^$3F8 = $4C +; utilsrc/apple/mon.pla: 0014: *$3F9 = @bye +; utilsrc/apple/mon.pla: 0015: // +; utilsrc/apple/mon.pla: 0016: // Call into monitor +; utilsrc/apple/mon.pla: 0017: // +; utilsrc/apple/mon.pla: 0018: call(-151, 0, 0, 0, 0) +; utilsrc/apple/mon.pla: 0019: done + !BYTE $26 ; LA _D030+0 +_F000 !WORD _D030+0 + !BYTE $7A ; SAW _D029+0 +_F001 !WORD _D029+0 + !BYTE $2A,$4C ; CB 76 + !BYTE $78,$F8,$03 ; SAB 1016 + !BYTE $26 ; LA _D028+0 +_F002 !WORD _D028+0 + !BYTE $7A,$F9,$03 ; SAW 1017 + !BYTE $5E,$69 ; CFFB -151 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _X010 +_F003 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 10 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CALL + !BYTE $C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 10 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/newdir.a b/src/utilsrc/apple/newdir.a new file mode 100644 index 0000000..c4f0011 --- /dev/null +++ b/src/utilsrc/apple/newdir.a @@ -0,0 +1,504 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/newdir.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/newdir.pla: 0001: +; utilsrc/apple/newdir.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/newdir.pla: 0002: +; utilsrc/apple/newdir.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; utilsrc/apple/newdir.pla: 0003: +; utilsrc/apple/newdir.pla: 0004: +; utilsrc/apple/newdir.pla: 0005: var arg + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D033 !FILL 2 ; arg +; utilsrc/apple/newdir.pla: 0006: char[64] filename +_D034 !FILL 64 ; filename +; utilsrc/apple/newdir.pla: 0007: res[t_fileinfo] fileinfo +_D035 !FILL 15 ; fileinfo +; utilsrc/apple/newdir.pla: 0008: // +; utilsrc/apple/newdir.pla: 0009: // Check arguments and file types +; utilsrc/apple/newdir.pla: 0010: // +; utilsrc/apple/newdir.pla: 0011: arg = argNext(argFirst) +_SUBSEG ; BYTECODE STARTS +_INIT +; utilsrc/apple/newdir.pla: 0012: if ^arg +; utilsrc/apple/newdir.pla: 0013: strcpy(@filename, arg) +; utilsrc/apple/newdir.pla: 0014: if fileio:getfileinfo(@filename, @fileinfo) == FILE_ERR_OK +; utilsrc/apple/newdir.pla: 0015: puts("File exists: "); puts(@filename); putln + !BYTE $54 ; CALL _X029 +_F000 !WORD 0 + !BYTE $54 ; CALL _X030 +_F001 !WORD 0 + !BYTE $7A ; SAW _D033+0 +_F002 !WORD _D033+0 + !BYTE $6A ; LAW _D033+0 +_F003 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $26 ; LA _D034+0 +_F004 !WORD _D034+0 + !BYTE $6A ; LAW _D033+0 +_F005 !WORD _D033+0 + !BYTE $54 ; CALL _X019 +_F006 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D034+0 +_F007 !WORD _D034+0 + !BYTE $26 ; LA _D035+0 +_F008 !WORD _D035+0 + !BYTE $6A ; LAW _X031+4 +_F009 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B003 + !WORD _B003-* + !BYTE $2E ; CS + !BYTE $0D + !BYTE $46,$69,$6C,$65,$20,$65,$78,$69 + !BYTE $73,$74,$73,$3A,$20 + !BYTE $54 ; CALL _X004 +_F010 !WORD 0 +; utilsrc/apple/newdir.pla: 0016: else + !BYTE $26 ; LA _D034+0 +_F011 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 + !BYTE $54 ; CALL _X003 +_F013 !WORD 0 + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; utilsrc/apple/newdir.pla: 0017: if fileio:create(@filename, $0F, $0000) <> FILE_ERR_OK +; utilsrc/apple/newdir.pla: 0018: puts("Unable to create directory: "); puts(@filename); putln + !BYTE $26 ; LA _D034+0 +_F014 !WORD _D034+0 + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+22 +_F015 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $2E ; CS + !BYTE $1C + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$63,$72,$65,$61,$74,$65 + !BYTE $20,$64,$69,$72,$65,$63,$74,$6F + !BYTE $72,$79,$3A,$20 + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 +; utilsrc/apple/newdir.pla: 0019: fin + !BYTE $26 ; LA _D034+0 +_F017 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 + !BYTE $54 ; CALL _X003 +_F019 !WORD 0 +_B005 +_B006 +; utilsrc/apple/newdir.pla: 0020: fin +_B004 +; utilsrc/apple/newdir.pla: 0021: return + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/newdir.pla: 0022: fin +_B001 +_B002 +; utilsrc/apple/newdir.pla: 0023: puts("Usage: +NEWDIR PATH\n") + !BYTE $2E ; CS + !BYTE $14 + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $4E,$45,$57,$44,$49,$52,$20,$50 + !BYTE $41,$54,$48,$0D + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +; utilsrc/apple/newdir.pla: 0024: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/ren.a b/src/utilsrc/apple/ren.a new file mode 100644 index 0000000..8f59a34 --- /dev/null +++ b/src/utilsrc/apple/ren.a @@ -0,0 +1,577 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/ren.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/ren.pla: 0001: +; utilsrc/apple/ren.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/ren.pla: 0002: +; utilsrc/apple/ren.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; utilsrc/apple/ren.pla: 0003: +; utilsrc/apple/ren.pla: 0004: +; utilsrc/apple/ren.pla: 0005: var arg + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D033 !FILL 2 ; arg +; utilsrc/apple/ren.pla: 0006: char[64] oldfilename, newfilename +_D034 !FILL 64 ; oldfilename, newfilename +_D035 !FILL 64 ; newfilename +; utilsrc/apple/ren.pla: 0007: res[t_fileinfo] fileinfo +_D036 !FILL 15 ; fileinfo +; utilsrc/apple/ren.pla: 0008: // +; utilsrc/apple/ren.pla: 0009: // Check arguments and file types +; utilsrc/apple/ren.pla: 0010: // +; utilsrc/apple/ren.pla: 0011: arg = argNext(argFirst) +_SUBSEG ; BYTECODE STARTS +_INIT +; utilsrc/apple/ren.pla: 0012: if ^arg +; utilsrc/apple/ren.pla: 0013: strcpy(@oldfilename, arg) +; utilsrc/apple/ren.pla: 0014: if fileio:getfileinfo(@oldfilename, @fileinfo) <> FILE_ERR_OK +; utilsrc/apple/ren.pla: 0015: // +; utilsrc/apple/ren.pla: 0016: // File not found +; utilsrc/apple/ren.pla: 0017: // +; utilsrc/apple/ren.pla: 0018: puts("File not found: "); puts(@oldfilename); putln + !BYTE $54 ; CALL _X029 +_F000 !WORD 0 + !BYTE $54 ; CALL _X030 +_F001 !WORD 0 + !BYTE $7A ; SAW _D033+0 +_F002 !WORD _D033+0 + !BYTE $6A ; LAW _D033+0 +_F003 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $26 ; LA _D034+0 +_F004 !WORD _D034+0 + !BYTE $6A ; LAW _D033+0 +_F005 !WORD _D033+0 + !BYTE $54 ; CALL _X019 +_F006 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D034+0 +_F007 !WORD _D034+0 + !BYTE $26 ; LA _D036+0 +_F008 !WORD _D036+0 + !BYTE $6A ; LAW _X031+4 +_F009 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $2E ; CS + !BYTE $10 + !BYTE $46,$69,$6C,$65,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$3A,$20 + !BYTE $54 ; CALL _X004 +_F010 !WORD 0 +; utilsrc/apple/ren.pla: 0019: return + !BYTE $26 ; LA _D034+0 +_F011 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 + !BYTE $54 ; CALL _X003 +_F013 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/ren.pla: 0020: fin +_B003 +_B004 +; utilsrc/apple/ren.pla: 0021: arg = argNext(arg) +; utilsrc/apple/ren.pla: 0022: if ^arg +; utilsrc/apple/ren.pla: 0023: strcpy(@newfilename, arg) +; utilsrc/apple/ren.pla: 0024: // +; utilsrc/apple/ren.pla: 0025: // Rename file +; utilsrc/apple/ren.pla: 0026: // +; utilsrc/apple/ren.pla: 0027: if fileio:rename(@oldfilename, @newfilename) <> FILE_ERR_OK +; utilsrc/apple/ren.pla: 0028: puts("Unable to rename: "); puts(@oldfilename); puts(" --> "); puts(@newfilename); putln + !BYTE $6A ; LAW _D033+0 +_F014 !WORD _D033+0 + !BYTE $54 ; CALL _X030 +_F015 !WORD 0 + !BYTE $7A ; SAW _D033+0 +_F016 !WORD _D033+0 + !BYTE $6A ; LAW _D033+0 +_F017 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $26 ; LA _D035+0 +_F018 !WORD _D035+0 + !BYTE $6A ; LAW _D033+0 +_F019 !WORD _D033+0 + !BYTE $54 ; CALL _X019 +_F020 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D034+0 +_F021 !WORD _D034+0 + !BYTE $26 ; LA _D035+0 +_F022 !WORD _D035+0 + !BYTE $6A ; LAW _X031+26 +_F023 !WORD 0+26 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $2E ; CS + !BYTE $12 + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$72,$65,$6E,$61,$6D,$65 + !BYTE $3A,$20 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 + !BYTE $26 ; LA _D034+0 +_F025 !WORD _D034+0 + !BYTE $54 ; CALL _X004 +_F026 !WORD 0 + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$2D,$2D,$3E,$20 + !BYTE $54 ; CALL _X004 +_F027 !WORD 0 +; utilsrc/apple/ren.pla: 0029: fin + !BYTE $26 ; LA _D035+0 +_F028 !WORD _D035+0 + !BYTE $54 ; CALL _X004 +_F029 !WORD 0 + !BYTE $54 ; CALL _X003 +_F030 !WORD 0 +_B007 +_B008 +; utilsrc/apple/ren.pla: 0030: return + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/ren.pla: 0031: fin +_B005 +_B006 +; utilsrc/apple/ren.pla: 0032: fin +_B001 +_B002 +; utilsrc/apple/ren.pla: 0033: puts("Usage: +REN OLDNAME NEWNAME\n") + !BYTE $2E ; CS + !BYTE $1C + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $52,$45,$4E,$20,$4F,$4C,$44,$4E + !BYTE $41,$4D,$45,$20,$4E,$45,$57,$4E + !BYTE $41,$4D,$45,$0D + !BYTE $54 ; CALL _X004 +_F031 !WORD 0 +; utilsrc/apple/ren.pla: 0034: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 1 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/sos.a b/src/utilsrc/apple/sos.a new file mode 100644 index 0000000..a857562 --- /dev/null +++ b/src/utilsrc/apple/sos.a @@ -0,0 +1,916 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/sos.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/sos.pla: 0001: +; utilsrc/apple/sos.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/sos.pla: 0002: +; utilsrc/apple/sos.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; utilsrc/apple/sos.pla: 0003: +; utilsrc/apple/sos.pla: 0004: +; utilsrc/apple/sos.pla: 0005: word arg, ref, interp + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D033 !FILL 2 ; arg, ref, interp +_D034 !FILL 2 ; ref, interp +_D035 !FILL 2 ; interp +; utilsrc/apple/sos.pla: 0006: +; utilsrc/apple/sos.pla: 0007: asm equates +_A000 ; equates() +; utilsrc/apple/sos.pla: 0008: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; utilsrc/apple/sos.pla: 0009: end +; utilsrc/apple/sos.pla: 0010: // +; utilsrc/apple/sos.pla: 0011: // Exec SOS.INTERP image +; utilsrc/apple/sos.pla: 0012: // +; utilsrc/apple/sos.pla: 0013: asm sosexec(addr)#0 +_A001 ; sosexec() +; utilsrc/apple/sos.pla: 0014: LDA ESTKL,X ; PULL ADDRESSES FROM INTERP HEADER + LDA ESTKL,X ; PULL ADDRESSES FROM INTERP HEADER +; utilsrc/apple/sos.pla: 0015: STA SRCL + STA SRCL +; utilsrc/apple/sos.pla: 0016: LDA ESTKH,X + LDA ESTKH,X +; utilsrc/apple/sos.pla: 0017: STA SRCH + STA SRCH +; utilsrc/apple/sos.pla: 0018: LDY #$0A + LDY #$0A +; utilsrc/apple/sos.pla: 0019: LDA (SRC),Y + LDA (SRC),Y +; utilsrc/apple/sos.pla: 0020: INY + INY +; utilsrc/apple/sos.pla: 0021: STA DSTL + STA DSTL +; utilsrc/apple/sos.pla: 0022: PHA + PHA +; utilsrc/apple/sos.pla: 0023: LDA (SRC),Y + LDA (SRC),Y +; utilsrc/apple/sos.pla: 0024: INY + INY +; utilsrc/apple/sos.pla: 0025: STA DSTH + STA DSTH +; utilsrc/apple/sos.pla: 0026: PHA + PHA +; utilsrc/apple/sos.pla: 0027: LDA (SRC),Y + LDA (SRC),Y +; utilsrc/apple/sos.pla: 0028: INY + INY +; utilsrc/apple/sos.pla: 0029: STA TMPL + STA TMPL +; utilsrc/apple/sos.pla: 0030: LDA (SRC),Y + LDA (SRC),Y +; utilsrc/apple/sos.pla: 0031: STA TMPH + STA TMPH +; utilsrc/apple/sos.pla: 0032: TYA ; SKIP INTERP HEADER FOR SRC + TYA ; SKIP INTERP HEADER FOR SRC +; utilsrc/apple/sos.pla: 0033: SEC + SEC +; utilsrc/apple/sos.pla: 0034: ADC SRCL + ADC SRCL +; utilsrc/apple/sos.pla: 0035: STA SRCL + STA SRCL +; utilsrc/apple/sos.pla: 0036: BCC + + BCC + +; utilsrc/apple/sos.pla: 0037: INC SRCH + INC SRCH +; utilsrc/apple/sos.pla: 0038: +; LDA SRCL ++; LDA SRCL ++; LDA SRCL +; utilsrc/apple/sos.pla: 0039: CMP DSTL + CMP DSTL +; utilsrc/apple/sos.pla: 0040: LDA SRCH + LDA SRCH +; utilsrc/apple/sos.pla: 0041: SBC DSTH + SBC DSTH +; utilsrc/apple/sos.pla: 0042: BCC REVCPY + BCC REVCPY +; utilsrc/apple/sos.pla: 0043: ; +; utilsrc/apple/sos.pla: 0044: ; FORWARD COPY +; FORWARD COPY +; utilsrc/apple/sos.pla: 0045: ; +; utilsrc/apple/sos.pla: 0046: LDY TMPL + LDY TMPL +; utilsrc/apple/sos.pla: 0047: BEQ FORCPYLP + BEQ FORCPYLP +; utilsrc/apple/sos.pla: 0048: INC TMPH + INC TMPH +; utilsrc/apple/sos.pla: 0049: LDY #$00 + LDY #$00 +; utilsrc/apple/sos.pla: 0050: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; utilsrc/apple/sos.pla: 0051: STA (DST),Y + STA (DST),Y +; utilsrc/apple/sos.pla: 0052: INY + INY +; utilsrc/apple/sos.pla: 0053: BNE + + BNE + +; utilsrc/apple/sos.pla: 0054: INC DSTH + INC DSTH +; utilsrc/apple/sos.pla: 0055: INC SRCH + INC SRCH +; utilsrc/apple/sos.pla: 0056: + DEC TMPL ++ DEC TMPL +; utilsrc/apple/sos.pla: 0057: BNE FORCPYLP + BNE FORCPYLP +; utilsrc/apple/sos.pla: 0058: DEC TMPH + DEC TMPH +; utilsrc/apple/sos.pla: 0059: BNE FORCPYLP + BNE FORCPYLP +; utilsrc/apple/sos.pla: 0060: BEQ CPYMEX + BEQ CPYMEX +; utilsrc/apple/sos.pla: 0061: ; +; utilsrc/apple/sos.pla: 0062: ; REVERSE COPY +; REVERSE COPY +; utilsrc/apple/sos.pla: 0063: ; +; utilsrc/apple/sos.pla: 0064: REVCPY ;CLC +REVCPY ;CLC +; utilsrc/apple/sos.pla: 0065: LDA TMPL + LDA TMPL +; utilsrc/apple/sos.pla: 0066: ADC DSTL + ADC DSTL +; utilsrc/apple/sos.pla: 0067: STA DSTL + STA DSTL +; utilsrc/apple/sos.pla: 0068: LDA TMPH + LDA TMPH +; utilsrc/apple/sos.pla: 0069: ADC DSTH + ADC DSTH +; utilsrc/apple/sos.pla: 0070: STA DSTH + STA DSTH +; utilsrc/apple/sos.pla: 0071: CLC + CLC +; utilsrc/apple/sos.pla: 0072: LDA TMPL + LDA TMPL +; utilsrc/apple/sos.pla: 0073: ADC SRCL + ADC SRCL +; utilsrc/apple/sos.pla: 0074: STA SRCL + STA SRCL +; utilsrc/apple/sos.pla: 0075: LDA TMPH + LDA TMPH +; utilsrc/apple/sos.pla: 0076: ADC SRCH + ADC SRCH +; utilsrc/apple/sos.pla: 0077: STA SRCH + STA SRCH +; utilsrc/apple/sos.pla: 0078: DEC DSTH + DEC DSTH +; utilsrc/apple/sos.pla: 0079: DEC SRCH + DEC SRCH +; utilsrc/apple/sos.pla: 0080: LDY #$FF + LDY #$FF +; utilsrc/apple/sos.pla: 0081: LDA TMPL + LDA TMPL +; utilsrc/apple/sos.pla: 0082: BEQ REVCPYLP + BEQ REVCPYLP +; utilsrc/apple/sos.pla: 0083: INC TMPH + INC TMPH +; utilsrc/apple/sos.pla: 0084: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; utilsrc/apple/sos.pla: 0085: STA (DST),Y + STA (DST),Y +; utilsrc/apple/sos.pla: 0086: DEY + DEY +; utilsrc/apple/sos.pla: 0087: CPY #$FF + CPY #$FF +; utilsrc/apple/sos.pla: 0088: BNE + + BNE + +; utilsrc/apple/sos.pla: 0089: DEC DSTH + DEC DSTH +; utilsrc/apple/sos.pla: 0090: DEC SRCH + DEC SRCH +; utilsrc/apple/sos.pla: 0091: + DEC TMPL ++ DEC TMPL +; utilsrc/apple/sos.pla: 0092: BNE REVCPYLP + BNE REVCPYLP +; utilsrc/apple/sos.pla: 0093: DEC TMPH + DEC TMPH +; utilsrc/apple/sos.pla: 0094: BNE REVCPYLP + BNE REVCPYLP +; utilsrc/apple/sos.pla: 0095: CPYMEX PLA +CPYMEX PLA +; utilsrc/apple/sos.pla: 0096: STA DSTH + STA DSTH +; utilsrc/apple/sos.pla: 0097: PLA + PLA +; utilsrc/apple/sos.pla: 0098: STA DSTL + STA DSTL +; utilsrc/apple/sos.pla: 0099: JMP (DST) ; JUMP TO INTERP + JMP (DST) ; JUMP TO INTERP +; utilsrc/apple/sos.pla: 0100: +; utilsrc/apple/sos.pla: 0101: end +; utilsrc/apple/sos.pla: 0102: def seg_release(segnum)#1 +_SUBSEG ; BYTECODE STARTS + ; segnum -> [0] +_C000 ; seg_release() +; utilsrc/apple/sos.pla: 0103: byte params[2] + ; params -> [2] +; utilsrc/apple/sos.pla: 0104: +; utilsrc/apple/sos.pla: 0105: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; utilsrc/apple/sos.pla: 0106: params.1 = segnum +; utilsrc/apple/sos.pla: 0107: perr = syscall($45, @params) +; utilsrc/apple/sos.pla: 0108: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$45 ; CB 69 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F000 !WORD 0 + !BYTE $7C ; DAB _X032+0 +_F001 !WORD 0+0 + !BYTE $5A,$04 ; LEAVE 4 +; utilsrc/apple/sos.pla: 0109: end +; utilsrc/apple/sos.pla: 0110: def strcmp(str1, str2) + ; str1 -> [0] + ; str2 -> [2] +_C001 ; strcmp() +; utilsrc/apple/sos.pla: 0111: byte i + ; i -> [4] +; utilsrc/apple/sos.pla: 0112: if (^str1 == ^str2) + !BYTE $58,$05,$02 ; ENTER 5,2 +; utilsrc/apple/sos.pla: 0113: for i = ^str1 downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $24 ; BRNE _B001 + !WORD _B001-* + !BYTE $02 ; CN 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $A2 ; BRLT _B003 + !WORD _B003-* +_B004 + !BYTE $6C,$04 ; DLB [4] +; utilsrc/apple/sos.pla: 0114: if ^(str1 + i) <> ^(str2 + i) +; utilsrc/apple/sos.pla: 0115: return FALSE + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $60 ; LB + !BYTE $22 ; BREQ _B006 + !WORD _B006-* + !BYTE $32 ; DROP2 + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; utilsrc/apple/sos.pla: 0116: fin +_B006 +_B007 +; utilsrc/apple/sos.pla: 0117: next +_B005 + !BYTE $A8 ; DECBRGE _B004 + !WORD _B004-* +_B003 + !BYTE $74,$04 ; SLB [4] + !BYTE $30 ; DROP +; utilsrc/apple/sos.pla: 0118: return TRUE + !BYTE $20 ; MINUS ONE + !BYTE $5A,$05 ; LEAVE 5 +; utilsrc/apple/sos.pla: 0119: fin +_B001 +_B002 +; utilsrc/apple/sos.pla: 0120: return FALSE + !BYTE $00 ; CN 0 + !BYTE $5A,$05 ; LEAVE 5 +; utilsrc/apple/sos.pla: 0121: end +; utilsrc/apple/sos.pla: 0122: if MACHID <> $F2 +_INIT +; utilsrc/apple/sos.pla: 0123: puts("Apple /// SOS required.\n") + !BYTE $68 ; LAB _X001+0 +_F002 !WORD 0+0 + !BYTE $2A,$F2 ; CB 242 + !BYTE $22 ; BREQ _B008 + !WORD _B008-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $41,$70,$70,$6C,$65,$20,$2F,$2F + !BYTE $2F,$20,$53,$4F,$53,$20,$72,$65 + !BYTE $71,$75,$69,$72,$65,$64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F003 !WORD 0 +; utilsrc/apple/sos.pla: 0124: return -1 + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; utilsrc/apple/sos.pla: 0125: fin +_B008 +_B009 +; utilsrc/apple/sos.pla: 0126: arg = argNext(argFirst) +; utilsrc/apple/sos.pla: 0127: if ^arg +; utilsrc/apple/sos.pla: 0128: ref = fileio:open(arg) +; utilsrc/apple/sos.pla: 0129: if ref +; utilsrc/apple/sos.pla: 0130: arg = argNext(arg) +; utilsrc/apple/sos.pla: 0131: if ^arg +; utilsrc/apple/sos.pla: 0132: fileio:setpfx(arg) +; utilsrc/apple/sos.pla: 0133: puts(arg); puts("/:\n") + !BYTE $54 ; CALL _X029 +_F004 !WORD 0 + !BYTE $54 ; CALL _X030 +_F005 !WORD 0 + !BYTE $7A ; SAW _D033+0 +_F006 !WORD _D033+0 + !BYTE $6A ; LAW _D033+0 +_F007 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $6A ; LAW _D033+0 +_F008 !WORD _D033+0 + !BYTE $6A ; LAW _X031+14 +_F009 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7E ; DAW _D034+0 +_F010 !WORD _D034+0 + !BYTE $4C ; BRFLS _B012 + !WORD _B012-* + !BYTE $6A ; LAW _D033+0 +_F011 !WORD _D033+0 + !BYTE $54 ; CALL _X030 +_F012 !WORD 0 + !BYTE $7A ; SAW _D033+0 +_F013 !WORD _D033+0 + !BYTE $6A ; LAW _D033+0 +_F014 !WORD _D033+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $6A ; LAW _D033+0 +_F015 !WORD _D033+0 + !BYTE $6A ; LAW _X031+2 +_F016 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D033+0 +_F017 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 + !BYTE $2E ; CS + !BYTE $03 + !BYTE $2F,$3A,$0D + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 +; utilsrc/apple/sos.pla: 0134: fin +_B014 +_B015 +; utilsrc/apple/sos.pla: 0135: interp = heapmark()+1 +; utilsrc/apple/sos.pla: 0136: fileio:read(ref, interp, heapavail()) +; utilsrc/apple/sos.pla: 0137: fileio:close(ref) +; utilsrc/apple/sos.pla: 0138: ^(interp - 1) = 8 +; utilsrc/apple/sos.pla: 0139: if strcmp(interp - 1, "SOS NTRP") + !BYTE $54 ; CALL _X012 +_F020 !WORD 0 + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D035+0 +_F021 !WORD _D035+0 + !BYTE $6A ; LAW _D034+0 +_F022 !WORD _D034+0 + !BYTE $6A ; LAW _D035+0 +_F023 !WORD _D035+0 + !BYTE $54 ; CALL _X016 +_F024 !WORD 0 + !BYTE $6A ; LAW _X031+18 +_F025 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D034+0 +_F026 !WORD _D034+0 + !BYTE $6A ; LAW _X031+16 +_F027 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $10 ; CN 8 + !BYTE $6A ; LAW _D035+0 +_F028 !WORD _D035+0 + !BYTE $8E ; DECR + !BYTE $70 ; SB + !BYTE $6A ; LAW _D035+0 +_F029 !WORD _D035+0 + !BYTE $8E ; DECR + !BYTE $2E ; CS + !BYTE $08 + !BYTE $53,$4F,$53,$20,$4E,$54,$52,$50 + !BYTE $54 ; CALL _C001 +_F030 !WORD _C001 + !BYTE $4C ; BRFLS _B016 + !WORD _B016-* +; utilsrc/apple/sos.pla: 0140: //puts("INTERP opt hdr: $"); puth(interp=>$08); putln +; utilsrc/apple/sos.pla: 0141: //puts("INTERP address: $"); puth(interp=>$0A); putln +; utilsrc/apple/sos.pla: 0142: //puts("INTERP size: $"); puth(interp=>$0C); putln +; utilsrc/apple/sos.pla: 0143: fileio:close(0) // Close all files +; utilsrc/apple/sos.pla: 0144: seg_release(0) // Free all segments +; utilsrc/apple/sos.pla: 0145: sosexec(interp) +; utilsrc/apple/sos.pla: 0146: else + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X031+16 +_F031 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C000 +_F032 !WORD _C000 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D035+0 +_F033 !WORD _D035+0 + !BYTE $54 ; CALL _A001 +_F034 !WORD _A001 + !BYTE $50 ; BRNCH _B017 + !WORD _B017-* +_B016 +; utilsrc/apple/sos.pla: 0147: puts("Not a SOS.INTERP file.\n") + !BYTE $2E ; CS + !BYTE $17 + !BYTE $4E,$6F,$74,$20,$61,$20,$53,$4F + !BYTE $53,$2E,$49,$4E,$54,$45,$52,$50 + !BYTE $20,$66,$69,$6C,$65,$2E,$0D + !BYTE $54 ; CALL _X004 +_F035 !WORD 0 +; utilsrc/apple/sos.pla: 0148: fin +_B017 +; utilsrc/apple/sos.pla: 0149: else + !BYTE $50 ; BRNCH _B013 + !WORD _B013-* +_B012 +; utilsrc/apple/sos.pla: 0150: puts("File not found.\n") + !BYTE $2E ; CS + !BYTE $10 + !BYTE $46,$69,$6C,$65,$20,$6E,$6F,$74 + !BYTE $20,$66,$6F,$75,$6E,$64,$2E,$0D + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 +; utilsrc/apple/sos.pla: 0151: fin +_B013 +; utilsrc/apple/sos.pla: 0152: else + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B010 +; utilsrc/apple/sos.pla: 0153: puts("Usage: +SOS [PREFIX]\n") + !BYTE $2E ; CS + !BYTE $22 + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $53,$4F,$53,$20,$3C,$53,$4F,$53 + !BYTE $2E,$49,$4E,$54,$45,$52,$50,$3E + !BYTE $20,$5B,$50,$52,$45,$46,$49,$58 + !BYTE $5D,$0D + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 +; utilsrc/apple/sos.pla: 0154: fin +_B011 +; utilsrc/apple/sos.pla: 0155: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 32 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 1 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: MACHID + !BYTE $CD,$C1,$C3,$C8,$C9,$44 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 1 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 32 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/type.a b/src/utilsrc/apple/type.a new file mode 100644 index 0000000..e0e85c1 --- /dev/null +++ b/src/utilsrc/apple/type.a @@ -0,0 +1,902 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/type.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/type.pla: 0001: +; utilsrc/apple/type.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/type.pla: 0002: +; utilsrc/apple/type.pla: 0003: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X031 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X032 +; inc/fileio.plh: 0080: end +; utilsrc/apple/type.pla: 0003: +; utilsrc/apple/type.pla: 0004: +; utilsrc/apple/type.pla: 0005: char[64] filename + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D033 !FILL 64 ; filename +; utilsrc/apple/type.pla: 0006: res[t_fileinfo] fileinfo +_D034 !FILL 15 ; fileinfo +; utilsrc/apple/type.pla: 0007: var arg, type, aux +_D035 !FILL 2 ; arg, type, aux +_D036 !FILL 2 ; type, aux +_D037 !FILL 2 ; aux +; utilsrc/apple/type.pla: 0008: // +; utilsrc/apple/type.pla: 0009: // Convert byte to two hex chars +; utilsrc/apple/type.pla: 0010: // +; utilsrc/apple/type.pla: 0011: //def putb(b)#0 +; utilsrc/apple/type.pla: 0012: // char h +; utilsrc/apple/type.pla: 0013: // +; utilsrc/apple/type.pla: 0014: // h = ((b >> 4) & $0F) + '0' +; utilsrc/apple/type.pla: 0015: // if h > '9' +; utilsrc/apple/type.pla: 0016: // h = h + 7 +; utilsrc/apple/type.pla: 0017: // fin +; utilsrc/apple/type.pla: 0018: // putc(h) +; utilsrc/apple/type.pla: 0019: // h = (b & $0F) + '0' +; utilsrc/apple/type.pla: 0020: // if h > '9' +; utilsrc/apple/type.pla: 0021: // h = h + 7 +; utilsrc/apple/type.pla: 0022: // fin +; utilsrc/apple/type.pla: 0023: // putc(h) +; utilsrc/apple/type.pla: 0024: //end +; utilsrc/apple/type.pla: 0025: def htoi(hexptr) +_SUBSEG ; BYTECODE STARTS + ; hexptr -> [0] +_C000 ; htoi() +; utilsrc/apple/type.pla: 0026: var val, i, n + ; val -> [2] + ; i -> [4] + ; n -> [6] +; utilsrc/apple/type.pla: 0027: +; utilsrc/apple/type.pla: 0028: val = 0 + !BYTE $58,$08,$01 ; ENTER 8,1 +; utilsrc/apple/type.pla: 0029: for i = 1 to ^hexptr + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $6E,$04 ; DLW [4] +; utilsrc/apple/type.pla: 0030: n = toupper(^(hexptr + i)) - '0' +; utilsrc/apple/type.pla: 0031: if n > 9 +; utilsrc/apple/type.pla: 0032: n = n - 7 +; utilsrc/apple/type.pla: 0033: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F000 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6E,$06 ; DLW [6] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $66,$06 ; LLW [6] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $76,$06 ; SLW [6] +_B004 +_B005 +; utilsrc/apple/type.pla: 0034: if n > 15 or n < 0 +; utilsrc/apple/type.pla: 0035: return val + !BYTE $66,$06 ; LLW [6] + !BYTE $1E ; CN 15 + !BYTE $44 ; ISGT + !BYTE $AE ; BROR _B006 + !WORD _B006-* + !BYTE $66,$06 ; LLW [6] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT +_B006 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $32 ; DROP2 + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$08 ; LEAVE 8 +; utilsrc/apple/type.pla: 0036: fin +_B007 +_B008 +; utilsrc/apple/type.pla: 0037: val = (val << 4) + n +; utilsrc/apple/type.pla: 0038: next + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$02 ; SLW [2] +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $76,$04 ; SLW [4] + !BYTE $30 ; DROP +; utilsrc/apple/type.pla: 0039: return val + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$08 ; LEAVE 8 +; utilsrc/apple/type.pla: 0040: end +; utilsrc/apple/type.pla: 0041: // +; utilsrc/apple/type.pla: 0042: // Check arguments and file types +; utilsrc/apple/type.pla: 0043: // +; utilsrc/apple/type.pla: 0044: arg = argNext(argFirst) +_INIT +; utilsrc/apple/type.pla: 0045: if ^arg +; utilsrc/apple/type.pla: 0046: strcpy(@filename, arg) +; utilsrc/apple/type.pla: 0047: // +; utilsrc/apple/type.pla: 0048: // Check if file exists +; utilsrc/apple/type.pla: 0049: // +; utilsrc/apple/type.pla: 0050: if fileio:getfileinfo(@filename, @fileinfo) == FILE_ERR_OK +; utilsrc/apple/type.pla: 0051: // +; utilsrc/apple/type.pla: 0052: // Check if re-typing a directory +; utilsrc/apple/type.pla: 0053: // +; utilsrc/apple/type.pla: 0054: if fileinfo.file_type <> $0F +; utilsrc/apple/type.pla: 0055: // +; utilsrc/apple/type.pla: 0056: // Check for optional overrides +; utilsrc/apple/type.pla: 0057: // +; utilsrc/apple/type.pla: 0058: arg = argNext(arg) +; utilsrc/apple/type.pla: 0059: if ^arg +; utilsrc/apple/type.pla: 0060: type = htoi(arg) +; utilsrc/apple/type.pla: 0061: if type > 255 +; utilsrc/apple/type.pla: 0062: puts("TYPE value out of range\n") + !BYTE $54 ; CALL _X029 +_F001 !WORD 0 + !BYTE $54 ; CALL _X030 +_F002 !WORD 0 + !BYTE $7A ; SAW _D035+0 +_F003 !WORD _D035+0 + !BYTE $6A ; LAW _D035+0 +_F004 !WORD _D035+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* + !BYTE $26 ; LA _D033+0 +_F005 !WORD _D033+0 + !BYTE $6A ; LAW _D035+0 +_F006 !WORD _D035+0 + !BYTE $54 ; CALL _X019 +_F007 !WORD 0 + !BYTE $30 ; DROP + !BYTE $26 ; LA _D033+0 +_F008 !WORD _D033+0 + !BYTE $26 ; LA _D034+0 +_F009 !WORD _D034+0 + !BYTE $6A ; LAW _X031+4 +_F010 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B011 + !WORD _B011-* + !BYTE $68 ; LAB _D034+1 +_F011 !WORD _D034+1 + !BYTE $1E ; CN 15 + !BYTE $22 ; BREQ _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D035+0 +_F012 !WORD _D035+0 + !BYTE $54 ; CALL _X030 +_F013 !WORD 0 + !BYTE $7A ; SAW _D035+0 +_F014 !WORD _D035+0 + !BYTE $6A ; LAW _D035+0 +_F015 !WORD _D035+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $6A ; LAW _D035+0 +_F016 !WORD _D035+0 + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $7E ; DAW _D036+0 +_F018 !WORD _D036+0 + !BYTE $2A,$FF ; CB 255 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2E ; CS + !BYTE $18 + !BYTE $54,$59,$50,$45,$20,$76,$61,$6C + !BYTE $75,$65,$20,$6F,$75,$74,$20,$6F + !BYTE $66,$20,$72,$61,$6E,$67,$65,$0D + !BYTE $54 ; CALL _X004 +_F019 !WORD 0 +; utilsrc/apple/type.pla: 0063: return + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/type.pla: 0064: fin +_B017 +_B018 +; utilsrc/apple/type.pla: 0065: // +; utilsrc/apple/type.pla: 0066: // Can't change something into directory +; utilsrc/apple/type.pla: 0067: // +; utilsrc/apple/type.pla: 0068: if type <> $0F +; utilsrc/apple/type.pla: 0069: fileinfo.file_type = type +; utilsrc/apple/type.pla: 0070: arg = argNext(arg) +; utilsrc/apple/type.pla: 0071: if ^arg +; utilsrc/apple/type.pla: 0072: aux = htoi(arg) +; utilsrc/apple/type.pla: 0073: fileinfo:aux_type = aux +; utilsrc/apple/type.pla: 0074: fin + !BYTE $6A ; LAW _D036+0 +_F020 !WORD _D036+0 + !BYTE $1E ; CN 15 + !BYTE $22 ; BREQ _B019 + !WORD _B019-* + !BYTE $6A ; LAW _D036+0 +_F021 !WORD _D036+0 + !BYTE $78 ; SAB _D034+1 +_F022 !WORD _D034+1 + !BYTE $6A ; LAW _D035+0 +_F023 !WORD _D035+0 + !BYTE $54 ; CALL _X030 +_F024 !WORD 0 + !BYTE $7A ; SAW _D035+0 +_F025 !WORD _D035+0 + !BYTE $6A ; LAW _D035+0 +_F026 !WORD _D035+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $6A ; LAW _D035+0 +_F027 !WORD _D035+0 + !BYTE $54 ; CALL _C000 +_F028 !WORD _C000 + !BYTE $7E ; DAW _D037+0 +_F029 !WORD _D037+0 + !BYTE $7A ; SAW _D034+2 +_F030 !WORD _D034+2 +_B021 +_B022 +; utilsrc/apple/type.pla: 0075: // +; utilsrc/apple/type.pla: 0076: // Update file type and aux values +; utilsrc/apple/type.pla: 0077: // +; utilsrc/apple/type.pla: 0078: if fileio:setfileinfo(@filename, @fileinfo) == FILE_ERR_OK +; utilsrc/apple/type.pla: 0079: if fileio:getfileinfo(@filename, @fileinfo) <> FILE_ERR_OK +; utilsrc/apple/type.pla: 0080: puts("Unable to reload file info: "); puts(@filename) + !BYTE $26 ; LA _D033+0 +_F031 !WORD _D033+0 + !BYTE $26 ; LA _D034+0 +_F032 !WORD _D034+0 + !BYTE $6A ; LAW _X031+6 +_F033 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B023 + !WORD _B023-* + !BYTE $26 ; LA _D033+0 +_F034 !WORD _D033+0 + !BYTE $26 ; LA _D034+0 +_F035 !WORD _D034+0 + !BYTE $6A ; LAW _X031+4 +_F036 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $2E ; CS + !BYTE $1C + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$72,$65,$6C,$6F,$61,$64 + !BYTE $20,$66,$69,$6C,$65,$20,$69,$6E + !BYTE $66,$6F,$3A,$20 + !BYTE $54 ; CALL _X004 +_F037 !WORD 0 +; utilsrc/apple/type.pla: 0081: fin + !BYTE $26 ; LA _D033+0 +_F038 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F039 !WORD 0 +_B025 +_B026 +; utilsrc/apple/type.pla: 0082: else + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +_B023 +; utilsrc/apple/type.pla: 0083: puts("Unable to change TYPE & AUX values: "); puts(@filename) + !BYTE $2E ; CS + !BYTE $24 + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$63,$68,$61,$6E,$67,$65 + !BYTE $20,$54,$59,$50,$45,$20,$26,$20 + !BYTE $41,$55,$58,$20,$76,$61,$6C,$75 + !BYTE $65,$73,$3A,$20 + !BYTE $54 ; CALL _X004 +_F040 !WORD 0 +; utilsrc/apple/type.pla: 0084: return + !BYTE $26 ; LA _D033+0 +_F041 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F042 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/type.pla: 0085: fin +_B024 +; utilsrc/apple/type.pla: 0086: fin +_B019 +_B020 +; utilsrc/apple/type.pla: 0087: fin +_B015 +_B016 +; utilsrc/apple/type.pla: 0088: else + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B013 +; utilsrc/apple/type.pla: 0089: puts("Unable to get file info: "); puts(@filename); putln + !BYTE $2E ; CS + !BYTE $19 + !BYTE $55,$6E,$61,$62,$6C,$65,$20,$74 + !BYTE $6F,$20,$67,$65,$74,$20,$66,$69 + !BYTE $6C,$65,$20,$69,$6E,$66,$6F,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F043 !WORD 0 +; utilsrc/apple/type.pla: 0090: fin + !BYTE $26 ; LA _D033+0 +_F044 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F045 !WORD 0 + !BYTE $54 ; CALL _X003 +_F046 !WORD 0 +_B014 +; utilsrc/apple/type.pla: 0091: fin +_B011 +_B012 +; utilsrc/apple/type.pla: 0092: puts(@filename); putc(':') +; utilsrc/apple/type.pla: 0093: putc('$'); putb(fileinfo.file_type); putc(' ') +; utilsrc/apple/type.pla: 0094: putc('$'); puth(fileinfo:aux_type); putln +; utilsrc/apple/type.pla: 0095: return + !BYTE $26 ; LA _D033+0 +_F047 !WORD _D033+0 + !BYTE $54 ; CALL _X004 +_F048 !WORD 0 + !BYTE $2A,$3A ; CB 58 + !BYTE $54 ; CALL _X002 +_F049 !WORD 0 + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F050 !WORD 0 + !BYTE $68 ; LAB _D034+1 +_F051 !WORD _D034+1 + !BYTE $54 ; CALL _X008 +_F052 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F053 !WORD 0 + !BYTE $2A,$24 ; CB 36 + !BYTE $54 ; CALL _X002 +_F054 !WORD 0 + !BYTE $6A ; LAW _D034+2 +_F055 !WORD _D034+2 + !BYTE $54 ; CALL _X009 +_F056 !WORD 0 + !BYTE $54 ; CALL _X003 +_F057 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +; utilsrc/apple/type.pla: 0096: fin +_B009 +_B010 +; utilsrc/apple/type.pla: 0097: puts("Usage: +TYPE FILE [HEXTYPE [HEXAUX]]\n") + !BYTE $2E ; CS + !BYTE $25 + !BYTE $55,$73,$61,$67,$65,$3A,$20,$2B + !BYTE $54,$59,$50,$45,$20,$46,$49,$4C + !BYTE $45,$20,$5B,$48,$45,$58,$54,$59 + !BYTE $50,$45,$20,$5B,$48,$45,$58,$41 + !BYTE $55,$58,$5D,$5D,$0D + !BYTE $54 ; CALL _X004 +_F058 !WORD 0 +; utilsrc/apple/type.pla: 0098: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 2 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/apple/zipchip.a b/src/utilsrc/apple/zipchip.a new file mode 100644 index 0000000..10fa1f7 --- /dev/null +++ b/src/utilsrc/apple/zipchip.a @@ -0,0 +1,549 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/apple/zipchip.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/apple/zipchip.pla: 0001: +; utilsrc/apple/zipchip.pla: 0002: include "inc/args.plh" +; inc/args.plh: 0001: import args + ; DCI STRING: ARGS + !BYTE $C1,$D2,$C7,$53 + ; ARGS -> X028 +; inc/args.plh: 0002: predef argFirst, argNext(str) + ; ARGFIRST -> X029 + ; ARGNEXT -> X030 +; inc/args.plh: 0003: end +; utilsrc/apple/zipchip.pla: 0002: +; utilsrc/apple/zipchip.pla: 0003: // +; utilsrc/apple/zipchip.pla: 0004: // ZIP Chip control +; utilsrc/apple/zipchip.pla: 0005: // +; utilsrc/apple/zipchip.pla: 0006: var arg, status, slots, clock, state, cache + !BYTE $00 ; END OF MODULE DEPENDENCIES +_D031 !FILL 2 ; arg, status, slots, clock, state, cache +_D032 !FILL 2 ; status, slots, clock, state, cache +_D033 !FILL 2 ; slots, clock, state, cache +_D034 !FILL 2 ; clock, state, cache +_D035 !FILL 2 ; state, cache +_D036 !FILL 2 ; cache +; utilsrc/apple/zipchip.pla: 0007: +; utilsrc/apple/zipchip.pla: 0008: byte _unlock[] +_D037 ; _unlock[] +; utilsrc/apple/zipchip.pla: 0009: byte = $A9, $5A // LDA #$5A + !BYTE $A9 + !BYTE $5A +; utilsrc/apple/zipchip.pla: 0010: byte = $8D, $5A, $C0 // STA $C05A + !BYTE $8D + !BYTE $5A + !BYTE $C0 +; utilsrc/apple/zipchip.pla: 0011: byte = $8D, $5A, $C0 // STA $C05A + !BYTE $8D + !BYTE $5A + !BYTE $C0 +; utilsrc/apple/zipchip.pla: 0012: byte = $8D, $5A, $C0 // STA $C05A + !BYTE $8D + !BYTE $5A + !BYTE $C0 +; utilsrc/apple/zipchip.pla: 0013: byte = $8D, $5A, $C0 // STA $C05A + !BYTE $8D + !BYTE $5A + !BYTE $C0 +; utilsrc/apple/zipchip.pla: 0014: byte = $60 // RTS + !BYTE $60 +; utilsrc/apple/zipchip.pla: 0015: +; utilsrc/apple/zipchip.pla: 0016: def unlock#0 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS +_C000 ; unlock() +; utilsrc/apple/zipchip.pla: 0017: (@_unlock)()#0 // Unlock regs (has to be machine code) +; utilsrc/apple/zipchip.pla: 0018: end + !BYTE $54 ; CALL _D037 +_F000 !WORD _D037 + !BYTE $5C ; RET +; utilsrc/apple/zipchip.pla: 0019: def lock#0 +_C001 ; lock() +; utilsrc/apple/zipchip.pla: 0020: ^$C05A = $A5 // Lock regs +; utilsrc/apple/zipchip.pla: 0021: end + !BYTE $2A,$A5 ; CB 165 + !BYTE $78,$5A,$C0 ; SAB 49242 + !BYTE $5C ; RET +; utilsrc/apple/zipchip.pla: 0022: +; utilsrc/apple/zipchip.pla: 0023: arg = argNext(argFirst) +_INIT +; utilsrc/apple/zipchip.pla: 0024: if ^arg +; utilsrc/apple/zipchip.pla: 0025: when toupper(arg->[1]) + !BYTE $54 ; CALL _X029 +_F001 !WORD 0 + !BYTE $54 ; CALL _X030 +_F002 !WORD 0 + !BYTE $7A ; SAW _D031+0 +_F003 !WORD _D031+0 + !BYTE $6A ; LAW _D031+0 +_F004 !WORD _D031+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $6A ; LAW _D031+0 +_F005 !WORD _D031+0 + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F006 !WORD 0 + !BYTE $52 ; SEL + !WORD _B004-* +; utilsrc/apple/zipchip.pla: 0026: is 'S' // Slow to 1 MHz +_B005 +; utilsrc/apple/zipchip.pla: 0027: unlock +; utilsrc/apple/zipchip.pla: 0028: ^$C05A = $00 +; utilsrc/apple/zipchip.pla: 0029: lock +; utilsrc/apple/zipchip.pla: 0030: puts("Slow speed\n") + !BYTE $54 ; CALL _C000 +_F007 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $78,$5A,$C0 ; SAB 49242 + !BYTE $54 ; CALL _C001 +_F008 !WORD _C001 + !BYTE $2E ; CS + !BYTE $0B + !BYTE $53,$6C,$6F,$77,$20,$73,$70,$65 + !BYTE $65,$64,$0D + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 +; utilsrc/apple/zipchip.pla: 0031: break + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +; utilsrc/apple/zipchip.pla: 0032: is 'F' // Enable acceleration +_B006 +; utilsrc/apple/zipchip.pla: 0033: unlock +; utilsrc/apple/zipchip.pla: 0034: ^$C05B = $FF +; utilsrc/apple/zipchip.pla: 0035: lock +; utilsrc/apple/zipchip.pla: 0036: puts("Fast speed\n") + !BYTE $54 ; CALL _C000 +_F010 !WORD _C000 + !BYTE $2A,$FF ; CB 255 + !BYTE $78,$5B,$C0 ; SAB 49243 + !BYTE $54 ; CALL _C001 +_F011 !WORD _C001 + !BYTE $2E ; CS + !BYTE $0B + !BYTE $46,$61,$73,$74,$20,$73,$70,$65 + !BYTE $65,$64,$0D + !BYTE $54 ; CALL _X004 +_F012 !WORD 0 +; utilsrc/apple/zipchip.pla: 0037: break + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +; utilsrc/apple/zipchip.pla: 0038: wend + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B004 + !BYTE $02 ; CASEBLOCK + !WORD $0046 + !WORD _B006-* + !WORD $0053 + !WORD _B005-* +_B003 +; utilsrc/apple/zipchip.pla: 0039: fin +_B001 +_B002 +; utilsrc/apple/zipchip.pla: 0040: unlock +; utilsrc/apple/zipchip.pla: 0041: status = ^$C05B +; utilsrc/apple/zipchip.pla: 0042: slots = ^$C05C +; utilsrc/apple/zipchip.pla: 0043: clock = ^$C05D +; utilsrc/apple/zipchip.pla: 0044: state = ^$C05E +; utilsrc/apple/zipchip.pla: 0045: cache = ^$C05F +; utilsrc/apple/zipchip.pla: 0046: lock +; utilsrc/apple/zipchip.pla: 0047: ^$C05F // AN3 off +; utilsrc/apple/zipchip.pla: 0048: puts("Status: $"); puth(status); putln + !BYTE $54 ; CALL _C000 +_F013 !WORD _C000 + !BYTE $68,$5B,$C0 ; LAB 49243 + !BYTE $7A ; SAW _D032+0 +_F014 !WORD _D032+0 + !BYTE $68,$5C,$C0 ; LAB 49244 + !BYTE $7A ; SAW _D033+0 +_F015 !WORD _D033+0 + !BYTE $68,$5D,$C0 ; LAB 49245 + !BYTE $7A ; SAW _D034+0 +_F016 !WORD _D034+0 + !BYTE $68,$5E,$C0 ; LAB 49246 + !BYTE $7A ; SAW _D035+0 +_F017 !WORD _D035+0 + !BYTE $68,$5F,$C0 ; LAB 49247 + !BYTE $7A ; SAW _D036+0 +_F018 !WORD _D036+0 + !BYTE $54 ; CALL _C001 +_F019 !WORD _C001 + !BYTE $68,$5F,$C0 ; LAB 49247 + !BYTE $30 ; DROP + !BYTE $2E ; CS + !BYTE $09 + !BYTE $53,$74,$61,$74,$75,$73,$3A,$20 + !BYTE $24 + !BYTE $54 ; CALL _X004 +_F020 !WORD 0 +; utilsrc/apple/zipchip.pla: 0049: puts("Slots: $"); puth(slots); putln + !BYTE $6A ; LAW _D032+0 +_F021 !WORD _D032+0 + !BYTE $54 ; CALL _X009 +_F022 !WORD 0 + !BYTE $54 ; CALL _X003 +_F023 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $53,$6C,$6F,$74,$73,$3A,$20,$20 + !BYTE $24 + !BYTE $54 ; CALL _X004 +_F024 !WORD 0 +; utilsrc/apple/zipchip.pla: 0050: puts("Clock: $"); puth(clock); putln + !BYTE $6A ; LAW _D033+0 +_F025 !WORD _D033+0 + !BYTE $54 ; CALL _X009 +_F026 !WORD 0 + !BYTE $54 ; CALL _X003 +_F027 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $43,$6C,$6F,$63,$6B,$3A,$20,$20 + !BYTE $24 + !BYTE $54 ; CALL _X004 +_F028 !WORD 0 +; utilsrc/apple/zipchip.pla: 0051: puts("State: $"); puth(state); putln + !BYTE $6A ; LAW _D034+0 +_F029 !WORD _D034+0 + !BYTE $54 ; CALL _X009 +_F030 !WORD 0 + !BYTE $54 ; CALL _X003 +_F031 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $53,$74,$61,$74,$65,$3A,$20,$20 + !BYTE $24 + !BYTE $54 ; CALL _X004 +_F032 !WORD 0 +; utilsrc/apple/zipchip.pla: 0052: puts("Cache: $"); puth(cache); putln + !BYTE $6A ; LAW _D035+0 +_F033 !WORD _D035+0 + !BYTE $54 ; CALL _X009 +_F034 !WORD 0 + !BYTE $54 ; CALL _X003 +_F035 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $43,$61,$63,$68,$65,$3A,$20,$20 + !BYTE $24 + !BYTE $54 ; CALL _X004 +_F036 !WORD 0 +; utilsrc/apple/zipchip.pla: 0053: done + !BYTE $6A ; LAW _D036+0 +_F037 !WORD _D036+0 + !BYTE $54 ; CALL _X009 +_F038 !WORD 0 + !BYTE $54 ; CALL _X003 +_F039 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 3 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: ARGFIRST + !BYTE $C1,$D2,$C7,$C6,$C9,$D2,$D3,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: ARGNEXT + !BYTE $C1,$D2,$C7,$CE,$C5,$D8,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/utilsrc/tftpd.a b/src/utilsrc/tftpd.a new file mode 100644 index 0000000..38dc1e6 --- /dev/null +++ b/src/utilsrc/tftpd.a @@ -0,0 +1,2676 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; utilsrc/tftpd.pla: 0001: // +; utilsrc/tftpd.pla: 0002: // TFTP Daemon +; utilsrc/tftpd.pla: 0003: // +; utilsrc/tftpd.pla: 0004: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; utilsrc/tftpd.pla: 0004: +; utilsrc/tftpd.pla: 0005: include "inc/inet.plh" +; inc/inet.plh: 0001: // +; inc/inet.plh: 0002: // iNet API +; inc/inet.plh: 0003: // +; inc/inet.plh: 0004: import iNet + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + ; INET -> X028 +; inc/inet.plh: 0005: struc t_inet +; inc/inet.plh: 0006: word initIP + ; initIP = 0 +; inc/inet.plh: 0007: word serviceIP + ; serviceIP = 2 +; inc/inet.plh: 0008: word openUDP + ; openUDP = 4 +; inc/inet.plh: 0009: word sendUDP + ; sendUDP = 6 +; inc/inet.plh: 0010: word closeUDP + ; closeUDP = 8 +; inc/inet.plh: 0011: word listenTCP + ; listenTCP = 10 +; inc/inet.plh: 0012: word connectTCP + ; connectTCP = 12 +; inc/inet.plh: 0013: word sendTCP + ; sendTCP = 14 +; inc/inet.plh: 0014: word closeTCP + ; closeTCP = 16 +; inc/inet.plh: 0015: word setInterfaceIP + ; setInterfaceIP = 18 +; inc/inet.plh: 0016: word getInterfaceHA + ; getInterfaceHA = 20 +; inc/inet.plh: 0017: word setDNS + ; setDNS = 22 +; inc/inet.plh: 0018: word resolveIP + ; resolveIP = 24 +; inc/inet.plh: 0019: word setCallback + ; setCallback = 26 +; inc/inet.plh: 0020: word setParam + ; setParam = 28 +; inc/inet.plh: 0021: end + ; t_inet = 30 +; inc/inet.plh: 0022: end +; utilsrc/tftpd.pla: 0005: +; utilsrc/tftpd.pla: 0006: include "inc/fileio.plh" +; inc/fileio.plh: 0001: import fileio + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + ; FILEIO -> X029 +; inc/fileio.plh: 0002: // +; inc/fileio.plh: 0003: // Useful ProDOS values +; inc/fileio.plh: 0004: // +; inc/fileio.plh: 0005: // MACHID is defined in cmdsys.plh +; inc/fileio.plh: 0006: // Which slot has a ROM +; inc/fileio.plh: 0007: const SLTBYT = $BF99 + ; SLTBYT = 49049 +; inc/fileio.plh: 0008: // Prefix active +; inc/fileio.plh: 0009: const PFIXPTR = $BF9A + ; PFIXPTR = 49050 +; inc/fileio.plh: 0010: // Memory alocate bitmap +; inc/fileio.plh: 0011: const MEMTABL = $BF58 + ; MEMTABL = 48984 +; inc/fileio.plh: 0012: // +; inc/fileio.plh: 0013: // SOS/ProDOS error codes +; inc/fileio.plh: 0014: // +; inc/fileio.plh: 0015: const FILE_ERR_OK = $00 + ; FILE_ERR_OK = 0 +; inc/fileio.plh: 0016: const FILE_ERR_BAD_CALL_NUM = $01 + ; FILE_ERR_BAD_CALL_NUM = 1 +; inc/fileio.plh: 0017: const FILE_ERR_BAD_PARAM_CNT = $04 + ; FILE_ERR_BAD_PARAM_CNT = 4 +; inc/fileio.plh: 0018: const FILE_ERR_INT_TBL_FULL = $25 + ; FILE_ERR_INT_TBL_FULL = 37 +; inc/fileio.plh: 0019: const FILE_ERR_IO = $27 + ; FILE_ERR_IO = 39 +; inc/fileio.plh: 0020: // +; inc/fileio.plh: 0021: // File entry struc +; inc/fileio.plh: 0022: // +; inc/fileio.plh: 0023: struc t_fileentry +; inc/fileio.plh: 0024: byte store_namelen + ; store_namelen = 0 +; inc/fileio.plh: 0025: byte entry_name[15] + ; entry_name = 1 +; inc/fileio.plh: 0026: byte entry_type + ; entry_type = 16 +; inc/fileio.plh: 0027: word entry_keyptr + ; entry_keyptr = 17 +; inc/fileio.plh: 0028: word entry_blocks + ; entry_blocks = 19 +; inc/fileio.plh: 0029: word entry_EOFL + ; entry_EOFL = 21 +; inc/fileio.plh: 0030: byte entry_EOFH + ; entry_EOFH = 23 +; inc/fileio.plh: 0031: word entry_create[2] + ; entry_create = 24 +; inc/fileio.plh: 0032: byte entry_version + ; entry_version = 28 +; inc/fileio.plh: 0033: byte entry_minver + ; entry_minver = 29 +; inc/fileio.plh: 0034: byte entry_access + ; entry_access = 30 +; inc/fileio.plh: 0035: word entry_aux + ; entry_aux = 31 +; inc/fileio.plh: 0036: word entry_mod[2] + ; entry_mod = 33 +; inc/fileio.plh: 0037: word entry_headptr + ; entry_headptr = 37 +; inc/fileio.plh: 0038: end + ; t_fileentry = 39 +; inc/fileio.plh: 0039: // +; inc/fileio.plh: 0040: // File info struc +; inc/fileio.plh: 0041: // +; inc/fileio.plh: 0042: struc t_fileinfo +; inc/fileio.plh: 0043: byte file_access + ; file_access = 0 +; inc/fileio.plh: 0044: byte file_type + ; file_type = 1 +; inc/fileio.plh: 0045: word aux_type + ; aux_type = 2 +; inc/fileio.plh: 0046: byte storage_type + ; storage_type = 4 +; inc/fileio.plh: 0047: word blocks_used + ; blocks_used = 5 +; inc/fileio.plh: 0048: word mod_date + ; mod_date = 7 +; inc/fileio.plh: 0049: word mod_time + ; mod_time = 9 +; inc/fileio.plh: 0050: word create_date + ; create_date = 11 +; inc/fileio.plh: 0051: word create_time + ; create_time = 13 +; inc/fileio.plh: 0052: end + ; t_fileinfo = 15 +; inc/fileio.plh: 0053: // +; inc/fileio.plh: 0054: // File functions +; inc/fileio.plh: 0055: // +; inc/fileio.plh: 0056: struc t_fileio +; inc/fileio.plh: 0057: word getpfx + ; getpfx = 0 +; inc/fileio.plh: 0058: word setpfx + ; setpfx = 2 +; inc/fileio.plh: 0059: word getfileinfo + ; getfileinfo = 4 +; inc/fileio.plh: 0060: word setfileinfo + ; setfileinfo = 6 +; inc/fileio.plh: 0061: word geteof + ; geteof = 8 +; inc/fileio.plh: 0062: word seteof + ; seteof = 10 +; inc/fileio.plh: 0063: word iobufalloc + ; iobufalloc = 12 +; inc/fileio.plh: 0064: word open + ; open = 14 +; inc/fileio.plh: 0065: word close + ; close = 16 +; inc/fileio.plh: 0066: word read + ; read = 18 +; inc/fileio.plh: 0067: word write + ; write = 20 +; inc/fileio.plh: 0068: word create + ; create = 22 +; inc/fileio.plh: 0069: word destroy + ; destroy = 24 +; inc/fileio.plh: 0070: word rename + ; rename = 26 +; inc/fileio.plh: 0071: word newline + ; newline = 28 +; inc/fileio.plh: 0072: word online + ; online = 30 +; inc/fileio.plh: 0073: word readblock + ; readblock = 32 +; inc/fileio.plh: 0074: word writeblock + ; writeblock = 34 +; inc/fileio.plh: 0075: end + ; t_fileio = 36 +; inc/fileio.plh: 0076: // +; inc/fileio.plh: 0077: // Globally accessible error code +; inc/fileio.plh: 0078: // +; inc/fileio.plh: 0079: byte perr + ; PERR -> X030 +; inc/fileio.plh: 0080: end +; utilsrc/tftpd.pla: 0006: +; utilsrc/tftpd.pla: 0007: include "inc/conio.plh" +; inc/conio.plh: 0001: import conio + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + ; CONIO -> X031 +; inc/conio.plh: 0002: const NORMAL = $FF + ; NORMAL = 255 +; inc/conio.plh: 0003: const INVERSE = $3F + ; INVERSE = 63 +; inc/conio.plh: 0004: const FLASH = $7F + ; FLASH = 127 +; inc/conio.plh: 0005: const ECHO_ON = $80 + ; ECHO_ON = 128 +; inc/conio.plh: 0006: const ECHO_OFF = $00 + ; ECHO_OFF = 0 +; inc/conio.plh: 0007: struc t_conio +; inc/conio.plh: 0008: word keypressed + ; keypressed = 0 +; inc/conio.plh: 0009: word getkey + ; getkey = 2 +; inc/conio.plh: 0010: word echo + ; echo = 4 +; inc/conio.plh: 0011: word home + ; home = 6 +; inc/conio.plh: 0012: word gotoxy + ; gotoxy = 8 +; inc/conio.plh: 0013: word viewport + ; viewport = 10 +; inc/conio.plh: 0014: word texttype + ; texttype = 12 +; inc/conio.plh: 0015: word textmode + ; textmode = 14 +; inc/conio.plh: 0016: word grmode + ; grmode = 16 +; inc/conio.plh: 0017: word grcolor + ; grcolor = 18 +; inc/conio.plh: 0018: word grplot + ; grplot = 20 +; inc/conio.plh: 0019: word tone + ; tone = 22 +; inc/conio.plh: 0020: word rnd + ; rnd = 24 +; inc/conio.plh: 0021: end + ; t_conio = 26 +; inc/conio.plh: 0022: end +; utilsrc/tftpd.pla: 0007: +; utilsrc/tftpd.pla: 0008: sysflags nojitc // Keep JITC from compiling and pausing while transferring + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; utilsrc/tftpd.pla: 0009: // +; utilsrc/tftpd.pla: 0010: // TFTP values +; utilsrc/tftpd.pla: 0011: // +; utilsrc/tftpd.pla: 0012: const TFTP_PORT = 69 + ; TFTP_PORT = 69 +; utilsrc/tftpd.pla: 0013: const TID_INC = $0010 + ; TID_INC = 16 +; utilsrc/tftpd.pla: 0014: const RRQ = $0100 + ; RRQ = 256 +; utilsrc/tftpd.pla: 0015: const WRQ = $0200 + ; WRQ = 512 +; utilsrc/tftpd.pla: 0016: const DATAPKT = $0300 + ; DATAPKT = 768 +; utilsrc/tftpd.pla: 0017: const ACKPKT = $0400 + ; ACKPKT = 1024 +; utilsrc/tftpd.pla: 0018: const ERRPKT = $0500 + ; ERRPKT = 1280 +; utilsrc/tftpd.pla: 0019: struc t_errPkt +; utilsrc/tftpd.pla: 0020: word errOp + ; errOp = 0 +; utilsrc/tftpd.pla: 0021: word errCode + ; errCode = 2 +; utilsrc/tftpd.pla: 0022: byte errStr[] + ; errStr = 4 +; utilsrc/tftpd.pla: 0023: byte errStrNull + ; errStrNull = 4 +; utilsrc/tftpd.pla: 0024: end + ; t_errPkt = 5 +; utilsrc/tftpd.pla: 0025: struc t_ackPkt +; utilsrc/tftpd.pla: 0026: word ackOp + ; ackOp = 0 +; utilsrc/tftpd.pla: 0027: word ackBlock + ; ackBlock = 2 +; utilsrc/tftpd.pla: 0028: end + ; t_ackPkt = 4 +; utilsrc/tftpd.pla: 0029: struc t_datPkt +; utilsrc/tftpd.pla: 0030: word datOp + ; datOp = 0 +; utilsrc/tftpd.pla: 0031: word datBlock + ; datBlock = 2 +; utilsrc/tftpd.pla: 0032: byte datBytes[] + ; datBytes = 4 +; utilsrc/tftpd.pla: 0033: end + ; t_datPkt = 4 +; utilsrc/tftpd.pla: 0034: res[t_errPkt] tftpError = $00, $05, $00, $00, $00 +_D032 ; tftpError = $00, $05, $00, $00, $00 + !BYTE $00 + !BYTE $05 + !BYTE $00 + !BYTE $00 + !BYTE $00 +; utilsrc/tftpd.pla: 0035: res[t_ackPkt] tftpAck = $00, $04, $00, $00 +_D033 ; tftpAck = $00, $04, $00, $00 + !BYTE $00 + !BYTE $04 + !BYTE $00 + !BYTE $00 +; utilsrc/tftpd.pla: 0036: // +; utilsrc/tftpd.pla: 0037: // Current file operations +; utilsrc/tftpd.pla: 0038: // +; utilsrc/tftpd.pla: 0039: byte ref, type, , netscii, filename[256] +_D034 !FILL 1 ; ref, type, , netscii, filename[256] +_D035 !FILL 1 ; type, , netscii, filename[256] + !FILL $01 +_D036 !FILL 1 ; netscii, filename[256] +_D037 !FILL 256 ; filename[256] +; utilsrc/tftpd.pla: 0040: word aux, block +_D038 !FILL 2 ; aux, block +_D039 !FILL 2 ; block +; utilsrc/tftpd.pla: 0041: word buff, TID = $1001 +_D040 !FILL 2 ; buff, TID = $1001 +_D041 ; TID = $1001 + !WORD $1001 +; utilsrc/tftpd.pla: 0042: word portTFTP, portTID +_D042 !FILL 2 ; portTFTP, portTID +_D043 !FILL 2 ; portTID +; utilsrc/tftpd.pla: 0043: // +; utilsrc/tftpd.pla: 0044: // Swap bytes in word +; utilsrc/tftpd.pla: 0045: // +; utilsrc/tftpd.pla: 0046: asm swab(val) +_A000 ; swab() +; utilsrc/tftpd.pla: 0047: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; utilsrc/tftpd.pla: 0048: LDA ESTKL,X + LDA ESTKL,X +; utilsrc/tftpd.pla: 0049: LDY ESTKH,X + LDY ESTKH,X +; utilsrc/tftpd.pla: 0050: STA ESTKH,X + STA ESTKH,X +; utilsrc/tftpd.pla: 0051: STY ESTKL,X + STY ESTKL,X +; utilsrc/tftpd.pla: 0052: RTS + RTS +; utilsrc/tftpd.pla: 0053: end +; utilsrc/tftpd.pla: 0054: // +; utilsrc/tftpd.pla: 0055: // Translate 'in' value to 'out' value +; utilsrc/tftpd.pla: 0056: // +; utilsrc/tftpd.pla: 0057: asm xlat(in, out, buf, len)#0 +_A001 ; xlat() +; utilsrc/tftpd.pla: 0058: INX + INX +; utilsrc/tftpd.pla: 0059: INX + INX +; utilsrc/tftpd.pla: 0060: INX + INX +; utilsrc/tftpd.pla: 0061: INX + INX +; utilsrc/tftpd.pla: 0062: LDA ESTKL-4,X + LDA ESTKL-4,X +; utilsrc/tftpd.pla: 0063: ORA ESTKH-4,X + ORA ESTKH-4,X +; utilsrc/tftpd.pla: 0064: BEQ XLATEX + BEQ XLATEX +; utilsrc/tftpd.pla: 0065: LDA ESTKL-3,X + LDA ESTKL-3,X +; utilsrc/tftpd.pla: 0066: STA SRCL + STA SRCL +; utilsrc/tftpd.pla: 0067: LDA ESTKH-3,X + LDA ESTKH-3,X +; utilsrc/tftpd.pla: 0068: STA SRCH + STA SRCH +; utilsrc/tftpd.pla: 0069: LDA ESTKL-1,X + LDA ESTKL-1,X +; utilsrc/tftpd.pla: 0070: LDY ESTKL-4,X + LDY ESTKL-4,X +; utilsrc/tftpd.pla: 0071: BEQ XLATLP + BEQ XLATLP +; utilsrc/tftpd.pla: 0072: INC ESTKH-4,X + INC ESTKH-4,X +; utilsrc/tftpd.pla: 0073: LDY #$00 + LDY #$00 +; utilsrc/tftpd.pla: 0074: XLATLP CMP (SRC),Y +XLATLP CMP (SRC),Y +; utilsrc/tftpd.pla: 0075: BNE + + BNE + +; utilsrc/tftpd.pla: 0076: LDA ESTKL-2,X + LDA ESTKL-2,X +; utilsrc/tftpd.pla: 0077: STA (SRC),Y + STA (SRC),Y +; utilsrc/tftpd.pla: 0078: LDA ESTKL-1,X + LDA ESTKL-1,X +; utilsrc/tftpd.pla: 0079: + INY ++ INY +; utilsrc/tftpd.pla: 0080: BNE + + BNE + +; utilsrc/tftpd.pla: 0081: INC DSTH + INC DSTH +; utilsrc/tftpd.pla: 0082: INC SRCH + INC SRCH +; utilsrc/tftpd.pla: 0083: + DEC ESTKL-4,X ++ DEC ESTKL-4,X +; utilsrc/tftpd.pla: 0084: BNE XLATLP + BNE XLATLP +; utilsrc/tftpd.pla: 0085: DEC ESTKH-4,X + DEC ESTKH-4,X +; utilsrc/tftpd.pla: 0086: BNE XLATLP + BNE XLATLP +; utilsrc/tftpd.pla: 0087: XLATEX RTS +XLATEX RTS +; utilsrc/tftpd.pla: 0088: end +; utilsrc/tftpd.pla: 0089: // +; utilsrc/tftpd.pla: 0090: // Convert byte to two hex chars +; utilsrc/tftpd.pla: 0091: // +; utilsrc/tftpd.pla: 0092: def btoh(cptr, b)#0 +_SUBSEG ; BYTECODE STARTS + ; cptr -> [0] + ; b -> [2] +_C000 ; btoh() +; utilsrc/tftpd.pla: 0093: byte h + ; h -> [4] +; utilsrc/tftpd.pla: 0094: +; utilsrc/tftpd.pla: 0095: h = ((b >> 4) & $0F) + '0' + !BYTE $58,$05,$02 ; ENTER 5,2 +; utilsrc/tftpd.pla: 0096: if h > '9' +; utilsrc/tftpd.pla: 0097: h = h + 7 +; utilsrc/tftpd.pla: 0098: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$04 ; DLB [4] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $64,$04 ; LLB [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$04 ; SLB [4] +_B001 +_B002 +; utilsrc/tftpd.pla: 0099: ^cptr = h +; utilsrc/tftpd.pla: 0100: cptr++ + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; utilsrc/tftpd.pla: 0101: h = (b & $0F) + '0' +; utilsrc/tftpd.pla: 0102: if h > '9' +; utilsrc/tftpd.pla: 0103: h = h + 7 +; utilsrc/tftpd.pla: 0104: fin + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $38,$30 ; ADDI 48 + !BYTE $6C,$04 ; DLB [4] + !BYTE $2A,$39 ; CB 57 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $64,$04 ; LLB [4] + !BYTE $38,$07 ; ADDI 7 + !BYTE $74,$04 ; SLB [4] +_B003 +_B004 +; utilsrc/tftpd.pla: 0105: ^cptr = h +; utilsrc/tftpd.pla: 0106: end + !BYTE $64,$04 ; LLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $5A,$05 ; LEAVE 5 +; utilsrc/tftpd.pla: 0107: +; utilsrc/tftpd.pla: 0108: def hexByte(hexChars) + ; hexChars -> [0] +_C001 ; hexByte() +; utilsrc/tftpd.pla: 0109: byte lo, hi + ; lo -> [2] + ; hi -> [3] +; utilsrc/tftpd.pla: 0110: +; utilsrc/tftpd.pla: 0111: lo = toupper(^(hexChars + 1)) - '0' + !BYTE $58,$04,$01 ; ENTER 4,1 +; utilsrc/tftpd.pla: 0112: if lo > 9 +; utilsrc/tftpd.pla: 0113: lo = lo - 7 +; utilsrc/tftpd.pla: 0114: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F000 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6C,$02 ; DLB [2] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $64,$02 ; LLB [2] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$02 ; SLB [2] +_B005 +_B006 +; utilsrc/tftpd.pla: 0115: hi = toupper(^hexChars) - '0' +; utilsrc/tftpd.pla: 0116: if hi > 9 +; utilsrc/tftpd.pla: 0117: hi = hi - 7 +; utilsrc/tftpd.pla: 0118: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F001 !WORD 0 + !BYTE $3A,$30 ; SUBI 48 + !BYTE $6C,$03 ; DLB [3] + !BYTE $12 ; CN 9 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $64,$03 ; LLB [3] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$03 ; SLB [3] +_B007 +_B008 +; utilsrc/tftpd.pla: 0119: return (hi << 4) | lo + !BYTE $64,$03 ; LLB [3] + !BYTE $08 ; CN 4 + !BYTE $9A ; SHL + !BYTE $64,$02 ; LLB [2] + !BYTE $96 ; OR + !BYTE $5A,$04 ; LEAVE 4 +; utilsrc/tftpd.pla: 0120: end +; utilsrc/tftpd.pla: 0121: def hexWord(hexChars) + ; hexChars -> [0] +_C002 ; hexWord() +; utilsrc/tftpd.pla: 0122: return (hexByte(hexChars) << 8) | hexByte(hexChars + 2) + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C001 +_F002 !WORD _C001 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C001 +_F003 !WORD _C001 + !BYTE $96 ; OR + !BYTE $5A,$02 ; LEAVE 2 +; utilsrc/tftpd.pla: 0123: end +; utilsrc/tftpd.pla: 0124: def mkProName(netName, proName)#3 + ; netName -> [0] + ; proName -> [2] +_C003 ; mkProName() +; utilsrc/tftpd.pla: 0125: byte n, l, ascii, proType + ; n -> [4] + ; l -> [5] + ; ascii -> [6] + ; proType -> [7] +; utilsrc/tftpd.pla: 0126: word proAux + ; proAux -> [8] +; utilsrc/tftpd.pla: 0127: +; utilsrc/tftpd.pla: 0128: proType = $02 // default to BIN + !BYTE $58,$0A,$02 ; ENTER 10,2 +; utilsrc/tftpd.pla: 0129: proAux = $0000 // default to 0 +; utilsrc/tftpd.pla: 0130: // +; utilsrc/tftpd.pla: 0131: // Check for CiderPress style extension +; utilsrc/tftpd.pla: 0132: // +; utilsrc/tftpd.pla: 0133: for l = 0 to 255 + !BYTE $04 ; CN 2 + !BYTE $74,$07 ; SLB [7] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $2A,$FF ; CB 255 + !BYTE $00 ; CN 0 +_B010 + !BYTE $6C,$05 ; DLB [5] +; utilsrc/tftpd.pla: 0134: if netName->[l] == 0; break; fin + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* + !BYTE $50 ; BRNCH _B009 + !WORD _B009-* +_B012 +_B013 +; utilsrc/tftpd.pla: 0135: next +_B011 + !BYTE $A4 ; INCBRLE _B010 + !WORD _B010-* +_B009 + !BYTE $74,$05 ; SLB [5] + !BYTE $30 ; DROP +; utilsrc/tftpd.pla: 0136: ascii = toupper(netName->[l + 1]) == 'N' // Netscii mode +; utilsrc/tftpd.pla: 0137: if l > 7 and ^(netName + l - 7) == '#' +; utilsrc/tftpd.pla: 0138: proType = hexByte(netName + l - 6) +; utilsrc/tftpd.pla: 0139: proAux = hexWord(netName + l - 4) +; utilsrc/tftpd.pla: 0140: l = l - 7 +; utilsrc/tftpd.pla: 0141: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$05 ; LLB [5] + !BYTE $8C ; INCR + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _X021 +_F004 !WORD 0 + !BYTE $2A,$4E ; CB 78 + !BYTE $40 ; ISEQ + !BYTE $74,$06 ; SLB [6] + !BYTE $64,$05 ; LLB [5] + !BYTE $0E ; CN 7 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B014 + !WORD _B014-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $60 ; LB + !BYTE $2A,$23 ; CB 35 + !BYTE $40 ; ISEQ +_B014 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $3A,$06 ; SUBI 6 + !BYTE $54 ; CALL _C001 +_F005 !WORD _C001 + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$05 ; ADDLB [5] + !BYTE $3A,$04 ; SUBI 4 + !BYTE $54 ; CALL _C002 +_F006 !WORD _C002 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$05 ; LLB [5] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $74,$05 ; SLB [5] +_B015 +_B016 +; utilsrc/tftpd.pla: 0142: memcpy(proName + 1, netName, l) +; utilsrc/tftpd.pla: 0143: ^proName = l +; utilsrc/tftpd.pla: 0144: return ascii, proType, proAux + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $64,$05 ; LLB [5] + !BYTE $54 ; CALL _X018 +_F007 !WORD 0 + !BYTE $64,$05 ; LLB [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $64,$06 ; LLB [6] + !BYTE $64,$07 ; LLB [7] + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; utilsrc/tftpd.pla: 0145: end +; utilsrc/tftpd.pla: 0146: def mkNetName(proName, netName) + ; proName -> [0] + ; netName -> [2] +_C004 ; mkNetName() +; utilsrc/tftpd.pla: 0147: word l, n + ; l -> [4] + ; n -> [6] +; utilsrc/tftpd.pla: 0148: byte fileinfo[t_fileinfo] + ; fileinfo -> [8] +; utilsrc/tftpd.pla: 0149: +; utilsrc/tftpd.pla: 0150: if !fileio:getfileinfo(proName, @fileinfo) + !BYTE $58,$17,$02 ; ENTER 23,2 +; utilsrc/tftpd.pla: 0151: // +; utilsrc/tftpd.pla: 0152: // Scan backward looking for dir seperator +; utilsrc/tftpd.pla: 0153: // +; utilsrc/tftpd.pla: 0154: l = ^proName +; utilsrc/tftpd.pla: 0155: for n = l downto 1 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$08 ; LLA [8] + !BYTE $6A ; LAW _X029+4 +_F008 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B017 + !WORD _B017-* + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $76,$04 ; SLW [4] + !BYTE $02 ; CN 1 + !BYTE $66,$04 ; LLW [4] + !BYTE $A2 ; BRLT _B019 + !WORD _B019-* +_B020 + !BYTE $6E,$06 ; DLW [6] +; utilsrc/tftpd.pla: 0156: if ^(proName + n) == '/' +; utilsrc/tftpd.pla: 0157: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B022 + !WORD _B022-* + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +; utilsrc/tftpd.pla: 0158: fin +_B022 +_B023 +; utilsrc/tftpd.pla: 0159: next +_B021 + !BYTE $A8 ; DECBRGE _B020 + !WORD _B020-* +_B019 + !BYTE $76,$06 ; SLW [6] + !BYTE $30 ; DROP +; utilsrc/tftpd.pla: 0160: memcpy(netName + 1, proName + 1 + n, l - n) +; utilsrc/tftpd.pla: 0161: ^netName = l - n + 7 +; utilsrc/tftpd.pla: 0162: // +; utilsrc/tftpd.pla: 0163: // Build CiderPress style extension +; utilsrc/tftpd.pla: 0164: // +; utilsrc/tftpd.pla: 0165: n = netName + ^netName - 6 +; utilsrc/tftpd.pla: 0166: ^n = '#' +; utilsrc/tftpd.pla: 0167: btoh(n + 1, fileinfo.file_type) +; utilsrc/tftpd.pla: 0168: btoh(n + 3, fileinfo.aux_type.1) +; utilsrc/tftpd.pla: 0169: btoh(n + 5, fileinfo.aux_type) +; utilsrc/tftpd.pla: 0170: else + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _X018 +_F009 !WORD 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $38,$07 ; ADDI 7 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $3A,$06 ; SUBI 6 + !BYTE $76,$06 ; SLW [6] + !BYTE $2A,$23 ; CB 35 + !BYTE $66,$06 ; LLW [6] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $64,$09 ; LLB [9] + !BYTE $54 ; CALL _C000 +_F010 !WORD _C000 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $28,$0A ; LLA [10] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $54 ; CALL _C000 +_F011 !WORD _C000 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$05 ; ADDI 5 + !BYTE $64,$0A ; LLB [10] + !BYTE $54 ; CALL _C000 +_F012 !WORD _C000 + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +_B017 +; utilsrc/tftpd.pla: 0171: // +; utilsrc/tftpd.pla: 0172: // Error getting info on file +; utilsrc/tftpd.pla: 0173: // +; utilsrc/tftpd.pla: 0174: puts("Error reading "); puts(proName); putln + !BYTE $2E ; CS + !BYTE $0E + !BYTE $45,$72,$72,$6F,$72,$20,$72,$65 + !BYTE $61,$64,$69,$6E,$67,$20 + !BYTE $54 ; CALL _X004 +_F013 !WORD 0 +; utilsrc/tftpd.pla: 0175: return -1 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F014 !WORD 0 + !BYTE $54 ; CALL _X003 +_F015 !WORD 0 + !BYTE $20 ; MINUS ONE + !BYTE $5A,$17 ; LEAVE 23 +; utilsrc/tftpd.pla: 0176: fin +_B018 +; utilsrc/tftpd.pla: 0177: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$17 ; LEAVE 23 +; utilsrc/tftpd.pla: 0178: end +; utilsrc/tftpd.pla: 0179: +; utilsrc/tftpd.pla: 0180: def readUDP(ipsrc, portsrc, data, len, param) + ; ipsrc -> [0] + ; portsrc -> [2] + ; data -> [4] + ; len -> [6] + ; param -> [8] +_C005 ; readUDP() +; utilsrc/tftpd.pla: 0181: word err + ; err -> [10] +; utilsrc/tftpd.pla: 0182: +; utilsrc/tftpd.pla: 0183: err = 0 + !BYTE $58,$0C,$05 ; ENTER 12,5 +; utilsrc/tftpd.pla: 0184: when *data + !BYTE $00 ; CN 0 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $52 ; SEL + !WORD _B025-* +; utilsrc/tftpd.pla: 0185: is $0500 // Error +_B026 +; utilsrc/tftpd.pla: 0186: err = *data +; utilsrc/tftpd.pla: 0187: is $0400 // Ack + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] +_B027 +; utilsrc/tftpd.pla: 0188: if swab(data=>ackBlock) <> block +; utilsrc/tftpd.pla: 0189: puts("RRQ: Out-of-sequence block\n") + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A000 +_F016 !WORD _A000 + !BYTE $6A ; LAW _D039+0 +_F017 !WORD _D039+0 + !BYTE $22 ; BREQ _B028 + !WORD _B028-* + !BYTE $2E ; CS + !BYTE $1B + !BYTE $52,$52,$51,$3A,$20,$4F,$75,$74 + !BYTE $2D,$6F,$66,$2D,$73,$65,$71,$75 + !BYTE $65,$6E,$63,$65,$20,$62,$6C,$6F + !BYTE $63,$6B,$0D + !BYTE $54 ; CALL _X004 +_F018 !WORD 0 +; utilsrc/tftpd.pla: 0190: err = $0800 // Out-of-sequence block +; utilsrc/tftpd.pla: 0191: break + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +; utilsrc/tftpd.pla: 0192: fin +_B028 +_B029 +; utilsrc/tftpd.pla: 0193: if param == 512 // Size of initial read +; utilsrc/tftpd.pla: 0194: param = fileio:read(ref, buff+datBytes, 512) +; utilsrc/tftpd.pla: 0195: if type == $04 // TXT type +; utilsrc/tftpd.pla: 0196: xlat($0D, $0A, buff+datBytes, param) +; utilsrc/tftpd.pla: 0197: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $24 ; BRNE _B030 + !WORD _B030-* + !BYTE $68 ; LAB _D034+0 +_F019 !WORD _D034+0 + !BYTE $6A ; LAW _D040+0 +_F020 !WORD _D040+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X029+18 +_F021 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $76,$08 ; SLW [8] + !BYTE $68 ; LAB _D035+0 +_F022 !WORD _D035+0 + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B032 + !WORD _B032-* + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $6A ; LAW _D040+0 +_F023 !WORD _D040+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A001 +_F024 !WORD _A001 +_B032 +_B033 +; utilsrc/tftpd.pla: 0198: block++ + !BYTE $6A ; LAW _D039+0 +_F025 !WORD _D039+0 + !BYTE $8C ; INCR +; utilsrc/tftpd.pla: 0199: buff=>datBlock = swab(block) +; utilsrc/tftpd.pla: 0200: iNet:sendUDP(portTID, ipsrc, portsrc, buff, t_datPkt + param) +; utilsrc/tftpd.pla: 0201: fin + !BYTE $7E ; DAW _D039+0 +_F026 !WORD _D039+0 + !BYTE $54 ; CALL _A000 +_F027 !WORD _A000 + !BYTE $6A ; LAW _D040+0 +_F028 !WORD _D040+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $6A ; LAW _D043+0 +_F029 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D040+0 +_F030 !WORD _D040+0 + !BYTE $08 ; CN 4 + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $6A ; LAW _X028+6 +_F031 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B030 +_B031 +; utilsrc/tftpd.pla: 0202: if err +; utilsrc/tftpd.pla: 0203: tftpError:errCode = err +; utilsrc/tftpd.pla: 0204: iNet:sendUDP(portTID, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0205: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D032+2 +_F032 !WORD _D032+2 + !BYTE $6A ; LAW _D043+0 +_F033 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F034 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F035 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B034 +_B035 +; utilsrc/tftpd.pla: 0206: if param < 512 or err +; utilsrc/tftpd.pla: 0207: // +; utilsrc/tftpd.pla: 0208: // All done +; utilsrc/tftpd.pla: 0209: // +; utilsrc/tftpd.pla: 0210: iNet:closeUDP(portTID) +; utilsrc/tftpd.pla: 0211: fileio:close(ref) +; utilsrc/tftpd.pla: 0212: ref = 0 +; utilsrc/tftpd.pla: 0213: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B036 + !WORD _B036-* + !BYTE $66,$0A ; LLW [10] +_B036 + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $6A ; LAW _D043+0 +_F036 !WORD _D043+0 + !BYTE $6A ; LAW _X028+8 +_F037 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D034+0 +_F038 !WORD _D034+0 + !BYTE $6A ; LAW _X029+16 +_F039 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D034+0 +_F040 !WORD _D034+0 +_B037 +_B038 +; utilsrc/tftpd.pla: 0214: break + !BYTE $50 ; BRNCH _B024 + !WORD _B024-* +; utilsrc/tftpd.pla: 0215: otherwise +_B025 + !BYTE $02 ; CASEBLOCK + !WORD $0400 + !WORD _B027-* + !WORD $0500 + !WORD _B026-* +; utilsrc/tftpd.pla: 0216: puts("TFTP: RRQ Unexpected packet opcode: $"); puth(*data); putln + !BYTE $2E ; CS + !BYTE $25 + !BYTE $54,$46,$54,$50,$3A,$20,$52,$52 + !BYTE $51,$20,$55,$6E,$65,$78,$70,$65 + !BYTE $63,$74,$65,$64,$20,$70,$61,$63 + !BYTE $6B,$65,$74,$20,$6F,$70,$63,$6F + !BYTE $64,$65,$3A,$20,$24 + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 +; utilsrc/tftpd.pla: 0217: wend + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F042 !WORD 0 + !BYTE $54 ; CALL _X003 +_F043 !WORD 0 +_B024 +; utilsrc/tftpd.pla: 0218: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0C ; LEAVE 12 +; utilsrc/tftpd.pla: 0219: end +; utilsrc/tftpd.pla: 0220: def writeUDP(ipsrc, portsrc, data, len, param) + ; ipsrc -> [0] + ; portsrc -> [2] + ; data -> [4] + ; len -> [6] + ; param -> [8] +_C006 ; writeUDP() +; utilsrc/tftpd.pla: 0221: word err + ; err -> [10] +; utilsrc/tftpd.pla: 0222: +; utilsrc/tftpd.pla: 0223: err = 0 + !BYTE $58,$0C,$05 ; ENTER 12,5 +; utilsrc/tftpd.pla: 0224: when *data + !BYTE $00 ; CN 0 + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $52 ; SEL + !WORD _B040-* +; utilsrc/tftpd.pla: 0225: is $0300 // Data packet +_B041 +; utilsrc/tftpd.pla: 0226: if swab(data=>datBlock) <> block +; utilsrc/tftpd.pla: 0227: puts("WRQ: Out-of-sequence block\n") + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _A000 +_F044 !WORD _A000 + !BYTE $6A ; LAW _D039+0 +_F045 !WORD _D039+0 + !BYTE $22 ; BREQ _B042 + !WORD _B042-* + !BYTE $2E ; CS + !BYTE $1B + !BYTE $57,$52,$51,$3A,$20,$4F,$75,$74 + !BYTE $2D,$6F,$66,$2D,$73,$65,$71,$75 + !BYTE $65,$6E,$63,$65,$20,$62,$6C,$6F + !BYTE $63,$6B,$0D + !BYTE $54 ; CALL _X004 +_F046 !WORD 0 +; utilsrc/tftpd.pla: 0228: err = $0800 // Out-of-sequence block +; utilsrc/tftpd.pla: 0229: break + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +; utilsrc/tftpd.pla: 0230: fin +_B042 +_B043 +; utilsrc/tftpd.pla: 0231: len = len - t_datPkt +; utilsrc/tftpd.pla: 0232: if type == $04 // TXT type +; utilsrc/tftpd.pla: 0233: xlat($0A, $0D, data+datBytes, len) +; utilsrc/tftpd.pla: 0234: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $3A,$04 ; SUBI 4 + !BYTE $76,$06 ; SLW [6] + !BYTE $68 ; LAB _D035+0 +_F047 !WORD _D035+0 + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B044 + !WORD _B044-* + !BYTE $14 ; CN 10 + !BYTE $1A ; CN 13 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _A001 +_F048 !WORD _A001 +_B044 +_B045 +; utilsrc/tftpd.pla: 0235: if fileio:write(ref, data+datBytes, len) <> len +; utilsrc/tftpd.pla: 0236: puts("WRQ: File write error\n") + !BYTE $68 ; LAB _D034+0 +_F049 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$04 ; ADDI 4 + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X029+20 +_F050 !WORD 0+20 + !BYTE $56 ; ICAL + !BYTE $66,$06 ; LLW [6] + !BYTE $22 ; BREQ _B046 + !WORD _B046-* + !BYTE $2E ; CS + !BYTE $16 + !BYTE $57,$52,$51,$3A,$20,$46,$69,$6C + !BYTE $65,$20,$77,$72,$69,$74,$65,$20 + !BYTE $65,$72,$72,$6F,$72,$0D + !BYTE $54 ; CALL _X004 +_F051 !WORD 0 +; utilsrc/tftpd.pla: 0237: tftpError:errCode = $0300 // Disk full error +; utilsrc/tftpd.pla: 0238: break + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $7A ; SAW _D032+2 +_F052 !WORD _D032+2 + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +; utilsrc/tftpd.pla: 0239: fin +_B046 +_B047 +; utilsrc/tftpd.pla: 0240: if not err +; utilsrc/tftpd.pla: 0241: tftpAck:ackBlock = swab(block) +; utilsrc/tftpd.pla: 0242: block++ + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B048 + !WORD _B048-* + !BYTE $6A ; LAW _D039+0 +_F053 !WORD _D039+0 + !BYTE $54 ; CALL _A000 +_F054 !WORD _A000 + !BYTE $7A ; SAW _D033+2 +_F055 !WORD _D033+2 + !BYTE $6A ; LAW _D039+0 +_F056 !WORD _D039+0 + !BYTE $8C ; INCR +; utilsrc/tftpd.pla: 0243: iNet:sendUDP(portTID, ipsrc, portsrc, @tftpAck, t_ackPkt) +; utilsrc/tftpd.pla: 0244: else + !BYTE $7A ; SAW _D039+0 +_F057 !WORD _D039+0 + !BYTE $6A ; LAW _D043+0 +_F058 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D033+0 +_F059 !WORD _D033+0 + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X028+6 +_F060 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B049 + !WORD _B049-* +_B048 +; utilsrc/tftpd.pla: 0245: tftpError:errCode = err +; utilsrc/tftpd.pla: 0246: iNet:sendUDP(portTID, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0247: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $7A ; SAW _D032+2 +_F061 !WORD _D032+2 + !BYTE $6A ; LAW _D043+0 +_F062 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F063 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F064 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B049 +; utilsrc/tftpd.pla: 0248: if len < 512 or err +; utilsrc/tftpd.pla: 0249: // +; utilsrc/tftpd.pla: 0250: // All done +; utilsrc/tftpd.pla: 0251: // +; utilsrc/tftpd.pla: 0252: iNet:closeUDP(portTID) +; utilsrc/tftpd.pla: 0253: fileio:close(ref) +; utilsrc/tftpd.pla: 0254: ref = 0 +; utilsrc/tftpd.pla: 0255: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $46 ; ISLT + !BYTE $AE ; BROR _B050 + !WORD _B050-* + !BYTE $66,$0A ; LLW [10] +_B050 + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $6A ; LAW _D043+0 +_F065 !WORD _D043+0 + !BYTE $6A ; LAW _X028+8 +_F066 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D034+0 +_F067 !WORD _D034+0 + !BYTE $6A ; LAW _X029+16 +_F068 !WORD 0+16 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D034+0 +_F069 !WORD _D034+0 +_B051 +_B052 +; utilsrc/tftpd.pla: 0256: break + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +; utilsrc/tftpd.pla: 0257: otherwise +_B040 + !BYTE $01 ; CASEBLOCK + !WORD $0300 + !WORD _B041-* +; utilsrc/tftpd.pla: 0258: puts("WRQ: Unexpected packet opcode: $"); puth(*data); putln + !BYTE $2E ; CS + !BYTE $20 + !BYTE $57,$52,$51,$3A,$20,$55,$6E,$65 + !BYTE $78,$70,$65,$63,$74,$65,$64,$20 + !BYTE $70,$61,$63,$6B,$65,$74,$20,$6F + !BYTE $70,$63,$6F,$64,$65,$3A,$20,$24 + !BYTE $54 ; CALL _X004 +_F070 !WORD 0 +; utilsrc/tftpd.pla: 0259: wend + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F071 !WORD 0 + !BYTE $54 ; CALL _X003 +_F072 !WORD 0 +_B039 +; utilsrc/tftpd.pla: 0260: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$0C ; LEAVE 12 +; utilsrc/tftpd.pla: 0261: end +; utilsrc/tftpd.pla: 0262: def servUDP(ipsrc, portsrc, data, len, param) + ; ipsrc -> [0] + ; portsrc -> [2] + ; data -> [4] + ; len -> [6] + ; param -> [8] +_C007 ; servUDP() +; utilsrc/tftpd.pla: 0263: byte info[24] + ; info -> [10] +; utilsrc/tftpd.pla: 0264: byte l, prefix[48] + ; l -> [34] + ; prefix -> [35] +; utilsrc/tftpd.pla: 0265: +; utilsrc/tftpd.pla: 0266: when *data + !BYTE $58,$53,$05 ; ENTER 83,5 + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $52 ; SEL + !WORD _B054-* +; utilsrc/tftpd.pla: 0267: is RRQ // Read request +_B055 +; utilsrc/tftpd.pla: 0268: // +; utilsrc/tftpd.pla: 0269: // Initiate file read +; utilsrc/tftpd.pla: 0270: // +; utilsrc/tftpd.pla: 0271: if ref +; utilsrc/tftpd.pla: 0272: // +; utilsrc/tftpd.pla: 0273: // File already open and active +; utilsrc/tftpd.pla: 0274: // +; utilsrc/tftpd.pla: 0275: tftpError:errCode = $0300 // Allocation exceeded +; utilsrc/tftpd.pla: 0276: iNet:sendUDP(portTFTP, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0277: return 0 + !BYTE $68 ; LAB _D034+0 +_F073 !WORD _D034+0 + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $7A ; SAW _D032+2 +_F074 !WORD _D032+2 + !BYTE $6A ; LAW _D042+0 +_F075 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F076 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F077 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$53 ; LEAVE 83 +; utilsrc/tftpd.pla: 0278: fin +_B056 +_B057 +; utilsrc/tftpd.pla: 0279: // +; utilsrc/tftpd.pla: 0280: // Extract filename +; utilsrc/tftpd.pla: 0281: // +; utilsrc/tftpd.pla: 0282: netscii, type, aux = mkProName(data + 2, @filename) +; utilsrc/tftpd.pla: 0283: ref = fileio:open(@filename) +; utilsrc/tftpd.pla: 0284: if not ref +; utilsrc/tftpd.pla: 0285: puts("Error opening file: "); puts(@filename) + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $26 ; LA _D037+0 +_F078 !WORD _D037+0 + !BYTE $54 ; CALL _C003 +_F079 !WORD _C003 + !BYTE $7A ; SAW _D038+0 +_F080 !WORD _D038+0 + !BYTE $78 ; SAB _D035+0 +_F081 !WORD _D035+0 + !BYTE $78 ; SAB _D036+0 +_F082 !WORD _D036+0 + !BYTE $26 ; LA _D037+0 +_F083 !WORD _D037+0 + !BYTE $6A ; LAW _X029+14 +_F084 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D034+0 +_F085 !WORD _D034+0 + !BYTE $4E ; BRTRU _B058 + !WORD _B058-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$66,$69 + !BYTE $6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F086 !WORD 0 +; utilsrc/tftpd.pla: 0286: puts(", Error: "); putb(perr); putln + !BYTE $26 ; LA _D037+0 +_F087 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F088 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $2C,$20,$45,$72,$72,$6F,$72,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F089 !WORD 0 +; utilsrc/tftpd.pla: 0287: tftpError:errCode = $0100 // File not found +; utilsrc/tftpd.pla: 0288: iNet:sendUDP(portTFTP, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0289: return 0 + !BYTE $68 ; LAB _X030+0 +_F090 !WORD 0+0 + !BYTE $54 ; CALL _X008 +_F091 !WORD 0 + !BYTE $54 ; CALL _X003 +_F092 !WORD 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $7A ; SAW _D032+2 +_F093 !WORD _D032+2 + !BYTE $6A ; LAW _D042+0 +_F094 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F095 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F096 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$53 ; LEAVE 83 +; utilsrc/tftpd.pla: 0290: fin +_B058 +_B059 +; utilsrc/tftpd.pla: 0291: info.0 = $0A +; utilsrc/tftpd.pla: 0292: info:1 = @filename +; utilsrc/tftpd.pla: 0293: syscall($C4, @info) +; utilsrc/tftpd.pla: 0294: type = info.4 +; utilsrc/tftpd.pla: 0295: puts("Reading file: "); puts(@filename); putln + !BYTE $14 ; CN 10 + !BYTE $74,$0A ; SLB [10] + !BYTE $26 ; LA _D037+0 +_F097 !WORD _D037+0 + !BYTE $76,$0B ; SLW [11] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$0A ; LLA [10] + !BYTE $54 ; CALL _X011 +_F098 !WORD 0 + !BYTE $30 ; DROP + !BYTE $64,$0E ; LLB [14] + !BYTE $78 ; SAB _D035+0 +_F099 !WORD _D035+0 + !BYTE $2E ; CS + !BYTE $0E + !BYTE $52,$65,$61,$64,$69,$6E,$67,$20 + !BYTE $66,$69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F100 !WORD 0 +; utilsrc/tftpd.pla: 0296: TID = (TID + TID_INC) | $1000 +; utilsrc/tftpd.pla: 0297: block = 1 +; utilsrc/tftpd.pla: 0298: buff=>datBlock = swab(block) +; utilsrc/tftpd.pla: 0299: len = fileio:read(ref, buff+datBytes, 512) +; utilsrc/tftpd.pla: 0300: if type == $04 // TXT type +; utilsrc/tftpd.pla: 0301: xlat($0D, $0A, buff+datBytes, 512) +; utilsrc/tftpd.pla: 0302: fin + !BYTE $26 ; LA _D037+0 +_F101 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F102 !WORD 0 + !BYTE $54 ; CALL _X003 +_F103 !WORD 0 + !BYTE $6A ; LAW _D041+0 +_F104 !WORD _D041+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D041+0 +_F105 !WORD _D041+0 + !BYTE $02 ; CN 1 + !BYTE $7E ; DAW _D039+0 +_F106 !WORD _D039+0 + !BYTE $54 ; CALL _A000 +_F107 !WORD _A000 + !BYTE $6A ; LAW _D040+0 +_F108 !WORD _D040+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $68 ; LAB _D034+0 +_F109 !WORD _D034+0 + !BYTE $6A ; LAW _D040+0 +_F110 !WORD _D040+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X029+18 +_F111 !WORD 0+18 + !BYTE $56 ; ICAL + !BYTE $76,$06 ; SLW [6] + !BYTE $68 ; LAB _D035+0 +_F112 !WORD _D035+0 + !BYTE $08 ; CN 4 + !BYTE $24 ; BRNE _B060 + !WORD _B060-* + !BYTE $1A ; CN 13 + !BYTE $14 ; CN 10 + !BYTE $6A ; LAW _D040+0 +_F113 !WORD _D040+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _A001 +_F114 !WORD _A001 +_B060 +_B061 +; utilsrc/tftpd.pla: 0303: portTID = iNet:openUDP(TID, @readUDP, len) +; utilsrc/tftpd.pla: 0304: iNet:sendUDP(portTID, ipsrc, portsrc, buff, t_datPkt + len) +; utilsrc/tftpd.pla: 0305: break + !BYTE $6A ; LAW _D041+0 +_F115 !WORD _D041+0 + !BYTE $26 ; LA _C005+0 +_F116 !WORD _C005+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $6A ; LAW _X028+4 +_F117 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $7E ; DAW _D043+0 +_F118 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D040+0 +_F119 !WORD _D040+0 + !BYTE $08 ; CN 4 + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $6A ; LAW _X028+6 +_F120 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +; utilsrc/tftpd.pla: 0306: is WRQ // Write request +_B062 +; utilsrc/tftpd.pla: 0307: // +; utilsrc/tftpd.pla: 0308: // Initiate file write +; utilsrc/tftpd.pla: 0309: // +; utilsrc/tftpd.pla: 0310: if ref +; utilsrc/tftpd.pla: 0311: // +; utilsrc/tftpd.pla: 0312: // File already open and active +; utilsrc/tftpd.pla: 0313: // +; utilsrc/tftpd.pla: 0314: tftpError:errCode = $0300 // Allocation exceeded +; utilsrc/tftpd.pla: 0315: iNet:sendUDP(portTFTP, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0316: return 0 + !BYTE $68 ; LAB _D034+0 +_F121 !WORD _D034+0 + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $7A ; SAW _D032+2 +_F122 !WORD _D032+2 + !BYTE $6A ; LAW _D042+0 +_F123 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F124 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F125 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$53 ; LEAVE 83 +; utilsrc/tftpd.pla: 0317: fin +_B063 +_B064 +; utilsrc/tftpd.pla: 0318: // +; utilsrc/tftpd.pla: 0319: // Extract filename +; utilsrc/tftpd.pla: 0320: // +; utilsrc/tftpd.pla: 0321: netscii, type, aux = mkProName(data + 2, @filename) +; utilsrc/tftpd.pla: 0322: // +; utilsrc/tftpd.pla: 0323: // Scan filename prefix and create +; utilsrc/tftpd.pla: 0324: // +; utilsrc/tftpd.pla: 0325: prefix[1] = filename[1] +; utilsrc/tftpd.pla: 0326: for l = 2 to filename[0] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$02 ; ADDI 2 + !BYTE $26 ; LA _D037+0 +_F126 !WORD _D037+0 + !BYTE $54 ; CALL _C003 +_F127 !WORD _C003 + !BYTE $7A ; SAW _D038+0 +_F128 !WORD _D038+0 + !BYTE $78 ; SAB _D035+0 +_F129 !WORD _D035+0 + !BYTE $78 ; SAB _D036+0 +_F130 !WORD _D036+0 + !BYTE $68 ; LAB _D037+1 +_F131 !WORD _D037+1 + !BYTE $74,$24 ; SLB [36] + !BYTE $68 ; LAB _D037+0 +_F132 !WORD _D037+0 + !BYTE $04 ; CN 2 + !BYTE $A0 ; BRGT _B065 + !WORD _B065-* +_B066 + !BYTE $6C,$22 ; DLB [34] +; utilsrc/tftpd.pla: 0327: if filename[l] == '/' +; utilsrc/tftpd.pla: 0328: prefix[0] = l-1 +; utilsrc/tftpd.pla: 0329: fileio:create(@prefix, $0F, $0000) +; utilsrc/tftpd.pla: 0330: fin + !BYTE $26 ; LA _D037+0 +_F133 !WORD _D037+0 + !BYTE $B0,$22 ; ADDLB [34] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B068 + !WORD _B068-* + !BYTE $64,$22 ; LLB [34] + !BYTE $8E ; DECR + !BYTE $74,$23 ; SLB [35] + !BYTE $28,$23 ; LLA [35] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X029+22 +_F134 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B068 +_B069 +; utilsrc/tftpd.pla: 0331: prefix[l] = filename[l] +; utilsrc/tftpd.pla: 0332: next + !BYTE $26 ; LA _D037+0 +_F135 !WORD _D037+0 + !BYTE $B0,$22 ; ADDLB [34] + !BYTE $60 ; LB + !BYTE $28,$23 ; LLA [35] + !BYTE $B0,$22 ; ADDLB [34] + !BYTE $70 ; SB +_B067 + !BYTE $A4 ; INCBRLE _B066 + !WORD _B066-* +_B065 + !BYTE $74,$22 ; SLB [34] + !BYTE $30 ; DROP +; utilsrc/tftpd.pla: 0333: fileio:destroy(@filename) +; utilsrc/tftpd.pla: 0334: if fileio:create(@filename, type, aux) +; utilsrc/tftpd.pla: 0335: puts("Create file error: "); putb(perr); putln + !BYTE $26 ; LA _D037+0 +_F136 !WORD _D037+0 + !BYTE $6A ; LAW _X029+24 +_F137 !WORD 0+24 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $26 ; LA _D037+0 +_F138 !WORD _D037+0 + !BYTE $68 ; LAB _D035+0 +_F139 !WORD _D035+0 + !BYTE $6A ; LAW _D038+0 +_F140 !WORD _D038+0 + !BYTE $6A ; LAW _X029+22 +_F141 !WORD 0+22 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B070 + !WORD _B070-* + !BYTE $2E ; CS + !BYTE $13 + !BYTE $43,$72,$65,$61,$74,$65,$20,$66 + !BYTE $69,$6C,$65,$20,$65,$72,$72,$6F + !BYTE $72,$3A,$20 + !BYTE $54 ; CALL _X004 +_F142 !WORD 0 +; utilsrc/tftpd.pla: 0336: fin + !BYTE $68 ; LAB _X030+0 +_F143 !WORD 0+0 + !BYTE $54 ; CALL _X008 +_F144 !WORD 0 + !BYTE $54 ; CALL _X003 +_F145 !WORD 0 +_B070 +_B071 +; utilsrc/tftpd.pla: 0337: ref = fileio:open(@filename) +; utilsrc/tftpd.pla: 0338: if not ref +; utilsrc/tftpd.pla: 0339: puts("Error opening file: "); puts(@filename) + !BYTE $26 ; LA _D037+0 +_F146 !WORD _D037+0 + !BYTE $6A ; LAW _X029+14 +_F147 !WORD 0+14 + !BYTE $56 ; ICAL + !BYTE $7C ; DAB _D034+0 +_F148 !WORD _D034+0 + !BYTE $4E ; BRTRU _B072 + !WORD _B072-* + !BYTE $2E ; CS + !BYTE $14 + !BYTE $45,$72,$72,$6F,$72,$20,$6F,$70 + !BYTE $65,$6E,$69,$6E,$67,$20,$66,$69 + !BYTE $6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F149 !WORD 0 +; utilsrc/tftpd.pla: 0340: puts(", Error: "); putb(perr); putln + !BYTE $26 ; LA _D037+0 +_F150 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F151 !WORD 0 + !BYTE $2E ; CS + !BYTE $09 + !BYTE $2C,$20,$45,$72,$72,$6F,$72,$3A + !BYTE $20 + !BYTE $54 ; CALL _X004 +_F152 !WORD 0 +; utilsrc/tftpd.pla: 0341: tftpError:errCode = $0200 // Access violation +; utilsrc/tftpd.pla: 0342: iNet:sendUDP(portTFTP, ipsrc, portsrc, @tftpError, t_errPkt) +; utilsrc/tftpd.pla: 0343: return 0 + !BYTE $68 ; LAB _X030+0 +_F153 !WORD 0+0 + !BYTE $54 ; CALL _X008 +_F154 !WORD 0 + !BYTE $54 ; CALL _X003 +_F155 !WORD 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $7A ; SAW _D032+2 +_F156 !WORD _D032+2 + !BYTE $6A ; LAW _D042+0 +_F157 !WORD _D042+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D032+0 +_F158 !WORD _D032+0 + !BYTE $0A ; CN 5 + !BYTE $6A ; LAW _X028+6 +_F159 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5A,$53 ; LEAVE 83 +; utilsrc/tftpd.pla: 0344: fin +_B072 +_B073 +; utilsrc/tftpd.pla: 0345: puts("Writing file: "); puts(@filename); putln + !BYTE $2E ; CS + !BYTE $0E + !BYTE $57,$72,$69,$74,$69,$6E,$67,$20 + !BYTE $66,$69,$6C,$65,$3A,$20 + !BYTE $54 ; CALL _X004 +_F160 !WORD 0 +; utilsrc/tftpd.pla: 0346: TID = (TID + TID_INC) | $1000 +; utilsrc/tftpd.pla: 0347: block = 1 +; utilsrc/tftpd.pla: 0348: tftpAck:ackBlock = 0 +; utilsrc/tftpd.pla: 0349: portTID = iNet:openUDP(TID, @writeUDP, 0) +; utilsrc/tftpd.pla: 0350: iNet:sendUDP(portTID, ipsrc, portsrc, @tftpAck, t_ackPkt) +; utilsrc/tftpd.pla: 0351: break + !BYTE $26 ; LA _D037+0 +_F161 !WORD _D037+0 + !BYTE $54 ; CALL _X004 +_F162 !WORD 0 + !BYTE $54 ; CALL _X003 +_F163 !WORD 0 + !BYTE $6A ; LAW _D041+0 +_F164 !WORD _D041+0 + !BYTE $38,$10 ; ADDI 16 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D041+0 +_F165 !WORD _D041+0 + !BYTE $02 ; CN 1 + !BYTE $7A ; SAW _D039+0 +_F166 !WORD _D039+0 + !BYTE $00 ; CN 0 + !BYTE $7A ; SAW _D033+2 +_F167 !WORD _D033+2 + !BYTE $6A ; LAW _D041+0 +_F168 !WORD _D041+0 + !BYTE $26 ; LA _C006+0 +_F169 !WORD _C006+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F170 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $7E ; DAW _D043+0 +_F171 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $26 ; LA _D033+0 +_F172 !WORD _D033+0 + !BYTE $08 ; CN 4 + !BYTE $6A ; LAW _X028+6 +_F173 !WORD 0+6 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +; utilsrc/tftpd.pla: 0352: otherwise +_B054 + !BYTE $02 ; CASEBLOCK + !WORD $0100 + !WORD _B055-* + !WORD $0200 + !WORD _B062-* +; utilsrc/tftpd.pla: 0353: puts("TFTP: Server Unexpected packet opcode: $"); puth(*data); putln + !BYTE $2E ; CS + !BYTE $28 + !BYTE $54,$46,$54,$50,$3A,$20,$53,$65 + !BYTE $72,$76,$65,$72,$20,$55,$6E,$65 + !BYTE $78,$70,$65,$63,$74,$65,$64,$20 + !BYTE $70,$61,$63,$6B,$65,$74,$20,$6F + !BYTE $70,$63,$6F,$64,$65,$3A,$20,$24 + !BYTE $54 ; CALL _X004 +_F174 !WORD 0 +; utilsrc/tftpd.pla: 0354: wend + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $54 ; CALL _X009 +_F175 !WORD 0 + !BYTE $54 ; CALL _X003 +_F176 !WORD 0 +_B053 +; utilsrc/tftpd.pla: 0355: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$53 ; LEAVE 83 +; utilsrc/tftpd.pla: 0356: end +; utilsrc/tftpd.pla: 0357: +; utilsrc/tftpd.pla: 0358: def volumes#0 +_C008 ; volumes() +; utilsrc/tftpd.pla: 0359: word strbuf + ; strbuf -> [0] +; utilsrc/tftpd.pla: 0360: byte i + ; i -> [2] +; utilsrc/tftpd.pla: 0361: +; utilsrc/tftpd.pla: 0362: strbuf = heapmark() + !BYTE $58,$03,$00 ; ENTER 3,0 +; utilsrc/tftpd.pla: 0363: fileio:online(0, strbuf) +; utilsrc/tftpd.pla: 0364: for i = 0 to 15 + !BYTE $54 ; CALL _X012 +_F177 !WORD 0 + !BYTE $76,$00 ; SLW [0] + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X029+30 +_F178 !WORD 0+30 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B075 + !BYTE $6C,$02 ; DLB [2] +; utilsrc/tftpd.pla: 0365: ^strbuf = ^strbuf & $0F +; utilsrc/tftpd.pla: 0366: if ^strbuf +; utilsrc/tftpd.pla: 0367: putc('/'); puts(strbuf); putln() +; utilsrc/tftpd.pla: 0368: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F179 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _X004 +_F180 !WORD 0 + !BYTE $54 ; CALL _X003 +_F181 !WORD 0 +_B077 +_B078 +; utilsrc/tftpd.pla: 0369: strbuf = strbuf + 16 +; utilsrc/tftpd.pla: 0370: next + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$00 ; SLW [0] +_B076 + !BYTE $A4 ; INCBRLE _B075 + !WORD _B075-* +_B074 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; utilsrc/tftpd.pla: 0371: end + !BYTE $5A,$03 ; LEAVE 3 +; utilsrc/tftpd.pla: 0372: +; utilsrc/tftpd.pla: 0373: puts("TFTP Server, Version 2.0\n") +_INIT + !BYTE $2E ; CS + !BYTE $19 + !BYTE $54,$46,$54,$50,$20,$53,$65,$72 + !BYTE $76,$65,$72,$2C,$20,$56,$65,$72 + !BYTE $73,$69,$6F,$6E,$20,$32,$2E,$30 + !BYTE $0D + !BYTE $54 ; CALL _X004 +_F182 !WORD 0 +; utilsrc/tftpd.pla: 0374: if !iNet:initIP() +; utilsrc/tftpd.pla: 0375: return -1 + !BYTE $6A ; LAW _X028+0 +_F183 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4E ; BRTRU _B079 + !WORD _B079-* + !BYTE $20 ; MINUS ONE + !BYTE $5C ; RET +; utilsrc/tftpd.pla: 0376: fin +_B079 +_B080 +; utilsrc/tftpd.pla: 0377: puts("Online volumes:\n"); volumes() + !BYTE $2E ; CS + !BYTE $10 + !BYTE $4F,$6E,$6C,$69,$6E,$65,$20,$76 + !BYTE $6F,$6C,$75,$6D,$65,$73,$3A,$0D + !BYTE $54 ; CALL _X004 +_F184 !WORD 0 +; utilsrc/tftpd.pla: 0378: portTFTP = iNet:openUDP(TFTP_PORT, @servUDP, 0) +; utilsrc/tftpd.pla: 0379: // +; utilsrc/tftpd.pla: 0380: // Alloc aligned file/io buffers +; utilsrc/tftpd.pla: 0381: // +; utilsrc/tftpd.pla: 0382: buff = heapalloc(t_datPkt + 512) +; utilsrc/tftpd.pla: 0383: buff=>datOp = $0300 // Data op +; utilsrc/tftpd.pla: 0384: // +; utilsrc/tftpd.pla: 0385: // Service IP +; utilsrc/tftpd.pla: 0386: // +; utilsrc/tftpd.pla: 0387: repeat + !BYTE $54 ; CALL _C008 +_F185 !WORD _C008 + !BYTE $2A,$45 ; CB 69 + !BYTE $26 ; LA _C007+0 +_F186 !WORD _C007+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _X028+4 +_F187 !WORD 0+4 + !BYTE $56 ; ICAL + !BYTE $7A ; SAW _D042+0 +_F188 !WORD _D042+0 + !BYTE $2C,$04,$02 ; CW 516 + !BYTE $54 ; CALL _X014 +_F189 !WORD 0 + !BYTE $7A ; SAW _D040+0 +_F190 !WORD _D040+0 + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $6A ; LAW _D040+0 +_F191 !WORD _D040+0 + !BYTE $72 ; SW +_B082 +; utilsrc/tftpd.pla: 0388: iNet:serviceIP() +; utilsrc/tftpd.pla: 0389: until conio:keypressed() + !BYTE $6A ; LAW _X028+2 +_F192 !WORD 0+2 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP +_B083 + !BYTE $6A ; LAW _X031+0 +_F193 !WORD 0+0 + !BYTE $56 ; ICAL + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* +_B081 +; utilsrc/tftpd.pla: 0390: getc // eat keypress +; utilsrc/tftpd.pla: 0391: done + !BYTE $54 ; CALL _X006 +_F194 !WORD 0 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 10 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F093-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F094-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F095-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F096-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F097-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F098-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F099-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F100-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F101-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F102-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F103-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F104-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F105-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F106-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F107-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F108-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F109-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F110-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F111-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F112-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F113-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F114-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F115-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F116-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F117-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F118-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F119-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F120-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F121-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F122-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F123-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F124-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F125-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F126-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F127-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F128-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F129-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F130-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F131-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F132-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F133-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F134-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F135-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F136-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F137-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F138-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F139-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F140-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F141-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F142-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F143-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F144-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F145-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F146-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F147-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F148-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F149-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F150-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F151-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F152-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F153-_SEGBEGIN + !BYTE 30 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F154-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F155-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F156-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F157-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F158-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F159-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F160-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F161-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F162-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F163-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F164-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F165-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F166-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F167-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F168-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F169-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F170-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F171-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F172-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F173-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F174-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F175-_SEGBEGIN + !BYTE 9 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F176-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F177-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F178-_SEGBEGIN + !BYTE 29 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F179-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F180-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F181-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F182-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F183-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F184-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F185-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F186-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F187-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F188-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F189-_SEGBEGIN + !BYTE 14 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F190-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F191-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F192-_SEGBEGIN + !BYTE 28 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F193-_SEGBEGIN + !BYTE 31 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F194-_SEGBEGIN + !BYTE 6 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETC + !BYTE $C7,$C5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 6 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: PUTH + !BYTE $D0,$D5,$D4,$48 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 9 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPALLOC + !BYTE $C8,$C5,$C1,$D0,$C1,$CC,$CC,$CF,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 14 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: INET + !BYTE $C9,$CE,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 28 ; ESD INDEX + ; DCI STRING: FILEIO + !BYTE $C6,$C9,$CC,$C5,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 29 ; ESD INDEX + ; DCI STRING: PERR + !BYTE $D0,$C5,$D2,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 30 ; ESD INDEX + ; DCI STRING: CONIO + !BYTE $C3,$CF,$CE,$C9,$4F + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 31 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/vmsrc/apple/a1cmd.a b/src/vmsrc/apple/a1cmd.a new file mode 100644 index 0000000..e256cc4 --- /dev/null +++ b/src/vmsrc/apple/a1cmd.a @@ -0,0 +1,3370 @@ +; ACME COMPATIBLE OUTPUT + JMP _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/a1cmd.pla: 0001: const RELADDR = $1000 + ; RELADDR = 4096 +; vmsrc/apple/a1cmd.pla: 0002: const inbuff = $200 + ; inbuff = 512 +; vmsrc/apple/a1cmd.pla: 0003: const freemem = $0006 + ; freemem = 6 +; vmsrc/apple/a1cmd.pla: 0004: // +; vmsrc/apple/a1cmd.pla: 0005: // System flags: memory allocator screen holes. +; vmsrc/apple/a1cmd.pla: 0006: // +; vmsrc/apple/a1cmd.pla: 0007: const restxt1 = $0001 + ; restxt1 = 1 +; vmsrc/apple/a1cmd.pla: 0008: const restxt2 = $0002 + ; restxt2 = 2 +; vmsrc/apple/a1cmd.pla: 0009: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; vmsrc/apple/a1cmd.pla: 0010: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; vmsrc/apple/a1cmd.pla: 0011: const reshgr1 = $0010 + ; reshgr1 = 16 +; vmsrc/apple/a1cmd.pla: 0012: const reshgr2 = $0020 + ; reshgr2 = 32 +; vmsrc/apple/a1cmd.pla: 0013: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; vmsrc/apple/a1cmd.pla: 0014: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; vmsrc/apple/a1cmd.pla: 0015: // +; vmsrc/apple/a1cmd.pla: 0016: // Module don't free memory +; vmsrc/apple/a1cmd.pla: 0017: // +; vmsrc/apple/a1cmd.pla: 0018: const modkeep = $1000 + ; modkeep = 4096 +; vmsrc/apple/a1cmd.pla: 0019: const modinitkeep = $2000 + ; modinitkeep = 8192 +; vmsrc/apple/a1cmd.pla: 0020: // +; vmsrc/apple/a1cmd.pla: 0021: // CFFA1 addresses. +; vmsrc/apple/a1cmd.pla: 0022: // +; vmsrc/apple/a1cmd.pla: 0023: const CFFADest = $00 + ; CFFADest = 0 +; vmsrc/apple/a1cmd.pla: 0024: const CFFAFileName = $02 + ; CFFAFileName = 2 +; vmsrc/apple/a1cmd.pla: 0025: const CFFAOldName = $04 + ; CFFAOldName = 4 +; vmsrc/apple/a1cmd.pla: 0026: const CFFAFileType = $06 + ; CFFAFileType = 6 +; vmsrc/apple/a1cmd.pla: 0027: const CFFAAuxType = $07 + ; CFFAAuxType = 7 +; vmsrc/apple/a1cmd.pla: 0028: const CFFAFileSize = $09 + ; CFFAFileSize = 9 +; vmsrc/apple/a1cmd.pla: 0029: const CFFAEntryPtr = $0B + ; CFFAEntryPtr = 11 +; vmsrc/apple/a1cmd.pla: 0030: // +; vmsrc/apple/a1cmd.pla: 0031: // Pedefined functions. +; vmsrc/apple/a1cmd.pla: 0032: // +; vmsrc/apple/a1cmd.pla: 0033: predef syscall(cmd,null)#1, call(addr,areg,xreg,yreg,status)#1 +; vmsrc/apple/a1cmd.pla: 0034: predef crout()#0, cout(c)#0, prstr(s)#0, print(i)#0, prbyte(b)#0, prword(w)#0 +; vmsrc/apple/a1cmd.pla: 0035: predef cin()#1, rdstr(p)#1, toupper(c)#1, strcpy(dst,src)#1, strcat(dst,src)#1 +; vmsrc/apple/a1cmd.pla: 0036: predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr), releaseheap(newheap)#1, availheap()#1 +; vmsrc/apple/a1cmd.pla: 0037: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0 +; vmsrc/apple/a1cmd.pla: 0038: predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1 +; vmsrc/apple/a1cmd.pla: 0039: predef sext(a)#1, divmod(a,b)#2, execmod(modfile)#1 +; vmsrc/apple/a1cmd.pla: 0040: // +; vmsrc/apple/a1cmd.pla: 0041: // Exported CMDSYS table +; vmsrc/apple/a1cmd.pla: 0042: // +; vmsrc/apple/a1cmd.pla: 0043: word version = $0200 // 02.00 +_D027 ; version = $0200 // 02.00 + !WORD $0200 +; vmsrc/apple/a1cmd.pla: 0044: word syspath +_D028 !FILL 2 ; syspath +; vmsrc/apple/a1cmd.pla: 0045: word syscmdln +_D029 !FILL 2 ; syscmdln +; vmsrc/apple/a1cmd.pla: 0046: word = @execmod +_F000 !WORD _P026 +; vmsrc/apple/a1cmd.pla: 0047: word systemflags = 0 +_D030 ; systemflags = 0 + !WORD $0000 +; vmsrc/apple/a1cmd.pla: 0048: word heap +_D031 !FILL 2 ; heap +; vmsrc/apple/a1cmd.pla: 0049: word symtbl, lastsym +_D032 !FILL 2 ; symtbl, lastsym +_D033 !FILL 2 ; lastsym +; vmsrc/apple/a1cmd.pla: 0050: byte perr, refauto +_D034 !FILL 1 ; perr, refauto +_D035 !FILL 1 ; refauto +; vmsrc/apple/a1cmd.pla: 0051: // +; vmsrc/apple/a1cmd.pla: 0052: // String pool. +; vmsrc/apple/a1cmd.pla: 0053: // +; vmsrc/apple/a1cmd.pla: 0054: byte autorun[] = "AUTORUN" +_D036 ; autorun[] = "AUTORUN" + !BYTE $07 + !BYTE $41,$55,$54,$4F,$52,$55,$4E +; vmsrc/apple/a1cmd.pla: 0055: byte verstr[] = "\nPLASMA BETA" +_D037 ; verstr[] = "\nPLASMA BETA" + !BYTE $0C + !BYTE $0D,$50,$4C,$41,$53,$4D,$41,$20 + !BYTE $42,$45,$54,$41 +; vmsrc/apple/a1cmd.pla: 0056: byte freestr[] = "MEM FREE:$" +_D038 ; freestr[] = "MEM FREE:$" + !BYTE $0A + !BYTE $4D,$45,$4D,$20,$46,$52,$45,$45 + !BYTE $3A,$24 +; vmsrc/apple/a1cmd.pla: 0057: byte errorstr[] = "ERR:$" +_D039 ; errorstr[] = "ERR:$" + !BYTE $05 + !BYTE $45,$52,$52,$3A,$24 +; vmsrc/apple/a1cmd.pla: 0058: byte prompt[] = "PLASMA" +_D040 ; prompt[] = "PLASMA" + !BYTE $06 + !BYTE $50,$4C,$41,$53,$4D,$41 +; vmsrc/apple/a1cmd.pla: 0059: byte okstr[] = "OK" +_D041 ; okstr[] = "OK" + !BYTE $02 + !BYTE $4F,$4B +; vmsrc/apple/a1cmd.pla: 0060: byte huhstr[] = "?\n" +_D042 ; huhstr[] = "?\n" + !BYTE $02 + !BYTE $3F,$0D +; vmsrc/apple/a1cmd.pla: 0061: byte hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +_D043 ; hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + !BYTE $30 + !BYTE $31 + !BYTE $32 + !BYTE $33 + !BYTE $34 + !BYTE $35 + !BYTE $36 + !BYTE $37 + !BYTE $38 + !BYTE $39 + !BYTE $41 + !BYTE $42 + !BYTE $43 + !BYTE $44 + !BYTE $45 + !BYTE $46 +; vmsrc/apple/a1cmd.pla: 0062: // +; vmsrc/apple/a1cmd.pla: 0063: // Exported Machine ID. +; vmsrc/apple/a1cmd.pla: 0064: // +; vmsrc/apple/a1cmd.pla: 0065: byte machid = $08 // Apple 1 (NA in ProDOS Tech Ref) +_D044 ; machid = $08 // Apple 1 (NA in ProDOS Tech Ref) + !BYTE $08 +; vmsrc/apple/a1cmd.pla: 0066: // +; vmsrc/apple/a1cmd.pla: 0067: // Command line pointer +; vmsrc/apple/a1cmd.pla: 0068: // +; vmsrc/apple/a1cmd.pla: 0069: word cmdptr = @hexchar // make it point to a zero +_D045 ; cmdptr = @hexchar // make it point to a zero +_F001 !WORD _D043 +; vmsrc/apple/a1cmd.pla: 0070: // +; vmsrc/apple/a1cmd.pla: 0071: // Standard Library exported functions. +; vmsrc/apple/a1cmd.pla: 0072: // +; vmsrc/apple/a1cmd.pla: 0073: byte syslibstr[] = "CMDSYS" +_D046 ; syslibstr[] = "CMDSYS" + !BYTE $06 + !BYTE $43,$4D,$44,$53,$59,$53 +; vmsrc/apple/a1cmd.pla: 0074: byte machidstr[] = "MACHID" +_D047 ; machidstr[] = "MACHID" + !BYTE $06 + !BYTE $4D,$41,$43,$48,$49,$44 +; vmsrc/apple/a1cmd.pla: 0075: byte putcstr[] = "PUTC" +_D048 ; putcstr[] = "PUTC" + !BYTE $04 + !BYTE $50,$55,$54,$43 +; vmsrc/apple/a1cmd.pla: 0076: byte putlnstr[] = "PUTLN" +_D049 ; putlnstr[] = "PUTLN" + !BYTE $05 + !BYTE $50,$55,$54,$4C,$4E +; vmsrc/apple/a1cmd.pla: 0077: byte putsstr[] = "PUTS" +_D050 ; putsstr[] = "PUTS" + !BYTE $04 + !BYTE $50,$55,$54,$53 +; vmsrc/apple/a1cmd.pla: 0078: byte putistr[] = "PUTI" +_D051 ; putistr[] = "PUTI" + !BYTE $04 + !BYTE $50,$55,$54,$49 +; vmsrc/apple/a1cmd.pla: 0079: byte putbstr[] = "PUTB" +_D052 ; putbstr[] = "PUTB" + !BYTE $04 + !BYTE $50,$55,$54,$42 +; vmsrc/apple/a1cmd.pla: 0080: byte putwstr[] = "PUTH" +_D053 ; putwstr[] = "PUTH" + !BYTE $04 + !BYTE $50,$55,$54,$48 +; vmsrc/apple/a1cmd.pla: 0081: byte getcstr[] = "GETC" +_D054 ; getcstr[] = "GETC" + !BYTE $04 + !BYTE $47,$45,$54,$43 +; vmsrc/apple/a1cmd.pla: 0082: byte getsstr[] = "GETS" +_D055 ; getsstr[] = "GETS" + !BYTE $04 + !BYTE $47,$45,$54,$53 +; vmsrc/apple/a1cmd.pla: 0083: byte toupstr[] = "TOUPPER" +_D056 ; toupstr[] = "TOUPPER" + !BYTE $07 + !BYTE $54,$4F,$55,$50,$50,$45,$52 +; vmsrc/apple/a1cmd.pla: 0084: byte strcpystr[] = "STRCPY" +_D057 ; strcpystr[] = "STRCPY" + !BYTE $06 + !BYTE $53,$54,$52,$43,$50,$59 +; vmsrc/apple/a1cmd.pla: 0085: byte strcatstr[] = "STRCAT" +_D058 ; strcatstr[] = "STRCAT" + !BYTE $06 + !BYTE $53,$54,$52,$43,$41,$54 +; vmsrc/apple/a1cmd.pla: 0086: byte sysstr[] = "SYSCALL" +_D059 ; sysstr[] = "SYSCALL" + !BYTE $07 + !BYTE $53,$59,$53,$43,$41,$4C,$4C +; vmsrc/apple/a1cmd.pla: 0087: byte callstr[] = "CALL" +_D060 ; callstr[] = "CALL" + !BYTE $04 + !BYTE $43,$41,$4C,$4C +; vmsrc/apple/a1cmd.pla: 0088: byte hpmarkstr[] = "HEAPMARK" +_D061 ; hpmarkstr[] = "HEAPMARK" + !BYTE $08 + !BYTE $48,$45,$41,$50,$4D,$41,$52,$4B +; vmsrc/apple/a1cmd.pla: 0089: byte hpalignstr[] = "HEAPALLOCALIGN" +_D062 ; hpalignstr[] = "HEAPALLOCALIGN" + !BYTE $0E + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43,$41,$4C,$49,$47,$4E +; vmsrc/apple/a1cmd.pla: 0090: byte hpallocstr[] = "HEAPALLOC" +_D063 ; hpallocstr[] = "HEAPALLOC" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43 +; vmsrc/apple/a1cmd.pla: 0091: byte hprelstr[] = "HEAPRELEASE" +_D064 ; hprelstr[] = "HEAPRELEASE" + !BYTE $0B + !BYTE $48,$45,$41,$50,$52,$45,$4C,$45 + !BYTE $41,$53,$45 +; vmsrc/apple/a1cmd.pla: 0092: byte hpavlstr[] = "HEAPAVAIL" +_D065 ; hpavlstr[] = "HEAPAVAIL" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$56,$41,$49 + !BYTE $4C +; vmsrc/apple/a1cmd.pla: 0093: byte memsetstr[] = "MEMSET" +_D066 ; memsetstr[] = "MEMSET" + !BYTE $06 + !BYTE $4D,$45,$4D,$53,$45,$54 +; vmsrc/apple/a1cmd.pla: 0094: byte memcpystr[] = "MEMCPY" +_D067 ; memcpystr[] = "MEMCPY" + !BYTE $06 + !BYTE $4D,$45,$4D,$43,$50,$59 +; vmsrc/apple/a1cmd.pla: 0095: byte uisgtstr[] = "ISUGT" +_D068 ; uisgtstr[] = "ISUGT" + !BYTE $05 + !BYTE $49,$53,$55,$47,$54 +; vmsrc/apple/a1cmd.pla: 0096: byte uisgestr[] = "ISUGE" +_D069 ; uisgestr[] = "ISUGE" + !BYTE $05 + !BYTE $49,$53,$55,$47,$45 +; vmsrc/apple/a1cmd.pla: 0097: byte uisltstr[] = "ISULT" +_D070 ; uisltstr[] = "ISULT" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$54 +; vmsrc/apple/a1cmd.pla: 0098: byte uislestr[] = "ISULE" +_D071 ; uislestr[] = "ISULE" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$45 +; vmsrc/apple/a1cmd.pla: 0099: byte sextstr[] = "SEXT" +_D072 ; sextstr[] = "SEXT" + !BYTE $04 + !BYTE $53,$45,$58,$54 +; vmsrc/apple/a1cmd.pla: 0100: byte divmodstr[] = "DIVMOD" +_D073 ; divmodstr[] = "DIVMOD" + !BYTE $06 + !BYTE $44,$49,$56,$4D,$4F,$44 +; vmsrc/apple/a1cmd.pla: 0101: word exports[] = @syslibstr, @version +_D074 ; exports[] = @syslibstr, @version +_F002 !WORD _D046 +_F003 !WORD _D027 +; vmsrc/apple/a1cmd.pla: 0102: word = @sysstr, @syscall +_F004 !WORD _D059 +_F005 !WORD _P000 +; vmsrc/apple/a1cmd.pla: 0103: word = @callstr, @call +_F006 !WORD _D060 +_F007 !WORD _P001 +; vmsrc/apple/a1cmd.pla: 0104: word = @putcstr, @cout +_F008 !WORD _D048 +_F009 !WORD _P003 +; vmsrc/apple/a1cmd.pla: 0105: word = @putlnstr, @crout +_F010 !WORD _D049 +_F011 !WORD _P002 +; vmsrc/apple/a1cmd.pla: 0106: word = @putsstr, @prstr +_F012 !WORD _D050 +_F013 !WORD _P004 +; vmsrc/apple/a1cmd.pla: 0107: word = @putistr, @print +_F014 !WORD _D051 +_F015 !WORD _P005 +; vmsrc/apple/a1cmd.pla: 0108: word = @putbstr, @prbyte +_F016 !WORD _D052 +_F017 !WORD _P006 +; vmsrc/apple/a1cmd.pla: 0109: word = @putwstr, @prword +_F018 !WORD _D053 +_F019 !WORD _P007 +; vmsrc/apple/a1cmd.pla: 0110: word = @getcstr, @cin +_F020 !WORD _D054 +_F021 !WORD _P008 +; vmsrc/apple/a1cmd.pla: 0111: word = @getsstr, @rdstr +_F022 !WORD _D055 +_F023 !WORD _P009 +; vmsrc/apple/a1cmd.pla: 0112: word = @toupstr, @toupper +_F024 !WORD _D056 +_F025 !WORD _P010 +; vmsrc/apple/a1cmd.pla: 0113: word = @hpmarkstr, @markheap +_F026 !WORD _D061 +_F027 !WORD _P013 +; vmsrc/apple/a1cmd.pla: 0114: word = @hpallocstr,@allocheap +_F028 !WORD _D063 +_F029 !WORD _P014 +; vmsrc/apple/a1cmd.pla: 0115: word = @hpalignstr,@allocalignheap +_F030 !WORD _D062 +_F031 !WORD _P015 +; vmsrc/apple/a1cmd.pla: 0116: word = @hprelstr, @releaseheap +_F032 !WORD _D064 +_F033 !WORD _P016 +; vmsrc/apple/a1cmd.pla: 0117: word = @hpavlstr, @availheap +_F034 !WORD _D065 +_F035 !WORD _P017 +; vmsrc/apple/a1cmd.pla: 0118: word = @memsetstr, @memset +_F036 !WORD _D066 +_F037 !WORD _P018 +; vmsrc/apple/a1cmd.pla: 0119: word = @memcpystr, @memcpy +_F038 !WORD _D067 +_F039 !WORD _P019 +; vmsrc/apple/a1cmd.pla: 0120: word = @strcpystr, @strcpy +_F040 !WORD _D057 +_F041 !WORD _P011 +; vmsrc/apple/a1cmd.pla: 0121: word = @strcatstr, @strcat +_F042 !WORD _D058 +_F043 !WORD _P012 +; vmsrc/apple/a1cmd.pla: 0122: word = @uisgtstr, @uword_isgt +_F044 !WORD _D068 +_F045 !WORD _P020 +; vmsrc/apple/a1cmd.pla: 0123: word = @uisgestr, @uword_isge +_F046 !WORD _D069 +_F047 !WORD _P021 +; vmsrc/apple/a1cmd.pla: 0124: word = @uisltstr, @uword_islt +_F048 !WORD _D070 +_F049 !WORD _P022 +; vmsrc/apple/a1cmd.pla: 0125: word = @uislestr, @uword_isle +_F050 !WORD _D071 +_F051 !WORD _P023 +; vmsrc/apple/a1cmd.pla: 0126: word = @sextstr, @sext +_F052 !WORD _D072 +_F053 !WORD _P024 +; vmsrc/apple/a1cmd.pla: 0127: word = @divmodstr, @divmod +_F054 !WORD _D073 +_F055 !WORD _P025 +; vmsrc/apple/a1cmd.pla: 0128: word = @machidstr, @machid +_F056 !WORD _D047 +_F057 !WORD _D044 +; vmsrc/apple/a1cmd.pla: 0129: word = 0 + !WORD $0000 +; vmsrc/apple/a1cmd.pla: 0130: word syslibsym = @exports +_D075 ; syslibsym = @exports +_F058 !WORD _D074 +; vmsrc/apple/a1cmd.pla: 0131: // +; vmsrc/apple/a1cmd.pla: 0132: // Utility functions +; vmsrc/apple/a1cmd.pla: 0133: // +; vmsrc/apple/a1cmd.pla: 0134: asm saveX#0 +_A000 ; saveX() +; vmsrc/apple/a1cmd.pla: 0135: STX XREG+1 + STX XREG+1 +; vmsrc/apple/a1cmd.pla: 0136: end +; vmsrc/apple/a1cmd.pla: 0137: asm restoreX#0 +_A001 ; restoreX() +; vmsrc/apple/a1cmd.pla: 0138: XREG LDX #$00 +XREG LDX #$00 +; vmsrc/apple/a1cmd.pla: 0139: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0140: end +; vmsrc/apple/a1cmd.pla: 0141: // +; vmsrc/apple/a1cmd.pla: 0142: // CALL CFFA1 API ENTRYPOINT +; vmsrc/apple/a1cmd.pla: 0143: // SYSCALL(CMD, 0) +; vmsrc/apple/a1cmd.pla: 0144: // +; vmsrc/apple/a1cmd.pla: 0145: asm syscall(cmd, null)#1 +_P000 ; syscall(cmd, null)#1() +_A002 ; syscall() +; vmsrc/apple/a1cmd.pla: 0146: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0147: STX ESP + STX ESP +; vmsrc/apple/a1cmd.pla: 0148: TAX + TAX +; vmsrc/apple/a1cmd.pla: 0149: JSR $900C + JSR $900C +; vmsrc/apple/a1cmd.pla: 0150: LDX ESP + LDX ESP +; vmsrc/apple/a1cmd.pla: 0151: INX + INX +; vmsrc/apple/a1cmd.pla: 0152: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0153: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0154: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0155: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0156: end +; vmsrc/apple/a1cmd.pla: 0157: // +; vmsrc/apple/a1cmd.pla: 0158: // CALL 6502 ROUTINE +; vmsrc/apple/a1cmd.pla: 0159: // CALL(ADDR, AREG, XREG, YREG, STATUS) +; vmsrc/apple/a1cmd.pla: 0160: // +; vmsrc/apple/a1cmd.pla: 0161: asm call(addr,areg,xreg,yreg,sstatus)#1 +_P001 ; call(addr,areg,xreg,yreg,sstatus)#1() +_A003 ; call() +; vmsrc/apple/a1cmd.pla: 0162: PHP + PHP +; vmsrc/apple/a1cmd.pla: 0163: LDA ESTKL+4,X + LDA ESTKL+4,X +; vmsrc/apple/a1cmd.pla: 0164: STA CALL6502+1 + STA CALL6502+1 +; vmsrc/apple/a1cmd.pla: 0165: LDA ESTKH+4,X + LDA ESTKH+4,X +; vmsrc/apple/a1cmd.pla: 0166: STA CALL6502+2 + STA CALL6502+2 +; vmsrc/apple/a1cmd.pla: 0167: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0168: PHA + PHA +; vmsrc/apple/a1cmd.pla: 0169: LDY ESTKL+1,X + LDY ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0170: LDA ESTKL+3,X + LDA ESTKL+3,X +; vmsrc/apple/a1cmd.pla: 0171: PHA + PHA +; vmsrc/apple/a1cmd.pla: 0172: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/a1cmd.pla: 0173: INX + INX +; vmsrc/apple/a1cmd.pla: 0174: INX + INX +; vmsrc/apple/a1cmd.pla: 0175: INX + INX +; vmsrc/apple/a1cmd.pla: 0176: INX + INX +; vmsrc/apple/a1cmd.pla: 0177: STX ESP + STX ESP +; vmsrc/apple/a1cmd.pla: 0178: TAX + TAX +; vmsrc/apple/a1cmd.pla: 0179: PLA + PLA +; vmsrc/apple/a1cmd.pla: 0180: PLP + PLP +; vmsrc/apple/a1cmd.pla: 0181: CALL6502 JSR $FFFF +CALL6502 JSR $FFFF +; vmsrc/apple/a1cmd.pla: 0182: PHP + PHP +; vmsrc/apple/a1cmd.pla: 0183: STA REGVALS+0 + STA REGVALS+0 +; vmsrc/apple/a1cmd.pla: 0184: STX REGVALS+1 + STX REGVALS+1 +; vmsrc/apple/a1cmd.pla: 0185: STY REGVALS+2 + STY REGVALS+2 +; vmsrc/apple/a1cmd.pla: 0186: PLA + PLA +; vmsrc/apple/a1cmd.pla: 0187: STA REGVALS+3 + STA REGVALS+3 +; vmsrc/apple/a1cmd.pla: 0188: LDX ESP + LDX ESP +; vmsrc/apple/a1cmd.pla: 0189: LDA #REGVALS + LDY #>REGVALS +; vmsrc/apple/a1cmd.pla: 0191: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0192: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0193: PLP + PLP +; vmsrc/apple/a1cmd.pla: 0194: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0195: REGVALS !FILL 4 +REGVALS !FILL 4 +; vmsrc/apple/a1cmd.pla: 0196: end +; vmsrc/apple/a1cmd.pla: 0197: // +; vmsrc/apple/a1cmd.pla: 0198: // QUIT TO MONITOR +; vmsrc/apple/a1cmd.pla: 0199: // +; vmsrc/apple/a1cmd.pla: 0200: asm quit()#0 +_A004 ; quit() +; vmsrc/apple/a1cmd.pla: 0201: JMP $9000 + JMP $9000 +; vmsrc/apple/a1cmd.pla: 0202: end +; vmsrc/apple/a1cmd.pla: 0203: // +; vmsrc/apple/a1cmd.pla: 0204: // SET MEMORY TO VALUE +; vmsrc/apple/a1cmd.pla: 0205: // MEMSET(ADDR, VALUE, SIZE) +; vmsrc/apple/a1cmd.pla: 0206: // With optimizations from Peter Ferrie +; vmsrc/apple/a1cmd.pla: 0207: // +; vmsrc/apple/a1cmd.pla: 0208: asm memset(addr,value,size)#0 +_P018 ; memset(addr,value,size)#0() +_A005 ; memset() +; vmsrc/apple/a1cmd.pla: 0209: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/a1cmd.pla: 0210: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0211: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/a1cmd.pla: 0212: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0213: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/a1cmd.pla: 0214: BEQ + + BEQ + +; vmsrc/apple/a1cmd.pla: 0215: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/a1cmd.pla: 0216: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0217: + LDA ESTKH,X ++ LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0218: BEQ SETMEX + BEQ SETMEX +; vmsrc/apple/a1cmd.pla: 0219: SETMLPL CLC +SETMLPL CLC +; vmsrc/apple/a1cmd.pla: 0220: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0221: SETMLPH STA (DST),Y +SETMLPH STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0222: DEC ESTKL,X + DEC ESTKL,X +; vmsrc/apple/a1cmd.pla: 0223: BEQ ++ + BEQ ++ +; vmsrc/apple/a1cmd.pla: 0224: - INY +- INY +; vmsrc/apple/a1cmd.pla: 0225: BEQ + + BEQ + +; vmsrc/apple/a1cmd.pla: 0226: -- BCS SETMLPL +-- BCS SETMLPL +; vmsrc/apple/a1cmd.pla: 0227: SEC + SEC +; vmsrc/apple/a1cmd.pla: 0228: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0229: BCS SETMLPH + BCS SETMLPH +; vmsrc/apple/a1cmd.pla: 0230: + INC DSTH ++ INC DSTH +; vmsrc/apple/a1cmd.pla: 0231: BNE -- + BNE -- +; vmsrc/apple/a1cmd.pla: 0232: ++ DEC ESTKH,X +++ DEC ESTKH,X +; vmsrc/apple/a1cmd.pla: 0233: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0234: SETMEX INX +SETMEX INX +; vmsrc/apple/a1cmd.pla: 0235: INX + INX +; vmsrc/apple/a1cmd.pla: 0236: INX + INX +; vmsrc/apple/a1cmd.pla: 0237: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0238: end +; vmsrc/apple/a1cmd.pla: 0239: // +; vmsrc/apple/a1cmd.pla: 0240: // COPY MEMORY +; vmsrc/apple/a1cmd.pla: 0241: // MEMCPY(DSTADDR, SRCADDR, SIZE) +; vmsrc/apple/a1cmd.pla: 0242: // +; vmsrc/apple/a1cmd.pla: 0243: asm memcpy(dst,src,size)#0 +_P019 ; memcpy(dst,src,size)#0() +_A006 ; memcpy() +; vmsrc/apple/a1cmd.pla: 0244: INX + INX +; vmsrc/apple/a1cmd.pla: 0245: INX + INX +; vmsrc/apple/a1cmd.pla: 0246: INX + INX +; vmsrc/apple/a1cmd.pla: 0247: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0248: ORA ESTKH-3,X + ORA ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0249: BEQ CPYMEX + BEQ CPYMEX +; vmsrc/apple/a1cmd.pla: 0250: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/a1cmd.pla: 0251: CMP ESTKL-1,X + CMP ESTKL-1,X +; vmsrc/apple/a1cmd.pla: 0252: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/a1cmd.pla: 0253: SBC ESTKH-1,X + SBC ESTKH-1,X +; vmsrc/apple/a1cmd.pla: 0254: BCC REVCPY + BCC REVCPY +; vmsrc/apple/a1cmd.pla: 0255: ; +; vmsrc/apple/a1cmd.pla: 0256: ; FORWARD COPY +; FORWARD COPY +; vmsrc/apple/a1cmd.pla: 0257: ; +; vmsrc/apple/a1cmd.pla: 0258: LDA ESTKL-1,X + LDA ESTKL-1,X +; vmsrc/apple/a1cmd.pla: 0259: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0260: LDA ESTKH-1,X + LDA ESTKH-1,X +; vmsrc/apple/a1cmd.pla: 0261: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0262: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/a1cmd.pla: 0263: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0264: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/a1cmd.pla: 0265: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0266: LDY ESTKL-3,X + LDY ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0267: BEQ FORCPYLP + BEQ FORCPYLP +; vmsrc/apple/a1cmd.pla: 0268: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0269: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0270: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0271: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0272: INY + INY +; vmsrc/apple/a1cmd.pla: 0273: BNE + + BNE + +; vmsrc/apple/a1cmd.pla: 0274: INC DSTH + INC DSTH +; vmsrc/apple/a1cmd.pla: 0275: INC SRCH + INC SRCH +; vmsrc/apple/a1cmd.pla: 0276: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0277: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/a1cmd.pla: 0278: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0279: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/a1cmd.pla: 0280: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0281: ; +; vmsrc/apple/a1cmd.pla: 0282: ; REVERSE COPY +; REVERSE COPY +; vmsrc/apple/a1cmd.pla: 0283: ; +; vmsrc/apple/a1cmd.pla: 0284: REVCPY ;CLC +REVCPY ;CLC +; vmsrc/apple/a1cmd.pla: 0285: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0286: ADC ESTKL-1,X + ADC ESTKL-1,X +; vmsrc/apple/a1cmd.pla: 0287: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0288: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0289: ADC ESTKH-1,X + ADC ESTKH-1,X +; vmsrc/apple/a1cmd.pla: 0290: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0291: CLC + CLC +; vmsrc/apple/a1cmd.pla: 0292: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0293: ADC ESTKL-2,X + ADC ESTKL-2,X +; vmsrc/apple/a1cmd.pla: 0294: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0295: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0296: ADC ESTKH-2,X + ADC ESTKH-2,X +; vmsrc/apple/a1cmd.pla: 0297: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0298: DEC DSTH + DEC DSTH +; vmsrc/apple/a1cmd.pla: 0299: DEC SRCH + DEC SRCH +; vmsrc/apple/a1cmd.pla: 0300: LDY #$FF + LDY #$FF +; vmsrc/apple/a1cmd.pla: 0301: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0302: BEQ REVCPYLP + BEQ REVCPYLP +; vmsrc/apple/a1cmd.pla: 0303: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0304: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0305: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0306: DEY + DEY +; vmsrc/apple/a1cmd.pla: 0307: CPY #$FF + CPY #$FF +; vmsrc/apple/a1cmd.pla: 0308: BNE + + BNE + +; vmsrc/apple/a1cmd.pla: 0309: DEC DSTH + DEC DSTH +; vmsrc/apple/a1cmd.pla: 0310: DEC SRCH + DEC SRCH +; vmsrc/apple/a1cmd.pla: 0311: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/a1cmd.pla: 0312: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/a1cmd.pla: 0313: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/a1cmd.pla: 0314: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/a1cmd.pla: 0315: CPYMEX RTS +CPYMEX RTS +; vmsrc/apple/a1cmd.pla: 0316: end +; vmsrc/apple/a1cmd.pla: 0317: // +; vmsrc/apple/a1cmd.pla: 0318: // Unsigned word comparisons. +; vmsrc/apple/a1cmd.pla: 0319: // +; vmsrc/apple/a1cmd.pla: 0320: asm uword_isge(a,b)#1 +_P021 ; uword_isge(a,b)#1() +_A007 ; uword_isge() +; vmsrc/apple/a1cmd.pla: 0321: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0322: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/a1cmd.pla: 0323: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0324: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/a1cmd.pla: 0325: LDA #$FF + LDA #$FF +; vmsrc/apple/a1cmd.pla: 0326: ADC #$00 + ADC #$00 +; vmsrc/apple/a1cmd.pla: 0327: EOR #$FF + EOR #$FF +; vmsrc/apple/a1cmd.pla: 0328: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0329: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0330: INX + INX +; vmsrc/apple/a1cmd.pla: 0331: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0332: end +; vmsrc/apple/a1cmd.pla: 0333: asm uword_isle(a,b)#1 +_P023 ; uword_isle(a,b)#1() +_A008 ; uword_isle() +; vmsrc/apple/a1cmd.pla: 0334: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0335: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0336: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0337: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0338: LDA #$FF + LDA #$FF +; vmsrc/apple/a1cmd.pla: 0339: ADC #$00 + ADC #$00 +; vmsrc/apple/a1cmd.pla: 0340: EOR #$FF + EOR #$FF +; vmsrc/apple/a1cmd.pla: 0341: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0342: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0343: INX + INX +; vmsrc/apple/a1cmd.pla: 0344: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0345: end +; vmsrc/apple/a1cmd.pla: 0346: asm uword_isgt(a,b)#1 +_P020 ; uword_isgt(a,b)#1() +_A009 ; uword_isgt() +; vmsrc/apple/a1cmd.pla: 0347: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0348: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0349: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0350: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0351: LDA #$FF + LDA #$FF +; vmsrc/apple/a1cmd.pla: 0352: ADC #$00 + ADC #$00 +; vmsrc/apple/a1cmd.pla: 0353: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0354: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0355: INX + INX +; vmsrc/apple/a1cmd.pla: 0356: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0357: end +; vmsrc/apple/a1cmd.pla: 0358: asm uword_islt(a,b)#1 +_P022 ; uword_islt(a,b)#1() +_A010 ; uword_islt() +; vmsrc/apple/a1cmd.pla: 0359: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0360: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/a1cmd.pla: 0361: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0362: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/a1cmd.pla: 0363: LDA #$FF + LDA #$FF +; vmsrc/apple/a1cmd.pla: 0364: ADC #$00 + ADC #$00 +; vmsrc/apple/a1cmd.pla: 0365: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0366: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0367: INX + INX +; vmsrc/apple/a1cmd.pla: 0368: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0369: end +; vmsrc/apple/a1cmd.pla: 0370: asm divmod(a,b)#2 +_P025 ; divmod(a,b)#2() +_A011 ; divmod() +; vmsrc/apple/a1cmd.pla: 0371: JSR INTERP ; CALL DINTERP + JSR INTERP ; CALL DINTERP +; vmsrc/apple/a1cmd.pla: 0372: !BYTE $36, $5C ; DIVMOD, RET + !BYTE $36, $5C ; DIVMOD, RET +; vmsrc/apple/a1cmd.pla: 0373: end +; vmsrc/apple/a1cmd.pla: 0374: asm sext(a)#1 +_P024 ; sext(a)#1() +_A012 ; sext() +; vmsrc/apple/a1cmd.pla: 0375: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0376: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0377: BPL + + BPL + +; vmsrc/apple/a1cmd.pla: 0378: DEY + DEY +; vmsrc/apple/a1cmd.pla: 0379: + STY ESTKH,X ++ STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0380: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0381: end +; vmsrc/apple/a1cmd.pla: 0382: // +; vmsrc/apple/a1cmd.pla: 0383: // Addresses of internal routines. +; vmsrc/apple/a1cmd.pla: 0384: // +; vmsrc/apple/a1cmd.pla: 0385: asm interp()#1 +_A013 ; interp() +; vmsrc/apple/a1cmd.pla: 0386: DEX + DEX +; vmsrc/apple/a1cmd.pla: 0387: LDA #IINTERP + LDA #>IINTERP +; vmsrc/apple/a1cmd.pla: 0390: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0391: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0392: end +; vmsrc/apple/a1cmd.pla: 0393: // +; vmsrc/apple/a1cmd.pla: 0394: // A DCI string is one that has the high bit set for every character except the last. +; vmsrc/apple/a1cmd.pla: 0395: // More efficient than C or Pascal strings. +; vmsrc/apple/a1cmd.pla: 0396: // +; vmsrc/apple/a1cmd.pla: 0397: //def dcitos(dci, str) +; vmsrc/apple/a1cmd.pla: 0398: // byte len, c +; vmsrc/apple/a1cmd.pla: 0399: // len = 0 +; vmsrc/apple/a1cmd.pla: 0400: // repeat +; vmsrc/apple/a1cmd.pla: 0401: // c = (dci).[len] +; vmsrc/apple/a1cmd.pla: 0402: // len = len + 1 +; vmsrc/apple/a1cmd.pla: 0403: // (str).[len] = c & $7F +; vmsrc/apple/a1cmd.pla: 0404: // until !(c & $80) +; vmsrc/apple/a1cmd.pla: 0405: // ^str = len +; vmsrc/apple/a1cmd.pla: 0406: // return len +; vmsrc/apple/a1cmd.pla: 0407: //end +; vmsrc/apple/a1cmd.pla: 0408: asm dcitos(dci, str)#1 +_A014 ; dcitos() +; vmsrc/apple/a1cmd.pla: 0409: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0410: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0411: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0412: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0413: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0414: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0415: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0416: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0417: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0418: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0419: CMP #$80 + CMP #$80 +; vmsrc/apple/a1cmd.pla: 0420: AND #$7F + AND #$7F +; vmsrc/apple/a1cmd.pla: 0421: INY + INY +; vmsrc/apple/a1cmd.pla: 0422: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0423: BCS - + BCS - +; vmsrc/apple/a1cmd.pla: 0424: TYA + TYA +; vmsrc/apple/a1cmd.pla: 0425: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0426: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0427: INX + INX +; vmsrc/apple/a1cmd.pla: 0428: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0429: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0430: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0431: end +; vmsrc/apple/a1cmd.pla: 0432: //def stodci(str, dci) +; vmsrc/apple/a1cmd.pla: 0433: // byte len, c +; vmsrc/apple/a1cmd.pla: 0434: // len = ^str +; vmsrc/apple/a1cmd.pla: 0435: // if len == 0 +; vmsrc/apple/a1cmd.pla: 0436: // return +; vmsrc/apple/a1cmd.pla: 0437: // fin +; vmsrc/apple/a1cmd.pla: 0438: // c = toupper((str).[len]) & $7F +; vmsrc/apple/a1cmd.pla: 0439: // len = len - 1 +; vmsrc/apple/a1cmd.pla: 0440: // (dci).[len] = c +; vmsrc/apple/a1cmd.pla: 0441: // while len +; vmsrc/apple/a1cmd.pla: 0442: // c = toupper((str).[len]) | $80 +; vmsrc/apple/a1cmd.pla: 0443: // len = len - 1 +; vmsrc/apple/a1cmd.pla: 0444: // (dci).[len] = c +; vmsrc/apple/a1cmd.pla: 0445: // loop +; vmsrc/apple/a1cmd.pla: 0446: // return ^str +; vmsrc/apple/a1cmd.pla: 0447: //end +; vmsrc/apple/a1cmd.pla: 0448: asm stodci(str, dci)#1 +_A015 ; stodci() +; vmsrc/apple/a1cmd.pla: 0449: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0450: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0451: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0452: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0453: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0454: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0455: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0456: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0457: INX + INX +; vmsrc/apple/a1cmd.pla: 0458: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0459: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0460: BEQ ++ + BEQ ++ +; vmsrc/apple/a1cmd.pla: 0461: TAY + TAY +; vmsrc/apple/a1cmd.pla: 0462: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0463: JSR TOUPR + JSR TOUPR +; vmsrc/apple/a1cmd.pla: 0464: BNE + + BNE + +; vmsrc/apple/a1cmd.pla: 0465: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0466: JSR TOUPR + JSR TOUPR +; vmsrc/apple/a1cmd.pla: 0467: ORA #$80 + ORA #$80 +; vmsrc/apple/a1cmd.pla: 0468: + DEY ++ DEY +; vmsrc/apple/a1cmd.pla: 0469: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0470: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0471: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0472: ++ STA ESTKL,X +++ STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0473: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0474: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0475: end +; vmsrc/apple/a1cmd.pla: 0476: asm toupper(c)#1 +_P010 ; toupper(c)#1() +_A016 ; toupper() +; vmsrc/apple/a1cmd.pla: 0477: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0478: TOUPR AND #$7F +TOUPR AND #$7F +; vmsrc/apple/a1cmd.pla: 0479: CMP #'a' + CMP #'a' +; vmsrc/apple/a1cmd.pla: 0480: BCC + + BCC + +; vmsrc/apple/a1cmd.pla: 0481: CMP #'z'+1 + CMP #'z'+1 +; vmsrc/apple/a1cmd.pla: 0482: BCS + + BCS + +; vmsrc/apple/a1cmd.pla: 0483: SBC #$1F + SBC #$1F +; vmsrc/apple/a1cmd.pla: 0484: + STA ESTKL,X ++ STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0485: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0486: end +; vmsrc/apple/a1cmd.pla: 0487: // +; vmsrc/apple/a1cmd.pla: 0488: // Module symbols are entered into the symbol table +; vmsrc/apple/a1cmd.pla: 0489: // pre-pended with a '#' to differentiate them +; vmsrc/apple/a1cmd.pla: 0490: // from normal symbols. +; vmsrc/apple/a1cmd.pla: 0491: // +; vmsrc/apple/a1cmd.pla: 0492: // +; vmsrc/apple/a1cmd.pla: 0493: // Lookup routines. +; vmsrc/apple/a1cmd.pla: 0494: // +; vmsrc/apple/a1cmd.pla: 0495: //def lookuptbl(dci, tbl) +; vmsrc/apple/a1cmd.pla: 0496: // word match +; vmsrc/apple/a1cmd.pla: 0497: // while ^tbl +; vmsrc/apple/a1cmd.pla: 0498: // match = dci +; vmsrc/apple/a1cmd.pla: 0499: // while ^tbl == ^match +; vmsrc/apple/a1cmd.pla: 0500: // if !(^tbl & $80) +; vmsrc/apple/a1cmd.pla: 0501: // return (tbl):1 +; vmsrc/apple/a1cmd.pla: 0502: // fin +; vmsrc/apple/a1cmd.pla: 0503: // tbl = tbl + 1 +; vmsrc/apple/a1cmd.pla: 0504: // match = match + 1 +; vmsrc/apple/a1cmd.pla: 0505: // loop +; vmsrc/apple/a1cmd.pla: 0506: // while (^tbl & $80) +; vmsrc/apple/a1cmd.pla: 0507: // tbl = tbl + 1 +; vmsrc/apple/a1cmd.pla: 0508: // loop +; vmsrc/apple/a1cmd.pla: 0509: // tbl = tbl + 3 +; vmsrc/apple/a1cmd.pla: 0510: // loop +; vmsrc/apple/a1cmd.pla: 0511: // return 0 +; vmsrc/apple/a1cmd.pla: 0512: asm lookuptbl(dci, tbl)#1 +_A017 ; lookuptbl() +; vmsrc/apple/a1cmd.pla: 0513: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0514: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0515: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0516: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0517: INX + INX +; vmsrc/apple/a1cmd.pla: 0518: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0519: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0520: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0521: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0522: -- LDY #$00 +-- LDY #$00 +; vmsrc/apple/a1cmd.pla: 0523: - LDA (DST),Y +- LDA (DST),Y +; vmsrc/apple/a1cmd.pla: 0524: BEQ + + BEQ + +; vmsrc/apple/a1cmd.pla: 0525: CMP (SRC),Y + CMP (SRC),Y +; vmsrc/apple/a1cmd.pla: 0526: BNE ++ + BNE ++ +; vmsrc/apple/a1cmd.pla: 0527: INY + INY +; vmsrc/apple/a1cmd.pla: 0528: ASL + ASL +; vmsrc/apple/a1cmd.pla: 0529: BCS - + BCS - +; vmsrc/apple/a1cmd.pla: 0530: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/a1cmd.pla: 0531: STA ESTKL,X ; MATCH + STA ESTKL,X ; MATCH +; vmsrc/apple/a1cmd.pla: 0532: INY + INY +; vmsrc/apple/a1cmd.pla: 0533: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/a1cmd.pla: 0534: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0535: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0536: + STA ESTKL,X ; NO MATCH ++ STA ESTKL,X ; NO MATCH +; vmsrc/apple/a1cmd.pla: 0537: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0538: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0539: ++ +++ +; vmsrc/apple/a1cmd.pla: 0540: - LDA (DST),Y ; NEXT ENTRY +- LDA (DST),Y ; NEXT ENTRY +; vmsrc/apple/a1cmd.pla: 0541: BPL + + BPL + +; vmsrc/apple/a1cmd.pla: 0542: INY + INY +; vmsrc/apple/a1cmd.pla: 0543: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0544: + TYA ++ TYA +; vmsrc/apple/a1cmd.pla: 0545: CLC + CLC +; vmsrc/apple/a1cmd.pla: 0546: ADC #$03 + ADC #$03 +; vmsrc/apple/a1cmd.pla: 0547: ADC DSTL + ADC DSTL +; vmsrc/apple/a1cmd.pla: 0548: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0549: BCC -- + BCC -- +; vmsrc/apple/a1cmd.pla: 0550: INC DSTH + INC DSTH +; vmsrc/apple/a1cmd.pla: 0551: BNE -- + BNE -- +; vmsrc/apple/a1cmd.pla: 0552: end +; vmsrc/apple/a1cmd.pla: 0553: // def lookupidx(esd, index) +; vmsrc/apple/a1cmd.pla: 0554: // word sym +; vmsrc/apple/a1cmd.pla: 0555: // while ^esd +; vmsrc/apple/a1cmd.pla: 0556: // sym = esd +; vmsrc/apple/a1cmd.pla: 0557: // esd = sym + dcitos(sym, @str) +; vmsrc/apple/a1cmd.pla: 0558: // if esd->0 & $10 and esd->1 == index +; vmsrc/apple/a1cmd.pla: 0559: // return sym +; vmsrc/apple/a1cmd.pla: 0560: // fin +; vmsrc/apple/a1cmd.pla: 0561: // esd = esd + 3 +; vmsrc/apple/a1cmd.pla: 0562: // loop +; vmsrc/apple/a1cmd.pla: 0563: //end +; vmsrc/apple/a1cmd.pla: 0564: asm lookupidx(esd, index)#1 +_A018 ; lookupidx() +; vmsrc/apple/a1cmd.pla: 0565: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0566: STA TMPL + STA TMPL +; vmsrc/apple/a1cmd.pla: 0567: INX + INX +; vmsrc/apple/a1cmd.pla: 0568: --- LDA ESTKH,X +--- LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0569: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0570: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0571: -- STA SRCL +-- STA SRCL +; vmsrc/apple/a1cmd.pla: 0572: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0573: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0574: BPL + + BPL + +; vmsrc/apple/a1cmd.pla: 0575: INY + INY +; vmsrc/apple/a1cmd.pla: 0576: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0577: + BEQ ++ ; END OF ESD ++ BEQ ++ ; END OF ESD +; vmsrc/apple/a1cmd.pla: 0578: INY + INY +; vmsrc/apple/a1cmd.pla: 0579: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0580: INY + INY +; vmsrc/apple/a1cmd.pla: 0581: AND #$10 ; EXTERN FLAG? + AND #$10 ; EXTERN FLAG? +; vmsrc/apple/a1cmd.pla: 0582: BEQ + + BEQ + +; vmsrc/apple/a1cmd.pla: 0583: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0584: CMP TMPL + CMP TMPL +; vmsrc/apple/a1cmd.pla: 0585: BEQ +++ ; MATCH + BEQ +++ ; MATCH +; vmsrc/apple/a1cmd.pla: 0586: + INY ++ INY +; vmsrc/apple/a1cmd.pla: 0587: TYA + TYA +; vmsrc/apple/a1cmd.pla: 0588: SEC + SEC +; vmsrc/apple/a1cmd.pla: 0589: ADC SRCL + ADC SRCL +; vmsrc/apple/a1cmd.pla: 0590: STA ESTKL,X ; SYM PTRL + STA ESTKL,X ; SYM PTRL +; vmsrc/apple/a1cmd.pla: 0591: BCC -- + BCC -- +; vmsrc/apple/a1cmd.pla: 0592: INC ESTKH,X ; SYM PTRH + INC ESTKH,X ; SYM PTRH +; vmsrc/apple/a1cmd.pla: 0593: BNE --- + BNE --- +; vmsrc/apple/a1cmd.pla: 0594: ++ STA ESTKL,X ; END OF ESD +++ STA ESTKL,X ; END OF ESD +; vmsrc/apple/a1cmd.pla: 0595: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0596: +++ RTS ++++ RTS +; vmsrc/apple/a1cmd.pla: 0597: end +; vmsrc/apple/a1cmd.pla: 0598: //def lookupdef(addr, deftbl)#1 +; vmsrc/apple/a1cmd.pla: 0599: // while deftbl->0 == $20 +; vmsrc/apple/a1cmd.pla: 0600: // if deftbl=>3 == addr +; vmsrc/apple/a1cmd.pla: 0601: // return deftbl +; vmsrc/apple/a1cmd.pla: 0602: // fin +; vmsrc/apple/a1cmd.pla: 0603: // deftbl = deftbl + 5 +; vmsrc/apple/a1cmd.pla: 0604: // loop +; vmsrc/apple/a1cmd.pla: 0605: // return 0 +; vmsrc/apple/a1cmd.pla: 0606: //end +; vmsrc/apple/a1cmd.pla: 0607: asm lookupdef(addr, deftbl)#1 +_A019 ; lookupdef() +; vmsrc/apple/a1cmd.pla: 0608: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0609: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0610: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0611: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0612: INX + INX +; vmsrc/apple/a1cmd.pla: 0613: - LDY #$00 +- LDY #$00 +; vmsrc/apple/a1cmd.pla: 0614: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0615: CMP #$20 ; JSR OPCODE? + CMP #$20 ; JSR OPCODE? +; vmsrc/apple/a1cmd.pla: 0616: BNE ++ + BNE ++ +; vmsrc/apple/a1cmd.pla: 0617: LDY #$03 + LDY #$03 +; vmsrc/apple/a1cmd.pla: 0618: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0619: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/a1cmd.pla: 0620: BNE + + BNE + +; vmsrc/apple/a1cmd.pla: 0621: INY + INY +; vmsrc/apple/a1cmd.pla: 0622: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0623: CMP ESTKH,X + CMP ESTKH,X +; vmsrc/apple/a1cmd.pla: 0624: BNE + + BNE + +; vmsrc/apple/a1cmd.pla: 0625: LDA SRCL ; MATCH + LDA SRCL ; MATCH +; vmsrc/apple/a1cmd.pla: 0626: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0627: LDA SRCH + LDA SRCH +; vmsrc/apple/a1cmd.pla: 0628: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0629: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0630: + LDA #$05 ++ LDA #$05 +; vmsrc/apple/a1cmd.pla: 0631: CLC + CLC +; vmsrc/apple/a1cmd.pla: 0632: ADC SRCL + ADC SRCL +; vmsrc/apple/a1cmd.pla: 0633: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0634: BCC - + BCC - +; vmsrc/apple/a1cmd.pla: 0635: INC SRCH + INC SRCH +; vmsrc/apple/a1cmd.pla: 0636: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0637: ++ STY ESTKL,X +++ STY ESTKL,X +; vmsrc/apple/a1cmd.pla: 0638: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/a1cmd.pla: 0639: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0640: end +; vmsrc/apple/a1cmd.pla: 0641: // +; vmsrc/apple/a1cmd.pla: 0642: // Reloc internal data +; vmsrc/apple/a1cmd.pla: 0643: // +; vmsrc/apple/a1cmd.pla: 0644: //def reloc(modfix, modofst, bytecode, rld)#3 +; vmsrc/apple/a1cmd.pla: 0645: // word addr, fixup +; vmsrc/apple/a1cmd.pla: 0646: // while ^rld +; vmsrc/apple/a1cmd.pla: 0647: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/a1cmd.pla: 0648: // return rld, addr, fixup +; vmsrc/apple/a1cmd.pla: 0649: // fin +; vmsrc/apple/a1cmd.pla: 0650: // addr = rld=>1 + modfix +; vmsrc/apple/a1cmd.pla: 0651: // fixup = *addr + modofst +; vmsrc/apple/a1cmd.pla: 0652: // if uword_isge(fixup, bytecode) // Bytecode address. +; vmsrc/apple/a1cmd.pla: 0653: // return rld, addr, fixup +; vmsrc/apple/a1cmd.pla: 0654: // fin +; vmsrc/apple/a1cmd.pla: 0655: // *addr = fixup +; vmsrc/apple/a1cmd.pla: 0656: // rld = rld + 4 +; vmsrc/apple/a1cmd.pla: 0657: // loop +; vmsrc/apple/a1cmd.pla: 0658: // return rld, addr, fixup +; vmsrc/apple/a1cmd.pla: 0659: //end +; vmsrc/apple/a1cmd.pla: 0660: asm reloc(modfix, modofst, bytecode, rld)#3 +_A020 ; reloc() +; vmsrc/apple/a1cmd.pla: 0661: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0662: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0663: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0664: STA SRCH + STA SRCH +; vmsrc/apple/a1cmd.pla: 0665: LDY #$00 + LDY #$00 +; vmsrc/apple/a1cmd.pla: 0666: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0667: BEQ RLDEX ; END OF RLD + BEQ RLDEX ; END OF RLD +; vmsrc/apple/a1cmd.pla: 0668: PHA + PHA +; vmsrc/apple/a1cmd.pla: 0669: INY + INY +; vmsrc/apple/a1cmd.pla: 0670: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0671: INY + INY +; vmsrc/apple/a1cmd.pla: 0672: CLC + CLC +; vmsrc/apple/a1cmd.pla: 0673: ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX +; vmsrc/apple/a1cmd.pla: 0674: STA DSTL + STA DSTL +; vmsrc/apple/a1cmd.pla: 0675: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/a1cmd.pla: 0676: ADC ESTKH+3,X + ADC ESTKH+3,X +; vmsrc/apple/a1cmd.pla: 0677: STA DSTH + STA DSTH +; vmsrc/apple/a1cmd.pla: 0678: PLA + PLA +; vmsrc/apple/a1cmd.pla: 0679: AND #$10 ; EXTERN REF - EXIT + AND #$10 ; EXTERN REF - EXIT +; vmsrc/apple/a1cmd.pla: 0680: BNE RLDEX + BNE RLDEX +; vmsrc/apple/a1cmd.pla: 0681: TAY ; FIXUP=*ADDR+MODOFST + TAY ; FIXUP=*ADDR+MODOFST +; vmsrc/apple/a1cmd.pla: 0682: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/a1cmd.pla: 0683: INY + INY +; vmsrc/apple/a1cmd.pla: 0684: CLC + CLC +; vmsrc/apple/a1cmd.pla: 0685: ADC ESTKL+2,X + ADC ESTKL+2,X +; vmsrc/apple/a1cmd.pla: 0686: STA TMPL + STA TMPL +; vmsrc/apple/a1cmd.pla: 0687: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/a1cmd.pla: 0688: ADC ESTKH+2,X + ADC ESTKH+2,X +; vmsrc/apple/a1cmd.pla: 0689: CMP ESTKH+1,X ; FIXUP >= BYTECODE? + CMP ESTKH+1,X ; FIXUP >= BYTECODE? +; vmsrc/apple/a1cmd.pla: 0690: BCC + + BCC + +; vmsrc/apple/a1cmd.pla: 0691: STA TMPH + STA TMPH +; vmsrc/apple/a1cmd.pla: 0692: BNE RLDEX ; YEP, EXIT + BNE RLDEX ; YEP, EXIT +; vmsrc/apple/a1cmd.pla: 0693: LDA TMPL + LDA TMPL +; vmsrc/apple/a1cmd.pla: 0694: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0695: BCS RLDEX ; YEP, EXIT + BCS RLDEX ; YEP, EXIT +; vmsrc/apple/a1cmd.pla: 0696: LDA TMPH + LDA TMPH +; vmsrc/apple/a1cmd.pla: 0697: + STA (DST),Y ; *ADDR=FIXUP ++ STA (DST),Y ; *ADDR=FIXUP +; vmsrc/apple/a1cmd.pla: 0698: DEY + DEY +; vmsrc/apple/a1cmd.pla: 0699: LDA TMPL + LDA TMPL +; vmsrc/apple/a1cmd.pla: 0700: STA (DST),Y + STA (DST),Y +; vmsrc/apple/a1cmd.pla: 0701: LDA SRCL ; NEXT ENTRY + LDA SRCL ; NEXT ENTRY +; vmsrc/apple/a1cmd.pla: 0702: ; CLC +; CLC +; vmsrc/apple/a1cmd.pla: 0703: ADC #$04 + ADC #$04 +; vmsrc/apple/a1cmd.pla: 0704: STA SRCL + STA SRCL +; vmsrc/apple/a1cmd.pla: 0705: BCC - + BCC - +; vmsrc/apple/a1cmd.pla: 0706: INC SRCH + INC SRCH +; vmsrc/apple/a1cmd.pla: 0707: BNE - + BNE - +; vmsrc/apple/a1cmd.pla: 0708: RLDEX INX +RLDEX INX +; vmsrc/apple/a1cmd.pla: 0709: LDA TMPL + LDA TMPL +; vmsrc/apple/a1cmd.pla: 0710: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0711: LDA TMPH + LDA TMPH +; vmsrc/apple/a1cmd.pla: 0712: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0713: LDA DSTL + LDA DSTL +; vmsrc/apple/a1cmd.pla: 0714: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/a1cmd.pla: 0715: LDA DSTH + LDA DSTH +; vmsrc/apple/a1cmd.pla: 0716: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/a1cmd.pla: 0717: LDA SRCL + LDA SRCL +; vmsrc/apple/a1cmd.pla: 0718: STA ESTKL+2,X + STA ESTKL+2,X +; vmsrc/apple/a1cmd.pla: 0719: LDA SRCH + LDA SRCH +; vmsrc/apple/a1cmd.pla: 0720: STA ESTKH+2,X + STA ESTKH+2,X +; vmsrc/apple/a1cmd.pla: 0721: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0722: end +; vmsrc/apple/a1cmd.pla: 0723: // +; vmsrc/apple/a1cmd.pla: 0724: // CONSOLE I/O +; vmsrc/apple/a1cmd.pla: 0725: // +; vmsrc/apple/a1cmd.pla: 0726: asm cout(c)#0 +_P003 ; cout(c)#0() +_A021 ; cout() +; vmsrc/apple/a1cmd.pla: 0727: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0728: JSR TOUPR + JSR TOUPR +; vmsrc/apple/a1cmd.pla: 0729: ORA #$80 + ORA #$80 +; vmsrc/apple/a1cmd.pla: 0730: JMP $FFEF + JMP $FFEF +; vmsrc/apple/a1cmd.pla: 0731: end +; vmsrc/apple/a1cmd.pla: 0732: asm cin()#1 +_P008 ; cin()#1() +_A022 ; cin() +; vmsrc/apple/a1cmd.pla: 0733: DEX + DEX +; vmsrc/apple/a1cmd.pla: 0734: - LDA $D011 +- LDA $D011 +; vmsrc/apple/a1cmd.pla: 0735: BPL - + BPL - +; vmsrc/apple/a1cmd.pla: 0736: LDA $D010 + LDA $D010 +; vmsrc/apple/a1cmd.pla: 0737: AND #$7F + AND #$7F +; vmsrc/apple/a1cmd.pla: 0738: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/a1cmd.pla: 0739: LDA #$00 + LDA #$00 +; vmsrc/apple/a1cmd.pla: 0740: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/a1cmd.pla: 0741: RTS + RTS +; vmsrc/apple/a1cmd.pla: 0742: end +; vmsrc/apple/a1cmd.pla: 0743: def crout()#0 +_P002 ; crout()#0() +_C000 ; crout() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0744: cout($0D) +; vmsrc/apple/a1cmd.pla: 0745: end + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _A021 +_F059 !WORD _A021 + !BYTE $5C ; RET +; vmsrc/apple/a1cmd.pla: 0746: def prstr(str)#0 + ; str -> [0] +_P004 ; prstr(str)#0() +_C001 ; prstr() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0747: byte i + ; i -> [2] +; vmsrc/apple/a1cmd.pla: 0748: for i = 1 to ^str + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B001 + !WORD _B001-* +_B002 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/a1cmd.pla: 0749: cout(^(str + i)) +; vmsrc/apple/a1cmd.pla: 0750: next + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A021 +_F060 !WORD _A021 +_B003 + !BYTE $A4 ; INCBRLE _B002 + !WORD _B002-* +_B001 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/a1cmd.pla: 0751: end + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/a1cmd.pla: 0752: def print(i)#0 + ; i -> [0] +_P005 ; print(i)#0() +_C002 ; print() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0753: if i < 0; cout('-'); i = -i; fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B004 + !WORD _B004-* + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _A021 +_F061 !WORD _A021 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B004 +_B005 +; vmsrc/apple/a1cmd.pla: 0754: if i >= 10; print(i / 10); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B006 + !WORD _B006-* + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C002 +_F062 !WORD _C002 +_B006 +_B007 +; vmsrc/apple/a1cmd.pla: 0755: cout(i % 10 + '0') +; vmsrc/apple/a1cmd.pla: 0756: end + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $54 ; CALL _A021 +_F063 !WORD _A021 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 0757: def rdstr(prompt)#1 + ; prompt -> [0] +_P009 ; rdstr(prompt)#1() +_C003 ; rdstr() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0758: byte ch, maxlen + ; ch -> [2] + ; maxlen -> [3] +; vmsrc/apple/a1cmd.pla: 0759: maxlen = 0 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/a1cmd.pla: 0760: inbuff.0 = 0 +; vmsrc/apple/a1cmd.pla: 0761: cout(prompt) +; vmsrc/apple/a1cmd.pla: 0762: repeat + !BYTE $00 ; CN 0 + !BYTE $74,$03 ; SLB [3] + !BYTE $00 ; CN 0 + !BYTE $78,$00,$02 ; SAB 512 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A021 +_F064 !WORD _A021 +_B009 +; vmsrc/apple/a1cmd.pla: 0763: ch = cin +; vmsrc/apple/a1cmd.pla: 0764: when ch + !BYTE $54 ; CALL _A022 +_F065 !WORD _A022 + !BYTE $6C,$02 ; DLB [2] + !BYTE $52 ; SEL + !WORD _B012-* +; vmsrc/apple/a1cmd.pla: 0765: is $15 // right arrow +_B013 +; vmsrc/apple/a1cmd.pla: 0766: if ^inbuff < maxlen //inbuff.0 < maxlen +; vmsrc/apple/a1cmd.pla: 0767: inbuff.0++ + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $64,$03 ; LLB [3] + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B014 + !WORD _B014-* + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $8C ; INCR +; vmsrc/apple/a1cmd.pla: 0768: ch = inbuff[inbuff.0] +; vmsrc/apple/a1cmd.pla: 0769: cout(ch) +; vmsrc/apple/a1cmd.pla: 0770: fin + !BYTE $78,$00,$02 ; SAB 512 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $60 ; LB + !BYTE $6C,$02 ; DLB [2] + !BYTE $54 ; CALL _A021 +_F066 !WORD _A021 +_B014 +_B015 +; vmsrc/apple/a1cmd.pla: 0771: break + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0772: is $08 // left arrow +_B016 +; vmsrc/apple/a1cmd.pla: 0773: if inbuff.0 +; vmsrc/apple/a1cmd.pla: 0774: cout('\\') +; vmsrc/apple/a1cmd.pla: 0775: cout(inbuff[inbuff.0]) +; vmsrc/apple/a1cmd.pla: 0776: inbuff.0-- + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $2A,$5C ; CB 92 + !BYTE $54 ; CALL _A021 +_F067 !WORD _A021 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $60 ; LB + !BYTE $54 ; CALL _A021 +_F068 !WORD _A021 + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 0777: fin + !BYTE $78,$00,$02 ; SAB 512 +_B017 +_B018 +; vmsrc/apple/a1cmd.pla: 0778: break + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0779: is $04 // ctrl-d +_B019 +; vmsrc/apple/a1cmd.pla: 0780: if inbuff.0 +; vmsrc/apple/a1cmd.pla: 0781: cout('#') +; vmsrc/apple/a1cmd.pla: 0782: cout(inbuff[inbuff.0]) +; vmsrc/apple/a1cmd.pla: 0783: memcpy(inbuff + inbuff.0, inbuff + inbuff.0 + 1, maxlen - inbuff.0) +; vmsrc/apple/a1cmd.pla: 0784: maxlen-- + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $2A,$23 ; CB 35 + !BYTE $54 ; CALL _A021 +_F069 !WORD _A021 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $60 ; LB + !BYTE $54 ; CALL _A021 +_F070 !WORD _A021 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $8C ; INCR + !BYTE $64,$03 ; LLB [3] + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $84 ; SUB + !BYTE $54 ; CALL _A006 +_F071 !WORD _A006 + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 0785: inbuff.0-- + !BYTE $74,$03 ; SLB [3] + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 0786: fin + !BYTE $78,$00,$02 ; SAB 512 +_B020 +_B021 +; vmsrc/apple/a1cmd.pla: 0787: break + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0788: is $0C // ctrl-l +_B022 +; vmsrc/apple/a1cmd.pla: 0789: crout +; vmsrc/apple/a1cmd.pla: 0790: prstr(inbuff) +; vmsrc/apple/a1cmd.pla: 0791: break + !BYTE $54 ; CALL _C000 +_F072 !WORD _C000 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _C001 +_F073 !WORD _C001 + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0792: is $0D // return +_B023 +; vmsrc/apple/a1cmd.pla: 0793: is $18 // ctrl-x +_B024 +; vmsrc/apple/a1cmd.pla: 0794: crout +; vmsrc/apple/a1cmd.pla: 0795: inbuff.0 = 0 +; vmsrc/apple/a1cmd.pla: 0796: break + !BYTE $54 ; CALL _C000 +_F074 !WORD _C000 + !BYTE $00 ; CN 0 + !BYTE $78,$00,$02 ; SAB 512 + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0797: is $9B // escape +_B025 +; vmsrc/apple/a1cmd.pla: 0798: inbuff.0 = 0 +; vmsrc/apple/a1cmd.pla: 0799: ch = $0D +; vmsrc/apple/a1cmd.pla: 0800: break + !BYTE $00 ; CN 0 + !BYTE $78,$00,$02 ; SAB 512 + !BYTE $1A ; CN 13 + !BYTE $74,$02 ; SLB [2] + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +; vmsrc/apple/a1cmd.pla: 0801: otherwise +_B012 + !BYTE $07 ; CASEBLOCK + !WORD $0004 + !WORD _B019-* + !WORD $0008 + !WORD _B016-* + !WORD $000C + !WORD _B022-* + !WORD $000D + !WORD _B023-* + !WORD $0015 + !WORD _B013-* + !WORD $0018 + !WORD _B024-* + !WORD $009B + !WORD _B025-* +; vmsrc/apple/a1cmd.pla: 0802: if ch >= ' ' +; vmsrc/apple/a1cmd.pla: 0803: cout(ch) +; vmsrc/apple/a1cmd.pla: 0804: inbuff.0++ + !BYTE $64,$02 ; LLB [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _A021 +_F075 !WORD _A021 + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $8C ; INCR +; vmsrc/apple/a1cmd.pla: 0805: inbuff[inbuff.0] = ch +; vmsrc/apple/a1cmd.pla: 0806: if inbuff.0 > maxlen +; vmsrc/apple/a1cmd.pla: 0807: maxlen = inbuff.0 +; vmsrc/apple/a1cmd.pla: 0808: fin + !BYTE $78,$00,$02 ; SAB 512 + !BYTE $64,$02 ; LLB [2] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $B4,$00,$02 ; ADDAB 512 + !BYTE $70 ; SB + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $64,$03 ; LLB [3] + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B028 + !WORD _B028-* + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $74,$03 ; SLB [3] +_B028 +_B029 +; vmsrc/apple/a1cmd.pla: 0809: fin +_B026 +_B027 +; vmsrc/apple/a1cmd.pla: 0810: wend +_B011 +; vmsrc/apple/a1cmd.pla: 0811: until ch == $0D or inbuff.0 == $7F +_B010 + !BYTE $64,$02 ; LLB [2] + !BYTE $1A ; CN 13 + !BYTE $40 ; ISEQ + !BYTE $AE ; BROR _B030 + !WORD _B030-* + !BYTE $68,$00,$02 ; LAB 512 + !BYTE $2A,$7F ; CB 127 + !BYTE $40 ; ISEQ +_B030 + !BYTE $4C ; BRFLS _B009 + !WORD _B009-* +_B008 +; vmsrc/apple/a1cmd.pla: 0812: cout($0D) +; vmsrc/apple/a1cmd.pla: 0813: return inbuff + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _A021 +_F076 !WORD _A021 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0814: end +; vmsrc/apple/a1cmd.pla: 0815: def prbyte(v)#0 + ; v -> [0] +_P006 ; prbyte(v)#0() +_C004 ; prbyte() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0816: cout(hexchar[(v >> 4) & $0F]) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/a1cmd.pla: 0817: cout(hexchar[v & $0F]) +; vmsrc/apple/a1cmd.pla: 0818: end + !BYTE $26 ; LA _D043+0 +_F077 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _A021 +_F078 !WORD _A021 + !BYTE $26 ; LA _D043+0 +_F079 !WORD _D043+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _A021 +_F080 !WORD _A021 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 0819: def prword(v)#0 + ; v -> [0] +_P007 ; prword(v)#0() +_C005 ; prword() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0820: prbyte(v >> 8) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/a1cmd.pla: 0821: prbyte(v) +; vmsrc/apple/a1cmd.pla: 0822: end + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C004 +_F081 !WORD _C004 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C004 +_F082 !WORD _C004 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 0823: // +; vmsrc/apple/a1cmd.pla: 0824: // String routines. +; vmsrc/apple/a1cmd.pla: 0825: // +; vmsrc/apple/a1cmd.pla: 0826: def strcpy(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P011 ; strcpy(dst, src)#1() +_C006 ; strcpy() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0827: memcpy(dst+1, src+1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/a1cmd.pla: 0828: ^dst = ^src +; vmsrc/apple/a1cmd.pla: 0829: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A006 +_F083 !WORD _A006 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0830: end +; vmsrc/apple/a1cmd.pla: 0831: def strcat(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P012 ; strcat(dst, src)#1() +_C007 ; strcat() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0832: memcpy(dst + ^dst + 1, src + 1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/a1cmd.pla: 0833: ^dst = ^dst + ^src +; vmsrc/apple/a1cmd.pla: 0834: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A006 +_F084 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0835: end +; vmsrc/apple/a1cmd.pla: 0836: // +; vmsrc/apple/a1cmd.pla: 0837: // CFFA1 routines +; vmsrc/apple/a1cmd.pla: 0838: // FILE I/O +; vmsrc/apple/a1cmd.pla: 0839: // +; vmsrc/apple/a1cmd.pla: 0840: //def opendir +; vmsrc/apple/a1cmd.pla: 0841: // perr = syscall($10, 0) +; vmsrc/apple/a1cmd.pla: 0842: // return perr +; vmsrc/apple/a1cmd.pla: 0843: //end +; vmsrc/apple/a1cmd.pla: 0844: //def readdir +; vmsrc/apple/a1cmd.pla: 0845: // perr = syscall($12, 0) +; vmsrc/apple/a1cmd.pla: 0846: // return *CFFAEntryPtr +; vmsrc/apple/a1cmd.pla: 0847: //end +; vmsrc/apple/a1cmd.pla: 0848: def finddirentry(filename)#1 + ; filename -> [0] +_C008 ; finddirentry() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0849: *CFFAFileName = filename + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/a1cmd.pla: 0850: perr = syscall($14, 0) +; vmsrc/apple/a1cmd.pla: 0851: return *CFFAEntryPtr + !BYTE $66,$00 ; LLW [0] + !BYTE $7A,$02,$00 ; SAW 2 + !BYTE $2A,$14 ; CB 20 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A002 +_F085 !WORD _A002 + !BYTE $78 ; SAB _D034+0 +_F086 !WORD _D034+0 + !BYTE $6A,$0B,$00 ; LAW 11 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 0852: end +; vmsrc/apple/a1cmd.pla: 0853: def readfile(filename, buffer)#1 + ; filename -> [0] + ; buffer -> [2] +_C009 ; readfile() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0854: *CFFADest = buffer + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/a1cmd.pla: 0855: *CFFAFileName = filename +; vmsrc/apple/a1cmd.pla: 0856: perr = syscall($22, 0) +; vmsrc/apple/a1cmd.pla: 0857: return perr + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$00,$00 ; SAW 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $7A,$02,$00 ; SAW 2 + !BYTE $2A,$22 ; CB 34 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A002 +_F087 !WORD _A002 + !BYTE $7C ; DAB _D034+0 +_F088 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0858: end +; vmsrc/apple/a1cmd.pla: 0859: // +; vmsrc/apple/a1cmd.pla: 0860: // Heap routines. +; vmsrc/apple/a1cmd.pla: 0861: // +; vmsrc/apple/a1cmd.pla: 0862: def availheap()#1 +_P017 ; availheap()#1() +_C010 ; availheap() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0863: byte fp + ; fp -> [0] +; vmsrc/apple/a1cmd.pla: 0864: return @fp - heap + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D031+0 +_F089 !WORD _D031+0 + !BYTE $84 ; SUB + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/a1cmd.pla: 0865: end +; vmsrc/apple/a1cmd.pla: 0866: def allocheap(size)#1 + ; size -> [0] +_P014 ; allocheap(size)#1() +_C011 ; allocheap() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0867: word addr + ; addr -> [2] +; vmsrc/apple/a1cmd.pla: 0868: addr = heap + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/a1cmd.pla: 0869: heap = heap + size +; vmsrc/apple/a1cmd.pla: 0870: if uword_isge(heap, @addr) +; vmsrc/apple/a1cmd.pla: 0871: return 0 + !BYTE $6A ; LAW _D031+0 +_F090 !WORD _D031+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D031+0 +_F091 !WORD _D031+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D031+0 +_F092 !WORD _D031+0 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A007 +_F093 !WORD _A007 + !BYTE $4C ; BRFLS _B031 + !WORD _B031-* + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0872: fin +_B031 +_B032 +; vmsrc/apple/a1cmd.pla: 0873: return addr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0874: end +; vmsrc/apple/a1cmd.pla: 0875: def allocalignheap(size, pow2, freeaddr)#1 + ; size -> [0] + ; pow2 -> [2] + ; freeaddr -> [4] +_P015 ; allocalignheap(size, pow2, freeaddr)#1() +_C012 ; allocalignheap() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0876: word align, addr + ; align -> [6] + ; addr -> [8] +; vmsrc/apple/a1cmd.pla: 0877: if freeaddr + !BYTE $58,$0A,$03 ; ENTER 10,3 +; vmsrc/apple/a1cmd.pla: 0878: *freeaddr = heap +; vmsrc/apple/a1cmd.pla: 0879: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $6A ; LAW _D031+0 +_F094 !WORD _D031+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B033 +_B034 +; vmsrc/apple/a1cmd.pla: 0880: align = (1 << pow2) - 1 +; vmsrc/apple/a1cmd.pla: 0881: addr = (heap | align) + 1 +; vmsrc/apple/a1cmd.pla: 0882: heap = addr + size +; vmsrc/apple/a1cmd.pla: 0883: if uword_isge(heap, @addr) +; vmsrc/apple/a1cmd.pla: 0884: return 0 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $9A ; SHL + !BYTE $8E ; DECR + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D031+0 +_F095 !WORD _D031+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $96 ; OR + !BYTE $8C ; INCR + !BYTE $6E,$08 ; DLW [8] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D031+0 +_F096 !WORD _D031+0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A007 +_F097 !WORD _A007 + !BYTE $4C ; BRFLS _B035 + !WORD _B035-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/a1cmd.pla: 0885: fin +_B035 +_B036 +; vmsrc/apple/a1cmd.pla: 0886: return addr + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/a1cmd.pla: 0887: end +; vmsrc/apple/a1cmd.pla: 0888: def markheap()#1 +_P013 ; markheap()#1() +_C013 ; markheap() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0889: return heap + !BYTE $6A ; LAW _D031+0 +_F098 !WORD _D031+0 + !BYTE $5C ; RET +; vmsrc/apple/a1cmd.pla: 0890: end +; vmsrc/apple/a1cmd.pla: 0891: def releaseheap(newheap)#1 + ; newheap -> [0] +_P016 ; releaseheap(newheap)#1() +_C014 ; releaseheap() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0892: heap = newheap + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/a1cmd.pla: 0893: return @newheap - heap + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D031+0 +_F099 !WORD _D031+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D031+0 +_F100 !WORD _D031+0 + !BYTE $84 ; SUB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 0894: end +; vmsrc/apple/a1cmd.pla: 0895: // +; vmsrc/apple/a1cmd.pla: 0896: // Symbol table routines. +; vmsrc/apple/a1cmd.pla: 0897: // +; vmsrc/apple/a1cmd.pla: 0898: def addsym(sym, addr)#0 + ; sym -> [0] + ; addr -> [2] +_C015 ; addsym() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0899: while ^sym & $80 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B039 + !WORD _B039-* +_B037 +; vmsrc/apple/a1cmd.pla: 0900: ^lastsym = ^sym +; vmsrc/apple/a1cmd.pla: 0901: lastsym = lastsym + 1 +; vmsrc/apple/a1cmd.pla: 0902: sym = sym + 1 +; vmsrc/apple/a1cmd.pla: 0903: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D033+0 +_F101 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D033+0 +_F102 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D033+0 +_F103 !WORD _D033+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] +_B039 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B037 + !WORD _B037-* +_B038 +; vmsrc/apple/a1cmd.pla: 0904: lastsym->0 = ^sym +; vmsrc/apple/a1cmd.pla: 0905: lastsym=>1 = addr +; vmsrc/apple/a1cmd.pla: 0906: lastsym = lastsym + 3 +; vmsrc/apple/a1cmd.pla: 0907: ^lastsym = 0 +; vmsrc/apple/a1cmd.pla: 0908: end + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D033+0 +_F104 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D033+0 +_F105 !WORD _D033+0 + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $6A ; LAW _D033+0 +_F106 !WORD _D033+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D033+0 +_F107 !WORD _D033+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D033+0 +_F108 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/a1cmd.pla: 0909: // +; vmsrc/apple/a1cmd.pla: 0910: // Module routines. +; vmsrc/apple/a1cmd.pla: 0911: // +; vmsrc/apple/a1cmd.pla: 0912: def lookupextern(esd, index)#1 + ; esd -> [0] + ; index -> [2] +_C016 ; lookupextern() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0913: word sym, addr + ; sym -> [4] + ; addr -> [6] +; vmsrc/apple/a1cmd.pla: 0914: byte str[33] + ; str -> [8] +; vmsrc/apple/a1cmd.pla: 0915: while ^esd + !BYTE $58,$29,$02 ; ENTER 41,2 + !BYTE $50 ; BRNCH _B042 + !WORD _B042-* +_B040 +; vmsrc/apple/a1cmd.pla: 0916: sym = esd +; vmsrc/apple/a1cmd.pla: 0917: esd = sym + dcitos(sym, @str) +; vmsrc/apple/a1cmd.pla: 0918: if esd->0 & $10 and esd->1 == index +; vmsrc/apple/a1cmd.pla: 0919: addr = lookuptbl(sym, symtbl) +; vmsrc/apple/a1cmd.pla: 0920: if !addr +; vmsrc/apple/a1cmd.pla: 0921: perr = $81 +; vmsrc/apple/a1cmd.pla: 0922: cout('?') +; vmsrc/apple/a1cmd.pla: 0923: prstr(@str) +; vmsrc/apple/a1cmd.pla: 0924: crout +; vmsrc/apple/a1cmd.pla: 0925: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $6E,$04 ; DLW [4] + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A014 +_F109 !WORD _A014 + !BYTE $82 ; ADD + !BYTE $6E,$00 ; DLW [0] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $AC ; BRAND _B043 + !WORD _B043-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $40 ; ISEQ +_B043 + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D032+0 +_F110 !WORD _D032+0 + !BYTE $54 ; CALL _A017 +_F111 !WORD _A017 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B046 + !WORD _B046-* + !BYTE $2A,$81 ; CB 129 + !BYTE $78 ; SAB _D034+0 +_F112 !WORD _D034+0 + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A021 +_F113 !WORD _A021 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _C001 +_F114 !WORD _C001 + !BYTE $54 ; CALL _C000 +_F115 !WORD _C000 +_B046 +_B047 +; vmsrc/apple/a1cmd.pla: 0926: return addr + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/a1cmd.pla: 0927: fin +_B044 +_B045 +; vmsrc/apple/a1cmd.pla: 0928: esd = esd + 3 +; vmsrc/apple/a1cmd.pla: 0929: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$00 ; SLW [0] +_B042 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B040 + !WORD _B040-* +_B041 +; vmsrc/apple/a1cmd.pla: 0930: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/a1cmd.pla: 0931: end +; vmsrc/apple/a1cmd.pla: 0932: def adddef(addr, deflast)#1 + ; addr -> [0] + ; deflast -> [2] +_C017 ; adddef() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0933: word defentry + ; defentry -> [4] +; vmsrc/apple/a1cmd.pla: 0934: defentry = *deflast + !BYTE $58,$06,$02 ; ENTER 6,2 +; vmsrc/apple/a1cmd.pla: 0935: *deflast = defentry + 5 +; vmsrc/apple/a1cmd.pla: 0936: defentry->0 = $20 +; vmsrc/apple/a1cmd.pla: 0937: defentry=>1 = interp +; vmsrc/apple/a1cmd.pla: 0938: defentry=>3 = addr +; vmsrc/apple/a1cmd.pla: 0939: defentry->5 = 0 // null out next entry +; vmsrc/apple/a1cmd.pla: 0940: return defentry + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $6E,$04 ; DLW [4] + !BYTE $38,$05 ; ADDI 5 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $54 ; CALL _A013 +_F116 !WORD _A013 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/a1cmd.pla: 0941: end +; vmsrc/apple/a1cmd.pla: 0942: def loadmod(mod)#1 + ; mod -> [0] +_C018 ; loadmod() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 0943: word rdlen, modsize, bytecode, defofst, defcnt, init, fixup + ; rdlen -> [2] + ; modsize -> [4] + ; bytecode -> [6] + ; defofst -> [8] + ; defcnt -> [10] + ; init -> [12] + ; fixup -> [14] +; vmsrc/apple/a1cmd.pla: 0944: word addr, modaddr, modfix, modofst, modend + ; addr -> [16] + ; modaddr -> [18] + ; modfix -> [20] + ; modofst -> [22] + ; modend -> [24] +; vmsrc/apple/a1cmd.pla: 0945: word deftbl, deflast + ; deftbl -> [26] + ; deflast -> [28] +; vmsrc/apple/a1cmd.pla: 0946: word moddep, rld, esd, sym + ; moddep -> [30] + ; rld -> [32] + ; esd -> [34] + ; sym -> [36] +; vmsrc/apple/a1cmd.pla: 0947: byte type, str[17], filename[17] + ; type -> [38] + ; str -> [39] + ; filename -> [56] +; vmsrc/apple/a1cmd.pla: 0948: byte header[128] + ; header -> [73] +; vmsrc/apple/a1cmd.pla: 0949: // +; vmsrc/apple/a1cmd.pla: 0950: // Read the RELocatable module header (first 128 bytes) +; vmsrc/apple/a1cmd.pla: 0951: // +; vmsrc/apple/a1cmd.pla: 0952: dcitos(mod, @filename) + !BYTE $58,$C9,$01 ; ENTER 201,1 +; vmsrc/apple/a1cmd.pla: 0953: rdlen = finddirentry(@filename)=>$15 +; vmsrc/apple/a1cmd.pla: 0954: if perr +; vmsrc/apple/a1cmd.pla: 0955: return -perr + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$38 ; LLA [56] + !BYTE $54 ; CALL _A014 +_F117 !WORD _A014 + !BYTE $30 ; DROP + !BYTE $28,$38 ; LLA [56] + !BYTE $54 ; CALL _C008 +_F118 !WORD _C008 + !BYTE $38,$15 ; ADDI 21 + !BYTE $62 ; LW + !BYTE $76,$02 ; SLW [2] + !BYTE $68 ; LAB _D034+0 +_F119 !WORD _D034+0 + !BYTE $4C ; BRFLS _B048 + !WORD _B048-* + !BYTE $68 ; LAB _D034+0 +_F120 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$C9 ; LEAVE 201 +; vmsrc/apple/a1cmd.pla: 0956: fin +_B048 +_B049 +; vmsrc/apple/a1cmd.pla: 0957: if rdlen > 0 +; vmsrc/apple/a1cmd.pla: 0958: readfile(@filename, heap) +; vmsrc/apple/a1cmd.pla: 0959: memcpy(@header, heap, 128) +; vmsrc/apple/a1cmd.pla: 0960: modsize = header:0 +; vmsrc/apple/a1cmd.pla: 0961: moddep = @header.1 +; vmsrc/apple/a1cmd.pla: 0962: defofst = modsize + RELADDR +; vmsrc/apple/a1cmd.pla: 0963: init = 0 +; vmsrc/apple/a1cmd.pla: 0964: if rdlen > 4 and heap=>2 == $6502 // magic number +; vmsrc/apple/a1cmd.pla: 0965: // +; vmsrc/apple/a1cmd.pla: 0966: // This is an EXTended RELocatable (data+bytecode) module. +; vmsrc/apple/a1cmd.pla: 0967: // +; vmsrc/apple/a1cmd.pla: 0968: defofst = header:6 +; vmsrc/apple/a1cmd.pla: 0969: defcnt = header:8 +; vmsrc/apple/a1cmd.pla: 0970: init = header:10 +; vmsrc/apple/a1cmd.pla: 0971: moddep = @header.12 +; vmsrc/apple/a1cmd.pla: 0972: // +; vmsrc/apple/a1cmd.pla: 0973: // Load module dependencies. +; vmsrc/apple/a1cmd.pla: 0974: // +; vmsrc/apple/a1cmd.pla: 0975: while ^moddep + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B050 + !WORD _B050-* + !BYTE $28,$38 ; LLA [56] + !BYTE $6A ; LAW _D031+0 +_F121 !WORD _D031+0 + !BYTE $54 ; CALL _C009 +_F122 !WORD _C009 + !BYTE $30 ; DROP + !BYTE $28,$49 ; LLA [73] + !BYTE $6A ; LAW _D031+0 +_F123 !WORD _D031+0 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _A006 +_F124 !WORD _A006 + !BYTE $66,$49 ; LLW [73] + !BYTE $76,$04 ; SLW [4] + !BYTE $28,$4A ; LLA [74] + !BYTE $76,$1E ; SLW [30] + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B052 + !WORD _B052-* + !BYTE $6A ; LAW _D031+0 +_F125 !WORD _D031+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $40 ; ISEQ +_B052 + !BYTE $4C ; BRFLS _B053 + !WORD _B053-* + !BYTE $66,$4F ; LLW [79] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$51 ; LLW [81] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$53 ; LLW [83] + !BYTE $76,$0C ; SLW [12] + !BYTE $28,$55 ; LLA [85] + !BYTE $76,$1E ; SLW [30] + !BYTE $50 ; BRNCH _B057 + !WORD _B057-* +_B055 +; vmsrc/apple/a1cmd.pla: 0976: if !lookuptbl(moddep, symtbl) +; vmsrc/apple/a1cmd.pla: 0977: if loadmod(moddep) < 0 +; vmsrc/apple/a1cmd.pla: 0978: return -perr + !BYTE $66,$1E ; LLW [30] + !BYTE $6A ; LAW _D032+0 +_F126 !WORD _D032+0 + !BYTE $54 ; CALL _A017 +_F127 !WORD _A017 + !BYTE $4E ; BRTRU _B058 + !WORD _B058-* + !BYTE $66,$1E ; LLW [30] + !BYTE $54 ; CALL _C018 +_F128 !WORD _C018 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $68 ; LAB _D034+0 +_F129 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$C9 ; LEAVE 201 +; vmsrc/apple/a1cmd.pla: 0979: fin +_B060 +_B061 +; vmsrc/apple/a1cmd.pla: 0980: fin +_B058 +_B059 +; vmsrc/apple/a1cmd.pla: 0981: moddep = moddep + dcitos(moddep, @str) +; vmsrc/apple/a1cmd.pla: 0982: loop + !BYTE $66,$1E ; LLW [30] + !BYTE $34 ; DUP + !BYTE $28,$27 ; LLA [39] + !BYTE $54 ; CALL _A014 +_F130 !WORD _A014 + !BYTE $82 ; ADD + !BYTE $76,$1E ; SLW [30] +_B057 + !BYTE $66,$1E ; LLW [30] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B055 + !WORD _B055-* +_B056 +; vmsrc/apple/a1cmd.pla: 0983: // +; vmsrc/apple/a1cmd.pla: 0984: // Init def table. +; vmsrc/apple/a1cmd.pla: 0985: // +; vmsrc/apple/a1cmd.pla: 0986: deftbl = allocheap(defcnt * 5 + 1) +; vmsrc/apple/a1cmd.pla: 0987: deflast = deftbl +; vmsrc/apple/a1cmd.pla: 0988: ^deflast = 0 +; vmsrc/apple/a1cmd.pla: 0989: // +; vmsrc/apple/a1cmd.pla: 0990: // Re-read file +; vmsrc/apple/a1cmd.pla: 0991: // +; vmsrc/apple/a1cmd.pla: 0992: readfile(@filename, heap) +; vmsrc/apple/a1cmd.pla: 0993: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $0A ; CN 5 + !BYTE $86 ; MUL + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C011 +_F131 !WORD _C011 + !BYTE $6E,$1A ; DLW [26] + !BYTE $76,$1C ; SLW [28] + !BYTE $00 ; CN 0 + !BYTE $66,$1C ; LLW [28] + !BYTE $70 ; SB + !BYTE $28,$38 ; LLA [56] + !BYTE $6A ; LAW _D031+0 +_F132 !WORD _D031+0 + !BYTE $54 ; CALL _C009 +_F133 !WORD _C009 + !BYTE $30 ; DROP +_B053 +_B054 +; vmsrc/apple/a1cmd.pla: 0994: // +; vmsrc/apple/a1cmd.pla: 0995: // Alloc heap space for relocated module (data + bytecode). +; vmsrc/apple/a1cmd.pla: 0996: // +; vmsrc/apple/a1cmd.pla: 0997: moddep = moddep + 1 - @header + heap +; vmsrc/apple/a1cmd.pla: 0998: modfix = moddep - (heap + 2) // Adjust to skip header +; vmsrc/apple/a1cmd.pla: 0999: modsize = modsize - modfix +; vmsrc/apple/a1cmd.pla: 1000: rdlen = rdlen - modfix - 2 +; vmsrc/apple/a1cmd.pla: 1001: modaddr = allocheap(modsize) +; vmsrc/apple/a1cmd.pla: 1002: memcpy(modaddr, moddep, rdlen) +; vmsrc/apple/a1cmd.pla: 1003: // +; vmsrc/apple/a1cmd.pla: 1004: // Add module to symbol table. +; vmsrc/apple/a1cmd.pla: 1005: // +; vmsrc/apple/a1cmd.pla: 1006: addsym(mod, modaddr) +; vmsrc/apple/a1cmd.pla: 1007: // +; vmsrc/apple/a1cmd.pla: 1008: // Apply all fixups and symbol import/export. +; vmsrc/apple/a1cmd.pla: 1009: // +; vmsrc/apple/a1cmd.pla: 1010: modfix = modaddr - modfix +; vmsrc/apple/a1cmd.pla: 1011: modofst = modfix - RELADDR +; vmsrc/apple/a1cmd.pla: 1012: modend = modaddr + modsize +; vmsrc/apple/a1cmd.pla: 1013: bytecode = defofst + modofst +; vmsrc/apple/a1cmd.pla: 1014: defofst = bytecode - defofst +; vmsrc/apple/a1cmd.pla: 1015: rld = modend // Re-Locatable Directory +; vmsrc/apple/a1cmd.pla: 1016: esd = rld // Extern+Entry Symbol Directory +; vmsrc/apple/a1cmd.pla: 1017: while ^esd // Scan to end of ESD + !BYTE $66,$1E ; LLW [30] + !BYTE $8C ; INCR + !BYTE $28,$49 ; LLA [73] + !BYTE $84 ; SUB + !BYTE $B6 ; ADDAW _D031+0 +_F134 !WORD _D031+0 + !BYTE $6E,$1E ; DLW [30] + !BYTE $6A ; LAW _D031+0 +_F135 !WORD _D031+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $84 ; SUB + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$14 ; LLW [20] + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$14 ; LLW [20] + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C011 +_F136 !WORD _C011 + !BYTE $6E,$12 ; DLW [18] + !BYTE $66,$1E ; LLW [30] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A006 +_F137 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C015 +_F138 !WORD _C015 + !BYTE $66,$12 ; LLW [18] + !BYTE $66,$14 ; LLW [20] + !BYTE $84 ; SUB + !BYTE $6E,$14 ; DLW [20] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$12 ; LLW [18] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $6E,$06 ; DLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$18 ; LLW [24] + !BYTE $6E,$20 ; DLW [32] + !BYTE $76,$22 ; SLW [34] + !BYTE $50 ; BRNCH _B064 + !WORD _B064-* +_B062 +; vmsrc/apple/a1cmd.pla: 1018: esd = esd + 4 +; vmsrc/apple/a1cmd.pla: 1019: loop + !BYTE $66,$22 ; LLW [34] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$22 ; SLW [34] +_B064 + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B062 + !WORD _B062-* +_B063 +; vmsrc/apple/a1cmd.pla: 1020: esd = esd + 1 +; vmsrc/apple/a1cmd.pla: 1021: // +; vmsrc/apple/a1cmd.pla: 1022: // Run through the DeFinition Dictionary. +; vmsrc/apple/a1cmd.pla: 1023: // +; vmsrc/apple/a1cmd.pla: 1024: while ^rld == $02 + !BYTE $66,$22 ; LLW [34] + !BYTE $8C ; INCR + !BYTE $76,$22 ; SLW [34] + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B065 +; vmsrc/apple/a1cmd.pla: 1025: // +; vmsrc/apple/a1cmd.pla: 1026: // This is a bytcode def entry - add it to the def directory. +; vmsrc/apple/a1cmd.pla: 1027: // +; vmsrc/apple/a1cmd.pla: 1028: adddef(rld=>1 + defofst, @deflast) +; vmsrc/apple/a1cmd.pla: 1029: rld = rld + 4 +; vmsrc/apple/a1cmd.pla: 1030: loop + !BYTE $66,$20 ; LLW [32] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _C017 +_F139 !WORD _C017 + !BYTE $30 ; DROP + !BYTE $66,$20 ; LLW [32] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$20 ; SLW [32] +_B067 + !BYTE $66,$20 ; LLW [32] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B065 + !WORD _B065-* +_B066 +; vmsrc/apple/a1cmd.pla: 1031: // +; vmsrc/apple/a1cmd.pla: 1032: // Run through the Re-Location Dictionary. +; vmsrc/apple/a1cmd.pla: 1033: // +; vmsrc/apple/a1cmd.pla: 1034: while ^rld + !BYTE $50 ; BRNCH _B070 + !WORD _B070-* +_B068 +; vmsrc/apple/a1cmd.pla: 1035: rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) +; vmsrc/apple/a1cmd.pla: 1036: if ^rld +; vmsrc/apple/a1cmd.pla: 1037: *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + defofst, deftbl) +; vmsrc/apple/a1cmd.pla: 1038: rld = rld + 4 +; vmsrc/apple/a1cmd.pla: 1039: fin + !BYTE $66,$14 ; LLW [20] + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _A020 +_F140 !WORD _A020 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$10 ; SLW [16] + !BYTE $6E,$20 ; DLW [32] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $66,$20 ; LLW [32] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$10 ; LLW [16] + !BYTE $62 ; LW + !BYTE $66,$22 ; LLW [34] + !BYTE $66,$20 ; LLW [32] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C016 +_F141 !WORD _C016 + !BYTE $82 ; ADD + !BYTE $50 ; BRNCH _B074 + !WORD _B074-* +_B073 + !BYTE $66,$0E ; LLW [14] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _A019 +_F142 !WORD _A019 +_B074 + !BYTE $66,$10 ; LLW [16] + !BYTE $72 ; SW + !BYTE $66,$20 ; LLW [32] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$20 ; SLW [32] +_B071 +_B072 +; vmsrc/apple/a1cmd.pla: 1040: //addr = rld=>1 + modfix +; vmsrc/apple/a1cmd.pla: 1041: //if uword_isge(addr, modaddr) // Skip fixups to header +; vmsrc/apple/a1cmd.pla: 1042: // if type & $80 // WORD sized fixup. +; vmsrc/apple/a1cmd.pla: 1043: // fixup = *addr +; vmsrc/apple/a1cmd.pla: 1044: // else // BYTE sized fixup. +; vmsrc/apple/a1cmd.pla: 1045: // fixup = ^addr +; vmsrc/apple/a1cmd.pla: 1046: // fin +; vmsrc/apple/a1cmd.pla: 1047: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/a1cmd.pla: 1048: // fixup = fixup + lookupextern(esd, rld->3) +; vmsrc/apple/a1cmd.pla: 1049: // else // INTERN fixup. +; vmsrc/apple/a1cmd.pla: 1050: // fixup = fixup + modofst +; vmsrc/apple/a1cmd.pla: 1051: // if uword_isge(fixup, bytecode) +; vmsrc/apple/a1cmd.pla: 1052: // // +; vmsrc/apple/a1cmd.pla: 1053: // // Bytecode address - replace with call def directory. +; vmsrc/apple/a1cmd.pla: 1054: // // +; vmsrc/apple/a1cmd.pla: 1055: // fixup = lookupdef(fixup + defofst, deftbl) +; vmsrc/apple/a1cmd.pla: 1056: // fin +; vmsrc/apple/a1cmd.pla: 1057: // fin +; vmsrc/apple/a1cmd.pla: 1058: // if type & $80 // WORD sized fixup. +; vmsrc/apple/a1cmd.pla: 1059: // *addr = fixup +; vmsrc/apple/a1cmd.pla: 1060: // else // BYTE sized fixup. +; vmsrc/apple/a1cmd.pla: 1061: // ^addr = fixup +; vmsrc/apple/a1cmd.pla: 1062: // fin +; vmsrc/apple/a1cmd.pla: 1063: //fin +; vmsrc/apple/a1cmd.pla: 1064: //rld = rld + 4 +; vmsrc/apple/a1cmd.pla: 1065: loop +_B070 + !BYTE $66,$20 ; LLW [32] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B068 + !WORD _B068-* +_B069 +; vmsrc/apple/a1cmd.pla: 1066: // +; vmsrc/apple/a1cmd.pla: 1067: // Run through the External/Entry Symbol Directory. +; vmsrc/apple/a1cmd.pla: 1068: // +; vmsrc/apple/a1cmd.pla: 1069: while ^esd + !BYTE $50 ; BRNCH _B077 + !WORD _B077-* +_B075 +; vmsrc/apple/a1cmd.pla: 1070: sym = esd +; vmsrc/apple/a1cmd.pla: 1071: esd = esd + dcitos(esd, @str) +; vmsrc/apple/a1cmd.pla: 1072: if ^esd & $08 +; vmsrc/apple/a1cmd.pla: 1073: // +; vmsrc/apple/a1cmd.pla: 1074: // EXPORT symbol - add it to the global symbol table. +; vmsrc/apple/a1cmd.pla: 1075: // +; vmsrc/apple/a1cmd.pla: 1076: addr = esd=>1 + modofst +; vmsrc/apple/a1cmd.pla: 1077: if uword_isge(addr, bytecode) +; vmsrc/apple/a1cmd.pla: 1078: // +; vmsrc/apple/a1cmd.pla: 1079: // Use the def directory address for bytecode. +; vmsrc/apple/a1cmd.pla: 1080: // +; vmsrc/apple/a1cmd.pla: 1081: addr = lookupdef(addr + defofst, deftbl) +; vmsrc/apple/a1cmd.pla: 1082: fin + !BYTE $66,$22 ; LLW [34] + !BYTE $76,$24 ; SLW [36] + !BYTE $66,$22 ; LLW [34] + !BYTE $34 ; DUP + !BYTE $28,$27 ; LLA [39] + !BYTE $54 ; CALL _A014 +_F143 !WORD _A014 + !BYTE $82 ; ADD + !BYTE $6E,$22 ; DLW [34] + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B078 + !WORD _B078-* + !BYTE $66,$22 ; LLW [34] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$16 ; ADDLW [22] + !BYTE $6E,$10 ; DLW [16] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _A007 +_F144 !WORD _A007 + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _A019 +_F145 !WORD _A019 + !BYTE $76,$10 ; SLW [16] +_B080 +_B081 +; vmsrc/apple/a1cmd.pla: 1083: addsym(sym, addr) +; vmsrc/apple/a1cmd.pla: 1084: fin + !BYTE $66,$24 ; LLW [36] + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C015 +_F146 !WORD _C015 +_B078 +_B079 +; vmsrc/apple/a1cmd.pla: 1085: esd = esd + 3 +; vmsrc/apple/a1cmd.pla: 1086: loop + !BYTE $66,$22 ; LLW [34] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$22 ; SLW [34] +_B077 + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B075 + !WORD _B075-* +_B076 +; vmsrc/apple/a1cmd.pla: 1087: fin +_B050 +_B051 +; vmsrc/apple/a1cmd.pla: 1088: if perr +; vmsrc/apple/a1cmd.pla: 1089: return -perr + !BYTE $68 ; LAB _D034+0 +_F147 !WORD _D034+0 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $68 ; LAB _D034+0 +_F148 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$C9 ; LEAVE 201 +; vmsrc/apple/a1cmd.pla: 1090: fin +_B082 +_B083 +; vmsrc/apple/a1cmd.pla: 1091: // +; vmsrc/apple/a1cmd.pla: 1092: // Free up the end-of-module in main memory. +; vmsrc/apple/a1cmd.pla: 1093: // +; vmsrc/apple/a1cmd.pla: 1094: releaseheap(modend) +; vmsrc/apple/a1cmd.pla: 1095: // +; vmsrc/apple/a1cmd.pla: 1096: // Call init routine if it exists. +; vmsrc/apple/a1cmd.pla: 1097: // +; vmsrc/apple/a1cmd.pla: 1098: fixup = 0 +; vmsrc/apple/a1cmd.pla: 1099: if init +; vmsrc/apple/a1cmd.pla: 1100: init = init - defofst + bytecode +; vmsrc/apple/a1cmd.pla: 1101: fixup = adddef(init, @deflast)() +; vmsrc/apple/a1cmd.pla: 1102: if fixup < 0 +; vmsrc/apple/a1cmd.pla: 1103: perr = -fixup +; vmsrc/apple/a1cmd.pla: 1104: fin + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C014 +_F149 !WORD _C014 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$0C ; LLW [12] + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $6E,$0C ; DLW [12] + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _C017 +_F150 !WORD _C017 + !BYTE $56 ; ICAL + !BYTE $6E,$0E ; DLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $78 ; SAB _D034+0 +_F151 !WORD _D034+0 +_B086 +_B087 +; vmsrc/apple/a1cmd.pla: 1105: if !(systemflags & modinitkeep) +; vmsrc/apple/a1cmd.pla: 1106: releaseheap(init) +; vmsrc/apple/a1cmd.pla: 1107: fin + !BYTE $6A ; LAW _D030+0 +_F152 !WORD _D030+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $94 ; AND + !BYTE $4E ; BRTRU _B088 + !WORD _B088-* + !BYTE $66,$0C ; LLW [12] + !BYTE $54 ; CALL _C014 +_F153 !WORD _C014 + !BYTE $30 ; DROP +_B088 +_B089 +; vmsrc/apple/a1cmd.pla: 1108: fin +_B084 +_B085 +; vmsrc/apple/a1cmd.pla: 1109: return fixup | (systemflags & modkeep) + !BYTE $66,$0E ; LLW [14] + !BYTE $6A ; LAW _D030+0 +_F154 !WORD _D030+0 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $94 ; AND + !BYTE $96 ; OR + !BYTE $5A,$C9 ; LEAVE 201 +; vmsrc/apple/a1cmd.pla: 1110: end +; vmsrc/apple/a1cmd.pla: 1111: // +; vmsrc/apple/a1cmd.pla: 1112: // Command mode +; vmsrc/apple/a1cmd.pla: 1113: // +; vmsrc/apple/a1cmd.pla: 1114: def stripchars(strptr)#1 + ; strptr -> [0] +_C019 ; stripchars() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1115: while ^strptr and ^(strptr + 1) <> ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B090 +; vmsrc/apple/a1cmd.pla: 1116: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/a1cmd.pla: 1117: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A006 +_F155 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 1118: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B092 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B093 + !WORD _B093-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $42 ; ISNE +_B093 + !BYTE $4E ; BRTRU _B090 + !WORD _B090-* +_B091 +; vmsrc/apple/a1cmd.pla: 1119: return ^strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 1120: end +; vmsrc/apple/a1cmd.pla: 1121: def stripspaces(strptr)#0 + ; strptr -> [0] +_C020 ; stripspaces() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1122: while ^strptr and ^(strptr + ^strptr) <= ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B096 + !WORD _B096-* +_B094 +; vmsrc/apple/a1cmd.pla: 1123: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 1124: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B096 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B097 + !WORD _B097-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B097 + !BYTE $4E ; BRTRU _B094 + !WORD _B094-* +_B095 +; vmsrc/apple/a1cmd.pla: 1125: while ^strptr and ^(strptr + 1) <= ' ' + !BYTE $50 ; BRNCH _B100 + !WORD _B100-* +_B098 +; vmsrc/apple/a1cmd.pla: 1126: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/a1cmd.pla: 1127: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A006 +_F156 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 1128: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B100 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B101 + !WORD _B101-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B101 + !BYTE $4E ; BRTRU _B098 + !WORD _B098-* +_B099 +; vmsrc/apple/a1cmd.pla: 1129: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/a1cmd.pla: 1130: def striptrail(strptr)#0 + ; strptr -> [0] +_C021 ; striptrail() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1131: byte i + ; i -> [2] +; vmsrc/apple/a1cmd.pla: 1132: +; vmsrc/apple/a1cmd.pla: 1133: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B102 + !WORD _B102-* +_B103 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/a1cmd.pla: 1134: if (strptr)[i] == ' ' +; vmsrc/apple/a1cmd.pla: 1135: ^strptr = i - 1 +; vmsrc/apple/a1cmd.pla: 1136: return + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $24 ; BRNE _B105 + !WORD _B105-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $32 ; DROP2 + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/a1cmd.pla: 1137: fin +_B105 +_B106 +; vmsrc/apple/a1cmd.pla: 1138: next +_B104 + !BYTE $A4 ; INCBRLE _B103 + !WORD _B103-* +_B102 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/a1cmd.pla: 1139: end + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/a1cmd.pla: 1140: def parsecmd(strptr)#1 + ; strptr -> [0] +_C022 ; parsecmd() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1141: byte cmd + ; cmd -> [2] +; vmsrc/apple/a1cmd.pla: 1142: +; vmsrc/apple/a1cmd.pla: 1143: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/a1cmd.pla: 1144: stripspaces(strptr) +; vmsrc/apple/a1cmd.pla: 1145: if ^strptr +; vmsrc/apple/a1cmd.pla: 1146: cmd = ^(strptr + 1) +; vmsrc/apple/a1cmd.pla: 1147: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/a1cmd.pla: 1148: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F157 !WORD _C020 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B107 + !WORD _B107-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A006 +_F158 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/a1cmd.pla: 1149: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B107 +_B108 +; vmsrc/apple/a1cmd.pla: 1150: stripspaces(strptr) +; vmsrc/apple/a1cmd.pla: 1151: return cmd + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F159 !WORD _C020 + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/a1cmd.pla: 1152: end +; vmsrc/apple/a1cmd.pla: 1153: def execmod(modfile)#1 + ; modfile -> [0] +_P026 ; execmod(modfile)#1() +_C023 ; execmod() + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1154: byte moddci[17] + ; moddci -> [2] +; vmsrc/apple/a1cmd.pla: 1155: word saveheap, savesym, saveflags + ; saveheap -> [19] + ; savesym -> [21] + ; saveflags -> [23] +; vmsrc/apple/a1cmd.pla: 1156: +; vmsrc/apple/a1cmd.pla: 1157: perr = 1 + !BYTE $58,$19,$01 ; ENTER 25,1 +; vmsrc/apple/a1cmd.pla: 1158: if stodci(modfile, @moddci) +; vmsrc/apple/a1cmd.pla: 1159: saveheap = heap +; vmsrc/apple/a1cmd.pla: 1160: savesym = lastsym +; vmsrc/apple/a1cmd.pla: 1161: saveflags = systemflags +; vmsrc/apple/a1cmd.pla: 1162: if loadmod(@moddci) < modkeep +; vmsrc/apple/a1cmd.pla: 1163: lastsym = savesym +; vmsrc/apple/a1cmd.pla: 1164: heap = saveheap +; vmsrc/apple/a1cmd.pla: 1165: fin + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D034+0 +_F160 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A015 +_F161 !WORD _A015 + !BYTE $4C ; BRFLS _B109 + !WORD _B109-* + !BYTE $6A ; LAW _D031+0 +_F162 !WORD _D031+0 + !BYTE $76,$13 ; SLW [19] + !BYTE $6A ; LAW _D033+0 +_F163 !WORD _D033+0 + !BYTE $76,$15 ; SLW [21] + !BYTE $6A ; LAW _D030+0 +_F164 !WORD _D030+0 + !BYTE $76,$17 ; SLW [23] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C018 +_F165 !WORD _C018 + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B111 + !WORD _B111-* + !BYTE $66,$15 ; LLW [21] + !BYTE $7A ; SAW _D033+0 +_F166 !WORD _D033+0 + !BYTE $66,$13 ; LLW [19] + !BYTE $7A ; SAW _D031+0 +_F167 !WORD _D031+0 +_B111 +_B112 +; vmsrc/apple/a1cmd.pla: 1166: ^lastsym = 0 +; vmsrc/apple/a1cmd.pla: 1167: systemflags = saveflags +; vmsrc/apple/a1cmd.pla: 1168: fin + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D033+0 +_F168 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $66,$17 ; LLW [23] + !BYTE $7A ; SAW _D030+0 +_F169 !WORD _D030+0 +_B109 +_B110 +; vmsrc/apple/a1cmd.pla: 1169: return -perr + !BYTE $68 ; LAB _D034+0 +_F170 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$19 ; LEAVE 25 +; vmsrc/apple/a1cmd.pla: 1170: end +; vmsrc/apple/a1cmd.pla: 1171: // +; vmsrc/apple/a1cmd.pla: 1172: // Get heap start. +; vmsrc/apple/a1cmd.pla: 1173: // +; vmsrc/apple/a1cmd.pla: 1174: heap = *freemem +_INIT + JSR INTERP +; vmsrc/apple/a1cmd.pla: 1175: // +; vmsrc/apple/a1cmd.pla: 1176: // Print PLASMA version +; vmsrc/apple/a1cmd.pla: 1177: // +; vmsrc/apple/a1cmd.pla: 1178: prstr(@verstr); prbyte(version.1); cout('.'); prbyte(version.0); crout +; vmsrc/apple/a1cmd.pla: 1179: // +; vmsrc/apple/a1cmd.pla: 1180: // Init symbol table. +; vmsrc/apple/a1cmd.pla: 1181: // +; vmsrc/apple/a1cmd.pla: 1182: symtbl = allocheap($200) +; vmsrc/apple/a1cmd.pla: 1183: lastsym = symtbl +; vmsrc/apple/a1cmd.pla: 1184: ^lastsym = 0 +; vmsrc/apple/a1cmd.pla: 1185: while *syslibsym + !BYTE $6A,$06,$00 ; LAW 6 + !BYTE $7A ; SAW _D031+0 +_F171 !WORD _D031+0 + !BYTE $26 ; LA _D037+0 +_F172 !WORD _D037+0 + !BYTE $54 ; CALL _C001 +_F173 !WORD _C001 + !BYTE $68 ; LAB _D027+1 +_F174 !WORD _D027+1 + !BYTE $54 ; CALL _C004 +_F175 !WORD _C004 + !BYTE $2A,$2E ; CB 46 + !BYTE $54 ; CALL _A021 +_F176 !WORD _A021 + !BYTE $68 ; LAB _D027+0 +_F177 !WORD _D027+0 + !BYTE $54 ; CALL _C004 +_F178 !WORD _C004 + !BYTE $54 ; CALL _C000 +_F179 !WORD _C000 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _C011 +_F180 !WORD _C011 + !BYTE $7E ; DAW _D032+0 +_F181 !WORD _D032+0 + !BYTE $7A ; SAW _D033+0 +_F182 !WORD _D033+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D033+0 +_F183 !WORD _D033+0 + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B115 + !WORD _B115-* +_B113 +; vmsrc/apple/a1cmd.pla: 1186: stodci(syslibsym=>0, heap) +; vmsrc/apple/a1cmd.pla: 1187: addsym(heap, syslibsym=>2) +; vmsrc/apple/a1cmd.pla: 1188: syslibsym = syslibsym + 4 +; vmsrc/apple/a1cmd.pla: 1189: loop + !BYTE $6A ; LAW _D075+0 +_F184 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D031+0 +_F185 !WORD _D031+0 + !BYTE $54 ; CALL _A015 +_F186 !WORD _A015 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D031+0 +_F187 !WORD _D031+0 + !BYTE $6A ; LAW _D075+0 +_F188 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C015 +_F189 !WORD _C015 + !BYTE $6A ; LAW _D075+0 +_F190 !WORD _D075+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $7A ; SAW _D075+0 +_F191 !WORD _D075+0 +_B115 + !BYTE $6A ; LAW _D075+0 +_F192 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B113 + !WORD _B113-* +_B114 +; vmsrc/apple/a1cmd.pla: 1190: // +; vmsrc/apple/a1cmd.pla: 1191: // Try to load autorun. +; vmsrc/apple/a1cmd.pla: 1192: // +; vmsrc/apple/a1cmd.pla: 1193: cmdptr = heap +; vmsrc/apple/a1cmd.pla: 1194: memset(cmdptr, 0, 128) +; vmsrc/apple/a1cmd.pla: 1195: readfile(@autorun, cmdptr + 1) +; vmsrc/apple/a1cmd.pla: 1196: while ^(cmdptr + ^cmdptr + 1) >= ' ' + !BYTE $6A ; LAW _D031+0 +_F193 !WORD _D031+0 + !BYTE $7E ; DAW _D045+0 +_F194 !WORD _D045+0 + !BYTE $00 ; CN 0 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _A005 +_F195 !WORD _A005 + !BYTE $26 ; LA _D036+0 +_F196 !WORD _D036+0 + !BYTE $6A ; LAW _D045+0 +_F197 !WORD _D045+0 + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C009 +_F198 !WORD _C009 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B118 + !WORD _B118-* +_B116 +; vmsrc/apple/a1cmd.pla: 1197: ^cmdptr++ + !BYTE $6A ; LAW _D045+0 +_F199 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $8C ; INCR +; vmsrc/apple/a1cmd.pla: 1198: loop + !BYTE $6A ; LAW _D045+0 +_F200 !WORD _D045+0 + !BYTE $70 ; SB +_B118 + !BYTE $6A ; LAW _D045+0 +_F201 !WORD _D045+0 + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $48 ; ISGE + !BYTE $4E ; BRTRU _B116 + !WORD _B116-* +_B117 +; vmsrc/apple/a1cmd.pla: 1199: perr = 0 +; vmsrc/apple/a1cmd.pla: 1200: // +; vmsrc/apple/a1cmd.pla: 1201: // Print some startup info. +; vmsrc/apple/a1cmd.pla: 1202: // +; vmsrc/apple/a1cmd.pla: 1203: if not ^cmdptr +; vmsrc/apple/a1cmd.pla: 1204: prstr(@freestr) +; vmsrc/apple/a1cmd.pla: 1205: prword(availheap) +; vmsrc/apple/a1cmd.pla: 1206: crout +; vmsrc/apple/a1cmd.pla: 1207: fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D034+0 +_F202 !WORD _D034+0 + !BYTE $6A ; LAW _D045+0 +_F203 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B119 + !WORD _B119-* + !BYTE $26 ; LA _D038+0 +_F204 !WORD _D038+0 + !BYTE $54 ; CALL _C001 +_F205 !WORD _C001 + !BYTE $54 ; CALL _C010 +_F206 !WORD _C010 + !BYTE $54 ; CALL _C005 +_F207 !WORD _C005 + !BYTE $54 ; CALL _C000 +_F208 !WORD _C000 +_B119 +_B120 +; vmsrc/apple/a1cmd.pla: 1208: // +; vmsrc/apple/a1cmd.pla: 1209: // Handle commands. +; vmsrc/apple/a1cmd.pla: 1210: // +; vmsrc/apple/a1cmd.pla: 1211: while 1 + !BYTE $50 ; BRNCH _B123 + !WORD _B123-* +_B121 +; vmsrc/apple/a1cmd.pla: 1212: if ^cmdptr +; vmsrc/apple/a1cmd.pla: 1213: when toupper(parsecmd(cmdptr)) + !BYTE $6A ; LAW _D045+0 +_F209 !WORD _D045+0 + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B124 + !WORD _B124-* + !BYTE $6A ; LAW _D045+0 +_F210 !WORD _D045+0 + !BYTE $54 ; CALL _C022 +_F211 !WORD _C022 + !BYTE $54 ; CALL _A016 +_F212 !WORD _A016 + !BYTE $52 ; SEL + !WORD _B127-* +; vmsrc/apple/a1cmd.pla: 1214: is 'Q' +_B128 +; vmsrc/apple/a1cmd.pla: 1215: quit +; vmsrc/apple/a1cmd.pla: 1216: is 'M' + !BYTE $54 ; CALL _A004 +_F213 !WORD _A004 +_B129 +; vmsrc/apple/a1cmd.pla: 1217: syscall($02, 0) +; vmsrc/apple/a1cmd.pla: 1218: break + !BYTE $04 ; CN 2 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A002 +_F214 !WORD _A002 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +; vmsrc/apple/a1cmd.pla: 1219: is '+' +_B130 +; vmsrc/apple/a1cmd.pla: 1220: execmod(cmdptr) +; vmsrc/apple/a1cmd.pla: 1221: break + !BYTE $6A ; LAW _D045+0 +_F215 !WORD _D045+0 + !BYTE $54 ; CALL _C023 +_F216 !WORD _C023 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B126 + !WORD _B126-* +; vmsrc/apple/a1cmd.pla: 1222: otherwise +_B127 + !BYTE $03 ; CASEBLOCK + !WORD $002B + !WORD _B130-* + !WORD $004D + !WORD _B129-* + !WORD $0051 + !WORD _B128-* +; vmsrc/apple/a1cmd.pla: 1223: prstr(@huhstr) +; vmsrc/apple/a1cmd.pla: 1224: wend + !BYTE $26 ; LA _D042+0 +_F217 !WORD _D042+0 + !BYTE $54 ; CALL _C001 +_F218 !WORD _C001 +_B126 +; vmsrc/apple/a1cmd.pla: 1225: if perr +; vmsrc/apple/a1cmd.pla: 1226: prstr(@errorstr) +; vmsrc/apple/a1cmd.pla: 1227: prbyte(perr) +; vmsrc/apple/a1cmd.pla: 1228: perr = 0 +; vmsrc/apple/a1cmd.pla: 1229: else + !BYTE $68 ; LAB _D034+0 +_F219 !WORD _D034+0 + !BYTE $4C ; BRFLS _B131 + !WORD _B131-* + !BYTE $26 ; LA _D039+0 +_F220 !WORD _D039+0 + !BYTE $54 ; CALL _C001 +_F221 !WORD _C001 + !BYTE $68 ; LAB _D034+0 +_F222 !WORD _D034+0 + !BYTE $54 ; CALL _C004 +_F223 !WORD _C004 + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D034+0 +_F224 !WORD _D034+0 + !BYTE $50 ; BRNCH _B132 + !WORD _B132-* +_B131 +; vmsrc/apple/a1cmd.pla: 1230: prstr(@okstr) +; vmsrc/apple/a1cmd.pla: 1231: fin + !BYTE $26 ; LA _D041+0 +_F225 !WORD _D041+0 + !BYTE $54 ; CALL _C001 +_F226 !WORD _C001 +_B132 +; vmsrc/apple/a1cmd.pla: 1232: crout() +; vmsrc/apple/a1cmd.pla: 1233: fin + !BYTE $54 ; CALL _C000 +_F227 !WORD _C000 +_B124 +_B125 +; vmsrc/apple/a1cmd.pla: 1234: prstr(@prompt) +; vmsrc/apple/a1cmd.pla: 1235: cmdptr = rdstr($BA) +; vmsrc/apple/a1cmd.pla: 1236: loop + !BYTE $26 ; LA _D040+0 +_F228 !WORD _D040+0 + !BYTE $54 ; CALL _C001 +_F229 !WORD _C001 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _C003 +_F230 !WORD _C003 + !BYTE $7A ; SAW _D045+0 +_F231 !WORD _D045+0 +_B123 + !BYTE $50 ; BRNCH _B121 + !WORD _B121-* +_B122 +; vmsrc/apple/a1cmd.pla: 1237: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 diff --git a/src/vmsrc/apple/cmd.a b/src/vmsrc/apple/cmd.a new file mode 100644 index 0000000..6da5e55 --- /dev/null +++ b/src/vmsrc/apple/cmd.a @@ -0,0 +1,3913 @@ +; ACME COMPATIBLE OUTPUT + JMP _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/cmd.pla: 0001: const MACHID = $BF98 + ; MACHID = 49048 +; vmsrc/apple/cmd.pla: 0002: const iobuffer = $0800 + ; iobuffer = 2048 +; vmsrc/apple/cmd.pla: 0003: const RELADDR = $1000 + ; RELADDR = 4096 +; vmsrc/apple/cmd.pla: 0004: const symtbl = $0C00 + ; symtbl = 3072 +; vmsrc/apple/cmd.pla: 0005: const freemem = $0006 + ; freemem = 6 +; vmsrc/apple/cmd.pla: 0006: const getlnbuf = $01FF + ; getlnbuf = 511 +; vmsrc/apple/cmd.pla: 0007: // +; vmsrc/apple/cmd.pla: 0008: // System flags: memory allocator screen holes. +; vmsrc/apple/cmd.pla: 0009: // +; vmsrc/apple/cmd.pla: 0010: const restxt1 = $0001 + ; restxt1 = 1 +; vmsrc/apple/cmd.pla: 0011: const restxt2 = $0002 + ; restxt2 = 2 +; vmsrc/apple/cmd.pla: 0012: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; vmsrc/apple/cmd.pla: 0013: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; vmsrc/apple/cmd.pla: 0014: const reshgr1 = $0010 + ; reshgr1 = 16 +; vmsrc/apple/cmd.pla: 0015: const reshgr2 = $0020 + ; reshgr2 = 32 +; vmsrc/apple/cmd.pla: 0016: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; vmsrc/apple/cmd.pla: 0017: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; vmsrc/apple/cmd.pla: 0018: // +; vmsrc/apple/cmd.pla: 0019: // Module don't free memory +; vmsrc/apple/cmd.pla: 0020: // +; vmsrc/apple/cmd.pla: 0021: const modkeep = $2000 + ; modkeep = 8192 +; vmsrc/apple/cmd.pla: 0022: const modinitkeep = $4000 + ; modinitkeep = 16384 +; vmsrc/apple/cmd.pla: 0023: // +; vmsrc/apple/cmd.pla: 0024: // Prefix commands +; vmsrc/apple/cmd.pla: 0025: // +; vmsrc/apple/cmd.pla: 0026: const GET_PFX = $C7 + ; GET_PFX = 199 +; vmsrc/apple/cmd.pla: 0027: const SET_PFX = $C6 + ; SET_PFX = 198 +; vmsrc/apple/cmd.pla: 0028: // +; vmsrc/apple/cmd.pla: 0029: // Pedefined functions. +; vmsrc/apple/cmd.pla: 0030: // +; vmsrc/apple/cmd.pla: 0031: predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 +; vmsrc/apple/cmd.pla: 0032: predef crout()#0, cout(c)#0, prstr(s)#0, prbyte(b)#0, prword(w)#0, print(i)#0, cin()#1, rdstr(p)#1, toupper(c)#1 +; vmsrc/apple/cmd.pla: 0033: predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr)#1, releaseheap(newheap)#1, availheap()#1 +; vmsrc/apple/cmd.pla: 0034: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 +; vmsrc/apple/cmd.pla: 0035: predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2 +; vmsrc/apple/cmd.pla: 0036: predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buff, len)#1, write(refnum, buff, len)#1 +; vmsrc/apple/cmd.pla: 0037: // +; vmsrc/apple/cmd.pla: 0038: // Exported CMDSYS table +; vmsrc/apple/cmd.pla: 0039: // +; vmsrc/apple/cmd.pla: 0040: word version = $0200 // 02.00 Dev +_D031 ; version = $0200 // 02.00 Dev + !WORD $0200 +; vmsrc/apple/cmd.pla: 0041: word syspath +_D032 !FILL 2 ; syspath +; vmsrc/apple/cmd.pla: 0042: word syscmdln +_D033 !FILL 2 ; syscmdln +; vmsrc/apple/cmd.pla: 0043: word = @execmod, @open, @close, @read, @write +_F000 !WORD _P026 +_F001 !WORD _P027 +_F002 !WORD _P028 +_F003 !WORD _P029 +_F004 !WORD _P030 +; vmsrc/apple/cmd.pla: 0044: byte perr +_D034 !FILL 1 ; perr +; vmsrc/apple/cmd.pla: 0045: byte jitcount = 0 +_D035 ; jitcount = 0 + !BYTE $00 +; vmsrc/apple/cmd.pla: 0046: byte jitsize = 0 +_D036 ; jitsize = 0 + !BYTE $00 +; vmsrc/apple/cmd.pla: 0047: // +; vmsrc/apple/cmd.pla: 0048: // Working input buffer overlayed with strings table +; vmsrc/apple/cmd.pla: 0049: // +; vmsrc/apple/cmd.pla: 0050: byte cmdln = "" +_D037 ; cmdln = "" + !BYTE $00 +; vmsrc/apple/cmd.pla: 0051: // +; vmsrc/apple/cmd.pla: 0052: // Name for auto-run file (must follow cmdln) +; vmsrc/apple/cmd.pla: 0053: // +; vmsrc/apple/cmd.pla: 0054: byte autorun = "AUTORUN" +_D038 ; autorun = "AUTORUN" + !BYTE $07 + !BYTE $41,$55,$54,$4F,$52,$55,$4E +; vmsrc/apple/cmd.pla: 0055: // +; vmsrc/apple/cmd.pla: 0056: // Standard Library exported functions. +; vmsrc/apple/cmd.pla: 0057: // +; vmsrc/apple/cmd.pla: 0058: byte sysmodstr = "CMDSYS" +_D039 ; sysmodstr = "CMDSYS" + !BYTE $06 + !BYTE $43,$4D,$44,$53,$59,$53 +; vmsrc/apple/cmd.pla: 0059: byte putsstr = "PUTS" +_D040 ; putsstr = "PUTS" + !BYTE $04 + !BYTE $50,$55,$54,$53 +; vmsrc/apple/cmd.pla: 0060: byte putistr = "PUTI" +_D041 ; putistr = "PUTI" + !BYTE $04 + !BYTE $50,$55,$54,$49 +; vmsrc/apple/cmd.pla: 0061: byte putcstr = "PUTC" +_D042 ; putcstr = "PUTC" + !BYTE $04 + !BYTE $50,$55,$54,$43 +; vmsrc/apple/cmd.pla: 0062: byte putlnstr = "PUTLN" +_D043 ; putlnstr = "PUTLN" + !BYTE $05 + !BYTE $50,$55,$54,$4C,$4E +; vmsrc/apple/cmd.pla: 0063: byte putbstr = "PUTB" +_D044 ; putbstr = "PUTB" + !BYTE $04 + !BYTE $50,$55,$54,$42 +; vmsrc/apple/cmd.pla: 0064: byte putwstr = "PUTH" +_D045 ; putwstr = "PUTH" + !BYTE $04 + !BYTE $50,$55,$54,$48 +; vmsrc/apple/cmd.pla: 0065: byte getcstr = "GETC" +_D046 ; getcstr = "GETC" + !BYTE $04 + !BYTE $47,$45,$54,$43 +; vmsrc/apple/cmd.pla: 0066: byte getsstr = "GETS" +_D047 ; getsstr = "GETS" + !BYTE $04 + !BYTE $47,$45,$54,$53 +; vmsrc/apple/cmd.pla: 0067: byte toupstr = "TOUPPER" +_D048 ; toupstr = "TOUPPER" + !BYTE $07 + !BYTE $54,$4F,$55,$50,$50,$45,$52 +; vmsrc/apple/cmd.pla: 0068: byte strcpystr = "STRCPY" +_D049 ; strcpystr = "STRCPY" + !BYTE $06 + !BYTE $53,$54,$52,$43,$50,$59 +; vmsrc/apple/cmd.pla: 0069: byte strcatstr = "STRCAT" +_D050 ; strcatstr = "STRCAT" + !BYTE $06 + !BYTE $53,$54,$52,$43,$41,$54 +; vmsrc/apple/cmd.pla: 0070: byte hpmarkstr = "HEAPMARK" +_D051 ; hpmarkstr = "HEAPMARK" + !BYTE $08 + !BYTE $48,$45,$41,$50,$4D,$41,$52,$4B +; vmsrc/apple/cmd.pla: 0071: byte hpalignstr = "HEAPALLOCALIGN" +_D052 ; hpalignstr = "HEAPALLOCALIGN" + !BYTE $0E + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43,$41,$4C,$49,$47,$4E +; vmsrc/apple/cmd.pla: 0072: byte hpallocstr = "HEAPALLOC" +_D053 ; hpallocstr = "HEAPALLOC" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43 +; vmsrc/apple/cmd.pla: 0073: byte hprelstr = "HEAPRELEASE" +_D054 ; hprelstr = "HEAPRELEASE" + !BYTE $0B + !BYTE $48,$45,$41,$50,$52,$45,$4C,$45 + !BYTE $41,$53,$45 +; vmsrc/apple/cmd.pla: 0074: byte hpavlstr = "HEAPAVAIL" +_D055 ; hpavlstr = "HEAPAVAIL" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$56,$41,$49 + !BYTE $4C +; vmsrc/apple/cmd.pla: 0075: word memsetstr = "MEMSET" +_D056 ; memsetstr = "MEMSET" + !BYTE $06 + !BYTE $4D,$45,$4D,$53,$45,$54 +; vmsrc/apple/cmd.pla: 0076: byte memcpystr = "MEMCPY" +_D057 ; memcpystr = "MEMCPY" + !BYTE $06 + !BYTE $4D,$45,$4D,$43,$50,$59 +; vmsrc/apple/cmd.pla: 0077: byte uisgtstr = "ISUGT" +_D058 ; uisgtstr = "ISUGT" + !BYTE $05 + !BYTE $49,$53,$55,$47,$54 +; vmsrc/apple/cmd.pla: 0078: byte uisgestr = "ISUGE" +_D059 ; uisgestr = "ISUGE" + !BYTE $05 + !BYTE $49,$53,$55,$47,$45 +; vmsrc/apple/cmd.pla: 0079: byte uisltstr = "ISULT" +_D060 ; uisltstr = "ISULT" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$54 +; vmsrc/apple/cmd.pla: 0080: byte uislestr = "ISULE" +_D061 ; uislestr = "ISULE" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$45 +; vmsrc/apple/cmd.pla: 0081: byte sextstr = "SEXT" +_D062 ; sextstr = "SEXT" + !BYTE $04 + !BYTE $53,$45,$58,$54 +; vmsrc/apple/cmd.pla: 0082: byte divmodstr = "DIVMOD" +_D063 ; divmodstr = "DIVMOD" + !BYTE $06 + !BYTE $44,$49,$56,$4D,$4F,$44 +; vmsrc/apple/cmd.pla: 0083: byte machidstr = "MACHID" +_D064 ; machidstr = "MACHID" + !BYTE $06 + !BYTE $4D,$41,$43,$48,$49,$44 +; vmsrc/apple/cmd.pla: 0084: byte sysstr = "SYSCALL" +_D065 ; sysstr = "SYSCALL" + !BYTE $07 + !BYTE $53,$59,$53,$43,$41,$4C,$4C +; vmsrc/apple/cmd.pla: 0085: byte callstr = "CALL" +_D066 ; callstr = "CALL" + !BYTE $04 + !BYTE $43,$41,$4C,$4C +; vmsrc/apple/cmd.pla: 0086: word exports = @sysmodstr, @version +_D067 ; exports = @sysmodstr, @version +_F005 !WORD _D039 +_F006 !WORD _D031 +; vmsrc/apple/cmd.pla: 0087: word = @sysstr, @syscall +_F007 !WORD _D065 +_F008 !WORD _P000 +; vmsrc/apple/cmd.pla: 0088: word = @callstr, @call +_F009 !WORD _D066 +_F010 !WORD _P001 +; vmsrc/apple/cmd.pla: 0089: word = @putcstr, @cout +_F011 !WORD _D042 +_F012 !WORD _P003 +; vmsrc/apple/cmd.pla: 0090: word = @putlnstr, @crout +_F013 !WORD _D043 +_F014 !WORD _P002 +; vmsrc/apple/cmd.pla: 0091: word = @putsstr, @prstr +_F015 !WORD _D040 +_F016 !WORD _P004 +; vmsrc/apple/cmd.pla: 0092: word = @putbstr, @prbyte +_F017 !WORD _D044 +_F018 !WORD _P005 +; vmsrc/apple/cmd.pla: 0093: word = @putwstr, @prword +_F019 !WORD _D045 +_F020 !WORD _P006 +; vmsrc/apple/cmd.pla: 0094: word = @putistr, @print +_F021 !WORD _D041 +_F022 !WORD _P007 +; vmsrc/apple/cmd.pla: 0095: word = @getcstr, @cin +_F023 !WORD _D046 +_F024 !WORD _P008 +; vmsrc/apple/cmd.pla: 0096: word = @getsstr, @rdstr +_F025 !WORD _D047 +_F026 !WORD _P009 +; vmsrc/apple/cmd.pla: 0097: word = @toupstr, @toupper +_F027 !WORD _D048 +_F028 !WORD _P010 +; vmsrc/apple/cmd.pla: 0098: word = @hpmarkstr, @markheap +_F029 !WORD _D051 +_F030 !WORD _P011 +; vmsrc/apple/cmd.pla: 0099: byte sysmods[] // overlay with exported strings +_D068 ; sysmods[] // overlay with exported strings +; vmsrc/apple/cmd.pla: 0100: word = @hpallocstr,@allocheap +_F031 !WORD _D053 +_F032 !WORD _P012 +; vmsrc/apple/cmd.pla: 0101: word = @hpalignstr,@allocalignheap +_F033 !WORD _D052 +_F034 !WORD _P013 +; vmsrc/apple/cmd.pla: 0102: word = @hprelstr, @releaseheap +_F035 !WORD _D054 +_F036 !WORD _P014 +; vmsrc/apple/cmd.pla: 0103: word = @hpavlstr, @availheap +_F037 !WORD _D055 +_F038 !WORD _P015 +; vmsrc/apple/cmd.pla: 0104: word = @memsetstr, @memset +_F039 !WORD _D056 +_F040 !WORD _P016 +; vmsrc/apple/cmd.pla: 0105: word = @memcpystr, @memcpy +_F041 !WORD _D057 +_F042 !WORD _P017 +; vmsrc/apple/cmd.pla: 0106: word = @uisgtstr, @uword_isgt +_F043 !WORD _D058 +_F044 !WORD _P020 +; vmsrc/apple/cmd.pla: 0107: word = @uisgestr, @uword_isge +_F045 !WORD _D059 +_F046 !WORD _P021 +; vmsrc/apple/cmd.pla: 0108: word = @uisltstr, @uword_islt +_F047 !WORD _D060 +_F048 !WORD _P022 +; vmsrc/apple/cmd.pla: 0109: word = @uislestr, @uword_isle +_F049 !WORD _D061 +_F050 !WORD _P023 +; vmsrc/apple/cmd.pla: 0110: word = @strcpystr, @strcpy +_F051 !WORD _D049 +_F052 !WORD _P018 +; vmsrc/apple/cmd.pla: 0111: word = @strcatstr, @strcat +_F053 !WORD _D050 +_F054 !WORD _P019 +; vmsrc/apple/cmd.pla: 0112: word = @sextstr, @sext +_F055 !WORD _D062 +_F056 !WORD _P024 +; vmsrc/apple/cmd.pla: 0113: word = @divmodstr, @divmod +_F057 !WORD _D063 +_F058 !WORD _P025 +; vmsrc/apple/cmd.pla: 0114: word = @machidstr, MACHID +_F059 !WORD _D064 + !WORD $BF98 +; vmsrc/apple/cmd.pla: 0115: word = 0 + !WORD $0000 +; vmsrc/apple/cmd.pla: 0116: word sysmodsym = @exports +_D069 ; sysmodsym = @exports +_F060 !WORD _D067 +; vmsrc/apple/cmd.pla: 0117: // +; vmsrc/apple/cmd.pla: 0118: // System variable. +; vmsrc/apple/cmd.pla: 0119: // +; vmsrc/apple/cmd.pla: 0120: word systemflags = 0 +_D070 ; systemflags = 0 + !WORD $0000 +; vmsrc/apple/cmd.pla: 0121: word heap +_D071 !FILL 2 ; heap +; vmsrc/apple/cmd.pla: 0122: word lastsym = symtbl +_D072 ; lastsym = symtbl + !WORD $0C00 +; vmsrc/apple/cmd.pla: 0123: // +; vmsrc/apple/cmd.pla: 0124: // Utility functions +; vmsrc/apple/cmd.pla: 0125: // +; vmsrc/apple/cmd.pla: 0126: //asm equates included from cmdstub.s +; vmsrc/apple/cmd.pla: 0127: // +; vmsrc/apple/cmd.pla: 0128: // CALL PRODOS +; vmsrc/apple/cmd.pla: 0129: // SYSCALL(CMD, PARAMS) +; vmsrc/apple/cmd.pla: 0130: // +; vmsrc/apple/cmd.pla: 0131: asm syscall(cmd,params)#1 +_P000 ; syscall(cmd,params)#1() +_A000 ; syscall() +; vmsrc/apple/cmd.pla: 0132: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0133: LDY ESTKH,X + LDY ESTKH,X +; vmsrc/apple/cmd.pla: 0134: STA PARAMS + STA PARAMS +; vmsrc/apple/cmd.pla: 0135: STY PARAMS+1 + STY PARAMS+1 +; vmsrc/apple/cmd.pla: 0136: INX + INX +; vmsrc/apple/cmd.pla: 0137: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0138: STA CMD + STA CMD +; vmsrc/apple/cmd.pla: 0139: JSR $BF00 + JSR $BF00 +; vmsrc/apple/cmd.pla: 0140: CMD: !BYTE 00 +CMD: !BYTE 00 +; vmsrc/apple/cmd.pla: 0141: PARAMS: !WORD 0000 +PARAMS: !WORD 0000 +; vmsrc/apple/cmd.pla: 0142: ; LDY #$00 +; LDY #$00 +; vmsrc/apple/cmd.pla: 0143: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0144: ; STY ESTKH,X +; STY ESTKH,X +; vmsrc/apple/cmd.pla: 0145: RTS + RTS +; vmsrc/apple/cmd.pla: 0146: end +; vmsrc/apple/cmd.pla: 0147: // +; vmsrc/apple/cmd.pla: 0148: // CALL 6502 ROUTINE +; vmsrc/apple/cmd.pla: 0149: // CALL(ADDR, AREG, XREG, YREG, STATUS) +; vmsrc/apple/cmd.pla: 0150: // +; vmsrc/apple/cmd.pla: 0151: asm call(addr,areg,xreg,yreg,status)#1 +_P001 ; call(addr,areg,xreg,yreg,status)#1() +_A001 ; call() +; vmsrc/apple/cmd.pla: 0152: REGVALS = SRC +REGVALS = SRC +; vmsrc/apple/cmd.pla: 0153: PHP + PHP +; vmsrc/apple/cmd.pla: 0154: LDA ESTKL+4,X + LDA ESTKL+4,X +; vmsrc/apple/cmd.pla: 0155: STA TMPL + STA TMPL +; vmsrc/apple/cmd.pla: 0156: LDA ESTKH+4,X + LDA ESTKH+4,X +; vmsrc/apple/cmd.pla: 0157: STA TMPH + STA TMPH +; vmsrc/apple/cmd.pla: 0158: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0159: PHA + PHA +; vmsrc/apple/cmd.pla: 0160: LDY ESTKL+1,X + LDY ESTKL+1,X +; vmsrc/apple/cmd.pla: 0161: LDA ESTKL+3,X + LDA ESTKL+3,X +; vmsrc/apple/cmd.pla: 0162: PHA + PHA +; vmsrc/apple/cmd.pla: 0163: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/cmd.pla: 0164: INX + INX +; vmsrc/apple/cmd.pla: 0165: INX + INX +; vmsrc/apple/cmd.pla: 0166: INX + INX +; vmsrc/apple/cmd.pla: 0167: INX + INX +; vmsrc/apple/cmd.pla: 0168: STX ESP + STX ESP +; vmsrc/apple/cmd.pla: 0169: TAX + TAX +; vmsrc/apple/cmd.pla: 0170: PLA + PLA +; vmsrc/apple/cmd.pla: 0171: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0172: PLP + PLP +; vmsrc/apple/cmd.pla: 0173: JSR JMPTMP + JSR JMPTMP +; vmsrc/apple/cmd.pla: 0174: PHP + PHP +; vmsrc/apple/cmd.pla: 0175: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0176: STA REGVALS+0 + STA REGVALS+0 +; vmsrc/apple/cmd.pla: 0177: STX REGVALS+1 + STX REGVALS+1 +; vmsrc/apple/cmd.pla: 0178: STY REGVALS+2 + STY REGVALS+2 +; vmsrc/apple/cmd.pla: 0179: PLA + PLA +; vmsrc/apple/cmd.pla: 0180: STA REGVALS+3 + STA REGVALS+3 +; vmsrc/apple/cmd.pla: 0181: LDX ESP + LDX ESP +; vmsrc/apple/cmd.pla: 0182: LDA #REGVALS + LDY #>REGVALS +; vmsrc/apple/cmd.pla: 0184: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0185: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmd.pla: 0186: PLP + PLP +; vmsrc/apple/cmd.pla: 0187: RTS + RTS +; vmsrc/apple/cmd.pla: 0188: end +; vmsrc/apple/cmd.pla: 0189: // +; vmsrc/apple/cmd.pla: 0190: // CALL LOADED SYSTEM PROGRAM +; vmsrc/apple/cmd.pla: 0191: // +; vmsrc/apple/cmd.pla: 0192: asm exec()#0 +_A002 ; exec() +; vmsrc/apple/cmd.pla: 0193: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0194: JMP $2000 + JMP $2000 +; vmsrc/apple/cmd.pla: 0195: end +; vmsrc/apple/cmd.pla: 0196: // +; vmsrc/apple/cmd.pla: 0197: // SET MEMORY TO VALUE +; vmsrc/apple/cmd.pla: 0198: // MEMSET(ADDR, VALUE, SIZE) +; vmsrc/apple/cmd.pla: 0199: // With optimizations from Peter Ferrie +; vmsrc/apple/cmd.pla: 0200: // +; vmsrc/apple/cmd.pla: 0201: asm memset(addr,value,size)#0 +_P016 ; memset(addr,value,size)#0() +_A003 ; memset() +; vmsrc/apple/cmd.pla: 0202: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/cmd.pla: 0203: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0204: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/cmd.pla: 0205: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0206: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/cmd.pla: 0207: BEQ + + BEQ + +; vmsrc/apple/cmd.pla: 0208: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/cmd.pla: 0209: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0210: + LDA ESTKH,X ++ LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0211: BEQ SETMEX + BEQ SETMEX +; vmsrc/apple/cmd.pla: 0212: SETMLPL CLC +SETMLPL CLC +; vmsrc/apple/cmd.pla: 0213: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0214: SETMLPH STA (DST),Y +SETMLPH STA (DST),Y +; vmsrc/apple/cmd.pla: 0215: DEC ESTKL,X + DEC ESTKL,X +; vmsrc/apple/cmd.pla: 0216: BEQ ++ + BEQ ++ +; vmsrc/apple/cmd.pla: 0217: - INY +- INY +; vmsrc/apple/cmd.pla: 0218: BEQ + + BEQ + +; vmsrc/apple/cmd.pla: 0219: -- BCS SETMLPL +-- BCS SETMLPL +; vmsrc/apple/cmd.pla: 0220: SEC + SEC +; vmsrc/apple/cmd.pla: 0221: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0222: BCS SETMLPH + BCS SETMLPH +; vmsrc/apple/cmd.pla: 0223: + INC DSTH ++ INC DSTH +; vmsrc/apple/cmd.pla: 0224: BNE -- + BNE -- +; vmsrc/apple/cmd.pla: 0225: ++ DEC ESTKH,X +++ DEC ESTKH,X +; vmsrc/apple/cmd.pla: 0226: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0227: SETMEX INX +SETMEX INX +; vmsrc/apple/cmd.pla: 0228: INX + INX +; vmsrc/apple/cmd.pla: 0229: INX + INX +; vmsrc/apple/cmd.pla: 0230: RTS + RTS +; vmsrc/apple/cmd.pla: 0231: end +; vmsrc/apple/cmd.pla: 0232: // +; vmsrc/apple/cmd.pla: 0233: // COPY MEMORY +; vmsrc/apple/cmd.pla: 0234: // MEMCPY(DSTADDR, SRCADDR, SIZE) +; vmsrc/apple/cmd.pla: 0235: // +; vmsrc/apple/cmd.pla: 0236: asm memcpy(dst,src,size)#0 +_P017 ; memcpy(dst,src,size)#0() +_A004 ; memcpy() +; vmsrc/apple/cmd.pla: 0237: INX + INX +; vmsrc/apple/cmd.pla: 0238: INX + INX +; vmsrc/apple/cmd.pla: 0239: INX + INX +; vmsrc/apple/cmd.pla: 0240: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmd.pla: 0241: ORA ESTKH-3,X + ORA ESTKH-3,X +; vmsrc/apple/cmd.pla: 0242: BEQ CPYMEX + BEQ CPYMEX +; vmsrc/apple/cmd.pla: 0243: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/cmd.pla: 0244: CMP ESTKL-1,X + CMP ESTKL-1,X +; vmsrc/apple/cmd.pla: 0245: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/cmd.pla: 0246: SBC ESTKH-1,X + SBC ESTKH-1,X +; vmsrc/apple/cmd.pla: 0247: BCC REVCPY + BCC REVCPY +; vmsrc/apple/cmd.pla: 0248: ; +; vmsrc/apple/cmd.pla: 0249: ; FORWARD COPY +; FORWARD COPY +; vmsrc/apple/cmd.pla: 0250: ; +; vmsrc/apple/cmd.pla: 0251: LDA ESTKL-1,X + LDA ESTKL-1,X +; vmsrc/apple/cmd.pla: 0252: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0253: LDA ESTKH-1,X + LDA ESTKH-1,X +; vmsrc/apple/cmd.pla: 0254: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0255: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/cmd.pla: 0256: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0257: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/cmd.pla: 0258: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0259: LDY ESTKL-3,X + LDY ESTKL-3,X +; vmsrc/apple/cmd.pla: 0260: BEQ FORCPYLP + BEQ FORCPYLP +; vmsrc/apple/cmd.pla: 0261: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/cmd.pla: 0262: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0263: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0264: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0265: INY + INY +; vmsrc/apple/cmd.pla: 0266: BNE + + BNE + +; vmsrc/apple/cmd.pla: 0267: INC DSTH + INC DSTH +; vmsrc/apple/cmd.pla: 0268: INC SRCH + INC SRCH +; vmsrc/apple/cmd.pla: 0269: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/cmd.pla: 0270: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/cmd.pla: 0271: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/cmd.pla: 0272: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/cmd.pla: 0273: RTS + RTS +; vmsrc/apple/cmd.pla: 0274: ; +; vmsrc/apple/cmd.pla: 0275: ; REVERSE COPY +; REVERSE COPY +; vmsrc/apple/cmd.pla: 0276: ; +; vmsrc/apple/cmd.pla: 0277: REVCPY ;CLC +REVCPY ;CLC +; vmsrc/apple/cmd.pla: 0278: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmd.pla: 0279: ADC ESTKL-1,X + ADC ESTKL-1,X +; vmsrc/apple/cmd.pla: 0280: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0281: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/cmd.pla: 0282: ADC ESTKH-1,X + ADC ESTKH-1,X +; vmsrc/apple/cmd.pla: 0283: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0284: CLC + CLC +; vmsrc/apple/cmd.pla: 0285: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmd.pla: 0286: ADC ESTKL-2,X + ADC ESTKL-2,X +; vmsrc/apple/cmd.pla: 0287: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0288: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/cmd.pla: 0289: ADC ESTKH-2,X + ADC ESTKH-2,X +; vmsrc/apple/cmd.pla: 0290: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0291: DEC DSTH + DEC DSTH +; vmsrc/apple/cmd.pla: 0292: DEC SRCH + DEC SRCH +; vmsrc/apple/cmd.pla: 0293: LDY #$FF + LDY #$FF +; vmsrc/apple/cmd.pla: 0294: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmd.pla: 0295: BEQ REVCPYLP + BEQ REVCPYLP +; vmsrc/apple/cmd.pla: 0296: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/cmd.pla: 0297: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0298: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0299: DEY + DEY +; vmsrc/apple/cmd.pla: 0300: CPY #$FF + CPY #$FF +; vmsrc/apple/cmd.pla: 0301: BNE + + BNE + +; vmsrc/apple/cmd.pla: 0302: DEC DSTH + DEC DSTH +; vmsrc/apple/cmd.pla: 0303: DEC SRCH + DEC SRCH +; vmsrc/apple/cmd.pla: 0304: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/cmd.pla: 0305: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/cmd.pla: 0306: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/cmd.pla: 0307: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/cmd.pla: 0308: CPYMEX RTS +CPYMEX RTS +; vmsrc/apple/cmd.pla: 0309: end +; vmsrc/apple/cmd.pla: 0310: asm crout()#0 +_P002 ; crout()#0() +_A005 ; crout() +; vmsrc/apple/cmd.pla: 0311: LDA #$8D + LDA #$8D +; vmsrc/apple/cmd.pla: 0312: BNE ++ + BNE ++ +; vmsrc/apple/cmd.pla: 0313: end +; vmsrc/apple/cmd.pla: 0314: // +; vmsrc/apple/cmd.pla: 0315: // CHAR OUT +; vmsrc/apple/cmd.pla: 0316: // COUT(CHAR) +; vmsrc/apple/cmd.pla: 0317: // +; vmsrc/apple/cmd.pla: 0318: asm cout(c)#0 +_P003 ; cout(c)#0() +_A006 ; cout() +; vmsrc/apple/cmd.pla: 0319: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0320: BIT $BF98 + BIT $BF98 +; vmsrc/apple/cmd.pla: 0321: BMI + + BMI + +; vmsrc/apple/cmd.pla: 0322: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmd.pla: 0323: + ORA #$80 ++ ORA #$80 +; vmsrc/apple/cmd.pla: 0324: INX + INX +; vmsrc/apple/cmd.pla: 0325: ++ BIT ROMEN +++ BIT ROMEN +; vmsrc/apple/cmd.pla: 0326: JSR $FDED + JSR $FDED +; vmsrc/apple/cmd.pla: 0327: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0328: RTS + RTS +; vmsrc/apple/cmd.pla: 0329: end +; vmsrc/apple/cmd.pla: 0330: // +; vmsrc/apple/cmd.pla: 0331: // CHAR IN +; vmsrc/apple/cmd.pla: 0332: // RDKEY() +; vmsrc/apple/cmd.pla: 0333: // +; vmsrc/apple/cmd.pla: 0334: asm cin()#1 +_P008 ; cin()#1() +_A007 ; cin() +; vmsrc/apple/cmd.pla: 0335: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0336: JSR $FD0C + JSR $FD0C +; vmsrc/apple/cmd.pla: 0337: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0338: DEX + DEX +; vmsrc/apple/cmd.pla: 0339: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0340: AND #$7F + AND #$7F +; vmsrc/apple/cmd.pla: 0341: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0342: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmd.pla: 0343: RTS + RTS +; vmsrc/apple/cmd.pla: 0344: end +; vmsrc/apple/cmd.pla: 0345: // +; vmsrc/apple/cmd.pla: 0346: // PRINT STRING +; vmsrc/apple/cmd.pla: 0347: // PRSTR(STR) +; vmsrc/apple/cmd.pla: 0348: // +; vmsrc/apple/cmd.pla: 0349: asm prstr(s)#0 +_P004 ; prstr(s)#0() +_A008 ; prstr() +; vmsrc/apple/cmd.pla: 0350: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0351: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0352: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0353: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0354: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0355: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0356: BEQ ++ + BEQ ++ +; vmsrc/apple/cmd.pla: 0357: STA TMP + STA TMP +; vmsrc/apple/cmd.pla: 0358: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0359: - INY +- INY +; vmsrc/apple/cmd.pla: 0360: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0361: BIT $BF98 + BIT $BF98 +; vmsrc/apple/cmd.pla: 0362: BMI + + BMI + +; vmsrc/apple/cmd.pla: 0363: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmd.pla: 0364: + ORA #$80 ++ ORA #$80 +; vmsrc/apple/cmd.pla: 0365: JSR $FDED + JSR $FDED +; vmsrc/apple/cmd.pla: 0366: CPY TMP + CPY TMP +; vmsrc/apple/cmd.pla: 0367: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0368: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0369: ++ INX +++ INX +; vmsrc/apple/cmd.pla: 0370: RTS + RTS +; vmsrc/apple/cmd.pla: 0371: end +; vmsrc/apple/cmd.pla: 0372: // +; vmsrc/apple/cmd.pla: 0373: // PRINT WORD +; vmsrc/apple/cmd.pla: 0374: // +; vmsrc/apple/cmd.pla: 0375: asm prword(w)#0 +_P006 ; prword(w)#0() +_A009 ; prword() +; vmsrc/apple/cmd.pla: 0376: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0377: JSR + + JSR + +; vmsrc/apple/cmd.pla: 0378: DEX + DEX +; vmsrc/apple/cmd.pla: 0379: ; FALL THROUGH TO PRBYTE + ; FALL THROUGH TO PRBYTE +; vmsrc/apple/cmd.pla: 0380: end +; vmsrc/apple/cmd.pla: 0381: // +; vmsrc/apple/cmd.pla: 0382: // PRINT BYTE +; vmsrc/apple/cmd.pla: 0383: // +; vmsrc/apple/cmd.pla: 0384: asm prbyte(b)#0 +_P005 ; prbyte(b)#0() +_A010 ; prbyte() +; vmsrc/apple/cmd.pla: 0385: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0386: + STX ESP ++ STX ESP +; vmsrc/apple/cmd.pla: 0387: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0388: JSR $FDDA + JSR $FDDA +; vmsrc/apple/cmd.pla: 0389: LDX ESP + LDX ESP +; vmsrc/apple/cmd.pla: 0390: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0391: INX + INX +; vmsrc/apple/cmd.pla: 0392: RTS + RTS +; vmsrc/apple/cmd.pla: 0393: end +; vmsrc/apple/cmd.pla: 0394: // +; vmsrc/apple/cmd.pla: 0395: // READ STRING +; vmsrc/apple/cmd.pla: 0396: // STR = RDSTR(PROMPTCHAR) +; vmsrc/apple/cmd.pla: 0397: // +; vmsrc/apple/cmd.pla: 0398: asm rdstr(p)#1 +_P009 ; rdstr(p)#1() +_A011 ; rdstr() +; vmsrc/apple/cmd.pla: 0399: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0400: STA $33 + STA $33 +; vmsrc/apple/cmd.pla: 0401: STX ESP + STX ESP +; vmsrc/apple/cmd.pla: 0402: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmd.pla: 0403: JSR $FD6A + JSR $FD6A +; vmsrc/apple/cmd.pla: 0404: STX $01FF + STX $01FF +; vmsrc/apple/cmd.pla: 0405: - LDA $01FF,X +- LDA $01FF,X +; vmsrc/apple/cmd.pla: 0406: AND #$7F + AND #$7F +; vmsrc/apple/cmd.pla: 0407: STA $01FF,X + STA $01FF,X +; vmsrc/apple/cmd.pla: 0408: DEX + DEX +; vmsrc/apple/cmd.pla: 0409: BPL - + BPL - +; vmsrc/apple/cmd.pla: 0410: TXA + TXA +; vmsrc/apple/cmd.pla: 0411: LDX ESP + LDX ESP +; vmsrc/apple/cmd.pla: 0412: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0413: LDA #$01 + LDA #$01 +; vmsrc/apple/cmd.pla: 0414: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0415: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmd.pla: 0416: RTS + RTS +; vmsrc/apple/cmd.pla: 0417: end +; vmsrc/apple/cmd.pla: 0418: asm uword_isge(a,b)#1 +_P021 ; uword_isge(a,b)#1() +_A012 ; uword_isge() +; vmsrc/apple/cmd.pla: 0419: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0420: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmd.pla: 0421: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0422: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/cmd.pla: 0423: LDA #$FF + LDA #$FF +; vmsrc/apple/cmd.pla: 0424: ADC #$00 + ADC #$00 +; vmsrc/apple/cmd.pla: 0425: EOR #$FF + EOR #$FF +; vmsrc/apple/cmd.pla: 0426: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0427: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0428: INX + INX +; vmsrc/apple/cmd.pla: 0429: RTS + RTS +; vmsrc/apple/cmd.pla: 0430: end +; vmsrc/apple/cmd.pla: 0431: asm uword_isle(a,b)#1 +_P023 ; uword_isle(a,b)#1() +_A013 ; uword_isle() +; vmsrc/apple/cmd.pla: 0432: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0433: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmd.pla: 0434: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0435: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/cmd.pla: 0436: LDA #$FF + LDA #$FF +; vmsrc/apple/cmd.pla: 0437: ADC #$00 + ADC #$00 +; vmsrc/apple/cmd.pla: 0438: EOR #$FF + EOR #$FF +; vmsrc/apple/cmd.pla: 0439: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0440: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0441: INX + INX +; vmsrc/apple/cmd.pla: 0442: RTS + RTS +; vmsrc/apple/cmd.pla: 0443: end +; vmsrc/apple/cmd.pla: 0444: asm uword_isgt(a,b)#1 +_P020 ; uword_isgt(a,b)#1() +_A014 ; uword_isgt() +; vmsrc/apple/cmd.pla: 0445: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0446: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmd.pla: 0447: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0448: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/cmd.pla: 0449: LDA #$FF + LDA #$FF +; vmsrc/apple/cmd.pla: 0450: ADC #$00 + ADC #$00 +; vmsrc/apple/cmd.pla: 0451: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0452: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0453: INX + INX +; vmsrc/apple/cmd.pla: 0454: RTS + RTS +; vmsrc/apple/cmd.pla: 0455: end +; vmsrc/apple/cmd.pla: 0456: asm uword_islt(a,b)#1 +_P022 ; uword_islt(a,b)#1() +_A015 ; uword_islt() +; vmsrc/apple/cmd.pla: 0457: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0458: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmd.pla: 0459: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0460: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/cmd.pla: 0461: LDA #$FF + LDA #$FF +; vmsrc/apple/cmd.pla: 0462: ADC #$00 + ADC #$00 +; vmsrc/apple/cmd.pla: 0463: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0464: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0465: INX + INX +; vmsrc/apple/cmd.pla: 0466: RTS + RTS +; vmsrc/apple/cmd.pla: 0467: end +; vmsrc/apple/cmd.pla: 0468: asm divmod(a,b)#2 +_P025 ; divmod(a,b)#2() +_A016 ; divmod() +; vmsrc/apple/cmd.pla: 0469: JSR INTERP ; CALL INTERP + JSR INTERP ; CALL INTERP +; vmsrc/apple/cmd.pla: 0470: !BYTE $36, $5C ; DIVMOD, RET + !BYTE $36, $5C ; DIVMOD, RET +; vmsrc/apple/cmd.pla: 0471: end +; vmsrc/apple/cmd.pla: 0472: asm sext(a)#1 +_P024 ; sext(a)#1() +_A017 ; sext() +; vmsrc/apple/cmd.pla: 0473: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0474: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0475: BPL + + BPL + +; vmsrc/apple/cmd.pla: 0476: DEY + DEY +; vmsrc/apple/cmd.pla: 0477: + STY ESTKH,X ++ STY ESTKH,X +; vmsrc/apple/cmd.pla: 0478: RTS + RTS +; vmsrc/apple/cmd.pla: 0479: end +; vmsrc/apple/cmd.pla: 0480: // +; vmsrc/apple/cmd.pla: 0481: // Utility routines. +; vmsrc/apple/cmd.pla: 0482: // +; vmsrc/apple/cmd.pla: 0483: // A DCI string is one that has the high bit set for every character except the last. +; vmsrc/apple/cmd.pla: 0484: // More efficient than C or Pascal strings. +; vmsrc/apple/cmd.pla: 0485: // +; vmsrc/apple/cmd.pla: 0486: //def dcitos(dci, str) +; vmsrc/apple/cmd.pla: 0487: // byte len, c +; vmsrc/apple/cmd.pla: 0488: // len = 0 +; vmsrc/apple/cmd.pla: 0489: // repeat +; vmsrc/apple/cmd.pla: 0490: // c = (dci).[len] +; vmsrc/apple/cmd.pla: 0491: // len = len + 1 +; vmsrc/apple/cmd.pla: 0492: // (str).[len] = c & $7F +; vmsrc/apple/cmd.pla: 0493: // until !(c & $80) +; vmsrc/apple/cmd.pla: 0494: // ^str = len +; vmsrc/apple/cmd.pla: 0495: // return len +; vmsrc/apple/cmd.pla: 0496: //end +; vmsrc/apple/cmd.pla: 0497: asm dcitos(dci, str)#1 +_A018 ; dcitos() +; vmsrc/apple/cmd.pla: 0498: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0499: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0500: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0501: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0502: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0503: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0504: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0505: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0506: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0507: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0508: CMP #$80 + CMP #$80 +; vmsrc/apple/cmd.pla: 0509: AND #$7F + AND #$7F +; vmsrc/apple/cmd.pla: 0510: INY + INY +; vmsrc/apple/cmd.pla: 0511: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0512: BCS - + BCS - +; vmsrc/apple/cmd.pla: 0513: TYA + TYA +; vmsrc/apple/cmd.pla: 0514: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0515: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0516: INX + INX +; vmsrc/apple/cmd.pla: 0517: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0518: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmd.pla: 0519: RTS + RTS +; vmsrc/apple/cmd.pla: 0520: end +; vmsrc/apple/cmd.pla: 0521: //def stodci(str, dci) +; vmsrc/apple/cmd.pla: 0522: // byte len, c +; vmsrc/apple/cmd.pla: 0523: // len = ^str +; vmsrc/apple/cmd.pla: 0524: // if len == 0 +; vmsrc/apple/cmd.pla: 0525: // return +; vmsrc/apple/cmd.pla: 0526: // fin +; vmsrc/apple/cmd.pla: 0527: // c = toupper((str).[len]) & $7F +; vmsrc/apple/cmd.pla: 0528: // len = len - 1 +; vmsrc/apple/cmd.pla: 0529: // (dci).[len] = c +; vmsrc/apple/cmd.pla: 0530: // while len +; vmsrc/apple/cmd.pla: 0531: // c = toupper((str).[len]) | $80 +; vmsrc/apple/cmd.pla: 0532: // len = len - 1 +; vmsrc/apple/cmd.pla: 0533: // (dci).[len] = c +; vmsrc/apple/cmd.pla: 0534: // loop +; vmsrc/apple/cmd.pla: 0535: // return ^str +; vmsrc/apple/cmd.pla: 0536: //end +; vmsrc/apple/cmd.pla: 0537: asm stodci(str,dci)#1 +_A019 ; stodci() +; vmsrc/apple/cmd.pla: 0538: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0539: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0540: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0541: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0542: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0543: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0544: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0545: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0546: INX + INX +; vmsrc/apple/cmd.pla: 0547: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0548: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0549: BEQ ++ + BEQ ++ +; vmsrc/apple/cmd.pla: 0550: TAY + TAY +; vmsrc/apple/cmd.pla: 0551: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0552: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmd.pla: 0553: BNE + + BNE + +; vmsrc/apple/cmd.pla: 0554: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0555: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmd.pla: 0556: ORA #$80 + ORA #$80 +; vmsrc/apple/cmd.pla: 0557: + DEY ++ DEY +; vmsrc/apple/cmd.pla: 0558: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0559: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0560: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0561: ++ STA ESTKL,X +++ STA ESTKL,X +; vmsrc/apple/cmd.pla: 0562: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmd.pla: 0563: RTS + RTS +; vmsrc/apple/cmd.pla: 0564: end +; vmsrc/apple/cmd.pla: 0565: asm toupper(c)#1 +_P010 ; toupper(c)#1() +_A020 ; toupper() +; vmsrc/apple/cmd.pla: 0566: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0567: TOUPR AND #$7F +TOUPR AND #$7F +; vmsrc/apple/cmd.pla: 0568: CMP #'a' + CMP #'a' +; vmsrc/apple/cmd.pla: 0569: BCC + + BCC + +; vmsrc/apple/cmd.pla: 0570: CMP #'z'+1 + CMP #'z'+1 +; vmsrc/apple/cmd.pla: 0571: BCS + + BCS + +; vmsrc/apple/cmd.pla: 0572: SBC #$1F + SBC #$1F +; vmsrc/apple/cmd.pla: 0573: + STA ESTKL,X ++ STA ESTKL,X +; vmsrc/apple/cmd.pla: 0574: RTS + RTS +; vmsrc/apple/cmd.pla: 0575: end +; vmsrc/apple/cmd.pla: 0576: // +; vmsrc/apple/cmd.pla: 0577: // Lookup routines. +; vmsrc/apple/cmd.pla: 0578: // +; vmsrc/apple/cmd.pla: 0579: //def lookuptbl(dci, tbl) +; vmsrc/apple/cmd.pla: 0580: // word match +; vmsrc/apple/cmd.pla: 0581: // while ^tbl +; vmsrc/apple/cmd.pla: 0582: // match = dci +; vmsrc/apple/cmd.pla: 0583: // while ^tbl == ^match +; vmsrc/apple/cmd.pla: 0584: // if !(^tbl & $80) +; vmsrc/apple/cmd.pla: 0585: // return (tbl):1 +; vmsrc/apple/cmd.pla: 0586: // fin +; vmsrc/apple/cmd.pla: 0587: // tbl = tbl + 1 +; vmsrc/apple/cmd.pla: 0588: // match = match + 1 +; vmsrc/apple/cmd.pla: 0589: // loop +; vmsrc/apple/cmd.pla: 0590: // while (^tbl & $80) +; vmsrc/apple/cmd.pla: 0591: // tbl = tbl + 1 +; vmsrc/apple/cmd.pla: 0592: // loop +; vmsrc/apple/cmd.pla: 0593: // tbl = tbl + 3 +; vmsrc/apple/cmd.pla: 0594: // loop +; vmsrc/apple/cmd.pla: 0595: // return 0 +; vmsrc/apple/cmd.pla: 0596: asm lookuptbl(dci, tbl)#1 +_A021 ; lookuptbl() +; vmsrc/apple/cmd.pla: 0597: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0598: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0599: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0600: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0601: INX + INX +; vmsrc/apple/cmd.pla: 0602: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0603: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0604: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0605: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0606: -- LDY #$00 +-- LDY #$00 +; vmsrc/apple/cmd.pla: 0607: - LDA (DST),Y +- LDA (DST),Y +; vmsrc/apple/cmd.pla: 0608: BEQ + + BEQ + +; vmsrc/apple/cmd.pla: 0609: CMP (SRC),Y + CMP (SRC),Y +; vmsrc/apple/cmd.pla: 0610: BNE ++ + BNE ++ +; vmsrc/apple/cmd.pla: 0611: INY + INY +; vmsrc/apple/cmd.pla: 0612: ASL + ASL +; vmsrc/apple/cmd.pla: 0613: BCS - + BCS - +; vmsrc/apple/cmd.pla: 0614: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmd.pla: 0615: STA ESTKL,X ; MATCH + STA ESTKL,X ; MATCH +; vmsrc/apple/cmd.pla: 0616: INY + INY +; vmsrc/apple/cmd.pla: 0617: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmd.pla: 0618: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0619: RTS + RTS +; vmsrc/apple/cmd.pla: 0620: + STA ESTKL,X ; NO MATCH ++ STA ESTKL,X ; NO MATCH +; vmsrc/apple/cmd.pla: 0621: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0622: RTS + RTS +; vmsrc/apple/cmd.pla: 0623: ++ +++ +; vmsrc/apple/cmd.pla: 0624: - LDA (DST),Y ; NEXT ENTRY +- LDA (DST),Y ; NEXT ENTRY +; vmsrc/apple/cmd.pla: 0625: BPL + + BPL + +; vmsrc/apple/cmd.pla: 0626: INY + INY +; vmsrc/apple/cmd.pla: 0627: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0628: + TYA ++ TYA +; vmsrc/apple/cmd.pla: 0629: CLC + CLC +; vmsrc/apple/cmd.pla: 0630: ADC #$03 + ADC #$03 +; vmsrc/apple/cmd.pla: 0631: ADC DSTL + ADC DSTL +; vmsrc/apple/cmd.pla: 0632: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0633: BCC -- + BCC -- +; vmsrc/apple/cmd.pla: 0634: INC DSTH + INC DSTH +; vmsrc/apple/cmd.pla: 0635: BNE -- + BNE -- +; vmsrc/apple/cmd.pla: 0636: end +; vmsrc/apple/cmd.pla: 0637: // def lookupidx(esd, index) +; vmsrc/apple/cmd.pla: 0638: // word sym +; vmsrc/apple/cmd.pla: 0639: // while ^esd +; vmsrc/apple/cmd.pla: 0640: // sym = esd +; vmsrc/apple/cmd.pla: 0641: // esd = sym + dcitos(sym, @str) +; vmsrc/apple/cmd.pla: 0642: // if esd->0 & $10 and esd->1 == index +; vmsrc/apple/cmd.pla: 0643: // return sym +; vmsrc/apple/cmd.pla: 0644: // fin +; vmsrc/apple/cmd.pla: 0645: // esd = esd + 3 +; vmsrc/apple/cmd.pla: 0646: // loop +; vmsrc/apple/cmd.pla: 0647: //end +; vmsrc/apple/cmd.pla: 0648: asm lookupidx(esd, index)#1 +_A022 ; lookupidx() +; vmsrc/apple/cmd.pla: 0649: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0650: STA TMPL + STA TMPL +; vmsrc/apple/cmd.pla: 0651: INX + INX +; vmsrc/apple/cmd.pla: 0652: --- LDA ESTKH,X +--- LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0653: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0654: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0655: -- STA SRCL +-- STA SRCL +; vmsrc/apple/cmd.pla: 0656: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0657: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0658: BPL + + BPL + +; vmsrc/apple/cmd.pla: 0659: INY + INY +; vmsrc/apple/cmd.pla: 0660: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0661: + BEQ ++ ; END OF ESD ++ BEQ ++ ; END OF ESD +; vmsrc/apple/cmd.pla: 0662: INY + INY +; vmsrc/apple/cmd.pla: 0663: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0664: INY + INY +; vmsrc/apple/cmd.pla: 0665: AND #$10 ; EXTERN FLAG? + AND #$10 ; EXTERN FLAG? +; vmsrc/apple/cmd.pla: 0666: BEQ + + BEQ + +; vmsrc/apple/cmd.pla: 0667: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0668: CMP TMPL + CMP TMPL +; vmsrc/apple/cmd.pla: 0669: BEQ +++ ; MATCH + BEQ +++ ; MATCH +; vmsrc/apple/cmd.pla: 0670: + INY ++ INY +; vmsrc/apple/cmd.pla: 0671: TYA + TYA +; vmsrc/apple/cmd.pla: 0672: SEC + SEC +; vmsrc/apple/cmd.pla: 0673: ADC SRCL + ADC SRCL +; vmsrc/apple/cmd.pla: 0674: STA ESTKL,X ; SYM PTRL + STA ESTKL,X ; SYM PTRL +; vmsrc/apple/cmd.pla: 0675: BCC -- + BCC -- +; vmsrc/apple/cmd.pla: 0676: INC ESTKH,X ; SYM PTRH + INC ESTKH,X ; SYM PTRH +; vmsrc/apple/cmd.pla: 0677: BNE --- + BNE --- +; vmsrc/apple/cmd.pla: 0678: ++ STA ESTKL,X ; END OF ESD +++ STA ESTKL,X ; END OF ESD +; vmsrc/apple/cmd.pla: 0679: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0680: +++ RTS ++++ RTS +; vmsrc/apple/cmd.pla: 0681: end +; vmsrc/apple/cmd.pla: 0682: //def lookupdef(addr, deftbl)#1 +; vmsrc/apple/cmd.pla: 0683: // while deftbl->0 == $20 +; vmsrc/apple/cmd.pla: 0684: // if deftbl=>3 == addr +; vmsrc/apple/cmd.pla: 0685: // return deftbl +; vmsrc/apple/cmd.pla: 0686: // fin +; vmsrc/apple/cmd.pla: 0687: // deftbl = deftbl + 5 +; vmsrc/apple/cmd.pla: 0688: // loop +; vmsrc/apple/cmd.pla: 0689: // return 0 +; vmsrc/apple/cmd.pla: 0690: //end +; vmsrc/apple/cmd.pla: 0691: asm lookupdef(addr, deftbl)#1 +_A023 ; lookupdef() +; vmsrc/apple/cmd.pla: 0692: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0693: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0694: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0695: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0696: INX + INX +; vmsrc/apple/cmd.pla: 0697: - LDY #$00 +- LDY #$00 +; vmsrc/apple/cmd.pla: 0698: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0699: CMP #$20 ; JSR OPCODE? + CMP #$20 ; JSR OPCODE? +; vmsrc/apple/cmd.pla: 0700: BNE ++ + BNE ++ +; vmsrc/apple/cmd.pla: 0701: LDY #$03 + LDY #$03 +; vmsrc/apple/cmd.pla: 0702: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0703: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmd.pla: 0704: BNE + + BNE + +; vmsrc/apple/cmd.pla: 0705: INY + INY +; vmsrc/apple/cmd.pla: 0706: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0707: CMP ESTKH,X + CMP ESTKH,X +; vmsrc/apple/cmd.pla: 0708: BNE + + BNE + +; vmsrc/apple/cmd.pla: 0709: LDA SRCL ; MATCH + LDA SRCL ; MATCH +; vmsrc/apple/cmd.pla: 0710: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0711: LDA SRCH + LDA SRCH +; vmsrc/apple/cmd.pla: 0712: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0713: RTS + RTS +; vmsrc/apple/cmd.pla: 0714: + LDA #$05 ++ LDA #$05 +; vmsrc/apple/cmd.pla: 0715: CLC + CLC +; vmsrc/apple/cmd.pla: 0716: ADC SRCL + ADC SRCL +; vmsrc/apple/cmd.pla: 0717: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0718: BCC - + BCC - +; vmsrc/apple/cmd.pla: 0719: INC SRCH + INC SRCH +; vmsrc/apple/cmd.pla: 0720: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0721: ++ STY ESTKL,X +++ STY ESTKL,X +; vmsrc/apple/cmd.pla: 0722: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmd.pla: 0723: RTS + RTS +; vmsrc/apple/cmd.pla: 0724: end +; vmsrc/apple/cmd.pla: 0725: // +; vmsrc/apple/cmd.pla: 0726: // Reloc internal data +; vmsrc/apple/cmd.pla: 0727: // +; vmsrc/apple/cmd.pla: 0728: //def reloc(modfix, modofst, bytecode, rld)#3 +; vmsrc/apple/cmd.pla: 0729: // word addr, fixup +; vmsrc/apple/cmd.pla: 0730: // while ^rld +; vmsrc/apple/cmd.pla: 0731: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/cmd.pla: 0732: // return rld, addr, fixup +; vmsrc/apple/cmd.pla: 0733: // fin +; vmsrc/apple/cmd.pla: 0734: // addr = rld=>1 + modfix +; vmsrc/apple/cmd.pla: 0735: // fixup = *addr + modofst +; vmsrc/apple/cmd.pla: 0736: // if uword_isge(fixup, bytecode) // Bytecode address. +; vmsrc/apple/cmd.pla: 0737: // return rld, addr, fixup +; vmsrc/apple/cmd.pla: 0738: // fin +; vmsrc/apple/cmd.pla: 0739: // *addr = fixup +; vmsrc/apple/cmd.pla: 0740: // rld = rld + 4 +; vmsrc/apple/cmd.pla: 0741: // loop +; vmsrc/apple/cmd.pla: 0742: // return rld, addr, fixup +; vmsrc/apple/cmd.pla: 0743: //end +; vmsrc/apple/cmd.pla: 0744: asm reloc(modfix, modofst, bytecode, rld)#3 +_A024 ; reloc() +; vmsrc/apple/cmd.pla: 0745: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmd.pla: 0746: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0747: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmd.pla: 0748: STA SRCH + STA SRCH +; vmsrc/apple/cmd.pla: 0749: LDY #$00 + LDY #$00 +; vmsrc/apple/cmd.pla: 0750: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0751: BEQ RLDEX ; END OF RLD + BEQ RLDEX ; END OF RLD +; vmsrc/apple/cmd.pla: 0752: PHA + PHA +; vmsrc/apple/cmd.pla: 0753: INY + INY +; vmsrc/apple/cmd.pla: 0754: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0755: INY + INY +; vmsrc/apple/cmd.pla: 0756: CLC + CLC +; vmsrc/apple/cmd.pla: 0757: ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX +; vmsrc/apple/cmd.pla: 0758: STA DSTL + STA DSTL +; vmsrc/apple/cmd.pla: 0759: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmd.pla: 0760: ADC ESTKH+3,X + ADC ESTKH+3,X +; vmsrc/apple/cmd.pla: 0761: STA DSTH + STA DSTH +; vmsrc/apple/cmd.pla: 0762: PLA + PLA +; vmsrc/apple/cmd.pla: 0763: AND #$10 ; EXTERN REF - EXIT + AND #$10 ; EXTERN REF - EXIT +; vmsrc/apple/cmd.pla: 0764: BNE RLDEX + BNE RLDEX +; vmsrc/apple/cmd.pla: 0765: TAY ; FIXUP=*ADDR+MODOFST + TAY ; FIXUP=*ADDR+MODOFST +; vmsrc/apple/cmd.pla: 0766: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmd.pla: 0767: INY + INY +; vmsrc/apple/cmd.pla: 0768: CLC + CLC +; vmsrc/apple/cmd.pla: 0769: ADC ESTKL+2,X + ADC ESTKL+2,X +; vmsrc/apple/cmd.pla: 0770: STA TMPL + STA TMPL +; vmsrc/apple/cmd.pla: 0771: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmd.pla: 0772: ADC ESTKH+2,X + ADC ESTKH+2,X +; vmsrc/apple/cmd.pla: 0773: CMP ESTKH+1,X ; FIXUP >= BYTECODE? + CMP ESTKH+1,X ; FIXUP >= BYTECODE? +; vmsrc/apple/cmd.pla: 0774: BCC + + BCC + +; vmsrc/apple/cmd.pla: 0775: STA TMPH + STA TMPH +; vmsrc/apple/cmd.pla: 0776: BNE RLDEX ; YEP, EXIT + BNE RLDEX ; YEP, EXIT +; vmsrc/apple/cmd.pla: 0777: LDA TMPL + LDA TMPL +; vmsrc/apple/cmd.pla: 0778: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmd.pla: 0779: BCS RLDEX ; YEP, EXIT + BCS RLDEX ; YEP, EXIT +; vmsrc/apple/cmd.pla: 0780: LDA TMPH + LDA TMPH +; vmsrc/apple/cmd.pla: 0781: + STA (DST),Y ; *ADDR=FIXUP ++ STA (DST),Y ; *ADDR=FIXUP +; vmsrc/apple/cmd.pla: 0782: DEY + DEY +; vmsrc/apple/cmd.pla: 0783: LDA TMPL + LDA TMPL +; vmsrc/apple/cmd.pla: 0784: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmd.pla: 0785: LDA SRCL ; NEXT ENTRY + LDA SRCL ; NEXT ENTRY +; vmsrc/apple/cmd.pla: 0786: ; CLC +; CLC +; vmsrc/apple/cmd.pla: 0787: ADC #$04 + ADC #$04 +; vmsrc/apple/cmd.pla: 0788: STA SRCL + STA SRCL +; vmsrc/apple/cmd.pla: 0789: BCC - + BCC - +; vmsrc/apple/cmd.pla: 0790: INC SRCH + INC SRCH +; vmsrc/apple/cmd.pla: 0791: BNE - + BNE - +; vmsrc/apple/cmd.pla: 0792: RLDEX INX +RLDEX INX +; vmsrc/apple/cmd.pla: 0793: LDA TMPL + LDA TMPL +; vmsrc/apple/cmd.pla: 0794: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmd.pla: 0795: LDA TMPH + LDA TMPH +; vmsrc/apple/cmd.pla: 0796: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmd.pla: 0797: LDA DSTL + LDA DSTL +; vmsrc/apple/cmd.pla: 0798: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmd.pla: 0799: LDA DSTH + LDA DSTH +; vmsrc/apple/cmd.pla: 0800: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmd.pla: 0801: LDA SRCL + LDA SRCL +; vmsrc/apple/cmd.pla: 0802: STA ESTKL+2,X + STA ESTKL+2,X +; vmsrc/apple/cmd.pla: 0803: LDA SRCH + LDA SRCH +; vmsrc/apple/cmd.pla: 0804: STA ESTKH+2,X + STA ESTKH+2,X +; vmsrc/apple/cmd.pla: 0805: RTS + RTS +; vmsrc/apple/cmd.pla: 0806: end +; vmsrc/apple/cmd.pla: 0807: // +; vmsrc/apple/cmd.pla: 0808: // Cheap and dirty print integer +; vmsrc/apple/cmd.pla: 0809: // +; vmsrc/apple/cmd.pla: 0810: def print(i)#0 + ; i -> [0] +_P007 ; print(i)#0() +_C000 ; print() + JSR INTERP +; vmsrc/apple/cmd.pla: 0811: if i < 0; cout('-'); i = -i; fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _A006 +_F061 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B001 +_B002 +; vmsrc/apple/cmd.pla: 0812: if i >= 10; print(i / 10); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C000 +_F062 !WORD _C000 +_B003 +_B004 +; vmsrc/apple/cmd.pla: 0813: cout(i % 10 + '0') +; vmsrc/apple/cmd.pla: 0814: end + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $54 ; CALL _A006 +_F063 !WORD _A006 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmd.pla: 0815: // +; vmsrc/apple/cmd.pla: 0816: // ProDOS routines +; vmsrc/apple/cmd.pla: 0817: // +; vmsrc/apple/cmd.pla: 0818: def pfxop(path, op)#1 + ; path -> [0] + ; op -> [2] +_C001 ; pfxop() + JSR INTERP +; vmsrc/apple/cmd.pla: 0819: byte params[3] + ; params -> [4] +; vmsrc/apple/cmd.pla: 0820: +; vmsrc/apple/cmd.pla: 0821: params.0 = 1 + !BYTE $58,$07,$02 ; ENTER 7,2 +; vmsrc/apple/cmd.pla: 0822: params:1 = path +; vmsrc/apple/cmd.pla: 0823: perr = syscall(op, @params) +; vmsrc/apple/cmd.pla: 0824: return path + !BYTE $02 ; CN 1 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A000 +_F064 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F065 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$07 ; LEAVE 7 +; vmsrc/apple/cmd.pla: 0825: end +; vmsrc/apple/cmd.pla: 0826: def open(path)#1 + ; path -> [0] +_P027 ; open(path)#1() +_C002 ; open() + JSR INTERP +; vmsrc/apple/cmd.pla: 0827: byte params[6] + ; params -> [2] +; vmsrc/apple/cmd.pla: 0828: +; vmsrc/apple/cmd.pla: 0829: params.0 = 3 + !BYTE $58,$08,$01 ; ENTER 8,1 +; vmsrc/apple/cmd.pla: 0830: params:1 = path +; vmsrc/apple/cmd.pla: 0831: params:3 = iobuffer +; vmsrc/apple/cmd.pla: 0832: params.5 = 0 +; vmsrc/apple/cmd.pla: 0833: perr = syscall($C8, @params) +; vmsrc/apple/cmd.pla: 0834: return params.5 + !BYTE $06 ; CN 3 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $76,$05 ; SLW [5] + !BYTE $00 ; CN 0 + !BYTE $74,$07 ; SLB [7] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F066 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F067 !WORD _D034+0 + !BYTE $64,$07 ; LLB [7] + !BYTE $5A,$08 ; LEAVE 8 +; vmsrc/apple/cmd.pla: 0835: end +; vmsrc/apple/cmd.pla: 0836: def close(refnum)#1 + ; refnum -> [0] +_P028 ; close(refnum)#1() +_C003 ; close() + JSR INTERP +; vmsrc/apple/cmd.pla: 0837: byte params[2] + ; params -> [2] +; vmsrc/apple/cmd.pla: 0838: +; vmsrc/apple/cmd.pla: 0839: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/cmd.pla: 0840: params.1 = refnum +; vmsrc/apple/cmd.pla: 0841: perr = syscall($CC, @params) +; vmsrc/apple/cmd.pla: 0842: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F068 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F069 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmd.pla: 0843: end +; vmsrc/apple/cmd.pla: 0844: def read(refnum, buff, len)#1 + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_P029 ; read(refnum, buff, len)#1() +_C004 ; read() + JSR INTERP +; vmsrc/apple/cmd.pla: 0845: byte params[8] + ; params -> [6] +; vmsrc/apple/cmd.pla: 0846: +; vmsrc/apple/cmd.pla: 0847: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; vmsrc/apple/cmd.pla: 0848: params.1 = refnum +; vmsrc/apple/cmd.pla: 0849: params:2 = buff +; vmsrc/apple/cmd.pla: 0850: params:4 = len +; vmsrc/apple/cmd.pla: 0851: params:6 = 0 +; vmsrc/apple/cmd.pla: 0852: perr = syscall($CA, @params) +; vmsrc/apple/cmd.pla: 0853: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F070 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F071 !WORD _D034+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/cmd.pla: 0854: end +; vmsrc/apple/cmd.pla: 0855: def write(refnum, buf, len)#1 + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_P030 ; write(refnum, buf, len)#1() +_C005 ; write() + JSR INTERP +; vmsrc/apple/cmd.pla: 0856: byte params[8] + ; params -> [6] +; vmsrc/apple/cmd.pla: 0857: +; vmsrc/apple/cmd.pla: 0858: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; vmsrc/apple/cmd.pla: 0859: params.1 = refnum +; vmsrc/apple/cmd.pla: 0860: params:2 = buf +; vmsrc/apple/cmd.pla: 0861: params:4 = len +; vmsrc/apple/cmd.pla: 0862: params:6 = 0 +; vmsrc/apple/cmd.pla: 0863: perr = syscall($CB, @params) +; vmsrc/apple/cmd.pla: 0864: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CB ; CB 203 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F072 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F073 !WORD _D034+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/cmd.pla: 0865: end +; vmsrc/apple/cmd.pla: 0866: // +; vmsrc/apple/cmd.pla: 0867: // Heap routines. +; vmsrc/apple/cmd.pla: 0868: // +; vmsrc/apple/cmd.pla: 0869: def availheap()#1 +_P015 ; availheap()#1() +_C006 ; availheap() + JSR INTERP +; vmsrc/apple/cmd.pla: 0870: byte fp + ; fp -> [0] +; vmsrc/apple/cmd.pla: 0871: return @fp - heap + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D071+0 +_F074 !WORD _D071+0 + !BYTE $84 ; SUB + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/cmd.pla: 0872: end +; vmsrc/apple/cmd.pla: 0873: def allocheap(size)#1 + ; size -> [0] +_P012 ; allocheap(size)#1() +_C007 ; allocheap() + JSR INTERP +; vmsrc/apple/cmd.pla: 0874: word oldheap, addr + ; oldheap -> [2] + ; addr -> [4] +; vmsrc/apple/cmd.pla: 0875: oldheap = heap + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/cmd.pla: 0876: addr = heap +; vmsrc/apple/cmd.pla: 0877: heap = heap + size +; vmsrc/apple/cmd.pla: 0878: if systemflags & reshgr1 +; vmsrc/apple/cmd.pla: 0879: if uword_islt(addr, $4000) and uword_isgt(heap, $2000) +; vmsrc/apple/cmd.pla: 0880: addr = $4000 +; vmsrc/apple/cmd.pla: 0881: heap = addr + size +; vmsrc/apple/cmd.pla: 0882: fin + !BYTE $6A ; LAW _D071+0 +_F075 !WORD _D071+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D071+0 +_F076 !WORD _D071+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $6A ; LAW _D071+0 +_F077 !WORD _D071+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F078 !WORD _D071+0 + !BYTE $6A ; LAW _D070+0 +_F079 !WORD _D070+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A015 +_F080 !WORD _A015 + !BYTE $AC ; BRAND _B007 + !WORD _B007-* + !BYTE $6A ; LAW _D071+0 +_F081 !WORD _D071+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _A014 +_F082 !WORD _A014 +_B007 + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $6E,$04 ; DLW [4] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F083 !WORD _D071+0 +_B008 +_B009 +; vmsrc/apple/cmd.pla: 0883: fin +_B005 +_B006 +; vmsrc/apple/cmd.pla: 0884: if systemflags & reshgr2 +; vmsrc/apple/cmd.pla: 0885: if uword_islt(addr, $6000) and uword_isgt(heap, $4000) +; vmsrc/apple/cmd.pla: 0886: addr = $6000 +; vmsrc/apple/cmd.pla: 0887: heap = addr + size +; vmsrc/apple/cmd.pla: 0888: fin + !BYTE $6A ; LAW _D070+0 +_F084 !WORD _D070+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $54 ; CALL _A015 +_F085 !WORD _A015 + !BYTE $AC ; BRAND _B012 + !WORD _B012-* + !BYTE $6A ; LAW _D071+0 +_F086 !WORD _D071+0 + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A014 +_F087 !WORD _A014 +_B012 + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $6E,$04 ; DLW [4] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F088 !WORD _D071+0 +_B013 +_B014 +; vmsrc/apple/cmd.pla: 0889: fin +_B010 +_B011 +; vmsrc/apple/cmd.pla: 0890: if uword_isge(heap, @addr) +; vmsrc/apple/cmd.pla: 0891: heap = oldheap +; vmsrc/apple/cmd.pla: 0892: return 0 + !BYTE $6A ; LAW _D071+0 +_F089 !WORD _D071+0 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A012 +_F090 !WORD _A012 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D071+0 +_F091 !WORD _D071+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/cmd.pla: 0893: fin +_B015 +_B016 +; vmsrc/apple/cmd.pla: 0894: return addr + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/cmd.pla: 0895: end +; vmsrc/apple/cmd.pla: 0896: def allocalignheap(size, pow2, freeaddr) + ; size -> [0] + ; pow2 -> [2] + ; freeaddr -> [4] +_P013 ; allocalignheap(size, pow2, freeaddr)() +_C008 ; allocalignheap() + JSR INTERP +; vmsrc/apple/cmd.pla: 0897: word align, addr + ; align -> [6] + ; addr -> [8] +; vmsrc/apple/cmd.pla: 0898: if freeaddr + !BYTE $58,$0A,$03 ; ENTER 10,3 +; vmsrc/apple/cmd.pla: 0899: *freeaddr = heap +; vmsrc/apple/cmd.pla: 0900: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $6A ; LAW _D071+0 +_F092 !WORD _D071+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B017 +_B018 +; vmsrc/apple/cmd.pla: 0901: align = (1 << pow2) - 1 +; vmsrc/apple/cmd.pla: 0902: addr = (heap | align) + 1 +; vmsrc/apple/cmd.pla: 0903: heap = addr + size +; vmsrc/apple/cmd.pla: 0904: if uword_isge(heap, @addr) +; vmsrc/apple/cmd.pla: 0905: return 0 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $9A ; SHL + !BYTE $8E ; DECR + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D071+0 +_F093 !WORD _D071+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $96 ; OR + !BYTE $8C ; INCR + !BYTE $6E,$08 ; DLW [8] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D071+0 +_F094 !WORD _D071+0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A012 +_F095 !WORD _A012 + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/cmd.pla: 0906: fin +_B019 +_B020 +; vmsrc/apple/cmd.pla: 0907: return addr + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/cmd.pla: 0908: end +; vmsrc/apple/cmd.pla: 0909: def markheap()#1 +_P011 ; markheap()#1() +_C009 ; markheap() + JSR INTERP +; vmsrc/apple/cmd.pla: 0910: return heap + !BYTE $6A ; LAW _D071+0 +_F096 !WORD _D071+0 + !BYTE $5C ; RET +; vmsrc/apple/cmd.pla: 0911: end +; vmsrc/apple/cmd.pla: 0912: def releaseheap(newheap)#1 + ; newheap -> [0] +_P014 ; releaseheap(newheap)#1() +_C010 ; releaseheap() + JSR INTERP +; vmsrc/apple/cmd.pla: 0913: heap = newheap + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/cmd.pla: 0914: return @newheap - heap + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D071+0 +_F097 !WORD _D071+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D071+0 +_F098 !WORD _D071+0 + !BYTE $84 ; SUB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmd.pla: 0915: end +; vmsrc/apple/cmd.pla: 0916: // +; vmsrc/apple/cmd.pla: 0917: // Symbol table routines. +; vmsrc/apple/cmd.pla: 0918: // +; vmsrc/apple/cmd.pla: 0919: def addsym(sym, addr)#0 + ; sym -> [0] + ; addr -> [2] +_C011 ; addsym() + JSR INTERP +; vmsrc/apple/cmd.pla: 0920: while ^sym & $80 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B023 + !WORD _B023-* +_B021 +; vmsrc/apple/cmd.pla: 0921: ^lastsym = ^sym +; vmsrc/apple/cmd.pla: 0922: lastsym++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D072+0 +_F099 !WORD _D072+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D072+0 +_F100 !WORD _D072+0 + !BYTE $8C ; INCR +; vmsrc/apple/cmd.pla: 0923: sym++ + !BYTE $7A ; SAW _D072+0 +_F101 !WORD _D072+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; vmsrc/apple/cmd.pla: 0924: loop + !BYTE $76,$00 ; SLW [0] +_B023 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B021 + !WORD _B021-* +_B022 +; vmsrc/apple/cmd.pla: 0925: lastsym->0 = ^sym +; vmsrc/apple/cmd.pla: 0926: lastsym=>1 = addr +; vmsrc/apple/cmd.pla: 0927: lastsym = lastsym + 3 +; vmsrc/apple/cmd.pla: 0928: ^lastsym = 0 +; vmsrc/apple/cmd.pla: 0929: end + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D072+0 +_F102 !WORD _D072+0 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D072+0 +_F103 !WORD _D072+0 + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $6A ; LAW _D072+0 +_F104 !WORD _D072+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D072+0 +_F105 !WORD _D072+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D072+0 +_F106 !WORD _D072+0 + !BYTE $70 ; SB + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmd.pla: 0930: // +; vmsrc/apple/cmd.pla: 0931: // String routines. +; vmsrc/apple/cmd.pla: 0932: // +; vmsrc/apple/cmd.pla: 0933: def strcpy(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P018 ; strcpy(dst, src)#1() +_C012 ; strcpy() + JSR INTERP +; vmsrc/apple/cmd.pla: 0934: memcpy(dst+1, src+1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/cmd.pla: 0935: ^dst = ^src +; vmsrc/apple/cmd.pla: 0936: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F107 !WORD _A004 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmd.pla: 0937: end +; vmsrc/apple/cmd.pla: 0938: def strcat(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P019 ; strcat(dst, src)#1() +_C013 ; strcat() + JSR INTERP +; vmsrc/apple/cmd.pla: 0939: memcpy(dst + ^dst + 1, src + 1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/cmd.pla: 0940: ^dst = ^dst + ^src +; vmsrc/apple/cmd.pla: 0941: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F108 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmd.pla: 0942: end +; vmsrc/apple/cmd.pla: 0943: // +; vmsrc/apple/cmd.pla: 0944: // Module routines. +; vmsrc/apple/cmd.pla: 0945: // +; vmsrc/apple/cmd.pla: 0946: def lookupextern(esd, index)#1 + ; esd -> [0] + ; index -> [2] +_C014 ; lookupextern() + JSR INTERP +; vmsrc/apple/cmd.pla: 0947: word sym, addr + ; sym -> [4] + ; addr -> [6] +; vmsrc/apple/cmd.pla: 0948: byte str[33] + ; str -> [8] +; vmsrc/apple/cmd.pla: 0949: sym = lookupidx(esd, index) + !BYTE $58,$29,$02 ; ENTER 41,2 +; vmsrc/apple/cmd.pla: 0950: if sym +; vmsrc/apple/cmd.pla: 0951: addr = lookuptbl(sym, symtbl) +; vmsrc/apple/cmd.pla: 0952: if !addr +; vmsrc/apple/cmd.pla: 0953: perr = $81 +; vmsrc/apple/cmd.pla: 0954: dcitos(sym, @str) +; vmsrc/apple/cmd.pla: 0955: cout('?'); prstr(@str); crout +; vmsrc/apple/cmd.pla: 0956: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A022 +_F109 !WORD _A022 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $54 ; CALL _A021 +_F110 !WORD _A021 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B026 + !WORD _B026-* + !BYTE $2A,$81 ; CB 129 + !BYTE $78 ; SAB _D034+0 +_F111 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A018 +_F112 !WORD _A018 + !BYTE $30 ; DROP + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A006 +_F113 !WORD _A006 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A008 +_F114 !WORD _A008 + !BYTE $54 ; CALL _A005 +_F115 !WORD _A005 +_B026 +_B027 +; vmsrc/apple/cmd.pla: 0957: return addr + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/cmd.pla: 0958: fin +_B024 +_B025 +; vmsrc/apple/cmd.pla: 0959: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/cmd.pla: 0960: end +; vmsrc/apple/cmd.pla: 0961: def adddef(addr, deflast)#1 + ; addr -> [0] + ; deflast -> [2] +_C015 ; adddef() + JSR INTERP +; vmsrc/apple/cmd.pla: 0962: word defentry + ; defentry -> [4] +; vmsrc/apple/cmd.pla: 0963: defentry = *deflast + !BYTE $58,$06,$02 ; ENTER 6,2 +; vmsrc/apple/cmd.pla: 0964: *deflast = defentry + 5 +; vmsrc/apple/cmd.pla: 0965: defentry->0 = $20 +; vmsrc/apple/cmd.pla: 0966: defentry=>1 = $03D6 +; vmsrc/apple/cmd.pla: 0967: defentry=>3 = addr +; vmsrc/apple/cmd.pla: 0968: defentry->5 = 0 // NULL out next entry +; vmsrc/apple/cmd.pla: 0969: return defentry + !BYTE $66,$02 ; LLW [2] + !BYTE $62 ; LW + !BYTE $6E,$04 ; DLW [4] + !BYTE $38,$05 ; ADDI 5 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $2C,$D6,$03 ; CW 982 + !BYTE $66,$04 ; LLW [4] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/cmd.pla: 0970: end +; vmsrc/apple/cmd.pla: 0971: def loadmod(mod)#1 + ; mod -> [0] +_C016 ; loadmod() + JSR INTERP +; vmsrc/apple/cmd.pla: 0972: word rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup + ; rdlen -> [2] + ; modsize -> [4] + ; bytecode -> [6] + ; codefix -> [8] + ; defofst -> [10] + ; defcnt -> [12] + ; init -> [14] + ; initcode -> [16] + ; fixup -> [16] +; vmsrc/apple/cmd.pla: 0973: word addr, defaddr, modaddr, modfix, modofst, modend + ; addr -> [18] + ; defaddr -> [20] + ; modaddr -> [22] + ; modfix -> [24] + ; modofst -> [26] + ; modend -> [28] +; vmsrc/apple/cmd.pla: 0974: word deftbl, deflast + ; deftbl -> [30] + ; deflast -> [32] +; vmsrc/apple/cmd.pla: 0975: word moddep, rld, esd, sym + ; moddep -> [34] + ; rld -> [36] + ; esd -> [38] + ; sym -> [40] +; vmsrc/apple/cmd.pla: 0976: byte refnum, filename[64], str[] + ; refnum -> [42] + ; filename -> [43] + ; str -> [107] +; vmsrc/apple/cmd.pla: 0977: byte header[128] + ; header -> [107] +; vmsrc/apple/cmd.pla: 0978: // +; vmsrc/apple/cmd.pla: 0979: // Read the RELocatable module header (first 128 bytes) +; vmsrc/apple/cmd.pla: 0980: // +; vmsrc/apple/cmd.pla: 0981: dcitos(mod, @filename) + !BYTE $58,$EB,$01 ; ENTER 235,1 +; vmsrc/apple/cmd.pla: 0982: refnum = open(@filename) +; vmsrc/apple/cmd.pla: 0983: if !refnum and filename < 16 +; vmsrc/apple/cmd.pla: 0984: // +; vmsrc/apple/cmd.pla: 0985: // Try system path +; vmsrc/apple/cmd.pla: 0986: // +; vmsrc/apple/cmd.pla: 0987: refnum = open(strcpy(@filename,strcat(strcpy(@header, @sysmods), @filename))) +; vmsrc/apple/cmd.pla: 0988: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$2B ; LLA [43] + !BYTE $54 ; CALL _A018 +_F116 !WORD _A018 + !BYTE $30 ; DROP + !BYTE $28,$2B ; LLA [43] + !BYTE $54 ; CALL _C002 +_F117 !WORD _C002 + !BYTE $6C,$2A ; DLB [42] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B028 + !WORD _B028-* + !BYTE $64,$2B ; LLB [43] + !BYTE $2A,$10 ; CB 16 + !BYTE $46 ; ISLT +_B028 + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $28,$2B ; LLA [43] + !BYTE $28,$6B ; LLA [107] + !BYTE $26 ; LA _D068+0 +_F118 !WORD _D068+0 + !BYTE $54 ; CALL _C012 +_F119 !WORD _C012 + !BYTE $28,$2B ; LLA [43] + !BYTE $54 ; CALL _C013 +_F120 !WORD _C013 + !BYTE $54 ; CALL _C012 +_F121 !WORD _C012 + !BYTE $54 ; CALL _C002 +_F122 !WORD _C002 + !BYTE $74,$2A ; SLB [42] +_B029 +_B030 +; vmsrc/apple/cmd.pla: 0989: if refnum +; vmsrc/apple/cmd.pla: 0990: header.0 = $0A +; vmsrc/apple/cmd.pla: 0991: header:1 = @filename +; vmsrc/apple/cmd.pla: 0992: if not syscall($C4, @header) and header.4 <> $FE // Make sure it's a REL module +; vmsrc/apple/cmd.pla: 0993: close(refnum) +; vmsrc/apple/cmd.pla: 0994: perr = $4A // Incompatible type +; vmsrc/apple/cmd.pla: 0995: return -perr + !BYTE $64,$2A ; LLB [42] + !BYTE $4C ; BRFLS _B031 + !WORD _B031-* + !BYTE $14 ; CN 10 + !BYTE $74,$6B ; SLB [107] + !BYTE $28,$2B ; LLA [43] + !BYTE $76,$6C ; SLW [108] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$6B ; LLA [107] + !BYTE $54 ; CALL _A000 +_F123 !WORD _A000 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $64,$6F ; LLB [111] + !BYTE $2A,$FE ; CB 254 + !BYTE $42 ; ISNE +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $64,$2A ; LLB [42] + !BYTE $54 ; CALL _C003 +_F124 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $2A,$4A ; CB 74 + !BYTE $7C ; DAB _D034+0 +_F125 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$EB ; LEAVE 235 +; vmsrc/apple/cmd.pla: 0996: fin +_B034 +_B035 +; vmsrc/apple/cmd.pla: 0997: rdlen = read(refnum, @header, 128) +; vmsrc/apple/cmd.pla: 0998: modsize = header:0 +; vmsrc/apple/cmd.pla: 0999: moddep = @header.1 +; vmsrc/apple/cmd.pla: 1000: defofst = modsize + RELADDR +; vmsrc/apple/cmd.pla: 1001: init = 0 +; vmsrc/apple/cmd.pla: 1002: if rdlen > 4 and header:2 == $6502 // magic number +; vmsrc/apple/cmd.pla: 1003: // +; vmsrc/apple/cmd.pla: 1004: // This is an EXTended RELocatable (data+bytecode) module. +; vmsrc/apple/cmd.pla: 1005: // +; vmsrc/apple/cmd.pla: 1006: systemflags = header:4 | systemflags +; vmsrc/apple/cmd.pla: 1007: defofst = header:6 +; vmsrc/apple/cmd.pla: 1008: defcnt = header:8 +; vmsrc/apple/cmd.pla: 1009: init = header:10 +; vmsrc/apple/cmd.pla: 1010: moddep = @header.12 +; vmsrc/apple/cmd.pla: 1011: // +; vmsrc/apple/cmd.pla: 1012: // Load module dependencies. +; vmsrc/apple/cmd.pla: 1013: // +; vmsrc/apple/cmd.pla: 1014: while ^moddep + !BYTE $64,$2A ; LLB [42] + !BYTE $28,$6B ; LLA [107] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F126 !WORD _C004 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$6B ; LLW [107] + !BYTE $76,$04 ; SLW [4] + !BYTE $28,$6C ; LLA [108] + !BYTE $76,$22 ; SLW [34] + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B036 + !WORD _B036-* + !BYTE $66,$6D ; LLW [109] + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $40 ; ISEQ +_B036 + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $66,$6F ; LLW [111] + !BYTE $6A ; LAW _D070+0 +_F127 !WORD _D070+0 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D070+0 +_F128 !WORD _D070+0 + !BYTE $66,$71 ; LLW [113] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$73 ; LLW [115] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$75 ; LLW [117] + !BYTE $76,$0E ; SLW [14] + !BYTE $28,$77 ; LLA [119] + !BYTE $76,$22 ; SLW [34] + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B039 +; vmsrc/apple/cmd.pla: 1015: if !lookuptbl(moddep, symtbl) +; vmsrc/apple/cmd.pla: 1016: close(refnum) +; vmsrc/apple/cmd.pla: 1017: refnum = 0 +; vmsrc/apple/cmd.pla: 1018: if loadmod(moddep) < 0 +; vmsrc/apple/cmd.pla: 1019: return -perr + !BYTE $66,$22 ; LLW [34] + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $54 ; CALL _A021 +_F129 !WORD _A021 + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $64,$2A ; LLB [42] + !BYTE $54 ; CALL _C003 +_F130 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$2A ; SLB [42] + !BYTE $66,$22 ; LLW [34] + !BYTE $54 ; CALL _C016 +_F131 !WORD _C016 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $68 ; LAB _D034+0 +_F132 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$EB ; LEAVE 235 +; vmsrc/apple/cmd.pla: 1020: fin +_B044 +_B045 +; vmsrc/apple/cmd.pla: 1021: fin +_B042 +_B043 +; vmsrc/apple/cmd.pla: 1022: moddep = moddep + dcitos(moddep, @str) +; vmsrc/apple/cmd.pla: 1023: loop + !BYTE $66,$22 ; LLW [34] + !BYTE $34 ; DUP + !BYTE $28,$6B ; LLA [107] + !BYTE $54 ; CALL _A018 +_F133 !WORD _A018 + !BYTE $82 ; ADD + !BYTE $76,$22 ; SLW [34] +_B041 + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B039 + !WORD _B039-* +_B040 +; vmsrc/apple/cmd.pla: 1024: // +; vmsrc/apple/cmd.pla: 1025: // Init def table. +; vmsrc/apple/cmd.pla: 1026: // +; vmsrc/apple/cmd.pla: 1027: deftbl = allocheap(defcnt * 5 + 1) +; vmsrc/apple/cmd.pla: 1028: deflast = deftbl +; vmsrc/apple/cmd.pla: 1029: ^deflast = 0 +; vmsrc/apple/cmd.pla: 1030: if !refnum +; vmsrc/apple/cmd.pla: 1031: // +; vmsrc/apple/cmd.pla: 1032: // Reset read pointer. +; vmsrc/apple/cmd.pla: 1033: // +; vmsrc/apple/cmd.pla: 1034: refnum = open(@filename) +; vmsrc/apple/cmd.pla: 1035: rdlen = read(refnum, @header, 128) +; vmsrc/apple/cmd.pla: 1036: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $0A ; CN 5 + !BYTE $86 ; MUL + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C007 +_F134 !WORD _C007 + !BYTE $6E,$1E ; DLW [30] + !BYTE $76,$20 ; SLW [32] + !BYTE $00 ; CN 0 + !BYTE $66,$20 ; LLW [32] + !BYTE $70 ; SB + !BYTE $64,$2A ; LLB [42] + !BYTE $4E ; BRTRU _B046 + !WORD _B046-* + !BYTE $28,$2B ; LLA [43] + !BYTE $54 ; CALL _C002 +_F135 !WORD _C002 + !BYTE $6C,$2A ; DLB [42] + !BYTE $28,$6B ; LLA [107] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F136 !WORD _C004 + !BYTE $76,$02 ; SLW [2] +_B046 +_B047 +; vmsrc/apple/cmd.pla: 1037: fin +_B037 +_B038 +; vmsrc/apple/cmd.pla: 1038: // +; vmsrc/apple/cmd.pla: 1039: // Alloc heap space for relocated module (data + bytecode). +; vmsrc/apple/cmd.pla: 1040: // +; vmsrc/apple/cmd.pla: 1041: moddep = moddep + 1 +; vmsrc/apple/cmd.pla: 1042: modfix = moddep - @header.2 // Adjust to skip header +; vmsrc/apple/cmd.pla: 1043: modsize = modsize - modfix +; vmsrc/apple/cmd.pla: 1044: rdlen = rdlen - modfix - 2 +; vmsrc/apple/cmd.pla: 1045: modaddr = allocheap(modsize) +; vmsrc/apple/cmd.pla: 1046: memcpy(modaddr, moddep, rdlen) +; vmsrc/apple/cmd.pla: 1047: // +; vmsrc/apple/cmd.pla: 1048: // Read in remainder of module into memory for fixups. +; vmsrc/apple/cmd.pla: 1049: // +; vmsrc/apple/cmd.pla: 1050: addr = modaddr +; vmsrc/apple/cmd.pla: 1051: repeat + !BYTE $66,$22 ; LLW [34] + !BYTE $8C ; INCR + !BYTE $6E,$22 ; DLW [34] + !BYTE $28,$6D ; LLA [109] + !BYTE $84 ; SUB + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$18 ; LLW [24] + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$18 ; LLW [24] + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C007 +_F137 !WORD _C007 + !BYTE $6E,$16 ; DLW [22] + !BYTE $66,$22 ; LLW [34] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A004 +_F138 !WORD _A004 + !BYTE $66,$16 ; LLW [22] + !BYTE $76,$12 ; SLW [18] +_B049 +; vmsrc/apple/cmd.pla: 1052: addr = addr + rdlen +; vmsrc/apple/cmd.pla: 1053: rdlen = read(refnum, addr, 4096) +; vmsrc/apple/cmd.pla: 1054: until rdlen <= 0 + !BYTE $66,$12 ; LLW [18] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $76,$12 ; SLW [18] + !BYTE $64,$2A ; LLB [42] + !BYTE $66,$12 ; LLW [18] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C004 +_F139 !WORD _C004 + !BYTE $76,$02 ; SLW [2] +_B050 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* +_B048 +; vmsrc/apple/cmd.pla: 1055: close(refnum) +; vmsrc/apple/cmd.pla: 1056: // +; vmsrc/apple/cmd.pla: 1057: // Add module to symbol table. +; vmsrc/apple/cmd.pla: 1058: // +; vmsrc/apple/cmd.pla: 1059: addsym(mod, modaddr) +; vmsrc/apple/cmd.pla: 1060: // +; vmsrc/apple/cmd.pla: 1061: // Apply all fixups and symbol import/export. +; vmsrc/apple/cmd.pla: 1062: // +; vmsrc/apple/cmd.pla: 1063: modfix = modaddr - modfix +; vmsrc/apple/cmd.pla: 1064: modofst = modfix - RELADDR +; vmsrc/apple/cmd.pla: 1065: modend = modaddr + modsize +; vmsrc/apple/cmd.pla: 1066: bytecode = defofst + modofst +; vmsrc/apple/cmd.pla: 1067: rld = modend // Re-Locatable Directory +; vmsrc/apple/cmd.pla: 1068: esd = rld // Extern+Entry Symbol Directory +; vmsrc/apple/cmd.pla: 1069: while ^esd // Scan to end of ESD + !BYTE $64,$2A ; LLB [42] + !BYTE $54 ; CALL _C003 +_F140 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$16 ; LLW [22] + !BYTE $54 ; CALL _C011 +_F141 !WORD _C011 + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$18 ; LLW [24] + !BYTE $84 ; SUB + !BYTE $6E,$18 ; DLW [24] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$16 ; LLW [22] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$1C ; SLW [28] + !BYTE $66,$0A ; LLW [10] + !BYTE $B2,$1A ; ADDLW [26] + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$1C ; LLW [28] + !BYTE $6E,$24 ; DLW [36] + !BYTE $76,$26 ; SLW [38] + !BYTE $50 ; BRNCH _B053 + !WORD _B053-* +_B051 +; vmsrc/apple/cmd.pla: 1070: esd = esd + 4 +; vmsrc/apple/cmd.pla: 1071: loop + !BYTE $66,$26 ; LLW [38] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$26 ; SLW [38] +_B053 + !BYTE $66,$26 ; LLW [38] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B051 + !WORD _B051-* +_B052 +; vmsrc/apple/cmd.pla: 1072: esd = esd + 1 +; vmsrc/apple/cmd.pla: 1073: defaddr = bytecode +; vmsrc/apple/cmd.pla: 1074: codefix = defaddr - bytecode +; vmsrc/apple/cmd.pla: 1075: defofst = defaddr - defofst +; vmsrc/apple/cmd.pla: 1076: // +; vmsrc/apple/cmd.pla: 1077: // Run through the DeFinition Dictionary. +; vmsrc/apple/cmd.pla: 1078: // +; vmsrc/apple/cmd.pla: 1079: while ^rld == $02 + !BYTE $66,$26 ; LLW [38] + !BYTE $8C ; INCR + !BYTE $76,$26 ; SLW [38] + !BYTE $66,$06 ; LLW [6] + !BYTE $6E,$14 ; DLW [20] + !BYTE $66,$06 ; LLW [6] + !BYTE $84 ; SUB + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$14 ; LLW [20] + !BYTE $66,$0A ; LLW [10] + !BYTE $84 ; SUB + !BYTE $76,$0A ; SLW [10] + !BYTE $50 ; BRNCH _B056 + !WORD _B056-* +_B054 +; vmsrc/apple/cmd.pla: 1080: // +; vmsrc/apple/cmd.pla: 1081: // This is a bytcode def entry - add it to the def directory. +; vmsrc/apple/cmd.pla: 1082: // +; vmsrc/apple/cmd.pla: 1083: adddef(rld=>1 + defofst, @deflast) +; vmsrc/apple/cmd.pla: 1084: rld = rld + 4 +; vmsrc/apple/cmd.pla: 1085: loop + !BYTE $66,$24 ; LLW [36] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $28,$20 ; LLA [32] + !BYTE $54 ; CALL _C015 +_F142 !WORD _C015 + !BYTE $30 ; DROP + !BYTE $66,$24 ; LLW [36] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$24 ; SLW [36] +_B056 + !BYTE $66,$24 ; LLW [36] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B054 + !WORD _B054-* +_B055 +; vmsrc/apple/cmd.pla: 1086: // +; vmsrc/apple/cmd.pla: 1087: // Run through the Re-Location Dictionary. +; vmsrc/apple/cmd.pla: 1088: // +; vmsrc/apple/cmd.pla: 1089: while ^rld + !BYTE $50 ; BRNCH _B059 + !WORD _B059-* +_B057 +; vmsrc/apple/cmd.pla: 1090: rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) +; vmsrc/apple/cmd.pla: 1091: if ^rld +; vmsrc/apple/cmd.pla: 1092: *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + codefix, deftbl) +; vmsrc/apple/cmd.pla: 1093: rld = rld + 4 +; vmsrc/apple/cmd.pla: 1094: fin + !BYTE $66,$18 ; LLW [24] + !BYTE $66,$1A ; LLW [26] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$24 ; LLW [36] + !BYTE $54 ; CALL _A024 +_F143 !WORD _A024 + !BYTE $76,$10 ; SLW [16] + !BYTE $76,$12 ; SLW [18] + !BYTE $6E,$24 ; DLW [36] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $66,$24 ; LLW [36] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B062 + !WORD _B062-* + !BYTE $66,$12 ; LLW [18] + !BYTE $62 ; LW + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$24 ; LLW [36] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C014 +_F144 !WORD _C014 + !BYTE $82 ; ADD + !BYTE $50 ; BRNCH _B063 + !WORD _B063-* +_B062 + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$1E ; LLW [30] + !BYTE $54 ; CALL _A023 +_F145 !WORD _A023 +_B063 + !BYTE $66,$12 ; LLW [18] + !BYTE $72 ; SW + !BYTE $66,$24 ; LLW [36] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$24 ; SLW [36] +_B060 +_B061 +; vmsrc/apple/cmd.pla: 1095: loop +_B059 + !BYTE $66,$24 ; LLW [36] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B057 + !WORD _B057-* +_B058 +; vmsrc/apple/cmd.pla: 1096: // +; vmsrc/apple/cmd.pla: 1097: // Run through the External/Entry Symbol Directory. +; vmsrc/apple/cmd.pla: 1098: // +; vmsrc/apple/cmd.pla: 1099: while ^esd + !BYTE $50 ; BRNCH _B066 + !WORD _B066-* +_B064 +; vmsrc/apple/cmd.pla: 1100: sym = esd +; vmsrc/apple/cmd.pla: 1101: esd = esd + dcitos(esd, @str) +; vmsrc/apple/cmd.pla: 1102: if ^esd & $08 +; vmsrc/apple/cmd.pla: 1103: // +; vmsrc/apple/cmd.pla: 1104: // EXPORT symbol - add it to the global symbol table. +; vmsrc/apple/cmd.pla: 1105: // +; vmsrc/apple/cmd.pla: 1106: addr = esd=>1 + modofst +; vmsrc/apple/cmd.pla: 1107: if uword_isge(addr, bytecode) +; vmsrc/apple/cmd.pla: 1108: // +; vmsrc/apple/cmd.pla: 1109: // Use the def directory address for bytecode. +; vmsrc/apple/cmd.pla: 1110: // +; vmsrc/apple/cmd.pla: 1111: addr = lookupdef(addr + codefix, deftbl) +; vmsrc/apple/cmd.pla: 1112: fin + !BYTE $66,$26 ; LLW [38] + !BYTE $76,$28 ; SLW [40] + !BYTE $66,$26 ; LLW [38] + !BYTE $34 ; DUP + !BYTE $28,$6B ; LLA [107] + !BYTE $54 ; CALL _A018 +_F146 !WORD _A018 + !BYTE $82 ; ADD + !BYTE $6E,$26 ; DLW [38] + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B067 + !WORD _B067-* + !BYTE $66,$26 ; LLW [38] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$1A ; ADDLW [26] + !BYTE $6E,$12 ; DLW [18] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _A012 +_F147 !WORD _A012 + !BYTE $4C ; BRFLS _B069 + !WORD _B069-* + !BYTE $66,$12 ; LLW [18] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $66,$1E ; LLW [30] + !BYTE $54 ; CALL _A023 +_F148 !WORD _A023 + !BYTE $76,$12 ; SLW [18] +_B069 +_B070 +; vmsrc/apple/cmd.pla: 1113: addsym(sym, addr) +; vmsrc/apple/cmd.pla: 1114: fin + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$12 ; LLW [18] + !BYTE $54 ; CALL _C011 +_F149 !WORD _C011 +_B067 +_B068 +; vmsrc/apple/cmd.pla: 1115: esd = esd + 3 +; vmsrc/apple/cmd.pla: 1116: loop + !BYTE $66,$26 ; LLW [38] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$26 ; SLW [38] +_B066 + !BYTE $66,$26 ; LLW [38] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B064 + !WORD _B064-* +_B065 +; vmsrc/apple/cmd.pla: 1117: else + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +_B031 +; vmsrc/apple/cmd.pla: 1118: perr = $46 +; vmsrc/apple/cmd.pla: 1119: fin + !BYTE $2A,$46 ; CB 70 + !BYTE $78 ; SAB _D034+0 +_F150 !WORD _D034+0 +_B032 +; vmsrc/apple/cmd.pla: 1120: if perr +; vmsrc/apple/cmd.pla: 1121: return -perr + !BYTE $68 ; LAB _D034+0 +_F151 !WORD _D034+0 + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $68 ; LAB _D034+0 +_F152 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$EB ; LEAVE 235 +; vmsrc/apple/cmd.pla: 1122: fin +_B071 +_B072 +; vmsrc/apple/cmd.pla: 1123: // +; vmsrc/apple/cmd.pla: 1124: // Free up rld+esd in main memory. +; vmsrc/apple/cmd.pla: 1125: // +; vmsrc/apple/cmd.pla: 1126: releaseheap(modend) +; vmsrc/apple/cmd.pla: 1127: // +; vmsrc/apple/cmd.pla: 1128: // Call init routine if it exists. +; vmsrc/apple/cmd.pla: 1129: // +; vmsrc/apple/cmd.pla: 1130: initcode = 0 +; vmsrc/apple/cmd.pla: 1131: if init +; vmsrc/apple/cmd.pla: 1132: init = init + defofst +; vmsrc/apple/cmd.pla: 1133: initcode = adddef(init, @deflast)() +; vmsrc/apple/cmd.pla: 1134: if initcode < modinitkeep +; vmsrc/apple/cmd.pla: 1135: // +; vmsrc/apple/cmd.pla: 1136: // Free init routine unless initkeep +; vmsrc/apple/cmd.pla: 1137: // +; vmsrc/apple/cmd.pla: 1138: releaseheap(init) +; vmsrc/apple/cmd.pla: 1139: if initcode < 0 +; vmsrc/apple/cmd.pla: 1140: perr = -initcode +; vmsrc/apple/cmd.pla: 1141: fin + !BYTE $66,$1C ; LLW [28] + !BYTE $54 ; CALL _C010 +_F153 !WORD _C010 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$0E ; LLW [14] + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$0E ; LLW [14] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $6E,$0E ; DLW [14] + !BYTE $28,$20 ; LLA [32] + !BYTE $54 ; CALL _C015 +_F154 !WORD _C015 + !BYTE $56 ; ICAL + !BYTE $6E,$10 ; DLW [16] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C010 +_F155 !WORD _C010 + !BYTE $30 ; DROP + !BYTE $66,$10 ; LLW [16] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $66,$10 ; LLW [16] + !BYTE $90 ; NEG + !BYTE $78 ; SAB _D034+0 +_F156 !WORD _D034+0 +_B077 +_B078 +; vmsrc/apple/cmd.pla: 1142: else + !BYTE $50 ; BRNCH _B076 + !WORD _B076-* +_B075 +; vmsrc/apple/cmd.pla: 1143: initcode = initcode & ~modinitkeep +; vmsrc/apple/cmd.pla: 1144: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $2C,$FF,$BF ; CW -16385 + !BYTE $94 ; AND + !BYTE $76,$10 ; SLW [16] +_B076 +; vmsrc/apple/cmd.pla: 1145: fin +_B073 +_B074 +; vmsrc/apple/cmd.pla: 1146: return initcode + !BYTE $66,$10 ; LLW [16] + !BYTE $5A,$EB ; LEAVE 235 +; vmsrc/apple/cmd.pla: 1147: end +; vmsrc/apple/cmd.pla: 1148: // +; vmsrc/apple/cmd.pla: 1149: // Command mode +; vmsrc/apple/cmd.pla: 1150: // +; vmsrc/apple/cmd.pla: 1151: def volumes()#0 +_C017 ; volumes() + JSR INTERP +; vmsrc/apple/cmd.pla: 1152: byte params[4] + ; params -> [0] +; vmsrc/apple/cmd.pla: 1153: word strbuf + ; strbuf -> [4] +; vmsrc/apple/cmd.pla: 1154: byte i + ; i -> [6] +; vmsrc/apple/cmd.pla: 1155: +; vmsrc/apple/cmd.pla: 1156: params.0 = 2 + !BYTE $58,$07,$00 ; ENTER 7,0 +; vmsrc/apple/cmd.pla: 1157: params.1 = 0 +; vmsrc/apple/cmd.pla: 1158: params:2 = heap +; vmsrc/apple/cmd.pla: 1159: perr = syscall($C5, @params) +; vmsrc/apple/cmd.pla: 1160: strbuf = heap +; vmsrc/apple/cmd.pla: 1161: for i = 0 to 15 + !BYTE $04 ; CN 2 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D071+0 +_F157 !WORD _D071+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _A000 +_F158 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F159 !WORD _D034+0 + !BYTE $6A ; LAW _D071+0 +_F160 !WORD _D071+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B080 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/cmd.pla: 1162: ^strbuf = ^strbuf & $0F +; vmsrc/apple/cmd.pla: 1163: if ^strbuf +; vmsrc/apple/cmd.pla: 1164: cout('/'); prstr(strbuf); crout() +; vmsrc/apple/cmd.pla: 1165: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _A006 +_F161 !WORD _A006 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A008 +_F162 !WORD _A008 + !BYTE $54 ; CALL _A005 +_F163 !WORD _A005 +_B082 +_B083 +; vmsrc/apple/cmd.pla: 1166: strbuf = strbuf + 16 +; vmsrc/apple/cmd.pla: 1167: next + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$04 ; SLW [4] +_B081 + !BYTE $A4 ; INCBRLE _B080 + !WORD _B080-* +_B079 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/cmd.pla: 1168: end + !BYTE $5A,$07 ; LEAVE 7 +; vmsrc/apple/cmd.pla: 1169: def catalog(path)#0 + ; path -> [0] +_C018 ; catalog() + JSR INTERP +; vmsrc/apple/cmd.pla: 1170: byte refnum + ; refnum -> [2] +; vmsrc/apple/cmd.pla: 1171: byte firstblk + ; firstblk -> [3] +; vmsrc/apple/cmd.pla: 1172: byte entrylen, entriesblk + ; entrylen -> [4] + ; entriesblk -> [5] +; vmsrc/apple/cmd.pla: 1173: byte i, type, len + ; i -> [6] + ; type -> [7] + ; len -> [8] +; vmsrc/apple/cmd.pla: 1174: word entry + ; entry -> [9] +; vmsrc/apple/cmd.pla: 1175: +; vmsrc/apple/cmd.pla: 1176: refnum = open(path) + !BYTE $58,$0B,$01 ; ENTER 11,1 +; vmsrc/apple/cmd.pla: 1177: if perr +; vmsrc/apple/cmd.pla: 1178: return + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F164 !WORD _C002 + !BYTE $74,$02 ; SLB [2] + !BYTE $68 ; LAB _D034+0 +_F165 !WORD _D034+0 + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/cmd.pla: 1179: fin +_B084 +_B085 +; vmsrc/apple/cmd.pla: 1180: firstblk = 1 +; vmsrc/apple/cmd.pla: 1181: while read(refnum, heap, 512) == 512 + !BYTE $02 ; CN 1 + !BYTE $74,$03 ; SLB [3] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +_B086 +; vmsrc/apple/cmd.pla: 1182: entry = heap + 4 +; vmsrc/apple/cmd.pla: 1183: if firstblk +; vmsrc/apple/cmd.pla: 1184: entrylen = heap->$23 +; vmsrc/apple/cmd.pla: 1185: entriesblk = heap->$24 - 1 +; vmsrc/apple/cmd.pla: 1186: entry = entry + entrylen +; vmsrc/apple/cmd.pla: 1187: fin + !BYTE $6A ; LAW _D071+0 +_F166 !WORD _D071+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$09 ; SLW [9] + !BYTE $64,$03 ; LLB [3] + !BYTE $4C ; BRFLS _B089 + !WORD _B089-* + !BYTE $6A ; LAW _D071+0 +_F167 !WORD _D071+0 + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $6A ; LAW _D071+0 +_F168 !WORD _D071+0 + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B089 +_B090 +; vmsrc/apple/cmd.pla: 1188: for i = firstblk to entriesblk + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$03 ; LLB [3] + !BYTE $A0 ; BRGT _B091 + !WORD _B091-* +_B092 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/cmd.pla: 1189: if ^entry +; vmsrc/apple/cmd.pla: 1190: ^entry = ^entry & $0F +; vmsrc/apple/cmd.pla: 1191: prstr(entry) +; vmsrc/apple/cmd.pla: 1192: type = ' ' +; vmsrc/apple/cmd.pla: 1193: when entry->$10 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B094 + !WORD _B094-* + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$09 ; LLW [9] + !BYTE $70 ; SB + !BYTE $66,$09 ; LLW [9] + !BYTE $54 ; CALL _A008 +_F169 !WORD _A008 + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$09 ; LLW [9] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B097-* +; vmsrc/apple/cmd.pla: 1194: is $0F // Is it a directory? +_B098 +; vmsrc/apple/cmd.pla: 1195: type = '/' +; vmsrc/apple/cmd.pla: 1196: break + !BYTE $2A,$2F ; CB 47 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B096 + !WORD _B096-* +; vmsrc/apple/cmd.pla: 1197: is $FF // SYSTEM file +_B099 +; vmsrc/apple/cmd.pla: 1198: type = '-' +; vmsrc/apple/cmd.pla: 1199: break + !BYTE $2A,$2D ; CB 45 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B096 + !WORD _B096-* +; vmsrc/apple/cmd.pla: 1200: is $FE // REL file +_B100 +; vmsrc/apple/cmd.pla: 1201: type = '+' +; vmsrc/apple/cmd.pla: 1202: wend + !BYTE $2A,$2B ; CB 43 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B096 + !WORD _B096-* +_B097 + !BYTE $03 ; CASEBLOCK + !WORD $000F + !WORD _B098-* + !WORD $00FE + !WORD _B100-* + !WORD $00FF + !WORD _B099-* +_B096 +; vmsrc/apple/cmd.pla: 1203: cout(type) +; vmsrc/apple/cmd.pla: 1204: for len = ^entry to 18 + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _A006 +_F170 !WORD _A006 + !BYTE $2A,$12 ; CB 18 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B101 + !WORD _B101-* +_B102 + !BYTE $6C,$08 ; DLB [8] +; vmsrc/apple/cmd.pla: 1205: cout(' ') +; vmsrc/apple/cmd.pla: 1206: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _A006 +_F171 !WORD _A006 +_B103 + !BYTE $A4 ; INCBRLE _B102 + !WORD _B102-* +_B101 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; vmsrc/apple/cmd.pla: 1207: fin +_B094 +_B095 +; vmsrc/apple/cmd.pla: 1208: entry = entry + entrylen +; vmsrc/apple/cmd.pla: 1209: next + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B093 + !BYTE $A4 ; INCBRLE _B092 + !WORD _B092-* +_B091 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/cmd.pla: 1210: firstblk = 0 +; vmsrc/apple/cmd.pla: 1211: loop + !BYTE $00 ; CN 0 + !BYTE $74,$03 ; SLB [3] +_B088 + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _D071+0 +_F172 !WORD _D071+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _C004 +_F173 !WORD _C004 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B086 + !WORD _B086-* +_B087 +; vmsrc/apple/cmd.pla: 1212: close(refnum) +; vmsrc/apple/cmd.pla: 1213: crout() +; vmsrc/apple/cmd.pla: 1214: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _C003 +_F174 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _A005 +_F175 !WORD _A005 + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/cmd.pla: 1215: def stripchars(strptr)#1 + ; strptr -> [0] +_C019 ; stripchars() + JSR INTERP +; vmsrc/apple/cmd.pla: 1216: while ^strptr and ^(strptr + 1) > ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B106 + !WORD _B106-* +_B104 +; vmsrc/apple/cmd.pla: 1217: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmd.pla: 1218: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F176 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmd.pla: 1219: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B106 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B107 + !WORD _B107-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT +_B107 + !BYTE $4E ; BRTRU _B104 + !WORD _B104-* +_B105 +; vmsrc/apple/cmd.pla: 1220: return ^strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmd.pla: 1221: end +; vmsrc/apple/cmd.pla: 1222: def stripspaces(strptr)#0 + ; strptr -> [0] +_C020 ; stripspaces() + JSR INTERP +; vmsrc/apple/cmd.pla: 1223: while ^strptr and ^(strptr + ^strptr) <= ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B110 + !WORD _B110-* +_B108 +; vmsrc/apple/cmd.pla: 1224: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmd.pla: 1225: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B110 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B111 + !WORD _B111-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B111 + !BYTE $4E ; BRTRU _B108 + !WORD _B108-* +_B109 +; vmsrc/apple/cmd.pla: 1226: while ^strptr and ^(strptr + 1) <= ' ' + !BYTE $50 ; BRNCH _B114 + !WORD _B114-* +_B112 +; vmsrc/apple/cmd.pla: 1227: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmd.pla: 1228: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F177 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmd.pla: 1229: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B114 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B115 + !WORD _B115-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B115 + !BYTE $4E ; BRTRU _B112 + !WORD _B112-* +_B113 +; vmsrc/apple/cmd.pla: 1230: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmd.pla: 1231: def striptrail(strptr)#1 + ; strptr -> [0] +_C021 ; striptrail() + JSR INTERP +; vmsrc/apple/cmd.pla: 1232: byte i + ; i -> [2] +; vmsrc/apple/cmd.pla: 1233: +; vmsrc/apple/cmd.pla: 1234: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B116 + !WORD _B116-* +_B117 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/cmd.pla: 1235: if ^(strptr + i) <= ' ' +; vmsrc/apple/cmd.pla: 1236: ^strptr = i - 1 +; vmsrc/apple/cmd.pla: 1237: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B119 + !WORD _B119-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B116 + !WORD _B116-* +; vmsrc/apple/cmd.pla: 1238: fin +_B119 +_B120 +; vmsrc/apple/cmd.pla: 1239: next +_B118 + !BYTE $A4 ; INCBRLE _B117 + !WORD _B117-* +_B116 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/cmd.pla: 1240: return strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/cmd.pla: 1241: end +; vmsrc/apple/cmd.pla: 1242: def parsecmd(strptr)#1 + ; strptr -> [0] +_C022 ; parsecmd() + JSR INTERP +; vmsrc/apple/cmd.pla: 1243: byte cmd + ; cmd -> [2] +; vmsrc/apple/cmd.pla: 1244: +; vmsrc/apple/cmd.pla: 1245: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/cmd.pla: 1246: stripspaces(strptr) +; vmsrc/apple/cmd.pla: 1247: if ^strptr +; vmsrc/apple/cmd.pla: 1248: cmd = ^(strptr + 1) +; vmsrc/apple/cmd.pla: 1249: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmd.pla: 1250: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F178 !WORD _C020 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B121 + !WORD _B121-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F179 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmd.pla: 1251: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B121 +_B122 +; vmsrc/apple/cmd.pla: 1252: stripspaces(strptr) +; vmsrc/apple/cmd.pla: 1253: return cmd + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F180 !WORD _C020 + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/cmd.pla: 1254: end +; vmsrc/apple/cmd.pla: 1255: def resetmemfiles()#0 +_C023 ; resetmemfiles() + JSR INTERP +; vmsrc/apple/cmd.pla: 1256: byte terr + ; terr -> [0] +; vmsrc/apple/cmd.pla: 1257: +; vmsrc/apple/cmd.pla: 1258: terr = perr // Save perr + !BYTE $58,$01,$00 ; ENTER 1,0 +; vmsrc/apple/cmd.pla: 1259: // +; vmsrc/apple/cmd.pla: 1260: // Close all files +; vmsrc/apple/cmd.pla: 1261: // +; vmsrc/apple/cmd.pla: 1262: ^$BF94 = 0 +; vmsrc/apple/cmd.pla: 1263: close(0) +; vmsrc/apple/cmd.pla: 1264: // +; vmsrc/apple/cmd.pla: 1265: // Set memory bitmap +; vmsrc/apple/cmd.pla: 1266: // +; vmsrc/apple/cmd.pla: 1267: memset($BF58, 0, 24) +; vmsrc/apple/cmd.pla: 1268: ^$BF58 = $CF +; vmsrc/apple/cmd.pla: 1269: ^$BF6F = $01 +; vmsrc/apple/cmd.pla: 1270: perr = terr // Restore perr +; vmsrc/apple/cmd.pla: 1271: end + !BYTE $68 ; LAB _D034+0 +_F181 !WORD _D034+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $78,$94,$BF ; SAB 49044 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C003 +_F182 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $2C,$58,$BF ; CW 48984 + !BYTE $00 ; CN 0 + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _A003 +_F183 !WORD _A003 + !BYTE $2A,$CF ; CB 207 + !BYTE $78,$58,$BF ; SAB 48984 + !BYTE $02 ; CN 1 + !BYTE $78,$6F,$BF ; SAB 49007 + !BYTE $64,$00 ; LLB [0] + !BYTE $78 ; SAB _D034+0 +_F184 !WORD _D034+0 + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/cmd.pla: 1272: def execsys(sysfile)#0 + ; sysfile -> [0] +_C024 ; execsys() + JSR INTERP +; vmsrc/apple/cmd.pla: 1273: byte refnum + ; refnum -> [2] +; vmsrc/apple/cmd.pla: 1274: word len + ; len -> [3] +; vmsrc/apple/cmd.pla: 1275: +; vmsrc/apple/cmd.pla: 1276: if ^sysfile + !BYTE $58,$05,$01 ; ENTER 5,1 +; vmsrc/apple/cmd.pla: 1277: strcpy($280, sysfile) +; vmsrc/apple/cmd.pla: 1278: striptrail(sysfile) +; vmsrc/apple/cmd.pla: 1279: refnum = open(sysfile) +; vmsrc/apple/cmd.pla: 1280: if refnum +; vmsrc/apple/cmd.pla: 1281: len = read(refnum, $2000, $FFFF) +; vmsrc/apple/cmd.pla: 1282: resetmemfiles() +; vmsrc/apple/cmd.pla: 1283: if len +; vmsrc/apple/cmd.pla: 1284: strcpy(sysfile, $280) +; vmsrc/apple/cmd.pla: 1285: if stripchars(sysfile) and ^$2000 == $4C and *$2003 == $EEEE +; vmsrc/apple/cmd.pla: 1286: stripspaces(sysfile) +; vmsrc/apple/cmd.pla: 1287: if ^$2005 >= ^sysfile + 1 +; vmsrc/apple/cmd.pla: 1288: strcpy($2006, sysfile) +; vmsrc/apple/cmd.pla: 1289: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B123 + !WORD _B123-* + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C012 +_F185 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C021 +_F186 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F187 !WORD _C002 + !BYTE $6C,$02 ; DLB [2] + !BYTE $4C ; BRFLS _B125 + !WORD _B125-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _C004 +_F188 !WORD _C004 + !BYTE $76,$03 ; SLW [3] + !BYTE $54 ; CALL _C023 +_F189 !WORD _C023 + !BYTE $66,$03 ; LLW [3] + !BYTE $4C ; BRFLS _B127 + !WORD _B127-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $54 ; CALL _C012 +_F190 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C019 +_F191 !WORD _C019 + !BYTE $AC ; BRAND _B129 + !WORD _B129-* + !BYTE $68,$00,$20 ; LAB 8192 + !BYTE $2A,$4C ; CB 76 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B130 + !WORD _B130-* + !BYTE $6A,$03,$20 ; LAW 8195 + !BYTE $2C,$EE,$EE ; CW 61166 + !BYTE $40 ; ISEQ +_B130 +_B129 + !BYTE $4C ; BRFLS _B131 + !WORD _B131-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F192 !WORD _C020 + !BYTE $68,$05,$20 ; LAB 8197 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B133 + !WORD _B133-* + !BYTE $2C,$06,$20 ; CW 8198 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C012 +_F193 !WORD _C012 + !BYTE $30 ; DROP +_B133 +_B134 +; vmsrc/apple/cmd.pla: 1290: fin +_B131 +_B132 +; vmsrc/apple/cmd.pla: 1291: striptrail($280) +; vmsrc/apple/cmd.pla: 1292: exec() +; vmsrc/apple/cmd.pla: 1293: fin + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $54 ; CALL _C021 +_F194 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _A002 +_F195 !WORD _A002 +_B127 +_B128 +; vmsrc/apple/cmd.pla: 1294: fin +_B125 +_B126 +; vmsrc/apple/cmd.pla: 1295: fin +_B123 +_B124 +; vmsrc/apple/cmd.pla: 1296: end + !BYTE $5A,$05 ; LEAVE 5 +; vmsrc/apple/cmd.pla: 1297: def execmod(modfile)#1 + ; modfile -> [0] +_P026 ; execmod(modfile)#1() +_C025 ; execmod() + JSR INTERP +; vmsrc/apple/cmd.pla: 1298: byte moddci[17] + ; moddci -> [2] +; vmsrc/apple/cmd.pla: 1299: word saveheap, savesym, saveflags + ; saveheap -> [19] + ; savesym -> [21] + ; saveflags -> [23] +; vmsrc/apple/cmd.pla: 1300: +; vmsrc/apple/cmd.pla: 1301: perr = 1 + !BYTE $58,$19,$01 ; ENTER 25,1 +; vmsrc/apple/cmd.pla: 1302: if stodci(modfile, @moddci) +; vmsrc/apple/cmd.pla: 1303: saveheap = heap +; vmsrc/apple/cmd.pla: 1304: savesym = lastsym +; vmsrc/apple/cmd.pla: 1305: saveflags = systemflags +; vmsrc/apple/cmd.pla: 1306: if loadmod(@moddci) < modkeep +; vmsrc/apple/cmd.pla: 1307: lastsym = savesym +; vmsrc/apple/cmd.pla: 1308: heap = saveheap +; vmsrc/apple/cmd.pla: 1309: fin + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D034+0 +_F196 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A019 +_F197 !WORD _A019 + !BYTE $4C ; BRFLS _B135 + !WORD _B135-* + !BYTE $6A ; LAW _D071+0 +_F198 !WORD _D071+0 + !BYTE $76,$13 ; SLW [19] + !BYTE $6A ; LAW _D072+0 +_F199 !WORD _D072+0 + !BYTE $76,$15 ; SLW [21] + !BYTE $6A ; LAW _D070+0 +_F200 !WORD _D070+0 + !BYTE $76,$17 ; SLW [23] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C016 +_F201 !WORD _C016 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B137 + !WORD _B137-* + !BYTE $66,$15 ; LLW [21] + !BYTE $7A ; SAW _D072+0 +_F202 !WORD _D072+0 + !BYTE $66,$13 ; LLW [19] + !BYTE $7A ; SAW _D071+0 +_F203 !WORD _D071+0 +_B137 +_B138 +; vmsrc/apple/cmd.pla: 1310: ^lastsym = 0 +; vmsrc/apple/cmd.pla: 1311: systemflags = saveflags +; vmsrc/apple/cmd.pla: 1312: fin + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D072+0 +_F204 !WORD _D072+0 + !BYTE $70 ; SB + !BYTE $66,$17 ; LLW [23] + !BYTE $7A ; SAW _D070+0 +_F205 !WORD _D070+0 +_B135 +_B136 +; vmsrc/apple/cmd.pla: 1313: return -perr + !BYTE $68 ; LAB _D034+0 +_F206 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$19 ; LEAVE 25 +; vmsrc/apple/cmd.pla: 1314: end +; vmsrc/apple/cmd.pla: 1315: // +; vmsrc/apple/cmd.pla: 1316: // Command line processor +; vmsrc/apple/cmd.pla: 1317: // +; vmsrc/apple/cmd.pla: 1318: def docmds#0 +_C026 ; docmds() + JSR INTERP +; vmsrc/apple/cmd.pla: 1319: word prefix + ; prefix -> [0] +; vmsrc/apple/cmd.pla: 1320: +; vmsrc/apple/cmd.pla: 1321: prefix = pfxop(heap, GET_PFX) + !BYTE $58,$02,$00 ; ENTER 2,0 +; vmsrc/apple/cmd.pla: 1322: repeat + !BYTE $6A ; LAW _D071+0 +_F207 !WORD _D071+0 + !BYTE $2A,$C7 ; CB 199 + !BYTE $54 ; CALL _C001 +_F208 !WORD _C001 + !BYTE $76,$00 ; SLW [0] +_B140 +; vmsrc/apple/cmd.pla: 1323: if ^getlnbuf +; vmsrc/apple/cmd.pla: 1324: strcpy(@cmdln, getlnbuf) +; vmsrc/apple/cmd.pla: 1325: when toupper(parsecmd(getlnbuf)) + !BYTE $68,$FF,$01 ; LAB 511 + !BYTE $4C ; BRFLS _B142 + !WORD _B142-* + !BYTE $26 ; LA _D037+0 +_F209 !WORD _D037+0 + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C012 +_F210 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C022 +_F211 !WORD _C022 + !BYTE $54 ; CALL _A020 +_F212 !WORD _A020 + !BYTE $52 ; SEL + !WORD _B145-* +; vmsrc/apple/cmd.pla: 1326: is 'C' +_B146 +; vmsrc/apple/cmd.pla: 1327: catalog(^getlnbuf ?? getlnbuf :: prefix) +; vmsrc/apple/cmd.pla: 1328: break + !BYTE $68,$FF,$01 ; LAB 511 + !BYTE $4C ; BRFLS _B149 + !WORD _B149-* + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $50 ; BRNCH _B150 + !WORD _B150-* +_B149 + !BYTE $66,$00 ; LLW [0] +_B150 + !BYTE $54 ; CALL _C018 +_F213 !WORD _C018 + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1329: is 'P' +_B151 +; vmsrc/apple/cmd.pla: 1330: pfxop(getlnbuf, SET_PFX) +; vmsrc/apple/cmd.pla: 1331: break + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $2A,$C6 ; CB 198 + !BYTE $54 ; CALL _C001 +_F214 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1332: is '/' +_B152 +; vmsrc/apple/cmd.pla: 1333: repeat +_B154 +; vmsrc/apple/cmd.pla: 1334: ^prefix-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmd.pla: 1335: until ^(prefix + ^prefix) == '/' + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B155 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B154 + !WORD _B154-* +_B153 +; vmsrc/apple/cmd.pla: 1336: if ^prefix > 1 +; vmsrc/apple/cmd.pla: 1337: pfxop(prefix, SET_PFX) +; vmsrc/apple/cmd.pla: 1338: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B156 + !WORD _B156-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$C6 ; CB 198 + !BYTE $54 ; CALL _C001 +_F215 !WORD _C001 + !BYTE $30 ; DROP +_B156 +_B157 +; vmsrc/apple/cmd.pla: 1339: break + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1340: is 'V' +_B158 +; vmsrc/apple/cmd.pla: 1341: volumes() +; vmsrc/apple/cmd.pla: 1342: break + !BYTE $54 ; CALL _C017 +_F216 !WORD _C017 + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1343: is '-' +_B159 +; vmsrc/apple/cmd.pla: 1344: execsys(getlnbuf) +; vmsrc/apple/cmd.pla: 1345: break + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C024 +_F217 !WORD _C024 + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1346: is '+' +_B160 +; vmsrc/apple/cmd.pla: 1347: // +; vmsrc/apple/cmd.pla: 1348: // Exec module +; vmsrc/apple/cmd.pla: 1349: // +; vmsrc/apple/cmd.pla: 1350: execmod(striptrail(getlnbuf)) +; vmsrc/apple/cmd.pla: 1351: // +; vmsrc/apple/cmd.pla: 1352: // Clean up +; vmsrc/apple/cmd.pla: 1353: // +; vmsrc/apple/cmd.pla: 1354: resetmemfiles +; vmsrc/apple/cmd.pla: 1355: break + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C021 +_F218 !WORD _C021 + !BYTE $54 ; CALL _C025 +_F219 !WORD _C025 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C023 +_F220 !WORD _C023 + !BYTE $50 ; BRNCH _B144 + !WORD _B144-* +; vmsrc/apple/cmd.pla: 1356: otherwise +_B145 + !BYTE $06 ; CASEBLOCK + !WORD $002B + !WORD _B160-* + !WORD $002D + !WORD _B159-* + !WORD $002F + !WORD _B152-* + !WORD $0043 + !WORD _B146-* + !WORD $0050 + !WORD _B151-* + !WORD $0056 + !WORD _B158-* +; vmsrc/apple/cmd.pla: 1357: cout('?') +; vmsrc/apple/cmd.pla: 1358: wend + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A006 +_F221 !WORD _A006 +_B144 +; vmsrc/apple/cmd.pla: 1359: if perr +; vmsrc/apple/cmd.pla: 1360: prstr("ERR:$") + !BYTE $68 ; LAB _D034+0 +_F222 !WORD _D034+0 + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $45,$52,$52,$3A,$24 + !BYTE $54 ; CALL _A008 +_F223 !WORD _A008 +; vmsrc/apple/cmd.pla: 1361: prbyte(perr) +; vmsrc/apple/cmd.pla: 1362: crout() +; vmsrc/apple/cmd.pla: 1363: fin + !BYTE $68 ; LAB _D034+0 +_F224 !WORD _D034+0 + !BYTE $54 ; CALL _A010 +_F225 !WORD _A010 + !BYTE $54 ; CALL _A005 +_F226 !WORD _A005 +_B161 +_B162 +; vmsrc/apple/cmd.pla: 1364: fin +_B142 +_B143 +; vmsrc/apple/cmd.pla: 1365: prstr(pfxop(prefix, GET_PFX)) +; vmsrc/apple/cmd.pla: 1366: rdstr($BA) +; vmsrc/apple/cmd.pla: 1367: until 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$C7 ; CB 199 + !BYTE $54 ; CALL _C001 +_F227 !WORD _C001 + !BYTE $54 ; CALL _A008 +_F228 !WORD _A008 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _A011 +_F229 !WORD _A011 + !BYTE $30 ; DROP +_B141 + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +_B139 +; vmsrc/apple/cmd.pla: 1368: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmd.pla: 1369: // +; vmsrc/apple/cmd.pla: 1370: // Dummy definition to get free heap +; vmsrc/apple/cmd.pla: 1371: // +; vmsrc/apple/cmd.pla: 1372: def lastdef#0 +_C027 ; lastdef() + JSR INTERP +; vmsrc/apple/cmd.pla: 1373: end + !BYTE $5C ; RET +; vmsrc/apple/cmd.pla: 1374: // +; vmsrc/apple/cmd.pla: 1375: // Get heap start. +; vmsrc/apple/cmd.pla: 1376: // +; vmsrc/apple/cmd.pla: 1377: heap = @lastdef +_INIT + JSR INTERP +; vmsrc/apple/cmd.pla: 1378: // +; vmsrc/apple/cmd.pla: 1379: // Print PLASMA version +; vmsrc/apple/cmd.pla: 1380: // +; vmsrc/apple/cmd.pla: 1381: prstr("PLASMA 2.0 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout + !BYTE $26 ; LA _C027+0 +_F230 !WORD _C027+0 + !BYTE $7A ; SAW _D071+0 +_F231 !WORD _D071+0 + !BYTE $2E ; CS + !BYTE $0F + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$32 + !BYTE $2E,$30,$20,$36,$34,$4B,$0D + !BYTE $54 ; CALL _A008 +_F232 !WORD _A008 +; vmsrc/apple/cmd.pla: 1382: // +; vmsrc/apple/cmd.pla: 1383: // Init symbol table. +; vmsrc/apple/cmd.pla: 1384: // +; vmsrc/apple/cmd.pla: 1385: while *sysmodsym + !BYTE $50 ; BRNCH _B165 + !WORD _B165-* +_B163 +; vmsrc/apple/cmd.pla: 1386: stodci(sysmodsym=>0, heap) +; vmsrc/apple/cmd.pla: 1387: addsym(heap, sysmodsym=>2) +; vmsrc/apple/cmd.pla: 1388: sysmodsym = sysmodsym + 4 +; vmsrc/apple/cmd.pla: 1389: loop + !BYTE $6A ; LAW _D069+0 +_F233 !WORD _D069+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D071+0 +_F234 !WORD _D071+0 + !BYTE $54 ; CALL _A019 +_F235 !WORD _A019 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D071+0 +_F236 !WORD _D071+0 + !BYTE $6A ; LAW _D069+0 +_F237 !WORD _D069+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C011 +_F238 !WORD _C011 + !BYTE $6A ; LAW _D069+0 +_F239 !WORD _D069+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $7A ; SAW _D069+0 +_F240 !WORD _D069+0 +_B165 + !BYTE $6A ; LAW _D069+0 +_F241 !WORD _D069+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B163 + !WORD _B163-* +_B164 +; vmsrc/apple/cmd.pla: 1390: // +; vmsrc/apple/cmd.pla: 1391: // Set system path +; vmsrc/apple/cmd.pla: 1392: // +; vmsrc/apple/cmd.pla: 1393: strcat(strcpy(@sysmods, $300), "SYS/")) // This is the path to CMD + !BYTE $26 ; LA _D068+0 +_F242 !WORD _D068+0 + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $54 ; CALL _C012 +_F243 !WORD _C012 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$59,$53,$2F + !BYTE $54 ; CALL _C013 +_F244 !WORD _C013 + !BYTE $30 ; DROP +; vmsrc/apple/cmd.pla: 1394: syspath = @sysmods // Update external interface table +; vmsrc/apple/cmd.pla: 1395: syscmdln = @cmdln +; vmsrc/apple/cmd.pla: 1396: // +; vmsrc/apple/cmd.pla: 1397: // Try to load autorun. +; vmsrc/apple/cmd.pla: 1398: // +; vmsrc/apple/cmd.pla: 1399: autorun = open(@autorun) +; vmsrc/apple/cmd.pla: 1400: if autorun +; vmsrc/apple/cmd.pla: 1401: cmdln = read(autorun, @cmdln+1, 81) +; vmsrc/apple/cmd.pla: 1402: strcpy(getlnbuf, @cmdln) +; vmsrc/apple/cmd.pla: 1403: close(0) +; vmsrc/apple/cmd.pla: 1404: else + !BYTE $26 ; LA _D068+0 +_F245 !WORD _D068+0 + !BYTE $7A ; SAW _D032+0 +_F246 !WORD _D032+0 + !BYTE $26 ; LA _D037+0 +_F247 !WORD _D037+0 + !BYTE $7A ; SAW _D033+0 +_F248 !WORD _D033+0 + !BYTE $26 ; LA _D038+0 +_F249 !WORD _D038+0 + !BYTE $54 ; CALL _C002 +_F250 !WORD _C002 + !BYTE $7C ; DAB _D038+0 +_F251 !WORD _D038+0 + !BYTE $4C ; BRFLS _B166 + !WORD _B166-* + !BYTE $68 ; LAB _D038+0 +_F252 !WORD _D038+0 + !BYTE $26 ; LA _D037+1 +_F253 !WORD _D037+1 + !BYTE $2A,$51 ; CB 81 + !BYTE $54 ; CALL _C004 +_F254 !WORD _C004 + !BYTE $78 ; SAB _D037+0 +_F255 !WORD _D037+0 + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $26 ; LA _D037+0 +_F256 !WORD _D037+0 + !BYTE $54 ; CALL _C012 +_F257 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C003 +_F258 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B167 + !WORD _B167-* +_B166 +; vmsrc/apple/cmd.pla: 1405: ^getlnbuf = 0 +; vmsrc/apple/cmd.pla: 1406: // +; vmsrc/apple/cmd.pla: 1407: // Print some startup info. +; vmsrc/apple/cmd.pla: 1408: // +; vmsrc/apple/cmd.pla: 1409: prstr("MEM FREE:$"); prword(availheap); crout + !BYTE $00 ; CN 0 + !BYTE $78,$FF,$01 ; SAB 511 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $4D,$45,$4D,$20,$46,$52,$45,$45 + !BYTE $3A,$24 + !BYTE $54 ; CALL _A008 +_F259 !WORD _A008 +; vmsrc/apple/cmd.pla: 1410: fin + !BYTE $54 ; CALL _C006 +_F260 !WORD _C006 + !BYTE $54 ; CALL _A009 +_F261 !WORD _A009 + !BYTE $54 ; CALL _A005 +_F262 !WORD _A005 +_B167 +; vmsrc/apple/cmd.pla: 1411: docmds +; vmsrc/apple/cmd.pla: 1412: done + !BYTE $54 ; CALL _C026 +_F263 !WORD _C026 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 diff --git a/src/vmsrc/apple/cmdjit.a b/src/vmsrc/apple/cmdjit.a new file mode 100644 index 0000000..723a51a --- /dev/null +++ b/src/vmsrc/apple/cmdjit.a @@ -0,0 +1,4201 @@ +; ACME COMPATIBLE OUTPUT + JMP _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/cmdjit.pla: 0001: const MACHID = $BF98 + ; MACHID = 49048 +; vmsrc/apple/cmdjit.pla: 0002: const iobuffer = $0800 + ; iobuffer = 2048 +; vmsrc/apple/cmdjit.pla: 0003: const RELADDR = $1000 + ; RELADDR = 4096 +; vmsrc/apple/cmdjit.pla: 0004: const symtbl = $0C00 + ; symtbl = 3072 +; vmsrc/apple/cmdjit.pla: 0005: const freemem = $0006 + ; freemem = 6 +; vmsrc/apple/cmdjit.pla: 0006: const getlnbuf = $01FF + ; getlnbuf = 511 +; vmsrc/apple/cmdjit.pla: 0007: // +; vmsrc/apple/cmdjit.pla: 0008: // System flags: memory allocator screen holes. +; vmsrc/apple/cmdjit.pla: 0009: // +; vmsrc/apple/cmdjit.pla: 0010: const restxt1 = $0001 + ; restxt1 = 1 +; vmsrc/apple/cmdjit.pla: 0011: const restxt2 = $0002 + ; restxt2 = 2 +; vmsrc/apple/cmdjit.pla: 0012: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; vmsrc/apple/cmdjit.pla: 0013: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; vmsrc/apple/cmdjit.pla: 0014: const reshgr1 = $0010 + ; reshgr1 = 16 +; vmsrc/apple/cmdjit.pla: 0015: const reshgr2 = $0020 + ; reshgr2 = 32 +; vmsrc/apple/cmdjit.pla: 0016: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; vmsrc/apple/cmdjit.pla: 0017: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; vmsrc/apple/cmdjit.pla: 0018: const nojitc = $0100 + ; nojitc = 256 +; vmsrc/apple/cmdjit.pla: 0019: // +; vmsrc/apple/cmdjit.pla: 0020: // Module don't free memory +; vmsrc/apple/cmdjit.pla: 0021: // +; vmsrc/apple/cmdjit.pla: 0022: const modkeep = $2000 + ; modkeep = 8192 +; vmsrc/apple/cmdjit.pla: 0023: const modinitkeep = $4000 + ; modinitkeep = 16384 +; vmsrc/apple/cmdjit.pla: 0024: // +; vmsrc/apple/cmdjit.pla: 0025: // Prefix commands +; vmsrc/apple/cmdjit.pla: 0026: // +; vmsrc/apple/cmdjit.pla: 0027: const GET_PFX = $C7 + ; GET_PFX = 199 +; vmsrc/apple/cmdjit.pla: 0028: const SET_PFX = $C6 + ; SET_PFX = 198 +; vmsrc/apple/cmdjit.pla: 0029: // +; vmsrc/apple/cmdjit.pla: 0030: // Indirect interpreter DEFinition entrypoint +; vmsrc/apple/cmdjit.pla: 0031: // +; vmsrc/apple/cmdjit.pla: 0032: struc t_defentry +; vmsrc/apple/cmdjit.pla: 0033: byte interpjsr + ; interpjsr = 0 +; vmsrc/apple/cmdjit.pla: 0034: word interpaddr + ; interpaddr = 1 +; vmsrc/apple/cmdjit.pla: 0035: word bytecodeaddr + ; bytecodeaddr = 3 +; vmsrc/apple/cmdjit.pla: 0036: byte callcount + ; callcount = 5 +; vmsrc/apple/cmdjit.pla: 0037: byte bytecodesize + ; bytecodesize = 6 +; vmsrc/apple/cmdjit.pla: 0038: end + ; t_defentry = 7 +; vmsrc/apple/cmdjit.pla: 0039: // +; vmsrc/apple/cmdjit.pla: 0040: // JIT compiler constants +; vmsrc/apple/cmdjit.pla: 0041: // +; vmsrc/apple/cmdjit.pla: 0042: const jitcbuf = $AF00 + ; jitcbuf = 44800 +; vmsrc/apple/cmdjit.pla: 0043: const jitcomp = $03E2 + ; jitcomp = 994 +; vmsrc/apple/cmdjit.pla: 0044: const jitcodeptr = $03E4 + ; jitcodeptr = 996 +; vmsrc/apple/cmdjit.pla: 0045: const jitmod = $02F0 + ; jitmod = 752 +; vmsrc/apple/cmdjit.pla: 0046: // +; vmsrc/apple/cmdjit.pla: 0047: // Pedefined functions. +; vmsrc/apple/cmdjit.pla: 0048: // +; vmsrc/apple/cmdjit.pla: 0049: predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 +; vmsrc/apple/cmdjit.pla: 0050: predef crout()#0, cout(c)#0, prstr(s)#0, prbyte(b)#0, prword(w)#0, print(i)#0, cin()#1, rdstr(p)#1, toupper(c)#1 +; vmsrc/apple/cmdjit.pla: 0051: predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr)#1, releaseheap(newheap)#1, availheap()#1 +; vmsrc/apple/cmdjit.pla: 0052: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 +; vmsrc/apple/cmdjit.pla: 0053: predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2 +; vmsrc/apple/cmdjit.pla: 0054: predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buf, len)#1 +; vmsrc/apple/cmdjit.pla: 0055: // +; vmsrc/apple/cmdjit.pla: 0056: // Exported CMDSYS table +; vmsrc/apple/cmdjit.pla: 0057: // +; vmsrc/apple/cmdjit.pla: 0058: word version = $0200 // 02.00 Dev +_D030 ; version = $0200 // 02.00 Dev + !WORD $0200 +; vmsrc/apple/cmdjit.pla: 0059: word syspath +_D031 !FILL 2 ; syspath +; vmsrc/apple/cmdjit.pla: 0060: word syscmdln +_D032 !FILL 2 ; syscmdln +; vmsrc/apple/cmdjit.pla: 0061: word = @execmod, @open, @close, @read, 0 // Mark write() as NULL +_F000 !WORD _P026 +_F001 !WORD _P027 +_F002 !WORD _P028 +_F003 !WORD _P029 + !WORD $0000 +; vmsrc/apple/cmdjit.pla: 0062: byte perr +_D033 !FILL 1 ; perr +; vmsrc/apple/cmdjit.pla: 0063: byte jitcount = 0 +_D034 ; jitcount = 0 + !BYTE $00 +; vmsrc/apple/cmdjit.pla: 0064: byte jitsize = 0 +_D035 ; jitsize = 0 + !BYTE $00 +; vmsrc/apple/cmdjit.pla: 0065: // +; vmsrc/apple/cmdjit.pla: 0066: // Working input buffer overlayed with strings table +; vmsrc/apple/cmdjit.pla: 0067: // +; vmsrc/apple/cmdjit.pla: 0068: byte cmdln = "" +_D036 ; cmdln = "" + !BYTE $00 +; vmsrc/apple/cmdjit.pla: 0069: // +; vmsrc/apple/cmdjit.pla: 0070: // Name for auto-run file (must follow cmdln) +; vmsrc/apple/cmdjit.pla: 0071: // +; vmsrc/apple/cmdjit.pla: 0072: byte autorun = "AUTORUN" +_D037 ; autorun = "AUTORUN" + !BYTE $07 + !BYTE $41,$55,$54,$4F,$52,$55,$4E +; vmsrc/apple/cmdjit.pla: 0073: // +; vmsrc/apple/cmdjit.pla: 0074: // Standard Library exported functions. +; vmsrc/apple/cmdjit.pla: 0075: // +; vmsrc/apple/cmdjit.pla: 0076: byte sysmodstr = "CMDSYS" +_D038 ; sysmodstr = "CMDSYS" + !BYTE $06 + !BYTE $43,$4D,$44,$53,$59,$53 +; vmsrc/apple/cmdjit.pla: 0077: byte putsstr = "PUTS" +_D039 ; putsstr = "PUTS" + !BYTE $04 + !BYTE $50,$55,$54,$53 +; vmsrc/apple/cmdjit.pla: 0078: byte putistr = "PUTI" +_D040 ; putistr = "PUTI" + !BYTE $04 + !BYTE $50,$55,$54,$49 +; vmsrc/apple/cmdjit.pla: 0079: byte putcstr = "PUTC" +_D041 ; putcstr = "PUTC" + !BYTE $04 + !BYTE $50,$55,$54,$43 +; vmsrc/apple/cmdjit.pla: 0080: byte putlnstr = "PUTLN" +_D042 ; putlnstr = "PUTLN" + !BYTE $05 + !BYTE $50,$55,$54,$4C,$4E +; vmsrc/apple/cmdjit.pla: 0081: byte putbstr = "PUTB" +_D043 ; putbstr = "PUTB" + !BYTE $04 + !BYTE $50,$55,$54,$42 +; vmsrc/apple/cmdjit.pla: 0082: byte putwstr = "PUTH" +_D044 ; putwstr = "PUTH" + !BYTE $04 + !BYTE $50,$55,$54,$48 +; vmsrc/apple/cmdjit.pla: 0083: byte getcstr = "GETC" +_D045 ; getcstr = "GETC" + !BYTE $04 + !BYTE $47,$45,$54,$43 +; vmsrc/apple/cmdjit.pla: 0084: byte getsstr = "GETS" +_D046 ; getsstr = "GETS" + !BYTE $04 + !BYTE $47,$45,$54,$53 +; vmsrc/apple/cmdjit.pla: 0085: byte toupstr = "TOUPPER" +_D047 ; toupstr = "TOUPPER" + !BYTE $07 + !BYTE $54,$4F,$55,$50,$50,$45,$52 +; vmsrc/apple/cmdjit.pla: 0086: byte strcpystr = "STRCPY" +_D048 ; strcpystr = "STRCPY" + !BYTE $06 + !BYTE $53,$54,$52,$43,$50,$59 +; vmsrc/apple/cmdjit.pla: 0087: byte strcatstr = "STRCAT" +_D049 ; strcatstr = "STRCAT" + !BYTE $06 + !BYTE $53,$54,$52,$43,$41,$54 +; vmsrc/apple/cmdjit.pla: 0088: byte hpmarkstr = "HEAPMARK" +_D050 ; hpmarkstr = "HEAPMARK" + !BYTE $08 + !BYTE $48,$45,$41,$50,$4D,$41,$52,$4B +; vmsrc/apple/cmdjit.pla: 0089: byte hpalignstr = "HEAPALLOCALIGN" +_D051 ; hpalignstr = "HEAPALLOCALIGN" + !BYTE $0E + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43,$41,$4C,$49,$47,$4E +; vmsrc/apple/cmdjit.pla: 0090: byte hpallocstr = "HEAPALLOC" +_D052 ; hpallocstr = "HEAPALLOC" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43 +; vmsrc/apple/cmdjit.pla: 0091: byte hprelstr = "HEAPRELEASE" +_D053 ; hprelstr = "HEAPRELEASE" + !BYTE $0B + !BYTE $48,$45,$41,$50,$52,$45,$4C,$45 + !BYTE $41,$53,$45 +; vmsrc/apple/cmdjit.pla: 0092: byte hpavlstr = "HEAPAVAIL" +_D054 ; hpavlstr = "HEAPAVAIL" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$56,$41,$49 + !BYTE $4C +; vmsrc/apple/cmdjit.pla: 0093: word memsetstr = "MEMSET" +_D055 ; memsetstr = "MEMSET" + !BYTE $06 + !BYTE $4D,$45,$4D,$53,$45,$54 +; vmsrc/apple/cmdjit.pla: 0094: byte memcpystr = "MEMCPY" +_D056 ; memcpystr = "MEMCPY" + !BYTE $06 + !BYTE $4D,$45,$4D,$43,$50,$59 +; vmsrc/apple/cmdjit.pla: 0095: byte uisgtstr = "ISUGT" +_D057 ; uisgtstr = "ISUGT" + !BYTE $05 + !BYTE $49,$53,$55,$47,$54 +; vmsrc/apple/cmdjit.pla: 0096: byte uisgestr = "ISUGE" +_D058 ; uisgestr = "ISUGE" + !BYTE $05 + !BYTE $49,$53,$55,$47,$45 +; vmsrc/apple/cmdjit.pla: 0097: byte uisltstr = "ISULT" +_D059 ; uisltstr = "ISULT" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$54 +; vmsrc/apple/cmdjit.pla: 0098: byte uislestr = "ISULE" +_D060 ; uislestr = "ISULE" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$45 +; vmsrc/apple/cmdjit.pla: 0099: byte sextstr = "SEXT" +_D061 ; sextstr = "SEXT" + !BYTE $04 + !BYTE $53,$45,$58,$54 +; vmsrc/apple/cmdjit.pla: 0100: byte divmodstr = "DIVMOD" +_D062 ; divmodstr = "DIVMOD" + !BYTE $06 + !BYTE $44,$49,$56,$4D,$4F,$44 +; vmsrc/apple/cmdjit.pla: 0101: byte machidstr = "MACHID" +_D063 ; machidstr = "MACHID" + !BYTE $06 + !BYTE $4D,$41,$43,$48,$49,$44 +; vmsrc/apple/cmdjit.pla: 0102: byte sysstr = "SYSCALL" +_D064 ; sysstr = "SYSCALL" + !BYTE $07 + !BYTE $53,$59,$53,$43,$41,$4C,$4C +; vmsrc/apple/cmdjit.pla: 0103: byte callstr = "CALL" +_D065 ; callstr = "CALL" + !BYTE $04 + !BYTE $43,$41,$4C,$4C +; vmsrc/apple/cmdjit.pla: 0104: word exports = @sysmodstr, @version +_D066 ; exports = @sysmodstr, @version +_F004 !WORD _D038 +_F005 !WORD _D030 +; vmsrc/apple/cmdjit.pla: 0105: word = @sysstr, @syscall +_F006 !WORD _D064 +_F007 !WORD _P000 +; vmsrc/apple/cmdjit.pla: 0106: word = @callstr, @call +_F008 !WORD _D065 +_F009 !WORD _P001 +; vmsrc/apple/cmdjit.pla: 0107: word = @putcstr, @cout +_F010 !WORD _D041 +_F011 !WORD _P003 +; vmsrc/apple/cmdjit.pla: 0108: word = @putlnstr, @crout +_F012 !WORD _D042 +_F013 !WORD _P002 +; vmsrc/apple/cmdjit.pla: 0109: word = @putsstr, @prstr +_F014 !WORD _D039 +_F015 !WORD _P004 +; vmsrc/apple/cmdjit.pla: 0110: word = @putbstr, @prbyte +_F016 !WORD _D043 +_F017 !WORD _P005 +; vmsrc/apple/cmdjit.pla: 0111: word = @putwstr, @prword +_F018 !WORD _D044 +_F019 !WORD _P006 +; vmsrc/apple/cmdjit.pla: 0112: word = @putistr, @print +_F020 !WORD _D040 +_F021 !WORD _P007 +; vmsrc/apple/cmdjit.pla: 0113: word = @getcstr, @cin +_F022 !WORD _D045 +_F023 !WORD _P008 +; vmsrc/apple/cmdjit.pla: 0114: word = @getsstr, @rdstr +_F024 !WORD _D046 +_F025 !WORD _P009 +; vmsrc/apple/cmdjit.pla: 0115: word = @toupstr, @toupper +_F026 !WORD _D047 +_F027 !WORD _P010 +; vmsrc/apple/cmdjit.pla: 0116: word = @hpmarkstr, @markheap +_F028 !WORD _D050 +_F029 !WORD _P011 +; vmsrc/apple/cmdjit.pla: 0117: byte sysmods[] // overlay with exported strings +_D067 ; sysmods[] // overlay with exported strings +; vmsrc/apple/cmdjit.pla: 0118: word = @hpallocstr,@allocheap +_F030 !WORD _D052 +_F031 !WORD _P012 +; vmsrc/apple/cmdjit.pla: 0119: word = @hpalignstr,@allocalignheap +_F032 !WORD _D051 +_F033 !WORD _P013 +; vmsrc/apple/cmdjit.pla: 0120: word = @hprelstr, @releaseheap +_F034 !WORD _D053 +_F035 !WORD _P014 +; vmsrc/apple/cmdjit.pla: 0121: word = @hpavlstr, @availheap +_F036 !WORD _D054 +_F037 !WORD _P015 +; vmsrc/apple/cmdjit.pla: 0122: word = @memsetstr, @memset +_F038 !WORD _D055 +_F039 !WORD _P016 +; vmsrc/apple/cmdjit.pla: 0123: word = @memcpystr, @memcpy +_F040 !WORD _D056 +_F041 !WORD _P017 +; vmsrc/apple/cmdjit.pla: 0124: word = @uisgtstr, @uword_isgt +_F042 !WORD _D057 +_F043 !WORD _P020 +; vmsrc/apple/cmdjit.pla: 0125: word = @uisgestr, @uword_isge +_F044 !WORD _D058 +_F045 !WORD _P021 +; vmsrc/apple/cmdjit.pla: 0126: word = @uisltstr, @uword_islt +_F046 !WORD _D059 +_F047 !WORD _P022 +; vmsrc/apple/cmdjit.pla: 0127: word = @uislestr, @uword_isle +_F048 !WORD _D060 +_F049 !WORD _P023 +; vmsrc/apple/cmdjit.pla: 0128: word = @strcpystr, @strcpy +_F050 !WORD _D048 +_F051 !WORD _P018 +; vmsrc/apple/cmdjit.pla: 0129: word = @strcatstr, @strcat +_F052 !WORD _D049 +_F053 !WORD _P019 +; vmsrc/apple/cmdjit.pla: 0130: word = @sextstr, @sext +_F054 !WORD _D061 +_F055 !WORD _P024 +; vmsrc/apple/cmdjit.pla: 0131: word = @divmodstr, @divmod +_F056 !WORD _D062 +_F057 !WORD _P025 +; vmsrc/apple/cmdjit.pla: 0132: word = @machidstr, MACHID +_F058 !WORD _D063 + !WORD $BF98 +; vmsrc/apple/cmdjit.pla: 0133: word = 0 + !WORD $0000 +; vmsrc/apple/cmdjit.pla: 0134: word sysmodsym = @exports +_D068 ; sysmodsym = @exports +_F059 !WORD _D066 +; vmsrc/apple/cmdjit.pla: 0135: // +; vmsrc/apple/cmdjit.pla: 0136: // System variable. +; vmsrc/apple/cmdjit.pla: 0137: // +; vmsrc/apple/cmdjit.pla: 0138: word systemflags = 0 +_D069 ; systemflags = 0 + !WORD $0000 +; vmsrc/apple/cmdjit.pla: 0139: word heap +_D070 !FILL 2 ; heap +; vmsrc/apple/cmdjit.pla: 0140: word xheap = $A000 // Set load address for JIT compiler +_D071 ; xheap = $A000 // Set load address for JIT compiler + !WORD $A000 +; vmsrc/apple/cmdjit.pla: 0141: word xheaptop = $C000 +_D072 ; xheaptop = $C000 + !WORD $C000 +; vmsrc/apple/cmdjit.pla: 0142: word lastsym = symtbl +_D073 ; lastsym = symtbl + !WORD $0C00 +; vmsrc/apple/cmdjit.pla: 0143: // +; vmsrc/apple/cmdjit.pla: 0144: // Utility functions +; vmsrc/apple/cmdjit.pla: 0145: // +; vmsrc/apple/cmdjit.pla: 0146: //asm equates included from cmdstub.s +; vmsrc/apple/cmdjit.pla: 0147: // +; vmsrc/apple/cmdjit.pla: 0148: // CALL PRODOS +; vmsrc/apple/cmdjit.pla: 0149: // SYSCALL(CMD, PARAMS) +; vmsrc/apple/cmdjit.pla: 0150: // +; vmsrc/apple/cmdjit.pla: 0151: asm syscall(cmd,params)#1 +_P000 ; syscall(cmd,params)#1() +_A000 ; syscall() +; vmsrc/apple/cmdjit.pla: 0152: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0153: LDY ESTKH,X + LDY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0154: STA PARAMS + STA PARAMS +; vmsrc/apple/cmdjit.pla: 0155: STY PARAMS+1 + STY PARAMS+1 +; vmsrc/apple/cmdjit.pla: 0156: INX + INX +; vmsrc/apple/cmdjit.pla: 0157: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0158: STA CMD + STA CMD +; vmsrc/apple/cmdjit.pla: 0159: JSR $BF00 + JSR $BF00 +; vmsrc/apple/cmdjit.pla: 0160: CMD: !BYTE 00 +CMD: !BYTE 00 +; vmsrc/apple/cmdjit.pla: 0161: PARAMS: !WORD 0000 +PARAMS: !WORD 0000 +; vmsrc/apple/cmdjit.pla: 0162: ; LDY #$00 +; LDY #$00 +; vmsrc/apple/cmdjit.pla: 0163: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0164: ; STY ESTKH,X +; STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0165: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0166: end +; vmsrc/apple/cmdjit.pla: 0167: // +; vmsrc/apple/cmdjit.pla: 0168: // CALL 6502 ROUTINE +; vmsrc/apple/cmdjit.pla: 0169: // CALL(ADDR, AREG, XREG, YREG, STATUS) +; vmsrc/apple/cmdjit.pla: 0170: // +; vmsrc/apple/cmdjit.pla: 0171: asm call(addr,areg,xreg,yreg,status)#1 +_P001 ; call(addr,areg,xreg,yreg,status)#1() +_A001 ; call() +; vmsrc/apple/cmdjit.pla: 0172: REGVALS = SRC +REGVALS = SRC +; vmsrc/apple/cmdjit.pla: 0173: PHP + PHP +; vmsrc/apple/cmdjit.pla: 0174: LDA ESTKL+4,X + LDA ESTKL+4,X +; vmsrc/apple/cmdjit.pla: 0175: STA TMPL + STA TMPL +; vmsrc/apple/cmdjit.pla: 0176: LDA ESTKH+4,X + LDA ESTKH+4,X +; vmsrc/apple/cmdjit.pla: 0177: STA TMPH + STA TMPH +; vmsrc/apple/cmdjit.pla: 0178: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0179: PHA + PHA +; vmsrc/apple/cmdjit.pla: 0180: LDY ESTKL+1,X + LDY ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0181: LDA ESTKL+3,X + LDA ESTKL+3,X +; vmsrc/apple/cmdjit.pla: 0182: PHA + PHA +; vmsrc/apple/cmdjit.pla: 0183: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/cmdjit.pla: 0184: INX + INX +; vmsrc/apple/cmdjit.pla: 0185: INX + INX +; vmsrc/apple/cmdjit.pla: 0186: INX + INX +; vmsrc/apple/cmdjit.pla: 0187: INX + INX +; vmsrc/apple/cmdjit.pla: 0188: STX ESP + STX ESP +; vmsrc/apple/cmdjit.pla: 0189: TAX + TAX +; vmsrc/apple/cmdjit.pla: 0190: PLA + PLA +; vmsrc/apple/cmdjit.pla: 0191: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0192: PLP + PLP +; vmsrc/apple/cmdjit.pla: 0193: JSR JMPTMP + JSR JMPTMP +; vmsrc/apple/cmdjit.pla: 0194: PHP + PHP +; vmsrc/apple/cmdjit.pla: 0195: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0196: STA REGVALS+0 + STA REGVALS+0 +; vmsrc/apple/cmdjit.pla: 0197: STX REGVALS+1 + STX REGVALS+1 +; vmsrc/apple/cmdjit.pla: 0198: STY REGVALS+2 + STY REGVALS+2 +; vmsrc/apple/cmdjit.pla: 0199: PLA + PLA +; vmsrc/apple/cmdjit.pla: 0200: STA REGVALS+3 + STA REGVALS+3 +; vmsrc/apple/cmdjit.pla: 0201: LDX ESP + LDX ESP +; vmsrc/apple/cmdjit.pla: 0202: LDA #REGVALS + LDY #>REGVALS +; vmsrc/apple/cmdjit.pla: 0204: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0205: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0206: PLP + PLP +; vmsrc/apple/cmdjit.pla: 0207: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0208: end +; vmsrc/apple/cmdjit.pla: 0209: // +; vmsrc/apple/cmdjit.pla: 0210: // CALL LOADED SYSTEM PROGRAM +; vmsrc/apple/cmdjit.pla: 0211: // +; vmsrc/apple/cmdjit.pla: 0212: asm exec()#0 +_A002 ; exec() +; vmsrc/apple/cmdjit.pla: 0213: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0214: JMP $2000 + JMP $2000 +; vmsrc/apple/cmdjit.pla: 0215: end +; vmsrc/apple/cmdjit.pla: 0216: // +; vmsrc/apple/cmdjit.pla: 0217: // SET MEMORY TO VALUE +; vmsrc/apple/cmdjit.pla: 0218: // MEMSET(ADDR, VALUE, SIZE) +; vmsrc/apple/cmdjit.pla: 0219: // With optimizations from Peter Ferrie +; vmsrc/apple/cmdjit.pla: 0220: // +; vmsrc/apple/cmdjit.pla: 0221: asm memset(addr,value,size)#0 +_P016 ; memset(addr,value,size)#0() +_A003 ; memset() +; vmsrc/apple/cmdjit.pla: 0222: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/cmdjit.pla: 0223: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0224: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/cmdjit.pla: 0225: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0226: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/cmdjit.pla: 0227: BEQ + + BEQ + +; vmsrc/apple/cmdjit.pla: 0228: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/cmdjit.pla: 0229: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0230: + LDA ESTKH,X ++ LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0231: BEQ SETMEX + BEQ SETMEX +; vmsrc/apple/cmdjit.pla: 0232: SETMLPL CLC +SETMLPL CLC +; vmsrc/apple/cmdjit.pla: 0233: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0234: SETMLPH STA (DST),Y +SETMLPH STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0235: DEC ESTKL,X + DEC ESTKL,X +; vmsrc/apple/cmdjit.pla: 0236: BEQ ++ + BEQ ++ +; vmsrc/apple/cmdjit.pla: 0237: - INY +- INY +; vmsrc/apple/cmdjit.pla: 0238: BEQ + + BEQ + +; vmsrc/apple/cmdjit.pla: 0239: -- BCS SETMLPL +-- BCS SETMLPL +; vmsrc/apple/cmdjit.pla: 0240: SEC + SEC +; vmsrc/apple/cmdjit.pla: 0241: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0242: BCS SETMLPH + BCS SETMLPH +; vmsrc/apple/cmdjit.pla: 0243: + INC DSTH ++ INC DSTH +; vmsrc/apple/cmdjit.pla: 0244: BNE -- + BNE -- +; vmsrc/apple/cmdjit.pla: 0245: ++ DEC ESTKH,X +++ DEC ESTKH,X +; vmsrc/apple/cmdjit.pla: 0246: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0247: SETMEX INX +SETMEX INX +; vmsrc/apple/cmdjit.pla: 0248: INX + INX +; vmsrc/apple/cmdjit.pla: 0249: INX + INX +; vmsrc/apple/cmdjit.pla: 0250: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0251: end +; vmsrc/apple/cmdjit.pla: 0252: // +; vmsrc/apple/cmdjit.pla: 0253: // COPY MEMORY +; vmsrc/apple/cmdjit.pla: 0254: // MEMCPY(DSTADDR, SRCADDR, SIZE) +; vmsrc/apple/cmdjit.pla: 0255: // +; vmsrc/apple/cmdjit.pla: 0256: asm memcpy(dst,src,size)#0 +_P017 ; memcpy(dst,src,size)#0() +_A004 ; memcpy() +; vmsrc/apple/cmdjit.pla: 0257: INX + INX +; vmsrc/apple/cmdjit.pla: 0258: INX + INX +; vmsrc/apple/cmdjit.pla: 0259: INX + INX +; vmsrc/apple/cmdjit.pla: 0260: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0261: ORA ESTKH-3,X + ORA ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0262: BEQ CPYMEX + BEQ CPYMEX +; vmsrc/apple/cmdjit.pla: 0263: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/cmdjit.pla: 0264: CMP ESTKL-1,X + CMP ESTKL-1,X +; vmsrc/apple/cmdjit.pla: 0265: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/cmdjit.pla: 0266: SBC ESTKH-1,X + SBC ESTKH-1,X +; vmsrc/apple/cmdjit.pla: 0267: BCC REVCPY + BCC REVCPY +; vmsrc/apple/cmdjit.pla: 0268: ; +; vmsrc/apple/cmdjit.pla: 0269: ; FORWARD COPY +; FORWARD COPY +; vmsrc/apple/cmdjit.pla: 0270: ; +; vmsrc/apple/cmdjit.pla: 0271: LDA ESTKL-1,X + LDA ESTKL-1,X +; vmsrc/apple/cmdjit.pla: 0272: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0273: LDA ESTKH-1,X + LDA ESTKH-1,X +; vmsrc/apple/cmdjit.pla: 0274: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0275: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/cmdjit.pla: 0276: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0277: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/cmdjit.pla: 0278: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0279: LDY ESTKL-3,X + LDY ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0280: BEQ FORCPYLP + BEQ FORCPYLP +; vmsrc/apple/cmdjit.pla: 0281: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0282: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0283: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0284: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0285: INY + INY +; vmsrc/apple/cmdjit.pla: 0286: BNE + + BNE + +; vmsrc/apple/cmdjit.pla: 0287: INC DSTH + INC DSTH +; vmsrc/apple/cmdjit.pla: 0288: INC SRCH + INC SRCH +; vmsrc/apple/cmdjit.pla: 0289: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0290: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/cmdjit.pla: 0291: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0292: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/cmdjit.pla: 0293: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0294: ; +; vmsrc/apple/cmdjit.pla: 0295: ; REVERSE COPY +; REVERSE COPY +; vmsrc/apple/cmdjit.pla: 0296: ; +; vmsrc/apple/cmdjit.pla: 0297: REVCPY ;CLC +REVCPY ;CLC +; vmsrc/apple/cmdjit.pla: 0298: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0299: ADC ESTKL-1,X + ADC ESTKL-1,X +; vmsrc/apple/cmdjit.pla: 0300: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0301: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0302: ADC ESTKH-1,X + ADC ESTKH-1,X +; vmsrc/apple/cmdjit.pla: 0303: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0304: CLC + CLC +; vmsrc/apple/cmdjit.pla: 0305: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0306: ADC ESTKL-2,X + ADC ESTKL-2,X +; vmsrc/apple/cmdjit.pla: 0307: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0308: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0309: ADC ESTKH-2,X + ADC ESTKH-2,X +; vmsrc/apple/cmdjit.pla: 0310: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0311: DEC DSTH + DEC DSTH +; vmsrc/apple/cmdjit.pla: 0312: DEC SRCH + DEC SRCH +; vmsrc/apple/cmdjit.pla: 0313: LDY #$FF + LDY #$FF +; vmsrc/apple/cmdjit.pla: 0314: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0315: BEQ REVCPYLP + BEQ REVCPYLP +; vmsrc/apple/cmdjit.pla: 0316: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0317: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0318: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0319: DEY + DEY +; vmsrc/apple/cmdjit.pla: 0320: CPY #$FF + CPY #$FF +; vmsrc/apple/cmdjit.pla: 0321: BNE + + BNE + +; vmsrc/apple/cmdjit.pla: 0322: DEC DSTH + DEC DSTH +; vmsrc/apple/cmdjit.pla: 0323: DEC SRCH + DEC SRCH +; vmsrc/apple/cmdjit.pla: 0324: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/cmdjit.pla: 0325: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/cmdjit.pla: 0326: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/cmdjit.pla: 0327: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/cmdjit.pla: 0328: CPYMEX RTS +CPYMEX RTS +; vmsrc/apple/cmdjit.pla: 0329: end +; vmsrc/apple/cmdjit.pla: 0330: asm crout()#0 +_P002 ; crout()#0() +_A005 ; crout() +; vmsrc/apple/cmdjit.pla: 0331: LDA #$8D + LDA #$8D +; vmsrc/apple/cmdjit.pla: 0332: BNE ++ + BNE ++ +; vmsrc/apple/cmdjit.pla: 0333: end +; vmsrc/apple/cmdjit.pla: 0334: // +; vmsrc/apple/cmdjit.pla: 0335: // CHAR OUT +; vmsrc/apple/cmdjit.pla: 0336: // COUT(CHAR) +; vmsrc/apple/cmdjit.pla: 0337: // +; vmsrc/apple/cmdjit.pla: 0338: asm cout(c)#0 +_P003 ; cout(c)#0() +_A006 ; cout() +; vmsrc/apple/cmdjit.pla: 0339: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0340: BIT $BF98 + BIT $BF98 +; vmsrc/apple/cmdjit.pla: 0341: BMI + + BMI + +; vmsrc/apple/cmdjit.pla: 0342: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmdjit.pla: 0343: + ORA #$80 ++ ORA #$80 +; vmsrc/apple/cmdjit.pla: 0344: INX + INX +; vmsrc/apple/cmdjit.pla: 0345: ++ BIT ROMEN +++ BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0346: JSR $FDED + JSR $FDED +; vmsrc/apple/cmdjit.pla: 0347: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0348: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0349: end +; vmsrc/apple/cmdjit.pla: 0350: // +; vmsrc/apple/cmdjit.pla: 0351: // CHAR IN +; vmsrc/apple/cmdjit.pla: 0352: // RDKEY() +; vmsrc/apple/cmdjit.pla: 0353: // +; vmsrc/apple/cmdjit.pla: 0354: asm cin()#1 +_P008 ; cin()#1() +_A007 ; cin() +; vmsrc/apple/cmdjit.pla: 0355: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0356: JSR $FD0C + JSR $FD0C +; vmsrc/apple/cmdjit.pla: 0357: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0358: DEX + DEX +; vmsrc/apple/cmdjit.pla: 0359: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0360: AND #$7F + AND #$7F +; vmsrc/apple/cmdjit.pla: 0361: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0362: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0363: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0364: end +; vmsrc/apple/cmdjit.pla: 0365: // +; vmsrc/apple/cmdjit.pla: 0366: // PRINT STRING +; vmsrc/apple/cmdjit.pla: 0367: // PRSTR(STR) +; vmsrc/apple/cmdjit.pla: 0368: // +; vmsrc/apple/cmdjit.pla: 0369: asm prstr(s)#0 +_P004 ; prstr(s)#0() +_A008 ; prstr() +; vmsrc/apple/cmdjit.pla: 0370: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0371: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0372: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0373: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0374: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0375: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0376: BEQ ++ + BEQ ++ +; vmsrc/apple/cmdjit.pla: 0377: STA TMP + STA TMP +; vmsrc/apple/cmdjit.pla: 0378: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0379: - INY +- INY +; vmsrc/apple/cmdjit.pla: 0380: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0381: BIT $BF98 + BIT $BF98 +; vmsrc/apple/cmdjit.pla: 0382: BMI + + BMI + +; vmsrc/apple/cmdjit.pla: 0383: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmdjit.pla: 0384: + ORA #$80 ++ ORA #$80 +; vmsrc/apple/cmdjit.pla: 0385: JSR $FDED + JSR $FDED +; vmsrc/apple/cmdjit.pla: 0386: CPY TMP + CPY TMP +; vmsrc/apple/cmdjit.pla: 0387: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0388: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0389: ++ INX +++ INX +; vmsrc/apple/cmdjit.pla: 0390: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0391: end +; vmsrc/apple/cmdjit.pla: 0392: // +; vmsrc/apple/cmdjit.pla: 0393: // PRINT WORD +; vmsrc/apple/cmdjit.pla: 0394: // +; vmsrc/apple/cmdjit.pla: 0395: asm prword(w)#0 +_P006 ; prword(w)#0() +_A009 ; prword() +; vmsrc/apple/cmdjit.pla: 0396: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0397: JSR + + JSR + +; vmsrc/apple/cmdjit.pla: 0398: DEX + DEX +; vmsrc/apple/cmdjit.pla: 0399: ; FALL THROUGH TO PRBYTE + ; FALL THROUGH TO PRBYTE +; vmsrc/apple/cmdjit.pla: 0400: end +; vmsrc/apple/cmdjit.pla: 0401: // +; vmsrc/apple/cmdjit.pla: 0402: // PRINT BYTE +; vmsrc/apple/cmdjit.pla: 0403: // +; vmsrc/apple/cmdjit.pla: 0404: asm prbyte(b)#0 +_P005 ; prbyte(b)#0() +_A010 ; prbyte() +; vmsrc/apple/cmdjit.pla: 0405: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0406: + STX ESP ++ STX ESP +; vmsrc/apple/cmdjit.pla: 0407: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0408: JSR $FDDA + JSR $FDDA +; vmsrc/apple/cmdjit.pla: 0409: LDX ESP + LDX ESP +; vmsrc/apple/cmdjit.pla: 0410: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0411: INX + INX +; vmsrc/apple/cmdjit.pla: 0412: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0413: end +; vmsrc/apple/cmdjit.pla: 0414: // +; vmsrc/apple/cmdjit.pla: 0415: // READ STRING +; vmsrc/apple/cmdjit.pla: 0416: // STR = RDSTR(PROMPTCHAR) +; vmsrc/apple/cmdjit.pla: 0417: // +; vmsrc/apple/cmdjit.pla: 0418: asm rdstr(p)#1 +_P009 ; rdstr(p)#1() +_A011 ; rdstr() +; vmsrc/apple/cmdjit.pla: 0419: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0420: STA $33 + STA $33 +; vmsrc/apple/cmdjit.pla: 0421: STX ESP + STX ESP +; vmsrc/apple/cmdjit.pla: 0422: BIT ROMEN + BIT ROMEN +; vmsrc/apple/cmdjit.pla: 0423: JSR $FD6A + JSR $FD6A +; vmsrc/apple/cmdjit.pla: 0424: STX $01FF + STX $01FF +; vmsrc/apple/cmdjit.pla: 0425: - LDA $01FF,X +- LDA $01FF,X +; vmsrc/apple/cmdjit.pla: 0426: AND #$7F + AND #$7F +; vmsrc/apple/cmdjit.pla: 0427: STA $01FF,X + STA $01FF,X +; vmsrc/apple/cmdjit.pla: 0428: DEX + DEX +; vmsrc/apple/cmdjit.pla: 0429: BPL - + BPL - +; vmsrc/apple/cmdjit.pla: 0430: TXA + TXA +; vmsrc/apple/cmdjit.pla: 0431: LDX ESP + LDX ESP +; vmsrc/apple/cmdjit.pla: 0432: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0433: LDA #$01 + LDA #$01 +; vmsrc/apple/cmdjit.pla: 0434: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0435: BIT LCRDEN+LCBNK2 + BIT LCRDEN+LCBNK2 +; vmsrc/apple/cmdjit.pla: 0436: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0437: end +; vmsrc/apple/cmdjit.pla: 0438: asm uword_isge(a,b)#1 +_P021 ; uword_isge(a,b)#1() +_A012 ; uword_isge() +; vmsrc/apple/cmdjit.pla: 0439: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0440: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmdjit.pla: 0441: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0442: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/cmdjit.pla: 0443: LDA #$FF + LDA #$FF +; vmsrc/apple/cmdjit.pla: 0444: ADC #$00 + ADC #$00 +; vmsrc/apple/cmdjit.pla: 0445: EOR #$FF + EOR #$FF +; vmsrc/apple/cmdjit.pla: 0446: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0447: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0448: INX + INX +; vmsrc/apple/cmdjit.pla: 0449: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0450: end +; vmsrc/apple/cmdjit.pla: 0451: asm uword_isle(a,b)#1 +_P023 ; uword_isle(a,b)#1() +_A013 ; uword_isle() +; vmsrc/apple/cmdjit.pla: 0452: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0453: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0454: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0455: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0456: LDA #$FF + LDA #$FF +; vmsrc/apple/cmdjit.pla: 0457: ADC #$00 + ADC #$00 +; vmsrc/apple/cmdjit.pla: 0458: EOR #$FF + EOR #$FF +; vmsrc/apple/cmdjit.pla: 0459: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0460: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0461: INX + INX +; vmsrc/apple/cmdjit.pla: 0462: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0463: end +; vmsrc/apple/cmdjit.pla: 0464: asm uword_isgt(a,b)#1 +_P020 ; uword_isgt(a,b)#1() +_A014 ; uword_isgt() +; vmsrc/apple/cmdjit.pla: 0465: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0466: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0467: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0468: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0469: LDA #$FF + LDA #$FF +; vmsrc/apple/cmdjit.pla: 0470: ADC #$00 + ADC #$00 +; vmsrc/apple/cmdjit.pla: 0471: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0472: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0473: INX + INX +; vmsrc/apple/cmdjit.pla: 0474: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0475: end +; vmsrc/apple/cmdjit.pla: 0476: asm uword_islt(a,b)#1 +_P022 ; uword_islt(a,b)#1() +_A015 ; uword_islt() +; vmsrc/apple/cmdjit.pla: 0477: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0478: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmdjit.pla: 0479: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0480: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/cmdjit.pla: 0481: LDA #$FF + LDA #$FF +; vmsrc/apple/cmdjit.pla: 0482: ADC #$00 + ADC #$00 +; vmsrc/apple/cmdjit.pla: 0483: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0484: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0485: INX + INX +; vmsrc/apple/cmdjit.pla: 0486: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0487: end +; vmsrc/apple/cmdjit.pla: 0488: asm divmod(a,b)#2 +_P025 ; divmod(a,b)#2() +_A016 ; divmod() +; vmsrc/apple/cmdjit.pla: 0489: JSR INTERP ; CALL INTERP + JSR INTERP ; CALL INTERP +; vmsrc/apple/cmdjit.pla: 0490: !BYTE $36, $5C ; DIVMOD, RET + !BYTE $36, $5C ; DIVMOD, RET +; vmsrc/apple/cmdjit.pla: 0491: end +; vmsrc/apple/cmdjit.pla: 0492: asm sext(a)#1 +_P024 ; sext(a)#1() +_A017 ; sext() +; vmsrc/apple/cmdjit.pla: 0493: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0494: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0495: BPL + + BPL + +; vmsrc/apple/cmdjit.pla: 0496: DEY + DEY +; vmsrc/apple/cmdjit.pla: 0497: + STY ESTKH,X ++ STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0498: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0499: end +; vmsrc/apple/cmdjit.pla: 0500: // +; vmsrc/apple/cmdjit.pla: 0501: // Utility routines. +; vmsrc/apple/cmdjit.pla: 0502: // +; vmsrc/apple/cmdjit.pla: 0503: // A DCI string is one that has the high bit set for every character except the last. +; vmsrc/apple/cmdjit.pla: 0504: // More efficient than C or Pascal strings. +; vmsrc/apple/cmdjit.pla: 0505: // +; vmsrc/apple/cmdjit.pla: 0506: //def dcitos(dci, str) +; vmsrc/apple/cmdjit.pla: 0507: // byte len, c +; vmsrc/apple/cmdjit.pla: 0508: // len = 0 +; vmsrc/apple/cmdjit.pla: 0509: // repeat +; vmsrc/apple/cmdjit.pla: 0510: // c = (dci).[len] +; vmsrc/apple/cmdjit.pla: 0511: // len = len + 1 +; vmsrc/apple/cmdjit.pla: 0512: // (str).[len] = c & $7F +; vmsrc/apple/cmdjit.pla: 0513: // until !(c & $80) +; vmsrc/apple/cmdjit.pla: 0514: // ^str = len +; vmsrc/apple/cmdjit.pla: 0515: // return len +; vmsrc/apple/cmdjit.pla: 0516: //end +; vmsrc/apple/cmdjit.pla: 0517: asm dcitos(dci, str)#1 +_A018 ; dcitos() +; vmsrc/apple/cmdjit.pla: 0518: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0519: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0520: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0521: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0522: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0523: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0524: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0525: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0526: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0527: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0528: CMP #$80 + CMP #$80 +; vmsrc/apple/cmdjit.pla: 0529: AND #$7F + AND #$7F +; vmsrc/apple/cmdjit.pla: 0530: INY + INY +; vmsrc/apple/cmdjit.pla: 0531: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0532: BCS - + BCS - +; vmsrc/apple/cmdjit.pla: 0533: TYA + TYA +; vmsrc/apple/cmdjit.pla: 0534: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0535: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0536: INX + INX +; vmsrc/apple/cmdjit.pla: 0537: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0538: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0539: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0540: end +; vmsrc/apple/cmdjit.pla: 0541: //def stodci(str, dci) +; vmsrc/apple/cmdjit.pla: 0542: // byte len, c +; vmsrc/apple/cmdjit.pla: 0543: // len = ^str +; vmsrc/apple/cmdjit.pla: 0544: // if len == 0 +; vmsrc/apple/cmdjit.pla: 0545: // return +; vmsrc/apple/cmdjit.pla: 0546: // fin +; vmsrc/apple/cmdjit.pla: 0547: // c = toupper((str).[len]) & $7F +; vmsrc/apple/cmdjit.pla: 0548: // len = len - 1 +; vmsrc/apple/cmdjit.pla: 0549: // (dci).[len] = c +; vmsrc/apple/cmdjit.pla: 0550: // while len +; vmsrc/apple/cmdjit.pla: 0551: // c = toupper((str).[len]) | $80 +; vmsrc/apple/cmdjit.pla: 0552: // len = len - 1 +; vmsrc/apple/cmdjit.pla: 0553: // (dci).[len] = c +; vmsrc/apple/cmdjit.pla: 0554: // loop +; vmsrc/apple/cmdjit.pla: 0555: // return ^str +; vmsrc/apple/cmdjit.pla: 0556: //end +; vmsrc/apple/cmdjit.pla: 0557: asm stodci(str,dci)#1 +_A019 ; stodci() +; vmsrc/apple/cmdjit.pla: 0558: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0559: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0560: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0561: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0562: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0563: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0564: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0565: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0566: INX + INX +; vmsrc/apple/cmdjit.pla: 0567: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0568: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0569: BEQ ++ + BEQ ++ +; vmsrc/apple/cmdjit.pla: 0570: TAY + TAY +; vmsrc/apple/cmdjit.pla: 0571: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0572: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmdjit.pla: 0573: BNE + + BNE + +; vmsrc/apple/cmdjit.pla: 0574: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0575: JSR TOUPR + JSR TOUPR +; vmsrc/apple/cmdjit.pla: 0576: ORA #$80 + ORA #$80 +; vmsrc/apple/cmdjit.pla: 0577: + DEY ++ DEY +; vmsrc/apple/cmdjit.pla: 0578: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0579: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0580: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0581: ++ STA ESTKL,X +++ STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0582: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0583: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0584: end +; vmsrc/apple/cmdjit.pla: 0585: asm toupper(c)#1 +_P010 ; toupper(c)#1() +_A020 ; toupper() +; vmsrc/apple/cmdjit.pla: 0586: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0587: TOUPR AND #$7F +TOUPR AND #$7F +; vmsrc/apple/cmdjit.pla: 0588: CMP #'a' + CMP #'a' +; vmsrc/apple/cmdjit.pla: 0589: BCC + + BCC + +; vmsrc/apple/cmdjit.pla: 0590: CMP #'z'+1 + CMP #'z'+1 +; vmsrc/apple/cmdjit.pla: 0591: BCS + + BCS + +; vmsrc/apple/cmdjit.pla: 0592: SBC #$1F + SBC #$1F +; vmsrc/apple/cmdjit.pla: 0593: + STA ESTKL,X ++ STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0594: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0595: end +; vmsrc/apple/cmdjit.pla: 0596: // +; vmsrc/apple/cmdjit.pla: 0597: // Lookup routines. +; vmsrc/apple/cmdjit.pla: 0598: // +; vmsrc/apple/cmdjit.pla: 0599: //def lookuptbl(dci, tbl) +; vmsrc/apple/cmdjit.pla: 0600: // word match +; vmsrc/apple/cmdjit.pla: 0601: // while ^tbl +; vmsrc/apple/cmdjit.pla: 0602: // match = dci +; vmsrc/apple/cmdjit.pla: 0603: // while ^tbl == ^match +; vmsrc/apple/cmdjit.pla: 0604: // if !(^tbl & $80) +; vmsrc/apple/cmdjit.pla: 0605: // return (tbl):1 +; vmsrc/apple/cmdjit.pla: 0606: // fin +; vmsrc/apple/cmdjit.pla: 0607: // tbl = tbl + 1 +; vmsrc/apple/cmdjit.pla: 0608: // match = match + 1 +; vmsrc/apple/cmdjit.pla: 0609: // loop +; vmsrc/apple/cmdjit.pla: 0610: // while (^tbl & $80) +; vmsrc/apple/cmdjit.pla: 0611: // tbl = tbl + 1 +; vmsrc/apple/cmdjit.pla: 0612: // loop +; vmsrc/apple/cmdjit.pla: 0613: // tbl = tbl + 3 +; vmsrc/apple/cmdjit.pla: 0614: // loop +; vmsrc/apple/cmdjit.pla: 0615: // return 0 +; vmsrc/apple/cmdjit.pla: 0616: asm lookuptbl(dci, tbl)#1 +_A021 ; lookuptbl() +; vmsrc/apple/cmdjit.pla: 0617: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0618: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0619: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0620: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0621: INX + INX +; vmsrc/apple/cmdjit.pla: 0622: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0623: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0624: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0625: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0626: -- LDY #$00 +-- LDY #$00 +; vmsrc/apple/cmdjit.pla: 0627: - LDA (DST),Y +- LDA (DST),Y +; vmsrc/apple/cmdjit.pla: 0628: BEQ + + BEQ + +; vmsrc/apple/cmdjit.pla: 0629: CMP (SRC),Y + CMP (SRC),Y +; vmsrc/apple/cmdjit.pla: 0630: BNE ++ + BNE ++ +; vmsrc/apple/cmdjit.pla: 0631: INY + INY +; vmsrc/apple/cmdjit.pla: 0632: ASL + ASL +; vmsrc/apple/cmdjit.pla: 0633: BCS - + BCS - +; vmsrc/apple/cmdjit.pla: 0634: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmdjit.pla: 0635: STA ESTKL,X ; MATCH + STA ESTKL,X ; MATCH +; vmsrc/apple/cmdjit.pla: 0636: INY + INY +; vmsrc/apple/cmdjit.pla: 0637: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmdjit.pla: 0638: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0639: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0640: + STA ESTKL,X ; NO MATCH ++ STA ESTKL,X ; NO MATCH +; vmsrc/apple/cmdjit.pla: 0641: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0642: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0643: ++ +++ +; vmsrc/apple/cmdjit.pla: 0644: - LDA (DST),Y ; NEXT ENTRY +- LDA (DST),Y ; NEXT ENTRY +; vmsrc/apple/cmdjit.pla: 0645: BPL + + BPL + +; vmsrc/apple/cmdjit.pla: 0646: INY + INY +; vmsrc/apple/cmdjit.pla: 0647: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0648: + TYA ++ TYA +; vmsrc/apple/cmdjit.pla: 0649: CLC + CLC +; vmsrc/apple/cmdjit.pla: 0650: ADC #$03 + ADC #$03 +; vmsrc/apple/cmdjit.pla: 0651: ADC DSTL + ADC DSTL +; vmsrc/apple/cmdjit.pla: 0652: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0653: BCC -- + BCC -- +; vmsrc/apple/cmdjit.pla: 0654: INC DSTH + INC DSTH +; vmsrc/apple/cmdjit.pla: 0655: BNE -- + BNE -- +; vmsrc/apple/cmdjit.pla: 0656: end +; vmsrc/apple/cmdjit.pla: 0657: // def lookupidx(esd, index) +; vmsrc/apple/cmdjit.pla: 0658: // word sym +; vmsrc/apple/cmdjit.pla: 0659: // while ^esd +; vmsrc/apple/cmdjit.pla: 0660: // sym = esd +; vmsrc/apple/cmdjit.pla: 0661: // esd = sym + dcitos(sym, @str) +; vmsrc/apple/cmdjit.pla: 0662: // if esd->0 & $10 and esd->1 == index +; vmsrc/apple/cmdjit.pla: 0663: // return sym +; vmsrc/apple/cmdjit.pla: 0664: // fin +; vmsrc/apple/cmdjit.pla: 0665: // esd = esd + 3 +; vmsrc/apple/cmdjit.pla: 0666: // loop +; vmsrc/apple/cmdjit.pla: 0667: //end +; vmsrc/apple/cmdjit.pla: 0668: asm lookupidx(esd, index)#1 +_A022 ; lookupidx() +; vmsrc/apple/cmdjit.pla: 0669: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0670: STA TMPL + STA TMPL +; vmsrc/apple/cmdjit.pla: 0671: INX + INX +; vmsrc/apple/cmdjit.pla: 0672: --- LDA ESTKH,X +--- LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0673: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0674: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0675: -- STA SRCL +-- STA SRCL +; vmsrc/apple/cmdjit.pla: 0676: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0677: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0678: BPL + + BPL + +; vmsrc/apple/cmdjit.pla: 0679: INY + INY +; vmsrc/apple/cmdjit.pla: 0680: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0681: + BEQ ++ ; END OF ESD ++ BEQ ++ ; END OF ESD +; vmsrc/apple/cmdjit.pla: 0682: INY + INY +; vmsrc/apple/cmdjit.pla: 0683: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0684: INY + INY +; vmsrc/apple/cmdjit.pla: 0685: AND #$10 ; EXTERN FLAG? + AND #$10 ; EXTERN FLAG? +; vmsrc/apple/cmdjit.pla: 0686: BEQ + + BEQ + +; vmsrc/apple/cmdjit.pla: 0687: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0688: CMP TMPL + CMP TMPL +; vmsrc/apple/cmdjit.pla: 0689: BEQ +++ ; MATCH + BEQ +++ ; MATCH +; vmsrc/apple/cmdjit.pla: 0690: + INY ++ INY +; vmsrc/apple/cmdjit.pla: 0691: TYA + TYA +; vmsrc/apple/cmdjit.pla: 0692: SEC + SEC +; vmsrc/apple/cmdjit.pla: 0693: ADC SRCL + ADC SRCL +; vmsrc/apple/cmdjit.pla: 0694: STA ESTKL,X ; SYM PTRL + STA ESTKL,X ; SYM PTRL +; vmsrc/apple/cmdjit.pla: 0695: BCC -- + BCC -- +; vmsrc/apple/cmdjit.pla: 0696: INC ESTKH,X ; SYM PTRH + INC ESTKH,X ; SYM PTRH +; vmsrc/apple/cmdjit.pla: 0697: BNE --- + BNE --- +; vmsrc/apple/cmdjit.pla: 0698: ++ STA ESTKL,X ; END OF ESD +++ STA ESTKL,X ; END OF ESD +; vmsrc/apple/cmdjit.pla: 0699: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0700: +++ RTS ++++ RTS +; vmsrc/apple/cmdjit.pla: 0701: end +; vmsrc/apple/cmdjit.pla: 0702: //def lookupdef(addr, deftbl)#1 +; vmsrc/apple/cmdjit.pla: 0703: // while deftbl->interpjsr == $20 +; vmsrc/apple/cmdjit.pla: 0704: // if deftbl=>bytecodeaddr == addr +; vmsrc/apple/cmdjit.pla: 0705: // return deftbl +; vmsrc/apple/cmdjit.pla: 0706: // fin +; vmsrc/apple/cmdjit.pla: 0707: // deftbl = deftbl + t_defentry +; vmsrc/apple/cmdjit.pla: 0708: // loop +; vmsrc/apple/cmdjit.pla: 0709: // return 0 +; vmsrc/apple/cmdjit.pla: 0710: //end +; vmsrc/apple/cmdjit.pla: 0711: asm lookupdef(addr, deftbl)#1 +_A023 ; lookupdef() +; vmsrc/apple/cmdjit.pla: 0712: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0713: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0714: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0715: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0716: INX + INX +; vmsrc/apple/cmdjit.pla: 0717: - LDY #$00 +- LDY #$00 +; vmsrc/apple/cmdjit.pla: 0718: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0719: CMP #$20 ; JSR OPCODE? + CMP #$20 ; JSR OPCODE? +; vmsrc/apple/cmdjit.pla: 0720: BNE ++ + BNE ++ +; vmsrc/apple/cmdjit.pla: 0721: LDY #$03 + LDY #$03 +; vmsrc/apple/cmdjit.pla: 0722: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0723: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/cmdjit.pla: 0724: BNE + + BNE + +; vmsrc/apple/cmdjit.pla: 0725: INY + INY +; vmsrc/apple/cmdjit.pla: 0726: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0727: CMP ESTKH,X + CMP ESTKH,X +; vmsrc/apple/cmdjit.pla: 0728: BNE + + BNE + +; vmsrc/apple/cmdjit.pla: 0729: LDA SRCL ; MATCH + LDA SRCL ; MATCH +; vmsrc/apple/cmdjit.pla: 0730: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0731: LDA SRCH + LDA SRCH +; vmsrc/apple/cmdjit.pla: 0732: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0733: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0734: + LDA #$07 ; NEXT ENTRY ++ LDA #$07 ; NEXT ENTRY +; vmsrc/apple/cmdjit.pla: 0735: CLC + CLC +; vmsrc/apple/cmdjit.pla: 0736: ADC SRCL + ADC SRCL +; vmsrc/apple/cmdjit.pla: 0737: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0738: BCC - + BCC - +; vmsrc/apple/cmdjit.pla: 0739: INC SRCH + INC SRCH +; vmsrc/apple/cmdjit.pla: 0740: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0741: ++ STY ESTKL,X +++ STY ESTKL,X +; vmsrc/apple/cmdjit.pla: 0742: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/cmdjit.pla: 0743: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0744: end +; vmsrc/apple/cmdjit.pla: 0745: // +; vmsrc/apple/cmdjit.pla: 0746: // Reloc internal data +; vmsrc/apple/cmdjit.pla: 0747: // +; vmsrc/apple/cmdjit.pla: 0748: //def reloc(modfix, modofst, bytecode, rld)#3 +; vmsrc/apple/cmdjit.pla: 0749: // word addr, fixup +; vmsrc/apple/cmdjit.pla: 0750: // while ^rld +; vmsrc/apple/cmdjit.pla: 0751: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/cmdjit.pla: 0752: // return rld, addr, fixup +; vmsrc/apple/cmdjit.pla: 0753: // fin +; vmsrc/apple/cmdjit.pla: 0754: // addr = rld=>1 + modfix +; vmsrc/apple/cmdjit.pla: 0755: // fixup = *addr + modofst +; vmsrc/apple/cmdjit.pla: 0756: // if uword_isge(fixup, bytecode) // Bytecode address. +; vmsrc/apple/cmdjit.pla: 0757: // return rld, addr, fixup +; vmsrc/apple/cmdjit.pla: 0758: // fin +; vmsrc/apple/cmdjit.pla: 0759: // *addr = fixup +; vmsrc/apple/cmdjit.pla: 0760: // rld = rld + 4 +; vmsrc/apple/cmdjit.pla: 0761: // loop +; vmsrc/apple/cmdjit.pla: 0762: // return rld, addr, fixup +; vmsrc/apple/cmdjit.pla: 0763: //end +; vmsrc/apple/cmdjit.pla: 0764: asm reloc(modfix, modofst, bytecode, rld)#3 +_A024 ; reloc() +; vmsrc/apple/cmdjit.pla: 0765: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0766: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0767: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0768: STA SRCH + STA SRCH +; vmsrc/apple/cmdjit.pla: 0769: LDY #$00 + LDY #$00 +; vmsrc/apple/cmdjit.pla: 0770: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0771: BEQ RLDEX ; END OF RLD + BEQ RLDEX ; END OF RLD +; vmsrc/apple/cmdjit.pla: 0772: PHA + PHA +; vmsrc/apple/cmdjit.pla: 0773: INY + INY +; vmsrc/apple/cmdjit.pla: 0774: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0775: INY + INY +; vmsrc/apple/cmdjit.pla: 0776: CLC + CLC +; vmsrc/apple/cmdjit.pla: 0777: ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX +; vmsrc/apple/cmdjit.pla: 0778: STA DSTL + STA DSTL +; vmsrc/apple/cmdjit.pla: 0779: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/cmdjit.pla: 0780: ADC ESTKH+3,X + ADC ESTKH+3,X +; vmsrc/apple/cmdjit.pla: 0781: STA DSTH + STA DSTH +; vmsrc/apple/cmdjit.pla: 0782: PLA + PLA +; vmsrc/apple/cmdjit.pla: 0783: AND #$10 ; EXTERN REF - EXIT + AND #$10 ; EXTERN REF - EXIT +; vmsrc/apple/cmdjit.pla: 0784: BNE RLDEX + BNE RLDEX +; vmsrc/apple/cmdjit.pla: 0785: TAY ; FIXUP=*ADDR+MODOFST + TAY ; FIXUP=*ADDR+MODOFST +; vmsrc/apple/cmdjit.pla: 0786: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmdjit.pla: 0787: INY + INY +; vmsrc/apple/cmdjit.pla: 0788: CLC + CLC +; vmsrc/apple/cmdjit.pla: 0789: ADC ESTKL+2,X + ADC ESTKL+2,X +; vmsrc/apple/cmdjit.pla: 0790: STA TMPL + STA TMPL +; vmsrc/apple/cmdjit.pla: 0791: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/cmdjit.pla: 0792: ADC ESTKH+2,X + ADC ESTKH+2,X +; vmsrc/apple/cmdjit.pla: 0793: CMP ESTKH+1,X ; FIXUP >= BYTECODE? + CMP ESTKH+1,X ; FIXUP >= BYTECODE? +; vmsrc/apple/cmdjit.pla: 0794: BCC + + BCC + +; vmsrc/apple/cmdjit.pla: 0795: STA TMPH + STA TMPH +; vmsrc/apple/cmdjit.pla: 0796: BNE RLDEX ; YEP, EXIT + BNE RLDEX ; YEP, EXIT +; vmsrc/apple/cmdjit.pla: 0797: LDA TMPL + LDA TMPL +; vmsrc/apple/cmdjit.pla: 0798: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0799: BCS RLDEX ; YEP, EXIT + BCS RLDEX ; YEP, EXIT +; vmsrc/apple/cmdjit.pla: 0800: LDA TMPH + LDA TMPH +; vmsrc/apple/cmdjit.pla: 0801: + STA (DST),Y ; *ADDR=FIXUP ++ STA (DST),Y ; *ADDR=FIXUP +; vmsrc/apple/cmdjit.pla: 0802: DEY + DEY +; vmsrc/apple/cmdjit.pla: 0803: LDA TMPL + LDA TMPL +; vmsrc/apple/cmdjit.pla: 0804: STA (DST),Y + STA (DST),Y +; vmsrc/apple/cmdjit.pla: 0805: LDA SRCL ; NEXT ENTRY + LDA SRCL ; NEXT ENTRY +; vmsrc/apple/cmdjit.pla: 0806: ; CLC +; CLC +; vmsrc/apple/cmdjit.pla: 0807: ADC #$04 + ADC #$04 +; vmsrc/apple/cmdjit.pla: 0808: STA SRCL + STA SRCL +; vmsrc/apple/cmdjit.pla: 0809: BCC - + BCC - +; vmsrc/apple/cmdjit.pla: 0810: INC SRCH + INC SRCH +; vmsrc/apple/cmdjit.pla: 0811: BNE - + BNE - +; vmsrc/apple/cmdjit.pla: 0812: RLDEX INX +RLDEX INX +; vmsrc/apple/cmdjit.pla: 0813: LDA TMPL + LDA TMPL +; vmsrc/apple/cmdjit.pla: 0814: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/cmdjit.pla: 0815: LDA TMPH + LDA TMPH +; vmsrc/apple/cmdjit.pla: 0816: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/cmdjit.pla: 0817: LDA DSTL + LDA DSTL +; vmsrc/apple/cmdjit.pla: 0818: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/cmdjit.pla: 0819: LDA DSTH + LDA DSTH +; vmsrc/apple/cmdjit.pla: 0820: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/cmdjit.pla: 0821: LDA SRCL + LDA SRCL +; vmsrc/apple/cmdjit.pla: 0822: STA ESTKL+2,X + STA ESTKL+2,X +; vmsrc/apple/cmdjit.pla: 0823: LDA SRCH + LDA SRCH +; vmsrc/apple/cmdjit.pla: 0824: STA ESTKH+2,X + STA ESTKH+2,X +; vmsrc/apple/cmdjit.pla: 0825: RTS + RTS +; vmsrc/apple/cmdjit.pla: 0826: end +; vmsrc/apple/cmdjit.pla: 0827: // +; vmsrc/apple/cmdjit.pla: 0828: // Cheap and dirty print integer +; vmsrc/apple/cmdjit.pla: 0829: // +; vmsrc/apple/cmdjit.pla: 0830: def print(i)#0 + ; i -> [0] +_P007 ; print(i)#0() +_C000 ; print() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0831: if i < 0; cout('-'); i = -i; fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B001 + !WORD _B001-* + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _A006 +_F060 !WORD _A006 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B001 +_B002 +; vmsrc/apple/cmdjit.pla: 0832: if i >= 10; print(i / 10); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C000 +_F061 !WORD _C000 +_B003 +_B004 +; vmsrc/apple/cmdjit.pla: 0833: cout(i % 10 + '0') +; vmsrc/apple/cmdjit.pla: 0834: end + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $54 ; CALL _A006 +_F062 !WORD _A006 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmdjit.pla: 0835: // +; vmsrc/apple/cmdjit.pla: 0836: // ProDOS routines +; vmsrc/apple/cmdjit.pla: 0837: // +; vmsrc/apple/cmdjit.pla: 0838: def pfxop(path, op)#1 + ; path -> [0] + ; op -> [2] +_C001 ; pfxop() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0839: byte params[3] + ; params -> [4] +; vmsrc/apple/cmdjit.pla: 0840: +; vmsrc/apple/cmdjit.pla: 0841: params.0 = 1 + !BYTE $58,$07,$02 ; ENTER 7,2 +; vmsrc/apple/cmdjit.pla: 0842: params:1 = path +; vmsrc/apple/cmdjit.pla: 0843: perr = syscall(op, @params) +; vmsrc/apple/cmdjit.pla: 0844: return path + !BYTE $02 ; CN 1 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A000 +_F063 !WORD _A000 + !BYTE $78 ; SAB _D033+0 +_F064 !WORD _D033+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$07 ; LEAVE 7 +; vmsrc/apple/cmdjit.pla: 0845: end +; vmsrc/apple/cmdjit.pla: 0846: def open(path)#1 + ; path -> [0] +_P027 ; open(path)#1() +_C002 ; open() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0847: byte params[6] + ; params -> [2] +; vmsrc/apple/cmdjit.pla: 0848: +; vmsrc/apple/cmdjit.pla: 0849: params.0 = 3 + !BYTE $58,$08,$01 ; ENTER 8,1 +; vmsrc/apple/cmdjit.pla: 0850: params:1 = path +; vmsrc/apple/cmdjit.pla: 0851: params:3 = iobuffer +; vmsrc/apple/cmdjit.pla: 0852: params.5 = 0 +; vmsrc/apple/cmdjit.pla: 0853: perr = syscall($C8, @params) +; vmsrc/apple/cmdjit.pla: 0854: return params.5 + !BYTE $06 ; CN 3 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $76,$05 ; SLW [5] + !BYTE $00 ; CN 0 + !BYTE $74,$07 ; SLB [7] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F065 !WORD _A000 + !BYTE $78 ; SAB _D033+0 +_F066 !WORD _D033+0 + !BYTE $64,$07 ; LLB [7] + !BYTE $5A,$08 ; LEAVE 8 +; vmsrc/apple/cmdjit.pla: 0855: end +; vmsrc/apple/cmdjit.pla: 0856: def close(refnum)#1 + ; refnum -> [0] +_P028 ; close(refnum)#1() +_C003 ; close() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0857: byte params[2] + ; params -> [2] +; vmsrc/apple/cmdjit.pla: 0858: +; vmsrc/apple/cmdjit.pla: 0859: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/cmdjit.pla: 0860: params.1 = refnum +; vmsrc/apple/cmdjit.pla: 0861: perr = syscall($CC, @params) +; vmsrc/apple/cmdjit.pla: 0862: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F067 !WORD _A000 + !BYTE $7C ; DAB _D033+0 +_F068 !WORD _D033+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0863: end +; vmsrc/apple/cmdjit.pla: 0864: def read(refnum, buf, len)#1 + ; refnum -> [0] + ; buf -> [2] + ; len -> [4] +_P029 ; read(refnum, buf, len)#1() +_C004 ; read() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0865: byte params[8] + ; params -> [6] +; vmsrc/apple/cmdjit.pla: 0866: +; vmsrc/apple/cmdjit.pla: 0867: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; vmsrc/apple/cmdjit.pla: 0868: params.1 = refnum +; vmsrc/apple/cmdjit.pla: 0869: params:2 = buf +; vmsrc/apple/cmdjit.pla: 0870: params:4 = len +; vmsrc/apple/cmdjit.pla: 0871: params:6 = 0 +; vmsrc/apple/cmdjit.pla: 0872: perr = syscall($CA, @params) +; vmsrc/apple/cmdjit.pla: 0873: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F069 !WORD _A000 + !BYTE $78 ; SAB _D033+0 +_F070 !WORD _D033+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/cmdjit.pla: 0874: end +; vmsrc/apple/cmdjit.pla: 0875: // +; vmsrc/apple/cmdjit.pla: 0876: // Heap routines. +; vmsrc/apple/cmdjit.pla: 0877: // +; vmsrc/apple/cmdjit.pla: 0878: def availheap()#1 +_P015 ; availheap()#1() +_C005 ; availheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0879: byte fp + ; fp -> [0] +; vmsrc/apple/cmdjit.pla: 0880: return @fp - heap + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D070+0 +_F071 !WORD _D070+0 + !BYTE $84 ; SUB + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/cmdjit.pla: 0881: end +; vmsrc/apple/cmdjit.pla: 0882: def allocheap(size)#1 + ; size -> [0] +_P012 ; allocheap(size)#1() +_C006 ; allocheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0883: word oldheap, addr + ; oldheap -> [2] + ; addr -> [4] +; vmsrc/apple/cmdjit.pla: 0884: oldheap = heap + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/cmdjit.pla: 0885: addr = heap +; vmsrc/apple/cmdjit.pla: 0886: heap = heap + size +; vmsrc/apple/cmdjit.pla: 0887: if systemflags & reshgr1 +; vmsrc/apple/cmdjit.pla: 0888: if uword_islt(addr, $4000) and uword_isgt(heap, $2000) +; vmsrc/apple/cmdjit.pla: 0889: addr = $4000 +; vmsrc/apple/cmdjit.pla: 0890: heap = addr + size +; vmsrc/apple/cmdjit.pla: 0891: fin + !BYTE $6A ; LAW _D070+0 +_F072 !WORD _D070+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D070+0 +_F073 !WORD _D070+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $6A ; LAW _D070+0 +_F074 !WORD _D070+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D070+0 +_F075 !WORD _D070+0 + !BYTE $6A ; LAW _D069+0 +_F076 !WORD _D069+0 + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A015 +_F077 !WORD _A015 + !BYTE $AC ; BRAND _B007 + !WORD _B007-* + !BYTE $6A ; LAW _D070+0 +_F078 !WORD _D070+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _A014 +_F079 !WORD _A014 +_B007 + !BYTE $4C ; BRFLS _B008 + !WORD _B008-* + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $6E,$04 ; DLW [4] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D070+0 +_F080 !WORD _D070+0 +_B008 +_B009 +; vmsrc/apple/cmdjit.pla: 0892: fin +_B005 +_B006 +; vmsrc/apple/cmdjit.pla: 0893: if systemflags & reshgr2 +; vmsrc/apple/cmdjit.pla: 0894: if uword_islt(addr, $6000) and uword_isgt(heap, $4000) +; vmsrc/apple/cmdjit.pla: 0895: addr = $6000 +; vmsrc/apple/cmdjit.pla: 0896: heap = addr + size +; vmsrc/apple/cmdjit.pla: 0897: fin + !BYTE $6A ; LAW _D069+0 +_F081 !WORD _D069+0 + !BYTE $3C,$20 ; ANDI 32 + !BYTE $4C ; BRFLS _B010 + !WORD _B010-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $54 ; CALL _A015 +_F082 !WORD _A015 + !BYTE $AC ; BRAND _B012 + !WORD _B012-* + !BYTE $6A ; LAW _D070+0 +_F083 !WORD _D070+0 + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A014 +_F084 !WORD _A014 +_B012 + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $6E,$04 ; DLW [4] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D070+0 +_F085 !WORD _D070+0 +_B013 +_B014 +; vmsrc/apple/cmdjit.pla: 0898: fin +_B010 +_B011 +; vmsrc/apple/cmdjit.pla: 0899: if uword_isge(heap, @addr) +; vmsrc/apple/cmdjit.pla: 0900: heap = oldheap +; vmsrc/apple/cmdjit.pla: 0901: return 0 + !BYTE $6A ; LAW _D070+0 +_F086 !WORD _D070+0 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _A012 +_F087 !WORD _A012 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D070+0 +_F088 !WORD _D070+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/cmdjit.pla: 0902: fin +_B015 +_B016 +; vmsrc/apple/cmdjit.pla: 0903: return addr + !BYTE $66,$04 ; LLW [4] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/cmdjit.pla: 0904: end +; vmsrc/apple/cmdjit.pla: 0905: def allocalignheap(size, pow2, freeaddr) + ; size -> [0] + ; pow2 -> [2] + ; freeaddr -> [4] +_P013 ; allocalignheap(size, pow2, freeaddr)() +_C007 ; allocalignheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0906: word align, addr + ; align -> [6] + ; addr -> [8] +; vmsrc/apple/cmdjit.pla: 0907: if freeaddr + !BYTE $58,$0A,$03 ; ENTER 10,3 +; vmsrc/apple/cmdjit.pla: 0908: *freeaddr = heap +; vmsrc/apple/cmdjit.pla: 0909: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B017 + !WORD _B017-* + !BYTE $6A ; LAW _D070+0 +_F089 !WORD _D070+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B017 +_B018 +; vmsrc/apple/cmdjit.pla: 0910: align = (1 << pow2) - 1 +; vmsrc/apple/cmdjit.pla: 0911: addr = (heap | align) + 1 +; vmsrc/apple/cmdjit.pla: 0912: heap = addr + size +; vmsrc/apple/cmdjit.pla: 0913: if uword_isge(heap, @addr) +; vmsrc/apple/cmdjit.pla: 0914: return 0 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $9A ; SHL + !BYTE $8E ; DECR + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D070+0 +_F090 !WORD _D070+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $96 ; OR + !BYTE $8C ; INCR + !BYTE $6E,$08 ; DLW [8] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D070+0 +_F091 !WORD _D070+0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A012 +_F092 !WORD _A012 + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/cmdjit.pla: 0915: fin +_B019 +_B020 +; vmsrc/apple/cmdjit.pla: 0916: return addr + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/cmdjit.pla: 0917: end +; vmsrc/apple/cmdjit.pla: 0918: def markheap()#1 +_P011 ; markheap()#1() +_C008 ; markheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0919: return heap + !BYTE $6A ; LAW _D070+0 +_F093 !WORD _D070+0 + !BYTE $5C ; RET +; vmsrc/apple/cmdjit.pla: 0920: end +; vmsrc/apple/cmdjit.pla: 0921: def releaseheap(newheap)#1 + ; newheap -> [0] +_P014 ; releaseheap(newheap)#1() +_C009 ; releaseheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0922: heap = newheap + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/cmdjit.pla: 0923: return @newheap - heap + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D070+0 +_F094 !WORD _D070+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D070+0 +_F095 !WORD _D070+0 + !BYTE $84 ; SUB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmdjit.pla: 0924: end +; vmsrc/apple/cmdjit.pla: 0925: def allocxheap(size)#1 + ; size -> [0] +_C010 ; allocxheap() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0926: word xaddr + ; xaddr -> [2] +; vmsrc/apple/cmdjit.pla: 0927: xaddr = xheap + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/cmdjit.pla: 0928: xheap = xheap + size +; vmsrc/apple/cmdjit.pla: 0929: if systemflags & restxt1 +; vmsrc/apple/cmdjit.pla: 0930: if uword_isle(xaddr, $0800) and uword_isgt(xheap, $0400) +; vmsrc/apple/cmdjit.pla: 0931: xaddr = $0800 +; vmsrc/apple/cmdjit.pla: 0932: xheap = xaddr + size +; vmsrc/apple/cmdjit.pla: 0933: fin + !BYTE $6A ; LAW _D071+0 +_F096 !WORD _D071+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D071+0 +_F097 !WORD _D071+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F098 !WORD _D071+0 + !BYTE $6A ; LAW _D069+0 +_F099 !WORD _D069+0 + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B021 + !WORD _B021-* + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $54 ; CALL _A013 +_F100 !WORD _A013 + !BYTE $AC ; BRAND _B023 + !WORD _B023-* + !BYTE $6A ; LAW _D071+0 +_F101 !WORD _D071+0 + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $54 ; CALL _A014 +_F102 !WORD _A014 +_B023 + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $6E,$02 ; DLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F103 !WORD _D071+0 +_B024 +_B025 +; vmsrc/apple/cmdjit.pla: 0934: fin +_B021 +_B022 +; vmsrc/apple/cmdjit.pla: 0935: if systemflags & restxt2 +; vmsrc/apple/cmdjit.pla: 0936: if uword_isle(xaddr, $0C00) and uword_isgt(xheap, $0800) +; vmsrc/apple/cmdjit.pla: 0937: xaddr = $0C00 +; vmsrc/apple/cmdjit.pla: 0938: xheap = xaddr + size +; vmsrc/apple/cmdjit.pla: 0939: fin + !BYTE $6A ; LAW _D069+0 +_F104 !WORD _D069+0 + !BYTE $3C,$02 ; ANDI 2 + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $54 ; CALL _A013 +_F105 !WORD _A013 + !BYTE $AC ; BRAND _B028 + !WORD _B028-* + !BYTE $6A ; LAW _D071+0 +_F106 !WORD _D071+0 + !BYTE $2C,$00,$08 ; CW 2048 + !BYTE $54 ; CALL _A014 +_F107 !WORD _A014 +_B028 + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $6E,$02 ; DLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F108 !WORD _D071+0 +_B029 +_B030 +; vmsrc/apple/cmdjit.pla: 0940: fin +_B026 +_B027 +; vmsrc/apple/cmdjit.pla: 0941: if systemflags & resxhgr1 +; vmsrc/apple/cmdjit.pla: 0942: if uword_isle(xaddr, $4000) and uword_isgt(xheap, $2000) +; vmsrc/apple/cmdjit.pla: 0943: xaddr = $4000 +; vmsrc/apple/cmdjit.pla: 0944: xheap = xaddr + size +; vmsrc/apple/cmdjit.pla: 0945: fin + !BYTE $6A ; LAW _D069+0 +_F109 !WORD _D069+0 + !BYTE $3C,$40 ; ANDI 64 + !BYTE $4C ; BRFLS _B031 + !WORD _B031-* + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A013 +_F110 !WORD _A013 + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $6A ; LAW _D071+0 +_F111 !WORD _D071+0 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $54 ; CALL _A014 +_F112 !WORD _A014 +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $6E,$02 ; DLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F113 !WORD _D071+0 +_B034 +_B035 +; vmsrc/apple/cmdjit.pla: 0946: fin +_B031 +_B032 +; vmsrc/apple/cmdjit.pla: 0947: if systemflags & resxhgr2 +; vmsrc/apple/cmdjit.pla: 0948: if uword_isle(xaddr, $6000) and uword_isgt(xheap, $4000) +; vmsrc/apple/cmdjit.pla: 0949: xaddr = $6000 +; vmsrc/apple/cmdjit.pla: 0950: xheap = xaddr + size +; vmsrc/apple/cmdjit.pla: 0951: fin + !BYTE $6A ; LAW _D069+0 +_F114 !WORD _D069+0 + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4C ; BRFLS _B036 + !WORD _B036-* + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $54 ; CALL _A013 +_F115 !WORD _A013 + !BYTE $AC ; BRAND _B038 + !WORD _B038-* + !BYTE $6A ; LAW _D071+0 +_F116 !WORD _D071+0 + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $54 ; CALL _A014 +_F117 !WORD _A014 +_B038 + !BYTE $4C ; BRFLS _B039 + !WORD _B039-* + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $6E,$02 ; DLW [2] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7A ; SAW _D071+0 +_F118 !WORD _D071+0 +_B039 +_B040 +; vmsrc/apple/cmdjit.pla: 0952: fin +_B036 +_B037 +; vmsrc/apple/cmdjit.pla: 0953: if uword_isge(xheap, xheaptop) +; vmsrc/apple/cmdjit.pla: 0954: return 0 + !BYTE $6A ; LAW _D071+0 +_F119 !WORD _D071+0 + !BYTE $6A ; LAW _D072+0 +_F120 !WORD _D072+0 + !BYTE $54 ; CALL _A012 +_F121 !WORD _A012 + !BYTE $4C ; BRFLS _B041 + !WORD _B041-* + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0955: fin +_B041 +_B042 +; vmsrc/apple/cmdjit.pla: 0956: return xaddr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0957: end +; vmsrc/apple/cmdjit.pla: 0958: // +; vmsrc/apple/cmdjit.pla: 0959: // Symbol table routines. +; vmsrc/apple/cmdjit.pla: 0960: // +; vmsrc/apple/cmdjit.pla: 0961: def addsym(sym, addr)#0 + ; sym -> [0] + ; addr -> [2] +_C011 ; addsym() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0962: while ^sym & $80 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B045 + !WORD _B045-* +_B043 +; vmsrc/apple/cmdjit.pla: 0963: ^lastsym = ^sym +; vmsrc/apple/cmdjit.pla: 0964: lastsym++ + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D073+0 +_F122 !WORD _D073+0 + !BYTE $70 ; SB + !BYTE $6A ; LAW _D073+0 +_F123 !WORD _D073+0 + !BYTE $8C ; INCR +; vmsrc/apple/cmdjit.pla: 0965: sym++ + !BYTE $7A ; SAW _D073+0 +_F124 !WORD _D073+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; vmsrc/apple/cmdjit.pla: 0966: loop + !BYTE $76,$00 ; SLW [0] +_B045 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B043 + !WORD _B043-* +_B044 +; vmsrc/apple/cmdjit.pla: 0967: lastsym->0 = ^sym +; vmsrc/apple/cmdjit.pla: 0968: lastsym=>1 = addr +; vmsrc/apple/cmdjit.pla: 0969: lastsym = lastsym + 3 +; vmsrc/apple/cmdjit.pla: 0970: ^lastsym = 0 +; vmsrc/apple/cmdjit.pla: 0971: end + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $6A ; LAW _D073+0 +_F125 !WORD _D073+0 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $6A ; LAW _D073+0 +_F126 !WORD _D073+0 + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $6A ; LAW _D073+0 +_F127 !WORD _D073+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D073+0 +_F128 !WORD _D073+0 + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D073+0 +_F129 !WORD _D073+0 + !BYTE $70 ; SB + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0972: // +; vmsrc/apple/cmdjit.pla: 0973: // String routines. +; vmsrc/apple/cmdjit.pla: 0974: // +; vmsrc/apple/cmdjit.pla: 0975: def strcpy(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P018 ; strcpy(dst, src)#1() +_C012 ; strcpy() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0976: memcpy(dst+1, src+1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/cmdjit.pla: 0977: ^dst = ^src +; vmsrc/apple/cmdjit.pla: 0978: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F130 !WORD _A004 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0979: end +; vmsrc/apple/cmdjit.pla: 0980: def strcat(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P019 ; strcat(dst, src)#1() +_C013 ; strcat() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0981: memcpy(dst + ^dst + 1, src + 1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/cmdjit.pla: 0982: ^dst = ^dst + ^src +; vmsrc/apple/cmdjit.pla: 0983: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F131 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/cmdjit.pla: 0984: end +; vmsrc/apple/cmdjit.pla: 0985: // +; vmsrc/apple/cmdjit.pla: 0986: // Module routines. +; vmsrc/apple/cmdjit.pla: 0987: // +; vmsrc/apple/cmdjit.pla: 0988: def lookupextern(esd, index)#1 + ; esd -> [0] + ; index -> [2] +_C014 ; lookupextern() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 0989: word sym, addr + ; sym -> [4] + ; addr -> [6] +; vmsrc/apple/cmdjit.pla: 0990: byte str[33] + ; str -> [8] +; vmsrc/apple/cmdjit.pla: 0991: sym = lookupidx(esd, index) + !BYTE $58,$29,$02 ; ENTER 41,2 +; vmsrc/apple/cmdjit.pla: 0992: if sym +; vmsrc/apple/cmdjit.pla: 0993: addr = lookuptbl(sym, symtbl) +; vmsrc/apple/cmdjit.pla: 0994: if !addr +; vmsrc/apple/cmdjit.pla: 0995: perr = $81 +; vmsrc/apple/cmdjit.pla: 0996: dcitos(sym, @str) +; vmsrc/apple/cmdjit.pla: 0997: cout('?'); prstr(@str); crout +; vmsrc/apple/cmdjit.pla: 0998: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A022 +_F132 !WORD _A022 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $54 ; CALL _A021 +_F133 !WORD _A021 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B048 + !WORD _B048-* + !BYTE $2A,$81 ; CB 129 + !BYTE $78 ; SAB _D033+0 +_F134 !WORD _D033+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A018 +_F135 !WORD _A018 + !BYTE $30 ; DROP + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A006 +_F136 !WORD _A006 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A008 +_F137 !WORD _A008 + !BYTE $54 ; CALL _A005 +_F138 !WORD _A005 +_B048 +_B049 +; vmsrc/apple/cmdjit.pla: 0999: return addr + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/cmdjit.pla: 1000: fin +_B046 +_B047 +; vmsrc/apple/cmdjit.pla: 1001: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/cmdjit.pla: 1002: end +; vmsrc/apple/cmdjit.pla: 1003: // +; vmsrc/apple/cmdjit.pla: 1004: // Indirect interpreter DEFinition entrypoint +; vmsrc/apple/cmdjit.pla: 1005: // +; vmsrc/apple/cmdjit.pla: 1006: def adddef(isfirst, addr, deflast)#1 + ; isfirst -> [0] + ; addr -> [2] + ; deflast -> [4] +_C015 ; adddef() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1007: word preventry, defentry, defsize + ; preventry -> [6] + ; defentry -> [8] + ; defsize -> [10] +; vmsrc/apple/cmdjit.pla: 1008: +; vmsrc/apple/cmdjit.pla: 1009: defentry = *deflast + !BYTE $58,$0C,$03 ; ENTER 12,3 +; vmsrc/apple/cmdjit.pla: 1010: *deflast = defentry + t_defentry +; vmsrc/apple/cmdjit.pla: 1011: if not isfirst +; vmsrc/apple/cmdjit.pla: 1012: preventry = defentry - t_defentry +; vmsrc/apple/cmdjit.pla: 1013: defsize = addr - preventry=>bytecodeaddr +; vmsrc/apple/cmdjit.pla: 1014: if defsize <= jitsize +; vmsrc/apple/cmdjit.pla: 1015: preventry=>interpaddr = $03D6 // JSR $03D6 (JIT INTERP) +; vmsrc/apple/cmdjit.pla: 1016: preventry->callcount = jitcount // Set JIT countdown +; vmsrc/apple/cmdjit.pla: 1017: preventry->bytecodesize = defsize // Set size +; vmsrc/apple/cmdjit.pla: 1018: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $6E,$08 ; DLW [8] + !BYTE $38,$07 ; ADDI 7 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B050 + !WORD _B050-* + !BYTE $66,$08 ; LLW [8] + !BYTE $3A,$07 ; SUBI 7 + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$03 ; ADDI 3 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $6E,$0A ; DLW [10] + !BYTE $68 ; LAB _D035+0 +_F139 !WORD _D035+0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $2C,$D6,$03 ; CW 982 + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $68 ; LAB _D034+0 +_F140 !WORD _D034+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB +_B052 +_B053 +; vmsrc/apple/cmdjit.pla: 1019: fin +_B050 +_B051 +; vmsrc/apple/cmdjit.pla: 1020: defentry->interpjsr = $20 +; vmsrc/apple/cmdjit.pla: 1021: defentry=>interpaddr = $03DC // JSR $03DC (BYTECODE INTERP) +; vmsrc/apple/cmdjit.pla: 1022: defentry=>bytecodeaddr = addr +; vmsrc/apple/cmdjit.pla: 1023: defentry->t_defentry = 0 // NULL out next entry +; vmsrc/apple/cmdjit.pla: 1024: return defentry + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$08 ; LLW [8] + !BYTE $70 ; SB + !BYTE $2C,$DC,$03 ; CW 988 + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $00 ; CN 0 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0C ; LEAVE 12 +; vmsrc/apple/cmdjit.pla: 1025: end +; vmsrc/apple/cmdjit.pla: 1026: def loadmod(mod)#1 + ; mod -> [0] +_C016 ; loadmod() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1027: word rdlen[], bytecode, modsize, codefix, defofst, defcnt, init, initcode[], fixup + ; rdlen -> [2] + ; bytecode -> [2] + ; modsize -> [4] + ; codefix -> [6] + ; defofst -> [8] + ; defcnt -> [10] + ; init -> [12] + ; initcode -> [14] + ; fixup -> [14] +; vmsrc/apple/cmdjit.pla: 1028: word addr, defaddr, modaddr, modfix, modofst, modend + ; addr -> [16] + ; defaddr -> [18] + ; modaddr -> [20] + ; modfix -> [22] + ; modofst -> [24] + ; modend -> [26] +; vmsrc/apple/cmdjit.pla: 1029: word deftbl, deflast + ; deftbl -> [28] + ; deflast -> [30] +; vmsrc/apple/cmdjit.pla: 1030: word moddep, rld, esd, sym + ; moddep -> [32] + ; rld -> [34] + ; esd -> [36] + ; sym -> [38] +; vmsrc/apple/cmdjit.pla: 1031: byte refnum[], deffirst, skipjit, filename[64], str[] + ; refnum -> [40] + ; deffirst -> [40] + ; skipjit -> [41] + ; filename -> [42] + ; str -> [106] +; vmsrc/apple/cmdjit.pla: 1032: byte header[128] + ; header -> [106] +; vmsrc/apple/cmdjit.pla: 1033: // +; vmsrc/apple/cmdjit.pla: 1034: // Read the RELocatable module header (first 128 bytes) +; vmsrc/apple/cmdjit.pla: 1035: // +; vmsrc/apple/cmdjit.pla: 1036: dcitos(mod, @filename) + !BYTE $58,$EA,$01 ; ENTER 234,1 +; vmsrc/apple/cmdjit.pla: 1037: refnum = open(@filename) +; vmsrc/apple/cmdjit.pla: 1038: if !refnum and filename < 16 +; vmsrc/apple/cmdjit.pla: 1039: // +; vmsrc/apple/cmdjit.pla: 1040: // Try system path +; vmsrc/apple/cmdjit.pla: 1041: // +; vmsrc/apple/cmdjit.pla: 1042: refnum = open(strcpy(@filename,strcat(strcpy(@header, @sysmods), @filename))) +; vmsrc/apple/cmdjit.pla: 1043: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$2A ; LLA [42] + !BYTE $54 ; CALL _A018 +_F141 !WORD _A018 + !BYTE $30 ; DROP + !BYTE $28,$2A ; LLA [42] + !BYTE $54 ; CALL _C002 +_F142 !WORD _C002 + !BYTE $6C,$28 ; DLB [40] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B054 + !WORD _B054-* + !BYTE $64,$2A ; LLB [42] + !BYTE $2A,$10 ; CB 16 + !BYTE $46 ; ISLT +_B054 + !BYTE $4C ; BRFLS _B055 + !WORD _B055-* + !BYTE $28,$2A ; LLA [42] + !BYTE $28,$6A ; LLA [106] + !BYTE $26 ; LA _D067+0 +_F143 !WORD _D067+0 + !BYTE $54 ; CALL _C012 +_F144 !WORD _C012 + !BYTE $28,$2A ; LLA [42] + !BYTE $54 ; CALL _C013 +_F145 !WORD _C013 + !BYTE $54 ; CALL _C012 +_F146 !WORD _C012 + !BYTE $54 ; CALL _C002 +_F147 !WORD _C002 + !BYTE $74,$28 ; SLB [40] +_B055 +_B056 +; vmsrc/apple/cmdjit.pla: 1044: if refnum +; vmsrc/apple/cmdjit.pla: 1045: header.0 = $0A +; vmsrc/apple/cmdjit.pla: 1046: header:1 = @filename +; vmsrc/apple/cmdjit.pla: 1047: if not syscall($C4, @header) and header.4 <> $FE // Make sure it's a REL module +; vmsrc/apple/cmdjit.pla: 1048: close(refnum) +; vmsrc/apple/cmdjit.pla: 1049: perr = $4A // Incompatible type +; vmsrc/apple/cmdjit.pla: 1050: return -perr + !BYTE $64,$28 ; LLB [40] + !BYTE $4C ; BRFLS _B057 + !WORD _B057-* + !BYTE $14 ; CN 10 + !BYTE $74,$6A ; SLB [106] + !BYTE $28,$2A ; LLA [42] + !BYTE $76,$6B ; SLW [107] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$6A ; LLA [106] + !BYTE $54 ; CALL _A000 +_F148 !WORD _A000 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B059 + !WORD _B059-* + !BYTE $64,$6E ; LLB [110] + !BYTE $2A,$FE ; CB 254 + !BYTE $42 ; ISNE +_B059 + !BYTE $4C ; BRFLS _B060 + !WORD _B060-* + !BYTE $64,$28 ; LLB [40] + !BYTE $54 ; CALL _C003 +_F149 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $2A,$4A ; CB 74 + !BYTE $7C ; DAB _D033+0 +_F150 !WORD _D033+0 + !BYTE $90 ; NEG + !BYTE $5A,$EA ; LEAVE 234 +; vmsrc/apple/cmdjit.pla: 1051: fin +_B060 +_B061 +; vmsrc/apple/cmdjit.pla: 1052: rdlen = read(refnum, @header, 128) +; vmsrc/apple/cmdjit.pla: 1053: modsize = header:0 +; vmsrc/apple/cmdjit.pla: 1054: moddep = @header.1 +; vmsrc/apple/cmdjit.pla: 1055: defofst = modsize + RELADDR +; vmsrc/apple/cmdjit.pla: 1056: init = 0 +; vmsrc/apple/cmdjit.pla: 1057: if rdlen > 4 and header:2 == $6502 // magic number +; vmsrc/apple/cmdjit.pla: 1058: // +; vmsrc/apple/cmdjit.pla: 1059: // This is an EXTended RELocatable (data+bytecode) module. +; vmsrc/apple/cmdjit.pla: 1060: // +; vmsrc/apple/cmdjit.pla: 1061: systemflags = header.4 | systemflags +; vmsrc/apple/cmdjit.pla: 1062: skipjit = header.5 & (nojitc >> 8) +; vmsrc/apple/cmdjit.pla: 1063: defofst = header:6 +; vmsrc/apple/cmdjit.pla: 1064: defcnt = header:8 +; vmsrc/apple/cmdjit.pla: 1065: init = header:10 +; vmsrc/apple/cmdjit.pla: 1066: moddep = @header.12 +; vmsrc/apple/cmdjit.pla: 1067: // +; vmsrc/apple/cmdjit.pla: 1068: // Load module dependencies. +; vmsrc/apple/cmdjit.pla: 1069: // +; vmsrc/apple/cmdjit.pla: 1070: while ^moddep + !BYTE $64,$28 ; LLB [40] + !BYTE $28,$6A ; LLA [106] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F151 !WORD _C004 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$6A ; LLW [106] + !BYTE $76,$04 ; SLW [4] + !BYTE $28,$6B ; LLA [107] + !BYTE $76,$20 ; SLW [32] + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B062 + !WORD _B062-* + !BYTE $66,$6C ; LLW [108] + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $40 ; ISEQ +_B062 + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $64,$6E ; LLB [110] + !BYTE $6A ; LAW _D069+0 +_F152 !WORD _D069+0 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D069+0 +_F153 !WORD _D069+0 + !BYTE $64,$6F ; LLB [111] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $74,$29 ; SLB [41] + !BYTE $66,$70 ; LLW [112] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$72 ; LLW [114] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$74 ; LLW [116] + !BYTE $76,$0C ; SLW [12] + !BYTE $28,$76 ; LLA [118] + !BYTE $76,$20 ; SLW [32] + !BYTE $50 ; BRNCH _B067 + !WORD _B067-* +_B065 +; vmsrc/apple/cmdjit.pla: 1071: if !lookuptbl(moddep, symtbl) +; vmsrc/apple/cmdjit.pla: 1072: close(refnum) +; vmsrc/apple/cmdjit.pla: 1073: refnum = 0 +; vmsrc/apple/cmdjit.pla: 1074: if loadmod(moddep) < 0 +; vmsrc/apple/cmdjit.pla: 1075: return -perr + !BYTE $66,$20 ; LLW [32] + !BYTE $2C,$00,$0C ; CW 3072 + !BYTE $54 ; CALL _A021 +_F154 !WORD _A021 + !BYTE $4E ; BRTRU _B068 + !WORD _B068-* + !BYTE $64,$28 ; LLB [40] + !BYTE $54 ; CALL _C003 +_F155 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $74,$28 ; SLB [40] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _C016 +_F156 !WORD _C016 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B070 + !WORD _B070-* + !BYTE $68 ; LAB _D033+0 +_F157 !WORD _D033+0 + !BYTE $90 ; NEG + !BYTE $5A,$EA ; LEAVE 234 +; vmsrc/apple/cmdjit.pla: 1076: fin +_B070 +_B071 +; vmsrc/apple/cmdjit.pla: 1077: fin +_B068 +_B069 +; vmsrc/apple/cmdjit.pla: 1078: moddep = moddep + dcitos(moddep, @str) +; vmsrc/apple/cmdjit.pla: 1079: loop + !BYTE $66,$20 ; LLW [32] + !BYTE $34 ; DUP + !BYTE $28,$6A ; LLA [106] + !BYTE $54 ; CALL _A018 +_F158 !WORD _A018 + !BYTE $82 ; ADD + !BYTE $76,$20 ; SLW [32] +_B067 + !BYTE $66,$20 ; LLW [32] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B065 + !WORD _B065-* +_B066 +; vmsrc/apple/cmdjit.pla: 1080: // +; vmsrc/apple/cmdjit.pla: 1081: // Init def table. +; vmsrc/apple/cmdjit.pla: 1082: // +; vmsrc/apple/cmdjit.pla: 1083: deftbl = allocheap(defcnt * t_defentry + 1) +; vmsrc/apple/cmdjit.pla: 1084: deflast = deftbl +; vmsrc/apple/cmdjit.pla: 1085: if !refnum +; vmsrc/apple/cmdjit.pla: 1086: // +; vmsrc/apple/cmdjit.pla: 1087: // Reset read pointer. +; vmsrc/apple/cmdjit.pla: 1088: // +; vmsrc/apple/cmdjit.pla: 1089: refnum = open(@filename) +; vmsrc/apple/cmdjit.pla: 1090: rdlen = read(refnum, @header, 128) +; vmsrc/apple/cmdjit.pla: 1091: fin + !BYTE $66,$0A ; LLW [10] + !BYTE $0E ; CN 7 + !BYTE $86 ; MUL + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C006 +_F159 !WORD _C006 + !BYTE $6E,$1C ; DLW [28] + !BYTE $76,$1E ; SLW [30] + !BYTE $64,$28 ; LLB [40] + !BYTE $4E ; BRTRU _B072 + !WORD _B072-* + !BYTE $28,$2A ; LLA [42] + !BYTE $54 ; CALL _C002 +_F160 !WORD _C002 + !BYTE $6C,$28 ; DLB [40] + !BYTE $28,$6A ; LLA [106] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C004 +_F161 !WORD _C004 + !BYTE $76,$02 ; SLW [2] +_B072 +_B073 +; vmsrc/apple/cmdjit.pla: 1092: fin +_B063 +_B064 +; vmsrc/apple/cmdjit.pla: 1093: // +; vmsrc/apple/cmdjit.pla: 1094: // Alloc heap space for relocated module (data + bytecode). +; vmsrc/apple/cmdjit.pla: 1095: // +; vmsrc/apple/cmdjit.pla: 1096: moddep = moddep + 1 +; vmsrc/apple/cmdjit.pla: 1097: modfix = moddep - @header.2 // Adjust to skip header +; vmsrc/apple/cmdjit.pla: 1098: modsize = modsize - modfix +; vmsrc/apple/cmdjit.pla: 1099: rdlen = rdlen - modfix - 2 +; vmsrc/apple/cmdjit.pla: 1100: modaddr = allocheap(modsize) +; vmsrc/apple/cmdjit.pla: 1101: memcpy(modaddr, moddep, rdlen) +; vmsrc/apple/cmdjit.pla: 1102: // +; vmsrc/apple/cmdjit.pla: 1103: // Read in remainder of module into memory for fixups. +; vmsrc/apple/cmdjit.pla: 1104: // +; vmsrc/apple/cmdjit.pla: 1105: addr = modaddr +; vmsrc/apple/cmdjit.pla: 1106: repeat + !BYTE $66,$20 ; LLW [32] + !BYTE $8C ; INCR + !BYTE $6E,$20 ; DLW [32] + !BYTE $28,$6C ; LLA [108] + !BYTE $84 ; SUB + !BYTE $76,$16 ; SLW [22] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$16 ; LLW [22] + !BYTE $84 ; SUB + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$16 ; LLW [22] + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _C006 +_F162 !WORD _C006 + !BYTE $6E,$14 ; DLW [20] + !BYTE $66,$20 ; LLW [32] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A004 +_F163 !WORD _A004 + !BYTE $66,$14 ; LLW [20] + !BYTE $76,$10 ; SLW [16] +_B075 +; vmsrc/apple/cmdjit.pla: 1107: addr = addr + rdlen +; vmsrc/apple/cmdjit.pla: 1108: rdlen = read(refnum, addr, 4096) +; vmsrc/apple/cmdjit.pla: 1109: until rdlen <= 0 + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$02 ; ADDLW [2] + !BYTE $76,$10 ; SLW [16] + !BYTE $64,$28 ; LLB [40] + !BYTE $66,$10 ; LLW [16] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C004 +_F164 !WORD _C004 + !BYTE $76,$02 ; SLW [2] +_B076 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* +_B074 +; vmsrc/apple/cmdjit.pla: 1110: close(refnum) +; vmsrc/apple/cmdjit.pla: 1111: // +; vmsrc/apple/cmdjit.pla: 1112: // Add module to symbol table. +; vmsrc/apple/cmdjit.pla: 1113: // +; vmsrc/apple/cmdjit.pla: 1114: addsym(mod, modaddr) +; vmsrc/apple/cmdjit.pla: 1115: // +; vmsrc/apple/cmdjit.pla: 1116: // Apply all fixups and symbol import/export. +; vmsrc/apple/cmdjit.pla: 1117: // +; vmsrc/apple/cmdjit.pla: 1118: modfix = modaddr - modfix +; vmsrc/apple/cmdjit.pla: 1119: modofst = modfix - RELADDR +; vmsrc/apple/cmdjit.pla: 1120: modend = modaddr + modsize +; vmsrc/apple/cmdjit.pla: 1121: bytecode = defofst + modofst +; vmsrc/apple/cmdjit.pla: 1122: rld = modend // Re-Locatable Directory +; vmsrc/apple/cmdjit.pla: 1123: esd = rld // Extern+Entry Symbol Directory +; vmsrc/apple/cmdjit.pla: 1124: while ^esd // Scan to end of ESD + !BYTE $64,$28 ; LLB [40] + !BYTE $54 ; CALL _C003 +_F165 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C011 +_F166 !WORD _C011 + !BYTE $66,$14 ; LLW [20] + !BYTE $66,$16 ; LLW [22] + !BYTE $84 ; SUB + !BYTE $6E,$16 ; DLW [22] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $76,$18 ; SLW [24] + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$08 ; LLW [8] + !BYTE $B2,$18 ; ADDLW [24] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$1A ; LLW [26] + !BYTE $6E,$22 ; DLW [34] + !BYTE $76,$24 ; SLW [36] + !BYTE $50 ; BRNCH _B079 + !WORD _B079-* +_B077 +; vmsrc/apple/cmdjit.pla: 1125: esd = esd + 4 +; vmsrc/apple/cmdjit.pla: 1126: loop + !BYTE $66,$24 ; LLW [36] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$24 ; SLW [36] +_B079 + !BYTE $66,$24 ; LLW [36] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B077 + !WORD _B077-* +_B078 +; vmsrc/apple/cmdjit.pla: 1127: esd = esd + 1 +; vmsrc/apple/cmdjit.pla: 1128: defaddr = allocxheap(rld - bytecode) +; vmsrc/apple/cmdjit.pla: 1129: modend = bytecode +; vmsrc/apple/cmdjit.pla: 1130: codefix = defaddr - bytecode +; vmsrc/apple/cmdjit.pla: 1131: defofst = defaddr - defofst +; vmsrc/apple/cmdjit.pla: 1132: // +; vmsrc/apple/cmdjit.pla: 1133: // Run through the DeFinition Dictionary. +; vmsrc/apple/cmdjit.pla: 1134: // +; vmsrc/apple/cmdjit.pla: 1135: deffirst = 1 +; vmsrc/apple/cmdjit.pla: 1136: while ^rld == $02 + !BYTE $66,$24 ; LLW [36] + !BYTE $8C ; INCR + !BYTE $76,$24 ; SLW [36] + !BYTE $66,$22 ; LLW [34] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $54 ; CALL _C010 +_F167 !WORD _C010 + !BYTE $76,$12 ; SLW [18] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$12 ; LLW [18] + !BYTE $66,$02 ; LLW [2] + !BYTE $84 ; SUB + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$12 ; LLW [18] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $76,$08 ; SLW [8] + !BYTE $02 ; CN 1 + !BYTE $74,$28 ; SLB [40] + !BYTE $50 ; BRNCH _B082 + !WORD _B082-* +_B080 +; vmsrc/apple/cmdjit.pla: 1137: // +; vmsrc/apple/cmdjit.pla: 1138: // This is a bytcode def entry - add it to the def directory. +; vmsrc/apple/cmdjit.pla: 1139: // +; vmsrc/apple/cmdjit.pla: 1140: adddef(deffirst, rld=>1 + defofst, @deflast) +; vmsrc/apple/cmdjit.pla: 1141: deffirst = skipjit // Calculate JIT potential or not +; vmsrc/apple/cmdjit.pla: 1142: rld = rld + 4 +; vmsrc/apple/cmdjit.pla: 1143: loop + !BYTE $64,$28 ; LLB [40] + !BYTE $66,$22 ; LLW [34] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $28,$1E ; LLA [30] + !BYTE $54 ; CALL _C015 +_F168 !WORD _C015 + !BYTE $30 ; DROP + !BYTE $64,$29 ; LLB [41] + !BYTE $74,$28 ; SLB [40] + !BYTE $66,$22 ; LLW [34] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$22 ; SLW [34] +_B082 + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B080 + !WORD _B080-* +_B081 +; vmsrc/apple/cmdjit.pla: 1144: // +; vmsrc/apple/cmdjit.pla: 1145: // Run through the Re-Location Dictionary. +; vmsrc/apple/cmdjit.pla: 1146: // +; vmsrc/apple/cmdjit.pla: 1147: while ^rld + !BYTE $50 ; BRNCH _B085 + !WORD _B085-* +_B083 +; vmsrc/apple/cmdjit.pla: 1148: rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) +; vmsrc/apple/cmdjit.pla: 1149: if ^rld +; vmsrc/apple/cmdjit.pla: 1150: *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + codefix, deftbl) +; vmsrc/apple/cmdjit.pla: 1151: rld = rld + 4 +; vmsrc/apple/cmdjit.pla: 1152: fin + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$18 ; LLW [24] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$22 ; LLW [34] + !BYTE $54 ; CALL _A024 +_F169 !WORD _A024 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$10 ; SLW [16] + !BYTE $6E,$22 ; DLW [34] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B086 + !WORD _B086-* + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B088 + !WORD _B088-* + !BYTE $66,$10 ; LLW [16] + !BYTE $62 ; LW + !BYTE $66,$24 ; LLW [36] + !BYTE $66,$22 ; LLW [34] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C014 +_F170 !WORD _C014 + !BYTE $82 ; ADD + !BYTE $50 ; BRNCH _B089 + !WORD _B089-* +_B088 + !BYTE $66,$0E ; LLW [14] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $66,$1C ; LLW [28] + !BYTE $54 ; CALL _A023 +_F171 !WORD _A023 +_B089 + !BYTE $66,$10 ; LLW [16] + !BYTE $72 ; SW + !BYTE $66,$22 ; LLW [34] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$22 ; SLW [34] +_B086 +_B087 +; vmsrc/apple/cmdjit.pla: 1153: loop +_B085 + !BYTE $66,$22 ; LLW [34] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B083 + !WORD _B083-* +_B084 +; vmsrc/apple/cmdjit.pla: 1154: // +; vmsrc/apple/cmdjit.pla: 1155: // Run through the External/Entry Symbol Directory. +; vmsrc/apple/cmdjit.pla: 1156: // +; vmsrc/apple/cmdjit.pla: 1157: while ^esd + !BYTE $50 ; BRNCH _B092 + !WORD _B092-* +_B090 +; vmsrc/apple/cmdjit.pla: 1158: sym = esd +; vmsrc/apple/cmdjit.pla: 1159: esd = esd + dcitos(esd, @str) +; vmsrc/apple/cmdjit.pla: 1160: if ^esd & $08 +; vmsrc/apple/cmdjit.pla: 1161: // +; vmsrc/apple/cmdjit.pla: 1162: // EXPORT symbol - add it to the global symbol table. +; vmsrc/apple/cmdjit.pla: 1163: // +; vmsrc/apple/cmdjit.pla: 1164: addr = esd=>1 + modofst +; vmsrc/apple/cmdjit.pla: 1165: if uword_isge(addr, bytecode) +; vmsrc/apple/cmdjit.pla: 1166: // +; vmsrc/apple/cmdjit.pla: 1167: // Use the def directory address for bytecode. +; vmsrc/apple/cmdjit.pla: 1168: // +; vmsrc/apple/cmdjit.pla: 1169: addr = lookupdef(addr + codefix, deftbl) +; vmsrc/apple/cmdjit.pla: 1170: fin + !BYTE $66,$24 ; LLW [36] + !BYTE $76,$26 ; SLW [38] + !BYTE $66,$24 ; LLW [36] + !BYTE $34 ; DUP + !BYTE $28,$6A ; LLA [106] + !BYTE $54 ; CALL _A018 +_F172 !WORD _A018 + !BYTE $82 ; ADD + !BYTE $6E,$24 ; DLW [36] + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B093 + !WORD _B093-* + !BYTE $66,$24 ; LLW [36] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$18 ; ADDLW [24] + !BYTE $6E,$10 ; DLW [16] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A012 +_F173 !WORD _A012 + !BYTE $4C ; BRFLS _B095 + !WORD _B095-* + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $66,$1C ; LLW [28] + !BYTE $54 ; CALL _A023 +_F174 !WORD _A023 + !BYTE $76,$10 ; SLW [16] +_B095 +_B096 +; vmsrc/apple/cmdjit.pla: 1171: addsym(sym, addr) +; vmsrc/apple/cmdjit.pla: 1172: fin + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$10 ; LLW [16] + !BYTE $54 ; CALL _C011 +_F175 !WORD _C011 +_B093 +_B094 +; vmsrc/apple/cmdjit.pla: 1173: esd = esd + 3 +; vmsrc/apple/cmdjit.pla: 1174: loop + !BYTE $66,$24 ; LLW [36] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$24 ; SLW [36] +_B092 + !BYTE $66,$24 ; LLW [36] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B090 + !WORD _B090-* +_B091 +; vmsrc/apple/cmdjit.pla: 1175: // +; vmsrc/apple/cmdjit.pla: 1176: // Move bytecode to AUX bank. +; vmsrc/apple/cmdjit.pla: 1177: // +; vmsrc/apple/cmdjit.pla: 1178: *$003C = bytecode +; vmsrc/apple/cmdjit.pla: 1179: *$003E = modaddr + modsize +; vmsrc/apple/cmdjit.pla: 1180: *$0042 = defaddr +; vmsrc/apple/cmdjit.pla: 1181: call($C311, 0, 0, 0, $05) // CALL XMOVE with carry set (MAIN->AUX) and ints disabled +; vmsrc/apple/cmdjit.pla: 1182: else + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$3C,$00 ; SAW 60 + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $7A,$3E,$00 ; SAW 62 + !BYTE $66,$12 ; LLW [18] + !BYTE $7A,$42,$00 ; SAW 66 + !BYTE $2C,$11,$C3 ; CW 49937 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $00 ; CN 0 + !BYTE $0A ; CN 5 + !BYTE $54 ; CALL _A001 +_F176 !WORD _A001 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +_B057 +; vmsrc/apple/cmdjit.pla: 1183: perr = $46 +; vmsrc/apple/cmdjit.pla: 1184: fin + !BYTE $2A,$46 ; CB 70 + !BYTE $78 ; SAB _D033+0 +_F177 !WORD _D033+0 +_B058 +; vmsrc/apple/cmdjit.pla: 1185: if perr +; vmsrc/apple/cmdjit.pla: 1186: return -perr + !BYTE $68 ; LAB _D033+0 +_F178 !WORD _D033+0 + !BYTE $4C ; BRFLS _B097 + !WORD _B097-* + !BYTE $68 ; LAB _D033+0 +_F179 !WORD _D033+0 + !BYTE $90 ; NEG + !BYTE $5A,$EA ; LEAVE 234 +; vmsrc/apple/cmdjit.pla: 1187: fin +_B097 +_B098 +; vmsrc/apple/cmdjit.pla: 1188: // +; vmsrc/apple/cmdjit.pla: 1189: // Free up rld+esd+bytecode in main memory. +; vmsrc/apple/cmdjit.pla: 1190: // +; vmsrc/apple/cmdjit.pla: 1191: releaseheap(modend) +; vmsrc/apple/cmdjit.pla: 1192: // +; vmsrc/apple/cmdjit.pla: 1193: // Call init routine if it exists. +; vmsrc/apple/cmdjit.pla: 1194: // +; vmsrc/apple/cmdjit.pla: 1195: initcode = 0 +; vmsrc/apple/cmdjit.pla: 1196: if init +; vmsrc/apple/cmdjit.pla: 1197: init = init + defofst +; vmsrc/apple/cmdjit.pla: 1198: initcode = adddef(deffirst, init, @deflast)() +; vmsrc/apple/cmdjit.pla: 1199: if initcode < modinitkeep +; vmsrc/apple/cmdjit.pla: 1200: // +; vmsrc/apple/cmdjit.pla: 1201: // Free init routine unless initkeep +; vmsrc/apple/cmdjit.pla: 1202: // +; vmsrc/apple/cmdjit.pla: 1203: xheap = init +; vmsrc/apple/cmdjit.pla: 1204: if initcode < 0 +; vmsrc/apple/cmdjit.pla: 1205: perr = -initcode +; vmsrc/apple/cmdjit.pla: 1206: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $54 ; CALL _C009 +_F180 !WORD _C009 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$0C ; LLW [12] + !BYTE $4C ; BRFLS _B099 + !WORD _B099-* + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $76,$0C ; SLW [12] + !BYTE $64,$28 ; LLB [40] + !BYTE $66,$0C ; LLW [12] + !BYTE $28,$1E ; LLA [30] + !BYTE $54 ; CALL _C015 +_F181 !WORD _C015 + !BYTE $56 ; ICAL + !BYTE $6E,$0E ; DLW [14] + !BYTE $2C,$00,$40 ; CW 16384 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B101 + !WORD _B101-* + !BYTE $66,$0C ; LLW [12] + !BYTE $7A ; SAW _D071+0 +_F182 !WORD _D071+0 + !BYTE $66,$0E ; LLW [14] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B103 + !WORD _B103-* + !BYTE $66,$0E ; LLW [14] + !BYTE $90 ; NEG + !BYTE $78 ; SAB _D033+0 +_F183 !WORD _D033+0 +_B103 +_B104 +; vmsrc/apple/cmdjit.pla: 1207: else + !BYTE $50 ; BRNCH _B102 + !WORD _B102-* +_B101 +; vmsrc/apple/cmdjit.pla: 1208: initcode = initcode & ~modinitkeep +; vmsrc/apple/cmdjit.pla: 1209: fin + !BYTE $66,$0E ; LLW [14] + !BYTE $2C,$FF,$BF ; CW -16385 + !BYTE $94 ; AND + !BYTE $76,$0E ; SLW [14] +_B102 +; vmsrc/apple/cmdjit.pla: 1210: fin +_B099 +_B100 +; vmsrc/apple/cmdjit.pla: 1211: return initcode + !BYTE $66,$0E ; LLW [14] + !BYTE $5A,$EA ; LEAVE 234 +; vmsrc/apple/cmdjit.pla: 1212: end +; vmsrc/apple/cmdjit.pla: 1213: // +; vmsrc/apple/cmdjit.pla: 1214: // Command mode +; vmsrc/apple/cmdjit.pla: 1215: // +; vmsrc/apple/cmdjit.pla: 1216: def volumes()#0 +_C017 ; volumes() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1217: byte params[4] + ; params -> [0] +; vmsrc/apple/cmdjit.pla: 1218: word strbuf + ; strbuf -> [4] +; vmsrc/apple/cmdjit.pla: 1219: byte i + ; i -> [6] +; vmsrc/apple/cmdjit.pla: 1220: +; vmsrc/apple/cmdjit.pla: 1221: params.0 = 2 + !BYTE $58,$07,$00 ; ENTER 7,0 +; vmsrc/apple/cmdjit.pla: 1222: params.1 = 0 +; vmsrc/apple/cmdjit.pla: 1223: params:2 = heap +; vmsrc/apple/cmdjit.pla: 1224: perr = syscall($C5, @params) +; vmsrc/apple/cmdjit.pla: 1225: strbuf = heap +; vmsrc/apple/cmdjit.pla: 1226: for i = 0 to 15 + !BYTE $04 ; CN 2 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $74,$01 ; SLB [1] + !BYTE $6A ; LAW _D070+0 +_F184 !WORD _D070+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _A000 +_F185 !WORD _A000 + !BYTE $78 ; SAB _D033+0 +_F186 !WORD _D033+0 + !BYTE $6A ; LAW _D070+0 +_F187 !WORD _D070+0 + !BYTE $76,$04 ; SLW [4] + !BYTE $1E ; CN 15 + !BYTE $00 ; CN 0 +_B106 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/cmdjit.pla: 1227: ^strbuf = ^strbuf & $0F +; vmsrc/apple/cmdjit.pla: 1228: if ^strbuf +; vmsrc/apple/cmdjit.pla: 1229: cout('/'); prstr(strbuf); crout() +; vmsrc/apple/cmdjit.pla: 1230: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$04 ; LLW [4] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B108 + !WORD _B108-* + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _A006 +_F188 !WORD _A006 + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A008 +_F189 !WORD _A008 + !BYTE $54 ; CALL _A005 +_F190 !WORD _A005 +_B108 +_B109 +; vmsrc/apple/cmdjit.pla: 1231: strbuf = strbuf + 16 +; vmsrc/apple/cmdjit.pla: 1232: next + !BYTE $66,$04 ; LLW [4] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$04 ; SLW [4] +_B107 + !BYTE $A4 ; INCBRLE _B106 + !WORD _B106-* +_B105 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/cmdjit.pla: 1233: end + !BYTE $5A,$07 ; LEAVE 7 +; vmsrc/apple/cmdjit.pla: 1234: def catalog(path)#0 + ; path -> [0] +_C018 ; catalog() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1235: byte refnum + ; refnum -> [2] +; vmsrc/apple/cmdjit.pla: 1236: byte firstblk + ; firstblk -> [3] +; vmsrc/apple/cmdjit.pla: 1237: byte entrylen, entriesblk + ; entrylen -> [4] + ; entriesblk -> [5] +; vmsrc/apple/cmdjit.pla: 1238: byte i, type, len + ; i -> [6] + ; type -> [7] + ; len -> [8] +; vmsrc/apple/cmdjit.pla: 1239: word entry + ; entry -> [9] +; vmsrc/apple/cmdjit.pla: 1240: +; vmsrc/apple/cmdjit.pla: 1241: refnum = open(path) + !BYTE $58,$0B,$01 ; ENTER 11,1 +; vmsrc/apple/cmdjit.pla: 1242: if perr +; vmsrc/apple/cmdjit.pla: 1243: return + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F191 !WORD _C002 + !BYTE $74,$02 ; SLB [2] + !BYTE $68 ; LAB _D033+0 +_F192 !WORD _D033+0 + !BYTE $4C ; BRFLS _B110 + !WORD _B110-* + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/cmdjit.pla: 1244: fin +_B110 +_B111 +; vmsrc/apple/cmdjit.pla: 1245: firstblk = 1 +; vmsrc/apple/cmdjit.pla: 1246: while read(refnum, heap, 512) == 512 + !BYTE $02 ; CN 1 + !BYTE $74,$03 ; SLB [3] + !BYTE $50 ; BRNCH _B114 + !WORD _B114-* +_B112 +; vmsrc/apple/cmdjit.pla: 1247: entry = heap + 4 +; vmsrc/apple/cmdjit.pla: 1248: if firstblk +; vmsrc/apple/cmdjit.pla: 1249: entrylen = heap->$23 +; vmsrc/apple/cmdjit.pla: 1250: entriesblk = heap->$24 - 1 +; vmsrc/apple/cmdjit.pla: 1251: entry = entry + entrylen +; vmsrc/apple/cmdjit.pla: 1252: fin + !BYTE $6A ; LAW _D070+0 +_F193 !WORD _D070+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$09 ; SLW [9] + !BYTE $64,$03 ; LLB [3] + !BYTE $4C ; BRFLS _B115 + !WORD _B115-* + !BYTE $6A ; LAW _D070+0 +_F194 !WORD _D070+0 + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $6A ; LAW _D070+0 +_F195 !WORD _D070+0 + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B115 +_B116 +; vmsrc/apple/cmdjit.pla: 1253: for i = firstblk to entriesblk + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$03 ; LLB [3] + !BYTE $A0 ; BRGT _B117 + !WORD _B117-* +_B118 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/cmdjit.pla: 1254: if ^entry +; vmsrc/apple/cmdjit.pla: 1255: ^entry = ^entry & $0F +; vmsrc/apple/cmdjit.pla: 1256: prstr(entry) +; vmsrc/apple/cmdjit.pla: 1257: type = ' ' +; vmsrc/apple/cmdjit.pla: 1258: when entry->$10 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B120 + !WORD _B120-* + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$09 ; LLW [9] + !BYTE $70 ; SB + !BYTE $66,$09 ; LLW [9] + !BYTE $54 ; CALL _A008 +_F196 !WORD _A008 + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$09 ; LLW [9] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B123-* +; vmsrc/apple/cmdjit.pla: 1259: is $0F // Is it a directory? +_B124 +; vmsrc/apple/cmdjit.pla: 1260: type = '/' +; vmsrc/apple/cmdjit.pla: 1261: break + !BYTE $2A,$2F ; CB 47 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B122 + !WORD _B122-* +; vmsrc/apple/cmdjit.pla: 1262: is $FF // SYSTEM file +_B125 +; vmsrc/apple/cmdjit.pla: 1263: type = '-' +; vmsrc/apple/cmdjit.pla: 1264: break + !BYTE $2A,$2D ; CB 45 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B122 + !WORD _B122-* +; vmsrc/apple/cmdjit.pla: 1265: is $FE // REL file +_B126 +; vmsrc/apple/cmdjit.pla: 1266: type = '+' +; vmsrc/apple/cmdjit.pla: 1267: wend + !BYTE $2A,$2B ; CB 43 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B122 + !WORD _B122-* +_B123 + !BYTE $03 ; CASEBLOCK + !WORD $000F + !WORD _B124-* + !WORD $00FE + !WORD _B126-* + !WORD $00FF + !WORD _B125-* +_B122 +; vmsrc/apple/cmdjit.pla: 1268: cout(type) +; vmsrc/apple/cmdjit.pla: 1269: for len = ^entry to 18 + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _A006 +_F197 !WORD _A006 + !BYTE $2A,$12 ; CB 18 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B127 + !WORD _B127-* +_B128 + !BYTE $6C,$08 ; DLB [8] +; vmsrc/apple/cmdjit.pla: 1270: cout(' ') +; vmsrc/apple/cmdjit.pla: 1271: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _A006 +_F198 !WORD _A006 +_B129 + !BYTE $A4 ; INCBRLE _B128 + !WORD _B128-* +_B127 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; vmsrc/apple/cmdjit.pla: 1272: fin +_B120 +_B121 +; vmsrc/apple/cmdjit.pla: 1273: entry = entry + entrylen +; vmsrc/apple/cmdjit.pla: 1274: next + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B119 + !BYTE $A4 ; INCBRLE _B118 + !WORD _B118-* +_B117 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/cmdjit.pla: 1275: firstblk = 0 +; vmsrc/apple/cmdjit.pla: 1276: loop + !BYTE $00 ; CN 0 + !BYTE $74,$03 ; SLB [3] +_B114 + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _D070+0 +_F199 !WORD _D070+0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _C004 +_F200 !WORD _C004 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B112 + !WORD _B112-* +_B113 +; vmsrc/apple/cmdjit.pla: 1277: close(refnum) +; vmsrc/apple/cmdjit.pla: 1278: crout() +; vmsrc/apple/cmdjit.pla: 1279: end + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _C003 +_F201 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _A005 +_F202 !WORD _A005 + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/cmdjit.pla: 1280: def stripchars(strptr)#1 + ; strptr -> [0] +_C019 ; stripchars() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1281: while ^strptr and ^(strptr + 1) > ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B132 + !WORD _B132-* +_B130 +; vmsrc/apple/cmdjit.pla: 1282: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmdjit.pla: 1283: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F203 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmdjit.pla: 1284: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B132 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B133 + !WORD _B133-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT +_B133 + !BYTE $4E ; BRTRU _B130 + !WORD _B130-* +_B131 +; vmsrc/apple/cmdjit.pla: 1285: return ^strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmdjit.pla: 1286: end +; vmsrc/apple/cmdjit.pla: 1287: def stripspaces(strptr)#0 + ; strptr -> [0] +_C020 ; stripspaces() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1288: while ^strptr and ^(strptr + ^strptr) <= ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B136 + !WORD _B136-* +_B134 +; vmsrc/apple/cmdjit.pla: 1289: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmdjit.pla: 1290: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B136 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B137 + !WORD _B137-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B137 + !BYTE $4E ; BRTRU _B134 + !WORD _B134-* +_B135 +; vmsrc/apple/cmdjit.pla: 1291: while ^strptr and ^(strptr + 1) <= ' ' + !BYTE $50 ; BRNCH _B140 + !WORD _B140-* +_B138 +; vmsrc/apple/cmdjit.pla: 1292: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmdjit.pla: 1293: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F204 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmdjit.pla: 1294: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B140 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B141 + !WORD _B141-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B141 + !BYTE $4E ; BRTRU _B138 + !WORD _B138-* +_B139 +; vmsrc/apple/cmdjit.pla: 1295: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmdjit.pla: 1296: def striptrail(strptr)#1 + ; strptr -> [0] +_C021 ; striptrail() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1297: byte i + ; i -> [2] +; vmsrc/apple/cmdjit.pla: 1298: +; vmsrc/apple/cmdjit.pla: 1299: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B142 + !WORD _B142-* +_B143 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/cmdjit.pla: 1300: if ^(strptr + i) <= ' ' +; vmsrc/apple/cmdjit.pla: 1301: ^strptr = i - 1 +; vmsrc/apple/cmdjit.pla: 1302: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B145 + !WORD _B145-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B142 + !WORD _B142-* +; vmsrc/apple/cmdjit.pla: 1303: fin +_B145 +_B146 +; vmsrc/apple/cmdjit.pla: 1304: next +_B144 + !BYTE $A4 ; INCBRLE _B143 + !WORD _B143-* +_B142 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/cmdjit.pla: 1305: return strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/cmdjit.pla: 1306: end +; vmsrc/apple/cmdjit.pla: 1307: def parsecmd(strptr)#1 + ; strptr -> [0] +_C022 ; parsecmd() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1308: byte cmd + ; cmd -> [2] +; vmsrc/apple/cmdjit.pla: 1309: +; vmsrc/apple/cmdjit.pla: 1310: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/cmdjit.pla: 1311: stripspaces(strptr) +; vmsrc/apple/cmdjit.pla: 1312: if ^strptr +; vmsrc/apple/cmdjit.pla: 1313: cmd = ^(strptr + 1) +; vmsrc/apple/cmdjit.pla: 1314: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/cmdjit.pla: 1315: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F205 !WORD _C020 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B147 + !WORD _B147-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A004 +_F206 !WORD _A004 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmdjit.pla: 1316: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B147 +_B148 +; vmsrc/apple/cmdjit.pla: 1317: stripspaces(strptr) +; vmsrc/apple/cmdjit.pla: 1318: return cmd + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F207 !WORD _C020 + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/cmdjit.pla: 1319: end +; vmsrc/apple/cmdjit.pla: 1320: def resetmemfiles()#0 +_C023 ; resetmemfiles() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1321: byte terr + ; terr -> [0] +; vmsrc/apple/cmdjit.pla: 1322: +; vmsrc/apple/cmdjit.pla: 1323: terr = perr // Save perr + !BYTE $58,$01,$00 ; ENTER 1,0 +; vmsrc/apple/cmdjit.pla: 1324: // +; vmsrc/apple/cmdjit.pla: 1325: // Close all files +; vmsrc/apple/cmdjit.pla: 1326: // +; vmsrc/apple/cmdjit.pla: 1327: ^$BF94 = 0 +; vmsrc/apple/cmdjit.pla: 1328: close(0) +; vmsrc/apple/cmdjit.pla: 1329: // +; vmsrc/apple/cmdjit.pla: 1330: // Set memory bitmap +; vmsrc/apple/cmdjit.pla: 1331: // +; vmsrc/apple/cmdjit.pla: 1332: memset($BF58, 0, 24) +; vmsrc/apple/cmdjit.pla: 1333: ^$BF58 = $CF +; vmsrc/apple/cmdjit.pla: 1334: ^$BF6F = $01 +; vmsrc/apple/cmdjit.pla: 1335: perr = terr // Restore perr +; vmsrc/apple/cmdjit.pla: 1336: end + !BYTE $68 ; LAB _D033+0 +_F208 !WORD _D033+0 + !BYTE $74,$00 ; SLB [0] + !BYTE $00 ; CN 0 + !BYTE $78,$94,$BF ; SAB 49044 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C003 +_F209 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $2C,$58,$BF ; CW 48984 + !BYTE $00 ; CN 0 + !BYTE $2A,$18 ; CB 24 + !BYTE $54 ; CALL _A003 +_F210 !WORD _A003 + !BYTE $2A,$CF ; CB 207 + !BYTE $78,$58,$BF ; SAB 48984 + !BYTE $02 ; CN 1 + !BYTE $78,$6F,$BF ; SAB 49007 + !BYTE $64,$00 ; LLB [0] + !BYTE $78 ; SAB _D033+0 +_F211 !WORD _D033+0 + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/cmdjit.pla: 1337: def execsys(sysfile)#0 + ; sysfile -> [0] +_C024 ; execsys() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1338: byte refnum + ; refnum -> [2] +; vmsrc/apple/cmdjit.pla: 1339: word len + ; len -> [3] +; vmsrc/apple/cmdjit.pla: 1340: +; vmsrc/apple/cmdjit.pla: 1341: if ^sysfile + !BYTE $58,$05,$01 ; ENTER 5,1 +; vmsrc/apple/cmdjit.pla: 1342: strcpy($280, sysfile) +; vmsrc/apple/cmdjit.pla: 1343: striptrail(sysfile) +; vmsrc/apple/cmdjit.pla: 1344: refnum = open(sysfile) +; vmsrc/apple/cmdjit.pla: 1345: if refnum +; vmsrc/apple/cmdjit.pla: 1346: len = read(refnum, $2000, $FFFF) +; vmsrc/apple/cmdjit.pla: 1347: resetmemfiles() +; vmsrc/apple/cmdjit.pla: 1348: if len +; vmsrc/apple/cmdjit.pla: 1349: strcpy(sysfile, $280) +; vmsrc/apple/cmdjit.pla: 1350: if stripchars(sysfile) and ^$2000 == $4C and *$2003 == $EEEE +; vmsrc/apple/cmdjit.pla: 1351: stripspaces(sysfile) +; vmsrc/apple/cmdjit.pla: 1352: if ^$2005 >= ^sysfile + 1 +; vmsrc/apple/cmdjit.pla: 1353: strcpy($2006, sysfile) +; vmsrc/apple/cmdjit.pla: 1354: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B149 + !WORD _B149-* + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C012 +_F212 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C021 +_F213 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F214 !WORD _C002 + !BYTE $6C,$02 ; DLB [2] + !BYTE $4C ; BRFLS _B151 + !WORD _B151-* + !BYTE $64,$02 ; LLB [2] + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $20 ; MINUS ONE + !BYTE $54 ; CALL _C004 +_F215 !WORD _C004 + !BYTE $76,$03 ; SLW [3] + !BYTE $54 ; CALL _C023 +_F216 !WORD _C023 + !BYTE $66,$03 ; LLW [3] + !BYTE $4C ; BRFLS _B153 + !WORD _B153-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $54 ; CALL _C012 +_F217 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C019 +_F218 !WORD _C019 + !BYTE $AC ; BRAND _B155 + !WORD _B155-* + !BYTE $68,$00,$20 ; LAB 8192 + !BYTE $2A,$4C ; CB 76 + !BYTE $40 ; ISEQ + !BYTE $AC ; BRAND _B156 + !WORD _B156-* + !BYTE $6A,$03,$20 ; LAW 8195 + !BYTE $2C,$EE,$EE ; CW 61166 + !BYTE $40 ; ISEQ +_B156 +_B155 + !BYTE $4C ; BRFLS _B157 + !WORD _B157-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C020 +_F219 !WORD _C020 + !BYTE $68,$05,$20 ; LAB 8197 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8C ; INCR + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B159 + !WORD _B159-* + !BYTE $2C,$06,$20 ; CW 8198 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C012 +_F220 !WORD _C012 + !BYTE $30 ; DROP +_B159 +_B160 +; vmsrc/apple/cmdjit.pla: 1355: fin +_B157 +_B158 +; vmsrc/apple/cmdjit.pla: 1356: striptrail($280) +; vmsrc/apple/cmdjit.pla: 1357: exec() +; vmsrc/apple/cmdjit.pla: 1358: fin + !BYTE $2C,$80,$02 ; CW 640 + !BYTE $54 ; CALL _C021 +_F221 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _A002 +_F222 !WORD _A002 +_B153 +_B154 +; vmsrc/apple/cmdjit.pla: 1359: fin +_B151 +_B152 +; vmsrc/apple/cmdjit.pla: 1360: fin +_B149 +_B150 +; vmsrc/apple/cmdjit.pla: 1361: end + !BYTE $5A,$05 ; LEAVE 5 +; vmsrc/apple/cmdjit.pla: 1362: def execmod(modfile)#1 + ; modfile -> [0] +_P026 ; execmod(modfile)#1() +_C025 ; execmod() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1363: byte moddci[17] + ; moddci -> [2] +; vmsrc/apple/cmdjit.pla: 1364: word saveheap, savexheap, savesym, saveflags + ; saveheap -> [19] + ; savexheap -> [21] + ; savesym -> [23] + ; saveflags -> [25] +; vmsrc/apple/cmdjit.pla: 1365: +; vmsrc/apple/cmdjit.pla: 1366: perr = 1 + !BYTE $58,$1B,$01 ; ENTER 27,1 +; vmsrc/apple/cmdjit.pla: 1367: if stodci(modfile, @moddci) +; vmsrc/apple/cmdjit.pla: 1368: saveheap = heap +; vmsrc/apple/cmdjit.pla: 1369: savexheap = xheap +; vmsrc/apple/cmdjit.pla: 1370: savesym = lastsym +; vmsrc/apple/cmdjit.pla: 1371: saveflags = systemflags +; vmsrc/apple/cmdjit.pla: 1372: if loadmod(@moddci) < modkeep +; vmsrc/apple/cmdjit.pla: 1373: lastsym = savesym +; vmsrc/apple/cmdjit.pla: 1374: xheap = savexheap +; vmsrc/apple/cmdjit.pla: 1375: heap = saveheap +; vmsrc/apple/cmdjit.pla: 1376: fin + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D033+0 +_F223 !WORD _D033+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A019 +_F224 !WORD _A019 + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $6A ; LAW _D070+0 +_F225 !WORD _D070+0 + !BYTE $76,$13 ; SLW [19] + !BYTE $6A ; LAW _D071+0 +_F226 !WORD _D071+0 + !BYTE $76,$15 ; SLW [21] + !BYTE $6A ; LAW _D073+0 +_F227 !WORD _D073+0 + !BYTE $76,$17 ; SLW [23] + !BYTE $6A ; LAW _D069+0 +_F228 !WORD _D069+0 + !BYTE $76,$19 ; SLW [25] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C016 +_F229 !WORD _C016 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B163 + !WORD _B163-* + !BYTE $66,$17 ; LLW [23] + !BYTE $7A ; SAW _D073+0 +_F230 !WORD _D073+0 + !BYTE $66,$15 ; LLW [21] + !BYTE $7A ; SAW _D071+0 +_F231 !WORD _D071+0 + !BYTE $66,$13 ; LLW [19] + !BYTE $7A ; SAW _D070+0 +_F232 !WORD _D070+0 +_B163 +_B164 +; vmsrc/apple/cmdjit.pla: 1377: ^lastsym = 0 +; vmsrc/apple/cmdjit.pla: 1378: systemflags = saveflags +; vmsrc/apple/cmdjit.pla: 1379: fin + !BYTE $00 ; CN 0 + !BYTE $6A ; LAW _D073+0 +_F233 !WORD _D073+0 + !BYTE $70 ; SB + !BYTE $66,$19 ; LLW [25] + !BYTE $7A ; SAW _D069+0 +_F234 !WORD _D069+0 +_B161 +_B162 +; vmsrc/apple/cmdjit.pla: 1380: return -perr + !BYTE $68 ; LAB _D033+0 +_F235 !WORD _D033+0 + !BYTE $90 ; NEG + !BYTE $5A,$1B ; LEAVE 27 +; vmsrc/apple/cmdjit.pla: 1381: end +; vmsrc/apple/cmdjit.pla: 1382: // +; vmsrc/apple/cmdjit.pla: 1383: // Command line processor +; vmsrc/apple/cmdjit.pla: 1384: // +; vmsrc/apple/cmdjit.pla: 1385: def docmds#0 +_C026 ; docmds() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1386: word prefix + ; prefix -> [0] +; vmsrc/apple/cmdjit.pla: 1387: +; vmsrc/apple/cmdjit.pla: 1388: loadmod(jitmod) // Cannot do this in init code - it will overwrite it! + !BYTE $58,$02,$00 ; ENTER 2,0 +; vmsrc/apple/cmdjit.pla: 1389: xheap = $0400 // Reset heap to point at low memory +; vmsrc/apple/cmdjit.pla: 1390: xheaptop = $A000 // Top below JITC +; vmsrc/apple/cmdjit.pla: 1391: prefix = pfxop(heap, GET_PFX) +; vmsrc/apple/cmdjit.pla: 1392: repeat + !BYTE $2C,$F0,$02 ; CW 752 + !BYTE $54 ; CALL _C016 +_F236 !WORD _C016 + !BYTE $30 ; DROP + !BYTE $2C,$00,$04 ; CW 1024 + !BYTE $7A ; SAW _D071+0 +_F237 !WORD _D071+0 + !BYTE $2C,$00,$A0 ; CW 40960 + !BYTE $7A ; SAW _D072+0 +_F238 !WORD _D072+0 + !BYTE $6A ; LAW _D070+0 +_F239 !WORD _D070+0 + !BYTE $2A,$C7 ; CB 199 + !BYTE $54 ; CALL _C001 +_F240 !WORD _C001 + !BYTE $76,$00 ; SLW [0] +_B166 +; vmsrc/apple/cmdjit.pla: 1393: if ^getlnbuf +; vmsrc/apple/cmdjit.pla: 1394: strcpy(@cmdln, getlnbuf) +; vmsrc/apple/cmdjit.pla: 1395: when toupper(parsecmd(getlnbuf)) + !BYTE $68,$FF,$01 ; LAB 511 + !BYTE $4C ; BRFLS _B168 + !WORD _B168-* + !BYTE $26 ; LA _D036+0 +_F241 !WORD _D036+0 + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C012 +_F242 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C022 +_F243 !WORD _C022 + !BYTE $54 ; CALL _A020 +_F244 !WORD _A020 + !BYTE $52 ; SEL + !WORD _B171-* +; vmsrc/apple/cmdjit.pla: 1396: is 'C' +_B172 +; vmsrc/apple/cmdjit.pla: 1397: catalog(^getlnbuf ?? getlnbuf :: prefix) +; vmsrc/apple/cmdjit.pla: 1398: break + !BYTE $68,$FF,$01 ; LAB 511 + !BYTE $4C ; BRFLS _B175 + !WORD _B175-* + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $50 ; BRNCH _B176 + !WORD _B176-* +_B175 + !BYTE $66,$00 ; LLW [0] +_B176 + !BYTE $54 ; CALL _C018 +_F245 !WORD _C018 + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1399: is 'P' +_B177 +; vmsrc/apple/cmdjit.pla: 1400: pfxop(getlnbuf, SET_PFX) +; vmsrc/apple/cmdjit.pla: 1401: break + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $2A,$C6 ; CB 198 + !BYTE $54 ; CALL _C001 +_F246 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1402: is '/' +_B178 +; vmsrc/apple/cmdjit.pla: 1403: repeat +_B180 +; vmsrc/apple/cmdjit.pla: 1404: ^prefix-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/cmdjit.pla: 1405: until ^(prefix + ^prefix) == '/' + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B181 + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B180 + !WORD _B180-* +_B179 +; vmsrc/apple/cmdjit.pla: 1406: if ^prefix > 1 +; vmsrc/apple/cmdjit.pla: 1407: pfxop(prefix, SET_PFX) +; vmsrc/apple/cmdjit.pla: 1408: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B182 + !WORD _B182-* + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$C6 ; CB 198 + !BYTE $54 ; CALL _C001 +_F247 !WORD _C001 + !BYTE $30 ; DROP +_B182 +_B183 +; vmsrc/apple/cmdjit.pla: 1409: break + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1410: is 'V' +_B184 +; vmsrc/apple/cmdjit.pla: 1411: volumes() +; vmsrc/apple/cmdjit.pla: 1412: break + !BYTE $54 ; CALL _C017 +_F248 !WORD _C017 + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1413: is '-' +_B185 +; vmsrc/apple/cmdjit.pla: 1414: execsys(getlnbuf) +; vmsrc/apple/cmdjit.pla: 1415: break + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C024 +_F249 !WORD _C024 + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1416: is '+' +_B186 +; vmsrc/apple/cmdjit.pla: 1417: // +; vmsrc/apple/cmdjit.pla: 1418: // Set JIT code pointer +; vmsrc/apple/cmdjit.pla: 1419: // +; vmsrc/apple/cmdjit.pla: 1420: *jitcodeptr = jitcbuf +; vmsrc/apple/cmdjit.pla: 1421: // +; vmsrc/apple/cmdjit.pla: 1422: // Exec module +; vmsrc/apple/cmdjit.pla: 1423: // +; vmsrc/apple/cmdjit.pla: 1424: execmod(striptrail(getlnbuf)) +; vmsrc/apple/cmdjit.pla: 1425: // +; vmsrc/apple/cmdjit.pla: 1426: // Clean up +; vmsrc/apple/cmdjit.pla: 1427: // +; vmsrc/apple/cmdjit.pla: 1428: resetmemfiles +; vmsrc/apple/cmdjit.pla: 1429: break + !BYTE $2C,$00,$AF ; CW 44800 + !BYTE $7A,$E4,$03 ; SAW 996 + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $54 ; CALL _C021 +_F250 !WORD _C021 + !BYTE $54 ; CALL _C025 +_F251 !WORD _C025 + !BYTE $30 ; DROP + !BYTE $54 ; CALL _C023 +_F252 !WORD _C023 + !BYTE $50 ; BRNCH _B170 + !WORD _B170-* +; vmsrc/apple/cmdjit.pla: 1430: otherwise +_B171 + !BYTE $06 ; CASEBLOCK + !WORD $002B + !WORD _B186-* + !WORD $002D + !WORD _B185-* + !WORD $002F + !WORD _B178-* + !WORD $0043 + !WORD _B172-* + !WORD $0050 + !WORD _B177-* + !WORD $0056 + !WORD _B184-* +; vmsrc/apple/cmdjit.pla: 1431: cout('?') +; vmsrc/apple/cmdjit.pla: 1432: wend + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _A006 +_F253 !WORD _A006 +_B170 +; vmsrc/apple/cmdjit.pla: 1433: if perr +; vmsrc/apple/cmdjit.pla: 1434: prstr("ERR:$") + !BYTE $68 ; LAB _D033+0 +_F254 !WORD _D033+0 + !BYTE $4C ; BRFLS _B187 + !WORD _B187-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $45,$52,$52,$3A,$24 + !BYTE $54 ; CALL _A008 +_F255 !WORD _A008 +; vmsrc/apple/cmdjit.pla: 1435: prbyte(perr) +; vmsrc/apple/cmdjit.pla: 1436: crout() +; vmsrc/apple/cmdjit.pla: 1437: fin + !BYTE $68 ; LAB _D033+0 +_F256 !WORD _D033+0 + !BYTE $54 ; CALL _A010 +_F257 !WORD _A010 + !BYTE $54 ; CALL _A005 +_F258 !WORD _A005 +_B187 +_B188 +; vmsrc/apple/cmdjit.pla: 1438: fin +_B168 +_B169 +; vmsrc/apple/cmdjit.pla: 1439: prstr(pfxop(prefix, GET_PFX)) +; vmsrc/apple/cmdjit.pla: 1440: rdstr($BA) +; vmsrc/apple/cmdjit.pla: 1441: until 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $2A,$C7 ; CB 199 + !BYTE $54 ; CALL _C001 +_F259 !WORD _C001 + !BYTE $54 ; CALL _A008 +_F260 !WORD _A008 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _A011 +_F261 !WORD _A011 + !BYTE $30 ; DROP +_B167 + !BYTE $50 ; BRNCH _B166 + !WORD _B166-* +_B165 +; vmsrc/apple/cmdjit.pla: 1442: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/cmdjit.pla: 1443: // +; vmsrc/apple/cmdjit.pla: 1444: // Dummy definition to get free heap +; vmsrc/apple/cmdjit.pla: 1445: // +; vmsrc/apple/cmdjit.pla: 1446: def lastdef#0 +_C027 ; lastdef() + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1447: end + !BYTE $5C ; RET +; vmsrc/apple/cmdjit.pla: 1448: // +; vmsrc/apple/cmdjit.pla: 1449: // Get heap start. +; vmsrc/apple/cmdjit.pla: 1450: // +; vmsrc/apple/cmdjit.pla: 1451: heap = @lastdef +_INIT + JSR INTERP +; vmsrc/apple/cmdjit.pla: 1452: // +; vmsrc/apple/cmdjit.pla: 1453: // Print PLASMA version +; vmsrc/apple/cmdjit.pla: 1454: // +; vmsrc/apple/cmdjit.pla: 1455: prstr("PLASMA 2.0 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout + !BYTE $26 ; LA _C027+0 +_F262 !WORD _C027+0 + !BYTE $7A ; SAW _D070+0 +_F263 !WORD _D070+0 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$32 + !BYTE $2E,$30,$20,$31,$32,$38,$4B,$0D + !BYTE $54 ; CALL _A008 +_F264 !WORD _A008 +; vmsrc/apple/cmdjit.pla: 1456: // +; vmsrc/apple/cmdjit.pla: 1457: // Init symbol table. +; vmsrc/apple/cmdjit.pla: 1458: // +; vmsrc/apple/cmdjit.pla: 1459: while *sysmodsym + !BYTE $50 ; BRNCH _B191 + !WORD _B191-* +_B189 +; vmsrc/apple/cmdjit.pla: 1460: stodci(sysmodsym=>0, heap) +; vmsrc/apple/cmdjit.pla: 1461: addsym(heap, sysmodsym=>2) +; vmsrc/apple/cmdjit.pla: 1462: sysmodsym = sysmodsym + 4 +; vmsrc/apple/cmdjit.pla: 1463: loop + !BYTE $6A ; LAW _D068+0 +_F265 !WORD _D068+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D070+0 +_F266 !WORD _D070+0 + !BYTE $54 ; CALL _A019 +_F267 !WORD _A019 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D070+0 +_F268 !WORD _D070+0 + !BYTE $6A ; LAW _D068+0 +_F269 !WORD _D068+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C011 +_F270 !WORD _C011 + !BYTE $6A ; LAW _D068+0 +_F271 !WORD _D068+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $7A ; SAW _D068+0 +_F272 !WORD _D068+0 +_B191 + !BYTE $6A ; LAW _D068+0 +_F273 !WORD _D068+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B189 + !WORD _B189-* +_B190 +; vmsrc/apple/cmdjit.pla: 1464: // +; vmsrc/apple/cmdjit.pla: 1465: // Set system path +; vmsrc/apple/cmdjit.pla: 1466: // +; vmsrc/apple/cmdjit.pla: 1467: strcat(strcpy(@sysmods, $300), "SYS/")) // This is the path to CMD + !BYTE $26 ; LA _D067+0 +_F274 !WORD _D067+0 + !BYTE $2C,$00,$03 ; CW 768 + !BYTE $54 ; CALL _C012 +_F275 !WORD _C012 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$59,$53,$2F + !BYTE $54 ; CALL _C013 +_F276 !WORD _C013 + !BYTE $30 ; DROP +; vmsrc/apple/cmdjit.pla: 1468: syspath = @sysmods // Update external interface table +; vmsrc/apple/cmdjit.pla: 1469: syscmdln = @cmdln +; vmsrc/apple/cmdjit.pla: 1470: // +; vmsrc/apple/cmdjit.pla: 1471: // Try to load autorun. +; vmsrc/apple/cmdjit.pla: 1472: // +; vmsrc/apple/cmdjit.pla: 1473: autorun = open(@autorun) +; vmsrc/apple/cmdjit.pla: 1474: if autorun +; vmsrc/apple/cmdjit.pla: 1475: cmdln = read(autorun, @cmdln+1, 81) +; vmsrc/apple/cmdjit.pla: 1476: strcpy(getlnbuf, @cmdln) +; vmsrc/apple/cmdjit.pla: 1477: close(0) +; vmsrc/apple/cmdjit.pla: 1478: else + !BYTE $26 ; LA _D067+0 +_F277 !WORD _D067+0 + !BYTE $7A ; SAW _D031+0 +_F278 !WORD _D031+0 + !BYTE $26 ; LA _D036+0 +_F279 !WORD _D036+0 + !BYTE $7A ; SAW _D032+0 +_F280 !WORD _D032+0 + !BYTE $26 ; LA _D037+0 +_F281 !WORD _D037+0 + !BYTE $54 ; CALL _C002 +_F282 !WORD _C002 + !BYTE $7C ; DAB _D037+0 +_F283 !WORD _D037+0 + !BYTE $4C ; BRFLS _B192 + !WORD _B192-* + !BYTE $68 ; LAB _D037+0 +_F284 !WORD _D037+0 + !BYTE $26 ; LA _D036+1 +_F285 !WORD _D036+1 + !BYTE $2A,$51 ; CB 81 + !BYTE $54 ; CALL _C004 +_F286 !WORD _C004 + !BYTE $78 ; SAB _D036+0 +_F287 !WORD _D036+0 + !BYTE $2C,$FF,$01 ; CW 511 + !BYTE $26 ; LA _D036+0 +_F288 !WORD _D036+0 + !BYTE $54 ; CALL _C012 +_F289 !WORD _C012 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _C003 +_F290 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B193 + !WORD _B193-* +_B192 +; vmsrc/apple/cmdjit.pla: 1479: ^getlnbuf = 0 +; vmsrc/apple/cmdjit.pla: 1480: // +; vmsrc/apple/cmdjit.pla: 1481: // Print some startup info. +; vmsrc/apple/cmdjit.pla: 1482: // +; vmsrc/apple/cmdjit.pla: 1483: prstr("MEM FREE:$"); prword(availheap); crout + !BYTE $00 ; CN 0 + !BYTE $78,$FF,$01 ; SAB 511 + !BYTE $2E ; CS + !BYTE $0A + !BYTE $4D,$45,$4D,$20,$46,$52,$45,$45 + !BYTE $3A,$24 + !BYTE $54 ; CALL _A008 +_F291 !WORD _A008 +; vmsrc/apple/cmdjit.pla: 1484: fin + !BYTE $54 ; CALL _C005 +_F292 !WORD _C005 + !BYTE $54 ; CALL _A009 +_F293 !WORD _A009 + !BYTE $54 ; CALL _A005 +_F294 !WORD _A005 +_B193 +; vmsrc/apple/cmdjit.pla: 1485: docmds +; vmsrc/apple/cmdjit.pla: 1486: done + !BYTE $54 ; CALL _C026 +_F295 !WORD _C026 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 diff --git a/src/vmsrc/apple/plvm01.sym b/src/vmsrc/apple/plvm01.sym new file mode 100644 index 0000000..4acc5be --- /dev/null +++ b/src/vmsrc/apple/plvm01.sym @@ -0,0 +1,644 @@ + A1CMD = $9c6 + BRTRU = $8b3 ; ? + _DIV = $40c ; ? + ISGT = $7ef ; ? + INTERP = $283 + ISEQ = $7a5 ; ? + _LAW = $673 + _F009 = $af3 ; unused + _F028 = $b19 ; unused + _F219 = $15ff ; unused + _B019 = $f1e + _B038 = $1123 ; unused + _F008 = $af1 ; unused + _F029 = $b1b ; unused + _F218 = $15fc ; unused + _B018 = $f1b ; unused + _B039 = $111b ; ? + _F049 = $b43 ; unused + _F068 = $f12 ; unused + _B059 = $1259 ; unused + _B078 = $1392 ; ? + SRCL = $6 + _F048 = $b41 ; unused + _F069 = $f27 ; unused + _B058 = $1259 ; ? + _B079 = $1392 ; unused + BRNCH = $8c8 ; ? + _F089 = $1089 ; unused + _B099 = $146b ; unused + SEGEND = $1633 + ICAL = $956 ; ? + _F088 = $107c ; unused + _B098 = $1447 + SRCH = $7 + _F001 = $a1f ; unused + _F020 = $b09 ; unused + _F043 = $b37 ; unused + _F062 = $eb9 ; unused + _F085 = $105b ; unused + _F211 = $15cd ; unused + _F230 = $1629 ; unused + _B011 = $fc0 ; ? + _B030 = $fcd ; ? + _B053 = $1283 ; ? + _B072 = $1352 ; unused + _B095 = $1444 ; unused + _F000 = $9cf ; unused + _F021 = $b0b ; unused + _F042 = $b35 ; unused + _F063 = $ec2 ; unused + _F084 = $103c ; unused + _F210 = $15ca ; unused + _F231 = $162c ; unused + _B010 = $fc0 ; unused + _B031 = $10ac ; ? + _B052 = $1228 ; ? + _B073 = $1340 ; ? + _B094 = $142b + _LAB = $65f + ISFLS = $7c6 ; ? + _F003 = $ae7 ; unused + _F022 = $b0d ; unused + _F041 = $b33 ; unused + _F060 = $e8c ; unused + _F087 = $1079 ; unused + _F213 = $15d6 ; unused + _B013 = $ee0 + _B032 = $10ac ; unused + _B070 = $1352 ; ? + _B097 = $1441 ; ? + _B051 = $139e ; unused + ISGE = $7cf ; ? + _F002 = $ae5 ; unused + _F023 = $b0f ; unused + _F040 = $b31 ; unused + _F061 = $ea6 ; unused + _F086 = $105e ; unused + _F212 = $15d0 ; unused + _B012 = $f78 ; ? + _B033 = $10c1 ; ? + _B050 = $139e ; ? + _B071 = $1352 ; ? + _B096 = $1432 ; ? + _F005 = $aeb ; unused + _F024 = $b11 ; unused + _F047 = $b3f ; unused + _F066 = $efa ; unused + _F081 = $1004 ; unused + _F215 = $15e2 ; unused + _B015 = $efc ; unused + _B034 = $10c1 ; unused + _B057 = $1264 ; ? + _B076 = $139e ; unused + _B091 = $141d ; unused + ESTK = $c0 + _F004 = $ae9 ; unused + _F025 = $b13 ; unused + _F046 = $b3d ; unused + _F067 = $f08 ; unused + _F080 = $ff7 ; unused + _F214 = $15db ; unused + REVCPYLP = $c4a ; ? + _B014 = $efc ; ? + _B035 = $10e1 ; ? + _B056 = $126a ; unused + _B077 = $1398 ; ? + _B090 = $13f9 + _F007 = $aef ; unused + _F026 = $b15 ; unused + _F045 = $b3b ; unused + _F064 = $ed6 ; unused + _F083 = $101d ; unused + _F217 = $15f9 ; unused + _B017 = $f1b ; ? + _B036 = $10e1 ; unused + _B055 = $123e + _B074 = $1349 ; ? + _B093 = $141a ; ? + _F006 = $aed ; unused + _F027 = $b17 ; unused + _F044 = $b39 ; unused + _F065 = $ed9 ; unused + _F082 = $1009 ; unused + _F216 = $15e5 ; unused + _B016 = $eff + _B037 = $1108 + _B054 = $1283 ; unused + _B075 = $135b + _B092 = $140d ; ? + IFP = $e0 + IPY = $e4 + SAW = $756 ; ? + IINTERP = $293 + BROR = $88a ; ? + DECR = $2e5 + BRGT = $8e6 ; ? + VMINIT = $1633 ; ? + BREQ = $893 ; ? + _C019 = $13f0 ; unused + _C018 = $11c6 + IPH = $f3 + DECBRGE = $906 ; ? + _DIV1 = $432 ; ? + IPL = $f2 + SAB = $743 ; ? + FIXNEXT = $872 ; ? + ADD = $45b ; ? + _C011 = $108e + _C010 = $1080 + DSTL = $8 + _C013 = $10e5 ; unused + SEL = $80f ; ? + _C012 = $10b0 ; unused + SUB = $46b ; ? + _C015 = $10ff + FIXDROP = $701 ; ? + _C014 = $10ec + FORCPYLP = $c11 ; ? + DSTH = $9 + SEGBEGIN = $280 ; unused + _C017 = $1199 + _C016 = $1140 + IDXW = $47b ; ? + CASELP = $835 ; ? + RLDEX = $e39 ; ? + INCR = $2dc + _BRLE = $924 ; ? + _SYSFLAGS = $0 ; unused + COMP = $2f0 + _D028 = $9cb ; unused + _F109 = $1152 ; unused + _F128 = $124c ; unused + _B119 = $15bf ; ? + _D029 = $9cd ; unused + _F108 = $113b ; unused + _F129 = $1254 ; unused + _B118 = $1597 ; ? + ADDI = $517 ; ? + CALL = $961 ; ? + LEAVE = $9a8 ; ? + _D049 = $a34 + _D068 = $ac1 + _P019 = $be6 ; ? + _F149 = $13ad ; unused + _F168 = $1509 ; unused + _D048 = $a2f + _D069 = $ac7 + _P018 = $bb3 ; ? + _F148 = $13a5 ; unused + _F169 = $150f ; unused + _F189 = $1563 ; unused + _F188 = $155d ; unused + SUBI = $526 ; ? + NOBRNCH = $8ba ; ? + _D043 = $a0e + _D062 = $a84 + _P013 = $10e5 ; ? + _F101 = $110c ; unused + _F120 = $11e5 ; unused + _F143 = $1365 ; unused + _F162 = $14e3 ; unused + _F185 = $1553 ; unused + _B111 = $1507 ; ? + _B130 = $15e1 + _D042 = $a0b + _D063 = $a93 + _P012 = $1029 ; ? + _F100 = $10fa ; unused + _F121 = $11f4 ; unused + _F142 = $1347 ; unused + _F163 = $14e8 ; unused + _F184 = $154f ; unused + _B110 = $1511 ; unused + _B131 = $1617 ; ? + _D041 = $a08 + _D060 = $a76 + _P011 = $100d ; ? + _F103 = $1114 ; unused + _F122 = $11f7 ; unused + _F141 = $133a ; unused + _F160 = $14d6 ; unused + _F187 = $155a ; unused + _B113 = $154e + _B132 = $161d ; ? + _D040 = $a01 + _D061 = $a7b + _P010 = $d1f ; ? + _F102 = $1110 ; unused + _F123 = $11fd ; unused + _F140 = $131b ; unused + _F161 = $14dd ; unused + _F186 = $1556 ; unused + _B112 = $1507 ; unused + _D047 = $a28 + _D066 = $ab3 + _P017 = $1080 ; ? + _F105 = $112d ; unused + _F124 = $1202 ; unused + _F147 = $139f ; unused + _F166 = $1500 ; unused + _F181 = $1541 ; unused + _B115 = $156d ; ? + BRAND = $881 ; ? + _D046 = $a21 + _D067 = $aba + _P016 = $10ec ; ? + _F104 = $1127 ; unused + _F125 = $121f ; unused + _F146 = $1390 ; unused + _F167 = $1505 ; unused + _F180 = $153e ; unused + _B114 = $1574 ; unused + _D045 = $a1f + _D064 = $a9d + _P015 = $10b0 ; ? + _F107 = $1137 ; unused + _F126 = $1241 ; unused + _F145 = $1387 ; unused + _F164 = $14ed ; unused + _F183 = $1548 ; unused + _B117 = $15a5 ; unused + _D027 = $9c9 + _D044 = $a1e + _D065 = $aa9 + _P014 = $108e ; ? + _F106 = $1132 ; unused + _F127 = $1244 ; unused + _F144 = $137b ; unused + _F165 = $14f4 ; unused + _F182 = $1544 ; unused + _B116 = $158e + DLW = $723 ; ? + RET = $9b5 ; ? + LLW = $641 ; ? + LB = $5cb ; ? + LA = $595 ; ? + ESGUARD = $be ; unused + IDXLB = $653 ; ? + PAGE0 = $1655 ; ? + JMPTMP = $e6 + ADDAB = $69a ; ? + PPL = $e2 ; unused + _A019 = $dab + LW = $5da ; ? + _A018 = $d73 ; unused + PPH = $e3 ; unused + _DIVLP = $439 + LLA = $602 ; ? + DLB = $710 ; ? + NEG = $3f8 ; ? + LLB = $63b ; ? + PP = $e2 + ENTER = $983 ; ? + _A011 = $cac ; unused + _A010 = $c9a ; unused + ADDAW = $6a0 ; ? + _A013 = $cbb + XREG = $b5c ; ? + BAND = $48e ; ? + IDXLW = $659 ; ? + _A012 = $cb1 ; unused + ZERO = $566 ; ? + _A015 = $ced + _A014 = $cc5 + _A017 = $d30 + _A016 = $d1f + TOUPR = $d21 ; ? + CALL6502 = $b8f ; ? + OPTBL = $300 + _LLW = $628 + BRFLS = $8c1 ; ? + ISLT = $801 ; ? + _F019 = $b07 ; unused + _F038 = $b2d ; unused + _F209 = $15c3 ; unused + _F228 = $1621 ; unused + _B009 = $ed8 + _B028 = $fc0 ; ? + _F018 = $b05 ; unused + _F039 = $b2f ; unused + _F208 = $15bd ; unused + _F229 = $1624 ; unused + _B029 = $fc0 ; unused + _B008 = $fd0 ; unused + DVSIGN = $e9 + _F059 = $e74 ; unused + _F078 = $feb ; unused + _B049 = $11ea ; unused + _B068 = $1312 + _F058 = $b57 ; unused + _F079 = $fee ; unused + _B048 = $11ea ; ? + _B069 = $1358 ; unused + _F099 = $10f5 ; unused + _B089 = $13e4 ; unused + _F098 = $10e9 ; unused + _B088 = $13e4 ; ? + ISTRU = $7b1 + CFFB = $579 ; ? + _F011 = $af7 ; unused + _F030 = $b1d ; unused + _F053 = $b4b ; unused + _F072 = $f59 ; unused + _F095 = $10c9 ; unused + _F201 = $1598 ; unused + _F220 = $1605 ; unused + _B001 = $e91 ; ? + _B020 = $f55 ; ? + _B043 = $1164 ; ? + _B062 = $12e2 + _B085 = $13e4 ; unused + _F010 = $af5 ; unused + _F031 = $b1f ; unused + _F052 = $b49 ; unused + _F073 = $f5f ; unused + _F094 = $10bc ; unused + _F200 = $1594 ; unused + _F221 = $1608 ; unused + _B021 = $f55 ; unused + _B042 = $1190 ; ? + _B063 = $12ee ; unused + _B084 = $13e4 ; ? + _F013 = $afb ; unused + _F032 = $b21 ; unused + _F051 = $b47 ; unused + _F070 = $f31 ; unused + _F097 = $10d9 ; unused + _F203 = $15aa ; unused + _F222 = $160b ; unused + _B003 = $e8e ; unused + _B022 = $f58 + _B041 = $1196 ; unused + _B060 = $1259 ; ? + _B087 = $13d4 ; unused + _F012 = $af9 ; unused + _F033 = $b23 ; unused + _F050 = $b45 ; unused + _F071 = $f47 ; unused + _F096 = $10d4 ; unused + _F202 = $15a7 ; unused + _F223 = $160e ; unused + _B002 = $e84 + _B023 = $f64 + _B040 = $1149 + _B061 = $1259 ; unused + _B086 = $13d4 ; ? + _LLB = $616 + _F015 = $aff ; unused + _F034 = $b25 ; unused + _F057 = $b53 ; unused + _F076 = $fd2 ; unused + _F091 = $109a ; unused + _F205 = $15b4 ; unused + _F224 = $1612 ; unused + _B005 = $ead ; unused + _B024 = $f64 + _B047 = $1186 ; unused + _B066 = $130f ; unused + _B081 = $138b ; unused + _NEG = $3fe ; ? + _F014 = $afd ; unused + _F035 = $b27 ; unused + _F056 = $b51 ; unused + _F077 = $fe0 ; unused + _F090 = $1095 ; unused + _F204 = $15b1 ; unused + _F225 = $1618 ; unused + _B004 = $ead ; ? + _B025 = $f6e + _B046 = $1186 ; ? + _B067 = $1308 ; ? + _B080 = $138b ; ? + CPYMEX = $c5f ; ? + ISLE = $7e1 ; ? + _F017 = $b03 ; unused + _F036 = $b29 ; unused + _F055 = $b4f ; unused + _F074 = $f65 ; unused + _F093 = $10a4 ; unused + _F207 = $15ba ; unused + _F226 = $161b ; unused + _B007 = $ebb ; unused + _B026 = $fc0 ; ? + _B045 = $118a ; unused + _B064 = $12e8 ; ? + _B083 = $13aa ; unused + ISNE = $7ba ; ? + _F016 = $b01 ; unused + _F037 = $b2b ; unused + _F054 = $b4d ; unused + _F075 = $fa0 ; unused + _F092 = $109f ; unused + _F206 = $15b7 ; unused + _F227 = $161e ; unused + _B006 = $ebb ; ? + _B027 = $fc0 ; unused + _B044 = $118a ; ? + _B065 = $12f6 + _B082 = $13aa ; ? + SHR = $4df ; ? + SLW = $6eb ; ? + IOR = $49d ; ? + _CALL = $96b ; ? + ESP = $e5 + CASEEND = $858 ; ? + REVCPY = $c25 ; ? + BRLT = $8f4 ; ? + SLB = $6da ; ? + _C009 = $1065 + MOD = $3cc ; ? + _C008 = $104c + ORI = $543 ; ? + ESTKSZ = $20 + MUL = $2a8 + _C001 = $e77 + _C020 = $1422 + TMPH = $e8 + _C000 = $e6f + _C021 = $146d ; unused + _C003 = $ec6 + _C022 = $1497 + _C002 = $e96 + _C023 = $14ce + SHL = $4bb ; ? + _C005 = $ffb + TMPL = $e7 + _C004 = $fd9 + SRC = $6 + BRNE = $8a3 ; ? + _C007 = $1029 ; unused + _INIT = $1517 ; ? + _C006 = $100d ; unused + ESTKL = $d0 + OPPAGE = $f8 ; unused + ESTKH = $c0 + DROP2 = $6d6 ; ? + DIVMOD = $3de ; ? + NEXTOP = $f0 + _BRGE = $910 + ANDI = $535 ; ? + _D038 = $9f0 + _F119 = $11df ; unused + _F138 = $12b9 ; unused + _B109 = $1511 ; ? + _B128 = $15d5 + _D039 = $9fb + _F118 = $11d7 ; unused + _F139 = $12ff ; unused + _B108 = $14c5 ; unused + _B129 = $15d8 + _D059 = $a6e + _P009 = $ec6 ; ? + _F159 = $14c8 ; unused + _F178 = $1535 ; unused + _D058 = $a67 + _P008 = $e5d ; ? + _F158 = $14bc ; unused + _F179 = $1538 ; unused + _F199 = $158f ; unused + _F198 = $1588 ; unused + OPIDX = $f7 + IFPH = $e1 + _D030 = $9d1 + _D053 = $a49 + _D072 = $ad9 + _P003 = $e53 ; ? + _P022 = $c9a ; ? + _F111 = $116d ; unused + _F130 = $125f ; unused + _F153 = $13e1 ; unused + _F172 = $1521 ; unused + _F195 = $157e ; unused + _B101 = $1468 ; ? + _B120 = $15bf ; unused + _D031 = $9d3 + _D052 = $a44 + _D073 = $ade + _P002 = $e6f ; ? + _P023 = $c74 ; ? + _F110 = $116a ; unused + _F131 = $1270 ; unused + _F152 = $13d5 ; unused + _F173 = $1524 ; unused + _F194 = $1578 ; unused + _B100 = $145b ; ? + _B121 = $15c2 + _D032 = $9d5 + _D051 = $a3f + _D070 = $acd + _P001 = $b71 ; ? + _P020 = $c88 ; ? + _F113 = $117c ; unused + _F132 = $127d ; unused + _F151 = $13d2 ; unused + _F170 = $1512 ; unused + _F197 = $1584 ; unused + _B103 = $147a + _B122 = $1631 ; unused + _D033 = $9d7 + _D050 = $a3a + _D071 = $ad3 + _P000 = $b5f ; ? + _P021 = $c60 ; ? + _F112 = $1177 ; unused + _F133 = $1280 ; unused + _F150 = $13c4 ; unused + _F171 = $151e ; unused + _F196 = $1581 ; unused + _B102 = $1492 ; ? + _B123 = $162e ; ? + IFPL = $e0 + INCBRLE = $91e ; ? + ADDBRLE = $946 ; ? + _P026 = $14ce ; ? + _D034 = $9d9 + _D057 = $a60 + _P007 = $ffb ; ? + _F115 = $1184 ; unused + _F134 = $128a ; unused + _F157 = $14a3 ; unused + _F176 = $152f ; unused + _F191 = $156b ; unused + _B105 = $148f ; ? + _B124 = $1620 ; ? + _D035 = $9da ; unused + _D056 = $a58 + _P006 = $fd9 ; ? + _F114 = $1181 ; unused + _F135 = $128f ; unused + _F156 = $1452 ; unused + _F177 = $1532 ; unused + _F190 = $1566 ; unused + _B104 = $148f ; unused + _B125 = $1620 ; unused + _D036 = $9db + _D055 = $a53 + _D074 = $ae5 + _P005 = $e96 ; ? + _P024 = $cb1 ; ? + _F117 = $11d1 ; unused + _F136 = $12a9 ; unused + _F155 = $1404 ; unused + _F174 = $1527 ; unused + _F193 = $1575 ; unused + _B107 = $14c5 ; ? + _B126 = $15fe ; ? + _D037 = $9e3 + _D054 = $a4e + _P004 = $e77 ; ? + _P025 = $cac ; ? + _D075 = $b57 + _F116 = $11af ; unused + _F137 = $12b2 ; unused + _F154 = $13e7 ; unused + _F175 = $152a ; unused + _F192 = $156e ; unused + _B106 = $148f ; unused + _B127 = $15eb ; ? + _MULLP = $2bc + TMP = $e7 + XOR = $4ac ; ? + CB = $57c ; ? + DIV = $3c2 ; ? + VMZP = $e0 + LAW = $694 ; ? + NATV = $9b6 ; ? + DAW = $789 ; ? + IDXAB = $6a6 ; ? + LNOT = $54d ; ? + ADDLB = $647 ; ? + DROP = $ef + DUP = $50b ; ? + SB = $6b2 ; ? + DST = $8 + SETMEX = $be2 ; ? + CN = $56e ; ? + _A009 = $c88 ; unused + LAB = $68e ; ? + _A008 = $c74 ; unused + CS = $5b3 ; ? + DAB = $774 ; ? + IP = $f2 + CW = $5a5 ; ? + _DIVEX = $457 ; ? + _A001 = $b5c ; unused + _A020 = $de6 + REGVALS = $bac ; ? + SETMLPH = $bca + SUBBRGE = $936 ; ? + _A000 = $b59 ; unused + _A021 = $e53 + MINUS1 = $55c ; ? + _A003 = $b71 ; unused + _A022 = $e5d + FETCHOP = $f1 + _A002 = $b5f + ADDLW = $64d ; ? + _A005 = $bb3 + SETMLPL = $bc7 + IDXAW = $6ac ; ? + _A004 = $bb0 + SW = $6be ; ? + _A007 = $c60 + _A006 = $be6 diff --git a/src/vmsrc/apple/plvm02.s b/src/vmsrc/apple/plvm02.s index b3d9646..ac709c2 100755 --- a/src/vmsrc/apple/plvm02.s +++ b/src/vmsrc/apple/plvm02.s @@ -343,29 +343,49 @@ IDXW LDA ESTKL,X ;* MUL TOS-1 BY TOS ;* MUL STY IPY - LDY #$10 + LDA ESTKH,X + CMP ESTKH+1,X + BCS + + TAY ; SWAP MULTIPLIER AND MULTIPLICAND + LDA ESTKH+1,X ; SO THAT MULTIPLIER IS SMALLER + STA ESTKH,X + STY ESTKH+1,X + LDY ESTKL,X LDA ESTKL+1,X + STA ESTKL,X + STY ESTKL+1,X ++ LDA ESTKL+1,X EOR #$FF STA TMPL - LDA ESTKH+1,X - EOR #$FF - STA TMPH LDA #$00 STA ESTKL+1,X ; PRODL -; STA ESTKH+1,X ; PRODH -_MULLP LSR TMPH ; MULTPLRH - ROR TMPL ; MULTPLRL +; STA TMPH ; PRODH + LDY #$08 +_MULLPL LSR TMPL ; ~MULTPLRL BCS + - STA ESTKH+1,X ; PRODH - LDA ESTKL,X ; MULTPLNDL - ADC ESTKL+1,X ; PRODL - STA ESTKL+1,X - LDA ESTKH,X ; MULTPLNDH - ADC ESTKH+1,X ; PRODH + STA TMPH ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + LDA TMPH ; PRODH + ADC ESTKH,X ; +MULTPLNDH + ASL ESTKL,X ; MULTPLNDL ROL ESTKH,X ; MULTPLNDH DEY - BNE _MULLP + BNE _MULLPL + BEQ + +_MULLPH CLC + TAY ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + TYA ; PRODH + ADC ESTKH,X ; +MULTPLNDH +- ASL ESTKL,X ; MULTPLNDL + ROL ESTKH,X ; MULTPLNDH ++ LSR ESTKH+1,X ; MULTPLRH + BCS _MULLPH + BNE - ; ONLY MULT AS MANY BITS AS WE NEED STA ESTKH+1,X ; PRODH LDY IPY JMP DROP diff --git a/src/vmsrc/apple/plvm02.sym b/src/vmsrc/apple/plvm02.sym new file mode 100644 index 0000000..2588554 --- /dev/null +++ b/src/vmsrc/apple/plvm02.sym @@ -0,0 +1,175 @@ + BRTRU = $d841 ; ? + _DIV = $d299 + ISGT = $d77d ; ? + INTERP = $3d0 + ISEQ = $d733 ; ? + GETPFXPARMS = $2082 ; ? + SRCL = $6 + DINTRP = $d0c2 + BRNCH = $d856 ; ? + ICAL = $d906 ; ? + SRCH = $7 + LCBNK1 = $8 ; unused + LCDEFCMD = $d1c1 ; ? + LCBNK2 = $0 + ISFLS = $d754 ; ? + ISGE = $d75d ; ? + ESTK = $c0 + IFP = $e0 + OPENVM = $103e ; ? + CLRKBD = $c010 ; unused + IPY = $e4 + SAW = $d6e1 ; ? + LCRWEN = $c083 + BROR = $d818 ; ? + DECR = $d33a ; ? + BRGT = $d874 ; ? + KEYBD = $c000 ; unused + BREQ = $d821 ; ? + IPH = $f3 + DECBRGE = $d894 ; ? + _DIV1 = $d2bf ; ? + IPL = $f2 + SAB = $d6ce ; ? + FIXNEXT = $d800 ; ? + ADD = $d200 ; ? + VM16 = $1057 ; ? + DSTL = $8 + SEL = $d79d ; ? + SUB = $d210 ; ? + FIXDROP = $d68c ; ? + DSTH = $9 + ENDBYE = $10c1 ; unused + DISABLE80 = $109a ; ? + IDXW = $d220 ; ? + CASELP = $d7c3 ; ? + LCWTEN = $c081 ; unused + INCR = $d32e ; ? + _BRLE = $d8b2 ; ? + COMP = $d34a ; ? + ADDI = $d3e2 ; ? + CALL = $d8e4 ; ? + LEAVE = $d94c ; ? + SUBI = $d3f1 ; ? + NOBRNCH = $d848 ; ? + CLOSEPARMS = $1098 ; ? + CSWL = $36 ; unused + BRAND = $d80f ; ? + CSWH = $37 ; unused + DLW = $d6ae ; ? + PROMPT = $33 ; unused + RET = $d959 ; ? + LLW = $d4ff ; ? + LB = $d4a0 ; ? + LA = $d46a ; ? + CMDENTRY = $100c ; ? + ESGUARD = $be ; unused + PAGE3 = $10b5 ; ? + IDXLB = $d543 ; ? + PAGE0 = $10ab ; ? + JMPTMP = $e6 + ADDAB = $d5b6 ; ? + PPL = $e2 ; unused + FAIL = $1074 ; ? + LW = $d4af ; ? + ROMEN = $c082 + PPH = $e3 ; unused + _DIVLP = $d2c6 + LLA = $d4d7 ; ? + DLB = $d69b ; ? + NEG = $d2e8 ; ? + LLB = $d4eb ; ? + PP = $e2 + ENTER = $d927 ; ? + BYE = $1000 ; unused + ADDAW = $d5ce ; ? + REFNUM = $108f ; ? + REFVM = $1043 ; ? + BAND = $d359 ; ? + IDXLW = $d560 ; ? + IINTRP = $d0d2 + ZERO = $d431 ; ? + NOVM = $103d ; ? + OPTBL = $d000 + SPKR = $c030 ; unused + BRFLS = $d84f ; ? + DEFCMD = $10c1 ; ? + ISLT = $d78f ; ? + DVSIGN = $ea + ISTRU = $d73f + CFFB = $d451 ; ? + READVM = $1044 ; ? + _NEG = $d28b + ISLE = $d76f ; ? + ISNE = $d748 ; ? + VM128 = $104e ; ? + SHR = $d3aa ; ? + SLW = $d676 ; ? + IOR = $d368 ; ? + ESP = $e5 + CASEEND = $d7e6 ; ? + PRODOS = $bf00 + BRLT = $d882 ; ? + SLB = $d665 ; ? + MOD = $d302 ; ? + VMCORE = $2085 ; ? + ORI = $d40e ; ? + READPARMS = $1090 ; ? + FAILMSG = $109f ; ? + ESTKSZ = $20 + MUL = $d233 ; ? + _MULLPH = $d26f + TMPH = $e8 + SHL = $d386 ; ? + _MULLPL = $d256 + TMPL = $e7 + SRC = $6 + BRNE = $d831 ; ? + ESTKL = $d0 + OPPAGE = $f8 ; unused + OPENPARMS = $108a ; ? + ESTKH = $c0 + CLOSEVM = $104c ; ? + DROP2 = $d661 ; ? + DIVMOD = $d314 ; ? + NEXTOP = $f0 + _BRGE = $d89e + ANDI = $d400 ; ? + OPIDX = $f7 + IFPH = $e1 + IFPL = $e0 + INCBRLE = $d8ac ; ? + ADDBRLE = $d8d4 ; ? + LCRDEN = $c080 + TMP = $e7 + XOR = $d377 ; ? + CB = $d444 ; ? + DIV = $d2f8 ; ? + MACHID = $bf98 + VMZP = $e0 + LAW = $d599 ; ? + NATV = $d95a ; ? + DAW = $d717 ; ? + IDXAB = $d5ef ; ? + STRBUF = $300 + LNOT = $d418 ; ? + ADDLB = $d514 ; ? + DROP = $ef + DUP = $d3d6 ; ? + SB = $d63d ; ? + DST = $8 + ALTVM = $29ef ; ? + CN = $d439 ; ? + LAB = $d583 ; ? + CS = $d488 ; ? + DAB = $d702 ; ? + IP = $f2 + CW = $d47a ; ? + _DIVEX = $d2e4 ; ? + SUBBRGE = $d8c4 ; ? + MINUS1 = $d427 ; ? + FETCHOP = $f1 + ADDLW = $d52a ; ? + IDXAW = $d612 ; ? + SW = $d649 ; ? + VMEND = $d96a ; unused diff --git a/src/vmsrc/apple/plvm03.sym b/src/vmsrc/apple/plvm03.sym new file mode 100644 index 0000000..bdff01f --- /dev/null +++ b/src/vmsrc/apple/plvm03.sym @@ -0,0 +1,668 @@ + CMDPARS = $a0f0 ; unused + _CNXTS1 = $a482 ; ? + SRCX = $1607 + BRTRU = $a84d ; ? + _DIV = $a1fe + _CMPPS = $a458 + ISGT = $a780 ; ? + _CPYS1 = $a4a3 + INTERP = $a1c2 ; ? + ISEQ = $a736 ; ? + _F009 = $aaa7 ; unused + _F028 = $aacd ; unused + _F219 = $b5c2 ; unused + _F238 = $b60e ; unused + _B019 = $b15e ; ? + _B038 = $b339 ; ? + _F008 = $aaa5 ; unused + _F029 = $aacf ; unused + _F218 = $b5be ; unused + _F239 = $b61e ; unused + _B018 = $b166 ; unused + _B039 = $b339 ; unused + _F049 = $aaf7 ; unused + _F068 = $aeff ; unused + _F259 = $b67a ; unused + _B059 = $b466 + _B078 = $b53e ; unused + SRCL = $6 + _F048 = $aaf5 ; unused + _F069 = $af02 ; unused + _F258 = $b676 ; unused + _B058 = $b45c ; ? + _B079 = $b53e ; ? + SEGEND = $36e7 ; ? + _F089 = $afe6 ; unused + BRNCH = $a862 ; ? + ICAL = $a8f1 ; ? + _F088 = $afdc ; unused + SRCH = $7 + _F001 = $a9a9 ; unused + _F020 = $aabd ; unused + _F043 = $aaeb ; unused + _F062 = $ae9d ; unused + _F085 = $afb6 ; unused + _F211 = $b597 ; unused + _F230 = $b5ef ; unused + _F253 = $b661 ; unused + _B011 = $b0ea ; ? + _B030 = $b2c3 ; ? + _B053 = $b445 ; unused + _B072 = $b4df ; unused + _B095 = $b681 ; unused + _F000 = $a9a7 ; unused + _F021 = $aabf ; unused + _F042 = $aae9 ; unused + _F063 = $aea0 ; unused + _F084 = $af9a ; unused + _F210 = $b591 ; unused + _F231 = $b5f4 ; unused + _F252 = $b65e ; unused + _B010 = $b07d ; unused + _B031 = $b2c3 ; unused + _B052 = $b445 ; ? + _B073 = $b506 ; ? + _B094 = $b66a + ISFLS = $a757 ; ? + _F003 = $a9ad ; unused + _F022 = $aac1 ; unused + _F041 = $aae7 ; unused + _F060 = $ab0d ; unused + _F087 = $afd5 ; unused + _F213 = $b59e ; unused + _F232 = $b5f7 ; unused + _F251 = $b659 ; unused + _B013 = $b0ff ; ? + _B032 = $b2f1 ; ? + _B051 = $b3e9 ; ? + _B070 = $b4e6 ; unused + SEGSTART = $2000 + _F002 = $a9ab ; unused + _F023 = $aac3 ; unused + _F040 = $aae5 ; unused + _F061 = $ab11 ; unused + _F086 = $afb9 ; unused + _F212 = $b59a ; unused + _F233 = $b5ff ; unused + _F250 = $b656 ; unused + _B012 = $b0ea ; unused + _B033 = $b36f ; ? + _B050 = $b3ef ; unused + _B071 = $b4df ; ? + ISGE = $a760 ; ? + _F005 = $aa9f ; unused + _F024 = $aac5 ; unused + _F047 = $aaf3 ; unused + _F066 = $aedc ; unused + _F081 = $af6b ; unused + _F215 = $b5aa ; unused + _F234 = $b602 ; unused + _F257 = $b673 ; unused + _B015 = $b11f ; ? + _B034 = $b36f ; unused + _B057 = $b463 ; unused + _B076 = $b517 ; unused + _B091 = $b66a ; ? + ESTK = $c0 + _F004 = $a9af ; unused + _F025 = $aac7 ; unused + _F046 = $aaf1 ; unused + _F067 = $aedf ; unused + _F080 = $af68 ; unused + _F214 = $b5a3 ; unused + _F235 = $b605 ; unused + _F256 = $b66f ; unused + REVCPYLP = $ac12 ; ? + _B014 = $b0ff ; unused + _B035 = $b310 + _B056 = $b448 + _B077 = $b53e ; ? + _B090 = $b5f6 ; ? + _F007 = $aaa3 ; unused + _F026 = $aac9 ; unused + _F045 = $aaef ; unused + _F064 = $aeb8 ; unused + _F083 = $af97 ; unused + _F217 = $b5ba ; unused + _F236 = $b608 ; unused + _F255 = $b667 ; unused + _B017 = $b146 + _B036 = $b34a ; unused + _B055 = $b421 ; unused + _B074 = $b506 ; unused + _B093 = $b684 ; unused + _F006 = $aaa1 ; unused + _F027 = $aacb ; unused + _F044 = $aaed ; unused + _F065 = $aebb ; unused + _F082 = $af6f ; unused + _F216 = $b5ad ; unused + _F237 = $b60b ; unused + _F254 = $b664 ; unused + _B016 = $b11f ; unused + _B037 = $b344 ; ? + _B054 = $b421 ; ? + _B075 = $b517 ; ? + _B092 = $b66a ; unused + IFP = $e0 + IPX = $16f3 + IPY = $e4 + SAW = $a6e7 ; ? + BROR = $a824 ; ? + DECR = $a2c6 ; ? + BRGT = $a889 ; ? + DSTX = $1609 + BREQ = $a82d ; ? + _C019 = $b0ee ; unused + _C018 = $b0c7 + IPH = $f3 + CMD = $ab3c ; ? + DECBRGE = $a8a5 ; ? + _DIV1 = $a224 ; ? + IPL = $f2 + SOSCMD = $a99e ; ? + SAB = $a6d4 ; ? + FIXNEXT = $a80c ; ? + ADD = $a2d1 ; ? + _C011 = $afe9 ; unused + XPAGE = $1600 + _C010 = $afe1 + DSTL = $8 + XENTRY = $a0f8 ; unused + _C013 = $b022 + SEL = $a7a0 ; ? + _C012 = $afff + SUB = $a2e1 ; ? + _C015 = $b085 + FIXDROP = $a692 ; ? + _C014 = $b052 ; unused + FORCPYLP = $abd9 ; ? + DSTH = $9 + _C017 = $b0b9 + _C016 = $b0a7 + IDXW = $a2f1 ; ? + CASELP = $a7cf ; ? + RLDEX = $ae68 ; ? + INCR = $a2bd ; ? + _BRLE = $a8c3 ; ? + _SYSFLAGS = $0 ; unused + COMP = $a304 ; ? + _F109 = $b0ce ; unused + _F128 = $b170 ; unused + _F108 = $b0c2 ; unused + _F129 = $b173 ; unused + ADDI = $a39c ; ? + CALL = $a91c ; ? + LEAVE = $a979 ; ? + _D049 = $a9f6 + _D068 = $aa81 + _P019 = $abae ; ? + _F149 = $b217 ; unused + _F168 = $b33f ; unused + _D048 = $a9f1 + _D069 = $aa87 + _P018 = $ab7b ; ? + _F148 = $b214 ; unused + _F169 = $b350 ; unused + CPYXLP = $ac4b + _F189 = $b4b9 ; unused + _F188 = $b49b ; unused + SUBI = $a3ab ; ? + NOBRNCH = $a854 ; ? + _D043 = $a9d3 + _D062 = $aa4d + _P013 = $b123 ; ? + _F101 = $b07e ; unused + _F120 = $b138 ; unused + _F143 = $b1f5 ; unused + _F162 = $b2fb ; unused + _F185 = $b453 ; unused + _D042 = $a9d0 + _D063 = $aa57 + _P012 = $b1bd ; ? + _F100 = $b066 ; unused + _F121 = $b147 ; unused + _F142 = $b1eb ; unused + _F163 = $b313 ; unused + _F184 = $b426 ; unused + _P030 = $aee5 ; ? + _D041 = $a9c7 + _D060 = $aa35 + _P011 = $b1a1 ; ? + _F103 = $b097 ; unused + _F122 = $b14a ; unused + _F141 = $b1d0 ; unused + _F160 = $b2ca ; unused + _F187 = $b48e ; unused + _D040 = $a9c6 + _D061 = $aa3e + _P010 = $ad3c ; ? + _F102 = $b08c ; unused + _F123 = $b150 ; unused + _F140 = $b1b1 ; unused + _F161 = $b2f7 ; unused + _F186 = $b46f ; unused + _D047 = $a9e9 + _D066 = $aa74 + _P017 = $b0b9 ; ? + _D081 = $ab27 + _F105 = $b0a3 ; unused + _F124 = $b153 ; unused + _F147 = $b20f ; unused + _F166 = $b32c ; unused + _F181 = $b416 ; unused + BRAND = $a81b ; ? + _D046 = $a9e2 + _D067 = $aa7b + _P016 = $b12a ; ? + _D080 = $ab26 + _F104 = $b09a ; unused + _F125 = $b157 ; unused + _F146 = $b209 ; unused + _F167 = $b334 ; unused + _F180 = $b412 ; unused + _D045 = $a9db + _D064 = $aa63 + _P015 = $b0ee ; ? + _F107 = $b0b5 ; unused + _F126 = $b167 ; unused + _F145 = $b202 ; unused + _F164 = $b316 ; unused + _F183 = $b422 ; unused + _D044 = $a9d4 + _D065 = $aa6d + _P014 = $b0c7 ; ? + _D082 = $ab29 + _F106 = $b0b0 ; unused + _F127 = $b16a ; unused + _F144 = $b1f8 ; unused + _F165 = $b323 ; unused + _F182 = $b41c ; unused + DLW = $a6b4 ; ? + SENTRY = $a0f6 ; unused + RET = $a98d ; ? + LLW = $a50b ; ? + PPX = $16e3 + LB = $a4b3 ; ? + LA = $a424 ; ? + _CNXTS = $a47e ; ? + CALLADR = $a936 ; ? + JITCOMP = $a0f2 ; unused + ESGUARD = $be ; unused + XINTERP = $a1d5 ; ? + PAGE0 = $2057 ; ? + IDXLB = $a54f ; ? + JMPTMP = $e6 + ADDAB = $a5c2 ; ? + PPL = $e2 + LW = $a4c2 ; ? + _A018 = $ae15 + PPH = $e3 + _DIVLP = $a22b + LLA = $a4e3 ; ? + DLB = $a6a1 ; ? + NEG = $a281 ; ? + _CPYS = $a48f ; ? + LLB = $a4f7 ; ? + PP = $e2 + ENTER = $a948 ; ? + _A011 = $acd8 ; unused + PARAMS = $ab3d ; ? + _A010 = $acd3 ; unused + ADDAW = $a5da ; ? + _A013 = $ad0a + BAND = $a313 ; ? + IDXLW = $a56c ; ? + _A012 = $ace2 + ZERO = $a3eb ; ? + _A015 = $ad4d + _A014 = $ad3c ; unused + _A017 = $adda + _A016 = $ada2 + _CMPCS = $a46b + ICALADR = $a90a ; ? + TOUPR = $ad3e ; ? + OPTBL = $a100 ; ? + BRFLS = $a85b ; ? + ISLT = $a792 ; ? + _F019 = $aabb ; unused + _F038 = $aae1 ; unused + _F209 = $b58d ; unused + _F228 = $b5e6 ; unused + _B009 = $b07d ; ? + _B028 = $b50d ; ? + _F018 = $aab9 ; unused + _F039 = $aae3 ; unused + _F208 = $b589 ; unused + _F229 = $b5ec ; unused + _B008 = $b047 ; unused + _B029 = $b2b2 ; ? + DVSIGN = $e9 + _F059 = $ab0b ; unused + _F078 = $af5e ; unused + _F249 = $b64e ; unused + _B049 = $b3e3 + _B068 = $b4ec ; ? + _F058 = $ab09 ; unused + _F079 = $af64 ; unused + _F248 = $b64b ; unused + _B048 = $b3ad ; unused + _B069 = $b4e6 ; ? + _F099 = $b05e ; unused + _B089 = $b5fd ; unused + _F098 = $b05b ; unused + _B088 = $b5d7 + ISTRU = $a742 + CFFB = $a3fe ; ? + _F011 = $aaab ; unused + _F030 = $aad1 ; unused + _F053 = $aaff ; unused + _F072 = $af47 ; unused + _F095 = $b032 ; unused + _F201 = $b561 ; unused + _F220 = $b5c8 ; unused + _F243 = $b631 ; unused + _B001 = $afd4 ; ? + _B020 = $b21d ; ? + _B043 = $b339 ; unused + _B062 = $b4a6 ; ? + _B085 = $b57e + _F010 = $aaa9 ; unused + _F031 = $aad3 ; unused + _F052 = $aafd ; unused + _F073 = $af4a ; unused + _F094 = $b01e ; unused + _F200 = $b55c ; unused + _F221 = $b5cb ; unused + _F242 = $b62e ; unused + _B021 = $b21d ; unused + _B042 = $b339 ; ? + _B063 = $b4a6 ; unused + _B084 = $b5ac ; ? + _F013 = $aaaf ; unused + _F032 = $aad5 ; unused + _F051 = $aafb ; unused + _F070 = $af20 ; unused + _F097 = $b04e ; unused + _F203 = $b574 ; unused + _F222 = $b5ce ; unused + _F241 = $b62b ; unused + _F260 = $b67f ; unused + _B003 = $b020 ; ? + _B022 = $b219 ; ? + _B041 = $b329 ; unused + _B060 = $b4ac ; unused + _B087 = $b590 ; ? + _F012 = $aaad ; unused + _F033 = $aad7 ; unused + _F050 = $aaf9 ; unused + _F071 = $af39 ; unused + _F096 = $b045 ; unused + _F202 = $b568 ; unused + _F223 = $b5d2 ; unused + _F240 = $b628 ; unused + _B002 = $afd4 ; unused + _B023 = $b219 ; unused + _B040 = $b329 ; ? + _B061 = $b4a6 ; ? + _B086 = $b596 ; unused + _F015 = $aab3 ; unused + _F034 = $aad9 ; unused + _F057 = $ab07 ; unused + _F076 = $af53 ; unused + _F091 = $aff6 ; unused + _F205 = $b57f ; unused + _F224 = $b5d8 ; unused + _F247 = $b648 ; unused + _B005 = $b039 ; ? + _B024 = $b275 ; ? + _B047 = $b39b + _B066 = $b4af + _B081 = $b5ac ; ? + _NEG = $a1f0 + _F014 = $aab1 ; unused + _F035 = $aadb ; unused + _F056 = $ab05 ; unused + _F077 = $af56 ; unused + _F090 = $aff0 ; unused + _F204 = $b579 ; unused + _F225 = $b5dc ; unused + _F246 = $b63c ; unused + _B004 = $b020 ; unused + _B025 = $b28f ; ? + _B046 = $b3b4 ; unused + _B067 = $b4f2 ; unused + _B080 = $b53e ; unused + CPYMEX = $ac27 ; ? + ISLE = $a772 ; ? + _F017 = $aab7 ; unused + _F036 = $aadd ; unused + _F055 = $ab03 ; unused + _F074 = $af4d ; unused + _F093 = $b00f ; unused + _F207 = $b586 ; unused + _F226 = $b5df ; unused + _F245 = $b637 ; unused + _B007 = $b047 ; ? + _B026 = $b28f ; unused + _B045 = $b36f ; unused + _B064 = $b494 ; ? + _B083 = $b5a8 ; ? + ISNE = $a74b ; ? + _F016 = $aab5 ; unused + _F037 = $aadf ; unused + _F054 = $ab01 ; unused + _F075 = $af50 ; unused + _F092 = $b006 ; unused + _F206 = $b583 ; unused + _F227 = $b5e3 ; unused + _F244 = $b634 ; unused + _B006 = $b039 ; unused + _B027 = $b509 ; ? + _B044 = $b36f ; ? + _B065 = $b49d ; ? + _B082 = $b5ac ; unused + SHR = $a364 ; ? + SLW = $a67c ; ? + IOR = $a322 ; ? + _CALL = $a928 ; unused + ESP = $e5 + CASEEND = $a7f2 ; ? + TMPX = $16e8 + DROPX = $16ef + REVCPY = $abed ; ? + BRLT = $a897 ; ? + SLB = $a66b ; ? + _C009 = $afbd + _C028 = $b542 + MOD = $a291 ; ? + VMCORE = $2061 ; ? + _C008 = $afa4 + ORI = $a3c8 ; ? + _CEXS = $a4ad ; ? + ESTKSZ = $20 + MUL = $a24d ; ? + _CMPS = $a464 ; ? + CPYXMEX = $ac63 ; ? + _C001 = $aea6 + _C020 = $b123 ; unused + TMPH = $e8 + _C000 = $ae82 + _C021 = $b12a + _C003 = $aee5 + _C022 = $b13d + _C002 = $aebf + _C023 = $b1a1 + SHL = $a340 ; ? + _C005 = $af24 + _C024 = $b1bd + TMPL = $e7 + _C004 = $af06 + _C025 = $b1e0 + SRC = $6 + BRNE = $a83d ; ? + _C007 = $af74 + _C026 = $b220 + MEMBANK = $ffef ; unused + _INIT = $b5b2 ; ? + _C006 = $af40 + _C027 = $b254 + ESTKL = $d0 + OPPAGE = $f8 ; unused + ESTKH = $c0 + DROP2 = $a667 ; ? + IFPX = $16e1 + DIVMOD = $a2a3 ; ? + NEXTOP = $f0 + _BRGE = $a8af + ANDI = $a3ba ; ? + _D038 = $a9b5 + _F119 = $b133 ; unused + _F138 = $b198 ; unused + _D039 = $a9b6 + _F118 = $b127 ; unused + _F139 = $b19d ; unused + _P028 = $aea6 ; ? + _D059 = $aa2e + _P009 = $b052 ; ? + _D078 = $ab17 + _F159 = $b2be ; unused + _F178 = $b409 ; unused + _P029 = $aebf ; ? + _D058 = $aa27 + _P008 = $afe9 ; ? + _D079 = $ab17 + _F158 = $b2b8 ; unused + _F179 = $b40f ; unused + _F199 = $b557 ; unused + _F198 = $b551 ; unused + OPIDX = $f7 + IFPH = $e1 + _D053 = $aa0b + _D072 = $aa98 + _P003 = $afbd ; ? + _P022 = $acc1 ; ? + _F111 = $b0d8 ; unused + _F130 = $b176 ; unused + _F153 = $b280 ; unused + _F172 = $b38c ; unused + _F195 = $b52e ; unused + TEMPBUF = $a000 ; unused + _D031 = $a9a1 + _D052 = $aa06 + _D073 = $aa9f + _P002 = $afe1 ; ? + _P023 = $ac9b ; ? + _F110 = $b0d3 ; unused + _F131 = $b17c ; unused + _F152 = $b27d ; unused + _F173 = $b395 ; unused + _F194 = $b51a ; unused + _D032 = $a9a3 + _D051 = $aa01 + _D070 = $aa8d + _P001 = $ab46 ; ? + _P020 = $acaf ; ? + _F113 = $b0e5 ; unused + _F132 = $b17f ; unused + _F151 = $b268 ; unused + _F170 = $b362 ; unused + _F197 = $b54a ; unused + _D033 = $a9a5 + _D050 = $a9fb + _D071 = $aa93 + _P000 = $ab2b ; ? + _P021 = $ac87 ; ? + _F112 = $b0dd ; unused + _F133 = $b182 ; unused + _F150 = $b262 ; unused + _F171 = $b36b ; unused + _F196 = $b53c ; unused + IFPL = $e0 + INCBRLE = $a8bd ; ? + ADDBRLE = $a8e1 ; ? + _P026 = $b542 ; ? + _D034 = $a9b1 + _D057 = $aa1f + _P007 = $b0a7 ; ? + _D076 = $ab13 + _F115 = $b107 ; unused + _F134 = $b189 ; unused + _F157 = $b2a7 ; unused + _F176 = $b3bf ; unused + _F191 = $b4db ; unused + _P027 = $ae82 ; ? + _D035 = $a9b2 ; unused + _D056 = $aa1a + _P006 = $b085 ; ? + _D077 = $ab15 + _F114 = $b0fa ; unused + _F135 = $b18c ; unused + _F156 = $b28b ; unused + _F177 = $b404 ; unused + _F190 = $b4cf ; unused + _D036 = $a9b3 ; unused + _D055 = $aa15 + _P005 = $b022 ; ? + _P024 = $acd8 ; ? + _D074 = $aacf + _F117 = $b117 ; unused + _F136 = $b18f ; unused + _F155 = $b288 ; unused + _F174 = $b3a9 ; unused + _F193 = $b504 ; unused + _D037 = $a9b4 + _D054 = $aa10 + _P004 = $afff ; ? + _P025 = $acd3 ; ? + _D075 = $ab11 + _F116 = $b112 ; unused + _F137 = $b195 ; unused + _F154 = $b285 ; unused + _F175 = $b3b7 ; unused + _F192 = $b4e4 ; unused + _MULLP = $a261 + TMP = $e7 + XOR = $a331 ; ? + CB = $a40b ; ? + DIV = $a287 ; ? + VMZP = $e0 + LAW = $a5a5 ; ? + NATV = $a98e ; ? + DAW = $a71a ; ? + IDXAB = $a5fb ; ? + LNOT = $a3d2 ; ? + ADDLB = $a520 ; ? + DROP = $ef + DUP = $a390 ; ? + SB = $a649 ; ? + DST = $8 + SETMEX = $abaa ; ? + JMPTMPX = $16e6 ; unused + CN = $a3f3 ; ? + _A009 = $acc1 ; unused + LAB = $a58f ; ? + _A008 = $acaf ; unused + CS = $a442 ; ? + DAB = $a705 ; ? + IP = $f2 + CW = $a434 ; ? + _DIVEX = $a249 ; ? + _A001 = $ab46 ; unused + REGVALS = $6 + SETMLPH = $ab92 + SUBBRGE = $a8d1 ; ? + _A000 = $ab2b + JITCODE = $a0f4 ; unused + MINUS1 = $a3e1 ; ? + _A003 = $abae + FETCHOP = $f1 + _A002 = $ab7b ; unused + ADDLW = $a536 ; ? + SETMLPL = $ab8f + _A005 = $ac67 + IDXAW = $a61e ; ? + _A004 = $ac28 + SW = $a655 ; ? + _A007 = $ac9b ; unused + _A006 = $ac87 diff --git a/src/vmsrc/apple/plvm802.sym b/src/vmsrc/apple/plvm802.sym new file mode 100644 index 0000000..75296af --- /dev/null +++ b/src/vmsrc/apple/plvm802.sym @@ -0,0 +1,220 @@ + BRTRU = $d8ce ; ? + _CNXTSX1 = $d508 ; ? + ALTZPOFF = $c008 ; unused + _DIV = $d35a + ALTRDOFF = $c002 + ISGT = $d841 ; ? + INTERP = $3d0 + OPXTBL = $d200 ; ? + ISEQ = $d815 ; ? + GETPFXPARMS = $214a ; ? + SRCL = $6 + DINTRP = $d0c2 + BRNCH = $d8db ; ? + ICAL = $d935 ; ? + SRCH = $7 + LCBNK1 = $8 ; unused + LCDEFCMD = $d1e2 ; ? + LCBNK2 = $0 + ISFLS = $d827 ; ? + ISGE = $d82f ; ? + RAMSLOT = $bf26 + ESTK = $c0 + DEVCNT = $bf31 + IFP = $e0 + CSX = $d4cc ; ? + CLRKBD = $c010 ; unused + IPY = $e4 + BADCPU = $205b ; ? + SAW = $d7e1 ; ? + LCRWEN = $c083 + HWSP = $ea + ADDLWX = $d60b ; ? + BROR = $d8b4 ; ? + DECR = $d3ff ; ? + LAWX = $d6ab ; ? + BRGT = $d8e9 ; ? + IDXABX = $d729 ; ? + KEYBD = $c000 ; unused + BREQ = $d8bb ; ? + IPH = $f3 + DECBRGE = $d903 ; ? + _DIV1 = $d37b + IPL = $f2 + SAB = $d7cf ; ? + FIXNEXT = $d8a2 ; ? + ADD = $d322 ; ? + DSTL = $8 + RAMLOOP = $20a5 + SEL = $d86f ; ? + SUB = $d32b ; ? + DSTH = $9 + ENDBYE = $10fe ; unused + DISABLE80 = $10b2 ; ? + IDXW = $d335 ; ? + CASELP = $d880 + LCWTEN = $c081 ; unused + INCR = $d3f9 ; ? + JITINTRPX = $d2c2 ; ? + _BRLE = $d914 + COMP = $d405 ; ? + DEVLST = $bf32 + LEAVE = $da37 ; ? + ADDI = $d448 ; ? + CALL = $d938 ; ? + SUBI = $d456 ; ? + NOBRNCH = $d8d1 ; ? + CLOSEPARMS = $10b0 ; ? + CSWL = $36 ; unused + _CMPPSX = $d4d4 + BRAND = $d8ad ; ? + CSWH = $37 ; unused + RAMCONT = $20a2 ; ? + DLW = $d7c2 ; ? + PROMPT = $33 ; unused + RET = $da7b ; ? + LLW = $d59c ; ? + _CPYSX = $d512 ; ? + LB = $d534 ; ? + ADDAWX = $d6fd ; ? + NOS = $3 + LA = $d4aa ; ? + CMDENTRY = $100c ; ? + RETX = $da78 ; ? + LLWX = $d5bd ; ? + LBX = $d54f ; ? + JITCOMP = $3e2 + ESGUARD = $be ; unused + _CNXTSX = $d500 ; ? + RUNJIT = $d2eb ; ? + NEEDAUX = $201c ; ? + PAGE3 = $10d0 ; ? + IDXLB = $d621 ; ? + PAGE0 = $10c8 ; ? + JMPTMP = $e6 + ADDAB = $d6bd ; ? + IDXLBX = $d635 ; ? + PPL = $e2 + FAIL = $108c ; ? + LW = $d544 ; ? + CALLX = $d99b ; ? + LEAVEX = $da3e ; ? + ROMEN = $c082 + PPH = $e3 + _DIVLP = $d384 + LLA = $d57e ; ? + DLB = $d7ac ; ? + NEG = $d3f0 ; ? + LLB = $d58d ; ? + PP = $e2 + ENTER = $da01 ; ? + BYE = $1000 ; unused + ADDAW = $d6ed ; ? + REFNUM = $10a7 ; ? + BAND = $d40d ; ? + IDXLW = $d64f ; ? + ZERO = $d48a ; ? + _CEXSX = $d52c ; ? + _CMPSX = $d4da ; unused + OPTBL = $d000 + BYEPARMS = $2054 ; ? + SPKR = $c030 ; unused + BRFLS = $d8d8 ; ? + DEFCMD = $10e2 ; ? + ISLT = $d85d ; ? + ALTRDON = $c003 + ALTZPON = $c009 ; unused + ISTRU = $d81a + ALTWROFF = $c004 ; unused + CFFB = $d4a0 ; ? + ISLE = $d84f ; ? + ISNE = $d822 ; ? + LABX = $d694 ; ? + SHR = $d432 ; ? + SLW = $d79b ; ? + IDXAWX = $d756 ; ? + IOR = $d415 ; ? + ESP = $e5 + CASEEND = $d89a ; ? + EMUSTKX = $d99f ; ? + PRODOS = $bf00 + ADDLBX = $d5e2 ; ? + RAMDONE = $20cd ; ? + BRLT = $d8f4 ; ? + SLB = $d789 ; ? + MOD = $d3a3 ; ? + VMCORE = $214d ; ? + ORI = $d474 ; ? + READPARMS = $10a8 ; ? + FAILMSG = $10bc ; ? + ESTKSZ = $20 + ALTWRON = $c005 ; unused + JITDCI = $10b7 ; ? + MUL = $d33f ; ? + TMPH = $e8 + SHL = $d425 ; ? + TMPL = $e7 + SRC = $6 + BRNE = $d8c3 ; ? + ESTKL = $d0 + OPPAGE = $f6 + OPENPARMS = $10a2 ; ? + ESTKH = $c0 + DROP2 = $d785 ; ? + DIVMOD = $d3b0 ; ? + NEXTOP = $f0 + _BRGE = $d906 + ANDI = $d467 ; ? + ICALX = $d998 ; ? + OPIDX = $f5 + IFPH = $e1 + RAMEXIT = $20be ; ? + IFPL = $e0 + INCBRLE = $d911 ; ? + ADDBRLE = $d92d ; ? + GETLOOP = $20b3 ; ? + LWX = $d565 ; ? + LCRDEN = $c080 + _MULLP = $d34b + EMUSTK = $d93c ; ? + TOS = $1 + TMP = $e7 + XOR = $d41d ; ? + LLBX = $d5a8 ; ? + CB = $d496 ; ? + DIV = $d394 ; ? + MACHID = $bf98 + VMZP = $e0 + LAW = $d688 ; ? + NATV = $da9e ; ? + IINTRPX = $d0dd + IDXLWX = $d660 ; ? + DAW = $d808 ; ? + NODEV = $bf10 + IDXAB = $d713 ; ? + STRBUF = $300 + LNOT = $d481 ; ? + ADDLB = $d5cf ; ? + DROP = $ef + DUP = $d442 ; ? + SB = $d76d ; ? + DST = $8 + ANYKEY = $2077 ; ? + PSR = $e9 + ADDABX = $d6d2 ; ? + CN = $d490 ; ? + LAB = $d677 ; ? + CS = $d4bf ; ? + DAB = $d7f2 ; ? + IP = $f2 + CW = $d4b7 ; ? + _DIVEX = $d391 ; ? + SUBBRGE = $d923 ; ? + JITCODE = $3e4 ; unused + MINUS1 = $d484 ; ? + FETCHOP = $f1 + JITMOD = $2f0 + ADDLW = $d5fb ; ? + IDXAW = $d745 ; ? + SW = $d77d ; ? + VMEND = $daa9 ; unused diff --git a/src/vmsrc/apple/plvmjit02.s b/src/vmsrc/apple/plvmjit02.s index 548b4f8..40680fd 100755 --- a/src/vmsrc/apple/plvmjit02.s +++ b/src/vmsrc/apple/plvmjit02.s @@ -508,29 +508,49 @@ IDXW LDA ESTKL,X ;* MUL TOS-1 BY TOS ;* MUL STY IPY - LDY #$10 + LDA ESTKH,X + CMP ESTKH+1,X + BCS + + TAY ; SWAP MULTIPLIER AND MULTIPLICAND + LDA ESTKH+1,X ; SO THAT MULTIPLIER IS SMALLER + STA ESTKH,X + STY ESTKH+1,X + LDY ESTKL,X LDA ESTKL+1,X + STA ESTKL,X + STY ESTKL+1,X ++ LDA ESTKL+1,X EOR #$FF STA TMPL - LDA ESTKH+1,X - EOR #$FF - STA TMPH LDA #$00 STA ESTKL+1,X ; PRODL -; STA ESTKH+1,X ; PRODH -_MULLP LSR TMPH ; MULTPLRH - ROR TMPL ; MULTPLRL +; STA TMPH ; PRODH + LDY #$08 +_MULLPL LSR TMPL ; ~MULTPLRL BCS + - STA ESTKH+1,X ; PRODH - LDA ESTKL,X ; MULTPLNDL - ADC ESTKL+1,X ; PRODL - STA ESTKL+1,X - LDA ESTKH,X ; MULTPLNDH - ADC ESTKH+1,X ; PRODH + STA TMPH ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + LDA TMPH ; PRODH + ADC ESTKH,X ; +MULTPLNDH + ASL ESTKL,X ; MULTPLNDL ROL ESTKH,X ; MULTPLNDH DEY - BNE _MULLP + BNE _MULLPL + BEQ + +_MULLPH CLC + TAY ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + TYA ; PRODH + ADC ESTKH,X ; +MULTPLNDH +- ASL ESTKL,X ; MULTPLNDL + ROL ESTKH,X ; MULTPLNDH ++ LSR ESTKH+1,X ; MULTPLRH + BCS _MULLPH + BNE - ; ONLY MULT AS MANY BITS AS WE NEED STA ESTKH+1,X ; PRODH LDY IPY JMP DROP diff --git a/src/vmsrc/apple/plvmjit02.sym b/src/vmsrc/apple/plvmjit02.sym new file mode 100644 index 0000000..7083ff2 --- /dev/null +++ b/src/vmsrc/apple/plvmjit02.sym @@ -0,0 +1,262 @@ + CISFLS = $30e7 ; ? + CLABEND = $2fe8 ; ? + CLBX = $2f7c ; ? + BRTRU = $dbc4 ; ? + _CNXTSX1 = $d61e ; ? + ALTZPOFF = $c008 ; unused + _DIV = $d3c5 + ALTRDOFF = $c002 + ISGT = $db00 ; ? + INTERP = $3d0 + OPXTBL = $d200 ; ? + ISEQ = $dab6 ; ? + CBRNCH = $30f7 ; ? + GETPFXPARMS = $2114 ; ? + SRCL = $6 + DINTRP = $d0c2 + BRNCH = $dbd9 ; ? + ICAL = $dcbc ; ? + SRCH = $7 + LCBNK1 = $8 ; unused + LCDEFCMD = $d1d0 ; ? + LCBNK2 = $0 + ISFLS = $dad7 ; ? + ISGE = $dae0 ; ? + RAMSLOT = $bf26 + ESTK = $c0 + CDLB = $30cd ; ? + CDINTRP = $2ed9 ; ? + CLAWX = $3039 ; ? + DEVCNT = $bf31 + CENTERXEND = $3152 ; ? + CLLB = $2f98 ; ? + IFP = $e0 + CSX = $d5cc ; ? + CCS = $2f1b ; ? + CLRKBD = $c010 ; unused + IPY = $e4 + SAW = $da64 ; ? + LCRWEN = $c083 + ADDLWX = $d77d ; ? + BROR = $db9b ; ? + DECR = $d466 ; ? + LAWX = $d877 ; ? + BRGT = $dbf7 ; ? + IDXABX = $d93b ; ? + RETJIT = $d323 ; ? + KEYBD = $c000 ; unused + BREQ = $dba4 ; ? + IPH = $f3 + CISFLSEND = $30ee ; ? + CCB = $2f07 ; ? + DECBRGE = $dc17 ; ? + _DIV1 = $d3eb ; ? + IPL = $f2 + SAB = $da51 ; ? + FIXNEXT = $db83 ; ? + ADD = $d32c ; ? + DSTL = $8 + RAMLOOP = $2067 + SEL = $db20 ; ? + SUB = $d33c ; ? + FIXDROP = $da0f ; ? + DSTH = $9 + ENDBYE = $10d0 ; unused + CCN = $2ef5 ; ? + DISABLE80 = $10a0 ; ? + CDABEND = $30c4 ; ? + IDXW = $d34c ; ? + CASELP = $db46 ; ? + LCWTEN = $c081 ; unused + INCR = $d45a ; ? + JITINTRPX = $d2c2 ; ? + _BRLE = $dc35 ; ? + CSAW = $3064 ; ? + COMP = $d476 ; ? + DEVLST = $bf32 + LEAVE = $dd94 ; ? + ADDI = $d50e ; ? + CALL = $dc67 ; ? + CCBEND = $2f12 ; ? + SUBI = $d51d ; ? + NOBRNCH = $dbcb ; ? + CLOSEPARMS = $109e ; ? + CSWL = $36 ; unused + CSAWEND = $3084 ; ? + _CMPPSX = $d5e2 + BRAND = $db92 ; ? + CSWH = $37 ; unused + RAMCONT = $2064 ; ? + OPCPY = $3153 ; ? + DLW = $da31 ; ? + PROMPT = $33 ; unused + RET = $dda8 ; ? + LLW = $d6e8 ; ? + _CPYSX = $d62b ; ? + LB = $d64f ; ? + ENTERX = $dd0f ; ? + ADDAWX = $d8f1 ; ? + LA = $d596 ; ? + CMDENTRY = $100c ; ? + CENTERX = $311e ; ? + RETX = $dd8f ; ? + LLWX = $d717 ; ? + LBX = $d67a ; ? + JITCOMP = $3e2 + ESGUARD = $be ; unused + _CNXTSX = $d614 ; ? + RUNJIT = $d2f0 ; ? + NEEDAUX = $202d ; ? + PAGE3 = $10be ; ? + IDXLB = $d79c ; ? + PAGE0 = $10b4 ; ? + JMPTMP = $e6 + ADDAB = $d89a ; ? + IDXLBX = $d7b9 ; ? + PPL = $e2 + FAIL = $107a ; ? + LW = $d65e ; ? + CALLX = $dc8d ; ? + LEAVEX = $dd76 ; ? + CLBXEND = $2f8f ; ? + ROMEN = $c082 + PPH = $e3 + _DIVLP = $d3f2 + LLA = $d6c0 ; ? + DLB = $da1e ; ? + NEG = $d414 ; ? + CCSEND = $2f32 ; ? + LLB = $d6d4 ; ? + PP = $e2 + ENTER = $dd45 ; ? + BYE = $1000 ; unused + ADDAW = $d8d0 ; ? + REFNUM = $1095 ; ? + BAND = $d485 ; ? + IDXLW = $d7dc ; ? + ZERO = $d55d ; ? + _CPYSX1 = $d63f + _CEXSX = $d649 ; ? + _CMPSX = $d5ee ; ? + OPTBL = $d000 + BYEPARMS = $2026 ; ? + SPKR = $c030 ; unused + BRFLS = $dbd2 ; ? + DEFCMD = $10d0 ; ? + CLAW = $2ff1 ; ? + CDAW = $308d ; ? + ISLT = $db12 ; ? + ALTRDON = $c003 + CDLBEND = $30de ; ? + DVSIGN = $e9 + ALTZPON = $c009 ; unused + CLABX = $3016 ; ? + ISTRU = $dac2 + ALTWROFF = $c004 ; unused + _CMPCSX = $d5fb + CFFB = $d57d ; ? + CLAB = $2fd4 ; ? + CDAB = $30b1 ; ? + _NEG = $d3b7 + ISLE = $daf2 ; ? + ISNE = $dacb ; ? + LABX = $d85b ; ? + CLABXEND = $3030 ; ? + SHR = $d4d6 ; ? + CLAWEND = $300d ; ? + CLBEND = $2f73 ; ? + SLW = $d9f9 ; ? + IDXAWX = $d98f ; ? + IOR = $d494 ; ? + ESP = $e5 + CASEEND = $db69 ; ? + CSHLEND = $2f5d ; ? + PRODOS = $bf00 + ADDLBX = $d748 ; ? + RAMDONE = $208f ; ? + BRLT = $dc05 ; ? + SLB = $d9e8 ; ? + MOD = $d42e ; ? + VMCORE = $2117 ; ? + ORI = $d53a ; ? + READPARMS = $1096 ; ? + FAILMSG = $10a8 ; ? + ESTKSZ = $20 + CLB = $2f66 ; ? + ALTWRON = $c005 ; unused + JITDCI = $10a5 ; ? + MUL = $d35f ; ? + _MULLPH = $d39b + TMPH = $e8 + SHL = $d4b2 ; ? + _MULLPL = $d382 + TMPL = $e7 + SRC = $6 + BRNE = $dbb4 ; ? + ESTKL = $d0 + OPPAGE = $f8 + OPENPARMS = $1090 ; ? + ESTKH = $c0 + DROP2 = $d9e4 ; ? + CLLBXEND = $2fcb ; ? + DIVMOD = $d440 ; ? + NEXTOP = $f0 + _BRGE = $dc21 + ANDI = $d52c ; ? + CLLBEND = $2faa ; ? + ICALX = $dce1 ; ? + CSHL = $2f3b ; ? + CCNEND = $2efe ; ? + OPIDX = $f7 + CLLBX = $2fb3 ; ? + IFPH = $e1 + RAMEXIT = $2080 ; ? + IFPL = $e0 + INCBRLE = $dc2f ; ? + ADDBRLE = $dc57 ; ? + GETLOOP = $2075 ; ? + LWX = $d68f ; ? + LCRDEN = $c080 + TMP = $e7 + XOR = $d4a3 ; ? + LLBX = $d6fd ; ? + CDAWEND = $30a8 ; ? + CB = $d570 ; ? + DIV = $d424 ; ? + MACHID = $bf98 + VMZP = $e0 + LAW = $d83e ; ? + NATV = $dda9 ; ? + IINTRPX = $d0d6 + IDXLWX = $d7ff ; ? + DAW = $da9a ; ? + NODEV = $bf10 + IDXAB = $d918 ; ? + STRBUF = $300 + LNOT = $d544 ; ? + ADDLB = $d732 ; ? + DROP = $ef + DUP = $d502 ; ? + SB = $d9c0 ; ? + DST = $8 + CN = $d565 ; ? + ADDABX = $d8b2 ; ? + LAB = $d828 ; ? + CDINTRPEND = $2eec ; ? + CLAWXEND = $305b ; ? + CS = $d5b4 ; ? + DAB = $da85 ; ? + CBRNCHEND = $3115 ; ? + IP = $f2 + CW = $d5a6 ; ? + C02OPS = $2ed0 ; ? + _DIVEX = $d410 ; ? + SUBBRGE = $dc47 ; ? + JITCODE = $3e4 ; unused + MINUS1 = $d553 ; ? + FETCHOP = $f1 + JITMOD = $2f0 + ADDLW = $d764 ; ? + IDXAW = $d964 ; ? + SW = $d9cc ; ? + VMEND = $ddb9 ; unused diff --git a/src/vmsrc/apple/plvmjit03.s b/src/vmsrc/apple/plvmjit03.s index 7b00e70..7374672 100755 --- a/src/vmsrc/apple/plvmjit03.s +++ b/src/vmsrc/apple/plvmjit03.s @@ -287,29 +287,49 @@ _DIVEX INX ;* MUL TOS-1 BY TOS ;* MUL STY IPY - LDY #$10 + LDA ESTKH,X + CMP ESTKH+1,X + BCS + + TAY ; SWAP MULTIPLIER AND MULTIPLICAND + LDA ESTKH+1,X ; SO THAT MULTIPLIER IS SMALLER + STA ESTKH,X + STY ESTKH+1,X + LDY ESTKL,X LDA ESTKL+1,X + STA ESTKL,X + STY ESTKL+1,X ++ LDA ESTKL+1,X EOR #$FF STA TMPL - LDA ESTKH+1,X - EOR #$FF - STA TMPH LDA #$00 STA ESTKL+1,X ; PRODL -; STA ESTKH+1,X ; PRODH -_MULLP LSR TMPH ; MULTPLRH - ROR TMPL ; MULTPLRL +; STA TMPH ; PRODH + LDY #$08 +_MULLPL LSR TMPL ; ~MULTPLRL BCS + - STA ESTKH+1,X ; PRODH - LDA ESTKL,X ; MULTPLNDL - ADC ESTKL+1,X ; PRODL - STA ESTKL+1,X - LDA ESTKH,X ; MULTPLNDH - ADC ESTKH+1,X ; PRODH + STA TMPH ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + LDA TMPH ; PRODH + ADC ESTKH,X ; +MULTPLNDH + ASL ESTKL,X ; MULTPLNDL ROL ESTKH,X ; MULTPLNDH DEY - BNE _MULLP + BNE _MULLPL + BEQ + +_MULLPH CLC + TAY ; PRODH + LDA ESTKL+1,X ; PRODL + ADC ESTKL,X ; +MULTPLNDL + STA ESTKL+1,X ; =PRODL + TYA ; PRODH + ADC ESTKH,X ; +MULTPLNDH +- ASL ESTKL,X ; MULTPLNDL + ROL ESTKH,X ; MULTPLNDH ++ LSR ESTKH+1,X ; MULTPLRH + BCS _MULLPH + BNE - ; ONLY MULT AS MANY BITS AS WE NEED STA ESTKH+1,X ; PRODH LDY IPY JMP DROP diff --git a/src/vmsrc/apple/plvmjit03.sym b/src/vmsrc/apple/plvmjit03.sym new file mode 100644 index 0000000..89de969 --- /dev/null +++ b/src/vmsrc/apple/plvmjit03.sym @@ -0,0 +1,677 @@ + CMDPARS = $a0f0 ; unused + _CNXTS1 = $a4ef ; ? + SRCX = $1607 + BRTRU = $a8ba ; ? + _DIV = $a247 + _CMPPS = $a4c5 + ISGT = $a7ed ; ? + _CPYS1 = $a510 + INTERP = $a1c2 ; ? + ISEQ = $a7a3 ; ? + _F009 = $ab17 ; unused + _F028 = $ab3d ; unused + _F219 = $b66d ; unused + _F238 = $b6bb ; unused + _B019 = $b1ce ; ? + _B038 = $b417 ; unused + _F008 = $ab15 ; unused + _F029 = $ab3f ; unused + _F218 = $b660 ; unused + _F239 = $b6be ; unused + _B018 = $b1d6 ; unused + _B039 = $b3b8 + _F049 = $ab67 ; unused + _F068 = $af6f ; unused + _F259 = $b72b ; unused + _B059 = $b4c9 ; unused + _B078 = $b5b7 ; unused + SRCL = $6 + _F048 = $ab65 ; unused + _F069 = $af72 ; unused + _F258 = $b727 ; unused + _B058 = $b4c9 ; ? + _B079 = $b5c8 ; ? + SEGEND = $37ab ; ? + _F089 = $b056 ; unused + _B099 = $b739 ; unused + BRNCH = $a8cf ; ? + ICAL = $a95e ; ? + _F088 = $b04c ; unused + _B098 = $b722 + SRCH = $7 + _F001 = $aa16 ; unused + _F020 = $ab2d ; unused + _F043 = $ab5b ; unused + _F062 = $af0d ; unused + _F085 = $b026 ; unused + _F211 = $b640 ; unused + _F230 = $b699 ; unused + _F253 = $b711 ; unused + _B011 = $b15a ; ? + _B030 = $b331 ; unused + _B053 = $b48b + _B072 = $b59d ; ? + _B095 = $b722 ; ? + _F000 = $aa14 ; unused + _F021 = $ab2f ; unused + _F042 = $ab59 ; unused + _F063 = $af10 ; unused + _F084 = $b00a ; unused + _F210 = $b63c ; unused + _F231 = $b69f ; unused + _F252 = $b70e ; unused + _B010 = $b0ed ; unused + _B031 = $b5ba ; ? + _B052 = $b455 ; unused + _B073 = $b597 ; ? + _B094 = $b6a9 ; ? + ISFLS = $a7c4 ; ? + _F003 = $aa1a ; unused + _F022 = $ab31 ; unused + _F041 = $ab57 ; unused + _F060 = $ab7d ; unused + _F087 = $b045 ; unused + _F213 = $b64a ; unused + _F232 = $b6a2 ; unused + _F251 = $b706 ; unused + _B013 = $b16f ; ? + _B051 = $b443 + _B070 = $b560 + _B097 = $b73c ; unused + _B032 = $b5be ; ? + SEGSTART = $2000 + _F002 = $aa18 ; unused + _F023 = $ab33 ; unused + _F040 = $ab55 ; unused + _F061 = $ab81 ; unused + _F086 = $b029 ; unused + _F212 = $b644 ; unused + _F233 = $b6a7 ; unused + _F250 = $b703 ; unused + _B012 = $b15a ; unused + _B033 = $b354 ; ? + _B050 = $b45c ; unused + _B071 = $b5a3 ; unused + _B096 = $b722 ; unused + ISGE = $a7cd ; ? + _F005 = $ab0f ; unused + _F024 = $ab35 ; unused + _F047 = $ab63 ; unused + _F066 = $af4c ; unused + _F081 = $afdb ; unused + _F215 = $b651 ; unused + _F234 = $b6aa ; unused + _F257 = $b71f ; unused + _B015 = $b18f ; ? + _B034 = $b365 ; ? + _B057 = $b4ed ; unused + _B076 = $b590 ; unused + _B091 = $b643 ; ? + ESTK = $c0 + _F004 = $aa1c ; unused + _F025 = $ab37 ; unused + _F046 = $ab61 ; unused + _F067 = $af4f ; unused + _F080 = $afd8 ; unused + _F214 = $b64d ; unused + _F235 = $b6b2 ; unused + _F256 = $b71c ; unused + REVCPYLP = $ac82 ; ? + _B014 = $b16f ; unused + _B035 = $b365 ; unused + _B056 = $b4ed ; ? + _B077 = $b5b7 ; ? + _B090 = $b649 ; unused + _F007 = $ab13 ; unused + _F026 = $ab39 ; unused + _F045 = $ab5f ; unused + _F064 = $af28 ; unused + _F083 = $b007 ; unused + _F217 = $b65d ; unused + _F236 = $b6b5 ; unused + _F255 = $b719 ; unused + _B017 = $b1b6 + _B036 = $b393 ; ? + _B055 = $b491 ; ? + _B074 = $b597 ; unused + _B093 = $b6b0 ; unused + _F006 = $ab11 ; unused + _F027 = $ab3b ; unused + _F044 = $ab5d ; unused + _F065 = $af2b ; unused + _F082 = $afdf ; unused + _F216 = $b656 ; unused + _F237 = $b6b8 ; unused + _F254 = $b716 ; unused + _B016 = $b18f ; unused + _B037 = $b417 ; ? + _B054 = $b497 ; unused + _B075 = $b590 ; ? + _B092 = $b68a + IFP = $e0 + IPX = $16f3 + JITINTRP = $a1f0 ; ? + IPY = $e4 + SAW = $a754 ; ? + BROR = $a891 ; ? + DECR = $a333 ; ? + BRGT = $a8f6 ; ? + DSTX = $1609 + BREQ = $a89a ; ? + _C019 = $b15e ; unused + _C018 = $b137 + IPH = $f3 + CMD = $abac ; ? + DECBRGE = $a912 ; ? + _DIV1 = $a26d ; ? + IPL = $f2 + SOSCMD = $aa0b ; ? + SAB = $a741 ; ? + FIXNEXT = $a879 ; ? + ADD = $a33e ; ? + _C011 = $b059 ; unused + XPAGE = $1600 + _C010 = $b051 + DSTL = $8 + XENTRY = $a0f8 ; unused + _C013 = $b092 + SEL = $a80d ; ? + _C012 = $b06f + SUB = $a34e ; ? + _C015 = $b0f5 + FIXDROP = $a6ff ; ? + _C014 = $b0c2 ; unused + FORCPYLP = $ac49 ; ? + DSTH = $9 + _C017 = $b129 + _C016 = $b117 + IDXW = $a35e ; ? + CASELP = $a83c ; ? + RLDEX = $aed8 ; ? + INCR = $a32a ; ? + _BRLE = $a930 ; ? + _SYSFLAGS = $0 ; unused + COMP = $a371 ; ? + _F109 = $b13e ; unused + _F128 = $b1e0 ; unused + _F108 = $b132 ; unused + _F129 = $b1e3 ; unused + ADDI = $a409 ; ? + CALL = $a989 ; ? + LEAVE = $a9e6 ; ? + _D049 = $aa66 + _D068 = $aaf1 + _P019 = $ac1e ; ? + _F149 = $b287 ; unused + _F168 = $b3d4 ; unused + _D048 = $aa61 + _D069 = $aaf7 + _P018 = $abeb ; ? + _F148 = $b284 ; unused + _F169 = $b3dc ; unused + CPYXLP = $acbb + _F189 = $b53f ; unused + _F188 = $b520 ; unused + SUBI = $a418 ; ? + NOBRNCH = $a8c1 ; ? + _D043 = $aa40 + _D062 = $aabd + _P013 = $b193 ; ? + _F101 = $b0ee ; unused + _F120 = $b1a8 ; unused + _F143 = $b265 ; unused + _F162 = $b36c ; unused + _F185 = $b4ca ; unused + _D042 = $aa3d + _D063 = $aac7 + _P012 = $b22d ; ? + _F100 = $b0d6 ; unused + _F121 = $b1b7 ; unused + _F142 = $b25b ; unused + _F163 = $b399 ; unused + _F184 = $b4c4 ; unused + _P030 = $af55 ; ? + _D041 = $aa34 + _D060 = $aaa5 + _P011 = $b211 ; ? + _F103 = $b107 ; unused + _F122 = $b1ba ; unused + _F141 = $b240 ; unused + _F160 = $b35a ; unused + _F187 = $b500 ; unused + _D040 = $aa33 + _D061 = $aaae + _P010 = $adac ; ? + _F102 = $b0fc ; unused + _F123 = $b1c0 ; unused + _F140 = $b221 ; unused + _F161 = $b360 ; unused + _F186 = $b4ce ; unused + _D047 = $aa59 + _D066 = $aae4 + _P017 = $b129 ; ? + _D081 = $ab97 + _F105 = $b113 ; unused + _F124 = $b1c3 ; unused + _F147 = $b27f ; unused + _F166 = $b3be ; unused + _F181 = $b4b7 ; unused + BRAND = $a888 ; ? + _D046 = $aa52 + _D067 = $aaeb + _P016 = $b19a ; ? + _D080 = $ab96 + _F104 = $b10a ; unused + _F125 = $b1c7 ; unused + _F146 = $b279 ; unused + _F167 = $b3cb ; unused + _F180 = $b4b1 ; unused + _D045 = $aa4b + _D064 = $aad3 + _P015 = $b15e ; ? + _F107 = $b125 ; unused + _F126 = $b1d7 ; unused + _F145 = $b272 ; unused + _F164 = $b39d ; unused + _F183 = $b4be ; unused + _D044 = $aa41 + _D065 = $aadd + _P014 = $b137 ; ? + _D082 = $ab99 + _F106 = $b120 ; unused + _F127 = $b1da ; unused + _F144 = $b268 ; unused + _F165 = $b3bb ; unused + _F182 = $b4ba ; unused + DLW = $a721 ; ? + SENTRY = $a0f6 ; unused + RET = $a9fa ; ? + LLW = $a578 ; ? + PPX = $16e3 + LB = $a520 ; ? + LA = $a491 ; ? + _CNXTS = $a4eb ; ? + CALLADR = $a9a3 ; ? + JITCOMP = $a0f2 ; ? + ESGUARD = $be ; unused + XINTERP = $a1d5 ; ? + PAGE0 = $2063 ; ? + IDXLB = $a5bc ; ? + JMPTMP = $e6 + ADDAB = $a62f ; ? + PPL = $e2 + LW = $a52f ; ? + _A018 = $ae85 + PPH = $e3 + _DIVLP = $a274 + LLA = $a550 ; ? + DLB = $a70e ; ? + NEG = $a2ee ; ? + _CPYS = $a4fc ; ? + LLB = $a564 ; ? + PP = $e2 + ENTER = $a9b5 ; ? + _A011 = $ad48 ; unused + PARAMS = $abad ; ? + _A010 = $ad43 ; unused + ADDAW = $a647 ; ? + _A013 = $ad7a + BAND = $a380 ; ? + IDXLW = $a5d9 ; ? + _A012 = $ad52 + ZERO = $a458 ; ? + _A015 = $adbd + _A014 = $adac ; unused + _A017 = $ae4a + _A016 = $ae12 + _CMPCS = $a4d8 + ICALADR = $a977 ; ? + TOUPR = $adae ; ? + OPTBL = $a100 ; ? + BRFLS = $a8c8 ; ? + ISLT = $a7ff ; ? + _F019 = $ab2b ; unused + _F038 = $ab51 ; unused + _F209 = $b639 ; unused + _F228 = $b692 ; unused + _B009 = $b0ed ; ? + _B028 = $b317 ; ? + _F018 = $ab29 ; unused + _F039 = $ab53 ; unused + _F208 = $b636 ; unused + _F229 = $b696 ; unused + _B008 = $b0b7 ; unused + _B029 = $b331 ; ? + DVSIGN = $e9 + _F059 = $ab7b ; unused + _F078 = $afce ; unused + _F249 = $b700 ; unused + _B049 = $b417 ; unused + _B068 = $b545 ; ? + _F058 = $ab79 ; unused + _F079 = $afd4 ; unused + _F248 = $b6f4 ; unused + _B048 = $b417 ; ? + _B069 = $b54e ; ? + _F099 = $b0ce ; unused + _B089 = $b631 + _F098 = $b0cb ; unused + _B088 = $b65f ; ? + ISTRU = $a7af + CFFB = $a46b ; ? + _F011 = $ab1b ; unused + _F030 = $ab41 ; unused + _F053 = $ab6f ; unused + _F072 = $afb7 ; unused + _F095 = $b0a2 ; unused + _F201 = $b60a ; unused + _F220 = $b671 ; unused + _F243 = $b6e3 ; unused + _F262 = $b737 ; unused + _B001 = $b044 ; ? + _B020 = $b28d ; ? + _B043 = $b3e1 ; unused + _B062 = $b50d ; ? + _B085 = $b65f ; ? + _F010 = $ab19 ; unused + _F031 = $ab43 ; unused + _F052 = $ab6d ; unused + _F073 = $afba ; unused + _F094 = $b08e ; unused + _F200 = $b604 ; unused + _F221 = $b675 ; unused + _F242 = $b6e0 ; unused + _B021 = $b28d ; unused + _B042 = $b3e1 ; ? + _B063 = $b517 + _B084 = $b5f1 ; unused + _F013 = $ab1f ; unused + _F032 = $ab45 ; unused + _F051 = $ab6b ; unused + _F070 = $af90 ; unused + _F097 = $b0be ; unused + _F203 = $b614 ; unused + _F222 = $b67b ; unused + _F241 = $b6d6 ; unused + _F260 = $b72e ; unused + _B003 = $b090 ; ? + _B022 = $b289 ; ? + _B041 = $b3ec ; ? + _B060 = $b4f3 + _B087 = $b65b ; ? + _F012 = $ab1d ; unused + _F033 = $ab47 ; unused + _F050 = $ab69 ; unused + _F071 = $afa9 ; unused + _F096 = $b0b5 ; unused + _F202 = $b60f ; unused + _F223 = $b67e ; unused + _F240 = $b6c1 ; unused + _F261 = $b732 ; unused + _B002 = $b044 ; unused + _B023 = $b289 ; unused + _B040 = $b3f2 ; unused + _B061 = $b514 ; unused + _B086 = $b65f ; unused + _F015 = $ab23 ; unused + _F034 = $ab49 ; unused + _F057 = $ab77 ; unused + _F076 = $afc3 ; unused + _F091 = $b066 ; unused + _F205 = $b627 ; unused + _F224 = $b681 ; unused + _F247 = $b6ef ; unused + _B005 = $b0a9 ; ? + _B024 = $b2d2 ; ? + _B047 = $b3e1 ; unused + _B066 = $b557 ; ? + _B081 = $b5f1 ; ? + _NEG = $a239 + _F014 = $ab21 ; unused + _F035 = $ab4b ; unused + _F056 = $ab75 ; unused + _F077 = $afc6 ; unused + _F090 = $b060 ; unused + _F204 = $b61b ; unused + _F225 = $b685 ; unused + _F246 = $b6ec ; unused + _B004 = $b090 ; unused + _B025 = $b2d2 ; unused + _B046 = $b3e1 ; ? + _B067 = $b557 ; unused + _B080 = $b5c8 ; unused + CPYMEX = $ac97 ; ? + ISLE = $a7df ; ? + _F017 = $ab27 ; unused + _F036 = $ab4d ; unused + _F055 = $ab73 ; unused + _F074 = $afbd ; unused + _F093 = $b07f ; unused + _F207 = $b632 ; unused + _F226 = $b68b ; unused + _F245 = $b6e9 ; unused + _B007 = $b0b7 ; ? + _B026 = $b2d2 ; ? + _B045 = $b3d1 ; unused + _B064 = $b55d ; unused + _B083 = $b5f1 ; ? + ISNE = $a7b8 ; ? + _F016 = $ab25 ; unused + _F037 = $ab4f ; unused + _F054 = $ab71 ; unused + _F075 = $afc0 ; unused + _F092 = $b076 ; unused + _F206 = $b62c ; unused + _F227 = $b68f ; unused + _F244 = $b6e6 ; unused + _B006 = $b0a9 ; unused + _B027 = $b2d2 ; unused + _B044 = $b3d1 ; ? + _B065 = $b557 ; ? + _B082 = $b5f1 ; unused + SHR = $a3d1 ; ? + SLW = $a6e9 ; ? + IOR = $a38f ; ? + _CALL = $a995 ; unused + ESP = $e5 + CASEEND = $a85f ; ? + TMPX = $16e8 + JENTRY = $a0fa ; unused + DROPX = $16ef + REVCPY = $ac5d ; ? + BRLT = $a904 ; ? + SLB = $a6d8 ; ? + _C009 = $b02d + _C028 = $b5f5 + MOD = $a2fe ; ? + VMCORE = $206d ; ? + _C008 = $b014 + ORI = $a435 ; ? + _CEXS = $a51a ; ? + ESTKSZ = $20 + MUL = $a296 ; ? + _CMPS = $a4d1 ; ? + _MULLPH = $a2d2 + CPYXMEX = $acd3 ; ? + _C001 = $af16 + _C020 = $b193 ; unused + TMPH = $e8 + _C000 = $aef2 + _C021 = $b19a + _C003 = $af55 + _C022 = $b1ad + _C002 = $af2f + _C023 = $b211 + SHL = $a3ad ; ? + _MULLPL = $a2b9 + _C005 = $af94 + _C024 = $b22d + TMPL = $e7 + _C004 = $af76 + _C025 = $b250 + SRC = $6 + BRNE = $a8aa ; ? + _C007 = $afe4 + _C026 = $b290 + MEMBANK = $ffef ; unused + _INIT = $b665 ; ? + _C006 = $afb0 + _C027 = $b2f6 + ESTKL = $d0 + OPPAGE = $f8 ; unused + ESTKH = $c0 + DROP2 = $a6d4 ; ? + IFPX = $16e1 + DIVMOD = $a310 ; ? + NEXTOP = $f0 + _BRGE = $a91c + ANDI = $a427 ; ? + _D038 = $aa22 + _F119 = $b1a3 ; unused + _F138 = $b208 ; unused + _D039 = $aa23 + _F118 = $b197 ; unused + _F139 = $b20d ; unused + _P028 = $af16 ; ? + _D059 = $aa9e + _P009 = $b0c2 ; ? + _D078 = $ab87 + _F159 = $b349 ; unused + _F178 = $b467 ; unused + _P029 = $af2f ; ? + _D058 = $aa97 + _P008 = $b059 ; ? + _D079 = $ab87 + _F158 = $b32d ; unused + _F179 = $b4ac ; unused + _F199 = $b5fd ; unused + _F198 = $b5ef ; unused + OPIDX = $f7 + IFPH = $e1 + _D053 = $aa7b + _D072 = $ab08 + _P003 = $b02d ; ? + _P022 = $ad31 ; ? + _F111 = $b148 ; unused + _F130 = $b1e6 ; unused + _F153 = $b30a ; unused + _F172 = $b40a ; unused + _F195 = $b5b5 ; unused + TEMPBUF = $a000 ; unused + _D031 = $aa0e + _D052 = $aa76 + _D073 = $ab0f + _P002 = $b051 ; ? + _P023 = $ad0b ; ? + _F110 = $b143 ; unused + _F131 = $b1ec ; unused + _F152 = $b304 ; unused + _F173 = $b413 ; unused + _F194 = $b595 ; unused + _D032 = $aa10 + _D051 = $aa71 + _D070 = $aafd + _P001 = $abb6 ; ? + _P020 = $ad1f ; ? + _F113 = $b155 ; unused + _F132 = $b1ef ; unused + _F151 = $b2c4 ; unused + _F170 = $b3e7 ; unused + _F197 = $b5e1 ; unused + _D033 = $aa12 + _D050 = $aa6b + _D071 = $ab03 + _P000 = $ab9b ; ? + _P021 = $acf7 ; ? + _F112 = $b14d ; unused + _F133 = $b1f2 ; unused + _F150 = $b2b6 ; unused + _F171 = $b3f8 ; unused + _F196 = $b5cb ; unused + IFPL = $e0 + INCBRLE = $a92a ; ? + ADDBRLE = $a94e ; ? + _P026 = $b5f5 ; ? + _D034 = $aa1e + _D057 = $aa8f + _P007 = $b117 ; ? + _D076 = $ab83 + _F115 = $b177 ; unused + _F134 = $b1f9 ; unused + _F157 = $b32a ; unused + _F176 = $b451 ; unused + _F191 = $b56a ; unused + _P027 = $aef2 ; ? + _D035 = $aa1f + _D056 = $aa8a + _P006 = $b0f5 ; ? + _D077 = $ab85 + _F114 = $b16a ; unused + _F135 = $b1fc ; unused + _F156 = $b327 ; unused + _F177 = $b45f ; unused + _F190 = $b54c ; unused + _D036 = $aa20 + _D055 = $aa85 + _P005 = $b092 ; ? + _P024 = $ad48 ; ? + _D074 = $ab3f + _F117 = $b187 ; unused + _F136 = $b1ff ; unused + _F155 = $b322 ; unused + _F174 = $b434 ; unused + _F193 = $b58c ; unused + _D037 = $aa21 + _D054 = $aa80 + _P004 = $b06f ; ? + _P025 = $ad43 ; ? + _D075 = $ab81 + _F116 = $b182 ; unused + _F137 = $b205 ; unused + _F154 = $b31f ; unused + _F175 = $b43d ; unused + _F192 = $b580 ; unused + TMP = $e7 + XOR = $a39e ; ? + CB = $a478 ; ? + DIV = $a2f4 ; ? + VMZP = $e0 + LAW = $a612 ; ? + NATV = $a9fb ; ? + DAW = $a787 ; ? + IDXAB = $a668 ; ? + LNOT = $a43f ; ? + ADDLB = $a58d ; ? + DROP = $ef + DUP = $a3fd ; ? + SB = $a6b6 ; ? + DST = $8 + SETMEX = $ac1a ; ? + JMPTMPX = $16e6 ; unused + CN = $a460 ; ? + _A009 = $ad31 ; unused + LAB = $a5fc ; ? + _A008 = $ad1f ; unused + CS = $a4af ; ? + DAB = $a772 ; ? + IP = $f2 + CW = $a4a1 ; ? + _DIVEX = $a292 ; ? + _A001 = $abb6 ; unused + REGVALS = $6 + SETMLPH = $ac02 + SUBBRGE = $a93e ; ? + _A000 = $ab9b + JITCODE = $a0f4 ; ? + MINUS1 = $a44e ; ? + _A003 = $ac1e + FETCHOP = $f1 + _A002 = $abeb ; unused + ADDLW = $a5a3 ; ? + SETMLPL = $abff + _A005 = $acd7 + IDXAW = $a68b ; ? + _A004 = $ac98 + SW = $a6c2 ; ? + _A007 = $ad0b ; unused + _A006 = $acf7 diff --git a/src/vmsrc/apple/soscmd.a b/src/vmsrc/apple/soscmd.a new file mode 100644 index 0000000..48527c4 --- /dev/null +++ b/src/vmsrc/apple/soscmd.a @@ -0,0 +1,1341 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/soscmd.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; vmsrc/apple/soscmd.pla: 0001: +; vmsrc/apple/soscmd.pla: 0002: // +; vmsrc/apple/soscmd.pla: 0003: // Private addresses +; vmsrc/apple/soscmd.pla: 0004: // +; vmsrc/apple/soscmd.pla: 0005: const cmdparser = $A0F0 + !BYTE $00 ; END OF MODULE DEPENDENCIES + ; cmdparser = 41200 +; vmsrc/apple/soscmd.pla: 0006: // +; vmsrc/apple/soscmd.pla: 0007: // SOS routines +; vmsrc/apple/soscmd.pla: 0008: // FILE I/O +; vmsrc/apple/soscmd.pla: 0009: // +; vmsrc/apple/soscmd.pla: 0010: def getpfx(path)#1 + !BYTE $00 ; PAD BYTE +_SUBSEG ; BYTECODE STARTS + ; path -> [0] +_C000 ; getpfx() +; vmsrc/apple/soscmd.pla: 0011: byte params[4] + ; params -> [2] +; vmsrc/apple/soscmd.pla: 0012: +; vmsrc/apple/soscmd.pla: 0013: ^path = 0 + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/soscmd.pla: 0014: params.0 = 2 +; vmsrc/apple/soscmd.pla: 0015: params:1 = path +; vmsrc/apple/soscmd.pla: 0016: params.3 = 128 +; vmsrc/apple/soscmd.pla: 0017: syscall($C7, @params) +; vmsrc/apple/soscmd.pla: 0018: return path + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$80 ; CB 128 + !BYTE $74,$05 ; SLB [5] + !BYTE $2A,$C7 ; CB 199 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F000 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/soscmd.pla: 0019: end +; vmsrc/apple/soscmd.pla: 0020: def setpfx(path)#1 + ; path -> [0] +_C001 ; setpfx() +; vmsrc/apple/soscmd.pla: 0021: byte params[6] + ; params -> [2] +; vmsrc/apple/soscmd.pla: 0022: byte fileinfo[2] + ; fileinfo -> [8] +; vmsrc/apple/soscmd.pla: 0023: +; vmsrc/apple/soscmd.pla: 0024: params.0 = 3 + !BYTE $58,$0A,$01 ; ENTER 10,1 +; vmsrc/apple/soscmd.pla: 0025: params:1 = path +; vmsrc/apple/soscmd.pla: 0026: params:3 = @fileinfo +; vmsrc/apple/soscmd.pla: 0027: params.5 = 2 +; vmsrc/apple/soscmd.pla: 0028: if not syscall($C4, @params) and (fileinfo.1 == $00 or fileinfo.1 == $0F) // Make sure it's a directory +; vmsrc/apple/soscmd.pla: 0029: params.0 = 1 +; vmsrc/apple/soscmd.pla: 0030: params:1 = path +; vmsrc/apple/soscmd.pla: 0031: syscall($C6, @params) +; vmsrc/apple/soscmd.pla: 0032: else + !BYTE $06 ; CN 3 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $28,$08 ; LLA [8] + !BYTE $76,$05 ; SLW [5] + !BYTE $04 ; CN 2 + !BYTE $74,$07 ; SLB [7] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F001 !WORD 0 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B001 + !WORD _B001-* + !BYTE $64,$09 ; LLB [9] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B002 + !WORD _B002-* + !BYTE $64,$09 ; LLB [9] + !BYTE $1E ; CN 15 + !BYTE $40 ; ISEQ +_B002 +_B001 + !BYTE $4C ; BRFLS _B003 + !WORD _B003-* + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$C6 ; CB 198 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F002 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B004 + !WORD _B004-* +_B003 +; vmsrc/apple/soscmd.pla: 0033: getpfx(path) // Get current path +; vmsrc/apple/soscmd.pla: 0034: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F003 !WORD _C000 + !BYTE $30 ; DROP +_B004 +; vmsrc/apple/soscmd.pla: 0035: return path + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/soscmd.pla: 0036: end +; vmsrc/apple/soscmd.pla: 0037: def dev_info(devnum, name, list, listlen)#1 + ; devnum -> [0] + ; name -> [2] + ; list -> [4] + ; listlen -> [6] +_C002 ; dev_info() +; vmsrc/apple/soscmd.pla: 0038: byte params[7] + ; params -> [8] +; vmsrc/apple/soscmd.pla: 0039: +; vmsrc/apple/soscmd.pla: 0040: params.0 = 4 + !BYTE $58,$0F,$04 ; ENTER 15,4 +; vmsrc/apple/soscmd.pla: 0041: params.1 = devnum +; vmsrc/apple/soscmd.pla: 0042: params:2 = name +; vmsrc/apple/soscmd.pla: 0043: params:4 = list +; vmsrc/apple/soscmd.pla: 0044: params.6 = listlen +; vmsrc/apple/soscmd.pla: 0045: return syscall($85, @params) + !BYTE $08 ; CN 4 + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$09 ; SLB [9] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $74,$0E ; SLB [14] + !BYTE $2A,$85 ; CB 133 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X011 +_F004 !WORD 0 + !BYTE $5A,$0F ; LEAVE 15 +; vmsrc/apple/soscmd.pla: 0046: end +; vmsrc/apple/soscmd.pla: 0047: def volume(devname, volname)#1 + ; devname -> [0] + ; volname -> [2] +_C003 ; volume() +; vmsrc/apple/soscmd.pla: 0048: byte params[9] + ; params -> [4] +; vmsrc/apple/soscmd.pla: 0049: +; vmsrc/apple/soscmd.pla: 0050: params.0 = 4 + !BYTE $58,$0D,$02 ; ENTER 13,2 +; vmsrc/apple/soscmd.pla: 0051: params:1 = devname +; vmsrc/apple/soscmd.pla: 0052: params:3 = volname +; vmsrc/apple/soscmd.pla: 0053: params:5 = 0 +; vmsrc/apple/soscmd.pla: 0054: params:7 = 0 +; vmsrc/apple/soscmd.pla: 0055: return syscall($C5, @params) + !BYTE $08 ; CN 4 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$07 ; SLW [7] + !BYTE $00 ; CN 0 + !BYTE $76,$09 ; SLW [9] + !BYTE $00 ; CN 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F005 !WORD 0 + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmd.pla: 0056: end +; vmsrc/apple/soscmd.pla: 0057: // +; vmsrc/apple/soscmd.pla: 0058: // Command mode +; vmsrc/apple/soscmd.pla: 0059: // +; vmsrc/apple/soscmd.pla: 0060: def volumes()#0 +_C004 ; volumes() +; vmsrc/apple/soscmd.pla: 0061: byte info[11] + ; info -> [0] +; vmsrc/apple/soscmd.pla: 0062: byte devname[17] + ; devname -> [11] +; vmsrc/apple/soscmd.pla: 0063: byte volname[17] + ; volname -> [28] +; vmsrc/apple/soscmd.pla: 0064: byte i + ; i -> [45] +; vmsrc/apple/soscmd.pla: 0065: +; vmsrc/apple/soscmd.pla: 0066: for i = $01 to $18 + !BYTE $58,$2E,$00 ; ENTER 46,0 + !BYTE $2A,$18 ; CB 24 + !BYTE $02 ; CN 1 +_B006 + !BYTE $6C,$2D ; DLB [45] +; vmsrc/apple/soscmd.pla: 0067: if dev_info(i, @devname, @info, 11) == 0 +; vmsrc/apple/soscmd.pla: 0068: puts(@devname) +; vmsrc/apple/soscmd.pla: 0069: if volume(@devname, @volname) == 0 +; vmsrc/apple/soscmd.pla: 0070: puts(" => /") + !BYTE $64,$2D ; LLB [45] + !BYTE $28,$0B ; LLA [11] + !BYTE $28,$00 ; LLA [0] + !BYTE $16 ; CN 11 + !BYTE $54 ; CALL _C002 +_F006 !WORD _C002 + !BYTE $4E ; BRTRU _B008 + !WORD _B008-* + !BYTE $28,$0B ; LLA [11] + !BYTE $54 ; CALL _X004 +_F007 !WORD 0 + !BYTE $28,$0B ; LLA [11] + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _C003 +_F008 !WORD _C003 + !BYTE $4E ; BRTRU _B010 + !WORD _B010-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3D,$3E,$20,$2F + !BYTE $54 ; CALL _X004 +_F009 !WORD 0 +; vmsrc/apple/soscmd.pla: 0071: puts(@volname) +; vmsrc/apple/soscmd.pla: 0072: putc('/') +; vmsrc/apple/soscmd.pla: 0073: fin + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _X004 +_F010 !WORD 0 + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F011 !WORD 0 +_B010 +_B011 +; vmsrc/apple/soscmd.pla: 0074: putln +; vmsrc/apple/soscmd.pla: 0075: fin + !BYTE $54 ; CALL _X003 +_F012 !WORD 0 +_B008 +_B009 +; vmsrc/apple/soscmd.pla: 0076: next +_B007 + !BYTE $A4 ; INCBRLE _B006 + !WORD _B006-* +_B005 + !BYTE $74,$2D ; SLB [45] + !BYTE $30 ; DROP +; vmsrc/apple/soscmd.pla: 0077: end + !BYTE $5A,$2E ; LEAVE 46 +; vmsrc/apple/soscmd.pla: 0078: def catalog(path)#0 + ; path -> [0] +_C005 ; catalog() +; vmsrc/apple/soscmd.pla: 0079: byte refnum + ; refnum -> [2] +; vmsrc/apple/soscmd.pla: 0080: byte firstblk + ; firstblk -> [3] +; vmsrc/apple/soscmd.pla: 0081: byte entrylen, entriesblk + ; entrylen -> [4] + ; entriesblk -> [5] +; vmsrc/apple/soscmd.pla: 0082: byte i, type, len + ; i -> [6] + ; type -> [7] + ; len -> [8] +; vmsrc/apple/soscmd.pla: 0083: word entry, catptr + ; entry -> [9] + ; catptr -> [11] +; vmsrc/apple/soscmd.pla: 0084: +; vmsrc/apple/soscmd.pla: 0085: if !^path + !BYTE $58,$0D,$01 ; ENTER 13,1 +; vmsrc/apple/soscmd.pla: 0086: getpfx(path) +; vmsrc/apple/soscmd.pla: 0087: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C000 +_F013 !WORD _C000 + !BYTE $30 ; DROP +_B012 +_B013 +; vmsrc/apple/soscmd.pla: 0088: refnum = cmdsys:sysopen(path) +; vmsrc/apple/soscmd.pla: 0089: if not refnum +; vmsrc/apple/soscmd.pla: 0090: return + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X000+8 +_F014 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6C,$02 ; DLB [2] + !BYTE $4E ; BRTRU _B014 + !WORD _B014-* + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmd.pla: 0091: fin +_B014 +_B015 +; vmsrc/apple/soscmd.pla: 0092: catptr = heapmark +; vmsrc/apple/soscmd.pla: 0093: firstblk = 1 +; vmsrc/apple/soscmd.pla: 0094: while cmdsys:sysread(refnum, catptr, 512) == 512 + !BYTE $54 ; CALL _X012 +_F015 !WORD 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $02 ; CN 1 + !BYTE $74,$03 ; SLB [3] + !BYTE $50 ; BRNCH _B018 + !WORD _B018-* +_B016 +; vmsrc/apple/soscmd.pla: 0095: entry = catptr + 4 +; vmsrc/apple/soscmd.pla: 0096: if firstblk +; vmsrc/apple/soscmd.pla: 0097: entrylen = catptr->$23 +; vmsrc/apple/soscmd.pla: 0098: entriesblk = catptr->$24 - 1 +; vmsrc/apple/soscmd.pla: 0099: entry = entry + entrylen +; vmsrc/apple/soscmd.pla: 0100: fin + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$09 ; SLW [9] + !BYTE $64,$03 ; LLB [3] + !BYTE $4C ; BRFLS _B019 + !WORD _B019-* + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B019 +_B020 +; vmsrc/apple/soscmd.pla: 0101: for i = firstblk to entriesblk + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$03 ; LLB [3] + !BYTE $A0 ; BRGT _B021 + !WORD _B021-* +_B022 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/soscmd.pla: 0102: if ^entry +; vmsrc/apple/soscmd.pla: 0103: ^entry = ^entry & $0F +; vmsrc/apple/soscmd.pla: 0104: puts(entry) +; vmsrc/apple/soscmd.pla: 0105: type = ' ' +; vmsrc/apple/soscmd.pla: 0106: when entry->$10 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B024 + !WORD _B024-* + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$09 ; LLW [9] + !BYTE $70 ; SB + !BYTE $66,$09 ; LLW [9] + !BYTE $54 ; CALL _X004 +_F016 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$09 ; LLW [9] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B027-* +; vmsrc/apple/soscmd.pla: 0107: is $0F // Is it a directory? +_B028 +; vmsrc/apple/soscmd.pla: 0108: type = '/' +; vmsrc/apple/soscmd.pla: 0109: break + !BYTE $2A,$2F ; CB 47 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +; vmsrc/apple/soscmd.pla: 0110: is $FF // SYSTEM file +_B029 +; vmsrc/apple/soscmd.pla: 0111: type = '-' +; vmsrc/apple/soscmd.pla: 0112: break + !BYTE $2A,$2D ; CB 45 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +; vmsrc/apple/soscmd.pla: 0113: is $FE // REL file +_B030 +; vmsrc/apple/soscmd.pla: 0114: type = '+' +; vmsrc/apple/soscmd.pla: 0115: wend + !BYTE $2A,$2B ; CB 43 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B026 + !WORD _B026-* +_B027 + !BYTE $03 ; CASEBLOCK + !WORD $000F + !WORD _B028-* + !WORD $00FE + !WORD _B030-* + !WORD $00FF + !WORD _B029-* +_B026 +; vmsrc/apple/soscmd.pla: 0116: putc(type) +; vmsrc/apple/soscmd.pla: 0117: for len = ^entry to 18 + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _X002 +_F017 !WORD 0 + !BYTE $2A,$12 ; CB 18 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B031 + !WORD _B031-* +_B032 + !BYTE $6C,$08 ; DLB [8] +; vmsrc/apple/soscmd.pla: 0118: putc(' ') +; vmsrc/apple/soscmd.pla: 0119: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F018 !WORD 0 +_B033 + !BYTE $A4 ; INCBRLE _B032 + !WORD _B032-* +_B031 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; vmsrc/apple/soscmd.pla: 0120: fin +_B024 +_B025 +; vmsrc/apple/soscmd.pla: 0121: entry = entry + entrylen +; vmsrc/apple/soscmd.pla: 0122: next + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B023 + !BYTE $A4 ; INCBRLE _B022 + !WORD _B022-* +_B021 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/soscmd.pla: 0123: firstblk = 0 +; vmsrc/apple/soscmd.pla: 0124: loop + !BYTE $00 ; CN 0 + !BYTE $74,$03 ; SLB [3] +_B018 + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$0B ; LLW [11] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X000+12 +_F019 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B016 + !WORD _B016-* +_B017 +; vmsrc/apple/soscmd.pla: 0125: cmdsys:sysclose(refnum) +; vmsrc/apple/soscmd.pla: 0126: putln() +; vmsrc/apple/soscmd.pla: 0127: end + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X000+10 +_F020 !WORD 0+10 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X003 +_F021 !WORD 0 + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmd.pla: 0128: def stripchars(strptr)#1 + ; strptr -> [0] +_C006 ; stripchars() +; vmsrc/apple/soscmd.pla: 0129: while ^strptr and ^(strptr + 1) > ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B036 + !WORD _B036-* +_B034 +; vmsrc/apple/soscmd.pla: 0130: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmd.pla: 0131: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F022 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmd.pla: 0132: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B036 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B037 + !WORD _B037-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT +_B037 + !BYTE $4E ; BRTRU _B034 + !WORD _B034-* +_B035 +; vmsrc/apple/soscmd.pla: 0133: return ^strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/soscmd.pla: 0134: end +; vmsrc/apple/soscmd.pla: 0135: def stripspaces(strptr)#0 + ; strptr -> [0] +_C007 ; stripspaces() +; vmsrc/apple/soscmd.pla: 0136: while ^strptr and ^(strptr + ^strptr) <= ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B040 + !WORD _B040-* +_B038 +; vmsrc/apple/soscmd.pla: 0137: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmd.pla: 0138: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B040 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B041 + !WORD _B041-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B041 + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* +_B039 +; vmsrc/apple/soscmd.pla: 0139: while ^strptr and ^(strptr + 1) <= ' ' + !BYTE $50 ; BRNCH _B044 + !WORD _B044-* +_B042 +; vmsrc/apple/soscmd.pla: 0140: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmd.pla: 0141: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F023 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmd.pla: 0142: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B044 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B045 + !WORD _B045-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B045 + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* +_B043 +; vmsrc/apple/soscmd.pla: 0143: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/soscmd.pla: 0144: def striptrail(strptr)#1 + ; strptr -> [0] +_C008 ; striptrail() +; vmsrc/apple/soscmd.pla: 0145: byte i + ; i -> [2] +; vmsrc/apple/soscmd.pla: 0146: +; vmsrc/apple/soscmd.pla: 0147: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B046 + !WORD _B046-* +_B047 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/soscmd.pla: 0148: if ^(strptr + i) <= ' ' +; vmsrc/apple/soscmd.pla: 0149: ^strptr = i - 1 +; vmsrc/apple/soscmd.pla: 0150: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B049 + !WORD _B049-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B046 + !WORD _B046-* +; vmsrc/apple/soscmd.pla: 0151: fin +_B049 +_B050 +; vmsrc/apple/soscmd.pla: 0152: next +_B048 + !BYTE $A4 ; INCBRLE _B047 + !WORD _B047-* +_B046 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/soscmd.pla: 0153: return strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/soscmd.pla: 0154: end +; vmsrc/apple/soscmd.pla: 0155: def parsecmd(strptr)#1 + ; strptr -> [0] +_C009 ; parsecmd() +; vmsrc/apple/soscmd.pla: 0156: byte cmd + ; cmd -> [2] +; vmsrc/apple/soscmd.pla: 0157: +; vmsrc/apple/soscmd.pla: 0158: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/soscmd.pla: 0159: stripspaces(strptr) +; vmsrc/apple/soscmd.pla: 0160: if ^strptr +; vmsrc/apple/soscmd.pla: 0161: cmd = ^(strptr + 1) +; vmsrc/apple/soscmd.pla: 0162: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmd.pla: 0163: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C007 +_F024 !WORD _C007 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F025 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmd.pla: 0164: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B051 +_B052 +; vmsrc/apple/soscmd.pla: 0165: stripspaces(strptr) +; vmsrc/apple/soscmd.pla: 0166: return cmd + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C007 +_F026 !WORD _C007 + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/soscmd.pla: 0167: end +; vmsrc/apple/soscmd.pla: 0168: // +; vmsrc/apple/soscmd.pla: 0169: // Command line handler +; vmsrc/apple/soscmd.pla: 0170: // +; vmsrc/apple/soscmd.pla: 0171: def shell#1 +_C010 ; shell() +; vmsrc/apple/soscmd.pla: 0172: byte textmode[3] + ; textmode -> [0] +; vmsrc/apple/soscmd.pla: 0173: byte prefix[64] + ; prefix -> [3] +; vmsrc/apple/soscmd.pla: 0174: byte err[] + ; err -> [67] +; vmsrc/apple/soscmd.pla: 0175: word cmdptr + ; cmdptr -> [67] +; vmsrc/apple/soscmd.pla: 0176: +; vmsrc/apple/soscmd.pla: 0177: // +; vmsrc/apple/soscmd.pla: 0178: // Copy AUTORUN commmand line +; vmsrc/apple/soscmd.pla: 0179: // +; vmsrc/apple/soscmd.pla: 0180: cmdptr = strcpy(heapmark, cmdsys:cmdline) + !BYTE $58,$45,$00 ; ENTER 69,0 +; vmsrc/apple/soscmd.pla: 0181: // +; vmsrc/apple/soscmd.pla: 0182: // Handle commands. +; vmsrc/apple/soscmd.pla: 0183: // +; vmsrc/apple/soscmd.pla: 0184: getpfx(@prefix)) +; vmsrc/apple/soscmd.pla: 0185: repeat + !BYTE $54 ; CALL _X012 +_F027 !WORD 0 + !BYTE $6A ; LAW _X000+4 +_F028 !WORD 0+4 + !BYTE $54 ; CALL _X019 +_F029 !WORD 0 + !BYTE $76,$43 ; SLW [67] + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C000 +_F030 !WORD _C000 + !BYTE $30 ; DROP +_B054 +; vmsrc/apple/soscmd.pla: 0186: if ^cmdptr +; vmsrc/apple/soscmd.pla: 0187: when toupper(parsecmd(cmdptr)) + !BYTE $66,$43 ; LLW [67] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C009 +_F031 !WORD _C009 + !BYTE $54 ; CALL _X021 +_F032 !WORD 0 + !BYTE $52 ; SEL + !WORD _B059-* +; vmsrc/apple/soscmd.pla: 0188: is 'C' +_B060 +; vmsrc/apple/soscmd.pla: 0189: catalog(cmdptr) +; vmsrc/apple/soscmd.pla: 0190: break + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C005 +_F033 !WORD _C005 + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0191: is 'P' +_B061 +; vmsrc/apple/soscmd.pla: 0192: if ^cmdptr and ^(cmdptr + 1) <> '/' +; vmsrc/apple/soscmd.pla: 0193: strcat(@prefix, cmdptr) +; vmsrc/apple/soscmd.pla: 0194: else + !BYTE $66,$43 ; LLW [67] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B062 + !WORD _B062-* + !BYTE $66,$43 ; LLW [67] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $42 ; ISNE +_B062 + !BYTE $4C ; BRFLS _B063 + !WORD _B063-* + !BYTE $28,$03 ; LLA [3] + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X020 +_F034 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B064 + !WORD _B064-* +_B063 +; vmsrc/apple/soscmd.pla: 0195: strcpy(@prefix, cmdptr) +; vmsrc/apple/soscmd.pla: 0196: fin + !BYTE $28,$03 ; LLA [3] + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X019 +_F035 !WORD 0 + !BYTE $30 ; DROP +_B064 +; vmsrc/apple/soscmd.pla: 0197: setpfx(@prefix) +; vmsrc/apple/soscmd.pla: 0198: break + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C001 +_F036 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0199: is '/' +_B065 +; vmsrc/apple/soscmd.pla: 0200: repeat +_B067 +; vmsrc/apple/soscmd.pla: 0201: prefix-- + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR +; vmsrc/apple/soscmd.pla: 0202: until prefix[prefix] == '/' + !BYTE $74,$03 ; SLB [3] +_B068 + !BYTE $28,$03 ; LLA [3] + !BYTE $B0,$03 ; ADDLB [3] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B067 + !WORD _B067-* +_B066 +; vmsrc/apple/soscmd.pla: 0203: if prefix > 1 +; vmsrc/apple/soscmd.pla: 0204: setpfx(@prefix) +; vmsrc/apple/soscmd.pla: 0205: fin + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B069 + !WORD _B069-* + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C001 +_F037 !WORD _C001 + !BYTE $30 ; DROP +_B069 +_B070 +; vmsrc/apple/soscmd.pla: 0206: break + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0207: is 'S' +_B071 +; vmsrc/apple/soscmd.pla: 0208: setpfx(cmdptr) +; vmsrc/apple/soscmd.pla: 0209: strcat(getpfx(cmdsys:syspath), "SYS/")) + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C001 +_F038 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X000+2 +_F039 !WORD 0+2 + !BYTE $54 ; CALL _C000 +_F040 !WORD _C000 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$59,$53,$2F + !BYTE $54 ; CALL _X020 +_F041 !WORD 0 + !BYTE $30 ; DROP +; vmsrc/apple/soscmd.pla: 0210: break + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0211: is 'V' +_B072 +; vmsrc/apple/soscmd.pla: 0212: volumes +; vmsrc/apple/soscmd.pla: 0213: break + !BYTE $54 ; CALL _C004 +_F042 !WORD _C004 + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0214: is '+' +_B073 +; vmsrc/apple/soscmd.pla: 0215: return striptrail(cmdptr) + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C008 +_F043 !WORD _C008 + !BYTE $5A,$45 ; LEAVE 69 +; vmsrc/apple/soscmd.pla: 0216: break + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +; vmsrc/apple/soscmd.pla: 0217: otherwise +_B059 + !BYTE $06 ; CASEBLOCK + !WORD $002B + !WORD _B073-* + !WORD $002F + !WORD _B065-* + !WORD $0043 + !WORD _B060-* + !WORD $0050 + !WORD _B061-* + !WORD $0053 + !WORD _B071-* + !WORD $0056 + !WORD _B072-* +; vmsrc/apple/soscmd.pla: 0218: puts("?\n") + !BYTE $2E ; CS + !BYTE $02 + !BYTE $3F,$0D + !BYTE $54 ; CALL _X004 +_F044 !WORD 0 +; vmsrc/apple/soscmd.pla: 0219: wend +_B058 +; vmsrc/apple/soscmd.pla: 0220: if cmdsys.syserr +; vmsrc/apple/soscmd.pla: 0221: err = cmdsys.syserr +; vmsrc/apple/soscmd.pla: 0222: puts("ERR:$") + !BYTE $68 ; LAB _X000+16 +_F045 !WORD 0+16 + !BYTE $4C ; BRFLS _B074 + !WORD _B074-* + !BYTE $68 ; LAB _X000+16 +_F046 !WORD 0+16 + !BYTE $74,$43 ; SLB [67] + !BYTE $2E ; CS + !BYTE $05 + !BYTE $45,$52,$52,$3A,$24 + !BYTE $54 ; CALL _X004 +_F047 !WORD 0 +; vmsrc/apple/soscmd.pla: 0223: putb(err) +; vmsrc/apple/soscmd.pla: 0224: else + !BYTE $64,$43 ; LLB [67] + !BYTE $54 ; CALL _X008 +_F048 !WORD 0 + !BYTE $50 ; BRNCH _B075 + !WORD _B075-* +_B074 +; vmsrc/apple/soscmd.pla: 0225: puts("OK") + !BYTE $2E ; CS + !BYTE $02 + !BYTE $4F,$4B + !BYTE $54 ; CALL _X004 +_F049 !WORD 0 +; vmsrc/apple/soscmd.pla: 0226: fin +_B075 +; vmsrc/apple/soscmd.pla: 0227: putln +; vmsrc/apple/soscmd.pla: 0228: fin + !BYTE $54 ; CALL _X003 +_F050 !WORD 0 +_B056 +_B057 +; vmsrc/apple/soscmd.pla: 0229: puts(getpfx(@prefix)) +; vmsrc/apple/soscmd.pla: 0230: cmdptr = gets($BA) +; vmsrc/apple/soscmd.pla: 0231: strcpy(cmdsys:cmdline, cmdptr) +; vmsrc/apple/soscmd.pla: 0232: until 0 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C000 +_F051 !WORD _C000 + !BYTE $54 ; CALL _X004 +_F052 !WORD 0 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _X007 +_F053 !WORD 0 + !BYTE $76,$43 ; SLW [67] + !BYTE $6A ; LAW _X000+4 +_F054 !WORD 0+4 + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X019 +_F055 !WORD 0 + !BYTE $30 ; DROP +_B055 + !BYTE $50 ; BRNCH _B054 + !WORD _B054-* +_B053 +; vmsrc/apple/soscmd.pla: 0233: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$45 ; LEAVE 69 +; vmsrc/apple/soscmd.pla: 0234: end +; vmsrc/apple/soscmd.pla: 0235: // +; vmsrc/apple/soscmd.pla: 0236: // Save pointer to command line handler +; vmsrc/apple/soscmd.pla: 0237: // +; vmsrc/apple/soscmd.pla: 0238: *cmdparser = @shell +_INIT +; vmsrc/apple/soscmd.pla: 0239: done + !BYTE $26 ; LA _C010+0 +_F056 !WORD _C010+0 + !BYTE $7A,$F0,$A0 ; SAW 41200 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 +_DEFCNT = 12 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE $00 + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/vmsrc/apple/soscmdjit.a b/src/vmsrc/apple/soscmdjit.a new file mode 100644 index 0000000..5e9b9e0 --- /dev/null +++ b/src/vmsrc/apple/soscmdjit.a @@ -0,0 +1,8288 @@ +; ACME COMPATIBLE OUTPUT + !WORD _SEGEND-_SEGBEGIN ; LENGTH OF HEADER + CODE/DATA + BYTECODE SEGMENT +_SEGBEGIN + !WORD $6502 ; MAGIC # + !WORD _SYSFLAGS ; SYSTEM FLAGS + !WORD _SUBSEG ; BYTECODE SUB-SEGMENT + !WORD _DEFCNT ; BYTECODE DEF COUNT + !WORD _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/soscmdjit.pla: 0001: include "inc/cmdsys.plh" +; inc/cmdsys.plh: 0001: import cmdsys + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + ; CMDSYS -> X000 +; inc/cmdsys.plh: 0002: // +; inc/cmdsys.plh: 0003: // Useful values for everyone +; inc/cmdsys.plh: 0004: // +; inc/cmdsys.plh: 0005: const _SYSVER_ = $0200 // Version built against + ; _SYSVER_ = 512 +; inc/cmdsys.plh: 0006: const FALSE = 0 + ; FALSE = 0 +; inc/cmdsys.plh: 0007: const TRUE = not FALSE + ; TRUE = -1 +; inc/cmdsys.plh: 0008: const NULL = 0 + ; NULL = 0 +; inc/cmdsys.plh: 0009: // +; inc/cmdsys.plh: 0010: // Machine ID values +; inc/cmdsys.plh: 0011: // +; inc/cmdsys.plh: 0012: const MACHID_CLOCK = $01 + ; MACHID_CLOCK = 1 +; inc/cmdsys.plh: 0013: const MACHID_80COL = $02 + ; MACHID_80COL = 2 +; inc/cmdsys.plh: 0014: const MACHID_MEM = $03 + ; MACHID_MEM = 3 +; inc/cmdsys.plh: 0015: const MACHID_64K = $20 + ; MACHID_64K = 32 +; inc/cmdsys.plh: 0016: const MACHID_128K = $30 + ; MACHID_128K = 48 +; inc/cmdsys.plh: 0017: const MACHID_MODEL = $C8 + ; MACHID_MODEL = 200 +; inc/cmdsys.plh: 0018: const MACHID_II = $00 + ; MACHID_II = 0 +; inc/cmdsys.plh: 0019: const MACHID_IIPLUS= $40 + ; MACHID_IIPLUS = 64 +; inc/cmdsys.plh: 0020: const MACHID_IIE = $80 + ; MACHID_IIE = 128 +; inc/cmdsys.plh: 0021: const MACHID_III = $C0 + ; MACHID_III = 192 +; inc/cmdsys.plh: 0022: const MACHID_IIC = $88 + ; MACHID_IIC = 136 +; inc/cmdsys.plh: 0023: const MACHID_I = $08 + ; MACHID_I = 8 +; inc/cmdsys.plh: 0024: byte MACHID + ; MACHID -> X001 +; inc/cmdsys.plh: 0025: // +; inc/cmdsys.plh: 0026: // System flags: memory allocator screen holes. +; inc/cmdsys.plh: 0027: // +; inc/cmdsys.plh: 0028: const restxt1 = $0001 + ; restxt1 = 1 +; inc/cmdsys.plh: 0029: const restxt2 = $0002 + ; restxt2 = 2 +; inc/cmdsys.plh: 0030: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; inc/cmdsys.plh: 0031: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; inc/cmdsys.plh: 0032: const reshgr1 = $0010 + ; reshgr1 = 16 +; inc/cmdsys.plh: 0033: const reshgr2 = $0020 + ; reshgr2 = 32 +; inc/cmdsys.plh: 0034: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; inc/cmdsys.plh: 0035: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; inc/cmdsys.plh: 0036: const nojitc = $0100 + ; nojitc = 256 +; inc/cmdsys.plh: 0037: // +; inc/cmdsys.plh: 0038: // Module don't free memory +; inc/cmdsys.plh: 0039: // +; inc/cmdsys.plh: 0040: const modkeep = $2000 + ; modkeep = 8192 +; inc/cmdsys.plh: 0041: const modinitkeep = $4000 + ; modinitkeep = 16384 +; inc/cmdsys.plh: 0042: // +; inc/cmdsys.plh: 0043: // CMD exported interface table +; inc/cmdsys.plh: 0044: // +; inc/cmdsys.plh: 0045: struc t_cmdsys +; inc/cmdsys.plh: 0046: word sysver + ; sysver = 0 +; inc/cmdsys.plh: 0047: word syspath + ; syspath = 2 +; inc/cmdsys.plh: 0048: word cmdline + ; cmdline = 4 +; inc/cmdsys.plh: 0049: word modexec + ; modexec = 6 +; inc/cmdsys.plh: 0050: word sysopen + ; sysopen = 8 +; inc/cmdsys.plh: 0051: word sysclose + ; sysclose = 10 +; inc/cmdsys.plh: 0052: word sysread + ; sysread = 12 +; inc/cmdsys.plh: 0053: word syswrite + ; syswrite = 14 +; inc/cmdsys.plh: 0054: byte syserr + ; syserr = 16 +; inc/cmdsys.plh: 0055: byte jitcount + ; jitcount = 17 +; inc/cmdsys.plh: 0056: byte jitsize + ; jitsize = 18 +; inc/cmdsys.plh: 0057: byte refcons // Apple /// specific + ; refcons = 19 +; inc/cmdsys.plh: 0058: byte devcons // Apple /// specific + ; devcons = 20 +; inc/cmdsys.plh: 0059: end + ; t_cmdsys = 21 +; inc/cmdsys.plh: 0060: // +; inc/cmdsys.plh: 0061: // CMD exported functions +; inc/cmdsys.plh: 0062: // +; inc/cmdsys.plh: 0063: predef putc(c)#0, putln()#0, puts(s)#0, puti(i)#0, getc()#1, gets(p)#1, putb(b)#0, puth(h)#0 + ; PUTC -> X002 + ; PUTLN -> X003 + ; PUTS -> X004 + ; PUTI -> X005 + ; GETC -> X006 + ; GETS -> X007 + ; PUTB -> X008 + ; PUTH -> X009 +; inc/cmdsys.plh: 0064: predef call(addr,areg,xreg,yreg,status)#1, syscall(cmd,params)#1 + ; CALL -> X010 + ; SYSCALL -> X011 +; inc/cmdsys.plh: 0065: predef heapmark()#1, heapallocalign(size, pow2, freeaddr)#1 + ; HEAPMARK -> X012 + ; HEAPALLOCALIGN -> X013 +; inc/cmdsys.plh: 0066: predef heapalloc(size)#1, heaprelease(newheap)#1, heapavail()#1 + ; HEAPALLOC -> X014 + ; HEAPRELEASE -> X015 + ; HEAPAVAIL -> X016 +; inc/cmdsys.plh: 0067: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0, strcpy(dst,src)#1, strcat(dst,src)#1 + ; MEMSET -> X017 + ; MEMCPY -> X018 + ; STRCPY -> X019 + ; STRCAT -> X020 +; inc/cmdsys.plh: 0068: predef toupper(c)#1, sext(a)#1, divmod(a,b)#2, isugt(a,b)#1, isuge(a,b)#1, isult(a,b)#1, isule(a,b)#1 + ; TOUPPER -> X021 + ; SEXT -> X022 + ; DIVMOD -> X023 + ; ISUGT -> X024 + ; ISUGE -> X025 + ; ISULT -> X026 + ; ISULE -> X027 +; inc/cmdsys.plh: 0069: end +; vmsrc/apple/soscmdjit.pla: 0001: +; vmsrc/apple/soscmdjit.pla: 0002: sysflags nojitc // Keep JITC from compiling itself + !BYTE $00 ; END OF MODULE DEPENDENCIES +_SYSFLAGS = $0100 ; SYSTEM FLAGS +; vmsrc/apple/soscmdjit.pla: 0003: // +; vmsrc/apple/soscmdjit.pla: 0004: // JIT compiler values +; vmsrc/apple/soscmdjit.pla: 0005: // +; vmsrc/apple/soscmdjit.pla: 0006: // +; vmsrc/apple/soscmdjit.pla: 0007: // Indirect interpreter DEFinition entrypoint +; vmsrc/apple/soscmdjit.pla: 0008: // +; vmsrc/apple/soscmdjit.pla: 0009: struc t_defentry +; vmsrc/apple/soscmdjit.pla: 0010: byte interpjsr + ; interpjsr = 0 +; vmsrc/apple/soscmdjit.pla: 0011: word interpaddr + ; interpaddr = 1 +; vmsrc/apple/soscmdjit.pla: 0012: word bytecodeaddr + ; bytecodeaddr = 3 +; vmsrc/apple/soscmdjit.pla: 0013: byte bytecodexbyte + ; bytecodexbyte = 5 +; vmsrc/apple/soscmdjit.pla: 0014: byte callcount + ; callcount = 6 +; vmsrc/apple/soscmdjit.pla: 0015: byte bytecodesize + ; bytecodesize = 7 +; vmsrc/apple/soscmdjit.pla: 0016: end + ; t_defentry = 8 +; vmsrc/apple/soscmdjit.pla: 0017: // +; vmsrc/apple/soscmdjit.pla: 0018: // Private addresses +; vmsrc/apple/soscmdjit.pla: 0019: // +; vmsrc/apple/soscmdjit.pla: 0020: const jitcbuf = $9000 + ; jitcbuf = 36864 +; vmsrc/apple/soscmdjit.pla: 0021: const codemax = $A000 + ; codemax = 40960 +; vmsrc/apple/soscmdjit.pla: 0022: const cmdparser = $A0F0 + ; cmdparser = 41200 +; vmsrc/apple/soscmdjit.pla: 0023: const jitcomp = $A0F2 + ; jitcomp = 41202 +; vmsrc/apple/soscmdjit.pla: 0024: const jitcodeptr = $A0F4 + ; jitcodeptr = 41204 +; vmsrc/apple/soscmdjit.pla: 0025: const sinterp = $A0F6 + ; sinterp = 41206 +; vmsrc/apple/soscmdjit.pla: 0026: const xinterp = $A0F8 + ; xinterp = 41208 +; vmsrc/apple/soscmdjit.pla: 0027: const jitinterp = $A0FA + ; jitinterp = 41210 +; vmsrc/apple/soscmdjit.pla: 0028: const estkh8 = $C000 + ; estkh8 = 49152 +; vmsrc/apple/soscmdjit.pla: 0029: const estkh = $00C0 + ; estkh = 192 +; vmsrc/apple/soscmdjit.pla: 0030: const estkl8 = $D000 + ; estkl8 = 53248 +; vmsrc/apple/soscmdjit.pla: 0031: const estkl = $00D0 + ; estkl = 208 +; vmsrc/apple/soscmdjit.pla: 0032: const ifpl8 = $E000 + ; ifpl8 = 57344 +; vmsrc/apple/soscmdjit.pla: 0033: const ifph8 = $E100 + ; ifph8 = 57600 +; vmsrc/apple/soscmdjit.pla: 0034: const jmptmp = $00E6 + ; jmptmp = 230 +; vmsrc/apple/soscmdjit.pla: 0035: const tmpl8 = $E700 + ; tmpl8 = 59136 +; vmsrc/apple/soscmdjit.pla: 0036: const tmph8 = $E800 + ; tmph8 = 59392 +; vmsrc/apple/soscmdjit.pla: 0037: word directentry, indirectentry +_D028 !FILL 2 ; directentry, indirectentry +_D029 !FILL 2 ; indirectentry +; vmsrc/apple/soscmdjit.pla: 0038: // +; vmsrc/apple/soscmdjit.pla: 0039: // COPY FROM EXT MEM TO MAIN MEM. +; vmsrc/apple/soscmdjit.pla: 0040: // +; vmsrc/apple/soscmdjit.pla: 0041: asm defcpy(dst, defentry)#0 +_A000 ; defcpy() +; vmsrc/apple/soscmdjit.pla: 0042: !SOURCE "vmsrc/plvmzp.inc" + !SOURCE "vmsrc/plvmzp.inc" +; vmsrc/apple/soscmdjit.pla: 0043: XPAGE = $1600 +XPAGE = $1600 +; vmsrc/apple/soscmdjit.pla: 0044: SRCX = XPAGE+SRCH +SRCX = XPAGE+SRCH +; vmsrc/apple/soscmdjit.pla: 0045: DSTX = XPAGE+DSTH +DSTX = XPAGE+DSTH +; vmsrc/apple/soscmdjit.pla: 0046: +; vmsrc/apple/soscmdjit.pla: 0047: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/soscmdjit.pla: 0048: STA DSTL + STA DSTL +; vmsrc/apple/soscmdjit.pla: 0049: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/soscmdjit.pla: 0050: STA DSTH + STA DSTH +; vmsrc/apple/soscmdjit.pla: 0051: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/soscmdjit.pla: 0052: STA TMPL + STA TMPL +; vmsrc/apple/soscmdjit.pla: 0053: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/soscmdjit.pla: 0054: STA TMPH + STA TMPH +; vmsrc/apple/soscmdjit.pla: 0055: LDY #$05 + LDY #$05 +; vmsrc/apple/soscmdjit.pla: 0056: LDA (TMP),Y + LDA (TMP),Y +; vmsrc/apple/soscmdjit.pla: 0057: STA SRCX + STA SRCX +; vmsrc/apple/soscmdjit.pla: 0058: DEY + DEY +; vmsrc/apple/soscmdjit.pla: 0059: LDA (TMP),Y + LDA (TMP),Y +; vmsrc/apple/soscmdjit.pla: 0060: STA SRCH + STA SRCH +; vmsrc/apple/soscmdjit.pla: 0061: DEY + DEY +; vmsrc/apple/soscmdjit.pla: 0062: LDA (TMP),Y + LDA (TMP),Y +; vmsrc/apple/soscmdjit.pla: 0063: STA SRCL + STA SRCL +; vmsrc/apple/soscmdjit.pla: 0064: LDY #$07 + LDY #$07 +; vmsrc/apple/soscmdjit.pla: 0065: LDA (TMP),Y + LDA (TMP),Y +; vmsrc/apple/soscmdjit.pla: 0066: TAY + TAY +; vmsrc/apple/soscmdjit.pla: 0067: DEY + DEY +; vmsrc/apple/soscmdjit.pla: 0068: BEQ + + BEQ + +; vmsrc/apple/soscmdjit.pla: 0069: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/soscmdjit.pla: 0070: STA (DST),Y + STA (DST),Y +; vmsrc/apple/soscmdjit.pla: 0071: DEY + DEY +; vmsrc/apple/soscmdjit.pla: 0072: BNE - + BNE - +; vmsrc/apple/soscmdjit.pla: 0073: + LDA (SRC),Y ++ LDA (SRC),Y +; vmsrc/apple/soscmdjit.pla: 0074: STA (DST),Y + STA (DST),Y +; vmsrc/apple/soscmdjit.pla: 0075: STY SRCX + STY SRCX +; vmsrc/apple/soscmdjit.pla: 0076: INX + INX +; vmsrc/apple/soscmdjit.pla: 0077: INX + INX +; vmsrc/apple/soscmdjit.pla: 0078: RTS + RTS +; vmsrc/apple/soscmdjit.pla: 0079: end +; vmsrc/apple/soscmdjit.pla: 0080: include "libsrc/jitcore.pla" +; libsrc/jitcore.pla: 0001: // +; libsrc/jitcore.pla: 0002: // TOS caching values +; libsrc/jitcore.pla: 0003: // +; libsrc/jitcore.pla: 0004: const TOS_DIRTY = 1 + ; TOS_DIRTY = 1 +; libsrc/jitcore.pla: 0005: const TOS_CLEAN = 2 + ; TOS_CLEAN = 2 +; libsrc/jitcore.pla: 0006: // +; libsrc/jitcore.pla: 0007: // Y unknown value +; libsrc/jitcore.pla: 0008: // +; libsrc/jitcore.pla: 0009: const UNKNOWN = -1 + ; UNKNOWN = -1 +; libsrc/jitcore.pla: 0010: // +; libsrc/jitcore.pla: 0011: // Resolve virtual X with real X +; libsrc/jitcore.pla: 0012: // +; libsrc/jitcore.pla: 0013: def resolveX(codeptr, VX)#2 +_SUBSEG ; BYTECODE STARTS + ; codeptr -> [0] + ; VX -> [2] +_C000 ; resolveX() +; libsrc/jitcore.pla: 0014: while VX > 0 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B003 + !WORD _B003-* +_B001 +; libsrc/jitcore.pla: 0015: ^codeptr = $E8; codeptr++ // INX + !BYTE $2A,$E8 ; CB 232 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0016: VX-- + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0017: loop + !BYTE $76,$02 ; SLW [2] +_B003 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4E ; BRTRU _B001 + !WORD _B001-* +_B002 +; libsrc/jitcore.pla: 0018: while VX < 0 + !BYTE $50 ; BRNCH _B006 + !WORD _B006-* +_B004 +; libsrc/jitcore.pla: 0019: ^codeptr = $CA; codeptr++ // DEX + !BYTE $2A,$CA ; CB 202 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0020: VX++ + !BYTE $76,$00 ; SLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0021: loop + !BYTE $76,$02 ; SLW [2] +_B006 + !BYTE $66,$02 ; LLW [2] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B004 + !WORD _B004-* +_B005 +; libsrc/jitcore.pla: 0022: return codeptr, 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; libsrc/jitcore.pla: 0023: end +; libsrc/jitcore.pla: 0024: // +; libsrc/jitcore.pla: 0025: // JIT compiler entry +; libsrc/jitcore.pla: 0026: // +; libsrc/jitcore.pla: 0027: def compiler(defptr)#0 + ; defptr -> [0] +_C001 ; compiler() +; libsrc/jitcore.pla: 0028: word codeptr, isdata[], addrxlate, bytecode, i, case, dest, VX, VY + ; codeptr -> [2] + ; isdata -> [4] + ; addrxlate -> [4] + ; bytecode -> [6] + ; i -> [8] + ; case -> [10] + ; dest -> [12] + ; VX -> [14] + ; VY -> [16] +; libsrc/jitcore.pla: 0029: byte opcode, j, A_IS_TOSL + ; opcode -> [18] + ; j -> [19] + ; A_IS_TOSL -> [20] +; libsrc/jitcore.pla: 0030: +; libsrc/jitcore.pla: 0031: defptr=>interpaddr = indirectentry // assume compile will fail + !BYTE $58,$15,$01 ; ENTER 21,1 +; libsrc/jitcore.pla: 0032: addrxlate = heapmark // heapalloc(512 + defptr->bytecodesize) +; libsrc/jitcore.pla: 0033: if isult(heapavail, 512 + defptr->bytecodesize) // 256 * sizeof(word) address xlate +; libsrc/jitcore.pla: 0034: // +; libsrc/jitcore.pla: 0035: // Not enough heap available +; libsrc/jitcore.pla: 0036: // +; libsrc/jitcore.pla: 0037: //puts("Not enough free heap\n") +; libsrc/jitcore.pla: 0038: return + !BYTE $6A ; LAW _D029+0 +_F000 !WORD _D029+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $54 ; CALL _X012 +_F001 !WORD 0 + !BYTE $76,$04 ; SLW [4] + !BYTE $54 ; CALL _X016 +_F002 !WORD 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $54 ; CALL _X026 +_F003 !WORD 0 + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $5A,$15 ; LEAVE 21 +; libsrc/jitcore.pla: 0039: fin +_B007 +_B008 +; libsrc/jitcore.pla: 0040: // +; libsrc/jitcore.pla: 0041: // Copy bytecode def from AUX to heap for compiling +; libsrc/jitcore.pla: 0042: // +; libsrc/jitcore.pla: 0043: bytecode = addrxlate + 512 // def bytecode +; libsrc/jitcore.pla: 0044: defcpy(bytecode, defptr) +; libsrc/jitcore.pla: 0045: //puts("JITC:$"); puth(defptr=>bytecodeaddr); puts("=>$"); puth(bytecode) +; libsrc/jitcore.pla: 0046: //puts(",$"); puth(defptr->bytecodesize); putln +; libsrc/jitcore.pla: 0047: // +; libsrc/jitcore.pla: 0048: // Find all branch targets and optimization fences. Tag the opcode with the LSB set +; libsrc/jitcore.pla: 0049: // +; libsrc/jitcore.pla: 0050: // All PLASMA ops are even (LSB clear), so this will flag when to fence optimizations +; libsrc/jitcore.pla: 0051: // During compiling. +; libsrc/jitcore.pla: 0052: // +; libsrc/jitcore.pla: 0053: //isdata = addrxlate // Use this buffer +; libsrc/jitcore.pla: 0054: memset(isdata, 0, 256) // Clear isdata buffer +; libsrc/jitcore.pla: 0055: i = 0 +; libsrc/jitcore.pla: 0056: while i < defptr->bytecodesize + !BYTE $66,$04 ; LLW [4] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $82 ; ADD + !BYTE $6E,$06 ; DLW [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _A000 +_F004 !WORD _A000 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$01 ; CW 256 + !BYTE $54 ; CALL _X017 +_F005 !WORD 0 + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B011 + !WORD _B011-* +_B009 +; libsrc/jitcore.pla: 0057: if not ^(isdata+i) +; libsrc/jitcore.pla: 0058: //puth(bytecode+i); putc(':'); putb(^(bytecode+i) & $FE); putln; getc +; libsrc/jitcore.pla: 0059: when ^(bytecode+i) & $FE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B012 + !WORD _B012-* + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $3C,$FE ; ANDI 254 + !BYTE $52 ; SEL + !WORD _B015-* +; libsrc/jitcore.pla: 0060: // +; libsrc/jitcore.pla: 0061: // Double byte operands +; libsrc/jitcore.pla: 0062: // +; libsrc/jitcore.pla: 0063: is $26 // LA +_B016 +; libsrc/jitcore.pla: 0064: is $2C // CW +_B017 +; libsrc/jitcore.pla: 0065: is $54 // CALL +_B018 +; libsrc/jitcore.pla: 0066: is $58 // ENTER +_B019 +; libsrc/jitcore.pla: 0067: is $68 // LAB +_B020 +; libsrc/jitcore.pla: 0068: is $6A // LAW +_B021 +; libsrc/jitcore.pla: 0069: is $78 // SAB +_B022 +; libsrc/jitcore.pla: 0070: is $7A // SAW +_B023 +; libsrc/jitcore.pla: 0071: is $7C // DAB +_B024 +; libsrc/jitcore.pla: 0072: is $7E // DAW +_B025 +; libsrc/jitcore.pla: 0073: is $B4 // ADDAB +_B026 +; libsrc/jitcore.pla: 0074: is $B6 // ADDAW +_B027 +; libsrc/jitcore.pla: 0075: is $BC // IDXAB +_B028 +; libsrc/jitcore.pla: 0076: is $BE // IDXAW +_B029 +; libsrc/jitcore.pla: 0077: i = i + 2 +; libsrc/jitcore.pla: 0078: break + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0079: // +; libsrc/jitcore.pla: 0080: // Multi-byte operands +; libsrc/jitcore.pla: 0081: // +; libsrc/jitcore.pla: 0082: is $2E // CS +_B030 +; libsrc/jitcore.pla: 0083: i = i + ^(bytecode+i+1) +; libsrc/jitcore.pla: 0084: // +; libsrc/jitcore.pla: 0085: // Single byte operands +; libsrc/jitcore.pla: 0086: // +; libsrc/jitcore.pla: 0087: is $2A // CB + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $76,$08 ; SLW [8] +_B031 +; libsrc/jitcore.pla: 0088: is $28 // LLA +_B032 +; libsrc/jitcore.pla: 0089: is $38 // ADDI +_B033 +; libsrc/jitcore.pla: 0090: is $3A // SUBI +_B034 +; libsrc/jitcore.pla: 0091: is $3C // ANDI +_B035 +; libsrc/jitcore.pla: 0092: is $3E // ORI +_B036 +; libsrc/jitcore.pla: 0093: is $5A // LEAVE +_B037 +; libsrc/jitcore.pla: 0094: is $5E // CFFB +_B038 +; libsrc/jitcore.pla: 0095: is $64 // LLB +_B039 +; libsrc/jitcore.pla: 0096: is $66 // LLW +_B040 +; libsrc/jitcore.pla: 0097: is $6C // DLB +_B041 +; libsrc/jitcore.pla: 0098: is $6E // DLW +_B042 +; libsrc/jitcore.pla: 0099: is $74 // SLB +_B043 +; libsrc/jitcore.pla: 0100: is $76 // SLW +_B044 +; libsrc/jitcore.pla: 0101: is $B0 // ADDLB +_B045 +; libsrc/jitcore.pla: 0102: is $B2 // ADDLW +_B046 +; libsrc/jitcore.pla: 0103: is $B8 // IDXLB +_B047 +; libsrc/jitcore.pla: 0104: is $BA // IDXLW +_B048 +; libsrc/jitcore.pla: 0105: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0106: break + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0107: // +; libsrc/jitcore.pla: 0108: // Branches +; libsrc/jitcore.pla: 0109: // +; libsrc/jitcore.pla: 0110: is $50 // BRNCH +_B049 +; libsrc/jitcore.pla: 0111: is $22 // BREQ +_B050 +; libsrc/jitcore.pla: 0112: is $24 // BRNE +_B051 +; libsrc/jitcore.pla: 0113: is $4C // BRFLS +_B052 +; libsrc/jitcore.pla: 0114: is $4E // BRTRU +_B053 +; libsrc/jitcore.pla: 0115: is $A0 // BRGT +_B054 +; libsrc/jitcore.pla: 0116: is $A2 // BRLT +_B055 +; libsrc/jitcore.pla: 0117: is $A4 // INCBRLE +_B056 +; libsrc/jitcore.pla: 0118: is $A6 // ADDBRLE +_B057 +; libsrc/jitcore.pla: 0119: is $A8 // DECBRGE +_B058 +; libsrc/jitcore.pla: 0120: is $AA // SUBBRGE +_B059 +; libsrc/jitcore.pla: 0121: is $AC // BRAND +_B060 +; libsrc/jitcore.pla: 0122: is $AE // BROR +_B061 +; libsrc/jitcore.pla: 0123: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0124: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0125: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0126: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jitcore.pla: 0127: break + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0128: // +; libsrc/jitcore.pla: 0129: // SELect/caseblock +; libsrc/jitcore.pla: 0130: // +; libsrc/jitcore.pla: 0131: is $52 // SEL +_B062 +; libsrc/jitcore.pla: 0132: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0133: case = i + *(bytecode+i) +; libsrc/jitcore.pla: 0134: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0135: ^(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0136: j = ^(bytecode+case) +; libsrc/jitcore.pla: 0137: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0138: repeat + !BYTE $76,$0A ; SLW [10] +_B064 +; libsrc/jitcore.pla: 0139: *(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0140: case = case + 2 +; libsrc/jitcore.pla: 0141: dest = case + *(bytecode+case) +; libsrc/jitcore.pla: 0142: ^(bytecode+dest) = ^(bytecode+dest) | 1 // Flag as branch dest +; libsrc/jitcore.pla: 0143: *(isdata+case) = TRUE // Flag as data +; libsrc/jitcore.pla: 0144: case = case + 2 +; libsrc/jitcore.pla: 0145: j-- + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $60 ; LB + !BYTE $3E,$01 ; ORI 1 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $70 ; SB + !BYTE $20 ; MINUS ONE + !BYTE $66,$04 ; LLW [4] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$13 ; LLB [19] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0146: until not j + !BYTE $74,$13 ; SLB [19] +_B065 + !BYTE $64,$13 ; LLB [19] + !BYTE $4E ; BRTRU _B064 + !WORD _B064-* +_B063 +; libsrc/jitcore.pla: 0147: break + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +; libsrc/jitcore.pla: 0148: wend + !BYTE $50 ; BRNCH _B014 + !WORD _B014-* +_B015 + !BYTE $2F ; CASEBLOCK + !WORD $0022 + !WORD _B050-* + !WORD $0024 + !WORD _B051-* + !WORD $0026 + !WORD _B016-* + !WORD $0028 + !WORD _B032-* + !WORD $002A + !WORD _B031-* + !WORD $002C + !WORD _B017-* + !WORD $002E + !WORD _B030-* + !WORD $0038 + !WORD _B033-* + !WORD $003A + !WORD _B034-* + !WORD $003C + !WORD _B035-* + !WORD $003E + !WORD _B036-* + !WORD $004C + !WORD _B052-* + !WORD $004E + !WORD _B053-* + !WORD $0050 + !WORD _B049-* + !WORD $0052 + !WORD _B062-* + !WORD $0054 + !WORD _B018-* + !WORD $0058 + !WORD _B019-* + !WORD $005A + !WORD _B037-* + !WORD $005E + !WORD _B038-* + !WORD $0064 + !WORD _B039-* + !WORD $0066 + !WORD _B040-* + !WORD $0068 + !WORD _B020-* + !WORD $006A + !WORD _B021-* + !WORD $006C + !WORD _B041-* + !WORD $006E + !WORD _B042-* + !WORD $0074 + !WORD _B043-* + !WORD $0076 + !WORD _B044-* + !WORD $0078 + !WORD _B022-* + !WORD $007A + !WORD _B023-* + !WORD $007C + !WORD _B024-* + !WORD $007E + !WORD _B025-* + !WORD $00A0 + !WORD _B054-* + !WORD $00A2 + !WORD _B055-* + !WORD $00A4 + !WORD _B056-* + !WORD $00A6 + !WORD _B057-* + !WORD $00A8 + !WORD _B058-* + !WORD $00AA + !WORD _B059-* + !WORD $00AC + !WORD _B060-* + !WORD $00AE + !WORD _B061-* + !WORD $00B0 + !WORD _B045-* + !WORD $00B2 + !WORD _B046-* + !WORD $00B4 + !WORD _B026-* + !WORD $00B6 + !WORD _B027-* + !WORD $00B8 + !WORD _B047-* + !WORD $00BA + !WORD _B048-* + !WORD $00BC + !WORD _B028-* + !WORD $00BE + !WORD _B029-* +_B014 +; libsrc/jitcore.pla: 0149: fin +_B012 +_B013 +; libsrc/jitcore.pla: 0150: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0151: loop + !BYTE $76,$08 ; SLW [8] +_B011 + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $46 ; ISLT + !BYTE $4E ; BRTRU _B009 + !WORD _B009-* +_B010 +; libsrc/jitcore.pla: 0152: // +; libsrc/jitcore.pla: 0153: // Compile the bytecodes +; libsrc/jitcore.pla: 0154: // +; libsrc/jitcore.pla: 0155: memset(addrxlate, 0, 512) // Clear xlate buffer +; libsrc/jitcore.pla: 0156: //puts("Bytecode: $"); puth(bytecode); putln; getc +; libsrc/jitcore.pla: 0157: codeptr = *jitcodeptr +; libsrc/jitcore.pla: 0158: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0159: VY = UNKNOWN // Virtual Y register +; libsrc/jitcore.pla: 0160: VX = 0 // Virtual X register +; libsrc/jitcore.pla: 0161: i = 0 +; libsrc/jitcore.pla: 0162: if ^bytecode == $58 +; libsrc/jitcore.pla: 0163: //putc('$'); puth(codeptr);//puts(":[0] ENTER "); puti(^(bytecode+1)); putc(',');puti(^(bytecode+2)); putln +; libsrc/jitcore.pla: 0164: // +; libsrc/jitcore.pla: 0165: // Call into VM +; libsrc/jitcore.pla: 0166: // +; libsrc/jitcore.pla: 0167: codeptr->0 = $20 // JSR INTERP +; libsrc/jitcore.pla: 0168: codeptr=>1 = directentry +; libsrc/jitcore.pla: 0169: codeptr->3 = $58 // ENTER CODE +; libsrc/jitcore.pla: 0170: codeptr=>4 = *(bytecode+1) // ENTER FRAME SIZE & ARG COUNT +; libsrc/jitcore.pla: 0171: codeptr->6 = $C0 // NATV CODE +; libsrc/jitcore.pla: 0172: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0173: i = 3 +; libsrc/jitcore.pla: 0174: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $54 ; CALL _X017 +_F006 !WORD 0 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $60 ; LB + !BYTE $2A,$58 ; CB 88 + !BYTE $24 ; BRNE _B066 + !WORD _B066-* + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D028+0 +_F007 !WORD _D028+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$58 ; CB 88 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $06 ; CN 3 + !BYTE $76,$08 ; SLW [8] +_B066 +_B067 +; libsrc/jitcore.pla: 0175: while isule(codeptr, codemax) + !BYTE $50 ; BRNCH _B070 + !WORD _B070-* +_B068 +; libsrc/jitcore.pla: 0176: //putc('$'); puth(codeptr); putc(':') +; libsrc/jitcore.pla: 0177: //putc('['); puti(i); //puts("] ") +; libsrc/jitcore.pla: 0178: opcode = ^(bytecode+i) +; libsrc/jitcore.pla: 0179: if opcode & 1 +; libsrc/jitcore.pla: 0180: // +; libsrc/jitcore.pla: 0181: // Optimization fence. Sync A and X registers +; libsrc/jitcore.pla: 0182: // +; libsrc/jitcore.pla: 0183: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0184: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0185: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0186: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0187: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $6C,$12 ; DLB [18] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F008 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B073 +_B074 +; libsrc/jitcore.pla: 0188: VY = UNKNOWN +; libsrc/jitcore.pla: 0189: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0190: opcode = opcode & $FE +; libsrc/jitcore.pla: 0191: fin + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $64,$12 ; LLB [18] + !BYTE $3C,$FE ; ANDI 254 + !BYTE $74,$12 ; SLB [18] +_B071 +_B072 +; libsrc/jitcore.pla: 0192: // +; libsrc/jitcore.pla: 0193: // Update bytecode->native code address translation. +; libsrc/jitcore.pla: 0194: // +; libsrc/jitcore.pla: 0195: // Here's how it works: +; libsrc/jitcore.pla: 0196: // +; libsrc/jitcore.pla: 0197: // The code buffer is above address $8000 so MSBit set. +; libsrc/jitcore.pla: 0198: // When we compile a bytecode, update the destination address in +; libsrc/jitcore.pla: 0199: // the address xlate buffer with actual address (MSBit set). But, if a branch +; libsrc/jitcore.pla: 0200: // opcode jumps to a bytecode address that hasn't been compiled yet, add the +; libsrc/jitcore.pla: 0201: // address offset in the code buffer to the list of addresses needing resolution. +; libsrc/jitcore.pla: 0202: // The offset will be less than $8000, so MSBit clear. This is how we know if +; libsrc/jitcore.pla: 0203: // an address has been resolved or is a list of addresses needing resolution. +; libsrc/jitcore.pla: 0204: // Before updating the address xlate buffer with the known address as we +; libsrc/jitcore.pla: 0205: // compile, look for existing resolution list and traverse it if there. +; libsrc/jitcore.pla: 0206: // +; libsrc/jitcore.pla: 0207: if addrxlate=>[i] +; libsrc/jitcore.pla: 0208: // +; libsrc/jitcore.pla: 0209: // Address list awaiting resolution +; libsrc/jitcore.pla: 0210: // +; libsrc/jitcore.pla: 0211: dest = addrxlate=>[i] + *jitcodeptr +; libsrc/jitcore.pla: 0212: repeat + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $62 ; LW + !BYTE $B6,$F4,$A0 ; ADDAW 41204 + !BYTE $76,$0C ; SLW [12] +_B078 +; libsrc/jitcore.pla: 0213: case = *dest +; libsrc/jitcore.pla: 0214: *dest = codeptr +; libsrc/jitcore.pla: 0215: dest = case + *jitcodeptr +; libsrc/jitcore.pla: 0216: until not case + !BYTE $66,$0C ; LLW [12] + !BYTE $62 ; LW + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0C ; LLW [12] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $B6,$F4,$A0 ; ADDAW 41204 + !BYTE $76,$0C ; SLW [12] +_B079 + !BYTE $66,$0A ; LLW [10] + !BYTE $4E ; BRTRU _B078 + !WORD _B078-* +_B077 +; libsrc/jitcore.pla: 0217: fin +_B075 +_B076 +; libsrc/jitcore.pla: 0218: // +; libsrc/jitcore.pla: 0219: // Update address translate buffer with bytecode->native address +; libsrc/jitcore.pla: 0220: // +; libsrc/jitcore.pla: 0221: addrxlate=>[i] = codeptr +; libsrc/jitcore.pla: 0222: // +; libsrc/jitcore.pla: 0223: // Compile this bad boy... +; libsrc/jitcore.pla: 0224: // +; libsrc/jitcore.pla: 0225: if opcode < $20 // CONSTANT NYBBLE +; libsrc/jitcore.pla: 0226: //puts("CN $"); putb(opcode/2) +; libsrc/jitcore.pla: 0227: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0228: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0229: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0230: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$08 ; IDXLW [8] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$20 ; CB 32 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B080 + !WORD _B080-* + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B082 + !WORD _B082-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B082 +_B083 +; libsrc/jitcore.pla: 0231: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0232: if VY <> 0 +; libsrc/jitcore.pla: 0233: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0234: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0235: VY = 0 +; libsrc/jitcore.pla: 0236: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B084 + !WORD _B084-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B084 +_B085 +; libsrc/jitcore.pla: 0237: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0238: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0239: if opcode == 0 +; libsrc/jitcore.pla: 0240: ^codeptr = $98; codeptr++ // TYA -> LDA #$00 + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$12 ; LLB [18] + !BYTE $4E ; BRTRU _B086 + !WORD _B086-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0241: else + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B087 + !WORD _B087-* +_B086 +; libsrc/jitcore.pla: 0242: *codeptr = $A9+(opcode/2<<8) // LDA #(CN/2) +; libsrc/jitcore.pla: 0243: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0244: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $64,$12 ; LLB [18] + !BYTE $02 ; CN 1 + !BYTE $9C ; SHR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B087 +; libsrc/jitcore.pla: 0245: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0246: else + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B081 + !WORD _B081-* +_B080 +; libsrc/jitcore.pla: 0247: when opcode + !BYTE $64,$12 ; LLB [18] + !BYTE $52 ; SEL + !WORD _B089-* +; libsrc/jitcore.pla: 0248: is $20 // MINUS ONE +_B090 +; libsrc/jitcore.pla: 0249: //puts("MINUS_ONE") +; libsrc/jitcore.pla: 0250: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0251: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0252: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0253: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B091 +_B092 +; libsrc/jitcore.pla: 0254: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0255: codeptr=>0 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 0256: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0257: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0258: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0259: break + !BYTE $76,$0E ; SLW [14] + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0260: is $22 // BREQ +_B093 +; libsrc/jitcore.pla: 0261: is $24 // BRNE +_B094 +; libsrc/jitcore.pla: 0262: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0263: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0264: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0265: codeptr, VX = resolveX(codeptr, VX + 2) // INX; INX +; libsrc/jitcore.pla: 0266: if not A_IS_TOSL +; libsrc/jitcore.pla: 0267: *codeptr = estkl8+$B5-$0200//+(VX<<8) // LDA ESTKL-2,X +; libsrc/jitcore.pla: 0268: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0269: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $54 ; CALL _C000 +_F009 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B095 + !WORD _B095-* + !BYTE $2C,$B5,$CE ; CW 52917 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B095 +_B096 +; libsrc/jitcore.pla: 0270: if opcode == $22 +; libsrc/jitcore.pla: 0271: //puts("BREQ "); puti(dest) +; libsrc/jitcore.pla: 0272: codeptr=>2 = $09D0 // BNE +9 +; libsrc/jitcore.pla: 0273: codeptr=>8 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0274: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$22 ; CB 34 + !BYTE $24 ; BRNE _B097 + !WORD _B097-* + !BYTE $2C,$D0,$09 ; CW 2512 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B098 + !WORD _B098-* +_B097 +; libsrc/jitcore.pla: 0275: //puts("BRNE "); puti(dest) +; libsrc/jitcore.pla: 0276: codeptr=>2 = $06D0 // BNE +6 +; libsrc/jitcore.pla: 0277: codeptr=>8 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 0278: fin + !BYTE $2C,$D0,$06 ; CW 1744 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B098 +; libsrc/jitcore.pla: 0279: codeptr=>0 = estkl8+$D5-$0100//+(VX<<8) // CMP ESTKL-1,X +; libsrc/jitcore.pla: 0280: codeptr=>4 = estkh8+$B5-$0200//+(VX<<8) // LDA ESTKH-2,X +; libsrc/jitcore.pla: 0281: codeptr=>6 = estkh8+$D5-$0100//+(VX<<8) // CMP ESTKH-1,X +; libsrc/jitcore.pla: 0282: codeptr->10 = $4C // JMP abs +; libsrc/jitcore.pla: 0283: codeptr=>11 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0284: if not (codeptr->12 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0285: addrxlate=>[dest] = codeptr + 11 - *jitcodeptr +; libsrc/jitcore.pla: 0286: fin + !BYTE $2C,$D5,$CF ; CW 53205 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$BE ; CW 48821 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D5,$BF ; CW 49109 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B099 + !WORD _B099-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B099 +_B100 +; libsrc/jitcore.pla: 0287: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 0288: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0289: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0290: is $26 // LA +_B101 +; libsrc/jitcore.pla: 0291: is $2C // CW +_B102 +; libsrc/jitcore.pla: 0292: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0293: i = i + 2 +; libsrc/jitcore.pla: 0294: //puts("LA/CW $"); puth(dest) +; libsrc/jitcore.pla: 0295: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0296: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0297: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0298: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B103 + !WORD _B103-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B103 +_B104 +; libsrc/jitcore.pla: 0299: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0300: codeptr=>0 = $A9+(dest&$FF00) // LDA #2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0302: codeptr=>4 = $A9+(dest<<8) // LDA #>VAL +; libsrc/jitcore.pla: 0303: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0304: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0305: break + !BYTE $76,$0E ; SLW [14] + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$0C ; LLW [12] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$0C ; LLW [12] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0306: is $28 // LLA +_B105 +; libsrc/jitcore.pla: 0307: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0308: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0309: //puts("LLA "); puti(^(bytecode+i)) +; libsrc/jitcore.pla: 0310: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0311: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0312: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0313: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B106 + !WORD _B106-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B106 +_B107 +; libsrc/jitcore.pla: 0314: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0315: if VY == j +; libsrc/jitcore.pla: 0316: ^codeptr = $98; codeptr++ // TYA -> LDA #imm + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $24 ; BRNE _B108 + !WORD _B108-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0317: else + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B109 + !WORD _B109-* +_B108 +; libsrc/jitcore.pla: 0318: *codeptr = $A9+(j<<8) // LDA #imm +; libsrc/jitcore.pla: 0319: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0320: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B109 +; libsrc/jitcore.pla: 0321: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 0322: codeptr=>1 = ifpl8+$65 // ADC IFPL +; libsrc/jitcore.pla: 0323: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0324: if VY == 0 +; libsrc/jitcore.pla: 0325: codeptr->5 = $98 // TYA -> LDA #00 +; libsrc/jitcore.pla: 0326: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0327: else + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$65,$E0 ; CW 57445 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$10 ; LLW [16] + !BYTE $4E ; BRTRU _B110 + !WORD _B110-* + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B111 + !WORD _B111-* +_B110 +; libsrc/jitcore.pla: 0328: codeptr=>5 = $00A9 // LDA #$00 +; libsrc/jitcore.pla: 0329: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0330: fin + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] +_B111 +; libsrc/jitcore.pla: 0331: codeptr=>0 = ifph8+$65 // ADC IFPH +; libsrc/jitcore.pla: 0332: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0333: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0334: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0335: break + !BYTE $2C,$65,$E1 ; CW 57701 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0336: is $2A // CB +_B112 +; libsrc/jitcore.pla: 0337: is $5E // CFFB +_B113 +; libsrc/jitcore.pla: 0338: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0339: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0340: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0341: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0342: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B114 + !WORD _B114-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B114 +_B115 +; libsrc/jitcore.pla: 0343: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0344: if opcode == $2A +; libsrc/jitcore.pla: 0345: //puts("CB $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0346: if VY <> 0 +; libsrc/jitcore.pla: 0347: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0348: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0349: VY = 0 +; libsrc/jitcore.pla: 0350: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$2A ; CB 42 + !BYTE $24 ; BRNE _B116 + !WORD _B116-* + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B118 + !WORD _B118-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B118 +_B119 +; libsrc/jitcore.pla: 0351: codeptr=>0 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0352: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0353: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B117 + !WORD _B117-* +_B116 +; libsrc/jitcore.pla: 0354: //puts("CFFB $FF"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0355: codeptr=>0 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 0356: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0357: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0358: fin + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] +_B117 +; libsrc/jitcore.pla: 0359: *codeptr = $A9+(^(bytecode+i)<<8) // LDA #imm +; libsrc/jitcore.pla: 0360: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0361: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0362: break + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0363: is $2E // CS +_B120 +; libsrc/jitcore.pla: 0364: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0365: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0366: dest = codeptr + 10 + j +; libsrc/jitcore.pla: 0367: //puts("CS "); //puts(bytecode+i); //puts("-->"); puti(dest) +; libsrc/jitcore.pla: 0368: if isule(dest, codemax) +; libsrc/jitcore.pla: 0369: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0370: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0371: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0372: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$00,$A0 ; CW 40960 + !BYTE $54 ; CALL _X027 +_F010 !WORD 0 + !BYTE $4C ; BRFLS _B121 + !WORD _B121-* + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B123 + !WORD _B123-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B123 +_B124 +; libsrc/jitcore.pla: 0373: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0374: codeptr=>0 = $A9+((codeptr+9)&$FF00) // LDA #>STRING +; libsrc/jitcore.pla: 0375: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0376: codeptr=>4 = $A9+((codeptr+9)<<8) // LDA #6 = $4C // JMP abs +; libsrc/jitcore.pla: 0378: dest = codeptr + 10 + j +; libsrc/jitcore.pla: 0379: codeptr=>7 = dest +; libsrc/jitcore.pla: 0380: strcpy(codeptr + 9, bytecode + i) +; libsrc/jitcore.pla: 0381: i = i + j +; libsrc/jitcore.pla: 0382: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$A9 ; CB 169 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $6E,$0C ; DLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $54 ; CALL _X019 +_F011 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$08 ; LLW [8] + !BYTE $B0,$13 ; ADDLB [19] + !BYTE $76,$08 ; SLW [8] +_B121 +_B122 +; libsrc/jitcore.pla: 0383: codeptr = dest +; libsrc/jitcore.pla: 0384: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0385: break + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0386: is $32 // DROP2 +_B125 +; libsrc/jitcore.pla: 0387: //puts("DROP2") +; libsrc/jitcore.pla: 0388: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0389: is $30 // DROP + !BYTE $76,$0E ; SLW [14] +_B126 +; libsrc/jitcore.pla: 0390: //puts("DROP") +; libsrc/jitcore.pla: 0391: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0392: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0393: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0394: is $34 // DUP +_B127 +; libsrc/jitcore.pla: 0395: //puts("DUP") +; libsrc/jitcore.pla: 0396: if not A_IS_TOSL +; libsrc/jitcore.pla: 0397: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0398: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0399: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B128 + !WORD _B128-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B129 + !WORD _B129-* +_B128 +; libsrc/jitcore.pla: 0400: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0401: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0402: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B130 + !WORD _B130-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B130 +_B129 +; libsrc/jitcore.pla: 0403: codeptr=>0 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0404: VX-- // DEX + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0405: codeptr=>2 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0406: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0407: VY = UNKNOWN +; libsrc/jitcore.pla: 0408: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0409: break + !BYTE $76,$0E ; SLW [14] + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0410: //is $36 +; libsrc/jitcore.pla: 0411: //puts("DIVMOD") +; libsrc/jitcore.pla: 0412: // +; libsrc/jitcore.pla: 0413: // Should never happen +; libsrc/jitcore.pla: 0414: // +; libsrc/jitcore.pla: 0415: //break +; libsrc/jitcore.pla: 0416: is $38 // ADDI +_B131 +; libsrc/jitcore.pla: 0417: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0418: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0419: //puts("ADDI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0420: is $8C // INCR + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] +_B132 +; libsrc/jitcore.pla: 0421: if opcode == $8C +; libsrc/jitcore.pla: 0422: //puts("INCR") +; libsrc/jitcore.pla: 0423: j = 1 +; libsrc/jitcore.pla: 0424: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$8C ; CB 140 + !BYTE $24 ; BRNE _B133 + !WORD _B133-* + !BYTE $02 ; CN 1 + !BYTE $74,$13 ; SLB [19] +_B133 +_B134 +; libsrc/jitcore.pla: 0425: if not A_IS_TOSL +; libsrc/jitcore.pla: 0426: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0427: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0428: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B135 + !WORD _B135-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B135 +_B136 +; libsrc/jitcore.pla: 0429: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 0430: codeptr=>1 = $69+(j<<8) // ADC #imm +; libsrc/jitcore.pla: 0431: codeptr=>3 = $0290 // BCC +2 +; libsrc/jitcore.pla: 0432: codeptr=>5 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0433: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0434: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0435: break + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$69 ; CB 105 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0436: is $3A // SUBI +_B137 +; libsrc/jitcore.pla: 0437: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0438: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0439: //puts("SUBI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0440: is $8E // DECR + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] +_B138 +; libsrc/jitcore.pla: 0441: if opcode == $8E +; libsrc/jitcore.pla: 0442: //puts("DECR") +; libsrc/jitcore.pla: 0443: j = 1 +; libsrc/jitcore.pla: 0444: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$8E ; CB 142 + !BYTE $24 ; BRNE _B139 + !WORD _B139-* + !BYTE $02 ; CN 1 + !BYTE $74,$13 ; SLB [19] +_B139 +_B140 +; libsrc/jitcore.pla: 0445: if not A_IS_TOSL +; libsrc/jitcore.pla: 0446: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0447: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0448: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B141 + !WORD _B141-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B141 +_B142 +; libsrc/jitcore.pla: 0449: codeptr->0 = $38 // SEC +; libsrc/jitcore.pla: 0450: codeptr=>1 = $E9+(j<<8) // SBC #imm +; libsrc/jitcore.pla: 0451: codeptr=>3 = $02B0 // BCS +2 +; libsrc/jitcore.pla: 0452: codeptr=>5 = estkh8+$D6+(VX<<8) // DEC ESTKH,X +; libsrc/jitcore.pla: 0453: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0454: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0455: break + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$E9 ; CB 233 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$B0,$02 ; CW 688 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$D6,$C0 ; CW 49366 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0456: is $3C // ANDI +_B143 +; libsrc/jitcore.pla: 0457: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0458: //puts("ANDI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0459: if VY <> 0 +; libsrc/jitcore.pla: 0460: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0461: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0462: VY = 0 +; libsrc/jitcore.pla: 0463: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B144 + !WORD _B144-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B144 +_B145 +; libsrc/jitcore.pla: 0464: if not A_IS_TOSL +; libsrc/jitcore.pla: 0465: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0466: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0467: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B146 + !WORD _B146-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B146 +_B147 +; libsrc/jitcore.pla: 0468: codeptr=>0 = $29+(^(bytecode+i)<<8) // AND #imm +; libsrc/jitcore.pla: 0469: codeptr=>2 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0470: codeptr = codeptr + 4 +; libsrc/jitcore.pla: 0471: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0472: break + !BYTE $2A,$29 ; CB 41 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0473: is $3E // ORI +_B148 +; libsrc/jitcore.pla: 0474: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0475: //puts("ORI $"); putb(^(bytecode+i)) +; libsrc/jitcore.pla: 0476: if not A_IS_TOSL +; libsrc/jitcore.pla: 0477: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0478: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0479: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B149 + !WORD _B149-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B149 +_B150 +; libsrc/jitcore.pla: 0480: *codeptr = $09+(^(bytecode+i)<<8) // ORA #imm +; libsrc/jitcore.pla: 0481: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0482: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0483: break + !BYTE $12 ; CN 9 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0484: is $40 // ISEQ +_B151 +; libsrc/jitcore.pla: 0485: is $42 // ISNE +_B152 +; libsrc/jitcore.pla: 0486: if VY <> 0 +; libsrc/jitcore.pla: 0487: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0488: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0489: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B153 + !WORD _B153-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B153 +_B154 +; libsrc/jitcore.pla: 0490: if not A_IS_TOSL +; libsrc/jitcore.pla: 0491: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0492: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0493: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B155 + !WORD _B155-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B155 +_B156 +; libsrc/jitcore.pla: 0494: if opcode == $40 +; libsrc/jitcore.pla: 0495: //puts("ISEQ") +; libsrc/jitcore.pla: 0496: codeptr=>2 = $07D0 // BNE +7 +; libsrc/jitcore.pla: 0497: codeptr=>8 = $01D0 // BNE +1 +; libsrc/jitcore.pla: 0498: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$40 ; CB 64 + !BYTE $24 ; BRNE _B157 + !WORD _B157-* + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$D0,$01 ; CW 464 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B158 + !WORD _B158-* +_B157 +; libsrc/jitcore.pla: 0499: //puts("ISNE") +; libsrc/jitcore.pla: 0500: codeptr=>2 = $06D0 // BNE +6 +; libsrc/jitcore.pla: 0501: codeptr=>8 = $01F0 // BEQ +1 +; libsrc/jitcore.pla: 0502: fin + !BYTE $2C,$D0,$06 ; CW 1744 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F0,$01 ; CW 496 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW +_B158 +; libsrc/jitcore.pla: 0503: codeptr=>0 = estkl8+$D5+$0100+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 0504: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0505: codeptr=>6 = estkh8+$D5+$0100+(VX<<8) // CMP ESTKH+1 +; libsrc/jitcore.pla: 0506: codeptr=>10 = $9888 // DEY; TYA +; libsrc/jitcore.pla: 0507: codeptr=>12 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0508: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 0509: VX++ // INX + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D5,$C1 ; CW 49621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0510: VY = UNKNOWN +; libsrc/jitcore.pla: 0511: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0512: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0513: is $44 // ISGT +_B159 +; libsrc/jitcore.pla: 0514: is $4A // ISLE +_B160 +; libsrc/jitcore.pla: 0515: if VY <> 0 +; libsrc/jitcore.pla: 0516: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0517: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0518: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B161 + !WORD _B161-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B161 +_B162 +; libsrc/jitcore.pla: 0519: if not A_IS_TOSL +; libsrc/jitcore.pla: 0520: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0521: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0522: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B163 + !WORD _B163-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B163 +_B164 +; libsrc/jitcore.pla: 0523: codeptr=>0 = estkl8+$D5+$0100+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 0524: codeptr=>2 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0525: codeptr=>4 = estkh8+$F5+$0100+(VX<<8) // SBC ESTKH+1 +; libsrc/jitcore.pla: 0526: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 0527: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 0528: if opcode == $44 +; libsrc/jitcore.pla: 0529: //puts("ISGT") +; libsrc/jitcore.pla: 0530: codeptr=>10 = $0110 // BPL +1 +; libsrc/jitcore.pla: 0531: else + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$44 ; CB 68 + !BYTE $24 ; BRNE _B165 + !WORD _B165-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B166 + !WORD _B166-* +_B165 +; libsrc/jitcore.pla: 0532: //puts("ISLE") +; libsrc/jitcore.pla: 0533: codeptr=>10 = $0130 // BMI +1 +; libsrc/jitcore.pla: 0534: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW +_B166 +; libsrc/jitcore.pla: 0535: codeptr=>12 = $9888 // DEY TYA +; libsrc/jitcore.pla: 0536: codeptr=>14 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0537: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0538: VX++ // INX + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0539: VY = UNKNOWN +; libsrc/jitcore.pla: 0540: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0541: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0542: is $46 // ISLT +_B167 +; libsrc/jitcore.pla: 0543: is $48 // ISGE +_B168 +; libsrc/jitcore.pla: 0544: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0545: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0546: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0547: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B169 + !WORD _B169-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B169 +_B170 +; libsrc/jitcore.pla: 0548: if VY <> 0 +; libsrc/jitcore.pla: 0549: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0550: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0551: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B171 + !WORD _B171-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B171 +_B172 +; libsrc/jitcore.pla: 0552: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 0553: codeptr=>2 = estkl8+$D5+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 0554: codeptr=>4 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 0555: codeptr=>6 = estkh8+$F5+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 0556: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 0557: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 0558: if opcode == $46 +; libsrc/jitcore.pla: 0559: //puts("ISLT") +; libsrc/jitcore.pla: 0560: codeptr=>12 = $0110 // BPL +1 +; libsrc/jitcore.pla: 0561: else + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$46 ; CB 70 + !BYTE $24 ; BRNE _B173 + !WORD _B173-* + !BYTE $2C,$10,$01 ; CW 272 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B174 + !WORD _B174-* +_B173 +; libsrc/jitcore.pla: 0562: //puts("ISGE") +; libsrc/jitcore.pla: 0563: codeptr=>12 = $0130 // BMI +1 +; libsrc/jitcore.pla: 0564: fin + !BYTE $2C,$30,$01 ; CW 304 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW +_B174 +; libsrc/jitcore.pla: 0565: codeptr=>14 = $9888 // DEY; TYA +; libsrc/jitcore.pla: 0566: codeptr=>16 = estkh8+$94+$0100+(VX<<8) // STY ESTKH+1,X +; libsrc/jitcore.pla: 0567: codeptr = codeptr + 18 +; libsrc/jitcore.pla: 0568: VX++ // INX + !BYTE $2C,$88,$98 ; CW 39048 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $2C,$94,$C1 ; CW 49556 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0569: VY = UNKNOWN +; libsrc/jitcore.pla: 0570: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0571: break + !BYTE $76,$0E ; SLW [14] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0572: is $4C // BRFLS +_B175 +; libsrc/jitcore.pla: 0573: is $4E // BRTRU +_B176 +; libsrc/jitcore.pla: 0574: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0575: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0576: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0577: codeptr, VX = resolveX(codeptr, VX + 1) // INX +; libsrc/jitcore.pla: 0578: if not A_IS_TOSL +; libsrc/jitcore.pla: 0579: *codeptr = estkl8+$B5-$0100//+(VX<<8) // LDA ESTKL-1,X +; libsrc/jitcore.pla: 0580: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0581: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F012 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B177 + !WORD _B177-* + !BYTE $2C,$B5,$CF ; CW 53173 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B177 +_B178 +; libsrc/jitcore.pla: 0582: codeptr=>0 = estkh8+$15-$0100//+(VX<<8) // ORA ESTKH-1,X +; libsrc/jitcore.pla: 0583: if opcode == $4C +; libsrc/jitcore.pla: 0584: //puts("BRFLS "); puti(dest) +; libsrc/jitcore.pla: 0585: codeptr=>2 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0586: else + !BYTE $2C,$15,$BF ; CW 48917 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$4C ; CB 76 + !BYTE $24 ; BRNE _B179 + !WORD _B179-* + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B180 + !WORD _B180-* +_B179 +; libsrc/jitcore.pla: 0587: //puts("BRTRU "); puti(dest) +; libsrc/jitcore.pla: 0588: codeptr=>2 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 0589: fin + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B180 +; libsrc/jitcore.pla: 0590: codeptr->4 = $4C // JMP abs +; libsrc/jitcore.pla: 0591: codeptr=>5 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0592: if not (codeptr->6 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0593: addrxlate=>[dest] = codeptr + 5 - *jitcodeptr +; libsrc/jitcore.pla: 0594: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B181 + !WORD _B181-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B181 +_B182 +; libsrc/jitcore.pla: 0595: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0596: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0597: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0598: is $50 // BRNCH +_B183 +; libsrc/jitcore.pla: 0599: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0600: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 0601: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0602: //puts("BRNCH "); puti(dest) +; libsrc/jitcore.pla: 0603: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0604: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0605: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0606: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0607: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F013 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B184 + !WORD _B184-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B184 +_B185 +; libsrc/jitcore.pla: 0608: codeptr->0 = $4C // JMP abs +; libsrc/jitcore.pla: 0609: codeptr=>1 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0610: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0611: addrxlate=>[dest] = codeptr + 1 - *jitcodeptr +; libsrc/jitcore.pla: 0612: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B186 + !WORD _B186-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B186 +_B187 +; libsrc/jitcore.pla: 0613: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0614: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0615: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0616: is $52 // SEL +_B188 +; libsrc/jitcore.pla: 0617: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0618: case = i + *(bytecode+i) +; libsrc/jitcore.pla: 0619: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0620: //puts("SEL "); puti(case); putln +; libsrc/jitcore.pla: 0621: j = ^(bytecode+case) +; libsrc/jitcore.pla: 0622: dest = codeptr + 9 + case * 11) +; libsrc/jitcore.pla: 0623: if isule(dest, codemax) +; libsrc/jitcore.pla: 0624: ^(bytecode+case) = $FE // Flag as NOP +; libsrc/jitcore.pla: 0625: case++ + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0A ; LLW [10] + !BYTE $16 ; CN 11 + !BYTE $86 ; MUL + !BYTE $82 ; ADD + !BYTE $6E,$0C ; DLW [12] + !BYTE $2C,$00,$A0 ; CW 40960 + !BYTE $54 ; CALL _X027 +_F014 !WORD 0 + !BYTE $4C ; BRFLS _B189 + !WORD _B189-* + !BYTE $2A,$FE ; CB 254 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0626: if not A_IS_TOSL +; libsrc/jitcore.pla: 0627: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0628: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0629: fin + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B191 + !WORD _B191-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B191 +_B192 +; libsrc/jitcore.pla: 0630: codeptr=>0 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0631: codeptr, VX = resolveX(codeptr + 2, VX + 1) // INX +; libsrc/jitcore.pla: 0632: repeat + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F015 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] +_B194 +; libsrc/jitcore.pla: 0633: dest = *(bytecode+case) +; libsrc/jitcore.pla: 0634: //puts(" $"); puth(dest) +; libsrc/jitcore.pla: 0635: codeptr=>0 = $C9+(dest<<8) // CMP #imm +; libsrc/jitcore.pla: 0636: codeptr=>2 = $07D0 // BNE +7 +; libsrc/jitcore.pla: 0637: codeptr=>4 = $C0+(dest&$FF00) // CPY #imm +; libsrc/jitcore.pla: 0638: codeptr=>6 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 0639: *(bytecode+case) = $FEFE +; libsrc/jitcore.pla: 0640: case = case + 2 +; libsrc/jitcore.pla: 0641: dest = case + *(bytecode+case) +; libsrc/jitcore.pla: 0642: //puts("-->"); puti(dest); putln +; libsrc/jitcore.pla: 0643: codeptr->8 = $4C // JMP abs +; libsrc/jitcore.pla: 0644: codeptr=>9 = addrxlate=>[dest] +; libsrc/jitcore.pla: 0645: if not (codeptr->10 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0646: addrxlate=>[dest] = codeptr + 9 - *jitcodeptr +; libsrc/jitcore.pla: 0647: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$C9 ; CB 201 + !BYTE $66,$0C ; LLW [12] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D0,$07 ; CW 2000 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$C0 ; CB 192 + !BYTE $66,$0C ; LLW [12] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $6E,$0A ; DLW [10] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B196 + !WORD _B196-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B196 +_B197 +; libsrc/jitcore.pla: 0648: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 0649: *(bytecode+case) = $FEFE +; libsrc/jitcore.pla: 0650: case = case + 2 +; libsrc/jitcore.pla: 0651: j-- + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $2C,$FE,$FE ; CW 65278 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $72 ; SW + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0A ; SLW [10] + !BYTE $64,$13 ; LLB [19] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0652: until not j + !BYTE $74,$13 ; SLB [19] +_B195 + !BYTE $64,$13 ; LLB [19] + !BYTE $4E ; BRTRU _B194 + !WORD _B194-* +_B193 +; libsrc/jitcore.pla: 0653: codeptr->0 = $4C // JMP abs +; libsrc/jitcore.pla: 0654: codeptr=>1 = addrxlate=>[case] +; libsrc/jitcore.pla: 0655: if not (codeptr->2 & $80) // Unresolved address list +; libsrc/jitcore.pla: 0656: addrxlate=>[case] = codeptr + 1 - *jitcodeptr +; libsrc/jitcore.pla: 0657: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B198 + !WORD _B198-* + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0A ; IDXLW [10] + !BYTE $72 ; SW +_B198 +_B199 +; libsrc/jitcore.pla: 0658: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0659: else + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B190 + !WORD _B190-* +_B189 +; libsrc/jitcore.pla: 0660: codeptr = dest +; libsrc/jitcore.pla: 0661: fin + !BYTE $66,$0C ; LLW [12] + !BYTE $76,$02 ; SLW [2] +_B190 +; libsrc/jitcore.pla: 0662: VY = UNKNOWN +; libsrc/jitcore.pla: 0663: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0664: break + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0665: is $54 // CALL +_B200 +; libsrc/jitcore.pla: 0666: //puts("CALL $"); puth(*(bytecode+i)) +; libsrc/jitcore.pla: 0667: // +; libsrc/jitcore.pla: 0668: // Call address +; libsrc/jitcore.pla: 0669: // +; libsrc/jitcore.pla: 0670: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0671: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0672: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0673: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0674: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F016 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B201 + !WORD _B201-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B201 +_B202 +; libsrc/jitcore.pla: 0675: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0676: codeptr=>1 = *(bytecode+i+1) +; libsrc/jitcore.pla: 0677: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0678: VY = UNKNOWN +; libsrc/jitcore.pla: 0679: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0680: i = i + 2 +; libsrc/jitcore.pla: 0681: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0682: is $56 // ICAL +_B203 +; libsrc/jitcore.pla: 0683: //puts("ICAL") +; libsrc/jitcore.pla: 0684: // +; libsrc/jitcore.pla: 0685: // Pull address off stack +; libsrc/jitcore.pla: 0686: // +; libsrc/jitcore.pla: 0687: if not A_IS_TOSL +; libsrc/jitcore.pla: 0688: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0689: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0690: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B204 + !WORD _B204-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B204 +_B205 +; libsrc/jitcore.pla: 0691: codeptr=>0 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 0692: codeptr=>2 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0693: codeptr=>4 = tmph8+$85 // STA $E8:TMPH +; libsrc/jitcore.pla: 0694: codeptr, VX = resolveX(codeptr + 6, VX + 1) // INX +; libsrc/jitcore.pla: 0695: // +; libsrc/jitcore.pla: 0696: // Call through TMP +; libsrc/jitcore.pla: 0697: // +; libsrc/jitcore.pla: 0698: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0699: codeptr=>1 = jmptmp // $E6:JMPTMP +; libsrc/jitcore.pla: 0700: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0701: VY = UNKNOWN +; libsrc/jitcore.pla: 0702: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0703: break + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$85,$E8 ; CW 59525 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F017 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$E6 ; CB 230 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0704: is $5A // LEAVE +_B206 +; libsrc/jitcore.pla: 0705: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0706: //puts("LEAVE "); puti(^(bytecode+i)) +; libsrc/jitcore.pla: 0707: // +; libsrc/jitcore.pla: 0708: // Call into VM +; libsrc/jitcore.pla: 0709: // +; libsrc/jitcore.pla: 0710: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0711: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0712: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0713: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0714: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F018 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B207 + !WORD _B207-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B207 +_B208 +; libsrc/jitcore.pla: 0715: codeptr->0 = $20 // JSR abs +; libsrc/jitcore.pla: 0716: codeptr=>1 = directentry // INTERP +; libsrc/jitcore.pla: 0717: codeptr=>3 = $5A + (^(bytecode+i)<<8) // LEAVE CODE AND OPERAND +; libsrc/jitcore.pla: 0718: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 0719: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0720: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D028+0 +_F019 !WORD _D028+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$5A ; CB 90 + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0721: is $5C // RET +_B209 +; libsrc/jitcore.pla: 0722: //puts("RET") +; libsrc/jitcore.pla: 0723: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 0724: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0725: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0726: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0727: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F020 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B210 + !WORD _B210-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B210 +_B211 +; libsrc/jitcore.pla: 0728: ^codeptr = $60; codeptr++ // RTS + !BYTE $2A,$60 ; CB 96 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0729: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0730: break + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0731: is $60 // LB +_B212 +; libsrc/jitcore.pla: 0732: //puts("LB") +; libsrc/jitcore.pla: 0733: if VY <> 0 +; libsrc/jitcore.pla: 0734: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0735: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0736: VY = 0 +; libsrc/jitcore.pla: 0737: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B213 + !WORD _B213-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B213 +_B214 +; libsrc/jitcore.pla: 0738: if not A_IS_TOSL +; libsrc/jitcore.pla: 0739: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0740: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0741: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B215 + !WORD _B215-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B215 +_B216 +; libsrc/jitcore.pla: 0742: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0743: codeptr=>2 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0744: codeptr=>4 = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0745: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0746: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0747: break + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0748: is $62 // LW +_B217 +; libsrc/jitcore.pla: 0749: //puts("LW") +; libsrc/jitcore.pla: 0750: if not A_IS_TOSL +; libsrc/jitcore.pla: 0751: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0752: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0753: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B218 + !WORD _B218-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B218 +_B219 +; libsrc/jitcore.pla: 0754: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0755: codeptr=>2 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0756: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0757: codeptr=>6 = estkh8+$F6-$0100+(VX<<8) // INC ESTKH-1,X +; libsrc/jitcore.pla: 0758: codeptr=>8 = $02D0 // BNE +2 +; libsrc/jitcore.pla: 0759: codeptr=>10 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0760: codeptr=>12 = estkh8+$A1-$0100+(VX<<8) // LDA (ESTKH-1,X) +; libsrc/jitcore.pla: 0761: codeptr=>14 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0762: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0763: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0764: break + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F6,$BF ; CW 49142 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$D0,$02 ; CW 720 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$A1,$BF ; CW 49057 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0765: is $64 // LLB +_B220 +; libsrc/jitcore.pla: 0766: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0767: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0768: //puts("LLB "); puti(j) +; libsrc/jitcore.pla: 0769: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0770: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0771: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0772: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B221 + !WORD _B221-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B221 +_B222 +; libsrc/jitcore.pla: 0773: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0774: if VY <> j +; libsrc/jitcore.pla: 0775: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0776: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0777: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B223 + !WORD _B223-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B223 +_B224 +; libsrc/jitcore.pla: 0778: *codeptr = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0779: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0780: if j <> 0 +; libsrc/jitcore.pla: 0781: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0782: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0783: fin + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $4C ; BRFLS _B225 + !WORD _B225-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B225 +_B226 +; libsrc/jitcore.pla: 0784: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0785: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0786: VY = 0 +; libsrc/jitcore.pla: 0787: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0788: break + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0789: is $66 // LLW +_B227 +; libsrc/jitcore.pla: 0790: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0791: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0792: //puts("LLW "); puti(j) +; libsrc/jitcore.pla: 0793: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0794: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0795: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0796: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B228 + !WORD _B228-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B228 +_B229 +; libsrc/jitcore.pla: 0797: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0798: if VY <> j +; libsrc/jitcore.pla: 0799: *codeptr = $A0+((j+1)<<8) // LDY #imm +; libsrc/jitcore.pla: 0800: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0801: VY = j +; libsrc/jitcore.pla: 0802: else + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B230 + !WORD _B230-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $8C ; INCR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B231 + !WORD _B231-* +_B230 +; libsrc/jitcore.pla: 0803: ^codeptr = $C8; codeptr++ // INY + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0804: fin + !BYTE $76,$02 ; SLW [2] +_B231 +; libsrc/jitcore.pla: 0805: codeptr=>0 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0806: codeptr=>2 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0807: codeptr->4 = $88 // DEY +; libsrc/jitcore.pla: 0808: codeptr=>5 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 0809: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0810: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0811: break + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$88 ; CB 136 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0812: is $68 // LAB +_B232 +; libsrc/jitcore.pla: 0813: is $6A // LAW +_B233 +; libsrc/jitcore.pla: 0814: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0815: i = i + 2 +; libsrc/jitcore.pla: 0816: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0817: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0818: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0819: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B234 + !WORD _B234-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B234 +_B235 +; libsrc/jitcore.pla: 0820: VX-- // DEX + !BYTE $66,$0E ; LLW [14] + !BYTE $8E ; DECR +; libsrc/jitcore.pla: 0821: if opcode == $68 +; libsrc/jitcore.pla: 0822: //puts("LAB $"); puth(dest) +; libsrc/jitcore.pla: 0823: if VY <> 0 +; libsrc/jitcore.pla: 0824: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0825: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0826: VY = 0 +; libsrc/jitcore.pla: 0827: fin + !BYTE $76,$0E ; SLW [14] + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$68 ; CB 104 + !BYTE $24 ; BRNE _B236 + !WORD _B236-* + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B238 + !WORD _B238-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B238 +_B239 +; libsrc/jitcore.pla: 0828: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0829: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0830: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B237 + !WORD _B237-* +_B236 +; libsrc/jitcore.pla: 0831: //puts("LAW $"); puth(dest) +; libsrc/jitcore.pla: 0832: codeptr->0 = $AD // LDA abs+1 +; libsrc/jitcore.pla: 0833: codeptr=>1 = dest+1 +; libsrc/jitcore.pla: 0834: codeptr=>3 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 0835: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 0836: fin + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] +_B237 +; libsrc/jitcore.pla: 0837: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 0838: codeptr=>1 = dest +; libsrc/jitcore.pla: 0839: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0840: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 0841: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0842: is $6C // DLB +_B240 +; libsrc/jitcore.pla: 0843: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0844: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0845: //puts("DLB "); puti(j) +; libsrc/jitcore.pla: 0846: if not A_IS_TOSL +; libsrc/jitcore.pla: 0847: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0848: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0849: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0850: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B241 + !WORD _B241-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] +_B241 +_B242 +; libsrc/jitcore.pla: 0851: if VY <> j +; libsrc/jitcore.pla: 0852: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0853: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0854: VY = j +; libsrc/jitcore.pla: 0855: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B243 + !WORD _B243-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B243 +_B244 +; libsrc/jitcore.pla: 0856: *codeptr = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0857: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0858: if VY <> 0 +; libsrc/jitcore.pla: 0859: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0860: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0861: VY = 0 +; libsrc/jitcore.pla: 0862: fin + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B245 + !WORD _B245-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B245 +_B246 +; libsrc/jitcore.pla: 0863: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0864: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0865: break + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0866: is $6E // DLW +_B247 +; libsrc/jitcore.pla: 0867: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0868: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0869: //puts("DLW "); puti(j) +; libsrc/jitcore.pla: 0870: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 0871: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 0872: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0873: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B248 + !WORD _B248-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B248 +_B249 +; libsrc/jitcore.pla: 0874: if VY <> j +; libsrc/jitcore.pla: 0875: *codeptr = $A0+((j+1)<<8) // LDY #imm +; libsrc/jitcore.pla: 0876: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0877: VY = j +; libsrc/jitcore.pla: 0878: else + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B250 + !WORD _B250-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $8C ; INCR + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] + !BYTE $50 ; BRNCH _B251 + !WORD _B251-* +_B250 +; libsrc/jitcore.pla: 0879: ^codeptr = $C8; codeptr++ // INY + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0880: fin + !BYTE $76,$02 ; SLW [2] +_B251 +; libsrc/jitcore.pla: 0881: codeptr=>0 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0882: codeptr=>2 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0883: codeptr->4 = $88 // DEY +; libsrc/jitcore.pla: 0884: codeptr=>5 = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0885: codeptr=>7 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0886: codeptr = codeptr + 9 +; libsrc/jitcore.pla: 0887: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0888: break + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2A,$88 ; CB 136 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0889: is $70 // SB +_B252 +; libsrc/jitcore.pla: 0890: is $72 // SW +_B253 +; libsrc/jitcore.pla: 0891: if not A_IS_TOSL +; libsrc/jitcore.pla: 0892: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0893: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0894: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B254 + !WORD _B254-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B254 +_B255 +; libsrc/jitcore.pla: 0895: codeptr=>0 = estkh8+$95-$0100+(VX<<8) // STA ESTKH-1,X +; libsrc/jitcore.pla: 0896: codeptr=>2 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 0897: codeptr=>4 = estkh8+$81-$0100+(VX<<8) // STA (ESTKH-1,X) +; libsrc/jitcore.pla: 0898: if opcode == $70 +; libsrc/jitcore.pla: 0899: //puts("SB") +; libsrc/jitcore.pla: 0900: codeptr = codeptr + 6 +; libsrc/jitcore.pla: 0901: else + !BYTE $2C,$95,$BF ; CW 49045 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$81,$BF ; CW 49025 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$70 ; CB 112 + !BYTE $24 ; BRNE _B256 + !WORD _B256-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B257 + !WORD _B257-* +_B256 +; libsrc/jitcore.pla: 0902: //puts("SW") +; libsrc/jitcore.pla: 0903: codeptr=>6 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 0904: codeptr=>8 = estkh8+$F6-$0100+(VX<<8) // INC ESTKH-1,X +; libsrc/jitcore.pla: 0905: codeptr=>10 = $02D0 // BNE +2 +; libsrc/jitcore.pla: 0906: codeptr=>12 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 0907: codeptr=>14 = estkh8+$81-$0100+(VX<<8) // STA (ESTKH-1,X) +; libsrc/jitcore.pla: 0908: codeptr = codeptr + 16 +; libsrc/jitcore.pla: 0909: fin + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$F6,$BF ; CW 49142 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$D0,$02 ; CW 720 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2C,$81,$BF ; CW 49025 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $76,$02 ; SLW [2] +_B257 +; libsrc/jitcore.pla: 0910: VX = VX + 2 // INX; INX +; libsrc/jitcore.pla: 0911: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0912: break + !BYTE $66,$0E ; LLW [14] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0913: is $74 // SLB +_B258 +; libsrc/jitcore.pla: 0914: is $76 // SLW +_B259 +; libsrc/jitcore.pla: 0915: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0916: j = ^(bytecode+i) +; libsrc/jitcore.pla: 0917: if not A_IS_TOSL +; libsrc/jitcore.pla: 0918: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0919: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0920: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B260 + !WORD _B260-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B260 +_B261 +; libsrc/jitcore.pla: 0921: if VY <> j +; libsrc/jitcore.pla: 0922: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 0923: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0924: VY = j +; libsrc/jitcore.pla: 0925: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B262 + !WORD _B262-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B262 +_B263 +; libsrc/jitcore.pla: 0926: codeptr=>0 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0927: if opcode == $74 +; libsrc/jitcore.pla: 0928: //puts("SLB "); puti(j) +; libsrc/jitcore.pla: 0929: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0930: else + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$74 ; CB 116 + !BYTE $24 ; BRNE _B264 + !WORD _B264-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B265 + !WORD _B265-* +_B264 +; libsrc/jitcore.pla: 0931: //puts("SLW "); puti(j) +; libsrc/jitcore.pla: 0932: codeptr->2 = $C8 // INY +; libsrc/jitcore.pla: 0933: codeptr=>3 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0934: codeptr=>5 = ifpl8+$91 // STA (IFP),Y +; libsrc/jitcore.pla: 0935: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 0936: VY++ + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$91,$E0 ; CW 57489 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0937: fin + !BYTE $76,$10 ; SLW [16] +_B265 +; libsrc/jitcore.pla: 0938: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0939: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0940: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0941: is $78 // SAB +_B266 +; libsrc/jitcore.pla: 0942: is $7A // SAW +_B267 +; libsrc/jitcore.pla: 0943: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0944: i = i + 2 +; libsrc/jitcore.pla: 0945: if not A_IS_TOSL +; libsrc/jitcore.pla: 0946: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0947: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0948: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B268 + !WORD _B268-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B268 +_B269 +; libsrc/jitcore.pla: 0949: codeptr->0 = $8D // STA abs +; libsrc/jitcore.pla: 0950: codeptr=>1 = dest +; libsrc/jitcore.pla: 0951: if opcode == $78 +; libsrc/jitcore.pla: 0952: //puts("SAB $"); puth(dest) +; libsrc/jitcore.pla: 0953: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0954: else + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$78 ; CB 120 + !BYTE $24 ; BRNE _B270 + !WORD _B270-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B271 + !WORD _B271-* +_B270 +; libsrc/jitcore.pla: 0955: //puts("SAW $"); puth(dest) +; libsrc/jitcore.pla: 0956: codeptr=>3 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 0957: codeptr->5 = $8D // STA abs+1 +; libsrc/jitcore.pla: 0958: codeptr=>6 = dest+1 +; libsrc/jitcore.pla: 0959: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 0960: fin + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] +_B271 +; libsrc/jitcore.pla: 0961: VX++ // INX + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 0962: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 0963: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0964: is $7C // DAB +_B272 +; libsrc/jitcore.pla: 0965: is $7E // DAW +_B273 +; libsrc/jitcore.pla: 0966: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 0967: i = i + 2 +; libsrc/jitcore.pla: 0968: if not A_IS_TOSL +; libsrc/jitcore.pla: 0969: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0970: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0971: A_IS_TOSL = TOS_CLEAN +; libsrc/jitcore.pla: 0972: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B274 + !WORD _B274-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $04 ; CN 2 + !BYTE $74,$14 ; SLB [20] +_B274 +_B275 +; libsrc/jitcore.pla: 0973: codeptr->0 = $8D // STA abs +; libsrc/jitcore.pla: 0974: codeptr=>1 = dest +; libsrc/jitcore.pla: 0975: if opcode == $7C +; libsrc/jitcore.pla: 0976: //puts("DAB $"); puth(dest) +; libsrc/jitcore.pla: 0977: codeptr = codeptr + 3 +; libsrc/jitcore.pla: 0978: if VY <> 0 +; libsrc/jitcore.pla: 0979: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 0980: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0981: VY = 0 +; libsrc/jitcore.pla: 0982: fin + !BYTE $2A,$8D ; CB 141 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$7C ; CB 124 + !BYTE $24 ; BRNE _B276 + !WORD _B276-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B278 + !WORD _B278-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B278 +_B279 +; libsrc/jitcore.pla: 0983: *codeptr = estkh8+$94+(VX<<8) // STY ESTKH,X +; libsrc/jitcore.pla: 0984: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0985: else + !BYTE $2C,$94,$C0 ; CW 49300 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B277 + !WORD _B277-* +_B276 +; libsrc/jitcore.pla: 0986: //puts("DAW $"); puth(dest) +; libsrc/jitcore.pla: 0987: codeptr=>3 = estkh8+$B4+(VX<<8) // LDY ESTKH,X +; libsrc/jitcore.pla: 0988: codeptr->5 = $8C // STY abs+1 +; libsrc/jitcore.pla: 0989: codeptr=>6 = dest+1 +; libsrc/jitcore.pla: 0990: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 0991: VY = UNKNOWN +; libsrc/jitcore.pla: 0992: fin + !BYTE $2C,$B4,$C0 ; CW 49332 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$8C ; CB 140 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] +_B277 +; libsrc/jitcore.pla: 0993: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 0994: is $80 // NOT +_B280 +; libsrc/jitcore.pla: 0995: //puts("NOT") +; libsrc/jitcore.pla: 0996: if not A_IS_TOSL +; libsrc/jitcore.pla: 0997: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 0998: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 0999: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B281 + !WORD _B281-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B281 +_B282 +; libsrc/jitcore.pla: 1000: codeptr=>0 = estkh8+$15+(VX<<8) // ORA ESTKH,X +; libsrc/jitcore.pla: 1001: codeptr=>2 = $02F0 // BEQ +2 +; libsrc/jitcore.pla: 1002: codeptr=>4 = $FFA9 // LDA #$FF +; libsrc/jitcore.pla: 1003: codeptr=>6 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1004: codeptr=>8 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1005: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1006: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1007: break + !BYTE $2C,$15,$C0 ; CW 49173 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$F0,$02 ; CW 752 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $5E,$A9 ; CFFB 65449 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1008: is $82 // ADD +_B283 +; libsrc/jitcore.pla: 1009: //puts("ADD") +; libsrc/jitcore.pla: 1010: if not A_IS_TOSL +; libsrc/jitcore.pla: 1011: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1012: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1013: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B284 + !WORD _B284-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B284 +_B285 +; libsrc/jitcore.pla: 1014: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1015: codeptr=>1 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1016: codeptr=>3 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1017: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1018: codeptr=>7 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1019: codeptr=>9 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1020: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 1021: VX++ // INX + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1022: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1023: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1024: is $84 // SUB +_B286 +; libsrc/jitcore.pla: 1025: //puts("SUB") +; libsrc/jitcore.pla: 1026: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1027: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1028: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1029: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B287 + !WORD _B287-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B287 +_B288 +; libsrc/jitcore.pla: 1030: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1031: codeptr->2 = $38 // SEC +; libsrc/jitcore.pla: 1032: codeptr=>3 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1033: codeptr=>5 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1034: codeptr=>7 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1035: codeptr=>9 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1036: codeptr=>11 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1037: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 1038: VX++ // INX + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1039: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1040: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1041: is $86 // MUL +_B289 +; libsrc/jitcore.pla: 1042: is $88 // DIV +_B290 +; libsrc/jitcore.pla: 1043: is $8A // MOD +_B291 +; libsrc/jitcore.pla: 1044: is $9A // SHL +_B292 +; libsrc/jitcore.pla: 1045: is $9C // SHR +_B293 +; libsrc/jitcore.pla: 1046: //puts("MUL,DIV,MOD,SHL,SHR") +; libsrc/jitcore.pla: 1047: // when opcode +; libsrc/jitcore.pla: 1048: // is $86 +; libsrc/jitcore.pla: 1049: // //puts("MUL") +; libsrc/jitcore.pla: 1050: // is $88 +; libsrc/jitcore.pla: 1051: // //puts("DIV") +; libsrc/jitcore.pla: 1052: // is $8A +; libsrc/jitcore.pla: 1053: // //puts("MOD") +; libsrc/jitcore.pla: 1054: // is $9A +; libsrc/jitcore.pla: 1055: // //puts("SHL") +; libsrc/jitcore.pla: 1056: // is $9C +; libsrc/jitcore.pla: 1057: // //puts("SHR") +; libsrc/jitcore.pla: 1058: // wend +; libsrc/jitcore.pla: 1059: // +; libsrc/jitcore.pla: 1060: // Call into VM +; libsrc/jitcore.pla: 1061: // +; libsrc/jitcore.pla: 1062: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1063: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1064: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1065: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1066: fin + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F021 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B294 + !WORD _B294-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B294 +_B295 +; libsrc/jitcore.pla: 1067: codeptr->0 = $20 // JSR INTERP +; libsrc/jitcore.pla: 1068: codeptr=>1 = directentry // INTERP +; libsrc/jitcore.pla: 1069: codeptr=>3 = $C000+opcode // OPCODE; NATV CODE +; libsrc/jitcore.pla: 1070: codeptr = codeptr + 5 +; libsrc/jitcore.pla: 1071: VY = UNKNOWN +; libsrc/jitcore.pla: 1072: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1073: break + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $6A ; LAW _D028+0 +_F022 !WORD _D028+0 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$00,$C0 ; CW 49152 + !BYTE $B0,$12 ; ADDLB [18] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1074: is $90 // NEG +_B296 +; libsrc/jitcore.pla: 1075: //puts("NEG") +; libsrc/jitcore.pla: 1076: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1077: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1078: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1079: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B297 + !WORD _B297-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B297 +_B298 +; libsrc/jitcore.pla: 1080: if VY <> 0 +; libsrc/jitcore.pla: 1081: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1082: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1083: VY = 0 +; libsrc/jitcore.pla: 1084: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B299 + !WORD _B299-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] +_B299 +_B300 +; libsrc/jitcore.pla: 1085: codeptr=>0 = $3898 // TYA -> LDA #$00; SEC +; libsrc/jitcore.pla: 1086: codeptr=>2 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1087: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1088: codeptr->6 = $98 // TYA -> LDA #00 +; libsrc/jitcore.pla: 1089: codeptr=>7 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1090: codeptr=>9 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1091: codeptr = codeptr + 11 +; libsrc/jitcore.pla: 1092: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1093: break + !BYTE $2C,$98,$38 ; CW 14488 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1094: is $92 // COMP +_B301 +; libsrc/jitcore.pla: 1095: //puts("COMP") +; libsrc/jitcore.pla: 1096: if not A_IS_TOSL +; libsrc/jitcore.pla: 1097: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1098: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1099: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B302 + !WORD _B302-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B302 +_B303 +; libsrc/jitcore.pla: 1100: codeptr=>0 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1101: codeptr=>2 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1102: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1103: codeptr=>6 = $FF49 // EOR #$FF +; libsrc/jitcore.pla: 1104: codeptr=>8 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1105: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1106: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1107: break + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $5E,$49 ; CFFB 65353 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1108: is $94 // AND +_B304 +; libsrc/jitcore.pla: 1109: is $96 // OR +_B305 +; libsrc/jitcore.pla: 1110: is $98 // XOR +_B306 +; libsrc/jitcore.pla: 1111: when opcode + !BYTE $64,$12 ; LLB [18] + !BYTE $52 ; SEL + !WORD _B308-* +; libsrc/jitcore.pla: 1112: is $94 +_B309 +; libsrc/jitcore.pla: 1113: //puts("AND") +; libsrc/jitcore.pla: 1114: j = $35 +; libsrc/jitcore.pla: 1115: break + !BYTE $2A,$35 ; CB 53 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +; libsrc/jitcore.pla: 1116: is $96 +_B310 +; libsrc/jitcore.pla: 1117: //puts("OR") +; libsrc/jitcore.pla: 1118: j = $15 +; libsrc/jitcore.pla: 1119: break + !BYTE $2A,$15 ; CB 21 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +; libsrc/jitcore.pla: 1120: is $98 +_B311 +; libsrc/jitcore.pla: 1121: //puts("XOR") +; libsrc/jitcore.pla: 1122: j = $55 +; libsrc/jitcore.pla: 1123: wend + !BYTE $2A,$55 ; CB 85 + !BYTE $74,$13 ; SLB [19] + !BYTE $50 ; BRNCH _B307 + !WORD _B307-* +_B308 + !BYTE $03 ; CASEBLOCK + !WORD $0094 + !WORD _B309-* + !WORD $0096 + !WORD _B310-* + !WORD $0098 + !WORD _B311-* +_B307 +; libsrc/jitcore.pla: 1124: if not A_IS_TOSL +; libsrc/jitcore.pla: 1125: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1126: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1127: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B312 + !WORD _B312-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B312 +_B313 +; libsrc/jitcore.pla: 1128: codeptr->0 = j // OP +; libsrc/jitcore.pla: 1129: codeptr->1 = estkl+$01+VX // ESTKL+1,X +; libsrc/jitcore.pla: 1130: codeptr=>2 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1131: codeptr=>4 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1132: codeptr->6 = j // OP +; libsrc/jitcore.pla: 1133: codeptr->7 = estkh+$01+VX // ESTKH+1,X +; libsrc/jitcore.pla: 1134: codeptr=>8 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1135: codeptr = codeptr + 10 +; libsrc/jitcore.pla: 1136: VX++ // INX + !BYTE $64,$13 ; LLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2A,$D1 ; CB 209 + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $70 ; SB + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $64,$13 ; LLB [19] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $2A,$C1 ; CB 193 + !BYTE $B2,$0E ; ADDLW [14] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1137: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1138: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1139: is $9E // IDXW +_B314 +; libsrc/jitcore.pla: 1140: //puts("IDXW") +; libsrc/jitcore.pla: 1141: if not A_IS_TOSL +; libsrc/jitcore.pla: 1142: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1143: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1144: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B315 + !WORD _B315-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B315 +_B316 +; libsrc/jitcore.pla: 1145: codeptr->0 = $0A // ASL +; libsrc/jitcore.pla: 1146: codeptr=>1 = estkh8+$36+(VX<<8) // ROL ESTKH,X +; libsrc/jitcore.pla: 1147: codeptr->3 = $18 // CLC +; libsrc/jitcore.pla: 1148: codeptr=>4 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1149: codeptr=>6 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1150: codeptr=>8 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1151: codeptr=>10 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1152: codeptr=>12 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1153: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 1154: VX++ // INX + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$36,$C0 ; CW 49206 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1155: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1156: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1157: is $A0 // BRGT - FOR/NEXT SPECIFIC TEST & BRANCH +_B317 +; libsrc/jitcore.pla: 1158: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1159: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1160: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1161: //puts("BRGT "); puti(dest) +; libsrc/jitcore.pla: 1162: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1163: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1164: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1165: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1166: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F023 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B318 + !WORD _B318-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B318 +_B319 +; libsrc/jitcore.pla: 1167: codeptr=>0 = estkl8+$B5+$0100//+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1168: codeptr=>2 = estkl8+$D5//+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 1169: codeptr=>4 = estkh8+$B5+$0100//+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1170: codeptr=>6 = estkh8+$F5//+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 1171: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1172: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1173: codeptr=>12 = $0310 // BPL +3 +; libsrc/jitcore.pla: 1174: codeptr->14 = $4C // JMP abs +; libsrc/jitcore.pla: 1175: codeptr=>15 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1176: if not (codeptr->16 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1177: addrxlate=>[dest] = codeptr + 15 - *jitcodeptr +; libsrc/jitcore.pla: 1178: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B320 + !WORD _B320-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B320 +_B321 +; libsrc/jitcore.pla: 1179: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1180: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1181: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1182: is $A2 // BRLT - FOR/NEXT SPECIFIC TEST & BRANCH +_B322 +; libsrc/jitcore.pla: 1183: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1184: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1185: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1186: //puts("BRLT "); puti(dest) +; libsrc/jitcore.pla: 1187: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1188: if not A_IS_TOSL +; libsrc/jitcore.pla: 1189: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1190: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1191: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F024 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B323 + !WORD _B323-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B324 + !WORD _B324-* +_B323 +; libsrc/jitcore.pla: 1192: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1193: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1194: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B325 + !WORD _B325-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B325 +_B324 +; libsrc/jitcore.pla: 1195: codeptr=>0 = estkl8+$D5+$0100//+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 1196: codeptr=>2 = estkh8+$B5//+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1197: codeptr=>4 = estkh8+$F5+$0100//+(VX<<8) // SBC ESTKH+1 +; libsrc/jitcore.pla: 1198: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1199: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1200: codeptr=>10 = $0310 // BPL +3 +; libsrc/jitcore.pla: 1201: codeptr->12 = $4C // JMP abs +; libsrc/jitcore.pla: 1202: codeptr=>13 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1203: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1204: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jitcore.pla: 1205: fin + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$10,$03 ; CW 784 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B326 + !WORD _B326-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B326 +_B327 +; libsrc/jitcore.pla: 1206: codeptr = codeptr + 15 +; libsrc/jitcore.pla: 1207: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1208: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1209: is $A4 // INCBRLE - FOR/NEXT SPECIFIC INC & TEST & BRANCH +_B328 +; libsrc/jitcore.pla: 1210: is $A6 // ADDBRLE - FOR/NEXT SPECIFIC ADD & TEST & BRANCH +_B329 +; libsrc/jitcore.pla: 1211: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1212: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1213: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1214: if not A_IS_TOSL +; libsrc/jitcore.pla: 1215: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1216: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1217: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B330 + !WORD _B330-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B330 +_B331 +; libsrc/jitcore.pla: 1218: if opcode == $A4 +; libsrc/jitcore.pla: 1219: // +; libsrc/jitcore.pla: 1220: // INCR +; libsrc/jitcore.pla: 1221: // +; libsrc/jitcore.pla: 1222: //puts("INCBRLE "); puti(dest) +; libsrc/jitcore.pla: 1223: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1224: codeptr=>1 = $0169 // ADC #$01 +; libsrc/jitcore.pla: 1225: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1226: codeptr=>5 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1227: codeptr=>7 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1228: codeptr, VX = resolveX(codeptr + 9, VX) +; libsrc/jitcore.pla: 1229: else + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$A4 ; CB 164 + !BYTE $24 ; BRNE _B332 + !WORD _B332-* + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$69,$01 ; CW 361 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F025 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B333 + !WORD _B333-* +_B332 +; libsrc/jitcore.pla: 1230: // +; libsrc/jitcore.pla: 1231: // ADD +; libsrc/jitcore.pla: 1232: // +; libsrc/jitcore.pla: 1233: //puts("ADDBRLE "); puti(dest) +; libsrc/jitcore.pla: 1234: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1235: codeptr=>1 = estkl8+$75+$0100+(VX<<8) // ADC ESTKL+1,X +; libsrc/jitcore.pla: 1236: codeptr=>3 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1237: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1238: codeptr=>7 = estkh8+$75+$0100+(VX<<8) // ADC ESTKH+1,X +; libsrc/jitcore.pla: 1239: codeptr=>9 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1240: codeptr, VX = resolveX(codeptr + 11, VX + 1) // INX +; libsrc/jitcore.pla: 1241: fin + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$75,$D1 ; CW 53621 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$75,$C1 ; CW 49525 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F026 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] +_B333 +; libsrc/jitcore.pla: 1242: // +; libsrc/jitcore.pla: 1243: // BRLE +; libsrc/jitcore.pla: 1244: // +; libsrc/jitcore.pla: 1245: codeptr=>0 = estkl8+$B5+$0100//+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1246: codeptr=>2 = estkl8+$D5//+(VX<<8) // CMP ESTKL,X +; libsrc/jitcore.pla: 1247: codeptr=>4 = estkh8+$B5+$0100//+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1248: codeptr=>6 = estkh8+$F5//+(VX<<8) // SBC ESTKH +; libsrc/jitcore.pla: 1249: codeptr=>8 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1250: codeptr=>10 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1251: codeptr=>12 = $0330 // BMI +3 +; libsrc/jitcore.pla: 1252: codeptr->14 = $4C // JMP abs +; libsrc/jitcore.pla: 1253: codeptr=>15 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1254: if not (codeptr->16 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1255: addrxlate=>[dest] = codeptr + 15 - *jitcodeptr +; libsrc/jitcore.pla: 1256: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$D5,$D0 ; CW 53461 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B334 + !WORD _B334-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B334 +_B335 +; libsrc/jitcore.pla: 1257: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1258: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1259: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1260: is $A8 // DECBRGR - FOR/NEXT SPECIFIC DEC & TEST & BRANCH +_B336 +; libsrc/jitcore.pla: 1261: is $AA // SUBBRGE - FOR/NEXT SPECIFIC SUB & TEST & BRANCH +_B337 +; libsrc/jitcore.pla: 1262: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1263: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1264: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1265: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1266: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1267: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1268: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B338 + !WORD _B338-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B338 +_B339 +; libsrc/jitcore.pla: 1269: if opcode == $A8 +; libsrc/jitcore.pla: 1270: // +; libsrc/jitcore.pla: 1271: // DECR +; libsrc/jitcore.pla: 1272: // +; libsrc/jitcore.pla: 1273: //puts("DECBRGE "); puti(dest) +; libsrc/jitcore.pla: 1274: if not A_IS_TOSL +; libsrc/jitcore.pla: 1275: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1276: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1277: fin + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$A8 ; CB 168 + !BYTE $24 ; BRNE _B340 + !WORD _B340-* + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B342 + !WORD _B342-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B342 +_B343 +; libsrc/jitcore.pla: 1278: codeptr->0 = $38 // SEC +; libsrc/jitcore.pla: 1279: codeptr=>1 = $01E9 // SBC #$01 +; libsrc/jitcore.pla: 1280: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1281: codeptr=>5 = $02B0 // BCS +2 +; libsrc/jitcore.pla: 1282: codeptr=>7 = estkh8+$D6+(VX<<8) // DEC ESTKH,X +; libsrc/jitcore.pla: 1283: codeptr, VX = resolveX(codeptr + 9, VX) +; libsrc/jitcore.pla: 1284: else + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$E9,$01 ; CW 489 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B0,$02 ; CW 688 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$D6,$C0 ; CW 49366 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F027 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B341 + !WORD _B341-* +_B340 +; libsrc/jitcore.pla: 1285: // +; libsrc/jitcore.pla: 1286: // SUB +; libsrc/jitcore.pla: 1287: // +; libsrc/jitcore.pla: 1288: //puts("SUBBRGE "); puti(dest) +; libsrc/jitcore.pla: 1289: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1290: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1291: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1292: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B344 + !WORD _B344-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B344 +_B345 +; libsrc/jitcore.pla: 1293: codeptr=>0 = estkl8+$B5+$0100+(VX<<8) // LDA ESTKL+1,X +; libsrc/jitcore.pla: 1294: codeptr->2 = $38 // SEC +; libsrc/jitcore.pla: 1295: codeptr=>3 = estkl8+$F5+(VX<<8) // SBC ESTKL,X +; libsrc/jitcore.pla: 1296: codeptr=>5 = estkl8+$95+$0100+(VX<<8) // STA ESTKL+1,X +; libsrc/jitcore.pla: 1297: codeptr=>7 = estkh8+$B5+$0100+(VX<<8) // LDA ESTKH+1,X +; libsrc/jitcore.pla: 1298: codeptr=>9 = estkh8+$F5+(VX<<8) // SBC ESTKH,X +; libsrc/jitcore.pla: 1299: codeptr=>11 = estkh8+$95+$0100+(VX<<8) // STA ESTKH+1,X +; libsrc/jitcore.pla: 1300: codeptr, VX = resolveX(codeptr + 13, VX + 1) // INX +; libsrc/jitcore.pla: 1301: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1302: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1303: fin + !BYTE $2C,$B5,$D1 ; CW 53685 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2A,$38 ; CB 56 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$F5,$D0 ; CW 53493 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$95,$D1 ; CW 53653 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C1 ; CW 49589 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C0 ; CW 49397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C1 ; CW 49557 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C000 +_F028 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B341 +; libsrc/jitcore.pla: 1304: // +; libsrc/jitcore.pla: 1305: // BRGE +; libsrc/jitcore.pla: 1306: // +; libsrc/jitcore.pla: 1307: codeptr=>0 = estkl8+$D5+$0100//+(VX<<8) // CMP ESTKL+1,X +; libsrc/jitcore.pla: 1308: codeptr=>2 = estkh8+$B5//+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1309: codeptr=>4 = estkh8+$F5+$0100//+(VX<<8) // SBC ESTKH+1,X +; libsrc/jitcore.pla: 1310: codeptr=>6 = $0250 // BVC +2 +; libsrc/jitcore.pla: 1311: codeptr=>8 = $8049 // EOR #$80 +; libsrc/jitcore.pla: 1312: codeptr=>10 = $0330 // BMI +3 +; libsrc/jitcore.pla: 1313: codeptr->12 = $4C // JMP abs +; libsrc/jitcore.pla: 1314: codeptr=>13 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1315: if not (codeptr->14 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1316: addrxlate=>[dest] = codeptr + 13 - *jitcodeptr +; libsrc/jitcore.pla: 1317: fin + !BYTE $2C,$D5,$D1 ; CW 53717 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $2C,$F5,$C1 ; CW 49653 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$50,$02 ; CW 592 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$49,$80 ; CW 32841 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$30,$03 ; CW 816 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B346 + !WORD _B346-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B346 +_B347 +; libsrc/jitcore.pla: 1318: codeptr = codeptr + 15 +; libsrc/jitcore.pla: 1319: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1320: break + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1321: is $AC // BRAND - LOGICAL AND SPECIFIC BRANCH +_B348 +; libsrc/jitcore.pla: 1322: is $AE // BROR - LOGICAL OR SPECIFIC BRANCH +_B349 +; libsrc/jitcore.pla: 1323: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1324: dest = i + *(bytecode+i) +; libsrc/jitcore.pla: 1325: i++ + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $62 ; LW + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1326: codeptr, VX = resolveX(codeptr, VX) +; libsrc/jitcore.pla: 1327: if not A_IS_TOSL +; libsrc/jitcore.pla: 1328: *codeptr = estkl8+$B5//+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1329: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1330: elsif A_IS_TOSL & TOS_DIRTY + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $54 ; CALL _C000 +_F029 !WORD _C000 + !BYTE $76,$0E ; SLW [14] + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B350 + !WORD _B350-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B351 + !WORD _B351-* +_B350 +; libsrc/jitcore.pla: 1331: *codeptr = estkl8+$95//+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1332: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1333: fin + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B352 + !WORD _B352-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B352 +_B351 +; libsrc/jitcore.pla: 1334: codeptr=>0 = estkh8+$15//+(VX<<8) // ORA ESTKH,X +; libsrc/jitcore.pla: 1335: if opcode == $AC +; libsrc/jitcore.pla: 1336: //puts("BRAND "); puti(dest) +; libsrc/jitcore.pla: 1337: codeptr=>2 = $03D0 // BNE +3 +; libsrc/jitcore.pla: 1338: else + !BYTE $2C,$15,$C0 ; CW 49173 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$AC ; CB 172 + !BYTE $24 ; BRNE _B353 + !WORD _B353-* + !BYTE $2C,$D0,$03 ; CW 976 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $50 ; BRNCH _B354 + !WORD _B354-* +_B353 +; libsrc/jitcore.pla: 1339: //puts("BROR "); puti(dest) +; libsrc/jitcore.pla: 1340: codeptr=>2 = $03F0 // BEQ +3 +; libsrc/jitcore.pla: 1341: fin + !BYTE $2C,$F0,$03 ; CW 1008 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW +_B354 +; libsrc/jitcore.pla: 1342: codeptr->4 = $4C // JMP abs +; libsrc/jitcore.pla: 1343: codeptr=>5 = addrxlate=>[dest] +; libsrc/jitcore.pla: 1344: if not (codeptr->6 & $80) // Unresolved address list +; libsrc/jitcore.pla: 1345: addrxlate=>[dest] = codeptr + 5 - *jitcodeptr +; libsrc/jitcore.pla: 1346: fin + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $70 ; SB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $62 ; LW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B355 + !WORD _B355-* + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $84 ; SUB + !BYTE $66,$04 ; LLW [4] + !BYTE $BA,$0C ; IDXLW [12] + !BYTE $72 ; SW +_B355 +_B356 +; libsrc/jitcore.pla: 1347: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 1348: VX++ // INX + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$0E ; LLW [14] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1349: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1350: break + !BYTE $76,$0E ; SLW [14] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1351: is $B0 // ADDLB +_B357 +; libsrc/jitcore.pla: 1352: is $B2 // ADDLW +_B358 +; libsrc/jitcore.pla: 1353: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1354: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1355: if not A_IS_TOSL +; libsrc/jitcore.pla: 1356: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1357: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1358: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B359 + !WORD _B359-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B359 +_B360 +; libsrc/jitcore.pla: 1359: if VY <> j +; libsrc/jitcore.pla: 1360: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1361: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1362: VY = j +; libsrc/jitcore.pla: 1363: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B361 + !WORD _B361-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $76,$10 ; SLW [16] +_B361 +_B362 +; libsrc/jitcore.pla: 1364: codeptr->0 = $18 // CLC +; libsrc/jitcore.pla: 1365: codeptr=>1 = ifpl8+$71 // ADC (IFP),Y +; libsrc/jitcore.pla: 1366: if opcode == $B0 +; libsrc/jitcore.pla: 1367: //puts("ADDLB "); puti(j) +; libsrc/jitcore.pla: 1368: codeptr=>3 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1369: codeptr=>5 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1370: codeptr = codeptr + 7 +; libsrc/jitcore.pla: 1371: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1372: else + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$71,$E0 ; CW 57457 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$B0 ; CB 176 + !BYTE $24 ; BRNE _B363 + !WORD _B363-* + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B364 + !WORD _B364-* +_B363 +; libsrc/jitcore.pla: 1373: //puts("ADDLW "); puti(j) +; libsrc/jitcore.pla: 1374: codeptr=>3 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1375: codeptr=>5 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1376: codeptr->7 = $C8 // INY +; libsrc/jitcore.pla: 1377: codeptr=>8 = ifpl8+$71 // ADC (IFP),Y +; libsrc/jitcore.pla: 1378: codeptr=>10 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1379: codeptr = codeptr + 12 +; libsrc/jitcore.pla: 1380: VY++ + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB + !BYTE $2C,$71,$E0 ; CW 57457 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$10 ; LLW [16] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1381: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1382: fin + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] +_B364 +; libsrc/jitcore.pla: 1383: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1384: is $B4 // ADDAB +_B365 +; libsrc/jitcore.pla: 1385: is $B6 // ADDAW +_B366 +; libsrc/jitcore.pla: 1386: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1387: i = i + 2 +; libsrc/jitcore.pla: 1388: if not A_IS_TOSL +; libsrc/jitcore.pla: 1389: *codeptr = estkl8+$B5+(VX<<8) // LDA ESTKL,X +; libsrc/jitcore.pla: 1390: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1391: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $4E ; BRTRU _B367 + !WORD _B367-* + !BYTE $2C,$B5,$D0 ; CW 53429 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B367 +_B368 +; libsrc/jitcore.pla: 1392: codeptr=>0 = $6D18 // CLC; ADC abs +; libsrc/jitcore.pla: 1393: codeptr=>2 = dest +; libsrc/jitcore.pla: 1394: if opcode == $B4 +; libsrc/jitcore.pla: 1395: //puts("ADDAB $"); puth(dest) +; libsrc/jitcore.pla: 1396: codeptr=>4 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1397: codeptr=>6 = estkh8+$F6+(VX<<8) // INC ESTKH,X +; libsrc/jitcore.pla: 1398: codeptr = codeptr + 8 +; libsrc/jitcore.pla: 1399: A_IS_TOSL = TOS_DIRTY // STA ESTKL,X +; libsrc/jitcore.pla: 1400: else + !BYTE $2C,$18,$6D ; CW 27928 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $72 ; SW + !BYTE $64,$12 ; LLB [18] + !BYTE $2A,$B4 ; CB 180 + !BYTE $24 ; BRNE _B369 + !WORD _B369-* + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$F6,$C0 ; CW 49398 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $76,$02 ; SLW [2] + !BYTE $02 ; CN 1 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B370 + !WORD _B370-* +_B369 +; libsrc/jitcore.pla: 1401: //puts("ADDAW $"); puth(dest) +; libsrc/jitcore.pla: 1402: codeptr=>4 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1403: codeptr=>6 = estkh8+$B5+(VX<<8) // LDA ESTKH,X +; libsrc/jitcore.pla: 1404: codeptr->8 = $6D // ADC abs +; libsrc/jitcore.pla: 1405: codeptr=>9 = dest+1 +; libsrc/jitcore.pla: 1406: codeptr=>11 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1407: codeptr = codeptr + 13 +; libsrc/jitcore.pla: 1408: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1409: fin + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$B5,$C0 ; CW 49333 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2A,$6D ; CB 109 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $76,$02 ; SLW [2] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] +_B370 +; libsrc/jitcore.pla: 1410: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1411: is $B8 // IDXLB +_B371 +; libsrc/jitcore.pla: 1412: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1413: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1414: //puts("IDXLB "); puti(j) +; libsrc/jitcore.pla: 1415: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1416: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1417: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1418: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B372 + !WORD _B372-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B372 +_B373 +; libsrc/jitcore.pla: 1419: if VY <> j +; libsrc/jitcore.pla: 1420: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1421: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1422: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B374 + !WORD _B374-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B374 +_B375 +; libsrc/jitcore.pla: 1423: *codeptr = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1424: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1425: if j <> 0 +; libsrc/jitcore.pla: 1426: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1427: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1428: fin + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] + !BYTE $64,$13 ; LLB [19] + !BYTE $4C ; BRFLS _B376 + !WORD _B376-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B376 +_B377 +; libsrc/jitcore.pla: 1429: codeptr->0 = $0A // ASL +; libsrc/jitcore.pla: 1430: codeptr=>1 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1431: codeptr=>3 = $18C8 // INY; CLC +; libsrc/jitcore.pla: 1432: codeptr=>5 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1433: codeptr=>7 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1434: codeptr->9 = $98 // TYA +; libsrc/jitcore.pla: 1435: codeptr=>10 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1436: codeptr=>12 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1437: codeptr = codeptr + 14 +; libsrc/jitcore.pla: 1438: VY = UNKNOWN +; libsrc/jitcore.pla: 1439: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1440: break + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $2C,$C8,$18 ; CW 6344 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1441: is $BA // IDXLW +_B378 +; libsrc/jitcore.pla: 1442: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1443: j = ^(bytecode+i) +; libsrc/jitcore.pla: 1444: //puts("IDXLW "); puti(j) +; libsrc/jitcore.pla: 1445: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1446: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1447: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1448: fin + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $60 ; LB + !BYTE $74,$13 ; SLB [19] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B379 + !WORD _B379-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B379 +_B380 +; libsrc/jitcore.pla: 1449: if VY <> j +; libsrc/jitcore.pla: 1450: *codeptr = $A0+(j<<8) // LDY #imm +; libsrc/jitcore.pla: 1451: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1452: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $64,$13 ; LLB [19] + !BYTE $22 ; BREQ _B381 + !WORD _B381-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $64,$13 ; LLB [19] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B381 +_B382 +; libsrc/jitcore.pla: 1453: codeptr=>0 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1454: codeptr->2 = $0A // ASL +; libsrc/jitcore.pla: 1455: codeptr=>3 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 1456: codeptr->5 = $C8 // INY +; libsrc/jitcore.pla: 1457: codeptr=>6 = ifpl8+$B1 // LDA (IFP),Y +; libsrc/jitcore.pla: 1458: codeptr=>8 = $A82A // ROL; TAY +; libsrc/jitcore.pla: 1459: codeptr=>10 = tmpl8+$A5 // LDA $E7:TMPL +; libsrc/jitcore.pla: 1460: codeptr->12 = $18 // CLC +; libsrc/jitcore.pla: 1461: codeptr=>13 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1462: codeptr=>15 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1463: codeptr->17 = $98 // TYA +; libsrc/jitcore.pla: 1464: codeptr=>18 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1465: codeptr=>20 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1466: codeptr = codeptr + 22 +; libsrc/jitcore.pla: 1467: VY = UNKNOWN +; libsrc/jitcore.pla: 1468: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1469: break + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $70 ; SB + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $2A,$C8 ; CB 200 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $2C,$B1,$E0 ; CW 57521 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$2A,$A8 ; CW 43050 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$A5,$E7 ; CW 59301 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$14 ; ADDI 20 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$16 ; ADDI 22 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1470: is $BC // IDXAB +_B383 +; libsrc/jitcore.pla: 1471: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1472: i = i + 2 +; libsrc/jitcore.pla: 1473: //puts("IDXAB $"); puth(*(bytecode+i)) +; libsrc/jitcore.pla: 1474: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1475: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1476: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1477: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B384 + !WORD _B384-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B384 +_B385 +; libsrc/jitcore.pla: 1478: if VY <> 0 +; libsrc/jitcore.pla: 1479: *codeptr = $00A0 // LDY #$00 +; libsrc/jitcore.pla: 1480: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1481: fin + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B386 + !WORD _B386-* + !BYTE $2A,$A0 ; CB 160 + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B386 +_B387 +; libsrc/jitcore.pla: 1482: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 1483: codeptr=>1 = dest +; libsrc/jitcore.pla: 1484: codeptr->3 = $0A // ASL +; libsrc/jitcore.pla: 1485: codeptr=>4 = $0290 // BCC +2 +; libsrc/jitcore.pla: 1486: codeptr=>6 = $18C8 // INY; CLC +; libsrc/jitcore.pla: 1487: codeptr=>8 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1488: codeptr=>10 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1489: codeptr->12 = $98 // TYA +; libsrc/jitcore.pla: 1490: codeptr=>13 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1491: codeptr=>15 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1492: codeptr = codeptr + 17 +; libsrc/jitcore.pla: 1493: VY = UNKNOWN +; libsrc/jitcore.pla: 1494: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1495: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$90,$02 ; CW 656 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2C,$C8,$18 ; CW 6344 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $72 ; SW + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$08 ; ADDI 8 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0A ; ADDI 10 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0C ; ADDI 12 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0F ; ADDI 15 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$11 ; ADDI 17 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1496: is $BE // IDXAW +_B388 +; libsrc/jitcore.pla: 1497: dest = *(bytecode+i+1) +; libsrc/jitcore.pla: 1498: i = i + 2 +; libsrc/jitcore.pla: 1499: //puts("IDXAW $"); puth(dest) +; libsrc/jitcore.pla: 1500: if A_IS_TOSL & TOS_DIRTY +; libsrc/jitcore.pla: 1501: *codeptr = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1502: codeptr = codeptr + 2 +; libsrc/jitcore.pla: 1503: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $B2,$08 ; ADDLW [8] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$08 ; SLW [8] + !BYTE $64,$14 ; LLB [20] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $4C ; BRFLS _B389 + !WORD _B389-* + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$02 ; ADDI 2 + !BYTE $76,$02 ; SLW [2] +_B389 +_B390 +; libsrc/jitcore.pla: 1504: codeptr->0 = $AD // LDA abs +; libsrc/jitcore.pla: 1505: codeptr=>1 = dest +; libsrc/jitcore.pla: 1506: codeptr->3 = $0A // ASL +; libsrc/jitcore.pla: 1507: codeptr=>4 = tmpl8+$85 // STA $E7:TMPL +; libsrc/jitcore.pla: 1508: codeptr->6 = $AD // LDA abs+1 +; libsrc/jitcore.pla: 1509: codeptr=>7 = dest+1 +; libsrc/jitcore.pla: 1510: codeptr=>9 = $A82A // ROL; TAY +; libsrc/jitcore.pla: 1511: codeptr=>11 = tmpl8+$A5 // LDA $E7:TMPL +; libsrc/jitcore.pla: 1512: codeptr->13 = $18 // CLC +; libsrc/jitcore.pla: 1513: codeptr=>14 = estkl8+$75+(VX<<8) // ADC ESTKL,X +; libsrc/jitcore.pla: 1514: codeptr=>16 = estkl8+$95+(VX<<8) // STA ESTKL,X +; libsrc/jitcore.pla: 1515: codeptr->18 = $98 // TYA +; libsrc/jitcore.pla: 1516: codeptr=>19 = estkh8+$75+(VX<<8) // ADC ESTKH,X +; libsrc/jitcore.pla: 1517: codeptr=>21 = estkh8+$95+(VX<<8) // STA ESTKH,X +; libsrc/jitcore.pla: 1518: codeptr = codeptr + 23 +; libsrc/jitcore.pla: 1519: VY = UNKNOWN +; libsrc/jitcore.pla: 1520: A_IS_TOSL = FALSE +; libsrc/jitcore.pla: 1521: break + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $14 ; CN 10 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$03 ; ADDI 3 + !BYTE $70 ; SB + !BYTE $2C,$85,$E7 ; CW 59269 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$04 ; ADDI 4 + !BYTE $72 ; SW + !BYTE $2A,$AD ; CB 173 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$07 ; ADDI 7 + !BYTE $72 ; SW + !BYTE $2C,$2A,$A8 ; CW 43050 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$09 ; ADDI 9 + !BYTE $72 ; SW + !BYTE $2C,$A5,$E7 ; CW 59301 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0B ; ADDI 11 + !BYTE $72 ; SW + !BYTE $2A,$18 ; CB 24 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0D ; ADDI 13 + !BYTE $70 ; SB + !BYTE $2C,$75,$D0 ; CW 53365 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$0E ; ADDI 14 + !BYTE $72 ; SW + !BYTE $2C,$95,$D0 ; CW 53397 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$10 ; ADDI 16 + !BYTE $72 ; SW + !BYTE $2A,$98 ; CB 152 + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$12 ; ADDI 18 + !BYTE $70 ; SB + !BYTE $2C,$75,$C0 ; CW 49269 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$13 ; ADDI 19 + !BYTE $72 ; SW + !BYTE $2C,$95,$C0 ; CW 49301 + !BYTE $66,$0E ; LLW [14] + !BYTE $10 ; CN 8 + !BYTE $9A ; SHL + !BYTE $82 ; ADD + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$15 ; ADDI 21 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $38,$17 ; ADDI 23 + !BYTE $76,$02 ; SLW [2] + !BYTE $20 ; MINUS ONE + !BYTE $76,$10 ; SLW [16] + !BYTE $00 ; CN 0 + !BYTE $74,$14 ; SLB [20] + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1522: is $FE // NOPed out earlier by SELect +_B391 +; libsrc/jitcore.pla: 1523: break + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +; libsrc/jitcore.pla: 1524: otherwise +_B089 + !BYTE $4F ; CASEBLOCK + !WORD $0020 + !WORD _B090-* + !WORD $0022 + !WORD _B093-* + !WORD $0024 + !WORD _B094-* + !WORD $0026 + !WORD _B101-* + !WORD $0028 + !WORD _B105-* + !WORD $002A + !WORD _B112-* + !WORD $002C + !WORD _B102-* + !WORD $002E + !WORD _B120-* + !WORD $0030 + !WORD _B126-* + !WORD $0032 + !WORD _B125-* + !WORD $0034 + !WORD _B127-* + !WORD $0038 + !WORD _B131-* + !WORD $003A + !WORD _B137-* + !WORD $003C + !WORD _B143-* + !WORD $003E + !WORD _B148-* + !WORD $0040 + !WORD _B151-* + !WORD $0042 + !WORD _B152-* + !WORD $0044 + !WORD _B159-* + !WORD $0046 + !WORD _B167-* + !WORD $0048 + !WORD _B168-* + !WORD $004A + !WORD _B160-* + !WORD $004C + !WORD _B175-* + !WORD $004E + !WORD _B176-* + !WORD $0050 + !WORD _B183-* + !WORD $0052 + !WORD _B188-* + !WORD $0054 + !WORD _B200-* + !WORD $0056 + !WORD _B203-* + !WORD $005A + !WORD _B206-* + !WORD $005C + !WORD _B209-* + !WORD $005E + !WORD _B113-* + !WORD $0060 + !WORD _B212-* + !WORD $0062 + !WORD _B217-* + !WORD $0064 + !WORD _B220-* + !WORD $0066 + !WORD _B227-* + !WORD $0068 + !WORD _B232-* + !WORD $006A + !WORD _B233-* + !WORD $006C + !WORD _B240-* + !WORD $006E + !WORD _B247-* + !WORD $0070 + !WORD _B252-* + !WORD $0072 + !WORD _B253-* + !WORD $0074 + !WORD _B258-* + !WORD $0076 + !WORD _B259-* + !WORD $0078 + !WORD _B266-* + !WORD $007A + !WORD _B267-* + !WORD $007C + !WORD _B272-* + !WORD $007E + !WORD _B273-* + !WORD $0080 + !WORD _B280-* + !WORD $0082 + !WORD _B283-* + !WORD $0084 + !WORD _B286-* + !WORD $0086 + !WORD _B289-* + !WORD $0088 + !WORD _B290-* + !WORD $008A + !WORD _B291-* + !WORD $008C + !WORD _B132-* + !WORD $008E + !WORD _B138-* + !WORD $0090 + !WORD _B296-* + !WORD $0092 + !WORD _B301-* + !WORD $0094 + !WORD _B304-* + !WORD $0096 + !WORD _B305-* + !WORD $0098 + !WORD _B306-* + !WORD $009A + !WORD _B292-* + !WORD $009C + !WORD _B293-* + !WORD $009E + !WORD _B314-* + !WORD $00A0 + !WORD _B317-* + !WORD $00A2 + !WORD _B322-* + !WORD $00A4 + !WORD _B328-* + !WORD $00A6 + !WORD _B329-* + !WORD $00A8 + !WORD _B336-* + !WORD $00AA + !WORD _B337-* + !WORD $00AC + !WORD _B348-* + !WORD $00AE + !WORD _B349-* + !WORD $00B0 + !WORD _B357-* + !WORD $00B2 + !WORD _B358-* + !WORD $00B4 + !WORD _B365-* + !WORD $00B6 + !WORD _B366-* + !WORD $00B8 + !WORD _B371-* + !WORD $00BA + !WORD _B378-* + !WORD $00BC + !WORD _B383-* + !WORD $00BE + !WORD _B388-* + !WORD $00FE + !WORD _B391-* +; libsrc/jitcore.pla: 1525: //puts("???: $"); puth(^(bytecode+i)); putln +; libsrc/jitcore.pla: 1526: wend +_B088 +; libsrc/jitcore.pla: 1527: fin +_B081 +; libsrc/jitcore.pla: 1528: //putln +; libsrc/jitcore.pla: 1529: i++ + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR +; libsrc/jitcore.pla: 1530: if i >= defptr->bytecodesize +; libsrc/jitcore.pla: 1531: // +; libsrc/jitcore.pla: 1532: // Done compiling. Update DEF entry with JMP to compiled code +; libsrc/jitcore.pla: 1533: // +; libsrc/jitcore.pla: 1534: defptr->interpjsr = $4C // JMP +; libsrc/jitcore.pla: 1535: defptr=>interpaddr = *jitcodeptr +; libsrc/jitcore.pla: 1536: *jitcodeptr = codeptr +; libsrc/jitcore.pla: 1537: //puts("Done compiling: $"); puth(defptr=>interpaddr) +; libsrc/jitcore.pla: 1538: //puts("->$"); puth(*jitcodeptr); putln +; libsrc/jitcore.pla: 1539: //getc +; libsrc/jitcore.pla: 1540: return + !BYTE $6E,$08 ; DLW [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$07 ; ADDI 7 + !BYTE $60 ; LB + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B392 + !WORD _B392-* + !BYTE $2A,$4C ; CB 76 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $6A,$F4,$A0 ; LAW 41204 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $7A,$F4,$A0 ; SAW 41204 + !BYTE $5A,$15 ; LEAVE 21 +; libsrc/jitcore.pla: 1541: fin +_B392 +_B393 +; libsrc/jitcore.pla: 1542: loop +_B070 + !BYTE $66,$02 ; LLW [2] + !BYTE $2C,$00,$A0 ; CW 40960 + !BYTE $54 ; CALL _X027 +_F030 !WORD 0 + !BYTE $4E ; BRTRU _B068 + !WORD _B068-* +_B069 +; libsrc/jitcore.pla: 1543: // +; libsrc/jitcore.pla: 1544: // If we got here we ran out of code buffer space. +; libsrc/jitcore.pla: 1545: // +; libsrc/jitcore.pla: 1546: //puts("Ran out of code buffer\n") +; libsrc/jitcore.pla: 1547: //getc +; libsrc/jitcore.pla: 1548: end + !BYTE $5A,$15 ; LEAVE 21 +; vmsrc/apple/soscmdjit.pla: 0080: +; vmsrc/apple/soscmdjit.pla: 0081: // +; vmsrc/apple/soscmdjit.pla: 0082: // SOS routines +; vmsrc/apple/soscmdjit.pla: 0083: // FILE I/O +; vmsrc/apple/soscmdjit.pla: 0084: // +; vmsrc/apple/soscmdjit.pla: 0085: def getpfx(path)#1 + ; path -> [0] +_C002 ; getpfx() +; vmsrc/apple/soscmdjit.pla: 0086: byte params[4] + ; params -> [2] +; vmsrc/apple/soscmdjit.pla: 0087: +; vmsrc/apple/soscmdjit.pla: 0088: ^path = 0 + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/soscmdjit.pla: 0089: params.0 = 2 +; vmsrc/apple/soscmdjit.pla: 0090: params:1 = path +; vmsrc/apple/soscmdjit.pla: 0091: params.3 = 128 +; vmsrc/apple/soscmdjit.pla: 0092: syscall($C7, @params) +; vmsrc/apple/soscmdjit.pla: 0093: return path + !BYTE $00 ; CN 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$80 ; CB 128 + !BYTE $74,$05 ; SLB [5] + !BYTE $2A,$C7 ; CB 199 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F031 !WORD 0 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/soscmdjit.pla: 0094: end +; vmsrc/apple/soscmdjit.pla: 0095: def setpfx(path)#1 + ; path -> [0] +_C003 ; setpfx() +; vmsrc/apple/soscmdjit.pla: 0096: byte params[6] + ; params -> [2] +; vmsrc/apple/soscmdjit.pla: 0097: byte fileinfo[2] + ; fileinfo -> [8] +; vmsrc/apple/soscmdjit.pla: 0098: +; vmsrc/apple/soscmdjit.pla: 0099: params.0 = 3 + !BYTE $58,$0A,$01 ; ENTER 10,1 +; vmsrc/apple/soscmdjit.pla: 0100: params:1 = path +; vmsrc/apple/soscmdjit.pla: 0101: params:3 = @fileinfo +; vmsrc/apple/soscmdjit.pla: 0102: params.5 = 2 +; vmsrc/apple/soscmdjit.pla: 0103: if not syscall($C4, @params) and (fileinfo.1 == $00 or fileinfo.1 == $0F) // Make sure it's a directory +; vmsrc/apple/soscmdjit.pla: 0104: params.0 = 1 +; vmsrc/apple/soscmdjit.pla: 0105: params:1 = path +; vmsrc/apple/soscmdjit.pla: 0106: syscall($C6, @params) +; vmsrc/apple/soscmdjit.pla: 0107: else + !BYTE $06 ; CN 3 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $28,$08 ; LLA [8] + !BYTE $76,$05 ; SLW [5] + !BYTE $04 ; CN 2 + !BYTE $74,$07 ; SLB [7] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F032 !WORD 0 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B394 + !WORD _B394-* + !BYTE $64,$09 ; LLB [9] + !BYTE $80 ; NOT + !BYTE $AE ; BROR _B395 + !WORD _B395-* + !BYTE $64,$09 ; LLB [9] + !BYTE $1E ; CN 15 + !BYTE $40 ; ISEQ +_B395 +_B394 + !BYTE $4C ; BRFLS _B396 + !WORD _B396-* + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $2A,$C6 ; CB 198 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _X011 +_F033 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B397 + !WORD _B397-* +_B396 +; vmsrc/apple/soscmdjit.pla: 0108: getpfx(path) // Get current path +; vmsrc/apple/soscmdjit.pla: 0109: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F034 !WORD _C002 + !BYTE $30 ; DROP +_B397 +; vmsrc/apple/soscmdjit.pla: 0110: return path + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/soscmdjit.pla: 0111: end +; vmsrc/apple/soscmdjit.pla: 0112: def dev_info(devnum, name, list, listlen)#1 + ; devnum -> [0] + ; name -> [2] + ; list -> [4] + ; listlen -> [6] +_C004 ; dev_info() +; vmsrc/apple/soscmdjit.pla: 0113: byte params[7] + ; params -> [8] +; vmsrc/apple/soscmdjit.pla: 0114: +; vmsrc/apple/soscmdjit.pla: 0115: params.0 = 4 + !BYTE $58,$0F,$04 ; ENTER 15,4 +; vmsrc/apple/soscmdjit.pla: 0116: params.1 = devnum +; vmsrc/apple/soscmdjit.pla: 0117: params:2 = name +; vmsrc/apple/soscmdjit.pla: 0118: params:4 = list +; vmsrc/apple/soscmdjit.pla: 0119: params.6 = listlen +; vmsrc/apple/soscmdjit.pla: 0120: return syscall($85, @params) + !BYTE $08 ; CN 4 + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$09 ; SLB [9] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$06 ; LLW [6] + !BYTE $74,$0E ; SLB [14] + !BYTE $2A,$85 ; CB 133 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _X011 +_F035 !WORD 0 + !BYTE $5A,$0F ; LEAVE 15 +; vmsrc/apple/soscmdjit.pla: 0121: end +; vmsrc/apple/soscmdjit.pla: 0122: def volume(devname, volname)#1 + ; devname -> [0] + ; volname -> [2] +_C005 ; volume() +; vmsrc/apple/soscmdjit.pla: 0123: byte params[9] + ; params -> [4] +; vmsrc/apple/soscmdjit.pla: 0124: +; vmsrc/apple/soscmdjit.pla: 0125: params.0 = 4 + !BYTE $58,$0D,$02 ; ENTER 13,2 +; vmsrc/apple/soscmdjit.pla: 0126: params:1 = devname +; vmsrc/apple/soscmdjit.pla: 0127: params:3 = volname +; vmsrc/apple/soscmdjit.pla: 0128: params:5 = 0 +; vmsrc/apple/soscmdjit.pla: 0129: params:7 = 0 +; vmsrc/apple/soscmdjit.pla: 0130: return syscall($C5, @params) + !BYTE $08 ; CN 4 + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$05 ; SLW [5] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$07 ; SLW [7] + !BYTE $00 ; CN 0 + !BYTE $76,$09 ; SLW [9] + !BYTE $00 ; CN 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $2A,$C5 ; CB 197 + !BYTE $28,$04 ; LLA [4] + !BYTE $54 ; CALL _X011 +_F036 !WORD 0 + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmdjit.pla: 0131: end +; vmsrc/apple/soscmdjit.pla: 0132: // +; vmsrc/apple/soscmdjit.pla: 0133: // Command mode +; vmsrc/apple/soscmdjit.pla: 0134: // +; vmsrc/apple/soscmdjit.pla: 0135: def volumes()#0 +_C006 ; volumes() +; vmsrc/apple/soscmdjit.pla: 0136: byte info[11] + ; info -> [0] +; vmsrc/apple/soscmdjit.pla: 0137: byte devname[17] + ; devname -> [11] +; vmsrc/apple/soscmdjit.pla: 0138: byte volname[17] + ; volname -> [28] +; vmsrc/apple/soscmdjit.pla: 0139: byte i + ; i -> [45] +; vmsrc/apple/soscmdjit.pla: 0140: +; vmsrc/apple/soscmdjit.pla: 0141: for i = $01 to $18 + !BYTE $58,$2E,$00 ; ENTER 46,0 + !BYTE $2A,$18 ; CB 24 + !BYTE $02 ; CN 1 +_B399 + !BYTE $6C,$2D ; DLB [45] +; vmsrc/apple/soscmdjit.pla: 0142: if dev_info(i, @devname, @info, 11) == 0 +; vmsrc/apple/soscmdjit.pla: 0143: puts(@devname) +; vmsrc/apple/soscmdjit.pla: 0144: if volume(@devname, @volname) == 0 +; vmsrc/apple/soscmdjit.pla: 0145: puts(" => /") + !BYTE $64,$2D ; LLB [45] + !BYTE $28,$0B ; LLA [11] + !BYTE $28,$00 ; LLA [0] + !BYTE $16 ; CN 11 + !BYTE $54 ; CALL _C004 +_F037 !WORD _C004 + !BYTE $4E ; BRTRU _B401 + !WORD _B401-* + !BYTE $28,$0B ; LLA [11] + !BYTE $54 ; CALL _X004 +_F038 !WORD 0 + !BYTE $28,$0B ; LLA [11] + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _C005 +_F039 !WORD _C005 + !BYTE $4E ; BRTRU _B403 + !WORD _B403-* + !BYTE $2E ; CS + !BYTE $05 + !BYTE $20,$3D,$3E,$20,$2F + !BYTE $54 ; CALL _X004 +_F040 !WORD 0 +; vmsrc/apple/soscmdjit.pla: 0146: puts(@volname) +; vmsrc/apple/soscmdjit.pla: 0147: putc('/') +; vmsrc/apple/soscmdjit.pla: 0148: fin + !BYTE $28,$1C ; LLA [28] + !BYTE $54 ; CALL _X004 +_F041 !WORD 0 + !BYTE $2A,$2F ; CB 47 + !BYTE $54 ; CALL _X002 +_F042 !WORD 0 +_B403 +_B404 +; vmsrc/apple/soscmdjit.pla: 0149: putln +; vmsrc/apple/soscmdjit.pla: 0150: fin + !BYTE $54 ; CALL _X003 +_F043 !WORD 0 +_B401 +_B402 +; vmsrc/apple/soscmdjit.pla: 0151: next +_B400 + !BYTE $A4 ; INCBRLE _B399 + !WORD _B399-* +_B398 + !BYTE $74,$2D ; SLB [45] + !BYTE $30 ; DROP +; vmsrc/apple/soscmdjit.pla: 0152: end + !BYTE $5A,$2E ; LEAVE 46 +; vmsrc/apple/soscmdjit.pla: 0153: def catalog(path)#0 + ; path -> [0] +_C007 ; catalog() +; vmsrc/apple/soscmdjit.pla: 0154: byte refnum + ; refnum -> [2] +; vmsrc/apple/soscmdjit.pla: 0155: byte firstblk + ; firstblk -> [3] +; vmsrc/apple/soscmdjit.pla: 0156: byte entrylen, entriesblk + ; entrylen -> [4] + ; entriesblk -> [5] +; vmsrc/apple/soscmdjit.pla: 0157: byte i, type, len + ; i -> [6] + ; type -> [7] + ; len -> [8] +; vmsrc/apple/soscmdjit.pla: 0158: word entry, catptr + ; entry -> [9] + ; catptr -> [11] +; vmsrc/apple/soscmdjit.pla: 0159: +; vmsrc/apple/soscmdjit.pla: 0160: if !^path + !BYTE $58,$0D,$01 ; ENTER 13,1 +; vmsrc/apple/soscmdjit.pla: 0161: getpfx(path) +; vmsrc/apple/soscmdjit.pla: 0162: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B405 + !WORD _B405-* + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C002 +_F044 !WORD _C002 + !BYTE $30 ; DROP +_B405 +_B406 +; vmsrc/apple/soscmdjit.pla: 0163: refnum = cmdsys:sysopen(path) +; vmsrc/apple/soscmdjit.pla: 0164: if not refnum +; vmsrc/apple/soscmdjit.pla: 0165: return + !BYTE $66,$00 ; LLW [0] + !BYTE $6A ; LAW _X000+8 +_F045 !WORD 0+8 + !BYTE $56 ; ICAL + !BYTE $6C,$02 ; DLB [2] + !BYTE $4E ; BRTRU _B407 + !WORD _B407-* + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmdjit.pla: 0166: fin +_B407 +_B408 +; vmsrc/apple/soscmdjit.pla: 0167: catptr = heapmark +; vmsrc/apple/soscmdjit.pla: 0168: firstblk = 1 +; vmsrc/apple/soscmdjit.pla: 0169: while cmdsys:sysread(refnum, catptr, 512) == 512 + !BYTE $54 ; CALL _X012 +_F046 !WORD 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $02 ; CN 1 + !BYTE $74,$03 ; SLB [3] + !BYTE $50 ; BRNCH _B411 + !WORD _B411-* +_B409 +; vmsrc/apple/soscmdjit.pla: 0170: entry = catptr + 4 +; vmsrc/apple/soscmdjit.pla: 0171: if firstblk +; vmsrc/apple/soscmdjit.pla: 0172: entrylen = catptr->$23 +; vmsrc/apple/soscmdjit.pla: 0173: entriesblk = catptr->$24 - 1 +; vmsrc/apple/soscmdjit.pla: 0174: entry = entry + entrylen +; vmsrc/apple/soscmdjit.pla: 0175: fin + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$09 ; SLW [9] + !BYTE $64,$03 ; LLB [3] + !BYTE $4C ; BRFLS _B412 + !WORD _B412-* + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$23 ; ADDI 35 + !BYTE $60 ; LB + !BYTE $74,$04 ; SLB [4] + !BYTE $66,$0B ; LLW [11] + !BYTE $38,$24 ; ADDI 36 + !BYTE $60 ; LB + !BYTE $8E ; DECR + !BYTE $74,$05 ; SLB [5] + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B412 +_B413 +; vmsrc/apple/soscmdjit.pla: 0176: for i = firstblk to entriesblk + !BYTE $64,$05 ; LLB [5] + !BYTE $64,$03 ; LLB [3] + !BYTE $A0 ; BRGT _B414 + !WORD _B414-* +_B415 + !BYTE $6C,$06 ; DLB [6] +; vmsrc/apple/soscmdjit.pla: 0177: if ^entry +; vmsrc/apple/soscmdjit.pla: 0178: ^entry = ^entry & $0F +; vmsrc/apple/soscmdjit.pla: 0179: puts(entry) +; vmsrc/apple/soscmdjit.pla: 0180: type = ' ' +; vmsrc/apple/soscmdjit.pla: 0181: when entry->$10 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B417 + !WORD _B417-* + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $3C,$0F ; ANDI 15 + !BYTE $66,$09 ; LLW [9] + !BYTE $70 ; SB + !BYTE $66,$09 ; LLW [9] + !BYTE $54 ; CALL _X004 +_F047 !WORD 0 + !BYTE $2A,$20 ; CB 32 + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$09 ; LLW [9] + !BYTE $38,$10 ; ADDI 16 + !BYTE $60 ; LB + !BYTE $52 ; SEL + !WORD _B420-* +; vmsrc/apple/soscmdjit.pla: 0182: is $0F // Is it a directory? +_B421 +; vmsrc/apple/soscmdjit.pla: 0183: type = '/' +; vmsrc/apple/soscmdjit.pla: 0184: break + !BYTE $2A,$2F ; CB 47 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B419 + !WORD _B419-* +; vmsrc/apple/soscmdjit.pla: 0185: is $FF // SYSTEM file +_B422 +; vmsrc/apple/soscmdjit.pla: 0186: type = '-' +; vmsrc/apple/soscmdjit.pla: 0187: break + !BYTE $2A,$2D ; CB 45 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B419 + !WORD _B419-* +; vmsrc/apple/soscmdjit.pla: 0188: is $FE // REL file +_B423 +; vmsrc/apple/soscmdjit.pla: 0189: type = '+' +; vmsrc/apple/soscmdjit.pla: 0190: wend + !BYTE $2A,$2B ; CB 43 + !BYTE $74,$07 ; SLB [7] + !BYTE $50 ; BRNCH _B419 + !WORD _B419-* +_B420 + !BYTE $03 ; CASEBLOCK + !WORD $000F + !WORD _B421-* + !WORD $00FE + !WORD _B423-* + !WORD $00FF + !WORD _B422-* +_B419 +; vmsrc/apple/soscmdjit.pla: 0191: putc(type) +; vmsrc/apple/soscmdjit.pla: 0192: for len = ^entry to 18 + !BYTE $64,$07 ; LLB [7] + !BYTE $54 ; CALL _X002 +_F048 !WORD 0 + !BYTE $2A,$12 ; CB 18 + !BYTE $66,$09 ; LLW [9] + !BYTE $60 ; LB + !BYTE $A0 ; BRGT _B424 + !WORD _B424-* +_B425 + !BYTE $6C,$08 ; DLB [8] +; vmsrc/apple/soscmdjit.pla: 0193: putc(' ') +; vmsrc/apple/soscmdjit.pla: 0194: next + !BYTE $2A,$20 ; CB 32 + !BYTE $54 ; CALL _X002 +_F049 !WORD 0 +_B426 + !BYTE $A4 ; INCBRLE _B425 + !WORD _B425-* +_B424 + !BYTE $74,$08 ; SLB [8] + !BYTE $30 ; DROP +; vmsrc/apple/soscmdjit.pla: 0195: fin +_B417 +_B418 +; vmsrc/apple/soscmdjit.pla: 0196: entry = entry + entrylen +; vmsrc/apple/soscmdjit.pla: 0197: next + !BYTE $66,$09 ; LLW [9] + !BYTE $B0,$04 ; ADDLB [4] + !BYTE $76,$09 ; SLW [9] +_B416 + !BYTE $A4 ; INCBRLE _B415 + !WORD _B415-* +_B414 + !BYTE $74,$06 ; SLB [6] + !BYTE $30 ; DROP +; vmsrc/apple/soscmdjit.pla: 0198: firstblk = 0 +; vmsrc/apple/soscmdjit.pla: 0199: loop + !BYTE $00 ; CN 0 + !BYTE $74,$03 ; SLB [3] +_B411 + !BYTE $64,$02 ; LLB [2] + !BYTE $66,$0B ; LLW [11] + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $6A ; LAW _X000+12 +_F050 !WORD 0+12 + !BYTE $56 ; ICAL + !BYTE $2C,$00,$02 ; CW 512 + !BYTE $22 ; BREQ _B409 + !WORD _B409-* +_B410 +; vmsrc/apple/soscmdjit.pla: 0200: cmdsys:sysclose(refnum) +; vmsrc/apple/soscmdjit.pla: 0201: putln() +; vmsrc/apple/soscmdjit.pla: 0202: end + !BYTE $64,$02 ; LLB [2] + !BYTE $6A ; LAW _X000+10 +_F051 !WORD 0+10 + !BYTE $56 ; ICAL + !BYTE $30 ; DROP + !BYTE $54 ; CALL _X003 +_F052 !WORD 0 + !BYTE $5A,$0D ; LEAVE 13 +; vmsrc/apple/soscmdjit.pla: 0203: def stripchars(strptr)#1 + ; strptr -> [0] +_C008 ; stripchars() +; vmsrc/apple/soscmdjit.pla: 0204: while ^strptr and ^(strptr + 1) > ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B429 + !WORD _B429-* +_B427 +; vmsrc/apple/soscmdjit.pla: 0205: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmdjit.pla: 0206: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F053 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmdjit.pla: 0207: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B429 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B430 + !WORD _B430-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $44 ; ISGT +_B430 + !BYTE $4E ; BRTRU _B427 + !WORD _B427-* +_B428 +; vmsrc/apple/soscmdjit.pla: 0208: return ^strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/soscmdjit.pla: 0209: end +; vmsrc/apple/soscmdjit.pla: 0210: def stripspaces(strptr)#0 + ; strptr -> [0] +_C009 ; stripspaces() +; vmsrc/apple/soscmdjit.pla: 0211: while ^strptr and ^(strptr + ^strptr) <= ' ' + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $50 ; BRNCH _B433 + !WORD _B433-* +_B431 +; vmsrc/apple/soscmdjit.pla: 0212: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmdjit.pla: 0213: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B433 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B434 + !WORD _B434-* + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B434 + !BYTE $4E ; BRTRU _B431 + !WORD _B431-* +_B432 +; vmsrc/apple/soscmdjit.pla: 0214: while ^strptr and ^(strptr + 1) <= ' ' + !BYTE $50 ; BRNCH _B437 + !WORD _B437-* +_B435 +; vmsrc/apple/soscmdjit.pla: 0215: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmdjit.pla: 0216: ^strptr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F054 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmdjit.pla: 0217: loop + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B437 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B438 + !WORD _B438-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE +_B438 + !BYTE $4E ; BRTRU _B435 + !WORD _B435-* +_B436 +; vmsrc/apple/soscmdjit.pla: 0218: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/soscmdjit.pla: 0219: def striptrail(strptr)#1 + ; strptr -> [0] +_C010 ; striptrail() +; vmsrc/apple/soscmdjit.pla: 0220: byte i + ; i -> [2] +; vmsrc/apple/soscmdjit.pla: 0221: +; vmsrc/apple/soscmdjit.pla: 0222: for i = 1 to ^strptr + !BYTE $58,$03,$01 ; ENTER 3,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $02 ; CN 1 + !BYTE $A0 ; BRGT _B439 + !WORD _B439-* +_B440 + !BYTE $6C,$02 ; DLB [2] +; vmsrc/apple/soscmdjit.pla: 0223: if ^(strptr + i) <= ' ' +; vmsrc/apple/soscmdjit.pla: 0224: ^strptr = i - 1 +; vmsrc/apple/soscmdjit.pla: 0225: break + !BYTE $66,$00 ; LLW [0] + !BYTE $B0,$02 ; ADDLB [2] + !BYTE $60 ; LB + !BYTE $2A,$20 ; CB 32 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B442 + !WORD _B442-* + !BYTE $64,$02 ; LLB [2] + !BYTE $8E ; DECR + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $50 ; BRNCH _B439 + !WORD _B439-* +; vmsrc/apple/soscmdjit.pla: 0226: fin +_B442 +_B443 +; vmsrc/apple/soscmdjit.pla: 0227: next +_B441 + !BYTE $A4 ; INCBRLE _B440 + !WORD _B440-* +_B439 + !BYTE $74,$02 ; SLB [2] + !BYTE $30 ; DROP +; vmsrc/apple/soscmdjit.pla: 0228: return strptr + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/soscmdjit.pla: 0229: end +; vmsrc/apple/soscmdjit.pla: 0230: def parsecmd(strptr)#1 + ; strptr -> [0] +_C011 ; parsecmd() +; vmsrc/apple/soscmdjit.pla: 0231: byte cmd + ; cmd -> [2] +; vmsrc/apple/soscmdjit.pla: 0232: +; vmsrc/apple/soscmdjit.pla: 0233: cmd = 0 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/soscmdjit.pla: 0234: stripspaces(strptr) +; vmsrc/apple/soscmdjit.pla: 0235: if ^strptr +; vmsrc/apple/soscmdjit.pla: 0236: cmd = ^(strptr + 1) +; vmsrc/apple/soscmdjit.pla: 0237: memcpy(strptr + 1, strptr + 2, ^strptr) +; vmsrc/apple/soscmdjit.pla: 0238: ^strptr-- + !BYTE $00 ; CN 0 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F055 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B444 + !WORD _B444-* + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $38,$02 ; ADDI 2 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _X018 +_F056 !WORD 0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $8E ; DECR +; vmsrc/apple/soscmdjit.pla: 0239: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB +_B444 +_B445 +; vmsrc/apple/soscmdjit.pla: 0240: stripspaces(strptr) +; vmsrc/apple/soscmdjit.pla: 0241: return cmd + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F057 !WORD _C009 + !BYTE $64,$02 ; LLB [2] + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/soscmdjit.pla: 0242: end +; vmsrc/apple/soscmdjit.pla: 0243: // +; vmsrc/apple/soscmdjit.pla: 0244: // Command line handler +; vmsrc/apple/soscmdjit.pla: 0245: // +; vmsrc/apple/soscmdjit.pla: 0246: def shell#1 +_C012 ; shell() +; vmsrc/apple/soscmdjit.pla: 0247: byte textmode[3] + ; textmode -> [0] +; vmsrc/apple/soscmdjit.pla: 0248: byte prefix[64] + ; prefix -> [3] +; vmsrc/apple/soscmdjit.pla: 0249: byte err[] + ; err -> [67] +; vmsrc/apple/soscmdjit.pla: 0250: word cmdptr + ; cmdptr -> [67] +; vmsrc/apple/soscmdjit.pla: 0251: +; vmsrc/apple/soscmdjit.pla: 0252: // +; vmsrc/apple/soscmdjit.pla: 0253: // Copy AUTORUN commmand line +; vmsrc/apple/soscmdjit.pla: 0254: // +; vmsrc/apple/soscmdjit.pla: 0255: cmdptr = strcpy(heapmark, cmdsys:cmdline) + !BYTE $58,$45,$00 ; ENTER 69,0 +; vmsrc/apple/soscmdjit.pla: 0256: // +; vmsrc/apple/soscmdjit.pla: 0257: // Handle commands. +; vmsrc/apple/soscmdjit.pla: 0258: // +; vmsrc/apple/soscmdjit.pla: 0259: getpfx(@prefix)) +; vmsrc/apple/soscmdjit.pla: 0260: repeat + !BYTE $54 ; CALL _X012 +_F058 !WORD 0 + !BYTE $6A ; LAW _X000+4 +_F059 !WORD 0+4 + !BYTE $54 ; CALL _X019 +_F060 !WORD 0 + !BYTE $76,$43 ; SLW [67] + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C002 +_F061 !WORD _C002 + !BYTE $30 ; DROP +_B447 +; vmsrc/apple/soscmdjit.pla: 0261: if ^cmdptr +; vmsrc/apple/soscmdjit.pla: 0262: when toupper(parsecmd(cmdptr)) + !BYTE $66,$43 ; LLW [67] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B449 + !WORD _B449-* + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C011 +_F062 !WORD _C011 + !BYTE $54 ; CALL _X021 +_F063 !WORD 0 + !BYTE $52 ; SEL + !WORD _B452-* +; vmsrc/apple/soscmdjit.pla: 0263: is 'C' +_B453 +; vmsrc/apple/soscmdjit.pla: 0264: catalog(cmdptr) +; vmsrc/apple/soscmdjit.pla: 0265: break + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C007 +_F064 !WORD _C007 + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0266: is 'P' +_B454 +; vmsrc/apple/soscmdjit.pla: 0267: if ^cmdptr and ^(cmdptr + 1) <> '/' +; vmsrc/apple/soscmdjit.pla: 0268: strcat(@prefix, cmdptr) +; vmsrc/apple/soscmdjit.pla: 0269: else + !BYTE $66,$43 ; LLW [67] + !BYTE $60 ; LB + !BYTE $AC ; BRAND _B455 + !WORD _B455-* + !BYTE $66,$43 ; LLW [67] + !BYTE $8C ; INCR + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $42 ; ISNE +_B455 + !BYTE $4C ; BRFLS _B456 + !WORD _B456-* + !BYTE $28,$03 ; LLA [3] + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X020 +_F065 !WORD 0 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B457 + !WORD _B457-* +_B456 +; vmsrc/apple/soscmdjit.pla: 0270: strcpy(@prefix, cmdptr) +; vmsrc/apple/soscmdjit.pla: 0271: fin + !BYTE $28,$03 ; LLA [3] + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X019 +_F066 !WORD 0 + !BYTE $30 ; DROP +_B457 +; vmsrc/apple/soscmdjit.pla: 0272: setpfx(@prefix) +; vmsrc/apple/soscmdjit.pla: 0273: break + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C003 +_F067 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0274: is '/' +_B458 +; vmsrc/apple/soscmdjit.pla: 0275: repeat +_B460 +; vmsrc/apple/soscmdjit.pla: 0276: prefix-- + !BYTE $64,$03 ; LLB [3] + !BYTE $8E ; DECR +; vmsrc/apple/soscmdjit.pla: 0277: until prefix[prefix] == '/' + !BYTE $74,$03 ; SLB [3] +_B461 + !BYTE $28,$03 ; LLA [3] + !BYTE $B0,$03 ; ADDLB [3] + !BYTE $60 ; LB + !BYTE $2A,$2F ; CB 47 + !BYTE $24 ; BRNE _B460 + !WORD _B460-* +_B459 +; vmsrc/apple/soscmdjit.pla: 0278: if prefix > 1 +; vmsrc/apple/soscmdjit.pla: 0279: setpfx(@prefix) +; vmsrc/apple/soscmdjit.pla: 0280: fin + !BYTE $64,$03 ; LLB [3] + !BYTE $02 ; CN 1 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B462 + !WORD _B462-* + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C003 +_F068 !WORD _C003 + !BYTE $30 ; DROP +_B462 +_B463 +; vmsrc/apple/soscmdjit.pla: 0281: break + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0282: is 'S' +_B464 +; vmsrc/apple/soscmdjit.pla: 0283: setpfx(cmdptr) +; vmsrc/apple/soscmdjit.pla: 0284: strcat(getpfx(cmdsys:syspath), "SYS/")) + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C003 +_F069 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _X000+2 +_F070 !WORD 0+2 + !BYTE $54 ; CALL _C002 +_F071 !WORD _C002 + !BYTE $2E ; CS + !BYTE $04 + !BYTE $53,$59,$53,$2F + !BYTE $54 ; CALL _X020 +_F072 !WORD 0 + !BYTE $30 ; DROP +; vmsrc/apple/soscmdjit.pla: 0285: break + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0286: is 'V' +_B465 +; vmsrc/apple/soscmdjit.pla: 0287: volumes +; vmsrc/apple/soscmdjit.pla: 0288: break + !BYTE $54 ; CALL _C006 +_F073 !WORD _C006 + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0289: is '+' +_B466 +; vmsrc/apple/soscmdjit.pla: 0290: *jitcodeptr = jitcbuf +; vmsrc/apple/soscmdjit.pla: 0291: return striptrail(cmdptr) + !BYTE $2C,$00,$90 ; CW 36864 + !BYTE $7A,$F4,$A0 ; SAW 41204 + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _C010 +_F074 !WORD _C010 + !BYTE $5A,$45 ; LEAVE 69 +; vmsrc/apple/soscmdjit.pla: 0292: break + !BYTE $50 ; BRNCH _B451 + !WORD _B451-* +; vmsrc/apple/soscmdjit.pla: 0293: otherwise +_B452 + !BYTE $06 ; CASEBLOCK + !WORD $002B + !WORD _B466-* + !WORD $002F + !WORD _B458-* + !WORD $0043 + !WORD _B453-* + !WORD $0050 + !WORD _B454-* + !WORD $0053 + !WORD _B464-* + !WORD $0056 + !WORD _B465-* +; vmsrc/apple/soscmdjit.pla: 0294: puts("?\n") + !BYTE $2E ; CS + !BYTE $02 + !BYTE $3F,$0D + !BYTE $54 ; CALL _X004 +_F075 !WORD 0 +; vmsrc/apple/soscmdjit.pla: 0295: wend +_B451 +; vmsrc/apple/soscmdjit.pla: 0296: if cmdsys.syserr +; vmsrc/apple/soscmdjit.pla: 0297: err = cmdsys.syserr +; vmsrc/apple/soscmdjit.pla: 0298: puts("ERR:$") + !BYTE $68 ; LAB _X000+16 +_F076 !WORD 0+16 + !BYTE $4C ; BRFLS _B467 + !WORD _B467-* + !BYTE $68 ; LAB _X000+16 +_F077 !WORD 0+16 + !BYTE $74,$43 ; SLB [67] + !BYTE $2E ; CS + !BYTE $05 + !BYTE $45,$52,$52,$3A,$24 + !BYTE $54 ; CALL _X004 +_F078 !WORD 0 +; vmsrc/apple/soscmdjit.pla: 0299: putb(err) +; vmsrc/apple/soscmdjit.pla: 0300: else + !BYTE $64,$43 ; LLB [67] + !BYTE $54 ; CALL _X008 +_F079 !WORD 0 + !BYTE $50 ; BRNCH _B468 + !WORD _B468-* +_B467 +; vmsrc/apple/soscmdjit.pla: 0301: puts("OK") + !BYTE $2E ; CS + !BYTE $02 + !BYTE $4F,$4B + !BYTE $54 ; CALL _X004 +_F080 !WORD 0 +; vmsrc/apple/soscmdjit.pla: 0302: fin +_B468 +; vmsrc/apple/soscmdjit.pla: 0303: putln +; vmsrc/apple/soscmdjit.pla: 0304: fin + !BYTE $54 ; CALL _X003 +_F081 !WORD 0 +_B449 +_B450 +; vmsrc/apple/soscmdjit.pla: 0305: puts(getpfx(@prefix)) +; vmsrc/apple/soscmdjit.pla: 0306: cmdptr = gets($BA) +; vmsrc/apple/soscmdjit.pla: 0307: strcpy(cmdsys:cmdline, cmdptr) +; vmsrc/apple/soscmdjit.pla: 0308: until 0 + !BYTE $28,$03 ; LLA [3] + !BYTE $54 ; CALL _C002 +_F082 !WORD _C002 + !BYTE $54 ; CALL _X004 +_F083 !WORD 0 + !BYTE $2A,$BA ; CB 186 + !BYTE $54 ; CALL _X007 +_F084 !WORD 0 + !BYTE $76,$43 ; SLW [67] + !BYTE $6A ; LAW _X000+4 +_F085 !WORD 0+4 + !BYTE $66,$43 ; LLW [67] + !BYTE $54 ; CALL _X019 +_F086 !WORD 0 + !BYTE $30 ; DROP +_B448 + !BYTE $50 ; BRNCH _B447 + !WORD _B447-* +_B446 +; vmsrc/apple/soscmdjit.pla: 0309: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$45 ; LEAVE 69 +; vmsrc/apple/soscmdjit.pla: 0310: end +; vmsrc/apple/soscmdjit.pla: 0311: // +; vmsrc/apple/soscmdjit.pla: 0312: // Save pointer to command line handler +; vmsrc/apple/soscmdjit.pla: 0313: // +; vmsrc/apple/soscmdjit.pla: 0314: *cmdparser = @shell +_INIT +; vmsrc/apple/soscmdjit.pla: 0315: // +; vmsrc/apple/soscmdjit.pla: 0316: // Install JIT compiler +; vmsrc/apple/soscmdjit.pla: 0317: // +; vmsrc/apple/soscmdjit.pla: 0318: directentry = *sinterp +; vmsrc/apple/soscmdjit.pla: 0319: indirectentry = *xinterp +; vmsrc/apple/soscmdjit.pla: 0320: *jitcomp = @compiler +; vmsrc/apple/soscmdjit.pla: 0321: cmdsys.jitcount = 32 +; vmsrc/apple/soscmdjit.pla: 0322: cmdsys.jitsize = 96 +; vmsrc/apple/soscmdjit.pla: 0323: done + !BYTE $26 ; LA _C012+0 +_F087 !WORD _C012+0 + !BYTE $7A,$F0,$A0 ; SAW 41200 + !BYTE $6A,$F6,$A0 ; LAW 41206 + !BYTE $7A ; SAW _D028+0 +_F088 !WORD _D028+0 + !BYTE $6A,$F8,$A0 ; LAW 41208 + !BYTE $7A ; SAW _D029+0 +_F089 !WORD _D029+0 + !BYTE $26 ; LA _C001+0 +_F090 !WORD _C001+0 + !BYTE $7A,$F2,$A0 ; SAW 41202 + !BYTE $2A,$20 ; CB 32 + !BYTE $78 ; SAB _X000+17 +_F091 !WORD 0+17 + !BYTE $2A,$60 ; CB 96 + !BYTE $78 ; SAB _X000+18 +_F092 !WORD 0+18 + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_DEFCNT = 14 +_SEGEND +; +; RE-LOCATEABLE DICTIONARY +; + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C000 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C001 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C002 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C003 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C004 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C005 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C006 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C007 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C008 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C009 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C010 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C011 + !BYTE $00 + !BYTE $02 ; CODE TABLE FIXUP + !WORD _C012 + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F000-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F001-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F002-_SEGBEGIN + !BYTE 16 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F003-_SEGBEGIN + !BYTE 26 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F004-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F005-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F006-_SEGBEGIN + !BYTE 17 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F007-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F008-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F009-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F010-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F011-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F012-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F013-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F014-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F015-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F016-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F017-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F018-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F019-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F020-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F021-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F022-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F023-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F024-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F025-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F026-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F027-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F028-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F029-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F030-_SEGBEGIN + !BYTE 27 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F031-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F032-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F033-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F034-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F035-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F036-_SEGBEGIN + !BYTE 11 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F037-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F038-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F039-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F040-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F041-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F042-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F043-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F044-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F045-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F046-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F047-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F048-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F049-_SEGBEGIN + !BYTE 2 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F050-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F051-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F052-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F053-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F054-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F055-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F056-_SEGBEGIN + !BYTE 18 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F057-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F058-_SEGBEGIN + !BYTE 12 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F059-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F060-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F061-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F062-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F063-_SEGBEGIN + !BYTE 21 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F064-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F065-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F066-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F067-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F068-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F069-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F070-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F071-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F072-_SEGBEGIN + !BYTE 20 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F073-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F074-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F075-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F076-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F077-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F078-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F079-_SEGBEGIN + !BYTE 8 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F080-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F081-_SEGBEGIN + !BYTE 3 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F082-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F083-_SEGBEGIN + !BYTE 4 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F084-_SEGBEGIN + !BYTE 7 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F085-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F086-_SEGBEGIN + !BYTE 19 ; ESD INDEX + !BYTE $81 ; INTERNAL FIXUP + !WORD _F087-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F088-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F089-_SEGBEGIN + !BYTE $00 + !BYTE $81 ; INTERNAL FIXUP + !WORD _F090-_SEGBEGIN + !BYTE $00 + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F091-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $91 ; EXTERNAL FIXUP + !WORD _F092-_SEGBEGIN + !BYTE 0 ; ESD INDEX + !BYTE $00 ; END OF RLD +; +; EXTERNAL/ENTRY SYMBOL DICTIONARY +; + ; DCI STRING: CMDSYS + !BYTE $C3,$CD,$C4,$D3,$D9,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 0 ; ESD INDEX + ; DCI STRING: PUTC + !BYTE $D0,$D5,$D4,$43 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 2 ; ESD INDEX + ; DCI STRING: PUTLN + !BYTE $D0,$D5,$D4,$CC,$4E + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 3 ; ESD INDEX + ; DCI STRING: PUTS + !BYTE $D0,$D5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 4 ; ESD INDEX + ; DCI STRING: GETS + !BYTE $C7,$C5,$D4,$53 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 7 ; ESD INDEX + ; DCI STRING: PUTB + !BYTE $D0,$D5,$D4,$42 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 8 ; ESD INDEX + ; DCI STRING: SYSCALL + !BYTE $D3,$D9,$D3,$C3,$C1,$CC,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 11 ; ESD INDEX + ; DCI STRING: HEAPMARK + !BYTE $C8,$C5,$C1,$D0,$CD,$C1,$D2,$4B + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 12 ; ESD INDEX + ; DCI STRING: HEAPAVAIL + !BYTE $C8,$C5,$C1,$D0,$C1,$D6,$C1,$C9,$4C + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 16 ; ESD INDEX + ; DCI STRING: MEMSET + !BYTE $CD,$C5,$CD,$D3,$C5,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 17 ; ESD INDEX + ; DCI STRING: MEMCPY + !BYTE $CD,$C5,$CD,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 18 ; ESD INDEX + ; DCI STRING: STRCPY + !BYTE $D3,$D4,$D2,$C3,$D0,$59 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 19 ; ESD INDEX + ; DCI STRING: STRCAT + !BYTE $D3,$D4,$D2,$C3,$C1,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 20 ; ESD INDEX + ; DCI STRING: TOUPPER + !BYTE $D4,$CF,$D5,$D0,$D0,$C5,$52 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 21 ; ESD INDEX + ; DCI STRING: ISULT + !BYTE $C9,$D3,$D5,$CC,$54 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 26 ; ESD INDEX + ; DCI STRING: ISULE + !BYTE $C9,$D3,$D5,$CC,$45 + !BYTE $10 ; EXTERNAL SYMBOL FLAG + !WORD 27 ; ESD INDEX + !BYTE $00 ; END OF ESD diff --git a/src/vmsrc/apple/sossys.a b/src/vmsrc/apple/sossys.a new file mode 100644 index 0000000..afa7856 --- /dev/null +++ b/src/vmsrc/apple/sossys.a @@ -0,0 +1,3484 @@ +; ACME COMPATIBLE OUTPUT + JMP _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/sossys.pla: 0001: const membank = $FFEF + ; membank = 65519 +; vmsrc/apple/sossys.pla: 0002: const RELADDR = $1000 + ; RELADDR = 4096 +; vmsrc/apple/sossys.pla: 0003: // +; vmsrc/apple/sossys.pla: 0004: // System flags: memory allocator screen holes. +; vmsrc/apple/sossys.pla: 0005: // +; vmsrc/apple/sossys.pla: 0006: const restxt1 = $0001 + ; restxt1 = 1 +; vmsrc/apple/sossys.pla: 0007: const restxt2 = $0002 + ; restxt2 = 2 +; vmsrc/apple/sossys.pla: 0008: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; vmsrc/apple/sossys.pla: 0009: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; vmsrc/apple/sossys.pla: 0010: const reshgr1 = $0010 + ; reshgr1 = 16 +; vmsrc/apple/sossys.pla: 0011: const reshgr2 = $0020 + ; reshgr2 = 32 +; vmsrc/apple/sossys.pla: 0012: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; vmsrc/apple/sossys.pla: 0013: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; vmsrc/apple/sossys.pla: 0014: // +; vmsrc/apple/sossys.pla: 0015: // Module don't free memory +; vmsrc/apple/sossys.pla: 0016: // +; vmsrc/apple/sossys.pla: 0017: const modkeep = $2000 + ; modkeep = 8192 +; vmsrc/apple/sossys.pla: 0018: const modinitkeep = $4000 + ; modinitkeep = 16384 +; vmsrc/apple/sossys.pla: 0019: // +; vmsrc/apple/sossys.pla: 0020: // Private addresses +; vmsrc/apple/sossys.pla: 0021: // +; vmsrc/apple/sossys.pla: 0022: const instr = $A020 + ; instr = 40992 +; vmsrc/apple/sossys.pla: 0023: const cmdparser = $A0F0 + ; cmdparser = 41200 +; vmsrc/apple/sossys.pla: 0024: const xinterp = $A0F8 + ; xinterp = 41208 +; vmsrc/apple/sossys.pla: 0025: // +; vmsrc/apple/sossys.pla: 0026: // Indirect interpreter DEFinition entrypoint +; vmsrc/apple/sossys.pla: 0027: // +; vmsrc/apple/sossys.pla: 0028: struc t_defentry +; vmsrc/apple/sossys.pla: 0029: byte interpjsr + ; interpjsr = 0 +; vmsrc/apple/sossys.pla: 0030: word interpaddr + ; interpaddr = 1 +; vmsrc/apple/sossys.pla: 0031: word bytecodeaddr + ; bytecodeaddr = 3 +; vmsrc/apple/sossys.pla: 0032: byte bytecodexbyte + ; bytecodexbyte = 5 +; vmsrc/apple/sossys.pla: 0033: end + ; t_defentry = 6 +; vmsrc/apple/sossys.pla: 0034: // +; vmsrc/apple/sossys.pla: 0035: // Pedefined functions. +; vmsrc/apple/sossys.pla: 0036: // +; vmsrc/apple/sossys.pla: 0037: predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 +; vmsrc/apple/sossys.pla: 0038: predef crout()#0, cout(c)#0, prstr(s)#0, print(i)#0, prbyte(b)#0, prword(w)#0 +; vmsrc/apple/sossys.pla: 0039: predef cin()#1, rdstr(p)#1, toupper(c)#1, strcpy(dst,src)#1, strcat(dst,src)#1 +; vmsrc/apple/sossys.pla: 0040: predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr), releaseheap(newheap)#1, availheap()#1 +; vmsrc/apple/sossys.pla: 0041: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0 +; vmsrc/apple/sossys.pla: 0042: predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2 +; vmsrc/apple/sossys.pla: 0043: predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buff, len)#1, write(refnum, buff, len)#1 +; vmsrc/apple/sossys.pla: 0044: // +; vmsrc/apple/sossys.pla: 0045: // Exported CMDSYS table +; vmsrc/apple/sossys.pla: 0046: // +; vmsrc/apple/sossys.pla: 0047: word version = $0200 // 02.00 +_D031 ; version = $0200 // 02.00 + !WORD $0200 +; vmsrc/apple/sossys.pla: 0048: word syspath +_D032 !FILL 2 ; syspath +; vmsrc/apple/sossys.pla: 0049: word cmdlnptr +_D033 !FILL 2 ; cmdlnptr +; vmsrc/apple/sossys.pla: 0050: word = @execmod, @open, @close, @read, @write +_F000 !WORD _P026 +_F001 !WORD _P027 +_F002 !WORD _P028 +_F003 !WORD _P029 +_F004 !WORD _P030 +; vmsrc/apple/sossys.pla: 0051: byte perr +_D034 !FILL 1 ; perr +; vmsrc/apple/sossys.pla: 0052: byte jitcount = 0 // Keep these here for compatibility +_D035 ; jitcount = 0 // Keep these here for compatibility + !BYTE $00 +; vmsrc/apple/sossys.pla: 0053: byte jitsize = 0 +_D036 ; jitsize = 0 + !BYTE $00 +; vmsrc/apple/sossys.pla: 0054: byte refcons = 0 +_D037 ; refcons = 0 + !BYTE $00 +; vmsrc/apple/sossys.pla: 0055: byte devcons = 0 +_D038 ; devcons = 0 + !BYTE $00 +; vmsrc/apple/sossys.pla: 0056: // +; vmsrc/apple/sossys.pla: 0057: // String pool. +; vmsrc/apple/sossys.pla: 0058: // +; vmsrc/apple/sossys.pla: 0059: byte hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +_D039 ; hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + !BYTE $30 + !BYTE $31 + !BYTE $32 + !BYTE $33 + !BYTE $34 + !BYTE $35 + !BYTE $36 + !BYTE $37 + !BYTE $38 + !BYTE $39 + !BYTE $41 + !BYTE $42 + !BYTE $43 + !BYTE $44 + !BYTE $45 + !BYTE $46 +; vmsrc/apple/sossys.pla: 0060: // +; vmsrc/apple/sossys.pla: 0061: // Exported Machine ID. +; vmsrc/apple/sossys.pla: 0062: // +; vmsrc/apple/sossys.pla: 0063: byte machid = $F2 // Apple ///, 80 columns +_D040 ; machid = $F2 // Apple ///, 80 columns + !BYTE $F2 +; vmsrc/apple/sossys.pla: 0064: // +; vmsrc/apple/sossys.pla: 0065: // Console and textmode control characters +; vmsrc/apple/sossys.pla: 0066: // +; vmsrc/apple/sossys.pla: 0067: byte console[] = ".CONSOLE" +_D041 ; console[] = ".CONSOLE" + !BYTE $08 + !BYTE $2E,$43,$4F,$4E,$53,$4F,$4C,$45 +; vmsrc/apple/sossys.pla: 0068: byte textmode[] = 16, 0, 15 +_D042 ; textmode[] = 16, 0, 15 + !BYTE $10 + !BYTE $00 + !BYTE $0F +; vmsrc/apple/sossys.pla: 0069: +; vmsrc/apple/sossys.pla: 0070: // +; vmsrc/apple/sossys.pla: 0071: // Working input buffer overlayed with strings table +; vmsrc/apple/sossys.pla: 0072: // +; vmsrc/apple/sossys.pla: 0073: byte cmdln = "" +_D043 ; cmdln = "" + !BYTE $00 +; vmsrc/apple/sossys.pla: 0074: // +; vmsrc/apple/sossys.pla: 0075: // SOS.CMD as DCI string +; vmsrc/apple/sossys.pla: 0076: // +; vmsrc/apple/sossys.pla: 0077: byte soscmd = 'S'|$80,'O'|$80,'S'|$80,'.'|$80,'C'|$80,'M'|$80,'D' +_D044 ; soscmd = 'S'|$80,'O'|$80,'S'|$80,'.'|$80,'C'|$80,'M'|$80,'D' + !BYTE $D3 + !BYTE $CF + !BYTE $D3 + !BYTE $AE + !BYTE $C3 + !BYTE $CD + !BYTE $44 +; vmsrc/apple/sossys.pla: 0078: // +; vmsrc/apple/sossys.pla: 0079: // Standard Library exported functions. +; vmsrc/apple/sossys.pla: 0080: // +; vmsrc/apple/sossys.pla: 0081: byte sysmodstr[] = "CMDSYS" +_D045 ; sysmodstr[] = "CMDSYS" + !BYTE $06 + !BYTE $43,$4D,$44,$53,$59,$53 +; vmsrc/apple/sossys.pla: 0082: byte machidstr[] = "MACHID" +_D046 ; machidstr[] = "MACHID" + !BYTE $06 + !BYTE $4D,$41,$43,$48,$49,$44 +; vmsrc/apple/sossys.pla: 0083: byte sysstr[] = "SYSCALL" +_D047 ; sysstr[] = "SYSCALL" + !BYTE $07 + !BYTE $53,$59,$53,$43,$41,$4C,$4C +; vmsrc/apple/sossys.pla: 0084: byte callstr[] = "CALL" +_D048 ; callstr[] = "CALL" + !BYTE $04 + !BYTE $43,$41,$4C,$4C +; vmsrc/apple/sossys.pla: 0085: byte putcstr[] = "PUTC" +_D049 ; putcstr[] = "PUTC" + !BYTE $04 + !BYTE $50,$55,$54,$43 +; vmsrc/apple/sossys.pla: 0086: byte putlnstr[] = "PUTLN" +_D050 ; putlnstr[] = "PUTLN" + !BYTE $05 + !BYTE $50,$55,$54,$4C,$4E +; vmsrc/apple/sossys.pla: 0087: byte putsstr[] = "PUTS" +_D051 ; putsstr[] = "PUTS" + !BYTE $04 + !BYTE $50,$55,$54,$53 +; vmsrc/apple/sossys.pla: 0088: byte putistr[] = "PUTI" +_D052 ; putistr[] = "PUTI" + !BYTE $04 + !BYTE $50,$55,$54,$49 +; vmsrc/apple/sossys.pla: 0089: byte putbstr[] = "PUTB" +_D053 ; putbstr[] = "PUTB" + !BYTE $04 + !BYTE $50,$55,$54,$42 +; vmsrc/apple/sossys.pla: 0090: byte putwstr[] = "PUTH" +_D054 ; putwstr[] = "PUTH" + !BYTE $04 + !BYTE $50,$55,$54,$48 +; vmsrc/apple/sossys.pla: 0091: byte getcstr[] = "GETC" +_D055 ; getcstr[] = "GETC" + !BYTE $04 + !BYTE $47,$45,$54,$43 +; vmsrc/apple/sossys.pla: 0092: byte getsstr[] = "GETS" +_D056 ; getsstr[] = "GETS" + !BYTE $04 + !BYTE $47,$45,$54,$53 +; vmsrc/apple/sossys.pla: 0093: byte toupstr[] = "TOUPPER" +_D057 ; toupstr[] = "TOUPPER" + !BYTE $07 + !BYTE $54,$4F,$55,$50,$50,$45,$52 +; vmsrc/apple/sossys.pla: 0094: byte strcpystr[] = "STRCPY" +_D058 ; strcpystr[] = "STRCPY" + !BYTE $06 + !BYTE $53,$54,$52,$43,$50,$59 +; vmsrc/apple/sossys.pla: 0095: byte strcatstr[] = "STRCAT" +_D059 ; strcatstr[] = "STRCAT" + !BYTE $06 + !BYTE $53,$54,$52,$43,$41,$54 +; vmsrc/apple/sossys.pla: 0096: byte hpmarkstr[] = "HEAPMARK" +_D060 ; hpmarkstr[] = "HEAPMARK" + !BYTE $08 + !BYTE $48,$45,$41,$50,$4D,$41,$52,$4B +; vmsrc/apple/sossys.pla: 0097: byte hpalignstr[] = "HEAPALLOCALIGN" +_D061 ; hpalignstr[] = "HEAPALLOCALIGN" + !BYTE $0E + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43,$41,$4C,$49,$47,$4E +; vmsrc/apple/sossys.pla: 0098: byte hpallocstr[] = "HEAPALLOC" +_D062 ; hpallocstr[] = "HEAPALLOC" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43 +; vmsrc/apple/sossys.pla: 0099: byte hprelstr[] = "HEAPRELEASE" +_D063 ; hprelstr[] = "HEAPRELEASE" + !BYTE $0B + !BYTE $48,$45,$41,$50,$52,$45,$4C,$45 + !BYTE $41,$53,$45 +; vmsrc/apple/sossys.pla: 0100: byte hpavlstr[] = "HEAPAVAIL" +_D064 ; hpavlstr[] = "HEAPAVAIL" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$56,$41,$49 + !BYTE $4C +; vmsrc/apple/sossys.pla: 0101: byte memsetstr[] = "MEMSET" +_D065 ; memsetstr[] = "MEMSET" + !BYTE $06 + !BYTE $4D,$45,$4D,$53,$45,$54 +; vmsrc/apple/sossys.pla: 0102: byte memcpystr[] = "MEMCPY" +_D066 ; memcpystr[] = "MEMCPY" + !BYTE $06 + !BYTE $4D,$45,$4D,$43,$50,$59 +; vmsrc/apple/sossys.pla: 0103: byte uisgtstr[] = "ISUGT" +_D067 ; uisgtstr[] = "ISUGT" + !BYTE $05 + !BYTE $49,$53,$55,$47,$54 +; vmsrc/apple/sossys.pla: 0104: byte uisgestr[] = "ISUGE" +_D068 ; uisgestr[] = "ISUGE" + !BYTE $05 + !BYTE $49,$53,$55,$47,$45 +; vmsrc/apple/sossys.pla: 0105: byte uisltstr[] = "ISULT" +_D069 ; uisltstr[] = "ISULT" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$54 +; vmsrc/apple/sossys.pla: 0106: byte uislestr[] = "ISULE" +_D070 ; uislestr[] = "ISULE" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$45 +; vmsrc/apple/sossys.pla: 0107: byte sextstr[] = "SEXT" +_D071 ; sextstr[] = "SEXT" + !BYTE $04 + !BYTE $53,$45,$58,$54 +; vmsrc/apple/sossys.pla: 0108: byte divmodstr[] = "DIVMOD" +_D072 ; divmodstr[] = "DIVMOD" + !BYTE $06 + !BYTE $44,$49,$56,$4D,$4F,$44 +; vmsrc/apple/sossys.pla: 0109: word exports[] = @sysmodstr, @version +_D073 ; exports[] = @sysmodstr, @version +_F005 !WORD _D045 +_F006 !WORD _D031 +; vmsrc/apple/sossys.pla: 0110: word = @sysstr, @syscall +_F007 !WORD _D047 +_F008 !WORD _P000 +; vmsrc/apple/sossys.pla: 0111: word = @callstr, @call +_F009 !WORD _D048 +_F010 !WORD _P001 +; vmsrc/apple/sossys.pla: 0112: word = @putcstr, @cout +_F011 !WORD _D049 +_F012 !WORD _P003 +; vmsrc/apple/sossys.pla: 0113: word = @putlnstr, @crout +_F013 !WORD _D050 +_F014 !WORD _P002 +; vmsrc/apple/sossys.pla: 0114: word = @putsstr, @prstr +_F015 !WORD _D051 +_F016 !WORD _P004 +; vmsrc/apple/sossys.pla: 0115: word = @putistr, @print +_F017 !WORD _D052 +_F018 !WORD _P005 +; vmsrc/apple/sossys.pla: 0116: word = @putbstr, @prbyte +_F019 !WORD _D053 +_F020 !WORD _P006 +; vmsrc/apple/sossys.pla: 0117: word = @putwstr, @prword +_F021 !WORD _D054 +_F022 !WORD _P007 +; vmsrc/apple/sossys.pla: 0118: word = @getcstr, @cin +_F023 !WORD _D055 +_F024 !WORD _P008 +; vmsrc/apple/sossys.pla: 0119: word = @getsstr, @rdstr +_F025 !WORD _D056 +_F026 !WORD _P009 +; vmsrc/apple/sossys.pla: 0120: word = @toupstr, @toupper +_F027 !WORD _D057 +_F028 !WORD _P010 +; vmsrc/apple/sossys.pla: 0121: byte sysmods[] // overlay sys path with exports +_D074 ; sysmods[] // overlay sys path with exports +; vmsrc/apple/sossys.pla: 0122: word = @hpmarkstr, @markheap +_F029 !WORD _D060 +_F030 !WORD _P013 +; vmsrc/apple/sossys.pla: 0123: word = @hpallocstr,@allocheap +_F031 !WORD _D062 +_F032 !WORD _P014 +; vmsrc/apple/sossys.pla: 0124: word = @hpalignstr,@allocalignheap +_F033 !WORD _D061 +_F034 !WORD _P015 +; vmsrc/apple/sossys.pla: 0125: word = @hprelstr, @releaseheap +_F035 !WORD _D063 +_F036 !WORD _P016 +; vmsrc/apple/sossys.pla: 0126: word = @hpavlstr, @availheap +_F037 !WORD _D064 +_F038 !WORD _P017 +; vmsrc/apple/sossys.pla: 0127: word = @memsetstr, @memset +_F039 !WORD _D065 +_F040 !WORD _P018 +; vmsrc/apple/sossys.pla: 0128: word = @memcpystr, @memcpy +_F041 !WORD _D066 +_F042 !WORD _P019 +; vmsrc/apple/sossys.pla: 0129: word = @strcpystr, @strcpy +_F043 !WORD _D058 +_F044 !WORD _P011 +; vmsrc/apple/sossys.pla: 0130: word = @strcatstr, @strcat +_F045 !WORD _D059 +_F046 !WORD _P012 +; vmsrc/apple/sossys.pla: 0131: word = @uisgtstr, @uword_isgt +_F047 !WORD _D067 +_F048 !WORD _P020 +; vmsrc/apple/sossys.pla: 0132: word = @uisgestr, @uword_isge +_F049 !WORD _D068 +_F050 !WORD _P021 +; vmsrc/apple/sossys.pla: 0133: word = @uisltstr, @uword_islt +_F051 !WORD _D069 +_F052 !WORD _P022 +; vmsrc/apple/sossys.pla: 0134: word = @uislestr, @uword_isle +_F053 !WORD _D070 +_F054 !WORD _P023 +; vmsrc/apple/sossys.pla: 0135: word = @sextstr, @sext +_F055 !WORD _D071 +_F056 !WORD _P024 +; vmsrc/apple/sossys.pla: 0136: word = @divmodstr, @divmod +_F057 !WORD _D072 +_F058 !WORD _P025 +; vmsrc/apple/sossys.pla: 0137: word = @machidstr, @machid +_F059 !WORD _D046 +_F060 !WORD _D040 +; vmsrc/apple/sossys.pla: 0138: word = 0 + !WORD $0000 +; vmsrc/apple/sossys.pla: 0139: word sysmodsym = @exports +_D075 ; sysmodsym = @exports +_F061 !WORD _D073 +; vmsrc/apple/sossys.pla: 0140: // +; vmsrc/apple/sossys.pla: 0141: // System variables. +; vmsrc/apple/sossys.pla: 0142: // +; vmsrc/apple/sossys.pla: 0143: word systemflags = 0 +_D076 ; systemflags = 0 + !WORD $0000 +; vmsrc/apple/sossys.pla: 0144: word heap = $2000 +_D077 ; heap = $2000 + !WORD $2000 +; vmsrc/apple/sossys.pla: 0145: byte autorun[] +_D078 ; autorun[] +; vmsrc/apple/sossys.pla: 0146: byte modseg[15] +_D079 !FILL 15 ; modseg[15] +; vmsrc/apple/sossys.pla: 0147: byte modid = 0 +_D080 ; modid = 0 + !BYTE $00 +; vmsrc/apple/sossys.pla: 0148: word symtbl, lastsym +_D081 !FILL 2 ; symtbl, lastsym +_D082 !FILL 2 ; lastsym +; vmsrc/apple/sossys.pla: 0149: // +; vmsrc/apple/sossys.pla: 0150: // CALL SOS +; vmsrc/apple/sossys.pla: 0151: // SYSCALL(CMD, PARAMS) +; vmsrc/apple/sossys.pla: 0152: // +; vmsrc/apple/sossys.pla: 0153: asm syscall(cmd,params)#1 +_P000 ; syscall(cmd,params)#1() +_A000 ; syscall() +; vmsrc/apple/sossys.pla: 0154: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0155: LDY ESTKH,X + LDY ESTKH,X +; vmsrc/apple/sossys.pla: 0156: STA PARAMS + STA PARAMS +; vmsrc/apple/sossys.pla: 0157: STY PARAMS+1 + STY PARAMS+1 +; vmsrc/apple/sossys.pla: 0158: INX + INX +; vmsrc/apple/sossys.pla: 0159: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0160: STA CMD + STA CMD +; vmsrc/apple/sossys.pla: 0161: BRK + BRK +; vmsrc/apple/sossys.pla: 0162: CMD !BYTE 00 +CMD !BYTE 00 +; vmsrc/apple/sossys.pla: 0163: PARAMS !WORD 0000 +PARAMS !WORD 0000 +; vmsrc/apple/sossys.pla: 0164: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0165: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0166: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0167: RTS + RTS +; vmsrc/apple/sossys.pla: 0168: end +; vmsrc/apple/sossys.pla: 0169: // +; vmsrc/apple/sossys.pla: 0170: // CALL 6502 ROUTINE +; vmsrc/apple/sossys.pla: 0171: // CALL(AREG, XREG, YREG, STATUS, ADDR) +; vmsrc/apple/sossys.pla: 0172: // +; vmsrc/apple/sossys.pla: 0173: asm call(addr,areg,xreg,yreg,sstatus)#1 +_P001 ; call(addr,areg,xreg,yreg,sstatus)#1() +_A001 ; call() +; vmsrc/apple/sossys.pla: 0174: REGVALS = SRC +REGVALS = SRC +; vmsrc/apple/sossys.pla: 0175: PHP + PHP +; vmsrc/apple/sossys.pla: 0176: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0177: STA TMPL + STA TMPL +; vmsrc/apple/sossys.pla: 0178: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0179: STA TMPH + STA TMPH +; vmsrc/apple/sossys.pla: 0180: INX + INX +; vmsrc/apple/sossys.pla: 0181: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0182: PHA + PHA +; vmsrc/apple/sossys.pla: 0183: INX + INX +; vmsrc/apple/sossys.pla: 0184: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/sossys.pla: 0185: INX + INX +; vmsrc/apple/sossys.pla: 0186: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0187: PHA + PHA +; vmsrc/apple/sossys.pla: 0188: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0189: INX + INX +; vmsrc/apple/sossys.pla: 0190: STX ESP + STX ESP +; vmsrc/apple/sossys.pla: 0191: TAX + TAX +; vmsrc/apple/sossys.pla: 0192: PLA + PLA +; vmsrc/apple/sossys.pla: 0193: PLP + PLP +; vmsrc/apple/sossys.pla: 0194: JSR JMPTMP + JSR JMPTMP +; vmsrc/apple/sossys.pla: 0195: PHP + PHP +; vmsrc/apple/sossys.pla: 0196: STA REGVALS+0 + STA REGVALS+0 +; vmsrc/apple/sossys.pla: 0197: STX REGVALS+1 + STX REGVALS+1 +; vmsrc/apple/sossys.pla: 0198: STY REGVALS+2 + STY REGVALS+2 +; vmsrc/apple/sossys.pla: 0199: PLA + PLA +; vmsrc/apple/sossys.pla: 0200: STA REGVALS+3 + STA REGVALS+3 +; vmsrc/apple/sossys.pla: 0201: LDX ESP + LDX ESP +; vmsrc/apple/sossys.pla: 0202: LDA #REGVALS + LDY #>REGVALS +; vmsrc/apple/sossys.pla: 0204: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0205: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0206: PLP + PLP +; vmsrc/apple/sossys.pla: 0207: RTS + RTS +; vmsrc/apple/sossys.pla: 0208: end +; vmsrc/apple/sossys.pla: 0209: // +; vmsrc/apple/sossys.pla: 0210: // SET MEMORY TO VALUE +; vmsrc/apple/sossys.pla: 0211: // MEMSET(ADDR, VALUE, SIZE) +; vmsrc/apple/sossys.pla: 0212: // With optimizations from Peter Ferrie +; vmsrc/apple/sossys.pla: 0213: // +; vmsrc/apple/sossys.pla: 0214: asm memset(addr,value,size)#0 +_P018 ; memset(addr,value,size)#0() +_A002 ; memset() +; vmsrc/apple/sossys.pla: 0215: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossys.pla: 0216: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0217: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/sossys.pla: 0218: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0219: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/sossys.pla: 0220: BEQ + + BEQ + +; vmsrc/apple/sossys.pla: 0221: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/sossys.pla: 0222: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0223: + LDA ESTKH,X ++ LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0224: BEQ SETMEX + BEQ SETMEX +; vmsrc/apple/sossys.pla: 0225: SETMLPL CLC +SETMLPL CLC +; vmsrc/apple/sossys.pla: 0226: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0227: SETMLPH STA (DST),Y +SETMLPH STA (DST),Y +; vmsrc/apple/sossys.pla: 0228: DEC ESTKL,X + DEC ESTKL,X +; vmsrc/apple/sossys.pla: 0229: BEQ ++ + BEQ ++ +; vmsrc/apple/sossys.pla: 0230: - INY +- INY +; vmsrc/apple/sossys.pla: 0231: BEQ + + BEQ + +; vmsrc/apple/sossys.pla: 0232: -- BCS SETMLPL +-- BCS SETMLPL +; vmsrc/apple/sossys.pla: 0233: SEC + SEC +; vmsrc/apple/sossys.pla: 0234: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0235: BCS SETMLPH + BCS SETMLPH +; vmsrc/apple/sossys.pla: 0236: + INC DSTH ++ INC DSTH +; vmsrc/apple/sossys.pla: 0237: BNE -- + BNE -- +; vmsrc/apple/sossys.pla: 0238: ++ DEC ESTKH,X +++ DEC ESTKH,X +; vmsrc/apple/sossys.pla: 0239: BNE - + BNE - +; vmsrc/apple/sossys.pla: 0240: SETMEX INX +SETMEX INX +; vmsrc/apple/sossys.pla: 0241: INX + INX +; vmsrc/apple/sossys.pla: 0242: INX + INX +; vmsrc/apple/sossys.pla: 0243: RTS + RTS +; vmsrc/apple/sossys.pla: 0244: end +; vmsrc/apple/sossys.pla: 0245: // +; vmsrc/apple/sossys.pla: 0246: // COPY MEMORY +; vmsrc/apple/sossys.pla: 0247: // MEMCPY(DSTADDR, SRCADDR, SIZE) +; vmsrc/apple/sossys.pla: 0248: // +; vmsrc/apple/sossys.pla: 0249: asm memcpy(dst,src,size)#0 +_P019 ; memcpy(dst,src,size)#0() +_A003 ; memcpy() +; vmsrc/apple/sossys.pla: 0250: INX + INX +; vmsrc/apple/sossys.pla: 0251: INX + INX +; vmsrc/apple/sossys.pla: 0252: INX + INX +; vmsrc/apple/sossys.pla: 0253: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossys.pla: 0254: ORA ESTKH-3,X + ORA ESTKH-3,X +; vmsrc/apple/sossys.pla: 0255: BEQ CPYMEX + BEQ CPYMEX +; vmsrc/apple/sossys.pla: 0256: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/sossys.pla: 0257: CMP ESTKL-1,X + CMP ESTKL-1,X +; vmsrc/apple/sossys.pla: 0258: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/sossys.pla: 0259: SBC ESTKH-1,X + SBC ESTKH-1,X +; vmsrc/apple/sossys.pla: 0260: BCC REVCPY + BCC REVCPY +; vmsrc/apple/sossys.pla: 0261: ; +; vmsrc/apple/sossys.pla: 0262: ; FORWARD COPY +; FORWARD COPY +; vmsrc/apple/sossys.pla: 0263: ; +; vmsrc/apple/sossys.pla: 0264: LDA ESTKL-1,X + LDA ESTKL-1,X +; vmsrc/apple/sossys.pla: 0265: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0266: LDA ESTKH-1,X + LDA ESTKH-1,X +; vmsrc/apple/sossys.pla: 0267: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0268: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/sossys.pla: 0269: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0270: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/sossys.pla: 0271: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0272: LDY ESTKL-3,X + LDY ESTKL-3,X +; vmsrc/apple/sossys.pla: 0273: BEQ FORCPYLP + BEQ FORCPYLP +; vmsrc/apple/sossys.pla: 0274: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/sossys.pla: 0275: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0276: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0277: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0278: INY + INY +; vmsrc/apple/sossys.pla: 0279: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0280: INC DSTH + INC DSTH +; vmsrc/apple/sossys.pla: 0281: INC SRCH + INC SRCH +; vmsrc/apple/sossys.pla: 0282: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/sossys.pla: 0283: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/sossys.pla: 0284: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/sossys.pla: 0285: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/sossys.pla: 0286: RTS + RTS +; vmsrc/apple/sossys.pla: 0287: ; +; vmsrc/apple/sossys.pla: 0288: ; REVERSE COPY +; REVERSE COPY +; vmsrc/apple/sossys.pla: 0289: ; +; vmsrc/apple/sossys.pla: 0290: REVCPY ;CLC +REVCPY ;CLC +; vmsrc/apple/sossys.pla: 0291: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossys.pla: 0292: ADC ESTKL-1,X + ADC ESTKL-1,X +; vmsrc/apple/sossys.pla: 0293: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0294: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/sossys.pla: 0295: ADC ESTKH-1,X + ADC ESTKH-1,X +; vmsrc/apple/sossys.pla: 0296: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0297: CLC + CLC +; vmsrc/apple/sossys.pla: 0298: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossys.pla: 0299: ADC ESTKL-2,X + ADC ESTKL-2,X +; vmsrc/apple/sossys.pla: 0300: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0301: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/sossys.pla: 0302: ADC ESTKH-2,X + ADC ESTKH-2,X +; vmsrc/apple/sossys.pla: 0303: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0304: DEC DSTH + DEC DSTH +; vmsrc/apple/sossys.pla: 0305: DEC SRCH + DEC SRCH +; vmsrc/apple/sossys.pla: 0306: LDY #$FF + LDY #$FF +; vmsrc/apple/sossys.pla: 0307: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossys.pla: 0308: BEQ REVCPYLP + BEQ REVCPYLP +; vmsrc/apple/sossys.pla: 0309: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/sossys.pla: 0310: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0311: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0312: DEY + DEY +; vmsrc/apple/sossys.pla: 0313: CPY #$FF + CPY #$FF +; vmsrc/apple/sossys.pla: 0314: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0315: DEC DSTH + DEC DSTH +; vmsrc/apple/sossys.pla: 0316: DEC SRCH + DEC SRCH +; vmsrc/apple/sossys.pla: 0317: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/sossys.pla: 0318: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/sossys.pla: 0319: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/sossys.pla: 0320: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/sossys.pla: 0321: CPYMEX RTS +CPYMEX RTS +; vmsrc/apple/sossys.pla: 0322: end +; vmsrc/apple/sossys.pla: 0323: // +; vmsrc/apple/sossys.pla: 0324: // COPY FROM MAIN MEM TO EXT MEM. +; vmsrc/apple/sossys.pla: 0325: // +; vmsrc/apple/sossys.pla: 0326: // MEMXCPY(DSTSEG, SRC, SIZE) +; vmsrc/apple/sossys.pla: 0327: // +; vmsrc/apple/sossys.pla: 0328: asm memxcpy(dst,src,size)#0 +_A004 ; memxcpy() +; vmsrc/apple/sossys.pla: 0329: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0330: ORA ESTKH,X + ORA ESTKH,X +; vmsrc/apple/sossys.pla: 0331: BEQ CPYXMEX + BEQ CPYXMEX +; vmsrc/apple/sossys.pla: 0332: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0333: STY DSTL + STY DSTL +; vmsrc/apple/sossys.pla: 0334: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/sossys.pla: 0335: CLC + CLC +; vmsrc/apple/sossys.pla: 0336: ADC #$60 + ADC #$60 +; vmsrc/apple/sossys.pla: 0337: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0338: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossys.pla: 0339: CLC + CLC +; vmsrc/apple/sossys.pla: 0340: ADC #$7F + ADC #$7F +; vmsrc/apple/sossys.pla: 0341: STA DSTX + STA DSTX +; vmsrc/apple/sossys.pla: 0342: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0343: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0344: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0345: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0346: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/sossys.pla: 0347: CPYXLP LDA (SRC),Y +CPYXLP LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0348: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0349: INY + INY +; vmsrc/apple/sossys.pla: 0350: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0351: INC DSTH + INC DSTH +; vmsrc/apple/sossys.pla: 0352: INC SRCH + INC SRCH +; vmsrc/apple/sossys.pla: 0353: + DEC ESTKL,X ++ DEC ESTKL,X +; vmsrc/apple/sossys.pla: 0354: BNE CPYXLP + BNE CPYXLP +; vmsrc/apple/sossys.pla: 0355: DEC ESTKH,X + DEC ESTKH,X +; vmsrc/apple/sossys.pla: 0356: BNE CPYXLP + BNE CPYXLP +; vmsrc/apple/sossys.pla: 0357: LDA #$00 + LDA #$00 +; vmsrc/apple/sossys.pla: 0358: STA DSTX + STA DSTX +; vmsrc/apple/sossys.pla: 0359: CPYXMEX INX +CPYXMEX INX +; vmsrc/apple/sossys.pla: 0360: INX + INX +; vmsrc/apple/sossys.pla: 0361: INX + INX +; vmsrc/apple/sossys.pla: 0362: RTS + RTS +; vmsrc/apple/sossys.pla: 0363: end +; vmsrc/apple/sossys.pla: 0364: // +; vmsrc/apple/sossys.pla: 0365: // POKE BYTE VAL INTO EXT MEM. +; vmsrc/apple/sossys.pla: 0366: // +; vmsrc/apple/sossys.pla: 0367: // XPOKEB(SEG, DST, BYTEVAL) +; vmsrc/apple/sossys.pla: 0368: // +; vmsrc/apple/sossys.pla: 0369: asm xpokeb(seg, dst, byteval)#0 +_A005 ; xpokeb() +; vmsrc/apple/sossys.pla: 0370: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0371: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0372: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0373: CLC + CLC +; vmsrc/apple/sossys.pla: 0374: ADC #$60 + ADC #$60 +; vmsrc/apple/sossys.pla: 0375: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0376: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossys.pla: 0377: CLC + CLC +; vmsrc/apple/sossys.pla: 0378: ADC #$7F + ADC #$7F +; vmsrc/apple/sossys.pla: 0379: STA DSTX + STA DSTX +; vmsrc/apple/sossys.pla: 0380: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0381: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0382: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0383: STY DSTX + STY DSTX +; vmsrc/apple/sossys.pla: 0384: INX + INX +; vmsrc/apple/sossys.pla: 0385: INX + INX +; vmsrc/apple/sossys.pla: 0386: INX + INX +; vmsrc/apple/sossys.pla: 0387: RTS + RTS +; vmsrc/apple/sossys.pla: 0388: end +; vmsrc/apple/sossys.pla: 0389: // +; vmsrc/apple/sossys.pla: 0390: // Unsigned word comparisons. +; vmsrc/apple/sossys.pla: 0391: // +; vmsrc/apple/sossys.pla: 0392: asm uword_isge(a,b)#1 +_P021 ; uword_isge(a,b)#1() +_A006 ; uword_isge() +; vmsrc/apple/sossys.pla: 0393: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0394: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossys.pla: 0395: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0396: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/sossys.pla: 0397: LDA #$FF + LDA #$FF +; vmsrc/apple/sossys.pla: 0398: ADC #$00 + ADC #$00 +; vmsrc/apple/sossys.pla: 0399: EOR #$FF + EOR #$FF +; vmsrc/apple/sossys.pla: 0400: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0401: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0402: INX + INX +; vmsrc/apple/sossys.pla: 0403: RTS + RTS +; vmsrc/apple/sossys.pla: 0404: end +; vmsrc/apple/sossys.pla: 0405: asm uword_isle(a,b)#1 +_P023 ; uword_isle(a,b)#1() +_A007 ; uword_isle() +; vmsrc/apple/sossys.pla: 0406: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0407: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossys.pla: 0408: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0409: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/sossys.pla: 0410: LDA #$FF + LDA #$FF +; vmsrc/apple/sossys.pla: 0411: ADC #$00 + ADC #$00 +; vmsrc/apple/sossys.pla: 0412: EOR #$FF + EOR #$FF +; vmsrc/apple/sossys.pla: 0413: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0414: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0415: INX + INX +; vmsrc/apple/sossys.pla: 0416: RTS + RTS +; vmsrc/apple/sossys.pla: 0417: end +; vmsrc/apple/sossys.pla: 0418: asm uword_isgt(a,b)#1 +_P020 ; uword_isgt(a,b)#1() +_A008 ; uword_isgt() +; vmsrc/apple/sossys.pla: 0419: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0420: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossys.pla: 0421: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0422: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/sossys.pla: 0423: LDA #$FF + LDA #$FF +; vmsrc/apple/sossys.pla: 0424: ADC #$00 + ADC #$00 +; vmsrc/apple/sossys.pla: 0425: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0426: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0427: INX + INX +; vmsrc/apple/sossys.pla: 0428: RTS + RTS +; vmsrc/apple/sossys.pla: 0429: end +; vmsrc/apple/sossys.pla: 0430: asm uword_islt(a,b)#1 +_P022 ; uword_islt(a,b)#1() +_A009 ; uword_islt() +; vmsrc/apple/sossys.pla: 0431: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0432: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossys.pla: 0433: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0434: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/sossys.pla: 0435: LDA #$FF + LDA #$FF +; vmsrc/apple/sossys.pla: 0436: ADC #$00 + ADC #$00 +; vmsrc/apple/sossys.pla: 0437: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0438: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0439: INX + INX +; vmsrc/apple/sossys.pla: 0440: RTS + RTS +; vmsrc/apple/sossys.pla: 0441: end +; vmsrc/apple/sossys.pla: 0442: asm divmod(a,b)#2 +_P025 ; divmod(a,b)#2() +_A010 ; divmod() +; vmsrc/apple/sossys.pla: 0443: JSR INTERP ; CALL INTERP + JSR INTERP ; CALL INTERP +; vmsrc/apple/sossys.pla: 0444: !BYTE $36, $5C ; DIVMOD, RET + !BYTE $36, $5C ; DIVMOD, RET +; vmsrc/apple/sossys.pla: 0445: end +; vmsrc/apple/sossys.pla: 0446: asm sext(a)#1 +_P024 ; sext(a)#1() +_A011 ; sext() +; vmsrc/apple/sossys.pla: 0447: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0448: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0449: BPL + + BPL + +; vmsrc/apple/sossys.pla: 0450: DEY + DEY +; vmsrc/apple/sossys.pla: 0451: + STY ESTKH,X ++ STY ESTKH,X +; vmsrc/apple/sossys.pla: 0452: RTS + RTS +; vmsrc/apple/sossys.pla: 0453: end +; vmsrc/apple/sossys.pla: 0454: // +; vmsrc/apple/sossys.pla: 0455: // A DCI string is one that has the high bit set for every character except the last. +; vmsrc/apple/sossys.pla: 0456: // More efficient than C or Pascal strings. +; vmsrc/apple/sossys.pla: 0457: // +; vmsrc/apple/sossys.pla: 0458: //def dcitos(dci, str) +; vmsrc/apple/sossys.pla: 0459: // byte len, c +; vmsrc/apple/sossys.pla: 0460: // len = 0 +; vmsrc/apple/sossys.pla: 0461: // repeat +; vmsrc/apple/sossys.pla: 0462: // c = (dci).[len] +; vmsrc/apple/sossys.pla: 0463: // len = len + 1 +; vmsrc/apple/sossys.pla: 0464: // (str).[len] = c & $7F +; vmsrc/apple/sossys.pla: 0465: // until !(c & $80) +; vmsrc/apple/sossys.pla: 0466: // ^str = len +; vmsrc/apple/sossys.pla: 0467: // return len +; vmsrc/apple/sossys.pla: 0468: //end +; vmsrc/apple/sossys.pla: 0469: asm dcitos(dci, str)#1 +_A012 ; dcitos() +; vmsrc/apple/sossys.pla: 0470: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0471: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0472: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0473: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0474: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0475: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0476: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0477: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0478: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0479: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0480: CMP #$80 + CMP #$80 +; vmsrc/apple/sossys.pla: 0481: AND #$7F + AND #$7F +; vmsrc/apple/sossys.pla: 0482: INY + INY +; vmsrc/apple/sossys.pla: 0483: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0484: BCS - + BCS - +; vmsrc/apple/sossys.pla: 0485: TYA + TYA +; vmsrc/apple/sossys.pla: 0486: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0487: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0488: INX + INX +; vmsrc/apple/sossys.pla: 0489: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0490: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0491: RTS + RTS +; vmsrc/apple/sossys.pla: 0492: end +; vmsrc/apple/sossys.pla: 0493: //def stodci(str, dci) +; vmsrc/apple/sossys.pla: 0494: // byte len, c +; vmsrc/apple/sossys.pla: 0495: // len = ^str +; vmsrc/apple/sossys.pla: 0496: // if len == 0 +; vmsrc/apple/sossys.pla: 0497: // return +; vmsrc/apple/sossys.pla: 0498: // fin +; vmsrc/apple/sossys.pla: 0499: // c = toupper((str).[len]) & $7F +; vmsrc/apple/sossys.pla: 0500: // len = len - 1 +; vmsrc/apple/sossys.pla: 0501: // (dci).[len] = c +; vmsrc/apple/sossys.pla: 0502: // while len +; vmsrc/apple/sossys.pla: 0503: // c = toupper((str).[len]) | $80 +; vmsrc/apple/sossys.pla: 0504: // len = len - 1 +; vmsrc/apple/sossys.pla: 0505: // (dci).[len] = c +; vmsrc/apple/sossys.pla: 0506: // loop +; vmsrc/apple/sossys.pla: 0507: // return ^str +; vmsrc/apple/sossys.pla: 0508: //end +; vmsrc/apple/sossys.pla: 0509: asm stodci(str, dci)#1 +_A013 ; stodci() +; vmsrc/apple/sossys.pla: 0510: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0511: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0512: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0513: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0514: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0515: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0516: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0517: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0518: INX + INX +; vmsrc/apple/sossys.pla: 0519: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0520: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0521: BEQ ++ + BEQ ++ +; vmsrc/apple/sossys.pla: 0522: TAY + TAY +; vmsrc/apple/sossys.pla: 0523: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0524: JSR TOUPR + JSR TOUPR +; vmsrc/apple/sossys.pla: 0525: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0526: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0527: JSR TOUPR + JSR TOUPR +; vmsrc/apple/sossys.pla: 0528: ORA #$80 + ORA #$80 +; vmsrc/apple/sossys.pla: 0529: + DEY ++ DEY +; vmsrc/apple/sossys.pla: 0530: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0531: BNE - + BNE - +; vmsrc/apple/sossys.pla: 0532: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0533: ++ STA ESTKL,X +++ STA ESTKL,X +; vmsrc/apple/sossys.pla: 0534: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0535: RTS + RTS +; vmsrc/apple/sossys.pla: 0536: end +; vmsrc/apple/sossys.pla: 0537: asm toupper(c)#1 +_P010 ; toupper(c)#1() +_A014 ; toupper() +; vmsrc/apple/sossys.pla: 0538: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0539: TOUPR AND #$7F +TOUPR AND #$7F +; vmsrc/apple/sossys.pla: 0540: CMP #'a' + CMP #'a' +; vmsrc/apple/sossys.pla: 0541: BCC + + BCC + +; vmsrc/apple/sossys.pla: 0542: CMP #'z'+1 + CMP #'z'+1 +; vmsrc/apple/sossys.pla: 0543: BCS + + BCS + +; vmsrc/apple/sossys.pla: 0544: SBC #$1F + SBC #$1F +; vmsrc/apple/sossys.pla: 0545: + STA ESTKL,X ++ STA ESTKL,X +; vmsrc/apple/sossys.pla: 0546: RTS + RTS +; vmsrc/apple/sossys.pla: 0547: end +; vmsrc/apple/sossys.pla: 0548: // +; vmsrc/apple/sossys.pla: 0549: // Lookup routines. +; vmsrc/apple/sossys.pla: 0550: // +; vmsrc/apple/sossys.pla: 0551: //def lookuptbl(dci, tbl) +; vmsrc/apple/sossys.pla: 0552: // word match +; vmsrc/apple/sossys.pla: 0553: // while ^tbl +; vmsrc/apple/sossys.pla: 0554: // match = dci +; vmsrc/apple/sossys.pla: 0555: // while ^tbl == ^match +; vmsrc/apple/sossys.pla: 0556: // if !(^tbl & $80) +; vmsrc/apple/sossys.pla: 0557: // return (tbl):1 +; vmsrc/apple/sossys.pla: 0558: // fin +; vmsrc/apple/sossys.pla: 0559: // tbl = tbl + 1 +; vmsrc/apple/sossys.pla: 0560: // match = match + 1 +; vmsrc/apple/sossys.pla: 0561: // loop +; vmsrc/apple/sossys.pla: 0562: // while (^tbl & $80) +; vmsrc/apple/sossys.pla: 0563: // tbl = tbl + 1 +; vmsrc/apple/sossys.pla: 0564: // loop +; vmsrc/apple/sossys.pla: 0565: // tbl = tbl + 3 +; vmsrc/apple/sossys.pla: 0566: // loop +; vmsrc/apple/sossys.pla: 0567: // return 0 +; vmsrc/apple/sossys.pla: 0568: asm lookuptbl(dci, tbl)#1 +_A015 ; lookuptbl() +; vmsrc/apple/sossys.pla: 0569: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0570: STY DSTL + STY DSTL +; vmsrc/apple/sossys.pla: 0571: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0572: CLC + CLC +; vmsrc/apple/sossys.pla: 0573: ADC #$60 + ADC #$60 +; vmsrc/apple/sossys.pla: 0574: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0575: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0576: CLC + CLC +; vmsrc/apple/sossys.pla: 0577: ADC #$7F + ADC #$7F +; vmsrc/apple/sossys.pla: 0578: STA DSTX + STA DSTX +; vmsrc/apple/sossys.pla: 0579: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0580: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0581: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0582: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0583: - LDA (DST),Y +- LDA (DST),Y +; vmsrc/apple/sossys.pla: 0584: BEQ + + BEQ + +; vmsrc/apple/sossys.pla: 0585: CMP (SRC),Y + CMP (SRC),Y +; vmsrc/apple/sossys.pla: 0586: BNE ++ + BNE ++ +; vmsrc/apple/sossys.pla: 0587: INY + INY +; vmsrc/apple/sossys.pla: 0588: ASL + ASL +; vmsrc/apple/sossys.pla: 0589: BCS - + BCS - +; vmsrc/apple/sossys.pla: 0590: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossys.pla: 0591: PHA + PHA +; vmsrc/apple/sossys.pla: 0592: INY + INY +; vmsrc/apple/sossys.pla: 0593: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossys.pla: 0594: TAY + TAY +; vmsrc/apple/sossys.pla: 0595: PLA + PLA +; vmsrc/apple/sossys.pla: 0596: + INX ++ INX +; vmsrc/apple/sossys.pla: 0597: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0598: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0599: LDA #$00 + LDA #$00 +; vmsrc/apple/sossys.pla: 0600: STA DSTX + STA DSTX +; vmsrc/apple/sossys.pla: 0601: RTS + RTS +; vmsrc/apple/sossys.pla: 0602: ++ LDY #$00 +++ LDY #$00 +; vmsrc/apple/sossys.pla: 0603: -- LDA (DST),Y +-- LDA (DST),Y +; vmsrc/apple/sossys.pla: 0604: INC DSTL + INC DSTL +; vmsrc/apple/sossys.pla: 0605: BEQ + + BEQ + +; vmsrc/apple/sossys.pla: 0606: --- ASL +--- ASL +; vmsrc/apple/sossys.pla: 0607: BCS -- + BCS -- +; vmsrc/apple/sossys.pla: 0608: LDA #$02 + LDA #$02 +; vmsrc/apple/sossys.pla: 0609: ADC DSTL + ADC DSTL +; vmsrc/apple/sossys.pla: 0610: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0611: BCC - + BCC - +; vmsrc/apple/sossys.pla: 0612: INC DSTH + INC DSTH +; vmsrc/apple/sossys.pla: 0613: BCS - + BCS - +; vmsrc/apple/sossys.pla: 0614: + INC DSTH ++ INC DSTH +; vmsrc/apple/sossys.pla: 0615: BNE --- + BNE --- +; vmsrc/apple/sossys.pla: 0616: end +; vmsrc/apple/sossys.pla: 0617: // def lookupidx(esd, index) +; vmsrc/apple/sossys.pla: 0618: // word sym +; vmsrc/apple/sossys.pla: 0619: // while ^esd +; vmsrc/apple/sossys.pla: 0620: // sym = esd +; vmsrc/apple/sossys.pla: 0621: // esd = sym + dcitos(sym, @str) +; vmsrc/apple/sossys.pla: 0622: // if esd->0 & $10 and esd->1 == index +; vmsrc/apple/sossys.pla: 0623: // return sym +; vmsrc/apple/sossys.pla: 0624: // fin +; vmsrc/apple/sossys.pla: 0625: // esd = esd + 3 +; vmsrc/apple/sossys.pla: 0626: // loop +; vmsrc/apple/sossys.pla: 0627: //end +; vmsrc/apple/sossys.pla: 0628: asm lookupidx(esd, index)#1 +_A016 ; lookupidx() +; vmsrc/apple/sossys.pla: 0629: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0630: STA TMPL + STA TMPL +; vmsrc/apple/sossys.pla: 0631: INX + INX +; vmsrc/apple/sossys.pla: 0632: --- LDA ESTKH,X +--- LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0633: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0634: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0635: -- STA SRCL +-- STA SRCL +; vmsrc/apple/sossys.pla: 0636: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0637: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0638: BPL + + BPL + +; vmsrc/apple/sossys.pla: 0639: INY + INY +; vmsrc/apple/sossys.pla: 0640: BNE - + BNE - +; vmsrc/apple/sossys.pla: 0641: + BEQ ++ ; END OF ESD ++ BEQ ++ ; END OF ESD +; vmsrc/apple/sossys.pla: 0642: INY + INY +; vmsrc/apple/sossys.pla: 0643: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0644: INY + INY +; vmsrc/apple/sossys.pla: 0645: AND #$10 ; EXTERN FLAG? + AND #$10 ; EXTERN FLAG? +; vmsrc/apple/sossys.pla: 0646: BEQ + + BEQ + +; vmsrc/apple/sossys.pla: 0647: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0648: CMP TMPL + CMP TMPL +; vmsrc/apple/sossys.pla: 0649: BEQ +++ ; MATCH + BEQ +++ ; MATCH +; vmsrc/apple/sossys.pla: 0650: + INY ++ INY +; vmsrc/apple/sossys.pla: 0651: TYA + TYA +; vmsrc/apple/sossys.pla: 0652: SEC + SEC +; vmsrc/apple/sossys.pla: 0653: ADC SRCL + ADC SRCL +; vmsrc/apple/sossys.pla: 0654: STA ESTKL,X ; SYM PTRL + STA ESTKL,X ; SYM PTRL +; vmsrc/apple/sossys.pla: 0655: BCC -- + BCC -- +; vmsrc/apple/sossys.pla: 0656: INC ESTKH,X ; SYM PTRH + INC ESTKH,X ; SYM PTRH +; vmsrc/apple/sossys.pla: 0657: BNE --- + BNE --- +; vmsrc/apple/sossys.pla: 0658: ++ STA ESTKL,X ; END OF ESD +++ STA ESTKL,X ; END OF ESD +; vmsrc/apple/sossys.pla: 0659: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossys.pla: 0660: +++ RTS ++++ RTS +; vmsrc/apple/sossys.pla: 0661: end +; vmsrc/apple/sossys.pla: 0662: //def lookupdef(addr, deftbl)#1 +; vmsrc/apple/sossys.pla: 0663: // while deftbl->0 == $20 +; vmsrc/apple/sossys.pla: 0664: // if deftbl=>3 == addr +; vmsrc/apple/sossys.pla: 0665: // return deftbl +; vmsrc/apple/sossys.pla: 0666: // fin +; vmsrc/apple/sossys.pla: 0667: // deftbl = deftbl + t_defentry +; vmsrc/apple/sossys.pla: 0668: // loop +; vmsrc/apple/sossys.pla: 0669: // return 0 +; vmsrc/apple/sossys.pla: 0670: //end +; vmsrc/apple/sossys.pla: 0671: asm lookupdef(addr, deftbl)#1 +_A017 ; lookupdef() +; vmsrc/apple/sossys.pla: 0672: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0673: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0674: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0675: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0676: INX + INX +; vmsrc/apple/sossys.pla: 0677: - LDY #$00 +- LDY #$00 +; vmsrc/apple/sossys.pla: 0678: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0679: CMP #$20 ; JSR OPCODE? + CMP #$20 ; JSR OPCODE? +; vmsrc/apple/sossys.pla: 0680: BNE ++ + BNE ++ +; vmsrc/apple/sossys.pla: 0681: LDY #$03 + LDY #$03 +; vmsrc/apple/sossys.pla: 0682: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0683: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossys.pla: 0684: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0685: INY + INY +; vmsrc/apple/sossys.pla: 0686: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0687: CMP ESTKH,X + CMP ESTKH,X +; vmsrc/apple/sossys.pla: 0688: BNE + + BNE + +; vmsrc/apple/sossys.pla: 0689: LDA SRCL ; MATCH + LDA SRCL ; MATCH +; vmsrc/apple/sossys.pla: 0690: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0691: LDA SRCH + LDA SRCH +; vmsrc/apple/sossys.pla: 0692: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossys.pla: 0693: RTS + RTS +; vmsrc/apple/sossys.pla: 0694: + LDA #$06 ; T_DEFENTRY ++ LDA #$06 ; T_DEFENTRY +; vmsrc/apple/sossys.pla: 0695: CLC + CLC +; vmsrc/apple/sossys.pla: 0696: ADC SRCL + ADC SRCL +; vmsrc/apple/sossys.pla: 0697: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0698: BCC - + BCC - +; vmsrc/apple/sossys.pla: 0699: INC SRCH + INC SRCH +; vmsrc/apple/sossys.pla: 0700: BNE - + BNE - +; vmsrc/apple/sossys.pla: 0701: ++ STY ESTKL,X +++ STY ESTKL,X +; vmsrc/apple/sossys.pla: 0702: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossys.pla: 0703: RTS + RTS +; vmsrc/apple/sossys.pla: 0704: end +; vmsrc/apple/sossys.pla: 0705: // +; vmsrc/apple/sossys.pla: 0706: // Reloc internal data +; vmsrc/apple/sossys.pla: 0707: // +; vmsrc/apple/sossys.pla: 0708: //def reloc(modfix, modofst, bytecode, rld)#3 +; vmsrc/apple/sossys.pla: 0709: // word addr, fixup +; vmsrc/apple/sossys.pla: 0710: // while ^rld +; vmsrc/apple/sossys.pla: 0711: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/sossys.pla: 0712: // return rld, addr, fixup +; vmsrc/apple/sossys.pla: 0713: // fin +; vmsrc/apple/sossys.pla: 0714: // addr = rld=>1 + modfix +; vmsrc/apple/sossys.pla: 0715: // fixup = *addr + modofst +; vmsrc/apple/sossys.pla: 0716: // if uword_isge(fixup, bytecode) // Bytecode address. +; vmsrc/apple/sossys.pla: 0717: // return rld, addr, fixup +; vmsrc/apple/sossys.pla: 0718: // fin +; vmsrc/apple/sossys.pla: 0719: // *addr = fixup +; vmsrc/apple/sossys.pla: 0720: // rld = rld + 4 +; vmsrc/apple/sossys.pla: 0721: // loop +; vmsrc/apple/sossys.pla: 0722: // return rld, addr, fixup +; vmsrc/apple/sossys.pla: 0723: //end +; vmsrc/apple/sossys.pla: 0724: asm reloc(modfix, modofst, bytecode, rld)#3 +_A018 ; reloc() +; vmsrc/apple/sossys.pla: 0725: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossys.pla: 0726: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0727: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossys.pla: 0728: STA SRCH + STA SRCH +; vmsrc/apple/sossys.pla: 0729: LDY #$00 + LDY #$00 +; vmsrc/apple/sossys.pla: 0730: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0731: BEQ RLDEX ; END OF RLD + BEQ RLDEX ; END OF RLD +; vmsrc/apple/sossys.pla: 0732: PHA + PHA +; vmsrc/apple/sossys.pla: 0733: INY + INY +; vmsrc/apple/sossys.pla: 0734: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0735: INY + INY +; vmsrc/apple/sossys.pla: 0736: CLC + CLC +; vmsrc/apple/sossys.pla: 0737: ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX +; vmsrc/apple/sossys.pla: 0738: STA DSTL + STA DSTL +; vmsrc/apple/sossys.pla: 0739: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossys.pla: 0740: ADC ESTKH+3,X + ADC ESTKH+3,X +; vmsrc/apple/sossys.pla: 0741: STA DSTH + STA DSTH +; vmsrc/apple/sossys.pla: 0742: PLA + PLA +; vmsrc/apple/sossys.pla: 0743: AND #$10 ; EXTERN REF - EXIT + AND #$10 ; EXTERN REF - EXIT +; vmsrc/apple/sossys.pla: 0744: BNE RLDEX + BNE RLDEX +; vmsrc/apple/sossys.pla: 0745: TAY ; FIXUP=*ADDR+MODOFST + TAY ; FIXUP=*ADDR+MODOFST +; vmsrc/apple/sossys.pla: 0746: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossys.pla: 0747: INY + INY +; vmsrc/apple/sossys.pla: 0748: CLC + CLC +; vmsrc/apple/sossys.pla: 0749: ADC ESTKL+2,X + ADC ESTKL+2,X +; vmsrc/apple/sossys.pla: 0750: STA TMPL + STA TMPL +; vmsrc/apple/sossys.pla: 0751: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossys.pla: 0752: ADC ESTKH+2,X + ADC ESTKH+2,X +; vmsrc/apple/sossys.pla: 0753: CMP ESTKH+1,X ; FIXUP >= BYTECODE? + CMP ESTKH+1,X ; FIXUP >= BYTECODE? +; vmsrc/apple/sossys.pla: 0754: BCC + + BCC + +; vmsrc/apple/sossys.pla: 0755: STA TMPH + STA TMPH +; vmsrc/apple/sossys.pla: 0756: BNE RLDEX ; YEP, EXIT + BNE RLDEX ; YEP, EXIT +; vmsrc/apple/sossys.pla: 0757: LDA TMPL + LDA TMPL +; vmsrc/apple/sossys.pla: 0758: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossys.pla: 0759: BCS RLDEX ; YEP, EXIT + BCS RLDEX ; YEP, EXIT +; vmsrc/apple/sossys.pla: 0760: LDA TMPH + LDA TMPH +; vmsrc/apple/sossys.pla: 0761: + STA (DST),Y ; *ADDR=FIXUP ++ STA (DST),Y ; *ADDR=FIXUP +; vmsrc/apple/sossys.pla: 0762: DEY + DEY +; vmsrc/apple/sossys.pla: 0763: LDA TMPL + LDA TMPL +; vmsrc/apple/sossys.pla: 0764: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossys.pla: 0765: LDA SRCL ; NEXT ENTRY + LDA SRCL ; NEXT ENTRY +; vmsrc/apple/sossys.pla: 0766: ; CLC +; CLC +; vmsrc/apple/sossys.pla: 0767: ADC #$04 + ADC #$04 +; vmsrc/apple/sossys.pla: 0768: STA SRCL + STA SRCL +; vmsrc/apple/sossys.pla: 0769: BCC - + BCC - +; vmsrc/apple/sossys.pla: 0770: INC SRCH + INC SRCH +; vmsrc/apple/sossys.pla: 0771: BNE - + BNE - +; vmsrc/apple/sossys.pla: 0772: RLDEX INX +RLDEX INX +; vmsrc/apple/sossys.pla: 0773: LDA TMPL + LDA TMPL +; vmsrc/apple/sossys.pla: 0774: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossys.pla: 0775: LDA TMPH + LDA TMPH +; vmsrc/apple/sossys.pla: 0776: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossys.pla: 0777: LDA DSTL + LDA DSTL +; vmsrc/apple/sossys.pla: 0778: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossys.pla: 0779: LDA DSTH + LDA DSTH +; vmsrc/apple/sossys.pla: 0780: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossys.pla: 0781: LDA SRCL + LDA SRCL +; vmsrc/apple/sossys.pla: 0782: STA ESTKL+2,X + STA ESTKL+2,X +; vmsrc/apple/sossys.pla: 0783: LDA SRCH + LDA SRCH +; vmsrc/apple/sossys.pla: 0784: STA ESTKH+2,X + STA ESTKH+2,X +; vmsrc/apple/sossys.pla: 0785: RTS + RTS +; vmsrc/apple/sossys.pla: 0786: end +; vmsrc/apple/sossys.pla: 0787: // +; vmsrc/apple/sossys.pla: 0788: // SOS routines +; vmsrc/apple/sossys.pla: 0789: // FILE I/O +; vmsrc/apple/sossys.pla: 0790: // +; vmsrc/apple/sossys.pla: 0791: def open(path)#1 + ; path -> [0] +_P027 ; open(path)#1() +_C000 ; open() + JSR INTERP +; vmsrc/apple/sossys.pla: 0792: byte params[7] + ; params -> [2] +; vmsrc/apple/sossys.pla: 0793: +; vmsrc/apple/sossys.pla: 0794: params.0 = 4 + !BYTE $58,$09,$01 ; ENTER 9,1 +; vmsrc/apple/sossys.pla: 0795: params:1 = path +; vmsrc/apple/sossys.pla: 0796: params.3 = 0 +; vmsrc/apple/sossys.pla: 0797: params:4 = 0 +; vmsrc/apple/sossys.pla: 0798: params.6 = 0 +; vmsrc/apple/sossys.pla: 0799: perr = syscall($C8, @params) +; vmsrc/apple/sossys.pla: 0800: return params.3 + !BYTE $08 ; CN 4 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F062 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F063 !WORD _D034+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$09 ; LEAVE 9 +; vmsrc/apple/sossys.pla: 0801: end +; vmsrc/apple/sossys.pla: 0802: def close(refnum)#1 + ; refnum -> [0] +_P028 ; close(refnum)#1() +_C001 ; close() + JSR INTERP +; vmsrc/apple/sossys.pla: 0803: byte params[2] + ; params -> [2] +; vmsrc/apple/sossys.pla: 0804: +; vmsrc/apple/sossys.pla: 0805: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossys.pla: 0806: params.1 = refnum +; vmsrc/apple/sossys.pla: 0807: perr = syscall($CC, @params) +; vmsrc/apple/sossys.pla: 0808: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F064 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F065 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0809: end +; vmsrc/apple/sossys.pla: 0810: def read(refnum, buff, len)#1 + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_P029 ; read(refnum, buff, len)#1() +_C002 ; read() + JSR INTERP +; vmsrc/apple/sossys.pla: 0811: byte params[8] + ; params -> [6] +; vmsrc/apple/sossys.pla: 0812: +; vmsrc/apple/sossys.pla: 0813: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; vmsrc/apple/sossys.pla: 0814: params.1 = refnum +; vmsrc/apple/sossys.pla: 0815: params:2 = buff +; vmsrc/apple/sossys.pla: 0816: params:4 = len +; vmsrc/apple/sossys.pla: 0817: params:6 = 0 +; vmsrc/apple/sossys.pla: 0818: perr = syscall($CA, @params) +; vmsrc/apple/sossys.pla: 0819: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F066 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F067 !WORD _D034+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/sossys.pla: 0820: end +; vmsrc/apple/sossys.pla: 0821: def write(refnum, buff, len)#1 + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_P030 ; write(refnum, buff, len)#1() +_C003 ; write() + JSR INTERP +; vmsrc/apple/sossys.pla: 0822: byte params[6] + ; params -> [6] +; vmsrc/apple/sossys.pla: 0823: +; vmsrc/apple/sossys.pla: 0824: params.0 = 3 + !BYTE $58,$0C,$03 ; ENTER 12,3 +; vmsrc/apple/sossys.pla: 0825: params.1 = refnum +; vmsrc/apple/sossys.pla: 0826: params:2 = buff +; vmsrc/apple/sossys.pla: 0827: params:4 = len +; vmsrc/apple/sossys.pla: 0828: perr = syscall($CB, @params) +; vmsrc/apple/sossys.pla: 0829: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $2A,$CB ; CB 203 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F068 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F069 !WORD _D034+0 + !BYTE $5A,$0C ; LEAVE 12 +; vmsrc/apple/sossys.pla: 0830: end +; vmsrc/apple/sossys.pla: 0831: // +; vmsrc/apple/sossys.pla: 0832: // CONSOLE I/O +; vmsrc/apple/sossys.pla: 0833: // +; vmsrc/apple/sossys.pla: 0834: def dev_control(devnum, code, list)#1 + ; devnum -> [0] + ; code -> [2] + ; list -> [4] +_C004 ; dev_control() + JSR INTERP +; vmsrc/apple/sossys.pla: 0835: byte params[5] + ; params -> [6] +; vmsrc/apple/sossys.pla: 0836: +; vmsrc/apple/sossys.pla: 0837: params.0 = 3 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; vmsrc/apple/sossys.pla: 0838: params.1 = devnum +; vmsrc/apple/sossys.pla: 0839: params.2 = code +; vmsrc/apple/sossys.pla: 0840: params:3 = list +; vmsrc/apple/sossys.pla: 0841: return syscall($83, @params) + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$83 ; CB 131 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F070 !WORD _A000 + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/sossys.pla: 0842: end +; vmsrc/apple/sossys.pla: 0843: def dev_getnum(name)#1 + ; name -> [0] +_C005 ; dev_getnum() + JSR INTERP +; vmsrc/apple/sossys.pla: 0844: byte params[4] + ; params -> [2] +; vmsrc/apple/sossys.pla: 0845: +; vmsrc/apple/sossys.pla: 0846: params.0 = 2 + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/sossys.pla: 0847: params:1 = name +; vmsrc/apple/sossys.pla: 0848: params.3 = 0 +; vmsrc/apple/sossys.pla: 0849: syscall($84, @params) +; vmsrc/apple/sossys.pla: 0850: return params.3 + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $2A,$84 ; CB 132 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F071 !WORD _A000 + !BYTE $30 ; DROP + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/sossys.pla: 0851: end +; vmsrc/apple/sossys.pla: 0852: def init_cons()#0 +_C006 ; init_cons() + JSR INTERP +; vmsrc/apple/sossys.pla: 0853: byte nlmode[2] + ; nlmode -> [0] +; vmsrc/apple/sossys.pla: 0854: +; vmsrc/apple/sossys.pla: 0855: refcons = open(@console) + !BYTE $58,$02,$00 ; ENTER 2,0 +; vmsrc/apple/sossys.pla: 0856: devcons = dev_getnum(@console) +; vmsrc/apple/sossys.pla: 0857: nlmode:0 = $0D80 +; vmsrc/apple/sossys.pla: 0858: //nlmode.0 = $80 +; vmsrc/apple/sossys.pla: 0859: //nlmode.1 = $0D +; vmsrc/apple/sossys.pla: 0860: dev_control(devcons, $02, @nlmode) +; vmsrc/apple/sossys.pla: 0861: write(refcons, @textmode, 3) +; vmsrc/apple/sossys.pla: 0862: end + !BYTE $26 ; LA _D041+0 +_F072 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F073 !WORD _C000 + !BYTE $78 ; SAB _D037+0 +_F074 !WORD _D037+0 + !BYTE $26 ; LA _D041+0 +_F075 !WORD _D041+0 + !BYTE $54 ; CALL _C005 +_F076 !WORD _C005 + !BYTE $78 ; SAB _D038+0 +_F077 !WORD _D038+0 + !BYTE $2C,$80,$0D ; CW 3456 + !BYTE $76,$00 ; SLW [0] + !BYTE $68 ; LAB _D038+0 +_F078 !WORD _D038+0 + !BYTE $04 ; CN 2 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C004 +_F079 !WORD _C004 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D037+0 +_F080 !WORD _D037+0 + !BYTE $26 ; LA _D042+0 +_F081 !WORD _D042+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C003 +_F082 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0863: // +; vmsrc/apple/sossys.pla: 0864: // MEMORY CALLS +; vmsrc/apple/sossys.pla: 0865: // +; vmsrc/apple/sossys.pla: 0866: def seg_find(search, pages, id)#3 + ; search -> [0] + ; pages -> [2] + ; id -> [4] +_C007 ; seg_find() + JSR INTERP +; vmsrc/apple/sossys.pla: 0867: byte params[10] + ; params -> [6] +; vmsrc/apple/sossys.pla: 0868: +; vmsrc/apple/sossys.pla: 0869: params.0 = 6 + !BYTE $58,$10,$03 ; ENTER 16,3 +; vmsrc/apple/sossys.pla: 0870: params.1 = search +; vmsrc/apple/sossys.pla: 0871: params.2 = id +; vmsrc/apple/sossys.pla: 0872: params:3 = pages +; vmsrc/apple/sossys.pla: 0873: params:5 = 0 +; vmsrc/apple/sossys.pla: 0874: params:7 = 0 +; vmsrc/apple/sossys.pla: 0875: params.9 = 0 +; vmsrc/apple/sossys.pla: 0876: perr = syscall($41, @params) +; vmsrc/apple/sossys.pla: 0877: return params.9, params:5, params:7 + !BYTE $0C ; CN 6 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$09 ; SLW [9] + !BYTE $00 ; CN 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $00 ; CN 0 + !BYTE $76,$0D ; SLW [13] + !BYTE $00 ; CN 0 + !BYTE $74,$0F ; SLB [15] + !BYTE $2A,$41 ; CB 65 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F083 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F084 !WORD _D034+0 + !BYTE $64,$0F ; LLB [15] + !BYTE $66,$0B ; LLW [11] + !BYTE $66,$0D ; LLW [13] + !BYTE $5A,$10 ; LEAVE 16 +; vmsrc/apple/sossys.pla: 0878: end +; vmsrc/apple/sossys.pla: 0879: def seg_release(segnum)#1 + ; segnum -> [0] +_C008 ; seg_release() + JSR INTERP +; vmsrc/apple/sossys.pla: 0880: byte params[2] + ; params -> [2] +; vmsrc/apple/sossys.pla: 0881: +; vmsrc/apple/sossys.pla: 0882: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossys.pla: 0883: params.1 = segnum +; vmsrc/apple/sossys.pla: 0884: perr = syscall($45, @params) +; vmsrc/apple/sossys.pla: 0885: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$45 ; CB 69 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F085 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F086 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0886: end +; vmsrc/apple/sossys.pla: 0887: // +; vmsrc/apple/sossys.pla: 0888: // CONSOLE I/O +; vmsrc/apple/sossys.pla: 0889: // +; vmsrc/apple/sossys.pla: 0890: def cout(ch)#0 + ; ch -> [0] +_P003 ; cout(ch)#0() +_C009 ; cout() + JSR INTERP +; vmsrc/apple/sossys.pla: 0891: byte nc + ; nc -> [2] +; vmsrc/apple/sossys.pla: 0892: +; vmsrc/apple/sossys.pla: 0893: nc = 1 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/sossys.pla: 0894: if ch == $0D +; vmsrc/apple/sossys.pla: 0895: ch = $0A0D +; vmsrc/apple/sossys.pla: 0896: nc = 2 +; vmsrc/apple/sossys.pla: 0897: fin + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B001 + !WORD _B001-* + !BYTE $2C,$0D,$0A ; CW 2573 + !BYTE $76,$00 ; SLW [0] + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; vmsrc/apple/sossys.pla: 0898: write(refcons, @ch, nc) +; vmsrc/apple/sossys.pla: 0899: end + !BYTE $68 ; LAB _D037+0 +_F087 !WORD _D037+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _C003 +_F088 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/sossys.pla: 0900: def crout()#0 +_P002 ; crout()#0() +_C010 ; crout() + JSR INTERP +; vmsrc/apple/sossys.pla: 0901: cout($0D) +; vmsrc/apple/sossys.pla: 0902: end + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _C009 +_F089 !WORD _C009 + !BYTE $5C ; RET +; vmsrc/apple/sossys.pla: 0903: def cin()#1 +_P008 ; cin()#1() +_C011 ; cin() + JSR INTERP +; vmsrc/apple/sossys.pla: 0904: byte ch + ; ch -> [0] +; vmsrc/apple/sossys.pla: 0905: read(refcons, @ch, 1) + !BYTE $58,$01,$00 ; ENTER 1,0 +; vmsrc/apple/sossys.pla: 0906: return ch & $7F + !BYTE $68 ; LAB _D037+0 +_F090 !WORD _D037+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C002 +_F091 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/sossys.pla: 0907: end +; vmsrc/apple/sossys.pla: 0908: def prstr(str)#0 + ; str -> [0] +_P004 ; prstr(str)#0() +_C012 ; prstr() + JSR INTERP +; vmsrc/apple/sossys.pla: 0909: write(refcons, str + 1, ^str) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossys.pla: 0910: if str->[^str] == $0D +; vmsrc/apple/sossys.pla: 0911: cout($0A) +; vmsrc/apple/sossys.pla: 0912: fin + !BYTE $68 ; LAB _D037+0 +_F092 !WORD _D037+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _C003 +_F093 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B003 + !WORD _B003-* + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _C009 +_F094 !WORD _C009 +_B003 +_B004 +; vmsrc/apple/sossys.pla: 0913: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0914: def print(i)#0 + ; i -> [0] +_P005 ; print(i)#0() +_C013 ; print() + JSR INTERP +; vmsrc/apple/sossys.pla: 0915: if i < 0; cout('-'); i = -i; fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _C009 +_F095 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B005 +_B006 +; vmsrc/apple/sossys.pla: 0916: if i >= 10; print(i / 10); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C013 +_F096 !WORD _C013 +_B007 +_B008 +; vmsrc/apple/sossys.pla: 0917: cout(i % 10 + '0') +; vmsrc/apple/sossys.pla: 0918: end + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $54 ; CALL _C009 +_F097 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0919: def rdstr(prompt)#1 + ; prompt -> [0] +_P009 ; rdstr(prompt)#1() +_C014 ; rdstr() + JSR INTERP +; vmsrc/apple/sossys.pla: 0920: cout(prompt) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossys.pla: 0921: ^instr = read(refcons, instr+1, 128) +; vmsrc/apple/sossys.pla: 0922: if instr->[^instr] == $0D +; vmsrc/apple/sossys.pla: 0923: ^instr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F098 !WORD _C009 + !BYTE $68 ; LAB _D037+0 +_F099 !WORD _D037+0 + !BYTE $2C,$21,$A0 ; CW 40993 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F100 !WORD _C002 + !BYTE $78,$20,$A0 ; SAB 40992 + !BYTE $2C,$20,$A0 ; CW 40992 + !BYTE $B4,$20,$A0 ; ADDAB 40992 + !BYTE $60 ; LB + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B009 + !WORD _B009-* + !BYTE $68,$20,$A0 ; LAB 40992 + !BYTE $8E ; DECR +; vmsrc/apple/sossys.pla: 0924: fin + !BYTE $78,$20,$A0 ; SAB 40992 +_B009 +_B010 +; vmsrc/apple/sossys.pla: 0925: crout +; vmsrc/apple/sossys.pla: 0926: return instr + !BYTE $54 ; CALL _C010 +_F101 !WORD _C010 + !BYTE $2C,$20,$A0 ; CW 40992 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0927: end +; vmsrc/apple/sossys.pla: 0928: def prbyte(v)#0 + ; v -> [0] +_P006 ; prbyte(v)#0() +_C015 ; prbyte() + JSR INTERP +; vmsrc/apple/sossys.pla: 0929: cout(hexchar[(v >> 4) & $0F]) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossys.pla: 0930: cout(hexchar[v & $0F]) +; vmsrc/apple/sossys.pla: 0931: end + !BYTE $26 ; LA _D039+0 +_F102 !WORD _D039+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C009 +_F103 !WORD _C009 + !BYTE $26 ; LA _D039+0 +_F104 !WORD _D039+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C009 +_F105 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0932: def prword(v)#0 + ; v -> [0] +_P007 ; prword(v)#0() +_C016 ; prword() + JSR INTERP +; vmsrc/apple/sossys.pla: 0933: prbyte(v >> 8) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossys.pla: 0934: prbyte(v) +; vmsrc/apple/sossys.pla: 0935: end + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C015 +_F106 !WORD _C015 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C015 +_F107 !WORD _C015 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0936: // +; vmsrc/apple/sossys.pla: 0937: // Heap routines. +; vmsrc/apple/sossys.pla: 0938: // +; vmsrc/apple/sossys.pla: 0939: def availheap()#1 +_P017 ; availheap()#1() +_C017 ; availheap() + JSR INTERP +; vmsrc/apple/sossys.pla: 0940: byte fp + ; fp -> [0] +; vmsrc/apple/sossys.pla: 0941: return @fp - heap + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D077+0 +_F108 !WORD _D077+0 + !BYTE $84 ; SUB + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/sossys.pla: 0942: end +; vmsrc/apple/sossys.pla: 0943: def allocheap(size)#1 + ; size -> [0] +_P014 ; allocheap(size)#1() +_C018 ; allocheap() + JSR INTERP +; vmsrc/apple/sossys.pla: 0944: word addr + ; addr -> [2] +; vmsrc/apple/sossys.pla: 0945: addr = heap + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossys.pla: 0946: heap = heap + size +; vmsrc/apple/sossys.pla: 0947: if uword_isge(heap, @addr) +; vmsrc/apple/sossys.pla: 0948: heap = addr +; vmsrc/apple/sossys.pla: 0949: return 0 + !BYTE $6A ; LAW _D077+0 +_F109 !WORD _D077+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D077+0 +_F110 !WORD _D077+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D077+0 +_F111 !WORD _D077+0 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A006 +_F112 !WORD _A006 + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D077+0 +_F113 !WORD _D077+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0950: fin +_B011 +_B012 +; vmsrc/apple/sossys.pla: 0951: return addr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0952: end +; vmsrc/apple/sossys.pla: 0953: def allocalignheap(size, pow2, freeaddr)#1 + ; size -> [0] + ; pow2 -> [2] + ; freeaddr -> [4] +_P015 ; allocalignheap(size, pow2, freeaddr)#1() +_C019 ; allocalignheap() + JSR INTERP +; vmsrc/apple/sossys.pla: 0954: word align, addr + ; align -> [6] + ; addr -> [8] +; vmsrc/apple/sossys.pla: 0955: if freeaddr + !BYTE $58,$0A,$03 ; ENTER 10,3 +; vmsrc/apple/sossys.pla: 0956: *freeaddr = heap +; vmsrc/apple/sossys.pla: 0957: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D077+0 +_F114 !WORD _D077+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B013 +_B014 +; vmsrc/apple/sossys.pla: 0958: align = (1 << pow2) - 1 +; vmsrc/apple/sossys.pla: 0959: addr = (heap | align) + 1 +; vmsrc/apple/sossys.pla: 0960: heap = addr + size +; vmsrc/apple/sossys.pla: 0961: if uword_isge(heap, @addr) +; vmsrc/apple/sossys.pla: 0962: return 0 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $9A ; SHL + !BYTE $8E ; DECR + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D077+0 +_F115 !WORD _D077+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $96 ; OR + !BYTE $8C ; INCR + !BYTE $6E,$08 ; DLW [8] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D077+0 +_F116 !WORD _D077+0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A006 +_F117 !WORD _A006 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/sossys.pla: 0963: fin +_B015 +_B016 +; vmsrc/apple/sossys.pla: 0964: return addr + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/sossys.pla: 0965: end +; vmsrc/apple/sossys.pla: 0966: def markheap()#1 +_P013 ; markheap()#1() +_C020 ; markheap() + JSR INTERP +; vmsrc/apple/sossys.pla: 0967: return heap + !BYTE $6A ; LAW _D077+0 +_F118 !WORD _D077+0 + !BYTE $5C ; RET +; vmsrc/apple/sossys.pla: 0968: end +; vmsrc/apple/sossys.pla: 0969: def releaseheap(newheap)#1 + ; newheap -> [0] +_P016 ; releaseheap(newheap)#1() +_C021 ; releaseheap() + JSR INTERP +; vmsrc/apple/sossys.pla: 0970: heap = newheap + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossys.pla: 0971: return @newheap - heap + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D077+0 +_F119 !WORD _D077+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D077+0 +_F120 !WORD _D077+0 + !BYTE $84 ; SUB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossys.pla: 0972: end +; vmsrc/apple/sossys.pla: 0973: // +; vmsrc/apple/sossys.pla: 0974: // Symbol table routines. +; vmsrc/apple/sossys.pla: 0975: // +; vmsrc/apple/sossys.pla: 0976: def addsym(sym, addr)#0 + ; sym -> [0] + ; addr -> [2] +_C022 ; addsym() + JSR INTERP +; vmsrc/apple/sossys.pla: 0977: while ^sym & $80 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B017 +; vmsrc/apple/sossys.pla: 0978: xpokeb(symtbl.0, lastsym, ^sym) +; vmsrc/apple/sossys.pla: 0979: lastsym = lastsym + 1 +; vmsrc/apple/sossys.pla: 0980: sym = sym + 1 +; vmsrc/apple/sossys.pla: 0981: loop + !BYTE $68 ; LAB _D081+0 +_F121 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F122 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A005 +_F123 !WORD _A005 + !BYTE $6A ; LAW _D082+0 +_F124 !WORD _D082+0 + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D082+0 +_F125 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] +_B019 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B017 + !WORD _B017-* +_B018 +; vmsrc/apple/sossys.pla: 0982: xpokeb(symtbl.0, lastsym, ^sym) +; vmsrc/apple/sossys.pla: 0983: xpokeb(symtbl.0, lastsym + 1, addr.0) +; vmsrc/apple/sossys.pla: 0984: xpokeb(symtbl.0, lastsym + 2, addr.1) +; vmsrc/apple/sossys.pla: 0985: xpokeb(symtbl.0, lastsym + 3, 0) +; vmsrc/apple/sossys.pla: 0986: lastsym = lastsym + 3 +; vmsrc/apple/sossys.pla: 0987: end + !BYTE $68 ; LAB _D081+0 +_F126 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F127 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A005 +_F128 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F129 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F130 !WORD _D082+0 + !BYTE $8C ; INCR + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _A005 +_F131 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F132 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F133 !WORD _D082+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _A005 +_F134 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F135 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F136 !WORD _D082+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F137 !WORD _A005 + !BYTE $6A ; LAW _D082+0 +_F138 !WORD _D082+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D082+0 +_F139 !WORD _D082+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0988: // +; vmsrc/apple/sossys.pla: 0989: // String routines. +; vmsrc/apple/sossys.pla: 0990: // +; vmsrc/apple/sossys.pla: 0991: def strcpy(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P011 ; strcpy(dst, src)#1() +_C023 ; strcpy() + JSR INTERP +; vmsrc/apple/sossys.pla: 0992: memcpy(dst+1, src+1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/sossys.pla: 0993: ^dst = ^src +; vmsrc/apple/sossys.pla: 0994: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A003 +_F140 !WORD _A003 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 0995: end +; vmsrc/apple/sossys.pla: 0996: def strcat(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P012 ; strcat(dst, src)#1() +_C024 ; strcat() + JSR INTERP +; vmsrc/apple/sossys.pla: 0997: memcpy(dst + ^dst + 1, src + 1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/sossys.pla: 0998: ^dst = ^dst + ^src +; vmsrc/apple/sossys.pla: 0999: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A003 +_F141 !WORD _A003 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossys.pla: 1000: end +; vmsrc/apple/sossys.pla: 1001: // +; vmsrc/apple/sossys.pla: 1002: // Module routines. +; vmsrc/apple/sossys.pla: 1003: // +; vmsrc/apple/sossys.pla: 1004: def lookupextern(esd, index)#1 + ; esd -> [0] + ; index -> [2] +_C025 ; lookupextern() + JSR INTERP +; vmsrc/apple/sossys.pla: 1005: word sym, addr + ; sym -> [4] + ; addr -> [6] +; vmsrc/apple/sossys.pla: 1006: byte str[33] + ; str -> [8] +; vmsrc/apple/sossys.pla: 1007: sym = lookupidx(esd, index) + !BYTE $58,$29,$02 ; ENTER 41,2 +; vmsrc/apple/sossys.pla: 1008: if sym +; vmsrc/apple/sossys.pla: 1009: addr = lookuptbl(sym, symtbl) +; vmsrc/apple/sossys.pla: 1010: if !addr +; vmsrc/apple/sossys.pla: 1011: perr = $81 +; vmsrc/apple/sossys.pla: 1012: dcitos(sym, @str) +; vmsrc/apple/sossys.pla: 1013: cout('?'); prstr(@str); crout +; vmsrc/apple/sossys.pla: 1014: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A016 +_F142 !WORD _A016 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D081+0 +_F143 !WORD _D081+0 + !BYTE $54 ; CALL _A015 +_F144 !WORD _A015 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $2A,$81 ; CB 129 + !BYTE $78 ; SAB _D034+0 +_F145 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A012 +_F146 !WORD _A012 + !BYTE $30 ; DROP + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _C009 +_F147 !WORD _C009 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _C012 +_F148 !WORD _C012 + !BYTE $54 ; CALL _C010 +_F149 !WORD _C010 +_B022 +_B023 +; vmsrc/apple/sossys.pla: 1015: return addr + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/sossys.pla: 1016: fin +_B020 +_B021 +; vmsrc/apple/sossys.pla: 1017: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/sossys.pla: 1018: end +; vmsrc/apple/sossys.pla: 1019: def adddef(ext, addr, deflast)#1 + ; ext -> [0] + ; addr -> [2] + ; deflast -> [4] +_C026 ; adddef() + JSR INTERP +; vmsrc/apple/sossys.pla: 1020: word preventry, defentry, defsize + ; preventry -> [6] + ; defentry -> [8] + ; defsize -> [10] +; vmsrc/apple/sossys.pla: 1021: defentry = *deflast + !BYTE $58,$0C,$03 ; ENTER 12,3 +; vmsrc/apple/sossys.pla: 1022: *deflast = defentry + t_defentry +; vmsrc/apple/sossys.pla: 1023: defentry->interpjsr = $20 // JSR +; vmsrc/apple/sossys.pla: 1024: defentry=>interpaddr = *xinterp // XINTERP +; vmsrc/apple/sossys.pla: 1025: defentry=>bytecodeaddr = addr +; vmsrc/apple/sossys.pla: 1026: defentry->bytecodexbyte = ext +; vmsrc/apple/sossys.pla: 1027: defentry->t_defentry = 0 +; vmsrc/apple/sossys.pla: 1028: return defentry + !BYTE $66,$04 ; LLW [4] + !BYTE $62 ; LW + !BYTE $6E,$08 ; DLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$08 ; LLW [8] + !BYTE $70 ; SB + !BYTE $6A,$F8,$A0 ; LAW 41208 + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0C ; LEAVE 12 +; vmsrc/apple/sossys.pla: 1029: end +; vmsrc/apple/sossys.pla: 1030: def loadmod(mod)#1 + ; mod -> [0] +_C027 ; loadmod() + JSR INTERP +; vmsrc/apple/sossys.pla: 1031: word refnum, rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup + ; refnum -> [2] + ; rdlen -> [4] + ; modsize -> [6] + ; bytecode -> [8] + ; codefix -> [10] + ; defofst -> [12] + ; defcnt -> [14] + ; init -> [16] + ; initcode -> [18] + ; fixup -> [18] +; vmsrc/apple/sossys.pla: 1032: word addr, defaddr, modaddr, modfix, modofst, modend + ; addr -> [20] + ; defaddr -> [22] + ; modaddr -> [24] + ; modfix -> [26] + ; modofst -> [28] + ; modend -> [30] +; vmsrc/apple/sossys.pla: 1033: word deftbl, deflast, codeseg + ; deftbl -> [32] + ; deflast -> [34] + ; codeseg -> [36] +; vmsrc/apple/sossys.pla: 1034: word moddep, rld, esd, sym + ; moddep -> [38] + ; rld -> [40] + ; esd -> [42] + ; sym -> [44] +; vmsrc/apple/sossys.pla: 1035: byte lerr, defext, fileinfo[], str[16], filename[33] + ; lerr -> [46] + ; defext -> [47] + ; fileinfo -> [48] + ; str -> [48] + ; filename -> [64] +; vmsrc/apple/sossys.pla: 1036: byte header[128] + ; header -> [97] +; vmsrc/apple/sossys.pla: 1037: lerr = 0 + !BYTE $58,$E1,$01 ; ENTER 225,1 +; vmsrc/apple/sossys.pla: 1038: // +; vmsrc/apple/sossys.pla: 1039: // Read the RELocatable module header (first 128 bytes) +; vmsrc/apple/sossys.pla: 1040: // +; vmsrc/apple/sossys.pla: 1041: dcitos(mod, @filename) +; vmsrc/apple/sossys.pla: 1042: refnum = open(@filename) +; vmsrc/apple/sossys.pla: 1043: if !refnum and filename < 16 +; vmsrc/apple/sossys.pla: 1044: // +; vmsrc/apple/sossys.pla: 1045: // Try system path +; vmsrc/apple/sossys.pla: 1046: // +; vmsrc/apple/sossys.pla: 1047: refnum = open(strcpy(@filename,strcat(strcpy(@header, @sysmods), @filename))) +; vmsrc/apple/sossys.pla: 1048: fin + !BYTE $00 ; CN 0 + !BYTE $74,$2E ; SLB [46] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$40 ; LLA [64] + !BYTE $54 ; CALL _A012 +_F150 !WORD _A012 + !BYTE $30 ; DROP + !BYTE $28,$40 ; LLA [64] + !BYTE $54 ; CALL _C000 +_F151 !WORD _C000 + !BYTE $6E,$02 ; DLW [2] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B024 + !WORD _B024-* + !BYTE $64,$40 ; LLB [64] + !BYTE $2A,$10 ; CB 16 + !BYTE $46 ; ISLT +_B024 + !BYTE $4C ; BRFLS _B025 + !WORD _B025-* + !BYTE $28,$40 ; LLA [64] + !BYTE $28,$61 ; LLA [97] + !BYTE $26 ; LA _D074+0 +_F152 !WORD _D074+0 + !BYTE $54 ; CALL _C023 +_F153 !WORD _C023 + !BYTE $28,$40 ; LLA [64] + !BYTE $54 ; CALL _C024 +_F154 !WORD _C024 + !BYTE $54 ; CALL _C023 +_F155 !WORD _C023 + !BYTE $54 ; CALL _C000 +_F156 !WORD _C000 + !BYTE $76,$02 ; SLW [2] +_B025 +_B026 +; vmsrc/apple/sossys.pla: 1049: if refnum +; vmsrc/apple/sossys.pla: 1050: header.0 = 3 +; vmsrc/apple/sossys.pla: 1051: header:1 = @filename +; vmsrc/apple/sossys.pla: 1052: header:3 = @fileinfo +; vmsrc/apple/sossys.pla: 1053: header.5 = 2 +; vmsrc/apple/sossys.pla: 1054: if not syscall($C4, @header) and fileinfo.1 <> $FE // Make sure it's a REL module +; vmsrc/apple/sossys.pla: 1055: close(refnum) +; vmsrc/apple/sossys.pla: 1056: perr = $4A // Incompatible type +; vmsrc/apple/sossys.pla: 1057: return -perr + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B027 + !WORD _B027-* + !BYTE $06 ; CN 3 + !BYTE $74,$61 ; SLB [97] + !BYTE $28,$40 ; LLA [64] + !BYTE $76,$62 ; SLW [98] + !BYTE $28,$30 ; LLA [48] + !BYTE $76,$64 ; SLW [100] + !BYTE $04 ; CN 2 + !BYTE $74,$66 ; SLB [102] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$61 ; LLA [97] + !BYTE $54 ; CALL _A000 +_F157 !WORD _A000 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B029 + !WORD _B029-* + !BYTE $64,$31 ; LLB [49] + !BYTE $2A,$FE ; CB 254 + !BYTE $42 ; ISNE +_B029 + !BYTE $4C ; BRFLS _B030 + !WORD _B030-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F158 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $2A,$4A ; CB 74 + !BYTE $7C ; DAB _D034+0 +_F159 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E1 ; LEAVE 225 +; vmsrc/apple/sossys.pla: 1058: fin +_B030 +_B031 +; vmsrc/apple/sossys.pla: 1059: rdlen = read(refnum, @header, 128) +; vmsrc/apple/sossys.pla: 1060: modsize = header:0 +; vmsrc/apple/sossys.pla: 1061: moddep = @header.1 +; vmsrc/apple/sossys.pla: 1062: defofst = modsize + RELADDR +; vmsrc/apple/sossys.pla: 1063: defext = 0 +; vmsrc/apple/sossys.pla: 1064: init = 0 +; vmsrc/apple/sossys.pla: 1065: if rdlen > 4 and header:2 == $6502 // magic number +; vmsrc/apple/sossys.pla: 1066: // +; vmsrc/apple/sossys.pla: 1067: // This is an EXTended RELocatable (data+bytecode) module. +; vmsrc/apple/sossys.pla: 1068: // +; vmsrc/apple/sossys.pla: 1069: systemflags = header.4 | systemflags +; vmsrc/apple/sossys.pla: 1070: defofst = header:6 +; vmsrc/apple/sossys.pla: 1071: defcnt = header:8 +; vmsrc/apple/sossys.pla: 1072: init = header:10 +; vmsrc/apple/sossys.pla: 1073: moddep = @header.12 +; vmsrc/apple/sossys.pla: 1074: // +; vmsrc/apple/sossys.pla: 1075: // Load module dependencies. +; vmsrc/apple/sossys.pla: 1076: // +; vmsrc/apple/sossys.pla: 1077: while ^moddep + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$61 ; LLA [97] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F160 !WORD _C002 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$61 ; LLW [97] + !BYTE $76,$06 ; SLW [6] + !BYTE $28,$62 ; LLA [98] + !BYTE $76,$26 ; SLW [38] + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $00 ; CN 0 + !BYTE $74,$2F ; SLB [47] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$04 ; LLW [4] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B032 + !WORD _B032-* + !BYTE $66,$63 ; LLW [99] + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $40 ; ISEQ +_B032 + !BYTE $4C ; BRFLS _B033 + !WORD _B033-* + !BYTE $64,$65 ; LLB [101] + !BYTE $6A ; LAW _D076+0 +_F161 !WORD _D076+0 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D076+0 +_F162 !WORD _D076+0 + !BYTE $66,$67 ; LLW [103] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$69 ; LLW [105] + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$6B ; LLW [107] + !BYTE $76,$10 ; SLW [16] + !BYTE $28,$6D ; LLA [109] + !BYTE $76,$26 ; SLW [38] + !BYTE $50 ; BRNCH _B037 + !WORD _B037-* +_B035 +; vmsrc/apple/sossys.pla: 1078: if !lookuptbl(moddep, symtbl) +; vmsrc/apple/sossys.pla: 1079: if refnum +; vmsrc/apple/sossys.pla: 1080: close(refnum) +; vmsrc/apple/sossys.pla: 1081: refnum = 0 +; vmsrc/apple/sossys.pla: 1082: fin + !BYTE $66,$26 ; LLW [38] + !BYTE $6A ; LAW _D081+0 +_F163 !WORD _D081+0 + !BYTE $54 ; CALL _A015 +_F164 !WORD _A015 + !BYTE $4E ; BRTRU _B038 + !WORD _B038-* + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B040 + !WORD _B040-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F165 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B040 +_B041 +; vmsrc/apple/sossys.pla: 1083: if loadmod(moddep) < 0 +; vmsrc/apple/sossys.pla: 1084: return -perr + !BYTE $66,$26 ; LLW [38] + !BYTE $54 ; CALL _C027 +_F166 !WORD _C027 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B042 + !WORD _B042-* + !BYTE $68 ; LAB _D034+0 +_F167 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E1 ; LEAVE 225 +; vmsrc/apple/sossys.pla: 1085: fin +_B042 +_B043 +; vmsrc/apple/sossys.pla: 1086: fin +_B038 +_B039 +; vmsrc/apple/sossys.pla: 1087: moddep = moddep + dcitos(moddep, @str) +; vmsrc/apple/sossys.pla: 1088: loop + !BYTE $66,$26 ; LLW [38] + !BYTE $34 ; DUP + !BYTE $28,$30 ; LLA [48] + !BYTE $54 ; CALL _A012 +_F168 !WORD _A012 + !BYTE $82 ; ADD + !BYTE $76,$26 ; SLW [38] +_B037 + !BYTE $66,$26 ; LLW [38] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B035 + !WORD _B035-* +_B036 +; vmsrc/apple/sossys.pla: 1089: // +; vmsrc/apple/sossys.pla: 1090: // Init def table. +; vmsrc/apple/sossys.pla: 1091: // +; vmsrc/apple/sossys.pla: 1092: deftbl = allocheap(defcnt * t_defentry + 1) +; vmsrc/apple/sossys.pla: 1093: deflast = deftbl +; vmsrc/apple/sossys.pla: 1094: ^deflast = 0 +; vmsrc/apple/sossys.pla: 1095: if !refnum +; vmsrc/apple/sossys.pla: 1096: // +; vmsrc/apple/sossys.pla: 1097: // Reset read pointer. +; vmsrc/apple/sossys.pla: 1098: // +; vmsrc/apple/sossys.pla: 1099: refnum = open(@filename) +; vmsrc/apple/sossys.pla: 1100: rdlen = read(refnum, @header, 128) +; vmsrc/apple/sossys.pla: 1101: fin + !BYTE $66,$0E ; LLW [14] + !BYTE $0C ; CN 6 + !BYTE $86 ; MUL + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C018 +_F169 !WORD _C018 + !BYTE $6E,$20 ; DLW [32] + !BYTE $76,$22 ; SLW [34] + !BYTE $00 ; CN 0 + !BYTE $66,$22 ; LLW [34] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B044 + !WORD _B044-* + !BYTE $28,$40 ; LLA [64] + !BYTE $54 ; CALL _C000 +_F170 !WORD _C000 + !BYTE $6E,$02 ; DLW [2] + !BYTE $28,$61 ; LLA [97] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F171 !WORD _C002 + !BYTE $76,$04 ; SLW [4] +_B044 +_B045 +; vmsrc/apple/sossys.pla: 1102: fin +_B033 +_B034 +; vmsrc/apple/sossys.pla: 1103: // +; vmsrc/apple/sossys.pla: 1104: // Alloc heap space for relocated module (data + bytecode). +; vmsrc/apple/sossys.pla: 1105: // +; vmsrc/apple/sossys.pla: 1106: moddep++ + !BYTE $66,$26 ; LLW [38] + !BYTE $8C ; INCR +; vmsrc/apple/sossys.pla: 1107: modfix = moddep - @header.2 // Adjust to skip header +; vmsrc/apple/sossys.pla: 1108: modsize = modsize - modfix +; vmsrc/apple/sossys.pla: 1109: rdlen = rdlen - modfix - 2 +; vmsrc/apple/sossys.pla: 1110: modaddr = allocheap(modsize) +; vmsrc/apple/sossys.pla: 1111: memcpy(modaddr, moddep, rdlen) +; vmsrc/apple/sossys.pla: 1112: // +; vmsrc/apple/sossys.pla: 1113: // Read in remainder of module into memory for fixups. +; vmsrc/apple/sossys.pla: 1114: // +; vmsrc/apple/sossys.pla: 1115: addr = modaddr +; vmsrc/apple/sossys.pla: 1116: repeat + !BYTE $6E,$26 ; DLW [38] + !BYTE $28,$63 ; LLA [99] + !BYTE $84 ; SUB + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C018 +_F172 !WORD _C018 + !BYTE $6E,$18 ; DLW [24] + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A003 +_F173 !WORD _A003 + !BYTE $66,$18 ; LLW [24] + !BYTE $76,$14 ; SLW [20] +_B047 +; vmsrc/apple/sossys.pla: 1117: addr = addr + rdlen +; vmsrc/apple/sossys.pla: 1118: rdlen = read(refnum, addr, 4096) +; vmsrc/apple/sossys.pla: 1119: until rdlen <= 0 + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$14 ; LLW [20] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C002 +_F174 !WORD _C002 + !BYTE $76,$04 ; SLW [4] +_B048 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B047 + !WORD _B047-* +_B046 +; vmsrc/apple/sossys.pla: 1120: close(refnum) +; vmsrc/apple/sossys.pla: 1121: // +; vmsrc/apple/sossys.pla: 1122: // Add module to symbol table. +; vmsrc/apple/sossys.pla: 1123: // +; vmsrc/apple/sossys.pla: 1124: addsym(mod, modaddr) +; vmsrc/apple/sossys.pla: 1125: // +; vmsrc/apple/sossys.pla: 1126: // Apply all fixups and symbol import/export. +; vmsrc/apple/sossys.pla: 1127: // +; vmsrc/apple/sossys.pla: 1128: modfix = modaddr - modfix +; vmsrc/apple/sossys.pla: 1129: modofst = modfix - RELADDR +; vmsrc/apple/sossys.pla: 1130: modend = modaddr + modsize +; vmsrc/apple/sossys.pla: 1131: bytecode = defofst + modofst +; vmsrc/apple/sossys.pla: 1132: rld = modend // Re-Locatable Directory +; vmsrc/apple/sossys.pla: 1133: esd = rld // Extern+Entry Symbol Directory +; vmsrc/apple/sossys.pla: 1134: while ^esd // Scan to end of ESD + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F175 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C022 +_F176 !WORD _C022 + !BYTE $66,$18 ; LLW [24] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $6E,$1A ; DLW [26] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $76,$1C ; SLW [28] + !BYTE $66,$18 ; LLW [24] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$1E ; SLW [30] + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$1C ; ADDLW [28] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$1E ; LLW [30] + !BYTE $6E,$28 ; DLW [40] + !BYTE $76,$2A ; SLW [42] + !BYTE $50 ; BRNCH _B051 + !WORD _B051-* +_B049 +; vmsrc/apple/sossys.pla: 1135: esd = esd + 4 +; vmsrc/apple/sossys.pla: 1136: loop + !BYTE $66,$2A ; LLW [42] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$2A ; SLW [42] +_B051 + !BYTE $66,$2A ; LLW [42] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B049 + !WORD _B049-* +_B050 +; vmsrc/apple/sossys.pla: 1137: esd++ + !BYTE $66,$2A ; LLW [42] + !BYTE $8C ; INCR +; vmsrc/apple/sossys.pla: 1138: if defcnt +; vmsrc/apple/sossys.pla: 1139: // +; vmsrc/apple/sossys.pla: 1140: // Locate bytecode defs in allocated segment. +; vmsrc/apple/sossys.pla: 1141: // +; vmsrc/apple/sossys.pla: 1142: modseg[modid], codeseg, drop = seg_find($00, (rld - bytecode + 255) >> 8, modid + $12) +; vmsrc/apple/sossys.pla: 1143: if perr +; vmsrc/apple/sossys.pla: 1144: return -perr + !BYTE $76,$2A ; SLW [42] + !BYTE $66,$0E ; LLW [14] + !BYTE $4C ; BRFLS _B052 + !WORD _B052-* + !BYTE $00 ; CN 0 + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $38,$FF ; ADDI 255 + !BYTE $10 ; CN 8 + !BYTE $9C ; SHR + !BYTE $68 ; LAB _D080+0 +_F177 !WORD _D080+0 + !BYTE $38,$12 ; ADDI 18 + !BYTE $54 ; CALL _C007 +_F178 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $76,$24 ; SLW [36] + !BYTE $26 ; LA _D079+0 +_F179 !WORD _D079+0 + !BYTE $B4 ; ADDAB _D080+0 +_F180 !WORD _D080+0 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D034+0 +_F181 !WORD _D034+0 + !BYTE $4C ; BRFLS _B054 + !WORD _B054-* + !BYTE $68 ; LAB _D034+0 +_F182 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E1 ; LEAVE 225 +; vmsrc/apple/sossys.pla: 1145: fin +_B054 +_B055 +; vmsrc/apple/sossys.pla: 1146: modid++ + !BYTE $68 ; LAB _D080+0 +_F183 !WORD _D080+0 + !BYTE $8C ; INCR +; vmsrc/apple/sossys.pla: 1147: defext = codeseg.0 + $7F // (codeseg.0 | $80) - 1 +; vmsrc/apple/sossys.pla: 1148: defaddr = (codeseg & $FF00) + $6000 +; vmsrc/apple/sossys.pla: 1149: codefix = defaddr - bytecode +; vmsrc/apple/sossys.pla: 1150: defofst = defaddr - defofst +; vmsrc/apple/sossys.pla: 1151: fin + !BYTE $78 ; SAB _D080+0 +_F184 !WORD _D080+0 + !BYTE $64,$24 ; LLB [36] + !BYTE $38,$7F ; ADDI 127 + !BYTE $74,$2F ; SLB [47] + !BYTE $66,$24 ; LLW [36] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $82 ; ADD + !BYTE $6E,$16 ; DLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$0C ; LLW [12] + !BYTE $84 ; SUB + !BYTE $76,$0C ; SLW [12] +_B052 +_B053 +; vmsrc/apple/sossys.pla: 1152: // +; vmsrc/apple/sossys.pla: 1153: // Run through the DeFinition Dictionary. +; vmsrc/apple/sossys.pla: 1154: // +; vmsrc/apple/sossys.pla: 1155: while ^rld == $02 + !BYTE $50 ; BRNCH _B058 + !WORD _B058-* +_B056 +; vmsrc/apple/sossys.pla: 1156: // +; vmsrc/apple/sossys.pla: 1157: // This is a bytcode def entry - add it to the def directory. +; vmsrc/apple/sossys.pla: 1158: // +; vmsrc/apple/sossys.pla: 1159: adddef(defext, rld=>1 + defofst, @deflast) +; vmsrc/apple/sossys.pla: 1160: rld = rld + 4 +; vmsrc/apple/sossys.pla: 1161: loop + !BYTE $64,$2F ; LLB [47] + !BYTE $66,$28 ; LLW [40] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $28,$22 ; LLA [34] + !BYTE $54 ; CALL _C026 +_F185 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$28 ; SLW [40] +_B058 + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B056 + !WORD _B056-* +_B057 +; vmsrc/apple/sossys.pla: 1162: // +; vmsrc/apple/sossys.pla: 1163: // Run through the Re-Location Dictionary. +; vmsrc/apple/sossys.pla: 1164: // +; vmsrc/apple/sossys.pla: 1165: while ^rld + !BYTE $50 ; BRNCH _B061 + !WORD _B061-* +_B059 +; vmsrc/apple/sossys.pla: 1166: rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) +; vmsrc/apple/sossys.pla: 1167: if ^rld +; vmsrc/apple/sossys.pla: 1168: *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + codefix, deftbl) +; vmsrc/apple/sossys.pla: 1169: rld = rld + 4 +; vmsrc/apple/sossys.pla: 1170: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $66,$1C ; LLW [28] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$28 ; LLW [40] + !BYTE $54 ; CALL _A018 +_F186 !WORD _A018 + !BYTE $76,$12 ; SLW [18] + !BYTE $76,$14 ; SLW [20] + !BYTE $6E,$28 ; DLW [40] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B062 + !WORD _B062-* + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B064 + !WORD _B064-* + !BYTE $66,$14 ; LLW [20] + !BYTE $62 ; LW + !BYTE $66,$2A ; LLW [42] + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C025 +_F187 !WORD _C025 + !BYTE $82 ; ADD + !BYTE $50 ; BRNCH _B065 + !WORD _B065-* +_B064 + !BYTE $66,$12 ; LLW [18] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _A017 +_F188 !WORD _A017 +_B065 + !BYTE $66,$14 ; LLW [20] + !BYTE $72 ; SW + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$28 ; SLW [40] +_B062 +_B063 +; vmsrc/apple/sossys.pla: 1171: loop +_B061 + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B059 + !WORD _B059-* +_B060 +; vmsrc/apple/sossys.pla: 1172: // +; vmsrc/apple/sossys.pla: 1173: // Run through the External/Entry Symbol Directory. +; vmsrc/apple/sossys.pla: 1174: // +; vmsrc/apple/sossys.pla: 1175: while ^esd + !BYTE $50 ; BRNCH _B068 + !WORD _B068-* +_B066 +; vmsrc/apple/sossys.pla: 1176: sym = esd +; vmsrc/apple/sossys.pla: 1177: esd = esd + dcitos(esd, @str) +; vmsrc/apple/sossys.pla: 1178: if ^esd & $08 +; vmsrc/apple/sossys.pla: 1179: // +; vmsrc/apple/sossys.pla: 1180: // EXPORT symbol - add it to the global symbol table. +; vmsrc/apple/sossys.pla: 1181: // +; vmsrc/apple/sossys.pla: 1182: addr = esd=>1 + modofst +; vmsrc/apple/sossys.pla: 1183: if uword_isge(addr, bytecode) +; vmsrc/apple/sossys.pla: 1184: // +; vmsrc/apple/sossys.pla: 1185: // Use the def directory address for bytecode. +; vmsrc/apple/sossys.pla: 1186: // +; vmsrc/apple/sossys.pla: 1187: addr = lookupdef(addr + codefix, deftbl) +; vmsrc/apple/sossys.pla: 1188: fin + !BYTE $66,$2A ; LLW [42] + !BYTE $76,$2C ; SLW [44] + !BYTE $66,$2A ; LLW [42] + !BYTE $34 ; DUP + !BYTE $28,$30 ; LLA [48] + !BYTE $54 ; CALL _A012 +_F189 !WORD _A012 + !BYTE $82 ; ADD + !BYTE $6E,$2A ; DLW [42] + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B069 + !WORD _B069-* + !BYTE $66,$2A ; LLW [42] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$1C ; ADDLW [28] + !BYTE $6E,$14 ; DLW [20] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A006 +_F190 !WORD _A006 + !BYTE $4C ; BRFLS _B071 + !WORD _B071-* + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _A017 +_F191 !WORD _A017 + !BYTE $76,$14 ; SLW [20] +_B071 +_B072 +; vmsrc/apple/sossys.pla: 1189: addsym(sym, addr) +; vmsrc/apple/sossys.pla: 1190: fin + !BYTE $66,$2C ; LLW [44] + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C022 +_F192 !WORD _C022 +_B069 +_B070 +; vmsrc/apple/sossys.pla: 1191: esd = esd + 3 +; vmsrc/apple/sossys.pla: 1192: loop + !BYTE $66,$2A ; LLW [42] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$2A ; SLW [42] +_B068 + !BYTE $66,$2A ; LLW [42] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B066 + !WORD _B066-* +_B067 +; vmsrc/apple/sossys.pla: 1193: if defext +; vmsrc/apple/sossys.pla: 1194: // +; vmsrc/apple/sossys.pla: 1195: // Copy bytecode to code segment. +; vmsrc/apple/sossys.pla: 1196: // +; vmsrc/apple/sossys.pla: 1197: memxcpy(codeseg, bytecode, modsize - (bytecode - modaddr)) +; vmsrc/apple/sossys.pla: 1198: fin + !BYTE $64,$2F ; LLB [47] + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$24 ; LLW [36] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$18 ; LLW [24] + !BYTE $84 ; SUB + !BYTE $84 ; SUB + !BYTE $54 ; CALL _A004 +_F193 !WORD _A004 +_B073 +_B074 +; vmsrc/apple/sossys.pla: 1199: else + !BYTE $50 ; BRNCH _B028 + !WORD _B028-* +_B027 +; vmsrc/apple/sossys.pla: 1200: lerr = $46 +; vmsrc/apple/sossys.pla: 1201: fin + !BYTE $2A,$46 ; CB 70 + !BYTE $74,$2E ; SLB [46] +_B028 +; vmsrc/apple/sossys.pla: 1202: if lerr +; vmsrc/apple/sossys.pla: 1203: return -lerr + !BYTE $64,$2E ; LLB [46] + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $64,$2E ; LLB [46] + !BYTE $90 ; NEG + !BYTE $5A,$E1 ; LEAVE 225 +; vmsrc/apple/sossys.pla: 1204: fin +_B075 +_B076 +; vmsrc/apple/sossys.pla: 1205: // +; vmsrc/apple/sossys.pla: 1206: // Free up end-of-module main memory. +; vmsrc/apple/sossys.pla: 1207: // +; vmsrc/apple/sossys.pla: 1208: releaseheap(bytecode) +; vmsrc/apple/sossys.pla: 1209: // +; vmsrc/apple/sossys.pla: 1210: // Call init routine if it exists. +; vmsrc/apple/sossys.pla: 1211: // +; vmsrc/apple/sossys.pla: 1212: initcode = 0 +; vmsrc/apple/sossys.pla: 1213: if init +; vmsrc/apple/sossys.pla: 1214: initcode = adddef(defext, init + defofst, @deflast)() +; vmsrc/apple/sossys.pla: 1215: if initcode < 0 +; vmsrc/apple/sossys.pla: 1216: perr = -initcode +; vmsrc/apple/sossys.pla: 1217: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C021 +_F194 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$12 ; SLW [18] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $64,$2F ; LLB [47] + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $28,$22 ; LLA [34] + !BYTE $54 ; CALL _C026 +_F195 !WORD _C026 + !BYTE $56 ; ICAL + !BYTE $6E,$12 ; DLW [18] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B079 + !WORD _B079-* + !BYTE $66,$12 ; LLW [18] + !BYTE $90 ; NEG + !BYTE $78 ; SAB _D034+0 +_F196 !WORD _D034+0 +_B079 +_B080 +; vmsrc/apple/sossys.pla: 1218: fin +_B077 +_B078 +; vmsrc/apple/sossys.pla: 1219: return initcode + !BYTE $66,$12 ; LLW [18] + !BYTE $5A,$E1 ; LEAVE 225 +; vmsrc/apple/sossys.pla: 1220: end +; vmsrc/apple/sossys.pla: 1221: def execmod(modfile)#1 + ; modfile -> [0] +_P026 ; execmod(modfile)#1() +_C028 ; execmod() + JSR INTERP +; vmsrc/apple/sossys.pla: 1222: byte moddci[17] + ; moddci -> [2] +; vmsrc/apple/sossys.pla: 1223: word saveheap, savesym, saveflags + ; saveheap -> [19] + ; savesym -> [21] + ; saveflags -> [23] +; vmsrc/apple/sossys.pla: 1224: +; vmsrc/apple/sossys.pla: 1225: perr = 1 + !BYTE $58,$19,$01 ; ENTER 25,1 +; vmsrc/apple/sossys.pla: 1226: if stodci(modfile, @moddci) +; vmsrc/apple/sossys.pla: 1227: saveheap = heap +; vmsrc/apple/sossys.pla: 1228: savesym = lastsym +; vmsrc/apple/sossys.pla: 1229: saveflags = systemflags +; vmsrc/apple/sossys.pla: 1230: if loadmod(@moddci) < modkeep +; vmsrc/apple/sossys.pla: 1231: lastsym = savesym +; vmsrc/apple/sossys.pla: 1232: heap = saveheap +; vmsrc/apple/sossys.pla: 1233: while modid + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D034+0 +_F197 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A013 +_F198 !WORD _A013 + !BYTE $4C ; BRFLS _B081 + !WORD _B081-* + !BYTE $6A ; LAW _D077+0 +_F199 !WORD _D077+0 + !BYTE $76,$13 ; SLW [19] + !BYTE $6A ; LAW _D082+0 +_F200 !WORD _D082+0 + !BYTE $76,$15 ; SLW [21] + !BYTE $6A ; LAW _D076+0 +_F201 !WORD _D076+0 + !BYTE $76,$17 ; SLW [23] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C027 +_F202 !WORD _C027 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B083 + !WORD _B083-* + !BYTE $66,$15 ; LLW [21] + !BYTE $7A ; SAW _D082+0 +_F203 !WORD _D082+0 + !BYTE $66,$13 ; LLW [19] + !BYTE $7A ; SAW _D077+0 +_F204 !WORD _D077+0 + !BYTE $50 ; BRNCH _B087 + !WORD _B087-* +_B085 +; vmsrc/apple/sossys.pla: 1234: modid-- + !BYTE $68 ; LAB _D080+0 +_F205 !WORD _D080+0 + !BYTE $8E ; DECR +; vmsrc/apple/sossys.pla: 1235: seg_release(modseg[modid]) +; vmsrc/apple/sossys.pla: 1236: loop + !BYTE $78 ; SAB _D080+0 +_F206 !WORD _D080+0 + !BYTE $26 ; LA _D079+0 +_F207 !WORD _D079+0 + !BYTE $B4 ; ADDAB _D080+0 +_F208 !WORD _D080+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C008 +_F209 !WORD _C008 + !BYTE $30 ; DROP +_B087 + !BYTE $68 ; LAB _D080+0 +_F210 !WORD _D080+0 + !BYTE $4E ; BRTRU _B085 + !WORD _B085-* +_B086 +; vmsrc/apple/sossys.pla: 1237: xpokeb(symtbl.0, lastsym, 0) +; vmsrc/apple/sossys.pla: 1238: systemflags = saveflags +; vmsrc/apple/sossys.pla: 1239: else + !BYTE $68 ; LAB _D081+0 +_F211 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F212 !WORD _D082+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F213 !WORD _A005 + !BYTE $66,$17 ; LLW [23] + !BYTE $7A ; SAW _D076+0 +_F214 !WORD _D076+0 + !BYTE $50 ; BRNCH _B084 + !WORD _B084-* +_B083 +; vmsrc/apple/sossys.pla: 1240: modid = 0 +; vmsrc/apple/sossys.pla: 1241: fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D080+0 +_F215 !WORD _D080+0 +_B084 +; vmsrc/apple/sossys.pla: 1242: fin +_B081 +_B082 +; vmsrc/apple/sossys.pla: 1243: return -perr + !BYTE $68 ; LAB _D034+0 +_F216 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$19 ; LEAVE 25 +; vmsrc/apple/sossys.pla: 1244: end +; vmsrc/apple/sossys.pla: 1245: // +; vmsrc/apple/sossys.pla: 1246: // Init 2K symbol table. +; vmsrc/apple/sossys.pla: 1247: // +; vmsrc/apple/sossys.pla: 1248: drop, symtbl, drop = seg_find($00, $08, $11) +_INIT + JSR INTERP +; vmsrc/apple/sossys.pla: 1249: lastsym = symtbl & $FF00 +; vmsrc/apple/sossys.pla: 1250: xpokeb(symtbl.0, lastsym, 0) +; vmsrc/apple/sossys.pla: 1251: while *sysmodsym + !BYTE $00 ; CN 0 + !BYTE $10 ; CN 8 + !BYTE $2A,$11 ; CB 17 + !BYTE $54 ; CALL _C007 +_F217 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $7A ; SAW _D081+0 +_F218 !WORD _D081+0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D081+0 +_F219 !WORD _D081+0 + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D082+0 +_F220 !WORD _D082+0 + !BYTE $68 ; LAB _D081+0 +_F221 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F222 !WORD _D082+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F223 !WORD _A005 + !BYTE $50 ; BRNCH _B090 + !WORD _B090-* +_B088 +; vmsrc/apple/sossys.pla: 1252: stodci(sysmodsym=>0, heap) +; vmsrc/apple/sossys.pla: 1253: addsym(heap, sysmodsym=>2) +; vmsrc/apple/sossys.pla: 1254: sysmodsym = sysmodsym + 4 +; vmsrc/apple/sossys.pla: 1255: loop + !BYTE $6A ; LAW _D075+0 +_F224 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D077+0 +_F225 !WORD _D077+0 + !BYTE $54 ; CALL _A013 +_F226 !WORD _A013 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D077+0 +_F227 !WORD _D077+0 + !BYTE $6A ; LAW _D075+0 +_F228 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C022 +_F229 !WORD _C022 + !BYTE $6A ; LAW _D075+0 +_F230 !WORD _D075+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $7A ; SAW _D075+0 +_F231 !WORD _D075+0 +_B090 + !BYTE $6A ; LAW _D075+0 +_F232 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B088 + !WORD _B088-* +_B089 +; vmsrc/apple/sossys.pla: 1256: // +; vmsrc/apple/sossys.pla: 1257: // Clear system path and command line +; vmsrc/apple/sossys.pla: 1258: // +; vmsrc/apple/sossys.pla: 1259: sysmods = 0 +; vmsrc/apple/sossys.pla: 1260: syspath = @sysmods +; vmsrc/apple/sossys.pla: 1261: cmdlnptr = @cmdln +; vmsrc/apple/sossys.pla: 1262: // +; vmsrc/apple/sossys.pla: 1263: // Print PLASMA version +; vmsrc/apple/sossys.pla: 1264: // +; vmsrc/apple/sossys.pla: 1265: init_cons +; vmsrc/apple/sossys.pla: 1266: prstr("PLASMA 2.0\n")//; putb(version.1); putc('.'); putb(version.0); putln + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D074+0 +_F233 !WORD _D074+0 + !BYTE $26 ; LA _D074+0 +_F234 !WORD _D074+0 + !BYTE $7A ; SAW _D032+0 +_F235 !WORD _D032+0 + !BYTE $26 ; LA _D043+0 +_F236 !WORD _D043+0 + !BYTE $7A ; SAW _D033+0 +_F237 !WORD _D033+0 + !BYTE $54 ; CALL _C006 +_F238 !WORD _C006 + !BYTE $2E ; CS + !BYTE $0B + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$32 + !BYTE $2E,$30,$0D + !BYTE $54 ; CALL _C012 +_F239 !WORD _C012 +; vmsrc/apple/sossys.pla: 1267: prstr("MEM:$"); prword(availheap); crout + !BYTE $2E ; CS + !BYTE $05 + !BYTE $4D,$45,$4D,$3A,$24 + !BYTE $54 ; CALL _C012 +_F240 !WORD _C012 +; vmsrc/apple/sossys.pla: 1268: // +; vmsrc/apple/sossys.pla: 1269: // Exec command line parser +; vmsrc/apple/sossys.pla: 1270: // +; vmsrc/apple/sossys.pla: 1271: loadmod(@soscmd) +; vmsrc/apple/sossys.pla: 1272: modid = 0 +; vmsrc/apple/sossys.pla: 1273: autorun = open("AUTORUN") + !BYTE $54 ; CALL _C017 +_F241 !WORD _C017 + !BYTE $54 ; CALL _C016 +_F242 !WORD _C016 + !BYTE $54 ; CALL _C010 +_F243 !WORD _C010 + !BYTE $26 ; LA _D044+0 +_F244 !WORD _D044+0 + !BYTE $54 ; CALL _C027 +_F245 !WORD _C027 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D080+0 +_F246 !WORD _D080+0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $41,$55,$54,$4F,$52,$55,$4E + !BYTE $54 ; CALL _C000 +_F247 !WORD _C000 + !BYTE $78 ; SAB _D078+0 +_F248 !WORD _D078+0 +; vmsrc/apple/sossys.pla: 1274: if autorun > 0 +; vmsrc/apple/sossys.pla: 1275: cmdln = read(autorun, @cmdln.1, 64) +; vmsrc/apple/sossys.pla: 1276: close(autorun) +; vmsrc/apple/sossys.pla: 1277: fin + !BYTE $68 ; LAB _D078+0 +_F249 !WORD _D078+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B091 + !WORD _B091-* + !BYTE $68 ; LAB _D078+0 +_F250 !WORD _D078+0 + !BYTE $26 ; LA _D043+1 +_F251 !WORD _D043+1 + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C002 +_F252 !WORD _C002 + !BYTE $78 ; SAB _D043+0 +_F253 !WORD _D043+0 + !BYTE $68 ; LAB _D078+0 +_F254 !WORD _D078+0 + !BYTE $54 ; CALL _C001 +_F255 !WORD _C001 + !BYTE $30 ; DROP +_B091 +_B092 +; vmsrc/apple/sossys.pla: 1278: // +; vmsrc/apple/sossys.pla: 1279: // Call cmd line parser +; vmsrc/apple/sossys.pla: 1280: // +; vmsrc/apple/sossys.pla: 1281: repeat +_B094 +; vmsrc/apple/sossys.pla: 1282: execmod((*cmdparser)()) +; vmsrc/apple/sossys.pla: 1283: write(refcons, @textmode, 3) +; vmsrc/apple/sossys.pla: 1284: cmdln = 0 +; vmsrc/apple/sossys.pla: 1285: until 0 + !BYTE $6A,$F0,$A0 ; LAW 41200 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C028 +_F256 !WORD _C028 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D037+0 +_F257 !WORD _D037+0 + !BYTE $26 ; LA _D042+0 +_F258 !WORD _D042+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C003 +_F259 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D043+0 +_F260 !WORD _D043+0 +_B095 + !BYTE $50 ; BRNCH _B094 + !WORD _B094-* +_B093 +; vmsrc/apple/sossys.pla: 1286: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0 diff --git a/src/vmsrc/apple/sossysjit.a b/src/vmsrc/apple/sossysjit.a new file mode 100644 index 0000000..b5c6cb0 --- /dev/null +++ b/src/vmsrc/apple/sossysjit.a @@ -0,0 +1,3564 @@ +; ACME COMPATIBLE OUTPUT + JMP _INIT ; MODULE INITIALIZATION ROUTINE +; vmsrc/apple/sossysjit.pla: 0001: const membank = $FFEF + ; membank = 65519 +; vmsrc/apple/sossysjit.pla: 0002: const RELADDR = $1000 + ; RELADDR = 4096 +; vmsrc/apple/sossysjit.pla: 0003: // +; vmsrc/apple/sossysjit.pla: 0004: // System flags: memory allocator screen holes. +; vmsrc/apple/sossysjit.pla: 0005: // +; vmsrc/apple/sossysjit.pla: 0006: const restxt1 = $0001 + ; restxt1 = 1 +; vmsrc/apple/sossysjit.pla: 0007: const restxt2 = $0002 + ; restxt2 = 2 +; vmsrc/apple/sossysjit.pla: 0008: const resxtxt1 = $0004 + ; resxtxt1 = 4 +; vmsrc/apple/sossysjit.pla: 0009: const resxtxt2 = $0008 + ; resxtxt2 = 8 +; vmsrc/apple/sossysjit.pla: 0010: const reshgr1 = $0010 + ; reshgr1 = 16 +; vmsrc/apple/sossysjit.pla: 0011: const reshgr2 = $0020 + ; reshgr2 = 32 +; vmsrc/apple/sossysjit.pla: 0012: const resxhgr1 = $0040 + ; resxhgr1 = 64 +; vmsrc/apple/sossysjit.pla: 0013: const resxhgr2 = $0080 + ; resxhgr2 = 128 +; vmsrc/apple/sossysjit.pla: 0014: const nojitc = $0100 + ; nojitc = 256 +; vmsrc/apple/sossysjit.pla: 0015: // +; vmsrc/apple/sossysjit.pla: 0016: // Module don't free memory +; vmsrc/apple/sossysjit.pla: 0017: // +; vmsrc/apple/sossysjit.pla: 0018: const modkeep = $2000 + ; modkeep = 8192 +; vmsrc/apple/sossysjit.pla: 0019: const modinitkeep = $4000 + ; modinitkeep = 16384 +; vmsrc/apple/sossysjit.pla: 0020: // +; vmsrc/apple/sossysjit.pla: 0021: // Private addresses +; vmsrc/apple/sossysjit.pla: 0022: // +; vmsrc/apple/sossysjit.pla: 0023: const instr = $A020 + ; instr = 40992 +; vmsrc/apple/sossysjit.pla: 0024: const cmdparser = $A0F0 + ; cmdparser = 41200 +; vmsrc/apple/sossysjit.pla: 0025: const xinterp = $A0F8 + ; xinterp = 41208 +; vmsrc/apple/sossysjit.pla: 0026: const jitinterp = $A0FA + ; jitinterp = 41210 +; vmsrc/apple/sossysjit.pla: 0027: // +; vmsrc/apple/sossysjit.pla: 0028: // Indirect interpreter DEFinition entrypoint +; vmsrc/apple/sossysjit.pla: 0029: // +; vmsrc/apple/sossysjit.pla: 0030: struc t_defentry +; vmsrc/apple/sossysjit.pla: 0031: byte interpjsr + ; interpjsr = 0 +; vmsrc/apple/sossysjit.pla: 0032: word interpaddr + ; interpaddr = 1 +; vmsrc/apple/sossysjit.pla: 0033: word bytecodeaddr + ; bytecodeaddr = 3 +; vmsrc/apple/sossysjit.pla: 0034: byte bytecodexbyte + ; bytecodexbyte = 5 +; vmsrc/apple/sossysjit.pla: 0035: byte callcount + ; callcount = 6 +; vmsrc/apple/sossysjit.pla: 0036: byte bytecodesize + ; bytecodesize = 7 +; vmsrc/apple/sossysjit.pla: 0037: end + ; t_defentry = 8 +; vmsrc/apple/sossysjit.pla: 0038: // +; vmsrc/apple/sossysjit.pla: 0039: // JIT compiler values +; vmsrc/apple/sossysjit.pla: 0040: // +; vmsrc/apple/sossysjit.pla: 0041: const jitcbuf = $9000 + ; jitcbuf = 36864 +; vmsrc/apple/sossysjit.pla: 0042: const jitcomp = $A0F2 + ; jitcomp = 41202 +; vmsrc/apple/sossysjit.pla: 0043: const jitcodeptr = $A0F4 + ; jitcodeptr = 41204 +; vmsrc/apple/sossysjit.pla: 0044: const codemax = $A000 + ; codemax = 40960 +; vmsrc/apple/sossysjit.pla: 0045: // +; vmsrc/apple/sossysjit.pla: 0046: // Pedefined functions. +; vmsrc/apple/sossysjit.pla: 0047: // +; vmsrc/apple/sossysjit.pla: 0048: predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 +; vmsrc/apple/sossysjit.pla: 0049: predef crout()#0, cout(c)#0, prstr(s)#0, print(i)#0, prbyte(b)#0, prword(w)#0 +; vmsrc/apple/sossysjit.pla: 0050: predef cin()#1, rdstr(p)#1, toupper(c)#1, strcpy(dst,src)#1, strcat(dst,src)#1 +; vmsrc/apple/sossysjit.pla: 0051: predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr), releaseheap(newheap)#1, availheap()#1 +; vmsrc/apple/sossysjit.pla: 0052: predef memset(addr,value,size)#0, memcpy(dst,src,size)#0 +; vmsrc/apple/sossysjit.pla: 0053: predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2 +; vmsrc/apple/sossysjit.pla: 0054: predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buff, len)#1, write(refnum, buff, len)#1 +; vmsrc/apple/sossysjit.pla: 0055: // +; vmsrc/apple/sossysjit.pla: 0056: // Exported CMDSYS table +; vmsrc/apple/sossysjit.pla: 0057: // +; vmsrc/apple/sossysjit.pla: 0058: word version = $0200 // 02.00 +_D031 ; version = $0200 // 02.00 + !WORD $0200 +; vmsrc/apple/sossysjit.pla: 0059: word syspath +_D032 !FILL 2 ; syspath +; vmsrc/apple/sossysjit.pla: 0060: word cmdlnptr +_D033 !FILL 2 ; cmdlnptr +; vmsrc/apple/sossysjit.pla: 0061: word = @execmod, @open, @close, @read, @write +_F000 !WORD _P026 +_F001 !WORD _P027 +_F002 !WORD _P028 +_F003 !WORD _P029 +_F004 !WORD _P030 +; vmsrc/apple/sossysjit.pla: 0062: byte perr +_D034 !FILL 1 ; perr +; vmsrc/apple/sossysjit.pla: 0063: byte jitcount = 0 +_D035 ; jitcount = 0 + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0064: byte jitsize = 0 +_D036 ; jitsize = 0 + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0065: byte refcons = 0 +_D037 ; refcons = 0 + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0066: byte devcons = 0 +_D038 ; devcons = 0 + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0067: // +; vmsrc/apple/sossysjit.pla: 0068: // String pool. +; vmsrc/apple/sossysjit.pla: 0069: // +; vmsrc/apple/sossysjit.pla: 0070: byte hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +_D039 ; hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' + !BYTE $30 + !BYTE $31 + !BYTE $32 + !BYTE $33 + !BYTE $34 + !BYTE $35 + !BYTE $36 + !BYTE $37 + !BYTE $38 + !BYTE $39 + !BYTE $41 + !BYTE $42 + !BYTE $43 + !BYTE $44 + !BYTE $45 + !BYTE $46 +; vmsrc/apple/sossysjit.pla: 0071: // +; vmsrc/apple/sossysjit.pla: 0072: // Exported Machine ID. +; vmsrc/apple/sossysjit.pla: 0073: // +; vmsrc/apple/sossysjit.pla: 0074: byte machid = $F2 // Apple ///, 80 columns +_D040 ; machid = $F2 // Apple ///, 80 columns + !BYTE $F2 +; vmsrc/apple/sossysjit.pla: 0075: // +; vmsrc/apple/sossysjit.pla: 0076: // Console and textmode control characters +; vmsrc/apple/sossysjit.pla: 0077: // +; vmsrc/apple/sossysjit.pla: 0078: byte console[] = ".CONSOLE" +_D041 ; console[] = ".CONSOLE" + !BYTE $08 + !BYTE $2E,$43,$4F,$4E,$53,$4F,$4C,$45 +; vmsrc/apple/sossysjit.pla: 0079: byte textmode[] = 16, 0, 15 +_D042 ; textmode[] = 16, 0, 15 + !BYTE $10 + !BYTE $00 + !BYTE $0F +; vmsrc/apple/sossysjit.pla: 0080: +; vmsrc/apple/sossysjit.pla: 0081: // +; vmsrc/apple/sossysjit.pla: 0082: // Working input buffer overlayed with strings table +; vmsrc/apple/sossysjit.pla: 0083: // +; vmsrc/apple/sossysjit.pla: 0084: byte cmdln = "" +_D043 ; cmdln = "" + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0085: // +; vmsrc/apple/sossysjit.pla: 0086: // SOS.CMD as DCI string +; vmsrc/apple/sossysjit.pla: 0087: // +; vmsrc/apple/sossysjit.pla: 0088: byte soscmd = 'S'|$80,'O'|$80,'S'|$80,'.'|$80,'C'|$80,'M'|$80,'D'|$80,'J'|$80,'I'|$80,'T' +_D044 ; soscmd = 'S'|$80,'O'|$80,'S'|$80,'.'|$80,'C'|$80,'M'|$80,'D'|$80,'J'|$80,'I'|$80,'T' + !BYTE $D3 + !BYTE $CF + !BYTE $D3 + !BYTE $AE + !BYTE $C3 + !BYTE $CD + !BYTE $C4 + !BYTE $CA + !BYTE $C9 + !BYTE $54 +; vmsrc/apple/sossysjit.pla: 0089: // +; vmsrc/apple/sossysjit.pla: 0090: // Standard Library exported functions. +; vmsrc/apple/sossysjit.pla: 0091: // +; vmsrc/apple/sossysjit.pla: 0092: byte sysmodstr[] = "CMDSYS" +_D045 ; sysmodstr[] = "CMDSYS" + !BYTE $06 + !BYTE $43,$4D,$44,$53,$59,$53 +; vmsrc/apple/sossysjit.pla: 0093: byte machidstr[] = "MACHID" +_D046 ; machidstr[] = "MACHID" + !BYTE $06 + !BYTE $4D,$41,$43,$48,$49,$44 +; vmsrc/apple/sossysjit.pla: 0094: byte sysstr[] = "SYSCALL" +_D047 ; sysstr[] = "SYSCALL" + !BYTE $07 + !BYTE $53,$59,$53,$43,$41,$4C,$4C +; vmsrc/apple/sossysjit.pla: 0095: byte callstr[] = "CALL" +_D048 ; callstr[] = "CALL" + !BYTE $04 + !BYTE $43,$41,$4C,$4C +; vmsrc/apple/sossysjit.pla: 0096: byte putcstr[] = "PUTC" +_D049 ; putcstr[] = "PUTC" + !BYTE $04 + !BYTE $50,$55,$54,$43 +; vmsrc/apple/sossysjit.pla: 0097: byte putlnstr[] = "PUTLN" +_D050 ; putlnstr[] = "PUTLN" + !BYTE $05 + !BYTE $50,$55,$54,$4C,$4E +; vmsrc/apple/sossysjit.pla: 0098: byte putsstr[] = "PUTS" +_D051 ; putsstr[] = "PUTS" + !BYTE $04 + !BYTE $50,$55,$54,$53 +; vmsrc/apple/sossysjit.pla: 0099: byte putistr[] = "PUTI" +_D052 ; putistr[] = "PUTI" + !BYTE $04 + !BYTE $50,$55,$54,$49 +; vmsrc/apple/sossysjit.pla: 0100: byte putbstr[] = "PUTB" +_D053 ; putbstr[] = "PUTB" + !BYTE $04 + !BYTE $50,$55,$54,$42 +; vmsrc/apple/sossysjit.pla: 0101: byte putwstr[] = "PUTH" +_D054 ; putwstr[] = "PUTH" + !BYTE $04 + !BYTE $50,$55,$54,$48 +; vmsrc/apple/sossysjit.pla: 0102: byte getcstr[] = "GETC" +_D055 ; getcstr[] = "GETC" + !BYTE $04 + !BYTE $47,$45,$54,$43 +; vmsrc/apple/sossysjit.pla: 0103: byte getsstr[] = "GETS" +_D056 ; getsstr[] = "GETS" + !BYTE $04 + !BYTE $47,$45,$54,$53 +; vmsrc/apple/sossysjit.pla: 0104: byte toupstr[] = "TOUPPER" +_D057 ; toupstr[] = "TOUPPER" + !BYTE $07 + !BYTE $54,$4F,$55,$50,$50,$45,$52 +; vmsrc/apple/sossysjit.pla: 0105: byte strcpystr[] = "STRCPY" +_D058 ; strcpystr[] = "STRCPY" + !BYTE $06 + !BYTE $53,$54,$52,$43,$50,$59 +; vmsrc/apple/sossysjit.pla: 0106: byte strcatstr[] = "STRCAT" +_D059 ; strcatstr[] = "STRCAT" + !BYTE $06 + !BYTE $53,$54,$52,$43,$41,$54 +; vmsrc/apple/sossysjit.pla: 0107: byte hpmarkstr[] = "HEAPMARK" +_D060 ; hpmarkstr[] = "HEAPMARK" + !BYTE $08 + !BYTE $48,$45,$41,$50,$4D,$41,$52,$4B +; vmsrc/apple/sossysjit.pla: 0108: byte hpalignstr[] = "HEAPALLOCALIGN" +_D061 ; hpalignstr[] = "HEAPALLOCALIGN" + !BYTE $0E + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43,$41,$4C,$49,$47,$4E +; vmsrc/apple/sossysjit.pla: 0109: byte hpallocstr[] = "HEAPALLOC" +_D062 ; hpallocstr[] = "HEAPALLOC" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$4C,$4C,$4F + !BYTE $43 +; vmsrc/apple/sossysjit.pla: 0110: byte hprelstr[] = "HEAPRELEASE" +_D063 ; hprelstr[] = "HEAPRELEASE" + !BYTE $0B + !BYTE $48,$45,$41,$50,$52,$45,$4C,$45 + !BYTE $41,$53,$45 +; vmsrc/apple/sossysjit.pla: 0111: byte hpavlstr[] = "HEAPAVAIL" +_D064 ; hpavlstr[] = "HEAPAVAIL" + !BYTE $09 + !BYTE $48,$45,$41,$50,$41,$56,$41,$49 + !BYTE $4C +; vmsrc/apple/sossysjit.pla: 0112: byte memsetstr[] = "MEMSET" +_D065 ; memsetstr[] = "MEMSET" + !BYTE $06 + !BYTE $4D,$45,$4D,$53,$45,$54 +; vmsrc/apple/sossysjit.pla: 0113: byte memcpystr[] = "MEMCPY" +_D066 ; memcpystr[] = "MEMCPY" + !BYTE $06 + !BYTE $4D,$45,$4D,$43,$50,$59 +; vmsrc/apple/sossysjit.pla: 0114: byte uisgtstr[] = "ISUGT" +_D067 ; uisgtstr[] = "ISUGT" + !BYTE $05 + !BYTE $49,$53,$55,$47,$54 +; vmsrc/apple/sossysjit.pla: 0115: byte uisgestr[] = "ISUGE" +_D068 ; uisgestr[] = "ISUGE" + !BYTE $05 + !BYTE $49,$53,$55,$47,$45 +; vmsrc/apple/sossysjit.pla: 0116: byte uisltstr[] = "ISULT" +_D069 ; uisltstr[] = "ISULT" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$54 +; vmsrc/apple/sossysjit.pla: 0117: byte uislestr[] = "ISULE" +_D070 ; uislestr[] = "ISULE" + !BYTE $05 + !BYTE $49,$53,$55,$4C,$45 +; vmsrc/apple/sossysjit.pla: 0118: byte sextstr[] = "SEXT" +_D071 ; sextstr[] = "SEXT" + !BYTE $04 + !BYTE $53,$45,$58,$54 +; vmsrc/apple/sossysjit.pla: 0119: byte divmodstr[] = "DIVMOD" +_D072 ; divmodstr[] = "DIVMOD" + !BYTE $06 + !BYTE $44,$49,$56,$4D,$4F,$44 +; vmsrc/apple/sossysjit.pla: 0120: word exports[] = @sysmodstr, @version +_D073 ; exports[] = @sysmodstr, @version +_F005 !WORD _D045 +_F006 !WORD _D031 +; vmsrc/apple/sossysjit.pla: 0121: word = @sysstr, @syscall +_F007 !WORD _D047 +_F008 !WORD _P000 +; vmsrc/apple/sossysjit.pla: 0122: word = @callstr, @call +_F009 !WORD _D048 +_F010 !WORD _P001 +; vmsrc/apple/sossysjit.pla: 0123: word = @putcstr, @cout +_F011 !WORD _D049 +_F012 !WORD _P003 +; vmsrc/apple/sossysjit.pla: 0124: word = @putlnstr, @crout +_F013 !WORD _D050 +_F014 !WORD _P002 +; vmsrc/apple/sossysjit.pla: 0125: word = @putsstr, @prstr +_F015 !WORD _D051 +_F016 !WORD _P004 +; vmsrc/apple/sossysjit.pla: 0126: word = @putistr, @print +_F017 !WORD _D052 +_F018 !WORD _P005 +; vmsrc/apple/sossysjit.pla: 0127: word = @putbstr, @prbyte +_F019 !WORD _D053 +_F020 !WORD _P006 +; vmsrc/apple/sossysjit.pla: 0128: word = @putwstr, @prword +_F021 !WORD _D054 +_F022 !WORD _P007 +; vmsrc/apple/sossysjit.pla: 0129: word = @getcstr, @cin +_F023 !WORD _D055 +_F024 !WORD _P008 +; vmsrc/apple/sossysjit.pla: 0130: word = @getsstr, @rdstr +_F025 !WORD _D056 +_F026 !WORD _P009 +; vmsrc/apple/sossysjit.pla: 0131: word = @toupstr, @toupper +_F027 !WORD _D057 +_F028 !WORD _P010 +; vmsrc/apple/sossysjit.pla: 0132: byte sysmods[] // overlay sys path with exports +_D074 ; sysmods[] // overlay sys path with exports +; vmsrc/apple/sossysjit.pla: 0133: word = @hpmarkstr, @markheap +_F029 !WORD _D060 +_F030 !WORD _P013 +; vmsrc/apple/sossysjit.pla: 0134: word = @hpallocstr,@allocheap +_F031 !WORD _D062 +_F032 !WORD _P014 +; vmsrc/apple/sossysjit.pla: 0135: word = @hpalignstr,@allocalignheap +_F033 !WORD _D061 +_F034 !WORD _P015 +; vmsrc/apple/sossysjit.pla: 0136: word = @hprelstr, @releaseheap +_F035 !WORD _D063 +_F036 !WORD _P016 +; vmsrc/apple/sossysjit.pla: 0137: word = @hpavlstr, @availheap +_F037 !WORD _D064 +_F038 !WORD _P017 +; vmsrc/apple/sossysjit.pla: 0138: word = @memsetstr, @memset +_F039 !WORD _D065 +_F040 !WORD _P018 +; vmsrc/apple/sossysjit.pla: 0139: word = @memcpystr, @memcpy +_F041 !WORD _D066 +_F042 !WORD _P019 +; vmsrc/apple/sossysjit.pla: 0140: word = @strcpystr, @strcpy +_F043 !WORD _D058 +_F044 !WORD _P011 +; vmsrc/apple/sossysjit.pla: 0141: word = @strcatstr, @strcat +_F045 !WORD _D059 +_F046 !WORD _P012 +; vmsrc/apple/sossysjit.pla: 0142: word = @uisgtstr, @uword_isgt +_F047 !WORD _D067 +_F048 !WORD _P020 +; vmsrc/apple/sossysjit.pla: 0143: word = @uisgestr, @uword_isge +_F049 !WORD _D068 +_F050 !WORD _P021 +; vmsrc/apple/sossysjit.pla: 0144: word = @uisltstr, @uword_islt +_F051 !WORD _D069 +_F052 !WORD _P022 +; vmsrc/apple/sossysjit.pla: 0145: word = @uislestr, @uword_isle +_F053 !WORD _D070 +_F054 !WORD _P023 +; vmsrc/apple/sossysjit.pla: 0146: word = @sextstr, @sext +_F055 !WORD _D071 +_F056 !WORD _P024 +; vmsrc/apple/sossysjit.pla: 0147: word = @divmodstr, @divmod +_F057 !WORD _D072 +_F058 !WORD _P025 +; vmsrc/apple/sossysjit.pla: 0148: word = @machidstr, @machid +_F059 !WORD _D046 +_F060 !WORD _D040 +; vmsrc/apple/sossysjit.pla: 0149: word = 0 + !WORD $0000 +; vmsrc/apple/sossysjit.pla: 0150: word sysmodsym = @exports +_D075 ; sysmodsym = @exports +_F061 !WORD _D073 +; vmsrc/apple/sossysjit.pla: 0151: // +; vmsrc/apple/sossysjit.pla: 0152: // System variables. +; vmsrc/apple/sossysjit.pla: 0153: // +; vmsrc/apple/sossysjit.pla: 0154: word systemflags = 0 +_D076 ; systemflags = 0 + !WORD $0000 +; vmsrc/apple/sossysjit.pla: 0155: word heap = $2000 +_D077 ; heap = $2000 + !WORD $2000 +; vmsrc/apple/sossysjit.pla: 0156: byte autorun[] +_D078 ; autorun[] +; vmsrc/apple/sossysjit.pla: 0157: byte modseg[15] +_D079 !FILL 15 ; modseg[15] +; vmsrc/apple/sossysjit.pla: 0158: byte modid = 0 +_D080 ; modid = 0 + !BYTE $00 +; vmsrc/apple/sossysjit.pla: 0159: word symtbl, lastsym +_D081 !FILL 2 ; symtbl, lastsym +_D082 !FILL 2 ; lastsym +; vmsrc/apple/sossysjit.pla: 0160: // +; vmsrc/apple/sossysjit.pla: 0161: // CALL SOS +; vmsrc/apple/sossysjit.pla: 0162: // SYSCALL(CMD, PARAMS) +; vmsrc/apple/sossysjit.pla: 0163: // +; vmsrc/apple/sossysjit.pla: 0164: asm syscall(cmd,params)#1 +_P000 ; syscall(cmd,params)#1() +_A000 ; syscall() +; vmsrc/apple/sossysjit.pla: 0165: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0166: LDY ESTKH,X + LDY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0167: STA PARAMS + STA PARAMS +; vmsrc/apple/sossysjit.pla: 0168: STY PARAMS+1 + STY PARAMS+1 +; vmsrc/apple/sossysjit.pla: 0169: INX + INX +; vmsrc/apple/sossysjit.pla: 0170: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0171: STA CMD + STA CMD +; vmsrc/apple/sossysjit.pla: 0172: BRK + BRK +; vmsrc/apple/sossysjit.pla: 0173: CMD !BYTE 00 +CMD !BYTE 00 +; vmsrc/apple/sossysjit.pla: 0174: PARAMS !WORD 0000 +PARAMS !WORD 0000 +; vmsrc/apple/sossysjit.pla: 0175: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0176: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0177: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0178: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0179: end +; vmsrc/apple/sossysjit.pla: 0180: // +; vmsrc/apple/sossysjit.pla: 0181: // CALL 6502 ROUTINE +; vmsrc/apple/sossysjit.pla: 0182: // CALL(AREG, XREG, YREG, STATUS, ADDR) +; vmsrc/apple/sossysjit.pla: 0183: // +; vmsrc/apple/sossysjit.pla: 0184: asm call(addr,areg,xreg,yreg,sstatus)#1 +_P001 ; call(addr,areg,xreg,yreg,sstatus)#1() +_A001 ; call() +; vmsrc/apple/sossysjit.pla: 0185: REGVALS = SRC +REGVALS = SRC +; vmsrc/apple/sossysjit.pla: 0186: PHP + PHP +; vmsrc/apple/sossysjit.pla: 0187: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0188: STA TMPL + STA TMPL +; vmsrc/apple/sossysjit.pla: 0189: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0190: STA TMPH + STA TMPH +; vmsrc/apple/sossysjit.pla: 0191: INX + INX +; vmsrc/apple/sossysjit.pla: 0192: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0193: PHA + PHA +; vmsrc/apple/sossysjit.pla: 0194: INX + INX +; vmsrc/apple/sossysjit.pla: 0195: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/sossysjit.pla: 0196: INX + INX +; vmsrc/apple/sossysjit.pla: 0197: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0198: PHA + PHA +; vmsrc/apple/sossysjit.pla: 0199: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0200: INX + INX +; vmsrc/apple/sossysjit.pla: 0201: STX ESP + STX ESP +; vmsrc/apple/sossysjit.pla: 0202: TAX + TAX +; vmsrc/apple/sossysjit.pla: 0203: PLA + PLA +; vmsrc/apple/sossysjit.pla: 0204: PLP + PLP +; vmsrc/apple/sossysjit.pla: 0205: JSR JMPTMP + JSR JMPTMP +; vmsrc/apple/sossysjit.pla: 0206: PHP + PHP +; vmsrc/apple/sossysjit.pla: 0207: STA REGVALS+0 + STA REGVALS+0 +; vmsrc/apple/sossysjit.pla: 0208: STX REGVALS+1 + STX REGVALS+1 +; vmsrc/apple/sossysjit.pla: 0209: STY REGVALS+2 + STY REGVALS+2 +; vmsrc/apple/sossysjit.pla: 0210: PLA + PLA +; vmsrc/apple/sossysjit.pla: 0211: STA REGVALS+3 + STA REGVALS+3 +; vmsrc/apple/sossysjit.pla: 0212: LDX ESP + LDX ESP +; vmsrc/apple/sossysjit.pla: 0213: LDA #REGVALS + LDY #>REGVALS +; vmsrc/apple/sossysjit.pla: 0215: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0216: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0217: PLP + PLP +; vmsrc/apple/sossysjit.pla: 0218: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0219: end +; vmsrc/apple/sossysjit.pla: 0220: // +; vmsrc/apple/sossysjit.pla: 0221: // SET MEMORY TO VALUE +; vmsrc/apple/sossysjit.pla: 0222: // MEMSET(ADDR, VALUE, SIZE) +; vmsrc/apple/sossysjit.pla: 0223: // With optimizations from Peter Ferrie +; vmsrc/apple/sossysjit.pla: 0224: // +; vmsrc/apple/sossysjit.pla: 0225: asm memset(addr,value,size)#0 +_P018 ; memset(addr,value,size)#0() +_A002 ; memset() +; vmsrc/apple/sossysjit.pla: 0226: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossysjit.pla: 0227: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0228: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/sossysjit.pla: 0229: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0230: LDY ESTKL,X + LDY ESTKL,X +; vmsrc/apple/sossysjit.pla: 0231: BEQ + + BEQ + +; vmsrc/apple/sossysjit.pla: 0232: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0233: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0234: + LDA ESTKH,X ++ LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0235: BEQ SETMEX + BEQ SETMEX +; vmsrc/apple/sossysjit.pla: 0236: SETMLPL CLC +SETMLPL CLC +; vmsrc/apple/sossysjit.pla: 0237: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0238: SETMLPH STA (DST),Y +SETMLPH STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0239: DEC ESTKL,X + DEC ESTKL,X +; vmsrc/apple/sossysjit.pla: 0240: BEQ ++ + BEQ ++ +; vmsrc/apple/sossysjit.pla: 0241: - INY +- INY +; vmsrc/apple/sossysjit.pla: 0242: BEQ + + BEQ + +; vmsrc/apple/sossysjit.pla: 0243: -- BCS SETMLPL +-- BCS SETMLPL +; vmsrc/apple/sossysjit.pla: 0244: SEC + SEC +; vmsrc/apple/sossysjit.pla: 0245: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0246: BCS SETMLPH + BCS SETMLPH +; vmsrc/apple/sossysjit.pla: 0247: + INC DSTH ++ INC DSTH +; vmsrc/apple/sossysjit.pla: 0248: BNE -- + BNE -- +; vmsrc/apple/sossysjit.pla: 0249: ++ DEC ESTKH,X +++ DEC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0250: BNE - + BNE - +; vmsrc/apple/sossysjit.pla: 0251: SETMEX INX +SETMEX INX +; vmsrc/apple/sossysjit.pla: 0252: INX + INX +; vmsrc/apple/sossysjit.pla: 0253: INX + INX +; vmsrc/apple/sossysjit.pla: 0254: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0255: end +; vmsrc/apple/sossysjit.pla: 0256: // +; vmsrc/apple/sossysjit.pla: 0257: // COPY MEMORY +; vmsrc/apple/sossysjit.pla: 0258: // MEMCPY(DSTADDR, SRCADDR, SIZE) +; vmsrc/apple/sossysjit.pla: 0259: // +; vmsrc/apple/sossysjit.pla: 0260: asm memcpy(dst,src,size)#0 +_P019 ; memcpy(dst,src,size)#0() +_A003 ; memcpy() +; vmsrc/apple/sossysjit.pla: 0261: INX + INX +; vmsrc/apple/sossysjit.pla: 0262: INX + INX +; vmsrc/apple/sossysjit.pla: 0263: INX + INX +; vmsrc/apple/sossysjit.pla: 0264: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0265: ORA ESTKH-3,X + ORA ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0266: BEQ CPYMEX + BEQ CPYMEX +; vmsrc/apple/sossysjit.pla: 0267: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/sossysjit.pla: 0268: CMP ESTKL-1,X + CMP ESTKL-1,X +; vmsrc/apple/sossysjit.pla: 0269: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/sossysjit.pla: 0270: SBC ESTKH-1,X + SBC ESTKH-1,X +; vmsrc/apple/sossysjit.pla: 0271: BCC REVCPY + BCC REVCPY +; vmsrc/apple/sossysjit.pla: 0272: ; +; vmsrc/apple/sossysjit.pla: 0273: ; FORWARD COPY +; FORWARD COPY +; vmsrc/apple/sossysjit.pla: 0274: ; +; vmsrc/apple/sossysjit.pla: 0275: LDA ESTKL-1,X + LDA ESTKL-1,X +; vmsrc/apple/sossysjit.pla: 0276: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0277: LDA ESTKH-1,X + LDA ESTKH-1,X +; vmsrc/apple/sossysjit.pla: 0278: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0279: LDA ESTKL-2,X + LDA ESTKL-2,X +; vmsrc/apple/sossysjit.pla: 0280: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0281: LDA ESTKH-2,X + LDA ESTKH-2,X +; vmsrc/apple/sossysjit.pla: 0282: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0283: LDY ESTKL-3,X + LDY ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0284: BEQ FORCPYLP + BEQ FORCPYLP +; vmsrc/apple/sossysjit.pla: 0285: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0286: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0287: FORCPYLP LDA (SRC),Y +FORCPYLP LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0288: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0289: INY + INY +; vmsrc/apple/sossysjit.pla: 0290: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0291: INC DSTH + INC DSTH +; vmsrc/apple/sossysjit.pla: 0292: INC SRCH + INC SRCH +; vmsrc/apple/sossysjit.pla: 0293: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0294: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/sossysjit.pla: 0295: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0296: BNE FORCPYLP + BNE FORCPYLP +; vmsrc/apple/sossysjit.pla: 0297: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0298: ; +; vmsrc/apple/sossysjit.pla: 0299: ; REVERSE COPY +; REVERSE COPY +; vmsrc/apple/sossysjit.pla: 0300: ; +; vmsrc/apple/sossysjit.pla: 0301: REVCPY ;CLC +REVCPY ;CLC +; vmsrc/apple/sossysjit.pla: 0302: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0303: ADC ESTKL-1,X + ADC ESTKL-1,X +; vmsrc/apple/sossysjit.pla: 0304: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0305: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0306: ADC ESTKH-1,X + ADC ESTKH-1,X +; vmsrc/apple/sossysjit.pla: 0307: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0308: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0309: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0310: ADC ESTKL-2,X + ADC ESTKL-2,X +; vmsrc/apple/sossysjit.pla: 0311: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0312: LDA ESTKH-3,X + LDA ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0313: ADC ESTKH-2,X + ADC ESTKH-2,X +; vmsrc/apple/sossysjit.pla: 0314: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0315: DEC DSTH + DEC DSTH +; vmsrc/apple/sossysjit.pla: 0316: DEC SRCH + DEC SRCH +; vmsrc/apple/sossysjit.pla: 0317: LDY #$FF + LDY #$FF +; vmsrc/apple/sossysjit.pla: 0318: LDA ESTKL-3,X + LDA ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0319: BEQ REVCPYLP + BEQ REVCPYLP +; vmsrc/apple/sossysjit.pla: 0320: INC ESTKH-3,X + INC ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0321: REVCPYLP LDA (SRC),Y +REVCPYLP LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0322: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0323: DEY + DEY +; vmsrc/apple/sossysjit.pla: 0324: CPY #$FF + CPY #$FF +; vmsrc/apple/sossysjit.pla: 0325: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0326: DEC DSTH + DEC DSTH +; vmsrc/apple/sossysjit.pla: 0327: DEC SRCH + DEC SRCH +; vmsrc/apple/sossysjit.pla: 0328: + DEC ESTKL-3,X ++ DEC ESTKL-3,X +; vmsrc/apple/sossysjit.pla: 0329: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/sossysjit.pla: 0330: DEC ESTKH-3,X + DEC ESTKH-3,X +; vmsrc/apple/sossysjit.pla: 0331: BNE REVCPYLP + BNE REVCPYLP +; vmsrc/apple/sossysjit.pla: 0332: CPYMEX RTS +CPYMEX RTS +; vmsrc/apple/sossysjit.pla: 0333: end +; vmsrc/apple/sossysjit.pla: 0334: // +; vmsrc/apple/sossysjit.pla: 0335: // COPY FROM MAIN MEM TO EXT MEM. +; vmsrc/apple/sossysjit.pla: 0336: // +; vmsrc/apple/sossysjit.pla: 0337: // MEMXCPY(DSTSEG, SRC, SIZE) +; vmsrc/apple/sossysjit.pla: 0338: // +; vmsrc/apple/sossysjit.pla: 0339: asm memxcpy(dst,src,size)#0 +_A004 ; memxcpy() +; vmsrc/apple/sossysjit.pla: 0340: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0341: ORA ESTKH,X + ORA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0342: BEQ CPYXMEX + BEQ CPYXMEX +; vmsrc/apple/sossysjit.pla: 0343: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0344: STY DSTL + STY DSTL +; vmsrc/apple/sossysjit.pla: 0345: LDA ESTKH+2,X + LDA ESTKH+2,X +; vmsrc/apple/sossysjit.pla: 0346: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0347: ADC #$60 + ADC #$60 +; vmsrc/apple/sossysjit.pla: 0348: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0349: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossysjit.pla: 0350: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0351: ADC #$7F + ADC #$7F +; vmsrc/apple/sossysjit.pla: 0352: STA DSTX + STA DSTX +; vmsrc/apple/sossysjit.pla: 0353: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0354: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0355: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0356: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0357: INC ESTKH,X + INC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0358: CPYXLP LDA (SRC),Y +CPYXLP LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0359: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0360: INY + INY +; vmsrc/apple/sossysjit.pla: 0361: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0362: INC DSTH + INC DSTH +; vmsrc/apple/sossysjit.pla: 0363: INC SRCH + INC SRCH +; vmsrc/apple/sossysjit.pla: 0364: + DEC ESTKL,X ++ DEC ESTKL,X +; vmsrc/apple/sossysjit.pla: 0365: BNE CPYXLP + BNE CPYXLP +; vmsrc/apple/sossysjit.pla: 0366: DEC ESTKH,X + DEC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0367: BNE CPYXLP + BNE CPYXLP +; vmsrc/apple/sossysjit.pla: 0368: LDA #$00 + LDA #$00 +; vmsrc/apple/sossysjit.pla: 0369: STA DSTX + STA DSTX +; vmsrc/apple/sossysjit.pla: 0370: CPYXMEX INX +CPYXMEX INX +; vmsrc/apple/sossysjit.pla: 0371: INX + INX +; vmsrc/apple/sossysjit.pla: 0372: INX + INX +; vmsrc/apple/sossysjit.pla: 0373: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0374: end +; vmsrc/apple/sossysjit.pla: 0375: // +; vmsrc/apple/sossysjit.pla: 0376: // POKE BYTE VAL INTO EXT MEM. +; vmsrc/apple/sossysjit.pla: 0377: // +; vmsrc/apple/sossysjit.pla: 0378: // XPOKEB(SEG, DST, BYTEVAL) +; vmsrc/apple/sossysjit.pla: 0379: // +; vmsrc/apple/sossysjit.pla: 0380: asm xpokeb(seg, dst, byteval)#0 +_A005 ; xpokeb() +; vmsrc/apple/sossysjit.pla: 0381: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0382: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0383: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0384: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0385: ADC #$60 + ADC #$60 +; vmsrc/apple/sossysjit.pla: 0386: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0387: LDA ESTKL+2,X + LDA ESTKL+2,X +; vmsrc/apple/sossysjit.pla: 0388: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0389: ADC #$7F + ADC #$7F +; vmsrc/apple/sossysjit.pla: 0390: STA DSTX + STA DSTX +; vmsrc/apple/sossysjit.pla: 0391: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0392: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0393: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0394: STY DSTX + STY DSTX +; vmsrc/apple/sossysjit.pla: 0395: INX + INX +; vmsrc/apple/sossysjit.pla: 0396: INX + INX +; vmsrc/apple/sossysjit.pla: 0397: INX + INX +; vmsrc/apple/sossysjit.pla: 0398: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0399: end +; vmsrc/apple/sossysjit.pla: 0400: // +; vmsrc/apple/sossysjit.pla: 0401: // Unsigned word comparisons. +; vmsrc/apple/sossysjit.pla: 0402: // +; vmsrc/apple/sossysjit.pla: 0403: asm uword_isge(a,b)#1 +_P021 ; uword_isge(a,b)#1() +_A006 ; uword_isge() +; vmsrc/apple/sossysjit.pla: 0404: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0405: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossysjit.pla: 0406: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0407: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0408: LDA #$FF + LDA #$FF +; vmsrc/apple/sossysjit.pla: 0409: ADC #$00 + ADC #$00 +; vmsrc/apple/sossysjit.pla: 0410: EOR #$FF + EOR #$FF +; vmsrc/apple/sossysjit.pla: 0411: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0412: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0413: INX + INX +; vmsrc/apple/sossysjit.pla: 0414: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0415: end +; vmsrc/apple/sossysjit.pla: 0416: asm uword_isle(a,b)#1 +_P023 ; uword_isle(a,b)#1() +_A007 ; uword_isle() +; vmsrc/apple/sossysjit.pla: 0417: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0418: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0419: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0420: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0421: LDA #$FF + LDA #$FF +; vmsrc/apple/sossysjit.pla: 0422: ADC #$00 + ADC #$00 +; vmsrc/apple/sossysjit.pla: 0423: EOR #$FF + EOR #$FF +; vmsrc/apple/sossysjit.pla: 0424: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0425: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0426: INX + INX +; vmsrc/apple/sossysjit.pla: 0427: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0428: end +; vmsrc/apple/sossysjit.pla: 0429: asm uword_isgt(a,b)#1 +_P020 ; uword_isgt(a,b)#1() +_A008 ; uword_isgt() +; vmsrc/apple/sossysjit.pla: 0430: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0431: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0432: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0433: SBC ESTKH+1,X + SBC ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0434: LDA #$FF + LDA #$FF +; vmsrc/apple/sossysjit.pla: 0435: ADC #$00 + ADC #$00 +; vmsrc/apple/sossysjit.pla: 0436: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0437: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0438: INX + INX +; vmsrc/apple/sossysjit.pla: 0439: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0440: end +; vmsrc/apple/sossysjit.pla: 0441: asm uword_islt(a,b)#1 +_P022 ; uword_islt(a,b)#1() +_A009 ; uword_islt() +; vmsrc/apple/sossysjit.pla: 0442: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0443: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossysjit.pla: 0444: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0445: SBC ESTKH,X + SBC ESTKH,X +; vmsrc/apple/sossysjit.pla: 0446: LDA #$FF + LDA #$FF +; vmsrc/apple/sossysjit.pla: 0447: ADC #$00 + ADC #$00 +; vmsrc/apple/sossysjit.pla: 0448: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0449: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0450: INX + INX +; vmsrc/apple/sossysjit.pla: 0451: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0452: end +; vmsrc/apple/sossysjit.pla: 0453: asm divmod(a,b)#2 +_P025 ; divmod(a,b)#2() +_A010 ; divmod() +; vmsrc/apple/sossysjit.pla: 0454: JSR INTERP ; CALL INTERP + JSR INTERP ; CALL INTERP +; vmsrc/apple/sossysjit.pla: 0455: !BYTE $36, $5C ; DIVMOD, RET + !BYTE $36, $5C ; DIVMOD, RET +; vmsrc/apple/sossysjit.pla: 0456: end +; vmsrc/apple/sossysjit.pla: 0457: asm sext(a)#1 +_P024 ; sext(a)#1() +_A011 ; sext() +; vmsrc/apple/sossysjit.pla: 0458: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0459: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0460: BPL + + BPL + +; vmsrc/apple/sossysjit.pla: 0461: DEY + DEY +; vmsrc/apple/sossysjit.pla: 0462: + STY ESTKH,X ++ STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0463: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0464: end +; vmsrc/apple/sossysjit.pla: 0465: // +; vmsrc/apple/sossysjit.pla: 0466: // A DCI string is one that has the high bit set for every character except the last. +; vmsrc/apple/sossysjit.pla: 0467: // More efficient than C or Pascal strings. +; vmsrc/apple/sossysjit.pla: 0468: // +; vmsrc/apple/sossysjit.pla: 0469: //def dcitos(dci, str) +; vmsrc/apple/sossysjit.pla: 0470: // byte len, c +; vmsrc/apple/sossysjit.pla: 0471: // len = 0 +; vmsrc/apple/sossysjit.pla: 0472: // repeat +; vmsrc/apple/sossysjit.pla: 0473: // c = (dci).[len] +; vmsrc/apple/sossysjit.pla: 0474: // len = len + 1 +; vmsrc/apple/sossysjit.pla: 0475: // (str).[len] = c & $7F +; vmsrc/apple/sossysjit.pla: 0476: // until !(c & $80) +; vmsrc/apple/sossysjit.pla: 0477: // ^str = len +; vmsrc/apple/sossysjit.pla: 0478: // return len +; vmsrc/apple/sossysjit.pla: 0479: //end +; vmsrc/apple/sossysjit.pla: 0480: asm dcitos(dci, str)#1 +_A012 ; dcitos() +; vmsrc/apple/sossysjit.pla: 0481: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0482: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0483: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0484: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0485: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0486: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0487: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0488: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0489: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0490: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0491: CMP #$80 + CMP #$80 +; vmsrc/apple/sossysjit.pla: 0492: AND #$7F + AND #$7F +; vmsrc/apple/sossysjit.pla: 0493: INY + INY +; vmsrc/apple/sossysjit.pla: 0494: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0495: BCS - + BCS - +; vmsrc/apple/sossysjit.pla: 0496: TYA + TYA +; vmsrc/apple/sossysjit.pla: 0497: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0498: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0499: INX + INX +; vmsrc/apple/sossysjit.pla: 0500: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0501: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0502: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0503: end +; vmsrc/apple/sossysjit.pla: 0504: //def stodci(str, dci) +; vmsrc/apple/sossysjit.pla: 0505: // byte len, c +; vmsrc/apple/sossysjit.pla: 0506: // len = ^str +; vmsrc/apple/sossysjit.pla: 0507: // if len == 0 +; vmsrc/apple/sossysjit.pla: 0508: // return +; vmsrc/apple/sossysjit.pla: 0509: // fin +; vmsrc/apple/sossysjit.pla: 0510: // c = toupper((str).[len]) & $7F +; vmsrc/apple/sossysjit.pla: 0511: // len = len - 1 +; vmsrc/apple/sossysjit.pla: 0512: // (dci).[len] = c +; vmsrc/apple/sossysjit.pla: 0513: // while len +; vmsrc/apple/sossysjit.pla: 0514: // c = toupper((str).[len]) | $80 +; vmsrc/apple/sossysjit.pla: 0515: // len = len - 1 +; vmsrc/apple/sossysjit.pla: 0516: // (dci).[len] = c +; vmsrc/apple/sossysjit.pla: 0517: // loop +; vmsrc/apple/sossysjit.pla: 0518: // return ^str +; vmsrc/apple/sossysjit.pla: 0519: //end +; vmsrc/apple/sossysjit.pla: 0520: asm stodci(str, dci)#1 +_A013 ; stodci() +; vmsrc/apple/sossysjit.pla: 0521: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0522: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0523: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0524: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0525: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0526: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0527: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0528: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0529: INX + INX +; vmsrc/apple/sossysjit.pla: 0530: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0531: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0532: BEQ ++ + BEQ ++ +; vmsrc/apple/sossysjit.pla: 0533: TAY + TAY +; vmsrc/apple/sossysjit.pla: 0534: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0535: JSR TOUPR + JSR TOUPR +; vmsrc/apple/sossysjit.pla: 0536: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0537: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0538: JSR TOUPR + JSR TOUPR +; vmsrc/apple/sossysjit.pla: 0539: ORA #$80 + ORA #$80 +; vmsrc/apple/sossysjit.pla: 0540: + DEY ++ DEY +; vmsrc/apple/sossysjit.pla: 0541: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0542: BNE - + BNE - +; vmsrc/apple/sossysjit.pla: 0543: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0544: ++ STA ESTKL,X +++ STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0545: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0546: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0547: end +; vmsrc/apple/sossysjit.pla: 0548: asm toupper(c)#1 +_P010 ; toupper(c)#1() +_A014 ; toupper() +; vmsrc/apple/sossysjit.pla: 0549: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0550: TOUPR AND #$7F +TOUPR AND #$7F +; vmsrc/apple/sossysjit.pla: 0551: CMP #'a' + CMP #'a' +; vmsrc/apple/sossysjit.pla: 0552: BCC + + BCC + +; vmsrc/apple/sossysjit.pla: 0553: CMP #'z'+1 + CMP #'z'+1 +; vmsrc/apple/sossysjit.pla: 0554: BCS + + BCS + +; vmsrc/apple/sossysjit.pla: 0555: SBC #$1F + SBC #$1F +; vmsrc/apple/sossysjit.pla: 0556: + STA ESTKL,X ++ STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0557: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0558: end +; vmsrc/apple/sossysjit.pla: 0559: // +; vmsrc/apple/sossysjit.pla: 0560: // Lookup routines. +; vmsrc/apple/sossysjit.pla: 0561: // +; vmsrc/apple/sossysjit.pla: 0562: //def lookuptbl(dci, tbl) +; vmsrc/apple/sossysjit.pla: 0563: // word match +; vmsrc/apple/sossysjit.pla: 0564: // while ^tbl +; vmsrc/apple/sossysjit.pla: 0565: // match = dci +; vmsrc/apple/sossysjit.pla: 0566: // while ^tbl == ^match +; vmsrc/apple/sossysjit.pla: 0567: // if !(^tbl & $80) +; vmsrc/apple/sossysjit.pla: 0568: // return (tbl):1 +; vmsrc/apple/sossysjit.pla: 0569: // fin +; vmsrc/apple/sossysjit.pla: 0570: // tbl = tbl + 1 +; vmsrc/apple/sossysjit.pla: 0571: // match = match + 1 +; vmsrc/apple/sossysjit.pla: 0572: // loop +; vmsrc/apple/sossysjit.pla: 0573: // while (^tbl & $80) +; vmsrc/apple/sossysjit.pla: 0574: // tbl = tbl + 1 +; vmsrc/apple/sossysjit.pla: 0575: // loop +; vmsrc/apple/sossysjit.pla: 0576: // tbl = tbl + 3 +; vmsrc/apple/sossysjit.pla: 0577: // loop +; vmsrc/apple/sossysjit.pla: 0578: // return 0 +; vmsrc/apple/sossysjit.pla: 0579: asm lookuptbl(dci, tbl)#1 +_A015 ; lookuptbl() +; vmsrc/apple/sossysjit.pla: 0580: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0581: STY DSTL + STY DSTL +; vmsrc/apple/sossysjit.pla: 0582: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0583: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0584: ADC #$60 + ADC #$60 +; vmsrc/apple/sossysjit.pla: 0585: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0586: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0587: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0588: ADC #$7F + ADC #$7F +; vmsrc/apple/sossysjit.pla: 0589: STA DSTX + STA DSTX +; vmsrc/apple/sossysjit.pla: 0590: LDA ESTKL+1,X + LDA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0591: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0592: LDA ESTKH+1,X + LDA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0593: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0594: - LDA (DST),Y +- LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0595: BEQ + + BEQ + +; vmsrc/apple/sossysjit.pla: 0596: CMP (SRC),Y + CMP (SRC),Y +; vmsrc/apple/sossysjit.pla: 0597: BNE ++ + BNE ++ +; vmsrc/apple/sossysjit.pla: 0598: INY + INY +; vmsrc/apple/sossysjit.pla: 0599: ASL + ASL +; vmsrc/apple/sossysjit.pla: 0600: BCS - + BCS - +; vmsrc/apple/sossysjit.pla: 0601: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0602: PHA + PHA +; vmsrc/apple/sossysjit.pla: 0603: INY + INY +; vmsrc/apple/sossysjit.pla: 0604: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0605: TAY + TAY +; vmsrc/apple/sossysjit.pla: 0606: PLA + PLA +; vmsrc/apple/sossysjit.pla: 0607: + INX ++ INX +; vmsrc/apple/sossysjit.pla: 0608: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0609: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0610: LDA #$00 + LDA #$00 +; vmsrc/apple/sossysjit.pla: 0611: STA DSTX + STA DSTX +; vmsrc/apple/sossysjit.pla: 0612: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0613: ++ LDY #$00 +++ LDY #$00 +; vmsrc/apple/sossysjit.pla: 0614: -- LDA (DST),Y +-- LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0615: INC DSTL + INC DSTL +; vmsrc/apple/sossysjit.pla: 0616: BEQ + + BEQ + +; vmsrc/apple/sossysjit.pla: 0617: --- ASL +--- ASL +; vmsrc/apple/sossysjit.pla: 0618: BCS -- + BCS -- +; vmsrc/apple/sossysjit.pla: 0619: LDA #$02 + LDA #$02 +; vmsrc/apple/sossysjit.pla: 0620: ADC DSTL + ADC DSTL +; vmsrc/apple/sossysjit.pla: 0621: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0622: BCC - + BCC - +; vmsrc/apple/sossysjit.pla: 0623: INC DSTH + INC DSTH +; vmsrc/apple/sossysjit.pla: 0624: BCS - + BCS - +; vmsrc/apple/sossysjit.pla: 0625: + INC DSTH ++ INC DSTH +; vmsrc/apple/sossysjit.pla: 0626: BNE --- + BNE --- +; vmsrc/apple/sossysjit.pla: 0627: end +; vmsrc/apple/sossysjit.pla: 0628: // def lookupidx(esd, index) +; vmsrc/apple/sossysjit.pla: 0629: // word sym +; vmsrc/apple/sossysjit.pla: 0630: // while ^esd +; vmsrc/apple/sossysjit.pla: 0631: // sym = esd +; vmsrc/apple/sossysjit.pla: 0632: // esd = sym + dcitos(sym, @str) +; vmsrc/apple/sossysjit.pla: 0633: // if esd->0 & $10 and esd->1 == index +; vmsrc/apple/sossysjit.pla: 0634: // return sym +; vmsrc/apple/sossysjit.pla: 0635: // fin +; vmsrc/apple/sossysjit.pla: 0636: // esd = esd + 3 +; vmsrc/apple/sossysjit.pla: 0637: // loop +; vmsrc/apple/sossysjit.pla: 0638: //end +; vmsrc/apple/sossysjit.pla: 0639: asm lookupidx(esd, index)#1 +_A016 ; lookupidx() +; vmsrc/apple/sossysjit.pla: 0640: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0641: STA TMPL + STA TMPL +; vmsrc/apple/sossysjit.pla: 0642: INX + INX +; vmsrc/apple/sossysjit.pla: 0643: --- LDA ESTKH,X +--- LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0644: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0645: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0646: -- STA SRCL +-- STA SRCL +; vmsrc/apple/sossysjit.pla: 0647: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0648: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0649: BPL + + BPL + +; vmsrc/apple/sossysjit.pla: 0650: INY + INY +; vmsrc/apple/sossysjit.pla: 0651: BNE - + BNE - +; vmsrc/apple/sossysjit.pla: 0652: + BEQ ++ ; END OF ESD ++ BEQ ++ ; END OF ESD +; vmsrc/apple/sossysjit.pla: 0653: INY + INY +; vmsrc/apple/sossysjit.pla: 0654: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0655: INY + INY +; vmsrc/apple/sossysjit.pla: 0656: AND #$10 ; EXTERN FLAG? + AND #$10 ; EXTERN FLAG? +; vmsrc/apple/sossysjit.pla: 0657: BEQ + + BEQ + +; vmsrc/apple/sossysjit.pla: 0658: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0659: CMP TMPL + CMP TMPL +; vmsrc/apple/sossysjit.pla: 0660: BEQ +++ ; MATCH + BEQ +++ ; MATCH +; vmsrc/apple/sossysjit.pla: 0661: + INY ++ INY +; vmsrc/apple/sossysjit.pla: 0662: TYA + TYA +; vmsrc/apple/sossysjit.pla: 0663: SEC + SEC +; vmsrc/apple/sossysjit.pla: 0664: ADC SRCL + ADC SRCL +; vmsrc/apple/sossysjit.pla: 0665: STA ESTKL,X ; SYM PTRL + STA ESTKL,X ; SYM PTRL +; vmsrc/apple/sossysjit.pla: 0666: BCC -- + BCC -- +; vmsrc/apple/sossysjit.pla: 0667: INC ESTKH,X ; SYM PTRH + INC ESTKH,X ; SYM PTRH +; vmsrc/apple/sossysjit.pla: 0668: BNE --- + BNE --- +; vmsrc/apple/sossysjit.pla: 0669: ++ STA ESTKL,X ; END OF ESD +++ STA ESTKL,X ; END OF ESD +; vmsrc/apple/sossysjit.pla: 0670: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0671: +++ RTS ++++ RTS +; vmsrc/apple/sossysjit.pla: 0672: end +; vmsrc/apple/sossysjit.pla: 0673: //def lookupdef(addr, deftbl)#1 +; vmsrc/apple/sossysjit.pla: 0674: // while deftbl->0 == $20 +; vmsrc/apple/sossysjit.pla: 0675: // if deftbl=>3 == addr +; vmsrc/apple/sossysjit.pla: 0676: // return deftbl +; vmsrc/apple/sossysjit.pla: 0677: // fin +; vmsrc/apple/sossysjit.pla: 0678: // deftbl = deftbl + t_defentry +; vmsrc/apple/sossysjit.pla: 0679: // loop +; vmsrc/apple/sossysjit.pla: 0680: // return 0 +; vmsrc/apple/sossysjit.pla: 0681: //end +; vmsrc/apple/sossysjit.pla: 0682: asm lookupdef(addr, deftbl)#1 +_A017 ; lookupdef() +; vmsrc/apple/sossysjit.pla: 0683: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0684: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0685: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0686: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0687: INX + INX +; vmsrc/apple/sossysjit.pla: 0688: - LDY #$00 +- LDY #$00 +; vmsrc/apple/sossysjit.pla: 0689: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0690: CMP #$20 ; JSR OPCODE? + CMP #$20 ; JSR OPCODE? +; vmsrc/apple/sossysjit.pla: 0691: BNE ++ + BNE ++ +; vmsrc/apple/sossysjit.pla: 0692: LDY #$03 + LDY #$03 +; vmsrc/apple/sossysjit.pla: 0693: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0694: CMP ESTKL,X + CMP ESTKL,X +; vmsrc/apple/sossysjit.pla: 0695: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0696: INY + INY +; vmsrc/apple/sossysjit.pla: 0697: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0698: CMP ESTKH,X + CMP ESTKH,X +; vmsrc/apple/sossysjit.pla: 0699: BNE + + BNE + +; vmsrc/apple/sossysjit.pla: 0700: LDA SRCL ; MATCH + LDA SRCL ; MATCH +; vmsrc/apple/sossysjit.pla: 0701: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0702: LDA SRCH + LDA SRCH +; vmsrc/apple/sossysjit.pla: 0703: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0704: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0705: + LDA #$08 ; T_DEFENTRY ++ LDA #$08 ; T_DEFENTRY +; vmsrc/apple/sossysjit.pla: 0706: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0707: ADC SRCL + ADC SRCL +; vmsrc/apple/sossysjit.pla: 0708: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0709: BCC - + BCC - +; vmsrc/apple/sossysjit.pla: 0710: INC SRCH + INC SRCH +; vmsrc/apple/sossysjit.pla: 0711: BNE - + BNE - +; vmsrc/apple/sossysjit.pla: 0712: ++ STY ESTKL,X +++ STY ESTKL,X +; vmsrc/apple/sossysjit.pla: 0713: STY ESTKH,X + STY ESTKH,X +; vmsrc/apple/sossysjit.pla: 0714: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0715: end +; vmsrc/apple/sossysjit.pla: 0716: // +; vmsrc/apple/sossysjit.pla: 0717: // Reloc internal data +; vmsrc/apple/sossysjit.pla: 0718: // +; vmsrc/apple/sossysjit.pla: 0719: //def reloc(modfix, modofst, bytecode, rld)#3 +; vmsrc/apple/sossysjit.pla: 0720: // word addr, fixup +; vmsrc/apple/sossysjit.pla: 0721: // while ^rld +; vmsrc/apple/sossysjit.pla: 0722: // if ^rld & $10 // EXTERN reference. +; vmsrc/apple/sossysjit.pla: 0723: // return rld, addr, fixup +; vmsrc/apple/sossysjit.pla: 0724: // fin +; vmsrc/apple/sossysjit.pla: 0725: // addr = rld=>1 + modfix +; vmsrc/apple/sossysjit.pla: 0726: // fixup = *addr + modofst +; vmsrc/apple/sossysjit.pla: 0727: // if uword_isge(fixup, bytecode) // Bytecode address. +; vmsrc/apple/sossysjit.pla: 0728: // return rld, addr, fixup +; vmsrc/apple/sossysjit.pla: 0729: // fin +; vmsrc/apple/sossysjit.pla: 0730: // *addr = fixup +; vmsrc/apple/sossysjit.pla: 0731: // rld = rld + 4 +; vmsrc/apple/sossysjit.pla: 0732: // loop +; vmsrc/apple/sossysjit.pla: 0733: // return rld, addr, fixup +; vmsrc/apple/sossysjit.pla: 0734: //end +; vmsrc/apple/sossysjit.pla: 0735: asm reloc(modfix, modofst, bytecode, rld)#3 +_A018 ; reloc() +; vmsrc/apple/sossysjit.pla: 0736: LDA ESTKL,X + LDA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0737: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0738: LDA ESTKH,X + LDA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0739: STA SRCH + STA SRCH +; vmsrc/apple/sossysjit.pla: 0740: LDY #$00 + LDY #$00 +; vmsrc/apple/sossysjit.pla: 0741: - LDA (SRC),Y +- LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0742: BEQ RLDEX ; END OF RLD + BEQ RLDEX ; END OF RLD +; vmsrc/apple/sossysjit.pla: 0743: PHA + PHA +; vmsrc/apple/sossysjit.pla: 0744: INY + INY +; vmsrc/apple/sossysjit.pla: 0745: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0746: INY + INY +; vmsrc/apple/sossysjit.pla: 0747: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0748: ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX +; vmsrc/apple/sossysjit.pla: 0749: STA DSTL + STA DSTL +; vmsrc/apple/sossysjit.pla: 0750: LDA (SRC),Y + LDA (SRC),Y +; vmsrc/apple/sossysjit.pla: 0751: ADC ESTKH+3,X + ADC ESTKH+3,X +; vmsrc/apple/sossysjit.pla: 0752: STA DSTH + STA DSTH +; vmsrc/apple/sossysjit.pla: 0753: PLA + PLA +; vmsrc/apple/sossysjit.pla: 0754: AND #$10 ; EXTERN REF - EXIT + AND #$10 ; EXTERN REF - EXIT +; vmsrc/apple/sossysjit.pla: 0755: BNE RLDEX + BNE RLDEX +; vmsrc/apple/sossysjit.pla: 0756: TAY ; FIXUP=*ADDR+MODOFST + TAY ; FIXUP=*ADDR+MODOFST +; vmsrc/apple/sossysjit.pla: 0757: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0758: INY + INY +; vmsrc/apple/sossysjit.pla: 0759: CLC + CLC +; vmsrc/apple/sossysjit.pla: 0760: ADC ESTKL+2,X + ADC ESTKL+2,X +; vmsrc/apple/sossysjit.pla: 0761: STA TMPL + STA TMPL +; vmsrc/apple/sossysjit.pla: 0762: LDA (DST),Y + LDA (DST),Y +; vmsrc/apple/sossysjit.pla: 0763: ADC ESTKH+2,X + ADC ESTKH+2,X +; vmsrc/apple/sossysjit.pla: 0764: CMP ESTKH+1,X ; FIXUP >= BYTECODE? + CMP ESTKH+1,X ; FIXUP >= BYTECODE? +; vmsrc/apple/sossysjit.pla: 0765: BCC + + BCC + +; vmsrc/apple/sossysjit.pla: 0766: STA TMPH + STA TMPH +; vmsrc/apple/sossysjit.pla: 0767: BNE RLDEX ; YEP, EXIT + BNE RLDEX ; YEP, EXIT +; vmsrc/apple/sossysjit.pla: 0768: LDA TMPL + LDA TMPL +; vmsrc/apple/sossysjit.pla: 0769: CMP ESTKL+1,X + CMP ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0770: BCS RLDEX ; YEP, EXIT + BCS RLDEX ; YEP, EXIT +; vmsrc/apple/sossysjit.pla: 0771: LDA TMPH + LDA TMPH +; vmsrc/apple/sossysjit.pla: 0772: + STA (DST),Y ; *ADDR=FIXUP ++ STA (DST),Y ; *ADDR=FIXUP +; vmsrc/apple/sossysjit.pla: 0773: DEY + DEY +; vmsrc/apple/sossysjit.pla: 0774: LDA TMPL + LDA TMPL +; vmsrc/apple/sossysjit.pla: 0775: STA (DST),Y + STA (DST),Y +; vmsrc/apple/sossysjit.pla: 0776: LDA SRCL ; NEXT ENTRY + LDA SRCL ; NEXT ENTRY +; vmsrc/apple/sossysjit.pla: 0777: ; CLC +; CLC +; vmsrc/apple/sossysjit.pla: 0778: ADC #$04 + ADC #$04 +; vmsrc/apple/sossysjit.pla: 0779: STA SRCL + STA SRCL +; vmsrc/apple/sossysjit.pla: 0780: BCC - + BCC - +; vmsrc/apple/sossysjit.pla: 0781: INC SRCH + INC SRCH +; vmsrc/apple/sossysjit.pla: 0782: BNE - + BNE - +; vmsrc/apple/sossysjit.pla: 0783: RLDEX INX +RLDEX INX +; vmsrc/apple/sossysjit.pla: 0784: LDA TMPL + LDA TMPL +; vmsrc/apple/sossysjit.pla: 0785: STA ESTKL,X + STA ESTKL,X +; vmsrc/apple/sossysjit.pla: 0786: LDA TMPH + LDA TMPH +; vmsrc/apple/sossysjit.pla: 0787: STA ESTKH,X + STA ESTKH,X +; vmsrc/apple/sossysjit.pla: 0788: LDA DSTL + LDA DSTL +; vmsrc/apple/sossysjit.pla: 0789: STA ESTKL+1,X + STA ESTKL+1,X +; vmsrc/apple/sossysjit.pla: 0790: LDA DSTH + LDA DSTH +; vmsrc/apple/sossysjit.pla: 0791: STA ESTKH+1,X + STA ESTKH+1,X +; vmsrc/apple/sossysjit.pla: 0792: LDA SRCL + LDA SRCL +; vmsrc/apple/sossysjit.pla: 0793: STA ESTKL+2,X + STA ESTKL+2,X +; vmsrc/apple/sossysjit.pla: 0794: LDA SRCH + LDA SRCH +; vmsrc/apple/sossysjit.pla: 0795: STA ESTKH+2,X + STA ESTKH+2,X +; vmsrc/apple/sossysjit.pla: 0796: RTS + RTS +; vmsrc/apple/sossysjit.pla: 0797: end +; vmsrc/apple/sossysjit.pla: 0798: // +; vmsrc/apple/sossysjit.pla: 0799: // SOS routines +; vmsrc/apple/sossysjit.pla: 0800: // FILE I/O +; vmsrc/apple/sossysjit.pla: 0801: // +; vmsrc/apple/sossysjit.pla: 0802: def open(path)#1 + ; path -> [0] +_P027 ; open(path)#1() +_C000 ; open() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0803: byte params[7] + ; params -> [2] +; vmsrc/apple/sossysjit.pla: 0804: +; vmsrc/apple/sossysjit.pla: 0805: params.0 = 4 + !BYTE $58,$09,$01 ; ENTER 9,1 +; vmsrc/apple/sossysjit.pla: 0806: params:1 = path +; vmsrc/apple/sossysjit.pla: 0807: params.3 = 0 +; vmsrc/apple/sossysjit.pla: 0808: params:4 = 0 +; vmsrc/apple/sossysjit.pla: 0809: params.6 = 0 +; vmsrc/apple/sossysjit.pla: 0810: perr = syscall($C8, @params) +; vmsrc/apple/sossysjit.pla: 0811: return params.3 + !BYTE $08 ; CN 4 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $00 ; CN 0 + !BYTE $76,$06 ; SLW [6] + !BYTE $00 ; CN 0 + !BYTE $74,$08 ; SLB [8] + !BYTE $2A,$C8 ; CB 200 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F062 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F063 !WORD _D034+0 + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$09 ; LEAVE 9 +; vmsrc/apple/sossysjit.pla: 0812: end +; vmsrc/apple/sossysjit.pla: 0813: def close(refnum)#1 + ; refnum -> [0] +_P028 ; close(refnum)#1() +_C001 ; close() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0814: byte params[2] + ; params -> [2] +; vmsrc/apple/sossysjit.pla: 0815: +; vmsrc/apple/sossysjit.pla: 0816: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossysjit.pla: 0817: params.1 = refnum +; vmsrc/apple/sossysjit.pla: 0818: perr = syscall($CC, @params) +; vmsrc/apple/sossysjit.pla: 0819: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$CC ; CB 204 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F064 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F065 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 0820: end +; vmsrc/apple/sossysjit.pla: 0821: def read(refnum, buff, len)#1 + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_P029 ; read(refnum, buff, len)#1() +_C002 ; read() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0822: byte params[8] + ; params -> [6] +; vmsrc/apple/sossysjit.pla: 0823: +; vmsrc/apple/sossysjit.pla: 0824: params.0 = 4 + !BYTE $58,$0E,$03 ; ENTER 14,3 +; vmsrc/apple/sossysjit.pla: 0825: params.1 = refnum +; vmsrc/apple/sossysjit.pla: 0826: params:2 = buff +; vmsrc/apple/sossysjit.pla: 0827: params:4 = len +; vmsrc/apple/sossysjit.pla: 0828: params:6 = 0 +; vmsrc/apple/sossysjit.pla: 0829: perr = syscall($CA, @params) +; vmsrc/apple/sossysjit.pla: 0830: return params:6 + !BYTE $08 ; CN 4 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $00 ; CN 0 + !BYTE $76,$0C ; SLW [12] + !BYTE $2A,$CA ; CB 202 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F066 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F067 !WORD _D034+0 + !BYTE $66,$0C ; LLW [12] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/sossysjit.pla: 0831: end +; vmsrc/apple/sossysjit.pla: 0832: def write(refnum, buff, len)#1 + ; refnum -> [0] + ; buff -> [2] + ; len -> [4] +_P030 ; write(refnum, buff, len)#1() +_C003 ; write() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0833: byte params[6] + ; params -> [6] +; vmsrc/apple/sossysjit.pla: 0834: +; vmsrc/apple/sossysjit.pla: 0835: params.0 = 3 + !BYTE $58,$0C,$03 ; ENTER 12,3 +; vmsrc/apple/sossysjit.pla: 0836: params.1 = refnum +; vmsrc/apple/sossysjit.pla: 0837: params:2 = buff +; vmsrc/apple/sossysjit.pla: 0838: params:4 = len +; vmsrc/apple/sossysjit.pla: 0839: perr = syscall($CB, @params) +; vmsrc/apple/sossysjit.pla: 0840: return perr + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$0A ; SLW [10] + !BYTE $2A,$CB ; CB 203 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F068 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F069 !WORD _D034+0 + !BYTE $5A,$0C ; LEAVE 12 +; vmsrc/apple/sossysjit.pla: 0841: end +; vmsrc/apple/sossysjit.pla: 0842: // +; vmsrc/apple/sossysjit.pla: 0843: // CONSOLE I/O +; vmsrc/apple/sossysjit.pla: 0844: // +; vmsrc/apple/sossysjit.pla: 0845: def dev_control(devnum, code, list)#1 + ; devnum -> [0] + ; code -> [2] + ; list -> [4] +_C004 ; dev_control() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0846: byte params[5] + ; params -> [6] +; vmsrc/apple/sossysjit.pla: 0847: +; vmsrc/apple/sossysjit.pla: 0848: params.0 = 3 + !BYTE $58,$0B,$03 ; ENTER 11,3 +; vmsrc/apple/sossysjit.pla: 0849: params.1 = devnum +; vmsrc/apple/sossysjit.pla: 0850: params.2 = code +; vmsrc/apple/sossysjit.pla: 0851: params:3 = list +; vmsrc/apple/sossysjit.pla: 0852: return syscall($83, @params) + !BYTE $06 ; CN 3 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$02 ; LLW [2] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $76,$09 ; SLW [9] + !BYTE $2A,$83 ; CB 131 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F070 !WORD _A000 + !BYTE $5A,$0B ; LEAVE 11 +; vmsrc/apple/sossysjit.pla: 0853: end +; vmsrc/apple/sossysjit.pla: 0854: def dev_getnum(name)#1 + ; name -> [0] +_C005 ; dev_getnum() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0855: byte params[4] + ; params -> [2] +; vmsrc/apple/sossysjit.pla: 0856: +; vmsrc/apple/sossysjit.pla: 0857: params.0 = 2 + !BYTE $58,$06,$01 ; ENTER 6,1 +; vmsrc/apple/sossysjit.pla: 0858: params:1 = name +; vmsrc/apple/sossysjit.pla: 0859: params.3 = 0 +; vmsrc/apple/sossysjit.pla: 0860: syscall($84, @params) +; vmsrc/apple/sossysjit.pla: 0861: return params.3 + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $76,$03 ; SLW [3] + !BYTE $00 ; CN 0 + !BYTE $74,$05 ; SLB [5] + !BYTE $2A,$84 ; CB 132 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F071 !WORD _A000 + !BYTE $30 ; DROP + !BYTE $64,$05 ; LLB [5] + !BYTE $5A,$06 ; LEAVE 6 +; vmsrc/apple/sossysjit.pla: 0862: end +; vmsrc/apple/sossysjit.pla: 0863: def init_cons()#0 +_C006 ; init_cons() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0864: byte nlmode[2] + ; nlmode -> [0] +; vmsrc/apple/sossysjit.pla: 0865: +; vmsrc/apple/sossysjit.pla: 0866: refcons = open(@console) + !BYTE $58,$02,$00 ; ENTER 2,0 +; vmsrc/apple/sossysjit.pla: 0867: devcons = dev_getnum(@console) +; vmsrc/apple/sossysjit.pla: 0868: nlmode:0 = $0D80 +; vmsrc/apple/sossysjit.pla: 0869: //nlmode.0 = $80 +; vmsrc/apple/sossysjit.pla: 0870: //nlmode.1 = $0D +; vmsrc/apple/sossysjit.pla: 0871: dev_control(devcons, $02, @nlmode) +; vmsrc/apple/sossysjit.pla: 0872: write(refcons, @textmode, 3) +; vmsrc/apple/sossysjit.pla: 0873: end + !BYTE $26 ; LA _D041+0 +_F072 !WORD _D041+0 + !BYTE $54 ; CALL _C000 +_F073 !WORD _C000 + !BYTE $78 ; SAB _D037+0 +_F074 !WORD _D037+0 + !BYTE $26 ; LA _D041+0 +_F075 !WORD _D041+0 + !BYTE $54 ; CALL _C005 +_F076 !WORD _C005 + !BYTE $78 ; SAB _D038+0 +_F077 !WORD _D038+0 + !BYTE $2C,$80,$0D ; CW 3456 + !BYTE $76,$00 ; SLW [0] + !BYTE $68 ; LAB _D038+0 +_F078 !WORD _D038+0 + !BYTE $04 ; CN 2 + !BYTE $28,$00 ; LLA [0] + !BYTE $54 ; CALL _C004 +_F079 !WORD _C004 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D037+0 +_F080 !WORD _D037+0 + !BYTE $26 ; LA _D042+0 +_F081 !WORD _D042+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C003 +_F082 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0874: // +; vmsrc/apple/sossysjit.pla: 0875: // MEMORY CALLS +; vmsrc/apple/sossysjit.pla: 0876: // +; vmsrc/apple/sossysjit.pla: 0877: def seg_find(search, pages, id)#3 + ; search -> [0] + ; pages -> [2] + ; id -> [4] +_C007 ; seg_find() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0878: byte params[10] + ; params -> [6] +; vmsrc/apple/sossysjit.pla: 0879: +; vmsrc/apple/sossysjit.pla: 0880: params.0 = 6 + !BYTE $58,$10,$03 ; ENTER 16,3 +; vmsrc/apple/sossysjit.pla: 0881: params.1 = search +; vmsrc/apple/sossysjit.pla: 0882: params.2 = id +; vmsrc/apple/sossysjit.pla: 0883: params:3 = pages +; vmsrc/apple/sossysjit.pla: 0884: params:5 = 0 +; vmsrc/apple/sossysjit.pla: 0885: params:7 = 0 +; vmsrc/apple/sossysjit.pla: 0886: params.9 = 0 +; vmsrc/apple/sossysjit.pla: 0887: perr = syscall($41, @params) +; vmsrc/apple/sossysjit.pla: 0888: return params.9, params:5, params:7 + !BYTE $0C ; CN 6 + !BYTE $74,$06 ; SLB [6] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$07 ; SLB [7] + !BYTE $66,$04 ; LLW [4] + !BYTE $74,$08 ; SLB [8] + !BYTE $66,$02 ; LLW [2] + !BYTE $76,$09 ; SLW [9] + !BYTE $00 ; CN 0 + !BYTE $76,$0B ; SLW [11] + !BYTE $00 ; CN 0 + !BYTE $76,$0D ; SLW [13] + !BYTE $00 ; CN 0 + !BYTE $74,$0F ; SLB [15] + !BYTE $2A,$41 ; CB 65 + !BYTE $28,$06 ; LLA [6] + !BYTE $54 ; CALL _A000 +_F083 !WORD _A000 + !BYTE $78 ; SAB _D034+0 +_F084 !WORD _D034+0 + !BYTE $64,$0F ; LLB [15] + !BYTE $66,$0B ; LLW [11] + !BYTE $66,$0D ; LLW [13] + !BYTE $5A,$10 ; LEAVE 16 +; vmsrc/apple/sossysjit.pla: 0889: end +; vmsrc/apple/sossysjit.pla: 0890: def seg_release(segnum)#1 + ; segnum -> [0] +_C008 ; seg_release() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0891: byte params[2] + ; params -> [2] +; vmsrc/apple/sossysjit.pla: 0892: +; vmsrc/apple/sossysjit.pla: 0893: params.0 = 1 + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossysjit.pla: 0894: params.1 = segnum +; vmsrc/apple/sossysjit.pla: 0895: perr = syscall($45, @params) +; vmsrc/apple/sossysjit.pla: 0896: return perr + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $74,$03 ; SLB [3] + !BYTE $2A,$45 ; CB 69 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A000 +_F085 !WORD _A000 + !BYTE $7C ; DAB _D034+0 +_F086 !WORD _D034+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 0897: end +; vmsrc/apple/sossysjit.pla: 0898: // +; vmsrc/apple/sossysjit.pla: 0899: // CONSOLE I/O +; vmsrc/apple/sossysjit.pla: 0900: // +; vmsrc/apple/sossysjit.pla: 0901: def cout(ch)#0 + ; ch -> [0] +_P003 ; cout(ch)#0() +_C009 ; cout() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0902: byte nc + ; nc -> [2] +; vmsrc/apple/sossysjit.pla: 0903: +; vmsrc/apple/sossysjit.pla: 0904: nc = 1 + !BYTE $58,$03,$01 ; ENTER 3,1 +; vmsrc/apple/sossysjit.pla: 0905: if ch == $0D +; vmsrc/apple/sossysjit.pla: 0906: ch = $0A0D +; vmsrc/apple/sossysjit.pla: 0907: nc = 2 +; vmsrc/apple/sossysjit.pla: 0908: fin + !BYTE $02 ; CN 1 + !BYTE $74,$02 ; SLB [2] + !BYTE $66,$00 ; LLW [0] + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B001 + !WORD _B001-* + !BYTE $2C,$0D,$0A ; CW 2573 + !BYTE $76,$00 ; SLW [0] + !BYTE $04 ; CN 2 + !BYTE $74,$02 ; SLB [2] +_B001 +_B002 +; vmsrc/apple/sossysjit.pla: 0909: write(refcons, @ch, nc) +; vmsrc/apple/sossysjit.pla: 0910: end + !BYTE $68 ; LAB _D037+0 +_F087 !WORD _D037+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _C003 +_F088 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $5A,$03 ; LEAVE 3 +; vmsrc/apple/sossysjit.pla: 0911: def crout()#0 +_P002 ; crout()#0() +_C010 ; crout() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0912: cout($0D) +; vmsrc/apple/sossysjit.pla: 0913: end + !BYTE $1A ; CN 13 + !BYTE $54 ; CALL _C009 +_F089 !WORD _C009 + !BYTE $5C ; RET +; vmsrc/apple/sossysjit.pla: 0914: def cin()#1 +_P008 ; cin()#1() +_C011 ; cin() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0915: byte ch + ; ch -> [0] +; vmsrc/apple/sossysjit.pla: 0916: read(refcons, @ch, 1) + !BYTE $58,$01,$00 ; ENTER 1,0 +; vmsrc/apple/sossysjit.pla: 0917: return ch & $7F + !BYTE $68 ; LAB _D037+0 +_F090 !WORD _D037+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $02 ; CN 1 + !BYTE $54 ; CALL _C002 +_F091 !WORD _C002 + !BYTE $30 ; DROP + !BYTE $64,$00 ; LLB [0] + !BYTE $3C,$7F ; ANDI 127 + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/sossysjit.pla: 0918: end +; vmsrc/apple/sossysjit.pla: 0919: def prstr(str)#0 + ; str -> [0] +_P004 ; prstr(str)#0() +_C012 ; prstr() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0920: write(refcons, str + 1, ^str) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossysjit.pla: 0921: if str->[^str] == $0D +; vmsrc/apple/sossysjit.pla: 0922: cout($0A) +; vmsrc/apple/sossysjit.pla: 0923: fin + !BYTE $68 ; LAB _D037+0 +_F092 !WORD _D037+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _C003 +_F093 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B003 + !WORD _B003-* + !BYTE $14 ; CN 10 + !BYTE $54 ; CALL _C009 +_F094 !WORD _C009 +_B003 +_B004 +; vmsrc/apple/sossysjit.pla: 0924: end + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0925: def print(i)#0 + ; i -> [0] +_P005 ; print(i)#0() +_C013 ; print() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0926: if i < 0; cout('-'); i = -i; fin + !BYTE $58,$02,$01 ; ENTER 2,1 + !BYTE $66,$00 ; LLW [0] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B005 + !WORD _B005-* + !BYTE $2A,$2D ; CB 45 + !BYTE $54 ; CALL _C009 +_F095 !WORD _C009 + !BYTE $66,$00 ; LLW [0] + !BYTE $90 ; NEG + !BYTE $76,$00 ; SLW [0] +_B005 +_B006 +; vmsrc/apple/sossysjit.pla: 0927: if i >= 10; print(i / 10); fin + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $48 ; ISGE + !BYTE $4C ; BRFLS _B007 + !WORD _B007-* + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $88 ; DIV + !BYTE $54 ; CALL _C013 +_F096 !WORD _C013 +_B007 +_B008 +; vmsrc/apple/sossysjit.pla: 0928: cout(i % 10 + '0') +; vmsrc/apple/sossysjit.pla: 0929: end + !BYTE $66,$00 ; LLW [0] + !BYTE $14 ; CN 10 + !BYTE $8A ; MOD + !BYTE $38,$30 ; ADDI 48 + !BYTE $54 ; CALL _C009 +_F097 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0930: def rdstr(prompt)#1 + ; prompt -> [0] +_P009 ; rdstr(prompt)#1() +_C014 ; rdstr() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0931: cout(prompt) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossysjit.pla: 0932: ^instr = read(refcons, instr+1, 128) +; vmsrc/apple/sossysjit.pla: 0933: if instr->[^instr] == $0D +; vmsrc/apple/sossysjit.pla: 0934: ^instr-- + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C009 +_F098 !WORD _C009 + !BYTE $68 ; LAB _D037+0 +_F099 !WORD _D037+0 + !BYTE $2C,$21,$A0 ; CW 40993 + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F100 !WORD _C002 + !BYTE $78,$20,$A0 ; SAB 40992 + !BYTE $2C,$20,$A0 ; CW 40992 + !BYTE $B4,$20,$A0 ; ADDAB 40992 + !BYTE $60 ; LB + !BYTE $1A ; CN 13 + !BYTE $24 ; BRNE _B009 + !WORD _B009-* + !BYTE $68,$20,$A0 ; LAB 40992 + !BYTE $8E ; DECR +; vmsrc/apple/sossysjit.pla: 0935: fin + !BYTE $78,$20,$A0 ; SAB 40992 +_B009 +_B010 +; vmsrc/apple/sossysjit.pla: 0936: crout +; vmsrc/apple/sossysjit.pla: 0937: return instr + !BYTE $54 ; CALL _C010 +_F101 !WORD _C010 + !BYTE $2C,$20,$A0 ; CW 40992 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0938: end +; vmsrc/apple/sossysjit.pla: 0939: def prbyte(v)#0 + ; v -> [0] +_P006 ; prbyte(v)#0() +_C015 ; prbyte() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0940: cout(hexchar[(v >> 4) & $0F]) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossysjit.pla: 0941: cout(hexchar[v & $0F]) +; vmsrc/apple/sossysjit.pla: 0942: end + !BYTE $26 ; LA _D039+0 +_F102 !WORD _D039+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $08 ; CN 4 + !BYTE $9C ; SHR + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C009 +_F103 !WORD _C009 + !BYTE $26 ; LA _D039+0 +_F104 !WORD _D039+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $3C,$0F ; ANDI 15 + !BYTE $82 ; ADD + !BYTE $60 ; LB + !BYTE $54 ; CALL _C009 +_F105 !WORD _C009 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0943: def prword(v)#0 + ; v -> [0] +_P007 ; prword(v)#0() +_C016 ; prword() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0944: prbyte(v >> 8) + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossysjit.pla: 0945: prbyte(v) +; vmsrc/apple/sossysjit.pla: 0946: end + !BYTE $64,$01 ; LLB [1] + !BYTE $54 ; CALL _C015 +_F106 !WORD _C015 + !BYTE $66,$00 ; LLW [0] + !BYTE $54 ; CALL _C015 +_F107 !WORD _C015 + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0947: // +; vmsrc/apple/sossysjit.pla: 0948: // Heap routines. +; vmsrc/apple/sossysjit.pla: 0949: // +; vmsrc/apple/sossysjit.pla: 0950: def availheap()#1 +_P017 ; availheap()#1() +_C017 ; availheap() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0951: byte fp + ; fp -> [0] +; vmsrc/apple/sossysjit.pla: 0952: return @fp - heap + !BYTE $58,$01,$00 ; ENTER 1,0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D077+0 +_F108 !WORD _D077+0 + !BYTE $84 ; SUB + !BYTE $5A,$01 ; LEAVE 1 +; vmsrc/apple/sossysjit.pla: 0953: end +; vmsrc/apple/sossysjit.pla: 0954: def allocheap(size)#1 + ; size -> [0] +_P014 ; allocheap(size)#1() +_C018 ; allocheap() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0955: word addr + ; addr -> [2] +; vmsrc/apple/sossysjit.pla: 0956: addr = heap + !BYTE $58,$04,$01 ; ENTER 4,1 +; vmsrc/apple/sossysjit.pla: 0957: heap = heap + size +; vmsrc/apple/sossysjit.pla: 0958: if uword_isge(heap, @addr) +; vmsrc/apple/sossysjit.pla: 0959: heap = addr +; vmsrc/apple/sossysjit.pla: 0960: return 0 + !BYTE $6A ; LAW _D077+0 +_F109 !WORD _D077+0 + !BYTE $76,$02 ; SLW [2] + !BYTE $6A ; LAW _D077+0 +_F110 !WORD _D077+0 + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D077+0 +_F111 !WORD _D077+0 + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A006 +_F112 !WORD _A006 + !BYTE $4C ; BRFLS _B011 + !WORD _B011-* + !BYTE $66,$02 ; LLW [2] + !BYTE $7A ; SAW _D077+0 +_F113 !WORD _D077+0 + !BYTE $00 ; CN 0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 0961: fin +_B011 +_B012 +; vmsrc/apple/sossysjit.pla: 0962: return addr + !BYTE $66,$02 ; LLW [2] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 0963: end +; vmsrc/apple/sossysjit.pla: 0964: def allocalignheap(size, pow2, freeaddr)#1 + ; size -> [0] + ; pow2 -> [2] + ; freeaddr -> [4] +_P015 ; allocalignheap(size, pow2, freeaddr)#1() +_C019 ; allocalignheap() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0965: word align, addr + ; align -> [6] + ; addr -> [8] +; vmsrc/apple/sossysjit.pla: 0966: if freeaddr + !BYTE $58,$0A,$03 ; ENTER 10,3 +; vmsrc/apple/sossysjit.pla: 0967: *freeaddr = heap +; vmsrc/apple/sossysjit.pla: 0968: fin + !BYTE $66,$04 ; LLW [4] + !BYTE $4C ; BRFLS _B013 + !WORD _B013-* + !BYTE $6A ; LAW _D077+0 +_F114 !WORD _D077+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $72 ; SW +_B013 +_B014 +; vmsrc/apple/sossysjit.pla: 0969: align = (1 << pow2) - 1 +; vmsrc/apple/sossysjit.pla: 0970: addr = (heap | align) + 1 +; vmsrc/apple/sossysjit.pla: 0971: heap = addr + size +; vmsrc/apple/sossysjit.pla: 0972: if uword_isge(heap, @addr) +; vmsrc/apple/sossysjit.pla: 0973: return 0 + !BYTE $02 ; CN 1 + !BYTE $66,$02 ; LLW [2] + !BYTE $9A ; SHL + !BYTE $8E ; DECR + !BYTE $76,$06 ; SLW [6] + !BYTE $6A ; LAW _D077+0 +_F115 !WORD _D077+0 + !BYTE $66,$06 ; LLW [6] + !BYTE $96 ; OR + !BYTE $8C ; INCR + !BYTE $6E,$08 ; DLW [8] + !BYTE $B2,$00 ; ADDLW [0] + !BYTE $7E ; DAW _D077+0 +_F116 !WORD _D077+0 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A006 +_F117 !WORD _A006 + !BYTE $4C ; BRFLS _B015 + !WORD _B015-* + !BYTE $00 ; CN 0 + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/sossysjit.pla: 0974: fin +_B015 +_B016 +; vmsrc/apple/sossysjit.pla: 0975: return addr + !BYTE $66,$08 ; LLW [8] + !BYTE $5A,$0A ; LEAVE 10 +; vmsrc/apple/sossysjit.pla: 0976: end +; vmsrc/apple/sossysjit.pla: 0977: def markheap()#1 +_P013 ; markheap()#1() +_C020 ; markheap() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0978: return heap + !BYTE $6A ; LAW _D077+0 +_F118 !WORD _D077+0 + !BYTE $5C ; RET +; vmsrc/apple/sossysjit.pla: 0979: end +; vmsrc/apple/sossysjit.pla: 0980: def releaseheap(newheap)#1 + ; newheap -> [0] +_P016 ; releaseheap(newheap)#1() +_C021 ; releaseheap() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0981: heap = newheap + !BYTE $58,$02,$01 ; ENTER 2,1 +; vmsrc/apple/sossysjit.pla: 0982: return @newheap - heap + !BYTE $66,$00 ; LLW [0] + !BYTE $7A ; SAW _D077+0 +_F119 !WORD _D077+0 + !BYTE $28,$00 ; LLA [0] + !BYTE $6A ; LAW _D077+0 +_F120 !WORD _D077+0 + !BYTE $84 ; SUB + !BYTE $5A,$02 ; LEAVE 2 +; vmsrc/apple/sossysjit.pla: 0983: end +; vmsrc/apple/sossysjit.pla: 0984: // +; vmsrc/apple/sossysjit.pla: 0985: // Symbol table routines. +; vmsrc/apple/sossysjit.pla: 0986: // +; vmsrc/apple/sossysjit.pla: 0987: def addsym(sym, addr)#0 + ; sym -> [0] + ; addr -> [2] +_C022 ; addsym() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 0988: while ^sym & $80 + !BYTE $58,$04,$02 ; ENTER 4,2 + !BYTE $50 ; BRNCH _B019 + !WORD _B019-* +_B017 +; vmsrc/apple/sossysjit.pla: 0989: xpokeb(symtbl.0, lastsym, ^sym) +; vmsrc/apple/sossysjit.pla: 0990: lastsym = lastsym + 1 +; vmsrc/apple/sossysjit.pla: 0991: sym = sym + 1 +; vmsrc/apple/sossysjit.pla: 0992: loop + !BYTE $68 ; LAB _D081+0 +_F121 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F122 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A005 +_F123 !WORD _A005 + !BYTE $6A ; LAW _D082+0 +_F124 !WORD _D082+0 + !BYTE $8C ; INCR + !BYTE $7A ; SAW _D082+0 +_F125 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $76,$00 ; SLW [0] +_B019 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $3C,$80 ; ANDI 128 + !BYTE $4E ; BRTRU _B017 + !WORD _B017-* +_B018 +; vmsrc/apple/sossysjit.pla: 0993: xpokeb(symtbl.0, lastsym, ^sym) +; vmsrc/apple/sossysjit.pla: 0994: xpokeb(symtbl.0, lastsym + 1, addr.0) +; vmsrc/apple/sossysjit.pla: 0995: xpokeb(symtbl.0, lastsym + 2, addr.1) +; vmsrc/apple/sossysjit.pla: 0996: xpokeb(symtbl.0, lastsym + 3, 0) +; vmsrc/apple/sossysjit.pla: 0997: lastsym = lastsym + 3 +; vmsrc/apple/sossysjit.pla: 0998: end + !BYTE $68 ; LAB _D081+0 +_F126 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F127 !WORD _D082+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A005 +_F128 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F129 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F130 !WORD _D082+0 + !BYTE $8C ; INCR + !BYTE $64,$02 ; LLB [2] + !BYTE $54 ; CALL _A005 +_F131 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F132 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F133 !WORD _D082+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $64,$03 ; LLB [3] + !BYTE $54 ; CALL _A005 +_F134 !WORD _A005 + !BYTE $68 ; LAB _D081+0 +_F135 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F136 !WORD _D082+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F137 !WORD _A005 + !BYTE $6A ; LAW _D082+0 +_F138 !WORD _D082+0 + !BYTE $38,$03 ; ADDI 3 + !BYTE $7A ; SAW _D082+0 +_F139 !WORD _D082+0 + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 0999: // +; vmsrc/apple/sossysjit.pla: 1000: // String routines. +; vmsrc/apple/sossysjit.pla: 1001: // +; vmsrc/apple/sossysjit.pla: 1002: def strcpy(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P011 ; strcpy(dst, src)#1() +_C023 ; strcpy() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1003: memcpy(dst+1, src+1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/sossysjit.pla: 1004: ^dst = ^src +; vmsrc/apple/sossysjit.pla: 1005: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A003 +_F140 !WORD _A003 + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 1006: end +; vmsrc/apple/sossysjit.pla: 1007: def strcat(dst, src)#1 + ; dst -> [0] + ; src -> [2] +_P012 ; strcat(dst, src)#1() +_C024 ; strcat() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1008: memcpy(dst + ^dst + 1, src + 1, ^src) + !BYTE $58,$04,$02 ; ENTER 4,2 +; vmsrc/apple/sossysjit.pla: 1009: ^dst = ^dst + ^src +; vmsrc/apple/sossysjit.pla: 1010: return dst + !BYTE $66,$00 ; LLW [0] + !BYTE $34 ; DUP + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $8C ; INCR + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $54 ; CALL _A003 +_F141 !WORD _A003 + !BYTE $66,$00 ; LLW [0] + !BYTE $60 ; LB + !BYTE $66,$02 ; LLW [2] + !BYTE $60 ; LB + !BYTE $82 ; ADD + !BYTE $66,$00 ; LLW [0] + !BYTE $70 ; SB + !BYTE $66,$00 ; LLW [0] + !BYTE $5A,$04 ; LEAVE 4 +; vmsrc/apple/sossysjit.pla: 1011: end +; vmsrc/apple/sossysjit.pla: 1012: // +; vmsrc/apple/sossysjit.pla: 1013: // Module routines. +; vmsrc/apple/sossysjit.pla: 1014: // +; vmsrc/apple/sossysjit.pla: 1015: def lookupextern(esd, index)#1 + ; esd -> [0] + ; index -> [2] +_C025 ; lookupextern() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1016: word sym, addr + ; sym -> [4] + ; addr -> [6] +; vmsrc/apple/sossysjit.pla: 1017: byte str[33] + ; str -> [8] +; vmsrc/apple/sossysjit.pla: 1018: sym = lookupidx(esd, index) + !BYTE $58,$29,$02 ; ENTER 41,2 +; vmsrc/apple/sossysjit.pla: 1019: if sym +; vmsrc/apple/sossysjit.pla: 1020: addr = lookuptbl(sym, symtbl) +; vmsrc/apple/sossysjit.pla: 1021: if !addr +; vmsrc/apple/sossysjit.pla: 1022: perr = $81 +; vmsrc/apple/sossysjit.pla: 1023: dcitos(sym, @str) +; vmsrc/apple/sossysjit.pla: 1024: cout('?'); prstr(@str); crout +; vmsrc/apple/sossysjit.pla: 1025: fin + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _A016 +_F142 !WORD _A016 + !BYTE $6E,$04 ; DLW [4] + !BYTE $4C ; BRFLS _B020 + !WORD _B020-* + !BYTE $66,$04 ; LLW [4] + !BYTE $6A ; LAW _D081+0 +_F143 !WORD _D081+0 + !BYTE $54 ; CALL _A015 +_F144 !WORD _A015 + !BYTE $6E,$06 ; DLW [6] + !BYTE $4E ; BRTRU _B022 + !WORD _B022-* + !BYTE $2A,$81 ; CB 129 + !BYTE $78 ; SAB _D034+0 +_F145 !WORD _D034+0 + !BYTE $66,$04 ; LLW [4] + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _A012 +_F146 !WORD _A012 + !BYTE $30 ; DROP + !BYTE $2A,$3F ; CB 63 + !BYTE $54 ; CALL _C009 +_F147 !WORD _C009 + !BYTE $28,$08 ; LLA [8] + !BYTE $54 ; CALL _C012 +_F148 !WORD _C012 + !BYTE $54 ; CALL _C010 +_F149 !WORD _C010 +_B022 +_B023 +; vmsrc/apple/sossysjit.pla: 1026: return addr + !BYTE $66,$06 ; LLW [6] + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/sossysjit.pla: 1027: fin +_B020 +_B021 +; vmsrc/apple/sossysjit.pla: 1028: return 0 + !BYTE $00 ; CN 0 + !BYTE $5A,$29 ; LEAVE 41 +; vmsrc/apple/sossysjit.pla: 1029: end +; vmsrc/apple/sossysjit.pla: 1030: def adddef(isfirst, ext, addr, deflast)#1 + ; isfirst -> [0] + ; ext -> [2] + ; addr -> [4] + ; deflast -> [6] +_C026 ; adddef() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1031: word preventry, defentry, defsize + ; preventry -> [8] + ; defentry -> [10] + ; defsize -> [12] +; vmsrc/apple/sossysjit.pla: 1032: defentry = *deflast + !BYTE $58,$0E,$04 ; ENTER 14,4 +; vmsrc/apple/sossysjit.pla: 1033: *deflast = defentry + t_defentry +; vmsrc/apple/sossysjit.pla: 1034: if not isfirst +; vmsrc/apple/sossysjit.pla: 1035: preventry = defentry - t_defentry +; vmsrc/apple/sossysjit.pla: 1036: defsize = addr - preventry=>bytecodeaddr +; vmsrc/apple/sossysjit.pla: 1037: if defsize <= jitsize +; vmsrc/apple/sossysjit.pla: 1038: preventry=>interpaddr = *jitinterp // JSR JITINTRP +; vmsrc/apple/sossysjit.pla: 1039: preventry->callcount = jitcount // Set JIT countdown +; vmsrc/apple/sossysjit.pla: 1040: preventry->bytecodesize = defsize // Set size +; vmsrc/apple/sossysjit.pla: 1041: fin + !BYTE $66,$06 ; LLW [6] + !BYTE $62 ; LW + !BYTE $6E,$0A ; DLW [10] + !BYTE $38,$08 ; ADDI 8 + !BYTE $66,$06 ; LLW [6] + !BYTE $72 ; SW + !BYTE $66,$00 ; LLW [0] + !BYTE $4E ; BRTRU _B024 + !WORD _B024-* + !BYTE $66,$0A ; LLW [10] + !BYTE $3A,$08 ; SUBI 8 + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$03 ; ADDI 3 + !BYTE $62 ; LW + !BYTE $84 ; SUB + !BYTE $6E,$0C ; DLW [12] + !BYTE $68 ; LAB _D036+0 +_F150 !WORD _D036+0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B026 + !WORD _B026-* + !BYTE $6A,$FA,$A0 ; LAW 41210 + !BYTE $66,$08 ; LLW [8] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $68 ; LAB _D035+0 +_F151 !WORD _D035+0 + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$06 ; ADDI 6 + !BYTE $70 ; SB + !BYTE $66,$0C ; LLW [12] + !BYTE $66,$08 ; LLW [8] + !BYTE $38,$07 ; ADDI 7 + !BYTE $70 ; SB +_B026 +_B027 +; vmsrc/apple/sossysjit.pla: 1042: fin +_B024 +_B025 +; vmsrc/apple/sossysjit.pla: 1043: defentry->interpjsr = $20 // JSR +; vmsrc/apple/sossysjit.pla: 1044: defentry=>interpaddr = *xinterp // XINTERP +; vmsrc/apple/sossysjit.pla: 1045: defentry=>bytecodeaddr = addr +; vmsrc/apple/sossysjit.pla: 1046: defentry->bytecodexbyte = ext +; vmsrc/apple/sossysjit.pla: 1047: defentry->t_defentry = 0 +; vmsrc/apple/sossysjit.pla: 1048: return defentry + !BYTE $2A,$20 ; CB 32 + !BYTE $66,$0A ; LLW [10] + !BYTE $70 ; SB + !BYTE $6A,$F8,$A0 ; LAW 41208 + !BYTE $66,$0A ; LLW [10] + !BYTE $8C ; INCR + !BYTE $72 ; SW + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$03 ; ADDI 3 + !BYTE $72 ; SW + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$05 ; ADDI 5 + !BYTE $70 ; SB + !BYTE $00 ; CN 0 + !BYTE $66,$0A ; LLW [10] + !BYTE $38,$08 ; ADDI 8 + !BYTE $70 ; SB + !BYTE $66,$0A ; LLW [10] + !BYTE $5A,$0E ; LEAVE 14 +; vmsrc/apple/sossysjit.pla: 1049: end +; vmsrc/apple/sossysjit.pla: 1050: def loadmod(mod)#1 + ; mod -> [0] +_C027 ; loadmod() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1051: word refnum[], deffirst, rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup + ; refnum -> [2] + ; deffirst -> [2] + ; rdlen -> [4] + ; modsize -> [6] + ; bytecode -> [8] + ; codefix -> [10] + ; defofst -> [12] + ; defcnt -> [14] + ; init -> [16] + ; initcode -> [18] + ; fixup -> [18] +; vmsrc/apple/sossysjit.pla: 1052: word addr, defaddr, modaddr, modfix, modofst, modend + ; addr -> [20] + ; defaddr -> [22] + ; modaddr -> [24] + ; modfix -> [26] + ; modofst -> [28] + ; modend -> [30] +; vmsrc/apple/sossysjit.pla: 1053: word deftbl, deflast, codeseg + ; deftbl -> [32] + ; deflast -> [34] + ; codeseg -> [36] +; vmsrc/apple/sossysjit.pla: 1054: word moddep, rld, esd, sym + ; moddep -> [38] + ; rld -> [40] + ; esd -> [42] + ; sym -> [44] +; vmsrc/apple/sossysjit.pla: 1055: byte lerr, defext, skipjit, fileinfo[], str[16], filename[33] + ; lerr -> [46] + ; defext -> [47] + ; skipjit -> [48] + ; fileinfo -> [49] + ; str -> [49] + ; filename -> [65] +; vmsrc/apple/sossysjit.pla: 1056: byte header[128] + ; header -> [98] +; vmsrc/apple/sossysjit.pla: 1057: lerr = 0 + !BYTE $58,$E2,$01 ; ENTER 226,1 +; vmsrc/apple/sossysjit.pla: 1058: // +; vmsrc/apple/sossysjit.pla: 1059: // Read the RELocatable module header (first 128 bytes) +; vmsrc/apple/sossysjit.pla: 1060: // +; vmsrc/apple/sossysjit.pla: 1061: dcitos(mod, @filename) +; vmsrc/apple/sossysjit.pla: 1062: refnum = open(@filename) +; vmsrc/apple/sossysjit.pla: 1063: if !refnum and filename < 16 +; vmsrc/apple/sossysjit.pla: 1064: // +; vmsrc/apple/sossysjit.pla: 1065: // Try system path +; vmsrc/apple/sossysjit.pla: 1066: // +; vmsrc/apple/sossysjit.pla: 1067: refnum = open(strcpy(@filename,strcat(strcpy(@header, @sysmods), @filename))) +; vmsrc/apple/sossysjit.pla: 1068: fin + !BYTE $00 ; CN 0 + !BYTE $74,$2E ; SLB [46] + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$41 ; LLA [65] + !BYTE $54 ; CALL _A012 +_F152 !WORD _A012 + !BYTE $30 ; DROP + !BYTE $28,$41 ; LLA [65] + !BYTE $54 ; CALL _C000 +_F153 !WORD _C000 + !BYTE $6E,$02 ; DLW [2] + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B028 + !WORD _B028-* + !BYTE $64,$41 ; LLB [65] + !BYTE $2A,$10 ; CB 16 + !BYTE $46 ; ISLT +_B028 + !BYTE $4C ; BRFLS _B029 + !WORD _B029-* + !BYTE $28,$41 ; LLA [65] + !BYTE $28,$62 ; LLA [98] + !BYTE $26 ; LA _D074+0 +_F154 !WORD _D074+0 + !BYTE $54 ; CALL _C023 +_F155 !WORD _C023 + !BYTE $28,$41 ; LLA [65] + !BYTE $54 ; CALL _C024 +_F156 !WORD _C024 + !BYTE $54 ; CALL _C023 +_F157 !WORD _C023 + !BYTE $54 ; CALL _C000 +_F158 !WORD _C000 + !BYTE $76,$02 ; SLW [2] +_B029 +_B030 +; vmsrc/apple/sossysjit.pla: 1069: if refnum +; vmsrc/apple/sossysjit.pla: 1070: header.0 = 3 +; vmsrc/apple/sossysjit.pla: 1071: header:1 = @filename +; vmsrc/apple/sossysjit.pla: 1072: header:3 = @fileinfo +; vmsrc/apple/sossysjit.pla: 1073: header.5 = 2 +; vmsrc/apple/sossysjit.pla: 1074: if not syscall($C4, @header) and fileinfo.1 <> $FE // Make sure it's a REL module +; vmsrc/apple/sossysjit.pla: 1075: close(refnum) +; vmsrc/apple/sossysjit.pla: 1076: perr = $4A // Incompatible type +; vmsrc/apple/sossysjit.pla: 1077: return -perr + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B031 + !WORD _B031-* + !BYTE $06 ; CN 3 + !BYTE $74,$62 ; SLB [98] + !BYTE $28,$41 ; LLA [65] + !BYTE $76,$63 ; SLW [99] + !BYTE $28,$31 ; LLA [49] + !BYTE $76,$65 ; SLW [101] + !BYTE $04 ; CN 2 + !BYTE $74,$67 ; SLB [103] + !BYTE $2A,$C4 ; CB 196 + !BYTE $28,$62 ; LLA [98] + !BYTE $54 ; CALL _A000 +_F159 !WORD _A000 + !BYTE $80 ; NOT + !BYTE $AC ; BRAND _B033 + !WORD _B033-* + !BYTE $64,$32 ; LLB [50] + !BYTE $2A,$FE ; CB 254 + !BYTE $42 ; ISNE +_B033 + !BYTE $4C ; BRFLS _B034 + !WORD _B034-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F160 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $2A,$4A ; CB 74 + !BYTE $7C ; DAB _D034+0 +_F161 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E2 ; LEAVE 226 +; vmsrc/apple/sossysjit.pla: 1078: fin +_B034 +_B035 +; vmsrc/apple/sossysjit.pla: 1079: rdlen = read(refnum, @header, 128) +; vmsrc/apple/sossysjit.pla: 1080: modsize = header:0 +; vmsrc/apple/sossysjit.pla: 1081: moddep = @header.1 +; vmsrc/apple/sossysjit.pla: 1082: defofst = modsize + RELADDR +; vmsrc/apple/sossysjit.pla: 1083: defext = 0 +; vmsrc/apple/sossysjit.pla: 1084: init = 0 +; vmsrc/apple/sossysjit.pla: 1085: if rdlen > 4 and header:2 == $6502 // magic number +; vmsrc/apple/sossysjit.pla: 1086: // +; vmsrc/apple/sossysjit.pla: 1087: // This is an EXTended RELocatable (data+bytecode) module. +; vmsrc/apple/sossysjit.pla: 1088: // +; vmsrc/apple/sossysjit.pla: 1089: systemflags = header.4 | systemflags +; vmsrc/apple/sossysjit.pla: 1090: skipjit = header.5 & (nojitc >> 8) +; vmsrc/apple/sossysjit.pla: 1091: defofst = header:6 +; vmsrc/apple/sossysjit.pla: 1092: defcnt = header:8 +; vmsrc/apple/sossysjit.pla: 1093: init = header:10 +; vmsrc/apple/sossysjit.pla: 1094: moddep = @header.12 +; vmsrc/apple/sossysjit.pla: 1095: // +; vmsrc/apple/sossysjit.pla: 1096: // Load module dependencies. +; vmsrc/apple/sossysjit.pla: 1097: // +; vmsrc/apple/sossysjit.pla: 1098: while ^moddep + !BYTE $66,$02 ; LLW [2] + !BYTE $28,$62 ; LLA [98] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F162 !WORD _C002 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$62 ; LLW [98] + !BYTE $76,$06 ; SLW [6] + !BYTE $28,$63 ; LLA [99] + !BYTE $76,$26 ; SLW [38] + !BYTE $66,$06 ; LLW [6] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $82 ; ADD + !BYTE $76,$0C ; SLW [12] + !BYTE $00 ; CN 0 + !BYTE $74,$2F ; SLB [47] + !BYTE $00 ; CN 0 + !BYTE $76,$10 ; SLW [16] + !BYTE $66,$04 ; LLW [4] + !BYTE $08 ; CN 4 + !BYTE $44 ; ISGT + !BYTE $AC ; BRAND _B036 + !WORD _B036-* + !BYTE $66,$64 ; LLW [100] + !BYTE $2C,$02,$65 ; CW 25858 + !BYTE $40 ; ISEQ +_B036 + !BYTE $4C ; BRFLS _B037 + !WORD _B037-* + !BYTE $64,$66 ; LLB [102] + !BYTE $6A ; LAW _D076+0 +_F163 !WORD _D076+0 + !BYTE $96 ; OR + !BYTE $7A ; SAW _D076+0 +_F164 !WORD _D076+0 + !BYTE $64,$67 ; LLB [103] + !BYTE $3C,$01 ; ANDI 1 + !BYTE $74,$30 ; SLB [48] + !BYTE $66,$68 ; LLW [104] + !BYTE $76,$0C ; SLW [12] + !BYTE $66,$6A ; LLW [106] + !BYTE $76,$0E ; SLW [14] + !BYTE $66,$6C ; LLW [108] + !BYTE $76,$10 ; SLW [16] + !BYTE $28,$6E ; LLA [110] + !BYTE $76,$26 ; SLW [38] + !BYTE $50 ; BRNCH _B041 + !WORD _B041-* +_B039 +; vmsrc/apple/sossysjit.pla: 1099: if !lookuptbl(moddep, symtbl) +; vmsrc/apple/sossysjit.pla: 1100: if refnum +; vmsrc/apple/sossysjit.pla: 1101: close(refnum) +; vmsrc/apple/sossysjit.pla: 1102: refnum = 0 +; vmsrc/apple/sossysjit.pla: 1103: fin + !BYTE $66,$26 ; LLW [38] + !BYTE $6A ; LAW _D081+0 +_F165 !WORD _D081+0 + !BYTE $54 ; CALL _A015 +_F166 !WORD _A015 + !BYTE $4E ; BRTRU _B042 + !WORD _B042-* + !BYTE $66,$02 ; LLW [2] + !BYTE $4C ; BRFLS _B044 + !WORD _B044-* + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F167 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$02 ; SLW [2] +_B044 +_B045 +; vmsrc/apple/sossysjit.pla: 1104: if loadmod(moddep) < 0 +; vmsrc/apple/sossysjit.pla: 1105: return -perr + !BYTE $66,$26 ; LLW [38] + !BYTE $54 ; CALL _C027 +_F168 !WORD _C027 + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B046 + !WORD _B046-* + !BYTE $68 ; LAB _D034+0 +_F169 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E2 ; LEAVE 226 +; vmsrc/apple/sossysjit.pla: 1106: fin +_B046 +_B047 +; vmsrc/apple/sossysjit.pla: 1107: fin +_B042 +_B043 +; vmsrc/apple/sossysjit.pla: 1108: moddep = moddep + dcitos(moddep, @str) +; vmsrc/apple/sossysjit.pla: 1109: loop + !BYTE $66,$26 ; LLW [38] + !BYTE $34 ; DUP + !BYTE $28,$31 ; LLA [49] + !BYTE $54 ; CALL _A012 +_F170 !WORD _A012 + !BYTE $82 ; ADD + !BYTE $76,$26 ; SLW [38] +_B041 + !BYTE $66,$26 ; LLW [38] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B039 + !WORD _B039-* +_B040 +; vmsrc/apple/sossysjit.pla: 1110: // +; vmsrc/apple/sossysjit.pla: 1111: // Init def table. +; vmsrc/apple/sossysjit.pla: 1112: // +; vmsrc/apple/sossysjit.pla: 1113: deftbl = allocheap(defcnt * t_defentry + 1) +; vmsrc/apple/sossysjit.pla: 1114: deflast = deftbl +; vmsrc/apple/sossysjit.pla: 1115: ^deflast = 0 +; vmsrc/apple/sossysjit.pla: 1116: if !refnum +; vmsrc/apple/sossysjit.pla: 1117: // +; vmsrc/apple/sossysjit.pla: 1118: // Reset read pointer. +; vmsrc/apple/sossysjit.pla: 1119: // +; vmsrc/apple/sossysjit.pla: 1120: refnum = open(@filename) +; vmsrc/apple/sossysjit.pla: 1121: rdlen = read(refnum, @header, 128) +; vmsrc/apple/sossysjit.pla: 1122: fin + !BYTE $66,$0E ; LLW [14] + !BYTE $06 ; CN 3 + !BYTE $9A ; SHL + !BYTE $8C ; INCR + !BYTE $54 ; CALL _C018 +_F171 !WORD _C018 + !BYTE $6E,$20 ; DLW [32] + !BYTE $76,$22 ; SLW [34] + !BYTE $00 ; CN 0 + !BYTE $66,$22 ; LLW [34] + !BYTE $70 ; SB + !BYTE $66,$02 ; LLW [2] + !BYTE $4E ; BRTRU _B048 + !WORD _B048-* + !BYTE $28,$41 ; LLA [65] + !BYTE $54 ; CALL _C000 +_F172 !WORD _C000 + !BYTE $6E,$02 ; DLW [2] + !BYTE $28,$62 ; LLA [98] + !BYTE $2A,$80 ; CB 128 + !BYTE $54 ; CALL _C002 +_F173 !WORD _C002 + !BYTE $76,$04 ; SLW [4] +_B048 +_B049 +; vmsrc/apple/sossysjit.pla: 1123: fin +_B037 +_B038 +; vmsrc/apple/sossysjit.pla: 1124: // +; vmsrc/apple/sossysjit.pla: 1125: // Alloc heap space for relocated module (data + bytecode). +; vmsrc/apple/sossysjit.pla: 1126: // +; vmsrc/apple/sossysjit.pla: 1127: moddep++ + !BYTE $66,$26 ; LLW [38] + !BYTE $8C ; INCR +; vmsrc/apple/sossysjit.pla: 1128: modfix = moddep - @header.2 // Adjust to skip header +; vmsrc/apple/sossysjit.pla: 1129: modsize = modsize - modfix +; vmsrc/apple/sossysjit.pla: 1130: rdlen = rdlen - modfix - 2 +; vmsrc/apple/sossysjit.pla: 1131: modaddr = allocheap(modsize) +; vmsrc/apple/sossysjit.pla: 1132: memcpy(modaddr, moddep, rdlen) +; vmsrc/apple/sossysjit.pla: 1133: // +; vmsrc/apple/sossysjit.pla: 1134: // Read in remainder of module into memory for fixups. +; vmsrc/apple/sossysjit.pla: 1135: // +; vmsrc/apple/sossysjit.pla: 1136: addr = modaddr +; vmsrc/apple/sossysjit.pla: 1137: repeat + !BYTE $6E,$26 ; DLW [38] + !BYTE $28,$64 ; LLA [100] + !BYTE $84 ; SUB + !BYTE $76,$1A ; SLW [26] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $76,$06 ; SLW [6] + !BYTE $66,$04 ; LLW [4] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $3A,$02 ; SUBI 2 + !BYTE $76,$04 ; SLW [4] + !BYTE $66,$06 ; LLW [6] + !BYTE $54 ; CALL _C018 +_F174 !WORD _C018 + !BYTE $6E,$18 ; DLW [24] + !BYTE $66,$26 ; LLW [38] + !BYTE $66,$04 ; LLW [4] + !BYTE $54 ; CALL _A003 +_F175 !WORD _A003 + !BYTE $66,$18 ; LLW [24] + !BYTE $76,$14 ; SLW [20] +_B051 +; vmsrc/apple/sossysjit.pla: 1138: addr = addr + rdlen +; vmsrc/apple/sossysjit.pla: 1139: rdlen = read(refnum, addr, 4096) +; vmsrc/apple/sossysjit.pla: 1140: until rdlen <= 0 + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$04 ; ADDLW [4] + !BYTE $76,$14 ; SLW [20] + !BYTE $66,$02 ; LLW [2] + !BYTE $66,$14 ; LLW [20] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $54 ; CALL _C002 +_F176 !WORD _C002 + !BYTE $76,$04 ; SLW [4] +_B052 + !BYTE $66,$04 ; LLW [4] + !BYTE $00 ; CN 0 + !BYTE $4A ; ISLE + !BYTE $4C ; BRFLS _B051 + !WORD _B051-* +_B050 +; vmsrc/apple/sossysjit.pla: 1141: close(refnum) +; vmsrc/apple/sossysjit.pla: 1142: // +; vmsrc/apple/sossysjit.pla: 1143: // Add module to symbol table. +; vmsrc/apple/sossysjit.pla: 1144: // +; vmsrc/apple/sossysjit.pla: 1145: addsym(mod, modaddr) +; vmsrc/apple/sossysjit.pla: 1146: // +; vmsrc/apple/sossysjit.pla: 1147: // Apply all fixups and symbol import/export. +; vmsrc/apple/sossysjit.pla: 1148: // +; vmsrc/apple/sossysjit.pla: 1149: modfix = modaddr - modfix +; vmsrc/apple/sossysjit.pla: 1150: modofst = modfix - RELADDR +; vmsrc/apple/sossysjit.pla: 1151: modend = modaddr + modsize +; vmsrc/apple/sossysjit.pla: 1152: bytecode = defofst + modofst +; vmsrc/apple/sossysjit.pla: 1153: rld = modend // Re-Locatable Directory +; vmsrc/apple/sossysjit.pla: 1154: esd = rld // Extern+Entry Symbol Directory +; vmsrc/apple/sossysjit.pla: 1155: while ^esd // Scan to end of ESD + !BYTE $66,$02 ; LLW [2] + !BYTE $54 ; CALL _C001 +_F177 !WORD _C001 + !BYTE $30 ; DROP + !BYTE $66,$00 ; LLW [0] + !BYTE $66,$18 ; LLW [24] + !BYTE $54 ; CALL _C022 +_F178 !WORD _C022 + !BYTE $66,$18 ; LLW [24] + !BYTE $66,$1A ; LLW [26] + !BYTE $84 ; SUB + !BYTE $6E,$1A ; DLW [26] + !BYTE $2C,$00,$10 ; CW 4096 + !BYTE $84 ; SUB + !BYTE $76,$1C ; SLW [28] + !BYTE $66,$18 ; LLW [24] + !BYTE $B2,$06 ; ADDLW [6] + !BYTE $76,$1E ; SLW [30] + !BYTE $66,$0C ; LLW [12] + !BYTE $B2,$1C ; ADDLW [28] + !BYTE $76,$08 ; SLW [8] + !BYTE $66,$1E ; LLW [30] + !BYTE $6E,$28 ; DLW [40] + !BYTE $76,$2A ; SLW [42] + !BYTE $50 ; BRNCH _B055 + !WORD _B055-* +_B053 +; vmsrc/apple/sossysjit.pla: 1156: esd = esd + 4 +; vmsrc/apple/sossysjit.pla: 1157: loop + !BYTE $66,$2A ; LLW [42] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$2A ; SLW [42] +_B055 + !BYTE $66,$2A ; LLW [42] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B053 + !WORD _B053-* +_B054 +; vmsrc/apple/sossysjit.pla: 1158: esd++ + !BYTE $66,$2A ; LLW [42] + !BYTE $8C ; INCR +; vmsrc/apple/sossysjit.pla: 1159: if defcnt +; vmsrc/apple/sossysjit.pla: 1160: // +; vmsrc/apple/sossysjit.pla: 1161: // Locate bytecode defs in allocated segment. +; vmsrc/apple/sossysjit.pla: 1162: // +; vmsrc/apple/sossysjit.pla: 1163: modseg[modid], codeseg, drop = seg_find($00, (rld - bytecode + 255) >> 8, modid + $12) +; vmsrc/apple/sossysjit.pla: 1164: if perr +; vmsrc/apple/sossysjit.pla: 1165: return -perr + !BYTE $76,$2A ; SLW [42] + !BYTE $66,$0E ; LLW [14] + !BYTE $4C ; BRFLS _B056 + !WORD _B056-* + !BYTE $00 ; CN 0 + !BYTE $66,$28 ; LLW [40] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $38,$FF ; ADDI 255 + !BYTE $10 ; CN 8 + !BYTE $9C ; SHR + !BYTE $68 ; LAB _D080+0 +_F179 !WORD _D080+0 + !BYTE $38,$12 ; ADDI 18 + !BYTE $54 ; CALL _C007 +_F180 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $76,$24 ; SLW [36] + !BYTE $26 ; LA _D079+0 +_F181 !WORD _D079+0 + !BYTE $B4 ; ADDAB _D080+0 +_F182 !WORD _D080+0 + !BYTE $70 ; SB + !BYTE $68 ; LAB _D034+0 +_F183 !WORD _D034+0 + !BYTE $4C ; BRFLS _B058 + !WORD _B058-* + !BYTE $68 ; LAB _D034+0 +_F184 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$E2 ; LEAVE 226 +; vmsrc/apple/sossysjit.pla: 1166: fin +_B058 +_B059 +; vmsrc/apple/sossysjit.pla: 1167: modid++ + !BYTE $68 ; LAB _D080+0 +_F185 !WORD _D080+0 + !BYTE $8C ; INCR +; vmsrc/apple/sossysjit.pla: 1168: defext = codeseg.0 + $7F // (codeseg.0 | $80) - 1 +; vmsrc/apple/sossysjit.pla: 1169: defaddr = (codeseg & $FF00) + $6000 +; vmsrc/apple/sossysjit.pla: 1170: codefix = defaddr - bytecode +; vmsrc/apple/sossysjit.pla: 1171: defofst = defaddr - defofst +; vmsrc/apple/sossysjit.pla: 1172: fin + !BYTE $78 ; SAB _D080+0 +_F186 !WORD _D080+0 + !BYTE $64,$24 ; LLB [36] + !BYTE $38,$7F ; ADDI 127 + !BYTE $74,$2F ; SLB [47] + !BYTE $66,$24 ; LLW [36] + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $2C,$00,$60 ; CW 24576 + !BYTE $82 ; ADD + !BYTE $6E,$16 ; DLW [22] + !BYTE $66,$08 ; LLW [8] + !BYTE $84 ; SUB + !BYTE $76,$0A ; SLW [10] + !BYTE $66,$16 ; LLW [22] + !BYTE $66,$0C ; LLW [12] + !BYTE $84 ; SUB + !BYTE $76,$0C ; SLW [12] +_B056 +_B057 +; vmsrc/apple/sossysjit.pla: 1173: // +; vmsrc/apple/sossysjit.pla: 1174: // Run through the DeFinition Dictionary. +; vmsrc/apple/sossysjit.pla: 1175: // +; vmsrc/apple/sossysjit.pla: 1176: deffirst = 1 +; vmsrc/apple/sossysjit.pla: 1177: while ^rld == $02 + !BYTE $02 ; CN 1 + !BYTE $76,$02 ; SLW [2] + !BYTE $50 ; BRNCH _B062 + !WORD _B062-* +_B060 +; vmsrc/apple/sossysjit.pla: 1178: // +; vmsrc/apple/sossysjit.pla: 1179: // This is a bytcode def entry - add it to the def directory. +; vmsrc/apple/sossysjit.pla: 1180: // +; vmsrc/apple/sossysjit.pla: 1181: adddef(deffirst, defext, rld=>1 + defofst, @deflast) +; vmsrc/apple/sossysjit.pla: 1182: deffirst = skipjit // Calculate JIT potential or not +; vmsrc/apple/sossysjit.pla: 1183: rld = rld + 4 +; vmsrc/apple/sossysjit.pla: 1184: loop + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$2F ; LLB [47] + !BYTE $66,$28 ; LLW [40] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $28,$22 ; LLA [34] + !BYTE $54 ; CALL _C026 +_F187 !WORD _C026 + !BYTE $30 ; DROP + !BYTE $64,$30 ; LLB [48] + !BYTE $76,$02 ; SLW [2] + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$28 ; SLW [40] +_B062 + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $04 ; CN 2 + !BYTE $22 ; BREQ _B060 + !WORD _B060-* +_B061 +; vmsrc/apple/sossysjit.pla: 1185: // +; vmsrc/apple/sossysjit.pla: 1186: // Run through the Re-Location Dictionary. +; vmsrc/apple/sossysjit.pla: 1187: // +; vmsrc/apple/sossysjit.pla: 1188: while ^rld + !BYTE $50 ; BRNCH _B065 + !WORD _B065-* +_B063 +; vmsrc/apple/sossysjit.pla: 1189: rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) +; vmsrc/apple/sossysjit.pla: 1190: if ^rld +; vmsrc/apple/sossysjit.pla: 1191: *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + codefix, deftbl) +; vmsrc/apple/sossysjit.pla: 1192: rld = rld + 4 +; vmsrc/apple/sossysjit.pla: 1193: fin + !BYTE $66,$1A ; LLW [26] + !BYTE $66,$1C ; LLW [28] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$28 ; LLW [40] + !BYTE $54 ; CALL _A018 +_F188 !WORD _A018 + !BYTE $76,$12 ; SLW [18] + !BYTE $76,$14 ; SLW [20] + !BYTE $6E,$28 ; DLW [40] + !BYTE $60 ; LB + !BYTE $4C ; BRFLS _B066 + !WORD _B066-* + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $3C,$10 ; ANDI 16 + !BYTE $4C ; BRFLS _B068 + !WORD _B068-* + !BYTE $66,$14 ; LLW [20] + !BYTE $62 ; LW + !BYTE $66,$2A ; LLW [42] + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$03 ; ADDI 3 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C025 +_F189 !WORD _C025 + !BYTE $82 ; ADD + !BYTE $50 ; BRNCH _B069 + !WORD _B069-* +_B068 + !BYTE $66,$12 ; LLW [18] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _A017 +_F190 !WORD _A017 +_B069 + !BYTE $66,$14 ; LLW [20] + !BYTE $72 ; SW + !BYTE $66,$28 ; LLW [40] + !BYTE $38,$04 ; ADDI 4 + !BYTE $76,$28 ; SLW [40] +_B066 +_B067 +; vmsrc/apple/sossysjit.pla: 1194: loop +_B065 + !BYTE $66,$28 ; LLW [40] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B063 + !WORD _B063-* +_B064 +; vmsrc/apple/sossysjit.pla: 1195: // +; vmsrc/apple/sossysjit.pla: 1196: // Run through the External/Entry Symbol Directory. +; vmsrc/apple/sossysjit.pla: 1197: // +; vmsrc/apple/sossysjit.pla: 1198: while ^esd + !BYTE $50 ; BRNCH _B072 + !WORD _B072-* +_B070 +; vmsrc/apple/sossysjit.pla: 1199: sym = esd +; vmsrc/apple/sossysjit.pla: 1200: esd = esd + dcitos(esd, @str) +; vmsrc/apple/sossysjit.pla: 1201: if ^esd & $08 +; vmsrc/apple/sossysjit.pla: 1202: // +; vmsrc/apple/sossysjit.pla: 1203: // EXPORT symbol - add it to the global symbol table. +; vmsrc/apple/sossysjit.pla: 1204: // +; vmsrc/apple/sossysjit.pla: 1205: addr = esd=>1 + modofst +; vmsrc/apple/sossysjit.pla: 1206: if uword_isge(addr, bytecode) +; vmsrc/apple/sossysjit.pla: 1207: // +; vmsrc/apple/sossysjit.pla: 1208: // Use the def directory address for bytecode. +; vmsrc/apple/sossysjit.pla: 1209: // +; vmsrc/apple/sossysjit.pla: 1210: addr = lookupdef(addr + codefix, deftbl) +; vmsrc/apple/sossysjit.pla: 1211: fin + !BYTE $66,$2A ; LLW [42] + !BYTE $76,$2C ; SLW [44] + !BYTE $66,$2A ; LLW [42] + !BYTE $34 ; DUP + !BYTE $28,$31 ; LLA [49] + !BYTE $54 ; CALL _A012 +_F191 !WORD _A012 + !BYTE $82 ; ADD + !BYTE $6E,$2A ; DLW [42] + !BYTE $60 ; LB + !BYTE $3C,$08 ; ANDI 8 + !BYTE $4C ; BRFLS _B073 + !WORD _B073-* + !BYTE $66,$2A ; LLW [42] + !BYTE $8C ; INCR + !BYTE $62 ; LW + !BYTE $B2,$1C ; ADDLW [28] + !BYTE $6E,$14 ; DLW [20] + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _A006 +_F192 !WORD _A006 + !BYTE $4C ; BRFLS _B075 + !WORD _B075-* + !BYTE $66,$14 ; LLW [20] + !BYTE $B2,$0A ; ADDLW [10] + !BYTE $66,$20 ; LLW [32] + !BYTE $54 ; CALL _A017 +_F193 !WORD _A017 + !BYTE $76,$14 ; SLW [20] +_B075 +_B076 +; vmsrc/apple/sossysjit.pla: 1212: addsym(sym, addr) +; vmsrc/apple/sossysjit.pla: 1213: fin + !BYTE $66,$2C ; LLW [44] + !BYTE $66,$14 ; LLW [20] + !BYTE $54 ; CALL _C022 +_F194 !WORD _C022 +_B073 +_B074 +; vmsrc/apple/sossysjit.pla: 1214: esd = esd + 3 +; vmsrc/apple/sossysjit.pla: 1215: loop + !BYTE $66,$2A ; LLW [42] + !BYTE $38,$03 ; ADDI 3 + !BYTE $76,$2A ; SLW [42] +_B072 + !BYTE $66,$2A ; LLW [42] + !BYTE $60 ; LB + !BYTE $4E ; BRTRU _B070 + !WORD _B070-* +_B071 +; vmsrc/apple/sossysjit.pla: 1216: if defext +; vmsrc/apple/sossysjit.pla: 1217: // +; vmsrc/apple/sossysjit.pla: 1218: // Copy bytecode to code segment. +; vmsrc/apple/sossysjit.pla: 1219: // +; vmsrc/apple/sossysjit.pla: 1220: memxcpy(codeseg, bytecode, modsize - (bytecode - modaddr)) +; vmsrc/apple/sossysjit.pla: 1221: fin + !BYTE $64,$2F ; LLB [47] + !BYTE $4C ; BRFLS _B077 + !WORD _B077-* + !BYTE $66,$24 ; LLW [36] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$06 ; LLW [6] + !BYTE $66,$08 ; LLW [8] + !BYTE $66,$18 ; LLW [24] + !BYTE $84 ; SUB + !BYTE $84 ; SUB + !BYTE $54 ; CALL _A004 +_F195 !WORD _A004 +_B077 +_B078 +; vmsrc/apple/sossysjit.pla: 1222: else + !BYTE $50 ; BRNCH _B032 + !WORD _B032-* +_B031 +; vmsrc/apple/sossysjit.pla: 1223: lerr = $46 +; vmsrc/apple/sossysjit.pla: 1224: fin + !BYTE $2A,$46 ; CB 70 + !BYTE $74,$2E ; SLB [46] +_B032 +; vmsrc/apple/sossysjit.pla: 1225: if lerr +; vmsrc/apple/sossysjit.pla: 1226: return -lerr + !BYTE $64,$2E ; LLB [46] + !BYTE $4C ; BRFLS _B079 + !WORD _B079-* + !BYTE $64,$2E ; LLB [46] + !BYTE $90 ; NEG + !BYTE $5A,$E2 ; LEAVE 226 +; vmsrc/apple/sossysjit.pla: 1227: fin +_B079 +_B080 +; vmsrc/apple/sossysjit.pla: 1228: // +; vmsrc/apple/sossysjit.pla: 1229: // Free up end-of-module main memory. +; vmsrc/apple/sossysjit.pla: 1230: // +; vmsrc/apple/sossysjit.pla: 1231: releaseheap(bytecode) +; vmsrc/apple/sossysjit.pla: 1232: // +; vmsrc/apple/sossysjit.pla: 1233: // Call init routine if it exists. +; vmsrc/apple/sossysjit.pla: 1234: // +; vmsrc/apple/sossysjit.pla: 1235: initcode = 0 +; vmsrc/apple/sossysjit.pla: 1236: if init +; vmsrc/apple/sossysjit.pla: 1237: initcode = adddef(deffirst, defext, init + defofst, @deflast)() +; vmsrc/apple/sossysjit.pla: 1238: if initcode < 0 +; vmsrc/apple/sossysjit.pla: 1239: perr = -initcode +; vmsrc/apple/sossysjit.pla: 1240: fin + !BYTE $66,$08 ; LLW [8] + !BYTE $54 ; CALL _C021 +_F196 !WORD _C021 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $76,$12 ; SLW [18] + !BYTE $66,$10 ; LLW [16] + !BYTE $4C ; BRFLS _B081 + !WORD _B081-* + !BYTE $66,$02 ; LLW [2] + !BYTE $64,$2F ; LLB [47] + !BYTE $66,$10 ; LLW [16] + !BYTE $B2,$0C ; ADDLW [12] + !BYTE $28,$22 ; LLA [34] + !BYTE $54 ; CALL _C026 +_F197 !WORD _C026 + !BYTE $56 ; ICAL + !BYTE $6E,$12 ; DLW [18] + !BYTE $00 ; CN 0 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B083 + !WORD _B083-* + !BYTE $66,$12 ; LLW [18] + !BYTE $90 ; NEG + !BYTE $78 ; SAB _D034+0 +_F198 !WORD _D034+0 +_B083 +_B084 +; vmsrc/apple/sossysjit.pla: 1241: fin +_B081 +_B082 +; vmsrc/apple/sossysjit.pla: 1242: return initcode + !BYTE $66,$12 ; LLW [18] + !BYTE $5A,$E2 ; LEAVE 226 +; vmsrc/apple/sossysjit.pla: 1243: end +; vmsrc/apple/sossysjit.pla: 1244: def execmod(modfile)#1 + ; modfile -> [0] +_P026 ; execmod(modfile)#1() +_C028 ; execmod() + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1245: byte moddci[17] + ; moddci -> [2] +; vmsrc/apple/sossysjit.pla: 1246: word saveheap, savesym, saveflags + ; saveheap -> [19] + ; savesym -> [21] + ; saveflags -> [23] +; vmsrc/apple/sossysjit.pla: 1247: +; vmsrc/apple/sossysjit.pla: 1248: perr = 1 + !BYTE $58,$19,$01 ; ENTER 25,1 +; vmsrc/apple/sossysjit.pla: 1249: if stodci(modfile, @moddci) +; vmsrc/apple/sossysjit.pla: 1250: saveheap = heap +; vmsrc/apple/sossysjit.pla: 1251: savesym = lastsym +; vmsrc/apple/sossysjit.pla: 1252: saveflags = systemflags +; vmsrc/apple/sossysjit.pla: 1253: if loadmod(@moddci) < modkeep +; vmsrc/apple/sossysjit.pla: 1254: lastsym = savesym +; vmsrc/apple/sossysjit.pla: 1255: heap = saveheap +; vmsrc/apple/sossysjit.pla: 1256: while modid + !BYTE $02 ; CN 1 + !BYTE $78 ; SAB _D034+0 +_F199 !WORD _D034+0 + !BYTE $66,$00 ; LLW [0] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _A013 +_F200 !WORD _A013 + !BYTE $4C ; BRFLS _B085 + !WORD _B085-* + !BYTE $6A ; LAW _D077+0 +_F201 !WORD _D077+0 + !BYTE $76,$13 ; SLW [19] + !BYTE $6A ; LAW _D082+0 +_F202 !WORD _D082+0 + !BYTE $76,$15 ; SLW [21] + !BYTE $6A ; LAW _D076+0 +_F203 !WORD _D076+0 + !BYTE $76,$17 ; SLW [23] + !BYTE $28,$02 ; LLA [2] + !BYTE $54 ; CALL _C027 +_F204 !WORD _C027 + !BYTE $2C,$00,$20 ; CW 8192 + !BYTE $46 ; ISLT + !BYTE $4C ; BRFLS _B087 + !WORD _B087-* + !BYTE $66,$15 ; LLW [21] + !BYTE $7A ; SAW _D082+0 +_F205 !WORD _D082+0 + !BYTE $66,$13 ; LLW [19] + !BYTE $7A ; SAW _D077+0 +_F206 !WORD _D077+0 + !BYTE $50 ; BRNCH _B091 + !WORD _B091-* +_B089 +; vmsrc/apple/sossysjit.pla: 1257: modid-- + !BYTE $68 ; LAB _D080+0 +_F207 !WORD _D080+0 + !BYTE $8E ; DECR +; vmsrc/apple/sossysjit.pla: 1258: seg_release(modseg[modid]) +; vmsrc/apple/sossysjit.pla: 1259: loop + !BYTE $78 ; SAB _D080+0 +_F208 !WORD _D080+0 + !BYTE $26 ; LA _D079+0 +_F209 !WORD _D079+0 + !BYTE $B4 ; ADDAB _D080+0 +_F210 !WORD _D080+0 + !BYTE $60 ; LB + !BYTE $54 ; CALL _C008 +_F211 !WORD _C008 + !BYTE $30 ; DROP +_B091 + !BYTE $68 ; LAB _D080+0 +_F212 !WORD _D080+0 + !BYTE $4E ; BRTRU _B089 + !WORD _B089-* +_B090 +; vmsrc/apple/sossysjit.pla: 1260: xpokeb(symtbl.0, lastsym, 0) +; vmsrc/apple/sossysjit.pla: 1261: systemflags = saveflags +; vmsrc/apple/sossysjit.pla: 1262: else + !BYTE $68 ; LAB _D081+0 +_F213 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F214 !WORD _D082+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F215 !WORD _A005 + !BYTE $66,$17 ; LLW [23] + !BYTE $7A ; SAW _D076+0 +_F216 !WORD _D076+0 + !BYTE $50 ; BRNCH _B088 + !WORD _B088-* +_B087 +; vmsrc/apple/sossysjit.pla: 1263: modid = 0 +; vmsrc/apple/sossysjit.pla: 1264: fin + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D080+0 +_F217 !WORD _D080+0 +_B088 +; vmsrc/apple/sossysjit.pla: 1265: fin +_B085 +_B086 +; vmsrc/apple/sossysjit.pla: 1266: return -perr + !BYTE $68 ; LAB _D034+0 +_F218 !WORD _D034+0 + !BYTE $90 ; NEG + !BYTE $5A,$19 ; LEAVE 25 +; vmsrc/apple/sossysjit.pla: 1267: end +; vmsrc/apple/sossysjit.pla: 1268: // +; vmsrc/apple/sossysjit.pla: 1269: // Init 2K symbol table. +; vmsrc/apple/sossysjit.pla: 1270: // +; vmsrc/apple/sossysjit.pla: 1271: drop, symtbl, drop = seg_find($00, $08, $11) +_INIT + JSR INTERP +; vmsrc/apple/sossysjit.pla: 1272: lastsym = symtbl & $FF00 +; vmsrc/apple/sossysjit.pla: 1273: xpokeb(symtbl.0, lastsym, 0) +; vmsrc/apple/sossysjit.pla: 1274: while *sysmodsym + !BYTE $00 ; CN 0 + !BYTE $10 ; CN 8 + !BYTE $2A,$11 ; CB 17 + !BYTE $54 ; CALL _C007 +_F219 !WORD _C007 + !BYTE $30 ; DROP + !BYTE $7A ; SAW _D081+0 +_F220 !WORD _D081+0 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D081+0 +_F221 !WORD _D081+0 + !BYTE $5E,$00 ; CFFB 65280 + !BYTE $94 ; AND + !BYTE $7A ; SAW _D082+0 +_F222 !WORD _D082+0 + !BYTE $68 ; LAB _D081+0 +_F223 !WORD _D081+0 + !BYTE $6A ; LAW _D082+0 +_F224 !WORD _D082+0 + !BYTE $00 ; CN 0 + !BYTE $54 ; CALL _A005 +_F225 !WORD _A005 + !BYTE $50 ; BRNCH _B094 + !WORD _B094-* +_B092 +; vmsrc/apple/sossysjit.pla: 1275: stodci(sysmodsym=>0, heap) +; vmsrc/apple/sossysjit.pla: 1276: addsym(heap, sysmodsym=>2) +; vmsrc/apple/sossysjit.pla: 1277: sysmodsym = sysmodsym + 4 +; vmsrc/apple/sossysjit.pla: 1278: loop + !BYTE $6A ; LAW _D075+0 +_F226 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $6A ; LAW _D077+0 +_F227 !WORD _D077+0 + !BYTE $54 ; CALL _A013 +_F228 !WORD _A013 + !BYTE $30 ; DROP + !BYTE $6A ; LAW _D077+0 +_F229 !WORD _D077+0 + !BYTE $6A ; LAW _D075+0 +_F230 !WORD _D075+0 + !BYTE $38,$02 ; ADDI 2 + !BYTE $62 ; LW + !BYTE $54 ; CALL _C022 +_F231 !WORD _C022 + !BYTE $6A ; LAW _D075+0 +_F232 !WORD _D075+0 + !BYTE $38,$04 ; ADDI 4 + !BYTE $7A ; SAW _D075+0 +_F233 !WORD _D075+0 +_B094 + !BYTE $6A ; LAW _D075+0 +_F234 !WORD _D075+0 + !BYTE $62 ; LW + !BYTE $4E ; BRTRU _B092 + !WORD _B092-* +_B093 +; vmsrc/apple/sossysjit.pla: 1279: // +; vmsrc/apple/sossysjit.pla: 1280: // Clear system path and command line +; vmsrc/apple/sossysjit.pla: 1281: // +; vmsrc/apple/sossysjit.pla: 1282: sysmods = 0 +; vmsrc/apple/sossysjit.pla: 1283: syspath = @sysmods +; vmsrc/apple/sossysjit.pla: 1284: cmdlnptr = @cmdln +; vmsrc/apple/sossysjit.pla: 1285: // +; vmsrc/apple/sossysjit.pla: 1286: // Print PLASMA version +; vmsrc/apple/sossysjit.pla: 1287: // +; vmsrc/apple/sossysjit.pla: 1288: init_cons +; vmsrc/apple/sossysjit.pla: 1289: prstr("PLASMA 2.0 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D074+0 +_F235 !WORD _D074+0 + !BYTE $26 ; LA _D074+0 +_F236 !WORD _D074+0 + !BYTE $7A ; SAW _D032+0 +_F237 !WORD _D032+0 + !BYTE $26 ; LA _D043+0 +_F238 !WORD _D043+0 + !BYTE $7A ; SAW _D033+0 +_F239 !WORD _D033+0 + !BYTE $54 ; CALL _C006 +_F240 !WORD _C006 + !BYTE $2E ; CS + !BYTE $10 + !BYTE $50,$4C,$41,$53,$4D,$41,$20,$32 + !BYTE $2E,$30,$20,$4A,$49,$54,$43,$0D + !BYTE $54 ; CALL _C012 +_F241 !WORD _C012 +; vmsrc/apple/sossysjit.pla: 1290: prstr("MEM:$"); prword(availheap); crout + !BYTE $2E ; CS + !BYTE $05 + !BYTE $4D,$45,$4D,$3A,$24 + !BYTE $54 ; CALL _C012 +_F242 !WORD _C012 +; vmsrc/apple/sossysjit.pla: 1291: // +; vmsrc/apple/sossysjit.pla: 1292: // Exec command line parser +; vmsrc/apple/sossysjit.pla: 1293: // +; vmsrc/apple/sossysjit.pla: 1294: loadmod(@soscmd) +; vmsrc/apple/sossysjit.pla: 1295: modid = 0 +; vmsrc/apple/sossysjit.pla: 1296: autorun = open("AUTORUN") + !BYTE $54 ; CALL _C017 +_F243 !WORD _C017 + !BYTE $54 ; CALL _C016 +_F244 !WORD _C016 + !BYTE $54 ; CALL _C010 +_F245 !WORD _C010 + !BYTE $26 ; LA _D044+0 +_F246 !WORD _D044+0 + !BYTE $54 ; CALL _C027 +_F247 !WORD _C027 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D080+0 +_F248 !WORD _D080+0 + !BYTE $2E ; CS + !BYTE $07 + !BYTE $41,$55,$54,$4F,$52,$55,$4E + !BYTE $54 ; CALL _C000 +_F249 !WORD _C000 + !BYTE $78 ; SAB _D078+0 +_F250 !WORD _D078+0 +; vmsrc/apple/sossysjit.pla: 1297: if autorun > 0 +; vmsrc/apple/sossysjit.pla: 1298: cmdln = read(autorun, @cmdln.1, 64) +; vmsrc/apple/sossysjit.pla: 1299: close(autorun) +; vmsrc/apple/sossysjit.pla: 1300: fin + !BYTE $68 ; LAB _D078+0 +_F251 !WORD _D078+0 + !BYTE $00 ; CN 0 + !BYTE $44 ; ISGT + !BYTE $4C ; BRFLS _B095 + !WORD _B095-* + !BYTE $68 ; LAB _D078+0 +_F252 !WORD _D078+0 + !BYTE $26 ; LA _D043+1 +_F253 !WORD _D043+1 + !BYTE $2A,$40 ; CB 64 + !BYTE $54 ; CALL _C002 +_F254 !WORD _C002 + !BYTE $78 ; SAB _D043+0 +_F255 !WORD _D043+0 + !BYTE $68 ; LAB _D078+0 +_F256 !WORD _D078+0 + !BYTE $54 ; CALL _C001 +_F257 !WORD _C001 + !BYTE $30 ; DROP +_B095 +_B096 +; vmsrc/apple/sossysjit.pla: 1301: // +; vmsrc/apple/sossysjit.pla: 1302: // Call cmd line parser +; vmsrc/apple/sossysjit.pla: 1303: // +; vmsrc/apple/sossysjit.pla: 1304: repeat +_B098 +; vmsrc/apple/sossysjit.pla: 1305: execmod((*cmdparser)()) +; vmsrc/apple/sossysjit.pla: 1306: write(refcons, @textmode, 3) +; vmsrc/apple/sossysjit.pla: 1307: cmdln = 0 +; vmsrc/apple/sossysjit.pla: 1308: until 0 + !BYTE $6A,$F0,$A0 ; LAW 41200 + !BYTE $56 ; ICAL + !BYTE $54 ; CALL _C028 +_F258 !WORD _C028 + !BYTE $30 ; DROP + !BYTE $68 ; LAB _D037+0 +_F259 !WORD _D037+0 + !BYTE $26 ; LA _D042+0 +_F260 !WORD _D042+0 + !BYTE $06 ; CN 3 + !BYTE $54 ; CALL _C003 +_F261 !WORD _C003 + !BYTE $30 ; DROP + !BYTE $00 ; CN 0 + !BYTE $78 ; SAB _D043+0 +_F262 !WORD _D043+0 +_B099 + !BYTE $50 ; BRNCH _B098 + !WORD _B098-* +_B097 +; vmsrc/apple/sossysjit.pla: 1309: done + !BYTE $00 ; CN 0 + !BYTE $5C ; RET +_SYSFLAGS = 0