From 82d0e74c1ab26376c9632e331faba1103d4b7a8a Mon Sep 17 00:00:00 2001 From: nathanriggs Date: Sat, 26 Jan 2019 21:02:17 -0500 Subject: [PATCH] 0.3.1 updates some minor bugfixes, directory shuffling, added demo and utility disks --- bin/d15_utilities.dsk | Bin 0 -> 143360 bytes ...k_A.dsk => d16_integrated_demo_disk_A.dsk} | Bin 143360 -> 143360 bytes bin/d1_stdio.dsk | Bin 143360 -> 143360 bytes bin/d20_minidisk_A.dsk | Bin 0 -> 143360 bytes bin/d2_common.dsk | Bin 143360 -> 143360 bytes bin/d3_arrays.dsk | Bin 143360 -> 143360 bytes bin/d4_math.dsk | Bin 143360 -> 143360 bytes bin/d5_strings.dsk | Bin 143360 -> 143360 bytes bin/d6_fileio.dsk | Bin 143360 -> 143360 bytes disks/disk5_strings/T.REQUIRED.LIB.MIN | 358 -- disks/disk6_fileio/T.REQUIRED.LIB.MIN | 358 -- .../disk15_utilities}/MAKEEXEC | 0 .../disk15_utilities}/MINIFY | 0 source/disk16_integrated_demos/MAKEMAZE | 2848 +++++++++++++ source/disk16_integrated_demos/MAKEMAZE.S | 3686 +++++++++++++++++ .../T.ADDIT16.SUB.MIN | 0 .../disk16_integrated_demos}/T.ADIM81.SUB.MIN | 0 .../disk16_integrated_demos}/T.ADIM82.SUB.MIN | 0 .../disk16_integrated_demos}/T.AGET81.SUB.MIN | 14 +- .../disk16_integrated_demos}/T.AGET82.SUB.MIN | 8 +- .../disk16_integrated_demos}/T.APUT81.SUB.MIN | 21 +- .../disk16_integrated_demos}/T.APUT82.SUB.MIN | 15 +- .../disk16_integrated_demos}/T.ARRAYS.HOOKS | 0 .../disk16_integrated_demos}/T.ARRAYS.MAC.MIN | 0 .../T.BINLOAD.SUB.MIN | 0 .../T.BINSAVE.SUB.MIN | 0 .../disk16_integrated_demos}/T.COMMON.HOOKS | 0 .../disk16_integrated_demos}/T.COMMON.MAC.MIN | 0 .../disk16_integrated_demos}/T.COMP16.SUB.MIN | 0 .../T.CURSORUDBF.SUB.MIN | 0 .../T.DELAYMS.SUB.MIN | 0 .../disk16_integrated_demos}/T.DISKOP.SUB.MIN | 0 .../disk16_integrated_demos}/T.DIVD16.SUB.MIN | 0 .../disk16_integrated_demos}/T.DIVD8.SUB.MIN | 0 .../disk16_integrated_demos}/T.DOSCMD.SUB.MIN | 0 .../disk16_integrated_demos}/T.DPRINT.SUB.MIN | 0 .../disk16_integrated_demos}/T.FILEIO.HOOKS | 0 .../disk16_integrated_demos}/T.FILEIO.MAC.MIN | 0 .../disk16_integrated_demos}/T.FINPUT.SUB.MIN | 0 .../disk16_integrated_demos}/T.FPRINT.SUB.MIN | 0 .../disk16_integrated_demos}/T.FPSTR.SUB.MIN | 0 .../disk16_integrated_demos}/T.GPBX.SUB.MIN | 0 source/disk16_integrated_demos/T.MAKEMAZE | 420 ++ .../disk16_integrated_demos}/T.MATH.HOOKS | 0 .../disk16_integrated_demos}/T.MATH.MAC.MIN | 0 .../T.MEMFILL.SUB.MIN | 0 .../T.MEMMOVE.SUB.MIN | 0 .../T.MEMSWAP.SUB.MIN | 0 .../disk16_integrated_demos}/T.MULT16.SUB.MIN | 0 .../disk16_integrated_demos}/T.MULT8.SUB.MIN | 0 .../T.NUM2STR.SUB.MIN | 0 .../disk16_integrated_demos}/T.PRNSTR.SUB.MIN | 0 .../disk16_integrated_demos}/T.RAND16.SUB.MIN | 0 .../disk16_integrated_demos}/T.RAND8.SUB.MIN | 0 .../disk16_integrated_demos}/T.RANDB.SUB.MIN | 0 .../T.REQUIRED.HOOKS.MIN | 0 .../T.REQUIRED.LIB.MIN | 10 + .../T.REQUIRED.MAC.MIN | 0 .../disk16_integrated_demos}/T.REQUIRED.VARS | 0 .../disk16_integrated_demos}/T.SINPUT.SUB.MIN | 0 .../disk16_integrated_demos}/T.STDIO.HOOKS | 0 .../disk16_integrated_demos}/T.STDIO.MAC.MIN | 0 .../T.STR2NUM.SUB.MIN | 0 .../disk16_integrated_demos}/T.STRCAT.SUB.MIN | 0 .../T.STRCOMP.SUB.MIN | 0 .../disk16_integrated_demos}/T.STRINGS.HOOKS | 0 .../T.STRINGS.MAC.MIN | 0 .../T.SUBCOPY.SUB.MIN | 0 .../disk16_integrated_demos}/T.SUBDEL.SUB.MIN | 0 .../disk16_integrated_demos}/T.SUBINS.SUB.MIN | 0 .../disk16_integrated_demos}/T.SUBPOS.SUB.MIN | 0 .../disk16_integrated_demos}/T.SUBT16.SUB.MIN | 0 .../disk16_integrated_demos}/T.TFILLA.SUB.MIN | 0 .../disk16_integrated_demos}/T.THLINE.SUB.MIN | 0 .../disk16_integrated_demos}/T.TVLINE.SUB.MIN | 0 .../disk16_integrated_demos}/T.TXTPUT.SUB.MIN | 0 .../disk16_integrated_demos}/T.XPRINT.SUB.MIN | 0 .../disk16_integrated_demos}/T.ZMLOAD.SUB.MIN | 0 .../disk16_integrated_demos}/T.ZMSAVE.SUB.MIN | 0 source/disk1_stdio/MINIFY | 30 + {disks => source}/disk1_stdio/STDIO.DEMO | 0 {disks => source}/disk1_stdio/STDIO.DEMO.S | 0 .../disk1_stdio/T.CURSORUDBF.SUB | 0 source/disk1_stdio/T.CURSORUDBF.SUB.MIN | 88 + {disks => source}/disk1_stdio/T.DPRINT.SUB | 0 source/disk1_stdio/T.DPRINT.SUB.MIN | 22 + {disks => source}/disk1_stdio/T.GPBX.SUB | 0 source/disk1_stdio/T.GPBX.SUB.MIN | 50 + .../disk1_stdio}/T.REQUIRED.HOOKS.MIN | 0 .../disk1_stdio/T.REQUIRED.LIB.MIN | 10 + .../disk1_stdio}/T.REQUIRED.MAC.MIN | 0 .../disk1_stdio}/T.REQUIRED.VARS | 0 {disks => source}/disk1_stdio/T.SINPUT.SUB | 0 source/disk1_stdio/T.SINPUT.SUB.MIN | 27 + {disks => source}/disk1_stdio/T.STDIO.DEMO | 0 source/disk1_stdio/T.STDIO.HOOKS | 53 + .../disk1_stdio/T.STDIO.HOOKS.MIN | 0 {disks => source}/disk1_stdio/T.STDIO.MAC | 0 source/disk1_stdio/T.STDIO.MAC.MIN | 120 + {disks => source}/disk1_stdio/T.TFILLA.SUB | 0 source/disk1_stdio/T.TFILLA.SUB.MIN | 90 + {disks => source}/disk1_stdio/T.THLINE.SUB | 0 source/disk1_stdio/T.THLINE.SUB.MIN | 66 + {disks => source}/disk1_stdio/T.TVLINE.SUB | 0 source/disk1_stdio/T.TVLINE.SUB.MIN | 66 + {disks => source}/disk1_stdio/T.TXTPUT.SUB | 0 source/disk1_stdio/T.TXTPUT.SUB.MIN | 46 + {disks => source}/disk1_stdio/T.XPRINT.SUB | 0 source/disk1_stdio/T.XPRINT.SUB.MIN | 25 + source/disk20_minidisk_A/T.ADDIT16.SUB.MIN | 31 + source/disk20_minidisk_A/T.ADIM81.SUB.MIN | 92 + source/disk20_minidisk_A/T.ADIM82.SUB.MIN | 133 + source/disk20_minidisk_A/T.AGET81.SUB.MIN | 96 + source/disk20_minidisk_A/T.AGET82.SUB.MIN | 153 + source/disk20_minidisk_A/T.APUT81.SUB.MIN | 103 + source/disk20_minidisk_A/T.APUT82.SUB.MIN | 158 + source/disk20_minidisk_A/T.ARRAYS.HOOKS | 9 + source/disk20_minidisk_A/T.ARRAYS.MAC.MIN | 76 + source/disk20_minidisk_A/T.BINLOAD.SUB.MIN | 69 + source/disk20_minidisk_A/T.BINSAVE.SUB.MIN | 69 + .../disk20_minidisk_A}/T.COMMON.DEMO.MIN | 0 source/disk20_minidisk_A/T.COMMON.HOOKS | 14 + source/disk20_minidisk_A/T.COMMON.MAC.MIN | 55 + source/disk20_minidisk_A/T.COMP16.SUB.MIN | 37 + source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN | 88 + source/disk20_minidisk_A/T.DELAYMS.SUB.MIN | 29 + source/disk20_minidisk_A/T.DISKOP.SUB.MIN | 12 + source/disk20_minidisk_A/T.DIVD16.SUB.MIN | 158 + source/disk20_minidisk_A/T.DIVD8.SUB.MIN | 33 + source/disk20_minidisk_A/T.DOSCMD.SUB.MIN | 31 + source/disk20_minidisk_A/T.DPRINT.SUB.MIN | 22 + source/disk20_minidisk_A/T.FILEIO.HOOKS | 56 + source/disk20_minidisk_A/T.FILEIO.MAC.MIN | 78 + source/disk20_minidisk_A/T.FINPUT.SUB.MIN | 31 + source/disk20_minidisk_A/T.FPRINT.SUB.MIN | 23 + source/disk20_minidisk_A/T.FPSTR.SUB.MIN | 25 + source/disk20_minidisk_A/T.GPBX.SUB.MIN | 50 + source/disk20_minidisk_A/T.MATH.HOOKS | 27 + source/disk20_minidisk_A/T.MATH.MAC.MIN | 78 + source/disk20_minidisk_A/T.MEMFILL.SUB.MIN | 43 + source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN | 101 + source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN | 86 + source/disk20_minidisk_A/T.MULT16.SUB.MIN | 59 + source/disk20_minidisk_A/T.MULT8.SUB.MIN | 41 + source/disk20_minidisk_A/T.NUM2STR.SUB.MIN | 97 + source/disk20_minidisk_A/T.PRNSTR.SUB.MIN | 31 + source/disk20_minidisk_A/T.RAND16.SUB.MIN | 34 + source/disk20_minidisk_A/T.RAND8.SUB.MIN | 17 + source/disk20_minidisk_A/T.RANDB.SUB.MIN | 107 + .../disk20_minidisk_A}/T.REQUIRED.HOOKS.MIN | 0 .../disk20_minidisk_A}/T.REQUIRED.LIB.MIN | 10 + .../disk20_minidisk_A}/T.REQUIRED.MAC.MIN | 0 .../disk20_minidisk_A}/T.REQUIRED.VARS | 0 source/disk20_minidisk_A/T.SINPUT.SUB.MIN | 27 + source/disk20_minidisk_A/T.STDIO.HOOKS | 53 + source/disk20_minidisk_A/T.STDIO.MAC | 461 +++ source/disk20_minidisk_A/T.STDIO.MAC.MIN | 120 + source/disk20_minidisk_A/T.STR2NUM.SUB.MIN | 118 + source/disk20_minidisk_A/T.STRCAT.SUB.MIN | 94 + source/disk20_minidisk_A/T.STRCOMP.SUB.MIN | 47 + source/disk20_minidisk_A/T.STRINGS.HOOKS | 9 + source/disk20_minidisk_A/T.STRINGS.MAC.MIN | 65 + source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN | 99 + source/disk20_minidisk_A/T.SUBDEL.SUB.MIN | 81 + source/disk20_minidisk_A/T.SUBINS.SUB.MIN | 120 + source/disk20_minidisk_A/T.SUBPOS.SUB.MIN | 78 + source/disk20_minidisk_A/T.SUBT16.SUB.MIN | 31 + source/disk20_minidisk_A/T.TFILLA.SUB.MIN | 90 + source/disk20_minidisk_A/T.THLINE.SUB.MIN | 66 + source/disk20_minidisk_A/T.TVLINE.SUB.MIN | 66 + source/disk20_minidisk_A/T.TXTPUT.SUB.MIN | 46 + source/disk20_minidisk_A/T.XPRINT.SUB.MIN | 25 + source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN | 70 + source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN | 71 + {disks => source}/disk2_common/COMMON.DEMO | 0 {disks => source}/disk2_common/COMMON.DEMO.S | 0 {disks => source}/disk2_common/MINIFY | 0 {disks => source}/disk2_common/T.COMMON.DEMO | 0 source/disk2_common/T.COMMON.DEMO.MIN | 82 + source/disk2_common/T.COMMON.HOOKS | 14 + .../disk2_common/T.COMMON.HOOKS.MIN | 0 {disks => source}/disk2_common/T.COMMON.MAC | 0 source/disk2_common/T.COMMON.MAC.MIN | 55 + {disks => source}/disk2_common/T.DELAYMS.SUB | 0 source/disk2_common/T.DELAYMS.SUB.MIN | 29 + {disks => source}/disk2_common/T.MEMFILL.SUB | 0 source/disk2_common/T.MEMFILL.SUB.MIN | 43 + {disks => source}/disk2_common/T.MEMMOVE.SUB | 0 source/disk2_common/T.MEMMOVE.SUB.MIN | 101 + {disks => source}/disk2_common/T.MEMSWAP.SUB | 0 source/disk2_common/T.MEMSWAP.SUB.MIN | 86 + .../disk2_common/T.REQUIRED.HOOKS | 0 .../disk2_common}/T.REQUIRED.HOOKS.MIN | 0 {disks => source}/disk2_common/T.REQUIRED.LIB | 14 + .../disk2_common/T.REQUIRED.LIB.MIN | 10 + {disks => source}/disk2_common/T.REQUIRED.MAC | 0 .../disk2_common}/T.REQUIRED.MAC.MIN | 0 .../disk2_common}/T.REQUIRED.VARS | 0 {disks => source}/disk2_common/T.ZMLOAD.SUB | 0 source/disk2_common/T.ZMLOAD.SUB.MIN | 70 + {disks => source}/disk2_common/T.ZMSAVE.SUB | 0 source/disk2_common/T.ZMSAVE.SUB.MIN | 71 + {disks => source}/disk3_arrays/ARRAYS.DEMO | 0 {disks => source}/disk3_arrays/ARRAYS.DEMO.S | 0 {disks => source}/disk3_arrays/MINIFY | 0 {disks => source}/disk3_arrays/T.ADIM81.SUB | 0 source/disk3_arrays/T.ADIM81.SUB.MIN | 92 + {disks => source}/disk3_arrays/T.ADIM82.SUB | 0 source/disk3_arrays/T.ADIM82.SUB.MIN | 133 + {disks => source}/disk3_arrays/T.AGET81.SUB | 15 +- source/disk3_arrays/T.AGET81.SUB.MIN | 96 + {disks => source}/disk3_arrays/T.AGET82.SUB | 9 +- source/disk3_arrays/T.AGET82.SUB.MIN | 153 + {disks => source}/disk3_arrays/T.APUT81.SUB | 21 +- source/disk3_arrays/T.APUT81.SUB.MIN | 103 + {disks => source}/disk3_arrays/T.APUT82.SUB | 15 +- source/disk3_arrays/T.APUT82.SUB.MIN | 158 + {disks => source}/disk3_arrays/T.ARRAYS.DEMO | 0 source/disk3_arrays/T.ARRAYS.HOOKS | 9 + .../disk3_arrays/T.ARRAYS.HOOKS.MIN | 0 {disks => source}/disk3_arrays/T.ARRAYS.MAC | 0 source/disk3_arrays/T.ARRAYS.MAC.MIN | 76 + .../disk3_arrays}/T.REQUIRED.HOOKS.MIN | 0 source/disk3_arrays/T.REQUIRED.LIB.MIN | 368 ++ .../disk3_arrays}/T.REQUIRED.MAC.MIN | 0 .../disk3_arrays}/T.REQUIRED.VARS | 0 {disks => source}/disk4_math/MATH.DEMO | 0 {disks => source}/disk4_math/MATH.DEMO.S | 0 {disks => source}/disk4_math/MINIFY | 0 {disks => source}/disk4_math/T.ADDIT16.SUB | 0 source/disk4_math/T.ADDIT16.SUB.MIN | 31 + {disks => source}/disk4_math/T.COMP16.SUB | 0 source/disk4_math/T.COMP16.SUB.MIN | 37 + {disks => source}/disk4_math/T.DIVD16.SUB | 0 source/disk4_math/T.DIVD16.SUB.MIN | 158 + {disks => source}/disk4_math/T.DIVD8.SUB | 0 source/disk4_math/T.DIVD8.SUB.MIN | 33 + {disks => source}/disk4_math/T.MATH.DEMO | 0 source/disk4_math/T.MATH.HOOKS | 27 + {disks => source}/disk4_math/T.MATH.MAC | 0 source/disk4_math/T.MATH.MAC.MIN | 78 + {disks => source}/disk4_math/T.MULT16.SUB | 0 source/disk4_math/T.MULT16.SUB.MIN | 59 + {disks => source}/disk4_math/T.MULT8.SUB | 0 source/disk4_math/T.MULT8.SUB.MIN | 41 + {disks => source}/disk4_math/T.RAND16.SUB | 0 source/disk4_math/T.RAND16.SUB.MIN | 34 + {disks => source}/disk4_math/T.RAND8.SUB | 0 source/disk4_math/T.RAND8.SUB.MIN | 17 + {disks => source}/disk4_math/T.RANDB.SUB | 0 source/disk4_math/T.RANDB.SUB.MIN | 107 + .../disk4_math}/T.REQUIRED.HOOKS.MIN | 0 source/disk4_math/T.REQUIRED.LIB.MIN | 368 ++ .../disk4_math}/T.REQUIRED.MAC.MIN | 0 .../disk4_math}/T.REQUIRED.VARS | 74 +- {disks => source}/disk4_math/T.SUBT16.SUB | 0 source/disk4_math/T.SUBT16.SUB.MIN | 31 + {disks => source}/disk5_strings/MINIFY | 0 {disks => source}/disk5_strings/STRINGS.DEMO | 0 .../disk5_strings/STRINGS.DEMO.S | 0 {disks => source}/disk5_strings/T.NUM2STR.SUB | 0 source/disk5_strings/T.NUM2STR.SUB.MIN | 97 + {disks => source}/disk5_strings/T.PRNSTR.SUB | 0 source/disk5_strings/T.PRNSTR.SUB.MIN | 31 + source/disk5_strings/T.REQUIRED.HOOKS.MIN | 10 + source/disk5_strings/T.REQUIRED.LIB.MIN | 368 ++ source/disk5_strings/T.REQUIRED.MAC.MIN | 94 + source/disk5_strings/T.REQUIRED.VARS | 72 + {disks => source}/disk5_strings/T.STR2NUM.SUB | 0 source/disk5_strings/T.STR2NUM.SUB.MIN | 118 + {disks => source}/disk5_strings/T.STRCAT.SUB | 0 source/disk5_strings/T.STRCAT.SUB.MIN | 94 + {disks => source}/disk5_strings/T.STRCOMP.SUB | 0 source/disk5_strings/T.STRCOMP.SUB.MIN | 47 + .../disk5_strings/T.STRINGS.DEMO | 0 source/disk5_strings/T.STRINGS.HOOKS | 9 + {disks => source}/disk5_strings/T.STRINGS.MAC | 0 source/disk5_strings/T.STRINGS.MAC.MIN | 65 + {disks => source}/disk5_strings/T.SUBCOPY.SUB | 0 source/disk5_strings/T.SUBCOPY.SUB.MIN | 99 + {disks => source}/disk5_strings/T.SUBDEL.SUB | 0 source/disk5_strings/T.SUBDEL.SUB.MIN | 81 + {disks => source}/disk5_strings/T.SUBINS.SUB | 0 source/disk5_strings/T.SUBINS.SUB.MIN | 120 + {disks => source}/disk5_strings/T.SUBPOS.SUB | 0 source/disk5_strings/T.SUBPOS.SUB.MIN | 78 + {disks => source}/disk6_fileio/FILEIO.DEMO | 0 {disks => source}/disk6_fileio/FILEIO.DEMO.S | 0 source/disk6_fileio/MAKEEXEC | 8 + {disks => source}/disk6_fileio/MINIFY | 0 {disks => source}/disk6_fileio/RUNDEMO.EXEC | 0 {disks => source}/disk6_fileio/T.BINLOAD.SUB | 0 source/disk6_fileio/T.BINLOAD.SUB.MIN | 69 + {disks => source}/disk6_fileio/T.BINSAVE.SUB | 0 source/disk6_fileio/T.BINSAVE.SUB.MIN | 69 + {disks => source}/disk6_fileio/T.DISKOP.SUB | 0 source/disk6_fileio/T.DISKOP.SUB.MIN | 12 + {disks => source}/disk6_fileio/T.DOSCMD.SUB | 0 source/disk6_fileio/T.DOSCMD.SUB.MIN | 31 + {disks => source}/disk6_fileio/T.FILEIO.DEMO | 0 source/disk6_fileio/T.FILEIO.HOOKS | 56 + {disks => source}/disk6_fileio/T.FILEIO.MAC | 0 source/disk6_fileio/T.FILEIO.MAC.MIN | 78 + {disks => source}/disk6_fileio/T.FINPUT.SUB | 0 source/disk6_fileio/T.FINPUT.SUB.MIN | 31 + {disks => source}/disk6_fileio/T.FPRINT.SUB | 0 source/disk6_fileio/T.FPRINT.SUB.MIN | 23 + {disks => source}/disk6_fileio/T.FPSTR.SUB | 0 source/disk6_fileio/T.FPSTR.SUB.MIN | 25 + source/disk6_fileio/T.REQUIRED.HOOKS.MIN | 10 + source/disk6_fileio/T.REQUIRED.LIB.MIN | 368 ++ source/disk6_fileio/T.REQUIRED.MAC.MIN | 94 + source/disk6_fileio/T.REQUIRED.VARS | 72 + {disks => source}/disk6_fileio/T.TEST | 0 {disks => source}/disk6_fileio/T.TEXTFILE | 0 {disks => source}/disk6_fileio/TEST | 0 {disks => source}/disk6_fileio/TEXT1 | 0 317 files changed, 17144 insertions(+), 833 deletions(-) create mode 100644 bin/d15_utilities.dsk rename bin/{d10_minidisk_A.dsk => d16_integrated_demo_disk_A.dsk} (56%) create mode 100644 bin/d20_minidisk_A.dsk delete mode 100644 disks/disk5_strings/T.REQUIRED.LIB.MIN delete mode 100644 disks/disk6_fileio/T.REQUIRED.LIB.MIN rename {disks/disk6_fileio => source/disk15_utilities}/MAKEEXEC (100%) rename {disks/disk1_stdio => source/disk15_utilities}/MINIFY (100%) create mode 100644 source/disk16_integrated_demos/MAKEMAZE create mode 100644 source/disk16_integrated_demos/MAKEMAZE.S rename {disks/disk4_math => source/disk16_integrated_demos}/T.ADDIT16.SUB.MIN (100%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.ADIM81.SUB.MIN (100%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.ADIM82.SUB.MIN (100%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.AGET81.SUB.MIN (85%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.AGET82.SUB.MIN (94%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.APUT81.SUB.MIN (81%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.APUT82.SUB.MIN (90%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.ARRAYS.HOOKS (100%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.ARRAYS.MAC.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.BINLOAD.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.BINSAVE.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.COMMON.HOOKS (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.COMMON.MAC.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.COMP16.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.CURSORUDBF.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.DELAYMS.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.DISKOP.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.DIVD16.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.DIVD8.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.DOSCMD.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.DPRINT.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.FILEIO.HOOKS (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.FILEIO.MAC.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.FINPUT.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.FPRINT.SUB.MIN (100%) rename {disks/disk6_fileio => source/disk16_integrated_demos}/T.FPSTR.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.GPBX.SUB.MIN (100%) create mode 100644 source/disk16_integrated_demos/T.MAKEMAZE rename {disks/disk4_math => source/disk16_integrated_demos}/T.MATH.HOOKS (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.MATH.MAC.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.MEMFILL.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.MEMMOVE.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.MEMSWAP.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.MULT16.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.MULT8.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.NUM2STR.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.PRNSTR.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.RAND16.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.RAND8.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.RANDB.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.REQUIRED.HOOKS.MIN (100%) rename {disks/disk3_arrays => source/disk16_integrated_demos}/T.REQUIRED.LIB.MIN (97%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.REQUIRED.VARS (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.SINPUT.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.STDIO.HOOKS (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.STDIO.MAC.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.STR2NUM.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.STRCAT.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.STRCOMP.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.STRINGS.HOOKS (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.STRINGS.MAC.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.SUBCOPY.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.SUBDEL.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.SUBINS.SUB.MIN (100%) rename {disks/disk5_strings => source/disk16_integrated_demos}/T.SUBPOS.SUB.MIN (100%) rename {disks/disk4_math => source/disk16_integrated_demos}/T.SUBT16.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.TFILLA.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.THLINE.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.TVLINE.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.TXTPUT.SUB.MIN (100%) rename {disks/disk1_stdio => source/disk16_integrated_demos}/T.XPRINT.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.ZMLOAD.SUB.MIN (100%) rename {disks/disk2_common => source/disk16_integrated_demos}/T.ZMSAVE.SUB.MIN (100%) create mode 100644 source/disk1_stdio/MINIFY rename {disks => source}/disk1_stdio/STDIO.DEMO (100%) rename {disks => source}/disk1_stdio/STDIO.DEMO.S (100%) rename {disks => source}/disk1_stdio/T.CURSORUDBF.SUB (100%) create mode 100644 source/disk1_stdio/T.CURSORUDBF.SUB.MIN rename {disks => source}/disk1_stdio/T.DPRINT.SUB (100%) create mode 100644 source/disk1_stdio/T.DPRINT.SUB.MIN rename {disks => source}/disk1_stdio/T.GPBX.SUB (100%) create mode 100644 source/disk1_stdio/T.GPBX.SUB.MIN rename {disks/disk2_common => source/disk1_stdio}/T.REQUIRED.HOOKS.MIN (100%) rename {disks => source}/disk1_stdio/T.REQUIRED.LIB.MIN (97%) rename {disks/disk2_common => source/disk1_stdio}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk3_arrays => source/disk1_stdio}/T.REQUIRED.VARS (100%) rename {disks => source}/disk1_stdio/T.SINPUT.SUB (100%) create mode 100644 source/disk1_stdio/T.SINPUT.SUB.MIN rename {disks => source}/disk1_stdio/T.STDIO.DEMO (100%) create mode 100644 source/disk1_stdio/T.STDIO.HOOKS rename {disks => source}/disk1_stdio/T.STDIO.HOOKS.MIN (100%) rename {disks => source}/disk1_stdio/T.STDIO.MAC (100%) create mode 100644 source/disk1_stdio/T.STDIO.MAC.MIN rename {disks => source}/disk1_stdio/T.TFILLA.SUB (100%) create mode 100644 source/disk1_stdio/T.TFILLA.SUB.MIN rename {disks => source}/disk1_stdio/T.THLINE.SUB (100%) create mode 100644 source/disk1_stdio/T.THLINE.SUB.MIN rename {disks => source}/disk1_stdio/T.TVLINE.SUB (100%) create mode 100644 source/disk1_stdio/T.TVLINE.SUB.MIN rename {disks => source}/disk1_stdio/T.TXTPUT.SUB (100%) create mode 100644 source/disk1_stdio/T.TXTPUT.SUB.MIN rename {disks => source}/disk1_stdio/T.XPRINT.SUB (100%) create mode 100644 source/disk1_stdio/T.XPRINT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ADDIT16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ADIM81.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ADIM82.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.AGET81.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.AGET82.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.APUT81.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.APUT82.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ARRAYS.HOOKS create mode 100644 source/disk20_minidisk_A/T.ARRAYS.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.BINLOAD.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.BINSAVE.SUB.MIN rename {disks/disk2_common => source/disk20_minidisk_A}/T.COMMON.DEMO.MIN (100%) create mode 100644 source/disk20_minidisk_A/T.COMMON.HOOKS create mode 100644 source/disk20_minidisk_A/T.COMMON.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.COMP16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DELAYMS.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DISKOP.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DIVD16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DIVD8.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DOSCMD.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.DPRINT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.FILEIO.HOOKS create mode 100644 source/disk20_minidisk_A/T.FILEIO.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.FINPUT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.FPRINT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.FPSTR.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.GPBX.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.MATH.HOOKS create mode 100644 source/disk20_minidisk_A/T.MATH.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.MEMFILL.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.MULT16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.MULT8.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.NUM2STR.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.PRNSTR.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.RAND16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.RAND8.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.RANDB.SUB.MIN rename {disks/disk3_arrays => source/disk20_minidisk_A}/T.REQUIRED.HOOKS.MIN (100%) rename {disks/disk4_math => source/disk20_minidisk_A}/T.REQUIRED.LIB.MIN (97%) rename {disks/disk3_arrays => source/disk20_minidisk_A}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk4_math => source/disk20_minidisk_A}/T.REQUIRED.VARS (100%) create mode 100644 source/disk20_minidisk_A/T.SINPUT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.STDIO.HOOKS create mode 100644 source/disk20_minidisk_A/T.STDIO.MAC create mode 100644 source/disk20_minidisk_A/T.STDIO.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.STR2NUM.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.STRCAT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.STRCOMP.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.STRINGS.HOOKS create mode 100644 source/disk20_minidisk_A/T.STRINGS.MAC.MIN create mode 100644 source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.SUBDEL.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.SUBINS.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.SUBPOS.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.SUBT16.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.TFILLA.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.THLINE.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.TVLINE.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.TXTPUT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.XPRINT.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN create mode 100644 source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN rename {disks => source}/disk2_common/COMMON.DEMO (100%) rename {disks => source}/disk2_common/COMMON.DEMO.S (100%) rename {disks => source}/disk2_common/MINIFY (100%) rename {disks => source}/disk2_common/T.COMMON.DEMO (100%) create mode 100644 source/disk2_common/T.COMMON.DEMO.MIN create mode 100644 source/disk2_common/T.COMMON.HOOKS rename {disks => source}/disk2_common/T.COMMON.HOOKS.MIN (100%) rename {disks => source}/disk2_common/T.COMMON.MAC (100%) create mode 100644 source/disk2_common/T.COMMON.MAC.MIN rename {disks => source}/disk2_common/T.DELAYMS.SUB (100%) create mode 100644 source/disk2_common/T.DELAYMS.SUB.MIN rename {disks => source}/disk2_common/T.MEMFILL.SUB (100%) create mode 100644 source/disk2_common/T.MEMFILL.SUB.MIN rename {disks => source}/disk2_common/T.MEMMOVE.SUB (100%) create mode 100644 source/disk2_common/T.MEMMOVE.SUB.MIN rename {disks => source}/disk2_common/T.MEMSWAP.SUB (100%) create mode 100644 source/disk2_common/T.MEMSWAP.SUB.MIN rename {disks => source}/disk2_common/T.REQUIRED.HOOKS (100%) rename {disks/disk4_math => source/disk2_common}/T.REQUIRED.HOOKS.MIN (100%) rename {disks => source}/disk2_common/T.REQUIRED.LIB (97%) rename {disks => source}/disk2_common/T.REQUIRED.LIB.MIN (97%) rename {disks => source}/disk2_common/T.REQUIRED.MAC (100%) rename {disks/disk4_math => source/disk2_common}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk5_strings => source/disk2_common}/T.REQUIRED.VARS (100%) rename {disks => source}/disk2_common/T.ZMLOAD.SUB (100%) create mode 100644 source/disk2_common/T.ZMLOAD.SUB.MIN rename {disks => source}/disk2_common/T.ZMSAVE.SUB (100%) create mode 100644 source/disk2_common/T.ZMSAVE.SUB.MIN rename {disks => source}/disk3_arrays/ARRAYS.DEMO (100%) rename {disks => source}/disk3_arrays/ARRAYS.DEMO.S (100%) rename {disks => source}/disk3_arrays/MINIFY (100%) rename {disks => source}/disk3_arrays/T.ADIM81.SUB (100%) create mode 100644 source/disk3_arrays/T.ADIM81.SUB.MIN rename {disks => source}/disk3_arrays/T.ADIM82.SUB (100%) create mode 100644 source/disk3_arrays/T.ADIM82.SUB.MIN rename {disks => source}/disk3_arrays/T.AGET81.SUB (92%) create mode 100644 source/disk3_arrays/T.AGET81.SUB.MIN rename {disks => source}/disk3_arrays/T.AGET82.SUB (96%) create mode 100644 source/disk3_arrays/T.AGET82.SUB.MIN rename {disks => source}/disk3_arrays/T.APUT81.SUB (90%) create mode 100644 source/disk3_arrays/T.APUT81.SUB.MIN rename {disks => source}/disk3_arrays/T.APUT82.SUB (94%) create mode 100644 source/disk3_arrays/T.APUT82.SUB.MIN rename {disks => source}/disk3_arrays/T.ARRAYS.DEMO (100%) create mode 100644 source/disk3_arrays/T.ARRAYS.HOOKS rename {disks => source}/disk3_arrays/T.ARRAYS.HOOKS.MIN (100%) rename {disks => source}/disk3_arrays/T.ARRAYS.MAC (100%) create mode 100644 source/disk3_arrays/T.ARRAYS.MAC.MIN rename {disks/disk5_strings => source/disk3_arrays}/T.REQUIRED.HOOKS.MIN (100%) create mode 100644 source/disk3_arrays/T.REQUIRED.LIB.MIN rename {disks/disk5_strings => source/disk3_arrays}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk6_fileio => source/disk3_arrays}/T.REQUIRED.VARS (100%) rename {disks => source}/disk4_math/MATH.DEMO (100%) rename {disks => source}/disk4_math/MATH.DEMO.S (100%) rename {disks => source}/disk4_math/MINIFY (100%) rename {disks => source}/disk4_math/T.ADDIT16.SUB (100%) create mode 100644 source/disk4_math/T.ADDIT16.SUB.MIN rename {disks => source}/disk4_math/T.COMP16.SUB (100%) create mode 100644 source/disk4_math/T.COMP16.SUB.MIN rename {disks => source}/disk4_math/T.DIVD16.SUB (100%) create mode 100644 source/disk4_math/T.DIVD16.SUB.MIN rename {disks => source}/disk4_math/T.DIVD8.SUB (100%) create mode 100644 source/disk4_math/T.DIVD8.SUB.MIN rename {disks => source}/disk4_math/T.MATH.DEMO (100%) create mode 100644 source/disk4_math/T.MATH.HOOKS rename {disks => source}/disk4_math/T.MATH.MAC (100%) create mode 100644 source/disk4_math/T.MATH.MAC.MIN rename {disks => source}/disk4_math/T.MULT16.SUB (100%) create mode 100644 source/disk4_math/T.MULT16.SUB.MIN rename {disks => source}/disk4_math/T.MULT8.SUB (100%) create mode 100644 source/disk4_math/T.MULT8.SUB.MIN rename {disks => source}/disk4_math/T.RAND16.SUB (100%) create mode 100644 source/disk4_math/T.RAND16.SUB.MIN rename {disks => source}/disk4_math/T.RAND8.SUB (100%) create mode 100644 source/disk4_math/T.RAND8.SUB.MIN rename {disks => source}/disk4_math/T.RANDB.SUB (100%) create mode 100644 source/disk4_math/T.RANDB.SUB.MIN rename {disks/disk6_fileio => source/disk4_math}/T.REQUIRED.HOOKS.MIN (100%) create mode 100644 source/disk4_math/T.REQUIRED.LIB.MIN rename {disks/disk6_fileio => source/disk4_math}/T.REQUIRED.MAC.MIN (100%) rename {disks/disk1_stdio => source/disk4_math}/T.REQUIRED.VARS (73%) rename {disks => source}/disk4_math/T.SUBT16.SUB (100%) create mode 100644 source/disk4_math/T.SUBT16.SUB.MIN rename {disks => source}/disk5_strings/MINIFY (100%) rename {disks => source}/disk5_strings/STRINGS.DEMO (100%) rename {disks => source}/disk5_strings/STRINGS.DEMO.S (100%) rename {disks => source}/disk5_strings/T.NUM2STR.SUB (100%) create mode 100644 source/disk5_strings/T.NUM2STR.SUB.MIN rename {disks => source}/disk5_strings/T.PRNSTR.SUB (100%) create mode 100644 source/disk5_strings/T.PRNSTR.SUB.MIN create mode 100644 source/disk5_strings/T.REQUIRED.HOOKS.MIN create mode 100644 source/disk5_strings/T.REQUIRED.LIB.MIN create mode 100644 source/disk5_strings/T.REQUIRED.MAC.MIN create mode 100644 source/disk5_strings/T.REQUIRED.VARS rename {disks => source}/disk5_strings/T.STR2NUM.SUB (100%) create mode 100644 source/disk5_strings/T.STR2NUM.SUB.MIN rename {disks => source}/disk5_strings/T.STRCAT.SUB (100%) create mode 100644 source/disk5_strings/T.STRCAT.SUB.MIN rename {disks => source}/disk5_strings/T.STRCOMP.SUB (100%) create mode 100644 source/disk5_strings/T.STRCOMP.SUB.MIN rename {disks => source}/disk5_strings/T.STRINGS.DEMO (100%) create mode 100644 source/disk5_strings/T.STRINGS.HOOKS rename {disks => source}/disk5_strings/T.STRINGS.MAC (100%) create mode 100644 source/disk5_strings/T.STRINGS.MAC.MIN rename {disks => source}/disk5_strings/T.SUBCOPY.SUB (100%) create mode 100644 source/disk5_strings/T.SUBCOPY.SUB.MIN rename {disks => source}/disk5_strings/T.SUBDEL.SUB (100%) create mode 100644 source/disk5_strings/T.SUBDEL.SUB.MIN rename {disks => source}/disk5_strings/T.SUBINS.SUB (100%) create mode 100644 source/disk5_strings/T.SUBINS.SUB.MIN rename {disks => source}/disk5_strings/T.SUBPOS.SUB (100%) create mode 100644 source/disk5_strings/T.SUBPOS.SUB.MIN rename {disks => source}/disk6_fileio/FILEIO.DEMO (100%) rename {disks => source}/disk6_fileio/FILEIO.DEMO.S (100%) create mode 100644 source/disk6_fileio/MAKEEXEC rename {disks => source}/disk6_fileio/MINIFY (100%) rename {disks => source}/disk6_fileio/RUNDEMO.EXEC (100%) rename {disks => source}/disk6_fileio/T.BINLOAD.SUB (100%) create mode 100644 source/disk6_fileio/T.BINLOAD.SUB.MIN rename {disks => source}/disk6_fileio/T.BINSAVE.SUB (100%) create mode 100644 source/disk6_fileio/T.BINSAVE.SUB.MIN rename {disks => source}/disk6_fileio/T.DISKOP.SUB (100%) create mode 100644 source/disk6_fileio/T.DISKOP.SUB.MIN rename {disks => source}/disk6_fileio/T.DOSCMD.SUB (100%) create mode 100644 source/disk6_fileio/T.DOSCMD.SUB.MIN rename {disks => source}/disk6_fileio/T.FILEIO.DEMO (100%) create mode 100644 source/disk6_fileio/T.FILEIO.HOOKS rename {disks => source}/disk6_fileio/T.FILEIO.MAC (100%) create mode 100644 source/disk6_fileio/T.FILEIO.MAC.MIN rename {disks => source}/disk6_fileio/T.FINPUT.SUB (100%) create mode 100644 source/disk6_fileio/T.FINPUT.SUB.MIN rename {disks => source}/disk6_fileio/T.FPRINT.SUB (100%) create mode 100644 source/disk6_fileio/T.FPRINT.SUB.MIN rename {disks => source}/disk6_fileio/T.FPSTR.SUB (100%) create mode 100644 source/disk6_fileio/T.FPSTR.SUB.MIN create mode 100644 source/disk6_fileio/T.REQUIRED.HOOKS.MIN create mode 100644 source/disk6_fileio/T.REQUIRED.LIB.MIN create mode 100644 source/disk6_fileio/T.REQUIRED.MAC.MIN create mode 100644 source/disk6_fileio/T.REQUIRED.VARS rename {disks => source}/disk6_fileio/T.TEST (100%) rename {disks => source}/disk6_fileio/T.TEXTFILE (100%) rename {disks => source}/disk6_fileio/TEST (100%) rename {disks => source}/disk6_fileio/TEXT1 (100%) diff --git a/bin/d15_utilities.dsk b/bin/d15_utilities.dsk new file mode 100644 index 0000000000000000000000000000000000000000..fded5e948fc5f23a53eb442631a06405a17855ba GIT binary patch literal 143360 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 delta 11115 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 z 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 F{{uNF&!_+Z literal 0 HcmV?d00001 diff --git a/bin/d2_common.dsk b/bin/d2_common.dsk index 27663acb9a3000e5b714cf8137c3ee59b206fc5a..b4c9e030cfba8e24f78fb192afa562bb0d24fab2 100644 GIT binary patch delta 2940 zcmb_eU2GIp6rOYD&d<)y&a`E=OWW1@BfyZf!Ai^(CN(Rz&Q^F2;x!Wl@Mq3}Lr==BC%VOz&T z>n`TA>2IUy$GNyQpj+#(!rr)^$nz7}hu2rHoDa^j zzos(RE?-?(*%w`G_JnhZHJz--D7_xX)hxdabVCC=^m?Ng9n+{5$4kj3STkNCxe`rm zHPDDZx=jdf8It6a$`Go0Gto$ZsKiec;v+JVh)4uN2v3jz;dp^3JkKK!Jck+vP({D} zMD;~B0&2y0dP&vYKdIT2J{ioMqh;fFrJO#UGdjoE=YmaQEdq03s%PiUsL)$5d z_Gn4C=N2^E$I@-B!{zqg7pexUxBlkucwM6J#<6)xC^ImmDwe2;0Z|qGq9Xc4S(HRk z6htEOB8nh#0xzI___2I)570^pH_>xv$}{ocb8TX3!9fzN0Ps)1H-D%(q&!JMP1N| z&g-ay&S|`c8faWV4`_ivK=r6G@YmW(i~?;ggH>9XD_rI@#~u8W?kt0+W3w$f$K7Tx z2d4`C9B`a8!*Mh0zMV>!!Dbc13Jui4ix}1E{#uB^4Bb}?CMfhoE$p`<3OCu8&whVx zJfF?<<;E}eT^_&UEV?RE@d&&GSRF|1H{nRx1L~$%1h`D4>N8L!azQ<)1!?(bFyTH2 z_+KeLX<%El>-^1OCQRQjA@=mM>&v3><_K*!Fl6U?*4Z1YA0G)ac2pXELos}YY)FP^ z2nI2D0}Wu{{p_}a*3mQgz=KvMPlLKx{~t}Sb{BK5;12iJtCDhc#~n(LaD+!yrMnom zl}gALl0#BR3<)6;;zJmM5LacF|C4pwfxlnTK3v6;#icreDdvMSOdIBma8;2J-d$dI zoU8S2&6{M^ywN=c!U&=oplUCywXJO#w+}?x*?`+Tr?pB=z&yOz7F%mZS=)k`Cg!T6 z@SvS>+%a#NZ_>_2FDh8(N3^pEcbsg*&V$Tkr>3&`JbRuw6P-x^kd3k-)0uqqyRW0( zDIxk*I+ydTIG4HMbe${Ewx{sT=}&LW*$s;m&iEA;daN$h%`DzSWg_oPP374<1$U<5 zCOqs}@nX1#!My-LKQ6;qDi*|BKKfcORCu}$D{*m{BDowa)aK;5l4)N~apf4e{2YOUORUKsybMJgb zRTC?#Vtfo^5aTS}(yV}`T7FBk1dCYocrU!oX6Kz8UF=S CFPV}6 delta 2823 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 VrLnUd$mLVDa|XEBIZG7I`XBoQUIYLD delta 5399 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 Fuo2+qJ;ne4 diff --git a/bin/d5_strings.dsk b/bin/d5_strings.dsk index e3000e1f8515720bfde6d17d830e4c767d0d044d..fd3418befe0e0525066f5b7d8bbb4e8fb026a64f 100644 GIT binary patch delta 369 zcmZ{c%}N4M9L4W{K6Jd-0c)WP$x!jDMOnKRAtAK3dWIe$qMfaRViqEJsnunKp~%2o zs40U?jf==kripOXJU|c7s%ea9*IE6}Ih<2=q_QKiGi@J0J@>Wa5acDyVZbO5s2(Lh z=t&9^LeCo7bmJ55D^7&!X((2oufsH)g6-A!i8Z#F%G5^J?3xPu^>^0Lcw~m%W2%># zuTK*;JL%V3bT0)dRl`)zK(Uqvo$6T+GBe0|kOjS#gTu{{Ic4>x!bYaSF1)E>T9=Kf z!d`6S=SpD@W6%CqU)|7y9BgSzAgZ?!Z3UoJ4vGm`lm(fWIT>U`B;qGNA`*e{gd;!@ z7O_x`N37Ocew_=rbS(rKp@0xnjAYpTLVxlP5E{4$6`W2j1bqx{XD14$z+s;5Mj_r_ XfMwuhAI-;L5$2CeG3bJlw%YLk{4HnF9N;K3pV@gNO?KP?IgoLF-_wD!-&Bu$e@W2H2UAc7Y`@EX5deTSL%-Y_t4LUk!rm-LvV z=U0~W@@kdovv%gHNm5OJUwNBfEwb+I5pyzJDi>KcI>2&2y4c+hcDDOaO2k`9UBe_^ zv#q0@%s1M@QkPHA^>0u}zkq9$o`avfH5{bh!?034iZ)U|VNzSi7>#XUf1Xh3({PjfIbU2nV_~-o4l)98YFDv910s4`DqlX5;pI*M zM&ey38E4_7-WS*vS6rKGWSnctmt0n=OJy?7b9qNYH=UZnvKUT=lVl8WFYpIf=+P`5 zi~N^)GKTqqJhx1#C@w{U2k71qRHi;SLh>(sj|62_x?!gIIh>}ONyN#!4)M))|4EY# zbXxY7lL6A4CYzwja@7DB8sAiok_lVQLeXaZ@B=qvE4x zF?EF^H5ZnkWmN)Q2@y#n)oC~=3=1Z zbY03u)FheHF|lenJ-rHX5;wQ9FGFYGQiB?m7HhFQ{o}Vz*M6k7+o1;6*tkEWKS!?1 zCfPQZh*i%OYZkE@xniBKcCOg4itWAi9-Gi|HBWoYre{2FGv~ZA$z3Y|!UV6n4LclxPSR8ms4HNMnV6w>DWKbDE;^boD)~#_U3H%BV z3+60L4g_jqQKrH*0TF1R$Vh>~$%Ox)9C7nAJm2B@JkRjWHX_+Z#M@Vy*)1ALpgg%H7{xk$TYx0_9K$p{hEL0*m@&y462Fs(I^v zb!V-V_bx9g2X(p_M=$APc%{;BYt&ajBIf-JtRKPG>am~yl2@;XI@GkCq7ReEQDO;C z>E&lkP_hR}nj?H%v~$D>y=v2bR*W08P=NE*Ilqn;Z;aAkp}VFuWJu}~Qe%<{#u;N# z*1}9?un^N#yuDuh6JGSpvbhRNe$3kZ$Jxa5L!&Ulo!@Cdhfn47^-t#q62 zhDA?oJnql}V$J*ck7grCSJN8hcQ$$$Sb3!r-!agPY4wfWgX6Qx@9M^G<N`9O16 opai|{9r=`X(ME-bxI&oTJ8-SI=7fSZNf%wYZ3pFTM<0&g0Z;spO8@`> diff --git a/disks/disk5_strings/T.REQUIRED.LIB.MIN b/disks/disk5_strings/T.REQUIRED.LIB.MIN deleted file mode 100644 index 1267342..0000000 --- a/disks/disk5_strings/T.REQUIRED.LIB.MIN +++ /dev/null @@ -1,358 +0,0 @@ -__GETRET - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA RETURN,Y - STA (ADDR1),Y - CPY RETLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__SETPARM - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA (ADDR1),Y - STA PARAM,Y - CPY PARLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__DUMP - PLA - STA :RET - PLA - STA :RET+1 - PLA - STA :LENGTH - PLA - STA ADDR3 - PLA - STA ADDR3+1 - LDA #$8D - JSR $FDF0 - LDA ADDR3+1 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3+1 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA #186 ; : - JSR $FDF0 - LDA #160 ; SPC - JSR $FDF0 - LDY #0 -:LP - LDA (ADDR3),Y - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA (ADDR3),Y - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - LDA #160 - JSR $FDF0 - INY - CPY :LENGTH - BNE :LP - LDA :RET+1 - PHA - LDA :RET - PHA - RTS -:RET DS 2 -:RIGHT DS 1 -:LEFT DS 1 -:LENGTH DS 1 -__P - PLA - STA ADDR1 - PLA - STA ADDR1+1 - LDY #1 -:LP LDA (ADDR1),Y - BEQ :DONE - JSR $FDF0 - INY - BNE :LP -:DONE CLC - TYA - ADC ADDR1 - STA ADDR1 - LDA ADDR1+1 - ADC #0 - PHA - LDA ADDR1 - PHA - RTS -__W - JSR $FD0C - RTS -__RSAV - STA ERRA - STX ERRX - STY ERRY -:C BCC :C0 - BCS :C1 -:Z BEQ :Z1 - BNE :Z0 -:N BMI :N1 - BPL :N0 -:O BVC :O0 - BVS :O1 - JMP :EXIT -:C0 LDA #0 - STA ERRCARRY - JMP :Z -:C1 LDA #1 - STA ERRCARRY - JMP :Z -:Z1 LDA #1 - STA ERRZERO - JMP :N -:Z0 LDA #0 - STA ERRZERO - JMP :N -:N1 LDA #1 - STA ERRNEG - JMP :O -:N0 LDA #0 - STA ERRNEG - JMP :O -:O0 LDA #0 - STA ERROVF - JMP :EXIT -:O1 LDA #1 - STA ERROVF -:EXIT - RTS -__RDMP - _PRNT " ",8D8D - _PRNT "REGISTRY DUMP",8D - _PRNT "=============",8D - _PRNT "A: " - LDA ERRA - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRA - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "X: " - LDA ERRX - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRX - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "Y: " - LDA ERRY - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRY - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D8D - _PRNT "STATUS FLAGS",8D - _PRNT "============",8D8D - LDA #0 - CMP ERRCARRY - BEQ :CARCLR - _PRNT "CARRY: SET",8D - JMP :TESTN -:CARCLR _PRNT "CARRY: CLEAR",8D -:TESTN LDA #0 - CMP ERRNEG - BEQ :NEGCLR - _PRNT "NEGATIVE: SET",8D - JMP :TESTZ -:NEGCLR _PRNT "NEGATIVE: CLEAR",8D -:TESTZ LDA #0 - CMP ERRZERO - BEQ :ZCLR - _PRNT "ZERO: SET",8D - JMP :TESTO -:ZCLR _PRNT "ZERO: CLEAR",8D -:TESTO - LDA #0 - CMP ERROVF - BEQ :OCLR - _PRNT "OVERFLOW: SET",8D - JMP :FIN -:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D -:FIN - RTS -:LEFT DS 1 -:RIGHT DS 1 -HEXTAB ASC "0123456789ABCDEF" -__ERR - JSR __RSAV - PLA - STA RETADR - PLA - STA RETADR+1 - PLA - STA :DUMPLEN ; LENGTH OF DUMP - PLA - STA :DUMP ; DUMP ADDRESS LO - PLA - STA :DUMP+1 ; DUMP HI - PLA - STA :DMPMSG - PLA - STA :DMPMSG+1 - PLA - STA :MESG ; ERROR MESSAGE ADDR LO - PLA - STA :MESG+1 ; HI - PLA - STA :SRID ; SUBROUTINE ID ADDR LO - PLA - STA :SRID+1 ; SUB ID HI - _PRNT " ",87878787878D8D - _PRNT "ERROR!",8D8D - _PRNT "SUBROUTINE: " - LDY #0 - LDA :SRID - STA ADDR1 - LDA :SRID+1 - STA ADDR1+1 -:LP1 - LDA (ADDR1),Y - BEQ :LPX1 - JSR $FDF0 - INY - BNE :LP1 -:LPX1 - _PRNT " ",8D - _PRNT "MESSAGE: " - LDY #0 - LDA :MESG - STA ADDR1 - LDA :MESG+1 - STA ADDR1+1 -:LP2 - LDA (ADDR1),Y - BEQ :LPX2 - JSR $FDF0 - INY - BNE :LP2 -:LPX2 - _PRNT " ",8D8D - _WAIT - LDY #0 - LDA :DMPMSG - STA ADDR1 - LDA :DMPMSG+1 - STA ADDR1+1 -:LP3 - LDA (ADDR1),Y - BEQ :LPX3 - JSR $FDF0 - INY - BNE :LP3 -:LPX3 - _PRNT " ",8D - LDA :DUMP+1 - PHA - LDA :DUMP - PHA - LDA :DUMPLEN - PHA - JSR __DUMP - _WAIT - LDA RETADR+1 - PHA - LDA RETADR - PHA - _PRNT " ",8D8D - _WAIT - _RDUMP - _WAIT - LDA ERRSTOP - CMP #1 - BEQ :KILL - RTS -:KILL - JMP $3D0 -:DUMPLEN DS 1 -:DUMP DS 2 -:DMPMSG DS 2 -:MESG DS 2 -:SRID DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.LIB.MIN b/disks/disk6_fileio/T.REQUIRED.LIB.MIN deleted file mode 100644 index 1267342..0000000 --- a/disks/disk6_fileio/T.REQUIRED.LIB.MIN +++ /dev/null @@ -1,358 +0,0 @@ -__GETRET - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA RETURN,Y - STA (ADDR1),Y - CPY RETLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__SETPARM - LDY #255 - PLA - STA ADDR1 - PLA - STA ADDR1+1 -:LP - INY - LDA (ADDR1),Y - STA PARAM,Y - CPY PARLEN - BNE :LP - LDA ADDR1+1 - PHA - LDA ADDR1 - PHA - RTS -__DUMP - PLA - STA :RET - PLA - STA :RET+1 - PLA - STA :LENGTH - PLA - STA ADDR3 - PLA - STA ADDR3+1 - LDA #$8D - JSR $FDF0 - LDA ADDR3+1 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3+1 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$F0 - LSR - LSR - LSR - LSR - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA ADDR3 - AND #$0F - TAX - LDA HEXTAB,X - JSR $FDF0 - LDA #186 ; : - JSR $FDF0 - LDA #160 ; SPC - JSR $FDF0 - LDY #0 -:LP - LDA (ADDR3),Y - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA (ADDR3),Y - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - LDA #160 - JSR $FDF0 - INY - CPY :LENGTH - BNE :LP - LDA :RET+1 - PHA - LDA :RET - PHA - RTS -:RET DS 2 -:RIGHT DS 1 -:LEFT DS 1 -:LENGTH DS 1 -__P - PLA - STA ADDR1 - PLA - STA ADDR1+1 - LDY #1 -:LP LDA (ADDR1),Y - BEQ :DONE - JSR $FDF0 - INY - BNE :LP -:DONE CLC - TYA - ADC ADDR1 - STA ADDR1 - LDA ADDR1+1 - ADC #0 - PHA - LDA ADDR1 - PHA - RTS -__W - JSR $FD0C - RTS -__RSAV - STA ERRA - STX ERRX - STY ERRY -:C BCC :C0 - BCS :C1 -:Z BEQ :Z1 - BNE :Z0 -:N BMI :N1 - BPL :N0 -:O BVC :O0 - BVS :O1 - JMP :EXIT -:C0 LDA #0 - STA ERRCARRY - JMP :Z -:C1 LDA #1 - STA ERRCARRY - JMP :Z -:Z1 LDA #1 - STA ERRZERO - JMP :N -:Z0 LDA #0 - STA ERRZERO - JMP :N -:N1 LDA #1 - STA ERRNEG - JMP :O -:N0 LDA #0 - STA ERRNEG - JMP :O -:O0 LDA #0 - STA ERROVF - JMP :EXIT -:O1 LDA #1 - STA ERROVF -:EXIT - RTS -__RDMP - _PRNT " ",8D8D - _PRNT "REGISTRY DUMP",8D - _PRNT "=============",8D - _PRNT "A: " - LDA ERRA - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRA - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "X: " - LDA ERRX - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRX - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D - _PRNT "Y: " - LDA ERRY - AND #$F0 ; MASK RIGHT - LSR - LSR - LSR - LSR - STA :LEFT - LDA ERRY - AND #$0F ; MASK LEFT - STA :RIGHT - LDX :LEFT - LDA HEXTAB,X - JSR $FDF0 - LDX :RIGHT - LDA HEXTAB,X - JSR $FDF0 - _PRNT " ",8D8D - _PRNT "STATUS FLAGS",8D - _PRNT "============",8D8D - LDA #0 - CMP ERRCARRY - BEQ :CARCLR - _PRNT "CARRY: SET",8D - JMP :TESTN -:CARCLR _PRNT "CARRY: CLEAR",8D -:TESTN LDA #0 - CMP ERRNEG - BEQ :NEGCLR - _PRNT "NEGATIVE: SET",8D - JMP :TESTZ -:NEGCLR _PRNT "NEGATIVE: CLEAR",8D -:TESTZ LDA #0 - CMP ERRZERO - BEQ :ZCLR - _PRNT "ZERO: SET",8D - JMP :TESTO -:ZCLR _PRNT "ZERO: CLEAR",8D -:TESTO - LDA #0 - CMP ERROVF - BEQ :OCLR - _PRNT "OVERFLOW: SET",8D - JMP :FIN -:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D -:FIN - RTS -:LEFT DS 1 -:RIGHT DS 1 -HEXTAB ASC "0123456789ABCDEF" -__ERR - JSR __RSAV - PLA - STA RETADR - PLA - STA RETADR+1 - PLA - STA :DUMPLEN ; LENGTH OF DUMP - PLA - STA :DUMP ; DUMP ADDRESS LO - PLA - STA :DUMP+1 ; DUMP HI - PLA - STA :DMPMSG - PLA - STA :DMPMSG+1 - PLA - STA :MESG ; ERROR MESSAGE ADDR LO - PLA - STA :MESG+1 ; HI - PLA - STA :SRID ; SUBROUTINE ID ADDR LO - PLA - STA :SRID+1 ; SUB ID HI - _PRNT " ",87878787878D8D - _PRNT "ERROR!",8D8D - _PRNT "SUBROUTINE: " - LDY #0 - LDA :SRID - STA ADDR1 - LDA :SRID+1 - STA ADDR1+1 -:LP1 - LDA (ADDR1),Y - BEQ :LPX1 - JSR $FDF0 - INY - BNE :LP1 -:LPX1 - _PRNT " ",8D - _PRNT "MESSAGE: " - LDY #0 - LDA :MESG - STA ADDR1 - LDA :MESG+1 - STA ADDR1+1 -:LP2 - LDA (ADDR1),Y - BEQ :LPX2 - JSR $FDF0 - INY - BNE :LP2 -:LPX2 - _PRNT " ",8D8D - _WAIT - LDY #0 - LDA :DMPMSG - STA ADDR1 - LDA :DMPMSG+1 - STA ADDR1+1 -:LP3 - LDA (ADDR1),Y - BEQ :LPX3 - JSR $FDF0 - INY - BNE :LP3 -:LPX3 - _PRNT " ",8D - LDA :DUMP+1 - PHA - LDA :DUMP - PHA - LDA :DUMPLEN - PHA - JSR __DUMP - _WAIT - LDA RETADR+1 - PHA - LDA RETADR - PHA - _PRNT " ",8D8D - _WAIT - _RDUMP - _WAIT - LDA ERRSTOP - CMP #1 - BEQ :KILL - RTS -:KILL - JMP $3D0 -:DUMPLEN DS 1 -:DUMP DS 2 -:DMPMSG DS 2 -:MESG DS 2 -:SRID DS 2 diff --git a/disks/disk6_fileio/MAKEEXEC b/source/disk15_utilities/MAKEEXEC similarity index 100% rename from disks/disk6_fileio/MAKEEXEC rename to source/disk15_utilities/MAKEEXEC diff --git a/disks/disk1_stdio/MINIFY b/source/disk15_utilities/MINIFY similarity index 100% rename from disks/disk1_stdio/MINIFY rename to source/disk15_utilities/MINIFY diff --git a/source/disk16_integrated_demos/MAKEMAZE b/source/disk16_integrated_demos/MAKEMAZE new file mode 100644 index 0000000..d81d91a --- /dev/null +++ b/source/disk16_integrated_demos/MAKEMAZE @@ -0,0 +1,2848 @@ +6000- 4C 4A 62 JMP $624A +6003- 00 BRK +6004- 00 BRK +6005- 00 BRK +6006- 00 BRK +6007- 00 BRK +6008- 00 BRK +6009- 00 BRK +600A- 00 BRK +600B- 00 BRK +600C- 00 BRK +600D- 00 BRK +600E- 00 BRK +600F- 00 BRK +6010- 00 BRK +6011- 00 BRK +6012- 00 BRK +6013- 00 BRK +6014- 00 BRK +6015- 00 BRK +6016- 00 BRK +6017- 00 BRK +6018- 00 BRK +6019- 00 BRK +601A- 00 BRK +601B- 00 BRK +601C- 00 BRK +601D- 00 BRK +601E- 00 BRK +601F- 00 BRK +6020- 00 BRK +6021- 00 BRK +6022- 00 BRK +6023- 00 BRK +6024- 00 BRK +6025- 00 BRK +6026- 00 BRK +6027- 00 BRK +6028- 00 BRK +6029- 00 BRK +602A- 00 BRK +602B- 00 BRK +602C- 00 BRK +602D- 00 BRK +602E- 00 BRK +602F- 00 BRK +6030- 00 BRK +6031- 00 BRK +6032- 00 BRK +6033- 00 BRK +6034- 00 BRK +6035- 00 BRK +6036- 00 BRK +6037- 00 BRK +6038- 00 BRK +6039- 00 BRK +603A- 00 BRK +603B- 00 BRK +603C- 00 BRK +603D- 00 BRK +603E- 00 BRK +603F- 00 BRK +6040- 00 BRK +6041- 00 BRK +6042- 00 BRK +6043- 00 BRK +6044- 00 BRK +6045- 00 BRK +6046- 00 BRK +6047- 00 BRK +6048- 00 BRK +6049- 00 BRK +604A- 00 BRK +604B- 00 BRK +604C- 00 BRK +604D- 00 BRK +604E- 00 BRK +604F- 00 BRK +6050- 00 BRK +6051- 00 BRK +6052- 00 BRK +6053- 00 BRK +6054- 00 BRK +6055- 00 BRK +6056- 00 BRK +6057- 00 BRK +6058- 00 BRK +6059- 00 BRK +605A- 00 BRK +605B- 00 BRK +605C- 00 BRK +605D- 00 BRK +605E- 00 BRK +605F- 00 BRK +6060- 00 BRK +6061- 00 BRK +6062- 00 BRK +6063- 00 BRK +6064- 00 BRK +6065- 00 BRK +6066- 00 BRK +6067- 00 BRK +6068- 00 BRK +6069- 00 BRK +606A- 00 BRK +606B- 00 BRK +606C- 00 BRK +606D- 00 BRK +606E- 00 BRK +606F- 00 BRK +6070- 00 BRK +6071- 00 BRK +6072- 00 BRK +6073- 00 BRK +6074- 00 BRK +6075- 00 BRK +6076- 00 BRK +6077- 00 BRK +6078- 00 BRK +6079- 00 BRK +607A- 00 BRK +607B- 00 BRK +607C- 00 BRK +607D- 00 BRK +607E- 00 BRK +607F- 00 BRK +6080- 00 BRK +6081- 00 BRK +6082- 00 BRK +6083- 00 BRK +6084- 00 BRK +6085- 00 BRK +6086- 00 BRK +6087- 00 BRK +6088- 00 BRK +6089- 00 BRK +608A- 00 BRK +608B- 00 BRK +608C- 00 BRK +608D- 00 BRK +608E- 00 BRK +608F- 00 BRK +6090- 00 BRK +6091- 00 BRK +6092- 00 BRK +6093- 00 BRK +6094- 00 BRK +6095- 00 BRK +6096- 00 BRK +6097- 00 BRK +6098- 00 BRK +6099- 00 BRK +609A- 00 BRK +609B- 00 BRK +609C- 00 BRK +609D- 00 BRK +609E- 00 BRK +609F- 00 BRK +60A0- 00 BRK +60A1- 00 BRK +60A2- 00 BRK +60A3- 00 BRK +60A4- 00 BRK +60A5- 00 BRK +60A6- 00 BRK +60A7- 00 BRK +60A8- 00 BRK +60A9- 00 BRK +60AA- 00 BRK +60AB- 00 BRK +60AC- 00 BRK +60AD- 00 BRK +60AE- 00 BRK +60AF- 00 BRK +60B0- 00 BRK +60B1- 00 BRK +60B2- 00 BRK +60B3- 00 BRK +60B4- 00 BRK +60B5- 00 BRK +60B6- 00 BRK +60B7- 00 BRK +60B8- 00 BRK +60B9- 00 BRK +60BA- 00 BRK +60BB- 00 BRK +60BC- 00 BRK +60BD- 00 BRK +60BE- 00 BRK +60BF- 00 BRK +60C0- 00 BRK +60C1- 00 BRK +60C2- 00 BRK +60C3- 00 BRK +60C4- 00 BRK +60C5- 00 BRK +60C6- 00 BRK +60C7- 00 BRK +60C8- 00 BRK +60C9- 00 BRK +60CA- 00 BRK +60CB- 00 BRK +60CC- 00 BRK +60CD- 00 BRK +60CE- 00 BRK +60CF- 00 BRK +60D0- 00 BRK +60D1- 00 BRK +60D2- 00 BRK +60D3- 00 BRK +60D4- 00 BRK +60D5- 00 BRK +60D6- 00 BRK +60D7- 00 BRK +60D8- 00 BRK +60D9- 00 BRK +60DA- 00 BRK +60DB- 00 BRK +60DC- 00 BRK +60DD- 00 BRK +60DE- 00 BRK +60DF- 00 BRK +60E0- 00 BRK +60E1- 00 BRK +60E2- 00 BRK +60E3- 00 BRK +60E4- 00 BRK +60E5- 00 BRK +60E6- 00 BRK +60E7- 00 BRK +60E8- 00 BRK +60E9- 00 BRK +60EA- 00 BRK +60EB- 00 BRK +60EC- 00 BRK +60ED- 00 BRK +60EE- 00 BRK +60EF- 00 BRK +60F0- 00 BRK +60F1- 00 BRK +60F2- 00 BRK +60F3- 00 BRK +60F4- 00 BRK +60F5- 00 BRK +60F6- 00 BRK +60F7- 00 BRK +60F8- 00 BRK +60F9- 00 BRK +60FA- 00 BRK +60FB- 00 BRK +60FC- 00 BRK +60FD- 00 BRK +60FE- 00 BRK +60FF- 00 BRK +6100- 00 BRK +6101- 00 BRK +6102- 00 BRK +6103- 00 BRK +6104- 00 BRK +6105- 00 BRK +6106- 00 BRK +6107- 00 BRK +6108- 00 BRK +6109- 00 BRK +610A- 00 BRK +610B- 00 BRK +610C- 00 BRK +610D- 00 BRK +610E- 00 BRK +610F- 00 BRK +6110- 00 BRK +6111- 00 BRK +6112- 00 BRK +6113- 00 BRK +6114- 00 BRK +6115- 00 BRK +6116- 00 BRK +6117- 00 BRK +6118- 00 BRK +6119- 00 BRK +611A- 00 BRK +611B- 00 BRK +611C- 00 BRK +611D- 00 BRK +611E- 00 BRK +611F- 00 BRK +6120- 00 BRK +6121- 00 BRK +6122- 00 BRK +6123- 00 BRK +6124- 00 BRK +6125- 00 BRK +6126- 00 BRK +6127- 00 BRK +6128- 00 BRK +6129- 00 BRK +612A- 00 BRK +612B- 00 BRK +612C- 00 BRK +612D- 00 BRK +612E- 00 BRK +612F- 00 BRK +6130- 00 BRK +6131- 00 BRK +6132- 00 BRK +6133- 00 BRK +6134- 00 BRK +6135- 00 BRK +6136- 00 BRK +6137- 00 BRK +6138- 00 BRK +6139- 00 BRK +613A- 00 BRK +613B- 00 BRK +613C- 00 BRK +613D- 00 BRK +613E- 00 BRK +613F- 00 BRK +6140- 00 BRK +6141- 00 BRK +6142- 00 BRK +6143- 00 BRK +6144- 00 BRK +6145- 00 BRK +6146- 00 BRK +6147- 00 BRK +6148- 00 BRK +6149- 00 BRK +614A- 00 BRK +614B- 00 BRK +614C- 00 BRK +614D- 00 BRK +614E- 00 BRK +614F- 00 BRK +6150- 00 BRK +6151- 00 BRK +6152- 00 BRK +6153- 00 BRK +6154- 00 BRK +6155- 00 BRK +6156- 00 BRK +6157- 00 BRK +6158- 00 BRK +6159- 00 BRK +615A- 00 BRK +615B- 00 BRK +615C- 00 BRK +615D- 00 BRK +615E- 00 BRK +615F- 00 BRK +6160- 00 BRK +6161- 00 BRK +6162- 00 BRK +6163- 00 BRK +6164- 00 BRK +6165- 00 BRK +6166- 00 BRK +6167- 00 BRK +6168- 00 BRK +6169- 00 BRK +616A- 00 BRK +616B- 00 BRK +616C- 00 BRK +616D- 00 BRK +616E- 00 BRK +616F- 00 BRK +6170- 00 BRK +6171- 00 BRK +6172- 00 BRK +6173- 00 BRK +6174- 00 BRK +6175- 00 BRK +6176- 00 BRK +6177- 00 BRK +6178- 00 BRK +6179- 00 BRK +617A- 00 BRK +617B- 00 BRK +617C- 00 BRK +617D- 00 BRK +617E- 00 BRK +617F- 00 BRK +6180- 00 BRK +6181- 00 BRK +6182- 00 BRK +6183- 00 BRK +6184- 00 BRK +6185- 00 BRK +6186- 00 BRK +6187- 00 BRK +6188- 00 BRK +6189- 00 BRK +618A- 00 BRK +618B- 00 BRK +618C- 00 BRK +618D- 00 BRK +618E- 00 BRK +618F- 00 BRK +6190- 00 BRK +6191- 00 BRK +6192- 00 BRK +6193- 00 BRK +6194- 00 BRK +6195- 00 BRK +6196- 00 BRK +6197- 00 BRK +6198- 00 BRK +6199- 00 BRK +619A- 00 BRK +619B- 00 BRK +619C- 00 BRK +619D- 00 BRK +619E- 00 BRK +619F- 00 BRK +61A0- 00 BRK +61A1- 00 BRK +61A2- 00 BRK +61A3- 00 BRK +61A4- 00 BRK +61A5- 00 BRK +61A6- 00 BRK +61A7- 00 BRK +61A8- 00 BRK +61A9- 00 BRK +61AA- 00 BRK +61AB- 00 BRK +61AC- 00 BRK +61AD- 00 BRK +61AE- 00 BRK +61AF- 00 BRK +61B0- 00 BRK +61B1- 00 BRK +61B2- 00 BRK +61B3- 00 BRK +61B4- 00 BRK +61B5- 00 BRK +61B6- 00 BRK +61B7- 00 BRK +61B8- 00 BRK +61B9- 00 BRK +61BA- 00 BRK +61BB- 00 BRK +61BC- 00 BRK +61BD- 00 BRK +61BE- 00 BRK +61BF- 00 BRK +61C0- 00 BRK +61C1- 00 BRK +61C2- 00 BRK +61C3- 00 BRK +61C4- 00 BRK +61C5- 00 BRK +61C6- 00 BRK +61C7- 00 BRK +61C8- 00 BRK +61C9- 00 BRK +61CA- 00 BRK +61CB- 00 BRK +61CC- 00 BRK +61CD- 00 BRK +61CE- 00 BRK +61CF- 00 BRK +61D0- 00 BRK +61D1- 00 BRK +61D2- 00 BRK +61D3- 00 BRK +61D4- 00 BRK +61D5- 00 BRK +61D6- 00 BRK +61D7- 00 BRK +61D8- 00 BRK +61D9- 00 BRK +61DA- 00 BRK +61DB- 00 BRK +61DC- 00 BRK +61DD- 00 BRK +61DE- 00 BRK +61DF- 00 BRK +61E0- 00 BRK +61E1- 00 BRK +61E2- 00 BRK +61E3- 00 BRK +61E4- 00 BRK +61E5- 00 BRK +61E6- 00 BRK +61E7- 00 BRK +61E8- 00 BRK +61E9- 00 BRK +61EA- 00 BRK +61EB- 00 BRK +61EC- 00 BRK +61ED- 00 BRK +61EE- 00 BRK +61EF- 00 BRK +61F0- 00 BRK +61F1- 00 BRK +61F2- 00 BRK +61F3- 00 BRK +61F4- 00 BRK +61F5- 00 BRK +61F6- 00 BRK +61F7- 00 BRK +61F8- 00 BRK +61F9- 00 BRK +61FA- 00 BRK +61FB- 00 BRK +61FC- 00 BRK +61FD- 00 BRK +61FE- 00 BRK +61FF- 00 BRK +6200- 00 BRK +6201- 00 BRK +6202- 00 BRK +6203- 00 BRK +6204- 00 BRK +6205- 00 BRK +6206- 00 BRK +6207- 00 BRK +6208- 00 BRK +6209- 00 BRK +620A- 00 BRK +620B- 00 BRK +620C- 00 BRK +620D- 00 BRK +620E- 00 BRK +620F- 00 BRK +6210- 00 BRK +6211- 00 BRK +6212- 00 BRK +6213- 00 BRK +6214- 00 BRK +6215- 00 BRK +6216- 00 BRK +6217- 00 BRK +6218- 00 BRK +6219- 00 BRK +621A- 00 BRK +621B- 00 BRK +621C- 00 BRK +621D- 00 BRK +621E- 00 BRK +621F- 00 BRK +6220- 00 BRK +6221- 00 BRK +6222- 00 BRK +6223- 00 BRK +6224- 00 BRK +6225- 00 BRK +6226- 00 BRK +6227- 00 BRK +6228- 00 BRK +6229- 00 BRK +622A- 00 BRK +622B- 00 BRK +622C- 00 BRK +622D- 00 BRK +622E- 00 BRK +622F- 00 BRK +6230- 00 BRK +6231- 00 BRK +6232- 00 BRK +6233- 00 BRK +6234- 00 BRK +6235- 00 BRK +6236- 00 BRK +6237- 00 BRK +6238- 00 BRK +6239- 00 BRK +623A- 00 BRK +623B- 00 BRK +623C- 00 BRK +623D- 00 BRK +623E- 00 BRK +623F- 00 BRK +6240- 00 BRK +6241- 00 BRK +6242- 00 BRK +6243- 00 BRK +6244- 00 BRK +6245- 00 BRK +6246- 00 BRK +6247- 00 BRK +6248- 00 BRK +6249- 00 BRK +624A- A9 01 LDA #$01 +624C- 8D 41 62 STA $6241 +624F- A9 01 LDA #$01 +6251- 8D 42 62 STA $6242 +6254- 20 58 FC JSR $FC58 F8ROM:HOME +6257- 20 A7 73 JSR $73A7 +625A- C9 CE CMP #$CE +625C- C9 D4 CMP #$D4 +625E- C9 C1 CMP #$C1 +6260- CC C9 DA CPY $DAC9 +6263- C9 CE CMP #$CE +6265- C7 ??? +6266- AE AE AE LDX $AEAE +6269- 8D 00 20 STA $2000 +626C- 8C 62 20 STY $2062 +626F- FD 62 A9 SBC $A962,X +6272- 02 ??? +6273- 48 PHA +6274- A9 0F LDA #$0F +6276- 48 PHA +6277- 20 AF 72 JSR $72AF +627A- 8D 56 66 STA $6656 +627D- A9 02 LDA #$02 +627F- 48 PHA +6280- A9 0F LDA #$0F +6282- 48 PHA +6283- 20 AF 72 JSR $72AF +6286- 8D 57 66 STA $6657 +6289- 4C 72 63 JMP $6372 +628C- A9 20 LDA #$20 +628E- 48 PHA +628F- A9 00 LDA #$00 +6291- 48 PHA +6292- A9 11 LDA #$11 +6294- 48 PHA +6295- A9 11 LDA #$11 +6297- 48 PHA +6298- A9 01 LDA #$01 +629A- 48 PHA +629B- A9 01 LDA #$01 +629D- 48 PHA +629E- 20 15 6B JSR $6B15 +62A1- A9 21 LDA #$21 +62A3- 48 PHA +62A4- A9 25 LDA #$25 +62A6- 48 PHA +62A7- A9 11 LDA #$11 +62A9- 48 PHA +62AA- A9 11 LDA #$11 +62AC- 48 PHA +62AD- A9 01 LDA #$01 +62AF- 48 PHA +62B0- A9 01 LDA #$01 +62B2- 48 PHA +62B3- 20 15 6B JSR $6B15 +62B6- A9 22 LDA #$22 +62B8- 48 PHA +62B9- A9 4A LDA #$4A +62BB- 48 PHA +62BC- A9 11 LDA #$11 +62BE- 48 PHA +62BF- A9 11 LDA #$11 +62C1- 48 PHA +62C2- A9 01 LDA #$01 +62C4- 48 PHA +62C5- A9 00 LDA #$00 +62C7- 48 PHA +62C8- 20 15 6B JSR $6B15 +62CB- A9 23 LDA #$23 +62CD- 48 PHA +62CE- A9 6F LDA #$6F +62D0- 48 PHA +62D1- A9 25 LDA #$25 +62D3- 48 PHA +62D4- A9 01 LDA #$01 +62D6- 48 PHA +62D7- A9 00 LDA #$00 +62D9- 48 PHA +62DA- 20 79 6A JSR $6A79 +62DD- A9 24 LDA #$24 +62DF- 48 PHA +62E0- A9 94 LDA #$94 +62E2- 48 PHA +62E3- A9 25 LDA #$25 +62E5- 48 PHA +62E6- A9 01 LDA #$01 +62E8- 48 PHA +62E9- A9 00 LDA #$00 +62EB- 48 PHA +62EC- 20 79 6A JSR $6A79 +62EF- A9 00 LDA #$00 +62F1- 8D 58 66 STA $6658 +62F4- 8D 54 66 STA $6654 +62F7- A9 01 LDA #$01 +62F9- 8D 55 66 STA $6655 +62FC- 60 RTS +62FD- A9 00 LDA #$00 +62FF- 8D 56 66 STA $6656 +6302- 8D 57 66 STA $6657 +6305- EE 56 66 INC $6656 +6308- A9 66 LDA #$66 +630A- 48 PHA +630B- A9 55 LDA #$55 +630D- 48 PHA +630E- A9 22 LDA #$22 +6310- 48 PHA +6311- A9 4A LDA #$4A +6313- 48 PHA +6314- AD 56 66 LDA $6656 +6317- 48 PHA +6318- A9 01 LDA #$01 +631A- 48 PHA +631B- 20 94 70 JSR $7094 +631E- A9 66 LDA #$66 +6320- 48 PHA +6321- A9 55 LDA #$55 +6323- 48 PHA +6324- A9 22 LDA #$22 +6326- 48 PHA +6327- A9 4A LDA #$4A +6329- 48 PHA +632A- AD 56 66 LDA $6656 +632D- 48 PHA +632E- A9 11 LDA #$11 +6330- 48 PHA +6331- 20 94 70 JSR $7094 +6334- AD 56 66 LDA $6656 +6337- C9 11 CMP #$11 +6339- D0 CA BNE $6305 +633B- EE 57 66 INC $6657 +633E- A9 66 LDA #$66 +6340- 48 PHA +6341- A9 55 LDA #$55 +6343- 48 PHA +6344- A9 22 LDA #$22 +6346- 48 PHA +6347- A9 4A LDA #$4A +6349- 48 PHA +634A- A9 01 LDA #$01 +634C- 48 PHA +634D- AD 57 66 LDA $6657 +6350- 48 PHA +6351- 20 94 70 JSR $7094 +6354- A9 66 LDA #$66 +6356- 48 PHA +6357- A9 55 LDA #$55 +6359- 48 PHA +635A- A9 22 LDA #$22 +635C- 48 PHA +635D- A9 4A LDA #$4A +635F- 48 PHA +6360- A9 11 LDA #$11 +6362- 48 PHA +6363- AD 57 66 LDA $6657 +6366- 48 PHA +6367- 20 94 70 JSR $7094 +636A- AD 57 66 LDA $6657 +636D- C9 11 CMP #$11 +636F- D0 CA BNE $633B +6371- 60 RTS +6372- 20 A7 73 JSR $73A7 +6375- C2 ??? +6376- D5 C9 CMP $C9,X +6378- CC C4 C9 CPY $C9C4 +637B- CE C7 A0 DEC $A0C7 +637E- CD C1 DA CMP $DAC1 +6381- C5 AE CMP $AE +6383- AE AE 8D LDX $8DAE +6386- 8D 00 EE STA $EE00 +6389- 58 CLI +638A- 66 A9 ROR $A9 +638C- 66 48 ROR $48 +638E- A9 56 LDA #$56 +6390- 48 PHA +6391- A9 23 LDA #$23 +6393- 48 PHA +6394- A9 6F LDA #$6F +6396- 48 PHA +6397- AD 58 66 LDA $6658 +639A- 48 PHA +639B- 20 44 6F JSR $6F44 +639E- A9 66 LDA #$66 +63A0- 48 PHA +63A1- A9 57 LDA #$57 +63A3- 48 PHA +63A4- A9 24 LDA #$24 +63A6- 48 PHA +63A7- A9 94 LDA #$94 +63A9- 48 PHA +63AA- AD 58 66 LDA $6658 +63AD- 48 PHA +63AE- 20 44 6F JSR $6F44 +63B1- A9 66 LDA #$66 +63B3- 48 PHA +63B4- A9 55 LDA #$55 +63B6- 48 PHA +63B7- A9 22 LDA #$22 +63B9- 48 PHA +63BA- A9 4A LDA #$4A +63BC- 48 PHA +63BD- AD 56 66 LDA $6656 +63C0- 48 PHA +63C1- AD 57 66 LDA $6657 +63C4- 48 PHA +63C5- 20 94 70 JSR $7094 +63C8- AD 57 66 LDA $6657 +63CB- 8D 5B 66 STA $665B +63CE- 8D 5C 66 STA $665C +63D1- AD 56 66 LDA $6656 +63D4- 8D 59 66 STA $6659 +63D7- 8D 5A 66 STA $665A +63DA- EE 5B 66 INC $665B +63DD- EE 59 66 INC $6659 +63E0- CE 5A 66 DEC $665A +63E3- CE 5C 66 DEC $665C +63E6- A9 22 LDA #$22 +63E8- 48 PHA +63E9- A9 4A LDA #$4A +63EB- 48 PHA +63EC- AD 56 66 LDA $6656 +63EF- 48 PHA +63F0- AD 5B 66 LDA $665B +63F3- 48 PHA +63F4- 20 43 6D JSR $6D43 +63F7- AD 40 60 LDA $6040 +63FA- C9 01 CMP #$01 +63FC- F0 03 BEQ $6401 +63FE- 4C 92 64 JMP $6492 +6401- A9 22 LDA #$22 +6403- 48 PHA +6404- A9 4A LDA #$4A +6406- 48 PHA +6407- AD 59 66 LDA $6659 +640A- 48 PHA +640B- AD 57 66 LDA $6657 +640E- 48 PHA +640F- 20 43 6D JSR $6D43 +6412- AD 40 60 LDA $6040 +6415- C9 01 CMP #$01 +6417- F0 03 BEQ $641C +6419- 4C 92 64 JMP $6492 +641C- AD 5C 66 LDA $665C +641F- C9 00 CMP #$00 +6421- D0 03 BNE $6426 +6423- 4C 41 64 JMP $6441 +6426- A9 22 LDA #$22 +6428- 48 PHA +6429- A9 4A LDA #$4A +642B- 48 PHA +642C- AD 56 66 LDA $6656 +642F- 48 PHA +6430- AD 5C 66 LDA $665C +6433- 48 PHA +6434- 20 43 6D JSR $6D43 +6437- AD 40 60 LDA $6040 +643A- C9 01 CMP #$01 +643C- F0 03 BEQ $6441 +643E- 4C 92 64 JMP $6492 +6441- A9 22 LDA #$22 +6443- 48 PHA +6444- A9 4A LDA #$4A +6446- 48 PHA +6447- AD 5A 66 LDA $665A +644A- 48 PHA +644B- AD 57 66 LDA $6657 +644E- 48 PHA +644F- 20 43 6D JSR $6D43 +6452- AD 40 60 LDA $6040 +6455- C9 01 CMP #$01 +6457- F0 03 BEQ $645C +6459- 4C 92 64 JMP $6492 +645C- A9 23 LDA #$23 +645E- 48 PHA +645F- A9 6F LDA #$6F +6461- 48 PHA +6462- AD 58 66 LDA $6658 +6465- 48 PHA +6466- 20 12 6C JSR $6C12 +6469- AD 40 60 LDA $6040 +646C- 8D 56 66 STA $6656 +646F- A9 24 LDA #$24 +6471- 48 PHA +6472- A9 94 LDA #$94 +6474- 48 PHA +6475- AD 58 66 LDA $6658 +6478- 48 PHA +6479- 20 12 6C JSR $6C12 +647C- AD 40 60 LDA $6040 +647F- 8D 57 66 STA $6657 +6482- CE 58 66 DEC $6658 +6485- AD 58 66 LDA $6658 +6488- C9 01 CMP #$01 +648A- B0 03 BCS $648F +648C- 4C 8B 65 JMP $658B +648F- 4C C8 63 JMP $63C8 +6492- 20 94 72 JSR $7294 +6495- C9 40 CMP #$40 +6497- 90 0B BCC $64A4 +6499- C9 80 CMP #$80 +649B- 90 3F BCC $64DC +649D- C9 C0 CMP #$C0 +649F- 90 73 BCC $6514 +64A1- 4C 53 65 JMP $6553 +64A4- A9 22 LDA #$22 +64A6- 48 PHA +64A7- A9 4A LDA #$4A +64A9- 48 PHA +64AA- AD 56 66 LDA $6656 +64AD- 48 PHA +64AE- AD 5B 66 LDA $665B +64B1- 48 PHA +64B2- 20 43 6D JSR $6D43 +64B5- AD 40 60 LDA $6040 +64B8- C9 00 CMP #$00 +64BA- F0 03 BEQ $64BF +64BC- 4C 92 64 JMP $6492 +64BF- A9 66 LDA #$66 +64C1- 48 PHA +64C2- A9 54 LDA #$54 +64C4- 48 PHA +64C5- A9 20 LDA #$20 +64C7- 48 PHA +64C8- A9 00 LDA #$00 +64CA- 48 PHA +64CB- AD 56 66 LDA $6656 +64CE- 48 PHA +64CF- AD 57 66 LDA $6657 +64D2- 48 PHA +64D3- 20 94 70 JSR $7094 +64D6- EE 57 66 INC $6657 +64D9- 4C 88 63 JMP $6388 +64DC- A9 22 LDA #$22 +64DE- 48 PHA +64DF- A9 4A LDA #$4A +64E1- 48 PHA +64E2- AD 59 66 LDA $6659 +64E5- 48 PHA +64E6- AD 57 66 LDA $6657 +64E9- 48 PHA +64EA- 20 43 6D JSR $6D43 +64ED- AD 40 60 LDA $6040 +64F0- C9 00 CMP #$00 +64F2- F0 03 BEQ $64F7 +64F4- 4C 92 64 JMP $6492 +64F7- A9 66 LDA #$66 +64F9- 48 PHA +64FA- A9 54 LDA #$54 +64FC- 48 PHA +64FD- A9 21 LDA #$21 +64FF- 48 PHA +6500- A9 25 LDA #$25 +6502- 48 PHA +6503- AD 59 66 LDA $6659 +6506- 48 PHA +6507- AD 57 66 LDA $6657 +650A- 48 PHA +650B- 20 94 70 JSR $7094 +650E- EE 56 66 INC $6656 +6511- 4C 88 63 JMP $6388 +6514- AD 5C 66 LDA $665C +6517- C9 00 CMP #$00 +6519- F0 18 BEQ $6533 +651B- A9 22 LDA #$22 +651D- 48 PHA +651E- A9 4A LDA #$4A +6520- 48 PHA +6521- AD 56 66 LDA $6656 +6524- 48 PHA +6525- AD 5C 66 LDA $665C +6528- 48 PHA +6529- 20 43 6D JSR $6D43 +652C- AD 40 60 LDA $6040 +652F- C9 00 CMP #$00 +6531- F0 03 BEQ $6536 +6533- 4C 92 64 JMP $6492 +6536- A9 66 LDA #$66 +6538- 48 PHA +6539- A9 54 LDA #$54 +653B- 48 PHA +653C- A9 20 LDA #$20 +653E- 48 PHA +653F- A9 00 LDA #$00 +6541- 48 PHA +6542- AD 56 66 LDA $6656 +6545- 48 PHA +6546- AD 5C 66 LDA $665C +6549- 48 PHA +654A- 20 94 70 JSR $7094 +654D- CE 57 66 DEC $6657 +6550- 4C 88 63 JMP $6388 +6553- A9 22 LDA #$22 +6555- 48 PHA +6556- A9 4A LDA #$4A +6558- 48 PHA +6559- AD 5A 66 LDA $665A +655C- 48 PHA +655D- AD 57 66 LDA $6657 +6560- 48 PHA +6561- 20 43 6D JSR $6D43 +6564- AD 40 60 LDA $6040 +6567- C9 00 CMP #$00 +6569- F0 03 BEQ $656E +656B- 4C 92 64 JMP $6492 +656E- A9 66 LDA #$66 +6570- 48 PHA +6571- A9 54 LDA #$54 +6573- 48 PHA +6574- A9 21 LDA #$21 +6576- 48 PHA +6577- A9 25 LDA #$25 +6579- 48 PHA +657A- AD 56 66 LDA $6656 +657D- 48 PHA +657E- AD 57 66 LDA $6657 +6581- 48 PHA +6582- 20 94 70 JSR $7094 +6585- CE 56 66 DEC $6656 +6588- 4C 88 63 JMP $6388 +658B- 20 A7 73 JSR $73A7 +658E- D0 D2 BNE $6562 +6590- C9 CE CMP #$CE +6592- D4 ??? +6593- C9 CE CMP #$CE +6595- C7 ??? +6596- AE AE AE LDX $AEAE +6599- 8D 00 20 STA $2000 +659C- A7 ??? +659D- 73 ??? +659E- A0 8D LDY #$8D +65A0- 00 BRK +65A1- A9 01 LDA #$01 +65A3- 8D 56 66 STA $6656 +65A6- EE 56 66 INC $6656 +65A9- 20 A7 73 JSR $73A7 +65AC- D8 CLD +65AD- 00 BRK +65AE- AD 56 66 LDA $6656 +65B1- C9 20 CMP #$20 +65B3- D0 F1 BNE $65A6 +65B5- 20 A7 73 JSR $73A7 +65B8- A0 8D LDY #$8D +65BA- 00 BRK +65BB- A9 02 LDA #$02 +65BD- 8D 56 66 STA $6656 +65C0- 8D 57 66 STA $6657 +65C3- A9 21 LDA #$21 +65C5- 48 PHA +65C6- A9 25 LDA #$25 +65C8- 48 PHA +65C9- AD 56 66 LDA $6656 +65CC- 48 PHA +65CD- AD 57 66 LDA $6657 +65D0- 48 PHA +65D1- 20 43 6D JSR $6D43 +65D4- AD 40 60 LDA $6040 +65D7- C9 00 CMP #$00 +65D9- F0 09 BEQ $65E4 +65DB- 20 A7 73 JSR $73A7 +65DE- D8 CLD +65DF- A0 00 LDY #$00 +65E1- 4C EA 65 JMP $65EA +65E4- 20 A7 73 JSR $73A7 +65E7- A0 A0 LDY #$A0 +65E9- 00 BRK +65EA- EE 56 66 INC $6656 +65ED- AD 56 66 LDA $6656 +65F0- C9 11 CMP #$11 +65F2- F0 03 BEQ $65F7 +65F4- 4C C3 65 JMP $65C3 +65F7- 20 A7 73 JSR $73A7 +65FA- D8 CLD +65FB- 8D 00 A9 STA $A900 +65FE- 02 ??? +65FF- 8D 56 66 STA $6656 +6602- A9 20 LDA #$20 +6604- 48 PHA +6605- A9 00 LDA #$00 +6607- 48 PHA +6608- AD 56 66 LDA $6656 +660B- 48 PHA +660C- AD 57 66 LDA $6657 +660F- 48 PHA +6610- 20 43 6D JSR $6D43 +6613- AD 40 60 LDA $6040 +6616- C9 00 CMP #$00 +6618- F0 09 BEQ $6623 +661A- 20 A7 73 JSR $73A7 +661D- D8 CLD +661E- D8 CLD +661F- 00 BRK +6620- 4C 29 66 JMP $6629 +6623- 20 A7 73 JSR $73A7 +6626- D8 CLD +6627- A0 00 LDY #$00 +6629- EE 56 66 INC $6656 +662C- AD 56 66 LDA $6656 +662F- C9 11 CMP #$11 +6631- F0 03 BEQ $6636 +6633- 4C 02 66 JMP $6602 +6636- 20 A7 73 JSR $73A7 +6639- D8 CLD +663A- 8D 00 A9 STA $A900 +663D- 02 ??? +663E- 8D 56 66 STA $6656 +6641- EE 57 66 INC $6657 +6644- AD 57 66 LDA $6657 +6647- C9 11 CMP #$11 +6649- F0 03 BEQ $664E +664B- 4C C3 65 JMP $65C3 +664E- 20 46 67 JSR $6746 +6651- 4C D0 03 JMP $03D0 +6654- 00 BRK +6655- 00 BRK +6656- 00 BRK +6657- 00 BRK +6658- 00 BRK +6659- 00 BRK +665A- 00 BRK +665B- 00 BRK +665C- 00 BRK +665D- A0 FF LDY #$FF +665F- 68 PLA +6660- 85 06 STA $06 +6662- 68 PLA +6663- 85 07 STA $07 +6665- C8 INY +6666- B9 40 60 LDA $6040,Y +6669- 91 06 STA ($06),Y +666B- CC 3F 60 CPY $603F +666E- D0 F5 BNE $6665 +6670- A5 07 LDA $07 +6672- 48 PHA +6673- A5 06 LDA $06 +6675- 48 PHA +6676- 60 RTS +6677- A0 FF LDY #$FF +6679- 68 PLA +667A- 85 06 STA $06 +667C- 68 PLA +667D- 85 07 STA $07 +667F- C8 INY +6680- B1 06 LDA ($06),Y +6682- 99 41 61 STA $6141,Y +6685- CC 40 61 CPY $6140 +6688- D0 F5 BNE $667F +668A- A5 07 LDA $07 +668C- 48 PHA +668D- A5 06 LDA $06 +668F- 48 PHA +6690- 60 RTS +6691- 68 PLA +6692- 8D 20 67 STA $6720 +6695- 68 PLA +6696- 8D 21 67 STA $6721 +6699- 68 PLA +669A- 8D 24 67 STA $6724 +669D- 68 PLA +669E- 85 EB STA $EB +66A0- 68 PLA +66A1- 85 EC STA $EC +66A3- A9 8D LDA #$8D +66A5- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66A8- A5 EC LDA $EC +66AA- 29 F0 AND #$F0 +66AC- 4A LSR +66AD- 4A LSR +66AE- 4A LSR +66AF- 4A LSR +66B0- AA TAX +66B1- BD 43 69 LDA $6943,X +66B4- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66B7- A5 EC LDA $EC +66B9- 29 0F AND #$0F +66BB- AA TAX +66BC- BD 43 69 LDA $6943,X +66BF- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66C2- A5 EB LDA $EB +66C4- 29 F0 AND #$F0 +66C6- 4A LSR +66C7- 4A LSR +66C8- 4A LSR +66C9- 4A LSR +66CA- AA TAX +66CB- BD 43 69 LDA $6943,X +66CE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66D1- A5 EB LDA $EB +66D3- 29 0F AND #$0F +66D5- AA TAX +66D6- BD 43 69 LDA $6943,X +66D9- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66DC- A9 BA LDA #$BA +66DE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66E1- A9 A0 LDA #$A0 +66E3- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +66E6- A0 00 LDY #$00 +66E8- B1 EB LDA ($EB),Y +66EA- 29 F0 AND #$F0 +66EC- 4A LSR +66ED- 4A LSR +66EE- 4A LSR +66EF- 4A LSR +66F0- 8D 23 67 STA $6723 +66F3- B1 EB LDA ($EB),Y +66F5- 29 0F AND #$0F +66F7- 8D 22 67 STA $6722 +66FA- AE 23 67 LDX $6723 +66FD- BD 43 69 LDA $6943,X +6700- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6703- AE 22 67 LDX $6722 +6706- BD 43 69 LDA $6943,X +6709- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +670C- A9 A0 LDA #$A0 +670E- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6711- C8 INY +6712- CC 24 67 CPY $6724 +6715- D0 D1 BNE $66E8 +6717- AD 21 67 LDA $6721 +671A- 48 PHA +671B- AD 20 67 LDA $6720 +671E- 48 PHA +671F- 60 RTS +6720- 00 BRK +6721- 00 BRK +6722- 00 BRK +6723- 00 BRK +6724- 00 BRK +6725- 68 PLA +6726- 85 06 STA $06 +6728- 68 PLA +6729- 85 07 STA $07 +672B- A0 01 LDY #$01 +672D- B1 06 LDA ($06),Y +672F- F0 06 BEQ $6737 +6731- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6734- C8 INY +6735- D0 F6 BNE $672D +6737- 18 CLC +6738- 98 TYA +6739- 65 06 ADC $06 +673B- 85 06 STA $06 +673D- A5 07 LDA $07 +673F- 69 00 ADC #$00 +6741- 48 PHA +6742- A5 06 LDA $06 +6744- 48 PHA +6745- 60 RTS +6746- 20 0C FD JSR $FD0C F8ROM:RDKEY +6749- 60 RTS +674A- 8D 43 62 STA $6243 +674D- 8E 44 62 STX $6244 +6750- 8C 45 62 STY $6245 +6753- 90 11 BCC $6766 +6755- B0 17 BCS $676E +6757- F0 1D BEQ $6776 +6759- D0 23 BNE $677E +675B- 30 29 BMI $6786 +675D- 10 2F BPL $678E +675F- 50 35 BVC $6796 +6761- 70 3B BVS $679E +6763- 4C A3 67 JMP $67A3 +6766- A9 00 LDA #$00 +6768- 8D 46 62 STA $6246 +676B- 4C 57 67 JMP $6757 +676E- A9 01 LDA #$01 +6770- 8D 46 62 STA $6246 +6773- 4C 57 67 JMP $6757 +6776- A9 01 LDA #$01 +6778- 8D 48 62 STA $6248 +677B- 4C 5B 67 JMP $675B +677E- A9 00 LDA #$00 +6780- 8D 48 62 STA $6248 +6783- 4C 5B 67 JMP $675B +6786- A9 01 LDA #$01 +6788- 8D 47 62 STA $6247 +678B- 4C 5F 67 JMP $675F +678E- A9 00 LDA #$00 +6790- 8D 47 62 STA $6247 +6793- 4C 5F 67 JMP $675F +6796- A9 00 LDA #$00 +6798- 8D 49 62 STA $6249 +679B- 4C A3 67 JMP $67A3 +679E- A9 01 LDA #$01 +67A0- 8D 49 62 STA $6249 +67A3- 60 RTS +67A4- 20 25 67 JSR $6725 +67A7- A0 8D LDY #$8D +67A9- 8D 00 20 STA $2000 +67AC- 25 67 AND $67 +67AE- D2 C5 CMP ($C5) +67B0- C7 ??? +67B1- C9 D3 CMP #$D3 +67B3- D4 ??? +67B4- D2 D9 CMP ($D9) +67B6- A0 C4 LDY #$C4 +67B8- D5 CD CMP $CD,X +67BA- D0 8D BNE $6749 +67BC- 00 BRK +67BD- 20 25 67 JSR $6725 +67C0- BD BD BD LDA $BDBD,X +67C3- BD BD BD LDA $BDBD,X +67C6- BD BD BD LDA $BDBD,X +67C9- BD BD BD LDA $BDBD,X +67CC- BD 8D 00 LDA $008D,X +67CF- 20 25 67 JSR $6725 +67D2- C1 BA CMP ($BA,X) +67D4- A0 00 LDY #$00 +67D6- AD 43 62 LDA $6243 +67D9- 29 F0 AND #$F0 +67DB- 4A LSR +67DC- 4A LSR +67DD- 4A LSR +67DE- 4A LSR +67DF- 8D 41 69 STA $6941 +67E2- AD 43 62 LDA $6243 +67E5- 29 0F AND #$0F +67E7- 8D 42 69 STA $6942 +67EA- AE 41 69 LDX $6941 +67ED- BD 43 69 LDA $6943,X +67F0- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +67F3- AE 42 69 LDX $6942 +67F6- BD 43 69 LDA $6943,X +67F9- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +67FC- 20 25 67 JSR $6725 +67FF- A0 8D LDY #$8D +6801- 00 BRK +6802- 20 25 67 JSR $6725 +6805- D8 CLD +6806- BA TSX +6807- A0 00 LDY #$00 +6809- AD 44 62 LDA $6244 +680C- 29 F0 AND #$F0 +680E- 4A LSR +680F- 4A LSR +6810- 4A LSR +6811- 4A LSR +6812- 8D 41 69 STA $6941 +6815- AD 44 62 LDA $6244 +6818- 29 0F AND #$0F +681A- 8D 42 69 STA $6942 +681D- AE 41 69 LDX $6941 +6820- BD 43 69 LDA $6943,X +6823- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6826- AE 42 69 LDX $6942 +6829- BD 43 69 LDA $6943,X +682C- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +682F- 20 25 67 JSR $6725 +6832- A0 8D LDY #$8D +6834- 00 BRK +6835- 20 25 67 JSR $6725 +6838- D9 BA A0 CMP $A0BA,Y +683B- 00 BRK +683C- AD 45 62 LDA $6245 +683F- 29 F0 AND #$F0 +6841- 4A LSR +6842- 4A LSR +6843- 4A LSR +6844- 4A LSR +6845- 8D 41 69 STA $6941 +6848- AD 45 62 LDA $6245 +684B- 29 0F AND #$0F +684D- 8D 42 69 STA $6942 +6850- AE 41 69 LDX $6941 +6853- BD 43 69 LDA $6943,X +6856- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6859- AE 42 69 LDX $6942 +685C- BD 43 69 LDA $6943,X +685F- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6862- 20 25 67 JSR $6725 +6865- A0 8D LDY #$8D +6867- 8D 00 20 STA $2000 +686A- 25 67 AND $67 +686C- D3 ??? +686D- D4 ??? +686E- C1 D4 CMP ($D4,X) +6870- D5 D3 CMP $D3,X +6872- A0 C6 LDY #$C6 +6874- CC C1 C7 CPY $C7C1 +6877- D3 ??? +6878- 8D 00 20 STA $2000 +687B- 25 67 AND $67 +687D- BD BD BD LDA $BDBD,X +6880- BD BD BD LDA $BDBD,X +6883- BD BD BD LDA $BDBD,X +6886- BD BD BD LDA $BDBD,X +6889- 8D 8D 00 STA $008D +688C- A9 00 LDA #$00 +688E- CD 46 62 CMP $6246 +6891- F0 12 BEQ $68A5 +6893- 20 25 67 JSR $6725 +6896- C3 ??? +6897- C1 D2 CMP ($D2,X) +6899- D2 D9 CMP ($D9) +689B- BA TSX +689C- A0 D3 LDY #$D3 +689E- C5 D4 CMP $D4 +68A0- 8D 00 4C STA $4C00 +68A3- B6 68 LDX $68,Y +68A5- 20 25 67 JSR $6725 +68A8- C3 ??? +68A9- C1 D2 CMP ($D2,X) +68AB- D2 D9 CMP ($D9) +68AD- BA TSX +68AE- A0 C3 LDY #$C3 +68B0- CC C5 C1 CPY $C1C5 +68B3- D2 8D CMP ($8D) +68B5- 00 BRK +68B6- A9 00 LDA #$00 +68B8- CD 47 62 CMP $6247 +68BB- F0 15 BEQ $68D2 +68BD- 20 25 67 JSR $6725 +68C0- CE C5 C7 DEC $C7C5 +68C3- C1 D4 CMP ($D4,X) +68C5- C9 D6 CMP #$D6 +68C7- C5 BA CMP $BA +68C9- A0 D3 LDY #$D3 +68CB- C5 D4 CMP $D4 +68CD- 8D 00 4C STA $4C00 +68D0- E6 68 INC $68 +68D2- 20 25 67 JSR $6725 +68D5- CE C5 C7 DEC $C7C5 +68D8- C1 D4 CMP ($D4,X) +68DA- C9 D6 CMP #$D6 +68DC- C5 BA CMP $BA +68DE- A0 C3 LDY #$C3 +68E0- CC C5 C1 CPY $C1C5 +68E3- D2 8D CMP ($8D) +68E5- 00 BRK +68E6- A9 00 LDA #$00 +68E8- CD 48 62 CMP $6248 +68EB- F0 11 BEQ $68FE +68ED- 20 25 67 JSR $6725 +68F0- DA PHX +68F1- C5 D2 CMP $D2 +68F3- CF ??? +68F4- BA TSX +68F5- A0 D3 LDY #$D3 +68F7- C5 D4 CMP $D4 +68F9- 8D 00 4C STA $4C00 +68FC- 0E 69 20 ASL $2069 +68FF- 25 67 AND $67 +6901- DA PHX +6902- C5 D2 CMP $D2 +6904- CF ??? +6905- BA TSX +6906- A0 C3 LDY #$C3 +6908- CC C5 C1 CPY $C1C5 +690B- D2 8D CMP ($8D) +690D- 00 BRK +690E- A9 00 LDA #$00 +6910- CD 49 62 CMP $6249 +6913- F0 15 BEQ $692A +6915- 20 25 67 JSR $6725 +6918- CF ??? +6919- D6 C5 DEC $C5,X +691B- D2 C6 CMP ($C6) +691D- CC CF D7 CPY $D7CF +6920- BA TSX +6921- A0 D3 LDY #$D3 +6923- C5 D4 CMP $D4 +6925- 8D 00 4C STA $4C00 +6928- 40 RTI +6929- 69 20 ADC #$20 +692B- 25 67 AND $67 +692D- CF ??? +692E- D6 C5 DEC $C5,X +6930- D2 C6 CMP ($C6) +6932- CC CF D7 CPY $D7CF +6935- BA TSX +6936- A0 C3 LDY #$C3 +6938- CC C5 C1 CPY $C1C5 +693B- D2 8D CMP ($8D) +693D- 8D 8D 00 STA $008D +6940- 60 RTS +6941- 00 BRK +6942- 00 BRK +6943- B0 B1 BCS $68F6 +6945- B2 B3 LDA ($B3) +6947- B4 B5 LDY $B5,X +6949- B6 B7 LDX $B7,Y +694B- B8 CLV +694C- B9 C1 C2 LDA $C2C1,Y +694F- C3 ??? +6950- C4 C5 CPY $C5 +6952- C6 A0 DEC $A0 +6954- 00 BRK +6955- B1 FE LDA ($FE),Y +6957- 8D 77 6A STA $6A77 +695A- C8 INY +695B- B1 FE LDA ($FE),Y +695D- 8D 78 6A STA $6A78 +6960- 20 4A 67 JSR $674A +6963- 68 PLA +6964- 85 FE STA $FE +6966- 68 PLA +6967- 85 FF STA $FF +6969- 68 PLA +696A- 8D 6E 6A STA $6A6E +696D- 68 PLA +696E- 8D 6F 6A STA $6A6F +6971- 68 PLA +6972- 8D 70 6A STA $6A70 +6975- 68 PLA +6976- 8D 71 6A STA $6A71 +6979- 68 PLA +697A- 8D 72 6A STA $6A72 +697D- 68 PLA +697E- 8D 73 6A STA $6A73 +6981- 68 PLA +6982- 8D 74 6A STA $6A74 +6985- 68 PLA +6986- 8D 75 6A STA $6A75 +6989- 68 PLA +698A- 8D 76 6A STA $6A76 +698D- 20 25 67 JSR $6725 +6990- A0 87 LDY #$87 +6992- 87 ??? +6993- 87 ??? +6994- 87 ??? +6995- 87 ??? +6996- 8D 8D 00 STA $008D +6999- 20 25 67 JSR $6725 +699C- C5 D2 CMP $D2 +699E- D2 CF CMP ($CF) +69A0- D2 A1 CMP ($A1) +69A2- 8D 8D 00 STA $008D +69A5- 20 25 67 JSR $6725 +69A8- D3 ??? +69A9- D5 C2 CMP $C2,X +69AB- D2 CF CMP ($CF) +69AD- D5 D4 CMP $D4,X +69AF- C9 CE CMP #$CE +69B1- C5 BA CMP $BA +69B3- A0 00 LDY #$00 +69B5- A0 00 LDY #$00 +69B7- AD 75 6A LDA $6A75 +69BA- 85 06 STA $06 +69BC- AD 76 6A LDA $6A76 +69BF- 85 07 STA $07 +69C1- B1 06 LDA ($06),Y +69C3- F0 06 BEQ $69CB +69C5- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +69C8- C8 INY +69C9- D0 F6 BNE $69C1 +69CB- 20 25 67 JSR $6725 +69CE- A0 8D LDY #$8D +69D0- 00 BRK +69D1- 20 25 67 JSR $6725 +69D4- CD C5 D3 CMP $D3C5 +69D7- D3 ??? +69D8- C1 C7 CMP ($C7,X) +69DA- C5 BA CMP $BA +69DC- A0 00 LDY #$00 +69DE- A0 00 LDY #$00 +69E0- AD 73 6A LDA $6A73 +69E3- 85 06 STA $06 +69E5- AD 74 6A LDA $6A74 +69E8- 85 07 STA $07 +69EA- B1 06 LDA ($06),Y +69EC- F0 06 BEQ $69F4 +69EE- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +69F1- C8 INY +69F2- D0 F6 BNE $69EA +69F4- 20 25 67 JSR $6725 +69F7- A0 8D LDY #$8D +69F9- 8D 00 20 STA $2000 +69FC- 46 67 LSR $67 +69FE- A0 00 LDY #$00 +6A00- AD 71 6A LDA $6A71 +6A03- 85 06 STA $06 +6A05- AD 72 6A LDA $6A72 +6A08- 85 07 STA $07 +6A0A- B1 06 LDA ($06),Y +6A0C- F0 06 BEQ $6A14 +6A0E- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +6A11- C8 INY +6A12- D0 F6 BNE $6A0A +6A14- 20 25 67 JSR $6725 +6A17- A0 8D LDY #$8D +6A19- 00 BRK +6A1A- AD 70 6A LDA $6A70 +6A1D- 48 PHA +6A1E- AD 6F 6A LDA $6A6F +6A21- 48 PHA +6A22- AD 6E 6A LDA $6A6E +6A25- 48 PHA +6A26- 20 91 66 JSR $6691 +6A29- 20 46 67 JSR $6746 +6A2C- A5 FF LDA $FF +6A2E- 48 PHA +6A2F- A5 FE LDA $FE +6A31- 48 PHA +6A32- 20 25 67 JSR $6725 +6A35- A0 8D LDY #$8D +6A37- 8D 00 20 STA $2000 +6A3A- 46 67 LSR $67 +6A3C- 20 A4 67 JSR $67A4 +6A3F- 20 46 67 JSR $6746 +6A42- AD 41 62 LDA $6241 +6A45- C9 01 CMP #$01 +6A47- F0 01 BEQ $6A4A +6A49- 60 RTS +6A4A- 20 25 67 JSR $6725 +6A4D- A0 8D LDY #$8D +6A4F- 8D 00 20 STA $2000 +6A52- 25 67 AND $67 +6A54- C2 ??? +6A55- D2 C5 CMP ($C5) +6A57- C1 CB CMP ($CB,X) +6A59- A0 C1 LDY #$C1 +6A5B- D4 ??? +6A5C- BA TSX +6A5D- A0 00 LDY #$00 +6A5F- A9 6A LDA #$6A +6A61- 48 PHA +6A62- A9 77 LDA #$77 +6A64- 48 PHA +6A65- A9 02 LDA #$02 +6A67- 48 PHA +6A68- 20 91 66 JSR $6691 +6A6B- 4C D0 03 JMP $03D0 +6A6E- 00 BRK +6A6F- 00 BRK +6A70- 00 BRK +6A71- 00 BRK +6A72- 00 BRK +6A73- 00 BRK +6A74- 00 BRK +6A75- 00 BRK +6A76- 00 BRK +6A77- 00 BRK +6A78- 00 BRK +6A79- 68 PLA +6A7A- 85 FE STA $FE +6A7C- 68 PLA +6A7D- 85 FF STA $FF +6A7F- 68 PLA +6A80- 8D 14 6B STA $6B14 +6A83- 68 PLA +6A84- 8D 11 6B STA $6B11 +6A87- 8D 13 6B STA $6B13 +6A8A- 68 PLA +6A8B- 8D 10 6B STA $6B10 +6A8E- 8D 12 6B STA $6B12 +6A91- 68 PLA +6A92- 85 06 STA $06 +6A94- 68 PLA +6A95- 85 07 STA $07 +6A97- A0 00 LDY #$00 +6A99- A9 00 LDA #$00 +6A9B- 84 19 STY $19 +6A9D- F0 0F BEQ $6AAE +6A9F- 18 CLC +6AA0- 6D 10 6B ADC $6B10 +6AA3- AA TAX +6AA4- 98 TYA +6AA5- 65 19 ADC $19 +6AA7- A8 TAY +6AA8- 8A TXA +6AA9- 0E 10 6B ASL $6B10 +6AAC- 26 19 ROL $19 +6AAE- 4E 11 6B LSR $6B11 +6AB1- B0 EC BCS $6A9F +6AB3- D0 F4 BNE $6AA9 +6AB5- 18 CLC +6AB6- E8 INX +6AB7- E8 INX +6AB8- 90 01 BCC $6ABB +6ABA- C8 INY +6ABB- 8E 0E 6B STX $6B0E +6ABE- 8C 0F 6B STY $6B0F +6AC1- AD 14 6B LDA $6B14 +6AC4- AE 0F 6B LDX $6B0F +6AC7- F0 0C BEQ $6AD5 +6AC9- A0 00 LDY #$00 +6ACB- 91 06 STA ($06),Y +6ACD- C8 INY +6ACE- D0 FB BNE $6ACB +6AD0- E6 07 INC $07 +6AD2- CA DEX +6AD3- D0 F6 BNE $6ACB +6AD5- AE 0E 6B LDX $6B0E +6AD8- F0 08 BEQ $6AE2 +6ADA- A0 00 LDY #$00 +6ADC- 91 06 STA ($06),Y +6ADE- C8 INY +6ADF- CA DEX +6AE0- D0 FA BNE $6ADC +6AE2- A0 00 LDY #$00 +6AE4- AD 12 6B LDA $6B12 +6AE7- 91 06 STA ($06),Y +6AE9- C8 INY +6AEA- AD 13 6B LDA $6B13 +6AED- 91 06 STA ($06),Y +6AEF- A5 FF LDA $FF +6AF1- 48 PHA +6AF2- A5 FE LDA $FE +6AF4- 48 PHA +6AF5- A4 06 LDY $06 +6AF7- A6 07 LDX $07 +6AF9- AD 12 6B LDA $6B12 +6AFC- AD 0E 6B LDA $6B0E +6AFF- 8D 40 60 STA $6040 +6B02- AD 0F 6B LDA $6B0F +6B05- 8D 41 60 STA $6041 +6B08- A9 02 LDA #$02 +6B0A- 8D 3F 60 STA $603F +6B0D- 60 RTS +6B0E- 00 BRK +6B0F- 00 BRK +6B10- 00 BRK +6B11- 00 BRK +6B12- 00 BRK +6B13- 00 BRK +6B14- 00 BRK +6B15- 68 PLA +6B16- 85 FE STA $FE +6B18- 68 PLA +6B19- 85 FF STA $FF +6B1B- 68 PLA +6B1C- 8D 11 6C STA $6C11 +6B1F- 68 PLA +6B20- 8D 0F 6C STA $6C0F +6B23- 68 PLA +6B24- 8D 0A 6C STA $6C0A +6B27- 8D 0C 6C STA $6C0C +6B2A- 68 PLA +6B2B- 8D 09 6C STA $6C09 +6B2E- 8D 0B 6C STA $6C0B +6B31- 68 PLA +6B32- 85 06 STA $06 +6B34- 68 PLA +6B35- 85 07 STA $07 +6B37- A9 00 LDA #$00 +6B39- 8D 10 6C STA $6C10 +6B3C- A9 00 LDA #$00 +6B3E- A8 TAY +6B3F- 84 19 STY $19 +6B41- F0 0F BEQ $6B52 +6B43- 18 CLC +6B44- 6D 09 6C ADC $6C09 +6B47- AA TAX +6B48- 98 TYA +6B49- 65 19 ADC $19 +6B4B- A8 TAY +6B4C- 8A TXA +6B4D- 0E 09 6C ASL $6C09 +6B50- 26 19 ROL $19 +6B52- 4E 0A 6C LSR $6C0A +6B55- B0 EC BCS $6B43 +6B57- D0 F4 BNE $6B4D +6B59- 8E 0D 6C STX $6C0D +6B5C- 8C 0E 6C STY $6C0E +6B5F- A9 00 LDA #$00 +6B61- 8D 05 6C STA $6C05 +6B64- 8D 06 6C STA $6C06 +6B67- 8D 07 6C STA $6C07 +6B6A- 8D 08 6C STA $6C08 +6B6D- A2 10 LDX #$10 +6B6F- 4E 0E 6C LSR $6C0E +6B72- 6E 0D 6C ROR $6C0D +6B75- 90 10 BCC $6B87 +6B77- AD 07 6C LDA $6C07 +6B7A- 18 CLC +6B7B- 6D 0F 6C ADC $6C0F +6B7E- 8D 07 6C STA $6C07 +6B81- AD 08 6C LDA $6C08 +6B84- 6D 10 6C ADC $6C10 +6B87- 6A ROR +6B88- 8D 08 6C STA $6C08 +6B8B- 6E 07 6C ROR $6C07 +6B8E- 6E 06 6C ROR $6C06 +6B91- 6E 05 6C ROR $6C05 +6B94- CA DEX +6B95- D0 D8 BNE $6B6F +6B97- 18 CLC +6B98- EE 05 6C INC $6C05 +6B9B- EE 05 6C INC $6C05 +6B9E- EE 05 6C INC $6C05 +6BA1- 90 03 BCC $6BA6 +6BA3- EE 06 6C INC $6C06 +6BA6- AD 11 6C LDA $6C11 +6BA9- AE 06 6C LDX $6C06 +6BAC- F0 0C BEQ $6BBA +6BAE- A0 00 LDY #$00 +6BB0- 91 06 STA ($06),Y +6BB2- C8 INY +6BB3- D0 FB BNE $6BB0 +6BB5- E6 07 INC $07 +6BB7- CA DEX +6BB8- D0 F6 BNE $6BB0 +6BBA- AE 05 6C LDX $6C05 +6BBD- F0 08 BEQ $6BC7 +6BBF- A0 00 LDY #$00 +6BC1- 91 06 STA ($06),Y +6BC3- C8 INY +6BC4- CA DEX +6BC5- D0 FA BNE $6BC1 +6BC7- A0 00 LDY #$00 +6BC9- AD 0B 6C LDA $6C0B +6BCC- 91 06 STA ($06),Y +6BCE- C8 INY +6BCF- AD 0C 6C LDA $6C0C +6BD2- 91 06 STA ($06),Y +6BD4- C8 INY +6BD5- AD 0F 6C LDA $6C0F +6BD8- 91 06 STA ($06),Y +6BDA- A5 FF LDA $FF +6BDC- 48 PHA +6BDD- A5 FE LDA $FE +6BDF- 48 PHA +6BE0- A4 06 LDY $06 +6BE2- A6 07 LDX $07 +6BE4- AD 05 6C LDA $6C05 +6BE7- 8D 40 60 STA $6040 +6BEA- AD 06 6C LDA $6C06 +6BED- 8D 41 60 STA $6041 +6BF0- AD 07 6C LDA $6C07 +6BF3- 8D 42 60 STA $6042 +6BF6- AD 08 6C LDA $6C08 +6BF9- 8D 43 60 STA $6043 +6BFC- A9 04 LDA #$04 +6BFE- 8D 3F 60 STA $603F +6C01- AD 0F 6C LDA $6C0F +6C04- 60 RTS +6C05- 00 BRK +6C06- 00 BRK +6C07- 00 BRK +6C08- 00 BRK +6C09- 00 BRK +6C0A- 00 BRK +6C0B- 00 BRK +6C0C- 00 BRK +6C0D- 00 BRK +6C0E- 00 BRK +6C0F- 00 BRK +6C10- 00 BRK +6C11- 00 BRK +6C12- 68 PLA +6C13- 85 FE STA $FE +6C15- 68 PLA +6C16- 85 FF STA $FF +6C18- 68 PLA +6C19- 8D DF 6C STA $6CDF +6C1C- CE DF 6C DEC $6CDF +6C1F- 68 PLA +6C20- 85 06 STA $06 +6C22- 68 PLA +6C23- 85 07 STA $07 +6C25- A9 00 LDA #$00 +6C27- 8D E0 6C STA $6CE0 +6C2A- A0 01 LDY #$01 +6C2C- B1 06 LDA ($06),Y +6C2E- 8D E1 6C STA $6CE1 +6C31- 8D 3F 60 STA $603F +6C34- 88 DEY +6C35- B1 06 LDA ($06),Y +6C37- 8D E2 6C STA $6CE2 +6C3A- AD 42 62 LDA $6242 +6C3D- C9 01 CMP #$01 +6C3F- F0 03 BEQ $6C44 +6C41- 4C 6D 6C JMP $6C6D +6C44- AD DF 6C LDA $6CDF +6C47- CD E2 6C CMP $6CE2 +6C4A- B0 03 BCS $6C4F +6C4C- 4C 6D 6C JMP $6C6D +6C4F- A9 6C LDA #$6C +6C51- 48 PHA +6C52- A9 E3 LDA #$E3 +6C54- 48 PHA +6C55- A9 6D LDA #$6D +6C57- 48 PHA +6C58- A9 1F LDA #$1F +6C5A- 48 PHA +6C5B- A9 6C LDA #$6C +6C5D- 48 PHA +6C5E- A9 F8 LDA #$F8 +6C60- 48 PHA +6C61- A9 6C LDA #$6C +6C63- 48 PHA +6C64- A9 DD LDA #$DD +6C66- 48 PHA +6C67- A9 06 LDA #$06 +6C69- 48 PHA +6C6A- 20 53 69 JSR $6953 +6C6D- A0 00 LDY #$00 +6C6F- A9 00 LDA #$00 +6C71- A8 TAY +6C72- 84 19 STY $19 +6C74- F0 0F BEQ $6C85 +6C76- 18 CLC +6C77- 6D DF 6C ADC $6CDF +6C7A- AA TAX +6C7B- 98 TYA +6C7C- 65 19 ADC $19 +6C7E- A8 TAY +6C7F- 8A TXA +6C80- 0E DF 6C ASL $6CDF +6C83- 26 19 ROL $19 +6C85- 4E E1 6C LSR $6CE1 +6C88- B0 EC BCS $6C76 +6C8A- D0 F4 BNE $6C80 +6C8C- 8E DF 6C STX $6CDF +6C8F- 8C E0 6C STY $6CE0 +6C92- 18 CLC +6C93- A9 02 LDA #$02 +6C95- 6D DF 6C ADC $6CDF +6C98- 8D DD 6C STA $6CDD +6C9B- A9 00 LDA #$00 +6C9D- 6D E0 6C ADC $6CE0 +6CA0- 8D DE 6C STA $6CDE +6CA3- 18 CLC +6CA4- AD DD 6C LDA $6CDD +6CA7- 65 06 ADC $06 +6CA9- 8D DD 6C STA $6CDD +6CAC- AD DE 6C LDA $6CDE +6CAF- 65 07 ADC $07 +6CB1- 8D DE 6C STA $6CDE +6CB4- A0 00 LDY #$00 +6CB6- AD DD 6C LDA $6CDD +6CB9- 85 06 STA $06 +6CBB- AD DE 6C LDA $6CDE +6CBE- 85 07 STA $07 +6CC0- B1 06 LDA ($06),Y +6CC2- 99 40 60 STA $6040,Y +6CC5- C8 INY +6CC6- CC 3F 60 CPY $603F +6CC9- 90 F5 BCC $6CC0 +6CCB- F0 F3 BEQ $6CC0 +6CCD- A5 FF LDA $FF +6CCF- 48 PHA +6CD0- A5 FE LDA $FE +6CD2- 48 PHA +6CD3- AC DD 6C LDY $6CDD +6CD6- AE DE 6C LDX $6CDE +6CD9- AD 3F 60 LDA $603F +6CDC- 60 RTS +6CDD- 00 BRK +6CDE- 00 BRK +6CDF- 00 BRK +6CE0- 00 BRK +6CE1- 00 BRK +6CE2- 00 BRK +6CE3- C1 C7 CMP ($C7,X) +6CE5- C5 D4 CMP $D4 +6CE7- B8 CLV +6CE8- B1 A0 LDA ($A0),Y +6CEA- A8 TAY +6CEB- C7 ??? +6CEC- C5 D4 CMP $D4 +6CEE- B8 CLV +6CEF- B1 A0 LDA ($A0),Y +6CF1- CD C1 C3 CMP $C3C1 +6CF4- D2 CF CMP ($CF) +6CF6- A9 00 LDA #$00 +6CF8- C4 D5 CPY $D5 +6CFA- CD D0 C9 CMP $C9D0 +6CFD- CE C7 A0 DEC $A0C7 +6D00- D2 C5 CMP ($C5) +6D02- D3 ??? +6D03- A8 TAY +6D04- B2 A9 LDA ($A9) +6D06- A0 C9 LDY #$C9 +6D08- C4 D8 CPY $D8 +6D0A- A8 TAY +6D0B- B2 A9 LDA ($A9) +6D0D- A0 C5 LDY #$C5 +6D0F- D3 ??? +6D10- C9 DA CMP #$DA +6D12- C5 A8 CMP $A8 +6D14- B1 A9 LDA ($A9),Y +6D16- A0 C1 LDY #$C1 +6D18- CC C5 CE CPY $CEC5 +6D1B- A8 TAY +6D1C- B1 A9 LDA ($A9),Y +6D1E- 00 BRK +6D1F- CF ??? +6D20- D5 D4 CMP $D4,X +6D22- A0 CF LDY #$CF +6D24- C6 A0 DEC $A0 +6D26- C2 ??? +6D27- CF ??? +6D28- D5 CE CMP $CE,X +6D2A- C4 D3 CPY $D3 +6D2C- A1 A0 LDA ($A0,X) +6D2E- C9 CE CMP #$CE +6D30- C4 C5 CPY $C5 +6D32- D8 CLD +6D33- A0 BE LDY #$BE +6D35- A0 C1 LDY #$C1 +6D37- D2 D2 CMP ($D2) +6D39- C1 D9 CMP ($D9,X) +6D3B- A0 CC LDY #$CC +6D3D- C5 CE CMP $CE +6D3F- C7 ??? +6D40- D4 ??? +6D41- C8 INY +6D42- 00 BRK +6D43- 68 PLA +6D44- 85 FE STA $FE +6D46- 68 PLA +6D47- 85 FF STA $FF +6D49- 68 PLA +6D4A- 8D 98 6E STA $6E98 +6D4D- 68 PLA +6D4E- 8D 96 6E STA $6E96 +6D51- 68 PLA +6D52- 85 06 STA $06 +6D54- 68 PLA +6D55- 85 07 STA $07 +6D57- CE 96 6E DEC $6E96 +6D5A- CE 98 6E DEC $6E98 +6D5D- A0 02 LDY #$02 +6D5F- B1 06 LDA ($06),Y +6D61- 8D A2 6E STA $6EA2 +6D64- 8D A4 6E STA $6EA4 +6D67- 88 DEY +6D68- B1 06 LDA ($06),Y +6D6A- 8D 9B 6E STA $6E9B +6D6D- 88 DEY +6D6E- B1 06 LDA ($06),Y +6D70- 8D 9A 6E STA $6E9A +6D73- A9 00 LDA #$00 +6D75- 8D A3 6E STA $6EA3 +6D78- AD 42 62 LDA $6242 +6D7B- C9 01 CMP #$01 +6D7D- F0 03 BEQ $6D82 +6D7F- 4C E2 6D JMP $6DE2 +6D82- AD 96 6E LDA $6E96 +6D85- CD 9A 6E CMP $6E9A +6D88- B0 03 BCS $6D8D +6D8A- 4C AB 6D JMP $6DAB +6D8D- A9 6E LDA #$6E +6D8F- 48 PHA +6D90- A9 A5 LDA #$A5 +6D92- 48 PHA +6D93- A9 6F LDA #$6F +6D95- 48 PHA +6D96- A9 03 LDA #$03 +6D98- 48 PHA +6D99- A9 6E LDA #$6E +6D9B- 48 PHA +6D9C- A9 BA LDA #$BA +6D9E- 48 PHA +6D9F- A9 6E LDA #$6E +6DA1- 48 PHA +6DA2- A9 96 LDA #$96 +6DA4- 48 PHA +6DA5- A9 0F LDA #$0F +6DA7- 48 PHA +6DA8- 20 53 69 JSR $6953 +6DAB- AD 98 6E LDA $6E98 +6DAE- CD 9B 6E CMP $6E9B +6DB1- B0 03 BCS $6DB6 +6DB3- 4C D4 6D JMP $6DD4 +6DB6- A9 6E LDA #$6E +6DB8- 48 PHA +6DB9- A9 A5 LDA #$A5 +6DBB- 48 PHA +6DBC- A9 6F LDA #$6F +6DBE- 48 PHA +6DBF- A9 24 LDA #$24 +6DC1- 48 PHA +6DC2- A9 6E LDA #$6E +6DC4- 48 PHA +6DC5- A9 BA LDA #$BA +6DC7- 48 PHA +6DC8- A9 6E LDA #$6E +6DCA- 48 PHA +6DCB- A9 96 LDA #$96 +6DCD- 48 PHA +6DCE- A9 0F LDA #$0F +6DD0- 48 PHA +6DD1- 20 53 69 JSR $6953 +6DD4- AD 96 6E LDA $6E96 +6DD7- C9 FF CMP #$FF +6DD9- F0 B2 BEQ $6D8D +6DDB- AD 98 6E LDA $6E98 +6DDE- C9 FF CMP #$FF +6DE0- F0 D4 BEQ $6DB6 +6DE2- A9 00 LDA #$00 +6DE4- A8 TAY +6DE5- 84 19 STY $19 +6DE7- F0 0F BEQ $6DF8 +6DE9- 18 CLC +6DEA- 6D 98 6E ADC $6E98 +6DED- AA TAX +6DEE- 98 TYA +6DEF- 65 19 ADC $19 +6DF1- A8 TAY +6DF2- 8A TXA +6DF3- 0E 98 6E ASL $6E98 +6DF6- 26 19 ROL $19 +6DF8- 4E 9B 6E LSR $6E9B +6DFB- B0 EC BCS $6DE9 +6DFD- D0 F4 BNE $6DF3 +6DFF- 8E A0 6E STX $6EA0 +6E02- 8C A1 6E STY $6EA1 +6E05- 18 CLC +6E06- AD A0 6E LDA $6EA0 +6E09- 6D 96 6E ADC $6E96 +6E0C- 8D A0 6E STA $6EA0 +6E0F- 90 08 BCC $6E19 +6E11- AD A1 6E LDA $6EA1 +6E14- 69 01 ADC #$01 +6E16- 8D A1 6E STA $6EA1 +6E19- A9 00 LDA #$00 +6E1B- 8D 9E 6E STA $6E9E +6E1E- 8D 9F 6E STA $6E9F +6E21- A2 10 LDX #$10 +6E23- 4E A1 6E LSR $6EA1 +6E26- 6E A0 6E ROR $6EA0 +6E29- 90 10 BCC $6E3B +6E2B- AD 9E 6E LDA $6E9E +6E2E- 18 CLC +6E2F- 6D A2 6E ADC $6EA2 +6E32- 8D 9E 6E STA $6E9E +6E35- AD 9F 6E LDA $6E9F +6E38- 6D A3 6E ADC $6EA3 +6E3B- 6A ROR +6E3C- 8D 9F 6E STA $6E9F +6E3F- 6E 9E 6E ROR $6E9E +6E42- 6E 9D 6E ROR $6E9D +6E45- 6E 9C 6E ROR $6E9C +6E48- CA DEX +6E49- D0 D8 BNE $6E23 +6E4B- 18 CLC +6E4C- EE 9C 6E INC $6E9C +6E4F- EE 9C 6E INC $6E9C +6E52- EE 9C 6E INC $6E9C +6E55- 90 03 BCC $6E5A +6E57- EE 9D 6E INC $6E9D +6E5A- 18 CLC +6E5B- AD 9C 6E LDA $6E9C +6E5E- 65 06 ADC $06 +6E60- 8D 9C 6E STA $6E9C +6E63- AD 9D 6E LDA $6E9D +6E66- 65 07 ADC $07 +6E68- 8D 9D 6E STA $6E9D +6E6B- AC 9C 6E LDY $6E9C +6E6E- AE 9D 6E LDX $6E9D +6E71- 84 06 STY $06 +6E73- 86 07 STX $07 +6E75- A0 00 LDY #$00 +6E77- B1 06 LDA ($06),Y +6E79- 99 40 60 STA $6040,Y +6E7C- C8 INY +6E7D- CC A4 6E CPY $6EA4 +6E80- D0 F5 BNE $6E77 +6E82- AD A4 6E LDA $6EA4 +6E85- 8D 3F 60 STA $603F +6E88- A5 FF LDA $FF +6E8A- 48 PHA +6E8B- A5 FE LDA $FE +6E8D- 48 PHA +6E8E- AD 3F 60 LDA $603F +6E91- A4 06 LDY $06 +6E93- A6 07 LDX $07 +6E95- 60 RTS +6E96- 00 BRK +6E97- 00 BRK +6E98- 00 BRK +6E99- 00 BRK +6E9A- 00 BRK +6E9B- 00 BRK +6E9C- 00 BRK +6E9D- 00 BRK +6E9E- 00 BRK +6E9F- 00 BRK +6EA0- 00 BRK +6EA1- 00 BRK +6EA2- 00 BRK +6EA3- 00 BRK +6EA4- 00 BRK +6EA5- C1 C7 CMP ($C7,X) +6EA7- C5 D4 CMP $D4 +6EA9- B8 CLV +6EAA- B2 A0 LDA ($A0) +6EAC- A8 TAY +6EAD- C7 ??? +6EAE- C5 D4 CMP $D4 +6EB0- B8 CLV +6EB1- B2 A0 LDA ($A0) +6EB3- CD C1 C3 CMP $C3C1 +6EB6- D2 CF CMP ($CF) +6EB8- A9 00 LDA #$00 +6EBA- BA TSX +6EBB- D8 CLD +6EBC- C9 C4 CMP #$C4 +6EBE- D8 CLD +6EBF- A8 TAY +6EC0- B2 A9 LDA ($A9) +6EC2- A0 BA LDY #$BA +6EC4- D9 C9 C4 CMP $C4C9,Y +6EC7- D8 CLD +6EC8- A8 TAY +6EC9- B2 A9 LDA ($A9) +6ECB- A0 BA LDY #$BA +6ECD- D8 CLD +6ECE- CC C5 CE CPY $CEC5 +6ED1- A8 TAY +6ED2- B1 A9 LDA ($A9),Y +6ED4- A0 BA LDY #$BA +6ED6- D9 CC C5 CMP $C5CC,Y +6ED9- CE A8 B1 DEC $B1A8 +6EDC- A9 BA LDA #$BA +6EDE- D0 D2 BNE $6EB2 +6EE0- CF ??? +6EE1- C4 A8 CPY $A8 +6EE3- B4 A9 LDY $A9,X +6EE5- A0 BA LDY #$BA +6EE7- CD CC C9 CMP $C9CC +6EEA- C5 D2 CMP $D2 +6EEC- A8 TAY +6EED- B2 A9 LDA ($A9) +6EEF- A0 BA LDY #$BA +6EF1- CD C3 C1 CMP $C1C3 +6EF4- CE C4 A8 DEC $A8C4 +6EF7- B2 A9 LDA ($A9) +6EF9- A0 BA LDY #$BA +6EFB- C5 CC CMP $CC +6EFD- C5 CE CMP $CE +6EFF- A8 TAY +6F00- B1 A9 LDA ($A9),Y +6F02- 00 BRK +6F03- CF ??? +6F04- D5 D4 CMP $D4,X +6F06- A0 CF LDY #$CF +6F08- C6 A0 DEC $A0 +6F0A- C2 ??? +6F0B- CF ??? +6F0C- D5 CE CMP $CE,X +6F0E- C4 D3 CPY $D3 +6F10- A1 A0 LDA ($A0,X) +6F12- A0 D8 LDY #$D8 +6F14- A0 BE LDY #$BE +6F16- A0 CD LDY #$CD +6F18- C1 D8 CMP ($D8,X) +6F1A- A0 CF LDY #$CF +6F1C- D2 A0 CMP ($A0) +6F1E- C9 D3 CMP #$D3 +6F20- A0 B0 LDY #$B0 +6F22- AE 00 CF LDX $CF00 +6F25- D5 D4 CMP $D4,X +6F27- A0 CF LDY #$CF +6F29- C6 A0 DEC $A0 +6F2B- C2 ??? +6F2C- CF ??? +6F2D- D5 CE CMP $CE,X +6F2F- C4 D3 CPY $D3 +6F31- A1 A0 LDA ($A0,X) +6F33- D9 A0 BE CMP $BEA0,Y +6F36- A0 CD LDY #$CD +6F38- C1 D8 CMP ($D8,X) +6F3A- A0 CF LDY #$CF +6F3C- D2 A0 CMP ($A0) +6F3E- C9 D3 CMP #$D3 +6F40- A0 B0 LDY #$B0 +6F42- AE 00 68 LDX $6800 +6F45- 85 FE STA $FE +6F47- 68 PLA +6F48- 85 FF STA $FF +6F4A- 68 PLA +6F4B- 8D 14 70 STA $7014 +6F4E- 8D 16 70 STA $7016 +6F51- CE 14 70 DEC $7014 +6F54- CE 16 70 DEC $7016 +6F57- 68 PLA +6F58- 85 ED STA $ED +6F5A- 68 PLA +6F5B- 85 EE STA $EE +6F5D- 68 PLA +6F5E- 85 EB STA $EB +6F60- 68 PLA +6F61- 85 EC STA $EC +6F63- A0 00 LDY #$00 +6F65- B1 ED LDA ($ED),Y +6F67- 8D 13 70 STA $7013 +6F6A- A0 01 LDY #$01 +6F6C- B1 ED LDA ($ED),Y +6F6E- 8D 11 70 STA $7011 +6F71- 8D 12 70 STA $7012 +6F74- AD 42 62 LDA $6242 +6F77- C9 01 CMP #$01 +6F79- F0 03 BEQ $6F7E +6F7B- 4C AA 6F JMP $6FAA +6F7E- AD 16 70 LDA $7016 +6F81- 18 CLC +6F82- 69 01 ADC #$01 +6F84- CD 13 70 CMP $7013 +6F87- B0 03 BCS $6F8C +6F89- 4C AA 6F JMP $6FAA +6F8C- A9 70 LDA #$70 +6F8E- 48 PHA +6F8F- A9 1A LDA #$1A +6F91- 48 PHA +6F92- A9 70 LDA #$70 +6F94- 48 PHA +6F95- A9 70 LDA #$70 +6F97- 48 PHA +6F98- A9 70 LDA #$70 +6F9A- 48 PHA +6F9B- A9 2F LDA #$2F +6F9D- 48 PHA +6F9E- A9 70 LDA #$70 +6FA0- 48 PHA +6FA1- A9 11 LDA #$11 +6FA3- 48 PHA +6FA4- A9 09 LDA #$09 +6FA6- 48 PHA +6FA7- 20 53 69 JSR $6953 +6FAA- A0 00 LDY #$00 +6FAC- A9 00 LDA #$00 +6FAE- 84 19 STY $19 +6FB0- 84 1A STY $1A +6FB2- F0 0F BEQ $6FC3 +6FB4- 18 CLC +6FB5- 6D 14 70 ADC $7014 +6FB8- AA TAX +6FB9- 98 TYA +6FBA- 65 19 ADC $19 +6FBC- A8 TAY +6FBD- 8A TXA +6FBE- 0E 14 70 ASL $7014 +6FC1- 26 19 ROL $19 +6FC3- 4E 11 70 LSR $7011 +6FC6- B0 EC BCS $6FB4 +6FC8- D0 F4 BNE $6FBE +6FCA- 8E 16 70 STX $7016 +6FCD- 8C 17 70 STY $7017 +6FD0- 18 CLC +6FD1- A9 02 LDA #$02 +6FD3- 6D 16 70 ADC $7016 +6FD6- 8D 18 70 STA $7018 +6FD9- A9 00 LDA #$00 +6FDB- 6D 17 70 ADC $7017 +6FDE- 8D 19 70 STA $7019 +6FE1- 18 CLC +6FE2- AD 18 70 LDA $7018 +6FE5- 65 ED ADC $ED +6FE7- 8D 18 70 STA $7018 +6FEA- AD 19 70 LDA $7019 +6FED- 65 EE ADC $EE +6FEF- 8D 19 70 STA $7019 +6FF2- 85 09 STA $09 +6FF4- AD 18 70 LDA $7018 +6FF7- 85 08 STA $08 +6FF9- B1 EB LDA ($EB),Y +6FFB- 91 08 STA ($08),Y +6FFD- C8 INY +6FFE- CC 12 70 CPY $7012 +7001- D0 F6 BNE $6FF9 +7003- A5 FF LDA $FF +7005- 48 PHA +7006- A5 FE LDA $FE +7008- 48 PHA +7009- A6 09 LDX $09 +700B- A4 08 LDY $08 +700D- AD 11 70 LDA $7011 +7010- 60 RTS +7011- 00 BRK +7012- 00 BRK +7013- 00 BRK +7014- 00 BRK +7015- 00 BRK +7016- 00 BRK +7017- 00 BRK +7018- 00 BRK +7019- 00 BRK +701A- C1 D0 CMP ($D0,X) +701C- D5 D4 CMP $D4,X +701E- B8 CLV +701F- B1 A0 LDA ($A0),Y +7021- A8 TAY +7022- D0 D5 BNE $6FF9 +7024- D4 ??? +7025- B8 CLV +7026- B1 A0 LDA ($A0),Y +7028- CD C1 C3 CMP $C3C1 +702B- D2 CF CMP ($CF) +702D- A9 00 LDA #$00 +702F- C4 D5 CPY $D5 +7031- CD D0 C9 CMP $C9D0 +7034- CE C7 A0 DEC $A0C7 +7037- BA TSX +7038- C5 D3 CMP $D3 +703A- C9 DA CMP #$DA +703C- C5 A8 CMP $A8 +703E- B1 A9 LDA ($A9),Y +7040- A0 BA LDY #$BA +7042- C5 D3 CMP $D3 +7044- C9 DA CMP #$DA +7046- C5 C2 CMP $C2 +7048- C1 CB CMP ($CB,X) +704A- A8 TAY +704B- B1 A9 LDA ($A9),Y +704D- A0 BA LDY #$BA +704F- C1 D3 CMP ($D3,X) +7051- C9 DA CMP #$DA +7053- C5 A8 CMP $A8 +7055- B1 A9 LDA ($A9),Y +7057- BA TSX +7058- C1 C9 CMP ($C9,X) +705A- C4 D8 CPY $D8 +705C- A8 TAY +705D- B2 A9 LDA ($A9) +705F- A0 BA LDY #$BA +7061- C9 C4 CMP #$C4 +7063- D8 CLD +7064- A8 TAY +7065- B2 A9 LDA ($A9) +7067- A0 BA LDY #$BA +7069- D2 C5 CMP ($C5) +706B- D3 ??? +706C- A8 TAY +706D- B2 A9 LDA ($A9) +706F- 00 BRK +7070- CF ??? +7071- D5 D4 CMP $D4,X +7073- A0 CF LDY #$CF +7075- C6 A0 DEC $A0 +7077- C2 ??? +7078- CF ??? +7079- D5 CE CMP $CE,X +707B- C4 D3 CPY $D3 +707D- A1 A0 LDA ($A0,X) +707F- C9 CE CMP #$CE +7081- C4 C5 CPY $C5 +7083- D8 CLD +7084- A0 BE LDY #$BE +7086- A0 C1 LDY #$C1 +7088- D2 D2 CMP ($D2) +708A- C1 D9 CMP ($D9,X) +708C- A0 CC LDY #$CC +708E- C5 CE CMP $CE +7090- C7 ??? +7091- D4 ??? +7092- C8 INY +7093- 00 BRK +7094- 68 PLA +7095- 85 FE STA $FE +7097- 68 PLA +7098- 85 FF STA $FF +709A- 68 PLA +709B- 8D F0 71 STA $71F0 +709E- CE F0 71 DEC $71F0 +70A1- 68 PLA +70A2- 8D EF 71 STA $71EF +70A5- CE EF 71 DEC $71EF +70A8- 68 PLA +70A9- 85 ED STA $ED +70AB- 68 PLA +70AC- 85 EE STA $EE +70AE- 68 PLA +70AF- 85 EB STA $EB +70B1- 68 PLA +70B2- 85 EC STA $EC +70B4- A0 02 LDY #$02 +70B6- B1 ED LDA ($ED),Y +70B8- 8D EE 71 STA $71EE +70BB- 8D F1 71 STA $71F1 +70BE- A9 00 LDA #$00 +70C0- 8D F2 71 STA $71F2 +70C3- A0 00 LDY #$00 +70C5- B1 ED LDA ($ED),Y +70C7- 8D F9 71 STA $71F9 +70CA- C8 INY +70CB- B1 ED LDA ($ED),Y +70CD- 8D FA 71 STA $71FA +70D0- A0 00 LDY #$00 +70D2- AD 42 62 LDA $6242 +70D5- C9 01 CMP #$01 +70D7- F0 03 BEQ $70DC +70D9- 4C 3C 71 JMP $713C +70DC- AD EF 71 LDA $71EF +70DF- CD F9 71 CMP $71F9 +70E2- B0 03 BCS $70E7 +70E4- 4C 05 71 JMP $7105 +70E7- A9 71 LDA #$71 +70E9- 48 PHA +70EA- A9 FB LDA #$FB +70EC- 48 PHA +70ED- A9 72 LDA #$72 +70EF- 48 PHA +70F0- A9 50 LDA #$50 +70F2- 48 PHA +70F3- A9 72 LDA #$72 +70F5- 48 PHA +70F6- A9 10 LDA #$10 +70F8- 48 PHA +70F9- A9 71 LDA #$71 +70FB- 48 PHA +70FC- A9 EF LDA #$EF +70FE- 48 PHA +70FF- A9 0F LDA #$0F +7101- 48 PHA +7102- 20 53 69 JSR $6953 +7105- AD F0 71 LDA $71F0 +7108- CD FA 71 CMP $71FA +710B- B0 03 BCS $7110 +710D- 4C 2E 71 JMP $712E +7110- A9 71 LDA #$71 +7112- 48 PHA +7113- A9 FB LDA #$FB +7115- 48 PHA +7116- A9 72 LDA #$72 +7118- 48 PHA +7119- A9 74 LDA #$74 +711B- 48 PHA +711C- A9 72 LDA #$72 +711E- 48 PHA +711F- A9 10 LDA #$10 +7121- 48 PHA +7122- A9 71 LDA #$71 +7124- 48 PHA +7125- A9 EF LDA #$EF +7127- 48 PHA +7128- A9 0F LDA #$0F +712A- 48 PHA +712B- 20 53 69 JSR $6953 +712E- AD EF 71 LDA $71EF +7131- C9 FF CMP #$FF +7133- F0 B2 BEQ $70E7 +7135- AD F0 71 LDA $71F0 +7138- C9 FF CMP #$FF +713A- F0 D4 BEQ $7110 +713C- A9 00 LDA #$00 +713E- A8 TAY +713F- 84 19 STY $19 +7141- F0 0F BEQ $7152 +7143- 18 CLC +7144- 6D F0 71 ADC $71F0 +7147- AA TAX +7148- 98 TYA +7149- 65 19 ADC $19 +714B- A8 TAY +714C- 8A TXA +714D- 0E F0 71 ASL $71F0 +7150- 26 19 ROL $19 +7152- 4E FA 71 LSR $71FA +7155- B0 EC BCS $7143 +7157- D0 F4 BNE $714D +7159- 8E F3 71 STX $71F3 +715C- 8C F4 71 STY $71F4 +715F- 18 CLC +7160- AD F3 71 LDA $71F3 +7163- 6D EF 71 ADC $71EF +7166- 8D F3 71 STA $71F3 +7169- 90 08 BCC $7173 +716B- AD F4 71 LDA $71F4 +716E- 69 01 ADC #$01 +7170- 8D F4 71 STA $71F4 +7173- A9 00 LDA #$00 +7175- 8D F7 71 STA $71F7 +7178- 8D F8 71 STA $71F8 +717B- A2 10 LDX #$10 +717D- 4E F4 71 LSR $71F4 +7180- 6E F3 71 ROR $71F3 +7183- 90 10 BCC $7195 +7185- AD F7 71 LDA $71F7 +7188- 18 CLC +7189- 6D F1 71 ADC $71F1 +718C- 8D F7 71 STA $71F7 +718F- AD F8 71 LDA $71F8 +7192- 6D F2 71 ADC $71F2 +7195- 6A ROR +7196- 8D F8 71 STA $71F8 +7199- 6E F7 71 ROR $71F7 +719C- 6E F6 71 ROR $71F6 +719F- 6E F5 71 ROR $71F5 +71A2- CA DEX +71A3- D0 D8 BNE $717D +71A5- 18 CLC +71A6- EE F5 71 INC $71F5 +71A9- EE F5 71 INC $71F5 +71AC- EE F5 71 INC $71F5 +71AF- 90 03 BCC $71B4 +71B1- EE F6 71 INC $71F6 +71B4- 18 CLC +71B5- AD F5 71 LDA $71F5 +71B8- 65 ED ADC $ED +71BA- 8D F5 71 STA $71F5 +71BD- AD F6 71 LDA $71F6 +71C0- 65 EE ADC $EE +71C2- 8D F6 71 STA $71F6 +71C5- AD F5 71 LDA $71F5 +71C8- AC F5 71 LDY $71F5 +71CB- AE F6 71 LDX $71F6 +71CE- 84 08 STY $08 +71D0- 86 09 STX $09 +71D2- A0 00 LDY #$00 +71D4- A2 00 LDX #$00 +71D6- B1 EB LDA ($EB),Y +71D8- 91 08 STA ($08),Y +71DA- C8 INY +71DB- CC EE 71 CPY $71EE +71DE- D0 F6 BNE $71D6 +71E0- A5 FF LDA $FF +71E2- 48 PHA +71E3- A5 FE LDA $FE +71E5- 48 PHA +71E6- A6 09 LDX $09 +71E8- A4 08 LDY $08 +71EA- AD EE 71 LDA $71EE +71ED- 60 RTS +71EE- 00 BRK +71EF- 00 BRK +71F0- 00 BRK +71F1- 00 BRK +71F2- 00 BRK +71F3- 00 BRK +71F4- 00 BRK +71F5- 00 BRK +71F6- 00 BRK +71F7- 00 BRK +71F8- 00 BRK +71F9- 00 BRK +71FA- 00 BRK +71FB- C1 D0 CMP ($D0,X) +71FD- D5 D4 CMP $D4,X +71FF- B8 CLV +7200- B2 A0 LDA ($A0) +7202- A8 TAY +7203- D0 D5 BNE $71DA +7205- D4 ??? +7206- B8 CLV +7207- B2 A0 LDA ($A0) +7209- CD C1 C3 CMP $C3C1 +720C- D2 CF CMP ($CF) +720E- A9 00 LDA #$00 +7210- BA TSX +7211- D8 CLD +7212- C9 C4 CMP #$C4 +7214- D8 CLD +7215- A8 TAY +7216- B1 A9 LDA ($A9),Y +7218- A0 BA LDY #$BA +721A- D9 C9 C4 CMP $C4C9,Y +721D- D8 CLD +721E- A8 TAY +721F- B1 A9 LDA ($A9),Y +7221- A0 BA LDY #$BA +7223- CD C3 C1 CMP $C1C3 +7226- CE C4 A8 DEC $A8C4 +7229- B2 A9 LDA ($A9) +722B- A0 BA LDY #$BA +722D- CD CC C9 CMP $C9CC +7230- C5 D2 CMP $D2 +7232- A8 TAY +7233- B2 A9 LDA ($A9) +7235- BA TSX +7236- D0 D2 BNE $720A +7238- CF ??? +7239- C4 A8 CPY $A8 +723B- B4 A9 LDY $A9,X +723D- A0 BA LDY #$BA +723F- D8 CLD +7240- CC C5 CE CPY $CEC5 +7243- A8 TAY +7244- B1 A9 LDA ($A9),Y +7246- A0 BA LDY #$BA +7248- D9 CC C5 CMP $C5CC,Y +724B- CE A8 B1 DEC $B1A8 +724E- A9 00 LDA #$00 +7250- CF ??? +7251- D5 D4 CMP $D4,X +7253- A0 CF LDY #$CF +7255- C6 A0 DEC $A0 +7257- C2 ??? +7258- CF ??? +7259- D5 CE CMP $CE,X +725B- C4 D3 CPY $D3 +725D- A1 A0 LDA ($A0,X) +725F- D8 CLD +7260- A0 BE LDY #$BE +7262- A0 CD LDY #$CD +7264- C1 D8 CMP ($D8,X) +7266- C9 CD CMP #$CD +7268- D5 CD CMP $CD,X +726A- A0 CF LDY #$CF +726C- D2 A0 CMP ($A0) +726E- C9 D3 CMP #$D3 +7270- A0 B0 LDY #$B0 +7272- AE 00 CF LDX $CF00 +7275- D5 D4 CMP $D4,X +7277- A0 CF LDY #$CF +7279- C6 A0 DEC $A0 +727B- C2 ??? +727C- CF ??? +727D- D5 CE CMP $CE,X +727F- C4 D3 CPY $D3 +7281- A1 A0 LDA ($A0,X) +7283- D9 A0 BE CMP $BEA0,Y +7286- A0 CD LDY #$CD +7288- C1 D8 CMP ($D8,X) +728A- A0 CF LDY #$CF +728C- D2 A0 CMP ($A0) +728E- C9 D3 CMP #$D3 +7290- A0 B0 LDY #$B0 +7292- AE 00 A2 LDX $A200 +7295- 08 PHP +7296- A5 4E LDA $4E +7298- 0A ASL +7299- 26 4F ROL $4F +729B- 90 02 BCC $729F +729D- 49 2D EOR #$2D +729F- CA DEX +72A0- D0 F6 BNE $7298 +72A2- 85 4E STA $4E +72A4- 8D 40 60 STA $6040 +72A7- A0 01 LDY #$01 +72A9- 8C 3F 60 STY $603F +72AC- C9 00 CMP #$00 +72AE- 60 RTS +72AF- 68 PLA +72B0- 85 FE STA $FE +72B2- 68 PLA +72B3- 85 FF STA $FF +72B5- 68 PLA +72B6- 8D 82 73 STA $7382 +72B9- 68 PLA +72BA- 8D 7E 73 STA $737E +72BD- A9 01 LDA #$01 +72BF- 8D 7C 73 STA $737C +72C2- A9 FF LDA #$FF +72C4- 8D 80 73 STA $7380 +72C7- A2 08 LDX #$08 +72C9- A5 4E LDA $4E +72CB- 0A ASL +72CC- 26 4F ROL $4F +72CE- 90 02 BCC $72D2 +72D0- 49 2D EOR #$2D +72D2- CA DEX +72D3- D0 F6 BNE $72CB +72D5- 85 4E STA $4E +72D7- C9 00 CMP #$00 +72D9- 8D 78 73 STA $7378 +72DC- AD 80 73 LDA $7380 +72DF- 38 SEC +72E0- ED 7C 73 SBC $737C +72E3- 8D 6E 73 STA $736E +72E6- AD 82 73 LDA $7382 +72E9- 38 SEC +72EA- ED 7E 73 SBC $737E +72ED- 8D 70 73 STA $7370 +72F0- AD 78 73 LDA $7378 +72F3- 38 SEC +72F4- ED 7C 73 SBC $737C +72F7- 8D 76 73 STA $7376 +72FA- A9 00 LDA #$00 +72FC- A8 TAY +72FD- 8C 84 73 STY $7384 +7300- F0 11 BEQ $7313 +7302- 18 CLC +7303- 6D 76 73 ADC $7376 +7306- AA TAX +7307- 98 TYA +7308- 6D 84 73 ADC $7384 +730B- A8 TAY +730C- 8A TXA +730D- 0E 76 73 ASL $7376 +7310- 2E 84 73 ROL $7384 +7313- 4E 70 73 LSR $7370 +7316- B0 EA BCS $7302 +7318- D0 F3 BNE $730D +731A- 8D 72 73 STA $7372 +731D- 8C 73 73 STY $7373 +7320- A9 00 LDA #$00 +7322- 8D 86 73 STA $7386 +7325- 8D 87 73 STA $7387 +7328- A2 10 LDX #$10 +732A- 0E 72 73 ASL $7372 +732D- 2E 73 73 ROL $7373 +7330- 2E 86 73 ROL $7386 +7333- 2E 87 73 ROL $7387 +7336- AD 86 73 LDA $7386 +7339- 38 SEC +733A- ED 6E 73 SBC $736E +733D- A8 TAY +733E- AD 87 73 LDA $7387 +7341- ED 6F 73 SBC $736F +7344- 90 09 BCC $734F +7346- 8D 87 73 STA $7387 +7349- 8C 86 73 STY $7386 +734C- EE 74 73 INC $7374 +734F- CA DEX +7350- D0 D8 BNE $732A +7352- AD 74 73 LDA $7374 +7355- 18 CLC +7356- 6D 7E 73 ADC $737E +7359- 8D 7A 73 STA $737A +735C- A5 FF LDA $FF +735E- 48 PHA +735F- A5 FE LDA $FE +7361- 48 PHA +7362- AD 7A 73 LDA $737A +7365- 8D 40 60 STA $6040 +7368- A2 01 LDX #$01 +736A- 8E 3F 60 STX $603F +736D- 60 RTS +736E- 00 BRK +736F- 00 BRK +7370- 00 BRK +7371- 00 BRK +7372- 00 BRK +7373- 00 BRK +7374- 00 BRK +7375- 00 BRK +7376- 00 BRK +7377- 00 BRK +7378- 00 BRK +7379- 00 BRK +737A- 00 BRK +737B- 00 BRK +737C- 00 BRK +737D- 00 BRK +737E- 00 BRK +737F- 00 BRK +7380- 00 BRK +7381- 00 BRK +7382- 00 BRK +7383- 00 BRK +7384- 00 BRK +7385- 00 BRK +7386- 00 BRK +7387- 00 BRK +7388- 68 PLA +7389- 85 FE STA $FE +738B- 68 PLA +738C- 85 FF STA $FF +738E- 68 PLA +738F- 85 06 STA $06 +7391- 68 PLA +7392- 85 07 STA $07 +7394- A0 00 LDY #$00 +7396- B1 06 LDA ($06),Y +7398- F0 06 BEQ $73A0 +739A- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +739D- C8 INY +739E- D0 F6 BNE $7396 +73A0- A5 FF LDA $FF +73A2- 48 PHA +73A3- A5 FE LDA $FE +73A5- 48 PHA +73A6- 60 RTS +73A7- 68 PLA +73A8- 85 06 STA $06 +73AA- 68 PLA +73AB- 85 07 STA $07 +73AD- A0 01 LDY #$01 +73AF- B1 06 LDA ($06),Y +73B1- F0 06 BEQ $73B9 +73B3- 20 F0 FD JSR $FDF0 F8ROM:COUT1 +73B6- C8 INY +73B7- D0 F6 BNE $73AF +73B9- 18 CLC +73BA- 98 TYA +73BB- 65 06 ADC $06 +73BD- 85 06 STA $06 +73BF- A5 07 LDA $07 +73C1- 69 00 ADC #$00 +73C3- 48 PHA +73C4- A5 06 LDA $06 +73C6- 48 PHA +73C7- 60 RTS diff --git a/source/disk16_integrated_demos/MAKEMAZE.S b/source/disk16_integrated_demos/MAKEMAZE.S new file mode 100644 index 0000000..4dd1bbe --- /dev/null +++ b/source/disk16_integrated_demos/MAKEMAZE.S @@ -0,0 +1,3686 @@ +0901- AA TAX +0902- AA TAX +0903- AA TAX +0904- AA TAX +0905- AA TAX +0906- AA TAX +0907- AA TAX +0908- AA TAX +0909- AA TAX +090A- AA TAX +090B- AA TAX +090C- AA TAX +090D- AA TAX +090E- AA TAX +090F- AA TAX +0910- AA TAX +0911- AA TAX +0912- AA TAX +0913- AA TAX +0914- AA TAX +0915- AA TAX +0916- AA TAX +0917- AA TAX +0918- AA TAX +0919- AA TAX +091A- AA TAX +091B- AA TAX +091C- AA TAX +091D- AA TAX +091E- AA TAX +091F- AA TAX +0920- AA TAX +0921- 8D AA 20 STA $20AA +0924- 20 20 20 JSR $2020 +0927- 20 20 20 JSR $2020 +092A- 20 20 20 JSR $2020 +092D- 20 20 20 JSR $2020 +0930- 20 20 20 JSR $2020 +0933- 20 20 20 JSR $2020 +0936- 20 20 20 JSR $2020 +0939- 20 20 20 JSR $2020 +093C- 20 20 20 JSR $2020 +093F- 20 20 AA JSR $AA20 +0942- 8D AA 20 STA $20AA +0945- CD C1 DA CMP $DAC1 +0948- C5 20 CMP $20 +094A- C7 ??? +094B- C5 CE CMP $CE +094D- C5 D2 CMP $D2 +094F- C1 D4 CMP ($D4,X) +0951- CF ??? +0952- D2 20 CMP ($20) +0954- 20 20 20 JSR $2020 +0957- 20 20 20 JSR $2020 +095A- 20 20 20 JSR $2020 +095D- 20 20 20 JSR $2020 +0960- 20 20 AA JSR $AA20 +0963- 8D AA 20 STA $20AA +0966- 20 20 20 JSR $2020 +0969- 20 20 20 JSR $2020 +096C- 20 20 20 JSR $2020 +096F- 20 20 20 JSR $2020 +0972- 20 20 20 JSR $2020 +0975- 20 20 20 JSR $2020 +0978- 20 20 20 JSR $2020 +097B- 20 20 20 JSR $2020 +097E- 20 20 20 JSR $2020 +0981- 20 20 AA JSR $AA20 +0984- 8D AA AA STA $AAAA +0987- AA TAX +0988- AA TAX +0989- AA TAX +098A- AA TAX +098B- AA TAX +098C- AA TAX +098D- AA TAX +098E- AA TAX +098F- AA TAX +0990- AA TAX +0991- AA TAX +0992- AA TAX +0993- AA TAX +0994- AA TAX +0995- AA TAX +0996- AA TAX +0997- AA TAX +0998- AA TAX +0999- AA TAX +099A- AA TAX +099B- AA TAX +099C- AA TAX +099D- AA TAX +099E- AA TAX +099F- AA TAX +09A0- AA TAX +09A1- AA TAX +09A2- AA TAX +09A3- AA TAX +09A4- AA TAX +09A5- 8D AA 8D STA $8DAA +09A8- AA TAX +09A9- AA TAX +09AA- 20 C1 D3 JSR $D3C1 +09AD- D3 ??? +09AE- C5 CD CMP $CD +09B0- C2 ??? +09B1- CC C5 D2 CPY $D2C5 +09B4- 20 C4 C9 JSR $C9C4 +09B7- D2 C5 CMP ($C5) +09B9- C3 ??? +09BA- D4 ??? +09BB- C9 D6 CMP #$D6 +09BD- C5 D3 CMP $D3 +09BF- 8D AA 8D STA $8DAA +09C2- A0 C3 LDY #$C3 +09C4- D9 C3 A0 CMP $A0C3,Y +09C7- C1 D6 CMP ($D6,X) +09C9- C5 8D CMP $8D +09CB- A0 C5 LDY #$C5 +09CD- D8 CLD +09CE- D0 A0 BNE $0970 +09D0- CF ??? +09D1- C6 C6 DEC $C6 +09D3- 8D A0 C4 STA $C4A0 +09D6- D3 ??? +09D7- CB ??? +09D8- A0 CD LDY #$CD +09DA- C1 CB CMP ($CB,X) +09DC- C5 CD CMP $CD +09DE- C1 DA CMP ($DA,X) +09E0- C5 8D CMP $8D +09E2- A0 D4 LDY #$D4 +09E4- D2 A0 CMP ($A0) +09E6- CF ??? +09E7- CE 8D A0 DEC $A08D +09EA- CF ??? +09EB- C2 ??? +09EC- CA DEX +09ED- A0 A4 LDY #$A4 +09EF- C2 ??? +09F0- C6 C5 DEC $C5 +09F2- B0 8D BCS $0981 +09F4- A0 CF LDY #$CF +09F6- D2 C7 CMP ($C7) +09F8- A0 A4 LDY #$A4 +09FA- B6 B0 LDX $B0,Y +09FC- B0 B0 BCS $09AE +09FE- 8D AA 8D STA $8DAA +0A01- A0 D0 LDY #$D0 +0A03- D5 D4 CMP $D4,X +0A05- A0 D2 LDY #$D2 +0A07- C5 D1 CMP $D1 +0A09- D5 C9 CMP $C9,X +0A0B- D2 C5 CMP ($C5) +0A0D- C4 AE CPY $AE +0A0F- D6 C1 DEC $C1,X +0A11- D2 D3 CMP ($D3) +0A13- 8D A0 D5 STA $D5A0 +0A16- D3 ??? +0A17- C5 A0 CMP $A0 +0A19- D2 C5 CMP ($C5) +0A1B- D1 D5 CMP ($D5),Y +0A1D- C9 D2 CMP #$D2 +0A1F- C5 C4 CMP $C4 +0A21- AE CD C1 LDX $C1CD +0A24- C3 ??? +0A25- AE CD C9 LDX $C9CD +0A28- CE 8D 20 DEC $208D +0A2B- A0 D5 LDY #$D5 +0A2D- D3 ??? +0A2E- C5 A0 CMP $A0 +0A30- C1 D2 CMP ($D2,X) +0A32- D2 C1 CMP ($C1) +0A34- D9 D3 AE CMP $AED3,Y +0A37- CD C1 C3 CMP $C3C1 +0A3A- AE CD C9 LDX $C9CD +0A3D- CE 8D 20 DEC $208D +0A40- A0 D5 LDY #$D5 +0A42- D3 ??? +0A43- C5 A0 CMP $A0 +0A45- CD C1 D4 CMP $D4C1 +0A48- C8 INY +0A49- AE CD C1 LDX $C1CD +0A4C- C3 ??? +0A4D- AE CD C9 LDX $C9CD +0A50- CE 8D A0 DEC $A08D +0A53- D5 D3 CMP $D3,X +0A55- C5 A0 CMP $A0 +0A57- D3 ??? +0A58- D4 ??? +0A59- C4 C9 CPY $C9 +0A5B- CF ??? +0A5C- AE CD C1 LDX $C1CD +0A5F- C3 ??? +0A60- AE CD C9 LDX $C9CD +0A63- CE 8D A0 DEC $A08D +0A66- D0 D5 BNE $0A3D +0A68- D4 ??? +0A69- A0 D2 LDY #$D2 +0A6B- C5 D1 CMP $D1 +0A6D- D5 C9 CMP $C9,X +0A6F- D2 C5 CMP ($C5) +0A71- C4 AE CPY $AE +0A73- C8 INY +0A74- CF ??? +0A75- CF ??? +0A76- CB ??? +0A77- D3 ??? +0A78- AE CD C9 LDX $C9CD +0A7B- CE 8D A0 DEC $A08D +0A7E- D0 D5 BNE $0A55 +0A80- D4 ??? +0A81- A0 D3 LDY #$D3 +0A83- D4 ??? +0A84- C4 C9 CPY $C9 +0A86- CF ??? +0A87- AE C8 CF LDX $CFC8 +0A8A- CF ??? +0A8B- CB ??? +0A8C- D3 ??? +0A8D- 8D A0 D0 STA $D0A0 +0A90- D5 D4 CMP $D4,X +0A92- A0 CD LDY #$CD +0A94- C1 D4 CMP ($D4,X) +0A96- C8 INY +0A97- AE C8 CF LDX $CFC8 +0A9A- CF ??? +0A9B- CB ??? +0A9C- D3 ??? +0A9D- 8D A0 D0 STA $D0A0 +0AA0- D5 D4 CMP $D4,X +0AA2- A0 C1 LDY #$C1 +0AA4- D2 D2 CMP ($D2) +0AA6- C1 D9 CMP ($D9,X) +0AA8- D3 ??? +0AA9- AE C8 CF LDX $CFC8 +0AAC- CF ??? +0AAD- CB ??? +0AAE- D3 ??? +0AAF- 8D AA 8D STA $8DAA +0AB2- AA TAX +0AB3- AA TAX +0AB4- AA TAX +0AB5- AA TAX +0AB6- AA TAX +0AB7- AA TAX +0AB8- AA TAX +0AB9- AA TAX +0ABA- AA TAX +0ABB- AA TAX +0ABC- AA TAX +0ABD- AA TAX +0ABE- AA TAX +0ABF- AA TAX +0AC0- AA TAX +0AC1- AA TAX +0AC2- AA TAX +0AC3- AA TAX +0AC4- AA TAX +0AC5- AA TAX +0AC6- AA TAX +0AC7- AA TAX +0AC8- AA TAX +0AC9- AA TAX +0ACA- AA TAX +0ACB- AA TAX +0ACC- AA TAX +0ACD- AA TAX +0ACE- AA TAX +0ACF- AA TAX +0AD0- AA TAX +0AD1- AA TAX +0AD2- 8D AA 20 STA $20AA +0AD5- 20 20 20 JSR $2020 +0AD8- 20 20 20 JSR $2020 +0ADB- 20 20 20 JSR $2020 +0ADE- 20 20 20 JSR $2020 +0AE1- 20 20 20 JSR $2020 +0AE4- 20 20 20 JSR $2020 +0AE7- 20 20 20 JSR $2020 +0AEA- 20 20 20 JSR $2020 +0AED- 20 20 20 JSR $2020 +0AF0- 20 20 AA JSR $AA20 +0AF3- 8D AA 20 STA $20AA +0AF6- C3 ??? +0AF7- CF ??? +0AF8- CE D3 D4 DEC $D4D3 +0AFB- C1 CE CMP ($CE,X) +0AFD- D4 ??? +0AFE- 20 C4 C5 JSR $C5C4 +0B01- C3 ??? +0B02- CC C1 D2 CPY $D2C1 +0B05- C1 D4 CMP ($D4,X) +0B07- C9 CF CMP #$CF +0B09- CE D3 20 DEC $20D3 +0B0C- 20 20 20 JSR $2020 +0B0F- 20 20 20 JSR $2020 +0B12- 20 AA 8D JSR $8DAA +0B15- AA TAX +0B16- 20 20 20 JSR $2020 +0B19- 20 20 20 JSR $2020 +0B1C- 20 20 20 JSR $2020 +0B1F- 20 20 20 JSR $2020 +0B22- 20 20 20 JSR $2020 +0B25- 20 20 20 JSR $2020 +0B28- 20 20 20 JSR $2020 +0B2B- 20 20 20 JSR $2020 +0B2E- 20 20 20 JSR $2020 +0B31- 20 20 20 JSR $2020 +0B34- AA TAX +0B35- 8D AA AA STA $AAAA +0B38- AA TAX +0B39- AA TAX +0B3A- AA TAX +0B3B- AA TAX +0B3C- AA TAX +0B3D- AA TAX +0B3E- AA TAX +0B3F- AA TAX +0B40- AA TAX +0B41- AA TAX +0B42- AA TAX +0B43- AA TAX +0B44- AA TAX +0B45- AA TAX +0B46- AA TAX +0B47- AA TAX +0B48- AA TAX +0B49- AA TAX +0B4A- AA TAX +0B4B- AA TAX +0B4C- AA TAX +0B4D- AA TAX +0B4E- AA TAX +0B4F- AA TAX +0B50- AA TAX +0B51- AA TAX +0B52- AA TAX +0B53- AA TAX +0B54- AA TAX +0B55- AA TAX +0B56- 8D AA 8D STA $8DAA +0B59- C2 ??? +0B5A- C1 D3 CMP ($D3,X) +0B5C- A0 C5 LDY #$C5 +0B5E- D1 D5 CMP ($D5),Y +0B60- A0 A4 LDY #$A4 +0B62- B2 B0 LDA ($B0) +0B64- B0 B0 BCS $0B16 +0B66- A0 BB LDY #$BB +0B68- 20 C2 C1 JSR $C1C2 +0B6B- D3 ??? +0B6C- C5 20 CMP $20 +0B6E- C1 C4 CMP ($C4,X) +0B70- C4 D2 CPY $D2 +0B72- C5 D3 CMP $D3 +0B74- D3 ??? +0B75- 20 C6 CF JSR $CFC6 +0B78- D2 20 CMP ($20) +0B7A- C1 D2 CMP ($D2,X) +0B7C- D2 C1 CMP ($C1) +0B7E- D9 D3 8D CMP $8DD3,Y +0B81- AA TAX +0B82- 8D AA AA STA $AAAA +0B85- 20 CE CF JSR $CFCE +0B88- D4 ??? +0B89- C5 20 CMP $20 +0B8B- D4 ??? +0B8C- C8 INY +0B8D- C1 D4 CMP ($D4,X) +0B8F- 20 D8 CC JSR $CCD8 +0B92- C5 CE CMP $CE +0B94- 20 C1 CE JSR $CEC1 +0B97- C4 20 CPY $20 +0B99- D9 CC C5 CMP $C5CC,Y +0B9C- CE 20 C3 DEC $C320 +0B9F- C1 CE CMP ($CE,X) +0BA1- CE CF D4 DEC $D4CF +0BA4- 20 C5 D8 JSR $D8C5 +0BA7- C3 ??? +0BA8- C5 C5 CMP $C5 +0BAA- C4 20 CPY $20 +0BAC- B1 B3 LDA ($B3),Y +0BAE- AC 20 C1 LDY $C120 +0BB1- D3 ??? +0BB2- 20 D4 C8 JSR $C8D4 +0BB5- C9 D3 CMP #$D3 +0BB7- 8D AA AA STA $AAAA +0BBA- 20 D7 CF JSR $CFD7 +0BBD- D5 CC CMP $CC,X +0BBF- C4 20 CPY $20 +0BC1- CD C1 CB CMP $CBC1 +0BC4- C5 20 CMP $20 +0BC6- D4 ??? +0BC7- C8 INY +0BC8- C5 20 CMP $20 +0BCA- C1 D2 CMP ($D2,X) +0BCC- D2 C1 CMP ($C1) +0BCE- D9 20 D3 CMP $D320,Y +0BD1- C9 DA CMP #$DA +0BD3- C5 D3 CMP $D3 +0BD5- 20 BE B2 JSR $B2BE +0BD8- B5 B6 LDA $B6,X +0BDA- AC 20 D7 LDY $D720 +0BDD- C8 INY +0BDE- C9 C3 CMP #$C3 +0BE0- C8 INY +0BE1- 20 C9 D3 JSR $D3C9 +0BE4- CE A7 D4 DEC $D4A7 +0BE7- 8D AA AA STA $AAAA +0BEA- 20 D7 C8 JSR $C8D7 +0BED- C1 D4 CMP ($D4,X) +0BEF- 20 B8 AD JSR $ADB8 +0BF2- C2 ??? +0BF3- C9 D4 CMP #$D4 +0BF5- 20 C1 D2 JSR $D2C1 +0BF8- D2 C1 CMP ($C1) +0BFA- D9 D3 20 CMP $20D3,Y +0BFD- C1 D2 CMP ($D2,X) +0BFF- C5 20 CMP $20 +0C01- D0 D2 BNE $0BD5 +0C03- C5 D0 CMP $D0 +0C05- C1 D2 CMP ($D2,X) +0C07- C5 C4 CMP $C4 +0C09- 20 D4 CF JSR $CFD4 +0C0C- 20 C8 C1 JSR $C1C8 +0C0F- CE C4 CC DEC $CCC4 +0C12- C5 AE CMP $AE +0C14- 8D AA 8D STA $8DAA +0C17- AA TAX +0C18- AA TAX +0C19- 20 D4 C8 JSR $C8D4 +0C1C- C5 20 CMP $20 +0C1E- CE C5 D8 DEC $D8C5 +0C21- D4 ??? +0C22- 20 D5 D0 JSR $D0D5 +0C25- C4 C1 CPY $C1 +0C27- D4 ??? +0C28- C5 20 CMP $20 +0C2A- D7 ??? +0C2B- C9 CC CMP #$CC +0C2D- CC 20 D5 CPY $D520 +0C30- D4 ??? +0C31- C9 CC CMP #$CC +0C33- C9 DA CMP #$DA +0C35- C5 20 CMP $20 +0C37- B1 B6 LDA ($B6),Y +0C39- AD C2 C9 LDA $C9C2 +0C3C- D4 ??? +0C3D- 20 C1 D2 JSR $D2C1 +0C40- D2 C1 CMP ($C1) +0C42- D9 D3 8D CMP $8DD3,Y +0C45- AA TAX +0C46- AA TAX +0C47- 20 D4 CF JSR $CFD4 +0C4A- 20 C1 C4 JSR $C4C1 +0C4D- C4 D2 CPY $D2 +0C4F- C5 D3 CMP $D3 +0C51- D3 ??? +0C52- 20 D4 C8 JSR $C8D4 +0C55- C9 D3 CMP #$D3 +0C57- 20 D0 D2 JSR $D2D0 +0C5A- CF ??? +0C5B- C2 ??? +0C5C- CC C5 CD CPY $CDC5 +0C5F- AE 8D AA LDX $AA8D +0C62- 8D D8 CC STA $CCD8 +0C65- C5 CE CMP $CE +0C67- A0 CB LDY #$CB +0C69- C2 ??? +0C6A- C4 A0 CPY $A0 +0C6C- A2 C5 LDX #$C5 +0C6E- CE D4 C5 DEC $C5D4 +0C71- D2 20 CMP ($20) +0C73- CD C1 DA CMP $DAC1 +0C76- C5 20 CMP $20 +0C78- D3 ??? +0C79- C9 DA CMP #$DA +0C7B- C5 20 CMP $20 +0C7D- A8 TAY +0C7E- BC B1 B4 LDY $B4B1,X +0C81- A9 A2 LDA #$A2 +0C83- 8D D9 CC STA $CCD9 +0C86- C5 CE CMP $CE +0C88- A0 C5 LDY #$C5 +0C8A- D1 D5 CMP ($D5),Y +0C8C- A0 D8 LDY #$D8 +0C8E- CC C5 CE CPY $CEC5 +0C91- A0 BB LDY #$BB +0C93- 20 C3 D5 JSR $D5C3 +0C96- D2 D2 CMP ($D2) +0C98- C5 CE CMP $CE +0C9A- D4 ??? +0C9B- 20 C1 CC JSR $CCC1 +0C9E- C7 ??? +0C9F- CF ??? +0CA0- 20 CF CE JSR $CECF +0CA3- CC D9 20 CPY $20D9 +0CA6- C4 CF CPY $CF +0CA8- C5 D3 CMP $D3 +0CAA- 20 D3 D1 JSR $D1D3 +0CAD- D5 C1 CMP $C1,X +0CAF- D2 C5 CMP ($C5) +0CB1- 8D D8 CD STA $CDD8 +0CB4- C1 D8 CMP ($D8,X) +0CB6- A0 C5 LDY #$C5 +0CB8- D1 D5 CMP ($D5),Y +0CBA- A0 D8 LDY #$D8 +0CBC- CC C5 CE CPY $CEC5 +0CBF- AB ??? +0CC0- B2 A0 LDA ($A0) +0CC2- BB ??? +0CC3- 20 C1 C4 JSR $C4C1 +0CC6- C4 20 CPY $20 +0CC8- C5 D8 CMP $D8 +0CCA- D4 ??? +0CCB- D2 C1 CMP ($C1) +0CCD- 20 C3 CF JSR $CFC3 +0CD0- CC D5 CD CPY $CDD5 +0CD3- CE 8D D9 DEC $D98D +0CD6- CD C1 D8 CMP $D8C1 +0CD9- A0 C5 LDY #$C5 +0CDB- D1 D5 CMP ($D5),Y +0CDD- A0 D9 LDY #$D9 +0CDF- CC C5 CE CPY $CEC5 +0CE2- AB ??? +0CE3- B2 A0 LDA ($A0) +0CE5- BB ??? +0CE6- 20 C1 C4 JSR $C4C1 +0CE9- C4 20 CPY $20 +0CEB- C5 D8 CMP $D8 +0CED- D4 ??? +0CEE- D2 C1 CMP ($C1) +0CF0- 20 D2 CF JSR $CFD2 +0CF3- D7 ??? +0CF4- 8D D8 CE STA $CED8 +0CF7- D5 CD CMP $CD,X +0CF9- A0 C5 LDY #$C5 +0CFB- D1 D5 CMP ($D5),Y +0CFD- A0 B2 LDY #$B2 +0CFF- AA TAX +0D00- D8 CLD +0D01- CC C5 CE CPY $CEC5 +0D04- AB ??? +0D05- B2 8D LDA ($8D) +0D07- C1 D3 CMP ($D3,X) +0D09- DA PHX +0D0A- A0 C5 LDY #$C5 +0D0C- D1 D5 CMP ($D5),Y +0D0E- A0 D8 LDY #$D8 +0D10- CD C1 D8 CMP $D8C1 +0D13- AA TAX +0D14- D9 CD C1 CMP $C1CD,Y +0D17- D8 CLD +0D18- AB ??? +0D19- B4 A0 LDY $A0,X +0D1B- BB ??? +0D1C- 20 C1 D2 JSR $D2C1 +0D1F- D2 C1 CMP ($C1) +0D21- D9 20 D3 CMP $D320,Y +0D24- C9 DA CMP #$DA +0D26- C5 AB CMP $AB +0D28- C9 CE CMP #$CE +0D2A- C6 CF DEC $CF +0D2C- 20 C2 D9 JSR $D9C2 +0D2F- D4 ??? +0D30- C5 D3 CMP $D3 +0D32- 8D D8 D3 STA $D3D8 +0D35- D4 ??? +0D36- C1 CB CMP ($CB,X) +0D38- D3 ??? +0D39- A0 C5 LDY #$C5 +0D3B- D1 D5 CMP ($D5),Y +0D3D- A0 C1 LDY #$C1 +0D3F- D3 ??? +0D40- DA PHX +0D41- A0 BB LDY #$BB +0D43- 20 C3 CF JSR $CFC3 +0D46- CC D5 CD CPY $CDD5 +0D49- CE 20 D3 DEC $D320 +0D4C- D4 ??? +0D4D- C1 C3 CMP ($C3,X) +0D4F- CB ??? +0D50- 20 D3 C9 JSR $C9D3 +0D53- DA PHX +0D54- C5 BB CMP $BB +0D56- 20 D8 20 JSR $20D8 +0D59- AA TAX +0D5A- 20 D9 20 JSR $20D9 +0D5D- AB ??? +0D5E- 20 B1 8D JSR $8DB1 +0D61- D9 D3 D4 CMP $D4D3,Y +0D64- C1 CB CMP ($CB,X) +0D66- D3 ??? +0D67- A0 C5 LDY #$C5 +0D69- D1 D5 CMP ($D5),Y +0D6B- A0 C1 LDY #$C1 +0D6D- D3 ??? +0D6E- DA PHX +0D6F- A0 BB LDY #$BB +0D71- 20 D2 CF JSR $CFD2 +0D74- D7 ??? +0D75- 20 D3 D4 JSR $D4D3 +0D78- C1 C3 CMP ($C3,X) +0D7A- CB ??? +0D7B- 20 D3 C9 JSR $C9D3 +0D7E- DA PHX +0D7F- C5 BB CMP $BB +0D81- 20 D8 20 JSR $20D8 +0D84- AA TAX +0D85- 20 D9 20 JSR $20D9 +0D88- AB ??? +0D89- 20 B1 8D JSR $8DB1 +0D8C- AA TAX +0D8D- 8D D3 CF STA $CFD3 +0D90- D5 D4 CMP $D4,X +0D92- C8 INY +0D93- D7 ??? +0D94- A0 C5 LDY #$C5 +0D96- D1 D5 CMP ($D5),Y +0D98- A0 C2 LDY #$C2 +0D9A- C1 D3 CMP ($D3,X) +0D9C- A0 BB LDY #$BB +0D9E- 20 D3 CF JSR $CFD3 +0DA1- D5 D4 CMP $D4,X +0DA3- C8 INY +0DA4- 20 D7 C1 JSR $C1D7 +0DA7- CC CC D3 CPY $D3CC +0DAA- 20 C1 D2 JSR $D2C1 +0DAD- D2 C1 CMP ($C1) +0DAF- D9 8D D7 CMP $D78D,Y +0DB2- C5 D3 CMP $D3 +0DB4- D4 ??? +0DB5- D7 ??? +0DB6- A0 C5 LDY #$C5 +0DB8- D1 D5 CMP ($D5),Y +0DBA- A0 C1 LDY #$C1 +0DBC- D3 ??? +0DBD- DA PHX +0DBE- AB ??? +0DBF- C2 ??? +0DC0- C1 D3 CMP ($D3,X) +0DC2- A0 BB LDY #$BB +0DC4- 20 D7 C5 JSR $C5D7 +0DC7- D3 ??? +0DC8- D4 ??? +0DC9- 20 D7 C1 JSR $C1D7 +0DCC- CC CC D3 CPY $D3CC +0DCF- 20 C1 D2 JSR $D2C1 +0DD2- D2 C1 CMP ($C1) +0DD4- D9 8D D6 CMP $D68D,Y +0DD7- C9 D3 CMP #$D3 +0DD9- C9 D4 CMP #$D4 +0DDB- C5 C4 CMP $C4 +0DDD- A0 C5 LDY #$C5 +0DDF- D1 D5 CMP ($D5),Y +0DE1- A0 B2 LDY #$B2 +0DE3- AA TAX +0DE4- C1 D3 CMP ($D3,X) +0DE6- DA PHX +0DE7- AB ??? +0DE8- C2 ??? +0DE9- C1 D3 CMP ($D3,X) +0DEB- A0 BB LDY #$BB +0DED- 20 C3 C5 JSR $C5C3 +0DF0- CC CC D3 CPY $D3CC +0DF3- 20 D6 C9 JSR $C9D6 +0DF6- D3 ??? +0DF7- C9 D4 CMP #$D4 +0DF9- C5 C4 CMP $C4 +0DFB- 8D D8 D3 STA $D3D8 +0DFE- D4 ??? +0DFF- C1 C3 CMP ($C3,X) +0E01- CB ??? +0E02- A0 C5 LDY #$C5 +0E04- D1 D5 CMP ($D5),Y +0E06- A0 B3 LDY #$B3 +0E08- AA TAX +0E09- C1 D3 CMP ($D3,X) +0E0B- DA PHX +0E0C- AB ??? +0E0D- C2 ??? +0E0E- C1 D3 CMP ($D3,X) +0E10- A0 BB LDY #$BB +0E12- 20 D3 D4 JSR $D4D3 +0E15- C1 C3 CMP ($C3,X) +0E17- CB ??? +0E18- 20 C6 CF JSR $CFC6 +0E1B- D2 20 CMP ($20) +0E1D- C3 ??? +0E1E- CF ??? +0E1F- CC D5 CD CPY $CDD5 +0E22- CE D3 8D DEC $8DD3 +0E25- D9 D3 D4 CMP $D4D3,Y +0E28- C1 C3 CMP ($C3,X) +0E2A- CB ??? +0E2B- A0 C5 LDY #$C5 +0E2D- D1 D5 CMP ($D5),Y +0E2F- A0 B4 LDY #$B4 +0E31- AA TAX +0E32- C1 D3 CMP ($D3,X) +0E34- DA PHX +0E35- AB ??? +0E36- C2 ??? +0E37- C1 D3 CMP ($D3,X) +0E39- A0 BB LDY #$BB +0E3B- 20 D3 D4 JSR $D4D3 +0E3E- C1 C3 CMP ($C3,X) +0E40- CB ??? +0E41- 20 C6 CF JSR $CFC6 +0E44- D2 20 CMP ($20) +0E46- D2 CF CMP ($CF) +0E48- D7 ??? +0E49- D3 ??? +0E4A- 8D AA 8D STA $8DAA +0E4D- AA TAX +0E4E- AA TAX +0E4F- AA TAX +0E50- AA TAX +0E51- AA TAX +0E52- AA TAX +0E53- AA TAX +0E54- AA TAX +0E55- AA TAX +0E56- AA TAX +0E57- AA TAX +0E58- AA TAX +0E59- AA TAX +0E5A- AA TAX +0E5B- AA TAX +0E5C- AA TAX +0E5D- AA TAX +0E5E- AA TAX +0E5F- AA TAX +0E60- AA TAX +0E61- AA TAX +0E62- AA TAX +0E63- AA TAX +0E64- AA TAX +0E65- AA TAX +0E66- AA TAX +0E67- AA TAX +0E68- AA TAX +0E69- AA TAX +0E6A- AA TAX +0E6B- AA TAX +0E6C- AA TAX +0E6D- 8D AA 20 STA $20AA +0E70- 20 20 20 JSR $2020 +0E73- 20 20 20 JSR $2020 +0E76- 20 20 20 JSR $2020 +0E79- 20 20 20 JSR $2020 +0E7C- 20 20 20 JSR $2020 +0E7F- 20 20 20 JSR $2020 +0E82- 20 20 20 JSR $2020 +0E85- 20 20 20 JSR $2020 +0E88- 20 20 20 JSR $2020 +0E8B- 20 20 AA JSR $AA20 +0E8E- 8D AA 20 STA $20AA +0E91- CD C1 C9 CMP $C9C1 +0E94- CE 20 D0 DEC $D020 +0E97- D2 CF CMP ($CF) +0E99- C7 ??? +0E9A- D2 C1 CMP ($C1) +0E9C- CD 20 CC CMP $CC20 +0E9F- CF ??? +0EA0- CF ??? +0EA1- D0 20 BNE $0EC3 +0EA3- 20 20 20 JSR $2020 +0EA6- 20 20 20 JSR $2020 +0EA9- 20 20 20 JSR $2020 +0EAC- 20 20 AA JSR $AA20 +0EAF- 8D AA 20 STA $20AA +0EB2- 20 20 20 JSR $2020 +0EB5- 20 20 20 JSR $2020 +0EB8- 20 20 20 JSR $2020 +0EBB- 20 20 20 JSR $2020 +0EBE- 20 20 20 JSR $2020 +0EC1- 20 20 20 JSR $2020 +0EC4- 20 20 20 JSR $2020 +0EC7- 20 20 20 JSR $2020 +0ECA- 20 20 20 JSR $2020 +0ECD- 20 20 AA JSR $AA20 +0ED0- 8D AA AA STA $AAAA +0ED3- AA TAX +0ED4- AA TAX +0ED5- AA TAX +0ED6- AA TAX +0ED7- AA TAX +0ED8- AA TAX +0ED9- AA TAX +0EDA- AA TAX +0EDB- AA TAX +0EDC- AA TAX +0EDD- AA TAX +0EDE- AA TAX +0EDF- AA TAX +0EE0- AA TAX +0EE1- AA TAX +0EE2- AA TAX +0EE3- AA TAX +0EE4- AA TAX +0EE5- AA TAX +0EE6- AA TAX +0EE7- AA TAX +0EE8- AA TAX +0EE9- AA TAX +0EEA- AA TAX +0EEB- AA TAX +0EEC- AA TAX +0EED- AA TAX +0EEE- AA TAX +0EEF- AA TAX +0EF0- AA TAX +0EF1- 8D AA 8D STA $8DAA +0EF4- C9 CE CMP #$CE +0EF6- C9 D4 CMP #$D4 +0EF8- 8D AA 8D STA $8DAA +0EFB- AA TAX +0EFC- CC C4 C1 CPY $C1C4 +0EFF- 20 A3 B0 JSR $B0A3 +0F02- 8D AA D3 STA $D3AA +0F05- D4 ??? +0F06- C1 20 CMP ($20,X) +0F08- C5 D2 CMP $D2 +0F0A- D2 C3 CMP ($C3) +0F0C- D4 ??? +0F0D- D2 CC CMP ($CC) +0F0F- 20 BB 20 JSR $20BB +0F12- D4 ??? +0F13- D5 D2 CMP $D2,X +0F15- CE 20 CF DEC $CF20 +0F18- C6 C6 DEC $C6 +0F1A- 20 C5 D2 JSR $D2C5 +0F1D- D2 CF CMP ($CF) +0F1F- D2 D3 CMP ($D3) +0F21- 8D A0 CA STA $CAA0 +0F24- D3 ??? +0F25- D2 A0 CMP ($A0) +0F27- C8 INY +0F28- CF ??? +0F29- CD C5 8D CMP $8DC5 +0F2C- A0 D0 LDY #$D0 +0F2E- D2 CE CMP ($CE) +0F30- A0 A2 LDY #$A2 +0F32- C9 CE CMP #$CE +0F34- C9 D4 CMP #$D4 +0F36- C9 C1 CMP #$C1 +0F38- CC C9 DA CPY $DAC9 +0F3B- C9 CE CMP #$CE +0F3D- C7 ??? +0F3E- AE AE AE LDX $AEAE +0F41- A2 AC LDX #$AC +0F43- B8 CLV +0F44- C4 8D CPY $8D +0F46- AA TAX +0F47- 8D A0 CA STA $CAA0 +0F4A- D3 ??? +0F4B- D2 A0 CMP ($A0) +0F4D- BA TSX +0F4E- D3 ??? +0F4F- C5 D4 CMP $D4 +0F51- D6 C1 DEC $C1,X +0F53- D2 D3 CMP ($D3) +0F55- 8D A0 CA STA $CAA0 +0F58- D3 ??? +0F59- D2 A0 CMP ($A0) +0F5B- BA TSX +0F5C- CF ??? +0F5D- D5 D4 CMP $D4,X +0F5F- D7 ??? +0F60- C1 CC CMP ($CC,X) +0F62- CC D3 8D CPY $8DD3 +0F65- AA TAX +0F66- 8D AA AA STA $AAAA +0F69- 20 C7 C5 JSR $C5C7 +0F6C- D4 ??? +0F6D- 20 D2 C1 JSR $C1D2 +0F70- CE C4 CF DEC $CFC4 +0F73- CD 20 D3 CMP $D320 +0F76- D4 ??? +0F77- C1 D2 CMP ($D2,X) +0F79- D4 ??? +0F7A- C9 CE CMP #$CE +0F7C- C7 ??? +0F7D- 20 D0 CF JSR $CFD0 +0F80- C9 CE CMP #$CE +0F82- D4 ??? +0F83- 8D AA 8D STA $8DAA +0F86- A0 D2 LDY #$D2 +0F88- CE C4 C2 DEC $C2C4 +0F8B- 20 A3 B2 JSR $B2A3 +0F8E- BB ??? +0F8F- A3 ??? +0F90- D8 CLD +0F91- CC C5 CE CPY $CEC5 +0F94- 8D A0 D3 STA $D3A0 +0F97- D4 ??? +0F98- C1 A0 CMP ($A0,X) +0F9A- D8 CLD +0F9B- D8 CLD +0F9C- 8D A0 D2 STA $D2A0 +0F9F- CE C4 C2 DEC $C2C4 +0FA2- 20 A3 B2 JSR $B2A3 +0FA5- BB ??? +0FA6- A3 ??? +0FA7- D9 CC C5 CMP $C5CC,Y +0FAA- CE 8D A0 DEC $A08D +0FAD- D3 ??? +0FAE- D4 ??? +0FAF- C1 A0 CMP ($A0,X) +0FB1- D9 D9 8D CMP $8DD9,Y +0FB4- AA TAX +0FB5- 8D A0 CA STA $CAA0 +0FB8- CD D0 A0 CMP $A0D0 +0FBB- C2 ??? +0FBC- D5 C9 CMP $C9,X +0FBE- CC C4 8D CPY $8DC4 +0FC1- AA TAX +0FC2- 8D AA AA STA $AAAA +0FC5- AA TAX +0FC6- AA TAX +0FC7- AA TAX +0FC8- AA TAX +0FC9- AA TAX +0FCA- AA TAX +0FCB- AA TAX +0FCC- AA TAX +0FCD- AA TAX +0FCE- AA TAX +0FCF- AA TAX +0FD0- AA TAX +0FD1- AA TAX +0FD2- AA TAX +0FD3- AA TAX +0FD4- AA TAX +0FD5- AA TAX +0FD6- AA TAX +0FD7- AA TAX +0FD8- AA TAX +0FD9- AA TAX +0FDA- AA TAX +0FDB- AA TAX +0FDC- AA TAX +0FDD- AA TAX +0FDE- AA TAX +0FDF- AA TAX +0FE0- AA TAX +0FE1- AA TAX +0FE2- AA TAX +0FE3- 8D AA 8D STA $8DAA +0FE6- BA TSX +0FE7- D3 ??? +0FE8- C5 D4 CMP $D4 +0FEA- D6 C1 DEC $C1,X +0FEC- D2 D3 CMP ($D3) +0FEE- 8D AA 8D STA $8DAA +0FF1- AA TAX +0FF2- AA TAX +0FF3- 20 C4 C9 JSR $C9C4 +0FF6- CD 20 C1 CMP $C120 +0FF9- D2 D2 CMP ($D2) +0FFB- C1 D9 CMP ($D9,X) +0FFD- D3 ??? +0FFE- 20 C1 CE JSR $CEC1 +1001- C4 20 CPY $20 +1003- C6 C9 DEC $C9 +1005- CC CC 8D CPY $8DCC +1008- AA TAX +1009- 8D A0 C4 STA $C4A0 +100C- C9 CD CMP #$CD +100E- B8 CLV +100F- B2 A0 LDA ($A0) +1011- D3 ??? +1012- CF ??? +1013- D5 D4 CMP $D4,X +1015- C8 INY +1016- D7 ??? +1017- BB ??? +1018- A3 ??? +1019- D8 CLD +101A- CD C1 D8 CMP $D8C1 +101D- BB ??? +101E- A3 ??? +101F- D9 CD C1 CMP $C1CD,Y +1022- D8 CLD +1023- BB ??? +1024- A3 ??? +1025- B1 BB LDA ($BB),Y +1027- A3 ??? +1028- B1 8D LDA ($8D),Y +102A- A0 C4 LDY #$C4 +102C- C9 CD CMP #$CD +102E- B8 CLV +102F- B2 20 LDA ($20) +1031- D7 ??? +1032- C5 D3 CMP $D3 +1034- D4 ??? +1035- D7 ??? +1036- BB ??? +1037- A3 ??? +1038- D8 CLD +1039- CD C1 D8 CMP $D8C1 +103C- BB ??? +103D- A3 ??? +103E- D9 CD C1 CMP $C1CD,Y +1041- D8 CLD +1042- BB ??? +1043- A3 ??? +1044- B1 BB LDA ($BB),Y +1046- A3 ??? +1047- B1 8D LDA ($8D),Y +1049- A0 C4 LDY #$C4 +104B- C9 CD CMP #$CD +104D- B8 CLV +104E- B2 20 LDA ($20) +1050- D6 C9 DEC $C9,X +1052- D3 ??? +1053- C9 D4 CMP #$D4 +1055- C5 C4 CMP $C4 +1057- BB ??? +1058- A3 ??? +1059- D8 CLD +105A- CD C1 D8 CMP $D8C1 +105D- BB ??? +105E- A3 ??? +105F- D9 CD C1 CMP $C1CD,Y +1062- D8 CLD +1063- BB ??? +1064- A3 ??? +1065- B1 BB LDA ($BB),Y +1067- A3 ??? +1068- B0 8D BCS $0FF7 +106A- A0 C4 LDY #$C4 +106C- C9 CD CMP #$CD +106E- B8 CLV +106F- B1 A0 LDA ($A0),Y +1071- D8 CLD +1072- D3 ??? +1073- D4 ??? +1074- C1 C3 CMP ($C3,X) +1076- CB ??? +1077- BB ??? +1078- A3 ??? +1079- D8 CLD +107A- D3 ??? +107B- D4 ??? +107C- C1 CB CMP ($CB,X) +107E- D3 ??? +107F- BB ??? +1080- A3 ??? +1081- B1 BB LDA ($BB),Y +1083- A3 ??? +1084- B0 8D BCS $1013 +1086- A0 C4 LDY #$C4 +1088- C9 CD CMP #$CD +108A- B8 CLV +108B- B1 A0 LDA ($A0),Y +108D- D9 D3 D4 CMP $D4D3,Y +1090- C1 C3 CMP ($C3,X) +1092- CB ??? +1093- BB ??? +1094- A3 ??? +1095- D9 D3 D4 CMP $D4D3,Y +1098- C1 CB CMP ($CB,X) +109A- D3 ??? +109B- BB ??? +109C- A3 ??? +109D- B1 BB LDA ($BB),Y +109F- A3 ??? +10A0- B0 8D BCS $102F +10A2- AA TAX +10A3- 8D AA AA STA $AAAA +10A6- 20 CE CF JSR $CFCE +10A9- D7 ??? +10AA- 20 C1 D3 JSR $D3C1 +10AD- D3 ??? +10AE- C9 C7 CMP #$C7 +10B0- CE 20 D6 DEC $D620 +10B3- C1 D2 CMP ($D2,X) +10B5- C9 C1 CMP #$C1 +10B7- C2 ??? +10B8- CC C5 20 CPY $20C5 +10BB- D6 C1 DEC $C1,X +10BD- CC D5 C5 CPY $C5D5 +10C0- D3 ??? +10C1- 8D AA 8D STA $8DAA +10C4- A0 CC LDY #$CC +10C6- C4 C1 CPY $C1 +10C8- A0 A3 LDY #$A3 +10CA- B0 8D BCS $1059 +10CC- A0 D3 LDY #$D3 +10CE- D4 ??? +10CF- C1 A0 CMP ($A0,X) +10D1- D3 ??? +10D2- D0 D4 BNE $10A8 +10D4- D2 8D CMP ($8D) +10D6- A0 D3 LDY #$D3 +10D8- D4 ??? +10D9- C1 A0 CMP ($A0,X) +10DB- D6 B0 DEC $B0,X +10DD- 8D A0 CC STA $CCA0 +10E0- C4 C1 CPY $C1 +10E2- A0 A3 LDY #$A3 +10E4- B1 8D LDA ($8D),Y +10E6- A0 D3 LDY #$D3 +10E8- D4 ??? +10E9- C1 A0 CMP ($A0,X) +10EB- D6 B1 DEC $B1,X +10ED- 8D A0 D2 STA $D2A0 +10F0- D4 ??? +10F1- D3 ??? +10F2- 8D AA 8D STA $8DAA +10F5- AA TAX +10F6- AA TAX +10F7- AA TAX +10F8- AA TAX +10F9- AA TAX +10FA- AA TAX +10FB- AA TAX +10FC- AA TAX +10FD- AA TAX +10FE- AA TAX +10FF- AA TAX +1100- AA TAX +1101- AA TAX +1102- AA TAX +1103- AA TAX +1104- AA TAX +1105- AA TAX +1106- AA TAX +1107- AA TAX +1108- AA TAX +1109- AA TAX +110A- AA TAX +110B- AA TAX +110C- AA TAX +110D- AA TAX +110E- AA TAX +110F- AA TAX +1110- AA TAX +1111- AA TAX +1112- AA TAX +1113- AA TAX +1114- AA TAX +1115- 8D AA 8D STA $8DAA +1118- BA TSX +1119- CF ??? +111A- D5 D4 CMP $D4,X +111C- D7 ??? +111D- C1 CC CMP ($CC,X) +111F- CC D3 8D CPY $8DD3 +1122- AA TAX +1123- 8D AA AA STA $AAAA +1126- 20 CD C1 JSR $C1CD +1129- CB ??? +112A- C5 20 CMP $20 +112C- C3 ??? +112D- CF ??? +112E- CC D5 CD CPY $CDD5 +1131- CE 20 CD DEC $CD20 +1134- C9 CE CMP #$CE +1136- 20 C1 CE JSR $CEC1 +1139- C4 20 CPY $20 +113B- CD C1 D8 CMP $D8C1 +113E- 20 D4 CF JSR $CFD4 +1141- 20 C2 C5 JSR $C5C2 +1144- 20 C1 CC JSR $CCC1 +1147- CC 8D AA CPY $AA8D +114A- AA TAX +114B- 20 D7 C1 JSR $C1D7 +114E- CC CC 20 CPY $20CC +1151- A8 TAY +1152- C3 ??? +1153- CF ??? +1154- C4 C5 CPY $C5 +1156- BA TSX +1157- 20 B1 A9 JSR $A9B1 +115A- AE 8D AA LDX $AA8D +115D- 8D A0 CC STA $CCA0 +1160- C4 C1 CPY $C1 +1162- A0 A3 LDY #$A3 +1164- B0 A0 BCS $1106 +1166- BB ??? +1167- 20 D3 CF JSR $CFD3 +116A- 20 D8 AC JSR $ACD8 +116D- D9 20 D7 CMP $D720,Y +1170- C9 CC CMP #$CC +1172- CC 20 C9 CPY $C920 +1175- CE C3 20 DEC $20C3 +1178- D4 ??? +1179- CF ??? +117A- 20 B1 8D JSR $8DB1 +117D- A0 D3 LDY #$D3 +117F- D4 ??? +1180- C1 A0 CMP ($A0,X) +1182- D8 CLD +1183- D8 CLD +1184- 8D A0 D3 STA $D3A0 +1187- D4 ??? +1188- C1 A0 CMP ($A0,X) +118A- D9 D9 8D CMP $8DD9,Y +118D- AA TAX +118E- 8D BA C3 STA $C3BA +1191- CF ??? +1192- CC C5 C4 CPY $C4C5 +1195- C7 ??? +1196- C5 8D CMP $8D +1198- A0 C9 LDY #$C9 +119A- CE C3 A0 DEC $A0C3 +119D- D8 CLD +119E- D8 CLD +119F- 8D A0 D0 STA $D0A0 +11A2- D5 D4 CMP $D4,X +11A4- B8 CLV +11A5- B2 A0 LDA ($A0) +11A7- D6 B1 DEC $B1,X +11A9- BB ??? +11AA- D6 C9 DEC $C9,X +11AC- D3 ??? +11AD- C9 D4 CMP #$D4 +11AF- C5 C4 CMP $C4 +11B1- BB ??? +11B2- D8 CLD +11B3- D8 CLD +11B4- BB ??? +11B5- A3 ??? +11B6- B1 8D LDA ($8D),Y +11B8- A0 D0 LDY #$D0 +11BA- D5 D4 CMP $D4,X +11BC- B8 CLV +11BD- B2 A0 LDA ($A0) +11BF- D6 B1 DEC $B1,X +11C1- BB ??? +11C2- D6 C9 DEC $C9,X +11C4- D3 ??? +11C5- C9 D4 CMP #$D4 +11C7- C5 C4 CMP $C4 +11C9- BB ??? +11CA- D8 CLD +11CB- D8 CLD +11CC- BB ??? +11CD- A3 ??? +11CE- D9 CD C1 CMP $C1CD,Y +11D1- D8 CLD +11D2- 8D A0 CC STA $CCA0 +11D5- C4 C1 CPY $C1 +11D7- A0 D8 LDY #$D8 +11D9- D8 CLD +11DA- 8D A0 C3 STA $C3A0 +11DD- CD D0 A0 CMP $A0D0 +11E0- A3 ??? +11E1- D8 CLD +11E2- CD C1 D8 CMP $D8C1 +11E5- 8D A0 C2 STA $C2A0 +11E8- CE C5 A0 DEC $A0C5 +11EB- BA TSX +11EC- C3 ??? +11ED- CF ??? +11EE- CC C5 C4 CPY $C4C5 +11F1- C7 ??? +11F2- C5 8D CMP $8D +11F4- AA TAX +11F5- 8D AA AA STA $AAAA +11F8- 20 CD C1 JSR $C1CD +11FB- CB ??? +11FC- C5 20 CMP $20 +11FE- CD C9 CE CMP $CEC9 +1201- 20 C1 CE JSR $CEC1 +1204- C4 20 CPY $20 +1206- CD C1 D8 CMP $D8C1 +1209- 20 D2 CF JSR $CFD2 +120C- D7 ??? +120D- D3 ??? +120E- 20 D4 CF JSR $CFD4 +1211- 20 C2 C5 JSR $C5C2 +1214- 20 C1 CC JSR $CCC1 +1217- CC 20 D7 CPY $D720 +121A- C1 CC CMP ($CC,X) +121C- CC 8D AA CPY $AA8D +121F- 8D BA D2 STA $D2BA +1222- CF ??? +1223- D7 ??? +1224- C5 C4 CMP $C4 +1226- C7 ??? +1227- C5 8D CMP $8D +1229- A0 C9 LDY #$C9 +122B- CE C3 A0 DEC $A0C3 +122E- D9 D9 8D CMP $8DD9,Y +1231- A0 D0 LDY #$D0 +1233- D5 D4 CMP $D4,X +1235- B8 CLV +1236- B2 A0 LDA ($A0) +1238- D6 B1 DEC $B1,X +123A- BB ??? +123B- D6 C9 DEC $C9,X +123D- D3 ??? +123E- C9 D4 CMP #$D4 +1240- C5 C4 CMP $C4 +1242- BB ??? +1243- A3 ??? +1244- B1 BB LDA ($BB),Y +1246- D9 D9 8D CMP $8DD9,Y +1249- A0 D0 LDY #$D0 +124B- D5 D4 CMP $D4,X +124D- B8 CLV +124E- B2 A0 LDA ($A0) +1250- D6 B1 DEC $B1,X +1252- BB ??? +1253- D6 C9 DEC $C9,X +1255- D3 ??? +1256- C9 D4 CMP #$D4 +1258- C5 C4 CMP $C4 +125A- BB ??? +125B- A3 ??? +125C- D8 CLD +125D- CD C1 D8 CMP $D8C1 +1260- BB ??? +1261- D9 D9 8D CMP $8DD9,Y +1264- A0 CC LDY #$CC +1266- C4 C1 CPY $C1 +1268- A0 D9 LDY #$D9 +126A- D9 8D A0 CMP $A08D,Y +126D- C3 ??? +126E- CD D0 A0 CMP $A0D0 +1271- A3 ??? +1272- D9 CD C1 CMP $C1CD,Y +1275- D8 CLD +1276- 8D A0 C2 STA $C2A0 +1279- CE C5 A0 DEC $A0C5 +127C- BA TSX +127D- D2 CF CMP ($CF) +127F- D7 ??? +1280- C5 C4 CMP $C4 +1282- C7 ??? +1283- C5 8D CMP $8D +1285- A0 D2 LDY #$D2 +1287- D4 ??? +1288- D3 ??? +1289- 8D AA 8D STA $8DAA +128C- AA TAX +128D- AA TAX +128E- AA TAX +128F- AA TAX +1290- AA TAX +1291- AA TAX +1292- AA TAX +1293- AA TAX +1294- AA TAX +1295- AA TAX +1296- AA TAX +1297- AA TAX +1298- AA TAX +1299- AA TAX +129A- AA TAX +129B- AA TAX +129C- AA TAX +129D- AA TAX +129E- AA TAX +129F- AA TAX +12A0- AA TAX +12A1- AA TAX +12A2- AA TAX +12A3- AA TAX +12A4- AA TAX +12A5- AA TAX +12A6- AA TAX +12A7- AA TAX +12A8- AA TAX +12A9- AA TAX +12AA- AA TAX +12AB- AA TAX +12AC- 8D AA 20 STA $20AA +12AF- 20 20 20 JSR $2020 +12B2- 20 20 20 JSR $2020 +12B5- 20 20 20 JSR $2020 +12B8- 20 20 20 JSR $2020 +12BB- 20 20 20 JSR $2020 +12BE- 20 20 20 JSR $2020 +12C1- 20 20 20 JSR $2020 +12C4- 20 20 20 JSR $2020 +12C7- 20 20 20 JSR $2020 +12CA- 20 20 AA JSR $AA20 +12CD- 8D AA 20 STA $20AA +12D0- 20 20 C2 JSR $C220 +12D3- D5 C9 CMP $C9,X +12D5- CC C4 20 CPY $20C4 +12D8- D4 ??? +12D9- C8 INY +12DA- C5 20 CMP $20 +12DC- CD C1 DA CMP $DAC1 +12DF- C5 20 CMP $20 +12E1- 20 20 20 JSR $2020 +12E4- 20 20 20 JSR $2020 +12E7- 20 20 20 JSR $2020 +12EA- 20 20 20 JSR $2020 +12ED- AA TAX +12EE- 8D AA 20 STA $20AA +12F1- 20 20 20 JSR $2020 +12F4- 20 20 20 JSR $2020 +12F7- 20 20 20 JSR $2020 +12FA- 20 20 20 JSR $2020 +12FD- 20 20 20 JSR $2020 +1300- 20 20 20 JSR $2020 +1303- 20 20 20 JSR $2020 +1306- 20 20 20 JSR $2020 +1309- 20 20 20 JSR $2020 +130C- 20 20 AA JSR $AA20 +130F- 8D AA AA STA $AAAA +1312- AA TAX +1313- AA TAX +1314- AA TAX +1315- AA TAX +1316- AA TAX +1317- AA TAX +1318- AA TAX +1319- AA TAX +131A- AA TAX +131B- AA TAX +131C- AA TAX +131D- AA TAX +131E- AA TAX +131F- AA TAX +1320- AA TAX +1321- AA TAX +1322- AA TAX +1323- AA TAX +1324- AA TAX +1325- AA TAX +1326- AA TAX +1327- AA TAX +1328- AA TAX +1329- AA TAX +132A- AA TAX +132B- AA TAX +132C- AA TAX +132D- AA TAX +132E- AA TAX +132F- AA TAX +1330- 8D AA 8D STA $8DAA +1333- C2 ??? +1334- D5 C9 CMP $C9,X +1336- CC C4 8D CPY $8DC4 +1339- AA TAX +133A- 8D A0 D0 STA $D0A0 +133D- D2 CE CMP ($CE) +133F- A0 A2 LDY #$A2 +1341- C2 ??? +1342- D5 C9 CMP $C9,X +1344- CC C4 C9 CPY $C9C4 +1347- CE C7 20 DEC $20C7 +134A- CD C1 DA CMP $DAC1 +134D- C5 AE CMP $AE +134F- AE AE A2 LDX $A2AE +1352- AC B8 C4 LDY $C4B8 +1355- B8 CLV +1356- C4 8D CPY $8D +1358- AA TAX +1359- 8D AA AA STA $AAAA +135C- AA TAX +135D- AA TAX +135E- AA TAX +135F- AA TAX +1360- AA TAX +1361- AA TAX +1362- AA TAX +1363- AA TAX +1364- AA TAX +1365- AA TAX +1366- AA TAX +1367- AA TAX +1368- AA TAX +1369- AA TAX +136A- AA TAX +136B- AA TAX +136C- AA TAX +136D- AA TAX +136E- AA TAX +136F- AA TAX +1370- AA TAX +1371- AA TAX +1372- AA TAX +1373- AA TAX +1374- AA TAX +1375- AA TAX +1376- AA TAX +1377- AA TAX +1378- AA TAX +1379- AA TAX +137A- 8D AA 8D STA $8DAA +137D- D3 ??? +137E- D4 ??? +137F- C1 CB CMP ($CB,X) +1381- D0 D5 BNE $1358 +1383- D3 ??? +1384- C8 INY +1385- 8D AA 8D STA $8DAA +1388- A0 C9 LDY #$C9 +138A- CE C3 A0 DEC $A0C3 +138D- D3 ??? +138E- D0 D4 BNE $1364 +1390- D2 8D CMP ($8D) +1392- A0 D0 LDY #$D0 +1394- D5 D4 CMP $D4,X +1396- B8 CLV +1397- B1 A0 LDA ($A0),Y +1399- D8 CLD +139A- D8 CLD +139B- BB ??? +139C- D8 CLD +139D- D3 ??? +139E- D4 ??? +139F- C1 C3 CMP ($C3,X) +13A1- CB ??? +13A2- BB ??? +13A3- D3 ??? +13A4- D0 D4 BNE $137A +13A6- D2 A0 CMP ($A0) +13A8- BB ??? +13A9- 20 D0 D5 JSR $D5D0 +13AC- D4 ??? +13AD- 20 C3 CF JSR $CFC3 +13B0- CC 20 CF CPY $CF20 +13B3- CE 20 D3 DEC $D320 +13B6- D4 ??? +13B7- C1 C3 CMP ($C3,X) +13B9- CB ??? +13BA- 8D A0 D0 STA $D0A0 +13BD- D5 D4 CMP $D4,X +13BF- B8 CLV +13C0- B1 A0 LDA ($A0),Y +13C2- D9 D9 BB CMP $BBD9,Y +13C5- D9 D3 D4 CMP $D4D3,Y +13C8- C1 C3 CMP ($C3,X) +13CA- CB ??? +13CB- BB ??? +13CC- D3 ??? +13CD- D0 D4 BNE $13A3 +13CF- D2 A0 CMP ($A0) +13D1- BB ??? +13D2- 20 D0 D5 JSR $D5D0 +13D5- D4 ??? +13D6- 20 D2 CF JSR $CFD2 +13D9- D7 ??? +13DA- 20 CF CE JSR $CECF +13DD- 20 D3 D4 JSR $D4D3 +13E0- C1 C3 CMP ($C3,X) +13E2- CB ??? +13E3- 8D A0 D0 STA $D0A0 +13E6- D5 D4 CMP $D4,X +13E8- B8 CLV +13E9- B2 A0 LDA ($A0) +13EB- D6 B1 DEC $B1,X +13ED- BB ??? +13EE- D6 C9 DEC $C9,X +13F0- D3 ??? +13F1- C9 D4 CMP #$D4 +13F3- C5 C4 CMP $C4 +13F5- BB ??? +13F6- D8 CLD +13F7- D8 CLD +13F8- BB ??? +13F9- D9 D9 A0 CMP $A0D9,Y +13FC- BB ??? +13FD- 20 CD C1 JSR $C1CD +1400- D2 CB CMP ($CB) +1402- 20 C2 CC JSR $CCC2 +1405- CF ??? +1406- C3 ??? +1407- CB ??? +1408- 20 C1 D3 JSR $D3C1 +140B- 20 D6 C9 JSR $C9D6 +140E- D3 ??? +140F- C9 D4 CMP #$D4 +1411- C5 C4 CMP $C4 +1413- 8D AA 8D STA $8DAA +1416- AA TAX +1417- AA TAX +1418- AA TAX +1419- AA TAX +141A- AA TAX +141B- AA TAX +141C- AA TAX +141D- AA TAX +141E- AA TAX +141F- AA TAX +1420- AA TAX +1421- AA TAX +1422- AA TAX +1423- AA TAX +1424- AA TAX +1425- AA TAX +1426- AA TAX +1427- AA TAX +1428- AA TAX +1429- AA TAX +142A- AA TAX +142B- AA TAX +142C- AA TAX +142D- AA TAX +142E- AA TAX +142F- AA TAX +1430- AA TAX +1431- AA TAX +1432- AA TAX +1433- AA TAX +1434- AA TAX +1435- AA TAX +1436- 8D AA 8D STA $8DAA +1439- C3 ??? +143A- C8 INY +143B- C5 C3 CMP $C3 +143D- CB ??? +143E- C1 CC CMP ($CC,X) +1440- CC 8D AA CPY $AA8D +1443- 8D AA AA STA $AAAA +1446- 20 C3 C8 JSR $C8C3 +1449- C5 C3 CMP $C3 +144B- CB ??? +144C- D3 ??? +144D- 20 C1 CC JSR $CCC1 +1450- CC 20 C1 CPY $C120 +1453- C4 CA CPY $CA +1455- C1 C3 CMP ($C3,X) +1457- C5 CE CMP $CE +1459- D4 ??? +145A- 20 C2 CC JSR $CCC2 +145D- CF ??? +145E- C3 ??? +145F- CB ??? +1460- D3 ??? +1461- 20 C6 CF JSR $CFC6 +1464- D2 20 CMP ($20) +1466- C1 20 CMP ($20,X) +1468- D7 ??? +1469- C1 CC CMP ($CC,X) +146B- CC AE 20 CPY $20AE +146E- C9 C6 CMP #$C6 +1470- 8D AA AA STA $AAAA +1473- 20 C3 CF JSR $CFC3 +1476- CD D0 CC CMP $CCD0 +1479- C5 D4 CMP $D4 +147B- C5 CC CMP $CC +147D- D9 20 D3 CMP $D320,Y +1480- D5 D2 CMP $D2,X +1482- D2 CF CMP ($CF) +1484- D5 CE CMP $CE,X +1486- C4 C5 CPY $C5 +1488- C4 AC CPY $AC +148A- 20 D0 CF JSR $CFD0 +148D- D0 20 BNE $14AF +148F- D4 ??? +1490- C8 INY +1491- C5 20 CMP $20 +1493- D3 ??? +1494- D4 ??? +1495- C1 C3 CMP ($C3,X) +1497- CB ??? +1498- 20 C1 CE JSR $CEC1 +149B- C4 8D CPY $8D +149D- AA TAX +149E- AA TAX +149F- 20 C1 CE JSR $CEC1 +14A2- C4 20 CPY $20 +14A4- D3 ??? +14A5- D4 ??? +14A6- C1 D2 CMP ($D2,X) +14A8- D4 ??? +14A9- 20 CF D6 JSR $D6CF +14AC- C5 D2 CMP $D2 +14AE- 20 D5 CE JSR $CED5 +14B1- D4 ??? +14B2- C9 CC CMP #$CC +14B4- AE 8D AA LDX $AA8D +14B7- 8D A0 CC STA $CCA0 +14BA- C4 C1 CPY $C1 +14BC- A0 D9 LDY #$D9 +14BE- D9 A0 BB CMP $BBA0,Y +14C1- 20 D3 D4 JSR $D4D3 +14C4- CF ??? +14C5- D2 C5 CMP ($C5) +14C7- 20 D6 C1 JSR $C1D6 +14CA- CC D5 C5 CPY $C5D5 +14CD- D3 ??? +14CE- 20 C6 CF JSR $CFC6 +14D1- D2 8D CMP ($8D) +14D3- A0 D3 LDY #$D3 +14D5- D4 ??? +14D6- C1 A0 CMP ($A0,X) +14D8- D9 D0 B1 CMP $B1D0,Y +14DB- A0 BB LDY #$BB +14DD- 20 C3 D5 JSR $D5C3 +14E0- D2 D2 CMP ($D2) +14E2- C5 CE CMP $CE +14E4- D4 ??? +14E5- 20 D2 CF JSR $CFD2 +14E8- D7 ??? +14E9- 20 CD C9 JSR $C9CD +14EC- CE D5 D3 DEC $D3D5 +14EF- 20 CF CE JSR $CECF +14F2- C5 8D CMP $8D +14F4- A0 D3 LDY #$D3 +14F6- D4 ??? +14F7- C1 A0 CMP ($A0,X) +14F9- D9 CD B1 CMP $B1CD,Y +14FC- A0 BB LDY #$BB +14FE- 20 C1 CE JSR $CEC1 +1501- C4 20 CPY $20 +1503- C3 ??? +1504- D5 D2 CMP $D2,X +1506- D2 C5 CMP ($C5) +1508- CE D4 20 DEC $20D4 +150B- D2 CF CMP ($CF) +150D- D7 ??? +150E- 20 D0 CC JSR $CCD0 +1511- D5 D3 CMP $D3,X +1513- 8D A0 CC STA $CCA0 +1516- C4 C1 CPY $C1 +1518- A0 D8 LDY #$D8 +151A- D8 CLD +151B- A0 BB LDY #$BB +151D- 20 CF CE JSR $CECF +1520- C5 AC CMP $AC +1522- 20 D4 C8 JSR $C8D4 +1525- C5 CE CMP $CE +1527- 20 C4 CF JSR $CFC4 +152A- 20 D4 C8 JSR $C8D4 +152D- C5 20 CMP $20 +152F- D3 ??? +1530- C1 CD CMP ($CD,X) +1532- C5 8D CMP $8D +1534- A0 D3 LDY #$D3 +1536- D4 ??? +1537- C1 A0 CMP ($A0,X) +1539- D8 CLD +153A- D0 B1 BNE $14ED +153C- A0 BB LDY #$BB +153E- 20 C6 CF JSR $CFC6 +1541- D2 20 CMP ($20) +1543- C3 ??? +1544- CF ??? +1545- CC D5 CD CPY $CDD5 +1548- CE D3 8D DEC $8DD3 +154B- A0 D3 LDY #$D3 +154D- D4 ??? +154E- C1 A0 CMP ($A0,X) +1550- D8 CLD +1551- CD B1 8D CMP $8DB1 +1554- AA TAX +1555- 8D A0 C9 STA $C9A0 +1558- CE C3 A0 DEC $A0C3 +155B- D9 D0 B1 CMP $B1D0,Y +155E- 8D A0 C9 STA $C9A0 +1561- CE C3 A0 DEC $A0C3 +1564- D8 CLD +1565- D0 B1 BNE $1518 +1567- 8D A0 C4 STA $C4A0 +156A- C5 C3 CMP $C3 +156C- A0 D8 LDY #$D8 +156E- CD B1 8D CMP $8DB1 +1571- A0 C4 LDY #$C4 +1573- C5 C3 CMP $C3 +1575- A0 D9 LDY #$D9 +1577- CD B1 8D CMP $8DB1 +157A- AA TAX +157B- 8D BA DF STA $DFBA +157E- C9 C6 CMP #$C6 +1580- B1 A0 LDA ($A0),Y +1582- BB ??? +1583- 20 C9 C6 JSR $C6C9 +1586- 20 D6 C9 JSR $C9D6 +1589- D3 ??? +158A- C9 D4 CMP #$D4 +158C- C5 C4 CMP $C4 +158E- A8 TAY +158F- D8 CLD +1590- D8 CLD +1591- AC D9 AB LDY $ABD9 +1594- B1 A9 LDA ($A9),Y +1596- 20 BD BD JSR $BDBD +1599- 20 B1 8D JSR $8DB1 +159C- A0 C7 LDY #$C7 +159E- C5 D4 CMP $D4 +15A0- B8 CLV +15A1- B2 A0 LDA ($A0) +15A3- D6 C9 DEC $C9,X +15A5- D3 ??? +15A6- C9 D4 CMP #$D4 +15A8- C5 C4 CMP $C4 +15AA- BB ??? +15AB- D8 CLD +15AC- D8 CLD +15AD- BB ??? +15AE- D9 D0 B1 CMP $B1D0,Y +15B1- 8D A0 CC STA $CCA0 +15B4- C4 C1 CPY $C1 +15B6- A0 D2 LDY #$D2 +15B8- C5 D4 CMP $D4 +15BA- D5 D2 CMP $D2,X +15BC- CE 8D A0 DEC $A08D +15BF- C3 ??? +15C0- CD D0 A0 CMP $A0D0 +15C3- A3 ??? +15C4- B1 8D LDA ($8D),Y +15C6- A0 C2 LDY #$C2 +15C8- C5 D1 CMP $D1 +15CA- A0 BA LDY #$BA +15CC- DF ??? +15CD- C9 C6 CMP #$C6 +15CF- B2 A0 LDA ($A0) +15D1- BB ??? +15D2- 20 C9 C6 JSR $C6C9 +15D5- 20 C3 C5 JSR $C5C3 +15D8- CC CC 20 CPY $20CC +15DB- C2 ??? +15DC- C5 CC CMP $CC +15DE- CF ??? +15DF- D7 ??? +15E0- 20 C9 D3 JSR $D3C9 +15E3- 20 C1 20 JSR $20C1 +15E6- D7 ??? +15E7- C1 CC CMP ($CC,X) +15E9- CC 8D BB CPY $BB8D +15EC- 20 C3 CF JSR $CFC3 +15EF- CE D4 C9 DEC $C9D4 +15F2- CE D5 C5 DEC $C5D5 +15F5- 20 D4 C5 JSR $C5D4 +15F8- D3 ??? +15F9- D4 ??? +15FA- C9 CE CMP #$CE +15FC- C7 ??? +15FD- 20 CF D4 JSR $D4CF +1600- C8 INY +1601- C5 D2 CMP $D2 +1603- 8D A0 BB STA $BBA0 +1606- 20 C1 C4 JSR $C4C1 +1609- CA DEX +160A- C1 C3 CMP ($C3,X) +160C- C5 CE CMP $CE +160E- D4 ??? +160F- 20 C3 C5 JSR $C5C3 +1612- CC CC D3 CPY $D3CC +1615- 8D A0 CA STA $CAA0 +1618- CD D0 A0 CMP $A0D0 +161B- C4 CF CPY $CF +161D- CD CF D6 CMP $D6CF +1620- C5 A0 CMP $A0 +1622- BB ??? +1623- 20 CF D4 JSR $D4CF +1626- C8 INY +1627- C5 D2 CMP $D2 +1629- D7 ??? +162A- C9 D3 CMP #$D3 +162C- C5 AC CMP $AC +162E- 20 C5 D8 JSR $D8C5 +1631- C9 D4 CMP #$D4 +1633- 20 C3 CF JSR $CFC3 +1636- CE C4 C9 DEC $C9C4 +1639- D4 ??? +163A- C9 CF CMP #$CF +163C- CE C1 CC DEC $CCC1 +163F- 8D BA DF STA $DFBA +1642- C9 C6 CMP #$C6 +1644- B2 A0 LDA ($A0) +1646- BB ??? +1647- 20 C1 CE JSR $CEC1 +164A- C4 20 CPY $20 +164C- D6 C9 DEC $C9,X +164E- D3 ??? +164F- C9 D4 CMP #$D4 +1651- C5 C4 CMP $C4 +1653- A8 TAY +1654- D8 CLD +1655- AB ??? +1656- B1 AC LDA ($AC),Y +1658- D9 A9 20 CMP $20A9,Y +165B- BD BD 20 LDA $20BD,X +165E- B1 8D LDA ($8D),Y +1660- AA TAX +1661- 8D A0 C7 STA $C7A0 +1664- C5 D4 CMP $D4 +1666- B8 CLV +1667- B2 A0 LDA ($A0) +1669- D6 C9 DEC $C9,X +166B- D3 ??? +166C- C9 D4 CMP #$D4 +166E- C5 C4 CMP $C4 +1670- BB ??? +1671- D8 CLD +1672- D0 B1 BNE $1625 +1674- BB ??? +1675- D9 D9 8D CMP $8DD9,Y +1678- A0 CC LDY #$CC +167A- C4 C1 CPY $C1 +167C- A0 D2 LDY #$D2 +167E- C5 D4 CMP $D4 +1680- D5 D2 CMP $D2,X +1682- CE 8D A0 DEC $A08D +1685- C3 ??? +1686- CD D0 A0 CMP $A0D0 +1689- A3 ??? +168A- B1 A0 LDA ($A0),Y +168C- BB ??? +168D- 20 D4 C5 JSR $C5D4 +1690- D3 ??? +1691- D4 ??? +1692- 20 D2 C9 JSR $C9D2 +1695- C7 ??? +1696- C8 INY +1697- D4 ??? +1698- 20 C3 C5 JSR $C5C3 +169B- CC CC 8D CPY $8DCC +169E- A0 C2 LDY #$C2 +16A0- C5 D1 CMP $D1 +16A2- A0 BA LDY #$BA +16A4- DF ??? +16A5- C9 C6 CMP #$C6 +16A7- B3 ??? +16A8- 8D A0 CA STA $CAA0 +16AB- CD D0 A0 CMP $A0D0 +16AE- C4 CF CPY $CF +16B0- CD CF D6 CMP $D6CF +16B3- C5 8D CMP $8D +16B5- AA TAX +16B6- 8D BA DF STA $DFBA +16B9- C9 C6 CMP #$C6 +16BB- B3 ??? +16BC- A0 BB LDY #$BB +16BE- 20 C1 CE JSR $CEC1 +16C1- C4 20 CPY $20 +16C3- C9 C6 CMP #$C6 +16C5- 20 D6 C9 JSR $C9D6 +16C8- D3 ??? +16C9- C9 D4 CMP #$D4 +16CB- C5 C4 CMP $C4 +16CD- A8 TAY +16CE- D8 CLD +16CF- AC D9 AD LDY $ADD9 +16D2- B1 A9 LDA ($A9),Y +16D4- 20 BD BD JSR $BDBD +16D7- 20 B1 8D JSR $8DB1 +16DA- A0 CC LDY #$CC +16DC- C4 C1 CPY $C1 +16DE- A0 D9 LDY #$D9 +16E0- CD B1 8D CMP $8DB1 +16E3- A0 C3 LDY #$C3 +16E5- CD D0 A0 CMP $A0D0 +16E8- A3 ??? +16E9- B0 A0 BCS $168B +16EB- BB ??? +16EC- 20 D4 C5 JSR $C5D4 +16EF- D3 ??? +16F0- D4 ??? +16F1- 20 C6 CF JSR $CFC6 +16F4- D2 20 CMP ($20) +16F6- D9 BD B0 CMP $B0BD,Y +16F9- 20 D4 CF JSR $CFD4 +16FC- 20 CF D6 JSR $D6CF +16FF- CF ??? +1700- C9 C4 CMP #$C4 +1702- 8D A0 C2 STA $C2A0 +1705- CE C5 A0 DEC $A0C5 +1708- BA TSX +1709- C9 C6 CMP #$C6 +170B- B3 ??? +170C- C3 ??? +170D- A0 BB LDY #$BB +170F- 20 CF D5 JSR $D5CF +1712- D4 ??? +1713- 20 CF C6 JSR $C6CF +1716- 20 C2 CF JSR $CFC2 +1719- D5 CE CMP $CE,X +171B- C4 D3 CPY $D3 +171D- 20 C5 D2 JSR $D2C5 +1720- D2 CF CMP ($CF) +1722- D2 8D CMP ($8D) +1724- A0 CA LDY #$CA +1726- CD D0 A0 CMP $A0D0 +1729- BA TSX +172A- DF ??? +172B- C9 C6 CMP #$C6 +172D- B4 8D LDY $8D,X +172F- BA TSX +1730- C9 C6 CMP #$C6 +1732- B3 ??? +1733- C3 ??? +1734- 8D A0 C7 STA $C7A0 +1737- C5 D4 CMP $D4 +1739- B8 CLV +173A- B2 A0 LDA ($A0) +173C- D6 C9 DEC $C9,X +173E- D3 ??? +173F- C9 D4 CMP #$D4 +1741- C5 C4 CMP $C4 +1743- BB ??? +1744- D8 CLD +1745- D8 CLD +1746- BB ??? +1747- D9 CD B1 CMP $B1CD,Y +174A- 8D A0 CC STA $CCA0 +174D- C4 C1 CPY $C1 +174F- A0 D2 LDY #$D2 +1751- C5 D4 CMP $D4 +1753- D5 D2 CMP $D2,X +1755- CE 8D A0 DEC $A08D +1758- C3 ??? +1759- CD D0 A0 CMP $A0D0 +175C- A3 ??? +175D- B1 A0 LDA ($A0),Y +175F- BB ??? +1760- 20 D4 C5 JSR $C5D4 +1763- D3 ??? +1764- D4 ??? +1765- 20 C3 C5 JSR $C5C3 +1768- CC CC 20 CPY $20CC +176B- C1 C2 CMP ($C2,X) +176D- CF ??? +176E- D6 C5 DEC $C5,X +1770- 8D A0 C2 STA $C2A0 +1773- C5 D1 CMP $D1 +1775- A0 BA LDY #$BA +1777- DF ??? +1778- C9 C6 CMP #$C6 +177A- B4 8D LDY $8D,X +177C- A0 CA LDY #$CA +177E- CD D0 A0 CMP $A0D0 +1781- C4 CF CPY $CF +1783- CD CF D6 CMP $D6CF +1786- C5 8D CMP $8D +1788- AA TAX +1789- 8D BA DF STA $DFBA +178C- C9 C6 CMP #$C6 +178E- B4 A0 LDY $A0,X +1790- A0 BB LDY #$BB +1792- 20 C1 CE JSR $CEC1 +1795- C4 20 CPY $20 +1797- C9 C6 CMP #$C6 +1799- 20 D6 C9 JSR $C9D6 +179C- D3 ??? +179D- C9 D4 CMP #$D4 +179F- C5 C4 CMP $C4 +17A1- A8 TAY +17A2- D8 CLD +17A3- AD B1 AC LDA $ACB1 +17A6- D9 A9 20 CMP $20A9,Y +17A9- BD BD 20 LDA $20BD,X +17AC- B1 8D LDA ($8D),Y +17AE- A0 C7 LDY #$C7 +17B0- C5 D4 CMP $D4 +17B2- B8 CLV +17B3- B2 A0 LDA ($A0) +17B5- D6 C9 DEC $C9,X +17B7- D3 ??? +17B8- C9 D4 CMP #$D4 +17BA- C5 C4 CMP $C4 +17BC- BB ??? +17BD- D8 CLD +17BE- CD B1 BB CMP $BBB1 +17C1- D9 D9 8D CMP $8DD9,Y +17C4- A0 CC LDY #$CC +17C6- C4 C1 CPY $C1 +17C8- A0 D2 LDY #$D2 +17CA- C5 D4 CMP $D4 +17CC- D5 D2 CMP $D2,X +17CE- CE 8D A0 DEC $A08D +17D1- C3 ??? +17D2- CD D0 A0 CMP $A0D0 +17D5- A3 ??? +17D6- B1 A0 LDA ($A0),Y +17D8- BB ??? +17D9- 20 D4 C8 JSR $C8D4 +17DC- C5 CE CMP $CE +17DE- 20 D0 CF JSR $CFD0 +17E1- D0 20 BNE $1803 +17E3- D3 ??? +17E4- D4 ??? +17E5- C1 C3 CMP ($C3,X) +17E7- CB ??? +17E8- D3 ??? +17E9- 20 D5 CE JSR $CED5 +17EC- D4 ??? +17ED- C9 CC CMP #$CC +17EF- 20 C4 CF JSR $CFC4 +17F2- CE C5 8D DEC $8DC5 +17F5- A0 C2 LDY #$C2 +17F7- C5 D1 CMP $D1 +17F9- A0 BA LDY #$BA +17FB- D0 CF BNE $17CC +17FD- D0 8D BNE $178C +17FF- AA TAX +1800- 8D A0 CA STA $CAA0 +1803- CD D0 A0 CMP $A0D0 +1806- C4 CF CPY $CF +1808- CD CF D6 CMP $D6CF +180B- C5 A0 CMP $A0 +180D- BB ??? +180E- 20 CF D4 JSR $D4CF +1811- C8 INY +1812- C5 D2 CMP $D2 +1814- D7 ??? +1815- C9 D3 CMP #$D3 +1817- C5 AC CMP $AC +1819- 20 C5 D8 JSR $D8C5 +181C- C9 D4 CMP #$D4 +181E- 20 D2 CF JSR $CFD2 +1821- D5 D4 CMP $D4,X +1823- C9 CE CMP #$CE +1825- C5 8D CMP $8D +1827- AA TAX +1828- 8D AA AA STA $AAAA +182B- AA TAX +182C- AA TAX +182D- AA TAX +182E- AA TAX +182F- AA TAX +1830- AA TAX +1831- AA TAX +1832- AA TAX +1833- AA TAX +1834- AA TAX +1835- AA TAX +1836- AA TAX +1837- AA TAX +1838- AA TAX +1839- AA TAX +183A- AA TAX +183B- AA TAX +183C- AA TAX +183D- AA TAX +183E- AA TAX +183F- AA TAX +1840- AA TAX +1841- AA TAX +1842- AA TAX +1843- AA TAX +1844- AA TAX +1845- AA TAX +1846- AA TAX +1847- AA TAX +1848- AA TAX +1849- 8D AA 8D STA $8DAA +184C- BA TSX +184D- D0 CF BNE $181E +184F- D0 8D BNE $17DE +1851- AA TAX +1852- 8D A0 C7 STA $C7A0 +1855- C5 D4 CMP $D4 +1857- B8 CLV +1858- B1 A0 LDA ($A0),Y +185A- D8 CLD +185B- D3 ??? +185C- D4 ??? +185D- C1 C3 CMP ($C3,X) +185F- CB ??? +1860- BB ??? +1861- D3 ??? +1862- D0 D4 BNE $1838 +1864- D2 8D CMP ($8D) +1866- A0 CC LDY #$CC +1868- C4 C1 CPY $C1 +186A- A0 D2 LDY #$D2 +186C- C5 D4 CMP $D4 +186E- D5 D2 CMP $D2,X +1870- CE 8D A0 DEC $A08D +1873- D3 ??? +1874- D4 ??? +1875- C1 A0 CMP ($A0,X) +1877- D8 CLD +1878- D8 CLD +1879- 8D A0 C7 STA $C7A0 +187C- C5 D4 CMP $D4 +187E- B8 CLV +187F- B1 A0 LDA ($A0),Y +1881- D9 D3 D4 CMP $D4D3,Y +1884- C1 C3 CMP ($C3,X) +1886- CB ??? +1887- BB ??? +1888- D3 ??? +1889- D0 D4 BNE $185F +188B- D2 8D CMP ($8D) +188D- A0 CC LDY #$CC +188F- C4 C1 CPY $C1 +1891- A0 D2 LDY #$D2 +1893- C5 D4 CMP $D4 +1895- D5 D2 CMP $D2,X +1897- CE 8D A0 DEC $A08D +189A- D3 ??? +189B- D4 ??? +189C- C1 A0 CMP ($A0,X) +189E- D9 D9 8D CMP $8DD9,Y +18A1- A0 C4 LDY #$C4 +18A3- C5 C3 CMP $C3 +18A5- A0 D3 LDY #$D3 +18A7- D0 D4 BNE $187D +18A9- D2 A0 CMP ($A0) +18AB- BB ??? +18AC- 20 D0 CF JSR $CFD0 +18AF- D0 8D BNE $183E +18B1- A0 CC LDY #$CC +18B3- C4 C1 CPY $C1 +18B5- A0 D3 LDY #$D3 +18B7- D0 D4 BNE $188D +18B9- D2 8D CMP ($8D) +18BB- A0 C3 LDY #$C3 +18BD- CD D0 A0 CMP $A0D0 +18C0- A3 ??? +18C1- B1 A0 LDA ($A0),Y +18C3- BB ??? +18C4- 20 C9 C6 JSR $C6C9 +18C7- 20 D3 D4 JSR $D4D3 +18CA- C9 CC CMP #$CC +18CC- CC 20 CD CPY $CD20 +18CF- CF ??? +18D0- D2 C5 CMP ($C5) +18D2- 20 CF CE JSR $CECF +18D5- 20 D3 D4 JSR $D4D3 +18D8- C1 C3 CMP ($C3,X) +18DA- CB ??? +18DB- 8D A0 C2 STA $C2A0 +18DE- C3 ??? +18DF- D3 ??? +18E0- A0 BA LDY #$BA +18E2- C4 CF CPY $CF +18E4- D2 C5 CMP ($C5) +18E6- D0 C5 BNE $18AD +18E8- C1 D4 CMP ($D4,X) +18EA- 8D A0 CA STA $CAA0 +18ED- CD D0 A0 CMP $A0D0 +18F0- C4 C9 CPY $C9 +18F2- D3 ??? +18F3- D0 CD BNE $18C2 +18F5- C1 DA CMP ($DA,X) +18F7- C5 A0 CMP $A0 +18F9- BB ??? +18FA- 20 CF D4 JSR $D4CF +18FD- C8 INY +18FE- C5 D2 CMP $D2 +1900- D7 ??? +1901- C9 D3 CMP #$D3 +1903- C5 AC CMP $AC +1905- 20 C6 C9 JSR $C9C6 +1908- CE C9 D3 DEC $D3C9 +190B- C8 INY +190C- C5 C4 CMP $C4 +190E- A1 8D LDA ($8D,X) +1910- AA TAX +1911- 8D BA C4 STA $C4BA +1914- CF ??? +1915- D2 C5 CMP ($C5) +1917- D0 C5 BNE $18DE +1919- C1 D4 CMP ($D4,X) +191B- 8D A0 CA STA $CAA0 +191E- CD D0 A0 CMP $A0D0 +1921- C3 ??? +1922- C8 INY +1923- C5 C3 CMP $C3 +1925- CB ??? +1926- C1 CC CMP ($CC,X) +1928- CC 8D AA CPY $AA8D +192B- 8D AA AA STA $AAAA +192E- AA TAX +192F- AA TAX +1930- AA TAX +1931- AA TAX +1932- AA TAX +1933- AA TAX +1934- AA TAX +1935- AA TAX +1936- AA TAX +1937- AA TAX +1938- AA TAX +1939- AA TAX +193A- AA TAX +193B- AA TAX +193C- AA TAX +193D- AA TAX +193E- AA TAX +193F- AA TAX +1940- AA TAX +1941- AA TAX +1942- AA TAX +1943- AA TAX +1944- AA TAX +1945- AA TAX +1946- AA TAX +1947- AA TAX +1948- AA TAX +1949- AA TAX +194A- AA TAX +194B- AA TAX +194C- 8D AA 8D STA $8DAA +194F- C4 CF CPY $CF +1951- CD CF D6 CMP $D6CF +1954- C5 8D CMP $8D +1956- AA TAX +1957- 8D AA AA STA $AAAA +195A- 20 CD CF JSR $CFCD +195D- D6 C5 DEC $C5,X +195F- 20 C9 CE JSR $CEC9 +1962- 20 C1 20 JSR $20C1 +1965- D2 C1 CMP ($C1) +1967- CE C4 CF DEC $CFC4 +196A- CD 20 C4 CMP $C420 +196D- C9 D2 CMP #$D2 +196F- C5 C3 CMP $C3 +1971- D4 ??? +1972- C9 CF CMP #$CF +1974- CE 8D AA DEC $AA8D +1977- 8D A0 CA STA $CAA0 +197A- D3 ??? +197B- D2 A0 CMP ($A0) +197D- D2 C1 CMP ($C1) +197F- CE C4 B8 DEC $B8C4 +1982- 8D A0 C3 STA $C3A0 +1985- CD D0 A0 CMP $A0D0 +1988- A3 ??? +1989- B6 B4 LDX $B4,Y +198B- A0 BB LDY #$BB +198D- 20 C9 C6 JSR $C6C9 +1990- 20 D2 CE JSR $CED2 +1993- C4 20 CPY $20 +1995- BC 20 B6 LDY $B620,X +1998- B4 8D LDY $8D,X +199A- A0 C2 LDY #$C2 +199C- C3 ??? +199D- C3 ??? +199E- A0 BA LDY #$BA +19A0- CD D6 C4 CMP $C4D6 +19A3- CF ??? +19A4- D7 ??? +19A5- CE 8D A0 DEC $A08D +19A8- C3 ??? +19A9- CD D0 A0 CMP $A0D0 +19AC- A3 ??? +19AD- B1 B2 LDA ($B2),Y +19AF- B8 CLV +19B0- A0 BB LDY #$BB +19B2- 20 C5 CC JSR $CCC5 +19B5- D3 ??? +19B6- C5 20 CMP $20 +19B8- C9 C6 CMP #$C6 +19BA- 20 D2 CE JSR $CED2 +19BD- C4 20 CPY $20 +19BF- BC 20 B1 LDY $B120,X +19C2- B2 B8 LDA ($B8) +19C4- 8D A0 C2 STA $C2A0 +19C7- C3 ??? +19C8- C3 ??? +19C9- A0 BA LDY #$BA +19CB- CD D6 D2 CMP $D2D6 +19CE- C9 C7 CMP #$C7 +19D0- C8 INY +19D1- D4 ??? +19D2- 8D A0 C3 STA $C3A0 +19D5- CD D0 A0 CMP $A0D0 +19D8- A3 ??? +19D9- B1 B9 LDA ($B9),Y +19DB- B2 A0 LDA ($A0) +19DD- BB ??? +19DE- 20 C5 CC JSR $CCC5 +19E1- D3 ??? +19E2- C5 20 CMP $20 +19E4- C9 C6 CMP #$C6 +19E6- 20 D2 CE JSR $CED2 +19E9- C4 20 CPY $20 +19EB- BC 20 B1 LDY $B120,X +19EE- B9 B2 8D LDA $8DB2,Y +19F1- A0 C2 LDY #$C2 +19F3- C3 ??? +19F4- C3 ??? +19F5- A0 BA LDY #$BA +19F7- CD D6 D5 CMP $D5D6 +19FA- D0 8D BNE $1989 +19FC- A0 CA LDY #$CA +19FE- CD D0 A0 CMP $A0D0 +1A01- BA TSX +1A02- CD D6 CC CMP $CCD6 +1A05- C5 C6 CMP $C6 +1A07- D4 ??? +1A08- A0 BB LDY #$BB +1A0A- 20 C5 CC JSR $CCC5 +1A0D- D3 ??? +1A0E- C5 20 CMP $20 +1A10- D2 CE CMP ($CE) +1A12- C4 20 CPY $20 +1A14- C9 D3 CMP #$D3 +1A16- 20 BE 20 JSR $20BE +1A19- B1 B9 LDA ($B9),Y +1A1B- B1 8D LDA ($8D),Y +1A1D- AA TAX +1A1E- 8D BA CD STA $CDBA +1A21- D6 C4 DEC $C4,X +1A23- CF ??? +1A24- D7 ??? +1A25- CE 8D A0 DEC $A08D +1A28- C7 ??? +1A29- C5 D4 CMP $D4 +1A2B- B8 CLV +1A2C- B2 A0 LDA ($A0) +1A2E- D6 C9 DEC $C9,X +1A30- D3 ??? +1A31- C9 D4 CMP #$D4 +1A33- C5 C4 CMP $C4 +1A35- BB ??? +1A36- D8 CLD +1A37- D8 CLD +1A38- BB ??? +1A39- D9 D0 B1 CMP $B1D0,Y +1A3C- 8D A0 CC STA $CCA0 +1A3F- C4 C1 CPY $C1 +1A41- A0 D2 LDY #$D2 +1A43- C5 D4 CMP $D4 +1A45- D5 D2 CMP $D2,X +1A47- CE 8D A0 DEC $A08D +1A4A- C3 ??? +1A4B- CD D0 A0 CMP $A0D0 +1A4E- A3 ??? +1A4F- B0 A0 BCS $19F1 +1A51- BB ??? +1A52- 20 C9 C6 JSR $C6C9 +1A55- 20 CE CF JSR $CFCE +1A58- D4 ??? +1A59- 20 C1 20 JSR $20C1 +1A5C- D7 ??? +1A5D- C1 CC CMP ($CC,X) +1A5F- CC 8D A0 CPY $A08D +1A62- C2 ??? +1A63- C5 D1 CMP $D1 +1A65- A0 BA LDY #$BA +1A67- C4 CF CPY $CF +1A69- D7 ??? +1A6A- CE C7 CF DEC $CFC7 +1A6D- 8D A0 CA STA $CAA0 +1A70- CD D0 A0 CMP $A0D0 +1A73- C4 CF CPY $CF +1A75- CD CF D6 CMP $D6CF +1A78- C5 8D CMP $8D +1A7A- BA TSX +1A7B- C4 CF CPY $CF +1A7D- D7 ??? +1A7E- CE C7 CF DEC $CFC7 +1A81- A0 BB LDY #$BB +1A83- 20 D4 C8 JSR $C8D4 +1A86- C5 CE CMP $CE +1A88- 20 CD CF JSR $CFCD +1A8B- D6 C5 DEC $C5,X +1A8D- 20 D4 C8 JSR $C8D4 +1A90- C5 D2 CMP $D2 +1A92- C5 8D CMP $8D +1A94- A0 D0 LDY #$D0 +1A96- D5 D4 CMP $D4,X +1A98- B8 CLV +1A99- B2 A0 LDA ($A0) +1A9B- D6 B0 DEC $B0,X +1A9D- BB ??? +1A9E- D3 ??? +1A9F- CF ??? +1AA0- D5 D4 CMP $D4,X +1AA2- C8 INY +1AA3- D7 ??? +1AA4- BB ??? +1AA5- D8 CLD +1AA6- D8 CLD +1AA7- BB ??? +1AA8- D9 D9 8D CMP $8DD9,Y +1AAB- A0 C9 LDY #$C9 +1AAD- CE C3 A0 DEC $A0C3 +1AB0- D9 D9 8D CMP $8DD9,Y +1AB3- A0 CA LDY #$CA +1AB5- CD D0 A0 CMP $A0D0 +1AB8- D3 ??? +1AB9- D4 ??? +1ABA- C1 CB CMP ($CB,X) +1ABC- D0 D5 BNE $1A93 +1ABE- D3 ??? +1ABF- C8 INY +1AC0- 8D BA CD STA $CDBA +1AC3- D6 D2 DEC $D2,X +1AC5- C9 C7 CMP #$C7 +1AC7- C8 INY +1AC8- D4 ??? +1AC9- 8D A0 C7 STA $C7A0 +1ACC- C5 D4 CMP $D4 +1ACE- B8 CLV +1ACF- B2 A0 LDA ($A0) +1AD1- D6 C9 DEC $C9,X +1AD3- D3 ??? +1AD4- C9 D4 CMP #$D4 +1AD6- C5 C4 CMP $C4 +1AD8- BB ??? +1AD9- D8 CLD +1ADA- D0 B1 BNE $1A8D +1ADC- BB ??? +1ADD- D9 D9 8D CMP $8DD9,Y +1AE0- A0 CC LDY #$CC +1AE2- C4 C1 CPY $C1 +1AE4- A0 D2 LDY #$D2 +1AE6- C5 D4 CMP $D4 +1AE8- D5 D2 CMP $D2,X +1AEA- CE 8D A0 DEC $A08D +1AED- C3 ??? +1AEE- CD D0 A0 CMP $A0D0 +1AF1- A3 ??? +1AF2- B0 8D BCS $1A81 +1AF4- A0 C2 LDY #$C2 +1AF6- C5 D1 CMP $D1 +1AF8- A0 BA LDY #$BA +1AFA- D2 C9 CMP ($C9) +1AFC- C7 ??? +1AFD- C8 INY +1AFE- D4 ??? +1AFF- C7 ??? +1B00- CF ??? +1B01- 8D A0 CA STA $CAA0 +1B04- CD D0 A0 CMP $A0D0 +1B07- C4 CF CPY $CF +1B09- CD CF D6 CMP $D6CF +1B0C- C5 8D CMP $8D +1B0E- BA TSX +1B0F- D2 C9 CMP ($C9) +1B11- C7 ??? +1B12- C8 INY +1B13- D4 ??? +1B14- C7 ??? +1B15- CF ??? +1B16- 8D A0 D0 STA $D0A0 +1B19- D5 D4 CMP $D4,X +1B1B- B8 CLV +1B1C- B2 A0 LDA ($A0) +1B1E- D6 B0 DEC $B0,X +1B20- BB ??? +1B21- D7 ??? +1B22- C5 D3 CMP $D3 +1B24- D4 ??? +1B25- D7 ??? +1B26- BB ??? +1B27- D8 CLD +1B28- D0 B1 BNE $1ADB +1B2A- BB ??? +1B2B- D9 D9 8D CMP $8DD9,Y +1B2E- A0 C9 LDY #$C9 +1B30- CE C3 A0 DEC $A0C3 +1B33- D8 CLD +1B34- D8 CLD +1B35- 8D A0 CA STA $CAA0 +1B38- CD D0 A0 CMP $A0D0 +1B3B- D3 ??? +1B3C- D4 ??? +1B3D- C1 CB CMP ($CB,X) +1B3F- D0 D5 BNE $1B16 +1B41- D3 ??? +1B42- C8 INY +1B43- 8D AA 8D STA $8DAA +1B46- BA TSX +1B47- CD D6 D5 CMP $D5D6 +1B4A- D0 8D BNE $1AD9 +1B4C- A0 CC LDY #$CC +1B4E- C4 C1 CPY $C1 +1B50- A0 D9 LDY #$D9 +1B52- CD B1 8D CMP $8DB1 +1B55- A0 C3 LDY #$C3 +1B57- CD D0 A0 CMP $A0D0 +1B5A- A3 ??? +1B5B- B0 8D BCS $1AEA +1B5D- A0 C2 LDY #$C2 +1B5F- C5 D1 CMP $D1 +1B61- A0 BA LDY #$BA +1B63- D5 D0 CMP $D0,X +1B65- CE CF 8D DEC $8DCF +1B68- A0 C7 LDY #$C7 +1B6A- C5 D4 CMP $D4 +1B6C- B8 CLV +1B6D- B2 A0 LDA ($A0) +1B6F- D6 C9 DEC $C9,X +1B71- D3 ??? +1B72- C9 D4 CMP #$D4 +1B74- C5 C4 CMP $C4 +1B76- BB ??? +1B77- D8 CLD +1B78- D8 CLD +1B79- BB ??? +1B7A- D9 CD B1 CMP $B1CD,Y +1B7D- 8D A0 CC STA $CCA0 +1B80- C4 C1 CPY $C1 +1B82- A0 D2 LDY #$D2 +1B84- C5 D4 CMP $D4 +1B86- D5 D2 CMP $D2,X +1B88- CE 8D A0 DEC $A08D +1B8B- C3 ??? +1B8C- CD D0 A0 CMP $A0D0 +1B8F- A3 ??? +1B90- B0 8D BCS $1B1F +1B92- A0 C2 LDY #$C2 +1B94- C5 D1 CMP $D1 +1B96- A0 BA LDY #$BA +1B98- D5 D0 CMP $D0,X +1B9A- C7 ??? +1B9B- CF ??? +1B9C- 8D BA D5 STA $D5BA +1B9F- D0 CE BNE $1B6F +1BA1- CF ??? +1BA2- 8D A0 CA STA $CAA0 +1BA5- CD D0 A0 CMP $A0D0 +1BA8- C4 CF CPY $CF +1BAA- CD CF D6 CMP $D6CF +1BAD- C5 8D CMP $8D +1BAF- BA TSX +1BB0- D5 D0 CMP $D0,X +1BB2- C7 ??? +1BB3- CF ??? +1BB4- 8D A0 D0 STA $D0A0 +1BB7- D5 D4 CMP $D4,X +1BB9- B8 CLV +1BBA- B2 A0 LDA ($A0) +1BBC- D6 B0 DEC $B0,X +1BBE- BB ??? +1BBF- D3 ??? +1BC0- CF ??? +1BC1- D5 D4 CMP $D4,X +1BC3- C8 INY +1BC4- D7 ??? +1BC5- BB ??? +1BC6- D8 CLD +1BC7- D8 CLD +1BC8- BB ??? +1BC9- D9 CD B1 CMP $B1CD,Y +1BCC- 8D A0 C4 STA $C4A0 +1BCF- C5 C3 CMP $C3 +1BD1- A0 D9 LDY #$D9 +1BD3- D9 8D A0 CMP $A08D,Y +1BD6- CA DEX +1BD7- CD D0 A0 CMP $A0D0 +1BDA- D3 ??? +1BDB- D4 ??? +1BDC- C1 CB CMP ($CB,X) +1BDE- D0 D5 BNE $1BB5 +1BE0- D3 ??? +1BE1- C8 INY +1BE2- 8D AA 8D STA $8DAA +1BE5- BA TSX +1BE6- CD D6 CC CMP $CCD6 +1BE9- C5 C6 CMP $C6 +1BEB- D4 ??? +1BEC- 8D A0 C7 STA $C7A0 +1BEF- C5 D4 CMP $D4 +1BF1- B8 CLV +1BF2- B2 A0 LDA ($A0) +1BF4- D6 C9 DEC $C9,X +1BF6- D3 ??? +1BF7- C9 D4 CMP #$D4 +1BF9- C5 C4 CMP $C4 +1BFB- BB ??? +1BFC- D8 CLD +1BFD- CD B1 BB CMP $BBB1 +1C00- D9 D9 8D CMP $8DD9,Y +1C03- A0 CC LDY #$CC +1C05- C4 C1 CPY $C1 +1C07- A0 D2 LDY #$D2 +1C09- C5 D4 CMP $D4 +1C0B- D5 D2 CMP $D2,X +1C0D- CE 8D A0 DEC $A08D +1C10- C3 ??? +1C11- CD D0 A0 CMP $A0D0 +1C14- A3 ??? +1C15- B0 8D BCS $1BA4 +1C17- A0 C2 LDY #$C2 +1C19- C5 D1 CMP $D1 +1C1B- A0 BA LDY #$BA +1C1D- CC C5 C6 CPY $C6C5 +1C20- D4 ??? +1C21- C7 ??? +1C22- CF ??? +1C23- 8D A0 CA STA $CAA0 +1C26- CD D0 A0 CMP $A0D0 +1C29- C4 CF CPY $CF +1C2B- CD CF D6 CMP $D6CF +1C2E- C5 8D CMP $8D +1C30- BA TSX +1C31- CC C5 C6 CPY $C6C5 +1C34- D4 ??? +1C35- C7 ??? +1C36- CF ??? +1C37- 8D A0 D0 STA $D0A0 +1C3A- D5 D4 CMP $D4,X +1C3C- B8 CLV +1C3D- B2 A0 LDA ($A0) +1C3F- D6 B0 DEC $B0,X +1C41- BB ??? +1C42- D7 ??? +1C43- C5 D3 CMP $D3 +1C45- D4 ??? +1C46- D7 ??? +1C47- BB ??? +1C48- D8 CLD +1C49- D8 CLD +1C4A- BB ??? +1C4B- D9 D9 8D CMP $8DD9,Y +1C4E- A0 C4 LDY #$C4 +1C50- C5 C3 CMP $C3 +1C52- A0 D8 LDY #$D8 +1C54- D8 CLD +1C55- 8D A0 CA STA $CAA0 +1C58- CD D0 A0 CMP $A0D0 +1C5B- D3 ??? +1C5C- D4 ??? +1C5D- C1 CB CMP ($CB,X) +1C5F- D0 D5 BNE $1C36 +1C61- D3 ??? +1C62- C8 INY +1C63- 8D AA 8D STA $8DAA +1C66- AA TAX +1C67- AA TAX +1C68- AA TAX +1C69- AA TAX +1C6A- AA TAX +1C6B- AA TAX +1C6C- AA TAX +1C6D- AA TAX +1C6E- AA TAX +1C6F- AA TAX +1C70- AA TAX +1C71- AA TAX +1C72- AA TAX +1C73- AA TAX +1C74- AA TAX +1C75- AA TAX +1C76- AA TAX +1C77- AA TAX +1C78- AA TAX +1C79- AA TAX +1C7A- AA TAX +1C7B- AA TAX +1C7C- AA TAX +1C7D- AA TAX +1C7E- AA TAX +1C7F- AA TAX +1C80- AA TAX +1C81- AA TAX +1C82- AA TAX +1C83- AA TAX +1C84- AA TAX +1C85- AA TAX +1C86- 8D AA 20 STA $20AA +1C89- 20 20 20 JSR $2020 +1C8C- 20 20 20 JSR $2020 +1C8F- 20 20 20 JSR $2020 +1C92- 20 20 20 JSR $2020 +1C95- 20 20 20 JSR $2020 +1C98- 20 20 20 JSR $2020 +1C9B- 20 20 20 JSR $2020 +1C9E- 20 20 20 JSR $2020 +1CA1- 20 20 20 JSR $2020 +1CA4- 20 20 AA JSR $AA20 +1CA7- 8D AA 20 STA $20AA +1CAA- C4 C9 CPY $C9 +1CAC- D3 ??? +1CAD- D0 CC BNE $1C7B +1CAF- C1 D9 CMP ($D9,X) +1CB1- 20 D4 C8 JSR $C8D4 +1CB4- C5 20 CMP $20 +1CB6- CD C1 DA CMP $DAC1 +1CB9- C5 20 CMP $20 +1CBB- 20 20 20 JSR $2020 +1CBE- 20 20 20 JSR $2020 +1CC1- 20 20 20 JSR $2020 +1CC4- 20 20 20 JSR $2020 +1CC7- AA TAX +1CC8- 8D AA 20 STA $20AA +1CCB- 20 20 20 JSR $2020 +1CCE- 20 20 20 JSR $2020 +1CD1- 20 20 20 JSR $2020 +1CD4- 20 20 20 JSR $2020 +1CD7- 20 20 20 JSR $2020 +1CDA- 20 20 20 JSR $2020 +1CDD- 20 20 20 JSR $2020 +1CE0- 20 20 20 JSR $2020 +1CE3- 20 20 20 JSR $2020 +1CE6- 20 20 AA JSR $AA20 +1CE9- 8D AA AA STA $AAAA +1CEC- AA TAX +1CED- AA TAX +1CEE- AA TAX +1CEF- AA TAX +1CF0- AA TAX +1CF1- AA TAX +1CF2- AA TAX +1CF3- AA TAX +1CF4- AA TAX +1CF5- AA TAX +1CF6- AA TAX +1CF7- AA TAX +1CF8- AA TAX +1CF9- AA TAX +1CFA- AA TAX +1CFB- AA TAX +1CFC- AA TAX +1CFD- AA TAX +1CFE- AA TAX +1CFF- AA TAX +1D00- AA TAX +1D01- AA TAX +1D02- AA TAX +1D03- AA TAX +1D04- AA TAX +1D05- AA TAX +1D06- AA TAX +1D07- AA TAX +1D08- AA TAX +1D09- AA TAX +1D0A- 8D AA 8D STA $8DAA +1D0D- C4 C9 CPY $C9 +1D0F- D3 ??? +1D10- D0 CD BNE $1CDF +1D12- C1 DA CMP ($DA,X) +1D14- C5 8D CMP $8D +1D16- AA TAX +1D17- 8D AA AA STA $AAAA +1D1A- 20 D3 C5 JSR $C5D3 +1D1D- CE C4 20 DEC $20C4 +1D20- CD C1 DA CMP $DAC1 +1D23- C5 20 CMP $20 +1D25- D4 ??? +1D26- CF ??? +1D27- 20 C4 C9 JSR $C9C4 +1D2A- D3 ??? +1D2B- D0 CC BNE $1CF9 +1D2D- C1 D9 CMP ($D9,X) +1D2F- 20 CF D5 JSR $D5CF +1D32- D4 ??? +1D33- D0 D5 BNE $1D0A +1D35- D4 ??? +1D36- AC 20 C6 LDY $C620 +1D39- CF ??? +1D3A- D2 CD CMP ($CD) +1D3C- C1 D4 CMP ($D4,X) +1D3E- D4 ??? +1D3F- C5 C4 CMP $C4 +1D41- 8D AA 8D STA $8DAA +1D44- A0 D0 LDY #$D0 +1D46- D2 CE CMP ($CE) +1D48- A0 A2 LDY #$A2 +1D4A- D0 D2 BNE $1D1E +1D4C- C9 CE CMP #$CE +1D4E- D4 ??? +1D4F- C9 CE CMP #$CE +1D51- C7 ??? +1D52- AE AE AE LDX $AEAE +1D55- A2 AC LDX #$AC +1D57- B8 CLV +1D58- C4 8D CPY $8D +1D5A- A0 D0 LDY #$D0 +1D5C- D2 CE CMP ($CE) +1D5E- A0 A2 LDY #$A2 +1D60- 20 A2 AC JSR $ACA2 +1D63- B8 CLV +1D64- C4 8D CPY $8D +1D66- A0 CC LDY #$CC +1D68- C4 C1 CPY $C1 +1D6A- A0 A3 LDY #$A3 +1D6C- B1 8D LDA ($8D),Y +1D6E- A0 D3 LDY #$D3 +1D70- D4 ??? +1D71- C1 A0 CMP ($A0,X) +1D73- D8 CLD +1D74- D8 CLD +1D75- 8D BA D8 STA $D8BA +1D78- CC CF CF CPY $CFCF +1D7B- D0 8D BNE $1D0A +1D7D- A0 C9 LDY #$C9 +1D7F- CE C3 A0 DEC $A0C3 +1D82- D8 CLD +1D83- D8 CLD +1D84- 8D A0 D0 STA $D0A0 +1D87- D2 CE CMP ($CE) +1D89- A0 A2 LDY #$A2 +1D8B- D8 CLD +1D8C- A2 8D LDX #$8D +1D8E- A0 CC LDY #$CC +1D90- C4 C1 CPY $C1 +1D92- A0 D8 LDY #$D8 +1D94- D8 CLD +1D95- 8D A0 C3 STA $C3A0 +1D98- CD D0 A0 CMP $A0D0 +1D9B- A3 ??? +1D9C- D8 CLD +1D9D- CE D5 CD DEC $CDD5 +1DA0- 8D A0 C2 STA $C2A0 +1DA3- CE C5 A0 DEC $A0C5 +1DA6- BA TSX +1DA7- D8 CLD +1DA8- CC CF CF CPY $CFCF +1DAB- D0 8D BNE $1D3A +1DAD- A0 D0 LDY #$D0 +1DAF- D2 CE CMP ($CE) +1DB1- A0 A2 LDY #$A2 +1DB3- 20 A2 AC JSR $ACA2 +1DB6- B8 CLV +1DB7- C4 8D CPY $8D +1DB9- AA TAX +1DBA- 8D A0 CC STA $CCA0 +1DBD- C4 C1 CPY $C1 +1DBF- A0 A3 LDY #$A3 +1DC1- B2 8D LDA ($8D) +1DC3- A0 D3 LDY #$D3 +1DC5- D4 ??? +1DC6- C1 A0 CMP ($A0,X) +1DC8- D8 CLD +1DC9- D8 CLD +1DCA- 8D A0 D3 STA $D3A0 +1DCD- D4 ??? +1DCE- C1 A0 CMP ($A0,X) +1DD0- D9 D9 8D CMP $8DD9,Y +1DD3- D7 ??? +1DD4- CC D0 8D CPY $8DD0 +1DD7- AA TAX +1DD8- 8D AA AA STA $AAAA +1DDB- 20 C9 C6 JSR $C6C9 +1DDE- 20 D7 C5 JSR $C5D7 +1DE1- D3 ??? +1DE2- D4 ??? +1DE3- D7 ??? +1DE4- A8 TAY +1DE5- D8 CLD +1DE6- AC D9 A9 LDY $A9D9 +1DE9- 20 BD BD JSR $BDBD +1DEC- 20 B0 8D JSR $8DB0 +1DEF- AA TAX +1DF0- 8D A0 C7 STA $C7A0 +1DF3- C5 D4 CMP $D4 +1DF5- B8 CLV +1DF6- B2 A0 LDA ($A0) +1DF8- D7 ??? +1DF9- C5 D3 CMP $D3 +1DFB- D4 ??? +1DFC- D7 ??? +1DFD- BB ??? +1DFE- D8 CLD +1DFF- D8 CLD +1E00- BB ??? +1E01- D9 D9 8D CMP $8DD9,Y +1E04- A0 CC LDY #$CC +1E06- C4 C1 CPY $C1 +1E08- A0 D2 LDY #$D2 +1E0A- C5 D4 CMP $D4 +1E0C- D5 D2 CMP $D2,X +1E0E- CE 8D A0 DEC $A08D +1E11- C3 ??? +1E12- CD D0 A0 CMP $A0D0 +1E15- A3 ??? +1E16- B0 8D BCS $1DA5 +1E18- A0 C2 LDY #$C2 +1E1A- C5 D1 CMP $D1 +1E1C- A0 CE LDY #$CE +1E1E- CF ??? +1E1F- D7 ??? +1E20- C1 CC CMP ($CC,X) +1E22- CC D7 A0 CPY $A0D7 +1E25- BB ??? +1E26- 20 D4 C8 JSR $C8D4 +1E29- C5 CE CMP $CE +1E2B- 20 D0 D2 JSR $D2D0 +1E2E- C9 CE CMP #$CE +1E30- D4 ??? +1E31- 20 AE AE JSR $AEAE +1E34- AE 8D D9 LDX $D98D +1E37- C5 D3 CMP $D3 +1E39- D7 ??? +1E3A- C1 CC CMP ($CC,X) +1E3C- CC D7 A0 CPY $A0D7 +1E3F- BB ??? +1E40- 20 C5 CC JSR $CCC5 +1E43- D3 ??? +1E44- C5 20 CMP $20 +1E46- D0 D2 BNE $1E1A +1E48- C9 CE CMP #$CE +1E4A- D4 ??? +1E4B- 20 D8 AE JSR $AED8 +1E4E- AE 8D A0 LDX $A08D +1E51- D0 D2 BNE $1E25 +1E53- CE A0 A2 DEC $A2A0 +1E56- D8 CLD +1E57- 20 A2 8D JSR $8DA2 +1E5A- A0 CA LDY #$CA +1E5C- CD D0 A0 CMP $A0D0 +1E5F- C3 ??? +1E60- CF ??? +1E61- CE D4 D7 DEC $D7D4 +1E64- CC D0 8D CPY $8DD0 +1E67- CE CF D7 DEC $D7CF +1E6A- C1 CC CMP ($CC,X) +1E6C- CC D7 8D CPY $8DD7 +1E6F- A0 D0 LDY #$D0 +1E71- D2 CE CMP ($CE) +1E73- A0 A2 LDY #$A2 +1E75- 20 20 A2 JSR $A220 +1E78- 8D AA 8D STA $8DAA +1E7B- C3 ??? +1E7C- CF ??? +1E7D- CE D4 D7 DEC $D7D4 +1E80- CC D0 8D CPY $8DD0 +1E83- A0 C9 LDY #$C9 +1E85- CE C3 A0 DEC $A0C3 +1E88- D8 CLD +1E89- D8 CLD +1E8A- 8D A0 CC STA $CCA0 +1E8D- C4 C1 CPY $C1 +1E8F- A0 D8 LDY #$D8 +1E91- D8 CLD +1E92- 8D A0 C3 STA $C3A0 +1E95- CD D0 A0 CMP $A0D0 +1E98- A3 ??? +1E99- D8 CLD +1E9A- CD C1 D8 CMP $D8C1 +1E9D- 8D A0 C2 STA $C2A0 +1EA0- C5 D1 CMP $D1 +1EA2- A0 BA LDY #$BA +1EA4- C5 CE CMP $CE +1EA6- C4 D7 CPY $D7 +1EA8- CC D0 8D CPY $8DD0 +1EAB- A0 CA LDY #$CA +1EAD- CD D0 A0 CMP $A0D0 +1EB0- D7 ??? +1EB1- CC D0 8D CPY $8DD0 +1EB4- AA TAX +1EB5- 8D BA C5 STA $C5BA +1EB8- CE C4 D7 DEC $D7C4 +1EBB- CC D0 8D CPY $8DD0 +1EBE- A0 D0 LDY #$D0 +1EC0- D2 CE CMP ($CE) +1EC2- A0 A2 LDY #$A2 +1EC4- D8 CLD +1EC5- A2 AC LDX #$AC +1EC7- B8 CLV +1EC8- C4 20 CPY $20 +1ECA- BB ??? +1ECB- 20 CE C5 JSR $C5CE +1ECE- D8 CLD +1ECF- D4 ??? +1ED0- 20 CC C9 JSR $C9CC +1ED3- CE C5 8D DEC $8DC5 +1ED6- AA TAX +1ED7- 8D A0 CC STA $CCA0 +1EDA- C4 C1 CPY $C1 +1EDC- A0 A3 LDY #$A3 +1EDE- B2 8D LDA ($8D) +1EE0- A0 D3 LDY #$D3 +1EE2- D4 ??? +1EE3- C1 A0 CMP ($A0,X) +1EE5- D8 CLD +1EE6- D8 CLD +1EE7- A0 BB LDY #$BB +1EE9- 20 D2 C5 JSR $C5D2 +1EEC- C3 ??? +1EED- D9 C3 CC CMP $CCC3,Y +1EF0- C9 CE CMP #$CE +1EF2- C7 ??? +1EF3- 8D AA 8D STA $8DAA +1EF6- AA TAX +1EF7- AA TAX +1EF8- 20 C9 C6 JSR $C6C9 +1EFB- 20 D3 CF JSR $CFD3 +1EFE- D5 D4 CMP $D4,X +1F00- C8 INY +1F01- D7 ??? +1F02- A8 TAY +1F03- D8 CLD +1F04- AC D9 A9 LDY $A9D9 +1F07- 20 BD BD JSR $BDBD +1F0A- 20 B0 8D JSR $8DB0 +1F0D- AA TAX +1F0E- 8D D3 CC STA $CCD3 +1F11- D0 8D BNE $1EA0 +1F13- A0 C7 LDY #$C7 +1F15- C5 D4 CMP $D4 +1F17- B8 CLV +1F18- B2 A0 LDA ($A0) +1F1A- D3 ??? +1F1B- CF ??? +1F1C- D5 D4 CMP $D4,X +1F1E- C8 INY +1F1F- D7 ??? +1F20- BB ??? +1F21- D8 CLD +1F22- D8 CLD +1F23- BB ??? +1F24- D9 D9 8D CMP $8DD9,Y +1F27- A0 CC LDY #$CC +1F29- C4 C1 CPY $C1 +1F2B- A0 D2 LDY #$D2 +1F2D- C5 D4 CMP $D4 +1F2F- D5 D2 CMP $D2,X +1F31- CE 8D A0 DEC $A08D +1F34- C3 ??? +1F35- CD D0 A0 CMP $A0D0 +1F38- A3 ??? +1F39- B0 8D BCS $1EC8 +1F3B- A0 C2 LDY #$C2 +1F3D- C5 D1 CMP $D1 +1F3F- A0 CE LDY #$CE +1F41- CF ??? +1F42- D3 ??? +1F43- CF ??? +1F44- D5 D4 CMP $D4,X +1F46- C8 INY +1F47- A0 BB LDY #$BB +1F49- 20 D4 C8 JSR $C8D4 +1F4C- C5 CE CMP $CE +1F4E- 20 D0 D2 JSR $D2D0 +1F51- C9 CE CMP #$CE +1F53- D4 ??? +1F54- 20 D8 AE JSR $AED8 +1F57- AE 8D D9 LDX $D98D +1F5A- D3 ??? +1F5B- CF ??? +1F5C- D5 D4 CMP $D4,X +1F5E- C8 INY +1F5F- A0 BB LDY #$BB +1F61- 20 C5 CC JSR $CCC5 +1F64- D3 ??? +1F65- C5 20 CMP $20 +1F67- D0 D2 BNE $1F3B +1F69- C9 CE CMP #$CE +1F6B- D4 ??? +1F6C- 20 D8 D8 JSR $D8D8 +1F6F- D8 CLD +1F70- 8D A0 D0 STA $D0A0 +1F73- D2 CE CMP ($CE) +1F75- A0 A2 LDY #$A2 +1F77- D8 CLD +1F78- D8 CLD +1F79- A2 8D LDX #$8D +1F7B- A0 CA LDY #$CA +1F7D- CD D0 A0 CMP $A0D0 +1F80- C3 ??? +1F81- CF ??? +1F82- CE D4 D3 DEC $D3D4 +1F85- CC D0 8D CPY $8DD0 +1F88- CE CF D3 DEC $D3CF +1F8B- CF ??? +1F8C- D5 D4 CMP $D4,X +1F8E- C8 INY +1F8F- 8D A0 D0 STA $D0A0 +1F92- D2 CE CMP ($CE) +1F94- A0 A2 LDY #$A2 +1F96- D8 CLD +1F97- 20 A2 8D JSR $8DA2 +1F9A- C3 ??? +1F9B- CF ??? +1F9C- CE D4 D3 DEC $D3D4 +1F9F- CC D0 8D CPY $8DD0 +1FA2- A0 C9 LDY #$C9 +1FA4- CE C3 A0 DEC $A0C3 +1FA7- D8 CLD +1FA8- D8 CLD +1FA9- 8D A0 CC STA $CCA0 +1FAC- C4 C1 CPY $C1 +1FAE- A0 D8 LDY #$D8 +1FB0- D8 CLD +1FB1- 8D A0 C3 STA $C3A0 +1FB4- CD D0 A0 CMP $A0D0 +1FB7- A3 ??? +1FB8- D8 CLD +1FB9- CD C1 D8 CMP $D8C1 +1FBC- 8D A0 C2 STA $C2A0 +1FBF- C5 D1 CMP $D1 +1FC1- A0 BA LDY #$BA +1FC3- C5 CE CMP $CE +1FC5- C4 D3 CPY $D3 +1FC7- CC D0 8D CPY $8DD0 +1FCA- A0 CA LDY #$CA +1FCC- CD D0 A0 CMP $A0D0 +1FCF- D3 ??? +1FD0- CC D0 8D CPY $8DD0 +1FD3- BA TSX +1FD4- C5 CE CMP $CE +1FD6- C4 D3 CPY $D3 +1FD8- CC D0 8D CPY $8DD0 +1FDB- AA TAX +1FDC- 8D A0 D0 STA $D0A0 +1FDF- D2 CE CMP ($CE) +1FE1- A0 A2 LDY #$A2 +1FE3- D8 CLD +1FE4- A2 AC LDX #$AC +1FE6- B8 CLV +1FE7- C4 8D CPY $8D +1FE9- AA TAX +1FEA- 8D A0 CC STA $CCA0 +1FED- C4 C1 CPY $C1 +1FEF- A0 A3 LDY #$A3 +1FF1- B2 8D LDA ($8D) +1FF3- A0 D3 LDY #$D3 +1FF5- D4 ??? +1FF6- C1 A0 CMP ($A0,X) +1FF8- D8 CLD +1FF9- D8 CLD +1FFA- 8D A0 C9 STA $C9A0 +1FFD- CE C3 A0 DEC $A0C3 +2000- D9 D9 8D CMP $8DD9,Y +2003- A0 CC LDY #$CC +2005- C4 C1 CPY $C1 +2007- A0 D9 LDY #$D9 +2009- D9 8D A0 CMP $A08D,Y +200C- C3 ??? +200D- CD D0 A0 CMP $A0D0 +2010- A3 ??? +2011- D9 CD C1 CMP $C1CD,Y +2014- D8 CLD +2015- 8D A0 C2 STA $C2A0 +2018- C5 D1 CMP $D1 +201A- A0 C4 LDY #$C4 +201C- C9 D3 CMP #$D3 +201E- D0 C5 BNE $1FE5 +2020- D8 CLD +2021- C9 D4 CMP #$D4 +2023- 8D A0 CA STA $CAA0 +2026- CD D0 A0 CMP $A0D0 +2029- D7 ??? +202A- CC D0 8D CPY $8DD0 +202D- AA TAX +202E- 8D C4 C9 STA $C9C4 +2031- D3 ??? +2032- D0 C5 BNE $1FF9 +2034- D8 CLD +2035- C9 D4 CMP #$D4 +2037- 8D AA 8D STA $8DAA +203A- A0 DF LDY #$DF +203C- D7 ??? +203D- C1 C9 CMP ($C9,X) +203F- D4 ??? +2040- 8D A0 CA STA $CAA0 +2043- CD D0 A0 CMP $A0D0 +2046- D2 C5 CMP ($C5) +2048- C5 CE CMP $CE +204A- D4 ??? +204B- D2 D9 CMP ($D9) +204D- 8D AA 8D STA $8DAA +2050- AA TAX +2051- AA TAX +2052- AA TAX +2053- AA TAX +2054- AA TAX +2055- AA TAX +2056- AA TAX +2057- AA TAX +2058- AA TAX +2059- AA TAX +205A- AA TAX +205B- AA TAX +205C- AA TAX +205D- AA TAX +205E- AA TAX +205F- AA TAX +2060- AA TAX +2061- AA TAX +2062- AA TAX +2063- AA TAX +2064- AA TAX +2065- AA TAX +2066- AA TAX +2067- AA TAX +2068- AA TAX +2069- AA TAX +206A- AA TAX +206B- AA TAX +206C- AA TAX +206D- AA TAX +206E- AA TAX +206F- AA TAX +2070- 8D AA 20 STA $20AA +2073- 20 20 20 JSR $2020 +2076- 20 20 20 JSR $2020 +2079- 20 20 20 JSR $2020 +207C- 20 20 20 JSR $2020 +207F- 20 20 20 JSR $2020 +2082- 20 20 20 JSR $2020 +2085- 20 20 20 JSR $2020 +2088- 20 20 20 JSR $2020 +208B- 20 20 20 JSR $2020 +208E- 20 20 AA JSR $AA20 +2091- 8D AA 20 STA $20AA +2094- D6 C1 DEC $C1,X +2096- D2 C9 CMP ($C9) +2098- C1 C2 CMP ($C2,X) +209A- CC C5 D3 CPY $D3C5 +209D- 20 20 20 JSR $2020 +20A0- 20 20 20 JSR $2020 +20A3- 20 20 20 JSR $2020 +20A6- 20 20 20 JSR $2020 +20A9- 20 20 20 JSR $2020 +20AC- 20 20 20 JSR $2020 +20AF- 20 20 AA JSR $AA20 +20B2- 8D AA 20 STA $20AA +20B5- 20 20 20 JSR $2020 +20B8- 20 20 20 JSR $2020 +20BB- 20 20 20 JSR $2020 +20BE- 20 20 20 JSR $2020 +20C1- 20 20 20 JSR $2020 +20C4- 20 20 20 JSR $2020 +20C7- 20 20 20 JSR $2020 +20CA- 20 20 20 JSR $2020 +20CD- 20 20 20 JSR $2020 +20D0- 20 20 AA JSR $AA20 +20D3- 8D AA AA STA $AAAA +20D6- AA TAX +20D7- AA TAX +20D8- AA TAX +20D9- AA TAX +20DA- AA TAX +20DB- AA TAX +20DC- AA TAX +20DD- AA TAX +20DE- AA TAX +20DF- AA TAX +20E0- AA TAX +20E1- AA TAX +20E2- AA TAX +20E3- AA TAX +20E4- AA TAX +20E5- AA TAX +20E6- AA TAX +20E7- AA TAX +20E8- AA TAX +20E9- AA TAX +20EA- AA TAX +20EB- AA TAX +20EC- AA TAX +20ED- AA TAX +20EE- AA TAX +20EF- AA TAX +20F0- AA TAX +20F1- AA TAX +20F2- AA TAX +20F3- AA TAX +20F4- 8D AA 8D STA $8DAA +20F7- D6 B0 DEC $B0,X +20F9- A0 C4 LDY #$C4 +20FB- D3 ??? +20FC- A0 B1 LDY #$B1 +20FE- A0 BB LDY #$BB +2100- 20 D5 D3 JSR $D3D5 +2103- C5 C4 CMP $C4 +2105- 20 C2 C5 JSR $C5C2 +2108- C3 ??? +2109- C1 D5 CMP ($D5,X) +210B- D3 ??? +210C- C5 20 CMP $20 +210E- CF ??? +210F- C6 20 DEC $20 +2111- C3 ??? +2112- D5 D2 CMP $D2,X +2114- D2 C5 CMP ($C5) +2116- CE D4 8D DEC $8DD4 +2119- D6 B1 DEC $B1,X +211B- A0 C4 LDY #$C4 +211D- D3 ??? +211E- A0 B1 LDY #$B1 +2120- A0 BB LDY #$BB +2122- 20 C1 D2 JSR $D2C1 +2125- D2 C1 CMP ($C1) +2127- D9 20 C4 CMP $C420,Y +212A- C9 CD CMP #$CD +212C- 20 CC C9 JSR $C9CC +212F- CD C9 D4 CMP $D4C9 +2132- C1 D4 CMP ($D4,X) +2134- C9 CF CMP #$CF +2136- CE D3 8D DEC $8DD3 +2139- AA TAX +213A- 8D D8 D8 STA $D8D8 +213D- A0 C4 LDY #$C4 +213F- D3 ??? +2140- A0 B1 LDY #$B1 +2142- A0 BB LDY #$BB +2144- 20 C3 D5 JSR $D5C3 +2147- D2 D2 CMP ($D2) +2149- C5 CE CMP $CE +214B- D4 ??? +214C- 20 C3 CF JSR $CFC3 +214F- CC D5 CD CPY $CDD5 +2152- CE 8D D9 DEC $D98D +2155- D9 A0 C4 CMP $C4A0,Y +2158- D3 ??? +2159- A0 B1 LDY #$B1 +215B- A0 BB LDY #$BB +215D- 20 C3 D5 JSR $D5C3 +2160- D2 D2 CMP ($D2) +2162- C5 CE CMP $CE +2164- D4 ??? +2165- 20 D2 CF JSR $CFD2 +2168- D7 ??? +2169- 8D D3 D0 STA $D0D3 +216C- D4 ??? +216D- D2 A0 CMP ($A0) +216F- C4 D3 CPY $D3 +2171- A0 B1 LDY #$B1 +2173- A0 BB LDY #$BB +2175- 20 C1 D2 JSR $D2C1 +2178- D2 C1 CMP ($C1) +217A- D9 20 D3 CMP $D320,Y +217D- D4 ??? +217E- C1 C3 CMP ($C3,X) +2180- CB ??? +2181- 20 D0 CF JSR $CFD0 +2184- C9 CE CMP #$CE +2186- D4 ??? +2187- C5 D2 CMP $D2 +2189- 8D D8 D0 STA $D0D8 +218C- B1 A0 LDA ($A0),Y +218E- C4 D3 CPY $D3 +2190- A0 B1 LDY #$B1 +2192- A0 BB LDY #$BB +2194- 20 D8 20 JSR $20D8 +2197- D0 CC BNE $2165 +2199- D5 D3 CMP $D3,X +219B- 20 CF CE JSR $CECF +219E- C5 8D CMP $8D +21A0- D8 CLD +21A1- CD B1 A0 CMP $A0B1 +21A4- C4 D3 CPY $D3 +21A6- A0 B1 LDY #$B1 +21A8- A0 BB LDY #$BB +21AA- 20 D8 20 JSR $20D8 +21AD- CD C9 CE CMP $CEC9 +21B0- D5 D3 CMP $D3,X +21B2- 20 CF CE JSR $CECF +21B5- C5 8D CMP $8D +21B7- D9 D0 B1 CMP $B1D0,Y +21BA- A0 C4 LDY #$C4 +21BC- D3 ??? +21BD- A0 B1 LDY #$B1 +21BF- A0 BB LDY #$BB +21C1- 20 D9 20 JSR $20D9 +21C4- D0 CC BNE $2192 +21C6- D5 D3 CMP $D3,X +21C8- 20 CF CE JSR $CECF +21CB- C5 8D CMP $8D +21CD- D9 CD B1 CMP $B1CD,Y +21D0- A0 C4 LDY #$C4 +21D2- D3 ??? +21D3- A0 B1 LDY #$B1 +21D5- A0 BB LDY #$BB +21D7- 20 D9 20 JSR $20D9 +21DA- CD C9 CE CMP $CEC9 +21DD- D5 D3 CMP $D3,X +21DF- 20 CF CE JSR $CECF +21E2- C5 8D CMP $8D +21E4- AA TAX +21E5- 8D AA AA STA $AAAA +21E8- AA TAX +21E9- AA TAX +21EA- AA TAX +21EB- AA TAX +21EC- AA TAX +21ED- AA TAX +21EE- AA TAX +21EF- AA TAX +21F0- AA TAX +21F1- AA TAX +21F2- AA TAX +21F3- AA TAX +21F4- AA TAX +21F5- AA TAX +21F6- AA TAX +21F7- AA TAX +21F8- AA TAX +21F9- AA TAX +21FA- AA TAX +21FB- AA TAX +21FC- AA TAX +21FD- AA TAX +21FE- AA TAX +21FF- AA TAX +2200- AA TAX +2201- AA TAX +2202- AA TAX +2203- AA TAX +2204- AA TAX +2205- AA TAX +2206- 8D AA 20 STA $20AA +2209- 20 20 20 JSR $2020 +220C- 20 20 20 JSR $2020 +220F- 20 20 20 JSR $2020 +2212- 20 20 20 JSR $2020 +2215- 20 20 20 JSR $2020 +2218- 20 20 20 JSR $2020 +221B- 20 20 20 JSR $2020 +221E- 20 20 20 JSR $2020 +2221- 20 20 20 JSR $2020 +2224- 20 20 AA JSR $AA20 +2227- 8D AA 20 STA $20AA +222A- 20 CC CF JSR $CFCC +222D- D7 ??? +222E- AD CC C5 LDA $C5CC +2231- D6 C5 DEC $C5,X +2233- CC 20 D2 CPY $D220 +2236- CF ??? +2237- D5 D4 CMP $D4,X +2239- C9 CE CMP #$CE +223B- C5 D3 CMP $D3 +223D- 20 20 20 JSR $2020 +2240- 20 20 20 JSR $2020 +2243- 20 20 20 JSR $2020 +2246- 20 AA 8D JSR $8DAA +2249- AA TAX +224A- 20 20 20 JSR $2020 +224D- 20 20 20 JSR $2020 +2250- 20 20 20 JSR $2020 +2253- 20 20 20 JSR $2020 +2256- 20 20 20 JSR $2020 +2259- 20 20 20 JSR $2020 +225C- 20 20 20 JSR $2020 +225F- 20 20 20 JSR $2020 +2262- 20 20 20 JSR $2020 +2265- 20 20 20 JSR $2020 +2268- AA TAX +2269- 8D AA AA STA $AAAA +226C- AA TAX +226D- AA TAX +226E- AA TAX +226F- AA TAX +2270- AA TAX +2271- AA TAX +2272- AA TAX +2273- AA TAX +2274- AA TAX +2275- AA TAX +2276- AA TAX +2277- AA TAX +2278- AA TAX +2279- AA TAX +227A- AA TAX +227B- AA TAX +227C- AA TAX +227D- AA TAX +227E- AA TAX +227F- AA TAX +2280- AA TAX +2281- AA TAX +2282- AA TAX +2283- AA TAX +2284- AA TAX +2285- AA TAX +2286- AA TAX +2287- AA TAX +2288- AA TAX +2289- AA TAX +228A- 8D AA 8D STA $8DAA +228D- A0 D0 LDY #$D0 +228F- D5 D4 CMP $D4,X +2291- A0 D2 LDY #$D2 +2293- C5 D1 CMP $D1 +2295- D5 C9 CMP $C9,X +2297- D2 C5 CMP ($C5) +2299- C4 AE CPY $AE +229B- CC C9 C2 CPY $C2C9 +229E- AE CD C9 LDX $C9CD +22A1- CE 8D AA DEC $AA8D +22A4- 8D AA AA STA $AAAA +22A7- 20 C9 CE JSR $CEC9 +22AA- C4 C9 CPY $C9 +22AC- D6 C9 DEC $C9,X +22AE- C4 D5 CPY $D5 +22B0- C1 CC CMP ($CC,X) +22B2- 20 D3 D5 JSR $D5D3 +22B5- C2 ??? +22B6- D2 CF CMP ($CF) +22B8- D5 D4 CMP $D4,X +22BA- C9 CE CMP #$CE +22BC- C5 D3 CMP $D3 +22BE- 8D AA 8D STA $8DAA +22C1- AA TAX +22C2- AA TAX +22C3- 20 C1 D2 JSR $D2C1 +22C6- D2 C1 CMP ($C1) +22C8- D9 D3 8D CMP $8DD3,Y +22CB- AA TAX +22CC- 8D A0 D0 STA $D0A0 +22CF- D5 D4 CMP $D4,X +22D1- A0 C1 LDY #$C1 +22D3- C4 C9 CPY $C9 +22D5- CD B8 B1 CMP $B1B8 +22D8- AE D3 D5 LDX $D5D3 +22DB- C2 ??? +22DC- AE CD C9 LDX $C9CD +22DF- CE 8D A0 DEC $A08D +22E2- D0 D5 BNE $22B9 +22E4- D4 ??? +22E5- A0 C1 LDY #$C1 +22E7- C4 C9 CPY $C9 +22E9- CD B8 B2 CMP $B2B8 +22EC- AE D3 D5 LDX $D5D3 +22EF- C2 ??? +22F0- AE CD C9 LDX $C9CD +22F3- CE 8D A0 DEC $A08D +22F6- D0 D5 BNE $22CD +22F8- D4 ??? +22F9- A0 C1 LDY #$C1 +22FB- C7 ??? +22FC- C5 D4 CMP $D4 +22FE- B8 CLV +22FF- B1 AE LDA ($AE),Y +2301- D3 ??? +2302- D5 C2 CMP $C2,X +2304- AE CD C9 LDX $C9CD +2307- CE 8D A0 DEC $A08D +230A- D0 D5 BNE $22E1 +230C- D4 ??? +230D- A0 C1 LDY #$C1 +230F- C7 ??? +2310- C5 D4 CMP $D4 +2312- B8 CLV +2313- B2 AE LDA ($AE) +2315- D3 ??? +2316- D5 C2 CMP $C2,X +2318- AE CD C9 LDX $C9CD +231B- CE 8D A0 DEC $A08D +231E- D0 D5 BNE $22F5 +2320- D4 ??? +2321- A0 C1 LDY #$C1 +2323- D0 D5 BNE $22FA +2325- D4 ??? +2326- B8 CLV +2327- B1 AE LDA ($AE),Y +2329- D3 ??? +232A- D5 C2 CMP $C2,X +232C- AE CD C9 LDX $C9CD +232F- CE 8D A0 DEC $A08D +2332- D0 D5 BNE $2309 +2334- D4 ??? +2335- A0 C1 LDY #$C1 +2337- D0 D5 BNE $230E +2339- D4 ??? +233A- B8 CLV +233B- B2 AE LDA ($AE) +233D- D3 ??? +233E- D5 C2 CMP $C2,X +2340- AE CD C9 LDX $C9CD +2343- CE 8D AA DEC $AA8D +2346- 8D AA AA STA $AAAA +2349- 20 CD C1 JSR $C1CD +234C- D4 ??? +234D- C8 INY +234E- 8D AA 8D STA $8DAA +2351- A0 D0 LDY #$D0 +2353- D5 D4 CMP $D4,X +2355- A0 D2 LDY #$D2 +2357- C1 CE CMP ($CE,X) +2359- C4 B8 CPY $B8 +235B- AE D3 D5 LDX $D5D3 +235E- C2 ??? +235F- AE CD C9 LDX $C9CD +2362- CE 8D A0 DEC $A08D +2365- D0 D5 BNE $233C +2367- D4 ??? +2368- A0 D2 LDY #$D2 +236A- C1 CE CMP ($CE,X) +236C- C4 C2 CPY $C2 +236E- AE D3 D5 LDX $D5D3 +2371- C2 ??? +2372- AE CD C9 LDX $C9CD +2375- CE 8D AA DEC $AA8D +2378- 8D AA AA STA $AAAA +237B- 20 D3 D4 JSR $D4D3 +237E- C4 C9 CPY $C9 +2380- CF ??? +2381- 8D AA 8D STA $8DAA +2384- A0 D0 LDY #$D0 +2386- D5 D4 CMP $D4,X +2388- A0 C4 LDY #$C4 +238A- D0 D2 BNE $235E +238C- C9 CE CMP #$CE +238E- D4 ??? +238F- AE D3 D5 LDX $D5D3 +2392- C2 ??? +2393- AE CD C9 LDX $C9CD +2396- CE 8D A0 DEC $A08D +2399- D0 D5 BNE $2370 +239B- D4 ??? +239C- A0 D8 LDY #$D8 +239E- D0 D2 BNE $2372 +23A0- C9 CE CMP #$CE +23A2- D4 ??? +23A3- AE D3 D5 LDX $D5D3 +23A6- C2 ??? +23A7- AE CD C9 LDX $C9CD +23AA- CE 8D AA DEC $AA8D +23AD- 8D 00 00 STA $0000 diff --git a/disks/disk4_math/T.ADDIT16.SUB.MIN b/source/disk16_integrated_demos/T.ADDIT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.ADDIT16.SUB.MIN rename to source/disk16_integrated_demos/T.ADDIT16.SUB.MIN diff --git a/disks/disk3_arrays/T.ADIM81.SUB.MIN b/source/disk16_integrated_demos/T.ADIM81.SUB.MIN similarity index 100% rename from disks/disk3_arrays/T.ADIM81.SUB.MIN rename to source/disk16_integrated_demos/T.ADIM81.SUB.MIN diff --git a/disks/disk3_arrays/T.ADIM82.SUB.MIN b/source/disk16_integrated_demos/T.ADIM82.SUB.MIN similarity index 100% rename from disks/disk3_arrays/T.ADIM82.SUB.MIN rename to source/disk16_integrated_demos/T.ADIM82.SUB.MIN diff --git a/disks/disk3_arrays/T.AGET81.SUB.MIN b/source/disk16_integrated_demos/T.AGET81.SUB.MIN similarity index 85% rename from disks/disk3_arrays/T.AGET81.SUB.MIN rename to source/disk16_integrated_demos/T.AGET81.SUB.MIN index 35f6f06..1e200ce 100644 --- a/disks/disk3_arrays/T.AGET81.SUB.MIN +++ b/source/disk16_integrated_demos/T.AGET81.SUB.MIN @@ -25,20 +25,11 @@ AGET81 JMP :ERREND :CHKERR LDA :IDX ; IF IDX > ARRAY LENGTH - CLC - ADC #1 CMP :ALEN BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:RES;#6 :ERREND LDY #0 LDA #0 @@ -102,5 +93,4 @@ AGET81 :ALEN DS 1 :E_SID ASC "AGET81 (GET81 MACRO)",00 :E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 -:E_OVF1 ASC "OVERFLOW: INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW: CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.AGET82.SUB.MIN b/source/disk16_integrated_demos/T.AGET82.SUB.MIN similarity index 94% rename from disks/disk3_arrays/T.AGET82.SUB.MIN rename to source/disk16_integrated_demos/T.AGET82.SUB.MIN index 154e373..9193742 100644 --- a/disks/disk3_arrays/T.AGET82.SUB.MIN +++ b/source/disk16_integrated_demos/T.AGET82.SUB.MIN @@ -31,8 +31,6 @@ AGET82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -40,8 +38,6 @@ AGET82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -153,5 +149,5 @@ AGET82 :E_SID ASC "AGET82 (GET82 MACRO)",00 :E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.APUT81.SUB.MIN b/source/disk16_integrated_demos/T.APUT81.SUB.MIN similarity index 81% rename from disks/disk3_arrays/T.APUT81.SUB.MIN rename to source/disk16_integrated_demos/T.APUT81.SUB.MIN index a59c766..11c8446 100644 --- a/disks/disk3_arrays/T.APUT81.SUB.MIN +++ b/source/disk16_integrated_demos/T.APUT81.SUB.MIN @@ -1,8 +1,8 @@ APUT81 PLA - STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + STA RETADR ; LOCAL RETURN ADDRESS STORAGE PLA ; BECAUSE OF CALLING AGET81 - STA :RETADR+1 + STA RETADR+1 PLA STA :AIDX STA :IDX @@ -34,16 +34,9 @@ APUT81 ADC #1 CMP :ASIZE BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:ESIZE;#9 :ERREND LDY #0 LDA #0 @@ -90,15 +83,14 @@ APUT81 INY CPY :ESIZEBAK BNE :LP - LDA :RETADR+1 + LDA RETADR+1 PHA - LDA :RETADR + LDA RETADR PHA LDX ADDR2+1 LDY ADDR2 LDA :ESIZE RTS -:RETADR DS 2 :ESIZE DS 1 :ESIZEBAK DS 1 :ASIZE DS 1 @@ -108,5 +100,4 @@ APUT81 :E_SID ASC "APUT81 (PUT81 MACRO)",00 :E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" ASC ":AIDX(2) :IDX(2) :RES(2)",00 -:E_OVF1 ASC "OVERFLOW! INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW! CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.APUT82.SUB.MIN b/source/disk16_integrated_demos/T.APUT82.SUB.MIN similarity index 90% rename from disks/disk3_arrays/T.APUT82.SUB.MIN rename to source/disk16_integrated_demos/T.APUT82.SUB.MIN index 266dae3..696d636 100644 --- a/disks/disk3_arrays/T.APUT82.SUB.MIN +++ b/source/disk16_integrated_demos/T.APUT82.SUB.MIN @@ -36,8 +36,6 @@ APUT82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -45,8 +43,6 @@ APUT82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -147,7 +143,6 @@ APUT82 LDY ADDR2 LDA :ESIZE RTS -:RETADR DS 2 :ESIZE DS 1 :XIDX DS 1 :YIDX DS 1 @@ -156,8 +151,8 @@ APUT82 :PROD DS 4 :XLEN DS 1 :YLEN DS 1 -:E_SID ASC "AGET82 (GET82 MACRO)",00 -:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" - ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.ARRAYS.HOOKS b/source/disk16_integrated_demos/T.ARRAYS.HOOKS similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.HOOKS rename to source/disk16_integrated_demos/T.ARRAYS.HOOKS diff --git a/disks/disk3_arrays/T.ARRAYS.MAC.MIN b/source/disk16_integrated_demos/T.ARRAYS.MAC.MIN similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.MAC.MIN rename to source/disk16_integrated_demos/T.ARRAYS.MAC.MIN diff --git a/disks/disk6_fileio/T.BINLOAD.SUB.MIN b/source/disk16_integrated_demos/T.BINLOAD.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.BINLOAD.SUB.MIN rename to source/disk16_integrated_demos/T.BINLOAD.SUB.MIN diff --git a/disks/disk6_fileio/T.BINSAVE.SUB.MIN b/source/disk16_integrated_demos/T.BINSAVE.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.BINSAVE.SUB.MIN rename to source/disk16_integrated_demos/T.BINSAVE.SUB.MIN diff --git a/disks/disk2_common/T.COMMON.HOOKS b/source/disk16_integrated_demos/T.COMMON.HOOKS similarity index 100% rename from disks/disk2_common/T.COMMON.HOOKS rename to source/disk16_integrated_demos/T.COMMON.HOOKS diff --git a/disks/disk2_common/T.COMMON.MAC.MIN b/source/disk16_integrated_demos/T.COMMON.MAC.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.MAC.MIN rename to source/disk16_integrated_demos/T.COMMON.MAC.MIN diff --git a/disks/disk4_math/T.COMP16.SUB.MIN b/source/disk16_integrated_demos/T.COMP16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.COMP16.SUB.MIN rename to source/disk16_integrated_demos/T.COMP16.SUB.MIN diff --git a/disks/disk1_stdio/T.CURSORUDBF.SUB.MIN b/source/disk16_integrated_demos/T.CURSORUDBF.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.CURSORUDBF.SUB.MIN rename to source/disk16_integrated_demos/T.CURSORUDBF.SUB.MIN diff --git a/disks/disk2_common/T.DELAYMS.SUB.MIN b/source/disk16_integrated_demos/T.DELAYMS.SUB.MIN similarity index 100% rename from disks/disk2_common/T.DELAYMS.SUB.MIN rename to source/disk16_integrated_demos/T.DELAYMS.SUB.MIN diff --git a/disks/disk6_fileio/T.DISKOP.SUB.MIN b/source/disk16_integrated_demos/T.DISKOP.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.DISKOP.SUB.MIN rename to source/disk16_integrated_demos/T.DISKOP.SUB.MIN diff --git a/disks/disk4_math/T.DIVD16.SUB.MIN b/source/disk16_integrated_demos/T.DIVD16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.DIVD16.SUB.MIN rename to source/disk16_integrated_demos/T.DIVD16.SUB.MIN diff --git a/disks/disk4_math/T.DIVD8.SUB.MIN b/source/disk16_integrated_demos/T.DIVD8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.DIVD8.SUB.MIN rename to source/disk16_integrated_demos/T.DIVD8.SUB.MIN diff --git a/disks/disk6_fileio/T.DOSCMD.SUB.MIN b/source/disk16_integrated_demos/T.DOSCMD.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.DOSCMD.SUB.MIN rename to source/disk16_integrated_demos/T.DOSCMD.SUB.MIN diff --git a/disks/disk1_stdio/T.DPRINT.SUB.MIN b/source/disk16_integrated_demos/T.DPRINT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.DPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.DPRINT.SUB.MIN diff --git a/disks/disk6_fileio/T.FILEIO.HOOKS b/source/disk16_integrated_demos/T.FILEIO.HOOKS similarity index 100% rename from disks/disk6_fileio/T.FILEIO.HOOKS rename to source/disk16_integrated_demos/T.FILEIO.HOOKS diff --git a/disks/disk6_fileio/T.FILEIO.MAC.MIN b/source/disk16_integrated_demos/T.FILEIO.MAC.MIN similarity index 100% rename from disks/disk6_fileio/T.FILEIO.MAC.MIN rename to source/disk16_integrated_demos/T.FILEIO.MAC.MIN diff --git a/disks/disk6_fileio/T.FINPUT.SUB.MIN b/source/disk16_integrated_demos/T.FINPUT.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FINPUT.SUB.MIN rename to source/disk16_integrated_demos/T.FINPUT.SUB.MIN diff --git a/disks/disk6_fileio/T.FPRINT.SUB.MIN b/source/disk16_integrated_demos/T.FPRINT.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.FPRINT.SUB.MIN diff --git a/disks/disk6_fileio/T.FPSTR.SUB.MIN b/source/disk16_integrated_demos/T.FPSTR.SUB.MIN similarity index 100% rename from disks/disk6_fileio/T.FPSTR.SUB.MIN rename to source/disk16_integrated_demos/T.FPSTR.SUB.MIN diff --git a/disks/disk1_stdio/T.GPBX.SUB.MIN b/source/disk16_integrated_demos/T.GPBX.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.GPBX.SUB.MIN rename to source/disk16_integrated_demos/T.GPBX.SUB.MIN diff --git a/source/disk16_integrated_demos/T.MAKEMAZE b/source/disk16_integrated_demos/T.MAKEMAZE new file mode 100644 index 0000000..9773f68 --- /dev/null +++ b/source/disk16_integrated_demos/T.MAKEMAZE @@ -0,0 +1,420 @@ +******************************** +* * +* MAZE GENERATOR * +* * +******************************** +* +** ASSEMBLER DIRECTIVES +* + CYC AVE + EXP OFF + DSK MAKEMAZE + TR ON + OBJ $BFE0 + ORG $6000 +* + PUT REQUIRED.VARS + USE REQUIRED.MAC.MIN + USE ARRAYS.MAC.MIN + USE MATH.MAC.MIN + USE STDIO.MAC.MIN + PUT REQUIRED.HOOKS.MIN + PUT STDIO.HOOKS + PUT MATH.HOOKS + PUT ARRAYS.HOOKS +* +******************************** +* * +* CONSTANT DECLARATIONS * +* * +******************************** +* +BAS EQU $2000 ; BASE ADDRESS FOR ARRAYS +* +** NOTE THAT XLEN AND YLEN CANNOT EXCEED 13, AS THIS +** WOULD MAKE THE ARRAY SIZES >256, WHICH ISN'T +** WHAT 8-BIT ARRAYS ARE PREPARED TO HANDLE. +* +** THE NEXT UPDATE WILL UTILIZE 16-BIT ARRAYS +** TO ADDRESS THIS PROBLEM. +* +XLEN KBD "ENTER MAZE SIZE (<14)" +YLEN EQU XLEN ; CURRENT ALGO ONLY DOES SQUARE +XMAX EQU XLEN+2 ; ADD EXTRA COLUMN +YMAX EQU YLEN+2 ; ADD EXTRA ROW +XNUM EQU 2*XLEN+2 +ASZ EQU XMAX*YMAX+4 ; ARRAY SIZE+INFO BYTES +XSTAKS EQU ASZ ; COLUMN STACK SIZE; X * Y + 1 +YSTAKS EQU ASZ ; ROW STACK SIZE; X * Y + 1 +* +SOUTHW EQU BAS ; SOUTH WALLS ARRAY +WESTW EQU ASZ+BAS ; WEST WALLS ARRAY +VISITED EQU 2*ASZ+BAS ; CELLS VISITED +XSTACK EQU 3*ASZ+BAS ; STACK FOR COLUMNS +YSTACK EQU 4*ASZ+BAS ; STACK FOR ROWS +* +******************************** +* * +* MAIN PROGRAM LOOP * +* * +******************************** +* +INIT +* +*LDA #0 +*STA ERRCTRL ; TURN OFF ERRORS + JSR HOME + PRN "INITIALIZING...",8D +* + JSR :SETVARS + JSR :OUTWALLS +* +** GET RANDOM STARTING POINT +* + RNDB #2;#XLEN + STA XX + RNDB #2;#YLEN + STA YY +* + JMP BUILD +* +******************************** +* +:SETVARS +* +** DIM ARRAYS AND FILL +* + DIM82 SOUTHW;#XMAX;#YMAX;#1;#1 + DIM82 WESTW;#XMAX;#YMAX;#1;#1 + DIM82 VISITED;#XMAX;#YMAX;#1;#0 + DIM81 XSTACK;#XSTAKS;#1;#0 + DIM81 YSTACK;#YSTAKS;#1;#0 +* +** NOW ASSIGN VARIABLE VALUES +* + LDA #0 + STA SPTR + STA V0 + LDA #1 + STA V1 + RTS +* +******************************** +* +:OUTWALLS +* +** MAKE COLUMN MIN AND MAX TO BE ALL +** WALL (CODE: 1). +* + LDA #0 ; SO X,Y WILL INC TO 1 + STA XX + STA YY +* +:COLEDGE + INC XX + PUT82 V1;VISITED;XX;#1 + PUT82 V1;VISITED;XX;#YMAX + LDA XX + CMP #XMAX + BNE :COLEDGE +* +** MAKE MIN AND MAX ROWS TO BE ALL WALL +* +:ROWEDGE + INC YY + PUT82 V1;VISITED;#1;YY + PUT82 V1;VISITED;#XMAX;YY + LDA YY + CMP #YMAX + BNE :ROWEDGE + RTS +* +******************************** +* * +* BUILD THE MAZE * +* * +******************************** +* +BUILD +* + PRN "BUILDING MAZE...",8D8D +* +******************************** +* +STAKPUSH +* + INC SPTR + PUT81 XX;XSTACK;SPTR ; PUT COL ON STACK + PUT81 YY;YSTACK;SPTR ; PUT ROW ON STACK + PUT82 V1;VISITED;XX;YY ; MARK BLOCK AS VISITED +* +******************************** +* +CHECKALL +* +** CHECKS ALL ADJACENT BLOCKS FOR A WALL. IF +** COMPLETELY SURROUNDED, POP THE STACK AND +** AND START OVER UNTIL. +* + LDA YY ; STORE VALUES FOR + STA YP1 ; CURRENT ROW MINUS ONE + STA YM1 ; AND CURRENT ROW PLUS + LDA XX ; ONE, THEN DO THE SAME + STA XP1 ; FOR COLUMNS + STA XM1 +* + INC YP1 + INC XP1 + DEC XM1 + DEC YM1 +* +:_IF1 ; IF VISITED(XX,Y+1) == 1 + GET82 VISITED;XX;YP1 + LDA RETURN + CMP #1 + BEQ :_IF2 ; IF CELL BELOW IS A WALL + ; CONTINUE TESTING OTHER + ; ADJACENT CELLS + JMP DOMOVE ; OTHERWISE, EXIT CONDITIONAL +:_IF2 ; AND VISITED(X+1,Y) == 1 +* + GET82 VISITED;XP1;YY + LDA RETURN + CMP #1 ; TEST RIGHT CELL + BEQ :_IF3 + JMP DOMOVE +* +:_IF3 ; AND IF VISITED(X,Y-1) == 1 + LDA YM1 + CMP #0 ; TEST FOR Y=0 TO OVOID + BNE :IF3C ; OUT OF BOUNDS ERROR + JMP :_IF4 +:IF3C + GET82 VISITED;XX;YM1 + LDA RETURN + CMP #1 ; TEST CELL ABOVE + BEQ :_IF4 + JMP DOMOVE +* +:_IF4 ; AND IF VISITED(X-1,Y) == 1 + GET82 VISITED;XM1;YY + LDA RETURN + CMP #1 ; THEN POP STACKS UNTIL DONE + BEQ :POP +* + JMP DOMOVE ; OTHERWISE, EXIT ROUTINE +* +******************************** +* +:POP +* + GET81 XSTACK;SPTR + LDA RETURN + STA XX + GET81 YSTACK;SPTR + LDA RETURN + STA YY + DEC SPTR ; POP + LDA SPTR + CMP #1 ; IF STILL MORE ON STACK + BCS :DOREPEAT + JMP DISPMAZE ; OTHERWISE, FINISHED! +* +:DOREPEAT + JMP CHECKALL +* +******************************** +* +DOMOVE +* +** MOVE IN A RANDOM DIRECTION +* + JSR RAND8 + CMP #64 ; IF RND < 64 + BCC :MVDOWN + CMP #128 ; ELSE IF RND < 128 + BCC :MVRIGHT + CMP #192 ; ELSE IF RND < 192 + BCC :MVUP + JMP :MVLEFT ; ELSE RND IS > 191 +* +:MVDOWN + GET82 VISITED;XX;YP1 + LDA RETURN + CMP #0 ; IF NOT A WALL + BEQ :DOWNGO + JMP DOMOVE +:DOWNGO ; THEN MOVE THERE + PUT82 V0;SOUTHW;XX;YY + INC YY + JMP STAKPUSH +:MVRIGHT + GET82 VISITED;XP1;YY + LDA RETURN + CMP #0 + BEQ :RIGHTGO + JMP DOMOVE +:RIGHTGO + PUT82 V0;WESTW;XP1;YY + INC XX + JMP STAKPUSH +* +:MVUP + LDA YM1 + CMP #0 + BEQ :UPNO + GET82 VISITED;XX;YM1 + LDA RETURN + CMP #0 + BEQ :UPGO +:UPNO + JMP DOMOVE +:UPGO + PUT82 V0;SOUTHW;XX;YM1 + DEC YY + JMP STAKPUSH +* +:MVLEFT + GET82 VISITED;XM1;YY + LDA RETURN + CMP #0 + BEQ :LEFTGO + JMP DOMOVE +:LEFTGO + PUT82 V0;WESTW;XX;YY + DEC XX + JMP STAKPUSH +* +******************************** +* * +* DISPLAY THE MAZE * +* * +******************************** +* +DISPMAZE +* +** SEND MAZE TO DISPLAY OUTPUT, FORMATTED +* + PRN "PRINTING...",8D + PRN " ",8D + LDA #1 + STA XX +:XLOOP + INC XX + PRN "X" + LDA XX + CMP #XNUM + BNE :XLOOP + PRN " ",8D +* + LDA #2 + STA XX + STA YY +WLP +* +** IF WESTW(X,Y) == 0 +* + GET82 WESTW;XX;YY + LDA RETURN + CMP #0 + BEQ NOWALLW ; THEN PRINT ... +YESWALLW ; ELSE PRINT X.. + PRN "X " + JMP CONTWLP +NOWALLW + PRN " " +* +CONTWLP + INC XX + LDA XX + CMP #XMAX + BEQ :ENDWLP + JMP WLP +* +:ENDWLP + PRN "X",8D ; NEXT LINE +* + LDA #2 + STA XX ; RECYCLING +* +** IF SOUTHW(X,Y) == 0 +* +SLP + GET82 SOUTHW;XX;YY + LDA RETURN + CMP #0 + BEQ NOSOUTH ; THEN PRINT X.. +YSOUTH ; ELSE PRINT XXX + PRN "XX" + JMP CONTSLP +NOSOUTH + PRN "X " +CONTSLP + INC XX + LDA XX + CMP #XMAX + BEQ :ENDSLP + JMP SLP +:ENDSLP +* + PRN "X",8D +* + LDA #2 + STA XX + INC YY + LDA YY + CMP #YMAX + BEQ DISPEXIT + JMP WLP +* +DISPEXIT +* + _WAIT + JMP REENTRY +* +******************************** +* * +* VARIABLES * +* * +******************************** +* +V0 DS 1 ; USED BECAUSE OF CURRENT +V1 DS 1 ; ARRAY DIM LIMITATIONS +* +XX DS 1 ; CURRENT COLUMN +YY DS 1 ; CURRENT ROW +SPTR DS 1 ; ARRAY STACK POINTER +XP1 DS 1 ; X PLUS ONE +XM1 DS 1 ; X MINUS ONE +YP1 DS 1 ; Y PLUS ONE +YM1 DS 1 ; Y MINUS ONE +* +******************************** +* * +* LOW-LEVEL ROUTINES * +* * +******************************** +* + PUT REQUIRED.LIB.MIN +* +** INDIVIDUAL SUBROUTINES +* +** ARRAYS +* + PUT ADIM81.SUB.MIN + PUT ADIM82.SUB.MIN + PUT AGET81.SUB.MIN + PUT AGET82.SUB.MIN + PUT APUT81.SUB.MIN + PUT APUT82.SUB.MIN +* +** MATH +* + PUT RAND8.SUB.MIN + PUT RANDB.SUB.MIN +* +** STDIO +* + PUT DPRINT.SUB.MIN + PUT XPRINT.SUB.MIN +* diff --git a/disks/disk4_math/T.MATH.HOOKS b/source/disk16_integrated_demos/T.MATH.HOOKS similarity index 100% rename from disks/disk4_math/T.MATH.HOOKS rename to source/disk16_integrated_demos/T.MATH.HOOKS diff --git a/disks/disk4_math/T.MATH.MAC.MIN b/source/disk16_integrated_demos/T.MATH.MAC.MIN similarity index 100% rename from disks/disk4_math/T.MATH.MAC.MIN rename to source/disk16_integrated_demos/T.MATH.MAC.MIN diff --git a/disks/disk2_common/T.MEMFILL.SUB.MIN b/source/disk16_integrated_demos/T.MEMFILL.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMFILL.SUB.MIN rename to source/disk16_integrated_demos/T.MEMFILL.SUB.MIN diff --git a/disks/disk2_common/T.MEMMOVE.SUB.MIN b/source/disk16_integrated_demos/T.MEMMOVE.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMMOVE.SUB.MIN rename to source/disk16_integrated_demos/T.MEMMOVE.SUB.MIN diff --git a/disks/disk2_common/T.MEMSWAP.SUB.MIN b/source/disk16_integrated_demos/T.MEMSWAP.SUB.MIN similarity index 100% rename from disks/disk2_common/T.MEMSWAP.SUB.MIN rename to source/disk16_integrated_demos/T.MEMSWAP.SUB.MIN diff --git a/disks/disk4_math/T.MULT16.SUB.MIN b/source/disk16_integrated_demos/T.MULT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.MULT16.SUB.MIN rename to source/disk16_integrated_demos/T.MULT16.SUB.MIN diff --git a/disks/disk4_math/T.MULT8.SUB.MIN b/source/disk16_integrated_demos/T.MULT8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.MULT8.SUB.MIN rename to source/disk16_integrated_demos/T.MULT8.SUB.MIN diff --git a/disks/disk5_strings/T.NUM2STR.SUB.MIN b/source/disk16_integrated_demos/T.NUM2STR.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.NUM2STR.SUB.MIN rename to source/disk16_integrated_demos/T.NUM2STR.SUB.MIN diff --git a/disks/disk5_strings/T.PRNSTR.SUB.MIN b/source/disk16_integrated_demos/T.PRNSTR.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.PRNSTR.SUB.MIN rename to source/disk16_integrated_demos/T.PRNSTR.SUB.MIN diff --git a/disks/disk4_math/T.RAND16.SUB.MIN b/source/disk16_integrated_demos/T.RAND16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RAND16.SUB.MIN rename to source/disk16_integrated_demos/T.RAND16.SUB.MIN diff --git a/disks/disk4_math/T.RAND8.SUB.MIN b/source/disk16_integrated_demos/T.RAND8.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RAND8.SUB.MIN rename to source/disk16_integrated_demos/T.RAND8.SUB.MIN diff --git a/disks/disk4_math/T.RANDB.SUB.MIN b/source/disk16_integrated_demos/T.RANDB.SUB.MIN similarity index 100% rename from disks/disk4_math/T.RANDB.SUB.MIN rename to source/disk16_integrated_demos/T.RANDB.SUB.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.HOOKS.MIN b/source/disk16_integrated_demos/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk1_stdio/T.REQUIRED.HOOKS.MIN rename to source/disk16_integrated_demos/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk3_arrays/T.REQUIRED.LIB.MIN b/source/disk16_integrated_demos/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk3_arrays/T.REQUIRED.LIB.MIN rename to source/disk16_integrated_demos/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk3_arrays/T.REQUIRED.LIB.MIN +++ b/source/disk16_integrated_demos/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk1_stdio/T.REQUIRED.MAC.MIN b/source/disk16_integrated_demos/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk1_stdio/T.REQUIRED.MAC.MIN rename to source/disk16_integrated_demos/T.REQUIRED.MAC.MIN diff --git a/disks/disk2_common/T.REQUIRED.VARS b/source/disk16_integrated_demos/T.REQUIRED.VARS similarity index 100% rename from disks/disk2_common/T.REQUIRED.VARS rename to source/disk16_integrated_demos/T.REQUIRED.VARS diff --git a/disks/disk1_stdio/T.SINPUT.SUB.MIN b/source/disk16_integrated_demos/T.SINPUT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.SINPUT.SUB.MIN rename to source/disk16_integrated_demos/T.SINPUT.SUB.MIN diff --git a/disks/disk1_stdio/T.STDIO.HOOKS b/source/disk16_integrated_demos/T.STDIO.HOOKS similarity index 100% rename from disks/disk1_stdio/T.STDIO.HOOKS rename to source/disk16_integrated_demos/T.STDIO.HOOKS diff --git a/disks/disk1_stdio/T.STDIO.MAC.MIN b/source/disk16_integrated_demos/T.STDIO.MAC.MIN similarity index 100% rename from disks/disk1_stdio/T.STDIO.MAC.MIN rename to source/disk16_integrated_demos/T.STDIO.MAC.MIN diff --git a/disks/disk5_strings/T.STR2NUM.SUB.MIN b/source/disk16_integrated_demos/T.STR2NUM.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STR2NUM.SUB.MIN rename to source/disk16_integrated_demos/T.STR2NUM.SUB.MIN diff --git a/disks/disk5_strings/T.STRCAT.SUB.MIN b/source/disk16_integrated_demos/T.STRCAT.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STRCAT.SUB.MIN rename to source/disk16_integrated_demos/T.STRCAT.SUB.MIN diff --git a/disks/disk5_strings/T.STRCOMP.SUB.MIN b/source/disk16_integrated_demos/T.STRCOMP.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.STRCOMP.SUB.MIN rename to source/disk16_integrated_demos/T.STRCOMP.SUB.MIN diff --git a/disks/disk5_strings/T.STRINGS.HOOKS b/source/disk16_integrated_demos/T.STRINGS.HOOKS similarity index 100% rename from disks/disk5_strings/T.STRINGS.HOOKS rename to source/disk16_integrated_demos/T.STRINGS.HOOKS diff --git a/disks/disk5_strings/T.STRINGS.MAC.MIN b/source/disk16_integrated_demos/T.STRINGS.MAC.MIN similarity index 100% rename from disks/disk5_strings/T.STRINGS.MAC.MIN rename to source/disk16_integrated_demos/T.STRINGS.MAC.MIN diff --git a/disks/disk5_strings/T.SUBCOPY.SUB.MIN b/source/disk16_integrated_demos/T.SUBCOPY.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBCOPY.SUB.MIN rename to source/disk16_integrated_demos/T.SUBCOPY.SUB.MIN diff --git a/disks/disk5_strings/T.SUBDEL.SUB.MIN b/source/disk16_integrated_demos/T.SUBDEL.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBDEL.SUB.MIN rename to source/disk16_integrated_demos/T.SUBDEL.SUB.MIN diff --git a/disks/disk5_strings/T.SUBINS.SUB.MIN b/source/disk16_integrated_demos/T.SUBINS.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBINS.SUB.MIN rename to source/disk16_integrated_demos/T.SUBINS.SUB.MIN diff --git a/disks/disk5_strings/T.SUBPOS.SUB.MIN b/source/disk16_integrated_demos/T.SUBPOS.SUB.MIN similarity index 100% rename from disks/disk5_strings/T.SUBPOS.SUB.MIN rename to source/disk16_integrated_demos/T.SUBPOS.SUB.MIN diff --git a/disks/disk4_math/T.SUBT16.SUB.MIN b/source/disk16_integrated_demos/T.SUBT16.SUB.MIN similarity index 100% rename from disks/disk4_math/T.SUBT16.SUB.MIN rename to source/disk16_integrated_demos/T.SUBT16.SUB.MIN diff --git a/disks/disk1_stdio/T.TFILLA.SUB.MIN b/source/disk16_integrated_demos/T.TFILLA.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TFILLA.SUB.MIN rename to source/disk16_integrated_demos/T.TFILLA.SUB.MIN diff --git a/disks/disk1_stdio/T.THLINE.SUB.MIN b/source/disk16_integrated_demos/T.THLINE.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.THLINE.SUB.MIN rename to source/disk16_integrated_demos/T.THLINE.SUB.MIN diff --git a/disks/disk1_stdio/T.TVLINE.SUB.MIN b/source/disk16_integrated_demos/T.TVLINE.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TVLINE.SUB.MIN rename to source/disk16_integrated_demos/T.TVLINE.SUB.MIN diff --git a/disks/disk1_stdio/T.TXTPUT.SUB.MIN b/source/disk16_integrated_demos/T.TXTPUT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.TXTPUT.SUB.MIN rename to source/disk16_integrated_demos/T.TXTPUT.SUB.MIN diff --git a/disks/disk1_stdio/T.XPRINT.SUB.MIN b/source/disk16_integrated_demos/T.XPRINT.SUB.MIN similarity index 100% rename from disks/disk1_stdio/T.XPRINT.SUB.MIN rename to source/disk16_integrated_demos/T.XPRINT.SUB.MIN diff --git a/disks/disk2_common/T.ZMLOAD.SUB.MIN b/source/disk16_integrated_demos/T.ZMLOAD.SUB.MIN similarity index 100% rename from disks/disk2_common/T.ZMLOAD.SUB.MIN rename to source/disk16_integrated_demos/T.ZMLOAD.SUB.MIN diff --git a/disks/disk2_common/T.ZMSAVE.SUB.MIN b/source/disk16_integrated_demos/T.ZMSAVE.SUB.MIN similarity index 100% rename from disks/disk2_common/T.ZMSAVE.SUB.MIN rename to source/disk16_integrated_demos/T.ZMSAVE.SUB.MIN diff --git a/source/disk1_stdio/MINIFY b/source/disk1_stdio/MINIFY new file mode 100644 index 0000000..f5e6a27 --- /dev/null +++ b/source/disk1_stdio/MINIFY @@ -0,0 +1,30 @@ + 5 HOME + 8 ONERR GOTO 1000 + 10 PRINT "ASSEMBLY CODE MINIFIER" + 20 PRINT "-=-=-=-=-=-=-=-=-=-=-=" + 30 PRINT + 35 DIM FC$(1500):C = 0 + 40 INPUT "ENTER THE SOURCE FILE NAME: ";FF$ + 50 INPUT "ENTER THE DESTINATION FILE NAME: ";DD$ + 55 PRINT "WORKING.." + 60 PRINT CHR$ (4);"OPEN ";FF$ + 70 PRINT CHR$ (4);"READ ";FF$ + 80 GET AA$ + 85 REM ? CHR$ (34);"."; + 90 IF AA$ = CHR$ (13) THEN GOTO 200 + 95 S$ = S$ + AA$ + 110 GOTO 80 + 200 IF LEFT$ (S$,1) = "*" OR LEFT$ (S$,1) = ";" THEN S$ = "" + 500 FC$(C) = S$ + 510 S$ = "" + 520 C = C + 1 + 990 GOTO 80 + 1000 PRINT : PRINT CHR$ (4);"CLOSE ";FF$ + 1010 PRINT CHR$ (4);"OPEN ";DD$ + 1020 PRINT CHR$ (4);"WRITE ";DD$ + 1030 FOR Z = 0 TO C + 1040 IF FC$(Z) < > "" THEN PRINT FC$(Z) + 1050 NEXT Z + 1060 PRINT CHR$ (4);"CLOSE ";DD$ + 1070 PRINT "DONE!": PRINT : PRINT : PRINT + 1080 PRINT CHR$ (7): PRINT CHR$ (7): PRINT CHR$ (7) diff --git a/disks/disk1_stdio/STDIO.DEMO b/source/disk1_stdio/STDIO.DEMO similarity index 100% rename from disks/disk1_stdio/STDIO.DEMO rename to source/disk1_stdio/STDIO.DEMO diff --git a/disks/disk1_stdio/STDIO.DEMO.S b/source/disk1_stdio/STDIO.DEMO.S similarity index 100% rename from disks/disk1_stdio/STDIO.DEMO.S rename to source/disk1_stdio/STDIO.DEMO.S diff --git a/disks/disk1_stdio/T.CURSORUDBF.SUB b/source/disk1_stdio/T.CURSORUDBF.SUB similarity index 100% rename from disks/disk1_stdio/T.CURSORUDBF.SUB rename to source/disk1_stdio/T.CURSORUDBF.SUB diff --git a/source/disk1_stdio/T.CURSORUDBF.SUB.MIN b/source/disk1_stdio/T.CURSORUDBF.SUB.MIN new file mode 100644 index 0000000..afab091 --- /dev/null +++ b/source/disk1_stdio/T.CURSORUDBF.SUB.MIN @@ -0,0 +1,88 @@ +CURSFOR + CLC + ADC CURSH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MAX COL + 1 + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSFOR (CURF MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSBAK + SEC + STA SCRATCH + LDA CURSH + SBC SCRATCH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MIN COLUMN + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSBAK (CURB MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSDN + CLC + ADC CURSV + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSDN (CURD MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 +CURSUP + SEC + STA SCRATCH + LDA CURSV + SBC SCRATCH + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSUP (CURU MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 diff --git a/disks/disk1_stdio/T.DPRINT.SUB b/source/disk1_stdio/T.DPRINT.SUB similarity index 100% rename from disks/disk1_stdio/T.DPRINT.SUB rename to source/disk1_stdio/T.DPRINT.SUB diff --git a/source/disk1_stdio/T.DPRINT.SUB.MIN b/source/disk1_stdio/T.DPRINT.SUB.MIN new file mode 100644 index 0000000..ae75ff4 --- /dev/null +++ b/source/disk1_stdio/T.DPRINT.SUB.MIN @@ -0,0 +1,22 @@ +DPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$00 +:LOOP + LDA (ADDR1),Y + BEQ :EXIT + JSR COUT1 + INY + BNE :LOOP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS diff --git a/disks/disk1_stdio/T.GPBX.SUB b/source/disk1_stdio/T.GPBX.SUB similarity index 100% rename from disks/disk1_stdio/T.GPBX.SUB rename to source/disk1_stdio/T.GPBX.SUB diff --git a/source/disk1_stdio/T.GPBX.SUB.MIN b/source/disk1_stdio/T.GPBX.SUB.MIN new file mode 100644 index 0000000..4250bc4 --- /dev/null +++ b/source/disk1_stdio/T.GPBX.SUB.MIN @@ -0,0 +1,50 @@ +GPBX + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR1+1 + CMP #$C0 ; MAX COL + 1 + BNE :BADHI + LDA ADDR1 + CMP #$64 + BCS :BADLO + LDA ADDR1 + CMP #$60 + BCC :BADLO + JMP :ERREND +:BADHI + _ERR :E_SID;:E_BHI;:E_DMP1;RETURN;#10 + JMP :ERREND +:BADLO + _ERR :E_SID;:E_BLO;:E_DMP1;RETURN;#10 +:ERREND + LDY #$00 + LDA (ADDR1),Y ; IF BTN = PUSHED + BMI :1 + JMP :0 +:1 + LDY #$01 ; BTN PUSHED;A=1 + JMP :EXIT +:0 + LDY #$00 ; BTN NOT PUSHED;A=0 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + TYA ; BTN FLAG MOVE TO A + RTS +:E_SID ASC "GPBX (PBX MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00 +:E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00 diff --git a/disks/disk2_common/T.REQUIRED.HOOKS.MIN b/source/disk1_stdio/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk2_common/T.REQUIRED.HOOKS.MIN rename to source/disk1_stdio/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.LIB.MIN b/source/disk1_stdio/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk1_stdio/T.REQUIRED.LIB.MIN rename to source/disk1_stdio/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk1_stdio/T.REQUIRED.LIB.MIN +++ b/source/disk1_stdio/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk2_common/T.REQUIRED.MAC.MIN b/source/disk1_stdio/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk2_common/T.REQUIRED.MAC.MIN rename to source/disk1_stdio/T.REQUIRED.MAC.MIN diff --git a/disks/disk3_arrays/T.REQUIRED.VARS b/source/disk1_stdio/T.REQUIRED.VARS similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.VARS rename to source/disk1_stdio/T.REQUIRED.VARS diff --git a/disks/disk1_stdio/T.SINPUT.SUB b/source/disk1_stdio/T.SINPUT.SUB similarity index 100% rename from disks/disk1_stdio/T.SINPUT.SUB rename to source/disk1_stdio/T.SINPUT.SUB diff --git a/source/disk1_stdio/T.SINPUT.SUB.MIN b/source/disk1_stdio/T.SINPUT.SUB.MIN new file mode 100644 index 0000000..763ccb4 --- /dev/null +++ b/source/disk1_stdio/T.SINPUT.SUB.MIN @@ -0,0 +1,27 @@ +SINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA RETLEN,Y ; PUT LENGTH +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + STA RETURN,Y + INY + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:STRLEN DS 1 diff --git a/disks/disk1_stdio/T.STDIO.DEMO b/source/disk1_stdio/T.STDIO.DEMO similarity index 100% rename from disks/disk1_stdio/T.STDIO.DEMO rename to source/disk1_stdio/T.STDIO.DEMO diff --git a/source/disk1_stdio/T.STDIO.HOOKS b/source/disk1_stdio/T.STDIO.HOOKS new file mode 100644 index 0000000..571056f --- /dev/null +++ b/source/disk1_stdio/T.STDIO.HOOKS @@ -0,0 +1,53 @@ +* +*``````````````````````````````* +* STDIO.HOOKS.PUT * +*- -* +* HOOKS TO INPUT/OUTPUT * +* ROUTINES IN MONITOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* OUTPUT HOOKS +* +COUT1 EQU $FDF0 ; FASTER SCREEN OUTPUT +COUT EQU $FDED ; MONITOR STD OUTPUT +HOME EQU $FC58 ; CLEAR SCREEN, HOME CURSOR +VTAB EQU $FC22 ; MONITOR CURSOR POS ROUTINE +CURSH EQU $24 ; HPOS OF COUT CURSOR +CURSV EQU $25 ; VPOS OF COUT CURSOR +WNDLEFT EQU $20 ; SCROLL WINDOW LEFT +WNDWIDTH EQU $21 ; SCROLL WINDOW WIDTH +WNDTOP EQU $22 ; SCROLL WINDOW TOP +WNDBOT EQU $23 ; SCROLL WINDOW BOTTOM +TEXTP1 EQU $0400 ; START OF TEXT PAGE 1 +TEXTP2 EQU $0800 ; START OF TEXT PAGE 2 +PAGE1 EQU $C054 ; SOFT SWITCH USE PAGE 1 +PAGE2 EQU $C055 ; SOFT SWITCH USE PAGE 2 +S80COL EQU $C01F ; READ ONLY; CHECK IF 80C +KEYBUFF EQU $0200 ; KEYBUFFER START +GSTROBE EQU $C040 ; GAME CONNECTOR STROBE +TXTSET EQU $C051 ; TEXT ON SOFT SWITCH +SETWND EQU $FB4B ; SET NORMAL WINDOW MODE +CURADV EQU $FBF4 ; ADVANCE CURSOR RIGHT +CURBS EQU $FC10 ; CURSOR LEFT +CURUP EQU $FC1A ; CURSOR UP +CR EQU $FC62 ; CARRIAGE RETURN TO SCREEN +LF EQU $FC66 ; LINE FEED ONLY TO SCREEN +CLEOL EQU $FC9C ; CLEAR TEXT TO END OF LINE +* +* INPUT HOOKS +* +KYBD EQU $C000 ; LDA SINGLE KEYPRESS +STROBE EQU $C010 ; CLEAR KYBD BUFFER +GETLN EQU $FD6F ; MONITOR GET LINE OF KB INPUT +GETKEY EQU $FD0C ; MONITOR GET SINGLE KEY INPUT +OPAPP EQU $C061 +CLAPP EQU $C062 +* +* PADDLE HOOKS +* +PREAD EQU $FB1E ; READ STATE OF PADDLE +PB0 EQU $C061 ; PADDLE BUTTON 0 +PB1 EQU $C062 +PB2 EQU $C063 +PB3 EQU $C060 +* diff --git a/disks/disk1_stdio/T.STDIO.HOOKS.MIN b/source/disk1_stdio/T.STDIO.HOOKS.MIN similarity index 100% rename from disks/disk1_stdio/T.STDIO.HOOKS.MIN rename to source/disk1_stdio/T.STDIO.HOOKS.MIN diff --git a/disks/disk1_stdio/T.STDIO.MAC b/source/disk1_stdio/T.STDIO.MAC similarity index 100% rename from disks/disk1_stdio/T.STDIO.MAC rename to source/disk1_stdio/T.STDIO.MAC diff --git a/source/disk1_stdio/T.STDIO.MAC.MIN b/source/disk1_stdio/T.STDIO.MAC.MIN new file mode 100644 index 0000000..4d8e026 --- /dev/null +++ b/source/disk1_stdio/T.STDIO.MAC.MIN @@ -0,0 +1,120 @@ +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +PCR MAC + LDA #$8D + JSR COUT1 + <<< +INP MAC + JSR SINPUT + <<< +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +CURU MAC + LDA ]1 + JSR CURSUP + <<< +CURD MAC + LDA ]1 + JSR CURSDN + <<< +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/disks/disk1_stdio/T.TFILLA.SUB b/source/disk1_stdio/T.TFILLA.SUB similarity index 100% rename from disks/disk1_stdio/T.TFILLA.SUB rename to source/disk1_stdio/T.TFILLA.SUB diff --git a/source/disk1_stdio/T.TFILLA.SUB.MIN b/source/disk1_stdio/T.TFILLA.SUB.MIN new file mode 100644 index 0000000..321da46 --- /dev/null +++ b/source/disk1_stdio/T.TFILLA.SUB.MIN @@ -0,0 +1,90 @@ +TFILLA + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y2 + PLA + STA :X2 + PLA + STA :YC + STA :Y1 + PLA + STA :XC + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 ; X1 => X2? + BCS :X1HI + LDA :Y1 + CMP :Y2 + BCS :Y1HI ; Y1 => Y2? + LDA :X1 + CMP #40 + BCS :XOVF + LDA :X2 + CMP #40 + BCS :XOVF + LDA :Y1 + CMP #24 + BCS :YOVF + LDA :Y2 + CMP #24 + BCS :YOVF + JMP :ERREND +:X1HI + _ERR :E_SID;:E_X1H;:E_DMP1;:X1;#7 + JMP :ERREND +:Y1HI + _ERR :E_SID;:E_Y1H;:E_DMP1;:X1;#7 + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#7 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#7 +:ERREND +:LP1 + LDA :YC + LDY :XC + JSR $F847 ; GBASCALC + LDA :F + STA ($26),Y + LDA :YC + INY + STY :XC + CPY :X2 + BNE :LP1 + LDA :X1 + STA :XC + INC :YC + LDA :YC + CMP :Y2 + BNE :LP1 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y1 DS 1 +:Y2 DS 1 +:XC DS 1 +:YC DS 1 +:F DS 1 +:E_SID ASC "TFILLA (TFILL MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X2(1) Y1(1) Y2(1)" + ASC "XC(1) YC(1) F(1)",00 +:E_X1H ASC "X1 MUST BE LOWER THAN X2.",00 +:E_Y1H ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X <> MIN/MAX COLUMNS.",00 +:E_YOF ASC "Y <> MIN/MAX ROWS",00 diff --git a/disks/disk1_stdio/T.THLINE.SUB b/source/disk1_stdio/T.THLINE.SUB similarity index 100% rename from disks/disk1_stdio/T.THLINE.SUB rename to source/disk1_stdio/T.THLINE.SUB diff --git a/source/disk1_stdio/T.THLINE.SUB.MIN b/source/disk1_stdio/T.THLINE.SUB.MIN new file mode 100644 index 0000000..196d76b --- /dev/null +++ b/source/disk1_stdio/T.THLINE.SUB.MIN @@ -0,0 +1,66 @@ +THLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 + BCS :ERRTOOHI ; X1 => X2 + LDA :X1 + CMP #39 + BCS :ERRXOVF ; X VALUE OVERFLOW + LDA :X2 + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_XHI;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERREND + LDA :Y ; LOAD ROW + LDY :X1 ; LOAD X START POS +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PUSH TO SCREEN MEMORY + LDA :Y + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:E_SID ASC "THLINE (THLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X1(1) Y(1) F(1)",00 +:E_XHI ASC "X1 MUST BE LOWER THAN X2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/disks/disk1_stdio/T.TVLINE.SUB b/source/disk1_stdio/T.TVLINE.SUB similarity index 100% rename from disks/disk1_stdio/T.TVLINE.SUB rename to source/disk1_stdio/T.TVLINE.SUB diff --git a/source/disk1_stdio/T.TVLINE.SUB.MIN b/source/disk1_stdio/T.TVLINE.SUB.MIN new file mode 100644 index 0000000..89613b0 --- /dev/null +++ b/source/disk1_stdio/T.TVLINE.SUB.MIN @@ -0,0 +1,66 @@ +TVLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :Y1 + CMP :Y2 + BCS :ERRTOOHI ; Y1 => Y2 + LDA :Y2 + CMP #24 + BCS :ERRYOVF ; Y VALUE OVERFLOW + LDA :X + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y1 + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_YHI;:E_DMP1;:X;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERREND + LDA :Y1 + LDY :X +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PLOT TO SCREEN MEMORY + INC :Y1 + LDA :Y1 + CMP :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 +:E_SID ASC "TVLINE (TVLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X(1) Y1(1) Y2(1) F(1)",00 +:E_YHI ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/disks/disk1_stdio/T.TXTPUT.SUB b/source/disk1_stdio/T.TXTPUT.SUB similarity index 100% rename from disks/disk1_stdio/T.TXTPUT.SUB rename to source/disk1_stdio/T.TXTPUT.SUB diff --git a/source/disk1_stdio/T.TXTPUT.SUB.MIN b/source/disk1_stdio/T.TXTPUT.SUB.MIN new file mode 100644 index 0000000..828c8a6 --- /dev/null +++ b/source/disk1_stdio/T.TXTPUT.SUB.MIN @@ -0,0 +1,46 @@ +TXTPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL + PLA + STA :Y + PLA + STA :X + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X + CMP #40 ; MAX COL + 1 + BCS :XOVF + LDA :Y + CMP #24 + BCS :YOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:F;#3 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:F;#3 +:ERREND + LDA :Y + LDY :X + JSR $F847 + LDA :F + STA ($26),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:F DS 1 +:Y DS 1 +:X DS 1 +:E_SID ASC "TXTPUT (TPUT MACRO)",00 +:E_DMP1 ASC "DUMPING F(1) Y(1) X(1):",00 +:E_XOF ASC "X OVERFLOW. X <> MIN/MAX",00 +:E_YOF ASC "Y OVERFLOW. Y <> MIN/MAX",00 diff --git a/disks/disk1_stdio/T.XPRINT.SUB b/source/disk1_stdio/T.XPRINT.SUB similarity index 100% rename from disks/disk1_stdio/T.XPRINT.SUB rename to source/disk1_stdio/T.XPRINT.SUB diff --git a/source/disk1_stdio/T.XPRINT.SUB.MIN b/source/disk1_stdio/T.XPRINT.SUB.MIN new file mode 100644 index 0000000..da82aee --- /dev/null +++ b/source/disk1_stdio/T.XPRINT.SUB.MIN @@ -0,0 +1,25 @@ +XPRINT + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$01 ; POINT TO NEXT + ; INSTRUCTION +:LOOP + LDA (ADDR1),Y + BEQ :DONE + JSR COUT1 + INY + BNE :LOOP +:DONE ; RESTORE STACK + CLC ; EXEC POINTER + TYA ; TO RESUME + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #$00 + PHA + LDA ADDR1 + PHA + RTS +:EXIT diff --git a/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN b/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN new file mode 100644 index 0000000..f7b7b09 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADDIT16.SUB.MIN @@ -0,0 +1,31 @@ +ADDIT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :ADD2 + PLA + STA :ADD2+1 + PLA + STA :ADD1 + PLA + STA :ADD1+1 + LDA :ADD1 + CLC + ADC :ADD2 + TAY ; LOW BYTE + STY RETURN + LDA :ADD1+1 + ADC :ADD2+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:ADD1 DS 2 +:ADD2 DS 2 diff --git a/source/disk20_minidisk_A/T.ADIM81.SUB.MIN b/source/disk20_minidisk_A/T.ADIM81.SUB.MIN new file mode 100644 index 0000000..aec7812 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADIM81.SUB.MIN @@ -0,0 +1,92 @@ +ADIM81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL ; FILL VALUE + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 ; ARRAY ADDRESS + PLA + STA ADDR1+1 + LDY #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :ASIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :ASIZE + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + CLC + INX + INX ; INCREASE BY TWO + ; TO MAKE ROOM FOR SIZES + BCC :NOINY ; IF .X ROLLS OVER, INC .Y + INY +:NOINY + STX :MSIZE ; LOW BYTE + STY :MSIZE+1 ; HIGH BYTE + LDA :FILL ; FILL VALUE + LDX :MSIZE+1 + BEQ :PART ; IF NO WHOLE PAGES, JUST PART + LDY #0 +:FULL + STA (ADDR1),Y + INY ; NEXT BYTE + BNE :FULL ; LOOP UNTIL PAGE DONE + INC ADDR1+1 ; GO TO NEXT PAGE + DEX + BNE :FULL ; LOOP IF PAGES LEFT +:PART + LDX :MSIZE ; PARTIAL PAGE BYTES + BEQ :MFEXIT ; EXIT IF = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INC INDEX + DEX ; DEC COUNTER + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH + LDA :ASZBAK + LDA :MSIZE + STA RETURN + LDA :MSIZE+1 + STA RETURN+1 + LDA #2 + STA RETLEN ; 2 BYTE LENGTH + RTS +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 +:FILL DS 1 diff --git a/source/disk20_minidisk_A/T.ADIM82.SUB.MIN b/source/disk20_minidisk_A/T.ADIM82.SUB.MIN new file mode 100644 index 0000000..73787c1 --- /dev/null +++ b/source/disk20_minidisk_A/T.ADIM82.SUB.MIN @@ -0,0 +1,133 @@ +ADIM82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :MCAND+1 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :AXSIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :AXSIZE + ROL SCRATCH +:ENTLP + LSR :AYSIZE + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + LDA #0 + STA :PROD + STA :PROD+1 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + LDA :FILL ; FILL VALUE + LDX :PROD+1 ; NOTE THAT THIS WON'T + ; GO BEYOND A 16BIT VALUE; + ; ANYTHING HIGHER THAN + ; 16BITS IS MORE THAN + ; THERE IS MEMORY IN A + ; STANDARD APPLE ][ + BEQ :PART + LDY #0 +:FULL + STA (ADDR1),Y + INY + BNE :FULL + INC ADDR1+1 + DEX + BNE :FULL ; LOOP UNTIL PAGES DONE +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 + LDX ADDR1+1 + LDA :PROD + STA RETURN + LDA :PROD+1 + STA RETURN+1 + LDA :PROD+2 + STA RETURN+2 + LDA :PROD+3 + STA RETURN+3 + LDA #4 ; SIZE OF RETURN + STA RETLEN + LDA :MCAND + RTS +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +:FILL DS 1 diff --git a/source/disk20_minidisk_A/T.AGET81.SUB.MIN b/source/disk20_minidisk_A/T.AGET81.SUB.MIN new file mode 100644 index 0000000..1e200ce --- /dev/null +++ b/source/disk20_minidisk_A/T.AGET81.SUB.MIN @@ -0,0 +1,96 @@ +AGET81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :IDX + DEC :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :IDX+1 + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE + STA RETLEN ; LENGTH OF RETURN VALUE + DEY + LDA (ADDR1),Y + STA :ALEN + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CMP :ALEN + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 +:ERREND + LDY #0 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :IDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :IDX + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 + LDY #0 + LDA :RES + STA ADDR1 + LDA :RES+1 + STA ADDR1+1 +:LDLOOP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY RETLEN + BCC :LDLOOP ; IF .Y <= RETLEN + BEQ :LDLOOP ; KEEP LOOPING + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :RES + LDX :RES+1 + LDA RETLEN + RTS +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +:ALEN DS 1 +:E_SID ASC "AGET81 (GET81 MACRO)",00 +:E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/source/disk20_minidisk_A/T.AGET82.SUB.MIN b/source/disk20_minidisk_A/T.AGET82.SUB.MIN new file mode 100644 index 0000000..9193742 --- /dev/null +++ b/source/disk20_minidisk_A/T.AGET82.SUB.MIN @@ -0,0 +1,153 @@ +AGET82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + DEC :XIDX + DEC :YIDX + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH + STA :ELEN + DEY + LDA (ADDR1),Y ; Y LENGTH + STA :YLEN + DEY + LDA (ADDR1),Y ; X LENGTH + STA :XLEN + LDA #0 + STA :MCAND+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 + LDY :PROD + LDX :PROD+1 + STY ADDR1 + STX ADDR1+1 + LDY #0 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY :ELEN + BNE :RLP + LDA :ELEN + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA RETLEN + LDY ADDR1 + LDX ADDR1+1 + RTS +:XIDX DS 2 +:YIDX DS 2 +:XLEN DS 1 +:YLEN DS 1 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +:ELEN DS 1 +:E_SID ASC "AGET82 (GET82 MACRO)",00 +:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" + ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/source/disk20_minidisk_A/T.APUT81.SUB.MIN b/source/disk20_minidisk_A/T.APUT81.SUB.MIN new file mode 100644 index 0000000..11c8446 --- /dev/null +++ b/source/disk20_minidisk_A/T.APUT81.SUB.MIN @@ -0,0 +1,103 @@ +APUT81 + PLA + STA RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA RETADR+1 + PLA + STA :AIDX + STA :IDX + DEC :AIDX + DEC :IDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + PLA + STA ADDR3+1 + LDY #0 + LDA (ADDR4),Y + STA :ASIZE + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + STA :ESIZEBAK + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CLC + ADC #1 + CMP :ASIZE + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 +:ERREND + LDY #0 + LDA #0 + STY SCRATCH + STY SCRATCH+1 + BEQ :ENTLPA +:DOADD + CLC + ADC :AIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LPA + ASL :AIDX + ROL SCRATCH +:ENTLPA + LSR :ESIZE + BCS :DOADD + BNE :LPA + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR4 + STA :RES + LDA :RES+1 + ADC ADDR4+1 + STA :RES+1 + STA ADDR2+1 + LDA :RES + STA ADDR2 +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZEBAK + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:ESIZEBAK DS 1 +:ASIZE DS 1 +:AIDX DS 2 +:IDX DS 2 +:RES DS 2 +:E_SID ASC "APUT81 (PUT81 MACRO)",00 +:E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" + ASC ":AIDX(2) :IDX(2) :RES(2)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/source/disk20_minidisk_A/T.APUT82.SUB.MIN b/source/disk20_minidisk_A/T.APUT82.SUB.MIN new file mode 100644 index 0000000..696d636 --- /dev/null +++ b/source/disk20_minidisk_A/T.APUT82.SUB.MIN @@ -0,0 +1,158 @@ +APUT82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX ; Y INDEX + DEC :YIDX + PLA + STA :XIDX ; X INDEX + DEC :XIDX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + STA :MCAND + LDA #0 + STA :MCAND+1 + LDY #0 + LDA (ADDR4),Y + STA :XLEN + INY + LDA (ADDR4),Y + STA :YLEN + LDY #0 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR4 + STA :PROD + LDA :PROD+1 + ADC ADDR4+1 + STA :PROD+1 + LDA :PROD + LDY :PROD + LDX :PROD+1 + STY ADDR2 + STX ADDR2+1 + LDY #0 + LDX #0 +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +:MCAND DS 2 +:MLIER DS 2 +:PROD DS 4 +:XLEN DS 1 +:YLEN DS 1 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/source/disk20_minidisk_A/T.ARRAYS.HOOKS b/source/disk20_minidisk_A/T.ARRAYS.HOOKS new file mode 100644 index 0000000..d33c50b --- /dev/null +++ b/source/disk20_minidisk_A/T.ARRAYS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.HOOKS.PUT * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +* WELL I GOT NOTHIN +* diff --git a/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN b/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN new file mode 100644 index 0000000..062e261 --- /dev/null +++ b/source/disk20_minidisk_A/T.ARRAYS.MAC.MIN @@ -0,0 +1,76 @@ +DIM81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ARRAY LENGTH + PHA + LDA ]3 ; ELEMENT LENGTH + PHA + LDA ]4 + PHA ; FILL VAL + JSR ADIM81 + <<< +GET81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ELEM INDEX + PHA + JSR AGET81 + <<< +PUT81 MAC + LDA #>]1 + PHA ; SRC ADDR + LDA #<]1 + PHA + LDA #>]2 ; DEST ARRAY + PHA + LDA #<]2 + PHA + LDA ]3 ; DEST INDEX + PHA + JSR APUT81 + <<< +DIM82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X DIM + PHA + LDA ]3 ; Y DIM + PHA + LDA ]4 ; ELEMENT LENGTH + PHA + LDA ]5 ; FILL VAL + PHA + JSR ADIM82 + <<< +GET82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X INDEX + PHA + LDA ]3 ; Y INDEX + PHA + JSR AGET82 + <<< +PUT82 MAC + LDA #>]1 ; SRC ADDR + PHA + LDA #<]1 + PHA + LDA #>]2 ; ARRAY ADDR + PHA + LDA #<]2 + PHA + LDA ]3 ; X INDEX + PHA + LDA ]4 ; Y INDEX + PHA + JSR APUT82 + <<< diff --git a/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN b/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN new file mode 100644 index 0000000..8986bc7 --- /dev/null +++ b/source/disk20_minidisk_A/T.BINLOAD.SUB.MIN @@ -0,0 +1,69 @@ +BINLOAD + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$CC ; L + JSR FCOUT + LDA #$CF ; O + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$C4 ; D + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINLOAD (BLOAD MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN b/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN new file mode 100644 index 0000000..e848e23 --- /dev/null +++ b/source/disk20_minidisk_A/T.BINSAVE.SUB.MIN @@ -0,0 +1,69 @@ +BINSAVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERROR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$D3 ; S + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$D6 ; V + JSR FCOUT + LDA #$C5 ; E + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINSAVE (BSAV MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk2_common/T.COMMON.DEMO.MIN b/source/disk20_minidisk_A/T.COMMON.DEMO.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.DEMO.MIN rename to source/disk20_minidisk_A/T.COMMON.DEMO.MIN diff --git a/source/disk20_minidisk_A/T.COMMON.HOOKS b/source/disk20_minidisk_A/T.COMMON.HOOKS new file mode 100644 index 0000000..f5793e1 --- /dev/null +++ b/source/disk20_minidisk_A/T.COMMON.HOOKS @@ -0,0 +1,14 @@ +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.LIB HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +PROMPT EQU $33 +COLDENT EQU $03D3 ; COLD ENTRY TO DOS +SRESET EQU $03F2 ; SOFT RESET +PRNTAX EQU $F941 ; PRINT HEX VALS OF A,X REGISTERS +BELL EQU $FBE4 ; RING MY BELL +IOSAVE EQU $FF4A ; SAVE CURRENT STATE OF REGISTERS +IOREST EQU $FF3F ; RESTORE OLD STATE OF REGISTERS +* diff --git a/source/disk20_minidisk_A/T.COMMON.MAC.MIN b/source/disk20_minidisk_A/T.COMMON.MAC.MIN new file mode 100644 index 0000000..95d3e9f --- /dev/null +++ b/source/disk20_minidisk_A/T.COMMON.MAC.MIN @@ -0,0 +1,55 @@ +MFILL MAC + _ISLIT ]1 + _ISLIT ]2 + LDA ]3 ; FILL VALUE + PHA + JSR MEMFILL + <<< +BEEP MAC + LUP ]1 + JSR BELL + --^ + <<< +MMOVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + _ISLIT ]3 + JSR MEMMOVE + <<< +DELAY MAC + LDY ]1 + JSR DELAYMS + <<< +ZSAVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMSAVE + <<< +ZLOAD MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMLOAD + <<< +MSWAP MAC + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]3 + PHA + JSR MEMSWAP + <<< diff --git a/source/disk20_minidisk_A/T.COMP16.SUB.MIN b/source/disk20_minidisk_A/T.COMP16.SUB.MIN new file mode 100644 index 0000000..2eceede --- /dev/null +++ b/source/disk20_minidisk_A/T.COMP16.SUB.MIN @@ -0,0 +1,37 @@ +COMP16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT ; SUBTRAHEND + PLA + STA :SUBT+1 + PLA + STA :MINU ; MINUEND + PLA + STA :MINU+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :MINU + CMP :SUBT ; COMPARE LOW BYTES + BEQ :EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; COMPARE HIGH BYTES + ORA #1 ; MAKE Z=0, SINCE LOW + ; BYTES ARE NOT EQUAL + BVS :OVFLOW ; MUST HANDLE OVERFLOW + RTS ; EXIT +:EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; UPPER BYTES + BVS :OVFLOW + RTS ; RETURN W FLAGS SET +:OVFLOW + EOR #$80 ; COMPLEMENT N FLAG + ORA #1 ; IF OVERFLOW THEN THE + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN b/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN new file mode 100644 index 0000000..afab091 --- /dev/null +++ b/source/disk20_minidisk_A/T.CURSORUDBF.SUB.MIN @@ -0,0 +1,88 @@ +CURSFOR + CLC + ADC CURSH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MAX COL + 1 + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSFOR (CURF MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSBAK + SEC + STA SCRATCH + LDA CURSH + SBC SCRATCH + STA CURSH + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSH + CMP #40 ; MIN COLUMN + BCS :XOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSBAK (CURB MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_XOF ASC "CURSOR X OVERFLOW: X <> MIN/MAX",00 +CURSDN + CLC + ADC CURSV + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSDN (CURD MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 +CURSUP + SEC + STA SCRATCH + LDA CURSV + SBC SCRATCH + STA CURSV + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA CURSV + CMP #24 ; MAX ROWS + BCS :YOVF + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;RETURN;#10 +:ERREND + JSR VTAB + RTS +:E_SID ASC "CURSUP (CURU MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_YOF ASC "CURSOR Y OVERFLOW: Y <> MIN/MAX",00 diff --git a/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN b/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN new file mode 100644 index 0000000..8942752 --- /dev/null +++ b/source/disk20_minidisk_A/T.DELAYMS.SUB.MIN @@ -0,0 +1,29 @@ +DELAYMS +MSCNT EQU $0CA ; 202 TIMES THROUGH DELAY1 + ; SPECIFIC TO 1.23 MHZ + ; SPEED OF APPLE II +:DELAY + CPY #0 ; 2 CYCLES + BEQ :EXIT ; 2C (EXIT IF DEL=0) + NOP ; 2 CYCLES (MAKE OVERHEAD=25C) + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +:DELAYA + DEY ; 2C (PREDEC Y) +:DELAY0 + LDX #MSCNT ; 2C +:DELAY1 + DEX ; 2C + BNE :DELAY1 ; 3C + NOP ; 2C + NOP ; 2C + DEY ; 2C + BNE :DELAY0 ; 3C +:LAST1 + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C diff --git a/source/disk20_minidisk_A/T.DISKOP.SUB.MIN b/source/disk20_minidisk_A/T.DISKOP.SUB.MIN new file mode 100644 index 0000000..df1e7aa --- /dev/null +++ b/source/disk20_minidisk_A/T.DISKOP.SUB.MIN @@ -0,0 +1,12 @@ +DISKOP +:CLEAR + LDA #00 + STA IOB_EVOL + LDA #>IOB + LDY #]1 + PHA + LDA #<]1 + PHA + JSR FPSTR ; PRINT STRING + FIN + <<< +FINP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR FINPUT + <<< +SLOT MAC + LDA ]1 + STA SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH ; MUL BY 16 + LDA SCRATCH + STA IOB_SLOT + <<< +DRIVE MAC + LDA ]1 + STA IOB_DRIV + <<< +TRACK MAC + LDA ]1 + STA IOB_TRAK + <<< +SECT MAC + LDA ]1 + STA IOB_SECT + <<< +SETDR MAC + LDA $01 + STA IOB_COMM + <<< +SETDW MAC + LDA $02 + STA IOB_COMM + <<< +DBUFF MAC + LDA #<]1 + STA IOB_BUFL + LDA #>]1 + STA IOB_BUFH + <<< +DRWTS MAC + JSR DISKOP + <<< diff --git a/source/disk20_minidisk_A/T.FINPUT.SUB.MIN b/source/disk20_minidisk_A/T.FINPUT.SUB.MIN new file mode 100644 index 0000000..39501bb --- /dev/null +++ b/source/disk20_minidisk_A/T.FINPUT.SUB.MIN @@ -0,0 +1,31 @@ +FINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDX #0 + JSR FGETLN + STX :SLEN + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :SLEN + STA (ADDR1),Y ; PUT LENGTH AT START +:LP + LDA $0200,Y ; KEYBOARD BUFFER + INY + STA (ADDR1),Y + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk20_minidisk_A/T.FPRINT.SUB.MIN b/source/disk20_minidisk_A/T.FPRINT.SUB.MIN new file mode 100644 index 0000000..9f6235c --- /dev/null +++ b/source/disk20_minidisk_A/T.FPRINT.SUB.MIN @@ -0,0 +1,23 @@ +FPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + LDY #$01 ; POINT TO NEXT INSTR +:LP + LDA (RETADR),Y + BEQ :DONE + JSR FCOUT + INY + BNE :LP +:DONE + CLC ; RESTORE INSTR POINTER + TYA + ADC RETADR + STA RETADR + LDA RETADR+1 + ADC #$00 + PHA + LDA RETADR + PHA + RTS diff --git a/source/disk20_minidisk_A/T.FPSTR.SUB.MIN b/source/disk20_minidisk_A/T.FPSTR.SUB.MIN new file mode 100644 index 0000000..bea622d --- /dev/null +++ b/source/disk20_minidisk_A/T.FPSTR.SUB.MIN @@ -0,0 +1,25 @@ +FPSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + STA :SLEN +:LP + INY + LDA (ADDR1),Y + JSR FCOUT + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk20_minidisk_A/T.GPBX.SUB.MIN b/source/disk20_minidisk_A/T.GPBX.SUB.MIN new file mode 100644 index 0000000..4250bc4 --- /dev/null +++ b/source/disk20_minidisk_A/T.GPBX.SUB.MIN @@ -0,0 +1,50 @@ +GPBX + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ZERO PAGE + PLA + STA ADDR1+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR1+1 + CMP #$C0 ; MAX COL + 1 + BNE :BADHI + LDA ADDR1 + CMP #$64 + BCS :BADLO + LDA ADDR1 + CMP #$60 + BCC :BADLO + JMP :ERREND +:BADHI + _ERR :E_SID;:E_BHI;:E_DMP1;RETURN;#10 + JMP :ERREND +:BADLO + _ERR :E_SID;:E_BLO;:E_DMP1;RETURN;#10 +:ERREND + LDY #$00 + LDA (ADDR1),Y ; IF BTN = PUSHED + BMI :1 + JMP :0 +:1 + LDY #$01 ; BTN PUSHED;A=1 + JMP :EXIT +:0 + LDY #$00 ; BTN NOT PUSHED;A=0 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + TYA ; BTN FLAG MOVE TO A + RTS +:E_SID ASC "GPBX (PBX MACRO)",00 +:E_DMP1 ASC "DUMPING RETURN BLOCK...",00 +:E_BHI ASC "BAD HIGH BYTE--NOT A PADDLE BUTTON!.",00 +:E_BLO ASC "BAD LOW BYTE--NOT A PADDLE BUTTON",00 diff --git a/source/disk20_minidisk_A/T.MATH.HOOKS b/source/disk20_minidisk_A/T.MATH.HOOKS new file mode 100644 index 0000000..c409e7b --- /dev/null +++ b/source/disk20_minidisk_A/T.MATH.HOOKS @@ -0,0 +1,27 @@ +* +GETNUM EQU $FFA7 ; ASCII TO HEX IN 3E & 3F +RNDL EQU $4E ; RANDOM NUMBER LOW +RNDH EQU $4F ; RANDOM NUMBER HIGH +* +FAC EQU $9D ; FLOATING POINT ACCUM +FSUB EQU $E7A7 ; FLOATING POINT SUBTRACT +FADD EQU $E7BE +FMULT EQU $E97F ; FP MULTIPLY +FDIV EQU $EA66 ; FP DIVIDE +FMULTT EQU $E982 +FDIVT EQU $EA69 +FADDT EQU $E7C1 +FSUBT EQU $E7AA +* +MOVFM EQU $EAF9 ; MOVE FAC > MEM +MOVMF EQU $EB2B ; MOVE MEM > FAC +NORM EQU $E82E +CONUPK EQU $E9E3 +* +FLOG EQU $E941 ; LOGARITHM +FSQR EQU $EE8D ; SQUARE ROOT +FCOS EQU $EFEA ; FP COSINE +FSIN EQU $EFF1 ; SINE +FTAN EQU $F03A ; TANGENT +FATN EQU $F09E ; ATANGENT +* diff --git a/source/disk20_minidisk_A/T.MATH.MAC.MIN b/source/disk20_minidisk_A/T.MATH.MAC.MIN new file mode 100644 index 0000000..bad6721 --- /dev/null +++ b/source/disk20_minidisk_A/T.MATH.MAC.MIN @@ -0,0 +1,78 @@ +ADD16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR ADDIT16 + <<< +SUB16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR SUBT16 + <<< +MUL16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR MULT16 + <<< +DIV16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SDIVD16 + ELSE + JSR UDIVD16 ; UNSIGNED + FIN + <<< +REM16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SREMD16 + ELSE + JSR UREMD16 ; UNSIGNED + FIN + <<< +RNDB MAC + LDA ]1 ; LOW + PHA + LDA ]2 ; HIGH + PHA + JSR RANDB + <<< +CMP16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR COMP16 + <<< +MUL8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR MULT8 + <<< +DIV8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR DIVD8 + <<< +RND16 MAC + JSR RAND16 + <<< +FPADD MAC + LDX #]1 + LDY #>]1 + JSR MOVFM + LDA #]2 + LDY #>]2 + JSR CONUPK + JSR NORM + LDA $9D + JSR FADDT + LDX #RETURN + LDY #>RETURN + JSR MOVMF + LDA #6 + STA RETLEN + <<< diff --git a/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN b/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN new file mode 100644 index 0000000..0401928 --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMFILL.SUB.MIN @@ -0,0 +1,43 @@ +MEMFILL + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS + LDA :VALUE ; GET VAL FOR FILL + LDX :ARYSZ+1 ; X=# OF PAGES TO DO + BEQ :PARTPG ; BRANCH IF HIGHBYTE OF SZ = 0 + LDY #0 +:FULLPG + STA (ADDR1),Y + INY ; INC TO NEXT BYTE + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGE + INC ADDR1+1 ; ADVANCE TO NEXT PAGE + DEX + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGES +:PARTPG + LDX :ARYSZ ;GET # OF BYTES IN FINAL PAGE + BEQ :EXIT ; BRANCH IF LOW BYTE = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INCREMENT INDEX + DEX ; DECREMENT COUNTER + BNE :PARTLP ; BRANCH IF NOT DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE diff --git a/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN b/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN new file mode 100644 index 0000000..d0938fb --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMMOVE.SUB.MIN @@ -0,0 +1,101 @@ +MEMMOVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :MVELEN + TYA + SBC :MVELEN+1 + BCS :DOLEFT ; BRANCH IF NO OVERLAP + JSR :MVERHT + JMP :EXIT +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +:MVELEFT + LDY #0 ; ZERO INDEX + LDX :MVELEN+1 ; X=# OF FULL PP TO MOVE + BEQ :MLPART ; IF X=0, DO PARTIAL PAGE +:MLPAGE + LDA (ADDR1),Y + STA (ADDR2),Y ;MOVE ONE BYTE + INY ; NEXT BYTE + BNE :MLPAGE ; CONT UNTIL 256B MOVED + INC ADDR1+1 ; ADV TO NEXT SRC PAGE + INC ADDR2+1 ; ADV NEXT DEST PAGE + DEX ; DEC PAGE COUNT + BNE :MLPAGE ; CONT UNTIL ALL FULL + ; PAGES ARE MOVED +:MLPART + LDX :MVELEN ; GET LENGTH OF LAST PAGE + BEQ :MLEXIT ; BR IF LENGTH OF LAST + ; PAGE = 0 + ; REG Y IS 0 +:MLLAST + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + INY ; NEXT BYTE + DEX ; DEC COUNTER + BNE :MLLAST ; CONT UNTIL LAST P DONE +:MLEXIT + JMP :MREXIT +:MVERHT + LDA :MVELEN+1 + CLC + ADC ADDR1+1 + STA ADDR1+1 ;POINT TO LAST P OF SRC + LDA :MVELEN+1 + CLC + ADC ADDR2+1 + STA ADDR2+1 ; POINT TO LAST P OF DEST + LDY :MVELEN ;GET LENGTH OF LAST PAGE + BEQ :MRPAGE ; IF Y=0 DO THE FULL PAGES +:MR0 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR0 ; BR IF NOT DONE W LAST P +:MRPAGE + LDX :MVELEN+1 ; GET BYTE OF COUNT AS P CT + BEQ :MREXIT ; BR IF HYBYTE = 0 (NO FULL P) +:MR1 + DEC ADDR1+1 ; BACK UP TO PREV SRC PAGE + DEC ADDR2+1 ; AND DEST +:MR2 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR2 ; BR IF NOT DONE W THIS PAGE + DEX + BNE :MR1 ; BR IF NOT ALL PAGES MOVED +:MREXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MVELEN DS 2 diff --git a/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN b/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN new file mode 100644 index 0000000..7247b7d --- /dev/null +++ b/source/disk20_minidisk_A/T.MEMSWAP.SUB.MIN @@ -0,0 +1,86 @@ +MEMSWAP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :LENGTH + PLA + STA ADDR1 + STA :A1 + PLA + STA ADDR1+1 + STA :A1+1 + PLA + STA ADDR2 + STA :A2 + PLA + STA ADDR2+1 + STA :A2+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR2+1 ; IF #>A2 => #>A1 + CMP ADDR1+1 + BCS :CHKLO ; CHECK LOW BYTES + JMP :A1GTA2 ; ELSE, A1 > A2 +:CHKLO + LDA ADDR2 + CMP ADDR1 + BCS :A2GTA1 + JMP :A1GTA2 +:A2GTA1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND ; BRANCH IF NO OVERLAP + JMP :OVF +:A1GTA2 + LDA ADDR1 + SEC + SBC ADDR2 + TAX + LDA ADDR1+1 + SBC ADDR2+1 + TAY + TXA + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND +:OVF + _ERR :E_SID;:E_OVF;:E_DUMP;:LENGTH;#6 +:ERREND + LDY #255 ; COUNTER +:LP + INY + LDA (ADDR1),Y + TAX ; X CONTAINS ADDR1 VAL + LDA (ADDR2),Y ; A CONTAINS ADDR2 VAL + STA (ADDR1),Y + TXA + STA (ADDR2),Y + CPY :LENGTH + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:LENGTH DS 2 +:A1 DS 2 +:A2 DS 2 +:E_SID ASC "MEMSWAP (MSWAP MACRO)",00 +:E_DUMP ASC "DUMPING LENGTH (2) A1(2) A2(2)",00 +:E_OVF ASC "OVERFLOW! ADDRESSES OVERLAP.",00 diff --git a/source/disk20_minidisk_A/T.MULT16.SUB.MIN b/source/disk20_minidisk_A/T.MULT16.SUB.MIN new file mode 100644 index 0000000..31aafd7 --- /dev/null +++ b/source/disk20_minidisk_A/T.MULT16.SUB.MIN @@ -0,0 +1,59 @@ +MULT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLIER + PLA + STA :MLIER+1 + PLA + STA :MCAND + PLA + STA :MCAND+1 + LDA #0 + STA :HPROD ; ZERO HIGH WORD + STA :HPROD+1 + LDX #17 ; # OF BITS IN MPLIER + ; PLUS 1. EXTRA LOOP IS + ; TO MOVE LAST CARRY INTO + ; THE PRODUCT. + CLC ; CLEAR CARRY FOR 1ST TIME + ; THROUGH LOOP. +:MULLP + ROR :HPROD+1 + ROR :HPROD + ROR :MLIER+1 + ROR :MLIER + BCC :DECCNT ; BR IF NEXT BIT OF + CLC ; NEXT BIT=1 SO ADD MCAND + LDA :MCAND + ADC :HPROD + STA :HPROD + LDA :MCAND+1 + ADC :HPROD+1 + STA :HPROD+1 ; CARRY = OVERFLOW +:DECCNT + DEX + BNE :MULLP ; CONTINUE UNTIL DONE + LDY :HPROD ; LOW BYTE OF HIGH WORD + LDX :HPROD+1 ; HIGH BYTE OF HIGH WORD + LDA :MLIER+1 + TAX + STX RETURN+1 + LDA :MLIER + TAY + STY RETURN + LDA :HPROD + STA RETURN+2 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :HPROD ;24BIT + RTS +:MCAND DS 3 +:MLIER DS 3 +:HPROD DS 2 diff --git a/source/disk20_minidisk_A/T.MULT8.SUB.MIN b/source/disk20_minidisk_A/T.MULT8.SUB.MIN new file mode 100644 index 0000000..46ed425 --- /dev/null +++ b/source/disk20_minidisk_A/T.MULT8.SUB.MIN @@ -0,0 +1,41 @@ +MULT8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MUL1 + PLA + STA :MUL2 + LDA #$00 + TAY + TAX + STY :MUL1H + BEQ :GOLOOP +:DOADD + CLC + ADC :MUL1 + TAY + TXA + ADC :MUL1H + TAX + TYA +:LP + ASL :MUL1 + ROL :MUL1H +:GOLOOP + LSR :MUL2 + BCS :DOADD + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:MUL1 DS 1 +:MUL2 DS 1 +:MUL1H DS 1 diff --git a/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN b/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN new file mode 100644 index 0000000..b93f1e9 --- /dev/null +++ b/source/disk20_minidisk_A/T.NUM2STR.SUB.MIN @@ -0,0 +1,97 @@ +NUM2STR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALSTR + PLA + STA :VALSTR+1 + STA :NGFLAG + BPL :GETBP ; BR IF VAL IS POS + LDA #0 + SEC + SBC :VALSTR + STA :VALSTR + LDA #0 + SBC :VALSTR+1 + STA :VALSTR+1 +:GETBP + LDA #RETURN+1 + STA ADDR1+1 + LDA #0 ; SET BUFFER TO EMPTY + LDY #0 + STA (ADDR1),Y ; BUFFER(0) = 0 +:CNVERT + LDA #0 + STA :MOD10 + STA :MOD10+1 + LDX #16 + CLC ; CLEAR CARRY +:DVLOOP + ROL :VALSTR ; SHIFT CARRY INTO DIVBIT 0 + ROL :VALSTR+1 ; WHICH WILL BE THE QUOTIENT + ROL :MOD10 ; + SHIFT DIV AT SAME TIME + ROL :MOD10+1 + SEC + LDA :MOD10 + SBC #10 + TAY ; SAVE LOWB IN REG Y + LDA :MOD10+1 + SBC #0 ; SUBTRACT CARRY + BCC :DECCNT ; BR IF DEND < DIVISOR + STY :MOD10 ; ELSE + STA :MOD10+1 ; NXT BIT OF Q IS A ONE AND SET + ; DIVIDEND = DEND - DIVISOR +:DECCNT + DEX + BNE :DVLOOP + ROL :VALSTR ; SHIFT IN LAST CARRY FOR Q + ROL :VALSTR+1 +:CONCH + LDA :MOD10 + CLC + ADC #$B0 + JSR :CONCAT + LDA :VALSTR + ORA :VALSTR+1 + BNE :CNVERT ; BR IF VALUE != 0 +:EXIT + LDA :NGFLAG + BPL :POS ; BR IF ORIG VAL POS + LDA #173 ; ELSE + JSR :CONCAT ; PUT A MINUS SIGN IN FRONT +:POS + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS ; RETURN +:CONCAT + PHA ; SAVE CHAR ON STACK + LDY #0 + LDA (ADDR1),Y ; GET CURRENT LENGTH + TAY + BEQ :EXITMR ; BR IF LENGTH=0 +:MVELP + LDA (ADDR1),Y ; GET NEXT CHAR + INY + STA (ADDR1),Y ; STORE IT + DEY + DEY + BNE :MVELP ; CONT UNTIL DONE +:EXITMR + PLA ; GET CHAR BACK FROM STACK + LDY #1 + STA (ADDR1),Y ; STORE THE CHAR + LDY #0 + LDA (ADDR1),Y ; GET LENGTH BYTE + CLC + ADC #1 ; INC LENGTH BY ONE + STA (ADDR1),Y ; UPDATE LENGTH + RTS +:NGFLAG DS 1 +:VALSTR DS 2 +:MOD10 DS 2 diff --git a/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN b/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN new file mode 100644 index 0000000..c3998cc --- /dev/null +++ b/source/disk20_minidisk_A/T.PRNSTR.SUB.MIN @@ -0,0 +1,31 @@ +PRNSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADDRESS OF STRING + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET STRING LENGTH + STA :S1LEN +:LP + INY + LDA (ADDR1),Y ; GET CHARACTER + JSR SCOUT1 ; PRINT CHARACTER TO SCREEN + CPY :S1LEN ; IF Y < LENGTH + BNE :LP + ; LOOP; ELSE + LDY #0 + LDA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; STRING LENGTH IN A + LDY ADDR1 + LDX ADDR1+1 ; ADDRESS IN Y,X + RTS +:S1LEN DS 1 diff --git a/source/disk20_minidisk_A/T.RAND16.SUB.MIN b/source/disk20_minidisk_A/T.RAND16.SUB.MIN new file mode 100644 index 0000000..4a97a0c --- /dev/null +++ b/source/disk20_minidisk_A/T.RAND16.SUB.MIN @@ -0,0 +1,34 @@ +RAND16 + LDA RNDL + STA :SEED + LDA RNDH + STA :SEED+1 + LDA :SEED + BEQ :LOW0 + ASL :SEED + LDA :SEED+1 + ROL + BCC :NOEOR +:DOEOR ; HIGH BYTE IN A + EOR #>$0369 + STA :SEED+1 + LDA :SEED + EOR #<$0369 + STA :SEED + JMP :EXIT +:LOW0 + LDA :SEED+1 + BEQ :DOEOR + ASL + BEQ :NOEOR + BCS :DOEOR +:NOEOR + STA :SEED+1 +:EXIT LDX :SEED+1 + LDY :SEED + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:SEED DS 2 diff --git a/source/disk20_minidisk_A/T.RAND8.SUB.MIN b/source/disk20_minidisk_A/T.RAND8.SUB.MIN new file mode 100644 index 0000000..ae20a11 --- /dev/null +++ b/source/disk20_minidisk_A/T.RAND8.SUB.MIN @@ -0,0 +1,17 @@ +RAND8 + LDX #8 + LDA RNDL+0 +:A + ASL ;SHIFT THE REG + ROL RNDL+1 + BCC :B + EOR #$2D ; APPLY XOR FEEDBACK +:B + DEX + BNE :A + STA RNDL+0 + STA RETURN + LDY #1 + STY RETLEN + CMP #0 ; RELOAD FLAGS + RTS diff --git a/source/disk20_minidisk_A/T.RANDB.SUB.MIN b/source/disk20_minidisk_A/T.RANDB.SUB.MIN new file mode 100644 index 0000000..b0805bb --- /dev/null +++ b/source/disk20_minidisk_A/T.RANDB.SUB.MIN @@ -0,0 +1,107 @@ +RANDB + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :NEWMAX + PLA + STA :NEWMIN + LDA #1 + STA :OLDMIN + LDA #255 + STA :OLDMAX + LDX #8 + LDA RNDL+0 +:AA + ASL + ROL RNDL+1 + BCC :BB + EOR #$2D ; MAGIC NUMBER +:BB + DEX + BNE :AA + STA RNDL+0 + CMP #0 + STA :OLDVAL + LDA :OLDMAX + SEC + SBC :OLDMIN + STA :OLDRANGE + LDA :NEWMAX + SEC + SBC :NEWMIN + STA :NEWRANGE + LDA :OLDVAL + SEC + SBC :OLDMIN + STA :VALRANGE + LDA #00 + TAY + STY :NUM1HI + BEQ :ENTLP +:DOADD + CLC + ADC :VALRANGE + TAX + TYA + ADC :NUM1HI + TAY + TXA +:MLP + ASL :VALRANGE + ROL :NUM1HI +:ENTLP + LSR :NEWRANGE + BCS :DOADD + BNE :MLP + STA :MULRANGE + STY :MULRANGE+1 +:DIVIDE + LDA #0 + STA :REMAIN + STA :REMAIN+1 + LDX #16 +:DIVLP + ASL :MULRANGE + ROL :MULRANGE+1 + ROL :REMAIN + ROL :REMAIN+1 + LDA :REMAIN + SEC + SBC :OLDRANGE + TAY + LDA :REMAIN+1 + SBC :OLDRANGE+1 + BCC :SKIP + STA :REMAIN+1 + STY :REMAIN + INC :DIVRANGE +:SKIP DEX + BNE :DIVLP + LDA :DIVRANGE ; LO BYTE ONLY + CLC + ADC :NEWMIN + STA :NEWVAL + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :NEWVAL ; RETURN # IN A + STA RETURN + LDX #1 + STX RETLEN + RTS +:OLDRANGE DS 2 +:NEWRANGE DS 2 +:MULRANGE DS 2 +:DIVRANGE DS 2 +:VALRANGE DS 2 +:OLDVAL DS 2 +:NEWVAL DS 2 +:OLDMIN DS 2 +:NEWMIN DS 2 +:OLDMAX DS 2 +:NEWMAX DS 2 +:NUM1HI DS 2 +:REMAIN DS 2 diff --git a/disks/disk3_arrays/T.REQUIRED.HOOKS.MIN b/source/disk20_minidisk_A/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.HOOKS.MIN rename to source/disk20_minidisk_A/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk4_math/T.REQUIRED.LIB.MIN b/source/disk20_minidisk_A/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk4_math/T.REQUIRED.LIB.MIN rename to source/disk20_minidisk_A/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk4_math/T.REQUIRED.LIB.MIN +++ b/source/disk20_minidisk_A/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk3_arrays/T.REQUIRED.MAC.MIN b/source/disk20_minidisk_A/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk3_arrays/T.REQUIRED.MAC.MIN rename to source/disk20_minidisk_A/T.REQUIRED.MAC.MIN diff --git a/disks/disk4_math/T.REQUIRED.VARS b/source/disk20_minidisk_A/T.REQUIRED.VARS similarity index 100% rename from disks/disk4_math/T.REQUIRED.VARS rename to source/disk20_minidisk_A/T.REQUIRED.VARS diff --git a/source/disk20_minidisk_A/T.SINPUT.SUB.MIN b/source/disk20_minidisk_A/T.SINPUT.SUB.MIN new file mode 100644 index 0000000..763ccb4 --- /dev/null +++ b/source/disk20_minidisk_A/T.SINPUT.SUB.MIN @@ -0,0 +1,27 @@ +SINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + LDX #$00 + JSR GETLN + STX :STRLEN ; STORE STR LENGTH + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :STRLEN ; LENGTH OF STRING + STA RETLEN,Y ; PUT LENGTH +:LOOP + LDA KEYBUFF,Y ; PUT STR INTO NEW LOC + STA RETURN,Y + INY + CPY :STRLEN ; IF Y < STR LENGTH + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:STRLEN DS 1 diff --git a/source/disk20_minidisk_A/T.STDIO.HOOKS b/source/disk20_minidisk_A/T.STDIO.HOOKS new file mode 100644 index 0000000..571056f --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.HOOKS @@ -0,0 +1,53 @@ +* +*``````````````````````````````* +* STDIO.HOOKS.PUT * +*- -* +* HOOKS TO INPUT/OUTPUT * +* ROUTINES IN MONITOR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +* OUTPUT HOOKS +* +COUT1 EQU $FDF0 ; FASTER SCREEN OUTPUT +COUT EQU $FDED ; MONITOR STD OUTPUT +HOME EQU $FC58 ; CLEAR SCREEN, HOME CURSOR +VTAB EQU $FC22 ; MONITOR CURSOR POS ROUTINE +CURSH EQU $24 ; HPOS OF COUT CURSOR +CURSV EQU $25 ; VPOS OF COUT CURSOR +WNDLEFT EQU $20 ; SCROLL WINDOW LEFT +WNDWIDTH EQU $21 ; SCROLL WINDOW WIDTH +WNDTOP EQU $22 ; SCROLL WINDOW TOP +WNDBOT EQU $23 ; SCROLL WINDOW BOTTOM +TEXTP1 EQU $0400 ; START OF TEXT PAGE 1 +TEXTP2 EQU $0800 ; START OF TEXT PAGE 2 +PAGE1 EQU $C054 ; SOFT SWITCH USE PAGE 1 +PAGE2 EQU $C055 ; SOFT SWITCH USE PAGE 2 +S80COL EQU $C01F ; READ ONLY; CHECK IF 80C +KEYBUFF EQU $0200 ; KEYBUFFER START +GSTROBE EQU $C040 ; GAME CONNECTOR STROBE +TXTSET EQU $C051 ; TEXT ON SOFT SWITCH +SETWND EQU $FB4B ; SET NORMAL WINDOW MODE +CURADV EQU $FBF4 ; ADVANCE CURSOR RIGHT +CURBS EQU $FC10 ; CURSOR LEFT +CURUP EQU $FC1A ; CURSOR UP +CR EQU $FC62 ; CARRIAGE RETURN TO SCREEN +LF EQU $FC66 ; LINE FEED ONLY TO SCREEN +CLEOL EQU $FC9C ; CLEAR TEXT TO END OF LINE +* +* INPUT HOOKS +* +KYBD EQU $C000 ; LDA SINGLE KEYPRESS +STROBE EQU $C010 ; CLEAR KYBD BUFFER +GETLN EQU $FD6F ; MONITOR GET LINE OF KB INPUT +GETKEY EQU $FD0C ; MONITOR GET SINGLE KEY INPUT +OPAPP EQU $C061 +CLAPP EQU $C062 +* +* PADDLE HOOKS +* +PREAD EQU $FB1E ; READ STATE OF PADDLE +PB0 EQU $C061 ; PADDLE BUTTON 0 +PB1 EQU $C062 +PB2 EQU $C063 +PB3 EQU $C060 +* diff --git a/source/disk20_minidisk_A/T.STDIO.MAC b/source/disk20_minidisk_A/T.STDIO.MAC new file mode 100644 index 0000000..16a8d9d --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.MAC @@ -0,0 +1,461 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STDIO.MAC * +* * +* AUTHOR: NATHAN RIGGS * +* CONTACT: NATHAN.RIGGS@ * +* OUTLOOK.COM * +* * +* VERSION: 0.2.0 * +* DATE: 12-DEC-2018 * +* ASSEMBLER: MERLIN 8 PRO * +* LICENSE: APACHE 2.0 * +* OS: DOS 3.3 * +* * +*------------------------------* +* * +* THIS IS A MACRO LIBRARY FOR * +* STDIO.LIB. * +* * +*------------------------------* +* * +* LIST OF MACROS * +* * +* PRN : FLEXIBLE PRINT * +* PCR : PRINT CARRIAGE RET * +* INP : SPECIAL INPUT * +* GKEY : GET SINGLE KEY * +* SCPOS : SET CURS POS AT X,Y * +* SETCX : SET CURSOR X * +* SETCY : SET CURSOR Y * +* CURF : CURSOR FORWARD * +* CURB : CURSOR BACKWARD * +* CURU : CURSOR UP * +* CURD : CURSOR DOWN * +* RCPOS : READ CURSOR POSITION * +* PDL : READ PADDLE STATE * +* PBX : READ PDL BTN X * +* TVLIN : TEXT VERTICAL LINE * +* THLIN : TEXT HORIZ LINE * +* TFILL : TEXT FILL AREA * +* TPUT : TEXT CHAR PLOT AT XY * +* * +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* +* +*``````````````````````````````* +* PRN :: PRINT (NO ) * +*- -* +* EITHER PRINTS A STRING OF * +* TEXT PROVIDED, OR PRINTS THE * +* DATA FOUND AT THE SPECIFIED * +* MEMORY LOCATION. * +*- -* +* PARAMETERS * +* * +* IF FIRST LETTER OF VAR1 IS * +* A QUOTATION MARK, THEN PASS * +* CONTROL TO XPRINT. * +* * +* IF FIRST LETTER OF VAR1 IS * +* A DOLLAR SIGN, THEN IT IS A * +* MEMORY LOCATION, SO PASS TO * +* DPRINT. * +*- -* +* SAMPLE USAGE: * +* * +* PRN "HELLO!" * +* PRN $300 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +* +*``````````````````````````````* +* PCR : PRINT CARRAIGE RETURN * +* * +* SIMPLY SENDS A CR AND LINE * +* FEED TO COUT (OR THE * +* EQUIVALENT, ANYHOW). * +*- -* +* SAMPLE USAGE: PCR * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PCR MAC + LDA #$8D + JSR COUT1 + <<< +* +*``````````````````````````````* +* INP: INPUT MACRO * +* * +* INPUTS A STRING FROM KEYBRD * +* AND STORES IT IN [RETURN] * +*- -* +* SAMPLE USAGE: * +* * +* INP * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +INP MAC + JSR SINPUT + <<< +* +*``````````````````````````````* +* GKEY GETKEY * +* * +* WAITS FOR USER TO PRESS A * +* KEY, THEN STORES THAT IN .A * +*- -* +* SAMPLE USAGE: * +* * +* GKEY * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +* +*``````````````````````````````* +* SCPOS : POSITION CURSOR X,Y * +*- -* +* SETS THE CURSOR POSITION. * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +* ]2 = Y POSITION * +*- -* +* SAMPLE USAGE: * +* * +* SCPOS #10;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +* SETCX : SET CURSOR HORIZ * +*- -* +* SETS THE HORIZONTAL POSITION * +* OF THE TEXT CURSOR. * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +*- -* +* SAMPLE USAGE: SETCX #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +* +*``````````````````````````````* +* SETCY: POSITION CURSOR VERT * +*- -* +* SET CURSOR VERTICAL POSITION * +*- -* +* PARAMETERS * +* * +* ]1 = Y POSITION * +*- -* +* SAMPLE USAGE: SETCY #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +* +*``````````````````````````````* +* CURF : TEXT CURSOR FORWRD * +*- -* +* MOVES THE CURSOR FORWARD BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = NUMBER TO MOVE FORWARD * +*- -* +* SAMPLE USAGE: CURF #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +* +*``````````````````````````````* +* CURB :: TEXT CURSOR BACKWD * +*- -* +* MOVES THE CURSOR BACKWARD BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE BACKWARD * +*- -* +* SAMPLE USAGE: CURB #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +* +*``````````````````````````````* +* CURU :: TEXT CURSOR UP * +*- -* +* MOVES THE CURSOR UP BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE UP * +*- -* +* SAMPLE USAGE: CURU #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURU MAC + LDA ]1 + JSR CURSUP + <<< +* +*``````````````````````````````* +* CURD :: TEXT CURSOR DOWN * +*- -* +* MOVES THE CURSOR DOWN BY * +* SPECIFIED AMOUNT. * +*- -* +* PARAMETERS * +* * +* ]1 = AMOUNT TO MOVE DOWN * +*- -* +* SAMPLE USAGE: CURD #10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +CURD MAC + LDA ]1 + JSR CURSDN + <<< +* +*``````````````````````````````* +* RCPOS :: READ SCREEN AT XY * +*- -* +* READ THE CHARACTER AT POS * +* X,Y AND LOADS INTO ACCUM * +*- -* +* PARAMETERS * +* * +* ]1 = X POSITION * +* ]2 = Y POSITION * +*- -* +* SAMPLE USAGE: _RCXY #3;#9 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +* +*``````````````````````````````* +* PDL PADDLE / MOUSE INPUT * +*- -* +* SIMPLY READS STATE OF PADDLE * +* NUMBER [NUM] AND STORES IT * +* IN THE Y REGISTER. * +*- -* +* PARAMETERS * +* * +* ]1 = PADDLE NUMBER TO READ * +*- -* +* SAMPLE USAGE: PDL #0 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +** WARNING: NO ERROR CONTROL +* +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +* +*``````````````````````````````* +* PBX :: PADDLE BUTTON X * +* * +* STORE 1 IN ACCUMULATOR IF * +* PADDLE BUTTON X IS PRESSED, * +* OTHERWISE STORE 0 IN ACCUM. * +*- -* +* PARAMETERS * +* * +* ]1 = PADDLE BUTTON TO READ * +* * +* PB0: $C061 PB1: $C062 * +* PB2: $C063 PB4: $C060 * +*- -* +* SAMPLE USAGE: PBX $C061 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +* +*``````````````````````````````* +* TVLIN :: TEXT VERTICAL LINE * +*- -* +* CREATES A VERTICAL LINE OF * +* TEXT AT THE CURRENT CURSOR * +* COLUMN CONSISTING OF THE * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* ]1 = START OF VERTICAL LINE * +* ]2 = END OF VERTICAL LINE * +* ]3 = X POSITION OF LINE * +* ]4 = FILL CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* TVLIN #0;#10;#3;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +* +*``````````````````````````````* +* THLIN : TEXT HORIZONTAL LINE * +* * +* CREATES A HORIZONTAL LINE OF * +* TEXT FROM X1,Y TO X2,Y WITH * +* THE SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* ]1 = START OF HORIZONTL LINE * +* ]2 = END OF HORIZONTAL LINE * +* ]3 = Y POSITION OF LINE * +* ]4 = FILL CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* THLIN #0;#10;#12;#$18 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +* +*``````````````````````````````* +* TFILL :: TEXT FILL * +*- -* +* FILL X1,Y1 TO X2,Y2 WITH * +* SPECIFIED CHARACTER. * +*- -* +* PARAMETERS * +* * +* PARAM1 = X1 * +* PARAM2 = Y1 * +* PARAM3 = X2 * +* PARAM4 = Y2 * +*- -* +* SAMPLE USAGE: * +* * +* TFILL #0;#10;#0;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +* +*``````````````````````````````* +* TPUT :: TEXT CHARACTER PLOT * +*- -* +* PLOT A TEXT CHARACTER AT X,Y * +* DIRECTLY TO MEMORY. * +*- -* +* PARAMETERS * +* * +* PARAM1 = X * +* PARAM2 = Y * +* PARAM3 = CHARACTER * +*- -* +* SAMPLE USAGE: * +* * +* TPUT #$AA;#10;#10 * +*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* +* +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/source/disk20_minidisk_A/T.STDIO.MAC.MIN b/source/disk20_minidisk_A/T.STDIO.MAC.MIN new file mode 100644 index 0000000..4d8e026 --- /dev/null +++ b/source/disk20_minidisk_A/T.STDIO.MAC.MIN @@ -0,0 +1,120 @@ +PRN MAC + IF ",]1 ; --- IF PARAM=STRING + JSR XPRINT ; SPECIAL PRINT + ASC ]1 ; PUT STRING HERE + HEX 00 ; STRING TERMINATE + ELSE ; ELSE, PARAM IS + ; MEMORY LOCATION + LDA #>]1 ; PUSH HIGH BYTE + PHA ; TO STACK + LDA #<]1 ; PUSH LOW BYTE + PHA + JSR DPRINT + FIN + <<< +PCR MAC + LDA #$8D + JSR COUT1 + <<< +INP MAC + JSR SINPUT + <<< +GKEY MAC + JSR GETKEY + LDY #0 + STY STROBE + <<< +SCPOS MAC + LDX ]1 + LDY ]2 + STX CURSH + STY CURSV + JSR VTAB + <<< +SETCX MAC + LDX ]1 + STX CURSH + JSR VTAB + <<< +SETCY MAC + LDY ]1 + STY CURSV + JSR VTAB + <<< +CURF MAC + LDA ]1 + JSR CURSFOR + <<< +CURB MAC + LDA ]1 + JSR CURSBAK + <<< +CURU MAC + LDA ]1 + JSR CURSUP + <<< +CURD MAC + LDA ]1 + JSR CURSDN + <<< +RCPOS MAC + LDA ]1 ; ROW + LDY ]2 ; COLUMN + JSR $F847 ; GBASCALC ROUTINE + LDA ($26),Y ; LOW OF ADDR OF CHAR + <<< +PDL MAC ; GET PADDLE VALUE + LDX #]1 ; READ PADDLE # ]1 (USUALLY 0) + JSR PREAD ; PADDLE READING STORED IN Y + <<< +PBX MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR GPBX + <<< +TVLIN MAC + LDA ]1 ; Y START + PHA + LDA ]2 ; Y END + PHA + LDA ]3 ; X POSITION + PHA + LDA ]4 ; CHARACTER + PHA + JSR TVLINE + <<< +THLIN MAC + LDA ]1 ; X START + PHA + LDA ]2 ; X END + PHA + LDA ]3 ; Y POS + PHA + LDA ]4 ; FILL CHAR + PHA + JSR THLINE + <<< +TFILL MAC + LDA ]1 ; LEFT BOUNDARY + PHA + LDA ]2 ; TOP BOUNDARY + PHA + LDA ]3 ; RIGHT BOUNDARY + PHA + LDA ]4 ; BOTTOM BOUNDARY + PHA + LDA ]5 ; FILL CHAR + PHA + JSR TFILLA + <<< +TPUT MAC + LDA ]1 + PHA + LDA ]2 + PHA + LDA ]3 + PHA + JSR TXTPUT + <<< diff --git a/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN b/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN new file mode 100644 index 0000000..04c0912 --- /dev/null +++ b/source/disk20_minidisk_A/T.STR2NUM.SUB.MIN @@ -0,0 +1,118 @@ +STR2NUM + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADRESS OF STRING + PLA ; TO CNVERT + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + TAX ; GET LENGITH; TO REGX + LDA #1 + STA :NINDEX ; INDEX = 1 + LDA #0 + STA :NACCUM ; ACCUM = 0 + STA :NACCUM+1 + STA :SNGFLAG ; SIGN IS POSITIVE + TXA + BNE :INIT1 ; EXIT WITH ACCUM = 0 + ; IF BUFFER IS EMPTY + JMP :EREXIT ; ERROR EXIT IF NOTHING + ; IN BUFFER +:INIT1 + LDY :NINDEX + LDA (ADDR1),Y + CMP #173 + BNE :PLUS ; BR IF NOT - + LDA #$0FF + STA :SNGFLAG ; ELSE SIGN IS NEGATIVE + INC :NINDEX + DEX ; DECREMENT COUNT + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; - IN BUFFER + JMP :CNVERT +:PLUS + CMP #'+' + BNE :CHKDIG ; START CONVERSION IF 1ST + INC :NINDEX + DEX ; DEC COUNT; IGNORE + SIGN + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; + IN THE BUFFER +:CNVERT + LDY :NINDEX + LDA (ADDR1),Y + ; GET NEXT CHAR +:CHKDIG + CMP #$B0 ; "0" + BMI :EREXIT ; ERROR IF NOT A NUMERAL + CMP #$BA ; '9'+1; TECHNICALLY : + BPL :EREXIT ; ERR IF > 9 (NOT NUMERAL) + PHA ; PUSH DIGIT TO STACK + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 2 + LDA :NACCUM + LDY :NACCUM+1 ; SAVE ACCUM * 2 + ASL :NACCUM + ROL :NACCUM+1 + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 8 + CLC + ADC :NACCUM ; SUM WITH * 2 + STA :NACCUM + TYA + ADC :NACCUM+1 + STA :NACCUM+1 ; ACCUM=ACCUM * 10 + PLA ; GET THE DIGIT NACK + SEC + SBC #$B0 + CLC ; CONVERT STR TO BIN + ADC :NACCUM + STA :NACCUM + BCC :D2B1 ; BRANCH IF NO CARRY TO HBYTE + INC :NACCUM+1 ; ELSE INC HIGH BYTE +:D2B1 + INC :NINDEX ;INC TO NEXT CHARACTER + DEX + BNE :CNVERT ; CONTINUE CONVERSION + LDA :SNGFLAG + BPL :OKEXIT ; BR IF VAL IS POSITIVE + LDA #0 ; ELSE REPLACE WITH -RESULT + SEC + SBC :NACCUM + STA :NACCUM + LDA #0 + SBC :NACCUM+1 + STA :NACCUM+1 +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + _ERR :E_SID;:E_MSG;:E_DUMP;:NACCUM;#4 +:ERREND +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX :NACCUM+1 + LDY :NACCUM + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA :NINDEX + RTS +:NACCUM DS 2 +:SNGFLAG DS 1 +:NINDEX DS 1 +:E_SID ASC "STR2NUM (S2N MACRO)",00 +:E_MSG ASC "ERR! NO DATA, OR NOT A NUMERAL VALUE",00 +:E_DUMP ASC "DUMPING :NACCUM(2) :SNGFLAG(1) :NINDEX(1)",00 diff --git a/source/disk20_minidisk_A/T.STRCAT.SUB.MIN b/source/disk20_minidisk_A/T.STRCAT.SUB.MIN new file mode 100644 index 0000000..c3dc7d4 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRCAT.SUB.MIN @@ -0,0 +1,94 @@ +STRCAT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN ; MAXIMUM CONCAT LENGTH + PLA + STA ADDR2 ; STRING 1 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR2+1 + PLA + STA ADDR1 ; STRING 2 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET CUR LGTH OF S1, STORE + STA :S1LEN + STA :S1IND + INC :S1IND ; START CONCAT AT END OF S1 + LDA (ADDR2),Y ; GET LENGTH OF S2, STORE + STA :S2LEN + LDA #1 + STA :S2IND ; START CONCAT AT BEGIN OF S2 + LDA :S2LEN ; GET S2 LENGTH + CLC + ADC :S1LEN ; ADD TO LENGTH OF S1 + STA :S3LEN ; STORE CONCAT LENGTH + BCS :TOOLONG ; BR IF LENGTH > 255 + CMP :MLEN ; CHECK AGAINST MAX LENGTH + BEQ :LENOK ; BR IF LENGTH < MAX + BCC :LENOK +:TOOLONG + LDA #$0FF + STA :SOVF ; INDICATE OVERFLOW + LDA :MLEN + SEC + SBC :S1LEN + BCC :EXIT + STA :SCNT ; ORIG STR WAS TOO LONG + LDA :MLEN + STA :S1LEN ; SET STR1 LENGTH TO MAX + JMP :DOCAT +:LENOK + STA :S1LEN + LDA #0 ; SAVE SUM OF 2 LENGTHS + STA :SOVF ; INDICATE NO OVERFLOW + LDA :S2LEN + STA :SCNT ; COUNT = LENGTH OF STRING 2 +:DOCAT + LDA :SCNT + BEQ :EXIT ; EXIT IF NO BYTES LEFT +:CATLP + LDY :S2IND + LDA (ADDR2),Y ; GET NEXT BYTE FROM S2 + LDY :S1IND + STA (ADDR1),Y ; MOVE IT TO END OF STR 1 + INC :S1IND ;INC STRING 1 INDEX + INC :S2IND ; INC STRING 2 INDEX + DEC :SCNT ; DECREMENT COUNTER + BNE :CATLP ; CONT UNTIL __SCNT = 0 +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + LDA :SOVF + ROR A + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; LENGTH OF STRING + STA RETLEN + LDA #1 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + CPY RETLEN + INY + BNE :RLP + LDA RETLEN + LDY #0 + STA (ADDR1),Y + LDX :S3LEN ; RETURN FINAL LENGTH + RTS +:S3LEN DS 1 +:S1LEN DS 1 +:S1IND DS 1 +:S2LEN DS 1 +:S2IND DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SOVF DS 1 diff --git a/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN b/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN new file mode 100644 index 0000000..48bb0ae --- /dev/null +++ b/source/disk20_minidisk_A/T.STRCOMP.SUB.MIN @@ -0,0 +1,47 @@ +STRCMP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING 1 + CMP (ADDR2),Y + BCC :BEGCMP ; IF STRING 2 IS SHORTER THEN + LDA (ADDR2),Y ; USE ITS LENGTH INSTEAD +:BEGCMP + TAX ; X IS LENGTH OF SHORTER STRING + BEQ :TSTLEN ; BR IF LENGTH IS 0 + LDY #1 ; POINT AT FIRST CHAR OF STRINGS +:CMPLP + LDA (ADDR1),Y + CMP (ADDR2),Y + BNE :EXIT ; BR IF CHARS NOT EQUAL + ; Z,C WILL BE PROPERLY SET + ; OR CLEARED + ; ELSE + INY ; NEXT CHAR + DEX ; DECREMENT COUNTER + BNE :CMPLP ; CONTINUE UNTIL ALL BYTES PAIRED +:TSTLEN + LDY #0 ; COMPARE LENGTHS + LDA (ADDR1),Y + CMP (ADDR2),Y ; SET OR CLEAR THE FLAGS +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; GET STR1 LENGTH + TAX ; RETURN IN X + LDA (ADDR2),Y ; STR2 LENGTH + TAY ; RETURN IN Y + RTS diff --git a/source/disk20_minidisk_A/T.STRINGS.HOOKS b/source/disk20_minidisk_A/T.STRINGS.HOOKS new file mode 100644 index 0000000..21ac4d5 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRINGS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STRINGS.HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +SCOUT1 EQU $FDF0 +* diff --git a/source/disk20_minidisk_A/T.STRINGS.MAC.MIN b/source/disk20_minidisk_A/T.STRINGS.MAC.MIN new file mode 100644 index 0000000..f910b05 --- /dev/null +++ b/source/disk20_minidisk_A/T.STRINGS.MAC.MIN @@ -0,0 +1,65 @@ +SCMP MAC + _ISSTR ]1 + _ISSTR ]2 + JSR STRCMP + <<< +SCAT MAC + _ISSTR ]1 + _ISSTR ]2 + LDA ]3 ; MAX SIZE; BYTE + PHA + JSR STRCAT + <<< +SPRN MAC + LDA #>]1 ; ADDRESS OF STRING + PHA + LDA #<]1 + PHA + JSR PRNSTR + <<< +TOSTR MAC + _ISLIT ]1 + JSR NUM2STR + <<< +TONUM MAC + _ISSTR ]1 + JSR STR2NUM + <<< +SPOS MAC + _ISSTR ]1 + _ISSTR ]2 + JSR SUBPOS + <<< +SCPY MAC + _ISSTR ]1 + LDA ]2 ; STARTING INDEX + PHA + LDA ]3 ; SUBSTRING LENGTH + PHA + LDA ]4 ; MAX LENGTH OF SUBSTR + PHA + JSR SUBCOPY + <<< +SDEL MAC + LDA #>]1 ; STRING ADDRESS + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX BYTE + PHA + LDA ]3 ; LENGTH + PHA + JSR SUBDEL + <<< +SINS MAC + LDA #>]1 ; PARENT STRING + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX + PHA + LDA ]3 ; MAXIMUM LENGTH + PHA + _ISSTR ]4 + JSR SUBINS + <<< diff --git a/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN b/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN new file mode 100644 index 0000000..8afe83d --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBCOPY.SUB.MIN @@ -0,0 +1,99 @@ +SUBCOPY + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN + PLA + STA :SCNT + STA RETLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #RETURN + STA ADDR2+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA #0 + STA :S2LEN ; DESTINATION LENGTH = 0 + STA :SCERR ; ASSUME NO ERRORS + LDA :SCNT + BEQ :OKEXIT ; BR IF 0 BYTES TO COPY, + LDA :MLEN + BEQ :EREXIT ; ERROR EXIT IF SUBSTR HAS + LDA :SINDEX + BEQ :EREXIT ; ERROR EXIT IF START IDX = 0 + LDY #0 + LDA (ADDR1),Y ; + STA :S1LEN ; GET LENGTH OF SOURCE STRING + CMP :SINDEX ; COMPARE TO STARTING INDEX + BCC :EREXIT ; ERROR EXIT IF INDEX TOO BIG + LDA :SINDEX + CLC + ADC :SCNT + BCS :RECALC + TAX ; BR IF INDEX + COUNT > 255 + DEX + CPX :S1LEN + BCC :CNT10K ; BR IF IND + CNT - 1 < S1LEN + BEQ :CNT10K ; OR EQUAL +:RECALC + LDA :S1LEN ; RECALCULATE COUNT + SEC + SBC :SINDEX + STA :SCNT + INC :SCNT ; CNT = S1LEN - IND + 1 + LDA #$0FF + STA :SCERR ; INDICATE TRUNCATION +:CNT10K + LDA :SCNT + CMP :MLEN ; IF CNT > M SUBSTR LEN ? + BCC :CNT20K ; BR IF CNT < MAXLEN + BEQ :CNT20K ; BR IF CNT = MAXLEN + LDA :MLEN + STA :SCNT ; ELSE CNT = MAXLEN + LDA #$0FF + STA :SCERR ; INDICATE DEST STR OVERFLOW +:CNT20K + LDX :SCNT ; REG X WILL BE COUNTER + BEQ :EREXIT ; ERR IF 0 + LDA #1 ; START WITH 1ST CHAR IN DEST + STA :S2LEN ; RUNNING DEST INDEX + ; __SINDEX IS SRC INDEX +:MVLP + LDY :SINDEX + LDA (ADDR1),Y ; GET NEXT SRC CHAR + LDY :S2LEN + STA (ADDR2),Y ; MOVE NEXT CHAR TO DEST + INC :SINDEX ; INC SRC INDEX + INC :S2LEN ; INC DEST INDEX + DEX ; DECREMENT COUNTER + BNE :MVLP ; CONT UNTIL CNT = 0 + DEC :S2LEN ; SUBSTR LEN=FINAL DEST IND-1 + LDA :SCERR ; CHECK FOR ANY ERRORS + BNE :EREXIT ; BR IF STR TRUNCATED OR OVERFLOW +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC +:EXIT + LDA :S2LEN + LDY #0 + STA (ADDR2),Y + STA RETLEN + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN b/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN new file mode 100644 index 0000000..977f395 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBDEL.SUB.MIN @@ -0,0 +1,81 @@ +SUBDEL + PLA + TAY + PLA + TAX + PLA + STA :SCNT + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDY #0 + STY :SCERR + LDA (ADDR1),Y + STA :S1LEN ; GET STRING LENGTH + LDA :SCNT + BEQ :OKEXIT + LDA :SINDEX + BEQ :ERREXIT ; ERR EXIT IF START = 0 + LDA :S1LEN + CMP :SINDEX + BCC :ERREXIT + LDA :SINDEX + CLC + ADC :SCNT + BCS :TRUNC ;TRUNCATE IF INDEX + STA :SIDX ; SAVE INDEX + COUNT AS + TAX ; X = INDEX + COUNT + DEX + CPX :S1LEN + BCC :CNTOK ; BR IF IND + CNT - 1 + BEQ :TRUNC ; TRUNC BUT NO ERROR-- + LDA #$0FF + STA :SCERR ; INDICATE ERROR - NOT +:TRUNC + LDX :SINDEX ; STRING LENGTH = + DEX + STX :S1LEN + LDA :SCERR + BEQ :OKEXIT + BNE :ERREXIT +:CNTOK + LDA :S1LEN ; GET STR LENGTH + SEC + SBC :SIDX ; SUBTRACT START INDEX + TAX + INX + BEQ :OKEXIT ; ADD 1 TO INCLUDE LAST +:MVLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y ;MOVE IT DOWN + INC :SINDEX + INC :SIDX ; INC DEST, SRC INDEXES + DEX + BNE :MVLP ; CONT UNTIL CNT = 0 + LDX :SINDEX + DEX ; START LENGTH = FINAL + STX :S1LEN +:OKEXIT + CLC + BCC :EXIT +:ERREXIT + SEC +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y ; SET LENGTH OF STRING + RTS +:S1LEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBINS.SUB.MIN b/source/disk20_minidisk_A/T.SUBINS.SUB.MIN new file mode 100644 index 0000000..84b4dd2 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBINS.SUB.MIN @@ -0,0 +1,120 @@ +SUBINS + PLA + TAY + PLA + TAX + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA :MLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDA #0 + STA :SCERR ; ASSUME NO ERR WILL BE FOUND + LDY #0 + LDA (ADDR1),Y + STA :S1LEN ; GET LENGTH OF STRING + LDA (ADDR2),Y + STA :S2LEN ; GET LENGTH OF SUB + BNE :IDX0 + JMP :OKEXIT ; EXIT OF NO INSERT/ERR +:IDX0 + LDA :SINDEX + BNE :CHKLEN ; BR OF INDEX NOT 0 + JMP :EREXIT ; ELSE ERROR EXIT +:CHKLEN + LDA :S2LEN ; GET SUBSTR LENGTH + CLC + ADC :S1LEN + BCS :TRUNC ;TRUN IF S1+S2 LENGTH > 255 + CMP :MLEN ; + BCC :IDXLEN ; BR IF S1+S2 LEN < MAX LENGTH + BEQ :IDXLEN ; BR IF EQUAL +:TRUNC + LDA :MLEN ; SUBSTR LEN = MLEN - STR LEN + SEC + SBC :S1LEN + BCC :EREXIT + BEQ :EREXIT ; ERR IF MLEN < STR LEN OR 0 + STA :S2LEN + LDA #$0FF + STA :SCERR ; INDICATE SUBSTR WAS TRUNCATED +:IDXLEN + LDA :S1LEN + CMP :SINDEX ; + BCS :LENOK ; BR IF INDEX WITHIN STR + LDX :S1LEN ; ELSE CONCAT SUB AT END OF STR + INX + STX :SINDEX ; START RIGHT AFTER END OF STR + LDA #$0FF + STA :SCERR ; INDICATE ERR IN INSERT + LDA :S1LEN + CLC + ADC :S2LEN + STA :S1LEN ; ADD LENGTHS TOGETHER + JMP :MVESUB ; PERFORM MOVE, NOTHING ELSE TODO +:LENOK + LDA :S1LEN + SEC + SBC :SINDEX + TAX + INX ; X= NUM OF CHARS TO MOV + LDA :S1LEN + STA :SIDX ; SRC ENDS AT ORIG STR END + CLC + ADC :S2LEN + STA :SBIDX ; DEST ENDS FURTHER BY SUB LEN + STA :S1LEN ; SET NEW LENGTH TO THIS ALSO +:OPNLP + LDY :SIDX + LDA (ADDR1),Y + LDY :SBIDX + STA (ADDR1),Y ; MOVE IT UP IN MEM + DEC :SIDX + DEC :SBIDX ; DE DEST IDX, COUNTER + DEX + BNE :OPNLP ; CONT UNTIL COUNTER = 0 +:MVESUB + LDA #1 + STA :SIDX + ; START AT INDEX IN THE STRING + LDX :S2LEN ; X = NUM OF CHARS TO MOVE +:MVELP + LDY :SIDX + LDA (ADDR2),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y + INC :SIDX ; INC SUBSTR INDEX + INC :SINDEX ; INC STR INDEX + DEX ; DEC COUNTER + BNE :MVELP ; CONT UNTIL COUNTER = 0 + LDA :SCERR ; GET ERROR FLAG + BNE :EREXIT ; BR IF SUBSTR WAS TRUNCED +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC ; ERROR EXIT +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:SUBLEN DS 1 +:MLEN DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SBIDX DS 1 +:SCERR DS 1 diff --git a/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN b/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN new file mode 100644 index 0000000..4e15875 --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBPOS.SUB.MIN @@ -0,0 +1,78 @@ +SUBPOS + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA +:POS + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING + BEQ :NOTFND ; EXIT IF LENGTH = 0 + STA :SLEN + LDA (ADDR2),Y ; GET SUBSTR LENGTH + BEQ :NOTFND ; EXIT IF SUB LENGTH = 0 + STA :SUBLEN + LDA :SUBLEN + CMP :SLEN + BEQ :LENOK + BCS :NOTFND ; CANNOT FIND SUBSTR IF +:LENOK + LDA #1 + STA :SINDEX ; START LOOKING AT FIRST + ; CHARACTER OF STRING + LDA :SLEN ; CONT UNTIL REMAINING STR + ; TOO SHORT + SEC ; COUNT=STR LEN - SUB LEN+1 + SBC :SUBLEN + STA :SCOUNT + INC :SCOUNT +:SLP1 + LDA :SINDEX + STA :SIDX ; START STR AT INDEX + LDA #1 + STA :SUBIDX ; START SUB IND AT 1 +:CMPLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR FROM STR + LDY :SUBIDX + CMP (ADDR2),Y ; COMPARE TO NEXT SUB CHAR + BNE :SLP2 ; BR IF SUB NOT HERE + LDY :SUBIDX + CPY :SUBLEN ; TEST IF WE ARE DONE + BEQ :FOUND ; BR IF ALL CHARS WERE EQUAL + INY ; ELSE INC TO NEXT CHAR + STY :SUBIDX + INC :SIDX + JMP :CMPLP ; CONTINUE +:SLP2 + INC :SINDEX ; INCREMENT INDEX + DEC :SCOUNT ; DEC COUNT + BNE :SLP1 ; BR IF NOT DONE + BEQ :NOTFND ; ELSE EXIT TO NOT FOUND +:FOUND + LDA :SINDEX ; FOUND, A = STARTING IDX + JMP :EXIT +:NOTFND + LDA #0 ; SUB NOT FOUND, A=0 +:EXIT + STA RETURN + LDY #1 + STY RETLEN + RTS +:SLEN DS 1 +:SUBLEN DS 1 +:SINDEX DS 1 +:SUBIDX DS 1 +:SCOUNT DS 1 +:SIDX DS 1 diff --git a/source/disk20_minidisk_A/T.SUBT16.SUB.MIN b/source/disk20_minidisk_A/T.SUBT16.SUB.MIN new file mode 100644 index 0000000..abd342c --- /dev/null +++ b/source/disk20_minidisk_A/T.SUBT16.SUB.MIN @@ -0,0 +1,31 @@ +SUBT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT + PLA + STA :SUBT+1 ; SUBTRAHEND + PLA + STA :MINU + PLA + STA :MINU+1 ; MINUEND + LDA :MINU + SEC + SBC :SUBT + TAY ; LOW BYTE + STY RETURN + LDA :MINU+1 + SBC :SUBT+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/source/disk20_minidisk_A/T.TFILLA.SUB.MIN b/source/disk20_minidisk_A/T.TFILLA.SUB.MIN new file mode 100644 index 0000000..321da46 --- /dev/null +++ b/source/disk20_minidisk_A/T.TFILLA.SUB.MIN @@ -0,0 +1,90 @@ +TFILLA + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y2 + PLA + STA :X2 + PLA + STA :YC + STA :Y1 + PLA + STA :XC + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 ; X1 => X2? + BCS :X1HI + LDA :Y1 + CMP :Y2 + BCS :Y1HI ; Y1 => Y2? + LDA :X1 + CMP #40 + BCS :XOVF + LDA :X2 + CMP #40 + BCS :XOVF + LDA :Y1 + CMP #24 + BCS :YOVF + LDA :Y2 + CMP #24 + BCS :YOVF + JMP :ERREND +:X1HI + _ERR :E_SID;:E_X1H;:E_DMP1;:X1;#7 + JMP :ERREND +:Y1HI + _ERR :E_SID;:E_Y1H;:E_DMP1;:X1;#7 + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#7 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#7 +:ERREND +:LP1 + LDA :YC + LDY :XC + JSR $F847 ; GBASCALC + LDA :F + STA ($26),Y + LDA :YC + INY + STY :XC + CPY :X2 + BNE :LP1 + LDA :X1 + STA :XC + INC :YC + LDA :YC + CMP :Y2 + BNE :LP1 +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y1 DS 1 +:Y2 DS 1 +:XC DS 1 +:YC DS 1 +:F DS 1 +:E_SID ASC "TFILLA (TFILL MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X2(1) Y1(1) Y2(1)" + ASC "XC(1) YC(1) F(1)",00 +:E_X1H ASC "X1 MUST BE LOWER THAN X2.",00 +:E_Y1H ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X <> MIN/MAX COLUMNS.",00 +:E_YOF ASC "Y <> MIN/MAX ROWS",00 diff --git a/source/disk20_minidisk_A/T.THLINE.SUB.MIN b/source/disk20_minidisk_A/T.THLINE.SUB.MIN new file mode 100644 index 0000000..196d76b --- /dev/null +++ b/source/disk20_minidisk_A/T.THLINE.SUB.MIN @@ -0,0 +1,66 @@ +THLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F + PLA + STA :Y + PLA + STA :X2 + PLA + STA :X1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X1 + CMP :X2 + BCS :ERRTOOHI ; X1 => X2 + LDA :X1 + CMP #39 + BCS :ERRXOVF ; X VALUE OVERFLOW + LDA :X2 + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_XHI;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X1;#4 + JMP :ERREND +:ERREND + LDA :Y ; LOAD ROW + LDY :X1 ; LOAD X START POS +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PUSH TO SCREEN MEMORY + LDA :Y + INY ; INCREASE X POS + CPY :X2 ; IF LESS THAN X END POS + BNE :LOOP ; REPEAT UNTIL DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X1 DS 1 +:X2 DS 1 +:Y DS 1 +:F DS 1 ; FILL CHAR +:E_SID ASC "THLINE (THLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X1(1) X1(1) Y(1) F(1)",00 +:E_XHI ASC "X1 MUST BE LOWER THAN X2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/source/disk20_minidisk_A/T.TVLINE.SUB.MIN b/source/disk20_minidisk_A/T.TVLINE.SUB.MIN new file mode 100644 index 0000000..89613b0 --- /dev/null +++ b/source/disk20_minidisk_A/T.TVLINE.SUB.MIN @@ -0,0 +1,66 @@ +TVLINE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL CHAR + PLA + STA :X ; X POS + PLA + STA :Y2 ; END + PLA + STA :Y1 ; START + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :Y1 + CMP :Y2 + BCS :ERRTOOHI ; Y1 => Y2 + LDA :Y2 + CMP #24 + BCS :ERRYOVF ; Y VALUE OVERFLOW + LDA :X + CMP #40 ; MAX COLS + 1 + BCS :ERRXOVF + LDA :Y1 + CMP #24 ; MAX ROWS + 1 + BCS :ERRYOVF + JMP :ERREND +:ERRTOOHI + _ERR :E_SID;:E_YHI;:E_DMP1;:X;#4 + JMP :ERREND +:ERRXOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERRYOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:X;#4 + JMP :ERREND +:ERREND + LDA :Y1 + LDY :X +:LOOP + JSR $F847 ; GBASCALC ROUTINE + LDA :F + STA ($26),Y ; PLOT TO SCREEN MEMORY + INC :Y1 + LDA :Y1 + CMP :Y2 ; IF Y1 < Y2 + BNE :LOOP ; LOOP; ELSE, CONTINUE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:X DS 1 +:Y1 DS 1 +:Y2 DS 1 +:F DS 1 +:E_SID ASC "TVLINE (TVLIN MACRO)",00 +:E_DMP1 ASC "DUMPING X(1) Y1(1) Y2(1) F(1)",00 +:E_YHI ASC "Y1 MUST BE LOWER THAN Y2.",00 +:E_XOF ASC "X > # OF AVAILABLE COLUMNS.",00 +:E_YOF ASC "Y > # OF AVAILABLE ROWS",00 diff --git a/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN b/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN new file mode 100644 index 0000000..828c8a6 --- /dev/null +++ b/source/disk20_minidisk_A/T.TXTPUT.SUB.MIN @@ -0,0 +1,46 @@ +TXTPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :F ; FILL + PLA + STA :Y + PLA + STA :X + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :X + CMP #40 ; MAX COL + 1 + BCS :XOVF + LDA :Y + CMP #24 + BCS :YOVF + JMP :ERREND +:XOVF + _ERR :E_SID;:E_XOF;:E_DMP1;:F;#3 + JMP :ERREND +:YOVF + _ERR :E_SID;:E_YOF;:E_DMP1;:F;#3 +:ERREND + LDA :Y + LDY :X + JSR $F847 + LDA :F + STA ($26),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:F DS 1 +:Y DS 1 +:X DS 1 +:E_SID ASC "TXTPUT (TPUT MACRO)",00 +:E_DMP1 ASC "DUMPING F(1) Y(1) X(1):",00 +:E_XOF ASC "X OVERFLOW. X <> MIN/MAX",00 +:E_YOF ASC "Y OVERFLOW. Y <> MIN/MAX",00 diff --git a/source/disk20_minidisk_A/T.XPRINT.SUB.MIN b/source/disk20_minidisk_A/T.XPRINT.SUB.MIN new file mode 100644 index 0000000..da82aee --- /dev/null +++ b/source/disk20_minidisk_A/T.XPRINT.SUB.MIN @@ -0,0 +1,25 @@ +XPRINT + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #$01 ; POINT TO NEXT + ; INSTRUCTION +:LOOP + LDA (ADDR1),Y + BEQ :DONE + JSR COUT1 + INY + BNE :LOOP +:DONE ; RESTORE STACK + CLC ; EXEC POINTER + TYA ; TO RESUME + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #$00 + PHA + LDA ADDR1 + PHA + RTS +:EXIT diff --git a/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN b/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN new file mode 100644 index 0000000..d93ee7a --- /dev/null +++ b/source/disk20_minidisk_A/T.ZMLOAD.SUB.MIN @@ -0,0 +1,70 @@ +ZMLOAD + PLA + STA :RETADR + PLA + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #2 ; START 2 AHEAD + LDA (ADDR1),Y ; AND PUT ADDR1 + STA $08 ; AREA LAST + INY + LDA (ADDR1),Y + STA $09 + INY + LDA (ADDR1),Y + STA $19 + INY + LDA (ADDR1),Y + STA $1E + INY + LDA (ADDR1),Y + STA $E3 + INY + LDA (ADDR1),Y + STA $EB + INY + LDA (ADDR1),Y + STA $EC + INY + LDA (ADDR1),Y + STA $ED + INY + LDA (ADDR1),Y + STA $EE + INY + LDA (ADDR1),Y + STA $EF + INY + LDA (ADDR1),Y + STA $FA + INY + LDA (ADDR1),Y + STA $FB + INY + LDA (ADDR1),Y + STA $FC + INY + LDA (ADDR1),Y + STA $FD + INY + LDA (ADDR1),Y + STA $FE + INY + LDA (ADDR1),Y + STA $FF + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN b/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN new file mode 100644 index 0000000..cd3cc27 --- /dev/null +++ b/source/disk20_minidisk_A/T.ZMSAVE.SUB.MIN @@ -0,0 +1,71 @@ +ZMSAVE + LDX ADDR1 + LDY ADDR1+1 + PLA + STA :RETADR ; LOCAL BECAUSE RETADDR + PLA ; IS STORED ON ZERO PAGE + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TYA ; STORE ADDR1 VALS + LDY #1 ; FIRST + STA (ADDR1),Y + LDY #0 + TXA + STA (ADDR1),Y + LDY #2 + LDA $08 + STA (ADDR1),Y + INY + LDA $09 + STA (ADDR1),Y + INY + LDA $19 + STA (ADDR1),Y + INY + LDA $1E + STA (ADDR1),Y + INY + LDA $E3 + STA (ADDR1),Y + INY + LDA $EB + STA (ADDR1),Y + INY + LDA $EC + STA (ADDR1),Y + INY + LDA $ED + STA (ADDR1),Y + INY + LDA $EE + STA (ADDR1),Y + INY + LDA $EF + STA (ADDR1),Y + INY + LDA $FA + STA (ADDR1),Y + INY + LDA $FB + STA (ADDR1),Y + INY + LDA $FC + STA (ADDR1),Y + INY + LDA $FD + STA (ADDR1),Y + INY + LDA $FE + STA (ADDR1),Y + INY + LDA $FF + STA (ADDR1),Y + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk2_common/COMMON.DEMO b/source/disk2_common/COMMON.DEMO similarity index 100% rename from disks/disk2_common/COMMON.DEMO rename to source/disk2_common/COMMON.DEMO diff --git a/disks/disk2_common/COMMON.DEMO.S b/source/disk2_common/COMMON.DEMO.S similarity index 100% rename from disks/disk2_common/COMMON.DEMO.S rename to source/disk2_common/COMMON.DEMO.S diff --git a/disks/disk2_common/MINIFY b/source/disk2_common/MINIFY similarity index 100% rename from disks/disk2_common/MINIFY rename to source/disk2_common/MINIFY diff --git a/disks/disk2_common/T.COMMON.DEMO b/source/disk2_common/T.COMMON.DEMO similarity index 100% rename from disks/disk2_common/T.COMMON.DEMO rename to source/disk2_common/T.COMMON.DEMO diff --git a/source/disk2_common/T.COMMON.DEMO.MIN b/source/disk2_common/T.COMMON.DEMO.MIN new file mode 100644 index 0000000..01169fa --- /dev/null +++ b/source/disk2_common/T.COMMON.DEMO.MIN @@ -0,0 +1,82 @@ + CYC AVE + EXP ONLY + DSK COMMON.DEMO + OBJ $BFE0 + ORG $6000 + USE REQUIRED.MAC.MIN + PUT REQUIRED.HOOKS.MIN + USE COMMON.MAC.MIN + PUT COMMON.HOOKS.MIN + MFILL #$300;#10;#0 + _PRNT "MFILL FILLS A PORTION OF MEMORY WITH",8D + _PRNT "A SPECIFIED VALUE. ",8D8D + _DUMP $300;#10 + _WAIT + _PRNT " ",8D8D + _PRNT "MMOVE COPIES A SPAN OF MEMORY",8D + _PRNT "FROM A SOURCE TO A DESTINATION ADDRESS.",8D8D + _PRNT "SO MOVING $300 TO $320 RESULTS IN:",8D8D + MMOVE $300;$320;#10 + _DUMP $320;#10 + _WAIT + _PRNT " ",8D8D + _PRNT "DELAY DELAYS A SPECIFIED NUMBER OF",8D + _PRNT "MILLISECONDS. 250 MILLISECONDS = 1/4 SECOND.",8D8D + DELAY #250 ; TIME IN MILLISECONDS + BEEP 1 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 2 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 3 + _PRNT "1/4 SECOND",8D + DELAY #250 + BEEP 4 + _PRNT "1/4 SECOND",8D + _PRNT " ",8D8D + _WAIT + LDA #01 + STA $06 + LDA #02 + STA $07 + LDA #03 + STA $08 + LDA #04 + STA $09 + ZSAVE $300 + _PRNT " ",8D8D + _PRNT "ZSAVE SAVES THE STATE OF THE ZERO PAGE ",8D + _PRNT "ADDRESSES THAT ARE NOT USED BY DOS,",8D + _PRNT "APPLESOFT,PRODOS OR INTEGER BASIC.",8D8D + _PRNT "SO THE BACKED UP ZERO PAGE AT $300 IS:",8D8D + _DUMP $300;#18 + _PRNT " ",8D8D + _PRNT "18 BYTES ARE USED.",8D8D + _WAIT + ZLOAD $300 + _PRNT " ",8D8D + _PRNT "YOU CAN THEN RESTORE THE FREE ZERO PAGE",8D + _PRNT "LOCATIONS WITH ZLOAD. THERE ISN'T ANY",8D + _PRNT "MEANINGFUL OUTPUT TO PUT HERE TO ",8D + _PRNT "ILLUSTRATE THAT, SO USE YOUR IMAGINATION!",8D8D + _WAIT + _PRNT "THE MSWAP MACRO SWAPS A LENGTH",8D + _PRNT "OF MEMORY FROM ONE LOCATION",8D + _PRNT "TO ANOTHER. SO, BEFORE SWAP:",8D8D + _DUMP $300;#10 + _DUMP $320;#10 + MSWAP $300;$320;#10 + _PRNT " ",8D + _PRNT "AND AFTER SWAP: ",8D8D + _DUMP $300;#10 + _DUMP $320;#10 + _WAIT + LDA #$11 + LDX #$12 + LDY #$13 + CLC + _RDUMP + JMP REENTRY + PUT COMMON.LIB.MIN + PUT REQUIRED.LIB.MIN diff --git a/source/disk2_common/T.COMMON.HOOKS b/source/disk2_common/T.COMMON.HOOKS new file mode 100644 index 0000000..f5793e1 --- /dev/null +++ b/source/disk2_common/T.COMMON.HOOKS @@ -0,0 +1,14 @@ +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* COMMON.LIB HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +PROMPT EQU $33 +COLDENT EQU $03D3 ; COLD ENTRY TO DOS +SRESET EQU $03F2 ; SOFT RESET +PRNTAX EQU $F941 ; PRINT HEX VALS OF A,X REGISTERS +BELL EQU $FBE4 ; RING MY BELL +IOSAVE EQU $FF4A ; SAVE CURRENT STATE OF REGISTERS +IOREST EQU $FF3F ; RESTORE OLD STATE OF REGISTERS +* diff --git a/disks/disk2_common/T.COMMON.HOOKS.MIN b/source/disk2_common/T.COMMON.HOOKS.MIN similarity index 100% rename from disks/disk2_common/T.COMMON.HOOKS.MIN rename to source/disk2_common/T.COMMON.HOOKS.MIN diff --git a/disks/disk2_common/T.COMMON.MAC b/source/disk2_common/T.COMMON.MAC similarity index 100% rename from disks/disk2_common/T.COMMON.MAC rename to source/disk2_common/T.COMMON.MAC diff --git a/source/disk2_common/T.COMMON.MAC.MIN b/source/disk2_common/T.COMMON.MAC.MIN new file mode 100644 index 0000000..95d3e9f --- /dev/null +++ b/source/disk2_common/T.COMMON.MAC.MIN @@ -0,0 +1,55 @@ +MFILL MAC + _ISLIT ]1 + _ISLIT ]2 + LDA ]3 ; FILL VALUE + PHA + JSR MEMFILL + <<< +BEEP MAC + LUP ]1 + JSR BELL + --^ + <<< +MMOVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + _ISLIT ]3 + JSR MEMMOVE + <<< +DELAY MAC + LDY ]1 + JSR DELAYMS + <<< +ZSAVE MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMSAVE + <<< +ZLOAD MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR ZMLOAD + <<< +MSWAP MAC + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]3 + PHA + JSR MEMSWAP + <<< diff --git a/disks/disk2_common/T.DELAYMS.SUB b/source/disk2_common/T.DELAYMS.SUB similarity index 100% rename from disks/disk2_common/T.DELAYMS.SUB rename to source/disk2_common/T.DELAYMS.SUB diff --git a/source/disk2_common/T.DELAYMS.SUB.MIN b/source/disk2_common/T.DELAYMS.SUB.MIN new file mode 100644 index 0000000..8942752 --- /dev/null +++ b/source/disk2_common/T.DELAYMS.SUB.MIN @@ -0,0 +1,29 @@ +DELAYMS +MSCNT EQU $0CA ; 202 TIMES THROUGH DELAY1 + ; SPECIFIC TO 1.23 MHZ + ; SPEED OF APPLE II +:DELAY + CPY #0 ; 2 CYCLES + BEQ :EXIT ; 2C (EXIT IF DEL=0) + NOP ; 2 CYCLES (MAKE OVERHEAD=25C) + CPY #1 ; 2 CYCLES + BNE :DELAYA ; 3C IF TAKEN, ELSE 2C + JMP :LAST1 ; 3C +:DELAYA + DEY ; 2C (PREDEC Y) +:DELAY0 + LDX #MSCNT ; 2C +:DELAY1 + DEX ; 2C + BNE :DELAY1 ; 3C + NOP ; 2C + NOP ; 2C + DEY ; 2C + BNE :DELAY0 ; 3C +:LAST1 + LDX #MSCNT-3 ; 2C +:DELAY2 + DEX ; 2C + BNE :DELAY2 ; 3C +:EXIT + RTS ; 6C diff --git a/disks/disk2_common/T.MEMFILL.SUB b/source/disk2_common/T.MEMFILL.SUB similarity index 100% rename from disks/disk2_common/T.MEMFILL.SUB rename to source/disk2_common/T.MEMFILL.SUB diff --git a/source/disk2_common/T.MEMFILL.SUB.MIN b/source/disk2_common/T.MEMFILL.SUB.MIN new file mode 100644 index 0000000..0401928 --- /dev/null +++ b/source/disk2_common/T.MEMFILL.SUB.MIN @@ -0,0 +1,43 @@ +MEMFILL + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALUE + PLA + STA :ARYSZ + PLA + STA :ARYSZ+1 + PLA + STA ADDR1 ; ZERO PAGE POINTER + PLA ; DEFINED IN + STA ADDR1+1 ; DECS + LDA :VALUE ; GET VAL FOR FILL + LDX :ARYSZ+1 ; X=# OF PAGES TO DO + BEQ :PARTPG ; BRANCH IF HIGHBYTE OF SZ = 0 + LDY #0 +:FULLPG + STA (ADDR1),Y + INY ; INC TO NEXT BYTE + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGE + INC ADDR1+1 ; ADVANCE TO NEXT PAGE + DEX + BNE :FULLPG ; BRANCH IF NOT DONE W/ PAGES +:PARTPG + LDX :ARYSZ ;GET # OF BYTES IN FINAL PAGE + BEQ :EXIT ; BRANCH IF LOW BYTE = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INCREMENT INDEX + DEX ; DECREMENT COUNTER + BNE :PARTLP ; BRANCH IF NOT DONE +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:VALUE DS 1 ; FILL VALUE +:ARYSZ DS 2 ; ARRAY SIZE diff --git a/disks/disk2_common/T.MEMMOVE.SUB b/source/disk2_common/T.MEMMOVE.SUB similarity index 100% rename from disks/disk2_common/T.MEMMOVE.SUB rename to source/disk2_common/T.MEMMOVE.SUB diff --git a/source/disk2_common/T.MEMMOVE.SUB.MIN b/source/disk2_common/T.MEMMOVE.SUB.MIN new file mode 100644 index 0000000..d0938fb --- /dev/null +++ b/source/disk2_common/T.MEMMOVE.SUB.MIN @@ -0,0 +1,101 @@ +MEMMOVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MVELEN + PLA + STA :MVELEN+1 + PLA + STA ADDR2 ; ZERO PAGE POINTER + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :MVELEN + TYA + SBC :MVELEN+1 + BCS :DOLEFT ; BRANCH IF NO OVERLAP + JSR :MVERHT + JMP :EXIT +:DOLEFT + JSR :MVELEFT +:EXIT + JMP :MREXIT +:MVELEFT + LDY #0 ; ZERO INDEX + LDX :MVELEN+1 ; X=# OF FULL PP TO MOVE + BEQ :MLPART ; IF X=0, DO PARTIAL PAGE +:MLPAGE + LDA (ADDR1),Y + STA (ADDR2),Y ;MOVE ONE BYTE + INY ; NEXT BYTE + BNE :MLPAGE ; CONT UNTIL 256B MOVED + INC ADDR1+1 ; ADV TO NEXT SRC PAGE + INC ADDR2+1 ; ADV NEXT DEST PAGE + DEX ; DEC PAGE COUNT + BNE :MLPAGE ; CONT UNTIL ALL FULL + ; PAGES ARE MOVED +:MLPART + LDX :MVELEN ; GET LENGTH OF LAST PAGE + BEQ :MLEXIT ; BR IF LENGTH OF LAST + ; PAGE = 0 + ; REG Y IS 0 +:MLLAST + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + INY ; NEXT BYTE + DEX ; DEC COUNTER + BNE :MLLAST ; CONT UNTIL LAST P DONE +:MLEXIT + JMP :MREXIT +:MVERHT + LDA :MVELEN+1 + CLC + ADC ADDR1+1 + STA ADDR1+1 ;POINT TO LAST P OF SRC + LDA :MVELEN+1 + CLC + ADC ADDR2+1 + STA ADDR2+1 ; POINT TO LAST P OF DEST + LDY :MVELEN ;GET LENGTH OF LAST PAGE + BEQ :MRPAGE ; IF Y=0 DO THE FULL PAGES +:MR0 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR0 ; BR IF NOT DONE W LAST P +:MRPAGE + LDX :MVELEN+1 ; GET BYTE OF COUNT AS P CT + BEQ :MREXIT ; BR IF HYBYTE = 0 (NO FULL P) +:MR1 + DEC ADDR1+1 ; BACK UP TO PREV SRC PAGE + DEC ADDR2+1 ; AND DEST +:MR2 + DEY ; BACK UP Y TO NEXT BYTE + LDA (ADDR1),Y + STA (ADDR2),Y ; MOVE BYTE + CPY #0 + BNE :MR2 ; BR IF NOT DONE W THIS PAGE + DEX + BNE :MR1 ; BR IF NOT ALL PAGES MOVED +:MREXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MVELEN DS 2 diff --git a/disks/disk2_common/T.MEMSWAP.SUB b/source/disk2_common/T.MEMSWAP.SUB similarity index 100% rename from disks/disk2_common/T.MEMSWAP.SUB rename to source/disk2_common/T.MEMSWAP.SUB diff --git a/source/disk2_common/T.MEMSWAP.SUB.MIN b/source/disk2_common/T.MEMSWAP.SUB.MIN new file mode 100644 index 0000000..7247b7d --- /dev/null +++ b/source/disk2_common/T.MEMSWAP.SUB.MIN @@ -0,0 +1,86 @@ +MEMSWAP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :LENGTH + PLA + STA ADDR1 + STA :A1 + PLA + STA ADDR1+1 + STA :A1+1 + PLA + STA ADDR2 + STA :A2 + PLA + STA ADDR2+1 + STA :A2+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA ADDR2+1 ; IF #>A2 => #>A1 + CMP ADDR1+1 + BCS :CHKLO ; CHECK LOW BYTES + JMP :A1GTA2 ; ELSE, A1 > A2 +:CHKLO + LDA ADDR2 + CMP ADDR1 + BCS :A2GTA1 + JMP :A1GTA2 +:A2GTA1 + LDA ADDR2 ;CALC DEST-SRC + SEC + SBC ADDR1 + TAX + LDA ADDR2+1 + SBC ADDR1+1 ; MOD 64K AUTOMATIC + ; -- DISCARD CARRY + TAY + TXA ; CMP WITH # OF BYTES TO MOVE + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND ; BRANCH IF NO OVERLAP + JMP :OVF +:A1GTA2 + LDA ADDR1 + SEC + SBC ADDR2 + TAX + LDA ADDR1+1 + SBC ADDR2+1 + TAY + TXA + CMP :LENGTH + TYA + SBC :LENGTH+1 + BCS :ERREND +:OVF + _ERR :E_SID;:E_OVF;:E_DUMP;:LENGTH;#6 +:ERREND + LDY #255 ; COUNTER +:LP + INY + LDA (ADDR1),Y + TAX ; X CONTAINS ADDR1 VAL + LDA (ADDR2),Y ; A CONTAINS ADDR2 VAL + STA (ADDR1),Y + TXA + STA (ADDR2),Y + CPY :LENGTH + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:LENGTH DS 2 +:A1 DS 2 +:A2 DS 2 +:E_SID ASC "MEMSWAP (MSWAP MACRO)",00 +:E_DUMP ASC "DUMPING LENGTH (2) A1(2) A2(2)",00 +:E_OVF ASC "OVERFLOW! ADDRESSES OVERLAP.",00 diff --git a/disks/disk2_common/T.REQUIRED.HOOKS b/source/disk2_common/T.REQUIRED.HOOKS similarity index 100% rename from disks/disk2_common/T.REQUIRED.HOOKS rename to source/disk2_common/T.REQUIRED.HOOKS diff --git a/disks/disk4_math/T.REQUIRED.HOOKS.MIN b/source/disk2_common/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk4_math/T.REQUIRED.HOOKS.MIN rename to source/disk2_common/T.REQUIRED.HOOKS.MIN diff --git a/disks/disk2_common/T.REQUIRED.LIB b/source/disk2_common/T.REQUIRED.LIB similarity index 97% rename from disks/disk2_common/T.REQUIRED.LIB rename to source/disk2_common/T.REQUIRED.LIB index 6fb681d..cde9247 100644 --- a/disks/disk2_common/T.REQUIRED.LIB +++ b/source/disk2_common/T.REQUIRED.LIB @@ -351,6 +351,15 @@ HEXTAB ASC "0123456789ABCDEF" *,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,* * __ERR +* +** SAVE RETADR OF LAST CALL +* + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 * JSR __RSAV PLA @@ -441,6 +450,10 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 +* JMP $3D0 * ** DATA @@ -450,4 +463,5 @@ __ERR :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 * diff --git a/disks/disk2_common/T.REQUIRED.LIB.MIN b/source/disk2_common/T.REQUIRED.LIB.MIN similarity index 97% rename from disks/disk2_common/T.REQUIRED.LIB.MIN rename to source/disk2_common/T.REQUIRED.LIB.MIN index 1267342..0fd16c1 100644 --- a/disks/disk2_common/T.REQUIRED.LIB.MIN +++ b/source/disk2_common/T.REQUIRED.LIB.MIN @@ -262,6 +262,12 @@ __RDMP :RIGHT DS 1 HEXTAB ASC "0123456789ABCDEF" __ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 JSR __RSAV PLA STA RETADR @@ -350,9 +356,13 @@ __ERR BEQ :KILL RTS :KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 JMP $3D0 :DUMPLEN DS 1 :DUMP DS 2 :DMPMSG DS 2 :MESG DS 2 :SRID DS 2 +:RET DS 2 diff --git a/disks/disk2_common/T.REQUIRED.MAC b/source/disk2_common/T.REQUIRED.MAC similarity index 100% rename from disks/disk2_common/T.REQUIRED.MAC rename to source/disk2_common/T.REQUIRED.MAC diff --git a/disks/disk4_math/T.REQUIRED.MAC.MIN b/source/disk2_common/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk4_math/T.REQUIRED.MAC.MIN rename to source/disk2_common/T.REQUIRED.MAC.MIN diff --git a/disks/disk5_strings/T.REQUIRED.VARS b/source/disk2_common/T.REQUIRED.VARS similarity index 100% rename from disks/disk5_strings/T.REQUIRED.VARS rename to source/disk2_common/T.REQUIRED.VARS diff --git a/disks/disk2_common/T.ZMLOAD.SUB b/source/disk2_common/T.ZMLOAD.SUB similarity index 100% rename from disks/disk2_common/T.ZMLOAD.SUB rename to source/disk2_common/T.ZMLOAD.SUB diff --git a/source/disk2_common/T.ZMLOAD.SUB.MIN b/source/disk2_common/T.ZMLOAD.SUB.MIN new file mode 100644 index 0000000..d93ee7a --- /dev/null +++ b/source/disk2_common/T.ZMLOAD.SUB.MIN @@ -0,0 +1,70 @@ +ZMLOAD + PLA + STA :RETADR + PLA + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #2 ; START 2 AHEAD + LDA (ADDR1),Y ; AND PUT ADDR1 + STA $08 ; AREA LAST + INY + LDA (ADDR1),Y + STA $09 + INY + LDA (ADDR1),Y + STA $19 + INY + LDA (ADDR1),Y + STA $1E + INY + LDA (ADDR1),Y + STA $E3 + INY + LDA (ADDR1),Y + STA $EB + INY + LDA (ADDR1),Y + STA $EC + INY + LDA (ADDR1),Y + STA $ED + INY + LDA (ADDR1),Y + STA $EE + INY + LDA (ADDR1),Y + STA $EF + INY + LDA (ADDR1),Y + STA $FA + INY + LDA (ADDR1),Y + STA $FB + INY + LDA (ADDR1),Y + STA $FC + INY + LDA (ADDR1),Y + STA $FD + INY + LDA (ADDR1),Y + STA $FE + INY + LDA (ADDR1),Y + STA $FF + LDY #0 + LDA (ADDR1),Y + TAX + LDA (ADDR1+1),Y + TAY + STX ADDR1 + STY ADDR1+1 + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk2_common/T.ZMSAVE.SUB b/source/disk2_common/T.ZMSAVE.SUB similarity index 100% rename from disks/disk2_common/T.ZMSAVE.SUB rename to source/disk2_common/T.ZMSAVE.SUB diff --git a/source/disk2_common/T.ZMSAVE.SUB.MIN b/source/disk2_common/T.ZMSAVE.SUB.MIN new file mode 100644 index 0000000..cd3cc27 --- /dev/null +++ b/source/disk2_common/T.ZMSAVE.SUB.MIN @@ -0,0 +1,71 @@ +ZMSAVE + LDX ADDR1 + LDY ADDR1+1 + PLA + STA :RETADR ; LOCAL BECAUSE RETADDR + PLA ; IS STORED ON ZERO PAGE + STA :RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TYA ; STORE ADDR1 VALS + LDY #1 ; FIRST + STA (ADDR1),Y + LDY #0 + TXA + STA (ADDR1),Y + LDY #2 + LDA $08 + STA (ADDR1),Y + INY + LDA $09 + STA (ADDR1),Y + INY + LDA $19 + STA (ADDR1),Y + INY + LDA $1E + STA (ADDR1),Y + INY + LDA $E3 + STA (ADDR1),Y + INY + LDA $EB + STA (ADDR1),Y + INY + LDA $EC + STA (ADDR1),Y + INY + LDA $ED + STA (ADDR1),Y + INY + LDA $EE + STA (ADDR1),Y + INY + LDA $EF + STA (ADDR1),Y + INY + LDA $FA + STA (ADDR1),Y + INY + LDA $FB + STA (ADDR1),Y + INY + LDA $FC + STA (ADDR1),Y + INY + LDA $FD + STA (ADDR1),Y + INY + LDA $FE + STA (ADDR1),Y + INY + LDA $FF + STA (ADDR1),Y + LDA :RETADR+1 + PHA + LDA :RETADR + PHA + RTS +:RETADR DS 2 diff --git a/disks/disk3_arrays/ARRAYS.DEMO b/source/disk3_arrays/ARRAYS.DEMO similarity index 100% rename from disks/disk3_arrays/ARRAYS.DEMO rename to source/disk3_arrays/ARRAYS.DEMO diff --git a/disks/disk3_arrays/ARRAYS.DEMO.S b/source/disk3_arrays/ARRAYS.DEMO.S similarity index 100% rename from disks/disk3_arrays/ARRAYS.DEMO.S rename to source/disk3_arrays/ARRAYS.DEMO.S diff --git a/disks/disk3_arrays/MINIFY b/source/disk3_arrays/MINIFY similarity index 100% rename from disks/disk3_arrays/MINIFY rename to source/disk3_arrays/MINIFY diff --git a/disks/disk3_arrays/T.ADIM81.SUB b/source/disk3_arrays/T.ADIM81.SUB similarity index 100% rename from disks/disk3_arrays/T.ADIM81.SUB rename to source/disk3_arrays/T.ADIM81.SUB diff --git a/source/disk3_arrays/T.ADIM81.SUB.MIN b/source/disk3_arrays/T.ADIM81.SUB.MIN new file mode 100644 index 0000000..aec7812 --- /dev/null +++ b/source/disk3_arrays/T.ADIM81.SUB.MIN @@ -0,0 +1,92 @@ +ADIM81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL ; FILL VALUE + PLA + STA :ESIZE ; ELEMENT SIZE + STA :ESZBAK + PLA + STA :ASIZE ; ARRAY SIZE + STA :ASZBAK + PLA + STA ADDR1 ; ARRAY ADDRESS + PLA + STA ADDR1+1 + LDY #0 + LDA #0 + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :ASIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :ASIZE + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + CLC + INX + INX ; INCREASE BY TWO + ; TO MAKE ROOM FOR SIZES + BCC :NOINY ; IF .X ROLLS OVER, INC .Y + INY +:NOINY + STX :MSIZE ; LOW BYTE + STY :MSIZE+1 ; HIGH BYTE + LDA :FILL ; FILL VALUE + LDX :MSIZE+1 + BEQ :PART ; IF NO WHOLE PAGES, JUST PART + LDY #0 +:FULL + STA (ADDR1),Y + INY ; NEXT BYTE + BNE :FULL ; LOOP UNTIL PAGE DONE + INC ADDR1+1 ; GO TO NEXT PAGE + DEX + BNE :FULL ; LOOP IF PAGES LEFT +:PART + LDX :MSIZE ; PARTIAL PAGE BYTES + BEQ :MFEXIT ; EXIT IF = 0 + LDY #0 +:PARTLP + STA (ADDR1),Y ; STORE VAL + INY ; INC INDEX + DEX ; DEC COUNTER + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :ASZBAK + STA (ADDR1),Y + INY + LDA :ESZBAK + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 ; LOW + LDX ADDR1+1 ; HIGH + LDA :ASZBAK + LDA :MSIZE + STA RETURN + LDA :MSIZE+1 + STA RETURN+1 + LDA #2 + STA RETLEN ; 2 BYTE LENGTH + RTS +:MSIZE DS 2 +:ASIZE DS 1 +:ESIZE DS 1 +:ASZBAK DS 1 +:ESZBAK DS 1 +:FILL DS 1 diff --git a/disks/disk3_arrays/T.ADIM82.SUB b/source/disk3_arrays/T.ADIM82.SUB similarity index 100% rename from disks/disk3_arrays/T.ADIM82.SUB rename to source/disk3_arrays/T.ADIM82.SUB diff --git a/source/disk3_arrays/T.ADIM82.SUB.MIN b/source/disk3_arrays/T.ADIM82.SUB.MIN new file mode 100644 index 0000000..73787c1 --- /dev/null +++ b/source/disk3_arrays/T.ADIM82.SUB.MIN @@ -0,0 +1,133 @@ +ADIM82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :FILL + PLA + STA :MCAND ; ELEMENT LENGTH + PLA + STA :AYSIZE + STA :AYBAK + PLA + STA :AXSIZE + STA :AXBAK + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :MCAND+1 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :AXSIZE + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :AXSIZE + ROL SCRATCH +:ENTLP + LSR :AYSIZE + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + LDA #0 + STA :PROD + STA :PROD+1 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + LDA :FILL ; FILL VALUE + LDX :PROD+1 ; NOTE THAT THIS WON'T + ; GO BEYOND A 16BIT VALUE; + ; ANYTHING HIGHER THAN + ; 16BITS IS MORE THAN + ; THERE IS MEMORY IN A + ; STANDARD APPLE ][ + BEQ :PART + LDY #0 +:FULL + STA (ADDR1),Y + INY + BNE :FULL + INC ADDR1+1 + DEX + BNE :FULL ; LOOP UNTIL PAGES DONE +:PART + LDX :PROD + BEQ :MFEXIT + LDY #0 +:PARTLP + STA (ADDR1),Y + INY + DEX + BNE :PARTLP ; LOOP UNTIL DONE +:MFEXIT + LDY #0 + LDA :AXBAK + STA (ADDR1),Y + INY + LDA :AYBAK + STA (ADDR1),Y + INY + LDA :MCAND + STA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY ADDR1 + LDX ADDR1+1 + LDA :PROD + STA RETURN + LDA :PROD+1 + STA RETURN+1 + LDA :PROD+2 + STA RETURN+2 + LDA :PROD+3 + STA RETURN+3 + LDA #4 ; SIZE OF RETURN + STA RETLEN + LDA :MCAND + RTS +:PROD DS 4 +:AXSIZE DS 1 +:AYSIZE DS 1 +:AXBAK DS 1 +:AYBAK DS 1 +:MLIER DS 2 +:MCAND DS 2 +:FILL DS 1 diff --git a/disks/disk3_arrays/T.AGET81.SUB b/source/disk3_arrays/T.AGET81.SUB similarity index 92% rename from disks/disk3_arrays/T.AGET81.SUB rename to source/disk3_arrays/T.AGET81.SUB index 43f6fd5..2b09da0 100644 --- a/disks/disk3_arrays/T.AGET81.SUB +++ b/source/disk3_arrays/T.AGET81.SUB @@ -93,20 +93,11 @@ AGET81 JMP :ERREND :CHKERR LDA :IDX ; IF IDX > ARRAY LENGTH - CLC - ADC #1 CMP :ALEN BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:RES;#6 * ******************************** * @@ -114,7 +105,6 @@ AGET81 * ******************************** * -* ** FIRST, MUL INDEX BY ELEMENT SIZE, ** THEN ADD TWO TO GET THE PROPER ADDRESS. * @@ -209,6 +199,5 @@ AGET81 * :E_SID ASC "AGET81 (GET81 MACRO)",00 :E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 -:E_OVF1 ASC "OVERFLOW: INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW: CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 * diff --git a/source/disk3_arrays/T.AGET81.SUB.MIN b/source/disk3_arrays/T.AGET81.SUB.MIN new file mode 100644 index 0000000..1e200ce --- /dev/null +++ b/source/disk3_arrays/T.AGET81.SUB.MIN @@ -0,0 +1,96 @@ +AGET81 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :IDX + DEC :IDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #0 + STA :IDX+1 + LDY #1 ; ELEMENT SIZE LOC + LDA (ADDR1),Y + STA :ESIZE + STA RETLEN ; LENGTH OF RETURN VALUE + DEY + LDA (ADDR1),Y + STA :ALEN + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CMP :ALEN + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:RES;#6 +:ERREND + LDY #0 + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :IDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :IDX + ROL SCRATCH +:ENTLP + LSR :ESIZE + BCS :DOADD + BNE :LP + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR1 ; LOW OF ARRAY ADDRESS + STA :RES + LDA :RES+1 + ADC ADDR1+1 + STA :RES+1 + LDY #0 + LDA :RES + STA ADDR1 + LDA :RES+1 + STA ADDR1+1 +:LDLOOP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY RETLEN + BCC :LDLOOP ; IF .Y <= RETLEN + BEQ :LDLOOP ; KEEP LOOPING + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :RES + LDX :RES+1 + LDA RETLEN + RTS +:RES DS 2 +:IDX DS 2 +:ESIZE DS 1 +:ALEN DS 1 +:E_SID ASC "AGET81 (GET81 MACRO)",00 +:E_DUMP ASC "DUMPING RES(2) IDX(2) ESIZE(1) ALEN(1)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.AGET82.SUB b/source/disk3_arrays/T.AGET82.SUB similarity index 96% rename from disks/disk3_arrays/T.AGET82.SUB rename to source/disk3_arrays/T.AGET82.SUB index 2924c3d..53b004e 100644 --- a/disks/disk3_arrays/T.AGET82.SUB +++ b/source/disk3_arrays/T.AGET82.SUB @@ -103,8 +103,6 @@ AGET82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -112,8 +110,6 @@ AGET82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -135,6 +131,7 @@ AGET82 ******************************** * ** MULTIPLY Y-INDEX BY Y-LENGTH +* LDA #0 * TAY @@ -259,6 +256,6 @@ AGET82 :E_SID ASC "AGET82 (GET82 MACRO)",00 :E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 * diff --git a/source/disk3_arrays/T.AGET82.SUB.MIN b/source/disk3_arrays/T.AGET82.SUB.MIN new file mode 100644 index 0000000..9193742 --- /dev/null +++ b/source/disk3_arrays/T.AGET82.SUB.MIN @@ -0,0 +1,153 @@ +AGET82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX + PLA + STA :XIDX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + DEC :XIDX + DEC :YIDX + LDY #2 + LDA (ADDR1),Y ; ELEMENT LENGTH + STA :MCAND ; ELEMENT LENGTH + STA :ELEN + DEY + LDA (ADDR1),Y ; Y LENGTH + STA :YLEN + DEY + LDA (ADDR1),Y ; X LENGTH + STA :XLEN + LDA #0 + STA :MCAND+1 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR1 + STA :PROD + LDA :PROD+1 + ADC ADDR1+1 + STA :PROD+1 + LDY :PROD + LDX :PROD+1 + STY ADDR1 + STX ADDR1+1 + LDY #0 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + INY + CPY :ELEN + BNE :RLP + LDA :ELEN + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA RETLEN + LDY ADDR1 + LDX ADDR1+1 + RTS +:XIDX DS 2 +:YIDX DS 2 +:XLEN DS 1 +:YLEN DS 1 +:PROD DS 4 +:MLIER DS 2 +:MCAND DS 2 +:ELEN DS 1 +:E_SID ASC "AGET82 (GET82 MACRO)",00 +:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" + ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAX OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.APUT81.SUB b/source/disk3_arrays/T.APUT81.SUB similarity index 90% rename from disks/disk3_arrays/T.APUT81.SUB rename to source/disk3_arrays/T.APUT81.SUB index cf784d1..f2320ab 100644 --- a/disks/disk3_arrays/T.APUT81.SUB +++ b/source/disk3_arrays/T.APUT81.SUB @@ -56,9 +56,9 @@ APUT81 ** SAVE RETURN ADDRESS * PLA - STA :RETADR ; LOCAL RETURN ADDRESS STORAGE + STA RETADR ; LOCAL RETURN ADDRESS STORAGE PLA ; BECAUSE OF CALLING AGET81 - STA :RETADR+1 + STA RETADR+1 * ** GET PARAMETERS * @@ -105,16 +105,9 @@ APUT81 ADC #1 CMP :ASIZE BCS :OVF - JMP :CHKCONT + JMP :ERREND :OVF _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 -:CHKCONT - LDA :IDX - CMP #255 ; NO ZERO INDEX - BEQ :UNF ; UNDERFLOW - JMP :ERREND -:UNF - _ERR :E_SID;:E_UNF;:E_DUMP;:ESIZE;#9 * ******************************** * @@ -187,9 +180,9 @@ APUT81 * ** RESTORE RETURN ADDRESS * - LDA :RETADR+1 + LDA RETADR+1 PHA - LDA :RETADR + LDA RETADR PHA * ** RETURN ELEMENT ADDRESS AND SIZE @@ -202,7 +195,6 @@ APUT81 * ** DATA * -:RETADR DS 2 :ESIZE DS 1 :ESIZEBAK DS 1 :ASIZE DS 1 @@ -213,6 +205,5 @@ APUT81 :E_SID ASC "APUT81 (PUT81 MACRO)",00 :E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" ASC ":AIDX(2) :IDX(2) :RES(2)",00 -:E_OVF1 ASC "OVERFLOW! INDEX HIGHER THAN ARRAY LENGTH",00 -:E_UNF ASC "UNDERFLOW! CANNOT USE A ZERO INDEX",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 * diff --git a/source/disk3_arrays/T.APUT81.SUB.MIN b/source/disk3_arrays/T.APUT81.SUB.MIN new file mode 100644 index 0000000..11c8446 --- /dev/null +++ b/source/disk3_arrays/T.APUT81.SUB.MIN @@ -0,0 +1,103 @@ +APUT81 + PLA + STA RETADR ; LOCAL RETURN ADDRESS STORAGE + PLA ; BECAUSE OF CALLING AGET81 + STA RETADR+1 + PLA + STA :AIDX + STA :IDX + DEC :AIDX + DEC :IDX + PLA + STA ADDR4 ; ARRAY ADDRESS; USES ADDR4 + ; ADDR1 + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA TO BE + PLA + STA ADDR3+1 + LDY #0 + LDA (ADDR4),Y + STA :ASIZE + LDY #1 + LDA (ADDR4),Y + STA :ESIZE + STA :ESIZEBAK + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :IDX ; IF IDX > ARRAY LENGTH + CLC + ADC #1 + CMP :ASIZE + BCS :OVF + JMP :ERREND +:OVF + _ERR :E_SID;:E_OVF1;:E_DUMP;:ESIZE;#9 +:ERREND + LDY #0 + LDA #0 + STY SCRATCH + STY SCRATCH+1 + BEQ :ENTLPA +:DOADD + CLC + ADC :AIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LPA + ASL :AIDX + ROL SCRATCH +:ENTLPA + LSR :ESIZE + BCS :DOADD + BNE :LPA + STX :IDX + STY :IDX+1 + CLC + LDA #2 + ADC :IDX + STA :RES + LDA #0 + ADC :IDX+1 + STA :RES+1 + CLC + LDA :RES + ADC ADDR4 + STA :RES + LDA :RES+1 + ADC ADDR4+1 + STA :RES+1 + STA ADDR2+1 + LDA :RES + STA ADDR2 +:LP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZEBAK + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:ESIZEBAK DS 1 +:ASIZE DS 1 +:AIDX DS 2 +:IDX DS 2 +:RES DS 2 +:E_SID ASC "APUT81 (PUT81 MACRO)",00 +:E_DUMP ASC "DUMPING :ESIZE(1) :ESIZEBAK(1) :ASIZE(1)" + ASC ":AIDX(2) :IDX(2) :RES(2)",00 +:E_OVF1 ASC "OUT OF BOUNDS! INDEX > ARRAY LENGTH",00 diff --git a/disks/disk3_arrays/T.APUT82.SUB b/source/disk3_arrays/T.APUT82.SUB similarity index 94% rename from disks/disk3_arrays/T.APUT82.SUB rename to source/disk3_arrays/T.APUT82.SUB index bb7d23c..e8d13c2 100644 --- a/disks/disk3_arrays/T.APUT82.SUB +++ b/source/disk3_arrays/T.APUT82.SUB @@ -109,8 +109,6 @@ APUT82 JMP :ERREND :CHKERR LDA :XIDX ; IF X > MAX LEN - CLC - ADC #1 CMP :XLEN BCS :XOVF JMP :ERRCONT1 @@ -118,8 +116,6 @@ APUT82 _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 :ERRCONT1 LDA :YIDX ; IF Y > MAX LEN - CLC - ADC #1 CMP :YLEN BCS :YOVF JMP :ERRCONT2 @@ -262,7 +258,6 @@ APUT82 * ** DATA * -:RETADR DS 2 :ESIZE DS 1 :XIDX DS 1 :YIDX DS 1 @@ -272,9 +267,9 @@ APUT82 :XLEN DS 1 :YLEN DS 1 * -:E_SID ASC "AGET82 (GET82 MACRO)",00 -:E_DUMP ASC ":XIDX(2) :YIDX(2) :XLEN(1) :YLEN(1)" - ASC ":PROD(4) :MLIER(2) :MCAND(2) :ELEN(1)",00 -:E_XOVF ASC "X-OVERFLOW! X IS > MAXIMUM OR IS 0.",00 -:E_YOVF ASC "Y-OVERFLOW! Y IS > MAX OR IS 0.",00 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 * diff --git a/source/disk3_arrays/T.APUT82.SUB.MIN b/source/disk3_arrays/T.APUT82.SUB.MIN new file mode 100644 index 0000000..696d636 --- /dev/null +++ b/source/disk3_arrays/T.APUT82.SUB.MIN @@ -0,0 +1,158 @@ +APUT82 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :YIDX ; Y INDEX + DEC :YIDX + PLA + STA :XIDX ; X INDEX + DEC :XIDX + PLA + STA ADDR4 ; ADDRESS OF ARRAY + PLA + STA ADDR4+1 + PLA + STA ADDR3 ; ADDRESS OF DATA + PLA ; TO BE COPIED + STA ADDR3+1 + LDY #2 + LDA (ADDR4),Y + STA :ESIZE + STA :MCAND + LDA #0 + STA :MCAND+1 + LDY #0 + LDA (ADDR4),Y + STA :XLEN + INY + LDA (ADDR4),Y + STA :YLEN + LDY #0 + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + LDA :XIDX ; IF X > MAX LEN + CMP :XLEN + BCS :XOVF + JMP :ERRCONT1 +:XOVF + _ERR :E_SID;:E_XOVF;:E_DUMP;:XIDX;#15 +:ERRCONT1 + LDA :YIDX ; IF Y > MAX LEN + CMP :YLEN + BCS :YOVF + JMP :ERRCONT2 +:YOVF + _ERR :E_SID;:E_YOVF;:E_DUMP;:XIDX;#15 +:ERRCONT2 + LDA :XIDX ; IF INDEX IS 0, ERR + CMP #255 + BEQ :XOVF +:ERRCONT3 + LDA :YIDX + CMP #255 + BEQ :YOVF +:ERREND + LDA #0 + TAY + STY SCRATCH + BEQ :ENTLP +:DOADD + CLC + ADC :YIDX + TAX + TYA + ADC SCRATCH + TAY + TXA +:LP + ASL :YIDX + ROL SCRATCH +:ENTLP + LSR :YLEN + BCS :DOADD + BNE :LP + STX :MLIER + STY :MLIER+1 + CLC + LDA :MLIER + ADC :XIDX + STA :MLIER + BCC :CONTADD + LDA :MLIER+1 + ADC #1 + STA :MLIER+1 +:CONTADD + LDA #0 + STA :PROD+2 + STA :PROD+3 + LDX #$10 +:SHIFTR LSR :MLIER+1 + ROR :MLIER + BCC :ROTR + LDA :PROD+2 + CLC + ADC :MCAND + STA :PROD+2 + LDA :PROD+3 + ADC :MCAND+1 +:ROTR + ROR + STA :PROD+3 + ROR :PROD+2 + ROR :PROD+1 + ROR :PROD + DEX + BNE :SHIFTR + CLC + INC :PROD ; INCREASE BY 3 + INC :PROD + INC :PROD + BCC :NOCAR + INC :PROD+1 +:NOCAR + CLC + LDA :PROD + ADC ADDR4 + STA :PROD + LDA :PROD+1 + ADC ADDR4+1 + STA :PROD+1 + LDA :PROD + LDY :PROD + LDX :PROD+1 + STY ADDR2 + STX ADDR2+1 + LDY #0 + LDX #0 +:CLP + LDA (ADDR3),Y + STA (ADDR2),Y + INY + CPY :ESIZE + BNE :CLP + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX ADDR2+1 + LDY ADDR2 + LDA :ESIZE + RTS +:ESIZE DS 1 +:XIDX DS 1 +:YIDX DS 1 +:MCAND DS 2 +:MLIER DS 2 +:PROD DS 4 +:XLEN DS 1 +:YLEN DS 1 +:E_SID ASC "APUT82 (PUT82 MACRO)",00 +:E_DUMP ASC ":XIDX(1) :YIDX(1) :MCAND(2) :MLIER(2)" + ASC ":PROD(4) :XLEN(1) :YLEN(1)",00 +:E_XOVF ASC "OUT OF BOUNDS! X > MAXIMUM OR IS 0.",00 +:E_YOVF ASC "OUT OF BOUNDS! Y > MAX OR IS 0.",00 diff --git a/disks/disk3_arrays/T.ARRAYS.DEMO b/source/disk3_arrays/T.ARRAYS.DEMO similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.DEMO rename to source/disk3_arrays/T.ARRAYS.DEMO diff --git a/source/disk3_arrays/T.ARRAYS.HOOKS b/source/disk3_arrays/T.ARRAYS.HOOKS new file mode 100644 index 0000000..d33c50b --- /dev/null +++ b/source/disk3_arrays/T.ARRAYS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* ARRAYS.HOOKS.PUT * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +* WELL I GOT NOTHIN +* diff --git a/disks/disk3_arrays/T.ARRAYS.HOOKS.MIN b/source/disk3_arrays/T.ARRAYS.HOOKS.MIN similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.HOOKS.MIN rename to source/disk3_arrays/T.ARRAYS.HOOKS.MIN diff --git a/disks/disk3_arrays/T.ARRAYS.MAC b/source/disk3_arrays/T.ARRAYS.MAC similarity index 100% rename from disks/disk3_arrays/T.ARRAYS.MAC rename to source/disk3_arrays/T.ARRAYS.MAC diff --git a/source/disk3_arrays/T.ARRAYS.MAC.MIN b/source/disk3_arrays/T.ARRAYS.MAC.MIN new file mode 100644 index 0000000..062e261 --- /dev/null +++ b/source/disk3_arrays/T.ARRAYS.MAC.MIN @@ -0,0 +1,76 @@ +DIM81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ARRAY LENGTH + PHA + LDA ]3 ; ELEMENT LENGTH + PHA + LDA ]4 + PHA ; FILL VAL + JSR ADIM81 + <<< +GET81 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; ELEM INDEX + PHA + JSR AGET81 + <<< +PUT81 MAC + LDA #>]1 + PHA ; SRC ADDR + LDA #<]1 + PHA + LDA #>]2 ; DEST ARRAY + PHA + LDA #<]2 + PHA + LDA ]3 ; DEST INDEX + PHA + JSR APUT81 + <<< +DIM82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X DIM + PHA + LDA ]3 ; Y DIM + PHA + LDA ]4 ; ELEMENT LENGTH + PHA + LDA ]5 ; FILL VAL + PHA + JSR ADIM82 + <<< +GET82 MAC + LDA #>]1 ; ARRAY ADDR + PHA + LDA #<]1 + PHA + LDA ]2 ; X INDEX + PHA + LDA ]3 ; Y INDEX + PHA + JSR AGET82 + <<< +PUT82 MAC + LDA #>]1 ; SRC ADDR + PHA + LDA #<]1 + PHA + LDA #>]2 ; ARRAY ADDR + PHA + LDA #<]2 + PHA + LDA ]3 ; X INDEX + PHA + LDA ]4 ; Y INDEX + PHA + JSR APUT82 + <<< diff --git a/disks/disk5_strings/T.REQUIRED.HOOKS.MIN b/source/disk3_arrays/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk5_strings/T.REQUIRED.HOOKS.MIN rename to source/disk3_arrays/T.REQUIRED.HOOKS.MIN diff --git a/source/disk3_arrays/T.REQUIRED.LIB.MIN b/source/disk3_arrays/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk3_arrays/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/disks/disk5_strings/T.REQUIRED.MAC.MIN b/source/disk3_arrays/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk5_strings/T.REQUIRED.MAC.MIN rename to source/disk3_arrays/T.REQUIRED.MAC.MIN diff --git a/disks/disk6_fileio/T.REQUIRED.VARS b/source/disk3_arrays/T.REQUIRED.VARS similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.VARS rename to source/disk3_arrays/T.REQUIRED.VARS diff --git a/disks/disk4_math/MATH.DEMO b/source/disk4_math/MATH.DEMO similarity index 100% rename from disks/disk4_math/MATH.DEMO rename to source/disk4_math/MATH.DEMO diff --git a/disks/disk4_math/MATH.DEMO.S b/source/disk4_math/MATH.DEMO.S similarity index 100% rename from disks/disk4_math/MATH.DEMO.S rename to source/disk4_math/MATH.DEMO.S diff --git a/disks/disk4_math/MINIFY b/source/disk4_math/MINIFY similarity index 100% rename from disks/disk4_math/MINIFY rename to source/disk4_math/MINIFY diff --git a/disks/disk4_math/T.ADDIT16.SUB b/source/disk4_math/T.ADDIT16.SUB similarity index 100% rename from disks/disk4_math/T.ADDIT16.SUB rename to source/disk4_math/T.ADDIT16.SUB diff --git a/source/disk4_math/T.ADDIT16.SUB.MIN b/source/disk4_math/T.ADDIT16.SUB.MIN new file mode 100644 index 0000000..f7b7b09 --- /dev/null +++ b/source/disk4_math/T.ADDIT16.SUB.MIN @@ -0,0 +1,31 @@ +ADDIT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :ADD2 + PLA + STA :ADD2+1 + PLA + STA :ADD1 + PLA + STA :ADD1+1 + LDA :ADD1 + CLC + ADC :ADD2 + TAY ; LOW BYTE + STY RETURN + LDA :ADD1+1 + ADC :ADD2+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:ADD1 DS 2 +:ADD2 DS 2 diff --git a/disks/disk4_math/T.COMP16.SUB b/source/disk4_math/T.COMP16.SUB similarity index 100% rename from disks/disk4_math/T.COMP16.SUB rename to source/disk4_math/T.COMP16.SUB diff --git a/source/disk4_math/T.COMP16.SUB.MIN b/source/disk4_math/T.COMP16.SUB.MIN new file mode 100644 index 0000000..2eceede --- /dev/null +++ b/source/disk4_math/T.COMP16.SUB.MIN @@ -0,0 +1,37 @@ +COMP16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT ; SUBTRAHEND + PLA + STA :SUBT+1 + PLA + STA :MINU ; MINUEND + PLA + STA :MINU+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :MINU + CMP :SUBT ; COMPARE LOW BYTES + BEQ :EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; COMPARE HIGH BYTES + ORA #1 ; MAKE Z=0, SINCE LOW + ; BYTES ARE NOT EQUAL + BVS :OVFLOW ; MUST HANDLE OVERFLOW + RTS ; EXIT +:EQUAL + LDA :MINU+1 + SBC :SUBT+1 ; UPPER BYTES + BVS :OVFLOW + RTS ; RETURN W FLAGS SET +:OVFLOW + EOR #$80 ; COMPLEMENT N FLAG + ORA #1 ; IF OVERFLOW THEN THE + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/disks/disk4_math/T.DIVD16.SUB b/source/disk4_math/T.DIVD16.SUB similarity index 100% rename from disks/disk4_math/T.DIVD16.SUB rename to source/disk4_math/T.DIVD16.SUB diff --git a/source/disk4_math/T.DIVD16.SUB.MIN b/source/disk4_math/T.DIVD16.SUB.MIN new file mode 100644 index 0000000..c0cd5fc --- /dev/null +++ b/source/disk4_math/T.DIVD16.SUB.MIN @@ -0,0 +1,158 @@ +UDIVD16 + LDA #0 + BEQ UDIVMD +UREMD16 + LDA #2 +UDIVMD + STA _RSLTI + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA _DVSOR + PLA + STA _DVSOR+1 + PLA + STA _DVEND + PLA + STA _DVEND+1 + JSR UDIV + BCC DIVOK ; BR IF NO ERR +DIVERR JMP EREXIT +DIVOK JMP OKEXIT +SDIVD16 + LDA #0 ; RESULT IS QUOTIENT + BEQ SDIVMD ; (INDEX=0) +SREMD16 + LDA #2 ; RES = REMAINDER (I=2) + BNE SDIVMD +SDIVMD + STA _RSLTI ;RESULT INDEX;0=Q,2=R + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA _DVSOR + PLA + STA _DVSOR+1 + PLA + STA _DVEND + PLA + STA _DVEND+1 + LDA _DVEND+1 + EOR _DVSOR+1 + STA _SQUOT + LDA _DVEND+1 + STA _SREMD + LDA _DVSOR+1 + BPL CHKDE ; BR IF ALREADY POS + LDA #0 ; SUB DVSOR FROM ZERO + SEC + SBC _DVSOR + STA _DVSOR + LDA #0 + SBC _DVSOR+1 + STA _DVSOR+1 +CHKDE + LDA _DVEND+1 + BPL DODIV ; BR IF DVEND IS POS + LDA #0 ; SUB DVEND FROM ZERO + SEC + SBC _DVEND + STA _DVEND + LDA #0 + SBC _DVEND+1 + STA _DVEND+1 +DODIV + JSR UDIV + BCS EREXIT ; EXIT IF DIV BY 0 + LDA _SQUOT + BPL DOREM ; BR IF Q IS POS + LDA #0 + SEC + SBC _DVEND + STA _DVEND + LDA #0 + SBC _DVEND+1 + STA _DVEND+1 +DOREM + LDA _SREMD + BPL OKEXIT ; BR IF REM IS POS + LDA #0 + SEC + SBC _DVEND+2 + STA _DVEND+2 + LDA #0 + SBC _DVEND+3 + STA _DVEND+3 + JMP OKEXIT +EREXIT + LDA #0 + STA _DVEND + STA _DVEND+1 ;QUOTIENT = 0 + STA _DVEND+2 + STA _DVEND+3 ; REMAINDER=0 + STA RETURN + STA RETURN+1 + LDA #2 + STA RETLEN + SEC ; CARRY=1 IF ERROR + BCS DVEXIT +OKEXIT + CLC ; CARRY = 0, NO ERRORS +DVEXIT + LDX _RSLTI ;GET INDEX TO RESULT + LDA _DVEND,X + TAY + LDA _DVEND+1,X + TAX + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +UDIV + LDA #0 + STA _DVEND+2 + STA _DVEND+3 + LDA _DVSOR + ORA _DVSOR+1 + BNE OKUDIV ; BR IF DVSOR NOT 0 + SEC + RTS +OKUDIV + LDX #16 ; LOOP THROUGH 16 BITS +DIVLP + ROL _DVEND ;SHFT CARRY INTO BIT 0 OF DVEND + ROL _DVEND+1 ;WHICH WILL BE THE QUOTIENT AND + ROL _DVEND+2 ;SHFT DVEND AT THE SAME TIME + ROL _DVEND+3 +CHKLT + SEC + LDA _DVEND+2 + SBC _DVSOR + TAY ; SAVE LOW BYTE IN Y + LDA _DVEND+3 + SBC _DVSOR+1 ;SUB HIGHBYTES W RES IN A + BCC DECCNT ; BR IF DVEND < DVSOR AND CARRY + STY _DVEND+2 ; ELSE + STA _DVEND+3 ;VEN(1)=DVEND(1)-DVSOR +DECCNT + DEX + BNE DIVLP + ROL _DVEND ;SHFT IN LAST CAR FOR QUOT + ROL _DVEND+1 + CLC ; NO ERRORS, CLEAR CARRY + RTS +_DVSOR DS 2 ; DIVISOR +_DVEND DS 4 ; DIVIDEND[0] AND QUOTIENT + ; DIVIDEND[1] AND REMAINDER +_SQUOT DS 1 ; SIGN OF QUOTIENT +_SREMD DS 1 ; SIGN OF REMAINDER +_RSLTI DS 1 ; RESULT INDEX diff --git a/disks/disk4_math/T.DIVD8.SUB b/source/disk4_math/T.DIVD8.SUB similarity index 100% rename from disks/disk4_math/T.DIVD8.SUB rename to source/disk4_math/T.DIVD8.SUB diff --git a/source/disk4_math/T.DIVD8.SUB.MIN b/source/disk4_math/T.DIVD8.SUB.MIN new file mode 100644 index 0000000..acd152c --- /dev/null +++ b/source/disk4_math/T.DIVD8.SUB.MIN @@ -0,0 +1,33 @@ +DIVD8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DVEND + PLA + STA :DVSOR + LDA #$00 + LDY #8 + ASL :DVSOR +:L1 ROL + CMP :DVEND + BCC :L2 + SBC :DVEND +:L2 ROL :DVSOR + DEY + BNE :L1 + STA :REM + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY :REM ; REMAINDER TO Y + LDA #1 + STA RETLEN + LDA :DVSOR + STA RETURN + RTS +:REM DS 1 +:DVEND DS 1 +:DVSOR DS 1 diff --git a/disks/disk4_math/T.MATH.DEMO b/source/disk4_math/T.MATH.DEMO similarity index 100% rename from disks/disk4_math/T.MATH.DEMO rename to source/disk4_math/T.MATH.DEMO diff --git a/source/disk4_math/T.MATH.HOOKS b/source/disk4_math/T.MATH.HOOKS new file mode 100644 index 0000000..c409e7b --- /dev/null +++ b/source/disk4_math/T.MATH.HOOKS @@ -0,0 +1,27 @@ +* +GETNUM EQU $FFA7 ; ASCII TO HEX IN 3E & 3F +RNDL EQU $4E ; RANDOM NUMBER LOW +RNDH EQU $4F ; RANDOM NUMBER HIGH +* +FAC EQU $9D ; FLOATING POINT ACCUM +FSUB EQU $E7A7 ; FLOATING POINT SUBTRACT +FADD EQU $E7BE +FMULT EQU $E97F ; FP MULTIPLY +FDIV EQU $EA66 ; FP DIVIDE +FMULTT EQU $E982 +FDIVT EQU $EA69 +FADDT EQU $E7C1 +FSUBT EQU $E7AA +* +MOVFM EQU $EAF9 ; MOVE FAC > MEM +MOVMF EQU $EB2B ; MOVE MEM > FAC +NORM EQU $E82E +CONUPK EQU $E9E3 +* +FLOG EQU $E941 ; LOGARITHM +FSQR EQU $EE8D ; SQUARE ROOT +FCOS EQU $EFEA ; FP COSINE +FSIN EQU $EFF1 ; SINE +FTAN EQU $F03A ; TANGENT +FATN EQU $F09E ; ATANGENT +* diff --git a/disks/disk4_math/T.MATH.MAC b/source/disk4_math/T.MATH.MAC similarity index 100% rename from disks/disk4_math/T.MATH.MAC rename to source/disk4_math/T.MATH.MAC diff --git a/source/disk4_math/T.MATH.MAC.MIN b/source/disk4_math/T.MATH.MAC.MIN new file mode 100644 index 0000000..bad6721 --- /dev/null +++ b/source/disk4_math/T.MATH.MAC.MIN @@ -0,0 +1,78 @@ +ADD16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR ADDIT16 + <<< +SUB16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR SUBT16 + <<< +MUL16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR MULT16 + <<< +DIV16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SDIVD16 + ELSE + JSR UDIVD16 ; UNSIGNED + FIN + <<< +REM16 MAC + _ISLIT ]1 + _ISLIT ]2 + IF S,]3 ; SIGNED + JSR SREMD16 + ELSE + JSR UREMD16 ; UNSIGNED + FIN + <<< +RNDB MAC + LDA ]1 ; LOW + PHA + LDA ]2 ; HIGH + PHA + JSR RANDB + <<< +CMP16 MAC + _ISLIT ]1 + _ISLIT ]2 + JSR COMP16 + <<< +MUL8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR MULT8 + <<< +DIV8 MAC + LDA ]1 + PHA + LDA ]2 + PHA + JSR DIVD8 + <<< +RND16 MAC + JSR RAND16 + <<< +FPADD MAC + LDX #]1 + LDY #>]1 + JSR MOVFM + LDA #]2 + LDY #>]2 + JSR CONUPK + JSR NORM + LDA $9D + JSR FADDT + LDX #RETURN + LDY #>RETURN + JSR MOVMF + LDA #6 + STA RETLEN + <<< diff --git a/disks/disk4_math/T.MULT16.SUB b/source/disk4_math/T.MULT16.SUB similarity index 100% rename from disks/disk4_math/T.MULT16.SUB rename to source/disk4_math/T.MULT16.SUB diff --git a/source/disk4_math/T.MULT16.SUB.MIN b/source/disk4_math/T.MULT16.SUB.MIN new file mode 100644 index 0000000..31aafd7 --- /dev/null +++ b/source/disk4_math/T.MULT16.SUB.MIN @@ -0,0 +1,59 @@ +MULT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLIER + PLA + STA :MLIER+1 + PLA + STA :MCAND + PLA + STA :MCAND+1 + LDA #0 + STA :HPROD ; ZERO HIGH WORD + STA :HPROD+1 + LDX #17 ; # OF BITS IN MPLIER + ; PLUS 1. EXTRA LOOP IS + ; TO MOVE LAST CARRY INTO + ; THE PRODUCT. + CLC ; CLEAR CARRY FOR 1ST TIME + ; THROUGH LOOP. +:MULLP + ROR :HPROD+1 + ROR :HPROD + ROR :MLIER+1 + ROR :MLIER + BCC :DECCNT ; BR IF NEXT BIT OF + CLC ; NEXT BIT=1 SO ADD MCAND + LDA :MCAND + ADC :HPROD + STA :HPROD + LDA :MCAND+1 + ADC :HPROD+1 + STA :HPROD+1 ; CARRY = OVERFLOW +:DECCNT + DEX + BNE :MULLP ; CONTINUE UNTIL DONE + LDY :HPROD ; LOW BYTE OF HIGH WORD + LDX :HPROD+1 ; HIGH BYTE OF HIGH WORD + LDA :MLIER+1 + TAX + STX RETURN+1 + LDA :MLIER + TAY + STY RETURN + LDA :HPROD + STA RETURN+2 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :HPROD ;24BIT + RTS +:MCAND DS 3 +:MLIER DS 3 +:HPROD DS 2 diff --git a/disks/disk4_math/T.MULT8.SUB b/source/disk4_math/T.MULT8.SUB similarity index 100% rename from disks/disk4_math/T.MULT8.SUB rename to source/disk4_math/T.MULT8.SUB diff --git a/source/disk4_math/T.MULT8.SUB.MIN b/source/disk4_math/T.MULT8.SUB.MIN new file mode 100644 index 0000000..46ed425 --- /dev/null +++ b/source/disk4_math/T.MULT8.SUB.MIN @@ -0,0 +1,41 @@ +MULT8 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MUL1 + PLA + STA :MUL2 + LDA #$00 + TAY + TAX + STY :MUL1H + BEQ :GOLOOP +:DOADD + CLC + ADC :MUL1 + TAY + TXA + ADC :MUL1H + TAX + TYA +:LP + ASL :MUL1 + ROL :MUL1H +:GOLOOP + LSR :MUL2 + BCS :DOADD + BNE :LP + LDA RETADR+1 + PHA + LDA RETADR + PHA + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:MUL1 DS 1 +:MUL2 DS 1 +:MUL1H DS 1 diff --git a/disks/disk4_math/T.RAND16.SUB b/source/disk4_math/T.RAND16.SUB similarity index 100% rename from disks/disk4_math/T.RAND16.SUB rename to source/disk4_math/T.RAND16.SUB diff --git a/source/disk4_math/T.RAND16.SUB.MIN b/source/disk4_math/T.RAND16.SUB.MIN new file mode 100644 index 0000000..4a97a0c --- /dev/null +++ b/source/disk4_math/T.RAND16.SUB.MIN @@ -0,0 +1,34 @@ +RAND16 + LDA RNDL + STA :SEED + LDA RNDH + STA :SEED+1 + LDA :SEED + BEQ :LOW0 + ASL :SEED + LDA :SEED+1 + ROL + BCC :NOEOR +:DOEOR ; HIGH BYTE IN A + EOR #>$0369 + STA :SEED+1 + LDA :SEED + EOR #<$0369 + STA :SEED + JMP :EXIT +:LOW0 + LDA :SEED+1 + BEQ :DOEOR + ASL + BEQ :NOEOR + BCS :DOEOR +:NOEOR + STA :SEED+1 +:EXIT LDX :SEED+1 + LDY :SEED + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + RTS +:SEED DS 2 diff --git a/disks/disk4_math/T.RAND8.SUB b/source/disk4_math/T.RAND8.SUB similarity index 100% rename from disks/disk4_math/T.RAND8.SUB rename to source/disk4_math/T.RAND8.SUB diff --git a/source/disk4_math/T.RAND8.SUB.MIN b/source/disk4_math/T.RAND8.SUB.MIN new file mode 100644 index 0000000..ae20a11 --- /dev/null +++ b/source/disk4_math/T.RAND8.SUB.MIN @@ -0,0 +1,17 @@ +RAND8 + LDX #8 + LDA RNDL+0 +:A + ASL ;SHIFT THE REG + ROL RNDL+1 + BCC :B + EOR #$2D ; APPLY XOR FEEDBACK +:B + DEX + BNE :A + STA RNDL+0 + STA RETURN + LDY #1 + STY RETLEN + CMP #0 ; RELOAD FLAGS + RTS diff --git a/disks/disk4_math/T.RANDB.SUB b/source/disk4_math/T.RANDB.SUB similarity index 100% rename from disks/disk4_math/T.RANDB.SUB rename to source/disk4_math/T.RANDB.SUB diff --git a/source/disk4_math/T.RANDB.SUB.MIN b/source/disk4_math/T.RANDB.SUB.MIN new file mode 100644 index 0000000..b0805bb --- /dev/null +++ b/source/disk4_math/T.RANDB.SUB.MIN @@ -0,0 +1,107 @@ +RANDB + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :NEWMAX + PLA + STA :NEWMIN + LDA #1 + STA :OLDMIN + LDA #255 + STA :OLDMAX + LDX #8 + LDA RNDL+0 +:AA + ASL + ROL RNDL+1 + BCC :BB + EOR #$2D ; MAGIC NUMBER +:BB + DEX + BNE :AA + STA RNDL+0 + CMP #0 + STA :OLDVAL + LDA :OLDMAX + SEC + SBC :OLDMIN + STA :OLDRANGE + LDA :NEWMAX + SEC + SBC :NEWMIN + STA :NEWRANGE + LDA :OLDVAL + SEC + SBC :OLDMIN + STA :VALRANGE + LDA #00 + TAY + STY :NUM1HI + BEQ :ENTLP +:DOADD + CLC + ADC :VALRANGE + TAX + TYA + ADC :NUM1HI + TAY + TXA +:MLP + ASL :VALRANGE + ROL :NUM1HI +:ENTLP + LSR :NEWRANGE + BCS :DOADD + BNE :MLP + STA :MULRANGE + STY :MULRANGE+1 +:DIVIDE + LDA #0 + STA :REMAIN + STA :REMAIN+1 + LDX #16 +:DIVLP + ASL :MULRANGE + ROL :MULRANGE+1 + ROL :REMAIN + ROL :REMAIN+1 + LDA :REMAIN + SEC + SBC :OLDRANGE + TAY + LDA :REMAIN+1 + SBC :OLDRANGE+1 + BCC :SKIP + STA :REMAIN+1 + STY :REMAIN + INC :DIVRANGE +:SKIP DEX + BNE :DIVLP + LDA :DIVRANGE ; LO BYTE ONLY + CLC + ADC :NEWMIN + STA :NEWVAL + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA :NEWVAL ; RETURN # IN A + STA RETURN + LDX #1 + STX RETLEN + RTS +:OLDRANGE DS 2 +:NEWRANGE DS 2 +:MULRANGE DS 2 +:DIVRANGE DS 2 +:VALRANGE DS 2 +:OLDVAL DS 2 +:NEWVAL DS 2 +:OLDMIN DS 2 +:NEWMIN DS 2 +:OLDMAX DS 2 +:NEWMAX DS 2 +:NUM1HI DS 2 +:REMAIN DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.HOOKS.MIN b/source/disk4_math/T.REQUIRED.HOOKS.MIN similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.HOOKS.MIN rename to source/disk4_math/T.REQUIRED.HOOKS.MIN diff --git a/source/disk4_math/T.REQUIRED.LIB.MIN b/source/disk4_math/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk4_math/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/disks/disk6_fileio/T.REQUIRED.MAC.MIN b/source/disk4_math/T.REQUIRED.MAC.MIN similarity index 100% rename from disks/disk6_fileio/T.REQUIRED.MAC.MIN rename to source/disk4_math/T.REQUIRED.MAC.MIN diff --git a/disks/disk1_stdio/T.REQUIRED.VARS b/source/disk4_math/T.REQUIRED.VARS similarity index 73% rename from disks/disk1_stdio/T.REQUIRED.VARS rename to source/disk4_math/T.REQUIRED.VARS index 6320b13..ae2759a 100644 --- a/disks/disk1_stdio/T.REQUIRED.VARS +++ b/source/disk4_math/T.REQUIRED.VARS @@ -1,11 +1,55 @@ +* ******************************** * * * VARIABLES AND SETTINGS * * * ******************************** * +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* * SETTINGS ********************* * +MAIN_START +* ** ERROR HANDLING * ** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO @@ -25,34 +69,4 @@ * * * - JMP VAREND * -* VARIABLE DECLARATIONS ******** -* -ERRSTOP DS 1 -ERRCTRL DS 1 -ERRA DS 1 -ERRX DS 1 -ERRY DS 1 -ERRCARRY DS 1 -ERRNEG DS 1 -ERRZERO DS 1 -ERROVF DS 1 -* -** 256 BYTES DEDICATED TO RETURN -** VALUES OF VARIABLE LENGTH; CAN BE -** MODIFIED TO SUIT SMALLER OR LARGER -** NEEDS. -* -RETLEN DS 1 ; RETURN VALUE BYTE LENGTH -RETURN DS 256 -* -** 256 BYTE VALUE DEDICATED TO LARGE -** OR VARIABLE LENGTH PARAMETERS. THIS -** CAN ALSO BE CHANGED TO FIT SMALLER OR -** LARGER BOUNDS. -* -PARLEN DS 1 -PARAM DS 256 -* -VAREND diff --git a/disks/disk4_math/T.SUBT16.SUB b/source/disk4_math/T.SUBT16.SUB similarity index 100% rename from disks/disk4_math/T.SUBT16.SUB rename to source/disk4_math/T.SUBT16.SUB diff --git a/source/disk4_math/T.SUBT16.SUB.MIN b/source/disk4_math/T.SUBT16.SUB.MIN new file mode 100644 index 0000000..abd342c --- /dev/null +++ b/source/disk4_math/T.SUBT16.SUB.MIN @@ -0,0 +1,31 @@ +SUBT16 + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :SUBT + PLA + STA :SUBT+1 ; SUBTRAHEND + PLA + STA :MINU + PLA + STA :MINU+1 ; MINUEND + LDA :MINU + SEC + SBC :SUBT + TAY ; LOW BYTE + STY RETURN + LDA :MINU+1 + SBC :SUBT+1 + TAX ; HIGH BYTE + STX RETURN+1 + LDA #2 + STA RETLEN + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:MINU DS 2 +:SUBT DS 2 diff --git a/disks/disk5_strings/MINIFY b/source/disk5_strings/MINIFY similarity index 100% rename from disks/disk5_strings/MINIFY rename to source/disk5_strings/MINIFY diff --git a/disks/disk5_strings/STRINGS.DEMO b/source/disk5_strings/STRINGS.DEMO similarity index 100% rename from disks/disk5_strings/STRINGS.DEMO rename to source/disk5_strings/STRINGS.DEMO diff --git a/disks/disk5_strings/STRINGS.DEMO.S b/source/disk5_strings/STRINGS.DEMO.S similarity index 100% rename from disks/disk5_strings/STRINGS.DEMO.S rename to source/disk5_strings/STRINGS.DEMO.S diff --git a/disks/disk5_strings/T.NUM2STR.SUB b/source/disk5_strings/T.NUM2STR.SUB similarity index 100% rename from disks/disk5_strings/T.NUM2STR.SUB rename to source/disk5_strings/T.NUM2STR.SUB diff --git a/source/disk5_strings/T.NUM2STR.SUB.MIN b/source/disk5_strings/T.NUM2STR.SUB.MIN new file mode 100644 index 0000000..b93f1e9 --- /dev/null +++ b/source/disk5_strings/T.NUM2STR.SUB.MIN @@ -0,0 +1,97 @@ +NUM2STR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :VALSTR + PLA + STA :VALSTR+1 + STA :NGFLAG + BPL :GETBP ; BR IF VAL IS POS + LDA #0 + SEC + SBC :VALSTR + STA :VALSTR + LDA #0 + SBC :VALSTR+1 + STA :VALSTR+1 +:GETBP + LDA #RETURN+1 + STA ADDR1+1 + LDA #0 ; SET BUFFER TO EMPTY + LDY #0 + STA (ADDR1),Y ; BUFFER(0) = 0 +:CNVERT + LDA #0 + STA :MOD10 + STA :MOD10+1 + LDX #16 + CLC ; CLEAR CARRY +:DVLOOP + ROL :VALSTR ; SHIFT CARRY INTO DIVBIT 0 + ROL :VALSTR+1 ; WHICH WILL BE THE QUOTIENT + ROL :MOD10 ; + SHIFT DIV AT SAME TIME + ROL :MOD10+1 + SEC + LDA :MOD10 + SBC #10 + TAY ; SAVE LOWB IN REG Y + LDA :MOD10+1 + SBC #0 ; SUBTRACT CARRY + BCC :DECCNT ; BR IF DEND < DIVISOR + STY :MOD10 ; ELSE + STA :MOD10+1 ; NXT BIT OF Q IS A ONE AND SET + ; DIVIDEND = DEND - DIVISOR +:DECCNT + DEX + BNE :DVLOOP + ROL :VALSTR ; SHIFT IN LAST CARRY FOR Q + ROL :VALSTR+1 +:CONCH + LDA :MOD10 + CLC + ADC #$B0 + JSR :CONCAT + LDA :VALSTR + ORA :VALSTR+1 + BNE :CNVERT ; BR IF VALUE != 0 +:EXIT + LDA :NGFLAG + BPL :POS ; BR IF ORIG VAL POS + LDA #173 ; ELSE + JSR :CONCAT ; PUT A MINUS SIGN IN FRONT +:POS + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS ; RETURN +:CONCAT + PHA ; SAVE CHAR ON STACK + LDY #0 + LDA (ADDR1),Y ; GET CURRENT LENGTH + TAY + BEQ :EXITMR ; BR IF LENGTH=0 +:MVELP + LDA (ADDR1),Y ; GET NEXT CHAR + INY + STA (ADDR1),Y ; STORE IT + DEY + DEY + BNE :MVELP ; CONT UNTIL DONE +:EXITMR + PLA ; GET CHAR BACK FROM STACK + LDY #1 + STA (ADDR1),Y ; STORE THE CHAR + LDY #0 + LDA (ADDR1),Y ; GET LENGTH BYTE + CLC + ADC #1 ; INC LENGTH BY ONE + STA (ADDR1),Y ; UPDATE LENGTH + RTS +:NGFLAG DS 1 +:VALSTR DS 2 +:MOD10 DS 2 diff --git a/disks/disk5_strings/T.PRNSTR.SUB b/source/disk5_strings/T.PRNSTR.SUB similarity index 100% rename from disks/disk5_strings/T.PRNSTR.SUB rename to source/disk5_strings/T.PRNSTR.SUB diff --git a/source/disk5_strings/T.PRNSTR.SUB.MIN b/source/disk5_strings/T.PRNSTR.SUB.MIN new file mode 100644 index 0000000..c3998cc --- /dev/null +++ b/source/disk5_strings/T.PRNSTR.SUB.MIN @@ -0,0 +1,31 @@ +PRNSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADDRESS OF STRING + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET STRING LENGTH + STA :S1LEN +:LP + INY + LDA (ADDR1),Y ; GET CHARACTER + JSR SCOUT1 ; PRINT CHARACTER TO SCREEN + CPY :S1LEN ; IF Y < LENGTH + BNE :LP + ; LOOP; ELSE + LDY #0 + LDA (ADDR1),Y + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; STRING LENGTH IN A + LDY ADDR1 + LDX ADDR1+1 ; ADDRESS IN Y,X + RTS +:S1LEN DS 1 diff --git a/source/disk5_strings/T.REQUIRED.HOOKS.MIN b/source/disk5_strings/T.REQUIRED.HOOKS.MIN new file mode 100644 index 0000000..aad849f --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.HOOKS.MIN @@ -0,0 +1,10 @@ +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +SCRATCH EQU $19 +SCRATCH2 EQU $1E +RETADR EQU $FE +RESULT EQU $FA +RESULT2 EQU $FC +REENTRY EQU $3D0 diff --git a/source/disk5_strings/T.REQUIRED.LIB.MIN b/source/disk5_strings/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/source/disk5_strings/T.REQUIRED.MAC.MIN b/source/disk5_strings/T.REQUIRED.MAC.MIN new file mode 100644 index 0000000..1df52ed --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.MAC.MIN @@ -0,0 +1,94 @@ +_ISLIT MAC + IF #=]1 ; IF ]1 IS A LITERAL + LDA ]1/$100 ; GET HI + PHA + LDA ]1 ; GET LO + PHA + ELSE ; ]1 IS ADDRESS + LDA ]1+1 ; SO GET HIGH VAL FROM ADDR + PHA + LDA ]1 ; THEN LO VAL + PHA + FIN + <<< +_ISSTR MAC + IF "=]1 ; IF ]1 IS A STRING + JMP STRCONT +]STRTMP STR ]1 +STRCONT + LDY #0 + LDA ]STRTMP + STA PARLEN + STA PARAM +]STRLP1 + INY + LDA ]STRTMP,Y + STA PARAM,Y + CPY PARLEN + BNE ]STRLP1 + LDA #>PARAM ; GET HI + PHA + LDA #]1 ; SO GET HIBYTE OF ADDR + PHA + LDA #<]1 ; THEN LOBYTE + PHA + FIN + <<< +_GRET MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __GETRET + <<< +_SPAR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __SETPARM + <<< +_DUMP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]2 + PHA + JSR __DUMP + <<< +_PRNT MAC + JSR __P + ASC ]1 + HEX 00 + <<< +_WAIT MAC + JSR __W + <<< +_RDUMP MAC + JSR __RDMP + <<< +_ERR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]3 + PHA + LDA #<]3 + PHA + LDA #>]4 + PHA + LDA #<]4 + PHA + LDA ]5 + PHA + JSR __ERR + <<< diff --git a/source/disk5_strings/T.REQUIRED.VARS b/source/disk5_strings/T.REQUIRED.VARS new file mode 100644 index 0000000..ae2759a --- /dev/null +++ b/source/disk5_strings/T.REQUIRED.VARS @@ -0,0 +1,72 @@ +* +******************************** +* * +* VARIABLES AND SETTINGS * +* * +******************************** +* +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* +* SETTINGS ********************* +* +MAIN_START +* +** ERROR HANDLING +* +** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO +** HALT WHEN AN ERROR IS CAUGHT +* + LDA #1 + STA ERRSTOP +* +** SET ERRCTRL TO 1 IF YOU WANT ERROR CATCHING ON +** IN THE FIRST PLACE. HAVING THIS TURNED OFF WILL +** SAVE A FEW CYCLES, BUT POSSIBLY AT THE EXPENSE +** OF YOUR FRUSTRATION. CAN BE TURNED ON LATER THOUGH. +* + LDA #1 + STA ERRCTRL +* +* +* +* +* diff --git a/disks/disk5_strings/T.STR2NUM.SUB b/source/disk5_strings/T.STR2NUM.SUB similarity index 100% rename from disks/disk5_strings/T.STR2NUM.SUB rename to source/disk5_strings/T.STR2NUM.SUB diff --git a/source/disk5_strings/T.STR2NUM.SUB.MIN b/source/disk5_strings/T.STR2NUM.SUB.MIN new file mode 100644 index 0000000..04c0912 --- /dev/null +++ b/source/disk5_strings/T.STR2NUM.SUB.MIN @@ -0,0 +1,118 @@ +STR2NUM + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 ; ADRESS OF STRING + PLA ; TO CNVERT + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + TAX ; GET LENGITH; TO REGX + LDA #1 + STA :NINDEX ; INDEX = 1 + LDA #0 + STA :NACCUM ; ACCUM = 0 + STA :NACCUM+1 + STA :SNGFLAG ; SIGN IS POSITIVE + TXA + BNE :INIT1 ; EXIT WITH ACCUM = 0 + ; IF BUFFER IS EMPTY + JMP :EREXIT ; ERROR EXIT IF NOTHING + ; IN BUFFER +:INIT1 + LDY :NINDEX + LDA (ADDR1),Y + CMP #173 + BNE :PLUS ; BR IF NOT - + LDA #$0FF + STA :SNGFLAG ; ELSE SIGN IS NEGATIVE + INC :NINDEX + DEX ; DECREMENT COUNT + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; - IN BUFFER + JMP :CNVERT +:PLUS + CMP #'+' + BNE :CHKDIG ; START CONVERSION IF 1ST + INC :NINDEX + DEX ; DEC COUNT; IGNORE + SIGN + BEQ :EREXIT ; ERROR EXIT IF ONLY + ; + IN THE BUFFER +:CNVERT + LDY :NINDEX + LDA (ADDR1),Y + ; GET NEXT CHAR +:CHKDIG + CMP #$B0 ; "0" + BMI :EREXIT ; ERROR IF NOT A NUMERAL + CMP #$BA ; '9'+1; TECHNICALLY : + BPL :EREXIT ; ERR IF > 9 (NOT NUMERAL) + PHA ; PUSH DIGIT TO STACK + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 2 + LDA :NACCUM + LDY :NACCUM+1 ; SAVE ACCUM * 2 + ASL :NACCUM + ROL :NACCUM+1 + ASL :NACCUM + ROL :NACCUM+1 ; TIMES 8 + CLC + ADC :NACCUM ; SUM WITH * 2 + STA :NACCUM + TYA + ADC :NACCUM+1 + STA :NACCUM+1 ; ACCUM=ACCUM * 10 + PLA ; GET THE DIGIT NACK + SEC + SBC #$B0 + CLC ; CONVERT STR TO BIN + ADC :NACCUM + STA :NACCUM + BCC :D2B1 ; BRANCH IF NO CARRY TO HBYTE + INC :NACCUM+1 ; ELSE INC HIGH BYTE +:D2B1 + INC :NINDEX ;INC TO NEXT CHARACTER + DEX + BNE :CNVERT ; CONTINUE CONVERSION + LDA :SNGFLAG + BPL :OKEXIT ; BR IF VAL IS POSITIVE + LDA #0 ; ELSE REPLACE WITH -RESULT + SEC + SBC :NACCUM + STA :NACCUM + LDA #0 + SBC :NACCUM+1 + STA :NACCUM+1 +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC + LDA ERRCTRL + CMP #1 + BEQ :CHKERR + JMP :ERREND +:CHKERR + _ERR :E_SID;:E_MSG;:E_DUMP;:NACCUM;#4 +:ERREND +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDX :NACCUM+1 + LDY :NACCUM + STY RETURN + STX RETURN+1 + LDA #2 + STA RETLEN + LDA :NINDEX + RTS +:NACCUM DS 2 +:SNGFLAG DS 1 +:NINDEX DS 1 +:E_SID ASC "STR2NUM (S2N MACRO)",00 +:E_MSG ASC "ERR! NO DATA, OR NOT A NUMERAL VALUE",00 +:E_DUMP ASC "DUMPING :NACCUM(2) :SNGFLAG(1) :NINDEX(1)",00 diff --git a/disks/disk5_strings/T.STRCAT.SUB b/source/disk5_strings/T.STRCAT.SUB similarity index 100% rename from disks/disk5_strings/T.STRCAT.SUB rename to source/disk5_strings/T.STRCAT.SUB diff --git a/source/disk5_strings/T.STRCAT.SUB.MIN b/source/disk5_strings/T.STRCAT.SUB.MIN new file mode 100644 index 0000000..c3dc7d4 --- /dev/null +++ b/source/disk5_strings/T.STRCAT.SUB.MIN @@ -0,0 +1,94 @@ +STRCAT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN ; MAXIMUM CONCAT LENGTH + PLA + STA ADDR2 ; STRING 1 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR2+1 + PLA + STA ADDR1 ; STRING 2 ADDRESS + PLA ; IN ZERO PAGE + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET CUR LGTH OF S1, STORE + STA :S1LEN + STA :S1IND + INC :S1IND ; START CONCAT AT END OF S1 + LDA (ADDR2),Y ; GET LENGTH OF S2, STORE + STA :S2LEN + LDA #1 + STA :S2IND ; START CONCAT AT BEGIN OF S2 + LDA :S2LEN ; GET S2 LENGTH + CLC + ADC :S1LEN ; ADD TO LENGTH OF S1 + STA :S3LEN ; STORE CONCAT LENGTH + BCS :TOOLONG ; BR IF LENGTH > 255 + CMP :MLEN ; CHECK AGAINST MAX LENGTH + BEQ :LENOK ; BR IF LENGTH < MAX + BCC :LENOK +:TOOLONG + LDA #$0FF + STA :SOVF ; INDICATE OVERFLOW + LDA :MLEN + SEC + SBC :S1LEN + BCC :EXIT + STA :SCNT ; ORIG STR WAS TOO LONG + LDA :MLEN + STA :S1LEN ; SET STR1 LENGTH TO MAX + JMP :DOCAT +:LENOK + STA :S1LEN + LDA #0 ; SAVE SUM OF 2 LENGTHS + STA :SOVF ; INDICATE NO OVERFLOW + LDA :S2LEN + STA :SCNT ; COUNT = LENGTH OF STRING 2 +:DOCAT + LDA :SCNT + BEQ :EXIT ; EXIT IF NO BYTES LEFT +:CATLP + LDY :S2IND + LDA (ADDR2),Y ; GET NEXT BYTE FROM S2 + LDY :S1IND + STA (ADDR1),Y ; MOVE IT TO END OF STR 1 + INC :S1IND ;INC STRING 1 INDEX + INC :S2IND ; INC STRING 2 INDEX + DEC :SCNT ; DECREMENT COUNTER + BNE :CATLP ; CONT UNTIL __SCNT = 0 +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + LDA :SOVF + ROR A + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; LENGTH OF STRING + STA RETLEN + LDA #1 +:RLP + LDA (ADDR1),Y + STA RETURN,Y + CPY RETLEN + INY + BNE :RLP + LDA RETLEN + LDY #0 + STA (ADDR1),Y + LDX :S3LEN ; RETURN FINAL LENGTH + RTS +:S3LEN DS 1 +:S1LEN DS 1 +:S1IND DS 1 +:S2LEN DS 1 +:S2IND DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SOVF DS 1 diff --git a/disks/disk5_strings/T.STRCOMP.SUB b/source/disk5_strings/T.STRCOMP.SUB similarity index 100% rename from disks/disk5_strings/T.STRCOMP.SUB rename to source/disk5_strings/T.STRCOMP.SUB diff --git a/source/disk5_strings/T.STRCOMP.SUB.MIN b/source/disk5_strings/T.STRCOMP.SUB.MIN new file mode 100644 index 0000000..48bb0ae --- /dev/null +++ b/source/disk5_strings/T.STRCOMP.SUB.MIN @@ -0,0 +1,47 @@ +STRCMP + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING 1 + CMP (ADDR2),Y + BCC :BEGCMP ; IF STRING 2 IS SHORTER THEN + LDA (ADDR2),Y ; USE ITS LENGTH INSTEAD +:BEGCMP + TAX ; X IS LENGTH OF SHORTER STRING + BEQ :TSTLEN ; BR IF LENGTH IS 0 + LDY #1 ; POINT AT FIRST CHAR OF STRINGS +:CMPLP + LDA (ADDR1),Y + CMP (ADDR2),Y + BNE :EXIT ; BR IF CHARS NOT EQUAL + ; Z,C WILL BE PROPERLY SET + ; OR CLEARED + ; ELSE + INY ; NEXT CHAR + DEX ; DECREMENT COUNTER + BNE :CMPLP ; CONTINUE UNTIL ALL BYTES PAIRED +:TSTLEN + LDY #0 ; COMPARE LENGTHS + LDA (ADDR1),Y + CMP (ADDR2),Y ; SET OR CLEAR THE FLAGS +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDY #0 + LDA (ADDR1),Y ; GET STR1 LENGTH + TAX ; RETURN IN X + LDA (ADDR2),Y ; STR2 LENGTH + TAY ; RETURN IN Y + RTS diff --git a/disks/disk5_strings/T.STRINGS.DEMO b/source/disk5_strings/T.STRINGS.DEMO similarity index 100% rename from disks/disk5_strings/T.STRINGS.DEMO rename to source/disk5_strings/T.STRINGS.DEMO diff --git a/source/disk5_strings/T.STRINGS.HOOKS b/source/disk5_strings/T.STRINGS.HOOKS new file mode 100644 index 0000000..21ac4d5 --- /dev/null +++ b/source/disk5_strings/T.STRINGS.HOOKS @@ -0,0 +1,9 @@ +* +*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=* +* * +* STRINGS.HOOKS * +* * +*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-* +* +SCOUT1 EQU $FDF0 +* diff --git a/disks/disk5_strings/T.STRINGS.MAC b/source/disk5_strings/T.STRINGS.MAC similarity index 100% rename from disks/disk5_strings/T.STRINGS.MAC rename to source/disk5_strings/T.STRINGS.MAC diff --git a/source/disk5_strings/T.STRINGS.MAC.MIN b/source/disk5_strings/T.STRINGS.MAC.MIN new file mode 100644 index 0000000..f910b05 --- /dev/null +++ b/source/disk5_strings/T.STRINGS.MAC.MIN @@ -0,0 +1,65 @@ +SCMP MAC + _ISSTR ]1 + _ISSTR ]2 + JSR STRCMP + <<< +SCAT MAC + _ISSTR ]1 + _ISSTR ]2 + LDA ]3 ; MAX SIZE; BYTE + PHA + JSR STRCAT + <<< +SPRN MAC + LDA #>]1 ; ADDRESS OF STRING + PHA + LDA #<]1 + PHA + JSR PRNSTR + <<< +TOSTR MAC + _ISLIT ]1 + JSR NUM2STR + <<< +TONUM MAC + _ISSTR ]1 + JSR STR2NUM + <<< +SPOS MAC + _ISSTR ]1 + _ISSTR ]2 + JSR SUBPOS + <<< +SCPY MAC + _ISSTR ]1 + LDA ]2 ; STARTING INDEX + PHA + LDA ]3 ; SUBSTRING LENGTH + PHA + LDA ]4 ; MAX LENGTH OF SUBSTR + PHA + JSR SUBCOPY + <<< +SDEL MAC + LDA #>]1 ; STRING ADDRESS + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX BYTE + PHA + LDA ]3 ; LENGTH + PHA + JSR SUBDEL + <<< +SINS MAC + LDA #>]1 ; PARENT STRING + PHA + LDA #<]1 + PHA + LDA ]2 ; INDEX + PHA + LDA ]3 ; MAXIMUM LENGTH + PHA + _ISSTR ]4 + JSR SUBINS + <<< diff --git a/disks/disk5_strings/T.SUBCOPY.SUB b/source/disk5_strings/T.SUBCOPY.SUB similarity index 100% rename from disks/disk5_strings/T.SUBCOPY.SUB rename to source/disk5_strings/T.SUBCOPY.SUB diff --git a/source/disk5_strings/T.SUBCOPY.SUB.MIN b/source/disk5_strings/T.SUBCOPY.SUB.MIN new file mode 100644 index 0000000..8afe83d --- /dev/null +++ b/source/disk5_strings/T.SUBCOPY.SUB.MIN @@ -0,0 +1,99 @@ +SUBCOPY + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :MLEN + PLA + STA :SCNT + STA RETLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA #RETURN + STA ADDR2+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA + LDA #0 + STA :S2LEN ; DESTINATION LENGTH = 0 + STA :SCERR ; ASSUME NO ERRORS + LDA :SCNT + BEQ :OKEXIT ; BR IF 0 BYTES TO COPY, + LDA :MLEN + BEQ :EREXIT ; ERROR EXIT IF SUBSTR HAS + LDA :SINDEX + BEQ :EREXIT ; ERROR EXIT IF START IDX = 0 + LDY #0 + LDA (ADDR1),Y ; + STA :S1LEN ; GET LENGTH OF SOURCE STRING + CMP :SINDEX ; COMPARE TO STARTING INDEX + BCC :EREXIT ; ERROR EXIT IF INDEX TOO BIG + LDA :SINDEX + CLC + ADC :SCNT + BCS :RECALC + TAX ; BR IF INDEX + COUNT > 255 + DEX + CPX :S1LEN + BCC :CNT10K ; BR IF IND + CNT - 1 < S1LEN + BEQ :CNT10K ; OR EQUAL +:RECALC + LDA :S1LEN ; RECALCULATE COUNT + SEC + SBC :SINDEX + STA :SCNT + INC :SCNT ; CNT = S1LEN - IND + 1 + LDA #$0FF + STA :SCERR ; INDICATE TRUNCATION +:CNT10K + LDA :SCNT + CMP :MLEN ; IF CNT > M SUBSTR LEN ? + BCC :CNT20K ; BR IF CNT < MAXLEN + BEQ :CNT20K ; BR IF CNT = MAXLEN + LDA :MLEN + STA :SCNT ; ELSE CNT = MAXLEN + LDA #$0FF + STA :SCERR ; INDICATE DEST STR OVERFLOW +:CNT20K + LDX :SCNT ; REG X WILL BE COUNTER + BEQ :EREXIT ; ERR IF 0 + LDA #1 ; START WITH 1ST CHAR IN DEST + STA :S2LEN ; RUNNING DEST INDEX + ; __SINDEX IS SRC INDEX +:MVLP + LDY :SINDEX + LDA (ADDR1),Y ; GET NEXT SRC CHAR + LDY :S2LEN + STA (ADDR2),Y ; MOVE NEXT CHAR TO DEST + INC :SINDEX ; INC SRC INDEX + INC :S2LEN ; INC DEST INDEX + DEX ; DECREMENT COUNTER + BNE :MVLP ; CONT UNTIL CNT = 0 + DEC :S2LEN ; SUBSTR LEN=FINAL DEST IND-1 + LDA :SCERR ; CHECK FOR ANY ERRORS + BNE :EREXIT ; BR IF STR TRUNCATED OR OVERFLOW +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC +:EXIT + LDA :S2LEN + LDY #0 + STA (ADDR2),Y + STA RETLEN + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:MLEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBDEL.SUB b/source/disk5_strings/T.SUBDEL.SUB similarity index 100% rename from disks/disk5_strings/T.SUBDEL.SUB rename to source/disk5_strings/T.SUBDEL.SUB diff --git a/source/disk5_strings/T.SUBDEL.SUB.MIN b/source/disk5_strings/T.SUBDEL.SUB.MIN new file mode 100644 index 0000000..977f395 --- /dev/null +++ b/source/disk5_strings/T.SUBDEL.SUB.MIN @@ -0,0 +1,81 @@ +SUBDEL + PLA + TAY + PLA + TAX + PLA + STA :SCNT + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDY #0 + STY :SCERR + LDA (ADDR1),Y + STA :S1LEN ; GET STRING LENGTH + LDA :SCNT + BEQ :OKEXIT + LDA :SINDEX + BEQ :ERREXIT ; ERR EXIT IF START = 0 + LDA :S1LEN + CMP :SINDEX + BCC :ERREXIT + LDA :SINDEX + CLC + ADC :SCNT + BCS :TRUNC ;TRUNCATE IF INDEX + STA :SIDX ; SAVE INDEX + COUNT AS + TAX ; X = INDEX + COUNT + DEX + CPX :S1LEN + BCC :CNTOK ; BR IF IND + CNT - 1 + BEQ :TRUNC ; TRUNC BUT NO ERROR-- + LDA #$0FF + STA :SCERR ; INDICATE ERROR - NOT +:TRUNC + LDX :SINDEX ; STRING LENGTH = + DEX + STX :S1LEN + LDA :SCERR + BEQ :OKEXIT + BNE :ERREXIT +:CNTOK + LDA :S1LEN ; GET STR LENGTH + SEC + SBC :SIDX ; SUBTRACT START INDEX + TAX + INX + BEQ :OKEXIT ; ADD 1 TO INCLUDE LAST +:MVLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y ;MOVE IT DOWN + INC :SINDEX + INC :SIDX ; INC DEST, SRC INDEXES + DEX + BNE :MVLP ; CONT UNTIL CNT = 0 + LDX :SINDEX + DEX ; START LENGTH = FINAL + STX :S1LEN +:OKEXIT + CLC + BCC :EXIT +:ERREXIT + SEC +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y ; SET LENGTH OF STRING + RTS +:S1LEN DS 1 +:SCNT DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBINS.SUB b/source/disk5_strings/T.SUBINS.SUB similarity index 100% rename from disks/disk5_strings/T.SUBINS.SUB rename to source/disk5_strings/T.SUBINS.SUB diff --git a/source/disk5_strings/T.SUBINS.SUB.MIN b/source/disk5_strings/T.SUBINS.SUB.MIN new file mode 100644 index 0000000..84b4dd2 --- /dev/null +++ b/source/disk5_strings/T.SUBINS.SUB.MIN @@ -0,0 +1,120 @@ +SUBINS + PLA + TAY + PLA + TAX + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA :MLEN + PLA + STA :SINDEX + PLA + STA ADDR1 + PLA + STA ADDR1+1 + TXA + PHA + TYA + PHA + LDA #0 + STA :SCERR ; ASSUME NO ERR WILL BE FOUND + LDY #0 + LDA (ADDR1),Y + STA :S1LEN ; GET LENGTH OF STRING + LDA (ADDR2),Y + STA :S2LEN ; GET LENGTH OF SUB + BNE :IDX0 + JMP :OKEXIT ; EXIT OF NO INSERT/ERR +:IDX0 + LDA :SINDEX + BNE :CHKLEN ; BR OF INDEX NOT 0 + JMP :EREXIT ; ELSE ERROR EXIT +:CHKLEN + LDA :S2LEN ; GET SUBSTR LENGTH + CLC + ADC :S1LEN + BCS :TRUNC ;TRUN IF S1+S2 LENGTH > 255 + CMP :MLEN ; + BCC :IDXLEN ; BR IF S1+S2 LEN < MAX LENGTH + BEQ :IDXLEN ; BR IF EQUAL +:TRUNC + LDA :MLEN ; SUBSTR LEN = MLEN - STR LEN + SEC + SBC :S1LEN + BCC :EREXIT + BEQ :EREXIT ; ERR IF MLEN < STR LEN OR 0 + STA :S2LEN + LDA #$0FF + STA :SCERR ; INDICATE SUBSTR WAS TRUNCATED +:IDXLEN + LDA :S1LEN + CMP :SINDEX ; + BCS :LENOK ; BR IF INDEX WITHIN STR + LDX :S1LEN ; ELSE CONCAT SUB AT END OF STR + INX + STX :SINDEX ; START RIGHT AFTER END OF STR + LDA #$0FF + STA :SCERR ; INDICATE ERR IN INSERT + LDA :S1LEN + CLC + ADC :S2LEN + STA :S1LEN ; ADD LENGTHS TOGETHER + JMP :MVESUB ; PERFORM MOVE, NOTHING ELSE TODO +:LENOK + LDA :S1LEN + SEC + SBC :SINDEX + TAX + INX ; X= NUM OF CHARS TO MOV + LDA :S1LEN + STA :SIDX ; SRC ENDS AT ORIG STR END + CLC + ADC :S2LEN + STA :SBIDX ; DEST ENDS FURTHER BY SUB LEN + STA :S1LEN ; SET NEW LENGTH TO THIS ALSO +:OPNLP + LDY :SIDX + LDA (ADDR1),Y + LDY :SBIDX + STA (ADDR1),Y ; MOVE IT UP IN MEM + DEC :SIDX + DEC :SBIDX ; DE DEST IDX, COUNTER + DEX + BNE :OPNLP ; CONT UNTIL COUNTER = 0 +:MVESUB + LDA #1 + STA :SIDX + ; START AT INDEX IN THE STRING + LDX :S2LEN ; X = NUM OF CHARS TO MOVE +:MVELP + LDY :SIDX + LDA (ADDR2),Y ; GET NEXT CHAR + LDY :SINDEX + STA (ADDR1),Y + INC :SIDX ; INC SUBSTR INDEX + INC :SINDEX ; INC STR INDEX + DEX ; DEC COUNTER + BNE :MVELP ; CONT UNTIL COUNTER = 0 + LDA :SCERR ; GET ERROR FLAG + BNE :EREXIT ; BR IF SUBSTR WAS TRUNCED +:OKEXIT + CLC + BCC :EXIT +:EREXIT + SEC ; ERROR EXIT +:EXIT + LDA :S1LEN + LDY #0 + STA (ADDR1),Y + RTS +:S1LEN DS 1 +:S2LEN DS 1 +:SUBLEN DS 1 +:MLEN DS 1 +:SINDEX DS 1 +:SIDX DS 1 +:SBIDX DS 1 +:SCERR DS 1 diff --git a/disks/disk5_strings/T.SUBPOS.SUB b/source/disk5_strings/T.SUBPOS.SUB similarity index 100% rename from disks/disk5_strings/T.SUBPOS.SUB rename to source/disk5_strings/T.SUBPOS.SUB diff --git a/source/disk5_strings/T.SUBPOS.SUB.MIN b/source/disk5_strings/T.SUBPOS.SUB.MIN new file mode 100644 index 0000000..4e15875 --- /dev/null +++ b/source/disk5_strings/T.SUBPOS.SUB.MIN @@ -0,0 +1,78 @@ +SUBPOS + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 + PLA + STA ADDR2+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDA RETADR+1 + PHA + LDA RETADR + PHA +:POS + LDY #0 + LDA (ADDR1),Y ; GET LENGTH OF STRING + BEQ :NOTFND ; EXIT IF LENGTH = 0 + STA :SLEN + LDA (ADDR2),Y ; GET SUBSTR LENGTH + BEQ :NOTFND ; EXIT IF SUB LENGTH = 0 + STA :SUBLEN + LDA :SUBLEN + CMP :SLEN + BEQ :LENOK + BCS :NOTFND ; CANNOT FIND SUBSTR IF +:LENOK + LDA #1 + STA :SINDEX ; START LOOKING AT FIRST + ; CHARACTER OF STRING + LDA :SLEN ; CONT UNTIL REMAINING STR + ; TOO SHORT + SEC ; COUNT=STR LEN - SUB LEN+1 + SBC :SUBLEN + STA :SCOUNT + INC :SCOUNT +:SLP1 + LDA :SINDEX + STA :SIDX ; START STR AT INDEX + LDA #1 + STA :SUBIDX ; START SUB IND AT 1 +:CMPLP + LDY :SIDX + LDA (ADDR1),Y ; GET NEXT CHAR FROM STR + LDY :SUBIDX + CMP (ADDR2),Y ; COMPARE TO NEXT SUB CHAR + BNE :SLP2 ; BR IF SUB NOT HERE + LDY :SUBIDX + CPY :SUBLEN ; TEST IF WE ARE DONE + BEQ :FOUND ; BR IF ALL CHARS WERE EQUAL + INY ; ELSE INC TO NEXT CHAR + STY :SUBIDX + INC :SIDX + JMP :CMPLP ; CONTINUE +:SLP2 + INC :SINDEX ; INCREMENT INDEX + DEC :SCOUNT ; DEC COUNT + BNE :SLP1 ; BR IF NOT DONE + BEQ :NOTFND ; ELSE EXIT TO NOT FOUND +:FOUND + LDA :SINDEX ; FOUND, A = STARTING IDX + JMP :EXIT +:NOTFND + LDA #0 ; SUB NOT FOUND, A=0 +:EXIT + STA RETURN + LDY #1 + STY RETLEN + RTS +:SLEN DS 1 +:SUBLEN DS 1 +:SINDEX DS 1 +:SUBIDX DS 1 +:SCOUNT DS 1 +:SIDX DS 1 diff --git a/disks/disk6_fileio/FILEIO.DEMO b/source/disk6_fileio/FILEIO.DEMO similarity index 100% rename from disks/disk6_fileio/FILEIO.DEMO rename to source/disk6_fileio/FILEIO.DEMO diff --git a/disks/disk6_fileio/FILEIO.DEMO.S b/source/disk6_fileio/FILEIO.DEMO.S similarity index 100% rename from disks/disk6_fileio/FILEIO.DEMO.S rename to source/disk6_fileio/FILEIO.DEMO.S diff --git a/source/disk6_fileio/MAKEEXEC b/source/disk6_fileio/MAKEEXEC new file mode 100644 index 0000000..f8d2cfd --- /dev/null +++ b/source/disk6_fileio/MAKEEXEC @@ -0,0 +1,8 @@ + 10 HOME + 20 PRINT "BUILDING EXEC FILE..." + 30 PRINT CHR$ (4);"OPEN RUNDEMO.EXEC" + 40 PRINT CHR$ (4);"WRITE RUNDEMO.EXEC" + 50 PRINT "BLOAD FILEIO.DEMO" + 60 PRINT "CALL -151" + 70 PRINT "6000G" + 80 PRINT CHR$ (4);"CLOSE RUNDEMO.EXEC" diff --git a/disks/disk6_fileio/MINIFY b/source/disk6_fileio/MINIFY similarity index 100% rename from disks/disk6_fileio/MINIFY rename to source/disk6_fileio/MINIFY diff --git a/disks/disk6_fileio/RUNDEMO.EXEC b/source/disk6_fileio/RUNDEMO.EXEC similarity index 100% rename from disks/disk6_fileio/RUNDEMO.EXEC rename to source/disk6_fileio/RUNDEMO.EXEC diff --git a/disks/disk6_fileio/T.BINLOAD.SUB b/source/disk6_fileio/T.BINLOAD.SUB similarity index 100% rename from disks/disk6_fileio/T.BINLOAD.SUB rename to source/disk6_fileio/T.BINLOAD.SUB diff --git a/source/disk6_fileio/T.BINLOAD.SUB.MIN b/source/disk6_fileio/T.BINLOAD.SUB.MIN new file mode 100644 index 0000000..8986bc7 --- /dev/null +++ b/source/disk6_fileio/T.BINLOAD.SUB.MIN @@ -0,0 +1,69 @@ +BINLOAD + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$CC ; L + JSR FCOUT + LDA #$CF ; O + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$C4 ; D + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINLOAD (BLOAD MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk6_fileio/T.BINSAVE.SUB b/source/disk6_fileio/T.BINSAVE.SUB similarity index 100% rename from disks/disk6_fileio/T.BINSAVE.SUB rename to source/disk6_fileio/T.BINSAVE.SUB diff --git a/source/disk6_fileio/T.BINSAVE.SUB.MIN b/source/disk6_fileio/T.BINSAVE.SUB.MIN new file mode 100644 index 0000000..e848e23 --- /dev/null +++ b/source/disk6_fileio/T.BINSAVE.SUB.MIN @@ -0,0 +1,69 @@ +BINSAVE + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR2 ; CMD STRING ADDR + PLA + STA ADDR2+1 + LDA #1 + STA $AAB6 ; DOS LANG FLAG + STA $75+1 ; NOT IN DIRECT MODE + STA $33 ; NOT IN DIRECT MODE + LDA ERRCTRL + CMP #1 + BEQ :CHKERR0 + JMP :ERREND +:CHKERR0 + LDA #$FF ; TURN ON LOCAL ERR HANDLING + STA $D8 + LDA #<:CHKERR + STA $9D5A ; DOS ERROR HANDLING ADDR + LDA #>:CHKERR + STA $9D5B + JMP :ERREND +:CHKERR + LDY #0 + STY $D8 ; RESUME NORMAL ERROR CTRL + _ERR :E_SID;:E_MSG;:E_DUMP;ADDR2;#2 + BRK +:ERREND + LDA #$8D + JSR FCOUT + LDA #$84 ; CTRL-D + JSR FCOUT + LDA #$C2 ; B + JSR FCOUT + LDA #$D3 ; S + JSR FCOUT + LDA #$C1 ; A + JSR FCOUT + LDA #$D6 ; V + JSR FCOUT + LDA #$C5 ; E + JSR FCOUT + LDA #$A0 ; [SPACE] + JSR FCOUT + LDY #0 + LDA (ADDR2),Y + STA :SLEN + LDY #1 +:LP + LDA (ADDR2),Y + JSR FCOUT + INY + CPY :SLEN + BCC :LP + BEQ :LP + LDA #$8D + JSR FCOUT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 +:E_SID ASC "BINSAVE (BSAV MACRO)",00 +:E_DUMP ASC "DUMPING STRING ADDRESS...",00 +:E_MSG ASC "INPUT/OUTPUT ERROR!!!",00 diff --git a/disks/disk6_fileio/T.DISKOP.SUB b/source/disk6_fileio/T.DISKOP.SUB similarity index 100% rename from disks/disk6_fileio/T.DISKOP.SUB rename to source/disk6_fileio/T.DISKOP.SUB diff --git a/source/disk6_fileio/T.DISKOP.SUB.MIN b/source/disk6_fileio/T.DISKOP.SUB.MIN new file mode 100644 index 0000000..df1e7aa --- /dev/null +++ b/source/disk6_fileio/T.DISKOP.SUB.MIN @@ -0,0 +1,12 @@ +DISKOP +:CLEAR + LDA #00 + STA IOB_EVOL + LDA #>IOB + LDY #]1 + PHA + LDA #<]1 + PHA + JSR FPSTR ; PRINT STRING + FIN + <<< +FINP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR FINPUT + <<< +SLOT MAC + LDA ]1 + STA SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH + ASL SCRATCH ; MUL BY 16 + LDA SCRATCH + STA IOB_SLOT + <<< +DRIVE MAC + LDA ]1 + STA IOB_DRIV + <<< +TRACK MAC + LDA ]1 + STA IOB_TRAK + <<< +SECT MAC + LDA ]1 + STA IOB_SECT + <<< +SETDR MAC + LDA $01 + STA IOB_COMM + <<< +SETDW MAC + LDA $02 + STA IOB_COMM + <<< +DBUFF MAC + LDA #<]1 + STA IOB_BUFL + LDA #>]1 + STA IOB_BUFH + <<< +DRWTS MAC + JSR DISKOP + <<< diff --git a/disks/disk6_fileio/T.FINPUT.SUB b/source/disk6_fileio/T.FINPUT.SUB similarity index 100% rename from disks/disk6_fileio/T.FINPUT.SUB rename to source/disk6_fileio/T.FINPUT.SUB diff --git a/source/disk6_fileio/T.FINPUT.SUB.MIN b/source/disk6_fileio/T.FINPUT.SUB.MIN new file mode 100644 index 0000000..39501bb --- /dev/null +++ b/source/disk6_fileio/T.FINPUT.SUB.MIN @@ -0,0 +1,31 @@ +FINPUT + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDX #0 + JSR FGETLN + STX :SLEN + CPX #0 + BEQ :EXIT +:INP_CLR + LDY #0 + LDA :SLEN + STA (ADDR1),Y ; PUT LENGTH AT START +:LP + LDA $0200,Y ; KEYBOARD BUFFER + INY + STA (ADDR1),Y + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/disks/disk6_fileio/T.FPRINT.SUB b/source/disk6_fileio/T.FPRINT.SUB similarity index 100% rename from disks/disk6_fileio/T.FPRINT.SUB rename to source/disk6_fileio/T.FPRINT.SUB diff --git a/source/disk6_fileio/T.FPRINT.SUB.MIN b/source/disk6_fileio/T.FPRINT.SUB.MIN new file mode 100644 index 0000000..9f6235c --- /dev/null +++ b/source/disk6_fileio/T.FPRINT.SUB.MIN @@ -0,0 +1,23 @@ +FPRINT + PLA + STA RETADR + PLA + STA RETADR+1 + LDY #$01 ; POINT TO NEXT INSTR +:LP + LDA (RETADR),Y + BEQ :DONE + JSR FCOUT + INY + BNE :LP +:DONE + CLC ; RESTORE INSTR POINTER + TYA + ADC RETADR + STA RETADR + LDA RETADR+1 + ADC #$00 + PHA + LDA RETADR + PHA + RTS diff --git a/disks/disk6_fileio/T.FPSTR.SUB b/source/disk6_fileio/T.FPSTR.SUB similarity index 100% rename from disks/disk6_fileio/T.FPSTR.SUB rename to source/disk6_fileio/T.FPSTR.SUB diff --git a/source/disk6_fileio/T.FPSTR.SUB.MIN b/source/disk6_fileio/T.FPSTR.SUB.MIN new file mode 100644 index 0000000..bea622d --- /dev/null +++ b/source/disk6_fileio/T.FPSTR.SUB.MIN @@ -0,0 +1,25 @@ +FPSTR + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #0 + LDA (ADDR1),Y + STA :SLEN +:LP + INY + LDA (ADDR1),Y + JSR FCOUT + CPY :SLEN + BNE :LP +:EXIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + RTS +:SLEN DS 1 diff --git a/source/disk6_fileio/T.REQUIRED.HOOKS.MIN b/source/disk6_fileio/T.REQUIRED.HOOKS.MIN new file mode 100644 index 0000000..aad849f --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.HOOKS.MIN @@ -0,0 +1,10 @@ +ADDR1 EQU $06 +ADDR2 EQU $08 +ADDR3 EQU $EB +ADDR4 EQU $ED +SCRATCH EQU $19 +SCRATCH2 EQU $1E +RETADR EQU $FE +RESULT EQU $FA +RESULT2 EQU $FC +REENTRY EQU $3D0 diff --git a/source/disk6_fileio/T.REQUIRED.LIB.MIN b/source/disk6_fileio/T.REQUIRED.LIB.MIN new file mode 100644 index 0000000..0fd16c1 --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.LIB.MIN @@ -0,0 +1,368 @@ +__GETRET + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA RETURN,Y + STA (ADDR1),Y + CPY RETLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__SETPARM + LDY #255 + PLA + STA ADDR1 + PLA + STA ADDR1+1 +:LP + INY + LDA (ADDR1),Y + STA PARAM,Y + CPY PARLEN + BNE :LP + LDA ADDR1+1 + PHA + LDA ADDR1 + PHA + RTS +__DUMP + PLA + STA :RET + PLA + STA :RET+1 + PLA + STA :LENGTH + PLA + STA ADDR3 + PLA + STA ADDR3+1 + LDA #$8D + JSR $FDF0 + LDA ADDR3+1 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3+1 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$F0 + LSR + LSR + LSR + LSR + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA ADDR3 + AND #$0F + TAX + LDA HEXTAB,X + JSR $FDF0 + LDA #186 ; : + JSR $FDF0 + LDA #160 ; SPC + JSR $FDF0 + LDY #0 +:LP + LDA (ADDR3),Y + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA (ADDR3),Y + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + LDA #160 + JSR $FDF0 + INY + CPY :LENGTH + BNE :LP + LDA :RET+1 + PHA + LDA :RET + PHA + RTS +:RET DS 2 +:RIGHT DS 1 +:LEFT DS 1 +:LENGTH DS 1 +__P + PLA + STA ADDR1 + PLA + STA ADDR1+1 + LDY #1 +:LP LDA (ADDR1),Y + BEQ :DONE + JSR $FDF0 + INY + BNE :LP +:DONE CLC + TYA + ADC ADDR1 + STA ADDR1 + LDA ADDR1+1 + ADC #0 + PHA + LDA ADDR1 + PHA + RTS +__W + JSR $FD0C + RTS +__RSAV + STA ERRA + STX ERRX + STY ERRY +:C BCC :C0 + BCS :C1 +:Z BEQ :Z1 + BNE :Z0 +:N BMI :N1 + BPL :N0 +:O BVC :O0 + BVS :O1 + JMP :EXIT +:C0 LDA #0 + STA ERRCARRY + JMP :Z +:C1 LDA #1 + STA ERRCARRY + JMP :Z +:Z1 LDA #1 + STA ERRZERO + JMP :N +:Z0 LDA #0 + STA ERRZERO + JMP :N +:N1 LDA #1 + STA ERRNEG + JMP :O +:N0 LDA #0 + STA ERRNEG + JMP :O +:O0 LDA #0 + STA ERROVF + JMP :EXIT +:O1 LDA #1 + STA ERROVF +:EXIT + RTS +__RDMP + _PRNT " ",8D8D + _PRNT "REGISTRY DUMP",8D + _PRNT "=============",8D + _PRNT "A: " + LDA ERRA + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRA + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "X: " + LDA ERRX + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRX + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D + _PRNT "Y: " + LDA ERRY + AND #$F0 ; MASK RIGHT + LSR + LSR + LSR + LSR + STA :LEFT + LDA ERRY + AND #$0F ; MASK LEFT + STA :RIGHT + LDX :LEFT + LDA HEXTAB,X + JSR $FDF0 + LDX :RIGHT + LDA HEXTAB,X + JSR $FDF0 + _PRNT " ",8D8D + _PRNT "STATUS FLAGS",8D + _PRNT "============",8D8D + LDA #0 + CMP ERRCARRY + BEQ :CARCLR + _PRNT "CARRY: SET",8D + JMP :TESTN +:CARCLR _PRNT "CARRY: CLEAR",8D +:TESTN LDA #0 + CMP ERRNEG + BEQ :NEGCLR + _PRNT "NEGATIVE: SET",8D + JMP :TESTZ +:NEGCLR _PRNT "NEGATIVE: CLEAR",8D +:TESTZ LDA #0 + CMP ERRZERO + BEQ :ZCLR + _PRNT "ZERO: SET",8D + JMP :TESTO +:ZCLR _PRNT "ZERO: CLEAR",8D +:TESTO + LDA #0 + CMP ERROVF + BEQ :OCLR + _PRNT "OVERFLOW: SET",8D + JMP :FIN +:OCLR _PRNT "OVERFLOW: CLEAR",8D8D8D +:FIN + RTS +:LEFT DS 1 +:RIGHT DS 1 +HEXTAB ASC "0123456789ABCDEF" +__ERR + LDY #0 + LDA (RETADR),Y + STA :RET + INY + LDA (RETADR),Y + STA :RET+1 + JSR __RSAV + PLA + STA RETADR + PLA + STA RETADR+1 + PLA + STA :DUMPLEN ; LENGTH OF DUMP + PLA + STA :DUMP ; DUMP ADDRESS LO + PLA + STA :DUMP+1 ; DUMP HI + PLA + STA :DMPMSG + PLA + STA :DMPMSG+1 + PLA + STA :MESG ; ERROR MESSAGE ADDR LO + PLA + STA :MESG+1 ; HI + PLA + STA :SRID ; SUBROUTINE ID ADDR LO + PLA + STA :SRID+1 ; SUB ID HI + _PRNT " ",87878787878D8D + _PRNT "ERROR!",8D8D + _PRNT "SUBROUTINE: " + LDY #0 + LDA :SRID + STA ADDR1 + LDA :SRID+1 + STA ADDR1+1 +:LP1 + LDA (ADDR1),Y + BEQ :LPX1 + JSR $FDF0 + INY + BNE :LP1 +:LPX1 + _PRNT " ",8D + _PRNT "MESSAGE: " + LDY #0 + LDA :MESG + STA ADDR1 + LDA :MESG+1 + STA ADDR1+1 +:LP2 + LDA (ADDR1),Y + BEQ :LPX2 + JSR $FDF0 + INY + BNE :LP2 +:LPX2 + _PRNT " ",8D8D + _WAIT + LDY #0 + LDA :DMPMSG + STA ADDR1 + LDA :DMPMSG+1 + STA ADDR1+1 +:LP3 + LDA (ADDR1),Y + BEQ :LPX3 + JSR $FDF0 + INY + BNE :LP3 +:LPX3 + _PRNT " ",8D + LDA :DUMP+1 + PHA + LDA :DUMP + PHA + LDA :DUMPLEN + PHA + JSR __DUMP + _WAIT + LDA RETADR+1 + PHA + LDA RETADR + PHA + _PRNT " ",8D8D + _WAIT + _RDUMP + _WAIT + LDA ERRSTOP + CMP #1 + BEQ :KILL + RTS +:KILL + _PRNT " ",8D8D + _PRNT "BREAK AT: " + _DUMP :RET;#2 + JMP $3D0 +:DUMPLEN DS 1 +:DUMP DS 2 +:DMPMSG DS 2 +:MESG DS 2 +:SRID DS 2 +:RET DS 2 diff --git a/source/disk6_fileio/T.REQUIRED.MAC.MIN b/source/disk6_fileio/T.REQUIRED.MAC.MIN new file mode 100644 index 0000000..1df52ed --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.MAC.MIN @@ -0,0 +1,94 @@ +_ISLIT MAC + IF #=]1 ; IF ]1 IS A LITERAL + LDA ]1/$100 ; GET HI + PHA + LDA ]1 ; GET LO + PHA + ELSE ; ]1 IS ADDRESS + LDA ]1+1 ; SO GET HIGH VAL FROM ADDR + PHA + LDA ]1 ; THEN LO VAL + PHA + FIN + <<< +_ISSTR MAC + IF "=]1 ; IF ]1 IS A STRING + JMP STRCONT +]STRTMP STR ]1 +STRCONT + LDY #0 + LDA ]STRTMP + STA PARLEN + STA PARAM +]STRLP1 + INY + LDA ]STRTMP,Y + STA PARAM,Y + CPY PARLEN + BNE ]STRLP1 + LDA #>PARAM ; GET HI + PHA + LDA #]1 ; SO GET HIBYTE OF ADDR + PHA + LDA #<]1 ; THEN LOBYTE + PHA + FIN + <<< +_GRET MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __GETRET + <<< +_SPAR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + JSR __SETPARM + <<< +_DUMP MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA ]2 + PHA + JSR __DUMP + <<< +_PRNT MAC + JSR __P + ASC ]1 + HEX 00 + <<< +_WAIT MAC + JSR __W + <<< +_RDUMP MAC + JSR __RDMP + <<< +_ERR MAC + LDA #>]1 + PHA + LDA #<]1 + PHA + LDA #>]2 + PHA + LDA #<]2 + PHA + LDA #>]3 + PHA + LDA #<]3 + PHA + LDA #>]4 + PHA + LDA #<]4 + PHA + LDA ]5 + PHA + JSR __ERR + <<< diff --git a/source/disk6_fileio/T.REQUIRED.VARS b/source/disk6_fileio/T.REQUIRED.VARS new file mode 100644 index 0000000..ae2759a --- /dev/null +++ b/source/disk6_fileio/T.REQUIRED.VARS @@ -0,0 +1,72 @@ +* +******************************** +* * +* VARIABLES AND SETTINGS * +* * +******************************** +* +* VARIABLE DECLARATIONS ******** +* +** JUMP TABLE SETUP. THIS IS FOR LOADING +** SUBROUTINES INTO MEMORY FOR ACCESS BY +** EXTERNAL EXECUTIONS. NOTE THAT THIS +** SHOULD ALWAYS BE THE VERY FIRST BIT OF +** CODE IN THE PROGRAM SO THAT ITS +** LOCATION IN MEMORY IS EASILY KNOWN. +* +JUMPTBL JMP MAIN_START ; ** ALWAYS ** START WITH + ; JUMP TO MAIN_START + DS 60 ; 20 MORE ENTRIES +* +** 256 BYTES DEDICATED TO RETURN +** VALUES OF VARIABLE LENGTH; CAN BE +** MODIFIED TO SUIT SMALLER OR LARGER +** NEEDS. +* +RETLEN DS 1 ; RETURN VALUE BYTE LENGTH +RETURN DS 256 +* +** 256 BYTE VALUE DEDICATED TO LARGE +** OR VARIABLE LENGTH PARAMETERS. THIS +** CAN ALSO BE CHANGED TO FIT SMALLER OR +** LARGER BOUNDS. +* +PARLEN DS 1 +PARAM DS 256 +* +** ERROR HANDLING +* +ERRSTOP DS 1 +ERRCTRL DS 1 +ERRA DS 1 +ERRX DS 1 +ERRY DS 1 +ERRCARRY DS 1 +ERRNEG DS 1 +ERRZERO DS 1 +ERROVF DS 1 +* +* SETTINGS ********************* +* +MAIN_START +* +** ERROR HANDLING +* +** SET ERRSTOP TO 1 IF YOU WANT THE PROGRAM TO +** HALT WHEN AN ERROR IS CAUGHT +* + LDA #1 + STA ERRSTOP +* +** SET ERRCTRL TO 1 IF YOU WANT ERROR CATCHING ON +** IN THE FIRST PLACE. HAVING THIS TURNED OFF WILL +** SAVE A FEW CYCLES, BUT POSSIBLY AT THE EXPENSE +** OF YOUR FRUSTRATION. CAN BE TURNED ON LATER THOUGH. +* + LDA #1 + STA ERRCTRL +* +* +* +* +* diff --git a/disks/disk6_fileio/T.TEST b/source/disk6_fileio/T.TEST similarity index 100% rename from disks/disk6_fileio/T.TEST rename to source/disk6_fileio/T.TEST diff --git a/disks/disk6_fileio/T.TEXTFILE b/source/disk6_fileio/T.TEXTFILE similarity index 100% rename from disks/disk6_fileio/T.TEXTFILE rename to source/disk6_fileio/T.TEXTFILE diff --git a/disks/disk6_fileio/TEST b/source/disk6_fileio/TEST similarity index 100% rename from disks/disk6_fileio/TEST rename to source/disk6_fileio/TEST diff --git a/disks/disk6_fileio/TEXT1 b/source/disk6_fileio/TEXT1 similarity index 100% rename from disks/disk6_fileio/TEXT1 rename to source/disk6_fileio/TEXT1