summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Morgan <sjm@sjm.io>2015-06-23 00:45:21 +0100
committerSimon Morgan <sjm@sjm.io>2015-06-23 00:45:21 +0100
commit71a9310ee8bdb0941fc61c435485403ed41f5dc6 (patch)
treece704d3907073b8a98213eb9396fdd57afe1b473
downloadcommando-7800-master.tar.gz
commando-7800-master.tar.bz2
commando-7800-master.zip
Initial import.HEADmaster
-rw-r--r--000.S68
-rw-r--r--100.S51
-rw-r--r--200.S51
-rw-r--r--300.S51
-rw-r--r--320TEST.S328
-rw-r--r--400.S51
-rw-r--r--40COL.S634
-rw-r--r--500.S51
-rw-r--r--600.S51
-rw-r--r--700.S51
-rw-r--r--800.S51
-rw-r--r--900.S51
-rw-r--r--A.BAT4
-rw-r--r--A00.S51
-rw-r--r--B00.S51
-rw-r--r--BATCH.TTPbin0 -> 1991 bytes
-rw-r--r--C00.S52
-rw-r--r--CONV65.PRGbin0 -> 5731 bytes
-rw-r--r--D00.S51
-rw-r--r--DISKS/.DEF2883
-rw-r--r--DISKS/40COL.S634
-rw-r--r--DISKS/7800DEV/40COL.S634
-rw-r--r--DISKS/7800DEV/ASM.BAT5
-rw-r--r--DISKS/7800DEV/BATCH.TTPbin0 -> 1991 bytes
-rw-r--r--DISKS/7800DEV/DOWNLOAD.PRGbin0 -> 13079 bytes
-rw-r--r--DISKS/7800DEV/K.TTPbin0 -> 29366 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/40COL.S634
-rw-r--r--DISKS/7800DEV/MADMAC/ALN.PRGbin0 -> 44501 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/CONV65.PRGbin0 -> 5731 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/DOINDEX.PRGbin0 -> 18927 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/ATARI.S634
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/BUGS.S670
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/CODE.S1148
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/CODE65.S207
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE.S174
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE1.S18
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE2.S15
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/IMAGES.S80
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/INSTMAC.S72
-rw-r--r--DISKS/7800DEV/MADMAC/EXAMPLES/SHIFT.S139
-rw-r--r--DISKS/7800DEV/MADMAC/INSTMAC.PRGbin0 -> 278 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/M.PRGbin0 -> 165 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/MAC.PRGbin0 -> 72128 bytes
-rw-r--r--DISKS/7800DEV/MADMAC/README43
-rw-r--r--DISKS/7800DEV/MADMAC/WAIT.PRGbin0 -> 117 bytes
-rw-r--r--DISKS/7800DEV/MARIA.S198
-rw-r--r--DISKS/7800DEV/ME.TTPbin0 -> 27782 bytes
-rw-r--r--DISKS/7800DEV/README2.DOC23
-rw-r--r--DISKS/7800DEV/READ_ME.DOC106
-rw-r--r--DISKS/A.BAT4
-rw-r--r--DISKS/ASM.BAT6
-rw-r--r--DISKS/BASIC.BUF24
-rw-r--r--DISKS/BASIC.PRGbin0 -> 138944 bytes
-rw-r--r--DISKS/BASIC.RSCbin0 -> 4648 bytes
-rw-r--r--DISKS/BASIC/BASIC.BUF24
-rw-r--r--DISKS/BASIC/BASIC.PRGbin0 -> 138944 bytes
-rw-r--r--DISKS/BASIC/BASIC.RSCbin0 -> 4648 bytes
-rw-r--r--DISKS/BASIC/BASIC.WRK364
-rw-r--r--DISKS/BASIC/BRDG.DEF1603
-rw-r--r--DISKS/BASIC/COLORS.BAS15
-rw-r--r--DISKS/BASIC/CONTROL.ACCbin0 -> 15449 bytes
-rw-r--r--DISKS/BASIC/DDJO.DEF483
-rw-r--r--DISKS/BASIC/DJOE.DEF483
-rw-r--r--DISKS/BASIC/DMAN.DEF483
-rw-r--r--DISKS/BASIC/EDIT.BAS210
-rw-r--r--DISKS/BASIC/EDIT160A.BAS210
-rw-r--r--DISKS/BASIC/EDIT320C.BAS334
-rw-r--r--DISKS/BASIC/EMULATOR.ACCbin0 -> 6451 bytes
-rw-r--r--DISKS/BASIC/FILL.BAS7
-rw-r--r--DISKS/BASIC/H401
-rw-r--r--DISKS/BASIC/H.DEF67
-rw-r--r--DISKS/BASIC/H1.S2
-rw-r--r--DISKS/BASIC/H2.S2
-rw-r--r--DISKS/BASIC/H3.S2
-rw-r--r--DISKS/BASIC/H4.S2
-rw-r--r--DISKS/BASIC/H5.S2
-rw-r--r--DISKS/BASIC/H6.S2
-rw-r--r--DISKS/BASIC/H7.S2
-rw-r--r--DISKS/BASIC/H8.S2
-rw-r--r--DISKS/BASIC/H9.S1
-rw-r--r--DISKS/BASIC/HAYA.DEF1155
-rw-r--r--DISKS/BASIC/HDEL.DEF67
-rw-r--r--DISKS/BASIC/JOE.DEF481
-rw-r--r--DISKS/BASIC/LFUJO.DEF483
-rw-r--r--DISKS/BASIC/LOADDATA.BAS10
-rw-r--r--DISKS/BASIC/LOGO.PRGbin0 -> 98770 bytes
-rw-r--r--DISKS/BASIC/LOGO.RSCbin0 -> 4906 bytes
-rw-r--r--DISKS/BASIC/LSJO.DEF483
-rw-r--r--DISKS/BASIC/LUJO.DEF483
-rw-r--r--DISKS/BASIC/MOUSE.BAS15
-rw-r--r--DISKS/BASIC/MWTAN.DEFbin0 -> 17933 bytes
-rw-r--r--DISKS/BASIC/NEO.PRGbin0 -> 31552 bytes
-rw-r--r--DISKS/BASIC/NEW320B.BAS364
-rw-r--r--DISKS/BASIC/NEW320C.BAS365
-rw-r--r--DISKS/BASIC/NEW320CX.BAS365
-rw-r--r--DISKS/BASIC/OBJbin0 -> 1200 bytes
-rw-r--r--DISKS/BASIC/OBJ.DTAbin0 -> 7000 bytes
-rw-r--r--DISKS/BASIC/RAMTEST.BAS7
-rw-r--r--DISKS/BASIC/SAMPLE.PRGbin0 -> 4540 bytes
-rw-r--r--DISKS/BASIC/SANDA.DEF899
-rw-r--r--DISKS/BASIC/SAVEDATA.BAS10
-rw-r--r--DISKS/BASIC/SHELLA.DEF3459
-rw-r--r--DISKS/BASIC/SHELLB.DEF3459
-rw-r--r--DISKS/BASIC/SLIDENEO.PRGbin0 -> 1091 bytes
-rw-r--r--DISKS/BASIC/SQ.DEF67
-rw-r--r--DISKS/BASIC/SQUARE.DEF321
-rw-r--r--DISKS/BASIC/T.DEF403
-rw-r--r--DISKS/BASIC/TEDIT.BAS86
-rw-r--r--DISKS/BASIC/TEST.BAS3
-rw-r--r--DISKS/BASIC/TR1.S3
-rw-r--r--DISKS/BASIC/TR10.S3
-rw-r--r--DISKS/BASIC/TR11.S3
-rw-r--r--DISKS/BASIC/TR12.S3
-rw-r--r--DISKS/BASIC/TR13.S3
-rw-r--r--DISKS/BASIC/TR14.S3
-rw-r--r--DISKS/BASIC/TR15.S3
-rw-r--r--DISKS/BASIC/TR16.S3
-rw-r--r--DISKS/BASIC/TR17.S3
-rw-r--r--DISKS/BASIC/TR18.S3
-rw-r--r--DISKS/BASIC/TR19.S3
-rw-r--r--DISKS/BASIC/TR2.S3
-rw-r--r--DISKS/BASIC/TR20.S3
-rw-r--r--DISKS/BASIC/TR21.S3
-rw-r--r--DISKS/BASIC/TR22.S3
-rw-r--r--DISKS/BASIC/TR23.S3
-rw-r--r--DISKS/BASIC/TR24.S3
-rw-r--r--DISKS/BASIC/TR25.S3
-rw-r--r--DISKS/BASIC/TR26.S3
-rw-r--r--DISKS/BASIC/TR27.S3
-rw-r--r--DISKS/BASIC/TR28.S3
-rw-r--r--DISKS/BASIC/TR29.S3
-rw-r--r--DISKS/BASIC/TR3.S3
-rw-r--r--DISKS/BASIC/TR30.S3
-rw-r--r--DISKS/BASIC/TR31.S3
-rw-r--r--DISKS/BASIC/TR32.S3
-rw-r--r--DISKS/BASIC/TR33.S3
-rw-r--r--DISKS/BASIC/TR34.S3
-rw-r--r--DISKS/BASIC/TR35.S3
-rw-r--r--DISKS/BASIC/TR36.S3
-rw-r--r--DISKS/BASIC/TR37.S3
-rw-r--r--DISKS/BASIC/TR38.S3
-rw-r--r--DISKS/BASIC/TR39.S3
-rw-r--r--DISKS/BASIC/TR4.S3
-rw-r--r--DISKS/BASIC/TR40.S3
-rw-r--r--DISKS/BASIC/TR41.S3
-rw-r--r--DISKS/BASIC/TR42.S3
-rw-r--r--DISKS/BASIC/TR43.S3
-rw-r--r--DISKS/BASIC/TR44.S3
-rw-r--r--DISKS/BASIC/TR45.S3
-rw-r--r--DISKS/BASIC/TR46.S3
-rw-r--r--DISKS/BASIC/TR47.S3
-rw-r--r--DISKS/BASIC/TR48.S3
-rw-r--r--DISKS/BASIC/TR49.S1
-rw-r--r--DISKS/BASIC/TR5.S3
-rw-r--r--DISKS/BASIC/TR6.S3
-rw-r--r--DISKS/BASIC/TR7.S3
-rw-r--r--DISKS/BASIC/TR8.S3
-rw-r--r--DISKS/BASIC/TR9.S3
-rw-r--r--DISKS/BASIC/TREE.DEF1539
-rw-r--r--DISKS/BASIC/TREEA.DEF1539
-rw-r--r--DISKS/BASIC/TRENA.DEF2691
-rw-r--r--DISKS/BASIC/UPJO.DEF483
-rw-r--r--DISKS/BASIC/UPJOA.DEF483
-rw-r--r--DISKS/BASIC/X.BAS4
-rw-r--r--DISKS/BATCH.TTPbin0 -> 1991 bytes
-rw-r--r--DISKS/BIKE.DEF2243
-rw-r--r--DISKS/BRID.DEF1603
-rw-r--r--DISKS/CANN.DEF2883
-rw-r--r--DISKS/CANN1.S3
-rw-r--r--DISKS/CANN10.S3
-rw-r--r--DISKS/CANN11.S3
-rw-r--r--DISKS/CANN12.S3
-rw-r--r--DISKS/CANN13.S3
-rw-r--r--DISKS/CANN14.S3
-rw-r--r--DISKS/CANN15.S3
-rw-r--r--DISKS/CANN16.S3
-rw-r--r--DISKS/CANN17.S3
-rw-r--r--DISKS/CANN18.S3
-rw-r--r--DISKS/CANN19.S3
-rw-r--r--DISKS/CANN2.S3
-rw-r--r--DISKS/CANN20.S3
-rw-r--r--DISKS/CANN21.S3
-rw-r--r--DISKS/CANN22.S3
-rw-r--r--DISKS/CANN23.S3
-rw-r--r--DISKS/CANN24.S3
-rw-r--r--DISKS/CANN25.S3
-rw-r--r--DISKS/CANN26.S3
-rw-r--r--DISKS/CANN27.S3
-rw-r--r--DISKS/CANN28.S3
-rw-r--r--DISKS/CANN29.S3
-rw-r--r--DISKS/CANN3.S3
-rw-r--r--DISKS/CANN30.S3
-rw-r--r--DISKS/CANN31.S3
-rw-r--r--DISKS/CANN32.S3
-rw-r--r--DISKS/CANN33.S3
-rw-r--r--DISKS/CANN34.S3
-rw-r--r--DISKS/CANN35.S3
-rw-r--r--DISKS/CANN36.S3
-rw-r--r--DISKS/CANN37.S3
-rw-r--r--DISKS/CANN38.S3
-rw-r--r--DISKS/CANN39.S3
-rw-r--r--DISKS/CANN4.S3
-rw-r--r--DISKS/CANN40.S3
-rw-r--r--DISKS/CANN41.S3
-rw-r--r--DISKS/CANN42.S3
-rw-r--r--DISKS/CANN43.S3
-rw-r--r--DISKS/CANN44.S3
-rw-r--r--DISKS/CANN45.S3
-rw-r--r--DISKS/CANN46.S3
-rw-r--r--DISKS/CANN47.S3
-rw-r--r--DISKS/CANN48.S3
-rw-r--r--DISKS/CANN49.S1
-rw-r--r--DISKS/CANN5.S3
-rw-r--r--DISKS/CANN6.S3
-rw-r--r--DISKS/CANN7.S3
-rw-r--r--DISKS/CANN8.S3
-rw-r--r--DISKS/CANN9.S3
-rw-r--r--DISKS/CONV65.PRGbin0 -> 5731 bytes
-rw-r--r--DISKS/DEF/.DEF2883
-rw-r--r--DISKS/DEF/BIKE.DEF2243
-rw-r--r--DISKS/DEF/BRID.DEF1603
-rw-r--r--DISKS/DEF/CANN.DEF2883
-rw-r--r--DISKS/DEF/DJOA.DEF899
-rw-r--r--DISKS/DEF/HAT.DEF899
-rw-r--r--DISKS/DEF/HAY.DEF1155
-rw-r--r--DISKS/DEF/HUT.DEF3740
-rw-r--r--DISKS/DEF/JEEP.DEF1283
-rw-r--r--DISKS/DEF/LDJOA.DEF899
-rw-r--r--DISKS/DEF/LDJOB.DEF899
-rw-r--r--DISKS/DEF/LDJOC.DEF899
-rw-r--r--DISKS/DEF/LUJOA.DEF899
-rw-r--r--DISKS/DEF/LUJOB.DEF899
-rw-r--r--DISKS/DEF/LUJOC.DEF899
-rw-r--r--DISKS/DEF/MTAN.DEF3587
-rw-r--r--DISKS/DEF/ROCK.DEF2883
-rw-r--r--DISKS/DEF/SAND.DEF1155
-rw-r--r--DISKS/DEF/SHELL.DEF2883
-rw-r--r--DISKS/DEF/TREE.DEF1539
-rw-r--r--DISKS/DEF/TREN.DEF2691
-rw-r--r--DISKS/DEF/TRUCK.DEF3843
-rw-r--r--DISKS/DEF/TUNN.DEF3203
-rw-r--r--DISKS/DEF/UJOA.DEF899
-rw-r--r--DISKS/DEF/UJOB.DEF899
-rw-r--r--DISKS/DEF/UJOC.DEF899
-rw-r--r--DISKS/DEF/WATM.DEF1283
-rw-r--r--DISKS/DEF/WATR.DEF1923
-rw-r--r--DISKS/DJOA.DEF899
-rw-r--r--DISKS/DOWNLOAD.PRGbin0 -> 13079 bytes
-rw-r--r--DISKS/GAME.Obin0 -> 7536 bytes
-rw-r--r--DISKS/GAME.PRN1432
-rw-r--r--DISKS/GAME.S608
-rw-r--r--DISKS/GAME.SR176
-rw-r--r--DISKS/GAMEQU.S17
-rw-r--r--DISKS/GND.BAT4
-rw-r--r--DISKS/GROUND.Obin0 -> 3760 bytes
-rw-r--r--DISKS/GROUND.S524
-rw-r--r--DISKS/GROUND.SR64
-rw-r--r--DISKS/HAT.DEF899
-rw-r--r--DISKS/HAY.DEF1155
-rw-r--r--DISKS/HUT.DEF3843
-rw-r--r--DISKS/JEEP.DEFbin0 -> 6413 bytes
-rw-r--r--DISKS/LDJOA.DEF899
-rw-r--r--DISKS/LDJOB.DEF899
-rw-r--r--DISKS/LDJOC.DEF899
-rw-r--r--DISKS/LUJOA.DEF899
-rw-r--r--DISKS/LUJOB.DEF899
-rw-r--r--DISKS/LUJOC.DEF899
-rw-r--r--DISKS/MAC.PRGbin0 -> 72128 bytes
-rw-r--r--DISKS/MARIA.S198
-rw-r--r--DISKS/MARIA2.S195
-rw-r--r--DISKS/ME.TTPbin0 -> 27782 bytes
-rw-r--r--DISKS/MTAN.DEF3587
-rw-r--r--DISKS/MTAN/MTAN1.S3
-rw-r--r--DISKS/MTAN/MTAN10.S3
-rw-r--r--DISKS/MTAN/MTAN11.S3
-rw-r--r--DISKS/MTAN/MTAN12.S3
-rw-r--r--DISKS/MTAN/MTAN13.S3
-rw-r--r--DISKS/MTAN/MTAN14.S3
-rw-r--r--DISKS/MTAN/MTAN15.S3
-rw-r--r--DISKS/MTAN/MTAN16.S3
-rw-r--r--DISKS/MTAN/MTAN17.S3
-rw-r--r--DISKS/MTAN/MTAN18.S3
-rw-r--r--DISKS/MTAN/MTAN19.S3
-rw-r--r--DISKS/MTAN/MTAN2.S3
-rw-r--r--DISKS/MTAN/MTAN20.S3
-rw-r--r--DISKS/MTAN/MTAN21.S3
-rw-r--r--DISKS/MTAN/MTAN22.S3
-rw-r--r--DISKS/MTAN/MTAN23.S3
-rw-r--r--DISKS/MTAN/MTAN24.S3
-rw-r--r--DISKS/MTAN/MTAN25.S3
-rw-r--r--DISKS/MTAN/MTAN26.S3
-rw-r--r--DISKS/MTAN/MTAN27.S3
-rw-r--r--DISKS/MTAN/MTAN28.S3
-rw-r--r--DISKS/MTAN/MTAN29.S3
-rw-r--r--DISKS/MTAN/MTAN3.S3
-rw-r--r--DISKS/MTAN/MTAN30.S3
-rw-r--r--DISKS/MTAN/MTAN31.S3
-rw-r--r--DISKS/MTAN/MTAN32.S3
-rw-r--r--DISKS/MTAN/MTAN33.S3
-rw-r--r--DISKS/MTAN/MTAN34.S3
-rw-r--r--DISKS/MTAN/MTAN35.S3
-rw-r--r--DISKS/MTAN/MTAN36.S3
-rw-r--r--DISKS/MTAN/MTAN37.S3
-rw-r--r--DISKS/MTAN/MTAN38.S3
-rw-r--r--DISKS/MTAN/MTAN39.S3
-rw-r--r--DISKS/MTAN/MTAN4.S3
-rw-r--r--DISKS/MTAN/MTAN40.S3
-rw-r--r--DISKS/MTAN/MTAN41.S3
-rw-r--r--DISKS/MTAN/MTAN42.S3
-rw-r--r--DISKS/MTAN/MTAN43.S3
-rw-r--r--DISKS/MTAN/MTAN44.S3
-rw-r--r--DISKS/MTAN/MTAN45.S3
-rw-r--r--DISKS/MTAN/MTAN46.S3
-rw-r--r--DISKS/MTAN/MTAN47.S3
-rw-r--r--DISKS/MTAN/MTAN48.S3
-rw-r--r--DISKS/MTAN/MTAN49.S3
-rw-r--r--DISKS/MTAN/MTAN5.S3
-rw-r--r--DISKS/MTAN/MTAN50.S3
-rw-r--r--DISKS/MTAN/MTAN51.S3
-rw-r--r--DISKS/MTAN/MTAN52.S3
-rw-r--r--DISKS/MTAN/MTAN53.S3
-rw-r--r--DISKS/MTAN/MTAN54.S3
-rw-r--r--DISKS/MTAN/MTAN55.S3
-rw-r--r--DISKS/MTAN/MTAN56.S3
-rw-r--r--DISKS/MTAN/MTAN57.S3
-rw-r--r--DISKS/MTAN/MTAN58.S3
-rw-r--r--DISKS/MTAN/MTAN59.S3
-rw-r--r--DISKS/MTAN/MTAN6.S3
-rw-r--r--DISKS/MTAN/MTAN60.S3
-rw-r--r--DISKS/MTAN/MTAN61.S3
-rw-r--r--DISKS/MTAN/MTAN62.S3
-rw-r--r--DISKS/MTAN/MTAN63.S3
-rw-r--r--DISKS/MTAN/MTAN64.S3
-rw-r--r--DISKS/MTAN/MTAN65.S1
-rw-r--r--DISKS/MTAN/MTAN7.S3
-rw-r--r--DISKS/MTAN/MTAN8.S3
-rw-r--r--DISKS/MTAN/MTAN9.S3
-rw-r--r--DISKS/NEW320B.BAS365
-rw-r--r--DISKS/PAGEZERO.S46
-rw-r--r--DISKS/PRINT.S2
-rw-r--r--DISKS/RAMAREA.S50
-rw-r--r--DISKS/ROCK.DEF2883
-rw-r--r--DISKS/ROCK/ROCK1.S3
-rw-r--r--DISKS/ROCK/ROCK10.S3
-rw-r--r--DISKS/ROCK/ROCK11.S3
-rw-r--r--DISKS/ROCK/ROCK12.S3
-rw-r--r--DISKS/ROCK/ROCK13.S3
-rw-r--r--DISKS/ROCK/ROCK14.S3
-rw-r--r--DISKS/ROCK/ROCK15.S3
-rw-r--r--DISKS/ROCK/ROCK16.S3
-rw-r--r--DISKS/ROCK/ROCK17.S3
-rw-r--r--DISKS/ROCK/ROCK18.S3
-rw-r--r--DISKS/ROCK/ROCK19.S3
-rw-r--r--DISKS/ROCK/ROCK2.S3
-rw-r--r--DISKS/ROCK/ROCK20.S3
-rw-r--r--DISKS/ROCK/ROCK21.S3
-rw-r--r--DISKS/ROCK/ROCK22.S3
-rw-r--r--DISKS/ROCK/ROCK23.S3
-rw-r--r--DISKS/ROCK/ROCK24.S3
-rw-r--r--DISKS/ROCK/ROCK25.S3
-rw-r--r--DISKS/ROCK/ROCK26.S3
-rw-r--r--DISKS/ROCK/ROCK27.S3
-rw-r--r--DISKS/ROCK/ROCK28.S3
-rw-r--r--DISKS/ROCK/ROCK29.S3
-rw-r--r--DISKS/ROCK/ROCK3.S3
-rw-r--r--DISKS/ROCK/ROCK30.S3
-rw-r--r--DISKS/ROCK/ROCK31.S3
-rw-r--r--DISKS/ROCK/ROCK32.S3
-rw-r--r--DISKS/ROCK/ROCK33.S3
-rw-r--r--DISKS/ROCK/ROCK34.S3
-rw-r--r--DISKS/ROCK/ROCK35.S3
-rw-r--r--DISKS/ROCK/ROCK36.S3
-rw-r--r--DISKS/ROCK/ROCK37.S3
-rw-r--r--DISKS/ROCK/ROCK38.S3
-rw-r--r--DISKS/ROCK/ROCK39.S3
-rw-r--r--DISKS/ROCK/ROCK4.S3
-rw-r--r--DISKS/ROCK/ROCK40.S3
-rw-r--r--DISKS/ROCK/ROCK41.S3
-rw-r--r--DISKS/ROCK/ROCK42.S3
-rw-r--r--DISKS/ROCK/ROCK43.S3
-rw-r--r--DISKS/ROCK/ROCK44.S3
-rw-r--r--DISKS/ROCK/ROCK45.S3
-rw-r--r--DISKS/ROCK/ROCK46.S3
-rw-r--r--DISKS/ROCK/ROCK47.S3
-rw-r--r--DISKS/ROCK/ROCK48.S3
-rw-r--r--DISKS/ROCK/ROCK49.S1
-rw-r--r--DISKS/ROCK/ROCK5.S3
-rw-r--r--DISKS/ROCK/ROCK6.S3
-rw-r--r--DISKS/ROCK/ROCK7.S3
-rw-r--r--DISKS/ROCK/ROCK8.S3
-rw-r--r--DISKS/ROCK/ROCK9.S3
-rw-r--r--DISKS/ROMAREA.S151
-rw-r--r--DISKS/SAND.DEF1155
-rw-r--r--DISKS/SAND/SAND1.S4
-rw-r--r--DISKS/SAND/SAND10.S4
-rw-r--r--DISKS/SAND/SAND11.S4
-rw-r--r--DISKS/SAND/SAND12.S4
-rw-r--r--DISKS/SAND/SAND13.S4
-rw-r--r--DISKS/SAND/SAND14.S4
-rw-r--r--DISKS/SAND/SAND15.S4
-rw-r--r--DISKS/SAND/SAND16.S4
-rw-r--r--DISKS/SAND/SAND17.S1
-rw-r--r--DISKS/SAND/SAND2.S4
-rw-r--r--DISKS/SAND/SAND3.S4
-rw-r--r--DISKS/SAND/SAND4.S4
-rw-r--r--DISKS/SAND/SAND5.S4
-rw-r--r--DISKS/SAND/SAND6.S4
-rw-r--r--DISKS/SAND/SAND7.S4
-rw-r--r--DISKS/SAND/SAND8.S4
-rw-r--r--DISKS/SAND/SAND9.S4
-rw-r--r--DISKS/SHELL.DEF2883
-rw-r--r--DISKS/SHELL/SHELL1.S3
-rw-r--r--DISKS/SHELL/SHELL10.S3
-rw-r--r--DISKS/SHELL/SHELL11.S3
-rw-r--r--DISKS/SHELL/SHELL12.S3
-rw-r--r--DISKS/SHELL/SHELL13.S3
-rw-r--r--DISKS/SHELL/SHELL14.S3
-rw-r--r--DISKS/SHELL/SHELL15.S3
-rw-r--r--DISKS/SHELL/SHELL16.S3
-rw-r--r--DISKS/SHELL/SHELL17.S3
-rw-r--r--DISKS/SHELL/SHELL18.S3
-rw-r--r--DISKS/SHELL/SHELL19.S3
-rw-r--r--DISKS/SHELL/SHELL2.S3
-rw-r--r--DISKS/SHELL/SHELL20.S3
-rw-r--r--DISKS/SHELL/SHELL21.S3
-rw-r--r--DISKS/SHELL/SHELL22.S3
-rw-r--r--DISKS/SHELL/SHELL23.S3
-rw-r--r--DISKS/SHELL/SHELL24.S3
-rw-r--r--DISKS/SHELL/SHELL25.S3
-rw-r--r--DISKS/SHELL/SHELL26.S3
-rw-r--r--DISKS/SHELL/SHELL27.S3
-rw-r--r--DISKS/SHELL/SHELL28.S3
-rw-r--r--DISKS/SHELL/SHELL29.S3
-rw-r--r--DISKS/SHELL/SHELL3.S3
-rw-r--r--DISKS/SHELL/SHELL30.S3
-rw-r--r--DISKS/SHELL/SHELL31.S3
-rw-r--r--DISKS/SHELL/SHELL32.S3
-rw-r--r--DISKS/SHELL/SHELL33.S3
-rw-r--r--DISKS/SHELL/SHELL34.S3
-rw-r--r--DISKS/SHELL/SHELL35.S3
-rw-r--r--DISKS/SHELL/SHELL36.S3
-rw-r--r--DISKS/SHELL/SHELL37.S3
-rw-r--r--DISKS/SHELL/SHELL38.S3
-rw-r--r--DISKS/SHELL/SHELL39.S3
-rw-r--r--DISKS/SHELL/SHELL4.S3
-rw-r--r--DISKS/SHELL/SHELL40.S3
-rw-r--r--DISKS/SHELL/SHELL41.S3
-rw-r--r--DISKS/SHELL/SHELL42.S3
-rw-r--r--DISKS/SHELL/SHELL43.S3
-rw-r--r--DISKS/SHELL/SHELL44.S3
-rw-r--r--DISKS/SHELL/SHELL45.S3
-rw-r--r--DISKS/SHELL/SHELL46.S3
-rw-r--r--DISKS/SHELL/SHELL47.S3
-rw-r--r--DISKS/SHELL/SHELL48.S3
-rw-r--r--DISKS/SHELL/SHELL49.S1
-rw-r--r--DISKS/SHELL/SHELL5.S3
-rw-r--r--DISKS/SHELL/SHELL6.S3
-rw-r--r--DISKS/SHELL/SHELL7.S3
-rw-r--r--DISKS/SHELL/SHELL8.S3
-rw-r--r--DISKS/SHELL/SHELL9.S3
-rw-r--r--DISKS/TABLE.S141
-rw-r--r--DISKS/TREE.DEF1539
-rw-r--r--DISKS/TREE/TREE1.S3
-rw-r--r--DISKS/TREE/TREE10.S3
-rw-r--r--DISKS/TREE/TREE11.S3
-rw-r--r--DISKS/TREE/TREE12.S3
-rw-r--r--DISKS/TREE/TREE13.S3
-rw-r--r--DISKS/TREE/TREE14.S3
-rw-r--r--DISKS/TREE/TREE15.S3
-rw-r--r--DISKS/TREE/TREE16.S3
-rw-r--r--DISKS/TREE/TREE17.S3
-rw-r--r--DISKS/TREE/TREE18.S3
-rw-r--r--DISKS/TREE/TREE19.S3
-rw-r--r--DISKS/TREE/TREE2.S3
-rw-r--r--DISKS/TREE/TREE20.S3
-rw-r--r--DISKS/TREE/TREE21.S3
-rw-r--r--DISKS/TREE/TREE22.S3
-rw-r--r--DISKS/TREE/TREE23.S3
-rw-r--r--DISKS/TREE/TREE24.S3
-rw-r--r--DISKS/TREE/TREE25.S3
-rw-r--r--DISKS/TREE/TREE26.S3
-rw-r--r--DISKS/TREE/TREE27.S3
-rw-r--r--DISKS/TREE/TREE28.S3
-rw-r--r--DISKS/TREE/TREE29.S3
-rw-r--r--DISKS/TREE/TREE3.S3
-rw-r--r--DISKS/TREE/TREE30.S3
-rw-r--r--DISKS/TREE/TREE31.S3
-rw-r--r--DISKS/TREE/TREE32.S3
-rw-r--r--DISKS/TREE/TREE33.S3
-rw-r--r--DISKS/TREE/TREE34.S3
-rw-r--r--DISKS/TREE/TREE35.S3
-rw-r--r--DISKS/TREE/TREE36.S3
-rw-r--r--DISKS/TREE/TREE37.S3
-rw-r--r--DISKS/TREE/TREE38.S3
-rw-r--r--DISKS/TREE/TREE39.S3
-rw-r--r--DISKS/TREE/TREE4.S3
-rw-r--r--DISKS/TREE/TREE40.S3
-rw-r--r--DISKS/TREE/TREE41.S3
-rw-r--r--DISKS/TREE/TREE42.S3
-rw-r--r--DISKS/TREE/TREE43.S3
-rw-r--r--DISKS/TREE/TREE44.S3
-rw-r--r--DISKS/TREE/TREE45.S3
-rw-r--r--DISKS/TREE/TREE46.S3
-rw-r--r--DISKS/TREE/TREE47.S3
-rw-r--r--DISKS/TREE/TREE48.S3
-rw-r--r--DISKS/TREE/TREE49.S1
-rw-r--r--DISKS/TREE/TREE5.S3
-rw-r--r--DISKS/TREE/TREE6.S3
-rw-r--r--DISKS/TREE/TREE7.S3
-rw-r--r--DISKS/TREE/TREE8.S3
-rw-r--r--DISKS/TREE/TREE9.S3
-rw-r--r--DISKS/TREN.DEF2691
-rw-r--r--DISKS/TRUCK.DEF3843
-rw-r--r--DISKS/TRUCK/TRUCK1.S4
-rw-r--r--DISKS/TRUCK/TRUCK10.S4
-rw-r--r--DISKS/TRUCK/TRUCK11.S4
-rw-r--r--DISKS/TRUCK/TRUCK12.S4
-rw-r--r--DISKS/TRUCK/TRUCK13.S4
-rw-r--r--DISKS/TRUCK/TRUCK14.S4
-rw-r--r--DISKS/TRUCK/TRUCK15.S4
-rw-r--r--DISKS/TRUCK/TRUCK16.S4
-rw-r--r--DISKS/TRUCK/TRUCK17.S4
-rw-r--r--DISKS/TRUCK/TRUCK18.S4
-rw-r--r--DISKS/TRUCK/TRUCK19.S4
-rw-r--r--DISKS/TRUCK/TRUCK2.S4
-rw-r--r--DISKS/TRUCK/TRUCK20.S4
-rw-r--r--DISKS/TRUCK/TRUCK21.S4
-rw-r--r--DISKS/TRUCK/TRUCK22.S4
-rw-r--r--DISKS/TRUCK/TRUCK23.S4
-rw-r--r--DISKS/TRUCK/TRUCK24.S4
-rw-r--r--DISKS/TRUCK/TRUCK25.S4
-rw-r--r--DISKS/TRUCK/TRUCK26.S4
-rw-r--r--DISKS/TRUCK/TRUCK27.S4
-rw-r--r--DISKS/TRUCK/TRUCK28.S4
-rw-r--r--DISKS/TRUCK/TRUCK29.S4
-rw-r--r--DISKS/TRUCK/TRUCK3.S4
-rw-r--r--DISKS/TRUCK/TRUCK30.S4
-rw-r--r--DISKS/TRUCK/TRUCK31.S4
-rw-r--r--DISKS/TRUCK/TRUCK32.S4
-rw-r--r--DISKS/TRUCK/TRUCK33.S4
-rw-r--r--DISKS/TRUCK/TRUCK34.S4
-rw-r--r--DISKS/TRUCK/TRUCK35.S4
-rw-r--r--DISKS/TRUCK/TRUCK36.S4
-rw-r--r--DISKS/TRUCK/TRUCK37.S4
-rw-r--r--DISKS/TRUCK/TRUCK38.S4
-rw-r--r--DISKS/TRUCK/TRUCK39.S4
-rw-r--r--DISKS/TRUCK/TRUCK4.S4
-rw-r--r--DISKS/TRUCK/TRUCK40.S4
-rw-r--r--DISKS/TRUCK/TRUCK41.S4
-rw-r--r--DISKS/TRUCK/TRUCK42.S4
-rw-r--r--DISKS/TRUCK/TRUCK43.S4
-rw-r--r--DISKS/TRUCK/TRUCK44.S4
-rw-r--r--DISKS/TRUCK/TRUCK45.S4
-rw-r--r--DISKS/TRUCK/TRUCK46.S4
-rw-r--r--DISKS/TRUCK/TRUCK47.S4
-rw-r--r--DISKS/TRUCK/TRUCK48.S4
-rw-r--r--DISKS/TRUCK/TRUCK49.S1
-rw-r--r--DISKS/TRUCK/TRUCK5.S4
-rw-r--r--DISKS/TRUCK/TRUCK6.S4
-rw-r--r--DISKS/TRUCK/TRUCK7.S4
-rw-r--r--DISKS/TRUCK/TRUCK8.S4
-rw-r--r--DISKS/TRUCK/TRUCK9.S4
-rw-r--r--DISKS/TUNN.DEF3203
-rw-r--r--DISKS/UJOA.DEF899
-rw-r--r--DISKS/UJOB.DEF899
-rw-r--r--DISKS/UJOB1.S2
-rw-r--r--DISKS/UJOB10.S2
-rw-r--r--DISKS/UJOB11.S2
-rw-r--r--DISKS/UJOB12.S2
-rw-r--r--DISKS/UJOB13.S2
-rw-r--r--DISKS/UJOB14.S2
-rw-r--r--DISKS/UJOB15.S2
-rw-r--r--DISKS/UJOB16.S2
-rw-r--r--DISKS/UJOB17.S2
-rw-r--r--DISKS/UJOB18.S2
-rw-r--r--DISKS/UJOB19.S2
-rw-r--r--DISKS/UJOB2.S2
-rw-r--r--DISKS/UJOB20.S2
-rw-r--r--DISKS/UJOB21.S2
-rw-r--r--DISKS/UJOB22.S2
-rw-r--r--DISKS/UJOB23.S2
-rw-r--r--DISKS/UJOB24.S2
-rw-r--r--DISKS/UJOB25.S2
-rw-r--r--DISKS/UJOB26.S2
-rw-r--r--DISKS/UJOB27.S2
-rw-r--r--DISKS/UJOB28.S2
-rw-r--r--DISKS/UJOB29.S2
-rw-r--r--DISKS/UJOB3.S2
-rw-r--r--DISKS/UJOB30.S2
-rw-r--r--DISKS/UJOB31.S2
-rw-r--r--DISKS/UJOB32.S2
-rw-r--r--DISKS/UJOB33.S1
-rw-r--r--DISKS/UJOB4.S2
-rw-r--r--DISKS/UJOB5.S2
-rw-r--r--DISKS/UJOB6.S2
-rw-r--r--DISKS/UJOB7.S2
-rw-r--r--DISKS/UJOB8.S2
-rw-r--r--DISKS/UJOB9.S2
-rw-r--r--DISKS/UJOC.DEF899
-rw-r--r--DISKS/UJOC1.S2
-rw-r--r--DISKS/UJOC10.S2
-rw-r--r--DISKS/UJOC11.S2
-rw-r--r--DISKS/UJOC12.S2
-rw-r--r--DISKS/UJOC13.S2
-rw-r--r--DISKS/UJOC14.S2
-rw-r--r--DISKS/UJOC15.S2
-rw-r--r--DISKS/UJOC16.S2
-rw-r--r--DISKS/UJOC17.S2
-rw-r--r--DISKS/UJOC18.S2
-rw-r--r--DISKS/UJOC19.S2
-rw-r--r--DISKS/UJOC2.S2
-rw-r--r--DISKS/UJOC20.S2
-rw-r--r--DISKS/UJOC21.S2
-rw-r--r--DISKS/UJOC22.S2
-rw-r--r--DISKS/UJOC23.S2
-rw-r--r--DISKS/UJOC24.S2
-rw-r--r--DISKS/UJOC25.S2
-rw-r--r--DISKS/UJOC26.S2
-rw-r--r--DISKS/UJOC27.S2
-rw-r--r--DISKS/UJOC28.S2
-rw-r--r--DISKS/UJOC29.S2
-rw-r--r--DISKS/UJOC3.S2
-rw-r--r--DISKS/UJOC30.S2
-rw-r--r--DISKS/UJOC31.S2
-rw-r--r--DISKS/UJOC32.S2
-rw-r--r--DISKS/UJOC33.S1
-rw-r--r--DISKS/UJOC4.S2
-rw-r--r--DISKS/UJOC5.S2
-rw-r--r--DISKS/UJOC6.S2
-rw-r--r--DISKS/UJOC7.S2
-rw-r--r--DISKS/UJOC8.S2
-rw-r--r--DISKS/UJOC9.S2
-rw-r--r--DISKS/WATM.DEF1283
-rw-r--r--DISKS/WATR.DEF1923
-rw-r--r--DISKS/X.DEF1923
-rw-r--r--DISKS/XDTA.S352
-rw-r--r--DOWNLOAD.PRGbin0 -> 13079 bytes
-rw-r--r--E00.S51
-rw-r--r--F00.S51
-rw-r--r--GAME.S879
-rw-r--r--GAMEQU.S46
-rw-r--r--GAMEX.Obin0 -> 16066 bytes
-rw-r--r--GAMEX.S1112
-rw-r--r--GAMEX.SR344
-rw-r--r--GNDMOVE.S373
-rw-r--r--GROUND.S524
-rw-r--r--MAC.PRGbin0 -> 72128 bytes
-rw-r--r--MARIA.S198
-rw-r--r--MARIA2.S195
-rw-r--r--PAGEZERO.S61
-rw-r--r--PRINT.S2
-rw-r--r--R000.S67
-rw-r--r--R100.S55
-rw-r--r--R200.S56
-rw-r--r--R300.S56
-rw-r--r--R400.S56
-rw-r--r--R500.S56
-rw-r--r--R600.S56
-rw-r--r--R700.S56
-rw-r--r--R800.S56
-rw-r--r--R900.S56
-rw-r--r--RA00.S56
-rw-r--r--RAMAREA.S52
-rw-r--r--RB00.S56
-rw-r--r--RC00.S56
-rw-r--r--RD00.S56
-rw-r--r--RE00.S56
-rw-r--r--RF00.S56
-rw-r--r--ROMAREA.S887
-rw-r--r--TABLE.Sbin0 -> 5300 bytes
-rw-r--r--XDTA.S70
671 files changed, 145054 insertions, 0 deletions
diff --git a/000.S b/000.S
new file mode 100644
index 0000000..1c1f010
--- /dev/null
+++ b/000.S
@@ -0,0 +1,68 @@
+RUJOA1:
+ .DC.B $0F,$FB,$B0
+RUJOA2:
+ .DC.B $00,$00,$00
+RUJOB1:
+ .DC.B $0F,$FB,$B0
+RUJOB2:
+ .DC.B $00,$00,$00
+RLUJOA1:
+ .DC.B $02,$7A,$B0
+RLUJOA2:
+ .DC.B $00,$00,$00
+RLUJOB1:
+ .DC.B $02,$7A,$B0
+RLUJOB2:
+ .DC.B $00,$00,$00
+RLJOA1:
+ .DC.B $06,$DB,$A4
+RLJOA2:
+ .DC.B $00,$00,$00
+RLJOB1:
+ .DC.B $06,$DB,$A4
+RLJOB2:
+ .DC.B $00,$00,$00
+RLDJOA1:
+ .DC.B $0E,$EE,$A4
+RLDJOA2:
+ .DC.B $00,$00,$00
+RLDJOB1:
+ .DC.B $0E,$EE,$A4
+RLDJOB2:
+ .DC.B $00,$00,$00
+RDJOA1:
+ .DC.B $0A,$EF,$B0
+RDJOA2:
+ .DC.B $00,$00,$00
+RDJOB1:
+ .DC.B $0A,$EF,$B0
+RDJOB2:
+ .DC.B $00,$00,$00
+RRDJOA1:
+ .DC.B $1A,$BB,$B0
+RRDJOA2:
+ .DC.B $00,$00,$00
+RRDJOB1:
+ .DC.B $1A,$BB,$B0
+RRDJOB2:
+ .DC.B $00,$00,$00
+RRJOA1:
+ .DC.B $1A,$E7,$90
+RRJOA2:
+ .DC.B $00,$00,$00
+RRJOB1:
+ .DC.B $1A,$E7,$90
+RRJOB2:
+ .DC.B $00,$00,$00
+RRUJOA1:
+ .DC.B $0E,$AD,$80
+RRUJOA2:
+ .DC.B $00,$00,$00
+RRUJOB1:
+ .DC.B $0E,$AD,$80
+RRUJOB2:
+ .DC.B $00,$00,$00
+RGREN:
+ .DC.B $00
+RBULL:
+ .DC.B $00
diff --git a/100.S b/100.S
new file mode 100644
index 0000000..678da99
--- /dev/null
+++ b/100.S
@@ -0,0 +1,51 @@
+ .DC.B $0F,$FB,$B0
+ .DC.B $00,$02,$00
+;
+ .DC.B $0F,$FB,$B0
+ .DC.B $02,$40,$00
+;
+ .DC.B $01,$AB,$B0
+ .DC.B $00,$A0,$00
+;
+ .DC.B $01,$AB,$B0
+ .DC.B $00,$14,$00
+;
+ .DC.B $0A,$AA,$B8
+ .DC.B $00,$28,$00
+;
+ .DC.B $0A,$AA,$B8
+ .DC.B $00,$14,$00
+;
+ .DC.B $0E,$FB,$B8
+ .DC.B $00,$80,$00
+;
+ .DC.B $0E,$FB,$B8
+ .DC.B $00,$02,$00
+;
+ .DC.B $0E,$FB,$B0
+ .DC.B $00,$09,$00
+;
+ .DC.B $0E,$FB,$B0
+ .DC.B $00,$00,$00
+;
+ .DC.B $2E,$EF,$B0
+ .DC.B $00,$02,$00
+;
+ .DC.B $2E,$EF,$B0
+ .DC.B $00,$80,$00
+;
+ .DC.B $2E,$AA,$A0
+ .DC.B $00,$28,$00
+;
+ .DC.B $2E,$AA,$A0
+ .DC.B $00,$14,$00
+;
+ .DC.B $0E,$EA,$40
+ .DC.B $00,$0A,$00
+;
+ .DC.B $0E,$EA,$40
+ .DC.B $00,$14,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/200.S b/200.S
new file mode 100644
index 0000000..f463752
--- /dev/null
+++ b/200.S
@@ -0,0 +1,51 @@
+ .DC.B $0F,$FE,$F0
+ .DC.B $00,$09,$00
+;
+ .DC.B $0F,$FE,$F0
+ .DC.B $03,$80,$00
+;
+ .DC.B $00,$AB,$B0
+ .DC.B $00,$26,$80
+;
+ .DC.B $00,$AB,$B0
+ .DC.B $00,$29,$24
+;
+ .DC.B $2A,$AA,$B8
+ .DC.B $00,$09,$A0
+;
+ .DC.B $2A,$AA,$B8
+ .DC.B $00,$29,$24
+;
+ .DC.B $0F,$FB,$B8
+ .DC.B $00,$90,$00
+;
+ .DC.B $0F,$FB,$B8
+ .DC.B $00,$02,$40
+;
+ .DC.B $0E,$FE,$B0
+ .DC.B $00,$0A,$00
+;
+ .DC.B $0E,$FE,$B0
+ .DC.B $02,$40,$00
+;
+ .DC.B $2E,$EF,$F0
+ .DC.B $00,$06,$00
+;
+ .DC.B $2E,$EF,$F0
+ .DC.B $01,$80,$00
+;
+ .DC.B $2E,$AA,$A8
+ .DC.B $0A,$60,$00
+;
+ .DC.B $2E,$AA,$A8
+ .DC.B $18,$68,$00
+;
+ .DC.B $0E,$EA,$00
+ .DC.B $02,$98,$00
+;
+ .DC.B $0E,$EA,$00
+ .DC.B $18,$68,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/300.S b/300.S
new file mode 100644
index 0000000..fd15ff9
--- /dev/null
+++ b/300.S
@@ -0,0 +1,51 @@
+ .DC.B $0F,$FE,$F0
+ .DC.B $00,$0F,$00
+;
+ .DC.B $0F,$FE,$F0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $08,$EB,$B0
+ .DC.B $00,$28,$90
+;
+ .DC.B $08,$EB,$B0
+ .DC.B $00,$0A,$28
+;
+ .DC.B $03,$EE,$F8
+ .DC.B $00,$0A,$24
+;
+ .DC.B $03,$EE,$F8
+ .DC.B $00,$0A,$28
+;
+ .DC.B $0F,$FE,$D0
+ .DC.B $00,$A0,$00
+;
+ .DC.B $0F,$FE,$D0
+ .DC.B $00,$02,$80
+;
+ .DC.B $0F,$DE,$F0
+ .DC.B $00,$0E,$00
+;
+ .DC.B $0F,$DE,$F0
+ .DC.B $02,$80,$00
+;
+ .DC.B $07,$BF,$F0
+ .DC.B $00,$0A,$00
+;
+ .DC.B $07,$BF,$F0
+ .DC.B $02,$80,$00
+;
+ .DC.B $2F,$BB,$C0
+ .DC.B $18,$A0,$00
+;
+ .DC.B $2F,$BB,$C0
+ .DC.B $28,$A0,$00
+;
+ .DC.B $0E,$EB,$20
+ .DC.B $06,$28,$00
+;
+ .DC.B $0E,$EB,$20
+ .DC.B $28,$A0,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/320TEST.S b/320TEST.S
new file mode 100644
index 0000000..247ed1e
--- /dev/null
+++ b/320TEST.S
@@ -0,0 +1,328 @@
+
+ .include "maria.s"
+
+ .title "Sample Atari 7800 "
+ .subttl "zero page declarations"
+
+ROM = $F000 ; start of ROM cart
+ROMDATA = $E000
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ .org $40
+
+INDPT1: .ds.w 1
+INDPT2: .ds.w 1
+INDPT3: .ds.w 1
+
+v1fBB: .ds.b 1 ;save .a in outchar
+v1fBC: .ds.b 1 ;save .x in outchar
+v1fBD: .ds.b 1 ;save .y in outchar
+v1fBE: .ds.b 1 ;loop counter in outchar
+
+v1fC0: .ds.b 1 ;temp var used in subrk
+CBTMP: .DS.B 1
+VALUE: .DS.B 1
+COUNT: .ds.b 1
+sdppl: .ds.b 1 ;shadow of display list list
+sdpph: .ds.b 1
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ .subttl "ram subroutines and display list data"
+ .org RAM3
+
+dllist: ds.b 60
+filler: ds.b 6
+line1: ds.b 7
+line2: ds.b 7
+line3: ds.b 7
+line4: ds.b 7
+line5: ds.b 7
+line6: ds.b 7
+line7: ds.b 7
+line8: ds.b 7
+line9: ds.b 7
+line10: ds.b 7
+line11: ds.b 7
+line12: ds.b 7
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ .ORG ROMDATA+$0F00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0E00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0D00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0C00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0B00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0A00
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0900
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0800
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0700
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0600
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0500
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0400
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0300
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0200
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0100
+ .DC.B $FF
+ .DC.B $0F
+ .DC.B $F0
+ .DC.B $00
+ .ORG ROMDATA+$0000
+DATA4:
+ .DC.B $FF
+DATA3:
+ .DC.B $0F
+DATA2:
+ .DC.B $F0
+DATA1:
+ .DC.B $00
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ .org ROM
+
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,0,filler
+ display 0,0,0,15,line1
+ display 0,0,0,15,line2
+ display 0,0,0,15,line3
+ display 0,0,0,15,line4
+ display 0,0,0,15,line5
+ display 0,0,0,15,line6
+ display 0,0,0,15,line7
+ display 0,0,0,15,line8
+ display 0,0,0,15,line9
+ display 0,0,0,15,line10
+ display 0,0,0,15,line11
+ display 0,0,0,15,line12
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,1,filler
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+ .subttl "display lists"
+;here are the display lists referenced in the display list list
+
+;filler
+ header RAM1,0,0,0 ;address,palette,width,hpos
+ nullhdr
+;line1
+ xheader DATA1,0,1,0,1,0
+ nullhdr
+
+;line2
+ xheader DATA2,0,1,8,1,0
+ nullhdr
+;line3
+ xheader DATA3,0,1,16,1,0
+ nullhdr
+;line4
+ xheader DATA4,0,1,24,1,0
+ nullhdr
+;line5
+ xheader DATA1,0,1,32,1,0
+ nullhdr
+;line6
+ xheader DATA2,0,1,40,1,0
+ nullhdr
+;line7
+ xheader DATA3,0,1,48,1,0
+ nullhdr
+;line8
+ xheader DATA4,0,1,56,1,0
+ nullhdr
+;line9
+ xheader DATA1,0,1,64,1,0
+ nullhdr
+;line10
+ xheader DATA2,0,1,72,1,0
+ nullhdr
+;line11
+ xheader DATA3,0,1,80,1,0
+ nullhdr
+;line12
+ xheader DATA4,0,1,90,1,0
+ nullhdr
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+ .subttl "main program"
+; place for IRQ and NMI to attach
+dummy:
+ rti
+
+main:
+ sei
+ cld
+
+ ldx #$FF ;init stack
+ txs
+
+ lda #$7
+; sta PTCTRL
+
+ lda #$7f
+ sta CTRL
+
+ inx
+loop:
+;move display list list to RAM
+
+ lda ROM,x
+ sta RAM3,x
+
+ lda ROM+$100,x
+ sta RAM3+$100,x
+
+ inx
+ bne loop
+main30:
+ bit MSTAT ;Vblank?
+ bmi main30 ;wait while it is on...
+main32:
+ bit MSTAT ;Vblank?
+ bpl main32 ;wait until it comes back...
+
+ dppload dllist ;init display list list.
+
+ screen 0,2,0,1,1,2 ;Maria setups:
+ ;0=normal color.
+ ;2=Normal DMA.
+ ;0=single byte wide characters.
+ ;1=background colored border.
+ ;0=transparency mode.
+ ;3=320 a or c mode.
+ sta VALUE
+
+ LDA #$0F
+ STA COUNT
+
+ lda #$22
+ sta BKGRND ;maria background color register
+
+ LDA #$0E
+ STA P0C1
+
+ lda #$00
+ sta P0C2 ;maria pallette 0 - color 2
+
+ LDA #$D4
+ STA P0C3
+
+; INIT 2 BUTTON
+ LDA #$14
+ STA CTLSWB
+ LDA #0
+ STA CTLSWA
+; STA $0001
+ STA SWCHB
+main40:
+main42:
+ bit MSTAT ;Vblank?
+ bmi main42 ;wait while it is on...
+main44:
+ bit MSTAT ;Vblank?
+ bpl main44 ;wait until it comes back...
+
+ LDA INPT0
+ BMI DOIT
+
+ LDA INPT1
+ BMI DOIT
+
+ LDA INPT2
+ BMI DOIT
+
+ LDA INPT3
+ BMI DOIT
+
+ LDA #$0
+; STA BKGRND
+ JMP OVER
+
+DOIT: LDA #$0E
+; STA BKGRND
+
+OVER: LDA SWCHB
+ AND #PAUSE
+ BNE main40
+
+ DEC COUNT
+ BNE main40
+
+ LDA #$0F
+ STA COUNT
+ LDA VALUE
+ EOR #$04
+ STA VALUE
+ STA CTRL
+ jmp main40
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ .org $FFF8
+
+ .dc.w $F7FF
+ .dc.w dummy ;NMI
+ .dc.w main ;RESET
+ .dc.w dummy ;IRQ
diff --git a/400.S b/400.S
new file mode 100644
index 0000000..a096144
--- /dev/null
+++ b/400.S
@@ -0,0 +1,51 @@
+ .DC.B $0F,$FF,$B0
+ .DC.B $00,$0F,$00
+;
+ .DC.B $0F,$FF,$B0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $08,$AF,$B0
+ .DC.B $00,$18,$A0
+;
+ .DC.B $08,$AF,$B0
+ .DC.B $00,$0A,$09
+;
+ .DC.B $03,$FB,$F8
+ .DC.B $00,$06,$28
+;
+ .DC.B $03,$FB,$F8
+ .DC.B $00,$0A,$09
+;
+ .DC.B $0F,$5E,$E0
+ .DC.B $00,$E0,$00
+;
+ .DC.B $0F,$5E,$E0
+ .DC.B $00,$03,$80
+;
+ .DC.B $0F,$57,$B0
+ .DC.B $00,$0F,$00
+;
+ .DC.B $0F,$57,$B0
+ .DC.B $03,$80,$00
+;
+ .DC.B $0B,$B5,$F0
+ .DC.B $00,$0B,$00
+;
+ .DC.B $0B,$B5,$F0
+ .DC.B $02,$C0,$00
+;
+ .DC.B $2F,$EF,$C0
+ .DC.B $28,$90,$00
+;
+ .DC.B $2F,$EF,$C0
+ .DC.B $60,$A0,$00
+;
+ .DC.B $0E,$FA,$20
+ .DC.B $0A,$24,$00
+;
+ .DC.B $0E,$FA,$20
+ .DC.B $60,$A0,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/40COL.S b/40COL.S
new file mode 100644
index 0000000..e0a1fbb
--- /dev/null
+++ b/40COL.S
@@ -0,0 +1,634 @@
+ .6502
+ .include "MARIA.S"
+
+ .title "Sample Atari 7800 "
+ .subttl "zero page declarations"
+
+ROM = $f000 ; start of ROM cart
+
+ .org $40
+
+INDPT1: .ds.w 1
+INDPT2: .ds.w 1
+INDPT3: .ds.w 1
+
+v1fBB: .ds.b 1 ;save .a in outchar
+v1fBC: .ds.b 1 ;save .x in outchar
+v1fBD: .ds.b 1 ;save .y in outchar
+v1fBE: .ds.b 1 ;loop counter in outchar
+
+v1fC0: .ds.b 1 ;temp var used in subrk
+count: .ds.b 1
+sdppl: .ds.b 1 ;shadow of display list list
+sdpph: .ds.b 1
+ .subttl "ram subroutines and display list data"
+ .org RAM3
+
+dllist: ds.b 96
+filler: ds.b 6
+line1: ds.b 12
+line2: ds.b 12
+line3: ds.b 12
+line4: ds.b 12
+line5: ds.b 12
+line6: ds.b 12
+line7: ds.b 12
+line8: ds.b 12
+line9: ds.b 12
+line10: ds.b 12
+line11: ds.b 12
+line12: ds.b 12
+line13: ds.b 12
+line14: ds.b 12
+line15: ds.b 12
+line16: ds.b 12
+line17: ds.b 12
+line18: ds.b 12
+line19: ds.b 12
+line20: ds.b 12
+line21: ds.b 12
+line22: ds.b 12
+line23: ds.b 12
+line24: ds.b 12
+
+ .subttl "video matrix ram"
+ .org $2400
+
+columns = 40 ;number of characters per line
+SCREEN:
+row1: ds.b columns
+row2: ds.b columns
+row3: ds.b columns
+row4: ds.b columns
+row5: ds.b columns
+row6: ds.b columns
+row7: ds.b columns
+row8: ds.b columns
+row9: ds.b columns
+row10: ds.b columns
+row11: ds.b columns
+row12: ds.b columns
+row13: ds.b columns
+row14: ds.b columns
+row15: ds.b columns
+row16: ds.b columns
+row17: ds.b columns
+row18: ds.b columns
+row19: ds.b columns
+row20: ds.b columns
+row21: ds.b columns
+row22: ds.b columns
+row23: ds.b columns
+row24: ds.b columns
+ .subttl "begin ROM -- RAM routines"
+ .org ROM
+; here begins the display list list
+
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,0,filler
+ display 0,0,0,7,line1
+ display 0,0,0,7,line2
+ display 0,0,0,7,line3
+ display 0,0,0,7,line4
+ display 0,0,0,7,line5
+ display 0,0,0,7,line6
+ display 0,0,0,7,line7
+ display 0,0,0,7,line8
+ display 0,0,0,7,line9
+ display 0,0,0,7,line10
+ display 0,0,0,7,line11
+ display 0,0,0,7,line12
+ display 0,0,0,7,line13
+ display 0,0,0,7,line14
+ display 0,0,0,7,line15
+ display 0,0,0,7,line16
+ display 0,0,0,7,line17
+ display 0,0,0,7,line18
+ display 0,0,0,7,line19
+ display 0,0,0,7,line20
+ display 0,0,0,7,line21
+ display 0,0,0,7,line22
+ display 0,0,0,7,line23
+ display 0,0,0,7,line24
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,1,filler
+ .subttl "display lists"
+;here are the display lists referenced in the display list list
+
+;filler
+ header RAM1,0,0,0 ;address,palette,width,hpos
+ nullhdr
+;line1
+ xheader row1,0,20,0,0,1 ;address,palette,width,hpos,wm,ind
+ xheader row1+(columns/2),0,20,80,0,1
+ nullhdr
+
+;line2
+ xheader row2,0,20,0,0,1
+ xheader row2+(columns/2),0,20,80,0,1
+ nullhdr
+;line3
+ xheader row3,0,20,0,0,1
+ xheader row3+(columns/2),0,20,80,0,1
+ nullhdr
+;line4
+ xheader row4,0,20,0,0,1
+ xheader row4+(columns/2),0,20,80,0,1
+ nullhdr
+;line5
+ xheader row5,0,20,0,0,1
+ xheader row5+(columns/2),0,20,80,0,1
+ nullhdr
+;line6
+ xheader row6,0,20,0,0,1
+ xheader row6+(columns/2),0,20,80,0,1
+ nullhdr
+;line7
+ xheader row7,0,20,0,0,1
+ xheader row7+(columns/2),0,20,80,0,1
+ nullhdr
+;line8
+ xheader row8,0,20,0,0,1
+ xheader row8+(columns/2),0,20,80,0,1
+ nullhdr
+;line9
+ xheader row9,0,20,0,0,1
+ xheader row9+(columns/2),0,20,80,0,1
+ nullhdr
+;line10
+ xheader row10,0,20,0,0,1
+ xheader row10+(columns/2),0,20,80,0,1
+ nullhdr
+;line11
+ xheader row11,0,20,0,0,1
+ xheader row11+(columns/2),0,20,80,0,1
+ nullhdr
+;line12
+ xheader row12,0,20,0,0,1
+ xheader row12+(columns/2),0,20,80,0,1
+ nullhdr
+;line13
+ xheader row13,0,20,0,0,1
+ xheader row13+(columns/2),0,20,80,0,1
+ nullhdr
+;line14
+ xheader row14,0,20,0,0,1
+ xheader row14+(columns/2),0,20,80,0,1
+ nullhdr
+;line15
+ xheader row15,0,20,0,0,1
+ xheader row15+(columns/2),0,20,80,0,1
+ nullhdr
+;line16
+ xheader row16,0,20,0,0,1
+ xheader row16+(columns/2),0,20,80,0,1
+ nullhdr
+;line17
+ xheader row17,0,20,0,0,1
+ xheader row17+(columns/2),0,20,80,0,1
+ nullhdr
+;line18
+ xheader row18,0,20,0,0,1
+ xheader row18+(columns/2),0,20,80,0,1
+ nullhdr
+;line19
+ xheader row19,0,20,0,0,1
+ xheader row19+(columns/2),0,20,80,0,1
+ nullhdr
+;line20
+ xheader row20,0,20,0,0,1
+ xheader row20+(columns/2),0,20,80,0,1
+ nullhdr
+;line21
+ xheader row21,0,20,0,0,1
+ xheader row21+(columns/2),0,20,80,0,1
+ nullhdr
+;line22
+ xheader row22,0,20,0,0,1
+ xheader row22+(columns/2),0,20,80,0,1
+ nullhdr
+;line23
+ xheader row23,0,20,0,0,1
+ xheader row23+(columns/2),0,20,80,0,1
+ nullhdr
+;line24
+ xheader row24,0,20,0,0,1
+ xheader row24+(columns/2),0,20,80,0,1
+ nullhdr
+
+ .subttl "Character generation data"
+;The data here is represented so that every 128 bytes sequentially is the next
+;row of the 8 x 8 character represented. As an example, the first row of a
+;capital A is located at table + $41, the second at table + $41 + $80, etc.
+
+table:
+ dc.b $00,$7E,$7E,$6C,$10,$38,$10,$00
+ dc.b $FF,$00,$FF,$0F,$3C,$3F,$7F,$99
+ dc.b $80,$02,$18,$66,$7F,$3E,$00,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$6C,$6C,$30,$00,$38,$60
+ dc.b $18,$60,$00,$00,$00,$00,$00,$06
+ dc.b $7C,$30,$78,$78,$1C,$FC,$38,$FC
+ dc.b $78,$78,$00,$00,$18,$00,$60,$78
+ dc.b $7C,$30,$FC,$3C,$F8,$FE,$FE,$3C
+ dc.b $CC,$78,$1E,$E6,$F0,$C6,$C6,$38
+ dc.b $FC,$78,$FC,$78,$FC,$CC,$CC,$C6
+ dc.b $C6,$CC,$FE,$78,$C0,$78,$10,$00
+ dc.b $30,$00,$E0,$00,$1C,$00,$38,$00
+ dc.b $E0,$30,$0C,$E0,$70,$00,$00,$00
+ dc.b $00,$00,$00,$00,$10,$00,$00,$00
+ dc.b $00,$00,$00,$1C,$18,$E0,$76,$00
+ dc.b $00,$81,$FF,$FE,$38,$7C,$10,$00
+ dc.b $FF,$3C,$C3,$07,$66,$33,$63,$5A
+ dc.b $E0,$0E,$3C,$66,$DB,$63,$00,$3C
+ dc.b $3C,$18,$18,$30,$00,$24,$18,$FF
+ dc.b $00,$78,$6C,$6C,$7C,$C6,$6C,$60
+ dc.b $30,$30,$66,$30,$00,$00,$00,$0C
+ dc.b $C6,$70,$CC,$CC,$3C,$C0,$60,$CC
+ dc.b $CC,$CC,$30,$30,$30,$00,$30,$CC
+ dc.b $C6,$78,$66,$66,$6C,$62,$62,$66
+ dc.b $CC,$30,$0C,$66,$60,$EE,$E6,$6C
+ dc.b $66,$CC,$66,$CC,$B4,$CC,$CC,$C6
+ dc.b $C6,$CC,$C6,$60,$60,$18,$38,$00
+ dc.b $30,$00,$60,$00,$0C,$00,$6C,$00
+ dc.b $60,$00,$00,$60,$30,$00,$00,$00
+ dc.b $00,$00,$00,$00,$30,$00,$00,$00
+ dc.b $00,$00,$00,$30,$18,$30,$DC,$10
+ dc.b $00,$A5,$DB,$FE,$7C,$38,$38,$18
+ dc.b $E7,$66,$99,$0F,$66,$3F,$7F,$3C
+ dc.b $F8,$3E,$7E,$66,$DB,$38,$00,$7E
+ dc.b $7E,$18,$0C,$60,$C0,$66,$3C,$FF
+ dc.b $00,$78,$6C,$FE,$C0,$CC,$38,$C0
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$18
+ dc.b $CE,$30,$0C,$0C,$6C,$F8,$C0,$0C
+ dc.b $CC,$CC,$30,$30,$60,$FC,$18,$0C
+ dc.b $DE,$CC,$66,$C0,$66,$68,$68,$C0
+ dc.b $CC,$30,$0C,$6C,$60,$FE,$F6,$C6
+ dc.b $66,$CC,$66,$E0,$30,$CC,$CC,$C6
+ dc.b $6C,$CC,$8C,$60,$30,$18,$6C,$00
+ dc.b $18,$78,$60,$78,$0C,$78,$60,$76
+ dc.b $6C,$70,$0C,$66,$30,$CC,$F8,$78
+ dc.b $DC,$76,$DC,$7C,$7C,$CC,$CC,$C6
+ dc.b $C6,$CC,$FC,$30,$18,$30,$00,$38
+ dc.b $00,$81,$FF,$FE,$FE,$FE,$7C,$3C
+ dc.b $C3,$42,$BD,$7D,$66,$30,$63,$E7
+ dc.b $FE,$FE,$18,$66,$7B,$6C,$00,$18
+ dc.b $18,$18,$FE,$FE,$C0,$FF,$7E,$7E
+ dc.b $00,$30,$00,$6C,$78,$18,$76,$00
+ dc.b $60,$18,$FF,$FC,$00,$FC,$00,$30
+ dc.b $DE,$30,$38,$38,$CC,$0C,$F8,$18
+ dc.b $78,$7C,$00,$00,$C0,$00,$0C,$18
+ dc.b $DE,$CC,$7C,$C0,$66,$78,$78,$C0
+ dc.b $FC,$30,$0C,$78,$60,$FE,$DE,$C6
+ dc.b $7C,$CC,$7C,$70,$30,$CC,$CC,$D6
+ dc.b $38,$78,$18,$60,$18,$18,$C6,$00
+ dc.b $00,$0C,$7C,$CC,$7C,$CC,$F0,$CC
+ dc.b $76,$30,$0C,$6C,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$76,$C0,$30,$CC,$CC,$D6
+ dc.b $5C,$CC,$98,$E0,$00,$1C,$00,$6C
+ dc.b $00,$BD,$C3,$7C,$7C,$FE,$FE,$3C
+ dc.b $C3,$42,$BD,$CC,$3C,$30,$63,$E7
+ dc.b $F8,$3E,$18,$66,$1B,$6C,$7E,$7E
+ dc.b $18,$7E,$0C,$60,$C0,$66,$FF,$3C
+ dc.b $00,$30,$00,$FE,$0C,$30,$DC,$00
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$60
+ dc.b $F6,$30,$60,$0C,$FE,$0C,$CC,$30
+ dc.b $CC,$0C,$00,$00,$60,$00,$18,$30
+ dc.b $DE,$FC,$66,$C0,$66,$68,$68,$CE
+ dc.b $CC,$30,$CC,$6C,$62,$D6,$CE,$C6
+ dc.b $60,$DC,$6C,$1C,$30,$CC,$CC,$FE
+ dc.b $38,$30,$32,$60,$0C,$18,$00,$00
+ dc.b $00,$7C,$66,$C0,$CC,$FC,$60,$CC
+ dc.b $66,$30,$0C,$78,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$66,$78,$30,$CC,$CC,$FE
+ dc.b $38,$CC,$30,$30,$18,$30,$00,$C6
+ dc.b $00,$99,$E7,$38,$38,$7C,$7C,$18
+ dc.b $E7,$66,$99,$CC,$18,$70,$67,$3C
+ dc.b $E0,$0E,$7E,$00,$1B,$38,$7E,$3C
+ dc.b $18,$3C,$18,$30,$FE,$24,$FF,$18
+ dc.b $00,$00,$00,$6C,$F8,$66,$CC,$00
+ dc.b $30,$30,$66,$30,$30,$00,$30,$C0
+ dc.b $E6,$30,$CC,$CC,$0C,$CC,$CC,$30
+ dc.b $CC,$18,$30,$30,$30,$FC,$30,$00
+ dc.b $C0,$CC,$66,$66,$6C,$62,$60,$66
+ dc.b $CC,$30,$CC,$66,$66,$C6,$C6,$6C
+ dc.b $60,$78,$66,$CC,$30,$CC,$78,$EE
+ dc.b $6C,$30,$66,$60,$06,$18,$00,$00
+ dc.b $00,$CC,$66,$CC,$CC,$C0,$60,$7C
+ dc.b $66,$30,$CC,$6C,$30,$D6,$CC,$CC
+ dc.b $7C,$7C,$60,$0C,$34,$CC,$78,$FE
+ dc.b $6C,$7C,$64,$30,$18,$30,$00,$C6
+ dc.b $00,$81,$FF,$10,$10,$38,$38,$00
+ dc.b $FF,$3C,$C3,$CC,$7E,$F0,$E6,$5A
+ dc.b $80,$02,$3C,$66,$1B,$CC,$7E,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$00,$6C,$30,$C6,$76,$00
+ dc.b $18,$60,$00,$00,$30,$00,$30,$80
+ dc.b $7C,$FC,$FC,$78,$1E,$78,$78,$30
+ dc.b $78,$70,$30,$30,$18,$00,$60,$30
+ dc.b $78,$CC,$FC,$3C,$F8,$FE,$F0,$3E
+ dc.b $CC,$78,$78,$E6,$FE,$C6,$C6,$38
+ dc.b $F0,$1C,$E6,$78,$78,$FC,$30,$C6
+ dc.b $C6,$78,$FE,$78,$02,$78,$00,$00
+ dc.b $00,$76,$DC,$78,$76,$78,$F0,$0C
+ dc.b $E6,$78,$CC,$E6,$78,$C6,$CC,$78
+ dc.b $60,$0C,$F0,$F8,$18,$76,$30,$6C
+ dc.b $C6,$0C,$FC,$1C,$18,$E0,$00,$FE
+ dc.b $00,$7E,$7E,$00,$00,$7C,$7C,$00
+ dc.b $FF,$00,$FF,$78,$18,$E0,$C0,$99
+ dc.b $00,$00,$18,$00,$00,$78,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$60,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$F8
+ dc.b $00,$00,$78,$00,$00,$00,$00,$00
+ dc.b $F0,$1E,$00,$00,$00,$00,$00,$00
+ dc.b $00,$F8,$00,$00,$00,$00,$00,$00
+ .subttl "main program"
+; place for IRQ and NMI to attach
+dummy:
+ rti
+
+main:
+ sei
+ cld
+
+ ldx #$FF ;init stack
+ txs
+
+ lda #$7
+; sta PTCTRL
+
+ lda #$7f
+ sta CTRL
+
+ inx
+loop:
+;move display list list to RAM
+
+ lda ROM,x
+ sta RAM3,x
+
+ lda ROM+$100,x
+ sta RAM3+$100,x
+
+;move character rom data
+;Maria fetches character data every 256 locations so the character
+;ROM data is thus spread out from the packed ROM representation
+
+ lda table,x
+ sta RAM1+$700,x
+
+ lda table+$80,x
+ sta RAM1+$600,x
+
+ lda table+$100,x
+ sta RAM1+$500,x
+
+ lda table+$180,x
+ sta RAM1+$400,x
+
+ lda table+$200,x
+ sta RAM1+$300,x
+
+ lda table+$280,x
+ sta RAM1+$200,x
+
+ lda table+$300,x
+ sta RAM1+$100,x
+
+ lda table+$380,x
+ sta RAM1,x
+
+ inx
+ bne loop
+main30:
+ bit MSTAT ;Vblank?
+ bmi main30 ;wait while it is on...
+main32:
+ bit MSTAT ;Vblank?
+ bpl main32 ;wait until it comes back...
+
+ lda #RAM1 >> 8
+ sta CHBASE ;character base address.
+
+ dppload dllist ;init display list list.
+
+ screen 1,2,0,1,0,3 ;Maria setups:
+ ;0=normal color.
+ ;2=Normal DMA.
+ ;0=single byte wide characters.
+ ;1=background colored border.
+ ;0=transparency mode.
+ ;3=320 a or c mode.
+
+around:
+ lda #$0
+ sta BKGRND ;maria background color register
+
+ lda #$0e
+ sta P0C2 ;maria pallette 0 - color 2
+
+ jsr clear ;clear screen
+main40:
+ lda #0
+ sta v1fC0
+main50:
+ lda v1fC0
+ cmp #$0d
+ beq main60
+ jsr outchar
+main60: inc v1fC0
+ cmp #$7f
+ bne main50
+ beq main40
+
+outchar:
+ sta v1fBB ;save all registers
+ stx v1fBC
+ sty v1fBD
+outc10:
+ lda SWCHB ;read console switches
+ and #PAUSE ;PAUSE down?
+ beq outc10 ;yes ... wait until released
+
+ lda v1fBB ;restore character to print
+ and #$7F ;strip off high bit
+ cmp #$0D ;see if a carriage return
+ bne outc2 ;no ...
+
+ ldx #0 ;search for start of next line
+outc11:
+ sec
+ lda lines,x
+ sbc INDPT2
+ lda lines+1,x
+ sbc INDPT2+1
+ bcs outc15 ;found a line start >=
+ inx
+ inx
+ cpx #46 ;end of table?
+ bcc outc11 ;keep looking...
+outc15:
+ lda lines,x ;start of next line
+ sta INDPT2
+ lda lines+1,x
+ sta INDPT2+1
+ jmp doneoutc ;done ...
+outc2:
+ sec
+ lda INDPT2
+ sbc #(row24+columns) & $ff ;beyond end of screen?
+ lda INDPT2+1
+ sbc #(row24+columns) >> 8
+ bcs outc3 ;yes ...
+ jmp outc6b ;no ... o.k. to print
+outc3:
+ lda #$03 ;outer loop counter (3 pages)
+ sta v1fBE
+
+ lda #SCREEN & $ff ;init pointers to begin of screen
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+outc3a:
+ ldx #$00
+outc3b:
+ ldy #columns ;get one line ahead
+ lda (INDPT2),y
+ ldy #$00
+ sta (INDPT2),y ;store it where we are
+
+ inc INDPT2 ;advance pointer to next position
+ bne outc4
+ inc INDPT2+1
+outc4:
+ inx
+ bne outc3b
+ dec v1fBE
+ bpl outc3a
+
+ lda #row24 & $ff
+ sta INDPT2
+ lda #row24 >> 8
+ sta INDPT2+1
+
+ ldx #columns-1 ;clear the last line
+ lda #$00
+outc6:
+ sta row24+columns,x
+ sta row24,x
+ dex
+ bpl outc6
+outc6b:
+ ldy #$00
+ lda v1fBB ;get back saved character
+ and #$7F ;mask off high bit
+ cmp #$0D ;carriage return?
+ beq doneoutc ;yes ...
+
+ sta (INDPT2),y ;put character in video matrix
+ inc INDPT2 ;increment lo of char pointer
+ bne doneoutc ;no carry ...
+ inc INDPT2+1 ;increment hi of char pointer
+doneoutc:
+ lda v1fBB ;restore registers
+ ldx v1fBC
+ ldy v1fBD
+ rts
+
+outstring:
+ stx INDPT3
+ sty INDPT3+1
+ ldy #$00
+outs10:
+ lda (INDPT3),y
+ beq outs20
+ jsr outchar
+ inc INDPT3
+ bne outs10
+ inc INDPT3+1
+ jmp outs10
+outs20:
+ rts
+
+lines:
+ .dc.w row2
+ .dc.w row3
+ .dc.w row4
+ .dc.w row5
+ .dc.w row6
+ .dc.w row7
+ .dc.w row8
+ .dc.w row9
+ .dc.w row10
+ .dc.w row11
+ .dc.w row12
+ .dc.w row13
+ .dc.w row14
+ .dc.w row15
+ .dc.w row16
+ .dc.w row17
+ .dc.w row18
+ .dc.w row19
+ .dc.w row20
+ .dc.w row21
+ .dc.w row22
+ .dc.w row23
+ .dc.w row24
+ .dc.w row1
+
+outbyte:
+ pha
+ lsr
+ lsr
+ lsr
+ lsr
+ jsr outdigit
+ pla
+outdigit:
+ and #$0F
+ clc
+ adc #$30
+ cmp #$3A
+ bcc subrf1
+ clc
+ adc #$07
+subrf1:
+ jmp outchar
+
+; subroutine to clear the video display character matrix
+clear:
+ lda #$00
+ tax
+clr010:
+ sta SCREEN,x ;zero display by pages
+ sta SCREEN+$100,x
+ sta SCREEN+$200,x
+ sta row24+columns-$100,x
+ inx
+ bne clr010
+
+ lda #$ff & SCREEN ;home the cursor position
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+
+ rts
+
+ .org $FFF8
+
+ .dc.w $F7FF
+ .dc.w dummy ;NMI
+ .dc.w main ;RESET
+ .dc.w dummy ;IRQ
diff --git a/500.S b/500.S
new file mode 100644
index 0000000..df0ff52
--- /dev/null
+++ b/500.S
@@ -0,0 +1,51 @@
+ .DC.B $0F,$FF,$B0
+ .DC.B $00,$0F,$00
+;
+ .DC.B $0F,$FF,$B0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $06,$BF,$E0
+ .DC.B $00,$BE,$E0
+;
+ .DC.B $06,$BF,$E0
+ .DC.B $00,$2D,$0A
+;
+ .DC.B $03,$FB,$E0
+ .DC.B $00,$2F,$B8
+;
+ .DC.B $03,$FB,$E0
+ .DC.B $00,$2D,$0A
+;
+ .DC.B $0B,$AF,$80
+ .DC.B $00,$D0,$00
+;
+ .DC.B $0B,$AF,$80
+ .DC.B $00,$03,$C0
+;
+ .DC.B $0F,$AB,$B0
+ .DC.B $00,$0F,$00
+;
+ .DC.B $0F,$AB,$B0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $02,$FA,$E0
+ .DC.B $00,$07,$00
+;
+ .DC.B $02,$FA,$E0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $0B,$EF,$C0
+ .DC.B $2E,$F8,$00
+;
+ .DC.B $0B,$EF,$C0
+ .DC.B $A0,$78,$00
+;
+ .DC.B $0B,$FE,$90
+ .DC.B $0B,$BE,$00
+;
+ .DC.B $0B,$FE,$90
+ .DC.B $A0,$78,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/600.S b/600.S
new file mode 100644
index 0000000..953a74d
--- /dev/null
+++ b/600.S
@@ -0,0 +1,51 @@
+ .DC.B $0B,$EB,$E0
+ .DC.B $00,$07,$00
+;
+ .DC.B $0B,$EB,$E0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $0A,$FF,$E0
+ .DC.B $00,$7B,$D0
+;
+ .DC.B $0A,$FF,$E0
+ .DC.B $00,$3F,$0E
+;
+ .DC.B $03,$7E,$E0
+ .DC.B $00,$1E,$F4
+;
+ .DC.B $03,$7E,$E0
+ .DC.B $00,$3F,$0E
+;
+ .DC.B $02,$FB,$80
+ .DC.B $00,$F2,$40
+;
+ .DC.B $02,$FB,$80
+ .DC.B $00,$93,$40
+;
+ .DC.B $06,$FE,$E0
+ .DC.B $02,$4F,$00
+;
+ .DC.B $06,$FE,$E0
+ .DC.B $03,$C0,$00
+;
+ .DC.B $02,$EF,$80
+ .DC.B $01,$8F,$00
+;
+ .DC.B $02,$EF,$80
+ .DC.B $01,$C6,$00
+;
+ .DC.B $0B,$BD,$C0
+ .DC.B $1F,$B4,$00
+;
+ .DC.B $0B,$BD,$C0
+ .DC.B $B0,$FC,$00
+;
+ .DC.B $0B,$FF,$A0
+ .DC.B $07,$ED,$00
+;
+ .DC.B $0B,$FF,$A0
+ .DC.B $B0,$FC,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/700.S b/700.S
new file mode 100644
index 0000000..eaaafb1
--- /dev/null
+++ b/700.S
@@ -0,0 +1,51 @@
+ .DC.B $02,$BC,$90
+ .DC.B $01,$8F,$00
+;
+ .DC.B $02,$BC,$90
+ .DC.B $03,$C9,$00
+;
+ .DC.B $09,$EB,$80
+ .DC.B $00,$EF,$60
+;
+ .DC.B $09,$EB,$80
+ .DC.B $00,$BE,$2D
+;
+ .DC.B $01,$AB,$80
+ .DC.B $00,$3B,$D8
+;
+ .DC.B $01,$AB,$80
+ .DC.B $00,$BE,$2D
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$72,$80
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$A1,$C0
+;
+ .DC.B $03,$FF,$00
+ .DC.B $03,$8D,$00
+;
+ .DC.B $03,$FF,$00
+ .DC.B $03,$C9,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $02,$8D,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $03,$4A,$00
+;
+ .DC.B $02,$EA,$40
+ .DC.B $27,$EC,$00
+;
+ .DC.B $02,$EA,$40
+ .DC.B $78,$BE,$00
+;
+ .DC.B $02,$EB,$60
+ .DC.B $09,$FB,$00
+;
+ .DC.B $02,$EB,$60
+ .DC.B $78,$BE,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/800.S b/800.S
new file mode 100644
index 0000000..3edf101
--- /dev/null
+++ b/800.S
@@ -0,0 +1,51 @@
+ .DC.B $00,$FE,$24
+ .DC.B $02,$FF,$00
+;
+ .DC.B $00,$FE,$24
+ .DC.B $03,$BE,$00
+;
+ .DC.B $20,$BE,$00
+ .DC.B $00,$ED,$80
+;
+ .DC.B $20,$BE,$00
+ .DC.B $00,$FC,$3F
+;
+ .DC.B $02,$7E,$00
+ .DC.B $00,$3B,$60
+;
+ .DC.B $02,$7E,$00
+ .DC.B $00,$FC,$3F
+;
+ .DC.B $02,$FD,$00
+ .DC.B $00,$F3,$80
+;
+ .DC.B $02,$FD,$00
+ .DC.B $00,$E3,$C0
+;
+ .DC.B $02,$FE,$00
+ .DC.B $03,$CF,$00
+;
+ .DC.B $02,$FE,$00
+ .DC.B $03,$CE,$00
+;
+ .DC.B $00,$7F,$80
+ .DC.B $02,$CF,$00
+;
+ .DC.B $00,$7F,$80
+ .DC.B $03,$CB,$00
+;
+ .DC.B $00,$BD,$80
+ .DC.B $09,$EC,$00
+;
+ .DC.B $00,$BD,$80
+ .DC.B $FC,$3F,$00
+;
+ .DC.B $00,$BE,$08
+ .DC.B $02,$7B,$00
+;
+ .DC.B $00,$BE,$08
+ .DC.B $FC,$3F,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/900.S b/900.S
new file mode 100644
index 0000000..737db86
--- /dev/null
+++ b/900.S
@@ -0,0 +1,51 @@
+ .DC.B $00,$FF,$20
+ .DC.B $03,$FF,$00
+;
+ .DC.B $02,$BC,$90
+ .DC.B $03,$FF,$00
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$ED,$00
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$78,$BC
+;
+ .DC.B $02,$FF,$00
+ .DC.B $00,$3B,$40
+;
+ .DC.B $02,$FF,$00
+ .DC.B $00,$78,$BC
+;
+ .DC.B $00,$76,$00
+ .DC.B $00,$FF,$40
+;
+ .DC.B $00,$76,$00
+ .DC.B $00,$FF,$40
+;
+ .DC.B $00,$74,$00
+ .DC.B $02,$FF,$00
+;
+ .DC.B $00,$74,$00
+ .DC.B $02,$FF,$00
+;
+ .DC.B $00,$9D,$00
+ .DC.B $01,$FF,$00
+;
+ .DC.B $00,$9D,$00
+ .DC.B $01,$FF,$00
+;
+ .DC.B $00,$FF,$80
+ .DC.B $01,$EC,$00
+;
+ .DC.B $00,$FF,$80
+ .DC.B $3E,$2D,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $00,$7B,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $3E,$2D,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/A.BAT b/A.BAT
new file mode 100644
index 0000000..b19b472
--- /dev/null
+++ b/A.BAT
@@ -0,0 +1,4 @@
+MAC GAMEX.S
+CONV65 GAMEX.O
+DOWNLOAD GAMEX.SR
+WAIT
diff --git a/A00.S b/A00.S
new file mode 100644
index 0000000..5b47501
--- /dev/null
+++ b/A00.S
@@ -0,0 +1,51 @@
+ .DC.B $00,$BF,$00
+ .DC.B $02,$AB,$00
+;
+ .DC.B $00,$BF,$00
+ .DC.B $02,$AB,$00
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$77,$80
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$F8,$FC
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$1D,$E0
+;
+ .DC.B $02,$FE,$00
+ .DC.B $00,$F8,$FC
+;
+ .DC.B $00,$20,$00
+ .DC.B $00,$AF,$C0
+;
+ .DC.B $00,$20,$00
+ .DC.B $00,$AF,$40
+;
+ .DC.B $00,$88,$00
+ .DC.B $02,$FF,$00
+;
+ .DC.B $00,$88,$00
+ .DC.B $02,$FF,$00
+;
+ .DC.B $00,$08,$00
+ .DC.B $03,$FA,$00
+;
+ .DC.B $00,$08,$00
+ .DC.B $01,$FA,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $0B,$74,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $3F,$2F,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $02,$DD,$00
+;
+ .DC.B $00,$BF,$80
+ .DC.B $3F,$2F,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/B00.S b/B00.S
new file mode 100644
index 0000000..d7373ff
--- /dev/null
+++ b/B00.S
@@ -0,0 +1,51 @@
+ .DC.B $00,$1E,$00
+ .DC.B $06,$AA,$00
+;
+ .DC.B $00,$1E,$00
+ .DC.B $06,$AA,$00
+;
+ .DC.B $00,$B8,$00
+ .DC.B $00,$BB,$40
+;
+ .DC.B $00,$B8,$00
+ .DC.B $00,$FE,$F0
+;
+ .DC.B $00,$B8,$00
+ .DC.B $00,$2E,$D0
+;
+ .DC.B $00,$B8,$00
+ .DC.B $00,$FE,$F0
+;
+ .DC.B $00,$00,$00
+ .DC.B $0A,$6A,$C0
+;
+ .DC.B $00,$00,$00
+ .DC.B $0A,$6A,$C0
+;
+ .DC.B $00,$00,$00
+ .DC.B $06,$6A,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $06,$6A,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $03,$A9,$A0
+;
+ .DC.B $00,$00,$00
+ .DC.B $03,$A9,$A0
+;
+ .DC.B $00,$2E,$00
+ .DC.B $07,$B8,$00
+;
+ .DC.B $00,$2E,$00
+ .DC.B $0F,$BF,$00
+;
+ .DC.B $00,$2E,$00
+ .DC.B $01,$EE,$00
+;
+ .DC.B $00,$2E,$00
+ .DC.B $0F,$BF,$00
+;
+ .DC.B $00
+;
+ .DC.B $00
diff --git a/BATCH.TTP b/BATCH.TTP
new file mode 100644
index 0000000..8ded616
--- /dev/null
+++ b/BATCH.TTP
Binary files differ
diff --git a/C00.S b/C00.S
new file mode 100644
index 0000000..dd0e328
--- /dev/null
+++ b/C00.S
@@ -0,0 +1,52 @@
+ .DC.B $00,$20,$00
+ .DC.B $0B,$FE,$40
+;
+ .DC.B $00,$20,$00
+ .DC.B $0B,$FE,$40
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$3F,$D0
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$3F,$F0
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$0F,$F4
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$3F,$F0
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$BA,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$BA,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $06,$56,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $06,$56,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$AE,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$AE,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $1F,$F0,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $0F,$FC,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $07,$FC,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $0F,$FC,$00
+;
+ .DC.B $20
+;
+ .DC.B $00
+;
diff --git a/CONV65.PRG b/CONV65.PRG
new file mode 100644
index 0000000..ebd6587
--- /dev/null
+++ b/CONV65.PRG
Binary files differ
diff --git a/D00.S b/D00.S
new file mode 100644
index 0000000..904ac2e
--- /dev/null
+++ b/D00.S
@@ -0,0 +1,51 @@
+ .DC.B $00,$00,$00
+ .DC.B $06,$FF,$50
+;
+ .DC.B $00,$00,$00
+ .DC.B $06,$FF,$50
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$2E,$E0
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$3F,$C0
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$0B,$B8
+;
+ .DC.B $00,$00,$00
+ .DC.B $00,$3F,$C0
+;
+ .DC.B $00,$00,$00
+ .DC.B $01,$AF,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $01,$AF,$80
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$D5,$60
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$D5,$60
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$FA,$40
+;
+ .DC.B $00,$00,$00
+ .DC.B $02,$FA,$40
+;
+ .DC.B $00,$00,$00
+ .DC.B $2E,$E0,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $03,$FC,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $0B,$B8,$00
+;
+ .DC.B $00,$00,$00
+ .DC.B $03,$FC,$00
+;
+ .DC.B $70
+;
+ .DC.B $00
diff --git a/DISKS/.DEF b/DISKS/.DEF
new file mode 100644
index 0000000..ae3166c
--- /dev/null
+++ b/DISKS/.DEF
@@ -0,0 +1,2883 @@
+ 60
+ 48
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 2
+ 1
+ 2
+ 1
+ 2
+ 1
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 2
+ 2
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ \ No newline at end of file
diff --git a/DISKS/40COL.S b/DISKS/40COL.S
new file mode 100644
index 0000000..6de9d6e
--- /dev/null
+++ b/DISKS/40COL.S
@@ -0,0 +1,634 @@
+ .6502
+ .include "MARIA.S"
+
+ .title "Sample Atari 7800 "
+ .subttl "zero page declarations"
+
+ROM = $f000 ; start of ROM cart
+
+ .org $40
+
+INDPT1: .ds.w 1
+INDPT2: .ds.w 1
+INDPT3: .ds.w 1
+
+v1fBB: .ds.b 1 ;save .a in outchar
+v1fBC: .ds.b 1 ;save .x in outchar
+v1fBD: .ds.b 1 ;save .y in outchar
+v1fBE: .ds.b 1 ;loop counter in outchar
+
+v1fC0: .ds.b 1 ;temp var used in subrk
+count: .ds.b 1
+sdppl: .ds.b 1 ;shadow of display list list
+sdpph: .ds.b 1
+ .subttl "ram subroutines and display list data"
+ .org RAM3
+
+dllist: ds.b 96
+filler: ds.b 6
+line1: ds.b 12
+line2: ds.b 12
+line3: ds.b 12
+line4: ds.b 12
+line5: ds.b 12
+line6: ds.b 12
+line7: ds.b 12
+line8: ds.b 12
+line9: ds.b 12
+line10: ds.b 12
+line11: ds.b 12
+line12: ds.b 12
+line13: ds.b 12
+line14: ds.b 12
+line15: ds.b 12
+line16: ds.b 12
+line17: ds.b 12
+line18: ds.b 12
+line19: ds.b 12
+line20: ds.b 12
+line21: ds.b 12
+line22: ds.b 12
+line23: ds.b 12
+line24: ds.b 12
+
+ .subttl "video matrix ram"
+ .org $2400
+
+columns = 40 ;number of characters per line
+SCREEN:
+row1: ds.b columns
+row2: ds.b columns
+row3: ds.b columns
+row4: ds.b columns
+row5: ds.b columns
+row6: ds.b columns
+row7: ds.b columns
+row8: ds.b columns
+row9: ds.b columns
+row10: ds.b columns
+row11: ds.b columns
+row12: ds.b columns
+row13: ds.b columns
+row14: ds.b columns
+row15: ds.b columns
+row16: ds.b columns
+row17: ds.b columns
+row18: ds.b columns
+row19: ds.b columns
+row20: ds.b columns
+row21: ds.b columns
+row22: ds.b columns
+row23: ds.b columns
+row24: ds.b columns
+ .subttl "begin ROM -- RAM routines"
+ .org ROM
+; here begins the display list list
+
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,0,filler
+ display 0,0,0,7,line1
+ display 0,0,0,7,line2
+ display 0,0,0,7,line3
+ display 0,0,0,7,line4
+ display 0,0,0,7,line5
+ display 0,0,0,7,line6
+ display 0,0,0,7,line7
+ display 0,0,0,7,line8
+ display 0,0,0,7,line9
+ display 0,0,0,7,line10
+ display 0,0,0,7,line11
+ display 0,0,0,7,line12
+ display 0,0,0,7,line13
+ display 0,0,0,7,line14
+ display 0,0,0,7,line15
+ display 0,0,0,7,line16
+ display 0,0,0,7,line17
+ display 0,0,0,7,line18
+ display 0,0,0,7,line19
+ display 0,0,0,7,line20
+ display 0,0,0,7,line21
+ display 0,0,0,7,line22
+ display 0,0,0,7,line23
+ display 0,0,0,7,line24
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,1,filler
+ .subttl "display lists"
+;here are the display lists referenced in the display list list
+
+;filler
+ header RAM1,0,0,0 ;address,palette,width,hpos
+ nullhdr
+;line1
+ xheader row1,0,20,0,0,1 ;address,palette,width,hpos,wm,ind
+ xheader row1+(columns/2),0,20,80,0,1
+ nullhdr
+
+;line2
+ xheader row2,0,20,0,0,1
+ xheader row2+(columns/2),0,20,80,0,1
+ nullhdr
+;line3
+ xheader row3,0,20,0,0,1
+ xheader row3+(columns/2),0,20,80,0,1
+ nullhdr
+;line4
+ xheader row4,0,20,0,0,1
+ xheader row4+(columns/2),0,20,80,0,1
+ nullhdr
+;line5
+ xheader row5,0,20,0,0,1
+ xheader row5+(columns/2),0,20,80,0,1
+ nullhdr
+;line6
+ xheader row6,0,20,0,0,1
+ xheader row6+(columns/2),0,20,80,0,1
+ nullhdr
+;line7
+ xheader row7,0,20,0,0,1
+ xheader row7+(columns/2),0,20,80,0,1
+ nullhdr
+;line8
+ xheader row8,0,20,0,0,1
+ xheader row8+(columns/2),0,20,80,0,1
+ nullhdr
+;line9
+ xheader row9,0,20,0,0,1
+ xheader row9+(columns/2),0,20,80,0,1
+ nullhdr
+;line10
+ xheader row10,0,20,0,0,1
+ xheader row10+(columns/2),0,20,80,0,1
+ nullhdr
+;line11
+ xheader row11,0,20,0,0,1
+ xheader row11+(columns/2),0,20,80,0,1
+ nullhdr
+;line12
+ xheader row12,0,20,0,0,1
+ xheader row12+(columns/2),0,20,80,0,1
+ nullhdr
+;line13
+ xheader row13,0,20,0,0,1
+ xheader row13+(columns/2),0,20,80,0,1
+ nullhdr
+;line14
+ xheader row14,0,20,0,0,1
+ xheader row14+(columns/2),0,20,80,0,1
+ nullhdr
+;line15
+ xheader row15,0,20,0,0,1
+ xheader row15+(columns/2),0,20,80,0,1
+ nullhdr
+;line16
+ xheader row16,0,20,0,0,1
+ xheader row16+(columns/2),0,20,80,0,1
+ nullhdr
+;line17
+ xheader row17,0,20,0,0,1
+ xheader row17+(columns/2),0,20,80,0,1
+ nullhdr
+;line18
+ xheader row18,0,20,0,0,1
+ xheader row18+(columns/2),0,20,80,0,1
+ nullhdr
+;line19
+ xheader row19,0,20,0,0,1
+ xheader row19+(columns/2),0,20,80,0,1
+ nullhdr
+;line20
+ xheader row20,0,20,0,0,1
+ xheader row20+(columns/2),0,20,80,0,1
+ nullhdr
+;line21
+ xheader row21,0,20,0,0,1
+ xheader row21+(columns/2),0,20,80,0,1
+ nullhdr
+;line22
+ xheader row22,0,20,0,0,1
+ xheader row22+(columns/2),0,20,80,0,1
+ nullhdr
+;line23
+ xheader row23,0,20,0,0,1
+ xheader row23+(columns/2),0,20,80,0,1
+ nullhdr
+;line24
+ xheader row24,0,20,0,0,1
+ xheader row24+(columns/2),0,20,80,0,1
+ nullhdr
+
+ .subttl "Character generation data"
+;The data here is represented so that every 128 bytes sequentially is the next
+;row of the 8 x 8 character represented. As an example, the first row of a
+;capital A is located at table + $41, the second at table + $41 + $80, etc.
+
+table:
+ dc.b $00,$7E,$7E,$6C,$10,$38,$10,$00
+ dc.b $FF,$00,$FF,$0F,$3C,$3F,$7F,$99
+ dc.b $80,$02,$18,$66,$7F,$3E,$00,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$6C,$6C,$30,$00,$38,$60
+ dc.b $18,$60,$00,$00,$00,$00,$00,$06
+ dc.b $7C,$30,$78,$78,$1C,$FC,$38,$FC
+ dc.b $78,$78,$00,$00,$18,$00,$60,$78
+ dc.b $7C,$30,$FC,$3C,$F8,$FE,$FE,$3C
+ dc.b $CC,$78,$1E,$E6,$F0,$C6,$C6,$38
+ dc.b $FC,$78,$FC,$78,$FC,$CC,$CC,$C6
+ dc.b $C6,$CC,$FE,$78,$C0,$78,$10,$00
+ dc.b $30,$00,$E0,$00,$1C,$00,$38,$00
+ dc.b $E0,$30,$0C,$E0,$70,$00,$00,$00
+ dc.b $00,$00,$00,$00,$10,$00,$00,$00
+ dc.b $00,$00,$00,$1C,$18,$E0,$76,$00
+ dc.b $00,$81,$FF,$FE,$38,$7C,$10,$00
+ dc.b $FF,$3C,$C3,$07,$66,$33,$63,$5A
+ dc.b $E0,$0E,$3C,$66,$DB,$63,$00,$3C
+ dc.b $3C,$18,$18,$30,$00,$24,$18,$FF
+ dc.b $00,$78,$6C,$6C,$7C,$C6,$6C,$60
+ dc.b $30,$30,$66,$30,$00,$00,$00,$0C
+ dc.b $C6,$70,$CC,$CC,$3C,$C0,$60,$CC
+ dc.b $CC,$CC,$30,$30,$30,$00,$30,$CC
+ dc.b $C6,$78,$66,$66,$6C,$62,$62,$66
+ dc.b $CC,$30,$0C,$66,$60,$EE,$E6,$6C
+ dc.b $66,$CC,$66,$CC,$B4,$CC,$CC,$C6
+ dc.b $C6,$CC,$C6,$60,$60,$18,$38,$00
+ dc.b $30,$00,$60,$00,$0C,$00,$6C,$00
+ dc.b $60,$00,$00,$60,$30,$00,$00,$00
+ dc.b $00,$00,$00,$00,$30,$00,$00,$00
+ dc.b $00,$00,$00,$30,$18,$30,$DC,$10
+ dc.b $00,$A5,$DB,$FE,$7C,$38,$38,$18
+ dc.b $E7,$66,$99,$0F,$66,$3F,$7F,$3C
+ dc.b $F8,$3E,$7E,$66,$DB,$38,$00,$7E
+ dc.b $7E,$18,$0C,$60,$C0,$66,$3C,$FF
+ dc.b $00,$78,$6C,$FE,$C0,$CC,$38,$C0
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$18
+ dc.b $CE,$30,$0C,$0C,$6C,$F8,$C0,$0C
+ dc.b $CC,$CC,$30,$30,$60,$FC,$18,$0C
+ dc.b $DE,$CC,$66,$C0,$66,$68,$68,$C0
+ dc.b $CC,$30,$0C,$6C,$60,$FE,$F6,$C6
+ dc.b $66,$CC,$66,$E0,$30,$CC,$CC,$C6
+ dc.b $6C,$CC,$8C,$60,$30,$18,$6C,$00
+ dc.b $18,$78,$60,$78,$0C,$78,$60,$76
+ dc.b $6C,$70,$0C,$66,$30,$CC,$F8,$78
+ dc.b $DC,$76,$DC,$7C,$7C,$CC,$CC,$C6
+ dc.b $C6,$CC,$FC,$30,$18,$30,$00,$38
+ dc.b $00,$81,$FF,$FE,$FE,$FE,$7C,$3C
+ dc.b $C3,$42,$BD,$7D,$66,$30,$63,$E7
+ dc.b $FE,$FE,$18,$66,$7B,$6C,$00,$18
+ dc.b $18,$18,$FE,$FE,$C0,$FF,$7E,$7E
+ dc.b $00,$30,$00,$6C,$78,$18,$76,$00
+ dc.b $60,$18,$FF,$FC,$00,$FC,$00,$30
+ dc.b $DE,$30,$38,$38,$CC,$0C,$F8,$18
+ dc.b $78,$7C,$00,$00,$C0,$00,$0C,$18
+ dc.b $DE,$CC,$7C,$C0,$66,$78,$78,$C0
+ dc.b $FC,$30,$0C,$78,$60,$FE,$DE,$C6
+ dc.b $7C,$CC,$7C,$70,$30,$CC,$CC,$D6
+ dc.b $38,$78,$18,$60,$18,$18,$C6,$00
+ dc.b $00,$0C,$7C,$CC,$7C,$CC,$F0,$CC
+ dc.b $76,$30,$0C,$6C,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$76,$C0,$30,$CC,$CC,$D6
+ dc.b $5C,$CC,$98,$E0,$00,$1C,$00,$6C
+ dc.b $00,$BD,$C3,$7C,$7C,$FE,$FE,$3C
+ dc.b $C3,$42,$BD,$CC,$3C,$30,$63,$E7
+ dc.b $F8,$3E,$18,$66,$1B,$6C,$7E,$7E
+ dc.b $18,$7E,$0C,$60,$C0,$66,$FF,$3C
+ dc.b $00,$30,$00,$FE,$0C,$30,$DC,$00
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$60
+ dc.b $F6,$30,$60,$0C,$FE,$0C,$CC,$30
+ dc.b $CC,$0C,$00,$00,$60,$00,$18,$30
+ dc.b $DE,$FC,$66,$C0,$66,$68,$68,$CE
+ dc.b $CC,$30,$CC,$6C,$62,$D6,$CE,$C6
+ dc.b $60,$DC,$6C,$1C,$30,$CC,$CC,$FE
+ dc.b $38,$30,$32,$60,$0C,$18,$00,$00
+ dc.b $00,$7C,$66,$C0,$CC,$FC,$60,$CC
+ dc.b $66,$30,$0C,$78,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$66,$78,$30,$CC,$CC,$FE
+ dc.b $38,$CC,$30,$30,$18,$30,$00,$C6
+ dc.b $00,$99,$E7,$38,$38,$7C,$7C,$18
+ dc.b $E7,$66,$99,$CC,$18,$70,$67,$3C
+ dc.b $E0,$0E,$7E,$00,$1B,$38,$7E,$3C
+ dc.b $18,$3C,$18,$30,$FE,$24,$FF,$18
+ dc.b $00,$00,$00,$6C,$F8,$66,$CC,$00
+ dc.b $30,$30,$66,$30,$30,$00,$30,$C0
+ dc.b $E6,$30,$CC,$CC,$0C,$CC,$CC,$30
+ dc.b $CC,$18,$30,$30,$30,$FC,$30,$00
+ dc.b $C0,$CC,$66,$66,$6C,$62,$60,$66
+ dc.b $CC,$30,$CC,$66,$66,$C6,$C6,$6C
+ dc.b $60,$78,$66,$CC,$30,$CC,$78,$EE
+ dc.b $6C,$30,$66,$60,$06,$18,$00,$00
+ dc.b $00,$CC,$66,$CC,$CC,$C0,$60,$7C
+ dc.b $66,$30,$CC,$6C,$30,$D6,$CC,$CC
+ dc.b $7C,$7C,$60,$0C,$34,$CC,$78,$FE
+ dc.b $6C,$7C,$64,$30,$18,$30,$00,$C6
+ dc.b $00,$81,$FF,$10,$10,$38,$38,$00
+ dc.b $FF,$3C,$C3,$CC,$7E,$F0,$E6,$5A
+ dc.b $80,$02,$3C,$66,$1B,$CC,$7E,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$00,$6C,$30,$C6,$76,$00
+ dc.b $18,$60,$00,$00,$30,$00,$30,$80
+ dc.b $7C,$FC,$FC,$78,$1E,$78,$78,$30
+ dc.b $78,$70,$30,$30,$18,$00,$60,$30
+ dc.b $78,$CC,$FC,$3C,$F8,$FE,$F0,$3E
+ dc.b $CC,$78,$78,$E6,$FE,$C6,$C6,$38
+ dc.b $F0,$1C,$E6,$78,$78,$FC,$30,$C6
+ dc.b $C6,$78,$FE,$78,$02,$78,$00,$00
+ dc.b $00,$76,$DC,$78,$76,$78,$F0,$0C
+ dc.b $E6,$78,$CC,$E6,$78,$C6,$CC,$78
+ dc.b $60,$0C,$F0,$F8,$18,$76,$30,$6C
+ dc.b $C6,$0C,$FC,$1C,$18,$E0,$00,$FE
+ dc.b $00,$7E,$7E,$00,$00,$7C,$7C,$00
+ dc.b $FF,$00,$FF,$78,$18,$E0,$C0,$99
+ dc.b $00,$00,$18,$00,$00,$78,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$60,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$F8
+ dc.b $00,$00,$78,$00,$00,$00,$00,$00
+ dc.b $F0,$1E,$00,$00,$00,$00,$00,$00
+ dc.b $00,$F8,$00,$00,$00,$00,$00,$00
+ .subttl "main program"
+; place for IRQ and NMI to attach
+dummy:
+ rti
+
+main:
+ sei
+ cld
+
+ ldx #$FF ;init stack
+ txs
+
+ lda #$7
+; sta PTCTRL
+
+ lda #$7f
+ sta CTRL
+
+ inx
+loop:
+;move display list list to RAM
+
+ lda ROM,x
+ sta RAM3,x
+
+ lda ROM+$100,x
+ sta RAM3+$100,x
+
+;move character rom data
+;Maria fetches character data every 256 locations so the character
+;ROM data is thus spread out from the packed ROM representation
+
+ lda table,x
+ sta RAM1+$700,x
+
+ lda table+$80,x
+ sta RAM1+$600,x
+
+ lda table+$100,x
+ sta RAM1+$500,x
+
+ lda table+$180,x
+ sta RAM1+$400,x
+
+ lda table+$200,x
+ sta RAM1+$300,x
+
+ lda table+$280,x
+ sta RAM1+$200,x
+
+ lda table+$300,x
+ sta RAM1+$100,x
+
+ lda table+$380,x
+ sta RAM1,x
+
+ inx
+ bne loop
+main30:
+ bit MSTAT ;Vblank?
+ bmi main30 ;wait while it is on...
+main32:
+ bit MSTAT ;Vblank?
+ bpl main32 ;wait until it comes back...
+
+ lda #RAM1 >> 8
+ sta CHBASE ;character base address.
+
+ dppload dllist ;init display list list.
+
+ screen 0,2,0,1,0,3 ;Maria setups:
+ ;0=normal color.
+ ;2=Normal DMA.
+ ;0=single byte wide characters.
+ ;1=background colored border.
+ ;0=transparency mode.
+ ;3=320 a or c mode.
+
+around:
+ lda #$0
+ sta BKGRND ;maria background color register
+
+ lda #$0e
+ sta P0C2 ;maria pallette 0 - color 2
+
+ jsr clear ;clear screen
+main40:
+ lda #0
+ sta v1fC0
+main50:
+ lda v1fC0
+ cmp #$0d
+ beq main60
+ jsr outchar
+main60: inc v1fC0
+ cmp #$7f
+ bne main50
+ beq main40
+
+outchar:
+ sta v1fBB ;save all registers
+ stx v1fBC
+ sty v1fBD
+outc10:
+ lda SWCHB ;read console switches
+ and #PAUSE ;PAUSE down?
+ beq outc10 ;yes ... wait until released
+
+ lda v1fBB ;restore character to print
+ and #$7F ;strip off high bit
+ cmp #$0D ;see if a carriage return
+ bne outc2 ;no ...
+
+ ldx #0 ;search for start of next line
+outc11:
+ sec
+ lda lines,x
+ sbc INDPT2
+ lda lines+1,x
+ sbc INDPT2+1
+ bcs outc15 ;found a line start >=
+ inx
+ inx
+ cpx #46 ;end of table?
+ bcc outc11 ;keep looking...
+outc15:
+ lda lines,x ;start of next line
+ sta INDPT2
+ lda lines+1,x
+ sta INDPT2+1
+ jmp doneoutc ;done ...
+outc2:
+ sec
+ lda INDPT2
+ sbc #(row24+columns) & $ff ;beyond end of screen?
+ lda INDPT2+1
+ sbc #(row24+columns) >> 8
+ bcs outc3 ;yes ...
+ jmp outc6b ;no ... o.k. to print
+outc3:
+ lda #$03 ;outer loop counter (3 pages)
+ sta v1fBE
+
+ lda #SCREEN & $ff ;init pointers to begin of screen
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+outc3a:
+ ldx #$00
+outc3b:
+ ldy #columns ;get one line ahead
+ lda (INDPT2),y
+ ldy #$00
+ sta (INDPT2),y ;store it where we are
+
+ inc INDPT2 ;advance pointer to next position
+ bne outc4
+ inc INDPT2+1
+outc4:
+ inx
+ bne outc3b
+ dec v1fBE
+ bpl outc3a
+
+ lda #row24 & $ff
+ sta INDPT2
+ lda #row24 >> 8
+ sta INDPT2+1
+
+ ldx #columns-1 ;clear the last line
+ lda #$00
+outc6:
+ sta row24+columns,x
+ sta row24,x
+ dex
+ bpl outc6
+outc6b:
+ ldy #$00
+ lda v1fBB ;get back saved character
+ and #$7F ;mask off high bit
+ cmp #$0D ;carriage return?
+ beq doneoutc ;yes ...
+
+ sta (INDPT2),y ;put character in video matrix
+ inc INDPT2 ;increment lo of char pointer
+ bne doneoutc ;no carry ...
+ inc INDPT2+1 ;increment hi of char pointer
+doneoutc:
+ lda v1fBB ;restore registers
+ ldx v1fBC
+ ldy v1fBD
+ rts
+
+outstring:
+ stx INDPT3
+ sty INDPT3+1
+ ldy #$00
+outs10:
+ lda (INDPT3),y
+ beq outs20
+ jsr outchar
+ inc INDPT3
+ bne outs10
+ inc INDPT3+1
+ jmp outs10
+outs20:
+ rts
+
+lines:
+ .dc.w row2
+ .dc.w row3
+ .dc.w row4
+ .dc.w row5
+ .dc.w row6
+ .dc.w row7
+ .dc.w row8
+ .dc.w row9
+ .dc.w row10
+ .dc.w row11
+ .dc.w row12
+ .dc.w row13
+ .dc.w row14
+ .dc.w row15
+ .dc.w row16
+ .dc.w row17
+ .dc.w row18
+ .dc.w row19
+ .dc.w row20
+ .dc.w row21
+ .dc.w row22
+ .dc.w row23
+ .dc.w row24
+ .dc.w row1
+
+outbyte:
+ pha
+ lsr
+ lsr
+ lsr
+ lsr
+ jsr outdigit
+ pla
+outdigit:
+ and #$0F
+ clc
+ adc #$30
+ cmp #$3A
+ bcc subrf1
+ clc
+ adc #$07
+subrf1:
+ jmp outchar
+
+; subroutine to clear the video display character matrix
+clear:
+ lda #$00
+ tax
+clr010:
+ sta SCREEN,x ;zero display by pages
+ sta SCREEN+$100,x
+ sta SCREEN+$200,x
+ sta row24+columns-$100,x
+ inx
+ bne clr010
+
+ lda #$ff & SCREEN ;home the cursor position
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+
+ rts
+
+ .org $FFF8
+
+ .dc.w $F7FF
+ .dc.w dummy ;NMI
+ .dc.w main ;RESET
+ .dc.w dummy ;IRQ
diff --git a/DISKS/7800DEV/40COL.S b/DISKS/7800DEV/40COL.S
new file mode 100644
index 0000000..fc04788
--- /dev/null
+++ b/DISKS/7800DEV/40COL.S
@@ -0,0 +1,634 @@
+ .include "maria.s"
+
+ .title "Sample Atari 7800 "
+ .subttl "zero page declarations"
+
+ROM = $f000 ; start of ROM cart
+
+ .org $40
+
+INDPT1: .ds.w 1
+INDPT2: .ds.w 1
+INDPT3: .ds.w 1
+
+v1fBB: .ds.b 1 ;save .a in outchar
+v1fBC: .ds.b 1 ;save .x in outchar
+v1fBD: .ds.b 1 ;save .y in outchar
+v1fBE: .ds.b 1 ;loop counter in outchar
+
+v1fC0: .ds.b 1 ;temp var used in subrk
+
+sdppl: .ds.b 1 ;shadow of display list list
+sdpph: .ds.b 1
+ .subttl "ram subroutines and display list data"
+ .org RAM3
+
+dllist: ds.b 96
+filler: ds.b 6
+line1: ds.b 12
+line2: ds.b 12
+line3: ds.b 12
+line4: ds.b 12
+line5: ds.b 12
+line6: ds.b 12
+line7: ds.b 12
+line8: ds.b 12
+line9: ds.b 12
+line10: ds.b 12
+line11: ds.b 12
+line12: ds.b 12
+line13: ds.b 12
+line14: ds.b 12
+line15: ds.b 12
+line16: ds.b 12
+line17: ds.b 12
+line18: ds.b 12
+line19: ds.b 12
+line20: ds.b 12
+line21: ds.b 12
+line22: ds.b 12
+line23: ds.b 12
+line24: ds.b 12
+
+ .subttl "video matrix ram"
+ .org $2400
+
+columns = 40 ;number of characters per line
+SCREEN:
+row1: ds.b columns
+row2: ds.b columns
+row3: ds.b columns
+row4: ds.b columns
+row5: ds.b columns
+row6: ds.b columns
+row7: ds.b columns
+row8: ds.b columns
+row9: ds.b columns
+row10: ds.b columns
+row11: ds.b columns
+row12: ds.b columns
+row13: ds.b columns
+row14: ds.b columns
+row15: ds.b columns
+row16: ds.b columns
+row17: ds.b columns
+row18: ds.b columns
+row19: ds.b columns
+row20: ds.b columns
+row21: ds.b columns
+row22: ds.b columns
+row23: ds.b columns
+row24: ds.b columns
+ .subttl "begin ROM -- RAM routines"
+ .org ROM
+; here begins the display list list
+
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,0,filler
+ display 0,0,0,7,line1
+ display 0,0,0,7,line2
+ display 0,0,0,7,line3
+ display 0,0,0,7,line4
+ display 0,0,0,7,line5
+ display 0,0,0,7,line6
+ display 0,0,0,7,line7
+ display 0,0,0,7,line8
+ display 0,0,0,7,line9
+ display 0,0,0,7,line10
+ display 0,0,0,7,line11
+ display 0,0,0,7,line12
+ display 0,0,0,7,line13
+ display 0,0,0,7,line14
+ display 0,0,0,7,line15
+ display 0,0,0,7,line16
+ display 0,0,0,7,line17
+ display 0,0,0,7,line18
+ display 0,0,0,7,line19
+ display 0,0,0,7,line20
+ display 0,0,0,7,line21
+ display 0,0,0,7,line22
+ display 0,0,0,7,line23
+ display 0,0,0,7,line24
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,1,filler
+ .subttl "display lists"
+;here are the display lists referenced in the display list list
+
+;filler
+ header RAM1,0,0,0 ;address,palette,width,hpos
+ nullhdr
+;line1
+ xheader row1,0,20,0,0,1 ;address,palette,width,hpos,wm,ind
+ xheader row1+(columns/2),0,20,80,0,1
+ nullhdr
+
+;line2
+ xheader row2,0,20,0,0,1
+ xheader row2+(columns/2),0,20,80,0,1
+ nullhdr
+;line3
+ xheader row3,0,20,0,0,1
+ xheader row3+(columns/2),0,20,80,0,1
+ nullhdr
+;line4
+ xheader row4,0,20,0,0,1
+ xheader row4+(columns/2),0,20,80,0,1
+ nullhdr
+;line5
+ xheader row5,0,20,0,0,1
+ xheader row5+(columns/2),0,20,80,0,1
+ nullhdr
+;line6
+ xheader row6,0,20,0,0,1
+ xheader row6+(columns/2),0,20,80,0,1
+ nullhdr
+;line7
+ xheader row7,0,20,0,0,1
+ xheader row7+(columns/2),0,20,80,0,1
+ nullhdr
+;line8
+ xheader row8,0,20,0,0,1
+ xheader row8+(columns/2),0,20,80,0,1
+ nullhdr
+;line9
+ xheader row9,0,20,0,0,1
+ xheader row9+(columns/2),0,20,80,0,1
+ nullhdr
+;line10
+ xheader row10,0,20,0,0,1
+ xheader row10+(columns/2),0,20,80,0,1
+ nullhdr
+;line11
+ xheader row11,0,20,0,0,1
+ xheader row11+(columns/2),0,20,80,0,1
+ nullhdr
+;line12
+ xheader row12,0,20,0,0,1
+ xheader row12+(columns/2),0,20,80,0,1
+ nullhdr
+;line13
+ xheader row13,0,20,0,0,1
+ xheader row13+(columns/2),0,20,80,0,1
+ nullhdr
+;line14
+ xheader row14,0,20,0,0,1
+ xheader row14+(columns/2),0,20,80,0,1
+ nullhdr
+;line15
+ xheader row15,0,20,0,0,1
+ xheader row15+(columns/2),0,20,80,0,1
+ nullhdr
+;line16
+ xheader row16,0,20,0,0,1
+ xheader row16+(columns/2),0,20,80,0,1
+ nullhdr
+;line17
+ xheader row17,0,20,0,0,1
+ xheader row17+(columns/2),0,20,80,0,1
+ nullhdr
+;line18
+ xheader row18,0,20,0,0,1
+ xheader row18+(columns/2),0,20,80,0,1
+ nullhdr
+;line19
+ xheader row19,0,20,0,0,1
+ xheader row19+(columns/2),0,20,80,0,1
+ nullhdr
+;line20
+ xheader row20,0,20,0,0,1
+ xheader row20+(columns/2),0,20,80,0,1
+ nullhdr
+;line21
+ xheader row21,0,20,0,0,1
+ xheader row21+(columns/2),0,20,80,0,1
+ nullhdr
+;line22
+ xheader row22,0,20,0,0,1
+ xheader row22+(columns/2),0,20,80,0,1
+ nullhdr
+;line23
+ xheader row23,0,20,0,0,1
+ xheader row23+(columns/2),0,20,80,0,1
+ nullhdr
+;line24
+ xheader row24,0,20,0,0,1
+ xheader row24+(columns/2),0,20,80,0,1
+ nullhdr
+
+ .subttl "Character generation data"
+;The data here is represented so that every 128 bytes sequentially is the next
+;row of the 8 x 8 character represented. As an example, the first row of a
+;capital A is located at table + $41, the second at table + $41 + $80, etc.
+
+table:
+ dc.b $00,$7E,$7E,$6C,$10,$38,$10,$00
+ dc.b $FF,$00,$FF,$0F,$3C,$3F,$7F,$99
+ dc.b $80,$02,$18,$66,$7F,$3E,$00,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$6C,$6C,$30,$00,$38,$60
+ dc.b $18,$60,$00,$00,$00,$00,$00,$06
+ dc.b $7C,$30,$78,$78,$1C,$FC,$38,$FC
+ dc.b $78,$78,$00,$00,$18,$00,$60,$78
+ dc.b $7C,$30,$FC,$3C,$F8,$FE,$FE,$3C
+ dc.b $CC,$78,$1E,$E6,$F0,$C6,$C6,$38
+ dc.b $FC,$78,$FC,$78,$FC,$CC,$CC,$C6
+ dc.b $C6,$CC,$FE,$78,$C0,$78,$10,$00
+ dc.b $30,$00,$E0,$00,$1C,$00,$38,$00
+ dc.b $E0,$30,$0C,$E0,$70,$00,$00,$00
+ dc.b $00,$00,$00,$00,$10,$00,$00,$00
+ dc.b $00,$00,$00,$1C,$18,$E0,$76,$00
+ dc.b $00,$81,$FF,$FE,$38,$7C,$10,$00
+ dc.b $FF,$3C,$C3,$07,$66,$33,$63,$5A
+ dc.b $E0,$0E,$3C,$66,$DB,$63,$00,$3C
+ dc.b $3C,$18,$18,$30,$00,$24,$18,$FF
+ dc.b $00,$78,$6C,$6C,$7C,$C6,$6C,$60
+ dc.b $30,$30,$66,$30,$00,$00,$00,$0C
+ dc.b $C6,$70,$CC,$CC,$3C,$C0,$60,$CC
+ dc.b $CC,$CC,$30,$30,$30,$00,$30,$CC
+ dc.b $C6,$78,$66,$66,$6C,$62,$62,$66
+ dc.b $CC,$30,$0C,$66,$60,$EE,$E6,$6C
+ dc.b $66,$CC,$66,$CC,$B4,$CC,$CC,$C6
+ dc.b $C6,$CC,$C6,$60,$60,$18,$38,$00
+ dc.b $30,$00,$60,$00,$0C,$00,$6C,$00
+ dc.b $60,$00,$00,$60,$30,$00,$00,$00
+ dc.b $00,$00,$00,$00,$30,$00,$00,$00
+ dc.b $00,$00,$00,$30,$18,$30,$DC,$10
+ dc.b $00,$A5,$DB,$FE,$7C,$38,$38,$18
+ dc.b $E7,$66,$99,$0F,$66,$3F,$7F,$3C
+ dc.b $F8,$3E,$7E,$66,$DB,$38,$00,$7E
+ dc.b $7E,$18,$0C,$60,$C0,$66,$3C,$FF
+ dc.b $00,$78,$6C,$FE,$C0,$CC,$38,$C0
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$18
+ dc.b $CE,$30,$0C,$0C,$6C,$F8,$C0,$0C
+ dc.b $CC,$CC,$30,$30,$60,$FC,$18,$0C
+ dc.b $DE,$CC,$66,$C0,$66,$68,$68,$C0
+ dc.b $CC,$30,$0C,$6C,$60,$FE,$F6,$C6
+ dc.b $66,$CC,$66,$E0,$30,$CC,$CC,$C6
+ dc.b $6C,$CC,$8C,$60,$30,$18,$6C,$00
+ dc.b $18,$78,$60,$78,$0C,$78,$60,$76
+ dc.b $6C,$70,$0C,$66,$30,$CC,$F8,$78
+ dc.b $DC,$76,$DC,$7C,$7C,$CC,$CC,$C6
+ dc.b $C6,$CC,$FC,$30,$18,$30,$00,$38
+ dc.b $00,$81,$FF,$FE,$FE,$FE,$7C,$3C
+ dc.b $C3,$42,$BD,$7D,$66,$30,$63,$E7
+ dc.b $FE,$FE,$18,$66,$7B,$6C,$00,$18
+ dc.b $18,$18,$FE,$FE,$C0,$FF,$7E,$7E
+ dc.b $00,$30,$00,$6C,$78,$18,$76,$00
+ dc.b $60,$18,$FF,$FC,$00,$FC,$00,$30
+ dc.b $DE,$30,$38,$38,$CC,$0C,$F8,$18
+ dc.b $78,$7C,$00,$00,$C0,$00,$0C,$18
+ dc.b $DE,$CC,$7C,$C0,$66,$78,$78,$C0
+ dc.b $FC,$30,$0C,$78,$60,$FE,$DE,$C6
+ dc.b $7C,$CC,$7C,$70,$30,$CC,$CC,$D6
+ dc.b $38,$78,$18,$60,$18,$18,$C6,$00
+ dc.b $00,$0C,$7C,$CC,$7C,$CC,$F0,$CC
+ dc.b $76,$30,$0C,$6C,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$76,$C0,$30,$CC,$CC,$D6
+ dc.b $5C,$CC,$98,$E0,$00,$1C,$00,$6C
+ dc.b $00,$BD,$C3,$7C,$7C,$FE,$FE,$3C
+ dc.b $C3,$42,$BD,$CC,$3C,$30,$63,$E7
+ dc.b $F8,$3E,$18,$66,$1B,$6C,$7E,$7E
+ dc.b $18,$7E,$0C,$60,$C0,$66,$FF,$3C
+ dc.b $00,$30,$00,$FE,$0C,$30,$DC,$00
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$60
+ dc.b $F6,$30,$60,$0C,$FE,$0C,$CC,$30
+ dc.b $CC,$0C,$00,$00,$60,$00,$18,$30
+ dc.b $DE,$FC,$66,$C0,$66,$68,$68,$CE
+ dc.b $CC,$30,$CC,$6C,$62,$D6,$CE,$C6
+ dc.b $60,$DC,$6C,$1C,$30,$CC,$CC,$FE
+ dc.b $38,$30,$32,$60,$0C,$18,$00,$00
+ dc.b $00,$7C,$66,$C0,$CC,$FC,$60,$CC
+ dc.b $66,$30,$0C,$78,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$66,$78,$30,$CC,$CC,$FE
+ dc.b $38,$CC,$30,$30,$18,$30,$00,$C6
+ dc.b $00,$99,$E7,$38,$38,$7C,$7C,$18
+ dc.b $E7,$66,$99,$CC,$18,$70,$67,$3C
+ dc.b $E0,$0E,$7E,$00,$1B,$38,$7E,$3C
+ dc.b $18,$3C,$18,$30,$FE,$24,$FF,$18
+ dc.b $00,$00,$00,$6C,$F8,$66,$CC,$00
+ dc.b $30,$30,$66,$30,$30,$00,$30,$C0
+ dc.b $E6,$30,$CC,$CC,$0C,$CC,$CC,$30
+ dc.b $CC,$18,$30,$30,$30,$FC,$30,$00
+ dc.b $C0,$CC,$66,$66,$6C,$62,$60,$66
+ dc.b $CC,$30,$CC,$66,$66,$C6,$C6,$6C
+ dc.b $60,$78,$66,$CC,$30,$CC,$78,$EE
+ dc.b $6C,$30,$66,$60,$06,$18,$00,$00
+ dc.b $00,$CC,$66,$CC,$CC,$C0,$60,$7C
+ dc.b $66,$30,$CC,$6C,$30,$D6,$CC,$CC
+ dc.b $7C,$7C,$60,$0C,$34,$CC,$78,$FE
+ dc.b $6C,$7C,$64,$30,$18,$30,$00,$C6
+ dc.b $00,$81,$FF,$10,$10,$38,$38,$00
+ dc.b $FF,$3C,$C3,$CC,$7E,$F0,$E6,$5A
+ dc.b $80,$02,$3C,$66,$1B,$CC,$7E,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$00,$6C,$30,$C6,$76,$00
+ dc.b $18,$60,$00,$00,$30,$00,$30,$80
+ dc.b $7C,$FC,$FC,$78,$1E,$78,$78,$30
+ dc.b $78,$70,$30,$30,$18,$00,$60,$30
+ dc.b $78,$CC,$FC,$3C,$F8,$FE,$F0,$3E
+ dc.b $CC,$78,$78,$E6,$FE,$C6,$C6,$38
+ dc.b $F0,$1C,$E6,$78,$78,$FC,$30,$C6
+ dc.b $C6,$78,$FE,$78,$02,$78,$00,$00
+ dc.b $00,$76,$DC,$78,$76,$78,$F0,$0C
+ dc.b $E6,$78,$CC,$E6,$78,$C6,$CC,$78
+ dc.b $60,$0C,$F0,$F8,$18,$76,$30,$6C
+ dc.b $C6,$0C,$FC,$1C,$18,$E0,$00,$FE
+ dc.b $00,$7E,$7E,$00,$00,$7C,$7C,$00
+ dc.b $FF,$00,$FF,$78,$18,$E0,$C0,$99
+ dc.b $00,$00,$18,$00,$00,$78,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$60,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$F8
+ dc.b $00,$00,$78,$00,$00,$00,$00,$00
+ dc.b $F0,$1E,$00,$00,$00,$00,$00,$00
+ dc.b $00,$F8,$00,$00,$00,$00,$00,$00
+ .subttl "main program"
+; place for IRQ and NMI to attach
+dummy:
+ rti
+
+main:
+ sei
+ cld
+
+ ldx #$FF ;init stack
+ txs
+
+ lda #$7
+ sta PTCTRL
+
+ lda #$7f
+ sta CTRL
+
+ inx
+loop:
+;move display list list to RAM
+
+ lda ROM,x
+ sta RAM3,x
+
+ lda ROM+$100,x
+ sta RAM3+$100,x
+
+;move character rom data
+;Maria fetches character data every 256 locations so the character
+;ROM data is thus spread out from the packed ROM representation
+
+ lda table,x
+ sta RAM1+$700,x
+
+ lda table+$80,x
+ sta RAM1+$600,x
+
+ lda table+$100,x
+ sta RAM1+$500,x
+
+ lda table+$180,x
+ sta RAM1+$400,x
+
+ lda table+$200,x
+ sta RAM1+$300,x
+
+ lda table+$280,x
+ sta RAM1+$200,x
+
+ lda table+$300,x
+ sta RAM1+$100,x
+
+ lda table+$380,x
+ sta RAM1,x
+
+ inx
+ bne loop
+main30:
+ bit MSTAT ;Vblank?
+ bmi main30 ;wait while it is on...
+main32:
+ bit MSTAT ;Vblank?
+ bpl main32 ;wait until it comes back...
+
+ lda #RAM1 >> 8
+ sta CHBASE ;character base address.
+
+ dppload dllist ;init display list list.
+
+ screen 0,2,0,1,0,3 ;Maria setups:
+ ;0=normal color.
+ ;2=Normal DMA.
+ ;0=single byte wide characters.
+ ;1=background colored border.
+ ;0=transparency mode.
+ ;3=320 a or c mode.
+
+around:
+ lda #$20
+ sta BKGRND ;maria background color register
+
+ lda #$2A
+ sta P0C2 ;maria pallette 0 - color 2
+
+ jsr clear ;clear screen
+main40:
+ lda #0
+ sta v1fC0
+main50:
+ lda v1fC0
+ cmp #$0d
+ beq main60
+ jsr outchar
+main60: inc v1fC0
+ cmp #$7f
+ bne main50
+ beq main40
+
+outchar:
+ sta v1fBB ;save all registers
+ stx v1fBC
+ sty v1fBD
+outc10:
+ lda SWCHB ;read console switches
+ and #PAUSE ;PAUSE down?
+ beq outc10 ;yes ... wait until released
+
+ lda v1fBB ;restore character to print
+ and #$7F ;strip off high bit
+ cmp #$0D ;see if a carriage return
+ bne outc2 ;no ...
+
+ ldx #0 ;search for start of next line
+outc11:
+ sec
+ lda lines,x
+ sbc INDPT2
+ lda lines+1,x
+ sbc INDPT2+1
+ bcs outc15 ;found a line start >=
+ inx
+ inx
+ cpx #46 ;end of table?
+ bcc outc11 ;keep looking...
+outc15:
+ lda lines,x ;start of next line
+ sta INDPT2
+ lda lines+1,x
+ sta INDPT2+1
+ jmp doneoutc ;done ...
+outc2:
+ sec
+ lda INDPT2
+ sbc #(row24+columns) & $ff ;beyond end of screen?
+ lda INDPT2+1
+ sbc #(row24+columns) >> 8
+ bcs outc3 ;yes ...
+ jmp outc6b ;no ... o.k. to print
+outc3:
+ lda #$03 ;outer loop counter (3 pages)
+ sta v1fBE
+
+ lda #SCREEN & $ff ;init pointers to begin of screen
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+outc3a:
+ ldx #$00
+outc3b:
+ ldy #columns ;get one line ahead
+ lda (INDPT2),y
+ ldy #$00
+ sta (INDPT2),y ;store it where we are
+
+ inc INDPT2 ;advance pointer to next position
+ bne outc4
+ inc INDPT2+1
+outc4:
+ inx
+ bne outc3b
+ dec v1fBE
+ bpl outc3a
+
+ lda #row24 & $ff
+ sta INDPT2
+ lda #row24 >> 8
+ sta INDPT2+1
+
+ ldx #columns-1 ;clear the last line
+ lda #$00
+outc6:
+ sta row24+columns,x
+ sta row24,x
+ dex
+ bpl outc6
+outc6b:
+ ldy #$00
+ lda v1fBB ;get back saved character
+ and #$7F ;mask off high bit
+ cmp #$0D ;carriage return?
+ beq doneoutc ;yes ...
+
+ sta (INDPT2),y ;put character in video matrix
+ inc INDPT2 ;increment lo of char pointer
+ bne doneoutc ;no carry ...
+ inc INDPT2+1 ;increment hi of char pointer
+doneoutc:
+ lda v1fBB ;restore registers
+ ldx v1fBC
+ ldy v1fBD
+ rts
+
+outstring:
+ stx INDPT3
+ sty INDPT3+1
+ ldy #$00
+outs10:
+ lda (INDPT3),y
+ beq outs20
+ jsr outchar
+ inc INDPT3
+ bne outs10
+ inc INDPT3+1
+ jmp outs10
+outs20:
+ rts
+
+lines:
+ .dc.w row2
+ .dc.w row3
+ .dc.w row4
+ .dc.w row5
+ .dc.w row6
+ .dc.w row7
+ .dc.w row8
+ .dc.w row9
+ .dc.w row10
+ .dc.w row11
+ .dc.w row12
+ .dc.w row13
+ .dc.w row14
+ .dc.w row15
+ .dc.w row16
+ .dc.w row17
+ .dc.w row18
+ .dc.w row19
+ .dc.w row20
+ .dc.w row21
+ .dc.w row22
+ .dc.w row23
+ .dc.w row24
+ .dc.w row1
+
+outbyte:
+ pha
+ lsr
+ lsr
+ lsr
+ lsr
+ jsr outdigit
+ pla
+outdigit:
+ and #$0F
+ clc
+ adc #$30
+ cmp #$3A
+ bcc subrf1
+ clc
+ adc #$07
+subrf1:
+ jmp outchar
+
+; subroutine to clear the video display character matrix
+clear:
+ lda #$00
+ tax
+clr010:
+ sta SCREEN,x ;zero display by pages
+ sta SCREEN+$100,x
+ sta SCREEN+$200,x
+ sta row24+columns-$100,x
+ inx
+ bne clr010
+
+ lda #$ff & SCREEN ;home the cursor position
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+
+ rts
+
+ .org $FFF8
+
+ .dc.w $F7FF
+ .dc.w dummy ;NMI
+ .dc.w main ;RESET
+ .dc.w dummy ;IRQ
+ \ No newline at end of file
diff --git a/DISKS/7800DEV/ASM.BAT b/DISKS/7800DEV/ASM.BAT
new file mode 100644
index 0000000..cd725b9
--- /dev/null
+++ b/DISKS/7800DEV/ASM.BAT
@@ -0,0 +1,5 @@
+mac %1.s
+conv65 %1
+download %1.sr
+wait
+ \ No newline at end of file
diff --git a/DISKS/7800DEV/BATCH.TTP b/DISKS/7800DEV/BATCH.TTP
new file mode 100644
index 0000000..8ded616
--- /dev/null
+++ b/DISKS/7800DEV/BATCH.TTP
Binary files differ
diff --git a/DISKS/7800DEV/DOWNLOAD.PRG b/DISKS/7800DEV/DOWNLOAD.PRG
new file mode 100644
index 0000000..8a662d4
--- /dev/null
+++ b/DISKS/7800DEV/DOWNLOAD.PRG
Binary files differ
diff --git a/DISKS/7800DEV/K.TTP b/DISKS/7800DEV/K.TTP
new file mode 100644
index 0000000..3b86dac
--- /dev/null
+++ b/DISKS/7800DEV/K.TTP
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/40COL.S b/DISKS/7800DEV/MADMAC/40COL.S
new file mode 100644
index 0000000..fc04788
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/40COL.S
@@ -0,0 +1,634 @@
+ .include "maria.s"
+
+ .title "Sample Atari 7800 "
+ .subttl "zero page declarations"
+
+ROM = $f000 ; start of ROM cart
+
+ .org $40
+
+INDPT1: .ds.w 1
+INDPT2: .ds.w 1
+INDPT3: .ds.w 1
+
+v1fBB: .ds.b 1 ;save .a in outchar
+v1fBC: .ds.b 1 ;save .x in outchar
+v1fBD: .ds.b 1 ;save .y in outchar
+v1fBE: .ds.b 1 ;loop counter in outchar
+
+v1fC0: .ds.b 1 ;temp var used in subrk
+
+sdppl: .ds.b 1 ;shadow of display list list
+sdpph: .ds.b 1
+ .subttl "ram subroutines and display list data"
+ .org RAM3
+
+dllist: ds.b 96
+filler: ds.b 6
+line1: ds.b 12
+line2: ds.b 12
+line3: ds.b 12
+line4: ds.b 12
+line5: ds.b 12
+line6: ds.b 12
+line7: ds.b 12
+line8: ds.b 12
+line9: ds.b 12
+line10: ds.b 12
+line11: ds.b 12
+line12: ds.b 12
+line13: ds.b 12
+line14: ds.b 12
+line15: ds.b 12
+line16: ds.b 12
+line17: ds.b 12
+line18: ds.b 12
+line19: ds.b 12
+line20: ds.b 12
+line21: ds.b 12
+line22: ds.b 12
+line23: ds.b 12
+line24: ds.b 12
+
+ .subttl "video matrix ram"
+ .org $2400
+
+columns = 40 ;number of characters per line
+SCREEN:
+row1: ds.b columns
+row2: ds.b columns
+row3: ds.b columns
+row4: ds.b columns
+row5: ds.b columns
+row6: ds.b columns
+row7: ds.b columns
+row8: ds.b columns
+row9: ds.b columns
+row10: ds.b columns
+row11: ds.b columns
+row12: ds.b columns
+row13: ds.b columns
+row14: ds.b columns
+row15: ds.b columns
+row16: ds.b columns
+row17: ds.b columns
+row18: ds.b columns
+row19: ds.b columns
+row20: ds.b columns
+row21: ds.b columns
+row22: ds.b columns
+row23: ds.b columns
+row24: ds.b columns
+ .subttl "begin ROM -- RAM routines"
+ .org ROM
+; here begins the display list list
+
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,0,filler
+ display 0,0,0,7,line1
+ display 0,0,0,7,line2
+ display 0,0,0,7,line3
+ display 0,0,0,7,line4
+ display 0,0,0,7,line5
+ display 0,0,0,7,line6
+ display 0,0,0,7,line7
+ display 0,0,0,7,line8
+ display 0,0,0,7,line9
+ display 0,0,0,7,line10
+ display 0,0,0,7,line11
+ display 0,0,0,7,line12
+ display 0,0,0,7,line13
+ display 0,0,0,7,line14
+ display 0,0,0,7,line15
+ display 0,0,0,7,line16
+ display 0,0,0,7,line17
+ display 0,0,0,7,line18
+ display 0,0,0,7,line19
+ display 0,0,0,7,line20
+ display 0,0,0,7,line21
+ display 0,0,0,7,line22
+ display 0,0,0,7,line23
+ display 0,0,0,7,line24
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,7,filler
+ display 0,0,0,1,filler
+ .subttl "display lists"
+;here are the display lists referenced in the display list list
+
+;filler
+ header RAM1,0,0,0 ;address,palette,width,hpos
+ nullhdr
+;line1
+ xheader row1,0,20,0,0,1 ;address,palette,width,hpos,wm,ind
+ xheader row1+(columns/2),0,20,80,0,1
+ nullhdr
+
+;line2
+ xheader row2,0,20,0,0,1
+ xheader row2+(columns/2),0,20,80,0,1
+ nullhdr
+;line3
+ xheader row3,0,20,0,0,1
+ xheader row3+(columns/2),0,20,80,0,1
+ nullhdr
+;line4
+ xheader row4,0,20,0,0,1
+ xheader row4+(columns/2),0,20,80,0,1
+ nullhdr
+;line5
+ xheader row5,0,20,0,0,1
+ xheader row5+(columns/2),0,20,80,0,1
+ nullhdr
+;line6
+ xheader row6,0,20,0,0,1
+ xheader row6+(columns/2),0,20,80,0,1
+ nullhdr
+;line7
+ xheader row7,0,20,0,0,1
+ xheader row7+(columns/2),0,20,80,0,1
+ nullhdr
+;line8
+ xheader row8,0,20,0,0,1
+ xheader row8+(columns/2),0,20,80,0,1
+ nullhdr
+;line9
+ xheader row9,0,20,0,0,1
+ xheader row9+(columns/2),0,20,80,0,1
+ nullhdr
+;line10
+ xheader row10,0,20,0,0,1
+ xheader row10+(columns/2),0,20,80,0,1
+ nullhdr
+;line11
+ xheader row11,0,20,0,0,1
+ xheader row11+(columns/2),0,20,80,0,1
+ nullhdr
+;line12
+ xheader row12,0,20,0,0,1
+ xheader row12+(columns/2),0,20,80,0,1
+ nullhdr
+;line13
+ xheader row13,0,20,0,0,1
+ xheader row13+(columns/2),0,20,80,0,1
+ nullhdr
+;line14
+ xheader row14,0,20,0,0,1
+ xheader row14+(columns/2),0,20,80,0,1
+ nullhdr
+;line15
+ xheader row15,0,20,0,0,1
+ xheader row15+(columns/2),0,20,80,0,1
+ nullhdr
+;line16
+ xheader row16,0,20,0,0,1
+ xheader row16+(columns/2),0,20,80,0,1
+ nullhdr
+;line17
+ xheader row17,0,20,0,0,1
+ xheader row17+(columns/2),0,20,80,0,1
+ nullhdr
+;line18
+ xheader row18,0,20,0,0,1
+ xheader row18+(columns/2),0,20,80,0,1
+ nullhdr
+;line19
+ xheader row19,0,20,0,0,1
+ xheader row19+(columns/2),0,20,80,0,1
+ nullhdr
+;line20
+ xheader row20,0,20,0,0,1
+ xheader row20+(columns/2),0,20,80,0,1
+ nullhdr
+;line21
+ xheader row21,0,20,0,0,1
+ xheader row21+(columns/2),0,20,80,0,1
+ nullhdr
+;line22
+ xheader row22,0,20,0,0,1
+ xheader row22+(columns/2),0,20,80,0,1
+ nullhdr
+;line23
+ xheader row23,0,20,0,0,1
+ xheader row23+(columns/2),0,20,80,0,1
+ nullhdr
+;line24
+ xheader row24,0,20,0,0,1
+ xheader row24+(columns/2),0,20,80,0,1
+ nullhdr
+
+ .subttl "Character generation data"
+;The data here is represented so that every 128 bytes sequentially is the next
+;row of the 8 x 8 character represented. As an example, the first row of a
+;capital A is located at table + $41, the second at table + $41 + $80, etc.
+
+table:
+ dc.b $00,$7E,$7E,$6C,$10,$38,$10,$00
+ dc.b $FF,$00,$FF,$0F,$3C,$3F,$7F,$99
+ dc.b $80,$02,$18,$66,$7F,$3E,$00,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$6C,$6C,$30,$00,$38,$60
+ dc.b $18,$60,$00,$00,$00,$00,$00,$06
+ dc.b $7C,$30,$78,$78,$1C,$FC,$38,$FC
+ dc.b $78,$78,$00,$00,$18,$00,$60,$78
+ dc.b $7C,$30,$FC,$3C,$F8,$FE,$FE,$3C
+ dc.b $CC,$78,$1E,$E6,$F0,$C6,$C6,$38
+ dc.b $FC,$78,$FC,$78,$FC,$CC,$CC,$C6
+ dc.b $C6,$CC,$FE,$78,$C0,$78,$10,$00
+ dc.b $30,$00,$E0,$00,$1C,$00,$38,$00
+ dc.b $E0,$30,$0C,$E0,$70,$00,$00,$00
+ dc.b $00,$00,$00,$00,$10,$00,$00,$00
+ dc.b $00,$00,$00,$1C,$18,$E0,$76,$00
+ dc.b $00,$81,$FF,$FE,$38,$7C,$10,$00
+ dc.b $FF,$3C,$C3,$07,$66,$33,$63,$5A
+ dc.b $E0,$0E,$3C,$66,$DB,$63,$00,$3C
+ dc.b $3C,$18,$18,$30,$00,$24,$18,$FF
+ dc.b $00,$78,$6C,$6C,$7C,$C6,$6C,$60
+ dc.b $30,$30,$66,$30,$00,$00,$00,$0C
+ dc.b $C6,$70,$CC,$CC,$3C,$C0,$60,$CC
+ dc.b $CC,$CC,$30,$30,$30,$00,$30,$CC
+ dc.b $C6,$78,$66,$66,$6C,$62,$62,$66
+ dc.b $CC,$30,$0C,$66,$60,$EE,$E6,$6C
+ dc.b $66,$CC,$66,$CC,$B4,$CC,$CC,$C6
+ dc.b $C6,$CC,$C6,$60,$60,$18,$38,$00
+ dc.b $30,$00,$60,$00,$0C,$00,$6C,$00
+ dc.b $60,$00,$00,$60,$30,$00,$00,$00
+ dc.b $00,$00,$00,$00,$30,$00,$00,$00
+ dc.b $00,$00,$00,$30,$18,$30,$DC,$10
+ dc.b $00,$A5,$DB,$FE,$7C,$38,$38,$18
+ dc.b $E7,$66,$99,$0F,$66,$3F,$7F,$3C
+ dc.b $F8,$3E,$7E,$66,$DB,$38,$00,$7E
+ dc.b $7E,$18,$0C,$60,$C0,$66,$3C,$FF
+ dc.b $00,$78,$6C,$FE,$C0,$CC,$38,$C0
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$18
+ dc.b $CE,$30,$0C,$0C,$6C,$F8,$C0,$0C
+ dc.b $CC,$CC,$30,$30,$60,$FC,$18,$0C
+ dc.b $DE,$CC,$66,$C0,$66,$68,$68,$C0
+ dc.b $CC,$30,$0C,$6C,$60,$FE,$F6,$C6
+ dc.b $66,$CC,$66,$E0,$30,$CC,$CC,$C6
+ dc.b $6C,$CC,$8C,$60,$30,$18,$6C,$00
+ dc.b $18,$78,$60,$78,$0C,$78,$60,$76
+ dc.b $6C,$70,$0C,$66,$30,$CC,$F8,$78
+ dc.b $DC,$76,$DC,$7C,$7C,$CC,$CC,$C6
+ dc.b $C6,$CC,$FC,$30,$18,$30,$00,$38
+ dc.b $00,$81,$FF,$FE,$FE,$FE,$7C,$3C
+ dc.b $C3,$42,$BD,$7D,$66,$30,$63,$E7
+ dc.b $FE,$FE,$18,$66,$7B,$6C,$00,$18
+ dc.b $18,$18,$FE,$FE,$C0,$FF,$7E,$7E
+ dc.b $00,$30,$00,$6C,$78,$18,$76,$00
+ dc.b $60,$18,$FF,$FC,$00,$FC,$00,$30
+ dc.b $DE,$30,$38,$38,$CC,$0C,$F8,$18
+ dc.b $78,$7C,$00,$00,$C0,$00,$0C,$18
+ dc.b $DE,$CC,$7C,$C0,$66,$78,$78,$C0
+ dc.b $FC,$30,$0C,$78,$60,$FE,$DE,$C6
+ dc.b $7C,$CC,$7C,$70,$30,$CC,$CC,$D6
+ dc.b $38,$78,$18,$60,$18,$18,$C6,$00
+ dc.b $00,$0C,$7C,$CC,$7C,$CC,$F0,$CC
+ dc.b $76,$30,$0C,$6C,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$76,$C0,$30,$CC,$CC,$D6
+ dc.b $5C,$CC,$98,$E0,$00,$1C,$00,$6C
+ dc.b $00,$BD,$C3,$7C,$7C,$FE,$FE,$3C
+ dc.b $C3,$42,$BD,$CC,$3C,$30,$63,$E7
+ dc.b $F8,$3E,$18,$66,$1B,$6C,$7E,$7E
+ dc.b $18,$7E,$0C,$60,$C0,$66,$FF,$3C
+ dc.b $00,$30,$00,$FE,$0C,$30,$DC,$00
+ dc.b $60,$18,$3C,$30,$00,$00,$00,$60
+ dc.b $F6,$30,$60,$0C,$FE,$0C,$CC,$30
+ dc.b $CC,$0C,$00,$00,$60,$00,$18,$30
+ dc.b $DE,$FC,$66,$C0,$66,$68,$68,$CE
+ dc.b $CC,$30,$CC,$6C,$62,$D6,$CE,$C6
+ dc.b $60,$DC,$6C,$1C,$30,$CC,$CC,$FE
+ dc.b $38,$30,$32,$60,$0C,$18,$00,$00
+ dc.b $00,$7C,$66,$C0,$CC,$FC,$60,$CC
+ dc.b $66,$30,$0C,$78,$30,$FE,$CC,$CC
+ dc.b $66,$CC,$66,$78,$30,$CC,$CC,$FE
+ dc.b $38,$CC,$30,$30,$18,$30,$00,$C6
+ dc.b $00,$99,$E7,$38,$38,$7C,$7C,$18
+ dc.b $E7,$66,$99,$CC,$18,$70,$67,$3C
+ dc.b $E0,$0E,$7E,$00,$1B,$38,$7E,$3C
+ dc.b $18,$3C,$18,$30,$FE,$24,$FF,$18
+ dc.b $00,$00,$00,$6C,$F8,$66,$CC,$00
+ dc.b $30,$30,$66,$30,$30,$00,$30,$C0
+ dc.b $E6,$30,$CC,$CC,$0C,$CC,$CC,$30
+ dc.b $CC,$18,$30,$30,$30,$FC,$30,$00
+ dc.b $C0,$CC,$66,$66,$6C,$62,$60,$66
+ dc.b $CC,$30,$CC,$66,$66,$C6,$C6,$6C
+ dc.b $60,$78,$66,$CC,$30,$CC,$78,$EE
+ dc.b $6C,$30,$66,$60,$06,$18,$00,$00
+ dc.b $00,$CC,$66,$CC,$CC,$C0,$60,$7C
+ dc.b $66,$30,$CC,$6C,$30,$D6,$CC,$CC
+ dc.b $7C,$7C,$60,$0C,$34,$CC,$78,$FE
+ dc.b $6C,$7C,$64,$30,$18,$30,$00,$C6
+ dc.b $00,$81,$FF,$10,$10,$38,$38,$00
+ dc.b $FF,$3C,$C3,$CC,$7E,$F0,$E6,$5A
+ dc.b $80,$02,$3C,$66,$1B,$CC,$7E,$18
+ dc.b $18,$18,$00,$00,$00,$00,$00,$00
+ dc.b $00,$30,$00,$6C,$30,$C6,$76,$00
+ dc.b $18,$60,$00,$00,$30,$00,$30,$80
+ dc.b $7C,$FC,$FC,$78,$1E,$78,$78,$30
+ dc.b $78,$70,$30,$30,$18,$00,$60,$30
+ dc.b $78,$CC,$FC,$3C,$F8,$FE,$F0,$3E
+ dc.b $CC,$78,$78,$E6,$FE,$C6,$C6,$38
+ dc.b $F0,$1C,$E6,$78,$78,$FC,$30,$C6
+ dc.b $C6,$78,$FE,$78,$02,$78,$00,$00
+ dc.b $00,$76,$DC,$78,$76,$78,$F0,$0C
+ dc.b $E6,$78,$CC,$E6,$78,$C6,$CC,$78
+ dc.b $60,$0C,$F0,$F8,$18,$76,$30,$6C
+ dc.b $C6,$0C,$FC,$1C,$18,$E0,$00,$FE
+ dc.b $00,$7E,$7E,$00,$00,$7C,$7C,$00
+ dc.b $FF,$00,$FF,$78,$18,$E0,$C0,$99
+ dc.b $00,$00,$18,$00,$00,$78,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$60,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$00
+ dc.b $00,$00,$00,$00,$00,$00,$00,$FF
+ dc.b $00,$00,$00,$00,$00,$00,$00,$F8
+ dc.b $00,$00,$78,$00,$00,$00,$00,$00
+ dc.b $F0,$1E,$00,$00,$00,$00,$00,$00
+ dc.b $00,$F8,$00,$00,$00,$00,$00,$00
+ .subttl "main program"
+; place for IRQ and NMI to attach
+dummy:
+ rti
+
+main:
+ sei
+ cld
+
+ ldx #$FF ;init stack
+ txs
+
+ lda #$7
+ sta PTCTRL
+
+ lda #$7f
+ sta CTRL
+
+ inx
+loop:
+;move display list list to RAM
+
+ lda ROM,x
+ sta RAM3,x
+
+ lda ROM+$100,x
+ sta RAM3+$100,x
+
+;move character rom data
+;Maria fetches character data every 256 locations so the character
+;ROM data is thus spread out from the packed ROM representation
+
+ lda table,x
+ sta RAM1+$700,x
+
+ lda table+$80,x
+ sta RAM1+$600,x
+
+ lda table+$100,x
+ sta RAM1+$500,x
+
+ lda table+$180,x
+ sta RAM1+$400,x
+
+ lda table+$200,x
+ sta RAM1+$300,x
+
+ lda table+$280,x
+ sta RAM1+$200,x
+
+ lda table+$300,x
+ sta RAM1+$100,x
+
+ lda table+$380,x
+ sta RAM1,x
+
+ inx
+ bne loop
+main30:
+ bit MSTAT ;Vblank?
+ bmi main30 ;wait while it is on...
+main32:
+ bit MSTAT ;Vblank?
+ bpl main32 ;wait until it comes back...
+
+ lda #RAM1 >> 8
+ sta CHBASE ;character base address.
+
+ dppload dllist ;init display list list.
+
+ screen 0,2,0,1,0,3 ;Maria setups:
+ ;0=normal color.
+ ;2=Normal DMA.
+ ;0=single byte wide characters.
+ ;1=background colored border.
+ ;0=transparency mode.
+ ;3=320 a or c mode.
+
+around:
+ lda #$20
+ sta BKGRND ;maria background color register
+
+ lda #$2A
+ sta P0C2 ;maria pallette 0 - color 2
+
+ jsr clear ;clear screen
+main40:
+ lda #0
+ sta v1fC0
+main50:
+ lda v1fC0
+ cmp #$0d
+ beq main60
+ jsr outchar
+main60: inc v1fC0
+ cmp #$7f
+ bne main50
+ beq main40
+
+outchar:
+ sta v1fBB ;save all registers
+ stx v1fBC
+ sty v1fBD
+outc10:
+ lda SWCHB ;read console switches
+ and #PAUSE ;PAUSE down?
+ beq outc10 ;yes ... wait until released
+
+ lda v1fBB ;restore character to print
+ and #$7F ;strip off high bit
+ cmp #$0D ;see if a carriage return
+ bne outc2 ;no ...
+
+ ldx #0 ;search for start of next line
+outc11:
+ sec
+ lda lines,x
+ sbc INDPT2
+ lda lines+1,x
+ sbc INDPT2+1
+ bcs outc15 ;found a line start >=
+ inx
+ inx
+ cpx #46 ;end of table?
+ bcc outc11 ;keep looking...
+outc15:
+ lda lines,x ;start of next line
+ sta INDPT2
+ lda lines+1,x
+ sta INDPT2+1
+ jmp doneoutc ;done ...
+outc2:
+ sec
+ lda INDPT2
+ sbc #(row24+columns) & $ff ;beyond end of screen?
+ lda INDPT2+1
+ sbc #(row24+columns) >> 8
+ bcs outc3 ;yes ...
+ jmp outc6b ;no ... o.k. to print
+outc3:
+ lda #$03 ;outer loop counter (3 pages)
+ sta v1fBE
+
+ lda #SCREEN & $ff ;init pointers to begin of screen
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+outc3a:
+ ldx #$00
+outc3b:
+ ldy #columns ;get one line ahead
+ lda (INDPT2),y
+ ldy #$00
+ sta (INDPT2),y ;store it where we are
+
+ inc INDPT2 ;advance pointer to next position
+ bne outc4
+ inc INDPT2+1
+outc4:
+ inx
+ bne outc3b
+ dec v1fBE
+ bpl outc3a
+
+ lda #row24 & $ff
+ sta INDPT2
+ lda #row24 >> 8
+ sta INDPT2+1
+
+ ldx #columns-1 ;clear the last line
+ lda #$00
+outc6:
+ sta row24+columns,x
+ sta row24,x
+ dex
+ bpl outc6
+outc6b:
+ ldy #$00
+ lda v1fBB ;get back saved character
+ and #$7F ;mask off high bit
+ cmp #$0D ;carriage return?
+ beq doneoutc ;yes ...
+
+ sta (INDPT2),y ;put character in video matrix
+ inc INDPT2 ;increment lo of char pointer
+ bne doneoutc ;no carry ...
+ inc INDPT2+1 ;increment hi of char pointer
+doneoutc:
+ lda v1fBB ;restore registers
+ ldx v1fBC
+ ldy v1fBD
+ rts
+
+outstring:
+ stx INDPT3
+ sty INDPT3+1
+ ldy #$00
+outs10:
+ lda (INDPT3),y
+ beq outs20
+ jsr outchar
+ inc INDPT3
+ bne outs10
+ inc INDPT3+1
+ jmp outs10
+outs20:
+ rts
+
+lines:
+ .dc.w row2
+ .dc.w row3
+ .dc.w row4
+ .dc.w row5
+ .dc.w row6
+ .dc.w row7
+ .dc.w row8
+ .dc.w row9
+ .dc.w row10
+ .dc.w row11
+ .dc.w row12
+ .dc.w row13
+ .dc.w row14
+ .dc.w row15
+ .dc.w row16
+ .dc.w row17
+ .dc.w row18
+ .dc.w row19
+ .dc.w row20
+ .dc.w row21
+ .dc.w row22
+ .dc.w row23
+ .dc.w row24
+ .dc.w row1
+
+outbyte:
+ pha
+ lsr
+ lsr
+ lsr
+ lsr
+ jsr outdigit
+ pla
+outdigit:
+ and #$0F
+ clc
+ adc #$30
+ cmp #$3A
+ bcc subrf1
+ clc
+ adc #$07
+subrf1:
+ jmp outchar
+
+; subroutine to clear the video display character matrix
+clear:
+ lda #$00
+ tax
+clr010:
+ sta SCREEN,x ;zero display by pages
+ sta SCREEN+$100,x
+ sta SCREEN+$200,x
+ sta row24+columns-$100,x
+ inx
+ bne clr010
+
+ lda #$ff & SCREEN ;home the cursor position
+ sta INDPT2
+ lda #SCREEN >> 8
+ sta INDPT2+1
+
+ rts
+
+ .org $FFF8
+
+ .dc.w $F7FF
+ .dc.w dummy ;NMI
+ .dc.w main ;RESET
+ .dc.w dummy ;IRQ
+ \ No newline at end of file
diff --git a/DISKS/7800DEV/MADMAC/ALN.PRG b/DISKS/7800DEV/MADMAC/ALN.PRG
new file mode 100644
index 0000000..39f7b21
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/ALN.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/CONV65.PRG b/DISKS/7800DEV/MADMAC/CONV65.PRG
new file mode 100644
index 0000000..ebd6587
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/CONV65.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/DOINDEX.PRG b/DISKS/7800DEV/MADMAC/DOINDEX.PRG
new file mode 100644
index 0000000..d8fe82e
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/DOINDEX.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/ATARI.S b/DISKS/7800DEV/MADMAC/EXAMPLES/ATARI.S
new file mode 100644
index 0000000..ac69094
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/ATARI.S
@@ -0,0 +1,634 @@
+ .nlist
+****
+**** This is a PRELIMINARY equates file for the Atari ST;
+**** not all the equates may be here, there may be typos
+**** we haven't caught, and not all the macros for Gemdos
+**** and the BIOS have been defined.
+****
+**** This is only useful for users of the (as yet unreleased)
+**** MADMAC assembler; it won't work with AS68.
+****
+ .subttl 'Hardware Locations'
+;
+; Atari ST hardware locations
+;
+memconf = $ffff8001 ; memory controller
+dbaseh = $ffff8201
+dbasel = $ffff8203 ; display base low, high
+vcounthi = $ffff8205 ; display counter low, medium, high
+vcountmid = $ffff8207
+vcountlow = $ffff8209
+syncmode = $ffff820a ; video sync mode
+color0 = $ffff8240 ; color registers 0..15
+color1 = $ffff8242
+color2 = $ffff8244
+color3 = $ffff8246
+color4 = $ffff8248
+color5 = $ffff824a
+color6 = $ffff824c
+color7 = $ffff824e
+color8 = $ffff8250
+color9 = $ffff8252
+color10 = $ffff8254
+color11 = $ffff8256
+color12 = $ffff8258
+color13 = $ffff825a
+color14 = $ffff825c
+color15 = $ffff825e
+shiftmd = $ffff8260 ; shifter mode (resolution)
+
+;--- DMA chip
+;
+diskctl = $ffff8604 ; disk controller data access
+fifo = $ffff8606 ; DMA mode control
+dmahigh = $ffff8609 ; DMA base high, medium, low
+dmamid = $ffff860b
+dmalow = $ffff860d
+
+;--- 1770 registers
+;
+cmdreg = $80 ; 1770/FIFO command register select
+trkreg = $82 ; 1770/FIFO track register select
+secreg = $84 ; 1770/FIFO sector register select
+datareg = $86 ; 1770/FIFO data register select
+
+;--- Sound Chip
+;
+giselect = $ffff8800 ; (W) sound chip register select
+giread = $ffff8800 ; (R) sound chip read-data
+giwrite = $ffff8802 ; (W) sound chip write-data
+gitoneaf = 0 ; channel A fine/coarse tune
+gitoneac = 1
+gitonebf = 2 ; channel B
+gitonebc = 3
+gitonecf = 4 ; channel C
+gitonecc = 5
+ginoise = 6 ; noise generator control
+gimixer = 7 ; I/O control/volume control register
+giaamp = 8 ; channel A, B, C amplitude
+gibamp = 9
+gicamp = $a
+gifienvlp = $b ; envelope period fine, coarse tune
+gicrnvlp = $c
+giporta = $e ; GI register# for I/O port A
+giportb = $f ; Centronics output register
+
+;--- Bits in "giporta":
+;
+xrts = 8 ; RTS output
+dtr = $10 ; DTR output
+strobe = $20 ; Centronics strobe output
+gpo = $40 ; "general purpose" output
+
+;--- 68901 (MFP)
+;
+mfp = $fffffa00 ; mfp base
+gpip = mfp+1 ; general purpose I/O
+aer = mfp+3 ; active edge reg
+ddr = mfp+5 ; data direction reg
+iera = mfp+7 ; interrupt enable A & B
+ierb = mfp+9
+ipra = mfp+$b ; interrupt pending A & B
+iprb = mfp+$d
+isra = mfp+$f ; interrupt inService A & B
+isrb = mfp+$11
+imra = mfp+$13 ; interrupt mask A & B
+imrb = mfp+$15
+vr = mfp+$17 ; interrupt vector base
+tacr = mfp+$19 ; timer A control
+tbcr = mfp+$1b ; timer B control
+tcdcr = mfp+$1d ; timer C & D control
+tadr = mfp+$1f ; timer A data
+tbdr = mfp+$21 ; timer B data
+tcdr = mfp+$23 ; timer C data
+tddr = mfp+$25 ; timer D data
+scr = mfp+$27 ; sync char
+ucr = mfp+$29 ; USART control reg
+rsr = mfp+$2b ; receiver status
+tsr = mfp+$2d ; transmit status
+udr = mfp+$2f ; USART data
+
+;--- 6850s
+;
+keyctl = $fffffc00 ; keyboard ACIA control
+keybd = $fffffc02 ; keyboard data
+midictl = $fffffc04 ; MIDI ACIA control
+midi = $fffffc06 ; MIDI data
+
+ .subttl 'BIOS Variables'
+;
+; BIOS Variables
+;
+etv_timer = $400 ; vector for timer interrupt chain
+etv_critic = $404 ; vector for critical error chain
+etv_term = $408 ; vector for process terminate
+etv_xtra = $40c ; 5 reserved vectors
+memvalid = $420 ; indicates system state on RESET
+memcntlr = $424 ; mem controller config nibble
+resvalid = $426 ; validates 'resvector'
+resvector = $42a ; [RESET] bailout vector
+phystop = $42e ; physical top of RAM
+_membot = $432 ; bottom of available memory;
+_memtop = $436 ; top of available memory;
+memval2 = $43a ; validates 'memcntlr' and 'memconf'
+flock = $43e ; floppy disk/FIFO lock variable
+seekrate = $440 ; default floppy seek rate
+_timr_ms = $442 ; system timer calibration (in ms)
+_fverify = $444 ; nonzero: verify on floppy write
+_bootdev = $446 ; default boot device
+palmode = $448 ; nonzero ==> PAL mode
+defshiftmd = $44a ; default video rez (first byte)
+sshiftmd = $44c ; shadow for 'shiftmd' register
+_v_bas_ad = $44e ; pointer to base of screen memory
+vblsem = $452 ; semaphore to enforce mutex in vbl
+nvbls = $454 ; number of deferred vectors
+_vblqueue = $456 ; pointer to vector of deferred vfuncs
+colorptr = $45a ; pointer to palette setup (or NULL)
+screenpt = $45e ; pointer to screen base setup (|NULL)
+_vbclock = $462 ; count of unblocked vblanks
+_frclock = $466 ; count of every vblank
+hdv_init = $46a ; hard disk initialization
+swv_vec = $46e ; video change-resolution bailout
+hdv_bpb = $472 ; disk "get BPB"
+hdv_rw = $476 ; disk read/write
+hdv_boot = $47a ; disk "get boot sector"
+hdv_mediach = $47e ; disk media change detect
+_cmdload = $482 ; nonzero: load COMMAND.COM from boot
+conterm = $484 ; console/vt52 bitSwitches (%%0..%%2)
+trp14ret = $486 ; saved return addr for _trap14
+criticret = $48a ; saved return addr for _critic
+themd = $48e ; memory descriptor (MD)
+_____md = $49e ; (more MD)
+savptr = $4a2 ; pointer to register save area
+_nflops = $4a6 ; number of disks attached (0, 1+)
+con_state = $4a8 ; state of conout() parser
+save_row = $4ac ; saved row# for cursor X-Y addressing
+sav_context = $4ae ; pointer to saved processor context
+_bufl = $4b2 ; two buffer-list headers
+_hz_200 = $4ba ; 200hz raw system timer tick
+_drvbits = $4c2 ; bit vector of "live" block devices
+_dskbufp = $4c6 ; pointer to common disk buffer
+_autopath = $4ca ; pointer to autoexec path (or NULL)
+_vbl_list = $4ce ; initial _vblqueue (to $4ee)
+_dumpflg = $4ee ; screen-dump flag
+_prtabt = $4f0 ; printer abort flag
+_sysbase = $4f2 ; -> base of OS
+_shell_p = $4f6 ; -> global shell info
+end_os = $4fa ; -> end of OS memory usage
+exec_os = $4fe ; -> address of shell to exec on startup
+scr_dump = $502 ; -> screen dump code
+prv_lsto = $506 ; -> _lstostat()
+prv_lst = $50a ; -> _lstout()
+prv_auxo = $50e ; -> _auxostat()
+prv_aux = $512 ; -> _auxout()
+
+ .subttl '"Line A" Equates'
+;
+; "Line A" Equates
+;
+VPLANES = 0
+VWRAP = 2
+CONTRL = 4
+INTIN = 8
+PTSIN = 12
+INTOUT = 16
+PTSOUT = 20
+COLBIT0 = 24
+COLBIT1 = 26
+COLBIT2 = 28
+COLBIT3 = 30
+LSTLIN = 32
+LNMASK = 34
+WMODE = 36
+X1 = 38
+Y1 = 40
+X2 = 42
+Y2 = 44
+PATPTR = 46
+PATMSK = 50
+MFILL = 52
+CLIP = 54
+XMINCL = 56
+YMINCL = 58
+XMAXCL = 60
+YMAXCL = 62
+XDDA = 64
+DDAINC = 66
+SCALDIR = 68
+MONO = 70
+SRCX = 72
+SRCY = 74
+DSTX = 76
+DSTY = 78
+DELX = 80
+DELY = 82
+FBASE = 84
+FWIDTH = 88
+STYLE = 90
+LITEMSK = 92
+SKEWMSK = 94
+WEIGHT = 96
+ROFF = 98
+LOFF = 100
+SCALE = 102
+CHUP = 104
+TEXTFG = 106
+SCRTCHP = 108
+SCRPT2 = 112
+TEXTBG = 114
+COPYTRAN = 116
+SEEDABORT = 118
+
+ .subttl '"Line A" Macros'
+;
+; "Line A" macros
+;
+.macro A_init
+ dc.w $a000
+.endm
+.macro A_putpix
+ dc.w $a001
+.endm
+.macro A_getpix
+ dc.w $a002
+.endm
+.macro A_abline
+ dc.w $a003
+.endm
+.macro A_habline
+ dc.w $a004
+.endm
+.macro A_rectfill
+ dc.w $a005
+.endm
+.macro A_polyfill
+ dc.w $a006
+.endm
+.macro A_bitblt
+ dc.w $a007
+.endm
+.macro A_textblt
+ dc.w $a008
+.endm
+.macro A_showcur
+ dc.w $a009
+.endm
+.macro A_hidecur
+ dc.w $a00a
+.endm
+.macro A_chgcur
+ dc.w $a00b
+.endm
+.macro A_drsprite
+ dc.w $a00c
+.endm
+.macro A_unsprite
+ dc.w $a00d
+.endm
+.macro A_copyrstr
+ dc.w $a00e
+.endm
+.macro A_seedfill
+ dc.w $a00f
+.endm
+
+ .subttl 'Operating System Macros'
+
+.macro Bios trpno, clean ; trap to BIOS
+ move.w #\trpno,-(sp)
+ trap #13
+ .if \clean <= 8
+ addq #\clean,sp
+ .else
+ add.w #\clean,sp
+ .endif
+.endm
+
+.macro Xbios trpno, clean ; trap to XBIOS
+ move.w #\trpno,-(sp)
+ trap #14
+ .if \clean <= 8
+ addq #\clean,sp
+ .else
+ add.w #\clean,sp
+ .endif
+.endm
+
+.macro Gemdos trpno, clean ; trap to GEMDOS
+ move.w #\trpno,-(sp)
+ trap #1
+ .if \clean <= 8
+ addq #\clean,sp
+ .else
+ add.w #\clean,sp
+ .endif
+.endm
+
+;
+; String "foobar" (push onto stack)
+; String "foobar",a0 move address of string somewhere
+;
+.macro String str,loc
+ .if \?loc
+ move.l #.\~,\loc
+ .else
+ pea .\~
+ .endif
+ .data
+.\~: dc.b \str,0
+ .text
+.endm
+
+ .subttl 'Bios Traps'
+
+;--- Character Device Numbers
+;
+PRT = 0 ; printer
+AUX = 1 ; RS-232
+CON = 2 ; console (vt-52 emulator)
+MIDI = 3 ; MIDI port
+IKBD = 4 ; ikbd (out only)
+RAWCON = 5 ; console (raw characters)
+
+.macro Getmbp ptr
+ move.l \ptr,-(sp)
+ Bios 0,4
+.endm
+.macro Bconstat dev
+ move.w \dev,-(sp)
+ Bios 1,4
+.endm
+.macro Bconin dev
+ move.w \dev,-(sp)
+ Bios 2,4
+.endm
+.macro Bconout dev, char
+ move.w \char,-(sp)
+ move.w \dev,-(sp)
+ Bios 3,6
+.endm
+.macro Rwabs rwflag, buf, count, recno, dev
+ move.w \dev,-(sp)
+ move.w \recno,-(sp)
+ move.w \count,-(sp)
+ move.l \buf,-(sp)
+ move.w \rwflag,-(sp)
+ Bios 4,14
+.endm
+.macro Setexc vecnum, vec
+ move.l \vec,-(sp)
+ move.w \vecnum,-(sp)
+ Bios 5,8
+.endm
+.macro Tickcal
+ Bios 6,2
+.endm
+.macro Getbpb devno
+ move.w \devno,-(sp)
+ Bios 7,4
+.endm
+.macro Bcostat devno
+ move.w \devno,-(sp)
+ Bios 8,4
+.endm
+.macro Mediach devno
+ move.w \devno,-(sp)
+ Bios 9,4
+.endm
+.macro Drvmap
+ Bios 10,2
+.endm
+.macro Kbshift mode
+ move.w \mode,-(sp)
+ Bios 11,4
+.endm
+
+ .subttl 'Extended BIOS Traps'
+.macro Initmous type, param, vec
+ move.l \vec,-(sp)
+ move.l \param,-(sp)
+ move.w \type,-(sp)
+ Xbios 0,12
+.endm
+.macro Physbase
+ Xbios 2,2
+.endm
+.macro Logbase
+ Xbios 3,2
+.endm
+.macro Getrez
+ Xbios 4,2
+.endm
+.macro Setscreen logloc, physloc, rez
+ move.w \rez,-(sp)
+ move.l \physloc,-(sp)
+ move.l \logloc,-(sp)
+ Xbios 5,12
+.endm
+.macro Setpallete ptr
+ move.l \ptr,-(sp)
+ Xbios 6,6
+.endm
+.macro Setcolor colnum, color
+ move.w \color,-(sp)
+ move.w \colnum,-(sp)
+ Xbios 7,6
+.endm
+.macro Floprd buf, devno, sectno, trackno, sideno, count
+ move.w \count,-(sp)
+ move.w \sideno,-(sp)
+ move.w \trackno,-(sp)
+ move.w \sectno,-(sp)
+ move.w \devno,-(sp)
+ clr.l -(sp) ; (filler)
+ move.l \buf,-(sp)
+ Xbios 8,20
+.endm
+.macro Flopwr buf, devno, sectno, trackno, sideno, count
+ move.w \count,-(sp)
+ move.w \sideno,-(sp)
+ move.w \trackno,-(sp)
+ move.w \sectno,-(sp)
+ move.w \devno,-(sp)
+ clr.l -(sp) ; (filler)
+ move.l \buf,-(sp)
+ Xbios 9,20
+.endm
+.macro Flopfmt buf,devno,spt,trackno,sideno,interlv,magic,virgin
+ move.w \virgin,-(sp)
+ move.l \magic,-(sp)
+ move.w \interlv,-(sp)
+ move.w \sideno,-(sp)
+ move.w \trackno,-(sp)
+ move.w \spt,-(sp)
+ move.w \devno,-(sp)
+ clr.l -(sp) ; (filler)
+ move.l \buf,-(sp)
+ Xbios $a,26
+.endm
+.macro Midiws cnt1,ptr
+ move.l \ptr,-(sp)
+ move.w \cnt1,-(sp)
+ Xbios $c,8
+.endm
+.macro Random
+ Xbios $11,2
+.endm
+.macro Protobt buf,serialno,disktype,execflag
+ move.w \execflag,-(sp)
+ move.w \disktype,-(sp)
+ move.l \serialno,-(sp)
+ move.l \buf,-(sp)
+ Xbios $12,14
+.endm
+.macro Flopver buf, devno, sectno, trackno, sideno, count
+ move.w \count,-(sp)
+ move.w \sideno,-(sp)
+ move.w \trackno,-(sp)
+ move.w \sectno,-(sp)
+ move.w \devno,-(sp)
+ clr.l -(sp) ; (filler)
+ move.l \buf,-(sp)
+ Xbios $13,20
+.endm
+
+CURS_HIDE = 0
+CURS_SHOW = 1
+CURS_BLINK = 2
+CURS_NOBLINK = 3
+CURS_SETRATE = 4
+CURS_GETRATE = 5
+
+.macro Cursconf func,op
+ move.w \op,-(sp)
+ move.w \func,-(sp)
+ Xbios $15,6
+.endm
+.macro Kbdvbase
+ Xbios $22,2
+.endm
+.macro Supexec where
+ move.l \where,-(sp)
+ Xbios $26,6
+.endm
+ .subttl 'Gemdos Traps'
+.macro Dsetdrv drive
+ move.w \drive,-(sp)
+ Gemdos $e,4
+.endm
+.macro Pterm0
+ clr.w -(sp)
+ trap #1
+ illegal
+.endm
+.macro Pterm code
+ .if \?code
+ move.w \code,-(sp)
+ .else
+ clr.w -(sp)
+ .endif
+ move.w #$4c,-(sp)
+ trap #1
+ illegal
+.endm
+.macro Super
+ clr.l -(sp)
+ move.w #$20,-(sp)
+ trap #1
+ addq #6,sp
+ move.l d0,-(sp)
+ move.w #$20,-(sp)
+.endm
+.macro User
+ trap #1
+ addq #6,sp
+.endm
+.macro Puts string
+ move.l \string,-(sp)
+ Gemdos 9,6
+.endm
+.macro Fopen file, mode
+ move.w \mode,-(sp)
+ move.l \file,-(sp)
+ Gemdos $3d,8
+.endm
+.macro Fcreate file, mode
+ move.w \mode,-(sp)
+ move.l \file,-(sp)
+ Gemdos $3c,8
+.endm
+.macro Fread handle, count, buf
+ move.l \buf,-(sp)
+ move.l \count,-(sp)
+ move.w \handle,-(sp)
+ Gemdos $3f,12
+.endm
+.macro Fwrite handle, count, buf
+ move.l \buf,-(sp)
+ move.l \count,-(sp)
+ move.w \handle,-(sp)
+ Gemdos $40,12
+.endm
+.macro Fclose handle
+ move.w \handle,-(sp)
+ Gemdos $3e,4
+.endm
+.macro Fdelete file
+ move.l \file,-(sp)
+ Gemdos $41,6
+.endm
+.macro Fseek offset, handle, mode
+ move.w \mode,-(sp)
+ move.w \handle,-(sp)
+ move.l \offset,-(sp)
+ Gemdos $42,10
+.endm
+.macro Fsetdta addr
+ move.l \addr,-(sp)
+ Gemdos $1a,6
+.endm
+.macro Ptermres count, retcode
+ move.w \retcode,-(sp)
+ move.l \count,-(sp)
+ Gemdos $31,8
+.endm
+.macro Mshrink block, newsiz
+ move.l \newsiz,-(sp)
+ move.l \block,-(sp)
+ clr.w -(sp)
+ Gemdos $4a,12
+.endm
+.macro Pexec mode, p1, p2, p3
+ move.l \p3,-(sp)
+ move.l \p2,-(sp)
+ move.l \p1,-(sp)
+ move.w \mode,-(sp)
+ Gemdos $4b,16
+.endm
+.macro Fsfirst fspec, attr
+ move.w \attr,-(sp)
+ move.l \fspec,-(sp)
+ Gemdos $4e,8
+.endm
+.macro Fsnext
+ Gemdos $4f,2
+.endm
+
+ .subttl 'Structures'
+;
+; Basepage Format
+;
+ .abs
+Plowtpa: ds.l 1
+Phitpa: ds.l 1
+Ptbase: ds.l 1
+Ptlen: ds.l 1
+Pdbase: ds.l 1
+Pdlen: ds.l 1
+Pbbase: ds.l 1
+Pblen: ds.l 1
+Pxdta: ds.l 1
+Pparent: ds.l 1
+ .TEXT
+ .eject
+ .list
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/BUGS.S b/DISKS/7800DEV/MADMAC/EXAMPLES/BUGS.S
new file mode 100644
index 0000000..ed6e4de
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/BUGS.S
@@ -0,0 +1,670 @@
+
+;-----------------------------------------------------------------------:
+; :
+; Silly Bugs Demo :
+; :
+;---- :
+; 30-Nov-1986 lmd Hacked it up. :
+; :
+;-----------------------------------------------------------------------:
+
+ .include "atari.s" ; get ST equates and macros
+
+
+;----------------
+;
+; Imports
+;
+ .globl _images ; -> table of images (->)
+ .globl _masks ; -> table of masks (->)
+ .globl mksh ; construct shifted images
+
+
+;----------------
+;
+; Exports
+;
+ .globl draw ; draw an image
+ .globl undraw ; undraw (erase) an image
+ .globl upd_gravity ; update an image, with gravity
+
+
+;----------------
+;
+; Bug structure
+;
+ .abs
+BGcritno: ds.b 1 ; critter number (0=dead)
+BGstate: ds.b 1 ; critter state
+BGxpos: ds.l 1 ; int+frac X and Y positions
+BGypos: ds.l 1
+BGxvel: ds.l 1 ; int+frac Y and Y velocities
+BGyvel: ds.l 1
+BGtimer: ds.w 1 ; timer
+BGimage: ds.w 1 ; image number
+BGscraddr: ds.l 1 ; starting address on screen
+BGimgaddr: ds.l 1 ; -> image
+BGmskaddr: ds.l 1 ; -> mask
+BGimgsize: ds.l 1 ; = image size (0, 4, 8 ...)
+BGSIZE: ds.l 1 ; (size of bug structure)
+
+
+;----------------
+;
+; Global variables
+;
+NBUGS equ 16 ; number of bugs
+ .bss
+screen: ds.l 1 ; -> screen memory
+mode: ds.w 1 ; screen resolution (0, 2, 4)
+modex4: ds.w 1 ; screen resolution (0, 4, 8)
+width: ds.w 1 ; = screen width
+maxx: ds.w 1 ; max X position for 16-wide sprite
+maxy: ds.w 1 ; max Y position for 16-high sprite
+linshft: ds.w 1 ; shift amount for X index computation
+linmask: ds.w 1 ; mask for X index computation
+gravity: ds.l 1 ; int+frac gravity
+oldrez: ds.w 1 ; old screen resolution
+savedColors: ds.w 16 ; saved pallette
+freemem: ds.b $8000 ; space for shifted images ["enough" space]
+bugs: ds.b BGSIZE*NBUGS ; bugs database
+
+
+
+ .data
+ourColors: dc.w $000,$700,$070,$770 ; our pallette
+ dc.w $007,$707,$077,$555
+ dc.w $333,$733,$373,$773
+ dc.w $337,$737,$377,$654
+
+
+
+ .text
+;----------------
+;
+; Top level
+;
+ move.l #$00004000,gravity ; set force of gravity
+
+ bsr inivideo ; initialize video parameters
+ lea freemem,a1 ; a1 -> free memory
+ bsr mksh ; make shifted fonts
+
+;---- setup initial positions and velocities from
+; a list of initial values.
+;
+ lea bugs,a5
+ lea i_xpos,a0
+ lea i_ypos,a1
+ lea i_xvel,a2
+ lea i_img,a3
+ moveq #NBUGS-1,d0
+ilp1: clr.l BGxpos(a5)
+ clr.l BGypos(a5)
+ move.w (a0)+,BGxpos(a5)
+ move.w (a1)+,BGypos(a5)
+ move.l (a2)+,BGxvel(a5)
+ move.w (a3)+,BGimage(a5)
+ clr.l BGscraddr(a5) ; clobber screen addr (never drawn)
+ lea BGSIZE(a5),a5
+ dbra d0,ilp1
+
+;--- Bugs loop:
+; o refresh all bugs
+; o sync with vblank
+; o test for a keypress, punt on any keystroke
+;
+
+loop: moveq #NBUGS-1,d6 ; d6 = #bugs-1
+ lea bugs,a5
+loop1: bsr upd_gravity ; update a bug
+ lea BGSIZE(a5),a5 ; advance to next one
+ dbra d6,loop1 ; (loop for more)
+
+ move.w #$25,-(sp) ; Vsync()
+ trap #14
+ addq #2,sp
+
+ Bconstat #CON ; key ready?
+ tst.w d0
+ beq loop ; (no --- loop)
+
+ Bconin #CON ; eat the keypress
+ bsr restore_video ; restore video
+ Pterm0 ; and terminate
+
+
+;--- initial image numbers
+i_img: dc.w 0,1,2,0
+ dc.w 0,1,2,0
+ dc.w 0,1,2,0
+ dc.w 0,1,2,0
+
+
+;--- initial X and Y posititions
+i_xpos: dc.w $00,$10,$20,$30
+ dc.w $40,$50,$60,$70
+ dc.w $80,$90,$a0,$b0
+ dc.w $c0,$d0,$e0,$f0
+
+i_ypos: dc.w $00,$08,$10,$18
+ dc.w $20,$28,$30,$38
+ dc.w $40,$48,$30,$38
+ dc.w $20,$28,$10,$18
+
+;--- Initial X velocities
+i_xvel: dc.l $00008000
+ dc.l $0000c000
+ dc.l $00010000
+ dc.l $00014000
+ dc.l $00008000
+ dc.l $0000c000
+ dc.l $00010000
+ dc.l $00008000
+ dc.l $00014000
+ dc.l $0000c000
+ dc.l $00010000
+ dc.l $00008000
+ dc.l $0000c000
+ dc.l $00014000
+ dc.l $00010000
+ dc.l $00014000
+
+
+;----------------
+;
+; Video parameter setup
+;
+inivideo:
+ Physbase ; screen = Physbase()
+ move.l d0,screen
+ Supexec #saveColors ; save pallette
+ Supexec #setColors ; initialize pallette with our colors
+ Getrez ; mode = Getrez() << 1
+ move.w d0,oldrez ; save old resolution
+ cmp.w #1,d0 ; medium rez?
+ bne.s .1 ; (no)
+ moveq #0,d0
+ bsr setRez ; set rez to low
+ moveq #0,d0
+
+.1: add.w d0,d0
+ move.w d0,mode
+ move.w d0,modex4 ; mode4 = Getrez() << 2
+ add.w d0,modex4
+
+ move.w xwidth(pc,d0.w),width
+ move.w xmaxx(pc,d0.w),maxx
+ move.w xmaxy(pc,d0.w),maxy
+ move.w xlinshft(pc,d0.w),linshft
+ move.w xlinmask(pc,d0.w),linmask
+ rts
+
+saveColors:
+ lea color0,a0
+ lea savedColors,a1
+ move.w #16-1,d0
+.1: move.w (a0)+,(a1)+
+ dbra d0,.1
+ rts
+
+setColors:
+ lea ourColors,a0
+ lea color0,a1
+ move.w #16-1,d0
+.1: move.w (a0)+,(a1)+
+ dbra d0,.1
+ rts
+
+
+;+
+; Resolution-dependent parameter tables
+;
+;-
+xwidth: dc.w 160,160,80 ; screen width (bytes)
+xmaxx: dc.w 303,623,623 ; max X position for 16-wide sprite
+xmaxy: dc.w 183,183,383 ; max Y position for 16-high sprite
+xlinshft: dc.w 1,2,3 ; shifts for X index computation
+xlinmask: dc.w $ffff-7,$ffff-3,$ffff-1 ; masks for X index computation
+
+
+;----------------
+;
+; Restore original screen resolution
+;
+restore_video:
+ Supexec #restoreColors ; restore pallette
+ cmp.w #1,oldrez ; was in medium?
+ bne.s .ret ; (no --- leave it alone)
+ move.w oldrez,d0 ; set rez back to medium
+ bsr setRez
+.ret: rts
+
+
+setRez:
+ move.b d0,.temp
+ Supexec #.1
+ rts
+.1: move.b .temp,shiftmd
+ rts
+ bss
+.temp: ds.w 1
+ .text
+
+
+restoreColors:
+ lea savedColors,a0
+ lea color0,a1
+ move.w #16-1,d0
+.1: move.w (a0)+,(a1)+
+ dbra d0,.1
+ rts
+
+
+
+;---- general-purpose return instruction
+return: rts
+
+
+;----------------
+;
+; Draw bug;
+; - compute addresses of things and fill-in bug structure
+; - setup registers for drawing
+; - do drawing
+;
+; Passed: a5 -> bug
+; Returns: nothing
+; Fills-in: BGscraddr(a5)
+; BGimgaddr(a5)
+; BGmskaddr(a5)
+; BGimgsize(a5)
+; Uses: a0-a4/d0-d4
+;
+draw::
+ move.w BGypos(a5),d0 ; d0 = ypos * width
+ mulu width,d0
+ move.w BGxpos(a5),d1 ; d1 = (xpos >> linshft) & linmask
+ move.w d1,d2 ; (save xpos for later)
+ move.w linshft,d3
+ lsr.w d3,d1
+ and.w linmask,d1
+ add.w d1,d0 ; d0 += d1
+ move.l screen,a0 ; a0 = screen + (ypos * width) +
+ add.w d0,a0 ; (xpos >> linshft) & linmask
+ move.l a0,BGscraddr(a5) ; save screen addr for cmp and undraw
+
+ moveq #0,d3 ; assume 1x
+ and.w #$000f,d2 ; see if on 16-pixel boundary
+ beq.s .1 ; (yes --- it's 1x)
+ moveq #4,d3 ; no --- it's 2x
+.1: move.w d3,BGimgsize(a5) ; set image size, keep d3=image size
+
+ move.w BGimage(a5),d0 ; d0 = image number to draw
+ lsl.w #2,d0 ; turn into longword index
+ move.w BGxpos(a5),d1 ; d1 = (x_position & 15) << 2
+ and.w #15,d1
+ lsl.w #2,d1
+
+ lea _images,a1
+ move.l (a1,d0.w),a1 ; a1 -> image base
+ move.l (a1,d1.w),a1 ; a1 -> image
+ move.l a1,BGimgaddr(a5) ; save image addr for cmp and undraw
+
+ lea _masks,a2
+ move.l (a2,d0.w),a2 ; a2 -> image's mask base
+ move.l (a2,d1.w),a2 ; a2 -> image's mask
+ move.l a2,BGmskaddr(a5) ; save mask addr for cmp and undraw
+
+ move.w width,d1 ; d1 = screen width
+
+ move.w modex4,d0 ; d0 = longword rez index
+ move.l axdraw(pc,d0.w),a4 ; a4 -> vector of drawing routines
+ move.l (a4,d3.w),a4 ; a4 -> drawing routine
+ jmp (a4)
+
+
+;+
+; Table of ptrs to drawing routines
+;
+;-
+axdraw: dc.l lxdraw,hxdraw,mxdraw
+lxdraw: dc.l ld1x16,ld2x16
+hxdraw: dc.l return,return
+mxdraw: dc.l md1x16,md2x16
+
+
+;+
+; Draw a 1x16 image in low-rez
+;
+; a0 -> screen base
+; a1 -> image base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+ld1x16:
+ moveq #16-1,d2 ; d2 = scanline count
+
+.1: move.w (a2)+,d4 ; d4 = mask
+
+;--- plane 0
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0) ; stuff result onto screen
+
+;--- plane 1
+ move.w 2(a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,2(a0) ; stuff result onto screen
+
+;--- plane 2
+ move.w 4(a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,4(a0) ; stuff result onto screen
+
+;--- plane 3
+ move.w 6(a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,6(a0) ; stuff result onto screen
+
+ add.w d1,a0 ; bump screen ptr to next scanline
+ dbra d2,.1 ; loop for more lines
+ rts
+
+
+;+
+; Draw a 2x16 image in low-rez
+;
+; a0 -> screen base
+; a1 -> image base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+ld2x16:
+ sub.w #16,d1 ; adjust screen width for image stride
+ moveq #16-1,d2 ; d2 = scanline count
+
+ld2_1: move.w (a2)+,d4 ; d4 = mask
+
+;--- plane 0 part 0
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 1 part 0
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 2 part 0
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 3 part 0
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+ move.w (a2)+,d4 ; d4 = mask
+
+;--- plane 0 part 1
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 1 part 1
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 2 part 1
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+;--- plane 3 part 1
+ move.w (a0),d0 ; d0 = screen
+ and.w d4,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0)+ ; stuff result onto screen
+
+ add.w d1,a0 ; bump screen ptr to next scanline
+ dbra d2,ld2_1 ; loop for more lines
+ rts
+
+
+;+
+; Draw a 1x16 image in monochrome
+;
+; a0 -> screen base
+; a1 -> image base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+md1x16:
+ moveq #16-1,d2 ; d2 = scanline count
+
+md1_1: move.w (a0),d0 ; d0 = screen
+ and.w (a2)+,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0) ; stuff result onto screen
+ addq.w #6,a1 ; bump past color planes
+
+ add.w d1,a0 ; bump screen ptr to next scanline
+ dbra d2,md1_1 ; loop for more lines
+ rts
+
+
+;+
+; Draw a 2x16 image in monochrome
+;
+; a0 -> screen base
+; a1 -> image base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+md2x16:
+ moveq #16-1,d2 ; d2 = scanline count
+
+md2_1: move.w (a0),d0 ; d0 = screen
+ and.w (a2)+,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,(a0) ; stuff result onto screen
+ addq.w #6,a1 ; bump past color planes
+
+ move.w 2(a0),d0 ; d0 = screen
+ and.w (a2)+,d0 ; clobber bits in mask
+ or.w (a1)+,d0 ; or-in bits from image
+ move.w d0,2(a0) ; stuff result onto screen
+ addq.w #6,a1 ; bump past color planes
+
+ add.w d1,a0 ; bump screen ptr to next scanline
+ dbra d2,md2_1 ; loop for more lines
+ rts
+
+
+;----------------
+;
+; Undraw bug
+;
+; Passed: a5 -> bug
+; Returns: nothing
+; Uses: a0-a4/d0-d4
+;
+undraw::
+ move.l BGscraddr(a5),d0 ; if BGscraddr == NULL
+ beq.s .ret ; then return;
+ move.l d0,a0
+ move.l BGmskaddr(a5),a2
+ move.w width,d1
+ move.w BGimgsize(a5),d0
+ move.w modex4,d2
+ move.l axundraw(pc,d2.w),a4
+ move.l (a4,d0.w),a4
+ jmp (a4)
+.ret: rts
+
+
+;+
+; Table of ptrs to undraw routines
+;
+;-
+axundraw: dc.l lxundraw,hxundraw,mxundraw
+lxundraw: dc.l lu1x16,lu2x16
+hxundraw: dc.l return,return
+mxundraw: dc.l mu1x16,mu2x16
+
+
+;+
+; Undraw a 1x16 image in low rez
+;
+; a0 -> screen base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+lu1x16:
+ sub.w #8,d1 ; adjust screen width for image stride
+ moveq #16-1,d2 ; d2 = scanline count
+
+.1: move.w (a2)+,d0 ; d0 = mask
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+
+ add.w d1,a0 ; bump to next screen location
+ dbra d2,.1 ; loop for more scanlines
+ rts
+
+
+;+
+; Undraw a 2x16 image in low rez
+;
+; a0 -> screen base
+; a2 -> mask base
+; d1 = screen width
+;
+; Uses:
+; d4 = ~mask
+; d5 = mask
+;
+;
+;
+;-
+lu2x16:
+ sub.w #16,d1 ; adjust screen width for image stride
+ moveq #16-1,d2 ; d2 = scanline count
+.1:
+ .rept 2
+ move.w (a2)+,d0 ; d5 = mask
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+ and.w d0,(a0)+
+ .endr
+
+ add.w d1,a0 ; bump to next screen location
+ dbra d2,.1 ; loop for more scanlines
+ rts
+
+
+;+
+; Undraw a 1x16 image in monochrome
+;
+; a0 -> screen base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+mu1x16:
+ .rept 16
+ move.w (a2)+,d0
+ and.w d0,(a0)
+ add.w d1,a0
+ .endr
+ rts
+
+
+;+
+; Undraw a 2x16 image in monochrome
+;
+; a0 -> screen base
+; a2 -> mask base
+; d1 = screen width
+;
+;-
+mu2x16:
+ .rept 16
+ move.l (a2)+,d0
+ and.l d0,(a0)
+ add.w d1,a0
+ .endr
+ rts
+
+
+;----------------
+;
+; Update position (with gravity)
+;
+; Passed: a5 -> bug
+; Returns: nothing
+; Uses: d0-d4/a0-a4
+;
+upd_gravity:
+ moveq #0,d2 ; MovedFlag := FALSE
+
+;--- update Y position (with gravity)
+ move.w BGypos(a5),d3 ; save old position (for comparison)
+ move.l BGyvel(a5),d0 ; bump velocity with gravity
+ add.l gravity,d0
+.y: move.l d0,BGyvel(a5)
+ add.l d0,BGypos(a5) ; bump position with new velocity
+ move.w BGypos(a5),d0 ; get significant part of position
+ bpl.s .1 ; if (pos < 0)
+ bra.s .2 ; reverse velocity (bounce)
+.1: cmp.w maxy,d0 ; if (pos > maxy)
+ blt.s .3
+.2: move.l BGyvel(a5),d0 ; reverse velocity
+ neg.l d0
+ bra .y ; recompute position
+.3: cmp.w BGypos(a5),d3 ; if (newpos != oldpos)
+ beq.s .4
+ st d2 ; MovedFlag := TRUE
+
+.4: move.w BGxpos(a5),d3 ; save old position (for comparison)
+ move.l BGxvel(a5),d0 ; d0 = velocity
+.7: add.l BGxpos(a5),d0 ; d0 = position + velocity
+ move.l d0,BGxpos(a5)
+ bmi.s .5 ; if (position < 0) then bounce
+ swap d0
+ cmp.w maxx,d0 ; if (position <= maxx) then OK
+ blt.s .6
+.5: move.l BGxvel(a5),d0 ; d0 = -velocity
+ neg.l d0
+ move.l d0,BGxvel(a5) ; velocity = -velocity
+ bra.s .7 ; move again (other direction)
+
+.6: cmp.w BGxpos(a5),d3 ; if (newpos != oldpos)
+ bne.s .8 ; then redraw
+ tst.b d2 ; if (MovedFlag == TRUE)
+ beq.s .r ; (no, so exit)
+.8: bsr undraw ; undraw old image (in old position)
+ bsr draw ; draw new image in new position
+.r: rts
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/CODE.S b/DISKS/7800DEV/MADMAC/EXAMPLES/CODE.S
new file mode 100644
index 0000000..f1c7016
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/CODE.S
@@ -0,0 +1,1148 @@
+;------------------------
+;
+; 68000 Opcodes
+;
+
+abs = $0ab5
+
+abcd:: abcd d1,d2
+ abcd -(a3),-(a4)
+ nop
+
+add:: add d1,d2
+ add a2,d3
+ add (a3),d4
+ add (a4)+,d5
+ add -(a5),d6
+ add $1234(a6),d7
+ add $12(a1,a2),d2
+ add abs.w,d3
+ add abs,d4
+ add .1(pc),d5
+ add .1(pc,a2),d6
+ add #$1234,d7
+.1: nop
+
+ add d1,(a2)
+ add d2,(a3)+
+ add d3,-(a4)
+ add d4,$1234(a5)
+ add d5,$12(a6,a7)
+ add d6,abs.w
+ add d7,abs
+ nop
+
+adda:: add d1,a2
+ adda d1,a2
+ adda a2,a3
+ adda (a3),a4
+ adda (a4)+,a5
+ adda -(a5),a6
+ adda $1234(a6),a7
+ adda $12(a1,a2),a2
+ adda abs.w,a3
+ adda abs,a4
+ adda .1(pc),a5
+ adda .1(pc,a2),a6
+ adda #$1234,a7
+.1: nop
+
+addi:: add #$1234,d1
+ addi #$1234,d1
+ addi #$1234,(a3)
+ addi #$1234,(a4)+
+ addi #$1234,-(a5)
+ addi #$1234,$1234(a6)
+ addi #$1234,$12(a1,a2)
+ addi #$1234,abs.w
+ addi #$1234,abs
+.1: nop
+
+addq:: addq #1,d1
+ addq #2,a2
+ addq #3,(a3)
+ addq #4,(a4)+
+ addq #5,-(a5)
+ addq #6,$1234(a6)
+ addq #7,$12(a1,a2)
+ addq #8,abs.w
+ addq #1,abs
+.1: nop
+
+addx:: addx d1,d2
+ addx d3,d4
+ addx -(a1),-(a2)
+ addx -(a3),-(a4)
+
+and:: and d1,d2
+ and (a3),d4
+ and (a4)+,d5
+ and -(a5),d6
+ and $1234(a6),d7
+ and $12(a1,a2),d2
+ and abs.w,d3
+ and abs,d4
+ and .1(pc),d5
+ and .1(pc,a2),d6
+ and #$1234,d7
+.1: nop
+
+ and d1,(a2)
+ and d2,(a3)+
+ and d3,-(a4)
+ and d4,$1234(a5)
+ and d5,$12(a6,a7)
+ and d6,abs.w
+ and d7,abs
+ nop
+
+andi:: and #$1234,d1
+ andi #$1234,d1
+ andi #$1234,(a3)
+ andi #$1234,(a4)+
+ andi #$1234,-(a5)
+ andi #$1234,$1234(a6)
+ andi #$1234,$12(a1,a2)
+ andi #$1234,abs.w
+ andi #$1234,abs
+.1: nop
+
+ andi #$ff,ccr
+ andi #$ffff,sr
+
+asl:: asl.b d1,d2
+ asl d2,d3
+ asl.w d3,d4
+ asl.l d4,d5
+
+ asl.b #2,d1
+ asl #3,d2
+ asl.w #4,d3
+ asl.l #5,d4
+
+ asl d5
+ asl (a3)
+ asl (a4)+
+ asl -(a5)
+ asl $1234(a6)
+ asl $12(a1,a2)
+ asl abs.w
+ asl abs
+.1: nop
+
+asr:: asr.b d1,d2
+ asr d2,d3
+ asr.w d3,d4
+ asr.l d4,d5
+
+ asr.b #2,d1
+ asr #3,d2
+ asr.w #4,d3
+ asr.l #5,d4
+
+ asr d5
+ asr (a3)
+ asr (a4)+
+ asr -(a5)
+ asr $1234(a6)
+ asr $12(a1,a2)
+ asr abs.w
+ asr abs
+.1: nop
+
+bra:: bra targ1
+ bcc targ1
+ bcs targ1
+ beq targ1
+ bge targ1
+ bgt targ1
+ bhi targ1
+ ble targ1
+ bls targ1
+ blt targ1
+ bmi targ1
+ bne targ1
+ bpl targ1
+ bvc targ1
+ bvs targ1
+
+ nop
+
+ bra.s targ1
+ bcc.s targ1
+ bcs.s targ1
+ beq.s targ1
+ bge.s targ1
+ bgt.s targ1
+ bhi.s targ1
+ ble.s targ1
+ bls.s targ1
+ blt.s targ1
+ bmi.s targ1
+ bne.s targ1
+ bpl.s targ1
+ bvc.s targ1
+ bvs.s targ1
+
+ nop
+targ1:: nop
+ nop
+
+ bra.s targ1
+ bcc.s targ1
+ bcs.s targ1
+ beq.s targ1
+ bge.s targ1
+ bgt.s targ1
+ bhi.s targ1
+ ble.s targ1
+ bls.s targ1
+ blt.s targ1
+ bmi.s targ1
+ bne.s targ1
+ bpl.s targ1
+ bvc.s targ1
+ bvs.s targ1
+
+ nop
+
+ bra targ1
+ bcc targ1
+ bcs targ1
+ beq targ1
+ bge targ1
+ bgt targ1
+ bhi targ1
+ ble targ1
+ bls targ1
+ blt targ1
+ bmi targ1
+ bne targ1
+ bpl targ1
+ bvc targ1
+ bvs targ1
+
+ nop
+
+ bra.w targ1
+ bcc.w targ1
+ bcs.w targ1
+ beq.w targ1
+ bge.w targ1
+ bgt.w targ1
+ bhi.w targ1
+ ble.w targ1
+ bls.w targ1
+ blt.w targ1
+ bmi.w targ1
+ bne.w targ1
+ bpl.w targ1
+ bvc.w targ1
+ bvs.w targ1
+
+bchg:: bchg d1,d2
+ bchg d2,(a3)
+ bchg d3,(a4)+
+ bchg d4,-(a5)
+ bchg d5,$1234(a6)
+ bchg d6,$12(a1,a2)
+ bchg d7,abs.w
+ bchg d1,abs
+
+ bchg #1,d2
+ bchg #2,(a3)
+ bchg #3,(a4)+
+ bchg #4,-(a5)
+ bchg #5,$1234(a6)
+ bchg #6,$12(a1,a2)
+ bchg #7,abs.w
+ bchg #1,abs
+
+bclr:: bclr d1,d2
+ bclr d2,(a3)
+ bclr d3,(a4)+
+ bclr d4,-(a5)
+ bclr d5,$1234(a6)
+ bclr d6,$12(a1,a2)
+ bclr d7,abs.w
+ bclr d1,abs
+
+ bclr #1,d2
+ bclr #2,(a3)
+ bclr #3,(a4)+
+ bclr #4,-(a5)
+ bclr #5,$1234(a6)
+ bclr #6,$12(a1,a2)
+ bclr #7,abs.w
+ bclr #1,abs
+
+bset:: bset d1,d2
+ bset d2,(a3)
+ bset d3,(a4)+
+ bset d4,-(a5)
+ bset d5,$1234(a6)
+ bset d6,$12(a1,a2)
+ bset d7,abs.w
+ bset d1,abs
+
+ bset #1,d2
+ bset #2,(a3)
+ bset #3,(a4)+
+ bset #4,-(a5)
+ bset #5,$1234(a6)
+ bset #6,$12(a1,a2)
+ bset #7,abs.w
+ bset #1,abs
+
+btst:: btst d1,d2
+ btst d2,(a3)
+ btst d3,(a4)+
+ btst d4,-(a5)
+ btst d5,$1234(a6)
+ btst d6,$12(a1,a2)
+ btst d7,abs.w
+ btst d1,abs
+ btst d2,.1(pc)
+ btst d3,.1(pc,a3)
+ btst d4,#$12
+
+ btst #1,d2
+ btst #2,(a3)
+ btst #3,(a4)+
+ btst #4,-(a5)
+ btst #5,$1234(a6)
+ btst #6,$12(a1,a2)
+ btst #7,abs.w
+ btst #1,abs
+ btst #2,.1(pc)
+ btst #3,.1(pc,a3)
+.1: nop
+
+chk:: chk d1,d2
+ chk (a3),d4
+ chk (a4)+,d5
+ chk -(a5),d6
+ chk $1234(a6),d7
+ chk $12(a1,a2),d2
+ chk abs.w,d3
+ chk abs,d4
+ chk .1(pc),d5
+ chk .1(pc,a2),d6
+ chk #$1234,d7
+.1: nop
+
+clr:: clr d1
+ clr (a3)
+ clr (a4)+
+ clr -(a5)
+ clr $1234(a6)
+ clr $12(a1,a2)
+ clr abs.w
+ clr abs
+ clr a1
+.1: nop
+
+cmp:: cmp d1,d2
+ cmp a2,d3
+ cmp (a3),d4
+ cmp (a4)+,d5
+ cmp -(a5),d6
+ cmp $1234(a6),d7
+ cmp $12(a1,a2),d2
+ cmp abs.w,d3
+ cmp abs,d4
+ cmp .1(pc),d5
+ cmp .1(pc,a2),d6
+ cmp #$1234,d7
+ cmp.w a2,d3
+ cmp.l a2,d3
+.1: nop
+
+cmpa:: cmpa d1,a2
+ cmpa a2,a3
+ cmpa (a3),a4
+ cmpa (a4)+,a5
+ cmpa -(a5),a6
+ cmpa $1234(a6),a7
+ cmpa $12(a1,a2),a2
+ cmpa abs.w,a3
+ cmpa abs,a4
+ cmpa .1(pc),a5
+ cmpa .1(pc,a2),a6
+ cmpa #$1234,a7
+.1: nop
+
+cmpi:: cmpi #$1234,d1
+ cmpi #$1234,(a3)
+ cmpi #$1234,(a4)+
+ cmpi #$1234,-(a5)
+ cmpi #$1234,$1234(a6)
+ cmpi #$1234,$12(a1,a2)
+ cmpi #$1234,abs.w
+ cmpi #$1234,abs
+.1: nop
+
+cmpm:: cmpm.b (a1)+,(a2)+
+ cmpm (a3)+,(a4)+
+ cmpm.w (a5)+,(a6)+
+ cmpm.l (a7)+,(a0)+
+ nop
+
+dbcc:: dbcc d1,targ2
+ dbcs d2,targ2
+ dbeq d3,targ2
+ dbf d4,targ2
+ dbge d5,targ2
+ dbgt d6,targ2
+ dbhi d1,targ2
+ dble d2,targ2
+ dbls d3,targ2
+ dblt d4,targ2
+ dbmi d5,targ2
+ dbne d6,targ2
+ dbpl d1,targ2
+ dbt d2,targ2
+ dbvc d3,targ2
+ dbvs d4,targ2
+ dbra d5,targ2
+
+ nop
+targ2:: nop
+ nop
+
+ dbcc d1,targ2
+ dbcs d2,targ2
+ dbeq d3,targ2
+ dbf d4,targ2
+ dbge d5,targ2
+ dbgt d6,targ2
+ dbhi d1,targ2
+ dble d2,targ2
+ dbls d3,targ2
+ dblt d4,targ2
+ dbmi d5,targ2
+ dbne d6,targ2
+ dbpl d1,targ2
+ dbt d2,targ2
+ dbvc d3,targ2
+ dbvs d4,targ2
+ dbra d5,targ2
+ nop
+
+divs:: divs d1,d2
+ divs (a3),d4
+ divs (a4)+,d5
+ divs -(a5),d6
+ divs $1234(a6),d7
+ divs $12(a1,a2),d2
+ divs abs.w,d3
+ divs abs,d4
+ divs .1(pc),d5
+ divs .1(pc,a2),d6
+ divs #$1234,d7
+.1: nop
+
+divu:: divu d1,d2
+ divu (a3),d4
+ divu (a4)+,d5
+ divu -(a5),d6
+ divu $1234(a6),d7
+ divu $12(a1,a2),d2
+ divu abs.w,d3
+ divu abs,d4
+ divu .1(pc),d5
+ divu .1(pc,a2),d6
+ divu #$1234,d7
+.1: nop
+
+eor:: eor d1,(a2)
+ eor d2,(a3)+
+ eor d3,-(a4)
+ eor d4,$1234(a5)
+ eor d5,$12(a6,a7)
+ eor d6,abs.w
+ eor d7,abs
+ nop
+
+eori:: eor #$1234,d1
+ eori #$1234,d1
+ eori #$1234,(a3)
+ eori #$1234,(a4)+
+ eori #$1234,-(a5)
+ eori #$1234,$1234(a6)
+ eori #$1234,$12(a1,a2)
+ eori #$1234,abs.w
+ eori #$1234,abs
+ eori #$ff,ccr
+ eori #$ffff,sr
+ nop
+
+exg:: exg d1,d2
+ exg d2,a3
+ exg a3,d4
+ exg a4,a5
+
+ext:: ext.w d1
+ ext.l d2
+
+illegal::
+ illegal
+
+jmp:: jmp (a1)
+ jmp $1234(a2)
+ jmp $12(a3,a4)
+ jmp abs.w
+ jmp abs
+ jmp $1234(pc)
+ jmp $12(pc,a3)
+ jmp targ3(pc)
+ jmp targ3(pc,a4)
+ nop
+targ3:: nop
+ nop
+
+jsr:: jsr (a1)
+ jsr $1234(a2)
+ jsr $12(a3,a4)
+ jsr abs.w
+ jsr abs
+ jsr $1234(pc)
+ jsr $12(pc,a3)
+ jsr targ4(pc)
+ jsr targ4(pc,a4)
+ nop
+targ4:: nop
+ nop
+
+lea:: lea (a1),a2
+ lea $1234(a2),a3
+ lea $12(a3,a5),a4
+ lea abs.w,a5
+ lea abs,a6
+ lea targ5(pc),a1
+ lea targ5(pc,a6),a2
+targ5:: nop
+
+link:: link a1,#$1234
+ link a2,#-1
+ link a3,#$ffff
+ link a3,#0
+
+lsl:: lsl.b d1,d2
+ lsl d2,d3
+ lsl.w d3,d4
+ lsl.l d4,d5
+
+ lsl.b #2,d1
+ lsl #3,d2
+ lsl.w #4,d3
+ lsl.l #5,d4
+
+ lsl d5
+ lsl (a3)
+ lsl (a4)+
+ lsl -(a5)
+ lsl $1234(a6)
+ lsl $12(a1,a2)
+ lsl abs.w
+ lsl abs
+.1: nop
+
+lsr:: lsr.b d1,d2
+ lsr d2,d3
+ lsr.w d3,d4
+ lsr.l d4,d5
+
+ lsr.b #2,d1
+ lsr #3,d2
+ lsr.w #4,d3
+ lsr.l #5,d4
+
+ lsr d5
+ lsr (a3)
+ lsr (a4)+
+ lsr -(a5)
+ lsr $1234(a6)
+ lsr $12(a1,a2)
+ lsr abs.w
+ lsr abs
+.1: nop
+
+move:: move d1,d1
+ move a2,d2
+ move (a3),d3
+ move (a4)+,d4
+ move -(a5),d5
+ move $1234(a6),d6
+ move $12(a1,a2),d1
+ move abs.w,d2
+ move abs,d3
+ move .1(pc),d4
+ move .1(pc,a2),d5
+ move #$1234,d6
+.1: nop
+
+ move d1,(a1)
+ move a2,(a2)
+ move (a3),(a3)
+ move (a4)+,(a4)
+ move -(a5),(a5)
+ move $1234(a6),(a6)
+ move $12(a1,a2),(a1)
+ move abs.w,(a2)
+ move abs,(a3)
+ move .2(pc),(a4)
+ move .2(pc,a2),(a5)
+ move #$1234,(a6)
+.2: nop
+
+ move d1,(a1)+
+ move a2,(a2)+
+ move (a3),(a3)+
+ move (a4)+,(a4)+
+ move -(a5),(a5)+
+ move $1234(a6),(a6)+
+ move $12(a1,a2),(a1)+
+ move abs.w,(a2)+
+ move abs,(a3)+
+ move .3(pc),(a4)+
+ move .3(pc,a2),(a5)+
+ move #$1234,(a6)+
+.3: nop
+
+ move d1,-(a1)
+ move a2,-(a2)
+ move (a3),-(a3)
+ move (a4)+,-(a4)
+ move -(a5),-(a5)
+ move $1234(a6),-(a6)
+ move $12(a1,a2),-(a1)
+ move abs.w,-(a2)
+ move abs,-(a3)
+ move .4(pc),-(a4)
+ move .4(pc,a2),-(a5)
+ move #$1234,-(a6)
+.4: nop
+
+ move d1,$1234(a1)
+ move a2,$1234(a2)
+ move (a3),$1234(a3)
+ move (a4)+,$1234(a4)
+ move -(a5),$1234(a5)
+ move $1234(a6),$1234(a6)
+ move $12(a1,a2),$1234(a1)
+ move abs.w,$1234(a2)
+ move abs,$1234(a3)
+ move .5(pc),$1234(a4)
+ move .5(pc,a2),$1234(a5)
+ move #$1234,$1234(a6)
+.5: nop
+
+ move d1,$12(a1,a5)
+ move a2,$12(a2,a5)
+ move (a3),$12(a3,a5)
+ move (a4)+,$12(a4,a5)
+ move -(a5),$12(a5,a5)
+ move $1234(a6),$12(a6,a5)
+ move $12(a1,a2),$12(a1,a5)
+ move abs.w,$12(a2,a5)
+ move abs,$12(a3,a5)
+ move .6(pc),$12(a4,a5)
+ move .6(pc,a2),$12(a5,a5)
+ move #$1234,$12(a6,a5)
+.6: nop
+
+ move d1,abs.w
+ move a2,abs.w
+ move (a3),abs.w
+ move (a4)+,abs.w
+ move -(a5),abs.w
+ move $1234(a6),abs.w
+ move $12(a1,a2),abs.w
+ move abs.w,abs.w
+ move abs,abs.w
+ move .7(pc),abs.w
+ move .7(pc,a2),abs.w
+ move #$1234,abs.w
+.7: nop
+
+ move d1,abs
+ move a2,abs
+ move (a3),abs
+ move (a4)+,abs
+ move -(a5),abs
+ move $1234(a6),abs
+ move $12(a1,a2),abs
+ move abs.w,abs
+ move abs,abs
+ move .8(pc),abs
+ move .8(pc,a2),abs
+ move #$1234,abs
+.8: nop
+
+
+_ccr:: move d1,ccr
+ move (a3),ccr
+ move (a4)+,ccr
+ move -(a5),ccr
+ move $1234(a6),ccr
+ move $12(a1,a2),ccr
+ move abs.w,ccr
+ move abs,ccr
+ move .1(pc),ccr
+ move .1(pc,a2),ccr
+ move #$1234,ccr
+.1: nop
+
+_sr:: move sr,d1
+ move sr,(a2)
+ move sr,(a3)+
+ move sr,-(a4)
+ move sr,$1234(a5)
+ move sr,$12(a6,a3)
+ move sr,abs.w
+ move sr,abs
+ nop
+
+ move d1,sr
+ move (a3),sr
+ move (a4)+,sr
+ move -(a5),sr
+ move $1234(a6),sr
+ move $12(a1,a2),sr
+ move abs.w,sr
+ move abs,sr
+ move .1(pc),sr
+ move .1(pc,a2),sr
+ move #$1234,sr
+.1: nop
+
+_usp:: move usp,a1
+ move usp,a2
+ move a3,usp
+ move a4,usp
+
+movea:: move d1,a2
+ move a2,a3
+ move (a3),a4
+ move (a4)+,a5
+ move -(a5),a6
+ move $1234(a6),a1
+ move $12(a1,a2),a2
+ move abs.w,a3
+ move abs,a4
+ move .0(pc),a5
+ move .0(pc,a2),a6
+ move #$1234,a7
+.0: nop
+
+movem:: movem d1-d6/a3-a7,(a1)
+ movem d1-d6/a3-a7,-(a2)
+ movem d1-d6/a3-a7,$1234(a3)
+ movem d1-d6/a3-a7,$12(a4,a5)
+ movem d1-d6/a3-a7,abs.w
+ movem d1-d6/a3-a7,abs
+ nop
+ movem (a1),d1-d6/a3-a7
+ movem (a2)+,d1-d6/a3-a7
+ movem $1234(a3),d1-d6/a3-a7
+ movem $12(a4,a5),d1-d6/a3-a7
+ movem abs.w,d1-d6/a3-a7
+ movem abs,d1-d6/a3-a7
+ nop
+ nop
+ movem.w d1-d6/a3-a7,(a1)
+ movem.w d1-d6/a3-a7,-(a2)
+ movem.w d1-d6/a3-a7,$1234(a3)
+ movem.w d1-d6/a3-a7,$12(a4,a5)
+ movem.w d1-d6/a3-a7,abs.w
+ movem.w d1-d6/a3-a7,abs
+ nop
+ movem.w (a1),d1-d6/a3-a7
+ movem.w (a2)+,d1-d6/a3-a7
+ movem.w $1234(a3),d1-d6/a3-a7
+ movem.w $12(a4,a5),d1-d6/a3-a7
+ movem.w abs.w,d1-d6/a3-a7
+ movem.w abs,d1-d6/a3-a7
+ nop
+ nop
+ movem.l d1-d6/a3-a7,(a1)
+ movem.l d1-d6/a3-a7,-(a2)
+ movem.l d1-d6/a3-a7,$1234(a3)
+ movem.l d1-d6/a3-a7,$12(a4,a5)
+ movem.l d1-d6/a3-a7,abs.w
+ movem.l d1-d6/a3-a7,abs
+ nop
+ movem.l (a1),d1-d6/a3-a7
+ movem.l (a2)+,d1-d6/a3-a7
+ movem.l $1234(a3),d1-d6/a3-a7
+ movem.l $12(a4,a5),d1-d6/a3-a7
+ movem.l abs.w,d1-d6/a3-a7
+ movem.l abs,d1-d6/a3-a7
+ nop
+
+movep:: movep d1,$1234(a2)
+ movep d2,(a3)
+ movep $1234(a3),d4
+ movep (a4),d5
+
+ movep.w d1,$1234(a2)
+ movep.w d2,(a3)
+ movep.w $1234(a3),d4
+ movep.w (a4),d5
+
+ movep.l d1,$1234(a2)
+ movep.l d2,(a3)
+ movep.l $1234(a3),d4
+ movep.l (a4),d5
+
+moveq:: moveq #0,d0
+ moveq #$ff,d0
+ moveq #$7f,d0
+ moveq #1,d0
+
+muls:: muls d1,d2
+ muls (a3),d4
+ muls (a4)+,d5
+ muls -(a5),d6
+ muls $1234(a6),d7
+ muls $12(a1,a2),d2
+ muls abs.w,d3
+ muls abs,d4
+ muls .1(pc),d5
+ muls .1(pc,a2),d6
+ muls #$1234,d7
+.1: nop
+
+mulu:: mulu d1,d2
+ mulu (a3),d4
+ mulu (a4)+,d5
+ mulu -(a5),d6
+ mulu $1234(a6),d7
+ mulu $12(a1,a2),d2
+ mulu abs.w,d3
+ mulu abs,d4
+ mulu .1(pc),d5
+ mulu .1(pc,a2),d6
+ mulu #$1234,d7
+.1: nop
+
+nbcd:: nbcd d1
+ nbcd (a3)
+ nbcd (a4)+
+ nbcd -(a5)
+ nbcd $1234(a6)
+ nbcd $12(a1,a2)
+ nbcd abs.w
+ nbcd abs
+ nop
+
+neg:: neg d1
+ neg (a3)
+ neg (a4)+
+ neg -(a5)
+ neg $1234(a6)
+ neg $12(a1,a2)
+ neg abs.w
+ neg abs
+ nop
+
+negx:: negx d1
+ negx (a3)
+ negx (a4)+
+ negx -(a5)
+ negx $1234(a6)
+ negx $12(a1,a2)
+ negx abs.w
+ negx abs
+ nop
+
+nop:: nop
+ nop
+
+not:: not d1
+ not (a3)
+ not (a4)+
+ not -(a5)
+ not $1234(a6)
+ not $12(a1,a2)
+ not abs.w
+ not abs
+ nop
+
+or:: or d1,d2
+ or (a3),d4
+ or (a4)+,d5
+ or -(a5),d6
+ or $1234(a6),d7
+ or $12(a1,a2),d2
+ or abs.w,d3
+ or abs,d4
+ or .1(pc),d5
+ or .1(pc,a2),d6
+ or #$1234,d7
+.1: nop
+
+ or d1,(a2)
+ or d2,(a3)+
+ or d3,-(a4)
+ or d4,$1234(a5)
+ or d5,$12(a6,a7)
+ or d6,abs.w
+ or d7,abs
+ nop
+
+ori:: ori #$1234,d1
+ ori #$1234,(a3)
+ ori #$1234,(a4)+
+ ori #$1234,-(a5)
+ ori #$1234,$1234(a6)
+ ori #$1234,$12(a1,a2)
+ ori #$1234,abs.w
+ ori #$1234,abs
+ nop
+ or #$1234,d1
+ or #$1234,(a3)
+ or #$1234,(a4)+
+ or #$1234,-(a5)
+ or #$1234,$1234(a6)
+ or #$1234,$12(a1,a2)
+ or #$1234,abs.w
+ or #$1234,abs
+ nop
+
+ or #$ff,ccr
+ or #$ffff,sr
+ ori #$ff,ccr
+ ori #$ffff,sr
+ nop
+
+pea:: pea (a3)
+ pea $1234(a6)
+ pea $12(a1,a2)
+ pea abs.w
+ pea abs
+ pea .0(pc)
+ pea .0(pc,a2)
+.0: nop
+
+reset:: reset
+ nop
+
+rol:: rol.b d1,d2
+ rol d2,d3
+ rol.w d3,d4
+ rol.l d4,d5
+
+ rol.b #2,d1
+ rol #3,d2
+ rol.w #4,d3
+ rol.l #5,d4
+
+ rol d5
+ rol (a3)
+ rol (a4)+
+ rol -(a5)
+ rol $1234(a6)
+ rol $12(a1,a2)
+ rol abs.w
+ rol abs
+.1: nop
+
+ror:: ror.b d1,d2
+ ror d2,d3
+ ror.w d3,d4
+ ror.l d4,d5
+
+ ror.b #2,d1
+ ror #3,d2
+ ror.w #4,d3
+ ror.l #5,d4
+
+ ror d5
+ ror (a3)
+ ror (a4)+
+ ror -(a5)
+ ror $1234(a6)
+ ror $12(a1,a2)
+ ror abs.w
+ ror abs
+.1: nop
+
+roxl:: roxl.b d1,d2
+ roxl d2,d3
+ roxl.w d3,d4
+ roxl.l d4,d5
+
+ roxl.b #2,d1
+ roxl #3,d2
+ roxl.w #4,d3
+ roxl.l #5,d4
+
+ roxl d5
+ roxl (a3)
+ roxl (a4)+
+ roxl -(a5)
+ roxl $1234(a6)
+ roxl $12(a1,a2)
+ roxl abs.w
+ roxl abs
+.1: nop
+
+roxr:: roxr.b d1,d2
+ roxr d2,d3
+ roxr.w d3,d4
+ roxr.l d4,d5
+
+ roxr.b #2,d1
+ roxr #3,d2
+ roxr.w #4,d3
+ roxr.l #5,d4
+
+ roxr d5
+ roxr (a3)
+ roxr (a4)+
+ roxr -(a5)
+ roxr $1234(a6)
+ roxr $12(a1,a2)
+ roxr abs.w
+ roxr abs
+.1: nop
+
+rte:: rte
+rtr:: rtr
+rts:: rts
+ nop
+
+sbcd:: sbcd d1,d2
+ sbcd d3,d4
+ sbcd -(a1),-(a2)
+ sbcd -(a3),-(a4)
+
+scc:: scc d1
+ scs (a2)
+ seq (a3)+
+ sf -(a4)
+ sge $1234(a5)
+ sgt $12(a6,a1)
+ shi abs.w
+ sle abs
+ sls d1
+ slt (a2)
+ smi (a3)+
+ sne -(a4)
+ spl $1234(a5)
+ st $12(a6,a2)
+ svc abs.w
+ svs abs
+ nop
+
+stop:: stop #$1234
+ stop #$2700
+ stop #$0000
+ nop
+
+sub:: sub d1,d2
+ sub a2,d3
+ sub (a3),d4
+ sub (a4)+,d5
+ sub -(a5),d6
+ sub $1234(a6),d7
+ sub $12(a1,a2),d2
+ sub abs.w,d3
+ sub abs,d4
+ sub .1(pc),d5
+ sub .1(pc,a2),d6
+ sub #$1234,d7
+.1: nop
+
+ sub d1,(a2)
+ sub d2,(a3)+
+ sub d3,-(a4)
+ sub d4,$1234(a5)
+ sub d5,$12(a6,a7)
+ sub d6,abs.w
+ sub d7,abs
+ nop
+
+suba:: sub d1,a2
+ suba d1,a2
+ suba a2,a3
+ suba (a3),a4
+ suba (a4)+,a5
+ suba -(a5),a6
+ suba $1234(a6),a7
+ suba $12(a1,a2),a2
+ suba abs.w,a3
+ suba abs,a4
+ suba .1(pc),a5
+ suba .1(pc,a2),a6
+ suba #$1234,a7
+.1: nop
+
+subi:: sub #$1234,d1
+ subi #$1234,d1
+ subi #$1234,(a3)
+ subi #$1234,(a4)+
+ subi #$1234,-(a5)
+ subi #$1234,$1234(a6)
+ subi #$1234,$12(a1,a2)
+ subi #$1234,abs.w
+ subi #$1234,abs
+.1: nop
+
+subq:: subq #1,d1
+ subq #2,a2
+ subq #3,(a3)
+ subq #4,(a4)+
+ subq #5,-(a5)
+ subq #6,$1234(a6)
+ subq #7,$12(a1,a2)
+ subq #8,abs.w
+ subq #1,abs
+.1: nop
+
+subx:: subx d1,d2
+ subx d3,d4
+ subx -(a1),-(a2)
+ subx -(a3),-(a4)
+ nop
+
+swap:: swap d1
+ swap d2
+ swap d3
+ swap d7
+ nop
+
+tas:: tas d1
+ tas (a3)
+ tas (a4)+
+ tas -(a5)
+ tas $1234(a6)
+ tas $12(a1,a2)
+ tas abs.w
+ tas abs
+ nop
+
+trap:: trap #1
+ trap #2
+ trap #15
+ trap #$f
+ nop
+
+trapv:: trapv
+
+tst:: tst d1
+ tst (a3)
+ tst (a4)+
+ tst -(a5)
+ tst $1234(a6)
+ tst $12(a1,a2)
+ tst abs.w
+ tst abs
+ nop
+
+unlk: unlk a1
+ unlk a2
+ unlk a6
+ unlk a7
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/CODE65.S b/DISKS/7800DEV/MADMAC/EXAMPLES/CODE65.S
new file mode 100644
index 0000000..e9567b0
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/CODE65.S
@@ -0,0 +1,207 @@
+;----------------
+;
+; 6502 Opcodes
+;
+;
+ .6502
+
+ .org $f0
+tmp: ds.b 1
+tmph: ds.b 1
+tmp1: ds.b 1
+tmp1h: ds.b 1
+
+ .org $8000
+
+ dc.w $1234
+ dc.b 12,34,56,78
+ dc.b 'This is a test of the...',0
+ dc.w $1234,$5678,$9abc,@777
+
+ adc #immed
+ adc abs
+ adc tmp
+ adc (tmp,x)
+ adc (tmp),y
+ adc tmp,x
+ adc abs,x
+ adc abs,y
+
+ and #immed
+ and abs
+ and tmp
+ and (tmp,x)
+ and (tmp),y
+ and tmp,x
+ and abs,x
+ and abs,y
+
+ asl abs
+ asl tmp
+ asl
+ asl tmp,x
+ asl abs,x
+
+ bcc where
+ bcs where
+ beq where
+ bne where
+ bmi where
+ bpl where
+ bvc where
+ bvs where
+
+where: bit abs
+ bit tmp
+
+ brk
+
+ clc
+ cld
+ cli
+ clv
+
+ cmp #immed
+ cmp abs
+ cmp tmp
+ cmp (tmp,x)
+ cmp (tmp),y
+ cmp tmp,x
+ cmp abs,x
+ cmp abs,y
+
+ cpx #immed
+ cpx abs
+ cpx tmp
+
+ cpy #immed
+ cpy abs
+ cpy tmp
+
+ dec abs
+ dec tmp
+ dec tmp,x
+ dec abs,x
+
+ dex
+ dey
+
+ eor #immed
+ eor abs
+ eor tmp
+ eor (tmp,x)
+ eor (tmp),y
+ eor tmp,x
+ eor abs,x
+ eor abs,y
+
+ inc abs
+ inc tmp
+ inc tmp,x
+ inc abs,x
+
+ inx
+ iny
+
+ jmp abs
+ jmp (abs)
+
+ jsr abs
+
+ lda #immed
+ lda abs
+ lda tmp
+ lda (tmp,x)
+ lda (tmp),y
+ lda tmp,x
+ lda abs,x
+ lda abs,y
+
+ ldx #immed
+ ldx abs
+ ldx tmp
+ ldx abs,y
+ ldx tmp,y
+
+ ldy #immed
+ ldy abs
+ ldy tmp
+ ldy abs,x
+ ldy tmp,x
+
+ lsr abs
+ lsr tmp
+ lsr
+ lsr tmp,x
+ lsr abs,x
+
+ nop
+
+ ora #immed
+ ora abs
+ ora tmp
+ ora (tmp,x)
+ ora (tmp),y
+ ora tmp,x
+ ora abs,x
+ ora abs,y
+
+ pha
+ php
+ pla
+ plp
+
+ rol abs
+ rol tmp
+ rol
+ rol tmp,x
+ rol abs,x
+
+ ror abs
+ ror tmp
+ ror
+ ror tmp,x
+ ror abs,x
+
+ rti
+ rts
+
+ sbc #immed
+ sbc abs
+ sbc tmp
+ sbc (tmp,x)
+ sbc (tmp),y
+ sbc tmp,x
+ sbc abs,x
+ sbc abs,y
+
+ sec
+ sed
+ sei
+
+ sta abs
+ sta tmp
+ sta (tmp,x)
+ sta (tmp),y
+ sta tmp,x
+ sta abs,x
+ sta abs,y
+
+ stx abs
+ stx tmp
+ stx tmp,y
+
+ sty abs
+ sty tmp
+ sty tmp,x
+
+ tax
+ tay
+ tsx
+ txa
+ txs
+ tya
+
+
+abs = $5ba
+immed = $11
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE.S b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE.S
new file mode 100644
index 0000000..fa58645
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE.S
@@ -0,0 +1,174 @@
+ .title 'Example Program'
+
+;------------------------------------------------------------------------
+; :
+; Silly Example Program :
+; :
+;---- :
+; 30-Nov-1986 lmd Hacked it up from previous brontos. :
+; :
+;------------------------------------------------------------------------
+
+ .include atari ; include Atari ST equates and macros
+
+
+;----------------
+;
+; Display a message,
+; display an interesting icon,
+; wait for a keypress,
+; and then exit.
+;
+;
+ Puts #.message ; print message
+ Super ; get into supervisor mode
+
+ lea icon(pc),a0 ; a0 -> form
+ lea .ret(pc),a6 ; a6 -> return address
+ moveq #26,d6 ; horizontal offset (/2)
+ bra monoicon
+
+.ret: User ; back to user mode
+ Bconin #CON ; wait for a keystroke
+ Pterm0 ; and terminate
+
+.message:
+ dc.b $1b,'E','Press any key to exit...',13,10,0
+ .even
+
+
+;----------------
+;
+; A cute icon
+; (This is a monochrome mask, generated by NEO and
+; massaged by hand somewhat).
+;
+;
+icon: dc.w $3f-1
+ dc.w ($12/2)-1
+ dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFC
+ dc.w $0000,$8000,$0000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0004,$0000,$8000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0007,$8000,$8000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0006,$8000,$8000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0005,$8000,$8000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0000,$0006,$8000,$8000,$0000
+ dc.w $0000,$0000,$0000,$0000,$0000,$0005,$8000,$8000
+ dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0006,$8000
+ dc.w $8000,$0000,$0000,$0000,$0000,$0000,$0000,$0005
+ dc.w $8000,$8000,$0000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0006,$8000,$8000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0005,$8000,$8000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0006,$8000,$8000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0005,$8000,$8000,$0000,$0000
+ dc.w $0000,$0000,$0000,$F000,$0006,$8000,$8000,$0000
+ dc.w $0000,$0000,$0000,$0001,$8800,$0005,$8000,$8000
+ dc.w $0000,$0000,$0000,$0000,$0002,$0400,$0006,$8000
+ dc.w $8000,$0000,$0000,$0000,$0000,$0004,$4400,$0005
+ dc.w $8000,$8000,$0000,$0000,$0000,$0000,$0008,$B800
+ dc.w $0006,$8000,$8000,$0000,$0000,$0000,$0000,$0011
+ dc.w $0000,$0005,$8000,$8000,$0000,$0000,$0000,$0000
+ dc.w $0022,$0000,$0006,$8000,$8000,$0000,$0000,$0000
+ dc.w $0000,$0044,$0000,$0005,$8000,$8000,$0000,$0000
+ dc.w $0000,$0000,$0088,$0000,$0006,$8000,$8000,$0000
+ dc.w $0000,$0000,$0000,$0110,$0000,$0005,$8000,$8000
+ dc.w $0000,$0000,$0000,$0000,$0210,$0000,$0006,$8000
+ dc.w $8000,$0000,$0000,$0000,$0000,$1C20,$000C,$7005
+ dc.w $8000,$8000,$0000,$0000,$000F,$FFFF,$E020,$0002
+ dc.w $8006,$8000,$8000,$0000,$0000,$07F0,$0000,$0040
+ dc.w $0009,$2005,$8000,$8000,$0000,$0000,$3800,$0000
+ dc.w $0040,$0015,$5006,$8000,$8000,$0000,$0000,$4000
+ dc.w $0000,$0080,$0022,$8805,$8000,$8000,$0000,$0001
+ dc.w $8000,$0000,$0100,$0024,$C806,$8000,$8000,$0000
+ dc.w $0002,$0000,$0000,$0200,$0009,$2005,$8000,$8000
+ dc.w $0000,$0004,$0000,$0000,$0400,$0011,$1006,$8000
+ dc.w $8000,$0000,$0008,$0000,$0000,$0400,$0012,$9005
+ dc.w $8000,$8000,$0000,$0030,$0000,$0000,$0200,$0001
+ dc.w $0006,$8000,$8000,$0000,$01C0,$0000,$0000,$0E00
+ dc.w $0002,$8005,$8000,$8000,$0000,$1E01,$FC1F,$00FA
+ dc.w $3100,$0001,$0006,$8000,$8000,$000F,$E00F,$0220
+ dc.w $FF04,$4880,$0002,$8005,$8000,$8000,$07F0,$01F0
+ dc.w $0B20,$0004,$4580,$0001,$0006,$8000,$8000,$7800
+ dc.w $3E00,$1990,$0008,$8300,$0002,$8005,$8000,$800F
+ dc.w $FFFF,$E000,$1CF0,$000F,$8000,$0005,$4006,$8000
+ dc.w $BFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFF5
+ dc.w $8000,$8000,$0000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0006,$8000,$8000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0005,$8000,$8000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0006,$8000,$8000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0005,$8000,$8000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0000,$0006,$8000,$8000,$0000
+ dc.w $1E00,$0004,$01E3,$8F00,$0000,$0005,$8000,$8000
+ dc.w $0000,$1138,$E78E,$3914,$5000,$0000,$0006,$8000
+ dc.w $8000,$003F,$9E25,$1444,$4514,$4E3F,$8000,$0005
+ dc.w $8000,$8000,$0000,$1121,$1444,$4514,$4100,$0000
+ dc.w $0006,$8000,$8000,$0000,$1E20,$E442,$39E3,$9E00
+ dc.w $0000,$0005,$8000,$8000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0006,$8000,$8000,$0000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0005,$8000,$8000,$0000,$0000
+ dc.w $0000,$0000,$0000,$0000,$0006,$8000,$8000,$0000
+ dc.w $0000,$0000,$0000,$0000,$0000,$0005,$8000,$8000
+ dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0006,$8000
+ dc.w $8000,$0000,$0000,$0000,$0000,$0000,$0000,$0005
+ dc.w $8000,$8000,$0000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0006,$8000,$8000,$0000,$0000,$0000,$0000,$0000
+ dc.w $0000,$0005,$8000,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF
+ dc.w $FFFF,$FFFF,$FFFE,$8000,$3555,$5555,$5555,$5555
+ dc.w $5555,$5555,$5555,$5555,$8000,$2AAA,$AAAA,$AAAA
+ dc.w $AAAA,$AAAA,$AAAA,$AAAA,$AAAA,$8000,$3FFF,$FFFF
+ dc.w $FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$8000
+
+
+
+;----------------
+;
+; Monochrome-image icon draw
+; [This is probably slow, but it doesn't HAVE to be fast]
+;
+; Passed: a0 -> icon form (see below)
+; d6 = horizontal offset (in source word)
+; a6 -> return address
+; processor in supervisor mode
+;
+; Uses: d0-d5/a0-a2
+;
+; An icon form has the simple structure:
+;
+; dc.w lineCount-1 ; "DBRA" number of scanlines
+; dc.w widthCount-1 ; "DBRA" number of words/line
+; dc.w ...data... ; image data (by scanline)
+;
+monoicon::
+ move.w (a0)+,d4 ; d4 = height of form - 1
+ move.w (a0)+,d3 ; d3 = width of form - 1
+
+ move.b shiftmd,d7 ; get video resolution
+ and.w #$0003,d7 ; (strip naughty bits)
+ add.w d7,d7 ; d7 = rez index
+
+ moveq #0,d0 ; compute base address
+ move.b dbaseh,d0 ; dbaseh<<16 + dbasel<<8
+ lsl.w #8,d0 ; + middle_of_screen
+ move.b dbasel,d0
+ lsl.l #8,d0
+ move.l d0,a2
+ add.w .middle(pc,d7.w),a2 ; a2 -> base of mem to draw at
+ move.w d6,d0 ; d0 = hoffset * dest width
+ mulu.w .wmult(pc,d7.w),d0
+ add.w d0,a2 ; adjust horizontal position
+
+.3: move.w d3,d2 ; d2 = width - 1 (loop count)
+ move.l a2,a1 ; a1 -> start of line
+.2: move.w (a0)+,d0 ; get form word
+ move.w .nplanes(pc,d7.w),d1 ; d1 = #planes - 1
+.1: move.w d0,(a1)+ ; dump a form word in
+ dbra d1,.1 ; (do more planes)
+ dbra d2,.2 ; (loop for entire line)
+ add.w .width(pc,d7.w),a2 ; a2 -> start of next line
+ dbra d4,.3 ; (loop for entire form)
+ jmp (a6) ; "return" to caller
+
+.middle: dc.w 100*160,100*160,200*80,200*80
+.nplanes: dc.w 3,1,0,0
+.width: dc.w 160,160,80,80
+.wmult: dc.w 8,4,2,2
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE1.S b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE1.S
new file mode 100644
index 0000000..4daf9b2
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE1.S
@@ -0,0 +1,18 @@
+
+;------------------------------------------------------------------------
+; :
+; Example #1 :
+; :
+;------------------------------------------------------------------------
+
+ pea string(pc) ; Cconws(&string)
+ move.w #9,-(sp)
+ trap #1
+ addq #6,sp
+
+ clr.w -(sp) ; Pterm0()
+ trap #1
+ illegal ; "cannot return"
+
+
+string: dc.b "Hello, world!\r\n",0
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE2.S b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE2.S
new file mode 100644
index 0000000..4373e27
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/EXAMPLE2.S
@@ -0,0 +1,15 @@
+
+;------------------------------------------------------------------------
+; :
+; Example #2 :
+; :
+;------------------------------------------------------------------------
+
+ .include atari ; include "atari.s" ST definitions
+
+ Puts #string
+ Pterm0
+
+
+string: dc.b "Hello again, world!\r\n",0
+ \ No newline at end of file
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/IMAGES.S b/DISKS/7800DEV/MADMAC/EXAMPLES/IMAGES.S
new file mode 100644
index 0000000..1364153
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/IMAGES.S
@@ -0,0 +1,80 @@
+* images.s
+ .globl _images
+ .globl _masks
+
+
+_images:
+ dc.l a_i2
+ dc.l a_i1
+ dc.l a_i0
+ dc.l 0 ; end of table
+
+_masks:
+ dc.l a_m2
+ dc.l a_m1
+ dc.l a_m0
+ dc.l 0 ; end of table
+
+
+
+a_i0: dc.l i0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+a_m0: dc.l m0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+a_i1: dc.l i1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+a_m1: dc.l m1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+a_i2: dc.l i2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+a_m2: dc.l m2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
+
+
+
+i0:
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+ dc.w $ffff,$ffff,$ffff,$ffff
+
+m0: dc.w 0,0,0,0,0,0,0,0
+ dc.w 0,0,0,0,0,0,0,0
+
+i1:
+ .dc.w $07E0,$07E0,$07E0,$0000,$1FF8,$1FF8,$1FF8,$0000
+ .dc.w $0FF0,$0FF0,$0FF0,$0000,$47E2,$47E2,$47E2,$0000
+ .dc.w $63C6,$63C6,$63C6,$0000,$F5AF,$F5AF,$F5AF,$0000
+ .dc.w $DA51,$DA51,$DA51,$0000,$9DB5,$9DB5,$9DB5,$0000
+ .dc.w $DDB5,$DDB5,$DDB5,$0000,$DA51,$DA51,$DA51,$0000
+ .dc.w $F5AF,$F5AF,$F5AF,$0000,$63C6,$63C6,$63C6,$0000
+ .dc.w $47E2,$47E2,$47E2,$0000,$0FF0,$0FF0,$0FF0,$0000
+ .dc.w $1FF8,$1FF8,$1FF8,$0000,$07E0,$07E0,$07E0,$0000
+
+m1:
+ .dc.w $ffff-$07E0,$ffff-$1FF8,$ffff-$0FF0,$ffff-$47E2
+ .dc.w $ffff-$63C6,$ffff-$F5AF,$ffff-$DA51,$ffff-$9DB5
+ .dc.w $ffff-$DDB5,$ffff-$DA51,$ffff-$F5AF,$ffff-$63C6
+ .dc.w $ffff-$47E2,$ffff-$0FF0,$ffff-$1FF8,$ffff-$07E0
+
+i2:
+ .dc.w $0000,$0000,$0000,$0000,$0180,$0000,$0000,$0000
+ .dc.w $0180,$0000,$0000,$0240,$0180,$0000,$0000,$0000
+ .dc.w $07E0,$0000,$0000,$0000,$1FF8,$1818,$1B18,$0000
+ .dc.w $2FF4,$2004,$2304,$0000,$4FD2,$4002,$4602,$0000
+ .dc.w $3FDC,$300C,$360C,$0000,$4FD2,$4002,$4602,$0000
+ .dc.w $4FB2,$4812,$4812,$0000,$1768,$1008,$1008,$0000
+ .dc.w $13C8,$1008,$1008,$0000,$1008,$1008,$1008,$0000
+ .dc.w $0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
+
+m2:
+ .dc.w $ffff-$0000,$ffff-$0180,$ffff-$03C0,$ffff-$0180
+ .dc.w $ffff-$07E0,$ffff-$1FF8,$ffff-$2FF4,$ffff-$4FD2
+ .dc.w $ffff-$3FDC,$ffff-$4FD2,$ffff-$4FB2,$ffff-$1768
+ .dc.w $ffff-$13C8,$ffff-$1008,$ffff-$0000,$ffff-$0000
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/INSTMAC.S b/DISKS/7800DEV/MADMAC/EXAMPLES/INSTMAC.S
new file mode 100644
index 0000000..02e1eca
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/INSTMAC.S
@@ -0,0 +1,72 @@
+ .title 'Install MADMAC From AUTO Folder'
+
+;----------------
+;
+; 2-Nov-1986 lmd Hacked it up (we need example programs, right?)
+;
+
+
+;----------------
+;
+; Shrink as small as possible (by relocating to the commandline
+; part of the basepage) and exec MAC.PRG from the root of the
+; boot disk.This example program is for floppy disk users who
+; don't like installing MADMAC manually every time they boot.
+;
+; This leaves a *small* memory fragment, less than $100 bytes.
+;
+; The coding style here is, er . . . bizarre. I suggest the reader
+; treat it as an excercise in paranoia, and not as an example
+; of good coding practice. As jwt sez, "this should only be
+; attempted by experienced software engineers." Or madpersons.
+;
+;
+ bra.w movedown ; branch to shrinker
+BEGIN: lea END(pc),sp ; then come back here and init stack
+ move.l d0,-(sp) ; = amount to keep
+ move.l a1,-(sp) ; -> basepage
+ move.l d1,-(sp) ; push WORD 0x0000 and function number
+ trap #1 ; do Mshrink()
+ add.w #12,sp ; (cleanup)
+
+ clr.l -(sp) ; null enviroment string
+ pea progtail(pc) ; -Q switch
+ pea progpath(pc) ; -> program to exec
+ move.l d7,-(sp) ; subfunc=0, function=Pexec()
+ trap #1
+
+ clr.w -(sp) ; terminate, return code = OK
+ trap #1
+ illegal ; "cannot happen"
+
+
+progpath: dc.b '\\MAC.PRG',0 ; program to exec, in the root dir
+progtail: dc.b '*-q',0 ; command tail (the '*' gets clobbered)
+
+ dcb.b 64,0 ; 64 bytes of user stack
+END: ; end of kept part
+
+
+;----------------
+;
+; Copy code from BEGIN to END into commandline area of basepage;
+; this code (and everything beyond it) is thrown away by an
+; Mshrink() in the kept portion.
+;
+; Returns: d0 = amount of memory to keep;
+; d1 = Mshrink code + word of zero
+; d7 = Pexec code + subfunction zero
+; a1 -> process's basepage
+;
+;
+movedown:
+ move.l 4(sp),a1 ; a1 -> basepage
+ lea $80(a1),a2 ; a2 -> basepage's command tail area
+ lea BEGIN(pc),a0 ; a0 -> start kept portion (right now)
+ move.w #END-BEGIN+1,d0 ; d0 = size (bytes-1) of kept portion
+.1: move.b (a0)+,(a2)+ ; copy a byte
+ dbra d0,.1 ; until we're done
+ move.l #$80+END-BEGIN,d0 ; d0 = amount to keep on Mshrink
+ move.l #$004a0000,d1 ; d1 = Mshrink + word of zero
+ move.l #$004b0000,d7 ; d7 = Pexec + subfunction zero
+ jmp $80(a1) ; jump back to kept portion
diff --git a/DISKS/7800DEV/MADMAC/EXAMPLES/SHIFT.S b/DISKS/7800DEV/MADMAC/EXAMPLES/SHIFT.S
new file mode 100644
index 0000000..9878954
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/EXAMPLES/SHIFT.S
@@ -0,0 +1,139 @@
+;--- Exports:
+ .globl mksh
+
+
+;--- Imports:
+ .globl _images
+ .globl _masks
+
+
+;+
+; Construct shifted images and masks
+;
+; Passed: a1 -> free memory
+;
+;-
+mksh::
+ lea _images,a5
+.1: tst.l (a5)
+ beq.s .2
+ move.l (a5)+,a0
+ bsr mkshimg
+ bra.s .1
+
+.2: lea _masks,a5
+.3: tst.l (a5)
+ beq.s .4
+ move.l (a5)+,a0
+ bsr mkshmsk
+ bra.s .3
+
+.4: rts
+
+
+;+
+; Complete shifted entries in an image table.
+;
+; Passed: a0 -> image table with one aligned image in it
+; a1 -> free memory
+;
+; Returns: table filled in with 15 more (shifted) entries
+; a0 -> next table (probably)
+; a1 -> next location in free memory
+;
+; Uses: d0-d4/a0-a4
+;
+;-
+mkshimg:
+ move.l (a0)+,a3 ; a3 -> original image
+ moveq #1,d2 ; d2 = shift amount {1, 2, .. 15}
+
+.3: move.l a1,(a0)+ ; fill in table address
+ moveq #16-1,d4 ; d4 = scanline count
+ move.l a3,a2 ; a2 -> original image
+
+.4: moveq #0,d1 ; d1 = plane count {0, 2, 4, 6}
+.1: move.w (a2,d1.w),d0
+ lsr.w d2,d0
+ move.w d0,(a1,d1.w)
+ addq.w #2,d1
+ cmp.w #8,d1
+ bne.s .1
+
+ moveq #16,d3 ; d3 = left-shift count
+ sub.w d2,d3 ; = 16 - shiftCount
+ moveq #0,d1 ; d1 = plane count {0, 2, 4, 6}
+.2: move.w (a2,d1.w),d0
+ lsl.w d3,d0
+ move.w d0,8(a1,d1.w)
+ addq.w #2,d1
+ cmp.w #8,d1
+ bne.s .2
+
+ add.w #16,a1 ; bump dest to next free spot
+ addq.w #8,a2 ; bump to next 4-plane entry in src
+ dbra d4,.4 ; do another scanline
+
+ addq.w #1,d2 ; bump shift count
+ cmp.w #16,d2 ; if (shiftCount != 16)
+ bne.w .3 ; loop for more shifted tables
+ rts
+
+
+;+
+; Complete shifted images in a mask table.
+;
+; Passed: a0 -> mask table with one aligned mask in it
+; a1 -> free memory
+;
+; Returns: table filled in with 15 more (shifted) entries
+; a0 -> next table (probably)
+; a1 -> next location in free memory
+;
+; Uses: d0-d5/a0-a4
+;
+;-
+mkshmsk:
+ move.l (a0)+,a3 ; a2 -> original image
+ moveq #2,d1 ; d1 = lmask[], rmask[] index
+ moveq #1,d2 ; d2 = shift amount {1, 2, .. 15}
+
+.3: move.l a1,(a0)+ ; fill in table address
+ moveq #16-1,d4 ; d4 = scanline count
+ move.l a3,a2 ; a2 -> original image
+
+.4: move.w (a2),d0
+ lsr.w d2,d0
+ or.w lmask(pc,d1.w),d0
+ move.w d0,(a1)
+
+ moveq #16,d3 ; d3 = left-shift count
+ sub.w d2,d3 ; = 16 - shiftCount
+ move.w (a2),d0
+ lsl.w d3,d0
+ or.w rmask(pc,d1.w),d0
+ move.w d0,2(a1)
+
+ addq.w #2,a2 ; bump src to next mask entry
+ addq.w #4,a1 ; bump dest to next free spot
+ dbra d4,.4 ; loop for more scanlines
+
+ addq.w #2,d1 ; bump mask table index
+ addq.w #1,d2 ; bump shift count
+ cmp.w #16,d2 ; if (shiftCount != 16)
+ bne.w .3 ; loop for more shifted tables
+ rts
+
+
+lmask: dc.w $0000 ; >> 0
+ dc.w $8000,$c000,$e000,$f000 ; >> 1 (etc.)
+ dc.w $f800,$fc00,$fe00,$ff00
+ dc.w $ff80,$ffc0,$ffe0,$fff0
+ dc.w $fff8,$fffc,$fffe ; >>15
+
+rmask:
+ dc.w $ffff ; << 0
+ dc.w $7fff,$3fff,$1fff,$0fff ; << 1 (etc.)
+ dc.w $07ff,$03ff,$01ff,$00ff
+ dc.w $007f,$003f,$001f,$000f
+ dc.w $0007,$0003,$0001 ; << 15
diff --git a/DISKS/7800DEV/MADMAC/INSTMAC.PRG b/DISKS/7800DEV/MADMAC/INSTMAC.PRG
new file mode 100644
index 0000000..a88a8fb
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/INSTMAC.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/M.PRG b/DISKS/7800DEV/MADMAC/M.PRG
new file mode 100644
index 0000000..fd7605c
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/M.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/MAC.PRG b/DISKS/7800DEV/MADMAC/MAC.PRG
new file mode 100644
index 0000000..73a7b25
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/MAC.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MADMAC/README b/DISKS/7800DEV/MADMAC/README
new file mode 100644
index 0000000..6deb0f7
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/README
@@ -0,0 +1,43 @@
+------------------------------
+FILES ON THE DISTRIBUTION DISK
+------------------------------
+
+ README Distribution disk documentation
+ MAC.PRG Macro assembler
+ ALN.PRG New linker [significantly faster]
+ DOINDEX.PRG Library index file constructor (for ALN)
+ CONV65.PRG 6502 object file converter
+ M.PRG "Quick" MAC.PRG invoker
+ ATARI.S Preliminary Atari ST equates and macros
+ INSTMAC.PRG Executable version of INSTMAC.S
+
+ EXAMPLES\ Example programs
+ ATARI.S Copy of ATARI.S
+ EXAMPLE.S \
+ EXAMPLE1.S ->- Silly example programs
+ EXAMPLE2.S /
+ CODE.S 68000 opcodes (examples)
+ CODE65.S 6502 opcodes (examples)
+ BUGS.S \
+ SHIFT.S ->- another silly example program
+ IMAGES.S /
+ INSTMAC.S Sample MAC installer (silly example)
+
+
+In addition to the distribution disk, you should also have two
+documents: a typeset assembler reference manual and a man page
+for the linker.
+
+MAC and ALN *love* to eat memory. You may have to remove or
+shrink your massive ramdisks and desk accessories.
+
+The example programs in the EXAMPLES directory were assembled
+with the following commandlines:
+
+ mac -p example ==> example.prg
+ mac -p example1 ==> example1.prg
+ mac -p example2 ==> example2.prg
+ mac -p bugs shift images ==> bugs.prg
+ mac -p instmac ==> instmac.prg
+ mac code ==> code.o
+ mac code65 ==> code65.o
diff --git a/DISKS/7800DEV/MADMAC/WAIT.PRG b/DISKS/7800DEV/MADMAC/WAIT.PRG
new file mode 100644
index 0000000..e51e812
--- /dev/null
+++ b/DISKS/7800DEV/MADMAC/WAIT.PRG
Binary files differ
diff --git a/DISKS/7800DEV/MARIA.S b/DISKS/7800DEV/MARIA.S
new file mode 100644
index 0000000..4d2af78
--- /dev/null
+++ b/DISKS/7800DEV/MARIA.S
@@ -0,0 +1,198 @@
+ .6502
+ .SUBTTL "MARIA EQUATES -- ATARI CONFIDENTIAL"
+;************************************************************************
+; THIS DOCUMENT CONTAINS CONFIDENTIAL PROPRIETARY INFORMATION *
+; OF ATARI WHICH MAY NOT BE COPIED, DISCLOSED, OR USED EXCEPT *
+; AS EXPRESSLY AUTHORIZED IN WRITING BY ATARI. *
+;************************************************************************
+;
+; MY MEMORY MAP USAGE OF THE 3600
+;
+; 00-1F TIA REGISTERS
+; 20-3F MARIA REGISTERS
+; 40-FF ZERO PAGE RAM
+; 100-13F SHADOW OF TIA AND MARIA REGISTERS -- USED FOR
+; PUSHING ACCUMULATOR ONTO REGISTERS
+; 140-1FF RAM (STACK) -- SHADOW OF 40-FF
+; 200-27F NOT USED
+; 280-2FF PIA PORTS AND TIMERS
+; 300-17FF NOT USED
+; 1800-203F RAM
+; 2040-20FF SHADOW OF ZERO PAGE RAM
+; 2100-213F RAM
+; 2140-21FF SHADOW OF STACK RAM
+; 2200-27FF RAM
+; 2800-3FFF DUPLICATION OF ADDRESS SPACE 2000-27FF
+; 4000-FF7F UNUSED ADDRESS SPACE
+; FF80-FFF9 RESERVED FOR ENCRYPTION
+; FFFA-FFFF 6502 VECTORS
+
+TIA = $00 ;BASE ADDRESS FOR TIA CHIP
+
+PTCTRL = $01 ;INPUT PORT CONTROL ("VBLANK" IN TIA )
+INPT0 = $08 ;PADDLE CONTROL INPUT 0
+INPT1 = $09 ;PADDLE CONTROL INPUT 1
+INPT2 = $0A ;PADDLE CONTROL INPUT 2
+INPT3 = $0B ;PADDLE CONTROL INPUT 3
+INPT4 = $0C ;PLAYER 0 FIRE BUTTON INPUT
+INPT5 = $0D ;PLAYER 1 FIRE BUTTON INPUT
+AUDC0 = $15 ;AUDIO CONTROL CHANNEL 0
+AUDC1 = $16 ;AUDIO CONTROL CHANNEL 1
+AUDF0 = $17 ;AUDIO FREQUENCY CHANNEL 0
+AUDF1 = $18 ;AUDIO FREQUENCY CHANNEL 1
+AUDV0 = $19 ;AUDIO VOLUME CHANNEL 0
+AUDV1 = $1A ;AUDIO VOLUME CHANNEL 1
+
+;
+;******************************************************************************
+;
+
+MARIA = $20 ;BASE ADDRESS FOR MARIA CHIP
+
+BKGRND = $20 ;BACKGROUND COLOR
+P0C1 = $21 ;PALETTE 0 - COLOR 1
+P0C2 = $22 ; - COLOR 2
+P0C3 = $23 ; - COLOR 3
+WSYNC = $24 ;WAIT FOR SYNC
+P1C1 = $25 ;PALETTE 1 - COLOR 1
+P1C2 = $26 ; - COLOR 2
+P1C3 = $27 ; - COLOR 3
+MSTAT = $28 ;MARIA STATUS
+P2C1 = $29 ;PALETTE 2 - COLOR 1
+P2C2 = $2A ; - COLOR 2
+P2C3 = $2B ; - COLOR 3
+DPPH = $2C ;DISPLAY LIST LIST POINT HIGH BYTE
+P3C1 = $2D ;PALETTE 3 - COLOR 1
+P3C2 = $2E ; - COLOR 2
+P3C3 = $2F ; - COLOR 3
+DPPL = $30 ;DISPLAY LIST LIST POINT LOW BYTE
+P4C1 = $31 ;PALETTE 4 - COLOR 1
+P4C2 = $32 ; - COLOR 2
+P4C3 = $33 ; - COLOR 3
+CHBASE = $34 ;CHARACTER BASE ADDRESS
+P5C1 = $35 ;PALETTE 5 - COLOR 1
+P5C2 = $36 ; - COLOR 2
+P5C3 = $37 ; - COLOR 3
+OFFSET = $38 ;FOR FUTURE EXPANSION HERE - STORE ZER0 HERE
+P6C1 = $39 ;PALETTE 6 - COLOR 1
+P6C2 = $3A ; - COLOR 2
+P6C3 = $3B ; - COLOR 3
+CTRL = $3C ;MARIA CONTROL REGISTER
+P7C1 = $3D ;PALETTE 7 - COLOR 1
+P7C2 = $3E ; - COLOR 2
+P7C3 = $3F ; - COLOR 3
+
+;
+; PIA and TIMER (6532) locations
+;
+
+SWCHA = $0280 ;player and player 1 joysticks
+CTLSWA = $0281 ;I/O CONTROL FOR SWCHA
+
+RESET = 1 ;bits for consle switches
+SELECT = 2
+PAUSE = 8
+SWCHB = $0282 ;console switches
+CTLSWB = $0283 ;I/O CONTROL FOR SWCHB
+
+RAM1 = $1800 ;FIRST SEGMENT OF MEMORY MINUS THE ZP,STACK, AND CHIPS
+RAM2 = $2100 ;FIRST SEGMENT OF MEMORY MINUS THE ZP,STACK, AND CHIPS
+RAM3 = $2200 ;FIRST SEGMENT OF MEMORY MINUS THE ZP,STACK, AND CHIPS
+R1SIZE = ($2040-RAM1) ;SIZE OF THE RAM1 BLOCK
+R2SIZE = ($2140-RAM2) ;SIZE OF THE RAM2 BLOCK
+R3SIZE = ($2800-RAM3) ;SIZE OF THE RAM3 BLOCK
+
+ .subttl "system macros 7800"
+;********************************************************
+; MARIA MACROS FOR EASIER GRAPHICS CONSTRUCTION *
+;********************************************************
+
+;
+;this macro constructs a 4 byte header for display lists
+;
+ .macro header address,palette,width,hpos
+ dc.b \address & $ff
+ dc.b (\palette*$20) | ($1f & -\width)
+ dc.b \address >> 8
+ dc.b \hpos
+ .endm
+;
+;this macro constructs a 5 byte header for display lists
+;
+ .macro xheader address,palette,width,hpos,wm,ind
+
+ dc.b \address & $ff
+ dc.b ((\wm*$80) | $40 | (\ind*$20))
+ dc.b \address >> 8
+ dc.b ((\palette*$20) | ($1F & -\width))
+ dc.b \hpos
+ .endm
+
+;
+;this macro constructs a end-of-display-list header
+;
+ .macro nullhdr
+
+ dc.b 0,0
+ .endm
+
+;
+;this macro constructs a display list entry for the display list list
+;
+ .macro display dli,h16,h8,offset,address
+
+ dc.b ((\dli*$80) | (\h16*$40) | (\h8*$20) | \offset)
+ dc.b \address >> 8
+ dc.b \address & $ff
+ .endm
+
+;
+;this macro loads a palette register with a color
+;
+ .macro paint palnum,colornum,color,lum
+
+ lda #(\color*$10) | \lum
+ sta \bkgrnd | ((\palnum*4) | (\colornum))
+ .endm
+
+;
+;this macro writes to the crtl register
+;
+ckoff = $0 ;normal color
+ckon = $1 ;kill the color
+
+dmaoff = $3 ;turn off dma
+dmaon = $2 ;normal dma
+
+char1b = $0 ;one byte character definition
+char2b = $1 ;two byte character definition
+
+bcoff = $0 ;black border
+bcback = $1 ;background colored border
+
+kangoff = $0 ;transparency
+kangon = $1 ;"kangaroo" mode : no transparency!
+
+mode1 = $0 ;160x2 or 160x4 modes
+modebd = $2 ;320b or 320d modes
+modeac = $3 ;320a or 320c modes
+
+ .macro screen ck,dma,cw,bc,km,mode
+ lda #((\ck*$80) | (\dma*$20) | (\cw*$10) | (\bc*8) | (\km*4)|\mode)
+ sta CTRL
+ .endm
+
+ .macro dppload adr
+ lda #\adr & $ff
+ sta DPPL
+ sta sdppl
+ lda #\adr >> 8
+ sta DPPH
+ sta sdpph
+ .endm
+
+;********************************************************
+; end of the system macros definitions *
+;********************************************************
+
+ \ No newline at end of file
diff --git a/DISKS/7800DEV/ME.TTP b/DISKS/7800DEV/ME.TTP
new file mode 100644
index 0000000..e229bcd
--- /dev/null
+++ b/DISKS/7800DEV/ME.TTP
Binary files differ
diff --git a/DISKS/7800DEV/README2.DOC b/DISKS/7800DEV/README2.DOC
new file mode 100644
index 0000000..62206f8
--- /dev/null
+++ b/DISKS/7800DEV/README2.DOC
@@ -0,0 +1,23 @@
+*.PRG files may be run by themselves if they have been INSTALLed
+as "Tos-Takes-Parameters" programs. Find INSTALL in one of the
+options at the top of the desktop screen.
+
+Feel free to telephone John Feagans at Atari (U.S.) at area code
+(408) 745-4923 any time you have a question about using the
+software. He wrote the download program and the transfer rom
+code. He's the one who did not write any support documentation
+to go with his software.
+
+An explanation as to what all the programs on this disk do:
+
+ 40COL.S Source code for a short 7800 program
+ ASM.BAT Submit file for the batch utility
+ BATCH.TTP Batch utility: executes programs in submit file
+ CONV65.PRG Converts memory image to "S Records"
+ DOWNLOAD.PRG Downloads code to the 7800
+ K.TTP "Kermit" - for communication between computers
+ MARIA.S Recommended 7800 equates file
+ WAIT.PRG Allows messages to remain on screen until <CR>
+ MAC.PRG Assembler (serialized in your name)
+ ME.TTP MicroEmacs editor
+
diff --git a/DISKS/7800DEV/READ_ME.DOC b/DISKS/7800DEV/READ_ME.DOC
new file mode 100644
index 0000000..e85a52b
--- /dev/null
+++ b/DISKS/7800DEV/READ_ME.DOC
@@ -0,0 +1,106 @@
+06601030305800
+9[...................................................]001
+ 2600/7800 DEVELOPMENT KIT
+
+
+ CARE AND FEEDING INSTRUCTIONS
+
+
+
+A full, complete 2600/7800 development system includes the following:
+
+HARDWARE:
+
+ 520ST or 1040ST COMPUTER or 520STFM (w/ built-in drive)
+ SH204 HARD DISK
+ SF354 or SF314 FLOPPY DISK (not incl. w/ 520STFM or 1040ST)
+ SM124 or SC1224 MONITOR
+ 7800 GAME MACHINE - O.S. ROM REPLACED BY TRANSFER ROM ASSEMBLY
+ CABLE
+ RAM CARTRIDGE
+ TELEVISION (notsuppliedbyAtari)
+ EPROM CARTRIDGE (FOR APPROPRIATE GAME SYSTEM)
+
+SOFTWARE:
+
+ DEVELOPMENT KIT DISK:
+ 40COL.S
+ ASM.BAT
+ BATCH.TTP
+ CONV65.PRG
+ DOWNLOAD.PRG
+ K.TTP
+ MAC.PRG (SERIALIZED)
+ MARIA.S
+ ME.TTP
+ WAIT.PRG
+ Also included: *
+ ALN.PRG
+ ATARI.S
+ DOINDEX.PRG
+ INSTMAC.PRG
+ M.PRG
+ (various "readme" files)
+ (MADMAC "EXAMPLES" folder)
+
+ HARD DISK BOOT DISK (COMES WITH HARD DISK DRIVE)
+
+DOCUMENTATION FOR 2600 DEVELOPMENT:
+
+ ASSEMBLER MANUAL
+ EDITOR MANUAL
+ STELLA (2600) PROGRAMMER'S GUIDE
+ 2600 GAME STANDARDS AND PROCEDURES
+ 7800 SUPER CART SPEC
+ "USING THE SUPERCART... FOR DEVELOPMENT"
+ SARA SPEC
+
+DOCUMENTATION FOR 7800 DEVELOPMENT:
+
+ ASSEMBLER MANUAL
+ EDITOR MANUAL
+ 7800 PROGRAMMING GUIDE
+ MARIA SPEC
+ MARIA DIGEST (SHORT AND SUPERSHORT VERSIONS)
+ STELLA (2600) PROGRAMMER'S GUIDE
+ 7800 GAME STANDARDS AND PROCEDURES
+ 7800 SUPER CART SPEC
+ "USING THE SUPERCART... FOR DEVELOPMENT"
+
+Set up the ST computer per its instructions.
+If your 7800 has not been equipped with transfer ROM assembly,
+ you must install it according to the following instructions:
+ To open up the 7800, unscrew the bottom. Lift the shielded
+ PCB from the plastic housing. Remove RF shield by twisting
+ tabs. Refer to attached sketch of PCB for position of OS
+ rom. Remove OS rom in easiest manner. If you have older
+ 7800, simply pull rom from its socket. If you have newer
+ 7800, clip the rom pins and remove solder from PCB holes.
+ Install transfer rom, noting correct pin 1 position on
+ attached sketch. Put 7800 back together if desired and/or
+ possible. Note that it will be easier to remember which
+ buttons are Pause, Reset, and Select if plastic housing is
+ in place.
+Connect 7800 to power supply, attach 7800 to TV set.
+Attach custom transfer cable to printer port of ST and to the
+ joystick ports of 7800. You will probably want to make a
+ switchbox for the cable, so that you won't have to
+ constantly remove the cable to plug in a joystick, and vice
+ versa.
+If your supercart RAM card has not been equipped with a Write-Enable
+ switch, you will need to do that. See supercart schematic
+ (if you do not have one and need one, call Tom Sloper).
+ Put as much RAM as you will need on the 1-meg ROM emulator.
+ It is set up for (4) 256K bits RAM chips.
+Put the RAM card in the cartridge port (chips to the rear).
+
+And off you go!
+
+The 6502 cross-assembler is proprietary. Your serial number is
+ registered in your name. Pirating is a no-no!
+
+If there are any questions regarding the use of the software or
+ hardware, call John Feagans at Atari. (408) 745-4923
+With any other problems, call Tom Sloper. (408) 745-4874
+
+tas 6/17/87
diff --git a/DISKS/A.BAT b/DISKS/A.BAT
new file mode 100644
index 0000000..4d19a8f
--- /dev/null
+++ b/DISKS/A.BAT
@@ -0,0 +1,4 @@
+MAC GAME.S
+CONV65 GAME.O
+DOWNLOAD GAME.SR
+wait
diff --git a/DISKS/ASM.BAT b/DISKS/ASM.BAT
new file mode 100644
index 0000000..257fd9b
--- /dev/null
+++ b/DISKS/ASM.BAT
@@ -0,0 +1,6 @@
+MAC X.S
+MAC XDTA.S
+CONV65 X.O
+CONV65 -ZC000 XDTA.O
+DOWNLOAD XDTA.SR XBANKSW.SR X.SR
+wait
diff --git a/DISKS/BASIC.BUF b/DISKS/BASIC.BUF
new file mode 100644
index 0000000..b1f5fbe
--- /dev/null
+++ b/DISKS/BASIC.BUF
@@ -0,0 +1,24 @@
+440 GOTO 180
+450 REM *** REDRAW SCREEN ***
+460 CLEARW 2
+510 HP=1:VP=1:C=1
+520 MC=B(C)
+530 C=C+1
+540 HP=HP+1
+550 IF HP=76 THEN HP=1:VP=VP+1
+560 IF VP=81 THEN RETURN
+570 IF MC=0 THEN GOTO 520
+580 VG=VS*VP:HG=HP*HS
+590 HE=HG+(HS-1)
+600 MC=B(C)
+610 IF MC=1 THEN MC=C1
+620 IF MC=2 THEN MC=C2
+630 IF MC=3 THEN MC=C3
+640 COLOR 1,6,MC,0,0
+650 GOSUB 810
+660 GOTO 520
+670 REM *** CLEAR SCREEN ***
+680 A=0
+690 FOR X=1 TO 6400
+700 B(X)=C0
+710 NEXT X
diff --git a/DISKS/BASIC.PRG b/DISKS/BASIC.PRG
new file mode 100644
index 0000000..6b5c2fa
--- /dev/null
+++ b/DISKS/BASIC.PRG
Binary files differ
diff --git a/DISKS/BASIC.RSC b/DISKS/BASIC.RSC
new file mode 100644
index 0000000..b80c45d
--- /dev/null
+++ b/DISKS/BASIC.RSC
Binary files differ
diff --git a/DISKS/BASIC/BASIC.BUF b/DISKS/BASIC/BASIC.BUF
new file mode 100644
index 0000000..b1f5fbe
--- /dev/null
+++ b/DISKS/BASIC/BASIC.BUF
@@ -0,0 +1,24 @@
+440 GOTO 180
+450 REM *** REDRAW SCREEN ***
+460 CLEARW 2
+510 HP=1:VP=1:C=1
+520 MC=B(C)
+530 C=C+1
+540 HP=HP+1
+550 IF HP=76 THEN HP=1:VP=VP+1
+560 IF VP=81 THEN RETURN
+570 IF MC=0 THEN GOTO 520
+580 VG=VS*VP:HG=HP*HS
+590 HE=HG+(HS-1)
+600 MC=B(C)
+610 IF MC=1 THEN MC=C1
+620 IF MC=2 THEN MC=C2
+630 IF MC=3 THEN MC=C3
+640 COLOR 1,6,MC,0,0
+650 GOSUB 810
+660 GOTO 520
+670 REM *** CLEAR SCREEN ***
+680 A=0
+690 FOR X=1 TO 6400
+700 B(X)=C0
+710 NEXT X
diff --git a/DISKS/BASIC/BASIC.PRG b/DISKS/BASIC/BASIC.PRG
new file mode 100644
index 0000000..d63493c
--- /dev/null
+++ b/DISKS/BASIC/BASIC.PRG
Binary files differ
diff --git a/DISKS/BASIC/BASIC.RSC b/DISKS/BASIC/BASIC.RSC
new file mode 100644
index 0000000..9b21953
--- /dev/null
+++ b/DISKS/BASIC/BASIC.RSC
Binary files differ
diff --git a/DISKS/BASIC/BASIC.WRK b/DISKS/BASIC/BASIC.WRK
new file mode 100644
index 0000000..3d6308d
--- /dev/null
+++ b/DISKS/BASIC/BASIC.WRK
@@ -0,0 +1,364 @@
+10 DIM P%(15),P$(15)
+20 DIM B(7000):HM=8:VM=8
+30 FULLW 2
+40 CLEARW 2
+50 PRINT" **** PLEASE WAIT *****
+60 GOSUB 510
+70 CLEARW 2
+80 HP=1:Z=1:Q=1
+90 VP=1:SW=1:CN=0:XP=0
+100 HS=2:CUR=1
+110 VS=2:HT=1:VT=1
+120 C0=0:C1=1:C2=2:C3=3:C4=4
+130 GOSUB 860
+140 GOSUB 600
+150 HG=HS*HP
+160 VG=VS*VP
+170 HE=HG+(HS-1)
+180 COLOR 1,6,CL,0,0
+190 GOSUB 680
+200 REM **** LOOP **********
+210 GOSUB 2810
+220 REM XY 0,0
+230 REM T HP;VP;STATE
+240 IF STATE=1 AND CV=4 THEN SUBS=1
+250 IF CV=4 AND TEMP=0 THEN GOTOXY 0,16:PRINT"DO FUNCTION":TEMP=1
+260 IF CV=0 AND TEMP=1 THEN GOTOXY 0,16:PRINT" ":TEMP=0
+270 IF SUBS=1 THEN GOSUB 3050
+280 IF STATE=2 THEN CV=CV+1
+290 IF CV=5 THEN CV=0
+300 IF STATE=2 AND CV<>4 THEN GOSUB 3390
+310 IF STATE=1 AND CV<>4 THEN GOSUB 3130
+320 GOTO 200
+330 REM *** REDRAW SCREEN ***
+340 CLEARW 2
+350 GOSUB 860
+360 HP=0:VP=1:C=1
+370 MC=B(C)
+380 C=C+1:HP=HP+1
+390 IF HP=HM+1 THEN HP=1:VP=VP+1
+400 IF VP=VM+1 THEN HP=1:VP=1:CUR=1:RETURN
+410 IF MC=0 THEN 370
+420 HG=HP*HS:VG=VP*VS
+430 HE=HG+(HS-1)
+440 IF MC=1 THEN MC=C1:GOTO 480
+450 IF MC=2 THEN MC=C2:GOTO 480
+460 IF MC=3 THEN MC=C3:GOTO 480
+470 IF MC=4 THEN MC=C4:GOTO 480
+480 COLOR 1,6,MC,0,0
+490 GOSUB 680
+500 GOTO 370
+510 REM *** CLEAR SCREEN ***
+520 A=0
+530 REM Y=HM*VM
+540 FOR X=1 TO 6400
+550 B(X)=A
+560 NEXT X
+570 RETURN
+580 GOTOXY 0,16:PRINT" "
+590 RETURN
+600 REM *** SET WIDTH ***
+610 POKE CONTRL,16
+620 POKE CONTRL+2,1
+630 POKE CONTRL+6,0
+640 POKE PTSIN,2
+650 POKE PTSIN+2,0
+660 VDISYS(0)
+670 RETURN
+680 REM *** DRAW LINES ***
+690 POKE CONTRL,6
+700 POKE CONTRL+2,2
+710 POKE CONTRL+6,0
+720 POKE PTSIN,HG
+730 POKE PTSIN+2,VG+24
+740 POKE PTSIN+4,HE
+750 POKE PTSIN+6,VG+24
+760 VDISYS(0)
+770 POKE CONTRL,6
+780 POKE CONTRL+2,2
+790 POKE CONTRL+6,0
+800 POKE PTSIN,HG
+810 POKE PTSIN+2,VG+25
+820 POKE PTSIN+4,HE
+830 POKE PTSIN+6,VG+25
+840 VDISYS(0)
+850 RETURN
+860 REM *** DRAW BACKGROUND ***
+870 COLOR 1,C0,C0,1,1
+880 LINEF 0,0,300,0
+890 LINEF 0,0,0,160
+900 LINEF 300,0,300,160
+910 LINEF 0,160,300,160
+920 FILL 150,80
+930 RETURN
+940 REM *** LOAD FILE ***
+950 GOTOXY 0,16
+960 INPUT"FILENAME";F$
+970 GOTOXY 0,16
+980 S$="LOADING FILE "+F$
+990 PRINT S$
+1000 OPEN "I",#1,F$+".DEF"
+1010 INPUT#1,HM
+1020 INPUT#1,VM
+1030 N=HM*VM
+1040 FOR X=1 TO N
+1050 INPUT#1,C
+1060 B(X)=C
+1070 NEXT
+1080 CLOSE #1
+1090 GOSUB 330
+1100 RETURN
+1110 REM *** SAVE FILE ***
+1120 GOTOXY 0,16
+1130 INPUT"FILENAME";F$
+1140 GOTOXY 0,16
+1150 S$="SAVING FILE "+F$
+1160 PRINT S$
+1170 OPEN "O",#1,F$+".DEF"
+1180 PRINT#1,HM
+1190 PRINT#1,VM
+1200 N=HM*VM
+1210 FOR X=1 TO N
+1220 C=B(X)
+1230 PRINT#1,C
+1240 NEXT
+1250 CLOSE #1
+1260 RETURN
+1270 REM *** ACTUAL SCREEN ***
+1280 CLEARW 2
+1290 GOSUB 860
+1300 HP=0:VP=1:C=1
+1310 MC=B(C)
+1320 C=C+1:HP=HP+1
+1330 IF HP=HM+1 THEN HP=1:VP=VP+1
+1340 IF VP=VM+1 THEN 1450
+1350 IF MC=0 THEN 1310
+1360 HG=HP:VG=VP
+1370 HE=HG
+1380 IF MC=1 THEN MC=C1:GOTO 1420
+1390 IF MC=2 THEN MC=C2:GOTO 1420
+1400 IF MC=3 THEN MC=C3:GOTO 1420
+1410 IF MC=4 THEN MC=C4:GOTO 1420
+1420 COLOR 1,6,MC,0,0
+1430 GOSUB 1490
+1440 GOTO 1310
+1450 REM *** WAIT FOR CR SUB ***
+1460 Z=INP(2)
+1470 IF Z <> 13 THEN GOTO 1460
+1480 GOSUB 330:RETURN
+1490 REM *** DRAW LINE ***
+1500 POKE CONTRL,6
+1510 POKE CONTRL+2,2
+1520 POKE CONTRL+6,0
+1530 POKE PTSIN,HG
+1540 POKE PTSIN+2,VG+24
+1550 POKE PTSIN+4,HE
+1560 POKE PTSIN+6,VG+24
+1570 VDISYS(0)
+1580 RETURN
+1590 REM *** CONVERT TO 7800 ***
+1600 B0PNT=8:B1PNT=128:A=0
+1610 BS=HM/4:C=1:S=HM*VM:X$="":L=1
+1620 OPEN "O",#1,F$+"1"+".S"
+1630 FOR F=1 TO VM
+1640 FOR G=1 TO BS
+1650 FOR H=1 TO 4
+1660 E=B(C)
+1670 IF E=3 THEN B0=1:B1=1
+1680 IF E=2 THEN B0=0:B1=1
+1690 IF E=1 THEN B0=1:B1=0
+1700 IF E=0 THEN B0=0:B1=0
+1710 D=(B0*B0PNT)+(B1*B1PNT)
+1720 B0PNT=B0PNT/2:B1PNT=B1PNT/2
+1730 A=A+D
+1740 C=C+1
+1750 NEXT H
+1760 B0PNT=8:B1PNT=128
+1770 REM *** SETUP HEX ***
+1780 J=INT(A/16):H$=""
+1790 S=A-(J*16)
+1800 H=J
+1810 GOSUB 1940
+1820 T$=H$
+1830 H=S
+1840 GOSUB 1940
+1850 H$="$"+T$+H$+","
+1860 X$=X$+H$:A=0
+1870 IF L=8 THEN GOSUB 3540:L=0
+1880 L=L+1
+1890 NEXT G
+1900 GOSUB 3450:L=1
+1910 NEXT F
+1920 CLOSE #1
+1930 RETURN
+1940 REM *** HEX CONVERSION ***
+1950 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+1960 IF H=10 THEN H$="A"
+1970 IF H=11 THEN H$="B"
+1980 IF H=12 THEN H$="C"
+1990 IF H=13 THEN H$="D"
+2000 IF H=14 THEN H$="E"
+2010 IF H=15 THEN H$="F"
+2020 RETURN
+2030 REM *** DISPLAY PRVIOUS ***
+2040 AT=(((VT-1)*HM)+HT)
+2050 T=B(AT)
+2060 IF T=0 THEN T=C0:GOTO 2110
+2070 IF T=1 THEN T=C1:GOTO 2110
+2080 IF T=2 THEN T=C2:GOTO 2110
+2090 IF T=3 THEN T=C3:GOTO 2110
+2100 IF T=4 THEN T=C4:GOTO 2110
+2110 HG=HS*HT:HE=HG+(HS-1)
+2120 VG=VS*VT
+2130 COLOR 1,6,T,0,0
+2140 GOSUB 680
+2150 RETURN
+2160 REM *** COLOR CHANGE ***
+2170 GOTOXY 0,16
+2180 INPUT"GRAY/BLUE=Y - GREEN/BROWN=N";T$
+2190 GOTOXY 0,16:PRINT" "
+2200 IF T$<>"Y" THEN 2280
+2210 RESTORE 2220
+2220 DATA 642,555,000,006,005,000,004,000
+2230 DATA 000,000,000,000,000,000,000,000
+2240 FOR A=0 TO 15
+2250 READ P$(A)
+2260 NEXT A
+2270 GOTO 2360
+2280 REM *********************
+2290 RESTORE 2300
+2300 DATA 642,555,420,060,050,000,777,000
+2310 DATA 000,000,000,000,000,000,000,000
+2320 FOR V=0 TO 15
+2330 READ P$(V)
+2340 NEXT V
+2350 REM ******************
+2360 RESTORE 2370
+2370 DATA 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13
+2380 FOR Z=0 TO 15 STEP 1
+2390 READ B
+2400 GOSUB 2460
+2410 NEXT Z
+2420 DEFDBL X:X=1114
+2430 POKE X,VARPTR(P%(0))
+2440 RETURN
+2450 REM *** CONVERT SUB ***
+2460 P1%=VAL(LEFT$(P$(Z),1))*256
+2470 P2%=VAL(MID$(P$(Z),2,1))*16
+2480 P3%=VAL(RIGHT$(P$(Z),1))
+2490 P%(B)=P1%+P2%+P3%
+2500 RETURN
+2510 REM *** IINS/DEL HOR ***
+2520 FOR L=E TO S STEP C
+2530 FOR P=1 TO HM
+2540 Y=(L*HM)+P:Z=Y+OFF
+2550 A=B(Y):B(Z)=A
+2560 NEXT P
+2570 NEXT L
+2580 FOR O= 1 TO HM
+2590 X=((L+N)*HM)+O
+2600 B(X)=0
+2610 NEXT O:GOSUB 340:RETURN
+2620 REM *** INSERT ***
+2630 E=VP:S=VM-1:OFF=-HM:C=1:N=-1
+2640 GOSUB 2510
+2650 RETURN
+2660 REM *** DELETE ***
+2670 E=VM-1:S=VP-1:OFF=HM:C=-1:N=1
+2680 GOSUB 2510
+2690 RETURN
+2700 REM *** XCHANGE ***
+2710 GOTOXY 0,16
+2720 INPUT"CHANGE VALUE ";R
+2730 GOTOXY 0,16:PRINT" "
+2740 GOTOXY 0,16
+2750 INPUT"TO VALUE";W
+2760 GOTOXY 0, 16:PRINT" "
+2770 N=HM*VM
+2780 FOR U=1 TO N
+2790 IF B(U)=R THEN B(U)=W
+2800 NEXT U:GOSUB 330:RETURN
+2810 REM *** READ MOUSE ***
+2820 HT=HP:VT=HP
+2830 POKE CONTRL,124
+2840 POKE CONTRL+2,0
+2850 POKE CONTRL+6,0
+2860 VDISYS(0)
+2870 STATE=PEEK(INTOUT)
+2880 HP=PEEK(PTSOUT)
+2890 VP=PEEK(PTSOUT+2)
+2900 IF VP < 28 THEN VP=28
+2910 IF VP > 160 THEN VP=160
+2920 VP=VP-27
+2930 IF HP>300 THEN HP=300
+2940 IF HP<2 THEN HP=2
+2950 HP=HP-1
+2960 VP=VP/2
+2970 T=VP-INT(VP)
+2980 IF T>0 THEN VP=INT(VP)+1
+2990 HP=HP/2:T=HP-INT(HP)
+3000 IF T>0 THEN HP=INT(HP)+1
+3010 REM P+1:VP=VP+1
+3020 IF HP>HM THEN HP=HM
+3030 IF VP>VM THEN VP=VM
+3040 RETURN
+3050 REM *** SUBS ****
+3060 IF D=11 THEN D=1
+3070 IF STATE=1 THEN GOTOXY 0,16:D=D+1:PRINT" "
+3080 GOTOXY 0,16
+3090 ON D GOSUB 3190,3200,3210,3220,3230,3240,3250,3260,3270,3280
+3100 IF STATE=2 THEN ON D GOSUB 1110,940,1270,1590,2160,2660,2620,2700,3290,580
+3110 IF STATE=2 THEN D=0:SUBS=0
+3120 RETURN
+3130 REM *** PLOT ***
+3140 HG=HS*HP:VG=VS*VP
+3150 HE=HG+(HS-1)
+3160 A=(((VP-1)*HM)+HP)
+3170 B(A)=CV:COLOR 1,6,CV,0,0:GOSUB 680
+3180 RETURN
+3190 PRINT"SAVE FILE":RETURN
+3200 PRINT"LOAD FILE":RETURN
+3210 PRINT"ACTUAL SIZE":RETURN
+3220 PRINT"7800 CONVERT":RETURN
+3230 PRINT"COLOR CHANGE":RETURN
+3240 PRINT"INSERT":RETURN
+3250 PRINT"DELETE":RETURN
+3260 PRINT"EXCHANGE VALUES":RETURN
+3270 PRINT"DIMENSIONS":RETURN
+3280 PRINT"EXIT":RETURN
+3290 REM *** DIMENSIONS ***
+3300 GOTOXY 0,16
+3310 PRINT"HSIZE,VSIZE";HM;VM
+3320 X=INP(2):GOTOXY 0,16
+3330 INPUT"HORIZONTAL SIZE ";HM
+3340 GOTOXY 0,16:PRINT" "
+3350 GOTOXY 0,16
+3360 INPUT"VERTICAL SIZE";VM
+3370 GOTOXY 0,16:PRINT" "
+3380 RETURN
+3390 REM *** COLOR BAR ***
+3400 COLOR 1,6,CV,0,0
+3410 LINEF 0,160,300,160
+3420 LINEF 0,161,300,161
+3430 RETURN
+3440 REM *** WRITE FILE ***
+3450 IF (F+1)>9 THEN GOSUB 3580:GOTO 3470
+3460 Z$=STR$(F+1):Z$=MID$(Z$,2,1)
+3470 Z$=F$+Z$
+3480 X$=" .DC.B "+X$
+3490 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3500 PRINT #1,X$
+3510 CLOSE #1:X$=""
+3520 OPEN"O",#1,Z$+".S"
+3530 RETURN
+3540 X$=" .DC.B "+X$
+3550 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3560 PRINT #1,X$:X$=""
+3570 RETURN
+3580 REM *** STRING CONV ***
+3590 F1=INT((F+1)/10)
+3600 F2=(F+1)-(F1*10)
+3610 Z$=STR$(F1):Z$=MID$(Z$,2,1)
+3620 G$=STR$(F2):G$=MID$(G$,2,1)
+3630 Z$=Z$+G$:RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/BRDG.DEF b/DISKS/BASIC/BRDG.DEF
new file mode 100644
index 0000000..6bbddbd
--- /dev/null
+++ b/DISKS/BASIC/BRDG.DEF
@@ -0,0 +1,1603 @@
+ 20
+ 80
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/COLORS.BAS b/DISKS/BASIC/COLORS.BAS
new file mode 100644
index 0000000..2e9822d
--- /dev/null
+++ b/DISKS/BASIC/COLORS.BAS
@@ -0,0 +1,15 @@
+10 REM *** COLOR CHANGE ***
+20 DIM P%(1)
+30 Y=INP(2)
+40 IF Y=82 THEN R%=R%+1
+50 IF Y=71 THEN G%=G%+1
+60 IF Y=66 THEN B%=B%+1
+70 IF R%=8 THEN R%=0
+80 IF G%=8 THEN G%=0
+90 IF B%=8 THEN B%=0
+100 P%(0)=(R%*256)+(G%*16)+B%
+120 DEFDBL X:X=1114
+130 POKE X,VARPTR(P%(0))
+140 PRINT R%;G%;B%
+150 GOTO 30
+ \ No newline at end of file
diff --git a/DISKS/BASIC/CONTROL.ACC b/DISKS/BASIC/CONTROL.ACC
new file mode 100644
index 0000000..c7f2873
--- /dev/null
+++ b/DISKS/BASIC/CONTROL.ACC
Binary files differ
diff --git a/DISKS/BASIC/DDJO.DEF b/DISKS/BASIC/DDJO.DEF
new file mode 100644
index 0000000..7c84486
--- /dev/null
+++ b/DISKS/BASIC/DDJO.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 2
+ 1
+ 1
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 2
+ 1
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 1
+ 1
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 0
+ 1
+ 2
+ 2
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 1
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 4
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ \ No newline at end of file
diff --git a/DISKS/BASIC/DJOE.DEF b/DISKS/BASIC/DJOE.DEF
new file mode 100644
index 0000000..3dbeda9
--- /dev/null
+++ b/DISKS/BASIC/DJOE.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 3
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 1
+ 1
+ 3
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ \ No newline at end of file
diff --git a/DISKS/BASIC/DMAN.DEF b/DISKS/BASIC/DMAN.DEF
new file mode 100644
index 0000000..beb39b8
--- /dev/null
+++ b/DISKS/BASIC/DMAN.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ \ No newline at end of file
diff --git a/DISKS/BASIC/EDIT.BAS b/DISKS/BASIC/EDIT.BAS
new file mode 100644
index 0000000..7be78f2
--- /dev/null
+++ b/DISKS/BASIC/EDIT.BAS
@@ -0,0 +1,210 @@
+10 DIM B(7000)
+20 FULLW 2
+30 CLEARW 2
+40 PRINT" **** PLEASE WAIT *****
+50 GOSUB 770
+60 CLEARW 2
+70 HP=1:Z=1
+80 VP=1
+90 HS=4
+100 VS=2
+110 INPUT"HORIZONTAL SIZE";HM
+120 INPUT"VERTICAL SIZE";VM
+130 INPUT"BACKGROUND COLOR";C0
+140 INPUT"COLOR 1";C1
+150 INPUT"COLOR 2";C2
+160 INPUT"COLOR 3";C3
+170 CLEARW 2
+180 GOSUB 1100
+190 GOSUB 840
+200 HG=HS*HP
+210 VG=VS*VP
+220 HE=HG+(HS-1)
+230 COLOR 1,6,CL,0,0
+240 GOSUB 920
+250 X=INP(2)
+260 IF X=32 THEN CN=CN+1
+270 IF CN=4 THEN CN=0
+280 IF CN=0 THEN CL=C0
+290 IF CN=1 THEN CL=C1
+300 IF CN=2 THEN CL=C2
+310 IF CN=3 THEN CL=C3
+320 IF X <> 67 THEN 350
+330 GOSUB 1740
+340 GOSUB 610
+350 IF X <> 65 THEN 380
+360 GOSUB 1420
+370 GOSUB 610
+380 IF X <> 82 THEN 400
+390 GOSUB 610
+400 IF X <> 76 THEN 440
+410 INPUT"FILENAME";F$
+420 GOSUB 1190
+430 GOSUB 610:HP=1:VP=1
+440 IF X <> 83 THEN 480
+450 INPUT"FILENAME";F$
+460 GOSUB 1310
+470 GOSUB 610:HP=1:VP=1
+480 IF X=208 THEN VP=VP+1
+490 IF X=200 THEN VP=VP-1
+500 IF X=205 THEN HP=HP+1
+510 IF X=203 THEN HP=HP-1
+520 IF HP=0 THEN HP=HM
+530 IF HP=HM+1 THEN HP=1
+540 IF VP=VM+1 THEN VP=1
+550 IF VP=0 THEN VP=VM
+560 A=(((VP-1)*HM)+HP)
+570 B(A)=CN
+580 REM T A;VP;HP
+590 GOTO 200
+600 REM *** REDRAW SCREEN ***
+610 CLEARW 2
+620 GOSUB 1100
+630 HP=0:VP=1:C=1
+640 MC=B(C)
+650 C=C+1:HP=HP+1
+660 IF HP=HM+1 THEN HP=1:VP=VP+1
+670 IF VP=VM+1 THEN RETURN
+680 IF MC=0 THEN 640
+690 HG=HP*HS:VG=VP*VS
+700 HE=HG+(HS-1)
+710 IF MC=1 THEN MC=C1:GOTO 740
+720 IF MC=2 THEN MC=C2:GOTO 740
+730 IF MC=3 THEN MC=C3:GOTO 740
+740 COLOR 1,6,MC,0,0
+750 GOSUB 920
+760 GOTO 640
+770 REM *** CLEAR SCREEN ***
+780 A=0
+790 REM Y=HM*VM
+800 FOR X=1 TO 6400
+810 B(X)=A
+820 NEXT X
+830 RETURN
+840 REM *** SET WIDTH ***
+850 POKE CONTRL,16
+860 POKE CONTRL+2,1
+870 POKE CONTRL+6,0
+880 POKE PTSIN,2
+890 POKE PTSIN+2,0
+900 VDISYS(0)
+910 RETURN
+920 REM *** DRAW LINES ***
+930 POKE CONTRL,6
+940 POKE CONTRL+2,2
+950 POKE CONTRL+6,0
+960 POKE PTSIN,HG
+970 POKE PTSIN+2,VG+24
+980 POKE PTSIN+4,HE
+990 POKE PTSIN+6,VG+24
+1000 VDISYS(0)
+1010 POKE CONTRL,6
+1020 POKE CONTRL+2,2
+1030 POKE CONTRL+6,0
+1040 POKE PTSIN,HG
+1050 POKE PTSIN+2,VG+25
+1060 POKE PTSIN+4,HE
+1070 POKE PTSIN+6,VG+25
+1080 VDISYS(0)
+1090 RETURN
+1100 REM *** DRAW BACKGROUND ***
+1110 COLOR 1,C0,C0,1,1
+1120 LINEF 0,0,300,0
+1130 LINEF 0,0,0,160
+1140 LINEF 300,0,300,160
+1150 LINEF 0,160,300,160
+1160 FILL 150,80
+1170 RETURN
+1180 REM *** LOAD FILE ***
+1190 CLEARW 2
+1200 S$="LOADING FILE "+F$
+1210 PRINT S$
+1220 OPEN "I",#1,F$+".DEF"
+1230 N=HM*VM
+1240 FOR X=1 TO N
+1250 INPUT#1,C
+1260 B(X)=C
+1270 NEXT
+1280 CLOSE #1
+1290 RETURN
+1300 REM *** SAVE FILE ***
+1310 CLEARW 2
+1320 S$="SAVING FILE "+F$
+1330 PRINT S$
+1340 OPEN "O",#1,F$+".DEF"
+1350 N=HM*VM
+1360 FOR X=1 TO N
+1370 C=B(X)
+1380 PRINT#1,C
+1390 NEXT
+1400 CLOSE #1
+1410 RETURN
+1420 REM *** ACTUAL SCREEN ***
+1430 CLEARW 2
+1440 GOSUB 1100
+1450 HP=0:VP=1:C=1
+1460 MC=B(C)
+1470 C=C+1:HP=HP+1
+1480 IF HP=HM+1 THEN HP=1:VP=VP+1
+1490 IF VP=VM+1 THEN 1590
+1500 IF MC=0 THEN 1460
+1510 HG=HP*2:VG=VP
+1520 HE=HG+1
+1530 IF MC=1 THEN MC=C1:GOTO 1560
+1540 IF MC=2 THEN MC=C2:GOTO 1560
+1550 IF MC=3 THEN MC=C3:GOTO 1560
+1560 COLOR 1,6,MC,0,0
+1570 GOSUB 1630
+1580 GOTO 1460
+1590 REM *** WAIT FOR CR SUB ***
+1600 Z=INP(2)
+1610 IF Z <> 13 THEN GOTO 1600
+1620 RETURN
+1630 REM *** DRAW LINE ***
+1640 POKE CONTRL,6
+1650 POKE CONTRL+2,2
+1660 POKE CONTRL+6,0
+1670 POKE PTSIN,HG
+1680 POKE PTSIN+2,VG+24
+1690 POKE PTSIN+4,HE
+1700 POKE PTSIN+6,VG+24
+1710 VDISYS(0)
+1720 RETURN
+1730 REM *** CONVERT TO 7800 ***
+1740 A=0:BS=HM/4:C=1:D=64:S=HM*VM:X$="":L=1
+1750 FOR F=1 TO VM
+1760 FOR G=1 TO BS
+1770 FOR H=1 TO 4
+1780 E=B(C)*D
+1790 A=A+E
+1800 C=C+1
+1810 D=D/4
+1820 NEXT H
+1830 D=64
+1840 REM *** SETUP HEX ***
+1850 J=INT(A/16):H$=""
+1860 S=A-(J*16)
+1870 H=J
+1880 GOSUB 2010
+1890 T$=H$
+1900 H=S
+1910 GOSUB 2010
+1920 H$=T$+H$
+1930 X$=X$+H$:A=0
+1940 NEXT G
+1950 LPRINT X$
+1960 IF L=16 THEN LPRINT:L=0
+1970 L=L+1
+1980 X$=""
+1990 NEXT F
+2000 RETURN
+2010 REM *** HEX CONVERSION ***
+2020 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+2030 IF H=10 THEN H$="A"
+2040 IF H=11 THEN H$="B"
+2050 IF H=12 THEN H$="C"
+2060 IF H=13 THEN H$="D"
+2070 IF H=14 THEN H$="E"
+2080 IF H=15 THEN H$="F"
+2090 RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/EDIT160A.BAS b/DISKS/BASIC/EDIT160A.BAS
new file mode 100644
index 0000000..7be78f2
--- /dev/null
+++ b/DISKS/BASIC/EDIT160A.BAS
@@ -0,0 +1,210 @@
+10 DIM B(7000)
+20 FULLW 2
+30 CLEARW 2
+40 PRINT" **** PLEASE WAIT *****
+50 GOSUB 770
+60 CLEARW 2
+70 HP=1:Z=1
+80 VP=1
+90 HS=4
+100 VS=2
+110 INPUT"HORIZONTAL SIZE";HM
+120 INPUT"VERTICAL SIZE";VM
+130 INPUT"BACKGROUND COLOR";C0
+140 INPUT"COLOR 1";C1
+150 INPUT"COLOR 2";C2
+160 INPUT"COLOR 3";C3
+170 CLEARW 2
+180 GOSUB 1100
+190 GOSUB 840
+200 HG=HS*HP
+210 VG=VS*VP
+220 HE=HG+(HS-1)
+230 COLOR 1,6,CL,0,0
+240 GOSUB 920
+250 X=INP(2)
+260 IF X=32 THEN CN=CN+1
+270 IF CN=4 THEN CN=0
+280 IF CN=0 THEN CL=C0
+290 IF CN=1 THEN CL=C1
+300 IF CN=2 THEN CL=C2
+310 IF CN=3 THEN CL=C3
+320 IF X <> 67 THEN 350
+330 GOSUB 1740
+340 GOSUB 610
+350 IF X <> 65 THEN 380
+360 GOSUB 1420
+370 GOSUB 610
+380 IF X <> 82 THEN 400
+390 GOSUB 610
+400 IF X <> 76 THEN 440
+410 INPUT"FILENAME";F$
+420 GOSUB 1190
+430 GOSUB 610:HP=1:VP=1
+440 IF X <> 83 THEN 480
+450 INPUT"FILENAME";F$
+460 GOSUB 1310
+470 GOSUB 610:HP=1:VP=1
+480 IF X=208 THEN VP=VP+1
+490 IF X=200 THEN VP=VP-1
+500 IF X=205 THEN HP=HP+1
+510 IF X=203 THEN HP=HP-1
+520 IF HP=0 THEN HP=HM
+530 IF HP=HM+1 THEN HP=1
+540 IF VP=VM+1 THEN VP=1
+550 IF VP=0 THEN VP=VM
+560 A=(((VP-1)*HM)+HP)
+570 B(A)=CN
+580 REM T A;VP;HP
+590 GOTO 200
+600 REM *** REDRAW SCREEN ***
+610 CLEARW 2
+620 GOSUB 1100
+630 HP=0:VP=1:C=1
+640 MC=B(C)
+650 C=C+1:HP=HP+1
+660 IF HP=HM+1 THEN HP=1:VP=VP+1
+670 IF VP=VM+1 THEN RETURN
+680 IF MC=0 THEN 640
+690 HG=HP*HS:VG=VP*VS
+700 HE=HG+(HS-1)
+710 IF MC=1 THEN MC=C1:GOTO 740
+720 IF MC=2 THEN MC=C2:GOTO 740
+730 IF MC=3 THEN MC=C3:GOTO 740
+740 COLOR 1,6,MC,0,0
+750 GOSUB 920
+760 GOTO 640
+770 REM *** CLEAR SCREEN ***
+780 A=0
+790 REM Y=HM*VM
+800 FOR X=1 TO 6400
+810 B(X)=A
+820 NEXT X
+830 RETURN
+840 REM *** SET WIDTH ***
+850 POKE CONTRL,16
+860 POKE CONTRL+2,1
+870 POKE CONTRL+6,0
+880 POKE PTSIN,2
+890 POKE PTSIN+2,0
+900 VDISYS(0)
+910 RETURN
+920 REM *** DRAW LINES ***
+930 POKE CONTRL,6
+940 POKE CONTRL+2,2
+950 POKE CONTRL+6,0
+960 POKE PTSIN,HG
+970 POKE PTSIN+2,VG+24
+980 POKE PTSIN+4,HE
+990 POKE PTSIN+6,VG+24
+1000 VDISYS(0)
+1010 POKE CONTRL,6
+1020 POKE CONTRL+2,2
+1030 POKE CONTRL+6,0
+1040 POKE PTSIN,HG
+1050 POKE PTSIN+2,VG+25
+1060 POKE PTSIN+4,HE
+1070 POKE PTSIN+6,VG+25
+1080 VDISYS(0)
+1090 RETURN
+1100 REM *** DRAW BACKGROUND ***
+1110 COLOR 1,C0,C0,1,1
+1120 LINEF 0,0,300,0
+1130 LINEF 0,0,0,160
+1140 LINEF 300,0,300,160
+1150 LINEF 0,160,300,160
+1160 FILL 150,80
+1170 RETURN
+1180 REM *** LOAD FILE ***
+1190 CLEARW 2
+1200 S$="LOADING FILE "+F$
+1210 PRINT S$
+1220 OPEN "I",#1,F$+".DEF"
+1230 N=HM*VM
+1240 FOR X=1 TO N
+1250 INPUT#1,C
+1260 B(X)=C
+1270 NEXT
+1280 CLOSE #1
+1290 RETURN
+1300 REM *** SAVE FILE ***
+1310 CLEARW 2
+1320 S$="SAVING FILE "+F$
+1330 PRINT S$
+1340 OPEN "O",#1,F$+".DEF"
+1350 N=HM*VM
+1360 FOR X=1 TO N
+1370 C=B(X)
+1380 PRINT#1,C
+1390 NEXT
+1400 CLOSE #1
+1410 RETURN
+1420 REM *** ACTUAL SCREEN ***
+1430 CLEARW 2
+1440 GOSUB 1100
+1450 HP=0:VP=1:C=1
+1460 MC=B(C)
+1470 C=C+1:HP=HP+1
+1480 IF HP=HM+1 THEN HP=1:VP=VP+1
+1490 IF VP=VM+1 THEN 1590
+1500 IF MC=0 THEN 1460
+1510 HG=HP*2:VG=VP
+1520 HE=HG+1
+1530 IF MC=1 THEN MC=C1:GOTO 1560
+1540 IF MC=2 THEN MC=C2:GOTO 1560
+1550 IF MC=3 THEN MC=C3:GOTO 1560
+1560 COLOR 1,6,MC,0,0
+1570 GOSUB 1630
+1580 GOTO 1460
+1590 REM *** WAIT FOR CR SUB ***
+1600 Z=INP(2)
+1610 IF Z <> 13 THEN GOTO 1600
+1620 RETURN
+1630 REM *** DRAW LINE ***
+1640 POKE CONTRL,6
+1650 POKE CONTRL+2,2
+1660 POKE CONTRL+6,0
+1670 POKE PTSIN,HG
+1680 POKE PTSIN+2,VG+24
+1690 POKE PTSIN+4,HE
+1700 POKE PTSIN+6,VG+24
+1710 VDISYS(0)
+1720 RETURN
+1730 REM *** CONVERT TO 7800 ***
+1740 A=0:BS=HM/4:C=1:D=64:S=HM*VM:X$="":L=1
+1750 FOR F=1 TO VM
+1760 FOR G=1 TO BS
+1770 FOR H=1 TO 4
+1780 E=B(C)*D
+1790 A=A+E
+1800 C=C+1
+1810 D=D/4
+1820 NEXT H
+1830 D=64
+1840 REM *** SETUP HEX ***
+1850 J=INT(A/16):H$=""
+1860 S=A-(J*16)
+1870 H=J
+1880 GOSUB 2010
+1890 T$=H$
+1900 H=S
+1910 GOSUB 2010
+1920 H$=T$+H$
+1930 X$=X$+H$:A=0
+1940 NEXT G
+1950 LPRINT X$
+1960 IF L=16 THEN LPRINT:L=0
+1970 L=L+1
+1980 X$=""
+1990 NEXT F
+2000 RETURN
+2010 REM *** HEX CONVERSION ***
+2020 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+2030 IF H=10 THEN H$="A"
+2040 IF H=11 THEN H$="B"
+2050 IF H=12 THEN H$="C"
+2060 IF H=13 THEN H$="D"
+2070 IF H=14 THEN H$="E"
+2080 IF H=15 THEN H$="F"
+2090 RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/EDIT320C.BAS b/DISKS/BASIC/EDIT320C.BAS
new file mode 100644
index 0000000..6a0c01e
--- /dev/null
+++ b/DISKS/BASIC/EDIT320C.BAS
@@ -0,0 +1,334 @@
+10 DIM P%(15),P$(15)
+20 DIM B(7000):HM=8:VM=8
+30 FULLW 2
+40 CLEARW 2
+50 PRINT" **** PLEASE WAIT *****
+60 GOSUB 490
+70 CLEARW 2
+80 HP=1:Z=1:Q=1
+90 VP=1:SW=1:CN=0:XP=0
+100 HS=2:CUR=1
+110 VS=2:HT=1:VT=1
+120 C0=0:C1=1:C2=2:C3=3:C4=4
+130 GOSUB 820
+140 GOSUB 560
+150 HG=HS*HP
+160 VG=VS*VP
+170 HE=HG+(HS-1)
+180 COLOR 1,6,CL,0,0
+190 GOSUB 640
+200 REM **** LOOP **********
+210 GOSUB 2710
+220 REM XY 0,0
+230 REM T HP;VP;STATE
+240 IF STATE=3 THEN SUBS=1
+250 IF SUBS=1 THEN GOSUB 2950
+260 IF STATE=2 THEN CV=CV+1
+270 IF CV=5 THEN CV=0
+280 IF STATE=2 THEN GOSUB 3290
+290 IF STATE=1 THEN GOSUB 3030
+300 GOTO 200
+310 REM *** REDRAW SCREEN ***
+320 CLEARW 2
+330 GOSUB 820
+340 HP=0:VP=1:C=1
+350 MC=B(C)
+360 C=C+1:HP=HP+1
+370 IF HP=HM+1 THEN HP=1:VP=VP+1
+380 IF VP=VM+1 THEN HP=1:VP=1:CUR=1:RETURN
+390 IF MC=0 THEN 350
+400 HG=HP*HS:VG=VP*VS
+410 HE=HG+(HS-1)
+420 IF MC=1 THEN MC=C1:GOTO 460
+430 IF MC=2 THEN MC=C2:GOTO 460
+440 IF MC=3 THEN MC=C3:GOTO 460
+450 IF MC=4 THEN MC=C4:GOTO 460
+460 COLOR 1,6,MC,0,0
+470 GOSUB 640
+480 GOTO 350
+490 REM *** CLEAR SCREEN ***
+500 A=0
+510 REM Y=HM*VM
+520 FOR X=1 TO 6400
+530 B(X)=A
+540 NEXT X
+550 RETURN
+560 REM *** SET WIDTH ***
+570 POKE CONTRL,16
+580 POKE CONTRL+2,1
+590 POKE CONTRL+6,0
+600 POKE PTSIN,2
+610 POKE PTSIN+2,0
+620 VDISYS(0)
+630 RETURN
+640 REM *** DRAW LINES ***
+650 POKE CONTRL,6
+660 POKE CONTRL+2,2
+670 POKE CONTRL+6,0
+680 POKE PTSIN,HG
+690 POKE PTSIN+2,VG+24
+700 POKE PTSIN+4,HE
+710 POKE PTSIN+6,VG+24
+720 VDISYS(0)
+730 POKE CONTRL,6
+740 POKE CONTRL+2,2
+750 POKE CONTRL+6,0
+760 POKE PTSIN,HG
+770 POKE PTSIN+2,VG+25
+780 POKE PTSIN+4,HE
+790 POKE PTSIN+6,VG+25
+800 VDISYS(0)
+810 RETURN
+820 REM *** DRAW BACKGROUND ***
+830 COLOR 1,C0,C0,1,1
+840 LINEF 0,0,300,0
+850 LINEF 0,0,0,160
+860 LINEF 300,0,300,160
+870 LINEF 0,160,300,160
+880 FILL 150,80
+890 RETURN
+900 REM *** LOAD FILE ***
+910 GOTOXY 0,16
+920 INPUT"FILENAME";F$
+930 GOTOXY 0,16
+940 S$="LOADING FILE "+F$
+950 PRINT S$
+960 OPEN "I",#1,F$+".DEF"
+970 INPUT#1,HM
+980 INPUT#1,VM
+990 N=HM*VM
+1000 FOR X=1 TO N
+1010 INPUT#1,C
+1020 B(X)=C
+1030 NEXT
+1040 CLOSE #1
+1050 GOSUB 310
+1060 RETURN
+1070 REM *** SAVE FILE ***
+1080 GOTOXY 0,16
+1090 INPUT"FILENAME";F$
+1100 GOTOXY 0,16
+1110 S$="SAVING FILE "+F$
+1120 PRINT S$
+1130 OPEN "O",#1,F$+".DEF"
+1140 PRINT#1,HM
+1150 PRINT#1,VM
+1160 N=HM*VM
+1170 FOR X=1 TO N
+1180 C=B(X)
+1190 PRINT#1,C
+1200 NEXT
+1210 CLOSE #1
+1220 RETURN
+1230 REM *** ACTUAL SCREEN ***
+1240 CLEARW 2
+1250 GOSUB 820
+1260 HP=0:VP=1:C=1
+1270 MC=B(C)
+1280 C=C+1:HP=HP+1
+1290 IF HP=HM+1 THEN HP=1:VP=VP+1
+1300 IF VP=VM+1 THEN 1410
+1310 IF MC=0 THEN 1270
+1320 HG=HP:VG=VP
+1330 HE=HG
+1340 IF MC=1 THEN MC=C1:GOTO 1380
+1350 IF MC=2 THEN MC=C2:GOTO 1380
+1360 IF MC=3 THEN MC=C3:GOTO 1380
+1370 IF MC=4 THEN MC=C4:GOTO 1380
+1380 COLOR 1,6,MC,0,0
+1390 GOSUB 1450
+1400 GOTO 1270
+1410 REM *** WAIT FOR CR SUB ***
+1420 Z=INP(2)
+1430 IF Z <> 13 THEN GOTO 1420
+1440 GOSUB 310:RETURN
+1450 REM *** DRAW LINE ***
+1460 POKE CONTRL,6
+1470 POKE CONTRL+2,2
+1480 POKE CONTRL+6,0
+1490 POKE PTSIN,HG
+1500 POKE PTSIN+2,VG+24
+1510 POKE PTSIN+4,HE
+1520 POKE PTSIN+6,VG+24
+1530 VDISYS(0)
+1540 RETURN
+1550 REM *** CONVERT TO 7800 ***
+1560 PIXPNT=128:PALPNT=4:A=0
+1570 D=0:D2=0:BS=HM/4:C=1:S=HM*VM:X$="":L=1
+1580 FOR F=1 TO VM
+1590 FOR G=1 TO BS
+1600 FOR H=1 TO 4
+1610 E=B(C)
+1620 IF E=0 THEN D=0 ELSE D=PIXPNT:IF D2 <> E THEN D2=E-1
+1630 IF PIXPNT=32 THEN PALPNT=1
+1640 IF PIXPNT=64 OR PIXPNT=16 THEN D=D+(D2*PALPNT)
+1650 PIXPNT=PIXPNT/2
+1660 A=A+D
+1670 C=C+1
+1680 NEXT H
+1690 D=0:D2=0:PIXPNT=128:PALPNT=4
+1700 REM *** SETUP HEX ***
+1710 J=INT(A/16):H$=""
+1720 S=A-(J*16)
+1730 H=J
+1740 GOSUB 1870
+1750 T$=H$
+1760 H=S
+1770 GOSUB 1870
+1780 H$=T$+H$
+1790 X$=X$+H$:A=0
+1800 NEXT G
+1810 PRINT X$
+1820 IF L=16 THEN PRINT:L=0
+1830 L=L+1
+1840 X$=""
+1850 NEXT F
+1860 RETURN
+1870 REM *** HEX CONVERSION ***
+1880 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+1890 IF H=10 THEN H$="A"
+1900 IF H=11 THEN H$="B"
+1910 IF H=12 THEN H$="C"
+1920 IF H=13 THEN H$="D"
+1930 IF H=14 THEN H$="E"
+1940 IF H=15 THEN H$="F"
+1950 RETURN
+1960 REM *** DISPLAY PRVIOUS ***
+1970 AT=(((VT-1)*HM)+HT)
+1980 T=B(AT)
+1990 IF T=0 THEN T=C0:GOTO 2040
+2000 IF T=1 THEN T=C1:GOTO 2040
+2010 IF T=2 THEN T=C2:GOTO 2040
+2020 IF T=3 THEN T=C3:GOTO 2040
+2030 IF T=4 THEN T=C4:GOTO 2040
+2040 HG=HS*HT:HE=HG+(HS-1)
+2050 VG=VS*VT
+2060 COLOR 1,6,T,0,0
+2070 GOSUB 640
+2080 RETURN
+2090 REM *** COLOR CHANGE ***
+2100 PRINT"GRAY/BLUE=Y - GREEN/BROWN=N"
+2110 INPUT T$
+2120 IF T$<>"Y" THEN 2200
+2130 RESTORE 2140
+2140 DATA 320,000,764,222,007,000,004,000
+2150 DATA 000,000,000,000,000,000,000,000
+2160 FOR A=0 TO 15
+2170 READ P$(A)
+2180 NEXT A
+2190 GOTO 2280
+2200 REM *********************
+2210 RESTORE 2220
+2220 DATA 320,000,764,200,070,000,777,000
+2230 DATA 000,000,000,000,000,000,000,000
+2240 FOR V=0 TO 15
+2250 READ P$(V)
+2260 NEXT V
+2270 REM ******************
+2280 RESTORE 2290
+2290 DATA 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13
+2300 FOR Z=0 TO 15 STEP 1
+2310 READ B
+2320 GOSUB 2380
+2330 NEXT Z
+2340 DEFDBL X:X=1114
+2350 POKE X,VARPTR(P%(0))
+2360 RETURN
+2370 REM *** CONVERT SUB ***
+2380 P1%=VAL(LEFT$(P$(Z),1))*256
+2390 P2%=VAL(MID$(P$(Z),2,1))*16
+2400 P3%=VAL(RIGHT$(P$(Z),1))
+2410 P%(B)=P1%+P2%+P3%
+2420 RETURN
+2430 REM *** IINS/DEL HOR ***
+2440 FOR L=E TO S STEP C
+2450 FOR P=1 TO HM
+2460 Y=(L*HM)+P:Z=Y+OFF
+2470 A=B(Y):B(Z)=A
+2480 NEXT P
+2490 NEXT L
+2500 FOR O= 1 TO HM
+2510 X=((L+N)*HM)+O
+2520 B(X)=0
+2530 NEXT O:GOSUB 320:RETURN
+2540 REM *** INSERT ***
+2550 E=VP:S=VM-1:OFF=-HM:C=1:N=-1
+2560 GOSUB 2430
+2570 RETURN
+2580 REM *** DELETE ***
+2590 E=VM-1:S=VP-1:OFF=HM:C=-1:N=1
+2600 GOSUB 2430
+2610 RETURN
+2620 REM *** XCHANGE ***
+2630 GOTOXY 0,16
+2640 INPUT"CHANGE VALUE ";R
+2650 GOTOXY 0,16
+2660 INPUT"TO VALUE";W
+2670 N=HM*VM
+2680 FOR U=1 TO N
+2690 IF B(U)=R THEN B(U)=W
+2700 NEXT U:GOSUB 310:RETURN
+2710 REM *** READ MOUSE ***
+2720 HT=HP:VT=HP
+2730 POKE CONTRL,124
+2740 POKE CONTRL+2,0
+2750 POKE CONTRL+6,0
+2760 VDISYS(0)
+2770 STATE=PEEK(INTOUT)
+2780 HP=PEEK(PTSOUT)
+2790 VP=PEEK(PTSOUT+2)
+2800 IF VP < 28 THEN VP=28
+2810 IF VP > 160 THEN VP=160
+2820 VP=VP-27
+2830 IF HP>300 THEN HP=300
+2840 IF HP<2 THEN HP=2
+2850 HP=HP-1
+2860 VP=VP/2
+2870 T=VP-INT(VP)
+2880 IF T>0 THEN VP=INT(VP)+1
+2890 HP=HP/2:T=HP-INT(HP)
+2900 IF T>0 THEN HP=INT(HP)+1
+2910 REM P+1:VP=VP+1
+2920 IF HP>HM THEN HP=HM
+2930 IF VP>VM THEN VP=VM
+2940 RETURN
+2950 REM *** SUBS ****
+2960 IF D=10 THEN D=1
+2970 IF STATE=1 THEN GOTOXY 0,16:D=D+1:PRINT" "
+2980 GOTOXY 0,16
+2990 ON D GOSUB 3140,3150,3160,3170,3180,3190,3200,3210,3220
+3000 IF STATE=2 THEN ON D GOSUB 1070,900,1230,1550,2090,2580,2540,2620,3230
+3010 IF STATE=2 THEN D=0:SUBS=0
+3020 RETURN
+3030 REM *** PLOT ***
+3040 HG=HS*HP:VG=VS*VP
+3050 HE=HG+(HS-1)
+3060 A=(((VP-1)*HM)+HP)
+3070 K=A/2
+3080 K=K-INT(K)
+3090 BIT=0
+3100 IF K>0 THEN IF B(A+1)=0 OR B(A+1)=CV THEN BIT=1
+3110 IF K=0 THEN IF B(A-1)=0 OR B(A-1)=CV THEN BIT=1
+3120 IF BIT=1 OR CV=0 THEN B(A)=CV:COLOR 1,6,CV,0,0:GOSUB 640
+3130 RETURN
+3140 PRINT"SAVE FILE":RETURN
+3150 PRINT"LOAD FILE":RETURN
+3160 PRINT"ACTUAL SIZE":RETURN
+3170 PRINT"7800 CONVERT":RETURN
+3180 PRINT"COLOR CHANGE":RETURN
+3190 PRINT"INSERT":RETURN
+3200 PRINT"DELETE":RETURN
+3210 PRINT"EXCHANGE VALUES":RETURN
+3220 PRINT"DIMENSIONS":RETURN
+3230 REM *** DIMENSIONS ***
+3240 GOTOXY 0,16
+3250 INPUT"HORIZONTAL SIZE";HM
+3260 GOTOXY 0,16
+3270 INPUT"VERTICAL SIZE";VM
+3280 RETURN
+3290 REM *** COLOR BAR ***
+3300 COLOR 1,6,CV,0,0
+3310 LINEF 0,160,300,160
+3320 LINEF 0,161,300,161
+3330 RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/EMULATOR.ACC b/DISKS/BASIC/EMULATOR.ACC
new file mode 100644
index 0000000..69e869b
--- /dev/null
+++ b/DISKS/BASIC/EMULATOR.ACC
Binary files differ
diff --git a/DISKS/BASIC/FILL.BAS b/DISKS/BASIC/FILL.BAS
new file mode 100644
index 0000000..0b7ee2c
--- /dev/null
+++ b/DISKS/BASIC/FILL.BAS
@@ -0,0 +1,7 @@
+10 COLOR 1,5,5
+20 LINEF 0,0,300,0
+30 LINEF 0,0,0,160
+40 LINEF 300,0,300,160
+50 LINEF 0,160,300,160
+60 FILL 150,80
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H b/DISKS/BASIC/H
new file mode 100644
index 0000000..5d657a6
--- /dev/null
+++ b/DISKS/BASIC/H
@@ -0,0 +1,401 @@
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H.DEF b/DISKS/BASIC/H.DEF
new file mode 100644
index 0000000..a99e48f
--- /dev/null
+++ b/DISKS/BASIC/H.DEF
@@ -0,0 +1,67 @@
+ 8
+ 8
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H1.S b/DISKS/BASIC/H1.S
new file mode 100644
index 0000000..34b69fc
--- /dev/null
+++ b/DISKS/BASIC/H1.S
@@ -0,0 +1,2 @@
+ .DC.B $FF,$FF
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H2.S b/DISKS/BASIC/H2.S
new file mode 100644
index 0000000..6ccb737
--- /dev/null
+++ b/DISKS/BASIC/H2.S
@@ -0,0 +1,2 @@
+ .DC.B $F0,$F0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H3.S b/DISKS/BASIC/H3.S
new file mode 100644
index 0000000..34b69fc
--- /dev/null
+++ b/DISKS/BASIC/H3.S
@@ -0,0 +1,2 @@
+ .DC.B $FF,$FF
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H4.S b/DISKS/BASIC/H4.S
new file mode 100644
index 0000000..9da498f
--- /dev/null
+++ b/DISKS/BASIC/H4.S
@@ -0,0 +1,2 @@
+ .DC.B $00,$00
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H5.S b/DISKS/BASIC/H5.S
new file mode 100644
index 0000000..34b69fc
--- /dev/null
+++ b/DISKS/BASIC/H5.S
@@ -0,0 +1,2 @@
+ .DC.B $FF,$FF
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H6.S b/DISKS/BASIC/H6.S
new file mode 100644
index 0000000..6ccb737
--- /dev/null
+++ b/DISKS/BASIC/H6.S
@@ -0,0 +1,2 @@
+ .DC.B $F0,$F0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H7.S b/DISKS/BASIC/H7.S
new file mode 100644
index 0000000..34b69fc
--- /dev/null
+++ b/DISKS/BASIC/H7.S
@@ -0,0 +1,2 @@
+ .DC.B $FF,$FF
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H8.S b/DISKS/BASIC/H8.S
new file mode 100644
index 0000000..9da498f
--- /dev/null
+++ b/DISKS/BASIC/H8.S
@@ -0,0 +1,2 @@
+ .DC.B $00,$00
+ \ No newline at end of file
diff --git a/DISKS/BASIC/H9.S b/DISKS/BASIC/H9.S
new file mode 100644
index 0000000..152f9ed
--- /dev/null
+++ b/DISKS/BASIC/H9.S
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/DISKS/BASIC/HAYA.DEF b/DISKS/BASIC/HAYA.DEF
new file mode 100644
index 0000000..0e8ee47
--- /dev/null
+++ b/DISKS/BASIC/HAYA.DEF
@@ -0,0 +1,1155 @@
+ 36
+ 32
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 4
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 4
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 3
+ 2
+ 0
+ 0
+ 3
+ 4
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 4
+ 0
+ 1
+ 0
+ 4
+ 3
+ 0
+ 3
+ 0
+ 3
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 3
+ 4
+ 0
+ 3
+ 0
+ 0
+ 0
+ 4
+ 0
+ 4
+ 4
+ 0
+ 3
+ 0
+ 3
+ 4
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 4
+ 0
+ 0
+ 3
+ 0
+ 4
+ 0
+ 0
+ 4
+ 4
+ 3
+ 3
+ 3
+ 3
+ 4
+ 4
+ 0
+ 0
+ 4
+ 0
+ 0
+ 4
+ 0
+ 0
+ 0
+ 4
+ 0
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ \ No newline at end of file
diff --git a/DISKS/BASIC/HDEL.DEF b/DISKS/BASIC/HDEL.DEF
new file mode 100644
index 0000000..3d1d90a
--- /dev/null
+++ b/DISKS/BASIC/HDEL.DEF
@@ -0,0 +1,67 @@
+ 8
+ 8
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 1
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ \ No newline at end of file
diff --git a/DISKS/BASIC/JOE.DEF b/DISKS/BASIC/JOE.DEF
new file mode 100644
index 0000000..285a63a
--- /dev/null
+++ b/DISKS/BASIC/JOE.DEF
@@ -0,0 +1,481 @@
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ \ No newline at end of file
diff --git a/DISKS/BASIC/LFUJO.DEF b/DISKS/BASIC/LFUJO.DEF
new file mode 100644
index 0000000..64552e7
--- /dev/null
+++ b/DISKS/BASIC/LFUJO.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 2
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 2
+ 2
+ 2
+ 0
+ 3
+ 3
+ 1
+ 1
+ 1
+ 1
+ 3
+ 3
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 1
+ 1
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 3
+ 3
+ 3
+ 3
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/LOADDATA.BAS b/DISKS/BASIC/LOADDATA.BAS
new file mode 100644
index 0000000..eba6659
--- /dev/null
+++ b/DISKS/BASIC/LOADDATA.BAS
@@ -0,0 +1,10 @@
+2000 CLEARW 2
+2010 OPEN "I",#1,F$
+2020 N=HM*VM
+2030 FOR X=1 TO N
+2040 INPUT#1,C
+2050 B(N)=C
+2060 NEXT
+2070 CLOSE #1
+2080 END
+ \ No newline at end of file
diff --git a/DISKS/BASIC/LOGO.PRG b/DISKS/BASIC/LOGO.PRG
new file mode 100644
index 0000000..e896b69
--- /dev/null
+++ b/DISKS/BASIC/LOGO.PRG
Binary files differ
diff --git a/DISKS/BASIC/LOGO.RSC b/DISKS/BASIC/LOGO.RSC
new file mode 100644
index 0000000..2f1dbef
--- /dev/null
+++ b/DISKS/BASIC/LOGO.RSC
Binary files differ
diff --git a/DISKS/BASIC/LSJO.DEF b/DISKS/BASIC/LSJO.DEF
new file mode 100644
index 0000000..c87bd93
--- /dev/null
+++ b/DISKS/BASIC/LSJO.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+-1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 3
+ 0
+ 0
+ 0
+ 2
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 1
+ 1
+ 3
+ 3
+ 3
+ 3
+ 0
+-1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 2
+ 4
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/LUJO.DEF b/DISKS/BASIC/LUJO.DEF
new file mode 100644
index 0000000..497110b
--- /dev/null
+++ b/DISKS/BASIC/LUJO.DEF
@@ -0,0 +1,483 @@
+ 20
+ 24
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 1
+ 3
+ 3
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 1
+ 1
+ 3
+ 3
+ 3
+ 0
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 2
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 3
+ 3
+ 1
+ 0
+ 0
+ 2
+ 2
+ 0
+ 2
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 3
+ 3
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 2
+ 2
+ 2
+ 2
+ 4
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 2
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 2
+ 0
+ 0
+ 2
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 2
+ 2
+ 0
+ 0
+ 3
+ 2
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 2
+ 3
+ 0
+ 0
+ 3
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 2
+ 3
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 3
+ 3
+ 3
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/MOUSE.BAS b/DISKS/BASIC/MOUSE.BAS
new file mode 100644
index 0000000..00858e3
--- /dev/null
+++ b/DISKS/BASIC/MOUSE.BAS
@@ -0,0 +1,15 @@
+10 FULLW 2
+20 CLEARW 2
+30 GOSUB 70
+40 GOTOXY 0,0
+50 PRINT H;V;S
+60 GOTO 30
+70 POKE CONTRL,124
+80 POKE CONTRL+2,0
+90 POKE CONTRL+6,0
+100 VDISYS(0)
+110 S=PEEK(INTOUT)
+120 H=PEEK(PTSOUT)
+130 V=PEEK(PTSOUT+2)
+140 RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/MWTAN.DEF b/DISKS/BASIC/MWTAN.DEF
new file mode 100644
index 0000000..e770b47
--- /dev/null
+++ b/DISKS/BASIC/MWTAN.DEF
Binary files differ
diff --git a/DISKS/BASIC/NEO.PRG b/DISKS/BASIC/NEO.PRG
new file mode 100644
index 0000000..7283ad3
--- /dev/null
+++ b/DISKS/BASIC/NEO.PRG
Binary files differ
diff --git a/DISKS/BASIC/NEW320B.BAS b/DISKS/BASIC/NEW320B.BAS
new file mode 100644
index 0000000..3d6308d
--- /dev/null
+++ b/DISKS/BASIC/NEW320B.BAS
@@ -0,0 +1,364 @@
+10 DIM P%(15),P$(15)
+20 DIM B(7000):HM=8:VM=8
+30 FULLW 2
+40 CLEARW 2
+50 PRINT" **** PLEASE WAIT *****
+60 GOSUB 510
+70 CLEARW 2
+80 HP=1:Z=1:Q=1
+90 VP=1:SW=1:CN=0:XP=0
+100 HS=2:CUR=1
+110 VS=2:HT=1:VT=1
+120 C0=0:C1=1:C2=2:C3=3:C4=4
+130 GOSUB 860
+140 GOSUB 600
+150 HG=HS*HP
+160 VG=VS*VP
+170 HE=HG+(HS-1)
+180 COLOR 1,6,CL,0,0
+190 GOSUB 680
+200 REM **** LOOP **********
+210 GOSUB 2810
+220 REM XY 0,0
+230 REM T HP;VP;STATE
+240 IF STATE=1 AND CV=4 THEN SUBS=1
+250 IF CV=4 AND TEMP=0 THEN GOTOXY 0,16:PRINT"DO FUNCTION":TEMP=1
+260 IF CV=0 AND TEMP=1 THEN GOTOXY 0,16:PRINT" ":TEMP=0
+270 IF SUBS=1 THEN GOSUB 3050
+280 IF STATE=2 THEN CV=CV+1
+290 IF CV=5 THEN CV=0
+300 IF STATE=2 AND CV<>4 THEN GOSUB 3390
+310 IF STATE=1 AND CV<>4 THEN GOSUB 3130
+320 GOTO 200
+330 REM *** REDRAW SCREEN ***
+340 CLEARW 2
+350 GOSUB 860
+360 HP=0:VP=1:C=1
+370 MC=B(C)
+380 C=C+1:HP=HP+1
+390 IF HP=HM+1 THEN HP=1:VP=VP+1
+400 IF VP=VM+1 THEN HP=1:VP=1:CUR=1:RETURN
+410 IF MC=0 THEN 370
+420 HG=HP*HS:VG=VP*VS
+430 HE=HG+(HS-1)
+440 IF MC=1 THEN MC=C1:GOTO 480
+450 IF MC=2 THEN MC=C2:GOTO 480
+460 IF MC=3 THEN MC=C3:GOTO 480
+470 IF MC=4 THEN MC=C4:GOTO 480
+480 COLOR 1,6,MC,0,0
+490 GOSUB 680
+500 GOTO 370
+510 REM *** CLEAR SCREEN ***
+520 A=0
+530 REM Y=HM*VM
+540 FOR X=1 TO 6400
+550 B(X)=A
+560 NEXT X
+570 RETURN
+580 GOTOXY 0,16:PRINT" "
+590 RETURN
+600 REM *** SET WIDTH ***
+610 POKE CONTRL,16
+620 POKE CONTRL+2,1
+630 POKE CONTRL+6,0
+640 POKE PTSIN,2
+650 POKE PTSIN+2,0
+660 VDISYS(0)
+670 RETURN
+680 REM *** DRAW LINES ***
+690 POKE CONTRL,6
+700 POKE CONTRL+2,2
+710 POKE CONTRL+6,0
+720 POKE PTSIN,HG
+730 POKE PTSIN+2,VG+24
+740 POKE PTSIN+4,HE
+750 POKE PTSIN+6,VG+24
+760 VDISYS(0)
+770 POKE CONTRL,6
+780 POKE CONTRL+2,2
+790 POKE CONTRL+6,0
+800 POKE PTSIN,HG
+810 POKE PTSIN+2,VG+25
+820 POKE PTSIN+4,HE
+830 POKE PTSIN+6,VG+25
+840 VDISYS(0)
+850 RETURN
+860 REM *** DRAW BACKGROUND ***
+870 COLOR 1,C0,C0,1,1
+880 LINEF 0,0,300,0
+890 LINEF 0,0,0,160
+900 LINEF 300,0,300,160
+910 LINEF 0,160,300,160
+920 FILL 150,80
+930 RETURN
+940 REM *** LOAD FILE ***
+950 GOTOXY 0,16
+960 INPUT"FILENAME";F$
+970 GOTOXY 0,16
+980 S$="LOADING FILE "+F$
+990 PRINT S$
+1000 OPEN "I",#1,F$+".DEF"
+1010 INPUT#1,HM
+1020 INPUT#1,VM
+1030 N=HM*VM
+1040 FOR X=1 TO N
+1050 INPUT#1,C
+1060 B(X)=C
+1070 NEXT
+1080 CLOSE #1
+1090 GOSUB 330
+1100 RETURN
+1110 REM *** SAVE FILE ***
+1120 GOTOXY 0,16
+1130 INPUT"FILENAME";F$
+1140 GOTOXY 0,16
+1150 S$="SAVING FILE "+F$
+1160 PRINT S$
+1170 OPEN "O",#1,F$+".DEF"
+1180 PRINT#1,HM
+1190 PRINT#1,VM
+1200 N=HM*VM
+1210 FOR X=1 TO N
+1220 C=B(X)
+1230 PRINT#1,C
+1240 NEXT
+1250 CLOSE #1
+1260 RETURN
+1270 REM *** ACTUAL SCREEN ***
+1280 CLEARW 2
+1290 GOSUB 860
+1300 HP=0:VP=1:C=1
+1310 MC=B(C)
+1320 C=C+1:HP=HP+1
+1330 IF HP=HM+1 THEN HP=1:VP=VP+1
+1340 IF VP=VM+1 THEN 1450
+1350 IF MC=0 THEN 1310
+1360 HG=HP:VG=VP
+1370 HE=HG
+1380 IF MC=1 THEN MC=C1:GOTO 1420
+1390 IF MC=2 THEN MC=C2:GOTO 1420
+1400 IF MC=3 THEN MC=C3:GOTO 1420
+1410 IF MC=4 THEN MC=C4:GOTO 1420
+1420 COLOR 1,6,MC,0,0
+1430 GOSUB 1490
+1440 GOTO 1310
+1450 REM *** WAIT FOR CR SUB ***
+1460 Z=INP(2)
+1470 IF Z <> 13 THEN GOTO 1460
+1480 GOSUB 330:RETURN
+1490 REM *** DRAW LINE ***
+1500 POKE CONTRL,6
+1510 POKE CONTRL+2,2
+1520 POKE CONTRL+6,0
+1530 POKE PTSIN,HG
+1540 POKE PTSIN+2,VG+24
+1550 POKE PTSIN+4,HE
+1560 POKE PTSIN+6,VG+24
+1570 VDISYS(0)
+1580 RETURN
+1590 REM *** CONVERT TO 7800 ***
+1600 B0PNT=8:B1PNT=128:A=0
+1610 BS=HM/4:C=1:S=HM*VM:X$="":L=1
+1620 OPEN "O",#1,F$+"1"+".S"
+1630 FOR F=1 TO VM
+1640 FOR G=1 TO BS
+1650 FOR H=1 TO 4
+1660 E=B(C)
+1670 IF E=3 THEN B0=1:B1=1
+1680 IF E=2 THEN B0=0:B1=1
+1690 IF E=1 THEN B0=1:B1=0
+1700 IF E=0 THEN B0=0:B1=0
+1710 D=(B0*B0PNT)+(B1*B1PNT)
+1720 B0PNT=B0PNT/2:B1PNT=B1PNT/2
+1730 A=A+D
+1740 C=C+1
+1750 NEXT H
+1760 B0PNT=8:B1PNT=128
+1770 REM *** SETUP HEX ***
+1780 J=INT(A/16):H$=""
+1790 S=A-(J*16)
+1800 H=J
+1810 GOSUB 1940
+1820 T$=H$
+1830 H=S
+1840 GOSUB 1940
+1850 H$="$"+T$+H$+","
+1860 X$=X$+H$:A=0
+1870 IF L=8 THEN GOSUB 3540:L=0
+1880 L=L+1
+1890 NEXT G
+1900 GOSUB 3450:L=1
+1910 NEXT F
+1920 CLOSE #1
+1930 RETURN
+1940 REM *** HEX CONVERSION ***
+1950 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+1960 IF H=10 THEN H$="A"
+1970 IF H=11 THEN H$="B"
+1980 IF H=12 THEN H$="C"
+1990 IF H=13 THEN H$="D"
+2000 IF H=14 THEN H$="E"
+2010 IF H=15 THEN H$="F"
+2020 RETURN
+2030 REM *** DISPLAY PRVIOUS ***
+2040 AT=(((VT-1)*HM)+HT)
+2050 T=B(AT)
+2060 IF T=0 THEN T=C0:GOTO 2110
+2070 IF T=1 THEN T=C1:GOTO 2110
+2080 IF T=2 THEN T=C2:GOTO 2110
+2090 IF T=3 THEN T=C3:GOTO 2110
+2100 IF T=4 THEN T=C4:GOTO 2110
+2110 HG=HS*HT:HE=HG+(HS-1)
+2120 VG=VS*VT
+2130 COLOR 1,6,T,0,0
+2140 GOSUB 680
+2150 RETURN
+2160 REM *** COLOR CHANGE ***
+2170 GOTOXY 0,16
+2180 INPUT"GRAY/BLUE=Y - GREEN/BROWN=N";T$
+2190 GOTOXY 0,16:PRINT" "
+2200 IF T$<>"Y" THEN 2280
+2210 RESTORE 2220
+2220 DATA 642,555,000,006,005,000,004,000
+2230 DATA 000,000,000,000,000,000,000,000
+2240 FOR A=0 TO 15
+2250 READ P$(A)
+2260 NEXT A
+2270 GOTO 2360
+2280 REM *********************
+2290 RESTORE 2300
+2300 DATA 642,555,420,060,050,000,777,000
+2310 DATA 000,000,000,000,000,000,000,000
+2320 FOR V=0 TO 15
+2330 READ P$(V)
+2340 NEXT V
+2350 REM ******************
+2360 RESTORE 2370
+2370 DATA 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13
+2380 FOR Z=0 TO 15 STEP 1
+2390 READ B
+2400 GOSUB 2460
+2410 NEXT Z
+2420 DEFDBL X:X=1114
+2430 POKE X,VARPTR(P%(0))
+2440 RETURN
+2450 REM *** CONVERT SUB ***
+2460 P1%=VAL(LEFT$(P$(Z),1))*256
+2470 P2%=VAL(MID$(P$(Z),2,1))*16
+2480 P3%=VAL(RIGHT$(P$(Z),1))
+2490 P%(B)=P1%+P2%+P3%
+2500 RETURN
+2510 REM *** IINS/DEL HOR ***
+2520 FOR L=E TO S STEP C
+2530 FOR P=1 TO HM
+2540 Y=(L*HM)+P:Z=Y+OFF
+2550 A=B(Y):B(Z)=A
+2560 NEXT P
+2570 NEXT L
+2580 FOR O= 1 TO HM
+2590 X=((L+N)*HM)+O
+2600 B(X)=0
+2610 NEXT O:GOSUB 340:RETURN
+2620 REM *** INSERT ***
+2630 E=VP:S=VM-1:OFF=-HM:C=1:N=-1
+2640 GOSUB 2510
+2650 RETURN
+2660 REM *** DELETE ***
+2670 E=VM-1:S=VP-1:OFF=HM:C=-1:N=1
+2680 GOSUB 2510
+2690 RETURN
+2700 REM *** XCHANGE ***
+2710 GOTOXY 0,16
+2720 INPUT"CHANGE VALUE ";R
+2730 GOTOXY 0,16:PRINT" "
+2740 GOTOXY 0,16
+2750 INPUT"TO VALUE";W
+2760 GOTOXY 0, 16:PRINT" "
+2770 N=HM*VM
+2780 FOR U=1 TO N
+2790 IF B(U)=R THEN B(U)=W
+2800 NEXT U:GOSUB 330:RETURN
+2810 REM *** READ MOUSE ***
+2820 HT=HP:VT=HP
+2830 POKE CONTRL,124
+2840 POKE CONTRL+2,0
+2850 POKE CONTRL+6,0
+2860 VDISYS(0)
+2870 STATE=PEEK(INTOUT)
+2880 HP=PEEK(PTSOUT)
+2890 VP=PEEK(PTSOUT+2)
+2900 IF VP < 28 THEN VP=28
+2910 IF VP > 160 THEN VP=160
+2920 VP=VP-27
+2930 IF HP>300 THEN HP=300
+2940 IF HP<2 THEN HP=2
+2950 HP=HP-1
+2960 VP=VP/2
+2970 T=VP-INT(VP)
+2980 IF T>0 THEN VP=INT(VP)+1
+2990 HP=HP/2:T=HP-INT(HP)
+3000 IF T>0 THEN HP=INT(HP)+1
+3010 REM P+1:VP=VP+1
+3020 IF HP>HM THEN HP=HM
+3030 IF VP>VM THEN VP=VM
+3040 RETURN
+3050 REM *** SUBS ****
+3060 IF D=11 THEN D=1
+3070 IF STATE=1 THEN GOTOXY 0,16:D=D+1:PRINT" "
+3080 GOTOXY 0,16
+3090 ON D GOSUB 3190,3200,3210,3220,3230,3240,3250,3260,3270,3280
+3100 IF STATE=2 THEN ON D GOSUB 1110,940,1270,1590,2160,2660,2620,2700,3290,580
+3110 IF STATE=2 THEN D=0:SUBS=0
+3120 RETURN
+3130 REM *** PLOT ***
+3140 HG=HS*HP:VG=VS*VP
+3150 HE=HG+(HS-1)
+3160 A=(((VP-1)*HM)+HP)
+3170 B(A)=CV:COLOR 1,6,CV,0,0:GOSUB 680
+3180 RETURN
+3190 PRINT"SAVE FILE":RETURN
+3200 PRINT"LOAD FILE":RETURN
+3210 PRINT"ACTUAL SIZE":RETURN
+3220 PRINT"7800 CONVERT":RETURN
+3230 PRINT"COLOR CHANGE":RETURN
+3240 PRINT"INSERT":RETURN
+3250 PRINT"DELETE":RETURN
+3260 PRINT"EXCHANGE VALUES":RETURN
+3270 PRINT"DIMENSIONS":RETURN
+3280 PRINT"EXIT":RETURN
+3290 REM *** DIMENSIONS ***
+3300 GOTOXY 0,16
+3310 PRINT"HSIZE,VSIZE";HM;VM
+3320 X=INP(2):GOTOXY 0,16
+3330 INPUT"HORIZONTAL SIZE ";HM
+3340 GOTOXY 0,16:PRINT" "
+3350 GOTOXY 0,16
+3360 INPUT"VERTICAL SIZE";VM
+3370 GOTOXY 0,16:PRINT" "
+3380 RETURN
+3390 REM *** COLOR BAR ***
+3400 COLOR 1,6,CV,0,0
+3410 LINEF 0,160,300,160
+3420 LINEF 0,161,300,161
+3430 RETURN
+3440 REM *** WRITE FILE ***
+3450 IF (F+1)>9 THEN GOSUB 3580:GOTO 3470
+3460 Z$=STR$(F+1):Z$=MID$(Z$,2,1)
+3470 Z$=F$+Z$
+3480 X$=" .DC.B "+X$
+3490 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3500 PRINT #1,X$
+3510 CLOSE #1:X$=""
+3520 OPEN"O",#1,Z$+".S"
+3530 RETURN
+3540 X$=" .DC.B "+X$
+3550 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3560 PRINT #1,X$:X$=""
+3570 RETURN
+3580 REM *** STRING CONV ***
+3590 F1=INT((F+1)/10)
+3600 F2=(F+1)-(F1*10)
+3610 Z$=STR$(F1):Z$=MID$(Z$,2,1)
+3620 G$=STR$(F2):G$=MID$(G$,2,1)
+3630 Z$=Z$+G$:RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/NEW320C.BAS b/DISKS/BASIC/NEW320C.BAS
new file mode 100644
index 0000000..79b6865
--- /dev/null
+++ b/DISKS/BASIC/NEW320C.BAS
@@ -0,0 +1,365 @@
+10 DIM P%(15),P$(15)
+20 DIM B(7000):HM=8:VM=8
+30 FULLW 2
+40 CLEARW 2
+50 PRINT" **** PLEASE WAIT *****
+60 GOSUB 510
+70 CLEARW 2
+80 HP=1:Z=1:Q=1
+90 VP=1:SW=1:CN=0:XP=0
+100 HS=2:CUR=1
+110 VS=2:HT=1:VT=1
+120 C0=0:C1=1:C2=2:C3=3:C4=4
+130 GOSUB 860
+140 GOSUB 600
+150 HG=HS*HP
+160 VG=VS*VP
+170 HE=HG+(HS-1)
+180 COLOR 1,6,CL,0,0
+190 GOSUB 680
+200 REM **** LOOP **********
+210 GOSUB 2790
+220 REM XY 0,0
+230 REM T HP;VP;STATE
+240 IF STATE=1 AND CV=5 THEN SUBS=1
+250 IF CV=5 AND TEMP=0 THEN GOTOXY 0,16:PRINT"DO FUNCTION":TEMP=1
+260 IF CV=0 AND TEMP=1 THEN GOTOXY 0,16:PRINT" ":TEMP=0
+270 IF SUBS=1 THEN GOSUB 3030
+280 IF STATE=2 THEN CV=CV+1
+290 IF CV=6 THEN CV=0
+300 IF STATE=2 AND CV<>5 THEN GOSUB 3400
+310 IF STATE=1 AND CV<>5 THEN GOSUB 3110
+320 GOTO 200
+330 REM *** REDRAW SCREEN ***
+340 CLEARW 2
+350 GOSUB 860
+360 HP=0:VP=1:C=1
+370 MC=B(C)
+380 C=C+1:HP=HP+1
+390 IF HP=HM+1 THEN HP=1:VP=VP+1
+400 IF VP=VM+1 THEN HP=1:VP=1:CUR=1:RETURN
+410 IF MC=0 THEN 370
+420 HG=HP*HS:VG=VP*VS
+430 HE=HG+(HS-1)
+440 IF MC=1 THEN MC=C1:GOTO 480
+450 IF MC=2 THEN MC=C2:GOTO 480
+460 IF MC=3 THEN MC=C3:GOTO 480
+470 IF MC=4 THEN MC=C4:GOTO 480
+480 COLOR 1,6,MC,0,0
+490 GOSUB 680
+500 GOTO 370
+510 REM *** CLEAR SCREEN ***
+520 A=0
+530 REM Y=HM*VM
+540 FOR X=1 TO 6400
+550 B(X)=A
+560 NEXT X
+570 RETURN
+580 GOTOXY 0,16:PRINT" "
+590 RETURN
+600 REM *** SET WIDTH ***
+610 POKE CONTRL,16
+620 POKE CONTRL+2,1
+630 POKE CONTRL+6,0
+640 POKE PTSIN,2
+650 POKE PTSIN+2,0
+660 VDISYS(0)
+670 RETURN
+680 REM *** DRAW LINES ***
+690 POKE CONTRL,6
+700 POKE CONTRL+2,2
+710 POKE CONTRL+6,0
+720 POKE PTSIN,HG
+730 POKE PTSIN+2,VG+24
+740 POKE PTSIN+4,HE
+750 POKE PTSIN+6,VG+24
+760 VDISYS(0)
+770 POKE CONTRL,6
+780 POKE CONTRL+2,2
+790 POKE CONTRL+6,0
+800 POKE PTSIN,HG
+810 POKE PTSIN+2,VG+25
+820 POKE PTSIN+4,HE
+830 POKE PTSIN+6,VG+25
+840 VDISYS(0)
+850 RETURN
+860 REM *** DRAW BACKGROUND ***
+870 COLOR 1,C0,C0,1,1
+880 LINEF 0,0,300,0
+890 LINEF 0,0,0,160
+900 LINEF 300,0,300,160
+910 LINEF 0,160,300,160
+920 FILL 150,80
+930 RETURN
+940 REM *** LOAD FILE ***
+950 GOTOXY 0,16
+960 INPUT"FILENAME";F$
+970 GOTOXY 0,16
+980 S$="LOADING FILE "+F$
+990 PRINT S$
+1000 OPEN "I",#1,F$+".DEF"
+1010 INPUT#1,HM
+1020 INPUT#1,VM
+1030 N=HM*VM
+1040 FOR X=1 TO N
+1050 INPUT#1,C
+1060 B(X)=C
+1070 NEXT
+1080 CLOSE #1
+1090 GOSUB 330
+1100 RETURN
+1110 REM *** SAVE FILE ***
+1120 GOTOXY 0,16
+1130 INPUT"FILENAME";F$
+1140 GOTOXY 0,16
+1150 S$="SAVING FILE "+F$
+1160 PRINT S$
+1170 OPEN "O",#1,F$+".DEF"
+1180 PRINT#1,HM
+1190 PRINT#1,VM
+1200 N=HM*VM
+1210 FOR X=1 TO N
+1220 C=B(X)
+1230 PRINT#1,C
+1240 NEXT
+1250 CLOSE #1
+1260 RETURN
+1270 REM *** ACTUAL SCREEN ***
+1280 CLEARW 2
+1290 GOSUB 860
+1300 HP=0:VP=1:C=1
+1310 MC=B(C)
+1320 C=C+1:HP=HP+1
+1330 IF HP=HM+1 THEN HP=1:VP=VP+1
+1340 IF VP=VM+1 THEN 1450
+1350 IF MC=0 THEN 1310
+1360 HG=HP:VG=VP
+1370 HE=HG
+1380 IF MC=1 THEN MC=C1:GOTO 1420
+1390 IF MC=2 THEN MC=C2:GOTO 1420
+1400 IF MC=3 THEN MC=C3:GOTO 1420
+1410 IF MC=4 THEN MC=C4:GOTO 1420
+1420 COLOR 1,6,MC,0,0
+1430 GOSUB 1490
+1440 GOTO 1310
+1450 REM *** WAIT FOR CR SUB ***
+1460 Z=INP(2)
+1470 IF Z <> 13 THEN GOTO 1460
+1480 GOSUB 330:RETURN
+1490 REM *** DRAW LINE ***
+1500 POKE CONTRL,6
+1510 POKE CONTRL+2,2
+1520 POKE CONTRL+6,0
+1530 POKE PTSIN,HG
+1540 POKE PTSIN+2,VG+24
+1550 POKE PTSIN+4,HE
+1560 POKE PTSIN+6,VG+24
+1570 VDISYS(0)
+1580 RETURN
+1590 REM *** CONVERT TO 7800 ***
+1600 PIXPNT=128:PALPNT=4:A=0
+1610 D=0:D2=0:BS=HM/4:C=1:S=HM*VM:X$="":L=1
+1620 OPEN "O",#1,F$+"1"+".S"
+1630 FOR F=1 TO VM
+1640 FOR G=1 TO BS
+1650 FOR H=1 TO 4
+1660 E=B(C)
+1670 IF E=0 THEN D=0 ELSE D=PIXPNT:IF D2 <> E THEN D2=E-1
+1680 IF PIXPNT=32 THEN PALPNT=1
+1690 IF PIXPNT=64 OR PIXPNT=16 THEN D=D+(D2*PALPNT)
+1700 PIXPNT=PIXPNT/2
+1710 A=A+D
+1720 C=C+1
+1730 NEXT H
+1740 D=0:D2=0:PIXPNT=128:PALPNT=4
+1750 REM *** SETUP HEX ***
+1760 J=INT(A/16):H$=""
+1770 S=A-(J*16)
+1780 H=J
+1790 GOSUB 1920
+1800 T$=H$
+1810 H=S
+1820 GOSUB 1920
+1830 H$="$"+T$+H$+","
+1840 X$=X$+H$:A=0
+1850 IF L=8 THEN GOSUB 3550:L=0
+1860 L=L+1
+1870 NEXT G
+1880 GOSUB 3460:L=1
+1890 NEXT F
+1900 CLOSE #1
+1910 RETURN
+1920 REM *** HEX CONVERSION ***
+1930 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+1940 IF H=10 THEN H$="A"
+1950 IF H=11 THEN H$="B"
+1960 IF H=12 THEN H$="C"
+1970 IF H=13 THEN H$="D"
+1980 IF H=14 THEN H$="E"
+1990 IF H=15 THEN H$="F"
+2000 RETURN
+2010 REM *** DISPLAY PRVIOUS ***
+2020 AT=(((VT-1)*HM)+HT)
+2030 T=B(AT)
+2040 IF T=0 THEN T=C0:GOTO 2090
+2050 IF T=1 THEN T=C1:GOTO 2090
+2060 IF T=2 THEN T=C2:GOTO 2090
+2070 IF T=3 THEN T=C3:GOTO 2090
+2080 IF T=4 THEN T=C4:GOTO 2090
+2090 HG=HS*HT:HE=HG+(HS-1)
+2100 VG=VS*VT
+2110 COLOR 1,6,T,0,0
+2120 GOSUB 680
+2130 RETURN
+2140 REM *** COLOR CHANGE ***
+2150 GOTOXY 0,16
+2160 INPUT"GRAY/BLUE=Y - GREEN/BROWN=N";T$
+2170 GOTOXY 0,16:PRINT" "
+2180 IF T$<>"Y" THEN 2260
+2190 RESTORE 2200
+2200 DATA 642,000,555,444,005,000,004,000
+2210 DATA 000,000,000,000,000,000,000,000
+2220 FOR A=0 TO 15
+2230 READ P$(A)
+2240 NEXT A
+2250 GOTO 2340
+2260 REM *********************
+2270 RESTORE 2280
+2280 DATA 642,000,555,420,050,000,777,000
+2290 DATA 000,000,000,000,000,000,000,000
+2300 FOR V=0 TO 15
+2310 READ P$(V)
+2320 NEXT V
+2330 REM ******************
+2340 RESTORE 2350
+2350 DATA 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13
+2360 FOR Z=0 TO 15 STEP 1
+2370 READ B
+2380 GOSUB 2440
+2390 NEXT Z
+2400 DEFDBL X:X=1114
+2410 POKE X,VARPTR(P%(0))
+2420 RETURN
+2430 REM *** CONVERT SUB ***
+2440 P1%=VAL(LEFT$(P$(Z),1))*256
+2450 P2%=VAL(MID$(P$(Z),2,1))*16
+2460 P3%=VAL(RIGHT$(P$(Z),1))
+2470 P%(B)=P1%+P2%+P3%
+2480 RETURN
+2490 REM *** IINS/DEL HOR ***
+2500 FOR L=E TO S STEP C
+2510 FOR P=1 TO HM
+2520 Y=(L*HM)+P:Z=Y+OFF
+2530 A=B(Y):B(Z)=A
+2540 NEXT P
+2550 NEXT L
+2560 FOR O= 1 TO HM
+2570 X=((L+N)*HM)+O
+2580 B(X)=0
+2590 NEXT O:GOSUB 340:RETURN
+2600 REM *** INSERT ***
+2610 E=VP:S=VM-1:OFF=-HM:C=1:N=-1
+2620 GOSUB 2490
+2630 RETURN
+2640 REM *** DELETE ***
+2650 E=VM-1:S=VP-1:OFF=HM:C=-1:N=1
+2660 GOSUB 2490
+2670 RETURN
+2680 REM *** XCHANGE ***
+2690 GOTOXY 0,16
+2700 INPUT"CHANGE VALUE ";R
+2710 GOTOXY 0,16:PRINT" "
+2720 GOTOXY 0,16
+2730 INPUT"TO VALUE";W
+2740 GOTOXY 0, 16:PRINT" "
+2750 N=HM*VM
+2760 FOR U=1 TO N
+2770 IF B(U)=R THEN B(U)=W
+2780 NEXT U:GOSUB 330:RETURN
+2790 REM *** READ MOUSE ***
+2800 HT=HP:VT=HP
+2810 POKE CONTRL,124
+2820 POKE CONTRL+2,0
+2830 POKE CONTRL+6,0
+2840 VDISYS(0)
+2850 STATE=PEEK(INTOUT)
+2860 HP=PEEK(PTSOUT)
+2870 VP=PEEK(PTSOUT+2)
+2880 IF VP < 28 THEN VP=28
+2890 IF VP > 160 THEN VP=160
+2900 VP=VP-27
+2910 IF HP>300 THEN HP=300
+2920 IF HP<2 THEN HP=2
+2930 HP=HP-1
+2940 VP=VP/2
+2950 T=VP-INT(VP)
+2960 IF T>0 THEN VP=INT(VP)+1
+2970 HP=HP/2:T=HP-INT(HP)
+2980 IF T>0 THEN HP=INT(HP)+1
+2990 REM P+1:VP=VP+1
+3000 IF HP>HM THEN HP=HM
+3010 IF VP>VM THEN VP=VM
+3020 RETURN
+3030 REM *** SUBS ****
+3040 IF D=11 THEN D=1
+3050 IF STATE=1 THEN GOTOXY 0,16:D=D+1:PRINT" "
+3060 GOTOXY 0,16
+3070 ON D GOSUB 3220,3230,3240,3250,3260,3270,3280,3290,3300,3310
+3080 IF STATE=2 THEN ON D GOSUB 1110,940,1270,1590,2140,2640,2600,2680,3320,580
+3090 IF STATE=2 THEN D=0:SUBS=0
+3100 RETURN
+3110 REM *** PLOT ***
+3120 HG=HS*HP:VG=VS*VP
+3130 HE=HG+(HS-1)
+3140 A=(((VP-1)*HM)+HP)
+3150 K=A/2
+3160 K=K-INT(K)
+3170 BIT=0
+3180 IF K>0 THEN IF B(A+1)=0 OR B(A+1)=CV THEN BIT=1
+3190 IF K=0 THEN IF B(A-1)=0 OR B(A-1)=CV THEN BIT=1
+3200 IF BIT=1 OR CV=0 THEN B(A)=CV:COLOR 1,6,CV,0,0:GOSUB 680
+3210 RETURN
+3220 PRINT"SAVE FILE":RETURN
+3230 PRINT"LOAD FILE":RETURN
+3240 PRINT"ACTUAL SIZE":RETURN
+3250 PRINT"7800 CONVERT":RETURN
+3260 PRINT"COLOR CHANGE":RETURN
+3270 PRINT"INSERT":RETURN
+3280 PRINT"DELETE":RETURN
+3290 PRINT"EXCHANGE VALUES":RETURN
+3300 PRINT"DIMENSIONS":RETURN
+3310 PRINT"EXIT":RETURN
+3320 REM *** DIMENSIONS ***
+3330 GOTOXY 0,16
+3340 INPUT"HORIZONTAL SIZE";HM
+3350 GOTOXY 0,16:PRINT" "
+3360 GOTOXY 0,16
+3370 INPUT"VERTICAL SIZE";VM
+3380 GOTOXY 0,16:PRINT" "
+3390 RETURN
+3400 REM *** COLOR BAR ***
+3410 COLOR 1,6,CV,0,0
+3420 LINEF 0,160,300,160
+3430 LINEF 0,161,300,161
+3440 RETURN
+3450 REM *** WRITE FILE ***
+3460 IF (F+1)>9 THEN GOSUB 3590:GOTO 3480
+3470 Z$=STR$(F+1):Z$=MID$(Z$,2,1)
+3480 Z$=F$+Z$
+3490 X$=" .DC.B "+X$
+3500 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3510 PRINT #1,X$
+3520 CLOSE #1:X$=""
+3530 OPEN"O",#1,Z$+".S"
+3540 RETURN
+3550 X$=" .DC.B "+X$
+3560 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3570 PRINT #1,X$:X$=""
+3580 RETURN
+3590 REM *** STRING CONV ***
+3600 F1=INT((F+1)/10)
+3610 F2=(F+1)-(F1*10)
+3620 Z$=STR$(F1):Z$=MID$(Z$,2,1)
+3630 G$=STR$(F2):G$=MID$(G$,2,1)
+3640 Z$=Z$+G$:RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/NEW320CX.BAS b/DISKS/BASIC/NEW320CX.BAS
new file mode 100644
index 0000000..79b6865
--- /dev/null
+++ b/DISKS/BASIC/NEW320CX.BAS
@@ -0,0 +1,365 @@
+10 DIM P%(15),P$(15)
+20 DIM B(7000):HM=8:VM=8
+30 FULLW 2
+40 CLEARW 2
+50 PRINT" **** PLEASE WAIT *****
+60 GOSUB 510
+70 CLEARW 2
+80 HP=1:Z=1:Q=1
+90 VP=1:SW=1:CN=0:XP=0
+100 HS=2:CUR=1
+110 VS=2:HT=1:VT=1
+120 C0=0:C1=1:C2=2:C3=3:C4=4
+130 GOSUB 860
+140 GOSUB 600
+150 HG=HS*HP
+160 VG=VS*VP
+170 HE=HG+(HS-1)
+180 COLOR 1,6,CL,0,0
+190 GOSUB 680
+200 REM **** LOOP **********
+210 GOSUB 2790
+220 REM XY 0,0
+230 REM T HP;VP;STATE
+240 IF STATE=1 AND CV=5 THEN SUBS=1
+250 IF CV=5 AND TEMP=0 THEN GOTOXY 0,16:PRINT"DO FUNCTION":TEMP=1
+260 IF CV=0 AND TEMP=1 THEN GOTOXY 0,16:PRINT" ":TEMP=0
+270 IF SUBS=1 THEN GOSUB 3030
+280 IF STATE=2 THEN CV=CV+1
+290 IF CV=6 THEN CV=0
+300 IF STATE=2 AND CV<>5 THEN GOSUB 3400
+310 IF STATE=1 AND CV<>5 THEN GOSUB 3110
+320 GOTO 200
+330 REM *** REDRAW SCREEN ***
+340 CLEARW 2
+350 GOSUB 860
+360 HP=0:VP=1:C=1
+370 MC=B(C)
+380 C=C+1:HP=HP+1
+390 IF HP=HM+1 THEN HP=1:VP=VP+1
+400 IF VP=VM+1 THEN HP=1:VP=1:CUR=1:RETURN
+410 IF MC=0 THEN 370
+420 HG=HP*HS:VG=VP*VS
+430 HE=HG+(HS-1)
+440 IF MC=1 THEN MC=C1:GOTO 480
+450 IF MC=2 THEN MC=C2:GOTO 480
+460 IF MC=3 THEN MC=C3:GOTO 480
+470 IF MC=4 THEN MC=C4:GOTO 480
+480 COLOR 1,6,MC,0,0
+490 GOSUB 680
+500 GOTO 370
+510 REM *** CLEAR SCREEN ***
+520 A=0
+530 REM Y=HM*VM
+540 FOR X=1 TO 6400
+550 B(X)=A
+560 NEXT X
+570 RETURN
+580 GOTOXY 0,16:PRINT" "
+590 RETURN
+600 REM *** SET WIDTH ***
+610 POKE CONTRL,16
+620 POKE CONTRL+2,1
+630 POKE CONTRL+6,0
+640 POKE PTSIN,2
+650 POKE PTSIN+2,0
+660 VDISYS(0)
+670 RETURN
+680 REM *** DRAW LINES ***
+690 POKE CONTRL,6
+700 POKE CONTRL+2,2
+710 POKE CONTRL+6,0
+720 POKE PTSIN,HG
+730 POKE PTSIN+2,VG+24
+740 POKE PTSIN+4,HE
+750 POKE PTSIN+6,VG+24
+760 VDISYS(0)
+770 POKE CONTRL,6
+780 POKE CONTRL+2,2
+790 POKE CONTRL+6,0
+800 POKE PTSIN,HG
+810 POKE PTSIN+2,VG+25
+820 POKE PTSIN+4,HE
+830 POKE PTSIN+6,VG+25
+840 VDISYS(0)
+850 RETURN
+860 REM *** DRAW BACKGROUND ***
+870 COLOR 1,C0,C0,1,1
+880 LINEF 0,0,300,0
+890 LINEF 0,0,0,160
+900 LINEF 300,0,300,160
+910 LINEF 0,160,300,160
+920 FILL 150,80
+930 RETURN
+940 REM *** LOAD FILE ***
+950 GOTOXY 0,16
+960 INPUT"FILENAME";F$
+970 GOTOXY 0,16
+980 S$="LOADING FILE "+F$
+990 PRINT S$
+1000 OPEN "I",#1,F$+".DEF"
+1010 INPUT#1,HM
+1020 INPUT#1,VM
+1030 N=HM*VM
+1040 FOR X=1 TO N
+1050 INPUT#1,C
+1060 B(X)=C
+1070 NEXT
+1080 CLOSE #1
+1090 GOSUB 330
+1100 RETURN
+1110 REM *** SAVE FILE ***
+1120 GOTOXY 0,16
+1130 INPUT"FILENAME";F$
+1140 GOTOXY 0,16
+1150 S$="SAVING FILE "+F$
+1160 PRINT S$
+1170 OPEN "O",#1,F$+".DEF"
+1180 PRINT#1,HM
+1190 PRINT#1,VM
+1200 N=HM*VM
+1210 FOR X=1 TO N
+1220 C=B(X)
+1230 PRINT#1,C
+1240 NEXT
+1250 CLOSE #1
+1260 RETURN
+1270 REM *** ACTUAL SCREEN ***
+1280 CLEARW 2
+1290 GOSUB 860
+1300 HP=0:VP=1:C=1
+1310 MC=B(C)
+1320 C=C+1:HP=HP+1
+1330 IF HP=HM+1 THEN HP=1:VP=VP+1
+1340 IF VP=VM+1 THEN 1450
+1350 IF MC=0 THEN 1310
+1360 HG=HP:VG=VP
+1370 HE=HG
+1380 IF MC=1 THEN MC=C1:GOTO 1420
+1390 IF MC=2 THEN MC=C2:GOTO 1420
+1400 IF MC=3 THEN MC=C3:GOTO 1420
+1410 IF MC=4 THEN MC=C4:GOTO 1420
+1420 COLOR 1,6,MC,0,0
+1430 GOSUB 1490
+1440 GOTO 1310
+1450 REM *** WAIT FOR CR SUB ***
+1460 Z=INP(2)
+1470 IF Z <> 13 THEN GOTO 1460
+1480 GOSUB 330:RETURN
+1490 REM *** DRAW LINE ***
+1500 POKE CONTRL,6
+1510 POKE CONTRL+2,2
+1520 POKE CONTRL+6,0
+1530 POKE PTSIN,HG
+1540 POKE PTSIN+2,VG+24
+1550 POKE PTSIN+4,HE
+1560 POKE PTSIN+6,VG+24
+1570 VDISYS(0)
+1580 RETURN
+1590 REM *** CONVERT TO 7800 ***
+1600 PIXPNT=128:PALPNT=4:A=0
+1610 D=0:D2=0:BS=HM/4:C=1:S=HM*VM:X$="":L=1
+1620 OPEN "O",#1,F$+"1"+".S"
+1630 FOR F=1 TO VM
+1640 FOR G=1 TO BS
+1650 FOR H=1 TO 4
+1660 E=B(C)
+1670 IF E=0 THEN D=0 ELSE D=PIXPNT:IF D2 <> E THEN D2=E-1
+1680 IF PIXPNT=32 THEN PALPNT=1
+1690 IF PIXPNT=64 OR PIXPNT=16 THEN D=D+(D2*PALPNT)
+1700 PIXPNT=PIXPNT/2
+1710 A=A+D
+1720 C=C+1
+1730 NEXT H
+1740 D=0:D2=0:PIXPNT=128:PALPNT=4
+1750 REM *** SETUP HEX ***
+1760 J=INT(A/16):H$=""
+1770 S=A-(J*16)
+1780 H=J
+1790 GOSUB 1920
+1800 T$=H$
+1810 H=S
+1820 GOSUB 1920
+1830 H$="$"+T$+H$+","
+1840 X$=X$+H$:A=0
+1850 IF L=8 THEN GOSUB 3550:L=0
+1860 L=L+1
+1870 NEXT G
+1880 GOSUB 3460:L=1
+1890 NEXT F
+1900 CLOSE #1
+1910 RETURN
+1920 REM *** HEX CONVERSION ***
+1930 IF H<10 THEN H$=STR$(H):H$=MID$(H$,2,1)
+1940 IF H=10 THEN H$="A"
+1950 IF H=11 THEN H$="B"
+1960 IF H=12 THEN H$="C"
+1970 IF H=13 THEN H$="D"
+1980 IF H=14 THEN H$="E"
+1990 IF H=15 THEN H$="F"
+2000 RETURN
+2010 REM *** DISPLAY PRVIOUS ***
+2020 AT=(((VT-1)*HM)+HT)
+2030 T=B(AT)
+2040 IF T=0 THEN T=C0:GOTO 2090
+2050 IF T=1 THEN T=C1:GOTO 2090
+2060 IF T=2 THEN T=C2:GOTO 2090
+2070 IF T=3 THEN T=C3:GOTO 2090
+2080 IF T=4 THEN T=C4:GOTO 2090
+2090 HG=HS*HT:HE=HG+(HS-1)
+2100 VG=VS*VT
+2110 COLOR 1,6,T,0,0
+2120 GOSUB 680
+2130 RETURN
+2140 REM *** COLOR CHANGE ***
+2150 GOTOXY 0,16
+2160 INPUT"GRAY/BLUE=Y - GREEN/BROWN=N";T$
+2170 GOTOXY 0,16:PRINT" "
+2180 IF T$<>"Y" THEN 2260
+2190 RESTORE 2200
+2200 DATA 642,000,555,444,005,000,004,000
+2210 DATA 000,000,000,000,000,000,000,000
+2220 FOR A=0 TO 15
+2230 READ P$(A)
+2240 NEXT A
+2250 GOTO 2340
+2260 REM *********************
+2270 RESTORE 2280
+2280 DATA 642,000,555,420,050,000,777,000
+2290 DATA 000,000,000,000,000,000,000,000
+2300 FOR V=0 TO 15
+2310 READ P$(V)
+2320 NEXT V
+2330 REM ******************
+2340 RESTORE 2350
+2350 DATA 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13
+2360 FOR Z=0 TO 15 STEP 1
+2370 READ B
+2380 GOSUB 2440
+2390 NEXT Z
+2400 DEFDBL X:X=1114
+2410 POKE X,VARPTR(P%(0))
+2420 RETURN
+2430 REM *** CONVERT SUB ***
+2440 P1%=VAL(LEFT$(P$(Z),1))*256
+2450 P2%=VAL(MID$(P$(Z),2,1))*16
+2460 P3%=VAL(RIGHT$(P$(Z),1))
+2470 P%(B)=P1%+P2%+P3%
+2480 RETURN
+2490 REM *** IINS/DEL HOR ***
+2500 FOR L=E TO S STEP C
+2510 FOR P=1 TO HM
+2520 Y=(L*HM)+P:Z=Y+OFF
+2530 A=B(Y):B(Z)=A
+2540 NEXT P
+2550 NEXT L
+2560 FOR O= 1 TO HM
+2570 X=((L+N)*HM)+O
+2580 B(X)=0
+2590 NEXT O:GOSUB 340:RETURN
+2600 REM *** INSERT ***
+2610 E=VP:S=VM-1:OFF=-HM:C=1:N=-1
+2620 GOSUB 2490
+2630 RETURN
+2640 REM *** DELETE ***
+2650 E=VM-1:S=VP-1:OFF=HM:C=-1:N=1
+2660 GOSUB 2490
+2670 RETURN
+2680 REM *** XCHANGE ***
+2690 GOTOXY 0,16
+2700 INPUT"CHANGE VALUE ";R
+2710 GOTOXY 0,16:PRINT" "
+2720 GOTOXY 0,16
+2730 INPUT"TO VALUE";W
+2740 GOTOXY 0, 16:PRINT" "
+2750 N=HM*VM
+2760 FOR U=1 TO N
+2770 IF B(U)=R THEN B(U)=W
+2780 NEXT U:GOSUB 330:RETURN
+2790 REM *** READ MOUSE ***
+2800 HT=HP:VT=HP
+2810 POKE CONTRL,124
+2820 POKE CONTRL+2,0
+2830 POKE CONTRL+6,0
+2840 VDISYS(0)
+2850 STATE=PEEK(INTOUT)
+2860 HP=PEEK(PTSOUT)
+2870 VP=PEEK(PTSOUT+2)
+2880 IF VP < 28 THEN VP=28
+2890 IF VP > 160 THEN VP=160
+2900 VP=VP-27
+2910 IF HP>300 THEN HP=300
+2920 IF HP<2 THEN HP=2
+2930 HP=HP-1
+2940 VP=VP/2
+2950 T=VP-INT(VP)
+2960 IF T>0 THEN VP=INT(VP)+1
+2970 HP=HP/2:T=HP-INT(HP)
+2980 IF T>0 THEN HP=INT(HP)+1
+2990 REM P+1:VP=VP+1
+3000 IF HP>HM THEN HP=HM
+3010 IF VP>VM THEN VP=VM
+3020 RETURN
+3030 REM *** SUBS ****
+3040 IF D=11 THEN D=1
+3050 IF STATE=1 THEN GOTOXY 0,16:D=D+1:PRINT" "
+3060 GOTOXY 0,16
+3070 ON D GOSUB 3220,3230,3240,3250,3260,3270,3280,3290,3300,3310
+3080 IF STATE=2 THEN ON D GOSUB 1110,940,1270,1590,2140,2640,2600,2680,3320,580
+3090 IF STATE=2 THEN D=0:SUBS=0
+3100 RETURN
+3110 REM *** PLOT ***
+3120 HG=HS*HP:VG=VS*VP
+3130 HE=HG+(HS-1)
+3140 A=(((VP-1)*HM)+HP)
+3150 K=A/2
+3160 K=K-INT(K)
+3170 BIT=0
+3180 IF K>0 THEN IF B(A+1)=0 OR B(A+1)=CV THEN BIT=1
+3190 IF K=0 THEN IF B(A-1)=0 OR B(A-1)=CV THEN BIT=1
+3200 IF BIT=1 OR CV=0 THEN B(A)=CV:COLOR 1,6,CV,0,0:GOSUB 680
+3210 RETURN
+3220 PRINT"SAVE FILE":RETURN
+3230 PRINT"LOAD FILE":RETURN
+3240 PRINT"ACTUAL SIZE":RETURN
+3250 PRINT"7800 CONVERT":RETURN
+3260 PRINT"COLOR CHANGE":RETURN
+3270 PRINT"INSERT":RETURN
+3280 PRINT"DELETE":RETURN
+3290 PRINT"EXCHANGE VALUES":RETURN
+3300 PRINT"DIMENSIONS":RETURN
+3310 PRINT"EXIT":RETURN
+3320 REM *** DIMENSIONS ***
+3330 GOTOXY 0,16
+3340 INPUT"HORIZONTAL SIZE";HM
+3350 GOTOXY 0,16:PRINT" "
+3360 GOTOXY 0,16
+3370 INPUT"VERTICAL SIZE";VM
+3380 GOTOXY 0,16:PRINT" "
+3390 RETURN
+3400 REM *** COLOR BAR ***
+3410 COLOR 1,6,CV,0,0
+3420 LINEF 0,160,300,160
+3430 LINEF 0,161,300,161
+3440 RETURN
+3450 REM *** WRITE FILE ***
+3460 IF (F+1)>9 THEN GOSUB 3590:GOTO 3480
+3470 Z$=STR$(F+1):Z$=MID$(Z$,2,1)
+3480 Z$=F$+Z$
+3490 X$=" .DC.B "+X$
+3500 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3510 PRINT #1,X$
+3520 CLOSE #1:X$=""
+3530 OPEN"O",#1,Z$+".S"
+3540 RETURN
+3550 X$=" .DC.B "+X$
+3560 V=LEN(X$)-1:X$=LEFT$(X$,V)
+3570 PRINT #1,X$:X$=""
+3580 RETURN
+3590 REM *** STRING CONV ***
+3600 F1=INT((F+1)/10)
+3610 F2=(F+1)-(F1*10)
+3620 Z$=STR$(F1):Z$=MID$(Z$,2,1)
+3630 G$=STR$(F2):G$=MID$(G$,2,1)
+3640 Z$=Z$+G$:RETURN
+ \ No newline at end of file
diff --git a/DISKS/BASIC/OBJ b/DISKS/BASIC/OBJ
new file mode 100644
index 0000000..81d3f5a
--- /dev/null
+++ b/DISKS/BASIC/OBJ
Binary files differ
diff --git a/DISKS/BASIC/OBJ.DTA b/DISKS/BASIC/OBJ.DTA
new file mode 100644
index 0000000..736e73e
--- /dev/null
+++ b/DISKS/BASIC/OBJ.DTA
Binary files differ
diff --git a/DISKS/BASIC/RAMTEST.BAS b/DISKS/BASIC/RAMTEST.BAS
new file mode 100644
index 0000000..194ace6
--- /dev/null
+++ b/DISKS/BASIC/RAMTEST.BAS
@@ -0,0 +1,7 @@
+10 A=6000
+20 POKE A,255
+30 PRINT A,PEEK(A)
+40 IF PEEK(A) <> 255 THEN STOP
+50 A=A+100
+60 GOTO 20
+ \ No newline at end of file
diff --git a/DISKS/BASIC/SAMPLE.PRG b/DISKS/BASIC/SAMPLE.PRG
new file mode 100644
index 0000000..aa4bca2
--- /dev/null
+++ b/DISKS/BASIC/SAMPLE.PRG
Binary files differ
diff --git a/DISKS/BASIC/SANDA.DEF b/DISKS/BASIC/SANDA.DEF
new file mode 100644
index 0000000..6f9bb54
--- /dev/null
+++ b/DISKS/BASIC/SANDA.DEF
@@ -0,0 +1,899 @@
+ 56
+ 16
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ \ No newline at end of file
diff --git a/DISKS/BASIC/SAVEDATA.BAS b/DISKS/BASIC/SAVEDATA.BAS
new file mode 100644
index 0000000..9452a80
--- /dev/null
+++ b/DISKS/BASIC/SAVEDATA.BAS
@@ -0,0 +1,10 @@
+3000 CLEARW 2
+3010 OPEN "O",#1,F$
+3020 N=HM*VM
+3030 FOR X=1 TO N
+3040 C=B(N)
+3050 PRINT#1,C
+3060 NEXT
+3070 CLOSE #1
+3080 END
+ \ No newline at end of file
diff --git a/DISKS/BASIC/SHELLA.DEF b/DISKS/BASIC/SHELLA.DEF
new file mode 100644
index 0000000..9d33940
--- /dev/null
+++ b/DISKS/BASIC/SHELLA.DEF
@@ -0,0 +1,3459 @@
+ 72
+ 48
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 0
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 4
+ 4
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 0
+ 4
+ 4
+ 4
+ 4
+ 4
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 0
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 4
+ 4
+ 1
+ 1
+ 4
+ 4
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 4
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 0
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 4
+ 4
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 0
+ 4
+ 4
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 0
+ 1
+ 1
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 4
+ 4
+ 4
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 2
+ 2
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 4
+ 0
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 4
+ 1
+ 1
+ 0
+ 4
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 4
+ 4
+ 4
+ 4
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 1
+ 1
+ 1
+ 1
+ 1
+ 0
+ 4
+ 4
+ 4
+ 1
+ 1
+ 0