├── BUGS.txt ├── CHANGES ├── ee2 ├── ee2.config.seq ├── ee2.data.seq ├── ee2.goal.seq ├── ee2.msg.seq ├── ee2.news.seq ├── ee2.Intro.seq ├── ee2.power.seq ├── ee2.helpmenu.seq ├── ee2.message.seq ├── ee2.strategic.seq ├── ee2.updates.seq ├── ee2.production.seq ├── ee2.designations.seq ├── prg.ee2.bas ├── ee2.sectors1.dat.seq ├── prg.ee2.init.bas └── prg.ee2.create.bas ├── extras ├── emp.config.seq ├── emp.req.seq ├── emp.msg.seq ├── bnk.menu.seq ├── cas.help 1.seq ├── cas.help 2.seq ├── cas.help 3.seq ├── cas.help 4.seq ├── cas.help 5.seq ├── cas.help 6.seq ├── cas.opener.seq ├── cas.player.seq ├── dat.intro.seq ├── dat.menu.seq ├── dat.verify.seq ├── emp.emps.seq ├── emp.manif.seq ├── emp.menu1.seq ├── emp.menu2.seq ├── emp.menu3.seq ├── emp.news.seq ├── emp.reqs.seq ├── emp.title.seq ├── gal.rules.seq ├── mdr.help 1.seq ├── mdr.help 2.seq ├── mdr.help 3.seq ├── mdr.help 4.seq ├── mdr.help 5.seq ├── mdr.map 1.seq ├── mdr.map 2.seq ├── mdr.map 3.seq ├── mdr.map 4.seq ├── mdr.menu.seq ├── mdr.title.seq ├── wall.menu.seq ├── wall.title.seq ├── bnk.apphelp.seq ├── bnk.loanapp.seq ├── bnk.welcome.seq ├── gam.128dldic.bin ├── mdr.boot.bas ├── gam.128dleboot.bas ├── emp.boot.bas ├── prg.dating boot.bas ├── dat.create.bas ├── bnk.create.bas ├── gal.boot.bas ├── gal.setup.bas ├── run.me.bas ├── wall.create.bas ├── gam.hangman.bas ├── gal.maint.bas ├── gam.tic tac toe.bas ├── wall.maint.bas ├── gam.bagels.bas ├── bnk.maint.bas ├── emp.create.bas ├── gam.128dle.bas ├── mdr.maker.bas ├── gam.128dlml.asm ├── gam.wheel.bas ├── prg.bbs list.bas ├── gam.startrek.bas ├── prg.star trek.bas └── gam.zcasino.bas ├── TODO ├── sys.text.seq ├── zelch ad.seq ├── conf.elite.seq ├── conf.simple.seq ├── conf.zelch.seq ├── wm ├── wm.data.seq ├── wm.end 1.seq ├── wm.end 2.seq ├── wm.help.seq ├── wm.intro.seq ├── wm.kills.seq ├── wm.maze.1.seq ├── wm.ml 1.seq ├── wm.ml 10.seq ├── wm.ml 2.seq ├── wm.ml 3.seq ├── wm.ml 4.seq ├── wm.ml 5.seq ├── wm.ml 6.seq ├── wm.ml 7.seq ├── wm.ml 8.seq ├── wm.ml 9.seq ├── wm.information.seq ├── prg.wm.boot.bas └── wm.players.r00 ├── sys.variables.seq ├── NOTICE ├── crsr 0e00.asm ├── raminstall.bas ├── ansi 3a00.asm ├── ansi maker.bas ├── ascii 3b00.asm ├── README ├── l-xfer 1300.asm ├── cursor-0e00.spt ├── bbs.setup.bas ├── docs └── bbs contents.txt ├── bbs.copy.bas ├── prg.new user.bas ├── bbs.ascii edit.bas ├── prg.monster.bas ├── prg.voting booth.bas └── v3.0 3d00.asm /BUGS.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /CHANGES: -------------------------------------------------------------------------------- 1 | # 2 | -------------------------------------------------------------------------------- /ee2/ee2.config.seq: -------------------------------------------------------------------------------- 1 | 8 0 -------------------------------------------------------------------------------- /extras/emp.config.seq: -------------------------------------------------------------------------------- 1 | 4 20 9 -------------------------------------------------------------------------------- /ee2/ee2.data.seq: -------------------------------------------------------------------------------- 1 | 62 -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- 1 | 1. Support ** in download op-code for limited open-directory support 2 | -------------------------------------------------------------------------------- /extras/emp.req.seq: -------------------------------------------------------------------------------- 1 | 100000 3000 100 500 500 500 10 100 100 20 -------------------------------------------------------------------------------- /sys.text.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/sys.text.seq -------------------------------------------------------------------------------- /zelch ad.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/zelch ad.seq -------------------------------------------------------------------------------- /conf.elite.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/conf.elite.seq -------------------------------------------------------------------------------- /conf.simple.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/conf.simple.seq -------------------------------------------------------------------------------- /conf.zelch.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/conf.zelch.seq -------------------------------------------------------------------------------- /ee2/ee2.goal.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.goal.seq -------------------------------------------------------------------------------- /ee2/ee2.msg.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.msg.seq -------------------------------------------------------------------------------- /ee2/ee2.news.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.news.seq -------------------------------------------------------------------------------- /wm/wm.data.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.data.seq -------------------------------------------------------------------------------- /wm/wm.end 1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.end 1.seq -------------------------------------------------------------------------------- /wm/wm.end 2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.end 2.seq -------------------------------------------------------------------------------- /wm/wm.help.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.help.seq -------------------------------------------------------------------------------- /wm/wm.intro.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.intro.seq -------------------------------------------------------------------------------- /wm/wm.kills.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.kills.seq -------------------------------------------------------------------------------- /wm/wm.maze.1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.maze.1.seq -------------------------------------------------------------------------------- /wm/wm.ml 1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 1.seq -------------------------------------------------------------------------------- /wm/wm.ml 10.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 10.seq -------------------------------------------------------------------------------- /wm/wm.ml 2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 2.seq -------------------------------------------------------------------------------- /wm/wm.ml 3.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 3.seq -------------------------------------------------------------------------------- /wm/wm.ml 4.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 4.seq -------------------------------------------------------------------------------- /wm/wm.ml 5.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 5.seq -------------------------------------------------------------------------------- /wm/wm.ml 6.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 6.seq -------------------------------------------------------------------------------- /wm/wm.ml 7.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 7.seq -------------------------------------------------------------------------------- /wm/wm.ml 8.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 8.seq -------------------------------------------------------------------------------- /wm/wm.ml 9.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.ml 9.seq -------------------------------------------------------------------------------- /ee2/ee2.Intro.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.Intro.seq -------------------------------------------------------------------------------- /ee2/ee2.power.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.power.seq -------------------------------------------------------------------------------- /extras/emp.msg.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.msg.seq -------------------------------------------------------------------------------- /sys.variables.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/sys.variables.seq -------------------------------------------------------------------------------- /ee2/ee2.helpmenu.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.helpmenu.seq -------------------------------------------------------------------------------- /ee2/ee2.message.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.message.seq -------------------------------------------------------------------------------- /ee2/ee2.strategic.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.strategic.seq -------------------------------------------------------------------------------- /ee2/ee2.updates.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.updates.seq -------------------------------------------------------------------------------- /extras/bnk.menu.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/bnk.menu.seq -------------------------------------------------------------------------------- /extras/cas.help 1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 1.seq -------------------------------------------------------------------------------- /extras/cas.help 2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 2.seq -------------------------------------------------------------------------------- /extras/cas.help 3.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 3.seq -------------------------------------------------------------------------------- /extras/cas.help 4.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 4.seq -------------------------------------------------------------------------------- /extras/cas.help 5.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 5.seq -------------------------------------------------------------------------------- /extras/cas.help 6.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.help 6.seq -------------------------------------------------------------------------------- /extras/cas.opener.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.opener.seq -------------------------------------------------------------------------------- /extras/cas.player.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/cas.player.seq -------------------------------------------------------------------------------- /extras/dat.intro.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/dat.intro.seq -------------------------------------------------------------------------------- /extras/dat.menu.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/dat.menu.seq -------------------------------------------------------------------------------- /extras/dat.verify.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/dat.verify.seq -------------------------------------------------------------------------------- /extras/emp.emps.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.emps.seq -------------------------------------------------------------------------------- /extras/emp.manif.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.manif.seq -------------------------------------------------------------------------------- /extras/emp.menu1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.menu1.seq -------------------------------------------------------------------------------- /extras/emp.menu2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.menu2.seq -------------------------------------------------------------------------------- /extras/emp.menu3.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.menu3.seq -------------------------------------------------------------------------------- /extras/emp.news.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.news.seq -------------------------------------------------------------------------------- /extras/emp.reqs.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.reqs.seq -------------------------------------------------------------------------------- /extras/emp.title.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/emp.title.seq -------------------------------------------------------------------------------- /extras/gal.rules.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/gal.rules.seq -------------------------------------------------------------------------------- /extras/mdr.help 1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.help 1.seq -------------------------------------------------------------------------------- /extras/mdr.help 2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.help 2.seq -------------------------------------------------------------------------------- /extras/mdr.help 3.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.help 3.seq -------------------------------------------------------------------------------- /extras/mdr.help 4.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.help 4.seq -------------------------------------------------------------------------------- /extras/mdr.help 5.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.help 5.seq -------------------------------------------------------------------------------- /extras/mdr.map 1.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.map 1.seq -------------------------------------------------------------------------------- /extras/mdr.map 2.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.map 2.seq -------------------------------------------------------------------------------- /extras/mdr.map 3.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.map 3.seq -------------------------------------------------------------------------------- /extras/mdr.map 4.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.map 4.seq -------------------------------------------------------------------------------- /extras/mdr.menu.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.menu.seq -------------------------------------------------------------------------------- /extras/mdr.title.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/mdr.title.seq -------------------------------------------------------------------------------- /extras/wall.menu.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/wall.menu.seq -------------------------------------------------------------------------------- /extras/wall.title.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/wall.title.seq -------------------------------------------------------------------------------- /wm/wm.information.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/wm/wm.information.seq -------------------------------------------------------------------------------- /ee2/ee2.production.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.production.seq -------------------------------------------------------------------------------- /extras/bnk.apphelp.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/bnk.apphelp.seq -------------------------------------------------------------------------------- /extras/bnk.loanapp.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/bnk.loanapp.seq -------------------------------------------------------------------------------- /extras/bnk.welcome.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/bnk.welcome.seq -------------------------------------------------------------------------------- /extras/gam.128dldic.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/extras/gam.128dldic.bin -------------------------------------------------------------------------------- /ee2/ee2.designations.seq: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/bozimmerman/Zelch128/HEAD/ee2/ee2.designations.seq -------------------------------------------------------------------------------- /NOTICE: -------------------------------------------------------------------------------- 1 | Zelch 128 2 | Copyright 1991-2021 William Fink, Bo Zimmerman 3 | 4 | This product includes software developed by 5 | William Fink and Bo Zimmerman 6 | http://www.zimmers.net 7 | 8 | Warriors & Monsters (C)1991 Matthew Beall 9 | Empire Edition II (C)1991 Jay MacNish 10 | -------------------------------------------------------------------------------- /crsr 0e00.asm: -------------------------------------------------------------------------------- 1 | * =$0E00 2 | BYTE $00,$00,$AA,$00,$00,$55,$00,$00,$AA,$00,$00,$55,$00,$00 3 | BYTE $AA,$00,$00,$55,$00,$00,$AA,$00,$00,$55,$00,$00,$00,$00,$00,$00 4 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 5 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 6 | BYTE $00,$FF,$00 -------------------------------------------------------------------------------- /extras/mdr.boot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:27:00 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\mdr.boot.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625 8 | 30010 OPEN2,8,2,MID$(STR$(D),2)+":mdr.losers":RECORD#2,31:PRINT#2,STR$(ID)+R$+U$(1)+R$+STR$(VAL(LEFT$(O$(2),6))):CLOSE2 9 | 30020 F$="mdr.motel":GOTO8940 10 | -------------------------------------------------------------------------------- /extras/gam.128dleboot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, Feb 18, 2023 12:27:59 AM 3 | !- c:\tmp\newproject\128dleboot.prg 4 | !- Commodore 128 BASIC 7/7.1 5 | !-------------------------------------------------- 6 | 30000 SYS15625 7 | 30020 GOSUB400:OPEN2,8,2,"scoredle,l,"+chr$(50) 8 | 30030 RECORD#2,502:PRINT#2,"0":RECORD#2,502 9 | 30040 RECORD#2,501:PRINT#2,ID;CHR$(13);LEFT$(O$(3),8):RECORD#2,501 10 | 30050 CLOSE2 11 | 30060 F$="gam.128dle":POKE2930,0:POKE2931,0:GOTO8940 12 | -------------------------------------------------------------------------------- /extras/emp.boot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:33:53 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\emp.boot.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625 8 | 30010 OPEN1,U,15,"s0:sys.temp":CLOSE1 9 | 30020 GOSUB400:OPEN2,U,2,MID$(STR$(D),2)+":sys.temp,s,w":PRINT#2,LEFT$(O$(3),8):PRINT#2,ID:PRINT#2,U$(1):PRINT#2,U$(5):CLOSE2 10 | 30030 F$="emp.title":GOSUB25 11 | 30040 F$="emp.main":POKE2930,0:POKE2931,0:GOTO8940 12 | 55555 SCRATCH"emp.boot",U(PEEK(186)):DSAVE"emp.boot",U(PEEK(186)) 13 | -------------------------------------------------------------------------------- /extras/prg.dating boot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:38:13 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\prg.dating boot.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM ========== DATING MODULE LOADER ================= 06/09/91 = 8 | 30010 OPEN1,U,15,"s0:sys.temp":CLOSE1:A$="0":IFU$(5)="Z"THENA$="1" 9 | 30020 OPEN2,U,2,MID$(STR$(D),2)+":sys.datingmeta,s,w":PRINT#2,U$(1)+R$+STR$(ID)+R$+A$+R$+STR$(D(4,0))+R$+STR$(D(4,1))+R$+STR$(M(14)):CLOSE2 10 | 30030 F$="prg.dating":POKE2930,0:POKE2931,0:GOTO8940 11 | -------------------------------------------------------------------------------- /ee2/prg.ee2.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Thursday, September 16, 2021 2:57:33 PM 3 | !- Import of : 4 | !- z:\_cbmsoft\_bo_unz\d-zelch\zee2wm\prg.ee2.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM ========== WARR MON MODULE LOADER ============= 06/09/91 = 8 | 30010 U=8:D=0:OPEN1,U,15,"s0:ee2.data":CLOSE1 9 | 30011 F$="ee2.splash":GOSUB26 10 | 30015 A$=STR$(PEEK(2863)):B$=STR$(PEEK(2879)):C$=STR$(PEEK(2880)):A$=RIGHT$(A$,2):B$=RIGHT$(B$,2):C$=RIGHT$(C$,2):O$=A$+B$+C$ 11 | 30016 FORX=1TO6:IFMID$(O$,X,1)=" "THENMID$(O$,X,1)="0" 12 | 30017 NEXT 13 | 30020 OPEN2,U,2,MID$(STR$(D),2)+":ee2.data,s,w":PRINT#2,STR$(ID)+CHR$(13)+O$+CHR$(13):CLOSE2 14 | 30030 U=8:D=0:F$="prg.ee2.init":POKE2930,0:POKE2931,0:GOTO8940 15 | -------------------------------------------------------------------------------- /ee2/ee2.sectors1.dat.seq: -------------------------------------------------------------------------------- 1 | 0000000000000000000000000000000000000000 0000000000000000000000000000000000000000 0000000000130000000000000000066600000000 0000000000000000000000000000361636000000 0000000000000000000000000000266636000000 0000000000130000000000000000000000000000 0000000000000000000000004535253500000000 0000000000000000000000002525253500000000 0000000000000000000000006545656500000000 0000000000000000000000004565900000000000 0000000013000000000000003525000000000000 0000000000000000000000000000006262426200 0000000000000000000000000000005290905200 0000000000000000620000000000002262225200 0000000000000062132200000000002222429000 0031313141510000620000000000000000000000 0051516161210000000000000000000000000000 0031415121510000000000000000000000000000 0061612151610000000000000000001400000000 0041611131210000000000000000000000000000 -------------------------------------------------------------------------------- /wm/prg.wm.boot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Thursday, September 16, 2021 3:00:15 PM 3 | !- Import of : 4 | !- c:\dev\zelch128\ee2\ggg.warr&mons.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM ========== WARR MON MODULE LOADER ============= 06/09/91 = 8 | 30010 U=8:D=0:OPEN1,U,15,"s0:wm.data":CLOSE1 9 | 30011 F$="wm.intro":GOSUB26 10 | 30015 A$=STR$(PEEK(2863)):B$=STR$(PEEK(2879)):C$=STR$(PEEK(2880)):A$=RIGHT$(A$,2):B$=RIGHT$(B$,2):C$=RIGHT$(C$,2):O$=A$+B$+C$ 11 | 30016 FORX=1TO6:IFMID$(O$,X,1)=" "THENMID$(O$,X,1)="0" 12 | 30017 NEXT 13 | 30020 OPEN2,U,2,MID$(STR$(D),2)+":wm.data,s,w":PRINT#2,STR$(ID)+CHR$(13)+U$(1)+CHR$(13)+O$+CHR$(13)+STR$(PEEK(2829)):CLOSE2 14 | 30030 U=8:D=0:F$="prg.wm.p1":POKE2930,0:POKE2931,0:GOTO8940 15 | -------------------------------------------------------------------------------- /extras/dat.create.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:33:44 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\dat.create.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 5 :::::::::::::::::::::::::::::::::::::INPUT"unit,drive:";U,D 8 | 10 OPEN2,U,2,MID$(STR$(D),2)+":dat.users,l,"+CHR$(127) 9 | 20 INPUT"create how many files (max=500)";A:IFA>500 OR A<0THEN20 10 | 30 INPUT"resume' option available (1=yes, 0=no)";B 11 | 35 INPUT"drive, lu for resume's (enter as 8,0)";D,LU 12 | 40 RECORD#2,A+1:PRINT#2,"0" 13 | 50 RECORD#2,1:PRINT#2,STR$(A)+CHR$(13)+STR$(B)+CHR$(13)+STR$(D)+CHR$(13)+STR$(LU) 14 | 55 REM ID, HANDLE, INFO/RESUME, NAME, PHONE, ANSWERS 15 | 60 A$="0"+CHR$(13)+"^"+CHR$(13)+"00"+CHR$(13)+"^"+CHR$(13)+"^"+CHR$(13) 16 | 70 A$=A$+"0000000000000000000"+CHR$(13) 17 | 80 FORI=2TOA:RECORD#2,I:PRINT#2,A$;:NEXTI:CLOSE2:END 18 | 19 | -------------------------------------------------------------------------------- /extras/bnk.create.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Tuesday, August 17, 2021 11:55:30 PM 3 | !- Import of : 4 | !- c:\tmp\z128\bnk.create.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 PRINT"{clear}{down*3}{ct n}Zelch Bank v1.0 Create" 8 | 20 INPUT"{down*4}Device, Drive to create files on{space*3}8,0{left*5}";U,D 9 | 30 INPUT"# users configured for on system{space*3}500{left*5}";UU 10 | 40 PRINT"{down*5}Hit RETURN{sh space}to begin, Q to quit>"; 11 | 50 GETKEYA$:IFA$="q"ORA$="Q"THENPRINTA$;:END:ELSEIFA$<>CHR$(13)THEN50 12 | 60 PRINTA$;:PRINT"{down*2}Working..." 13 | 70 OPEN2,U,2,MID$(STR$(D),2)+":bnk.accounts,l,"+CHR$(127):RECORD#2,UU+1:PRINT#2,"Burp!":R$=CHR$(13):A$="0"+R$ 14 | 80 FORI=1TOUU:RECORD#2,I:PRINT#2,A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$:NEXTI:CLOSE2 15 | 90 OPEN2,U,2,MID$(STR$(D),2)+":bnk.records,l,"+CHR$(127):RECORD#2,INT(UU/4):PRINT#2,"Burp!": 16 | 100 FORI=1TOINT(UU/4):RECORD#2,I:PRINT#2,"{pound}"+R$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$+A$:NEXTI:CLOSE2 17 | 110 PRINT"{down*2}done.":END 18 | -------------------------------------------------------------------------------- /raminstall.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, August 13, 2016 1:49:25 PM 3 | !- Import of : 4 | !- c:\tmp\newproject\raminstall.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 GRAPHICCLR:A=RGR(0):GRAPHIC1,1:GRAPHIC(A) 8 | 20 PRINT"{clear}{ct n}RamInstall for Zelch 128 v2.0a":U=PEEK(186):D=0 9 | 30 OPEN1,U,15:OPEN2,U,2,"0:ramdos128.bin*,p,r" 10 | 40 INPUT#1,A:CLOSE2:CLOSE1 11 | 50 IFATHENPRINT"{down}RamDos is not on drive "MID$(STR$(U),2)","MID$(STR$(D),2):ELSEGOTO90 12 | 60 PRINT"{down}Insert the disk containing 'ramdos128'." 13 | 70 OPEN1,0:PRINT"Which drive is it on? "MID$(STR$(U),2)",0{left*4}";:INPUT#1,U,D:PRINT:CLOSE1 14 | 80 GOTO30 15 | 90 BLOAD"ramdos128.bin*",U(U),D(D) 16 | 100 PRINT"{down}Insert your boot disk." 17 | 110 OPEN1,0:PRINT"Which drive is it on? "MID$(STR$(U),2)",0{left*4}";:INPUT#1,U,D:PRINT:CLOSE1 18 | 120 OPEN1,0:PRINT"{down}Device number for RamDrive (8-30)? 9{left}";:INPUT#1,I:PRINT:CLOSE1 19 | 130 POKE16128,I:BSAVE"ramdos128",U(U),D(D),P(8960) TO P(16129) 20 | 140 PRINT"{clear}RamDos installation complete." 21 | -------------------------------------------------------------------------------- /extras/gal.boot.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:27:59 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\gal.boot.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625 8 | 30020 GOSUB400:OPEN2,8,2,"gal.galaxy":RECORD#2,36:PRINT#2,STR$(ID)+CHR$(13)+LEFT$(O$(3),8):CLOSE2 9 | 30030 GOSUB30050 10 | 30040 F$="gal.empire":POKE2930,0:POKE2931,0:GOTO8940 11 | 30050 O$="{clear}{down*2}{white}":GOSUB4 12 | 30060 O$="{space*2}.{space*7}.{space*5}.{space*7}.":GOSUB4 13 | 30070 O$="{space*3}..{space*2}.{space*3}.{space*6}.{space*2}.{space*3}":GOSUB4 14 | 30080 O$=" .{space*4}. {light blue}galactic {white}{space*4}. ":GOSUB4 15 | 30090 O$="{space*3}.{space*2}. {light blue} EMPIRE{white}{space*2}.{space*2}.{space*2}":GOSUB4 16 | 30100 O$=" .{space*3}.{space*3}.{space*5}.{space*4}.{space*3}.":GOSUB4 17 | 30110 O$="{space*2}{light green}v2.0 by Bo Zimmerman{white}.{space*2}":GOSUB4 18 | 30120 O$="{white} . {green}(c)1991 Elite Software{white} .":GOSUB4 19 | 30121 O$="{white}{space*3}..{space*2}.{space*3}.{space*6}.{space*4}.{space*3}":GOSUB4 20 | 30122 O$="{space*2}.{space*7}.{space*5}.{space*7}.":GOSUB4 21 | 30130 RETURN 22 | 55555 SCRATCH"gal.boot",U(PEEK(186)):DSAVE"gal.boot",U(PEEK(186)) 23 | -------------------------------------------------------------------------------- /ansi 3a00.asm: -------------------------------------------------------------------------------- 1 | *= $3A00 2 | BYTE $91,$91,$31,$41,$00,$11,$11,$31,$42,$00,$1D,$1D,$31,$43 3 | BYTE $00,$9D,$9D,$31,$44,$00,$93,$93,$32,$4A,$00,$1C,$1C,$30,$3B,$33 4 | BYTE $31,$6D,$00,$96,$96,$31,$3B,$33,$31,$6D,$00,$1E,$1E,$30,$3B,$33 5 | BYTE $32,$6D,$00,$99,$99,$31,$3B,$33,$32,$6D,$00,$95,$95,$30,$3B,$33 6 | BYTE $33,$6D,$00,$9E,$9E,$31,$3B,$33,$33,$6D,$00,$1F,$1F,$30,$3B,$33 7 | BYTE $34,$6D,$00,$9A,$9A,$31,$3B,$33,$34,$6D,$00,$81,$9C,$30,$3B,$33 8 | BYTE $35,$6D,$00,$9C,$9C,$31,$3B,$33,$35,$6D,$00,$97,$97,$30,$3B,$33 9 | BYTE $36,$6D,$00,$98,$97,$30,$3B,$33,$36,$6D,$00,$9F,$9F,$31,$3B,$33 10 | BYTE $36,$6D,$00,$9B,$9B,$30,$3B,$33,$37,$6D,$00,$05,$05,$31,$3B,$33 11 | BYTE $37,$6D,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 12 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 13 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 14 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 15 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 16 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 17 | BYTE $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 18 | BYTE $00 -------------------------------------------------------------------------------- /ansi maker.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, August 13, 2016 1:35:47 PM 3 | !- Import of : 4 | !- c:\tmp\newproject\ansi maker.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 FAST 8 | 20 PRINT"{clear}ansi maker" 9 | 25 INPUT"{down}load ascii tables (y/n) y{left*3}";L$ 10 | 26 IFL$="y"ORL$="Y"THENINPUT" drive 8,0{left*5}";U,D 11 | 27 IFL$="y"ORL$="Y"THENBLOAD"ascii 3b00",U(U),D(D) 12 | 28 PRINT"{down*2}working..." 13 | 29 FORI=DEC("3a00")TODEC("3aff"):POKEI,0:NEXTI:HI=DEC("3a00") 14 | 30 READA$,A$:IFA$="*"THEN40 15 | 31 FORX=1TOLEN(A$):IFX<3THEN33 16 | 32 POKEHI+X-1,PEEK(DEC("3c00")+ASC(MID$(A$,X,1))):GOTO35 17 | 33 POKEHI+X-1,ASC(MID$(A$,X,1)) 18 | 35 NEXTX:HI=HI+X:POKEHI,0:GOTO30 19 | 37 POKEHI+1,0 20 | 40 INPUT"{down*2}save (y/n) y{left*3}";A$:IFA$="n"ORA$="N"THENEND 21 | 50 INPUT" drive 8,0{left*5}";U,D 22 | 60 SCRATCH"ansi 3a00",U(U),D(D):BSAVE"ansi 3a00",U(U),D(D),P(14838)TOP(15103) 23 | 90 STOP 24 | 100 DATA CRSRUP ,"{up*2}1A" 25 | 110 DATA CRSRDOWN ,"{down*2}1B" 26 | 120 DATA CRSRRIGHT,"{right*2}1C" 27 | 130 DATA CRSRLEFT ,"{left*2}1D" 28 | 140 DATA CLEARSCN ,"{clear*2}2J" 29 | 150 DATA RED ,"{red*2}8;31m" 30 | 160 DATA LTRED ,"{pink*2}1;31m" 31 | 170 DATA GREEN ,"{green*2}8;32m" 32 | 180 DATA LTGREEN ,"{light green*2}1;32m" 33 | 190 DATA BROWN ,"{brown*2}8;33m" 34 | 200 DATA YELLOW ,"{yellow*2}1;33m" 35 | 210 DATA BLUE ,"{blue*2}8;34m" 36 | 220 DATA LTBLUE ,"{light blue*2}1;34m" 37 | 230 DATA VIOLET ,"{orange}{purple}8;35m" 38 | 240 DATA PURPLE ,"{purple*2}1;35m" 39 | 250 DATA DKCYAN ,"{dark gray*2}8;36m" 40 | 260 DATA GREY ,"{gray}{dark gray}8;36m" 41 | 270 DATA CYAN ,"{cyan*2}1;36m" 42 | 280 DATA DKGREY ,"{light gray*2}8;37m" 43 | 290 DATA WHITE ,"{white*2}1;37m" 44 | 999 DATA DONE,"*" 45 | -------------------------------------------------------------------------------- /extras/gal.setup.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:34:36 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gal.setup.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 1 U=PEEK(186):R$=CHR$(13):I=RND(-TI):GOTO100 8 | 2 PRINT#1,"p"CHR$(98)CHR$(I)CHR$(0)CHR$(0):RETURN 9 | 55 U=PEEK(186):OPEN1,U,15,"s0:gal.setup":CLOSE1:SAVE"gal.setup",U:STOP 10 | 100 OPEN1,U,15,"s0:gal.galaxy":OPEN2,U,2,"gal.galaxy,l,"+CHR$(50) 11 | 110 I=36:GOSUB2:PRINT#2,"shit" 12 | 120 FORI=1TO10:GOSUB2 13 | 130 PRINT#2," 0"+R$+"0000000000"+R$+"^"+R$+" 0" 14 | 140 NEXTI 15 | 150 DIMP(25,4) 16 | 160 FORI=1TO25:P(I,0)=-1:PRINTI, 17 | 170 P(I,1)=INT(RND(TI)*35)+1 18 | 180 P(I,2)=INT(RND(TI)*20)+1 19 | 190 IFI=1THEN230 20 | 200 A=0:FORX=1TOI-1 21 | 210 IFABS(P(I,1)-P(X,1))<2ANDABS(P(I,2)-P(X,2))<2THENA=1 22 | 220 NEXTX:IFATHEN170 23 | 230 P(I,3)=INT(RND(TI)*30)+10 24 | 240 P(I,4)=(INT(RND(TI)*20)+1)*P(I,3) 25 | 250 NEXTI:PRINT:PRINT 26 | 260 FORI=11TO35:A$="":GOSUB2:PRINTI, 27 | 270 FORX=0TO4:A$=A$+STR$(P(I-10,X))+R$:NEXTX 28 | 280 READB$:PRINT#2,B$+R$+LEFT$(A$,LEN(A$)-1) 29 | 290 NEXTI:PRINT:PRINT 30 | 300 I=36:GOSUB2:PRINT#2," 1"+R$+"03/01/91":CLOSE2:CLOSE1:DIMG(35,20) 31 | 310 FORI=1TO25:G(P(I,1),P(I,2))=1:NEXTI 32 | 320 FORY=1TO20:PRINT:FORX=1TO35 33 | 330 PRINT".";:IFG(X,Y)THENPRINT"{left}o"; 34 | 340 NEXTX:NEXTY 35 | 350 OPEN1,U,15,"s0:gal.missions":OPEN2,U,2,"gal.missions,l,"+CHR$(30) 36 | 360 A$="":FORI=1TO6:A$=A$+"0"+CHR$(13):NEXTI 37 | 370 I=101:GOSUB2:PRINT#2,"burp":FORI=1TO100:GOSUB2:PRINT#2,A$:NEXTI 38 | 380 CLOSE2:CLOSE1:END 39 | 1000 DATA "Zelch","Delta IV","Tyraki","Ermini II","Terra","Alphatron" 40 | 1010 DATA "Aurorus","Solora","Pheta IX","Nemesis","Phaze","Proton","GammaWorld" 41 | 1020 DATA "Freestar","Cyrus","Blade","Bluering","Tertious","Vulga","Betazon" 42 | 1030 DATA "Wavern","Plutoia","Quation","Havnon","Karga-Tuk" 43 | -------------------------------------------------------------------------------- /ee2/prg.ee2.init.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Thursday, September 16, 2021 2:57:09 PM 3 | !- Import of : 4 | !- z:\_cbmsoft\_bo_unz\d-zelch\zee2wm\prg.ee2.init.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 REM ****** EMPIRE INITIALIZATION MODULE ******************************* 8 | 20 CLR:FAST:DIM M$(25),P$(11,10),P(11,26) 9 | 30 DIM AR%(21,21,11),PR$(401),A$(31),MT$(13) 10 | 40 DIM XC(401),YC(401),S(401) 11 | 50 FORX=1TO12:READMT$(X):NEXTX 12 | 60 U=8:DV=0:REM ---===> DEFAULT DRIVE AND UNIT INFO! CHANGE AS REQUIRED!!! 13 | 70 PRINTCHR$(14):PRINT"{white}{clear}";:POKE53281,0:POKE53280,0 14 | 80 XM$(1)="0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2" 15 | 90 XM$(2)="0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0" 16 | 100 C$(1)=" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz,./<>?!#$%&'()0+-{pound}1234567890:;[]"+CHR$(34) 17 | 110 Q$=CHR$(34) 18 | 120 C$(2)=" ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" 19 | 130 C$(3)="1234567890" 20 | 140 C$(4)=C$(2)+C$(3) 21 | 150 C$(5)=C$(3)+"," 22 | 160 SP$="{space*46}" 23 | 170 MK$(0)="None":MK$(1)="Missles":MK$(2)="Convent.":MK$(3)="Nuclear":MK$(4)="Chemical":MK$(5)="Guns":MK$(6)="Food":MK$(7)="Ore":MK$(8)="Energy" 24 | 180 MK$(9)="Airplanes" 25 | 190 DOPEN#1,"ee2.data",D(DV),U(U),R:IF DS<>0 THEN DCLOSE#1:PRINT "ERROR: Date/User data missing!":END 26 | 200 INPUT#1,PA$(1),PA$(2),PA$(3):IF DS<>0 THEN DCLOSE#1:PRINT "ERROR: Date/User data corrupt!":END:ELSE DCLOSE#1 27 | 210 DT$=PA$(3) 28 | 220 A=VAL(LEFT$(DT$,2)):B=VAL(MID$(DT$,3,2)):C=VAL(RIGHT$(DT$,2)):LD$=MT$(B)+STR$(A)+", 19"+MID$(STR$(C),2) 29 | 230 PRINT "{cyan}Empire Edition II -- Initialization Module{white}:" 30 | 240 EP$="prg.ee2.main":SR$="prg.ee2.str":MN$="prg.ee2.maint" 31 | 250 PRINT "{blue}-->{light blue}Please wait, now loading Empire Edition II." 32 | 260 DLOAD(EP$),D(DV),U(U) 33 | 270 DATA "January","Febuary","March","April","May","June","July","August","September","October","November","December" 34 | -------------------------------------------------------------------------------- /extras/run.me.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:33:19 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\run.me.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 10 REM TYPE "run" AND PRESS RETURN 8 | 20 PRINT"{clear}{cyan} The configurations on your disk include the" 9 | 30 PRINT"sequential files necessary to set up certain systems." 10 | 40 PRINT"Keep in mind the following points:" 11 | 50 PRINT 12 | 60 PRINT" {white}o{cyan} After unpacking your choice configuration, you should 13 | 70 PRINT"make sure you have configured the necessary relative files." 14 | 80 PRINT 15 | 90 PRINT" {white}o{cyan} Remember that you must set up the message base and" 16 | 100 PRINT"u/d base records used by the configurations for everything" 17 | 110 PRINT"to work correctly." 18 | 120 PRINT 19 | 130 PRINT" {white}o{cyan} On the main menu of all three configurations is an" 20 | 140 PRINT"'information' type command. READ THIS FILE FIRST" 21 | 150 PRINT"after logging onto the configuration." 22 | 160 PRINT 23 | 170 PRINT" {white}o{cyan} The 'simplicity' configuration was included to serve as" 24 | 180 PRINT"a good working setup for small-medium systems. It features" 25 | 190 PRINT"a one menu setup and an open transfer system." 26 | 200 PRINT"{down*3}Hit return:";:DO:GETA$:LOOPUNTILA$=CHR$(13) 27 | 210 PRINT"{clear}{down*3} {white}o{cyan} The 'prg' files included with the configurations are" 28 | 220 PRINT"necessary for certain functions on that setup to work. Most" 29 | 230 PRINT"'prg' files will go on the definable drive, with the exception" 30 | 240 PRINT"of 'prg.dating boot', 'prg.dating', and 'prg.bbs list' from the" 31 | 250 PRINT"Elite configuration. These three files will be looked for on" 32 | 260 PRINT"the system program files drive." 33 | 270 PRINT 34 | 280 PRINT" {white}o{cyan} Also, most of the 'prg' files included can be used" 35 | 290 PRINT"on other configurations with a little menu work." 36 | 300 PRINT 37 | 310 PRINT" Welp, have fun, and remember- if you have any questions or" 38 | 320 PRINT"problems, give us a call!" 39 | 330 PRINT 40 | 340 PRINT" - Elite Software 41 | -------------------------------------------------------------------------------- /ascii 3b00.asm: -------------------------------------------------------------------------------- 1 | * =$3B00 2 | BYTE $00,$00,$00,$00,$00,$00,$00,$07,$14,$00,$00,$00,$00,$0D 3 | BYTE $00,$00,$14,$00,$00,$13,$00,$00,$00,$00,$18,$00,$00,$1B,$00,$00 4 | BYTE $00,$00,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D 5 | BYTE $2E,$2F,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D 6 | BYTE $3E,$3F,$40,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD 7 | BYTE $CE,$CF,$D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$5B,$5C,$5D 8 | BYTE $5E,$A4,$27,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D 9 | BYTE $4E,$4F,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$3A,$5D 10 | BYTE $7E,$00,$00,$20,$20,$20,$20,$20,$20,$20,$14,$20,$20,$20,$20,$0D 11 | BYTE $20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20,$20 12 | BYTE $20,$20,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D 13 | BYTE $2E,$2F,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D 14 | BYTE $3E,$3F,$40,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD 15 | BYTE $CE,$CF,$D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$DB,$DC,$DD 16 | BYTE $DE,$DF,$60,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D 17 | BYTE $4E,$4F,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$7B,$7C,$7D 18 | BYTE $7E,$7F,$00,$00,$00,$00,$00,$00,$00,$07,$00,$00,$0A,$00,$00,$0D 19 | BYTE $00,$00,$00,$0D,$00,$00,$08,$00,$00,$00,$18,$00,$00,$1B,$00,$20 20 | BYTE $00,$00,$20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D 21 | BYTE $2E,$2F,$30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D 22 | BYTE $3E,$3F,$40,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D 23 | BYTE $6E,$6F,$70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$5B,$5C,$5D 24 | BYTE $5E,$3C,$2D,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D 25 | BYTE $4E,$4F,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$23,$21,$21 26 | BYTE $21,$21,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0D 27 | BYTE $00,$00,$00,$0D,$00,$00,$14,$00,$00,$00,$00,$00,$00,$00,$00,$08 28 | BYTE $00,$00,$20,$21,$2D,$2D,$2D,$21,$23,$21,$6D,$23,$21,$21,$2E,$2B 29 | BYTE $2B,$2D,$2B,$2B,$2B,$21,$21,$21,$21,$2D,$2D,$2D,$3E,$2E,$2E,$2B 30 | BYTE $2E,$2F,$2D,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D 31 | BYTE $4E,$4F,$50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$23,$21,$21 32 | BYTE $21,$21,$20,$21,$2D,$2D,$2D,$21,$23,$21,$2D,$2F,$21,$21,$2E,$2E 33 | BYTE $2E,$2D,$2E,$2D,$2D,$21,$21,$21,$21,$2D,$2D,$2D,$3E,$2E,$2E,$2E 34 | BYTE $2E,$00,$4C -------------------------------------------------------------------------------- /extras/wall.create.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:26:14 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\wall.create.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 10 PRINT"{clear}{down*2}{ct n}Wall Street z128 vII":DIMOT(26) 8 | 20 PRINT"{down}By{space*2}Bo Zimmerman" 9 | 30 PRINT"For Elite Software" 10 | 40 PRINT"{down}System data creation program{down*2}":R$=CHR$(13):A$="":FORI=1TO(28*2):A$=A$+" 0"+R$:NEXTI 11 | 100 INPUT"Create files on what drive{space*2}8,0{left*5}";U,D 12 | 105 INPUT"Convert 1.0 to version II{space*3}n{left*3}";CY$::IFCY$="y"THEN130 13 | 110 INPUT"Reset Wall Street prices{space*4}y{left*3}";CP$ 14 | 120 INPUT"Clear out occupied seats{space*4}y{left*3}";CS$ 15 | 130 INPUT"Create how many seats{space*7}50{left*4}";HS 16 | 140 INPUT"Price per seat{space*14}200{left*5}";PS 17 | 150 INPUT"Stock price multiplier{space*6}1{left*3}";SM 18 | 160 INPUT"Stock issue/sig: MAX MSGS X 100{left*5}";SI 19 | 170 INPUT"Use trade restrictions{space*6}y{left*3}";TR$ 20 | 999 INPUT"{down*2}Begin file access (y/n){space*2}y{left*3}";YN$:IFYN$<>"y"THEN10 21 | 1000 IFCY$="y"THEN10000:ELSEPRINT"{down}Writing seats file..." 22 | 1010 OPEN2,U,2,MID$(STR$(D),2)+":wall.seats,l,"+CHR$(253) 23 | 1020 IFCS$="y"THENRECORD#2,HS+2:PRINT#2,"burp!" 24 | 1030 RECORD#2,1:PRINT#2,STR$(HS)+R$+STR$(PS)+R$+STR$(SM)+R$+STR$(SI)+R$+TR$+R$+"System access-- no WS report"+R$+" 0" 25 | 1040 IFCS$="y"THENFORI=2TOHS+1:RECORD#2,I:PRINT#2,A$:NEXTI:ELSEPRINT"{down}Leaving seat records untouched." 26 | 1050 CLOSE2 27 | 2000 IFCP$<>"y"THEN3000:ELSEPRINT"{down}Creating price file..." 28 | 2010 OPEN2,U,2,MID$(STR$(D),2)+":wall.records,l,"+CHR$(253) 29 | 2020 RECORD#2,30:PRINT#2,"burp!" 30 | 2030 FORI=1TO30:RECORD#2,I:PRINT#2,A$:NEXTI 31 | 2040 CLOSE2 32 | 3000 END 33 | 10000 PRINT"{down*6}Working..." 34 | 10010 OPEN2,U,2,MID$(STR$(D),2)+":wall.seats" 35 | 10020 RECORD#2,1:PRINT#2,STR$(HS)+R$+STR$(PS)+R$+STR$(SM)+R$+STR$(SI)+R$+TR$+R$+"System access-- no WS report"+R$+" 0" 36 | 10030 FORX=2TOHS+1:RECORD#2,X:A$="":INPUT#2,A$ 37 | 10040 A$=A$+R$:FORY=1TO26:INPUT#2,I$:OT(Y)=OT(Y)+VAL(I$):A$=A$+I$+R$:NEXTY 38 | 10050 FORY=1TO26:A$=A$+"0"+R$:NEXTY:RECORD#2,X:RECORD#2,X:PRINT#2,A$ 39 | 10060 NEXTX:CLOSE2 40 | 11000 OPEN2,U,2,MID$(STR$(D),2)+":wall.records" 41 | 11010 RECORD#2,30:A$="":FORI=1TO10:A$=A$+"0"+R$:NEXTI 42 | 11020 RECORD#2,30:PRINT#2,A$ 43 | 11030 FORX=1TO26:RECORD#2,X:A$="":FORI=1TO3:INPUT#2,I$:A$=A$+I$+R$:NEXTI 44 | 11040 A$=A$+STR$(OT(X))+R$:RECORD#2,X:RECORD#2,X:PRINT#2,A$ 45 | 11050 NEXTX:CLOSE2:END 46 | 11060 OPEN2,9,2,"4:wall.seats":RECORD#2,1:FORI=1TO5:INPUT#2,A:PRINTA:NEXTI:CLOSE2 47 | -------------------------------------------------------------------------------- /extras/gam.hangman.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:35:23 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gam.hangman.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 PRINT:PRINT"{reverse on}{pink}H{yellow}a{white}n{cyan}g{light blue}m{blue}a{purple}n{reverse off} {red}v1.0" 8 | 20 B$(1)="O":B$(2)="#":B$(3)="[":B$(4)="]":B$(5)="<":B$(6)=">" 9 | 30 PRINT:PRINT"Finding a puzzle...";:SLEEP1:PRINT:M=0 10 | 40 READX:V=INT(RND(0)*X)+1:FORX=1TOV:READP$:NEXT 11 | 50 D$="":G$="":FORX=1TOLEN(P$):D$=D$+"?":NEXT 12 | 60 C=0:PRINT:PRINT"{yellow}";D$:PRINT"{cyan}Letters used: {white}";G$ 13 | 70 PRINT:PRINT"{pink}Next guess: ";:GETKEYA$:PRINTA$ 14 | 80 FORX=1TO26:IFA$=MID$("abcdefghijklmnopqrstuvwxyz",X,1)THEN120 15 | 90 NEXTX:FORX=1TO26:IFA$=MID$("ABCDEFGHIJKLMNOPQRSTUVWXYZ",X,1)THEN130 16 | 100 NEXTX:IFA$="*"THENPRINT:PRINT"{yellow}Thanks for playing hangman!":END 17 | 110 PRINT:PRINT"{light green}Invalid letter, press * to quit.":GOTO60 18 | 120 A$=MID$("ABCDEFGHIJKLMNOPQRSTUVWXYZ",X,1) 19 | 130 FORX=1TOLEN(G$):IFMID$(G$,X,1)=A$THENPRINT:PRINT"{white}You've already picked ";A$;"!":GOTO170 20 | 140 NEXTX:G$=G$+A$:FORX=1TOLEN(P$):IFMID$(P$,X,1)=A$THENMID$(D$,X,1)=A$:IFC<1THENPRINT:PRINT"{light gray}There is a(n) ";A$;"!":C=1 21 | 150 NEXTX:FORX=1TOLEN(D$):IFMID$(D$,X,1)="?"THEN170 22 | 160 NEXTX:PRINT:PRINT"{yellow}You guessed it!":PRINT:PRINT"The puzzle was ";P$;"!":END 23 | 170 IFC=1THEN60:ELSEM=M+1:PRINT:PRINT"{down}{purple} ,----+" 24 | 173 IFM>0THENPRINT" {yellow}"B$(1); 25 | 174 GOSUB190:IFM>4THENPRINT"{yellow}"B$(5);:ELSEPRINT" "; 26 | 175 IFM>1THENPRINT"{yellow}"B$(2);:ELSEPRINT" "; 27 | 176 IFM>5THENPRINT"{yellow}"B$(6);:ELSEPRINT" "; 28 | 177 GOSUB190:IFM>2THENPRINT"{yellow}"B$(3)" ";:ELSEPRINT" "; 29 | 178 IFM>3THENPRINT"{yellow}"B$(4);:ELSEPRINT" "; 30 | 179 GOSUB190:GOSUB190:PRINT"{purple} -----+--{down}":PRINT:IFM<6THEN60 31 | 180 PRINT:PRINT"{yellow}You're hung! Better luck next time.":END 32 | 190 PRINTTAB(6);"{purple}!":RETURN 33 | 500 DATA 51 : REM NUMBER OF PUZZLES 34 | 510 DATA "COMPUTER","LIGHTNING","BARNYARD","BICYCLE","DICTIONARY","CIRCUS" 35 | 520 DATA "HAMBURGER","MACHINE","AIRPLANE","SCIENTIST","AMATEUR" 36 | 630 DATA "CONGRESS","RIFLE","ARTIST","BEDROOM","HOTEL","REFRIGERATOR" 37 | 640 DATA "UNIVERSITY","IMAGINATION","FRUSTRATION","MIRROR" 38 | 650 DATA "ELEVATOR","JAVELINA","VANILLA","CHALLENGER","CENTIPEDE" 39 | 660 DATA "ELECTRICITY","COUGH","ALBUM","CASSETTE","INTELLIGENCE" 40 | 670 DATA "LANTERN","PUMPKIN","STRAWBERRY","BOUQUET","FLORAL","BALANCE" 41 | 680 DATA "WATERMELON","COUNTDOWN","BEGINNING","JOYSTICK","SHELVES" 42 | 690 DATA "OCCUPATION","CALENDAR","ASTRONAUT","ATMOSPHERE","MONSTER" 43 | 700 DATA "GRAVEYARD","EMPEROR","PAJAMAS","EVERGREEN": REM 51 PUZZ 44 | -------------------------------------------------------------------------------- /extras/gal.maint.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:28:41 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\gal.maint.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 U1=8:ND=15:R$=CHR$(13):GOTO170 8 | 20 PRINT#1,"p"CHR$(98)CHR$(I)CHR$(0)CHR$(0):RETURN 9 | 30 OPEN1,U1,15:OPEN2,U1,2,"0:gal.galaxy":A$="" 10 | 40 EM$(RD,1)=DT$:FORI=1TO10:A$="":GOSUB20:FORX=0TO4:A$=A$+EM$(I,X)+R$:NEXTX 11 | 50 PRINT#2,A$;:NEXTI:FORI=11TO35:A$=PL$(I-10)+R$:GOSUB20:FORX=0TO4 12 | 60 A$=A$+STR$(PL(I-10,X))+R$ 13 | 70 NEXTX:PRINT#2,A$;:NEXTI:CLOSE2:OPEN2,U1,2,"0:gal.missions":I=1:X=1 14 | 80 IFMS(X,0)=0THEN100 15 | 90 GOSUB20:A$="":FORY=0TO5:A$=A$+STR$(MS(X,Y))+R$:NEXTY:PRINT#2,A$;:I=I+1 16 | 100 X=X+1:IFX<101THEN80 17 | 110 GOSUB20:PRINT#2,"0" 18 | 120 CLOSE2:CLOSE1:PRINTR$:END 19 | 130 FORB=0TO5:MS(A,B)=0:NEXTB:RETURN 20 | 140 REM******************************** 21 | 150 REM**********READ IN DATA FOR MAINT 22 | 160 REM******************************** 23 | 170 DIMGX(35,20),PL$(25),PL(25,4),EM$(10,4),RD,TL(20,4),G2(35,20),MS(201,5) 24 | 180 TT=1 25 | 190 OPEN1,U1,15:OPEN2,U1,2,"0:gal.galaxy" 26 | 200 FORI=1TO10:GOSUB20:FORX=0TO4:INPUT#2,EM$(I,X):NEXTX:NEXTI 27 | 210 FORI=11TO35:GOSUB20:X=I-10 28 | 220 INPUT#2,PL$(X):FORY=0TO4:INPUT#2,PL(X,Y):NEXTY 29 | 230 NEXTI:I=36:GOSUB20:INPUT#2,ID,DT$:V1=0 30 | 240 CLOSE2:CLOSE1:OPEN1,U1,15:OPEN2,U1,2,"0:gal.missions":I=1 31 | 250 GOSUB20:INPUT#2,A:IFA=0ORI>199THENCLOSE2:CLOSE1:GOTO270 32 | 260 MS(I,0)=A:FORY=1TO5:INPUT#2,MS(I,Y):NEXTY:I=I+1:GOTO250 33 | 270 FORI=1TO25:GX(PL(I,1),PL(I,2))=PL(I,0):G2(PL(I,1),PL(I,2))=I 34 | 280 NEXTI:RD=0:FORI=1TO10:IFID=VAL(EM$(I,0))THENRD=I 35 | 290 NEXTI:GOTO330 36 | 300 REM****************************** 37 | 310 REM********PERFORM MAINTENANCE 38 | 320 REM****************************** 39 | 330 PRINT"{light green}Galactic weed..." 40 | 340 W2=VAL(MID$(DT$,4,2)):W3=VAL(MID$(DT$,1,2)):W4=VAL(MID$(DT$,7,2)) 41 | 350 FORI=1TOND 42 | 360 W2=W2-1:IFW2<1THENW3=W3-1:W2=30:IFW3<1THENW3=12:W2=31:W4=W4-1 43 | 370 IFW4<0THENW4=99 44 | 380 NEXTI:W1$=RIGHT$(STR$(W4),2)+RIGHT$(STR$(W3),2)+RIGHT$(STR$(W2),2) 45 | 390 FORI=1TOLEN(W1$) 46 | 400 IFMID$(W1$,I,1)=" "THENW1$=LEFT$(W1$,I-1)+"0"+MID$(W1$,I+1,LEN(W1$)) 47 | 410 NEXTI 48 | 420 E=0:FORI=1TO10:W0$=EM$(I,1):W2$=MID$(W0$,7,2)+MID$(W0$,1,2)+MID$(W0$,4,2) 49 | 430 IFVAL(EM$(I,0))=0THEN460 50 | 440 IFW2$>W1$THEN500 51 | 450 E=E+1:EM$(I,0)=" 0":EM$(I,1)="91/01/01":EM$(I,2)="^":EM$(I,3)=" -26" 52 | 460 EM$(I,4)="0":FORX=1TO25:IFPL(X,0)=ITHENPL(X,0)=-1:GX(PL(X,1),PL(X,2))=-1 53 | 470 NEXTX:OPEN1,U1,15,"s0:gal.spy."+STR$(I):CLOSE1 54 | 480 FORA=1TO200:IFMS(A,0)THENIFMS(A,4)=IORMS(A,5)=ITHENGOSUB130 55 | 490 NEXTA 56 | 500 NEXTI:RD=0:IFETHEN30 57 | 510 END 58 | 55555 U=PEEK(186):OPEN1,U,15,"s0:gal.maint":CLOSE1:SAVE"gal.maint",U 59 | -------------------------------------------------------------------------------- /ee2/prg.ee2.create.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Thursday, September 16, 2021 2:56:50 PM 3 | !- Import of : 4 | !- z:\_cbmsoft\_bo_unz\d-zelch\zee2wm\prg.ee2.create.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 1 REM *** MAP MAKER / SECTOR MAKER *** 8 | 2 SCRATCH "ee2.config",U8:SCRATCH"ee2.data",U8 9 | 8 INPUT "Unit (Uxx) to create files on:";U:INPUT "Device (Dxx) to create files on:";DV 10 | 9 PRINT "{light gray} Empire Edition II -- File Generator" 11 | 10 DIM A$(32):DIM AR%(21,21,2):DIMPR$(41) 12 | 11 PRINT "{cyan}-->{white}Creating Empire Sector file 1:" 13 | 20 FORX=1 TO 20:READ A$(X):NEXTX 14 | 40 FOR X=1 TO 20:FORY=1TO20 15 | 45 IF MID$(A$(X),Y,1)="s" THEN AR%(X,Y,0)=1 16 | 50 NEXTY:NEXTX 17 | 60 GOSUB 6050 18 | 65 PRINT "Done with map.{space*2}Now making sectors" 19 | 67 PRINT "{cyan}-->{blue}Creating Empire Sector file 2:":SCRATCH"sectors2.dat",D(DV),U(U) 20 | 70 GOSUB 6100 21 | 80 PRINT "Done with making sectors." 22 | 89 PRINT "{cyan}-->{light blue}Creating Empire Player file:":SCRATCH"empires.dat",D(DV),U(U) 23 | 90 DCLEAR:DOPEN#1,"ee2.empires.dat",L150,D(DV),U(U):RECORD#1,11:PRINT#1,CHR$(255):RECORD#1,11:DCLOSE#1:DCLEAR:PRINT"Done making player file." 24 | 95 PRINT "{green}--{light green}>Now creating empire news files(1-9), and empire world news files..." 25 | 97 FOR X=1 TO 9:X$=STR$(X):Y$=RIGHT$(X$,(LEN(X$)-1)):FI$="ee2."+Y$+".news" 26 | 98 DOPEN#1,("@"+FI$),D(DV),U(U),W:PRINT#1,CHR$(34):DCLOSE#1:NEXTX:DOPEN#1,"@ee2.news",D(DV),U(U),W:PRINT#1,CHR$(34):DCLOSE#1 27 | 99 PRINT "{red}-->{white}Now creating e.config file." 28 | 100 DOPEN#1,"@ee2.config",D(DV),U(U),W:PRINT#1,STR$(U):PRINT#1,STR$(DV):DCLOSE#1 29 | 899 PRINT:PRINT"DONE WITH FILE CREATION.":END 30 | 901 DATA"...................." 31 | 902 DATA"...................." 32 | 903 DATA".....s.............." 33 | 904 DATA"...............s...." 34 | 905 DATA"...................." 35 | 906 DATA".....s.............." 36 | 907 DATA"...................." 37 | 908 DATA"...................." 38 | 909 DATA"...................." 39 | 910 DATA"..............s....." 40 | 911 DATA"....s..............." 41 | 912 DATA"...................." 42 | 913 DATA"................s..." 43 | 914 DATA"...................." 44 | 915 DATA"........s..........." 45 | 916 DATA"...................." 46 | 917 DATA"...................." 47 | 918 DATA"...................." 48 | 919 DATA"...............s...." 49 | 920 DATA"...s................" 50 | 921 DATA"...................." 51 | 6050 DOPEN#1,"@ee2.sectors1.dat",D(DV),U(U),W 52 | 6051 FORX=1TO20:PR$(X)="":FORY=1TO20 53 | 6053 A$=STR$(AR%(X,Y,0)):B$=STR$(AR%(X,Y,1)) 54 | 6054 A$=RIGHT$(A$,1):B$=RIGHT$(B$,1) 55 | 6055 PR$(X)=PR$(X)+A$+B$:NEXTY:NEXTX 56 | 6057 PRINT"Writing map...":FORX=1TO20:PRINT#1,PR$(X):NEXTX:DCLOSE#1 57 | 6060 RETURN 58 | 6099 REM **CREATE SECTOR FILE** 59 | 6100 DOPEN#1,"ee2.sectors2.dat",L26,D(DV),U(U):PRINT"Creating sector data file..." 60 | 6105 RECORD#1,401:PRINT#1,CHR$(255);:RECORD#1,401 61 | 6110 DCLOSE#1:R=0:RETURN 62 | 7000 DATA".............................." 63 | 9010 DOPEN#1,"ee2.sectors1.dat",D(DV),U(U),R:Z=1 64 | 9015 INPUT#1,A$:PRINTA$:PRINTZ:Z=Z+1:GOTO9015 65 | -------------------------------------------------------------------------------- /extras/gam.tic tac toe.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:36:12 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gam.tic tac toe.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 1 PRINT:GOTO61000 8 | 2200 GETKEYAN$:IFINSTR("abcdefghijklmnopqrstuvwxyz",AN$)THENAN$=CHR$(ASC(AN$)OR128) 9 | 2210 PRINT"{white}"AN$:RETURN 10 | 61000 AN$="":CL$="{red}{pink}{yellow}{blue}{light blue}{cyan}{green}{light green}{white}":SY$="":PRINT:PRINT"{down*3}{light blue}TIC-TAC-TOE {white}V{light blue}2{white}.{light blue}0":FORX=0TO10:SO(X)=0:NEXT 11 | 61001 PRINT"{down}{white}{down}" 12 | 61002 GOSUB61024 13 | 61010 PRINT"{down*2}{light blue}Where do you move? {white}";:GOSUB2200 14 | 61012 I%=VAL(AN$):IFI%>9THENGOTO61010 15 | 61014 IFI%<1THENGOTO61010 16 | 61016 IFSO(I%)=0THENGOTO61020 17 | 61018 PRINT"{down}{yellow}That square is taken...":GOTO61010 18 | 61020 L%=1:SO(I%)=1 19 | 61022 GOSUB61024:GOTO61072 20 | 61024 PRINT:FORX=1TO9:PRINT" ";:IFSO(X)<>-1THEN61028 21 | 61026 PRINT"{white}O ";:GOTO61034 22 | 61028 IFSO(X)THEN61032 23 | 61030 PRINTMID$(CL$,X,1);" ";MID$(STR$(X),2);:GOTO61034 24 | 61032 PRINT"{blue}X "; 25 | 61034 IFX<>3ANDX<>6THEN61038 26 | 61036 PRINT:PRINT"{green}{sh asterisk*3}{light green}{sh +}{green}{sh asterisk*3}{light green}{sh +}{green}{sh asterisk*3}":GOTO61042 27 | 61038 IFX=9THEN61042 28 | 61040 PRINT"{light green}{sh -}"; 29 | 61042 NEXTX:PRINT:IFAN$=""THENRETURN:PRINT"{down*2}":ELSEFORT=1TO7STEP3 30 | 61044 IFSO(T)<>SO(T+1)THEN61052 31 | 61046 IFSO(T)<>SO(T+2)THEN61052 32 | 61048 IFSO(T)=-1THEN61118 33 | 61050 IFSO(T)=1THEN61116 34 | 61052 NEXTT:FORT=1TO3:IFSO(T)<>SO(T+3)THEN61060 35 | 61054 IFSO(T)<>SO(T+6)THEN61060 36 | 61056 IFSO(T)=-1THEN61118 37 | 61058 IFSO(T)=1THEN61116 38 | 61060 NEXTT:FORT=1TO9:IFSO(T)=0THEN61064 39 | 61062 NEXTT:GOTO61120 40 | 61064 IFSO(5)<>L%THEN61070 41 | 61066 IFSO(1)=L%ANDSO(9)=L%THEN61114 42 | 61068 IFSO(3)=L%ANDSO(7)=L%THEN61114 43 | 61070 RETURN 44 | 61072 I%=0:L%=-1:N%=-1:IFSO(5)=0THENI%=5:SO(I%)=-1:GOTO61108 45 | 61074 I%=I%+1 46 | 61076 IFSO(I%)=N%ANDSO(I%+3)=N%ANDSO(I%+6)=0THENSO(I%+6)=-1:GOTO61110 47 | 61078 IFSO(I%)=N%ANDSO(I%+6)=N%ANDSO(I%+3)=0THENSO(I%+3)=-1:GOTO61110 48 | 61080 IFSO(I%+3)=N%ANDSO(I%+6)=N%ANDSO(I%)=0THENSO(I%)=-1:GOTO61110 49 | 61082 IFI%<3THENGOTO61074 50 | 61084 I%=1 51 | 61086 IFSO(I%)=N%ANDSO(I%+1)=N%ANDSO(I%+2)=0THENSO(I%+2)=-1:GOTO61110 52 | 61088 IFSO(I%)=0ANDSO(I%+1)=N%ANDSO(I%+2)=N%THENSO(I%)=-1:GOTO61110 53 | 61090 IFSO(I%)=N%ANDSO(I%+2)=N%ANDSO(I%+1)=0THENSO(I%+1)=-1:GOTO61110 54 | 61092 IFI%<7THENI%=I%+3:GOTO61086 55 | 61094 I%=1 56 | 61096 IFSO(I%)=N%ANDSO(I%+4)=N%ANDSO(I%+8)=0THENSO(I%+8)=-1:GOTO61110 57 | 61098 IFSO(I%+8)=N%ANDSO(I%+4)=N%ANDSO(I%)=0THENSO(I%)=-1:GOTO61110 58 | 61100 IFSO(I%+6)=N%ANDSO(I%+4)=N%ANDSO(I%+2)=0THENSO(I%+2)=-1:GOTO61110 59 | 61102 IFSO(I%+2)=N%ANDSO(I%+4)=N%ANDSO(I%+6)=0THENSO(I%+6)=-1:GOTO61110 60 | 61104 N%=N%+2:IFN%=1THENI%=0:GOTO61074 61 | 61106 I%=INT(RND(1)*9)+1:IFSO(I%)<>0THENGOTO61104 62 | 61108 SO(I%)=-1 63 | 61110 PRINT"{down*2}The computer moves to...":GOSUB61024 64 | 61112 GOTO61010 65 | 61114 IFL%=-1THEN61118 66 | 61116 PRINT"{down*2}YOU WIN!!!{ct g*3} LUCKY!!":GOTO61122 67 | 61118 PRINT"{down*2}I WIN!!!{ct g*3} HAHAHAHAHAHAHA!!!{ct g*3}":GOTO61122 68 | 61120 PRINT"{down*2}C{ct g}A{ct g}T{ct g} - TIE GAME..." 69 | 61122 PRINT"{down*2}PLAY AGAIN (Y/N)?"; 70 | 61124 GOSUB2200:IFAN$="Y"THENL%=0:FORX=1TO9:SO(X)=0:NEXTX:I%=0:N%=0:GOTO61000 71 | 61126 PRINT"{down*2}Thanks For Playing! 72 | 61128 end 73 | -------------------------------------------------------------------------------- /extras/wall.maint.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:26:27 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\wall.maint.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:U1=U:D1=D:FORI=1TO26:VT$(I)="":NEXTI 8 | 30010 O$="Wall Street z128 vII maint...":GOSUB250:GOSUB400 9 | 30020 GOTO31000 10 | 30030 REM **************************************************************** 11 | 30040 REM ***** MAKE SURE YOU RUN THIS EVERY DAY BEFORE MESSAGE WEED ***** 12 | 30050 REM **************************************************************** 13 | 30060 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mbases":RETURN 14 | 30070 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mdata":RETURN 15 | 30080 OPEN2,U1,2,MID$(STR$(D1),2)+":wall.records":RETURN 16 | 30090 OPEN2,U1,2,MID$(STR$(D1),2)+":wall.seats":RETURN 17 | 31000 GOSUB30080 18 | 31010 RECORD#2,27:INPUT#2,A$:IFLEFT$(A$,6)=LEFT$(O$(2),6)THEN50000 19 | 31020 RECORD#2,27:PRINT#2,O$(2):CLOSE2 20 | 32000 GOSUB30060:W9=0 21 | 32010 FORX=1TO26:W5=0:W6=0:RECORD#2,X 22 | 32020 FORY=1TO7:SYS8222:TT$(150+Y)=I$:NEXTY 23 | 32030 IFVAL(TT$(150+7))=0THEN39999:ELSEVT$(X)="p" 24 | 32040 W9=W9+VAL(TT$(150+3)):CLOSE2 25 | 33000 GOSUB30070 26 | 33010 RECORD#2,X*51:INPUT#2,W4:W5=W4:W6=W4 27 | 33020 FORY=1TOW4:RECORD#2,((X-1)*51)+Y:SYS8222:IFVAL(I$)=0THEN33050 28 | 33030 INPUT#2,A 29 | 33040 W5=W5+A:IFA>=VAL(TT$(150+4))THENW6=W6+VAL(TT$(150+5)):ELSEW6=W6+A 30 | 33050 NEXTY:CLOSE2 31 | 34000 GOSUB30080 32 | 34010 RECORD#2,X:INPUT#2,W2,W3,I,I:W7=W5-W2:IFW7<0THENW7=0 33 | 34020 W4=(W3*.8)+(W7*.2):W4=INT(W4*100)/100 34 | 34030 RECORD#2,X:PRINT#2,STR$(W6)+R$+STR$(W4)+R$+STR$(W3)+R$+STR$(I) 35 | 34040 CLOSE2:GOSUB30060 36 | 39999 NEXTX 37 | 40000 CLOSE2:GOSUB30090 38 | 40010 RECORD#2,1:RECORD#2,1:SYS8222:SYS8222:SYS8222:W1=VAL(I$) 39 | 40020 SYS8222:W9=W9*VAL(I$) 40 | 40030 SYS8222:SYS8222:SYS8222:W2=VAL(I$) 41 | 40040 RECORD#2,1:A$="":FORI=1TO5:SYS8222:A$=A$+I$+R$:NEXTI:CLOSE2 42 | 40050 GOSUB30080 43 | 40055 W0=0:FORI=1TO26:IFVT$(I)<>""THENRECORD#2,I:RECORD#2,I:SYS8222:SYS8222:W0=(W0+(VAL(I$)*W1)) 44 | 40060 NEXTI:RECORD#2,29:FORI=0TO4:SYS8222:VT(I)=VAL(I$):NEXTI:RECORD#2,30:FORI=5TO9:SYS8222:VT(I)=VAL(I$):NEXTI:W3=VAL(I$):VT(10)=W0 45 | 40070 C$="":FORI=1TO5:C$=C$+STR$(VT(I))+R$:NEXTI:RECORD#2,29:RECORD#2,29:PRINT#2,C$ 46 | 40075 C$="":FORI=6TO10:C$=C$+STR$(VT(I))+R$:NEXTI:RECORD#2,30:RECORD#2,30:PRINT#2,C$:CLOSE2 47 | 40080 GOSUB30090 48 | 40090 RECORD#2,1:W4=W3-W0:WS$="Zelch stocks ":IFW4<=0THENWS$=WS$+"gained":ELSEWS$=WS$+"lost" 49 | 40100 W4=INT(W4*100)/100:WS$=WS$+STR$(ABS(W4))+" points{f7}yesterday in " 50 | 40110 W5=W2/W9:IFW5<=.02THENWS$=WS$+"light":ELSEIFW5<=.25THENWS$=WS$+"moderate":ELSEIFW5<=.5THENWS$=WS$+"heavy":ELSEWS$=WS$+"an incredible amount of" 51 | 40120 WS$=WS$+" trading.":RECORD#2,1:PRINT#2,A$+WS$+R$+"0"+R$:CLOSE2 52 | 41000 GOSUB30090 53 | 41010 RECORD#2,1:SYS8222:W1=VAL(I$):FORI=1TO26:VT(I)=0:NEXTI 54 | 41020 FORX=2TOW1+1:RECORD#2,X:SYS8222:IFVAL(I$)=0THEN41070 55 | 41030 I=VAL(I$):IFUI$(I)<>""ANDUI$(I)<>"^"THEN41040:ELSEFORY=1TO26:SYS8222:VT(Y)=VT(Y)+VAL(I$):NEXTY 56 | 41035 A$="":FORY=1TO27*2:A$=A$+"0"+R$:NEXTY:GOTO41060 57 | 41040 A$=I$+R$:FORY=1TO26:SYS8222:A$=A$+I$+R$:NEXTY:FORY=1TO26 58 | 41050 SYS8222:I=VAL(I$):IFI=0THENA$=A$+I$+R$:ELSEA$=A$+STR$(SGN(I)*(ABS(I)-1))+R$ 59 | 41055 NEXTY 60 | 41060 RECORD#2,X:RECORD#2,X:PRINT#2,A$ 61 | 41070 NEXTX:CLOSE2 62 | 41100 GOSUB30080:FORX=1TO26:IFVT(X)=0THEN41190:ELSERECORD#2,X 63 | 41110 A$="":FORI=1TO3:SYS8222:A$=A$+I$+R$:NEXTI:SYS8222:A$=A$+STR$(VAL(I$)-VT(X))+R$:RECORD#2,X:RECORD#2,X:PRINT#2,A$ 64 | 41190 NEXTX:CLOSE2 65 | 50000 I=FRE(1):CLOSE1:CLOSE2:CLOSE3:CLOSE4:I$="prg.monster":U=D(0,0):D=D(0,1):GOTO23 66 | 55555 U=PEEK(186):OPEN1,U,15,"s0:wall.maint":CLOSE1:DSAVE"wall.maint",U(U):END 67 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | Zelch 128 (C)1991-2021 William Fink, Bo Zimmerman 2 | Please read the LICENSE file for license information for Zelch 128 3 | Please read the NOTICE file for credits information 4 | 5 | Warriors & Monsters (C)1991 Matthew Beall 6 | Empire Edition II (C)1991 Jay MacNish 7 | 8 | The Zelch 128 Package is in CBM Prg Studio format. If you'd like to 9 | download older binaries, just visit: http://bbs.zimmers.net and scroll to the bottom. 10 | 11 | HOW TO ASSEMBLE: 12 | 13 | The Zelch 128 distribution package consists of two disks. 14 | 15 | The first 1571 (.D71) disk is the BOOT disk, and consists of the following files: 16 | 17 | zelch,p 18 | bbs.main,p 19 | bbs.editor,p 20 | bbs.setup,p 21 | bbs.ascii edit,p 22 | bbs.copy,p 23 | bbs.create,p 24 | v3.0 2000,p 25 | v3.0 3d00,p 26 | crsr 0e00,p 27 | ascii 3b00,p 28 | ansi 3a00,p 29 | sys.variables,s 30 | sys.text,s 31 | ----------------,u 32 | p-xfer 1300,p 33 | x-xfer 1300,p 34 | l-xfer 1300,p 35 | k-xfer 1300,p 36 | prg.logon,p 37 | prg.zapterm,p 38 | prg.new user,p 39 | prg.msg bases,p 40 | prg.voting booth,p 41 | prg.sysop,p 42 | prg.misc,p 43 | prg.monster,p 44 | prg.news,p 45 | prg.online utils,p 46 | prg.u/d bases,p 47 | prg.network,p 48 | 49 | The second 1571 (.D71) disk is the CONFIGURATIONS disk and consists of the following files: 50 | run.me,p 51 | -----zelch-----,u 52 | conf.zelch,s 53 | gam.bagels,p 54 | gam.wheel,p 55 | -----elite-----,u 56 | conf.elite 57 | prg.dating boot,p 58 | prg.dating,p 59 | prg.star trek,p 60 | prg.bbs list,p 61 | ---simplicity---,u 62 | conf.simple,s 63 | 64 | To build the files for these disks, you'll need three programs. One, obviously, is CBM prg studio. The other is DirMaster, or some other program that lets you copy files into a blank .D71 image. The last is either an emulator to run the disks on, or a program to copy the images to real floppies. 65 | 66 | The first step is to load CBM prg studio. Then click on the menu options Build->Project->To File to Generate .prg files. If any Assembly files give you an extra window "Assembly Dump", you can just hit the X to close this and ignore it. 67 | 68 | The next step is to copy the files for the boot disk into a .D71 image, in the order shown above. Please note that some of the files will need to be renamed after they are copied into the image. These are: "prg.u - d bases," which should be renamed to "prg.u/d bases". Also, the SEQ (,s) files mentioned above can be found in the project Misc Files section, such as sys.text and sys.variables, and copied in as-is. 69 | 70 | Next is to build the files for the configuration disk into a different .D71 image. Most of the "prg.*" files can be built from the other CBM Prg Studio in the "extras" directory. Load the "Zelch 128 Extras" project from that directory and built the specific programs shown in the configurations disk above. For the SEQ files, once again, you can copy the from the main projects "data" directory. 71 | 72 | The last step is to either load up your emulator, or copy the images to real floppies, and get to work. Instructions from here on are covered by the documentation in the projects docs directory. 73 | 74 | ---------------------- 75 | 76 | The main program disk and the configurations disk are really all you need to get started, but there are numerous optional programs in the "extras" directory off the main project. These are built from the Zelch 128 Extras CBM Prg Studio project. Several of these extra programs also have data files of their own, which are located in the misc files section of the project. 77 | 78 | Most of the programs in the extras can be used as-is, either as Online-BASIC programs, or as Zelch-Specific modules. Which are which is listed here, along with some specific details on using some of the special ones. Also included are the online door games Warriors & Monsters, and Empire Edition II, in their own directories with their own projects. 79 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /extras/gam.bagels.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:34:51 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gam.bagels.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 10 REM GAME: BAGELS :4-V1.0 8 | 20 REM BY VINCE MILLS 9 | 30 REM COPYRIGHT OCT 1979 - PERMISSION 10 | 40 REM GRANTED FOR FREE DISTRIBUTION. 11 | 50 REMPOKE 59468,16 12 | 51 GOTO 1000 13 | 66 REM -- CHAR INPUT SUBROUTINE ------ 14 | 70 REM 15 | 71 GETA$:GOTO89 16 | 75 PRINT;:RETURN 17 | 76 REM - GET NON-EMPTY STRING - 18 | 77 B$="":IFLE=0THENLE=-1 19 | 78 GOSUB66:IFA$=CHR$(13)ANDB$=""THEN78 20 | 79 IFASC(A$)=13THENRETURN 21 | 80 IFASC(A$)=20ANDLEN(B$)=1THENPRINTCHR$(20);:GOTO 77 22 | 81 IFASC(A$)=20ANDLEN(B$)>1THENB$=LEFT$(B$,LEN(B$)-1):PRINTCHR$(20);:GOTO 78 23 | 82 IFASC(A$)<32ORASC(A$)>96THEN78 24 | 83 PRINT A$;:B$=B$+A$ 25 | 84 IFLEN(B$)=LEORB$=ST$THENRETURN 26 | 85 GOTO78 27 | 89 IFA$=""THEN71 28 | 90 IFFLG=0ORASC(A$)=13ORASC(A$)=20THEN75 29 | 91 IFASC(A$)>57ORASC(A$)<48THEN71 30 | 92 GOTO75 31 | 1000 REM -- INSTRUCTION BLOCK -------- 32 | 1010 PRINT"{clear}{right*14}{pink}{cm @*13}" 33 | 1020 PRINT"{right*14}{reverse on}{yellow} B a g e l s{sh space}" 34 | 1030 PRINT"{right*14}{pink}{cm t*13}" 35 | 1035 PRINT 36 | 1040 PRINT"{light green} In this game, I will think of a three-" 37 | 1050 PRINT"digit number from 012 to 987 ( zero is" 38 | 1060 PRINT"a valid digit ). Every time you try to" 39 | 1070 PRINT"guess this hidden number, I{sh space}will tell" 40 | 1080 PRINT"you:" 41 | 1090 PRINT"{right*7}{white}Pico {light green}- a{sh space}digit is correct but in" 42 | 1100 PRINT"{right*7}{yellow}{cm t*4}{light green}{right*3}the wrong place.{down}" 43 | 1110 PRINT"{right*7}{cyan}Fermi{light green}- a digit is correct and in" 44 | 1120 PRINT"{right*7}{yellow}{cm t*5}{right*2}{light green}the right place.{down}" 45 | 1130 PRINT"{right*7}{light blue}Bagels{light green}-all digits in your guess" 46 | 1140 PRINT"{right*7}{yellow}{cm t*6}{right}{light green}are incorrect.{down}" 47 | 1150 PRINT"{right*9}{yellow}{cm @*30}" 48 | 1160 PRINT"{right*9}{reverse on}{pink} Press any key to continue. " 49 | 1170 PRINT"{right*9}{yellow}{cm t*30}" 50 | 1180 GOSUB 66 51 | 2000 REM -- GENERATE NUMBER ---------- 52 | 2001 PRINT"{clear}{yellow}Ok, I have a number in mind.{down*2}" 53 | 2002 PRINT"{down}{white}Enter 000 to quit!{down*2}" 54 | 2010 FOR I=2 TO 3:A(I)=-1:NEXT 55 | 2020 A(1)=INT(RND(1)*10) 56 | 2030 A(2)=INT(RND(1)*10) 57 | 2040 IF A(2)=A(1) THEN 2030 58 | 2050 A(3)=INT(RND(1)*10) 59 | 2060 IF A(3)=A(1) THEN 2050 60 | 2070 IF A(3)=A(2) THEN 2050 61 | 3000 REM -- PLAY GAME ---------------- 62 | 3001 REM 63 | 3010 FOR Q=1 TO 200 64 | 3020 PRINT "{pink}Guess #";Q;"{yellow}"; 65 | 3030 PRINT TAB(12); 66 | 3040 FLG=1:LE=3 :GOSUB 77 67 | 3045 IFB$="000"THEN3305 68 | 3050 IF LEN(B$)<>3 THEN 3100 69 | 3060 FOR I=1 TO 3 70 | 3070 D$=MID$(B$,I,1) 71 | 3090 B(I)=VAL(D$) 72 | 3095 NEXT I 73 | 3096 GOTO 3110 74 | 3100 PRINT:PRINT"{white}Please{sh space}use 3 numbers only.":GOTO 3020 75 | 3110 IF B(1)<>B(2) AND B(2)<>B(3) AND B(3)<>B(1) THEN 3125 76 | 3120 PRINT"{left*15}{reverse on}{white}Please guess three different numbers.{reverse off}"; 77 | 3121 FOR LL=1 TO 1000:NEXT LL 78 | 3122 PRINT"{left*37}"; 79 | 3123 PRINT" {up}":GOTO 3020 80 | 3125 F=0:P=0 81 | 3140 FOR I=1 TO 3 82 | 3150 IF B(I)=A(I) THEN F=F+1 83 | 3160 IF B(I)=A(1) THEN P=P+1 84 | 3170 IF B(I)=A(2) THEN P=P+1 85 | 3175 IF B(I)=A(3) THEN P=P+1 86 | 3176 NEXT I 87 | 3180 P=P-F 88 | 3190 PRINT TAB(18); 89 | 3195 IF F=3 THEN 3300 90 | 3200 IF P=0 THEN 3220 91 | 3210 FOR P1=1 TO P:PRINT "{white}Pico ";:NEXT 92 | 3220 IF F=0 THEN 3240 93 | 3230 FOR F1=1 TO F:PRINT"{cyan}Fermi ";:NEXT 94 | 3240 IF F=0 AND P=0 THEN PRINT"{light blue}Bagels"; 95 | 3245 PRINT 96 | 3250 NEXT Q 97 | 3300 PRINT"{pink}Y{yellow}o{white}u {cyan}g{light blue}o{blue}t {purple}i{red}t{pink}!{yellow}!{white}!" 98 | 3305 PRINT:END 99 | 3310 LE=1:FLG=0 100 | 3320 GOSUB 77 101 | 3330 IF B$<>"y" THEN 32767 102 | 3335 FOR I=1 TO 500:NEXT 103 | 3340 GOTO 2001 104 | 32767 END 105 | -------------------------------------------------------------------------------- /l-xfer 1300.asm: -------------------------------------------------------------------------------- 1 | * = $1300 2 | ;.D L-XFER 1300 3 | JMP BITLIST 4 | JMP BITEDIT 5 | LDAFAR2 6 | TXA 7 | LDX #$01 8 | JSR $FF74 9 | RTS 10 | BITLIST 11 | JSR $FFCC 12 | LDY #$09 13 | LDX #$2F 14 | JSR LDAFAR2 15 | CMP $FB 16 | BCS BITBURP 17 | STA $FB 18 | BITBURP 19 | INY 20 | LDX #$2F 21 | JSR LDAFAR2 22 | STA $FC 23 | INY 24 | LDX #$2F 25 | JSR LDAFAR2 26 | STA $FD 27 | LDY #$00 28 | BITLOOP 29 | LDX #$FC 30 | JSR LDAFAR2 31 | LDX #$01 32 | STX $F5 33 | STA $1F00,Y 34 | JSR $FFD2 35 | LDA #$00 36 | STA $F5 37 | STA $F4 38 | INY 39 | CPY $FB 40 | BNE BITLOOP 41 | RTS 42 | BITEDIT 43 | JSR $FFCC 44 | JSR $2039 45 | LDY #$09 46 | LDX #$2F 47 | JSR LDAFAR2 48 | STA $FB 49 | JSR BITLIST 50 | LDA $FA 51 | BNE BITSHIT 52 | LDA #$F0 53 | BITSHIT 54 | STA $FA 55 | LDY $FB 56 | DELOP 57 | LDA #$9D 58 | JSR $FFD2 59 | DEY 60 | BNE DELOP 61 | LDA #$00 62 | STA $FE 63 | GETKEY 64 | JSR $FFE4 65 | STA $FC 66 | JSR $3D0C 67 | LDA $FC 68 | BEQ GETKEY 69 | CMP #$22 70 | BNE NOKOTE 71 | LDA #$87 72 | STA $FC 73 | NOKOTE 74 | CMP #$0D 75 | BNE NOGO 76 | GOGO 77 | JMP OUTGOGO 78 | NOGO 79 | LDA $0B4D 80 | BNE GOGO 81 | LDA $D4 82 | CMP #$53 83 | BCC NOT212 84 | CMP #$57 85 | BCS NOT212 86 | JMP NOTFIV 87 | NOT212 88 | LDA $FC 89 | CMP #$9D 90 | BEQ THIS1 91 | CMP #$11 92 | BNE NOTBK 93 | THIS1 94 | LDA $FE 95 | BEQ GETKEY 96 | DEC $FE 97 | LDA #$9D 98 | JSR $FFD2 99 | JMP GETKEY 100 | NOTBK 101 | LDA $FC 102 | CMP #$1D 103 | BEQ THIS2 104 | CMP #$91 105 | BNE NOTUP 106 | THIS2 107 | LDA $FE 108 | CMP $FB 109 | BCC DOIT 110 | JMP GETKEY 111 | DOIT 112 | INC $FE 113 | LDA #$1D 114 | JSR $FFD2 115 | JMP GETKEY 116 | NOTUP 117 | LDA $FC 118 | CMP #$14 119 | BEQ DELETE 120 | CMP #$94 121 | BNE NOINST 122 | JMP INSERT 123 | NOINST 124 | LDA $D3 125 | CMP #$05 126 | BNE NOTFIV 127 | LDA $FC 128 | ORA #$80 129 | STA $FC 130 | NOTFIV 131 | LDX $FE 132 | INX 133 | CPX $FB 134 | BCC NOSHIT 135 | BEQ NOSHIT 136 | CPX $FA 137 | BCS JPGT 138 | LDY $FB 139 | LDA $FC 140 | STA $1F00,Y 141 | INY 142 | STY $FB 143 | PRINT 144 | LDA #$01 145 | STA $F4 146 | LDA $FC 147 | JSR $FFD2 148 | LDA #$00 149 | STA $F4 150 | STA $F5 151 | INC $FE 152 | JMP GETKEY 153 | NOSHIT 154 | LDX $FE 155 | CPX $FA 156 | BCS JPGT 157 | LDY $FE 158 | LDA $FC 159 | STA $1F00,Y 160 | JMP PRINT 161 | OUTGOGO 162 | LDA #$0D 163 | JSR $FFD2 164 | LDA #$0D 165 | JSR $FFD2 166 | LDA #$1F 167 | STA $FC 168 | JMP $203C 169 | JPGT 170 | JMP GETKEY 171 | DELETE 172 | LDA $FB 173 | BEQ JPGT 174 | LDA $FE 175 | BEQ JPGT 176 | LDA $FC 177 | JSR $FFD2 178 | DEC $FE 179 | DEC $FB 180 | LDY $FE 181 | LOOP2 182 | INY 183 | LDA $1F00,Y 184 | DEY 185 | STA $1F00,Y 186 | INY 187 | CPY $FB 188 | BCC LOOP2 189 | JMP GETKEY 190 | INSERT 191 | LDA $FB 192 | CMP $FA 193 | BCS JPGT 194 | LDA $FC 195 | JSR $FFD2 196 | LDA #$00 197 | STA $F4 198 | STA $F5 199 | INC $FB 200 | LDY $FB 201 | LOOP3 202 | DEY 203 | LDA $1F00,Y 204 | INY 205 | STA $1F00,Y 206 | DEY 207 | CPY $FE 208 | BNE LOOP3 209 | LDA #$20 210 | STA $1F00,Y 211 | JMP GETKEY 212 | PRINT2 213 | NOP 214 | ;OPEN1,8,15,"S0:ML1300L,L-XFER 1300":CLOSE1:SAVE"ML1300L",8 215 | 216 | 217 | -------------------------------------------------------------------------------- /extras/bnk.maint.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Tuesday, August 17, 2021 11:57:07 PM 3 | !- Import of : 4 | !- c:\tmp\newproject\bnk.maint.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM*************** BANKING MAINT 1.0 ************************ 8 | 30010 REM ****************************************************************** 9 | 30020 REM ****** MAKE SURE THIS MODULE RUNS ONCE PER DAY DURING YOUR ******* 10 | 30030 REM ********************** SYSTEMS MONSTER MODE ********************** 11 | 30040 REM ****************************************************************** 12 | 30050 U=8:O$="Bank Maint...":GOSUB250:U1=U:D1=D:FORI=1TO50:VT(I)=0:VT$(I)="":NEXT:W9$="":FORI=0TO14:W9$=W9$+" 0"+R$:NEXTI 13 | 30060 OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.records" 14 | 30070 RECORD#2,1:FORI=1TO7:SYS8222:VT(40+I)=VAL(I$):NEXTI:CLOSE2:W1=1:GOTO30999 15 | 30500 A$="":FORI=1TO6:SYS8222:A$=A$+I$+R$:NEXT 16 | 30510 FORI=1TO4:GET#2,I$:A$=A$+CHR$(ASC(I$+CHR$(0))):NEXT 17 | 30520 FORI=8TO9:SYS8222:A$=A$+I$+R$:NEXT 18 | 30530 FORI=1TO4:GET#2,I$:A$=A$+CHR$(ASC(I$+CHR$(0))):NEXT 19 | 30540 SYS8222:A$=A$+I$+R$ 20 | 30550 SYS8222:I=VAL(I$):A$=A$+STR$(I+Y)+R$:Y=I 21 | 30560 FORI=3TO6:SYS8222:A$=A$+I$+R$:NEXT:RETURN 22 | 30999 OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.accounts" 23 | 31000 IFUI$(W1)=""THENCLOSE2:I$="prg.monster":U=D(0,0):D=D(0,1):GOTO23 24 | 31010 IFUI$(W1)="^"THENRECORD#2,W1:RECORD#2,W1:PRINT#2,W9$:W1=W1+1:GOTO31000 25 | 31020 RECORD#2,W1:FORI=0TO14:SYS8222:VT$(I)=I$:VT(I)=VAL(I$):NEXTI:W0=0 26 | 31030 IFVT(1)>0THENVT(1)=(VT(1)*(VT(41)/3000))+VT(1):VT$(1)=STR$(VT(1)):W0=W0OR1 27 | 31040 IFVT(2)>0THENVT(2)=(VT(2)*(VT(42)/3000))+VT(2):VT$(2)=STR$(VT(2)):W0=W0OR1 28 | 31050 IFVT(3)THENVT$(3)="0":VT(3)=0:W0=W0OR1 29 | 32000 IFVT(4)=0ORVT(6)=0THEN33000:REM******APPROPRIATIONS 30 | 32010 W9=VAL(MID$(VT$(5),3)):W9=W9-1:IFW9<1THENW9=VT(7) 31 | 32020 VT$(5)=LEFT$(VT$(5),1)+";"+STR$(W9):IFW9<>VT(7)THEN33000 32 | 32030 C$=VT$(4) 33 | 32040 W2=VAL(C$):IFW2=0THEN32100:ELSEY=INSTR(C$,";"):IFY=0THENC$="":ELSEC$=MID$(C$,Y+1) 34 | 32050 CLOSE2:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":W0=W0OR2 35 | 32060 IFVT(5)=0THENRECORD#2,W1:Y=-VT(6):GOSUB30500:IFY>=VT(6)THENRECORD#2,W1:RECORD#2,W1:PRINT#2,A$:ELSEIFVT(5)=0THENVT$(4)="0":VT(4)=0:GOTO32200 36 | 32070 IFVT(5)=1ANDVT(1)>=VT(6)THENVT(1)=VT(1)-VT(6):VT$(1)=STR$(VT(1)):ELSEIFVT(5)=1THENVT$(4)="0":VT(4)=0:GOTO32200 37 | 32080 IFVT(5)=2ANDVT(2)>=VT(6)THENVT(2)=VT(2)-VT(6):VT$(2)=STR$(VT(2)):ELSEIFVT(5)=2THENVT$(4)="0":VT(4)=0:GOTO32200 38 | 32090 RECORD#2,W2:Y=VT(6):GOSUB30500:RECORD#2,W2:PRINT#2,A$ 39 | 32100 IFVAL(C$)THEN32040 40 | 32200 CLOSE2 41 | 33000 IFVT(8)=0THEN34000:ELSE33020:REM*****LOANS 42 | 33010 VT$(9)="0":X=VAL(MID$(VT$(10),3)):X=X+VT(9):VT$(10)=LEFT$(VT$(10),1)+";"+STR$(X):VT(9)=0:RETURN 43 | 33020 W0=W0OR1:GOSUB400:W2=VAL(MID$(O$(2),5,2)) 44 | 33030 IFVT(10)=1THENIFW2=1THENVT(9)=VT(9)+(VT(8)*(.17+(VT(47)/580))) 45 | 33040 IFVT(10)=2THENIFW2=1ORW2=15THENVT(9)=VT(9)+(VT(8)*(.09+(VT(47)/1100))) 46 | 33050 IFVT(10)=3THENIFW2=1ORW2=8ORW2=17ORW2=24THENVT(9)=VT(9)+(VT(8)*(.05+(VT(47)/2000))) 47 | 33060 IFVT(10)=4THENVT(9)=VT(9)+(VT(8)*(.01+(VT(47)/10000))) 48 | 33070 VT$(9)=STR$(VT(9)) 49 | 33080 IFVT(9)>0ANDVT(1)>=VT(9)THENVT(1)=VT(1)-VT(9):VT$(1)=STR$(VT(1)):GOSUB33010 50 | 33090 IFVT(9)>0ANDVT(10)=4ANDVT(2)>=VT(9)THENVT(2)=VT(2)-VT(9):VT$(2)=STR$(VT(2)):GOSUB33010 51 | 33100 IFVT(9)=0THEN33130:ELSEW0=W0OR2:CLOSE2:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":RECORD#2,W1:Y=-INT(VT(9)):GOSUB30500 52 | 33110 IFY>=INT(VT(9))THENRECORD#2,W1:PRINT#2,A$:GOSUB33010 53 | 33120 CLOSE2 54 | 33130 IFVT(9)>0ANDVT(2)>=VT(9)THENVT(2)=VT(2)-VT(9):VT$(2)=STR$(VT(2)):GOSUB33010 55 | 33140 IFVT(9)>0THENVT(11)=VT(11)+1:VT$(11)=STR$(VT(11)):IFVT(11)<=14THEN33200:ELSEIFVT(9)=0THEN33200 56 | 33150 W0=W0OR2:CLOSE2:OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.records":Y=1:DO:Y=Y+1:RECORD#2,Y:SYS8222:LOOPUNTILI$="^"ORI$="{pound}":RECORD#2,Y 57 | 33160 PRINT#2,STR$(W1)+R$+STR$(-INT(VT(8)-VAL(MID$(STR$(VT(10)),3)))):CLOSE2:VT$(8)="0":VT(8)=0:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles" 58 | 33170 RECORD#2,W1:SYS8222:SYS8222:SYS8222:CLOSE2:OPEN1,U1,15:OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.blacklist,s,w":INPUT#1,E 59 | 33180 IFE>0THENCLOSE2:OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.blacklist,s,a" 60 | 33190 PRINT#2,I$:CLOSE2:CLOSE1 61 | 33200 IFVAL(MID$(VT$(10),3))>=VT(8)THENVT$(8)="0":VT$(9)="0":VT$(10)="0":VT$(11)="0":VT(0)=VT(0)+VT(8):VT$(0)=STR$(VT(0)) 62 | 34000 IFVT(12)=0THEN35000:REM*****BONDS 63 | 34010 IFVT(13)=0THEN35000 64 | 34020 W0=W0OR1:VT(13)=VT(13)-1:VT$(13)=STR$(VT(13)) 65 | 34030 VT(14)=VT(14)+(VT(43)*(VT(44)/VT(45)/100)) 66 | 34040 VT$(14)=STR$(VT(14)) 67 | 35000 IFW0=0THEN35030 68 | 35010 IFW0AND2=2THENCLOSE2:OPEN2,U1,2,MID$(STR$(D1),2)+":bnk.accounts" 69 | 35020 RECORD#2,W1:A$="":FORI=0TO14:A$=A$+VT$(I)+R$:NEXTI:PRINT#2,A$ 70 | 35030 W1=W1+1:GOTO31000 71 | 55555 U=PEEK(186):OPEN1,U,15,"s0:bnk.maint":CLOSE1:DSAVE"bnk.maint",U(U):STOP 72 | -------------------------------------------------------------------------------- /extras/emp.create.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Monday, September 13, 2021 11:01:23 PM 3 | !- Import of : 4 | !- c:\tmp\maps\emp.create.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 100 TRAP 280 8 | 105 COLOR 0,1:COLOR 4,1 9 | 110 PRINT "{home*2}{clear}{ct n}{white}Empire File Disk Creator/V5.0 10 | 120 PRINT 11 | 130 PRINT "Insert empire disk in the":PRINT"appropriate drive and press return" 12 | 140 DO:GETKEYA$:LOOPUNTILA$=CHR$(13) 13 | 150 PRINT:PRINT:INPUT"Input what is the max plays per day";PL 14 | 160 INPUT "What is the max number of players";MAX:INPUT "What drive is empire on";DRIV:PRINT:PRINT "Max plays:";PL:PRINT"Max Players:";MAX:PRINT"Base Drive:";DRIV 15 | 170 PRINT:PRINT:INPUT "Save this file (y/n)";SAV$ 16 | 180 IFSAV$<>"y"AND SAV$<>"n"THEN170 17 | 190 IFSAV$="n" THEN END 18 | 200 PRINT 19 | 210 PRINT "Creating account file..." 20 | 220 CLOSE2:DOPEN#2,"emp.players",L150,U(DR):RECORD#2,MAX+1:PRINT#2,"empty":CLOSE2 21 | 230 CLOSE2:DOPEN#2,"emp.players",L150,U(DR):RECORD#2,MAX+1:PRINT#2,"empty" 22 | 240 FOR XX = 1 TO MAX:RECORD#2,XX,1:PRINT#2,"empty":NEXT XX:CLOSE2 23 | 245 CLOSE15:OPEN15,DR,15,"s0:emp.config,emp.reqs,emp.req":CLOSE15 24 | 246 PRINT DS$ 25 | 250 PRINT "Creating Config...":CLOSE2:DOPEN#2,"emp.config",W,U(DR) 26 | 260 PRINT#2,PL:PRINT#2,MAX:PRINT#2,DRIV:CLOSE2 27 | 270 GOTO 300 28 | 280 PRINT:PRINT "{ct g}?";ERR$(ER);"error in";EL 29 | 290 CLOSE2::END 30 | 300 PRINT:PRINT "Entering 'EMPEROR' Requirements: 31 | 310 PRINT 32 | 320 INPUT "Acres";AC:INPUT"Serfs";VA:INPUT"Warlords";WA:INPUT"Markets";MA 33 | 330 INPUT "Mills";MI:INPUT"Foundries";FO:INPUT"Shipyards";SH:INPUT"Brothels";BR:PRINT "Palace? 100% (automatic!)":11111111111 34 | 335 INPUT "Colonies";CJ 35 | 340 INPUT "{down}Save (y/n)";S$ 36 | 350 IFS$<>"y"ANDS$<>"n"THEN340 37 | 360 IFS$="n"THEN300 38 | 370 PRINT:PRINT "Saving..." 39 | 380 CLOSE2:DOPEN#2,"emp.req",W,U(DR):PRINT#2,AC:PRINT#2,VA:PRINT#2,WA:PRINT#2,MA:PRINT#2,MI:PRINT#2,FO:PRINT#2,SH:PRINT#2,BR:PRINT#2,100:PRINT#2,CJ:CLOSE2 40 | 390 CLOSE2:DOPEN#2,"emp.reqs",W,U(DR) 41 | 400 PRINT#2," " 42 | 410 PRINT#2," " 43 | 420 PRINT#2,"{light blue}To Become an EMPEROR you 44 | 430 PRINT#2,"{light blue}must attain: 45 | 440 PRINT#2," " 46 | 450 PRINT#2,"{yellow}Acres{space*7}:{red}"+STR$(AC) 47 | 460 PRINT#2,"{yellow}Serfs{space*7}:{red}"+STR$(VA) 48 | 470 PRINT#2,"{yellow}Warlords{space*4}:{red}"+STR$(WA) 49 | 480 PRINT#2,"{yellow}Markets{space*5}:{red}"+STR$(MA) 50 | 490 PRINT#2,"{yellow}Mills{space*7}:{red}"+STR$(MI) 51 | 500 PRINT#2,"{yellow}Foundries{space*3}:{red}"+STR$(FO) 52 | 510 PRINT#2,"{yellow}Shipyards{space*3}:{red}"+STR$(SH) 53 | 520 PRINT#2,"{yellow}Brothels{space*4}:{red}"+STR$(BR) 54 | 530 PRINT#2,"{yellow}Palace{space*6}: {red}100%" 55 | 535 PRINT#2,"{yellow}Colonies{space*4}:{red}"+STR$(CJ) 56 | 540 PRINT#2," " 57 | 550 PRINT#2,"{light green}>>> {green}Good Luck!! <<<" 58 | 560 PRINT#2," " 59 | 570 CLOSE2 60 | 580 PRINT:INPUT "Recreate the EMPEROR list (y/n)";Y$ 61 | 590 IFY$<>"y"ANDY$<>"n"THEN580 62 | 600 IFY$="n"THEN700 63 | 610 CLOSE15:OPEN15,DR,15,"s0:emp.emps":CLOSE15:CLOSE2:DOPEN#2,"emp.emps",U(DR),W 64 | 620 PRINT#2," " 65 | 630 PRINT#2,"{light blue}Current Emperors..." 66 | 640 PRINT#2," " 67 | 650 CLOSE2 68 | 700 PRINT:PRINT "{white}Empire file disk is now ready":PRINT "Copy empire to appropriate drive and":PRINT "go for it..." 69 | 710 PRINT 70 | 720 PRINT "{reverse on}{clear}Explanation of files on the disk now: 71 | 730 PRINT 72 | 740 PRINT "emp.players - holds the data for 73 | 750 PRINT "{space*18}all of the players 74 | 760 PRINT 75 | 770 PRINT "emp.config{space*2}- holds the start-up 76 | 795 PRINT 77 | 800 PRINT "emp.emps{space*4}- holds the list of all 78 | 805 PRINT "{space*18}those who have filled 79 | 806 PRINT "{space*18}emperor requirements. 80 | 810 PRINT 81 | 820 PRINT "emp.reqs{space*4}- holds the list of all 82 | 830 PRINT "{space*18}requirements needed to 83 | 840 PRINT "{space*18}become an emporer. 84 | 850 PRINT 85 | 860 PRINT "emp.req{space*9}- this is the data file 86 | 870 PRINT "{space*18}of the above... 87 | 880 PRINT 88 | 890 PRINT "{reverse on}Press Any Key":GETKEYA$ 89 | 920 PRINT "{reverse on}{clear}Explanation of files you need to make: 90 | 922 PRINT "{reverse on}(or modify those already existing)" 91 | 930 PRINT 92 | 940 PRINT "emp.menu1{space*3}- main menu 93 | 950 PRINT 94 | 960 PRINT "emp.menu2{space*3}- combat/battle menu 95 | 970 PRINT "{space*18}(add 4=hand to hand) 96 | 975 PRINT "{space*18}(add 5=quit) 97 | 980 PRINT 98 | 990 PRINT "emp.menu3{space*3}- investment menu 99 | 995 PRINT 100 | 1000 PRINT"emp.hand{space*4}- hand to hand combat 101 | 1010 PRINT"{space*18}description file." 102 | 1015 PRINT" 103 | 1020 PRINT"emp.title{space*3}- title screen 104 | 1030 PRINT" 105 | 1032 PRINT"emp.manif{space*3}- load your ship menu" 106 | 1033 PRINT"{space*19}1=grain,2=serfs 107 | 1034 PRINT"{space*19}3=warlord,4=navigators" 108 | -------------------------------------------------------------------------------- /cursor-0e00.spt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Import 1 5 | 6 | True 7 | False 8 | 1 9 | 0 10 | 6 11 | 7 12 | False 13 | False 14 | 15 | 170 16 | 85 17 | 170 18 | 85 19 | 170 20 | 85 21 | 170 22 | 85 23 | 0 24 | 0 25 | 0 26 | 0 27 | 0 28 | 0 29 | 0 30 | 0 31 | 0 32 | 0 33 | 0 34 | 0 35 | 0 36 | 37 | 38 | 39 | 40 | 0 41 | A 42 | A 43 | A 44 | A 45 | A 46 | A 47 | A 48 | A 49 | A 50 | A 51 | A 52 | A 53 | A 54 | A 55 | A 56 | A 57 | A 58 | A 59 | A 60 | A 61 | A 62 | A 63 | A 64 | A 65 | A 66 | A 67 | A 68 | A 69 | A 70 | A 71 | A 72 | A 73 | A 74 | A 75 | A 76 | A 77 | A 78 | A 79 | A 80 | A 81 | A 82 | A 83 | A 84 | A 85 | A 86 | A 87 | A 88 | A 89 | A 90 | A 91 | A 92 | A 93 | A 94 | A 95 | A 96 | A 97 | A 98 | A 99 | A 100 | A 101 | A 102 | A 103 | A 104 | A 105 | A 106 | A 107 | A 108 | A 109 | A 110 | A 111 | A 112 | A 113 | A 114 | A 115 | A 116 | A 117 | A 118 | A 119 | A 120 | A 121 | A 122 | A 123 | A 124 | A 125 | A 126 | A 127 | A 128 | A 129 | A 130 | A 131 | A 132 | A 133 | A 134 | A 135 | A 136 | A 137 | A 138 | A 139 | A 140 | A 141 | A 142 | A 143 | A 144 | A 145 | A 146 | A 147 | A 148 | A 149 | A 150 | A 151 | A 152 | A 153 | A 154 | A 155 | A 156 | A 157 | A 158 | A 159 | A 160 | A 161 | A 162 | A 163 | A 164 | A 165 | A 166 | A 167 | A 168 | A 169 | A 170 | A 171 | A 172 | A 173 | A 174 | A 175 | A 176 | A 177 | A 178 | A 179 | A 180 | A 181 | A 182 | A 183 | A 184 | A 185 | 186 | 187 | -------------------------------------------------------------------------------- /extras/gam.128dle.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Tuesday, February 21, 2023 2:23:36 PM 3 | !- Import of : 4 | !- c:\dev\c=ordle\128dle\128dle.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 rem 128dle - for c128 8 | 20 rem ====== 9 | 30 rem by bo zimmerman and steve gray 10 | 40 rem v1.0, 2023-02-22 11 | 50 rem------------------------------- 12 | 60 : 13 | 70 color0,1:color4,1:color6,1:printchr$(142); 14 | 80 : 15 | 90 mw=12943:gosub3000 16 | 100 w$="" 17 | 110 t$="{space*12}" 18 | 120 z$="{reverse on}{space*3}{reverse off}{white}=" 19 | 130 b1$="{reverse on}O{cm y}P{down}{left*3}{cm g}" 20 | 140 b2$="{cm n}{down}{left*3}L{cm p}{sh @}{up*2}" 21 | 150 p$="{home}{down*21}" 22 | 160 l$="{black}CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC" 23 | 180 bank15:ifl=0thengosub2000 24 | 190 ifl=0thenl=1:bload"gam.128dldic.bin",u8,b1 25 | 200 ifl=1thenl=2:bload"gam.128dlml.bin",u8,b1 26 | 210 : 27 | 220 rem---- generate the word 28 | 230 : 29 | 240 wx=int(rnd(.)*mw):bank1 30 | 250 poke35847,int(wx/256) 31 | 260 poke35846,wx-(256*peek(35847)) 32 | 270 sys35840 33 | 275 ifpeek(35846)=0then240 34 | 280 w$="" 35 | 290 fori=0to4 36 | 300 w$=w$+chr$(peek(35846+i)) 37 | 310 next:bank 15 38 | 315 sc(7)=sc(7)+1 39 | 320 : 40 | 330 rem---- draw screen 41 | 340 : 42 | 350 print"{clear}{white}{space*3}128dle - guess the 5 letter word!" 43 | 360 print l$ 44 | 370 s$="{space*5}" 45 | 380 n=3:gosub1270 46 | 390 forj=1to6 47 | 400 print t$; 48 | 410 gosub940 49 | 420 next j 50 | 430 print"{down*3}";l$ 51 | 440 print"{space*4}"; 52 | 450 n=0:gosub1270:print z$;"correct "; 53 | 460 n=2:gosub1270:print z$;"place "; 54 | 470 n=1:gosub1270:print z$;"wrong"; 55 | 480 print"{home}{down} 56 | 490 : 57 | 500 REM---- ENTER A GUESS 58 | 510 : 59 | 520 GU=1 60 | 530 PRINT T$; 61 | 540 C=0:G$="" 62 | 550 E=0:GOSUB1070:EN=0 63 | 560 : 64 | 570 REM---- CHECK IT 65 | 580 : 66 | 590 FORI=1TO5 67 | 600 A$=MID$(G$,I,1) 68 | 610 BANK 1:POKE35845+I,ASC(A$):BANK 15 69 | 620 IFMID$(W$,I,1)=A$ THEN FE=0:GOTO670 70 | 630 FE=1 71 | 640 FOR II=1 TO 5 72 | 650 IF MID$(W$,II,1)=A$ THEN IFMID$(G$,II,1) <> A$ THEN FE=2 73 | 660 NEXT II 74 | 670 AN(I)=FE 75 | 680 NEXT I 76 | 690 IF E=1 GOTO 550 77 | 700 BANK1:SYS35843 78 | 710 IF PEEK(35846)=0 THEN PRINT"{red}{down}not a word!{left*11}{up}";:EN=1:BANK15:GOTO550 79 | 720 : 80 | 730 REM---- DISPLAY RESULTS 81 | 740 : 82 | 750 BANK15:PRINT"{up}" 83 | 760 PRINT T$; 84 | 770 FOR I=1 TO 5 85 | 780 N=AN(I):GOSUB 1270:C$=MID$(G$,I,1) 86 | 790 GOSUB1020 87 | 800 NEXT I 88 | 810 PRINT"{down*2} 89 | 820 : 90 | 830 rem---- check for win 91 | 840 : 92 | 850 gu=gu+1 93 | 860 if w$=g$ then print p$;"{green}you win!":sc(gu-1)=sc(gu-1)+1:goto 890 94 | 870 if gu>6 then print p$;"{red}you failed. the word was: {white}";w$:goto 890 95 | 880 goto530 96 | 890 print"{white}play again (y/n)?"; 97 | 900 get a$:if a$="y" goto 220 98 | 910 if a$<>"n"goto900 99 | 920 print"{clear}{white}";chr$(14);:gosub3300:end 100 | 930 : 101 | 940 rem---- print string inside boxes 102 | 950 : 103 | 960 fora=1to len(s$) 104 | 970 c$=mid$(s$,a,1):gosub 1020 105 | 980 next 106 | 990 print"{down*2} 107 | 1000 RETURN 108 | 1010 : 109 | 1020 REM---- DRAW BOX WITH LETTER INSIDE 110 | 1030 : 111 | 1040 PRINT B1$;C$;B2$; 112 | 1050 RETURN 113 | 1060 : 114 | 1070 REM---- ENTER GUESS 115 | 1080 : 116 | 1090 PRINT"{white}"; 117 | 1100 GET C$:IF C$="" GOTO 1100 118 | 1110 IF C=5 AND C$=CHR$(13) THEN RETURN 119 | 1120 IFEN=1THENEN=0:PRINT"{down}{white}{reverse off}{space*11}{left*11}{up}"; 120 | 1130 IF C>0 AND C$=CHR$(20) THEN GOSUB1200 121 | 1140 IF C=5 GOTO 1100 122 | 1150 IF C$<"a" OR C$>"z" GOTO 1100 123 | 1160 GOSUB 1020 124 | 1170 G$=G$+C$:C=C+1 125 | 1180 GOTO 1100 126 | 1190 : 127 | 1200 REM---- REMOVE CHARACTER 128 | 1210 : 129 | 1220 G$=LEFT$(G$,LEN(G$)-1):C=C-1 130 | 1230 N=3:GOSUB 1270 131 | 1240 PRINT"{left*3}";B1$;" ";B2$;"{left*3}{white}"; 132 | 1250 RETURN 133 | 1260 : 134 | 1270 REM---- SET COLOR 135 | 1280 : 136 | 1290 IF N=0 THEN PRINT"{green}";:REM GREEN 137 | 1300 IF N=1 THEN PRINT"{gray}";:REM GREY 138 | 1310 IF N=2 THEN PRINT"{yellow}";:REM YELLOW 139 | 1320 IF N=3 THEN PRINT"{light gray}";:REM LT GRY 140 | 1330 RETURN 141 | 2000 REM 142 | 2010 : 143 | 2015 X$="{space*2}" 144 | 2020 PRINT"{clear}{down*3} 145 | 2025 n=0:gosub 1290:printx$; 146 | 2030 s$="{space*3}128dle{space*3}":gosub 960 147 | 2035 n=1:gosub 1290:printx$; 148 | 2040 s$="{space*5}by{space*5}":gosub 960 149 | 2045 n=2:gosub 1290:printx$; 150 | 2050 s$="bo zimmerman":gosub 960 151 | 2055 n=1:gosub 1290:printx$; 152 | 2060 s$="{space*5}and{space*4}":gosub 960 153 | 2065 n=2:gosub 1290:printx$; 154 | 2070 s$=" steve gray ":gosub 960 155 | 2080 print"{white}{down*2}{space*14}loading... " 156 | 2100 return 157 | 2110 return 158 | 3000 dimsc(7):open8,8,2,"scoredle,l,"+chr$(50) 159 | 3010 record#8,501:input#8,id,n1$:record#8,501 160 | 3020 record#8,id 161 | 3030 input#8,n2$,sc(1),sc(2),sc(3),sc(4),sc(5),sc(6),sc(7) 162 | 3040 close8 163 | 3050 ifn1$=n2$thenreturn 164 | 3060 fori=1to7:sc(i)=0:next:return 165 | 3300 open8,8,2,"scoredle,l,"+chr$(50):ifid<=0orlen(n1$)=0then3330 166 | 3310 a$=n1$+chr$(13):fori=1to7:a$=a$+str$(sc(i))+chr$(13):next 167 | 3320 record#8,id:print#8,a$:record#8,id 168 | 3330 close8 169 | 3400 PRINT"totals out of";SC(7);"games." 170 | 3410 FORI=1TO6:PRINT"guess";I;":";SC(I):NEXTI:RETURN 171 | -------------------------------------------------------------------------------- /wm/wm.players.r00: -------------------------------------------------------------------------------- 1 | C64FileWM.PLAYERS}NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NONE 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -------------------------------------------------------------------------------- /bbs.setup.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, May 17, 2017 12:20:22 AM 3 | !- Import of : 4 | !- c:\src\zelch128next\bbs.setup.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM =============== SETUP MODULE V3.0 =============== 08/21/92 = 8 | 30010 OPEN5,2,5,CHR$(8)+CHR$(0) 9 | 30020 DIMP0$(101),U$(10),U(8),D(17,1),M(30),TT$(501),UI$(500),M$(50,6),CD(26,3),MR(50),MN$(50),MX(50),O(30),O$(30),T$(200),PL(26),PL$(26),PH$(27,4),DR$(12) 10 | 30030 DIMVT(50),VT$(50),UB$(20),UB(20),MB$(20),MB(20),SY$(20),SY(20),GB$(50),PR$(6,2),D$(17) 11 | 30100 PRINT"{home*2}";:POKE2847,160:A=SGN(PEEK(215))*5:IFATHENFAST 12 | 30200 GRAPHIC5:PRINT"{home*2}{clear}{ct n}{light gray}{reverse on} C{cm m} HNDL: ID: CRD: CALL: {142}Q{ct n} EXT {142}Q{ct n} MOR {cm g}G " 13 | 30300 PRINT"{reverse on} H{cm m} NAME: AC: U/D: BDAY: {142}Q{ct n} DEL {142}Q{ct n} LIN {cm g}R " 14 | 30400 PRINT"{reverse on} A{cm m} PH #: CO: MSG: TYPE: {142}Q{ct n} SYS {142}Q{ct n} CRM {cm g}F " 15 | 30500 PRINT"{reverse on} T{cm m} LAST: BD: EML: ABCDEFGHIJKLMNOPQRSTUVWXYZ {cm g}X " 16 | 30550 PRINT"{down*20}{reverse on}Sub:";:FORI=1TO62:PRINT" ";:NEXT:PRINT"{cm g}setup {home}"; 17 | 30560 RESTORE:FORX=0TO6:FORY=0TO2:READPR$(X,Y):NEXT:NEXT 18 | 30570 DATA "Local","l-xfer 1300","prg.msg bases","Punter","p-xfer 1300","prg.u/d bases","Xmodem","x-xfer 1300","prg.voting booth","Xmodem CRC","x-xfer 1300" 19 | 30580 DATA "prg.sysop","Xmodem 1k","k-xfer 1300","prg.news","Mul-Punter","p-xfer 1300","prg.misc",,,"prg.network" 20 | 30600 POKE53280,0:POKE53281,0:GRAPHIC0:PRINT"{home*2}{clear}{ct n}{light gray}{reverse on}C{cm g}Hndl: (# ) {cm m}G" 21 | 30700 PRINT"{reverse on}H{cm g}Name: Call {cm m}R" 22 | 30800 PRINT"{reverse on}A{cm g}Ph #: On @ {cm m}F" 23 | 30900 PRINT"{reverse on}T{cm g}ACS : ABCDEFGHIJKLMNOPQRSTUVWXYZ{cm m}X" 24 | 31000 PRINT"{down*20}{reverse on}Sub:";:FORI=1TO22:PRINT" ";:NEXT:PRINT"{cm g}setup {home}";:GRAPHICA:PRINT"{home}{down*5}":WINDOW0,4,PEEK(238),23 25 | 31100 PRINT"{clear}{down}{cyan}Reading system variables...":OPEN2,U,2,"0:sys.variables,s,r" 26 | 31150 FORI=0TO17:INPUT#2,D(I,0),D(I,1):SYS8222:D$(I)=I$:NEXTI:SYS8222:O(25)=INSTR("UF",I$)-1:FORI=0TO18:INPUT#2,M(I):NEXT 27 | 31200 SYS8222:POKE2926,ASC(I$+CHR$(0)):SYS8222:O$(14)=I$:FORI=18TO22:SYS8222:O$(I)=I$:NEXTI:O$(23)="Local":FORI=24TO25:SYS8222:O$(I)=I$:NEXTI 28 | 31300 FORI=1TO26:INPUT#2,CD(I,0),CD(I,1),CD(I,2),CD(I,3):NEXT:SYS8222:N$=I$:FORI=0TO7:POKE2836+I,0:NEXTI:FORI=0TOM(15)-1:GET#2,A$:POKE2836+I,ASC(A$):NEXTI 29 | 31400 CLOSE2:POKE2852,M(4):M(19)=PEEK(56577)ANDM(4):POKE2853,M(19) 30 | 31410 OPEN2,U,2,"0:sys.text,s,r":FORI=1TO123 31 | 31420 SYS8222:IFLEFT$(I$,1)=";"THEN31420:ELSET$(I)=I$:NEXTI:CLOSE2 32 | 31500 POKE2835,1:PRINT"{clear}{down}Insert system data disks, press RETURN.":TI$="000000":DO:GETA$:LOOPUNTILA$=CHR$(13)ORVAL(TI$)>240:I=0 33 | 31600 A=0:PRINT"{clear}{down}Reading user names...":OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":PRINT"{down}{right*3}0 users loaded." 34 | 31700 I=I+1:RECORD#2,I:SYS8222:UI$(I)=I$:IFUI$(I)="^"THEN31700:ELSEIFUI$(I)="{pound}"THEN31800:ELSEPRINTUSING"{home}{down*3}####";I:A=A+1:GOTO31700 35 | 31800 UI$(I)="":PRINT:PRINTUSING"#### active users.";A:CLOSE2:PRINT"{down*2}Loading miscellaneous data..." 36 | 31810 OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.misc data":RECORD#2,1:FORI=2TO6:INPUT#2,O(I):NEXTI:SYS8222:O$(12)=I$ 37 | 31820 SYS8222:O$(26)=I$:RECORD#2,2:A$="":FORI=1TO10:SYS8222:A$=A$+I$:POKE4095+I,LEN(I$):NEXTI:FORI=1TOLEN(A$):A=ASC(MID$(A$,I,1)):IFA=11THENA=13 38 | 31825 POKE4105+I,A:NEXTI:CLOSE2 39 | 31850 CLOSE1:CLOSE2:OPEN1,D(1,0),15:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.one liners,s,r":INPUT#1,I:IFI>20THENCLOSE2:CLOSE1:GOTO31900:ELSEDIMOL$(100):I=1 40 | 31860 SYS8222:OL$(I)=I$:IFPEEK(253)=0ANDI<100THENI=I+1:GOTO31860:ELSECLOSE2:CLOSE1:OL$(0)=STR$(I) 41 | 31900 POKE2982,0:POKE2847,50:POKE2823,1:POKE2825,50:POKE2824,1:POKE2827,0:POKE2829,1:POKE2850,0:SP$="":FORI=1TO100:SP$=SP$+" ":NEXTI 42 | 31950 A=0:I$="1":DO:IF(D(A,0)<>PEEK(2985))AND(A<7ORA>8)THENOPEN2,D(A,0),15:SYS8264:IFST=0THENPRINT#2,"t-ra":SYS8222 43 | 31975 A=A+1:CLOSE2:LOOPUNTILVAL(I$)=0ORA=12:CLOSE2:W9$="":IFVAL(I$)=0THENW9$=I$:O$=MID$(W9$,15,5):I$=MID$(W9$,24,1):GOTO32150 44 | 32000 PRINT"{clear}{down}{cyan}Enter time {white}HH:MM{cyan} format: {yellow}";:POKE2847,5:POKE2895,1:POKE2831,1:GOSUB6:O$=I$:IFLEN(I$)<>5THEN32000:ELSEIFPEEK(238)=79THENPRINT"{up}"TAB(36); 45 | 32100 PRINT"{cyan}AM or PM ({white}a{cyan}/{white}p{cyan})? {yellow}";:DOUNTILI$="a"ORI$="p":GETI$:LOOP:PRINTI$ 46 | 32150 I=VAL(LEFT$(O$,2)):IFI=12ANDI$="a"THENI$="p":ELSEIFI=12ANDI$="p"THENI$="a" 47 | 32200 IFI$="p"THENI=I+80 48 | 32300 POKE56587,DEC(STR$(I)):POKE56586,DEC(RIGHT$(O$,2)):POKE56585,1:POKE56584,1:I=PEEK(56584) 49 | 32310 A=M(2):I$="a":IFA>12THENA=A-12:I$="p" 50 | 32320 IFA=12ANDI$="a"THENI$="p":ELSEIFA=12ANDI$="p"THENI$="a" 51 | 32330 IFI$="p"THENA=A+80 52 | 32340 POKE2960,DEC(STR$(A)) 53 | 32400 IFW9$>""THENI$=MID$(W9$,6,8):ELSEPRINT"{down}{cyan}Enter date {white}MM/DD/YY{cyan} format: {yellow}";:X=8:GOSUB5:IFLEN(I$)<>8THEN32400 54 | 32500 POKE2879,VAL(LEFT$(I$,2)):POKE2880,VAL(MID$(I$,4,2)):POKE2863,VAL(RIGHT$(I$,2)) 55 | 32600 POKE2881,31:POKE2882,28:POKE2883,31:POKE2884,30:IFPEEK(2863)/4=INT(PEEK(2863)/4)THENPOKE2882,29 56 | 32700 POKE2885,31:POKE2886,30:POKE2887,31:POKE2888,31:POKE2889,30:POKE2890,31:POKE2891,30:POKE2892,31:IFPEEK(2880)>PEEK(2880+PEEK(2879))THEN32400 57 | 32800 IFW9$>""THEN32900:ELSEGOSUB400:PRINTCHR$(27)"s"CHR$(13)+"{cyan}Is {white}"+O$(3)+" {cyan}correct ({white}y{cyan}/{white}n{cyan})? {yellow}"; 58 | 32850 TI$="000000":DO:GETI$:LOOPUNTILINSTR("yn",I$)ORVAL(TI$)>60:PRINTI$:IFI$="n"THENW9$="":GOTO32000 59 | 32900 R$=CHR$(13):SYS8216:O$(1)=I$:GOSUB400:O$(4)=O$(3):SY$(7)=O$(3):SY$(6)=UI$(1) 60 | 32910 FORI=0TO3:POKE2963+I,PEEK(804+I):POKE2967+I,PEEK(810+I):NEXTI 61 | 33000 O(21)=0:O(26)=0 62 | 33040 CLOSE2:CLOSE1 63 | 34000 I$="prg.logon":U=D(0,0):D=D(0,1):GOTO23 64 | 55555 U=PEEK(186):OPEN1,U,15,"s0:bbs.setup":CLOSE1:DSAVE"bbs.setup",U(U) 65 | -------------------------------------------------------------------------------- /docs/bbs contents.txt: -------------------------------------------------------------------------------- 1 | Zelch 128 v2.0a 2 | Copyright (C)1991 Elite Software 3 | 4 | Table of Contents 5 | 6 | 7 | 1.0 Introduction to Zelch 128..........................1 8 | 1.1a Disclaimer.........................................1 9 | b Copyright information..............................1 10 | c Usage agreement (do's and don'ts)..................1 11 | 1.2 Ordering updates...................................2 12 | 1.3a Hardware compatibility.............................2 13 | b Notes on drives/logical units......................3 14 | c Ram expansion units................................3 15 | d Trouble shooting...................................3 16 | 1.4a Getting started....................................4 17 | b Drive selection....................................4 18 | c Creating the necessary files.......................5 19 | d Sample configurations..............................5 20 | e Which files do I need? Where?......................6 21 | f Definable text strings.............................7 22 | g Installing RamDos on your boot disk................7 23 | 24 | 2.0 Introduction to the editor.........................7 25 | 2.1a Sequential file editor.............................7 26 | b Command summary....................................8 27 | c Editing commands...................................9 28 | d Line formatting commands...........................9 29 | 2.2a Intro to the menu editor..........................10 30 | b Command summary...................................11 31 | c Editing commands..................................13 32 | 2.3a Offline utilities.................................13 33 | b Function key editor...............................14 34 | c Hardcopy users....................................14 35 | 2.4a Systems variables editor..........................14 36 | b Color cycle.......................................14 37 | c Drive configurations..............................15 38 | d System variables..................................15 39 | e Modem settings....................................17 40 | f Time/call limits..................................18 41 | 42 | 3.0 Miscellaneous utilities...........................19 43 | 3.1 ASCII table editor................................19 44 | 3.2 Copy program......................................20_ 45 | 3.3a "prg.misc" utilities..............................20 46 | b Online menu editor................................20 47 | c Message base fixer................................22 48 | d User searcher/changer.............................23 49 | 50 | 4.0a Booting the BBS...................................23 51 | b Automatic ramloading..............................24 52 | c All that loading..................................24 53 | d Entering the time and date........................25 54 | 4.1 Windows, windows and more windows.................25 55 | 4.2a Waiting for call..................................26 56 | b Screen blanking...................................26 57 | c Screen mode switching.............................26 58 | d That groovy calculator............................26 59 | e Pull down menu....................................26 60 | 4.3a Introduction to "the LOGS"........................27 61 | b Extended call log.................................27 62 | c The errorlog......................................28 63 | 4.4a Monster Mode! (auto-maintenance)..................28 64 | b Writing a script..................................28 65 | c Commands your monster can understand..............29 66 | d The monster mode report...........................30 67 | 4.5a Logging on to the system..........................31 68 | b Communication modes...............................32 69 | c New user logon....................................32 70 | d Calls, time, and idle time limits.................33 71 | 72 | 5.0 Online sysop utilities............................34 73 | 5.1a Chat mode.........................................34 74 | b Forced logoff.....................................34 75 | 5.2a Pull down menu utilities (user dissection)........34 76 | b Profile...........................................35 77 | c Access and flags..................................35 78 | d Time/credits......................................36 79 | e Dos commands......................................36 80 | f Other/unlisted user attributes....................36 81 | 82 | 6.0 Zapterm...........................................38 83 | 6.1 Initialization....................................38 84 | 6.2a Zapterm menu......................................38 85 | b Autodialer and phone book.........................38 86 | c File commands.....................................39 87 | d Terminal commands.................................39 88 | e Other commands....................................39 89 | 90 | 7.0a Op-codes and op-code routines.....................41 91 | b Main BBS op-codes.................................43 92 | 7.1a Intro to Zelch message bases......................49 93 | b Op-code module: "prg.msg bases"...................50 94 | 7.2a Intro to Zelch U/D bases..........................52 95 | b Op-code module: "prg.u/d bases"...................52 96 | 7.3a Intro to the voting booth.........................54 97 | b Op-code module: "prg.voting booth"................54 98 | 7.4a The SysOp-oriented op-codes.......................55 99 | b Op-code module: "prg.sysop".......................55 100 | 7.5a Possibilities with newsfiles......................59 101 | b Op-code module: "prg.news"........................60 102 | 7.6 Op-code module: "prg.misc"........................60 103 | 7.7a Zelch networking system...........................60 104 | b Concepts behind networking........................61 105 | c Op-code module: "prg.network".....................62 106 | 107 | Appendices 108 | 109 | A. Message Maker/online sequential editor............63 110 | B. Definable strings ("sys.text" file)...............66 111 | C. Required system sequential files..................69 112 | D. Writing Zelch specific modules....................72 113 | E. Memory usage and organization.....................75 114 | F. Machine language routines.........................79 115 | 116 | Glossary..........................................84 117 | 118 | -------------------------------------------------------------------------------- /bbs.copy.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Tuesday, May 16, 2017 10:27:03 PM 3 | !- Import of : 4 | !- c:\src\zelch128next\bbs.copy.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 IFPEEK(215)THENFAST 8 | 20 CLR:A$="":O$="":I$="":C$="":U=PEEK(186):D=0:U1=U+1:D1=0:DIMTT$(400):DL$="":FORI=1TO80:DL$=DL$+CHR$(20):NEXTI 9 | 30 M$(0)="Query":M$(1)="Auto-Replace":M$(2)="Complete Auto":M$(3)="Ramload" 10 | 40 IFPEEK(2960)=42THENPRINT"{clear}{down}{ct n}{cyan}Zelch Auto Ramloader v1.0":U1=PEEK(2985):CM=3:I$="*":GOTO610 11 | 70 PRINT"{clear}{down}{ct n}{yellow}Zelch 128 File Copier":PRINTCHR$(27)+"e"; 12 | 80 PRINT"{pink}{cm t*21}":PRINT"{cyan}Source drive:{white}"STR$(U)","MID$(STR$(D),2):PRINT"{cyan}Destination :{white}"STR$(U1)","MID$(STR$(D1),2) 13 | 90 PRINT"{down}{cyan}Copy mode : {white}"M$(CM):PRINT"{down}{yellow}[{white}M{yellow}] {cyan}Copy mode":PRINT"{yellow}[{white}S{yellow}] {cyan}Change source drive" 14 | 100 PRINT"{yellow}[{white}D{yellow}] {cyan}Change destination drive":PRINT"{yellow}[{white}${yellow}] {cyan}Directory (source drive)":PRINT"{yellow}[{white}C{yellow}] {cyan}Copy files":PRINT"{yellow}[{white}@{yellow}] {cyan}DOS command" 15 | 108 PRINT"{yellow}[{white}Q{yellow}] {cyan}Quit" 16 | 110 PRINT"{down}{yellow}[{white}M{yellow},{white}S{yellow},{white}D{yellow},{white}${yellow},{white}C{yellow},{white}@{yellow},{white}Q{yellow}] Command: {white}"; 17 | 120 GETKEYA$:A$=CHR$(ASC(A$)OR128):IFA$=CHR$(164)THENA$="$":ELSEIFA$=CHR$(192)THENA$="@" 18 | 130 I=INSTR("MSD$CQ@",A$):IFITHENPRINTA$:ONIGOTO200,300,400,500,600,150,160 19 | 140 GOTO120 20 | 150 END 21 | 160 PRINT"{down}{cyan}Work on {white}Source{cyan} or"+CHR$(13)+"{white}Destination{cyan} drive: {white}S{left}";:X=U 22 | 170 GETKEYA$:IFA$<>CHR$(13)ANDA$<>"d"ANDA$<>"D"THEN170:ELSEIFA$<>CHR$(13)THENPRINTCHR$(ASC(A$)OR128):X=U1:ELSEPRINT 23 | 180 PRINT:PRINT"{cyan}>";:GOSUB420:IFI$<>""THENOPEN1,X,15,I$:ELSE70 24 | 185 INPUT#1,E,E$,E1,E2:PRINT"{down}{white}";E;"{cyan},{white}";E$;"{cyan},{white}";E1;"{cyan},{white}";E2;:CLOSE1:GETKEYA$:PRINT:GOTO70 25 | 199 END 26 | 200 PRINT"{down}{yellow}[{white}0{yellow}] {cyan}Prompt filenames and replaces":PRINT"{yellow}[{white}1{yellow}] {cyan}Prompt for names, but auto-replace" 27 | 210 PRINT"{yellow}[{white}2{yellow}] {cyan}Complete auto, no prompts":PRINT"{yellow}[{white}3{yellow}] {cyan}Ramload marked files" 28 | 220 PRINT"{down}{yellow}[{white}0{yellow},{white}1{yellow},{white}2{yellow},{white}3{yellow}] Copy mode: {white}"; 29 | 230 GETKEYA$:A$=CHR$(ASC(A$)AND127):I=INSTR("0123",A$):IFITHENPRINTA$:CM=I-1:GOTO70:ELSE230 30 | 300 PRINT"{down}{cyan}Source device: {white}";:GOSUB450:IFI<8ORI>30THEN70:ELSEU=I 31 | 310 PRINT"{cyan} drive/lu: {white}";:GOSUB450:IFI<0ORI>255THEN70:ELSED=I:IFU<>U1ORD<>D1THEN70:ELSEPRINT"{down}No single drive copies!" 32 | 400 PRINT"{down}{cyan}Destination device: {white}";:GOSUB450:IFI<8ORI>30THEN70:ELSEU1=I 33 | 410 PRINT"{cyan} drive/lu: {white}";:GOSUB450:IFI<0ORI>255THEN70:ELSED1=I:IFU1=UANDD1=DTHENPRINT"{down}No single drive copies!":GOTO300:ELSE70 34 | 420 I$="" 35 | 425 GETKEYA$:IFA$=CHR$(13)THENPRINT:RETURN:ELSEIFA$<>CHR$(20)THEN435 36 | 430 IFLEN(I$)=0THEN425:ELSEI$=LEFT$(I$,LEN(I$)-1):PRINTA$;:GOTO425 37 | 435 IFLEN(I$)<(37+(PEEK(215)*40))THENI$=I$+A$:PRINTA$;:GOTO425:ELSEPRINT"{ct g}";:GOTO425 38 | 450 I$="" 39 | 455 GETKEYA$:IFINSTR("0123456789"+CHR$(20)+CHR$(13),A$)=0THEN455 40 | 460 IFA$=CHR$(13)THENPRINT:I=VAL(I$):RETURN 41 | 465 IFA$<>CHR$(20)THEN475 42 | 470 IFLEN(I$)=0THEN455:ELSEI$=LEFT$(I$,LEN(I$)-1):PRINTA$;:GOTO455 43 | 475 IFLEN(I$)<2THENI$=I$+A$:PRINTA$;:GOTO455:ELSEPRINT"{ct g}";:GOTO455 44 | 500 I$="":POKE255,0:INPUT"{down}{cyan}Filemask (*)";I$:IFI$=""THENI$="*" 45 | 510 POKE2829,1:PRINT"{down}Directory"STR$(U)","MID$(STR$(D),2)"{down}" 46 | 520 POKE253,0:OPEN2,U,0,"$"+MID$(STR$(D),2)+":"+I$:SYS8219:CLOSE2 47 | 530 PRINT"{down}{cyan}Press any key to continue:";:GETKEYA$:PRINT:GOTO70 48 | 600 I$="":POKE255,0:INPUT"{down}{cyan}Filemask (*)";I$:IFI$=""THENI$="*" 49 | 605 GOSUB610:GOTO70 50 | 610 X=0:Y=0:OPEN2,U,0,"$"+MID$(STR$(D),2)+":"+I$:GET#2,A$:GET#2,A$:SYS8258 51 | 620 IFCM>1THENPRINT"{down}Scanning directory...";:ELSEPRINT"{down}{yellow}Copy: [{white}Yes{yellow},{white}No{yellow},{white}Done{yellow},{white}Abort{yellow}]{down}" 52 | 630 POKE255,0:POKE253,0:SYS8258:IFPEEK(254)THEN800 53 | 640 IFCM>1THEN700 54 | 650 PRINT"{yellow}"I$"{pink} ("MID$(STR$(PEEK(2975)+256*PEEK(2976)),2)") {white}:"; 55 | 660 GETKEYA$:A$=CHR$(ASC(A$)OR128):I=INSTR("YNDA",A$):IFI=0THEN660 56 | 670 IFI=1THENPRINT"Yes":X=X+1:TT$(X)=I$:GOTO630 57 | 680 IFI=2THENPRINT"No.":GOTO630 58 | 690 IFI=3THENPRINT"Done":GOTO800 59 | 695 PRINT"Abort!":CLOSE2:RETURN 60 | 700 IFCM=3ANDLEFT$(I$,3)="---"THENY=ABS(Y-1):GOTO630 61 | 710 IFCM=3ANDY=0THEN630 62 | 720 X=X+1:TT$(X)=I$:GOTO630 63 | 800 CLOSE2:CLOSE3:IFX=0OR(U=U1ANDD=D1)THENRETURN 64 | 810 OPEN1,U,15:OPEN15,U1,15:PRINTCHR$(13)"{down}{cyan}Copying files...":PRINT 65 | 820 FORY=1TOX:IFRIGHT$(TT$(Y),2)=",r"THEN900 66 | 830 GOSUB999 67 | 840 OPEN2,U,2,MID$(STR$(D),2)+":"+TT$(Y)+",r":INPUT#1,E:IFE>0THENCLOSE2:PRINT"Source Error!":GOTO990 68 | 850 OPEN3,U1,3,MID$(STR$(D1),2)+":"+TT$(Y)+",w" 69 | 860 INPUT#15,E,E$:IFE=0THEN865:ELSECLOSE3:CLOSE2:IFE=63THEN870:ELSEPRINT" Destination Error: {white}"+E$:GOTO990 70 | 865 SYS8255:CLOSE2:CLOSE3:PRINT:PRINT"{up}Finished":GOTO990 71 | 870 IFCM>0THEN890:ELSEPRINT" Replace file (y/n)? {white}"; 72 | 880 GETKEYA$:A$=CHR$(ASC(A$)OR128):I=INSTR("YNQ",A$):IFI=0THEN880:ELSEPRINTLEFT$(DL$,20);:IFI=2THENPRINT:PRINT"{up}{yellow}Skipped":GOTO990 73 | 890 PRINTCHR$(13)"{up}{yellow}Scratch "CHR$(13)"{up}";:PRINT#15,"s"+MID$(STR$(D1),2)+":"+TT$(Y):PRINT#15,"i":GOTO830 74 | 900 PRINT"{yellow}Scanning: {white}"TT$(Y)"{yellow}";:OPEN2,U,2,"$"+MID$(STR$(D),2):O$=LEFT$(TT$(Y),LEN(TT$(Y))-2):SYS8261:RL=PEEK(2977):CLOSE2:IFRL=0THENE=0:GOTO860 75 | 910 OPEN2,U,2,MID$(STR$(D),2)+":"+O$:H=65535:L=1:R=INT(H/2):FORI=0TO30 76 | 920 GOSUB1040:IFETHENH=R:R=R-((H-L)/2):GOTO930:ELSEL=R:R=R+((H-L)/2) 77 | 930 NEXTI:PRINTCHR$(13)"{up}{yellow}Creating"CHR$(13)"{up}";:OPEN3,U1,3,MID$(STR$(D1),2)+":"+O$+",l,"+CHR$(RL):RECORD#3,R:RECORD#3,R:PRINT#3,"burp";:TT$(Y)=O$:GOSUB999 78 | 940 RECORD#2,1:RECORD#3,1:FORI=1TOR:SYS8255:NEXTI:CLOSE2:CLOSE3:PRINTCHR$(13)"{up}Finished" 79 | 990 NEXTY:CLOSE1:CLOSE2:CLOSE3:CLOSE15:IFPEEK(2960)=42THEN2000 80 | 995 PRINT"{down}{cyan}Press any key to continue:";:GETKEYA$:PRINT:RETURN 81 | 999 PRINT"{yellow}Writing : {white}"TT$(Y)CHR$(27)"q{yellow}";:RETURN 82 | 1040 R=INT(R):RECORD#2,R:INPUT#1,E:RETURN 83 | 2000 PRINT"{clear}{down*2}{black}new":PRINT"{down*2}run"CHR$(34)"zelch"CHR$(34)",u("U"){home}"; 84 | 2010 POKE842,13:POKE843,13:POKE208,2:END 85 | 55555 A=PEEK(186):OPEN1,A,15,"s0:bbs.copy":CLOSE1:DSAVE"bbs.copy",U(A):STOP 86 | -------------------------------------------------------------------------------- /extras/mdr.maker.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 12:27:14 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\mdr.maker.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 5 I=RND(-TI) 8 | 10 GOTO100 9 | 20 A$="{down*2}Create "+CHR$(34)+F$+CHR$(34)+" (y/n)? ":PRINTCHR$(27)"s"; 10 | 25 PRINTA$;:GETKEYYN$:PRINTYN$:YN=INSTR("yn",YN$):IFYN=0THEN20:ELSERETURN 11 | 54 GOTO100 12 | 55 U=PEEK(186):D=0:F$="mdr.maker":GOSUB56:SAVE"mdr.maker",U:STOP 13 | 56 OPEN1,U,15,"s"+MID$(STR$(D),2)+":"+F$:CLOSE1:RETURN 14 | 57 OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",l,"+CHR$(X):RECORD#2,Y+1:PRINT#2,"Burp!":RETURN 15 | 100 RESTORE 16 | 110 PRINT"{clear}{down*2}{yellow}Murder Motel file creation program." 17 | 120 PRINT"Written by Bo Zimmerman for Elite Software" 18 | 130 PRINT"{down*2}--Hotel structure and data by Sean D. Wagle" 19 | 140 INPUT"{down*4}Save files on what drive{space*3}8,0{left*5}";U,D 20 | 200 F$="mdr.rooms":GOSUB20:ONYNGOTO210,300 21 | 210 GOSUB56:X=50:Y=99:GOSUB57 22 | 220 FORI=1TO99:A$="":FORX=0TO6:READB$:A$=A$+B$+CHR$(13):NEXTX:RECORD#2,I:PRINT#2,A$:NEXTI:CLOSE2 23 | 300 F$="mdr.stuff":GOSUB20:ONYNGOTO310,400 24 | 310 GOSUB56:X=5:Y=200:GOSUB57 25 | 320 FORI=1TO200:RECORD#2,I:PRINT#2,INT(RND(TI)*99)+1:NEXTI:CLOSE2 26 | 400 F$="mdr.losers":GOSUB20:ONYNGOTO410,500 27 | 410 GOSUB56:X=100:Y=31:GOSUB57 28 | 420 FORI=1TO31:RECORD#2,I:R$=CHR$(13):PRINT#2,"0"+R$+"empty"+R$+"0"+R$+"0"+R$+"0"+R$+"910800"+R$+"0"+R$+"0":NEXTI:CLOSE2 29 | 500 F$="mdr.squeals":GOSUB20:ONYNGOTO510,600 30 | 510 GOSUB56:X=100:Y=11:GOSUB57 31 | 520 FORI=1TO10:RECORD#2,I:PRINT#2,"empty":NEXTI:CLOSE2 32 | 600 PRINT"{down*2}Yer all done!":END 33 | 61102 DATA "falling! Yiiiii!!!!",0,0,0,0,0,41 34 | 61105 DATA IN THE UP ONLY ELEVATOR,15,0,0,23,3,0 35 | 61108 DATA IN UP ONLY ELEVATOR (F2),0,0,0,52,4,0 36 | 61111 DATA IN UP ONLY ELEVATOR (F3),0,0,0,81,0,0 37 | 61114 DATA IN THE NORMAL ELEVATOR (F1),0,0,10,0,6,0 38 | 61117 DATA IN THE NORMAL ELEVATOR (F2),0,60,0,0,7,5 39 | 61120 DATA IN THE NORMAL ELEVATOR (F3),0,78,0,0,0,6 40 | 61123 DATA SLIDING DOWN THE PIPE,0,0,0,0,0,50 41 | 61126 DATA "on the roof of Murder Motel",0,0,0,0,0,83 42 | 61129 DATA IN THE MAIN LOBBY,5,11,29,33,0,0 43 | 61132 DATA IN THE SOUTH MAIN HALL,49,12,27,10,0,0 44 | 61135 DATA IN THE CENTRAL MAIN HALL,51,13,26,11,0,0 45 | 61138 DATA IN THE NORTH MAIN HALL,20,14,24,12,0,0 46 | 61141 DATA IN THE NORTH WING,21,15,23,13,0,0 47 | 61144 DATA AT THE NORTH WING'S END,0,0,2,14,0,0 48 | 61147 DATA WITHIN THE KITCHEN,17,20,0,51,0,0 49 | 61150 DATA INSIDE THE MEAT FREEZER,0,19,16,18,0,0 50 | 61153 DATA "at the Bootleg Bar",0,17,51,0,0,0 51 | 61156 DATA IN THE PANTRY,0,0,20,17,0,0 52 | 61159 DATA IN THE EAST WING,19,0,13,16,0,0 53 | 61162 DATA IN THE JANITOR'S CLOSET,0,0,14,0,0,0 54 | 61165 DATA IN THE OFFICE SUPPLY ROOM,0,29,0,0,0,0 55 | 61168 DATA STANDING IN THE LIBRARY,14,2,0,24,0,0 56 | 61171 DATA IN THE WEST HALLWAY,13,23,0,25,0,0 57 | 61174 DATA IN THE WOMEN'S RESTROOM,0,24,0,0,0,0 58 | 61177 DATA IN THE MEN'S RESTROOM,12,0,0,27,0,0 59 | 61180 DATA "in the TV room (cartoons on)",11,26,0,0,0,0 60 | 61183 DATA SNOOPING IN THE FILE ROOM,0,0,0,30,0,0 61 | 61186 DATA IN THE SECRETARIES' OFFICE,10,0,30,22,0,0 62 | 61189 DATA IN THE MANAGER'S OFFICE,29,28,0,31,0,0 63 | 61192 DATA OUTSIDE IN THE COURTYARD,32,30,0,0,0,0 64 | 61195 DATA UNDER THE FRONT PORCH,0,0,31,0,0,0 65 | 61198 DATA ON THE FRONT PORCH,34,10,0,39,0,0 66 | 61201 DATA IN THE PARKING LOT,37,35,33,0,0,0 67 | 61204 DATA "by the NO VACANCY sign",0,0,36,34,0,0 68 | 61207 DATA IN A PHONE BOOTH,35,0,0,0,0,0 69 | 61210 DATA "facing Interstate 80",0,0,34,0,0,38 70 | 61213 DATA "sitting in a HUGE pothole",0,0,0,0,37,0 71 | 61216 DATA WALKING THROUGH THE GARDEN,0,33,0,40,0,0 72 | 61219 DATA IN A SHRUBBERY MAZE,41,39,47,46,0,0 73 | 61222 DATA "under a huge Larch",0,0,40,45,42,0 74 | 61225 DATA "climbing the Larch's trunk",0,0,0,0,43,0 75 | 61228 DATA "in the Larch's foliage",0,0,0,0,44,0 76 | 61231 DATA "at the top of the Larch",0,0,0,0,0,1 77 | 61234 DATA IN THE GARDNER'S SHED,0,41,46,0,0,0 78 | 61237 DATA BY A RIVERBANK,45,40,0,0,0,0 79 | 61240 DATA AT A KENNELING AREA,40,0,48,0,0,0 80 | 61243 DATA INSIDE A DOG CAGE,47,0,0,0,0,0 81 | 61246 DATA HIDING IN A STORAGE CLOSET,0,0,11,0,0,0 82 | 61249 DATA IN A TRASH COMPACTOR,0,51,0,0,0,0 83 | 61252 DATA SEATED IN THE CAFETERIA,18,16,12,50,0,0 84 | 61255 DATA "on 2nd floor/blue hall",53,3,68,54,0,0 85 | 61258 DATA IN THE OVAL OFFICE,0,0,52,0,0,0 86 | 61261 DATA ON 2ND FLOOR/SMALL HALL,55,52,66,61,0,0 87 | 61264 DATA "in Col. Khadafy's playroom",56,0,54,0,0,0 88 | 61267 DATA "in Tammy Faye's powder room",0,0,55,57,0,0 89 | 61270 DATA "in the Kudzu room",0,56,0,58,0,0 90 | 61273 DATA IN A TACKY TOURIST TRAP,0,57,0,59,0,0 91 | 61276 DATA "sweating in the boiler room",0,58,60,0,0,0 92 | 61279 DATA "on 2nd floor/yellow hall",59,61,62,6,0,0 93 | 61282 DATA "on 2nd floor/Fawn Hall",0,54,0,60,0,0 94 | 61285 DATA "in John Hinkley's bedroom",60,0,64,99,0,0 95 | 61288 DATA IN THE CANNIBAL'S CORNER,99,64,0,0,0,0 96 | 61291 DATA "in GearJammer's room",62,65,0,63,0,0 97 | 61294 DATA IN THE LOONY LAUNDRY,0,66,0,64,0,0 98 | 61297 DATA "on 2nd floor/brown hall",54,68,67,65,0,0 99 | 61300 DATA IN THE PIGEON COOP,66,0,0,0,0,0 100 | 61303 DATA ON 2ND FLOOR/POOL HALL,52,69,0,66,0,0 101 | 61306 DATA IN A SHOOTING GALLERY,0,0,0,68,0,0 102 | 61309 DATA IN THE AVOCADO ROOM,71,81,0,75,0,0 103 | 61312 DATA "in the banana room",72,82,70,0,0,0 104 | 61315 DATA IN CABBAGE CORNER,0,0,71,73,0,0 105 | 61318 DATA IN THE RADISH ROOM,0,72,74,78,0,0 106 | 61321 DATA IN THE SQUASH SUITE,73,0,0,0,0,0 107 | 61324 DATA IN THE BOOGER DINER,0,70,0,76,0,0 108 | 61327 DATA ON A SPIRAL STAIRCASE,0,75,0,77,83,0 109 | 61330 DATA IN TORTURE CHAMBER #1,79,76,0,0,0,0 110 | 61333 DATA "at the altar of Little John",0,73,79,7,0,0 111 | 61336 DATA LOSING ALL SENSE OF SANITY,78,80,77,0,0,0 112 | 61339 DATA IN THE CRUD CAFE,0,0,0,79,0,0 113 | 61342 DATA IN THE VINEGAR BEAN ROOM,82,4,0,70,0,0 114 | 61345 DATA IN THE HILL OF BEANS ROOM,0,0,81,71,0,0 115 | 61348 DATA IN THE NUDE ART GALLERY,84,96,0,0,9,76 116 | 61351 DATA "in a little rubber room",85,0,83,98,0,0 117 | 61354 DATA "in a roomfull of MAGIC FOAM",0,86,84,0,0,0 118 | 61357 DATA "in the smushed Smurf room",87,0,89,85,0,0 119 | 61360 DATA ON THE 4TH FLOOR BALCONY,0,88,86,0,0,0 120 | 61363 DATA ON A SLIPPERY DRAINAGE PIPE,0,0,0,87,0,8 121 | 61366 DATA IN A CHEMICAL DUMP,86,90,91,0,0,0 122 | 61369 DATA "in a SPAM cannery",0,0,94,89,0,0 123 | 61372 DATA "in the spider's den",89,0,0,92,0,0 124 | 61375 DATA "deeper in the spider's den",93,91,0,0,0,0 125 | 61378 DATA "in the sanctuary",0,0,92,0,0,0 126 | 61381 DATA IN A ROOM WITH A FIREPLACE,90,0,97,95,0,0 127 | 61384 DATA IN THE HEXAGON'S CIRCLE,0,94,0,96,0,0 128 | 61387 DATA IN THE ANGULAR PRISM,0,95,0,83,0,0 129 | 61390 DATA "in the fireplace",94,0,0,0,0,0 130 | 61393 DATA HANGING OUT THE WINDOW,0,84,0,0,0,99 131 | 61396 DATA ON THE ROOF OF THE PORCH,0,62,63,0,0,0 132 | -------------------------------------------------------------------------------- /extras/gam.128dlml.asm: -------------------------------------------------------------------------------- 1 | ; Machine language for 128dle 2 | 3 | * = $8C00 4 | ;.D GAM.128DLML.BIN 5 | BLOCKS = $9348 6 | INDEX = $8E00 7 | PTR = $FE 8 | EOALL = $F86E 9 | JMP GETWORD 10 | JMP CHKWORD 11 | ; THE INPUT BUFFER 12 | INPT 13 | byte 0,0,0,0,0 14 | BLKST 15 | byte 0,0 16 | BLKEN 17 | byte 0,0 18 | INREF 19 | byte 0,0,0,0,0 20 | FLCTR 21 | byte 0,0 22 | ; *** INCREASE PTR BY 2 23 | INCPTR2 24 | INC PTR 25 | BNE INCP2 26 | INC PTR+1 27 | INCP2 28 | INC PTR 29 | BNE INCP3 30 | INC PTR+1 31 | INCP3 32 | RTS 33 | ; *** INCREASE THE FIRST LETTER TRACKER 34 | INCFL 35 | INC FLCTR+1; CLC = ALL GOOD, SEC = ALL DONE 36 | LDA FLCTR+1 37 | CMP #$5B 38 | BCC INCFL2 39 | LDA #$41 40 | STA FLCTR+1 41 | INC FLCTR 42 | CLC 43 | INCFL2 44 | RTS 45 | ; *** GET A WORD FROM THE LIST, GIVEN AN INDEX IN INPT 46 | GETWORD 47 | ASL INPT 48 | ROL INPT+1 49 | LDA INPT 50 | CLC 51 | ADC #BLOCKS 55 | STA INREF+1 56 | ; OK, NOW FIND THE HEADER LETTERS 57 | LDA #INDEX 60 | STA PTR+1 61 | LDA #$41; STORE 'A' EVERYWHERE 62 | STA FLCTR 63 | STA FLCTR+1 64 | SEI 65 | ;STA ONRAM 66 | ; START THE SCAN 67 | GW1 68 | LDY #1 69 | LDA (PTR),Y 70 | BEQ GW2 71 | LDA FLCTR 72 | STA INPT 73 | LDA FLCTR+1 74 | STA INPT+1 75 | GW2 76 | JSR INCFL 77 | BCS GW3; IF CS, THEN JUST FAIL 78 | JSR INCPTR2 79 | ; OK, NOW COMPARE TABLE PTR TO INREF 80 | LDY #1 81 | LDA (PTR),Y 82 | BEQ GW1 83 | CMP INREF+1 84 | BCC GW1; LESS THAN, SO TRY AGAIN. 85 | BNE GW3; GREATER THAN, SO MOVE ONTO WIN! 86 | DEY 87 | LDA (PTR),Y 88 | CMP INREF 89 | BCC GW1; LESS THAN, SO TRY AGAIN 90 | BNE GW3; GREATER THAN, SO MOVE ONTO WIN! 91 | ; EQUAL, SO DECLARE THIS THE WINNER 92 | LDA FLCTR 93 | STA INPT 94 | LDA FLCTR+1 95 | STA INPT+1 96 | ; WE NOW KNOW THE FIRST TWO LETTERS 97 | ; WE NOW HAVE TO FIND THE LAST 3 LETTERS 98 | GW3 99 | LDA INREF 100 | STA PTR 101 | LDA INREF+1 102 | STA PTR+1 103 | LDY #0; IS COMMONPRINT 104 | LDA (PTR),Y 105 | AND #$80; YES! CONT... 106 | BNE GW35 107 | STA INPT; NO, FAIL 108 | ;STA ONROM 109 | CLI 110 | RTS 111 | GW35 112 | LDY #1 113 | LDA (PTR),Y 114 | AND #$1F 115 | CLC 116 | ADC #$41 117 | STA INPT+4; WE HAVE THE LAST LETTER 118 | LDA (PTR),Y 119 | STA INPT+3 120 | DEY; GRAB FIRST TWO BITS 121 | LDA (PTR),Y 122 | LSR 123 | ROR INPT+3 124 | LSR 125 | ROR INPT+3 126 | LSR INPT+3; NOW SHIFT AWAY THE OLD NUMBER 127 | LSR INPT+3 128 | LSR INPT+3; WE NOW HAVE THE 4TH LETTER 129 | LDA INPT+3 130 | CLC 131 | ADC #$41 132 | STA INPT+3 133 | LDA (PTR),Y 134 | AND #$7F; CLEAR COMMON BIT 135 | LSR 136 | LSR 137 | CLC 138 | ADC #$41 139 | STA INPT+2; WE NOW HAVE THE 3RD LETTER 140 | ;STA ONROM 141 | CLI 142 | RTS 143 | ; CHECK THE WORD IN INPT AGAINST THE LIST 144 | CHKWORD 145 | LDA INPT+2 146 | ; FIRST CONVERT LAST 3 LETTERS TO 2-BYTE CODE 147 | SEC 148 | SBC #$41 149 | STA INREF 150 | LDA INPT+3 151 | SEC 152 | SBC #$41 153 | STA INREF+1 154 | LDA INPT+4 155 | SEC 156 | SBC #$41 157 | STA INREF+2 158 | ; OK, ALL 3 BYTES IN INREF->INREF2 AS OFFSETS 0-25 159 | LDA INREF+1 160 | ASL 161 | ASL 162 | ASL 163 | ASL 164 | ASL 165 | CLC 166 | ADC INREF+2 167 | STA INREF+2 168 | ; OK INREF 2 HAS FIRST FULL CODED BYTES 169 | LDA INREF 170 | ASL 171 | ASL 172 | STA INREF; FIRST LETTER NOW POSITIONED 173 | LDA INREF+1 174 | LSR 175 | LSR 176 | LSR 177 | CLC 178 | ADC INREF 179 | STA INREF+1 180 | ; OK, NOW INREF+1 AND INREF+2 HAVE THE BYTES! 181 | SEI 182 | ;STA ONRAM 183 | LDA #INDEX 186 | STA PTR+1 187 | LDA #$41 188 | STA FLCTR 189 | STA FLCTR+1 190 | CLC 191 | BCC CHK1 192 | ; START THE SEARCH! 193 | CHK0 194 | JSR INCPTR2; INCREASE THE HEADER POINTER 195 | JSR INCFL 196 | BCC CHK1 197 | LDA #0; RECORD A FAIL 198 | STA INPT 199 | ;STA ONROM 200 | CLI 201 | RTS 202 | CHK1 203 | LDA FLCTR 204 | CMP INPT 205 | BNE CHK0 206 | LDA FLCTR+1 207 | CMP INPT+1 208 | BNE CHK0 209 | ; WE NOW HAVE PTR TO THE RIGHT 3 LETTER TABLE, FIRST 2 LETTERS MATCHED 210 | LDY #1 211 | LDA (PTR),Y 212 | STA BLKST+1 213 | BNE CHK2 214 | STA INPT; FOUND LETTERS, BUT NO WORDS, SO FAIL 215 | ;STA ONROM 216 | CLI 217 | RTS 218 | CHK2 219 | DEY; SET UP THE TABLE PERUSAL 220 | LDA (PTR),Y 221 | STA BLKST 222 | ; WE NEED BLKEND TO BE RIGHT, BUT ITS TRICKY 223 | CHK2A 224 | JSR INCPTR2 225 | JSR INCFL 226 | BCC CHK2B 227 | LDA #EOALL 230 | STA BLKEN+1 231 | SEC 232 | BCS CHK2C 233 | CHK2B 234 | LDY #1 235 | LDA (PTR),Y; IF ITS BLANK, ITS NO GOOD 236 | BEQ CHK2A 237 | STA BLKEN+1 238 | DEY 239 | LDA (PTR),Y 240 | STA BLKEN 241 | CHK2C 242 | LDA BLKST; ALMOST READY TO START 243 | STA PTR 244 | LDA BLKST+1 245 | STA PTR+1 246 | SEC 247 | BCS CHK5 248 | ; BEGIN WORD BLOCK PERUSAL 249 | CHK3 250 | JSR INCPTR2 251 | LDA PTR+1 252 | CMP BLKEN+1 253 | BCC CHK5 254 | LDA PTR 255 | CMP BLKEN 256 | BCC CHK5 257 | CHK4 258 | LDA #0; REACHED END, AND NOT FOUND, SO... 259 | STA INPT 260 | ;STA ONROM 261 | CLI 262 | RTS 263 | CHK5 264 | LDY #0; COMPARE THE BY 265 | LDA (PTR),Y 266 | AND #$7F; CLEAR COMMON BIT 267 | CMP INREF+1 268 | BNE CHK3; FIRST BYTE COMPARE 269 | INY 270 | LDA (PTR),Y 271 | CMP INREF+2 272 | BNE CHK3; 2ND BYTE COMPARE 273 | LDA #$FF 274 | STA INPT; WINNER FOUND! 275 | ;STA ONROM 276 | CLI 277 | RTS 278 | -------------------------------------------------------------------------------- /prg.new user.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, May 17, 2017 12:21:18 AM 3 | !- Import of : 4 | !- c:\src\zelch128next\prg.new user.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM ============= NEW USER MODULE V2.5 ============= 07/18/92 = 8 | 30010 IFO(1)=1THENO(1)=0:GOTO32750:ELSEO$="New User Login":GOSUB250:F$="sys.new msg":U=D(1,0):D=D(1,1):GOSUB25:GOSUB400:O$(17)=O$(2):POKE2825,10:POKE2824,1 9 | 30100 U$(8)=RIGHT$(STR$(M(1)),1)+"0"+RIGHT$(STR$(M(12)),1)+"001008O":U(4)=0:U(5)=0:U(6)=1:U(7)=25 10 | 30200 X=M(14)+1:DO:X=X-1:LOOPUNTILUI$(X)=""ORUI$(X)="^"ORX=1:IFX=1THENO$=T$(43):GOSUB4:GOTO600 11 | 30300 GOSUB30400:GOSUB30700:GOSUB30900:GOSUB31100:GOSUB31300:GOSUB34400:GOSUB34200:GOSUB34300 12 | 30305 IFINSTR("CD",MID$(U$(8),10,1))THENO$(23)=PR$(1,0):O(19)=1:ELSEO$(23)=PR$(2,0):O(19)=2 13 | 30310 BLOAD(PR$(O(19),1)),U(D(0,0)),D(D(0,1)) 14 | 30399 GOTO31500 15 | 30400 O$=T$(44):GOSUB4:X=16:GOSUB5:IFLEN(I$)<2ORI$="NEW"ORI$="New"ORVAL(I$)>0THEN30400:ELSEU$(1)=I$ 16 | 30450 IFRIGHT$(U$(1),1)=" "THENU$(1)=LEFT$(U$(1),LEN(U$(1))-1):GOTO30450 17 | 30500 O$=T$(45):GOSUB4:I=1:DOUNTILI$=UI$(I)ORUI$(I)="":I=I+1:LOOP:IFUI$(I)=I$THENO$=T$(46):GOSUB4:GOTO30400 18 | 30600 O$=R$:GOSUB9:RETURN 19 | 30700 O$=T$(47):GOSUB4:X=16:GOSUB5:IFI$=""THEN30700:ELSEU$(3)=I$ 20 | 30800 RETURN 21 | 30900 O$=T$(48):GOSUB4:W7$="(XXX)/XXX-XXXX":GOSUB40000:U$(4)=I$:RETURN 22 | 31100 O$=T$(49):GOSUB4:X=10:GOSUB5:IFI$=""THEN31100 23 | 31200 U$(2)=I$:RETURN 24 | 31300 O$=T$(50):GOSUB4:C$="YN":GOSUB28:IFI=2THENI=0 25 | 31400 MID$(U$(8),2,1)=RIGHT$(STR$(I),1):POKE2915,I:RETURN 26 | 31500 U$(5)="A":U$(6)="199001010530":U$(9)="00000000000000000000000000":U(1)=M(10):U(2)=M(11):U(3)=BA:U$(10)="11111111111111111111111111" 27 | 31600 O$="{clear}{ct k}{black}A) Handle : {white}"+U$(1)+"{ct k}{black}B) Real name : {white}"+U$(3)+"{ct k}{black}C) Phone number:{white} "+U$(4):GOSUB4 28 | 31700 O$="{black}D) Password : {white}"+U$(2)+"{ct k}{black}E) Columns :{white}"+STR$(40+(40*VAL(MID$(U$(8),2,1)))):GOSUB4 29 | 31720 I=VAL(MID$(U$(8),5,1)):O$="{black}F) Auto-Pause : {white}o"+MID$("ffn ",I*2+1,2):GOSUB4 30 | 31730 X=INSTR("ACDEIMTPO",MID$(U$(8),10,1))-1:IFX<0THENX=8 31 | 31740 O$="{black}G) Computer : {white}"+MID$("Amiga C=64 C=128 Apple IBM/Clone Macintosh Atari CP/M Other ",(X*10)+1,10):GOSUB4 32 | 31750 O$="{black}H) Birthdate : {white}"+U$(7)+"{ct k}{black}I){right}Lines/Screen:{white}"+STR$(U(7)):GOSUB4 33 | 31790 O$=T$(95):GOSUB4:POKE2959,I 34 | 31800 C$="ABCDEFGHI"+R$:GOSUB28:IFI=10THEN31900:ELSEONIGOSUB30400,30700,30900,31100,31300,33900,34200,34300,34400:GOTO31600 35 | 31900 O$=T$(51):GOSUB4:I=0:DO:I=I+1:LOOPUNTILUI$(I)="^"ORUI$(I)="":W0=I:FORI=0TO50:TT$(I)="":NEXTI 36 | 32000 ID=W0:O$=T$(52):GOSUB4:C$=R$:GOSUB28:ID=0 37 | 32100 W2=0:W1=W2:OPEN1,D(1,0),15:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.new app,s,r":INPUT#1,I:IFI>19THENCLOSE2:CLOSE1:GOTO32600 38 | 32200 W2=W2+1:SYS8222:W1=PEEK(253):O$=I$+" {ct c}":GOSUB4:X=40:GOSUB5:IFI$=""THENI$="(no answer)" 39 | 32300 A=INSTR(O$,"{ct c}"):IFATHENMID$(O$,A,1)="{reverse off}":GOTO32300 40 | 32400 TT$(W2)=O$+I$:IFW1=0THEN32200 41 | 32500 CLOSE2:CLOSE1:O$=T$(53):GOSUB4:C$="YN":GOSUB28:IFI=2THEN32100:ELSEO$=T$(54):GOSUB4:OPEN1,D(1,0),15 42 | 32600 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.new user,s,w":INPUT#1,I:IFI>19THENCLOSE2:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.new user,s,a":PRINT#2,"{ct a}" 43 | 32700 ID=W0:UI$(ID)=U$(1):GOSUB400:PRINT#2,STR$(ID)+R$+O$(3)+R$+U$(3)+R$+U$(4)+R$+U$(2)+R$+U$(7):IFW2THENFORI=1TOW2:PRINT#2,TT$(I):NEXTI:ELSEPRINT#2,R$R$ 44 | 32710 CLOSE2:CLOSE1:O(6)=O(6)+1:GOTO2000 45 | 32750 GOSUB990:I=INSTR("ABCDEFGHI",CHR$(ASC(SY$)OR128)):IFITHEN32760:ELSEI=VAL(SY$):IFI=0THEN32800 46 | 32760 ONIGOSUB30400,31100,31300,33100,33900,34000,34200,34100,34400:UI$(ID)=U$(1):GOSUB100:GOTO940 47 | 32800 O$="{ct k}{black}A) Handle : {white}"+U$(1)+"{ct k}{black}B) Password : {white}"+U$(2)+"{ct k}{black}C) Columns :{white}"+STR$(40+(40*VAL(MID$(U$(8),2,1))))+"{ct k}{black}D) Last call : {white}"+O$(4):GOSUB4 48 | 32820 O$="{black}E) Auto-Pause : {white}o"+MID$("ffn ",VAL(MID$(U$(8),5,1))*2+1,2)+"{ct k}{black}F) Line #s : {white}o"+MID$("ffn ",VAL(MID$(U$(8),7,1))*2+1,2):GOSUB4 49 | 32830 X=INSTR("ACDEIMTPO",MID$(U$(8),10,1))-1:IFX<0THENX=8 50 | 32840 O$="{black}G) Computer : {white}"+MID$("Amiga C=64 C=128 Apple IBM/Clone Macintosh Atari CP/M Other ",(X*10)+1,10):GOSUB4 51 | 32845 O$=" N/A":IFBA=2400THENO$=STR$(PEEK(2582)-160) 52 | 32850 O$="{black}H) 2400Timing :{white}"+O$:GOSUB4 53 | 32860 O$="{black}I) Lines/Screen:{white}"+STR$(U(7)):GOSUB4 54 | 32900 O$=T$(95):GOSUB4:C$="ABCDEFGHI"+R$:GOSUB28 55 | 32910 ONIGOSUB30400,31100,31300,33100,33900,34000,34200,34100,34400:UI$(ID)=U$(1) 56 | 33000 IFI=10THENGOSUB100:GOTO940:ELSE32800 57 | 33100 O$=T$(55):GOSUB4:GOSUB10:A=SGN(I):IFI=0THENRETURN 58 | 33200 W1=VAL(MID$(U$(6),3,2)):W2=VAL(MID$(U$(6),5,2)):W3=VAL(MID$(U$(6),7,2)):FORX=1TOABS(I):W3=W3+(A):IFW3>PEEK(2880+W2)THENW2=W2+1:W3=1 59 | 33300 IFW3<1THENW2=W2-1:W3=PEEK(2880+W2) 60 | 33400 IFW2>12THENW2=1:W1=W1+1:W3=1:ELSEIFW2<1THENW2=12:W1=W1-1:W3=31 61 | 33500 IFW1>99THENW1=0:ELSEIFW1<0THENW1=99 62 | 33600 NEXTX:U$(6)=RIGHT$(STR$(W1),2)+RIGHT$(STR$(W2),2)+RIGHT$(STR$(W3),2)+RIGHT$(U$(6),4) 63 | 33610 IFLEFT$(U$(6),1)>"8"THENU$(6)="19"+U$(6):ELSEU$(6)="20"+U$(6) 64 | 33700 X=INSTR(U$(6)," "):IFX>0THENMID$(U$(6),X,1)="0":GOTO33700 65 | 33800 GOSUB400:RETURN 66 | 33900 MID$(U$(8),5,1)=MID$(STR$(ABS(VAL(MID$(U$(8),5,1))-1)),2):I=VAL(MID$(U$(8),5,1)):POKE2959,I:O$="ff":IFITHENO$="n" 67 | 33910 O$="{black}{ct k}Auto-pause function is now o"+O$+".{ct k}":GOSUB4:RETURN 68 | 34000 MID$(U$(8),7,1)=MID$(STR$(ABS(VAL(MID$(U$(8),7,1))-1)),2,1):I=VAL(MID$(U$(8),7,1)):O$="ff":IFITHENO$="n" 69 | 34010 O$="{black}{ct k}Message Maker line numbers are o"+O$+".{ct k}":GOSUB4:RETURN 70 | 34100 IFBA<>2400THENO$="{ct k}{black}2400 baud only!":GOTO4 71 | 34105 O$="{ct k}{black}2400bps timing value is:{ct k*2}{black} [0123456789]{ct k} ["+RIGHT$(LEFT$(".........^.........",179-PEEK(2582)),10)+"]":GOSUB4 72 | 34110 O$="{ct k}{black}Enter new setting (0-9): {ct c}":GOSUB4:GOSUB10:IFI<0ORI>9ORI$=""THENRETURN:ELSEPOKE2582,160+I:MID$(U$(8),9,1)=MID$(STR$(I),2):RETURN 73 | 34200 O$="{ct k}{black}Computer type:{ct k*2}{black}A) Commodore Amiga{ct k}{black}C) Commodore 64{ct k}{black}D) Commodore 128{ct k}{black}E) Apple 8-bit{ct k}{black}I) IBM or Clone":GOSUB4 74 | 34210 O$="{black}M) Apple Macintosh{ct k}{black}T) Atari{ct k}{black}P) CP/M based machine{ct k}{black}O) Other/Unlisted{ct k*2}{black}What computer are you using? {ct c}":GOSUB4 75 | 34220 C$="ACDEIMTPO":GOSUB28:MID$(U$(8),10,1)=A$:RETURN 76 | 34300 O$="{ct k}{black}Enter your birthdate in MM/DD/YY format{ct k}: {ct c}":GOSUB4:W7$="XX/XX/XX":GOSUB40000:U$(7)=I$:RETURN 77 | 34400 O$="{ct k}{black}How many lines per screen can your{f7}terminal display? {ct c}":GOSUB4:GOSUB10:IFI<10ORI>100THENRETURN:ELSEU(7)=I:POKE2984,I-2:RETURN 78 | 40000 W7=1:I$=W7$:DO:A$=MID$(W7$,W7,1):IFA$<>""ANDA$<>"X"THENO$=A$:GOSUB9:W7=W7+1:I=0:GOTO40040 79 | 40010 C$="0123456789"+R$+CHR$(20):GOSUB32:IFI<11ANDW7<=LEN(W7$)THENO$=A$:GOSUB9:MID$(I$,W7,1)=A$:W7=W7+1:GOTO40040 80 | 40020 IFI=12ANDW7>1THENDO:W7=W7-1:O$=A$:GOSUB9:LOOPUNTILMID$(W7$,W7,1)="X"ORW7=1 81 | 40040 LOOPUNTILI=11ANDW7=LEN(W7$)+1:O$=R$:GOTO9 82 | 55555 A=PEEK(186):OPEN1,A,15,"s0:prg.new user":CLOSE1:DSAVE"prg.new user",U(A) 83 | -------------------------------------------------------------------------------- /bbs.ascii edit.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Tuesday, May 16, 2017 10:26:53 PM 3 | !- Import of : 4 | !- c:\src\zelch128next\bbs.ascii edit.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 U=PEEK(186):D=0:PRINT"{ct n}{cyan}{clear}{down}{light blue}Would you like to load":PRINT"new ascii tables (y/n)? ";:GOSUB980:R$=CHR$(13) 8 | 20 GETKEYA$:IFINSTR("yn"+R$,A$)=0THEN20:ELSEPRINTA$:IFA$="y"THENGOSUB3000 9 | 30 PRINT"{down}{cyan}Loading data...";:DIMC$(255),A$(255):T=255:FORI=.TOT:READC$(I):NEXT:T=T-128:FORI=.TOT:READA$(I):NEXT:T$="Input":T=0:PRINT 10 | 100 PRINT:PRINT"{yellow}Current Table: {white}";T$ 11 | 110 PRINT"{yellow}{down}S)ave, L)oad, H)unt," 12 | 120 PRINT"E)dit, C)hange table, Q)uit: {white}";:GOSUB980 13 | 125 GETKEYCO$:CO$=CHR$(ASC(CO$)OR128):I=INSTR("CSLHQE",CO$):IFITHENPRINTCO$:ELSE125 14 | 130 ONIGOSUB1000,2000,3000,4000,999,5000:GOTO100 15 | 980 IFPEEK(2929)=0THENPRINTCHR$(27)"s";:RETURN:ELSERETURN 16 | 990 PRINT:PRINT"{purple}Ascii tables device,drive "U"{left},"MID$(STR$(D),2):PRINT"{up}"TAB(25);:INPUTU,D:IFU<7ORU>30ORD<0THEN990:ELSERETURN 17 | 998 GOSUB980:GETKEYA$:PRINTCHR$(ASC(A$)OR128):RETURN 18 | 999 END 19 | 1000 PRINT"{down}{pink}I)nput tables or O)utput tables: {white}";:GOSUB998:IFINSTR("io"+R$,A$)=0THEN1000:IFA$=R$THENRETURN:ELSET=INSTR("io",A$)-1 20 | 1010 T$="Input":IFTTHENT$="Output":RETURN:ELSERETURN 21 | 2000 GOSUB990:OPEN1,U,15,"s"+MID$(STR$(D),2)+":ascii 3b00":CLOSE1:BSAVE"ascii 3b00",U(U),D(D),P(15104)TOP(15617) 22 | 2010 RETURN 23 | 3000 GOSUB990:BLOAD"ascii 3b00",U(U),D(D),P(15104) 24 | 3010 RETURN 25 | 4000 PRINT:PRINT"{pink}A)scii or C)ommodore tables: {white}";:GOSUB998:IFINSTR("ac",A$)=0THENRETURN 26 | 4010 PRINT"{down}{purple}Enter searchkey or 'L' for list: {white}"; 27 | 4020 GOSUB980:GETB$:IFB$=""THEN4020:ELSEIFB$="l"THEN4500 28 | 4030 POKE244,1:PRINTB$:IFA$="a"THEN4200 29 | 4040 F=-1:FORI=0TO255:IFB$=C$(I)THENF=I 30 | 4050 NEXT:IFF<0THEN4070 31 | 4060 PRINT"{cyan}Is code #";F:SLEEP1:RETURN 32 | 4070 PRINT"{cyan}Code not found (as-typed).":SLEEP1:RETURN 33 | 4200 F=-1:FORI=0TO128:IFB$=A$(I)THENF=I 34 | 4210 NEXT:IFF<0THEN4070:ELSE4060 35 | 4500 PRINT"{white}List":I=1:PRINT:F1=0 36 | 4510 PRINTUSING"{white}(###) {yellow}Description: {cyan}";MID$(STR$(I),2);:IFA$="a"THENPRINTA$(I);:ELSEPRINTC$(I); 37 | 4515 IFPEEK(215)ANDF1=0THENPRINTTAB(40);:F1=1:ELSEPRINT:F1=0 38 | 4520 I=I+1:IFI=256THENPRINT:RETURN:ELSEGETC$:IFC$=" "THENPRINT:RETURN:ELSEIFC$<>"{home}"THEN4510 39 | 4530 GETC$:IFC$=""ORC$="{home}"THEN4530:ELSE4510 40 | 5000 CC=0:O1$="Received as (A ) ":O3$=" Description: ":O2$="Translated to (C=) ":IFT$<>"Input"THENO1$="Code to send (C=) ":O2$="Sent as (A ) " 41 | 5010 PRINT"{clear}{white}() {light gray}denote C= alternate codes"TAB(40)"{white} * {light gray}denote Zelch specific codes":PRINT"{down}{yellow}Table: {white}";T$:IFPEEK(215)=0THENO3$=R$+O3$ 42 | 5020 PRINT"{down}{cyan}"O1$" #{white}"CC;TAB(40)"{cyan}"O3$;:D$=A$(CC):IFINSTR(O1$,"C=")THEND$=C$(CC) 43 | 5040 DD=PEEK(15104+CC+(T*256)):PRINT"{white}"D$;R$;"{cyan}"O2$" #{white}"DD;TAB(40);"{cyan}"O3$;:D$=A$(DD):IFINSTR(O2$,"C=")THEND$=C$(DD) 44 | 5050 PRINT"{white}"D$;R$;R$;"{yellow}[{white}Q{yellow},{white}C{yellow},{white}J{yellow},{white}+{yellow},{white}-{yellow}] Command: {white}";:GOSUB980 45 | 5060 GETKEYB$:IFB$="q"THENPRINT"Quit":PRINT:GOTO100 46 | 5070 IFB$="j"THENPRINT"Jump{light green}":GOTO5100:ELSEIFB$="c"THENPRINT"Change{light green}":GOTO5200 47 | 5075 IFB$="+"ANDCC<255THENPRINTB$:CC=CC+1:GOTO5020:ELSEIFB$="-"ANDCC>0THENPRINTB$:CC=CC-1:GOTO5020:ELSE5060 48 | 5090 IFF>-1THENPOKE15104+CC+(T*256),F:GOTO5020:ELSE5020 49 | 5100 INPUT"{down}Jump to what code";CC:GOTO5020 50 | 5200 INPUT"{down}Enter new translation";F:GOTO5090 51 | 10000 DATA "Null","*Filelink*","Underline-On","*Linelink*","Nothing","White 52 | 10010 DATA "Nothing","Bell","*40col mask*","Tab","Linefeed 53 | 10020 DATA "Enable-Change","Disable-mode","Enter/Return","Lowercase-On","Flash-On 54 | 10030 DATA "Nothing","Crsr Down","Reverse-On","Home","Delete/Backspace 55 | 10040 DATA "Nothing","Nothing","Nothing","Tab-Clear","Nothing" 56 | 10050 DATA "Nothing","Escape","Red","CrsrRight","Green 57 | 10060 DATA "Blue","Space","!","Quote","# 58 | 10070 DATA "$","%","&","'","(" 59 | 10080 DATA ")","*","+",",","-" 60 | 10090 DATA ".","/","0","1","2" 61 | 10100 DATA "3","4","5","6","7" 62 | 10110 DATA "8","9",":",";","<" 63 | 10120 DATA "=",">","?","@","a" 64 | 10130 DATA "b","c","d","e","f" 65 | 10140 DATA "g","h","i","j","k" 66 | 10150 DATA "l","m","n","o","p" 67 | 10160 DATA "q","r","s","t","u" 68 | 10170 DATA "v","w","x","y","z" 69 | 10180 DATA "[","{pound}","]","^","{arrow left}" 70 | 10190 DATA "(@)","(A)","(B)","(C)","(D)" 71 | 10200 DATA "(E)","(F)","(G)","(H)","(I)" 72 | 10210 DATA "(J)","(K)","(L)","(M)","(N)" 73 | 10220 DATA "(O)","(P)","(Q)","(R)","(S)" 74 | 10230 DATA "(T)","(U)","(V)","(W)","(X)" 75 | 10240 DATA "(Y)","(Z)","({sh +})","({cm -})","({sh -})" 76 | 10250 DATA "(PI)","({cm asterisk})","Nothing","Orange","Underline-Off 77 | 10260 DATA "RUN","Nothing","F1","F3","F5" 78 | 10270 DATA "F7","F2","F4","F6","F8" 79 | 10280 DATA "Shift-Return","Uppercase-On","Flash-Off","*Color-Cycle*","CrsrUp" 80 | 10290 DATA "Reverse-Off","ClearScreen","Insert","Brown","Lt.Red" 81 | 10300 DATA "Dk.Grey","Md.Grey","Lt.Green","Lt.Blue","Lt.Grey 82 | 10310 DATA "Purple,","CrsrLeft","Yellow","Cyan","Shft-Space" 83 | 10330 DATA "{cm k}","{cm i}","{cm t}","{cm @}","{cm g}" 84 | 10340 DATA "{cm +}","{cm m}","{cm pound}","{sh pound}","{cm l}" 85 | 10350 DATA "{cm q}","{cm d}","{cm z}","{cm s}","{cm p}" 86 | 10360 DATA "{cm a}","{cm e}","{cm r}","{cm w}","{cm h}" 87 | 10370 DATA "{cm j}","{cm n}","{cm y}","{cm u}","{cm o}" 88 | 10380 DATA "{sh @}","{cm f}","{cm c}","{cm x}","{cm v}" 89 | 10390 DATA "{cm b}","({sh @})","A","B","C" 90 | 10400 DATA "D","E","F","G","H" 91 | 10410 DATA "I","J","K","L","M" 92 | 10420 DATA "N","O","P","Q","R" 93 | 10430 DATA "S","T","U","V","W" 94 | 10440 DATA "X","Y","Z","({sh +})","({cm -})","({sh -})","({cm +})","({sh pound})","(Shft-Space)" 95 | 10450 DATA "({cm k})","({cm i})","({cm t})","({cm @})","({cm g})" 96 | 10460 DATA "({cm +})","({cm m})","({cm pound})","({sh pound})","({cm l})" 97 | 10470 DATA "({cm q})","({cm d})","({cm z})","({cm s})","({cm p})" 98 | 10480 DATA "({cm a})","({cm e})","({cm r})","({cm w})","({cm h})" 99 | 10490 DATA "({cm j})","({cm n})","({cm y})","({cm u})","({cm o})" 100 | 10500 DATA "({sh @})","({cm f})","({cm c})","({cm x})","({cm v})" 101 | 10510 DATA "PI" 102 | 20000 DATA "Null","Nothing","Nothing","Nothing","Nothing","Nothing" 103 | 20010 DATA "Nothing","Bell","Backspace","Nothing","Linefeed" 104 | 20020 DATA "Nothing","Formfeed","Return","Nothing","Nothing" 105 | 20030 DATA "Nothing","Nothing","Nothing","Nothing","Nothing" 106 | 20040 DATA "Nothing","Nothing","Nothing","Nothing","Nothing" 107 | 20050 DATA "Nothing","Escape","Nothing","Nothing","Nothing" 108 | 20060 DATA "Nothing","Space","!","Quote","#" 109 | 20070 DATA "$","%","&","'","(" 110 | 20080 DATA ")","*","+",",","-" 111 | 20090 DATA ".","/","0","1","2" 112 | 20100 DATA "3","4","5","6","7" 113 | 20110 DATA "8","9",":",";","<" 114 | 20120 DATA "=",">","?","@","A" 115 | 20130 DATA "B","C","D","E","F" 116 | 20140 DATA "G","H","I","J","K" 117 | 20150 DATA "L","M","N","O","P" 118 | 20160 DATA "Q","R","S","T","U" 119 | 20170 DATA "V","W","X","Y","Z" 120 | 20180 DATA "[","Backslash","]","^","{cm @}" 121 | 20190 DATA "Apostrophe","a","b","c","d" 122 | 20200 DATA "e","f","g","h","i" 123 | 20210 DATA "j","k","l","m","n" 124 | 20220 DATA "o","p","q","r","s" 125 | 20230 DATA "t","u","v","w","x" 126 | 20240 DATA "y","z","OpenSet","WideColon","CloseSet" 127 | 20250 DATA "Approximately","Nothing" 128 | 55555 A=PEEK(186):OPEN1,A,15,"s0:bbs.ascii edit":CLOSE1:DSAVE"bbs.ascii edit",U(A) 129 | -------------------------------------------------------------------------------- /extras/gam.wheel.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:36:31 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gam.wheel.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 20 SZ=RND(-TI/37) 8 | 30 DIMPR$(20),PU$(200),LP(200),WH$(200),ZP$(50),ZP(50) 9 | 40 PR$(1)="300":PR$(2)="150":PR$(3)="1000":PR$(4)="500":PR$(5)=PR$(1) 10 | 50 PR$(6)="bankrupt":PR$(7)="lose money":PR$(8)="freespin":PR$(9)="550" 11 | 60 PR$(10)="250":PR$(11)="350":PR$(12)="750" 12 | 70 PRINT"{blue}" 13 | 80 PRINT "{blue}{clear}{down*5} Wheel Of Fortune!" 14 | 90 PRINT"{down} By: Bo Zimmerman" 15 | 100 PRINT" Completed: 05/06/88" 16 | 110 PRINT "{light blue}{down*3} Setting Up Puzzles..."; 17 | 120 RESTORE 18 | 130 READPU$(PL),WH$(PL):IFPU$(PL)="00"THENPL=PL-1:GOTO150 19 | 140 PL=PL+1:GOTO130 20 | 150 READZP$(NB),ZP(NB):IFZP$(NB)="**"THENNB=NB-1:GOTO170 21 | 160 NB=NB+1:GOTO 150 22 | 170 PRINT"{down}":PZ=INT(RND(TI)*PL)+1 23 | 180 PZ$=PU$(PZ) 24 | 190 FORI=1TOLEN(PZ$) 25 | 200 LP(I)=0 26 | 210 NEXT 27 | 220 FORI=1TOLEN(PZ$) 28 | 230 IFMID$(PZ$,I,1)=CHR$(32)THENLP(I)=1 29 | 240 NEXT:PRINT"{down*17}{clear}" 30 | 1000 REM ************** MAIN ROUTINE ************************ 31 | 1010 FORI=1TO2000:NEXT:PRINT"{clear}{down}{pink}{down*2}Puzzle type: "; 32 | 1020 IFWH$(PZ)="pe"THENPRINT"PERSON OR{sh space}PEOPLE" 33 | 1030 IFWH$(PZ)="ev"THENPRINT"EVENT" 34 | 1040 IFWH$(PZ)="th"THENPRINT"THING{sh space}OR{sh space}THINGS" 35 | 1050 IFWH$(PZ)="ph"THENPRINT"PHRASE" 36 | 1060 IFWH$(PZ)="pl"THENPRINT"PLACE" 37 | 1070 IFWH$(PZ)="ti"THENPRINT"TITLE" 38 | 1080 IFWH$(PZ)="oc"THENPRINT"OCCUPATION" 39 | 1090 IFWH$(PZ)="qu"THENPRINT"QUOTATION" 40 | 1100 IFWH$(PZ)="fc"THENPRINT"FICTIONAL CHARACTER" 41 | 1110 IFWH$(PZ)="la"THENPRINT"LANDMARK" 42 | 1120 PRINT"{yellow}":FORI=1TOLEN(PZ$):LQ$=MID$(PZ$,I,1) 43 | 1140 IFLP(I)=1THENPRINTLQ$;:GOTO1160 44 | 1150 IFLP(I)=0THENPRINT"-"; 45 | 1160 NEXTI:CN=0 46 | 1170 PRINTCHR$(13)+"{pink}Money:{yellow}";MN;"{left} {pink}Free spins:{yellow}";SN;"{left} " 47 | 1180 PRINT"{pink} Used:{yellow} ";LU$ 48 | 1190 INPUT"{down}{red}(S)pin, (V)owel, (G)uess, (Q)uit";CH$ 49 | 1200 IFCH$="q"ORCH$="Q"THENEND 50 | 1210 IFCH$="g"THENPRINT"{down}{purple}Guess the puzzle:":GOTO1550 51 | 1220 IFCH$="v"THENPRINT"{down}{purple}Buy a vowel:":GOTO1360 52 | 1230 IFCH$<>"s"THEN1190 53 | 1240 PRINT"{purple}{down}Spin the wheel: ";:FORRO=1TO10 54 | 1250 RT=INT(RND(1)*12)+1:PRINTPR$(RT);:FORI=1TOLEN(PR$(RT)):PRINTCHR$(20);:NEXT 55 | 1260 FORW=1TO50:NEXTW:NEXTRO:PRINTPR$(RT) 56 | 1270 IFPR$(RT)="freespin"THENSN=SN+1:FORI=1TO2000:NEXTI:GOTO1000 57 | 1280 IFPR$(RT)="bankrupt"ANDSN<1ANDMN>0THENMN=0:GOTO1000 58 | 1281 IFPR$(RT)="bankrupt"ANDSN>0THENSN=SN-1:GOTO1000 59 | 1282 IFPR$(RT)="bankrupt"THENMN=MN-500:GOTO1000 60 | 1290 IFPR$(RT)="lose money"ANDSN<1THENMN=MN-250:GOTO1000 61 | 1300 IFPR$(RT)="lose money"ANDSN>0THENSN=SN-1:GOTO1000 62 | 1310 INPUT"{down}{cyan}Enter a consonant";LT$:IFLEN(LT$)>1THEN1310 63 | 1320 FL=0:FORI=1TOLEN(LU$):IFLT$=MID$(LU$,I,1)THENFL=1 64 | 1330 NEXT:IFFL=0THENLU$=LU$+LT$ 65 | 1335 IFFL=1THEN1000 66 | 1340 LT=ASC(LT$):IFLT<66ORLT>90ORLT=69ORLT=73ORLT=79ORLT=85THEN1310 67 | 1350 GOTO1490 68 | 1360 IFMN>=250THEN1390 69 | 1370 PRINT"{down}{light blue}You don't have enough money!":FORU=1TO2000:NEXT:GOTO1000 70 | 1390 MN=MN-250 71 | 1400 INPUT"{light blue}Vowel";LT$:IFLT$="a"ORLT$="e"ORLT$="i"ORLT$="o"ORLT$="u"THENGOTO1420 72 | 1410 GOTO1400 73 | 1420 FL=0:FORI=1TOLEN(LU$):IFLT$=MID$(LU$,I,1)THENFL=1 74 | 1430 NEXT:IFFL=0THENLU$=LU$+LT$ 75 | 1440 PO=0:FORI=1TOLEN(PZ$) 76 | 1450 IFMID$(PZ$,I,1)=LT$THENLP(I)=1:PO=PO+1 77 | 1460 NEXT 78 | 1470 IFPO>0THENPRINT"{down}{light blue}There are"+STR$(PO)+" "+LT$+"'s.":GOTO1000 79 | 1480 PRINT"{down}{blue}Sorry...":FORI=1TO2000:NEXT:GOTO1000 80 | 1490 PO=0:FORI=1TOLEN(PZ$) 81 | 1500 IFMID$(PZ$,I,1)=LT$THENLP(I)=1:PO=PO+1:MN=MN+VAL(PR$(RT)) 82 | 1510 NEXT 83 | 1520 IFPO>0THENPRINT"{down}{light blue}There are"+STR$(PO)+" "+LT$+"'s":GOTO1000 84 | 1530 PRINT"{down}{white}Sorry...":FORI=1TO2000:NEXT:MN=MN-VAL(PR$(RT)) 85 | 1540 GOTO1000 86 | 1550 INPUT"{down*2}{light blue}Go ahead";TR$:IFTR$<>PZ$THEN1000 87 | 1560 PRINT"{down}{blue}YOU{sh space}DID{sh space}IT!!!" 88 | 1570 IFMN>0THENGOSUB1650 89 | 1610 IFMN>=0THENPRINT"{light green} Your total cash winnings were $";MN 90 | 1620 IFMN<0THENPRINT" You owe the wheel of fortune $";ABS(MN) 91 | 1630 PRINT"{down*4} bye bye..." 92 | 1640 END 93 | 1650 PRINT"{down}":FORI=1TONB:PRINT"{light gray}";CHR$(I+64);") ";ZP$(I);TAB(20);"- $";ZP(I) 94 | 1660 NEXT 95 | 1670 PP=0:PRINT"{down*3}{light green}Choose item or '*' to put":PRINT"the rest on a gift certificate!" 96 | 1680 PRINT"MONEY : $";MN"{left} " 97 | 1690 FORI=1TONB:IFZP(I)(65+NB)THEN1710 102 | 1740 A=ASC(A$):A=A-64:IFZP(A)>MNTHEN1710 103 | 1750 MN=MN-ZP(A):PRINT "{down}{green}You just bought a brand new":PRINTZP$(A) 104 | 1760 FORI=0TO3000:NEXT:GOTO1650 105 | 1770 PRINT"{down*2}{green}You got many wonderous prizes today!{down}":RETURN 106 | 1780 DATA SUNDAY NEWSPAPER,TH,HIGH SCHOOL SWEETHEART,PE 107 | 1790 DATA THE HOPE DIAMOND,TH,ALL DRESSED UP AND NO PLACE TO GO,PH 108 | 1800 DATA DIAHANN CAROL,PE,SILVER WEDDING ANNIVERSARY,EV 109 | 1810 DATA HOT SPRINGS ARKANSAS,PL,A STITCH IN TIME SAVES NINE,PH 110 | 1820 DATA MICHAEL LANDON,PE,SWEAT SHIRT,TH,OFF THE TOP OF MY HEAD,PH 111 | 1830 DATA LEMON MARANGUE PIE,TH,LEAVE IT TO BEAVER,TI 112 | 1840 DATA DOLLARS AND CENTS,TH,THE LUCK OF THE IRISH,PH 113 | 1850 DATA CHOCOLATE PUDDING,TH,SURPRISE BIRTHDAY PARTY,EV 114 | 1860 DATA DENVER COLORADO,PL,HOPE SPRINGS ETERNAL,QU,FAMOUS LAST WORDS 115 | 1870 DATA PH,THE AGONY AND THE ECSTASY,TI,IN MORE WAYS THAN ONE,PH 116 | 1880 DATA VOLLEYBALL TEAM,PE,PEACE OFFERING,TH,JOHN WAYNE,PE 117 | 1890 DATA NINE TIMES OUT OF TEN,PH,LET THE CAT OUT OF THE BAG,PH 118 | 1900 DATA SENATOR BARRY GOLDWATER,PE,CASE DISMISSED,PH,SOCCER BALL,TH 119 | 1910 DATA LOOK BEFORE YOU LEAP,PH,COMPUTER SOFTWARE,TH 120 | 1920 DATA SPLIT MY SIDES LAUGHING,PH,MEAT AND POTATOES,TH 121 | 1930 DATA FOOTBALL STADIUM,PL,DYNASTY,TI,THE BIG BAD WOLF,FC 122 | 1940 DATA LIFE IS A CABARET OLD CHUM,QU,CALM COOL AND COLLECTED,PH 123 | 1950 DATA ARTE JOHNSON,PE,WILD GOOSE CHASE,PH,CASHMERE SWEATER,TH 124 | 1960 DATA AS THE CROW FLIES,PH,COME UP AND SEE ME SOMETIME,QU 125 | 1970 DATA TICKET STUB,TH,NOT A MOMENT TOO SOON,PH,SUPER BOWL,EV 126 | 1980 DATA SENSE OF HUMOR,PH,THE LOVE BOAT,TI,SPLIT SECOND,PH 127 | 1990 DATA A LEGEND IN HIS OWN TIME,PH,NEW ORLEANS,PL,PROGRAMMER,OC 128 | 2000 DATA PLANET ZELCH,PL,KISS,PE,DALLAS COWBOYS,PE,THE ZACMAN,FC 129 | 2010 DATA THE TOWER OF LONDON,LA,THE PIRATES OF PENZANCE,TI 130 | 2020 DATA ROOM TEMPERATURE,PH,MICHELE LEEX,PE,THE SEVEN HILLS OF ROME,PL 131 | 2030 DATA DO YOU KNOW THE WAY TO SAN JOSE,TI,CIRCUS OF THE STARS,EV 132 | 2040 DATA SATURDAY NIGHT LIVE,TI,HAVING THE TIME OF MY LIFE,PH 133 | 2050 DATA SALT LAKE CITY UTAH,PL,MORSE CODE,TH,ANGELA LANDSBURY,PE 134 | 2060 DATA ROOM AND BOARD,PH,THE LAST DAYS OF POMPEII,TI 135 | 2070 DATA TRIAL LAWYER,OC,TAMPA BAY BUCCANEERS,PE,SHERWOOD FOREST,PL 136 | 2080 DATA SOMEBODY UP THERE LIKES ME,QU,THEY LIVED HAPPILY EVER AFTER,QU 137 | 2090 DATA WALTER CRONKITE,PE,TEAM HORSES,TH,EXTENSION PHONE,TH 138 | 2100 DATA MY FUNNY VALENTINE,TI,LIFETIME GUARANTEE,TH,INCREDIBLE HULK,FC 139 | 2110 DATA LLOYD BRIDGES,PE,LOS ANGELES LAKERS,PE,WHEEL OF FORTUNE,TI 140 | 2120 DATA DON RICKLES,PE,SPEED CHECKED BY RADAR,PH,ONE FROM THE HEART,PH 141 | 2130 DATA I ONLY HAVE EYES FOR YOU,QU,CONFLICT OF INTEREST,PH 142 | 2140 DATA LONG JOHN SILVER,FC,DELUSIONS OF GRANDEUR,PH,ZELCH BE COOL,QU 143 | 2150 DATA WOMEN AND CHILDREN FIRST,PH,HELP,QU,DEATH,EV,THE CIVIL WAR,EV 144 | 2160 DATA 00,00 145 | 2170 DATA UMBRELLA TABLE,119,STRUCTO GAS GRILL,219,ROPE HAMMACK,69 146 | 2180 DATA GOLD WATCH,117,MINOLTA CAMARA,129,UGLY PAINTING,2000 147 | 2190 DATA COLOR TV,300,GENERIC COMPUTER,1500,CERAMIC DALMATION,400 148 | 2200 DATA REFRIGERATOR,579,12MOS FRUIT CAKES,50,HIS AND HER BIKES,379 149 | 2210 DATA TRIP TO ETHIOPIA,3 150 | 2220 DATA"**",99 151 | -------------------------------------------------------------------------------- /prg.monster.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, May 17, 2017 12:20:47 AM 3 | !- Import of : 4 | !- c:\src\zelch128next\prg.monster.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM =========== AUTO-MAINTENANCE W/SCRIPT =========== 06/29/91 = 8 | 30010 IFPEEK(2961)<2THENPOKE2829,1:POKE2823,1:POKE2961,2:PRINT"{clear}{down}{ct n}{cyan}Monster Mode v2.0--Loading script...";:X=-1:ELSE30210 9 | 30020 POKE2825,255:POKE2824,1:POKE2827,0:O$="Monster Mode v2.0":GOSUB250:P0=1 10 | 30030 OPEN1,D(1,0),15:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.script,s,r":INPUT#1,A:IFATHENPRINT"{left*17}Default script. ":CLOSE1:CLOSE2:GOTO30050 11 | 30040 X=X+1:SYS8222:TT$(X)=I$:IFPEEK(253)=0THEN30040:ELSETT$(X+1)="{pound}":CLOSE2:CLOSE1:PRINT:GOTO30110 12 | 30050 TT$(0)="user 60":TT$(1)="msg":TT$(2)="news":TT$(3)="collect":TT$(4)="{pound}":X=3:GOTO30110 13 | 30060 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.network":RETURN 14 | 30100 REM ----------- CHANGE COMMANDS TO LOWERCASE ---------------------------- 15 | 30110 FORI=0TOX:IFTT$(I)=" "ORTT$(I)=""ORLEFT$(TT$(I),1)=";"THENTT$(I)="^" 16 | 30120 NEXTI:FORI=0TOX:A=0:FORY=1TOLEN(TT$(I)):A$=MID$(TT$(I),Y,1) 17 | 30130 IFA$="{f5}"THENA=ABS(A-1):GOTO30160 18 | 30140 IFATHEN30160 19 | 30150 MID$(TT$(I),Y,1)=CHR$(ASC(A$)AND127) 20 | 30160 NEXTY:NEXTI 21 | 30200 REM ----------- EXECUTE NEXT SCRIPT COMMAND ----------------------------- 22 | 30210 CLOSE1:CLOSE15:CLOSE2:CLOSE3:CLOSE4:X=-1 23 | 30215 X=X+1:IFX>100THEN50010 24 | 30220 A$=TT$(X):IFA$="{pound}"THEN50010:ELSEIFA$="^"THEN30215 25 | 30230 TT$(X)="^":IFINSTR(A$,"{f5}")=0THENF$="":GOTO30250 26 | 30240 F$=MID$(A$,INSTR(A$,"{f5}")+1)+"{f5}":F$=LEFT$(F$,INSTR(F$,"{f5}")-1) 27 | 30250 A=INSTR(A$,","):IFA=0THENU=D(0,0):D=D(0,1):GOTO30270 28 | 30260 U=VAL(MID$(A$,A-2)):D=VAL(MID$(A$,A+1)) 29 | 30270 A=INSTR(A$,"{f5}"):IFA<1THENA=INSTR(A$,","):IFA<1THENI$=A$:GOTO30300 30 | 30280 I$=LEFT$(A$,A-1) 31 | 30300 IFINSTR(I$,"user")THEN30610 32 | 30310 IFINSTR(I$,"msg")ORINSTR(I$,"message")THEN31010 33 | 30320 IFINSTR(I$,"news")THEN30810 34 | 30330 IFINSTR(I$,"collect")ORINSTR(I$,"validate")THEN31210 35 | 30340 IFINSTR(I$,"print")THENO$=F$:GOSUB4:GOTO30210 36 | 30350 IFINSTR(I$,"run")THENI$=F$:O$="Online Basic":GOSUB250:POKE2961,2:GOTO8940 37 | 30360 IFINSTR(I$,"execute")THENO$="Zelch Specific Module":GOSUB250:I$=F$:GOTO23 38 | 30370 IFINSTR(I$,"dos")ORINSTR(I$,"disk")THEN31310 39 | 30380 IFINSTR(I$,"display")ORINSTR(I$,"file")THENGOSUB26:GOTO30210 40 | 30390 IFINSTR(I$,"hard")THEN31410 41 | 30400 IFINSTR(I$,"clear")ORINSTR(I$,"reset")THEN31510 42 | 30410 IFINSTR(I$,"modem")ORINSTR(I$,"hayes")THENPRINT#5,R$F$:GOTO30210 43 | 30420 IFINSTR(I$,"network")THENW1=.2:I$="prg.network":U=D(0,0):D=D(0,1):GOTO23 44 | 30590 GOTO30210 45 | 30600 REM ----------- USER WEED ROUTINES -------------------------------------- 46 | 30610 IFINSTR(A$," ")=0THENA$=A$+" 60" 47 | 30620 A$=MID$(A$,INSTR(A$," ")+1):X=VAL(A$):IFX<1THEN30610 48 | 30630 GOSUB400:OPEN1,D(5,0),15:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":W1=1:W5=0 49 | 30640 W2=VAL(MID$(O$(2),5,2)):W3=VAL(MID$(O$(2),3,2)):W4=VAL(LEFT$(O$(2),2)):FORI=1TOX 50 | 30650 W2=W2-1:IFW2<1THENW3=W3-1:W2=PEEK(2880+W3):IFW3<1THENW3=12:W2=31:W4=W4-1:IFW4<0THENW4=99 51 | 30660 NEXTI:W1$=RIGHT$(STR$(W4),2)+RIGHT$(STR$(W3),2)+RIGHT$(STR$(W2),2):DO:W7=INSTR(W1$," "):IFW7>0THENMID$(W1$,W7,1)="0" 52 | 30670 LOOPUNTILW7=0:IFLEFT$(W1$,1)>"8"THENW1$="19"+W1$:ELSEW1$="20"+W1$ 53 | 30680 O$="Checking userfiles...":GOSUB250:I=FRE(1) 54 | 30690 IFUI$(W1)="^"THENW1=W1+1:IFW1<501THEN30690 55 | 30700 IFUI$(W1)=""ORUI$(W1)="{pound}"ORW1>500THENCLOSE2:CLOSE1:GOTO30210 56 | 30710 RECORD#2,W1:FORI=1TO6:SYS8222:NEXTI:A$=I$:IFLEFT$(A$,1)>"8"THENA$="19"+A$:ELSEA$="20"+A$ 57 | 30715 FORI=1TO2:SYS8222:NEXTI:IFLEFT$(A$,8)>W1$ORMID$(I$,3,1)="1"THENW1=W1+1:GOTO30690 58 | 30720 O$="Munching user":GOSUB250:A$="^"+R$+"{f4}"+R$+"^"+R$+"(xxx)/xxx-xxxx"+R$+"A"+R$+"^"+R$+"00/00/00"+R$+"00000000000"+R$ 59 | 30725 FORI=1TO2:A$=A$+"00000000000000000000000000"+R$:NEXTI:FORI=1TO8:A$=A$+" 0"+R$:NEXTI:RECORD#2,W1:PRINT#2,A$:A$="":I=FRE(1) 60 | 30730 PRINT#1,"s"+MID$(STR$(D(5,1)),2)+":mail."+STR$(W1):P0$(P0)="Munched user #"+STR$(W1)+"/"+UI$(W1):UI$(W1)="^":P0=P0+1:W1=W1+1:GOTO30680 61 | 30800 REM ----------- NEWS FILE ROUTINES -------------------------------------- 62 | 30810 IFF$=""THENF$="sys.news":U=D(1,0):D=D(1,1) 63 | 30815 IFLEFT$(O$(2),1)>"8"THENW2$="19"+O$(2):ELSEW2$="20"+O$(2) 64 | 30820 O$="Updating "+F$:GOSUB250:X=0:GOSUB400:OPEN1,U,15:OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",s,r":INPUT#1,E:IFE>0THEN30910 65 | 30830 SYS8222:SYS8222:IFPEEK(253)THEN30210 66 | 30840 IFI$>=O$(2)THENSYS8213:GOTO30830 67 | 30850 CLOSE2:CLOSE1:OPEN1,U,15,"s"+MID$(STR$(D),2)+":sys.work":OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",s,r":X=0 68 | 30860 OPEN3,U,3,MID$(STR$(D),2)+":sys.work,s,w" 69 | 30870 SYS8222:A$=I$:SYS8222:IFPEEK(253)THEN30910 70 | 30875 IFLEFT$(I$,1)>"8"THENI$="19"+I$:ELSEI$="20"+I$ 71 | 30880 IFW2$>I$THENSYS8222:SYS8213:P0$(P0)="Stomped "+F$+" #"+STR$(X+1)+"/{f5}"+I$+"{f5}":P0=P0+1:GOTO30870 72 | 30890 IFX>0THENPRINT#3,CHR$(1) 73 | 30900 PRINT#3,A$:PRINT#3,I$:GOSUB31:X=X+1:GOTO30870 74 | 30910 CLOSE2:CLOSE3:IFX=0THENPRINT#1,"s"+MID$(STR$(D),2)+":sys.work":PRINT#1,"s"+MID$(STR$(D),2)+":"+F$:GOTO30210 75 | 30920 PRINT#1,"s"+MID$(STR$(D),2)+":"+F$:PRINT#1,"r"+MID$(STR$(D),2)+":"+F$+"=sys.work":GOTO30210 76 | 31000 REM ----------- WEED MESSAGE BASES -------------------------------------- 77 | 31010 W1=1:W9=26:IFINSTR(A$,",")>0ANDD>=UANDU>=1ANDD<=26THENW1=U:W9=D 78 | 31020 CLOSE2:CLOSE1:OPEN1,D(1,0),15:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mbases"+F$:INPUT#1,E:IFE>0THEN30210 79 | 31025 IFW1>W9THEN30210:ELSERECORD#2,W1:SYS8222:U=VAL(I$):IFU<8THENW1=W1+1:GOTO31025 80 | 31030 INPUT#2,D:FORI=1TO5:SYS8222:TT$(150+I)=I$:NEXTI:I=FRE(1) 81 | 31040 C$=F$+CHR$(192+W1):O$="Sniffing sig /"+C$:GOSUB250 82 | 31050 IFVAL(TT$(155))=0ORLEFT$(TT$(154),1)<>"{sh @}"THENW1=W1+1:GOTO31025 83 | 31060 CLOSE2:CLOSE1:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mdata"+F$ 84 | 31065 RECORD#2,((W1-1)*51)+51:INPUT#2,W2:FORI=1TOW2:RECORD#2,((W1-1)*51)+I:SYS8222:MN$(I)=I$:INPUT#2,MR(I) 85 | 31070 NEXTI:CLOSE2:FORI=1TOW2:IFMR(I)=0ORVAL(MN$(I))=0ORMR(I)CHR$(1)THENPRINT#3,I$:GOTO31110 90 | 31120 PRINT#3,I$:FORX=1TOMR(I)-VAL(TT$(153)):SYS8213:MR(I)=MR(I)-1:NEXTX 91 | 31130 SYS8222:IFPEEK(253)=0THENPRINT#3,I$:GOTO31130 92 | 31140 PRINT#3,I$:CLOSE3:CLOSE2:PRINT#1,"s"+MID$(STR$(D),2)+":msg."+C$+STR$(I):PRINT#1,"r"+MID$(STR$(D),2)+":msg."+C$+STR$(I)+"=sys.work" 93 | 31150 CLOSE1:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.mdata"+F$:RECORD#2,((W1-1)*51)+I:PRINT#2,MN$(I)+CHR$(13)+STR$(MR(I)):CLOSE2:O$="Burp!":GOSUB250 94 | 31160 NEXTI:W1=W1+1:GOTO31020 95 | 31200 REM ----------- COLLECT/VALIDATE ---------------------------------------- 96 | 31210 O$="Eating Disk"+STR$(U)+","+MID$(STR$(D),2):GOSUB250 97 | 31220 OPEN1,U,15,"v"+MID$(STR$(D),2):GOTO30210 98 | 31300 REM ----------- DOS COMMANDS -------------------------------------------- 99 | 31310 O$="Drooling on drive"+STR$(U)+","+MID$(STR$(D),2):GOSUB250 100 | 31320 OPEN1,U,15,F$:INPUT#1,I:CLOSE1:GOTO30210 101 | 31400 REM ----------- HARDCOPY A SEQ FILE TO PRINTER DEVICE 4 ----------------- 102 | 31410 O$="Scratching on paper":GOSUB250 103 | 31420 OPEN1,U,15:OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",s,r":INPUT#1,E:IFETHENCLOSE1:CLOSE2:GOTO30210:ELSEOPEN4,4,7 104 | 31430 SYS8222:FORX=1TO4:DO:A$=MID$("{ct k}{f6}{f5}{f7}",X,1):A=INSTR(I$,A$):IFATHENMID$(I$,A,1)=MID$(CHR$(13)+CHR$(13)+CHR$(34)+" ",X,1) 105 | 31440 LOOPUNTILA=0:NEXTX:PRINT#4,I$:IFPEEK(253)THENCLOSE1:CLOSE2:CLOSE4:GOTO30210:ELSE31430 106 | 31500 REM ----------- CLEAR OR RESET SYSTEM VARIABLE -------------------------- 107 | 31510 A=INSTR(A$," "):IFA=0THEN30210 108 | 31520 A$=MID$(A$,A+1):IFVAL(A$)<1THEN31510 109 | 31530 O(VAL(A$))=0:GOTO30210 110 | 50000 REM ----------- MONSTER MODE REPORT ------------------------------------- 111 | 50010 U=D(1,0):D=D(1,1):OPEN1,U,15:OPEN2,U,2,MID$(STR$(D),2)+":sys.userlog,s,a":INPUT#1,E:IFE>0THENCLOSE2:OPEN2,U,2,MID$(STR$(D),2)+":sys.userlog,s,w" 112 | 50020 PRINT#2,"{reverse on}{light green}MONSTER{sh space}MODE{sh space}REPORT{reverse off}: ";:IFP0=1THENPRINT#2,"Growl!{ct k}":CLOSE2:CLOSE1:GOTO50040 113 | 50030 PRINT#2:FORI=1TOP0-1:PRINT#2,P0$(I):P0$(I)="":NEXTI:PRINT#2,"":CLOSE2:CLOSE1 114 | 50040 FORI=1TO50:MN$(I)="":MR(I)=0:NEXTI:FORI=0TO200:TT$(I)="":NEXTI:POKE2961,0 115 | 50099 CLOSE2:CLOSE1:I=FRE(1):I$="prg.logon":U=D(0,0):D=D(0,1):GOTO23 116 | 55555 U=PEEK(186):OPEN1,U,15,"s0:prg.monster":CLOSE1:DSAVE"prg.monster",U(U) 117 | -------------------------------------------------------------------------------- /prg.voting booth.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, May 17, 2017 12:22:15 AM 3 | !- Import of : 4 | !- c:\src\zelch128next\prg.voting booth.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 30000 SYS15625:REM ============ VOTING BOOTH MODULE V1.7 =========== 02/10/92 = 8 | 30010 ON(W1-300)GOTO30400,32500,32900,33500,35000,35400:GOTO940 9 | 30050 OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.voting booth":RETURN 10 | 30060 OPEN2,U,2,MID$(STR$(D),2)+":vote.topic "+CHR$(64+W5)+",s,r":RETURN 11 | 30100 O$=T$(79):GOSUB770:IFW1=301ORI=0THENRETURN:ELSEI=I+192 12 | 30200 GOSUB30050:RECORD#2,I-192:SYS8222:SYS8222:CLOSE2:IFMID$(I$,ASC(U$(5))-192,1)<>"1"THENI=0:RETURN:ELSEI=I-192:RETURN 13 | 30399 REM ----------- CREATE/EDIT TOPIC 14 | 30400 GOSUB760:IFSY$="+"THEN30600:ELSEIFI>0ANDI<26THENW5=I:GOTO30900:ELSEIFSY$<>"*"THEN920:ELSEGOSUB30100:IFI=0THEN920:ELSEW5=I:GOTO30900 15 | 30600 O$=T$(80):GOSUB4:W5=1:GOSUB30050 16 | 30700 RECORD#2,W5:O$=".":GOSUB9:SYS8222:IFI$="{pound}"THENO$=R$:GOSUB9:CLOSE2:GOTO30900:ELSEW5=W5+1:IFW5<27THEN30700 17 | 30800 CLOSE2:O$=T$(81):GOSUB4:GOTO920 18 | 30900 GOSUB30050:RECORD#2,W5:U=D(2,0):D=D(2,1):SYS8222:W5$=I$:SYS8222:W6$=I$:SYS8222:SYS8222:SYS8222:W9$=I$:CLOSE2:IFW5$="{pound}"THENW5$="":W9$="" 19 | 31100 IFSY$<>"+"ORMID$(U$(8),4,1)="1"THENE=0:SY$=W6$:W2$="{ct k}{black}Access: ":GOSUB610:W6$=SY$ 20 | 31400 FORI=1TO100:TT$(I)="":NEXT:I=FRE(1):O$="{ct k}{black}Subject of voting{f7}topic: "+W5$+"{ct c}":W7$=W5$:A=20:IFW5$THENGOSUB35900:W5$=W7$:ELSEGOSUB4:GOSUB35910:W5$=W7$ 21 | 31450 GOSUB400:W8$=W5$+R$+W6$+R$+STR$(ID)+R$+O$(3)+R$:O$=T$(83):GOSUB4:F$="vote.text "+CHR$(W5+64):O(12)=0:GOSUB8330:O(8)=23:O(12)=1:GOSUB1010:IFO(11)THEN920 22 | 31470 GOSUB990:IFW9$<>""THENI=VAL(W9$):ELSEI=VAL(SY$):IFSY$="*"THENO$="{ct k}{black}N)ormal topic or Q)uestionaire: {ct c}":GOSUB4:C$="NQ"+R$:GOSUB28:IFI=3THEN920 23 | 31500 GOSUB400:GOSUB30050:RECORD#2,W5:PRINT#2,W8$+STR$(I):CLOSE2:IFI=2THEN37000 24 | 31600 OPEN1,U,15:GOSUB30060:INPUT#1,I:IFI>20THENCLOSE2:CLOSE1:W1=0:GOTO32000 25 | 31700 INPUT#2,W1:FORI=1TOW1:INPUT#2,TT$(I):NEXTI:CLOSE2:CLOSE1:W1=0 26 | 32000 W7$=TT$(W1+1):O$="{ct k}{black}Description for choice{f7}"+CHR$(W1+193)+": "+W7$+"{ct c}":A=60:IFW7$THENGOSUB35900:ELSEGOSUB4:GOSUB35910 27 | 32010 IFW7$=""THEN32050:ELSETT$(W1+1)=W7$:W1=W1+1:IFW1<26THEN32000:ELSE32200 28 | 32050 O$="{ct k}{black}Was that your last choice (y/n)? {ct c}":GOSUB4:C$="NY":GOSUB28:IFI=1THEN32000 29 | 32200 O$=T$(82):GOSUB4:OPEN1,U,15,"s"+MID$(STR$(D),2)+":vote.topic "+CHR$(W5+64):CLOSE1:OPEN2,U,2,MID$(STR$(D),2)+":vote.topic "+CHR$(W5+64)+",s,w" 30 | 32300 PRINT#2,W1:FORA=1TOW1:PRINT#2,TT$(A):NEXTA:CLOSE2:GOTO940 31 | 32499 REM ----------- DELETE TOPIC 32 | 32500 GOSUB760:IFI<1ORI>26THEN32550:ELSEI=I+192:GOSUB30200:IFI=0THEN920:ELSEW5=I:GOTO32600 33 | 32550 GOSUB30100:W5=I:IFI=0THEN920 34 | 32600 O$="{ct k}{black}Are you sure (y/n)? {ct c}":GOSUB4:C$="YN":GOSUB28:IFI=2THEN920:ELSEGOSUB30050 35 | 32700 RECORD#2,W5:PRINT#2,"{pound}"+R$+"00000000000000000000000000"+R$+"0"+R$+"0":CLOSE2 36 | 32800 OPEN1,D(2,0),15,"s"+MID$(STR$(D(2,1)),2)+":vote.topic "+CHR$(W5+64):PRINT#1,"s"+MID$(STR$(D(2,1)),2)+":vote.text "+CHR$(W5+64):CLOSE1:GOTO940 37 | 32899 REM ----------- RESET TOPIC RESULTS 38 | 32900 GOSUB760:IFI<1ORI>26THEN32950:ELSEI=I+192:GOSUB30200:IFI=0THEN920:ELSEW5=I:GOTO33000 39 | 32950 GOSUB30100:W5=I:IFI=0THEN920 40 | 33000 O$="{ct k}{black}Reset vote results (y/n)? {ct c}":GOSUB4:C$="YN":GOSUB28:IFI=2THEN920 41 | 33100 GOSUB30050:RECORD#2,W5:SYS8222:CLOSE2:U=D(2,0):D=D(2,1):IFI$="{pound}"THEN33400 42 | 33200 OPEN1,U,15,"s"+MID$(STR$(D),2)+":sys.work":PRINT#1,"r"+MID$(STR$(D),2)+":sys.work=vote.topic "+CHR$(64+W5):INPUT#1,I:IFI>20THENCLOSE1:GOTO33400 43 | 33300 OPEN2,U,2,MID$(STR$(D),2)+":sys.work,s,r":OPEN3,U,3,MID$(STR$(D),2)+":vote.topic "+CHR$(64+W5)+",s,w" 44 | 33310 GOSUB31:CLOSE3:CLOSE2:PRINT#1,"s"+MID$(STR$(D),2)+":sys.work":CLOSE1 45 | 33400 O$="{ct k}{black}Done.":GOSUB4:GOTO940 46 | 33499 REM ----------- VOTE ON TOPIC 47 | 33500 GOSUB760:IFI>0ANDI<27THENI=I+192:GOSUB30200:W5=I:ON(SGN(I)+1)GOTO920,33600 48 | 33510 IFSY$="*"THENGOSUB30100:W5=I:ON(SGN(I)+1)GOTO920,33600 49 | 33550 IFSY$="+"ANDW5>0ANDW5<26THENW5=W5+1:GOTO33600:ELSEIFSY$="-"ANDW5>0ANDW5<27THENW5=W5-1:GOTO33600:ELSEW5=1:GOTO920 50 | 33600 W1=0:W2=0:FORA=0TO26:TT$(A)="":VT(A)=0:NEXTA:A=FRE(1) 51 | 33700 GOSUB30050:RECORD#2,W5:SYS8222:W5$=I$:SYS8222:W6$=I$:SYS8222:SYS8222:SYS8222:W9$=I$:U=D(2,0):D=D(2,1):CLOSE2 52 | 33800 IFW5$="{pound}"ORMID$(W6$,ASC(U$(5))-192,1)="0"THEN920:ELSEO$="{clear}{ct k}{black}"+W5$+"{ct k}":GOSUB4:F$="vote.text "+CHR$(64+W5):GOSUB26 53 | 33900 O$=T$(84):GOSUB4:OPEN1,U,15:GOSUB30060:INPUT#1,I:IFI>20THENCLOSE2:CLOSE1:GOTO920:ELSEIFVAL(W9$)=2THENO$="{ct k*2}":GOSUB4:GOTO38000 54 | 34000 INPUT#2,W3:FORI=1TOW3:SYS8222:TT$(I)=I$:NEXTI:CLOSE2:CLOSE1 55 | 34100 E=0:GOSUB30060:SYS8213:IFPEEK(253)THENE=1:GOTO34400 56 | 34200 DO:SYS8222:IFI$=""THENEXIT:ELSEW1=W1+1:VT(VAL(I$))=VT(VAL(I$))+1:SYS8222:IFSTR$(ID)=I$ORSTR$(ID)+" "=I$THENW2=1 57 | 34300 LOOPUNTILPEEK(253) 58 | 34400 CLOSE2:IFW2=1THEN34800:ELSEO$="{ct k}":GOSUB4:C$="":FORI=1TOW3:O$="{black}"+CHR$(I+192)+") "+TT$(I):C$=C$+CHR$(I+192):GOSUB4:NEXTI:C$=R$+C$ 59 | 34500 O$=T$(85):GOSUB4:GOSUB28:IFI=1THEN920:ELSEO$=T$(86):GOSUB4:W1=W1+1:VT(I-1)=VT(I-1)+1 60 | 34600 OPEN2,U,2,MID$(STR$(D),2)+":vote.topic "+CHR$(W5+64)+",s,a":IFE=1THENPRINT#2,CHR$(1) 61 | 34700 PRINT#2,STR$(I-1):PRINT#2,STR$(ID):CLOSE2 62 | 34800 O$="{ct k}{black}{ct k}Results out of"+STR$(W1)+" vote(s).{ct k}":GOSUB4:FORI=1TOW3:O$="{black}"+RIGHT$(" "+STR$(VT(I)),3)+" ("+RIGHT$(" "+STR$(INT(VT(I)/W1*100)),3) 63 | 34900 O$=O$+"%): "+TT$(I):GOSUB4:NEXTI:O$="{ct k}{black}RETURN>{ct c}":GOSUB4:C$=R$:GOSUB28:IFW2<>1THEN940:ELSE920 64 | 34999 REM ----------- LIST TOPICS 65 | 35000 GOSUB990:W0$="":W1=VAL(SY$):IFW1>1THENW0$="#" 66 | 35010 GOSUB760:IFI>0ANDI<27THENX=I-1:ELSEX=0 67 | 35020 GOSUB760:IFI>0ANDI<27THENY=I:ELSEY=26 68 | 35050 GOSUB30050:O$=R$:GOSUB9 69 | 35100 X=X+1:RECORD#2,X:SYS8222:W1$=I$:SYS8222:W2$=I$:SYS8222:W3$=I$:SYS8222:W4$=I$ 70 | 35200 IF(MID$(W2$,ASC(U$(5))-192,1)="0"ANDW1=0)ORW1$="{pound}"THEN35300 71 | 35210 A$=CHR$(192+X):IFW0$="#"THENA$=RIGHT$(STR$(X),2) 72 | 35230 O$="{black}"+A$+") "+LEFT$(W1$+" ",20)+"{f7} "+W4$ 73 | 35250 IFW1THENO$=O$+"{ct k} By: "+UI$(VAL(W3$))+" (ID#"+W3$+") ":IFVAL(W2$)=0THENO$=O$+"*UNVALIDATED*":GOSUB4:ELSEGOSUB4 74 | 35300 GOSUB8:IFX" "THEN35100:ELSECLOSE2:GOTO940 75 | 35399 REM ----------- VALIDATE TOPIC 76 | 35400 GOSUB760:IFI>0ANDI<27THEN35500 77 | 35450 W1=301:GOSUB30100:IFI=0THEN920 78 | 35500 W5=I:GOSUB990:IFSY$<>"*"THENW6$=SY$:GOTO35700 79 | 35600 E=0:W2$="{ct k}{black}Access: ":GOSUB610:W6$=SY$ 80 | 35700 GOSUB30050:RECORD#2,W5:SYS8222:W1$=I$:SYS8222:SYS8222:W2$=I$:SYS8222:W3$=I$ 81 | 35800 RECORD#2,W5:PRINT#2,W1$+R$+W6$+R$+W2$+R$+W3$+R$:CLOSE2:GOTO940 82 | 35900 GOSUB4:IFW7$<>""THENC$=CHR$(20)+R$:GOSUB32:IFI=2THENO$=A$:GOSUB9:RETURN:ELSEIFW7$<>""THENFORX=1TOLEN(W7$):O$=CHR$(20):GOSUB9:NEXTX 83 | 35910 IFA=60THEN35920:ELSEX=A:GOSUB5:IFI$=""THENRETURN:ELSEW7$=I$:RETURN 84 | 35920 POKE2847,A:POKE2895,1:GOSUB6:IFI$=""THENRETURN:ELSEW7$=I$:RETURN 85 | 37000 OPEN1,U,15:GOSUB30060:INPUT#1,E:W1=1:IFETHEN37010:ELSEINPUT#2,W1:FORI=1TOW1:SYS8222:TT$(I)=I$:NEXTI 86 | 37010 CLOSE2:CLOSE1:O$="{black}Enter questions,{f7}press return when done.":GOSUB4:W9=1 87 | 37020 W7$=TT$(W9):O$="{black}Question #"+STR$(W9)+"{ct k}: "+W7$+"{ct c}":A=60:GOSUB35900:TT$(W9)=W7$ 88 | 37030 IFTT$(W9)<>""THEN37040:ELSEO$="{ct k}{black}Was that your last choice (y/n)? {ct c}":GOSUB4:C$="YN":GOSUB28:IFI=2THEN37020:ELSE37050 89 | 37040 W9=W9+1:IFW9<51THEN37020 90 | 37050 OPEN1,U,15,"s"+MID$(STR$(D),2)+":vote.topic "+CHR$(64+W5):CLOSE1:OPEN2,U,2,MID$(STR$(D),2)+":vote.topic "+CHR$(64+W5)+",s,w" 91 | 37060 PRINT#2,W9-1:FORW1=1TOW9-1:PRINT#2,TT$(W1):NEXTW1:CLOSE2:GOTO940 92 | 38000 Y=0:INPUT#2,W1:FORX=1TOW1:SYS8222:TT$(X)=I$:NEXTX 93 | 38010 SYS8222:IFPEEK(253)THEN38100:ELSEIFID=VAL(I$)THENY=1 94 | 38020 FORX=1TOW1:SYS8222:NEXTX:GOTO38010 95 | 38100 CLOSE1:CLOSE2:IFYTHEN38200:ELSEO$=T$(104):GOSUB4:C$="YN"+R$:GOSUB28:IFI>1THEN920 96 | 38110 O$="":GOSUB4:FORW2=1TOW1:O$="{ct k}{black}"+TT$(W2)+"{ct k}:{white}{ct c}":GOSUB4:X=80-LEN(O$):GOSUB5:TT$(W2+50)=I$:NEXTW2:O$="{ct k}{black}Save your responses (y/n/a)? {ct c}":GOSUB4 97 | 38120 C$="YNA":GOSUB28:ONIGOTO38130,38110,920 98 | 38130 OPEN2,U,2,MID$(STR$(D),2)+":vote.topic "+CHR$(64+W5)+",s,a":PRINT#2,STR$(ID):FORX=1TOW1:PRINT#2,TT$(X+50):NEXTX:CLOSE2 99 | 38200 O$="{ct k}Responses on file:":GOSUB4 100 | 38210 OPEN1,U,15:GOSUB30060:SYS8222:W1=VAL(I$):FORX=1TOW1:SYS8222:NEXTX 101 | 38220 O$="":SYS8222:IFPEEK(253)THEN38240:ELSEIFMID$(U$(8),4,1)="1"THENO$="{yellow}{ct k}By: {white}"+UI$(VAL(I$))+"{yellow} (ID#{white}"+I$+"{yellow}){ct k}" 102 | 38230 GOSUB4:FORX=1TOW1:SYS8222:O$="{black}"+TT$(X)+"{ct k}{white}:"+I$:GOSUB4:NEXTX:GOTO38220 103 | 38240 CLOSE2:CLOSE1:IFYTHEN920:ELSE940 104 | 55555 A=PEEK(186):OPEN1,A,15,"s0:prg.voting booth":CLOSE1:DSAVE"prg.voting booth",U(A):STOP 105 | -------------------------------------------------------------------------------- /extras/prg.bbs list.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:38:05 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\prg.bbs list.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 10 REM **ZELCH128 BBS LIST SYSTEM -- J. MACNISH 1991** 8 | 20 U=11:DV=0:IFU<8ORU>30THENU=8:DV=0 9 | 30 CL$(1)="Commodore 64/128":CL$(2)="Amiga":CL$(3)="Apple 8-bit":CL$(4)="Macintosh":CL$(5)="IBM & clones":CL$(6)="Atari 8-bit":CL$(7)="Atari ST" 10 | 40 DIM SY$(101,6):DIM SY%(101,16) 11 | 50 AC$(1)="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ- '&#!" 12 | 60 AC$(2)="-1234567890":SP$=" {sh space}" 13 | 70 P=1:P2=10 14 | 80 C$(1)="C64/128":C$(2)="Amiga":C$(3)="Apple8":C$(4)="Mac":C$(5)="IBM":C$(6)="Atari8":C$(7)="ST" 15 | 90 PRINT "{clear}{down}{cyan}Zelch 128 BBS Database System" 16 | 100 PRINT:PRINT"Reading systems..."; 17 | 110 DOPEN#1,"sys.bbs list",D(DV),U(U),R:IFDS<>0THENDCLOSE#1:GOSUB 1210 18 | 120 C=1 19 | 130 INPUT#1,SY$(C,1),SY$(C,2),SY$(C,3),SY$(C,4),SY$(C,5),SY%(C,1),SY%(C,2),SY%(C,3),SY%(C,4),SY%(C,5),SY%(C,6),SY%(C,7),SY%(C,8),SY%(C,9),SY%(C,10) 20 | 140 INPUT#1,SY%(C,11),SY%(C,12),SY%(C,13),SY%(C,14),SY%(C,15) 21 | 150 C=C+1:IF ST=0 THEN 130 22 | 160 PRINT:DCLOSE#1 23 | 170 PRINT:PRINT "{cyan}";STR$(C-1);" systems in database." 24 | 180 PRINT 25 | 190 PRINT "{cyan}Add, List, Search, Quit":PRINT:PRINT "BBS Database: ";:P$="ALSQ":GOSUB1120 26 | 200 IF R=4 THEN PRINT"{light gray}Quit":PRINT:PRINT "{cyan}Zelch 128 BBS list system{f7}by J. MacNish 1991":END 27 | 210 IF R=1 THEN BEGIN 28 | 220 PRINT "{light gray}Add new system" 29 | 230 PRINT 30 | 240 A=C 31 | 250 PRINT "{cyan}General Information" 32 | 260 PRINT " {white}System Name(18 characters):";:P=1:P2=18:GOSUB1060:IF R$="" THEN PRINT:GOTO 190:ELSE SY$(A,1)=R$ 33 | 270 PRINT "{white}(???)XXX-XXXX Area code:";:P=3:GOSUB1170:IFR$=""ORLEN(R$)<3 THEN GOTO 190:ELSE SY$(A,2)=R$ 34 | 280 PRINT "{white}(XXX)???-XXXX Phone prefix:";:P=3:GOSUB1170:SY$(A,3)=R$ 35 | 290 PRINT "{white}(XXX)XXX-???? Phone postfix:";:P=4:GOSUB1170:SY$(A,3)=SY$(A,3)+"-"+R$ 36 | 300 PRINT "{white} Pay:";:GOSUB1150:SY%(A,12)=R 37 | 310 PRINT "{cyan}Supported Baud Rates" 38 | 320 PRINT "{white} 300 baud supported:";:GOSUB1150:SY%(A,1)=R 39 | 330 PRINT " 1200 baud supported:";:GOSUB1150:SY%(A,2)=R 40 | 340 PRINT " 2400 baud supported:";:GOSUB1150:SY%(A,3)=R 41 | 350 PRINT " 9600 baud supported:";:GOSUB1150:SY%(A,4)=R 42 | 360 PRINT "{cyan}File Support: 43 | 370 PRINT " {white}Commodore 64/128:";:GOSUB1150:SY%(A,5)=R 44 | 380 PRINT " {white} Amiga:";:GOSUB1150:SY%(A,6)=R 45 | 390 PRINT " {white} Apple 8 bit:";:GOSUB1150:SY%(A,7)=R 46 | 400 PRINT " {white} Apple Macintosh:";:GOSUB1150:SY%(A,8)=R 47 | 410 PRINT " {white} IBM and Clones:";:GOSUB1150:SY%(A,9)=R 48 | 420 PRINT " {white} Atari 8 bit:";:GOSUB1150:SY%(A,10)=R 49 | 430 PRINT " {white} Atari ST:";:GOSUB1150:SY%(A,11)=R 50 | 440 SY$(A,4)="XXX":SY$(A,5)="XXX" 51 | 450 APPEND#1,"sys.bbs list",D(DV),U(U):FORX=1TO5:PRINT#1,SY$(A,X):NEXTX:FORX=1TO15:PRINT#1,SY%(A,X):NEXTX:DCLOSE#1 52 | 460 PRINT:PRINT "{cyan}New system added.":C=C+1 53 | 470 GOTO170:BEND 54 | 480 IF R=2 THEN BEGIN 55 | 490 PRINT "{light gray}List systems":PRINT 56 | 500 PRINTLEFT$(SP$,34);"{light gray}[{pink}--Baud(x100)--{light gray}][{yellow}-------File support-------{light gray}]" 57 | 510 PRINT"{light gray}[{white}---System Name---{light gray}][{green}ACd{light gray}][{light green}-Number-{light gray}][{pink}03{light gray}][{pink}12{light gray}][{pink}24{light gray}][{pink}96{light gray}][{yellow}64{light gray}][{yellow}Am{light gray}][{yellow}Ap{light gray}][{yellow}Mc{light gray}][{yellow}IB{light gray}][{yellow}At{light gray}][{yellow}ST{light gray}]" 58 | 520 FORX=1 TO C-1:IF SY%(X,12)=1 THEN PRINT "{pink}*{white}";:ELSE PRINT "{white} "; 59 | 530 PRINTUSING"################# {light green}({green}###{light green})/######## ";SY$(X,1),SY$(X,2),SY$(X,3); 60 | 540 FORZ=1TO4:IFSY%(X,Z)=1THENPRINT"{red}o ";:ELSEPRINT" "; 61 | 550 NEXTZ 62 | 560 FORZ=5 TO 11:IF SY%(X,Z)=1 THEN PRINT "{yellow}o ";:ELSEPRINT" "; 63 | 570 NEXTZ 64 | 580 PRINT:NEXTX 65 | 590 PRINT"{ct k}{pink}* {cyan}denotes a pay board." 66 | 600 PRINT"{ct k}{yellow}64{cyan}:Commodore 64/128 {yellow}Am{cyan}:Amiga {yellow}Ap{cyan}:Apple 8-bit {yellow}Mc{cyan}:Macintosh" 67 | 610 PRINT"{yellow}IB{cyan}:IBM & Clones {yellow}At{cyan}:Atari 8-bit {yellow}ST{cyan}:Atari ST" 68 | 620 GOTO 170 69 | 630 BEND 70 | 640 IF R=3 THEN BEGIN 71 | 650 BR=0:S1=0:S2=0:FORZ=1TO7:SC(Z)=0:NEXTZ:PRINT "{light gray}Search" 72 | 660 PRINT:PRINT "{cyan}Set search restrictions:" 73 | 670 PRINT:IF S1=0 THEN X$=" any area code":ELSE X$=STR$(S1)+" area code" 74 | 680 PRINT "{light gray}[{green}A{light gray}]{green}rea code{f7} (currently searching for"X$")" 75 | 690 IF BR=0 THEN X$=" any baud)":ELSE X$=STR$(BR)+" baud and higher)" 76 | 700 PRINT "{light gray}[{pink}B{light gray}]{pink}uad rate{f7} (currently searching for"X$ 77 | 710 FOR X=1 TO 7:X$=MID$(STR$(X),2):PRINT "{light gray}[{yellow}"X$"{light gray}]{yellow}"CL$(X)" file support{f7} (currently ";:IFSC(X)=1THENPRINT"on)":ELSEPRINT"off)" 78 | 720 NEXT X 79 | 730 PRINT "{light gray}[{white}S{light gray}]{white}earch using these standards" 80 | 740 PRINT "{light gray}[{white}Q{light gray}]{white}uit search":PRINT "{ct k}{white}Choice: "; 81 | 750 P$="AB1234567SQ":GOSUB1120 82 | 760 IF R=10 THEN 850:ELSE IF R=11 THEN PRINT "{cyan}Quit":GOTO170 83 | 770 IF R=2THEN BEGIN:PRINT "{cyan}Baud rate" 84 | 780 PRINT "{ct k}{cyan}Search for baud rate at or higher than{f7}{light gray}A]{cyan}1200 {light gray}B]{cyan}2400 {light gray}C]{cyan}9600 {light gray}D]{cyan}Any{white}:";:P$="ABCD":GOSUB1120:S2=R:BR=R*1200:IFR=3THENBR=9600 85 | 790 IFR=4THENS2=0:BR=0 86 | 800 IF BR>0 THEN PRINT MID$(STR$(BR),2);" baud":ELSE PRINT "Any baud" 87 | 810 GOTO 670 88 | 820 BEND 89 | 830 IF R=1 THEN PRINT "{cyan}Search for what area code{f7}(000 for no search by area code){white}: ";:P=3:GOSUB1170:S1=VAL(R$):GOTO670 90 | 840 R=R-2:PRINT "{cyan}Toggle "CL$(R)" file support":IF SC(R) THEN SC(R)=0:GOTO670:ELSE SC(R)=1:GOTO670 91 | 850 PRINT"{cyan}Search":PRINT:PRINTLEFT$(SP$,34);"{light gray}[{pink}--Baud(x100)--{light gray}][{yellow}-------File support-------{light gray}]" 92 | 860 PRINT"{light gray}[{white}---System Name---{light gray}][{green}ACd{light gray}][{light green}-Number-{light gray}][{pink}03{light gray}][{pink}12{light gray}][{pink}24{light gray}][{pink}96{light gray}][{yellow}64{light gray}][{yellow}Am{light gray}][{yellow}Ap{light gray}][{yellow}Mc{light gray}][{yellow}IB{light gray}][{yellow}At{light gray}][{yellow}ST{light gray}]" 93 | 870 FOR X=1 TO C-1:IF S1<>0 AND S1<>VAL(SY$(X,2)) THEN970 94 | 880 IF S2<>0 AND SY%(X,(S2+1))=0 THEN 970 95 | 890 FOR Y=1 TO 7:IF SC(Y)=1 AND SY%(X,(Y+4))=0 THEN 970 96 | 900 NEXT Y 97 | 910 IF SY%(X,12)=1 THEN PRINT "{pink}*{white}";:ELSE PRINT "{white} "; 98 | 920 PRINTUSING"################# {light green}({green}###{light green})/######## ";SY$(X,1),SY$(X,2),SY$(X,3); 99 | 930 FORZ=1TO4:IFSY%(X,Z)=1THENPRINT"{red}o ";:ELSEPRINT" "; 100 | 940 NEXTZ 101 | 950 FORZ=5 TO 11:IF SY%(X,Z)=1 THEN PRINT "{yellow}o ";:ELSEPRINT" "; 102 | 960 NEXTZ 103 | 970 NEXT X:PRINT 104 | 980 PRINT"{ct k}{pink}* {cyan}denotes a pay board." 105 | 990 PRINT"{ct k}{yellow}64{cyan}:Commodore 64/128 {yellow}Am{cyan}:Amiga {yellow}Ap{cyan}:Apple 8-bit {yellow}Mc{cyan}:Macintosh" 106 | 1000 PRINT"{yellow}IB{cyan}:IBM & Clones {yellow}At{cyan}:Atari 8-bit {yellow}ST{cyan}:Atari ST" 107 | 1010 GOTO 170 108 | 1020 BEND 109 | 1030 GOTO 170 110 | 1040 END 111 | 1050 REM **INPUT** 112 | 1060 R$="" 113 | 1070 GETKEYX$ 114 | 1080 IF X$=CHR$(13) THEN PRINT CHR$(13);:RETURN 115 | 1090 IFX$=CHR$(20)ANDLEN(R$)>0 THEN R$=LEFT$(R$,LEN(R$)-1):PRINTX$;:GOTO1070:ELSE IF INSTR(AC$(P),X$)=0 THEN 1070 116 | 1100 IF LEN(R$)=P2 THEN 1070:ELSE R$=R$+X$:PRINT X$;:GOTO1070 117 | 1110 REM **QUICKKEY:P$=COMMAND STRING** 118 | 1120 GETKEYX$:R=INSTR(P$,X$):IFRTHENRETURN 119 | 1130 X$=CHR$(ASC(X$)OR128):R=INSTR(P$,X$):IFRTHENRETURN:ELSE1120 120 | 1140 REM ** YES/NO ** 121 | 1150 R=0:X$="":GETKEYX$:IFX$<>"y"ANDX$<>"Y"ANDX$<>"N"ANDX$<>"n" THEN 1150:ELSE IFX$="y" OR X$="Y" THEN R=1:PRINT "Yes":RETURN:ELSE PRINT "No":RETURN 122 | 1160 REM **FORMATTED NUMERIC INPUT:P=LENGTH** 123 | 1170 R$="" 124 | 1180 GETKEYX$:IFX$=CHR$(13) AND LEN(R$)=P THEN PRINT CHR$(13);:RETURN 125 | 1190 IF X$=CHR$(20)ANDLEN(R$)>0 THEN R$=LEFT$(R$,LEN(R$)-1):PRINTX$;:GOTO 1180:ELSE IF INSTR("1234567890",X$)=0 THEN 1180 126 | 1200 IF LEN(R$)=P THEN 1180:ELSE R$=R$+X$:PRINTX$;:GOTO1180 127 | 1210 DOPEN#1,"sys.bbs list",D(DV),U(U),W:FORX=1TO5:READA$:PRINT#1,A$:NEXTX:FORX=1TO15:READA:PRINT#1,A:NEXTX:DCLOSE#1:DOPEN#1,"sys.bbs list",D(DV),U(U),R:RETURN 128 | 1220 DATA "Elite","602","742-7319","XXX","XXX",1,1,1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 129 | -------------------------------------------------------------------------------- /extras/gam.startrek.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:35:47 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\gam.star.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 20 Q$="{sh +}XV@*" 8 | 25 DA$(0)="{purple} Move":DA$(2)="{purple} {sh -} 1.5":DA$(3)="{purple} 5-+-1":DA$(4)="{purple} {sh -} " 9 | 27 DA$(5)="{purple} 6 7 8":DA$(1)="{purple} 4 3 2" 10 | 30 D$(0)="{pink}Warp engines" 11 | 40 D$(1)="{yellow}Short range sensors" 12 | 50 D$(2)="{light green}Long range sensors" 13 | 60 D$(3)="{cyan}Phasers" 14 | 70 D$(4)="{light blue}Photon torpedoes":D$(5)="{blue}Galactic records" 15 | 90 I=INT(RND(1)*256):FORJ=0TOI:K=RND(1):NEXT 16 | 100 DEFFND(N)=SQR((K1(I)-S1)^2+(K2(I)-S2)^2) 17 | 110 GOSUB610:GOSUB450:Q1=X:Q2=Y:X=8:Y=1:X1=.2075:Y1=6.28:X2=3.28 18 | 120 Y2=1.8:A=.96:C=100:W=10:K9=0:B9=0:S9=400:T9=3575:GOTO 140 19 | 130 K=K+(NA):B9=B9-B:Q(I,J)=K*C+B*W-INT(RND(Y)*X+Y):NEXTJ,I 24 | 170 IFK9>(T9-T0)THENT9=T0+K9 25 | 180 IFB9>0THEN182 26 | 181 GOSUB450:Q(X,Y)=Q(X,Y)-10:B9=0 27 | 182 PRINT"{clear}";TAB(15)"{down*3}Star Trek V" 28 | 183 FORI=1TO1000:NEXTI:GOTO190 29 | 184 NEXTI:E$="{cm i*3}U{sh asterisk}I{down}{left*4}MJ{cm r}K{down}{left*5}{reverse on}{cm i*4}{reverse off}" 30 | 185 PRINT"{up*2}";:FORI=1TO34:PRINT" {down}{left} {down}{left*3} {left}{up*2}";E$;"{up*2}{left*5}";:NEXT 31 | 190 PRINT"{clear}{down*2}" 32 | 191 PRINT"{light green}You command the starship enterprise." 33 | 193 PRINT"{down*2}Objective:" 34 | 194 PRINT"{down}Find and destroy";K9;"klingons in 55 years" 35 | 195 INPUT"{down}instructions (y/n)";E$:IFE$="n"THEN218 36 | 197 PRINT"{clear}{down}" 37 | 200 PRINT"{white}*GALAXY-64 Zones of 64 Sectors each" 38 | 201 PRINT"*Command 3 shows objects in your zone" 39 | 202 PRINT" and surrounding 8 zones" 40 | 203 PRINT" (digit 1-klingons 2-bases 3-stars)" 41 | 204 PRINT"*Torpedoes or phasers destroy klingons" 42 | 205 PRINT"*.125 warp moves you one sector" 43 | 206 PRINT"*Dock at base to reload torpedoes and" 44 | 207 PRINT" energy. *-star X-you V-klingon @-base" 45 | 208 PRINT"{right}{down}{right*2}{purple}COMMAND LIST{right}" 46 | 209 U=-1 47 | 210 U=U+1:PRINT LEFT$(D$(U),1);U+1;D$(U): 48 | 211 IFU<>5THEN210 49 | 215 PRINT:PRINT"( hit any key to cont.)"; 50 | 216 GETE$:IFE$=""THEN216 51 | 218 PRINT"{clear}{down}" 52 | 230 A=0:IFQ1<0ORQ1>7ORQ2<0ORQ2>7THENN=0:S=0:K=0:GOTO250 53 | 240 N=ABS(Q(Q1,Q2)):Q(Q1,Q2)=N:S=N-INT(N/10)*10:K=INT(N/100) 54 | 250 B=INT(N/10-K*10):GOSUB450:S1=X:S2=Y 55 | 260 FORI=0TO7:FORJ=0TO7:S(I,J)=1:NEXTJ,I:S(S1,S2)=2 56 | 270 FORI=0TO7:K3(I)=0:X=8:IFI0THENGOSUB460:S(X,Y)=4 59 | 300 IFI>0THENGOSUB460:S(X,Y)=5:I=I-1:GOTO300 60 | 310 GOSUB550:IFA=0THENGOSUB480 61 | 320 IFE<=0THEN1370 62 | 330 I=1:IFD(I)>0THEN620 63 | 340 GOSUB4000 64 | 443 GOTO650 65 | 450 X=INT(RND(1)*8):Y=INT(RND(1)*8):RETURN 66 | 460 GOSUB450:IFS(X,Y)>1THEN460 67 | 470 RETURN 68 | 480 IFK<1THENRETURN 69 | 490 IFC$="{white}Docked"THENPRINT"Starbase protects enterprise":RETURN 70 | 500 FORI=0TO7:IFK3(I)<=0THENNEXT:RETURN 71 | 510 H=K3(I)*.4*RND(1):K3(I)=K3(I)-H:H=H/(FND(0)^.4):E=E-H 72 | 520 E$="Enterprise from":N=E:GOSUB530:NEXT:GOSUB4000:RETURN 73 | 530 PRINT"{down*2}{red}";H" Unit hit on ";E$ 74 | 535 PRINT" Sector";K1(I)+1;"-";K2(I)+1; 75 | 540 PRINT"(";N;"left)":FORC=1TO500 76 | 545 NEXTC:RETURN 77 | 550 FORI=S1-1TOS1+1:FORJ=S2-1TOS2+1 78 | 560 IFI<0ORI>7ORJ<0ORJ>7THEN580 79 | 570 IFS(I,J)=4THENC$="{white}Docked":E=E0:P=P0:GOSUB610:RETURN 80 | 580 NEXTJ,I:IFK>0THENC$="{red}Red":RETURN 81 | 590 IFE6THEN680 90 | 670 ONAGOTO710,310,1250,1140,690,1300 91 | 680 FORI=0TO5:PRINTLEFT$(D$(I),1);I+1;"= ";D$(I):NEXT:GOTO650 92 | 690 IFD(4)>0THENPRINT"{purple}Space crud blocking tubes!":I=4:GOTO630 93 | 700 N=15:IFP<1THENPRINT"{purple}No torpedoes left":GOTO650 94 | 710 IFA=5THENPRINT"{purple}Torpedo "; 95 | 720 INPUT"Course(1-8.9)";Z:IFZ<1THEN650 96 | 730 IFZ>=9THEN710 97 | 740 IFA=5THENP=P-1:PRINT"{purple}Track";:GOTO900 98 | 750 INPUT"Warp(0-12)";W:IFW<=0ORW>12THEN710 99 | 760 IFW<=.2ORD(0)<=0THEN780 100 | 770 I=0:PRINTD$(I);" damaged, max is .2":GOSUB630:GOTO750 101 | 780 GOSUB480:IFE<=0THEN1370 102 | 790 IFRND(1)>.33THEN870 103 | 800 X=INT(RND(1)*6):IFRND(1)>.5THEN830 104 | 810 D(X)=D(X)+INT(6-RND(1)*5):PRINT"{blue}**SPACE{sh space}STORM, " 105 | 820 PRINTD$(X);" damaged**":I=X:GOSUB630:D(X)=D(X)+1:GOTO870 106 | 830 FORI=XTO5:IFD(I)>0THEN860 107 | 850 NEXT:FORI=0TOX:IFD(I)<=0THENNEXT:GOTO870 108 | 860 D(I)=.5:PRINT"{light blue}**Spock used a new repair technique**" 109 | 870 FORI=0TO5:IFD(I)=0THEN890 110 | 880 D(I)=D(I)-1:IF D(I)<=0THEND(I)=0:PRINTD$(I);" are fixed" 111 | 890 NEXT:N=INT(W*8):E=E-N-N+.5:S(S1,S2)=1 112 | 900 T=T+1:Y1=S1+.5:X1=S2+.5:IFT>T9THEN1370 113 | 910 Y=(Z-1)*.785398:X=COS(Y):Y=-SIN(Y) 114 | 920 FORI=1TON:Y1=Y1+Y:X1=X1+X:Y2=INT(Y1):X2=INT(X1) 115 | 930 IFX2<0ORX2>7ORY2<0ORY2>7THEN1110 116 | 940 IFA=5THENPRINTY2+1;"-";X2+1, 117 | 950 IFS(Y2,X2)=1THENNEXT:GOTO1060 118 | 960 PRINT:IFA=1THENPRINT"Blocked by "; 119 | 970 ONS(Y2,X2)-3GOTO1040,1020 120 | 980 PRINT"Klingon";:IFA=1THEN1050 121 | 990 FORI=0TO7:IFY2<>K1(I)THEN1010 122 | 1000 IFX2=K2(I)THENK3(I)=0 123 | 1010 NEXT:K=K-1:K9=K9-1:GOTO1070 124 | 1020 PRINT"Star";:IFA=5THENS=S-1:GOTO1070 125 | 1030 GOTO1050 126 | 1040 PRINT"Starbase";:IFA=5THENB=2:GOTO1070 127 | 1050 PRINT" at sector";Y2+1;"-";X2+1:Y2=INT(Y1-Y):X2=INT(X1-X) 128 | 1060 S1=Y2:S2=X2:S(S1,S2)=2:A=2:GOTO310 129 | 1070 PRINT" destroyed!";:IFB=2THENB=0:PRINT".traitor!!!"; 130 | 1080 PRINT:S(Y2,X2)=1:Q(Q1,Q2)=K*100+B*10+S:T=T-1:IFK<1THENC$="{light green}Green" 131 | 1085 GOSUB4000:IFK9<1THEN1400 132 | 1090 GOSUB480:IFE<=0THEN1370 133 | 1100 GOSUB550:GOTO650 134 | 1110 IFA=5THENPRINT"Missed!":GOTO1090 135 | 1120 Q1=INT(Q1+W*Y+(S1+.5)/8):Q2=INT(Q2+W*X+(S2+.5)/8) 136 | 1130 Q1=Q1-(Q1<0)+(Q1>7):Q2=Q2-(Q2<0)+(Q2>7):GOTO230 137 | 1140 I=3:IFD(I)>0THEN620 138 | 1150 INPUT"{pink}Units to fire";X:IFX<=0THEN650 139 | 1160 IFX>ETHENPRINT"YOU'VE ONLY GOT";E:GOTO1150 140 | 1170 E=E-X:Y=K:FORI=0TO7:IFK3(I)<=0THEN1230 141 | 1180 H=X/(Y*(FND(0)^.4)):K3(I)=K3(I)-H 142 | 1190 E$="Klingon at":N=K3(I):GOSUB530 143 | 1200 IFK3(I)>0THEN1230 144 | 1210 PRINT"{purple}**Klingon destroyed**" 145 | 1220 K=K-1:K9=K9-1:S(K1(I),K2(I))=1:Q(Q1,Q2)=Q(Q1,Q2)-100 146 | 1230 NEXT:IFK<1THENC$="{light green}Green" 147 | 1231 GOSUB4000:IFK9<1THEN1400 148 | 1235 IFT>T9THEN1370 149 | 1240 GOTO1090 150 | 1250 I=2:IFD(I)>0THEN620 151 | 1260 PRINTD$(I);" for zone";Q1+1;"-";Q2+1 152 | 1270 FORI=Q1-1TOQ1+1:FORJ=Q2-1TOQ2+1:PRINT" "; 153 | 1280 IFI<0ORI>7ORJ<0ORJ>7THENPRINT"***";:GOTO1350 154 | 1290 Q(I,J)=ABS(Q(I,J)):GOTO1340 155 | 1300 I=5:IFD(I)>0THEN620 156 | 1310 PRINT"{clear}{light blue}Galactic record for{down}":PRINT" stardate";T;"{down}":M=1 157 | 1320 FORI=0TO7:FORJ=0TO7:PRINT" "; 158 | 1330 IFQ(I,J)<0THENPRINT"***";:GOTO1350 159 | 1340 E$=STR$(Q(I,J)):E$="00"+MID$(E$,2):PRINTRIGHT$(E$,3); 160 | 1350 NEXTJ:PRINT:NEXTI 161 | 1351 IFM<>1THENGOSUB610:GOTO650 162 | 1355 PRINT"Hit any key to cont.":M=0 163 | 1356 GETA$:IFA$=""THEN1356 164 | 1357 PRINT"{clear}":GOTO310 165 | 1360 PRINT:PRINT"{down}{yellow}It is stardate";T:RETURN 166 | 1370 GOSUB1360:PRINT 167 | 1371 PRINT"You lose!{down}" 168 | 1374 PRINT"The federation will be conquered by the" 169 | 1375 PRINT"remaining";K9;"klingon cruisers!":GOTO9999 170 | 1400 GOSUB1360 171 | 1401 PRINT"{down}{yellow}The federation is safe!" 172 | 1402 PRINT 173 | 1410 PRINT"{down}You destroyed";O%;"klingons in";T-T0;"years!{down}" 174 | 1420 PRINT"Rating:";INT(Z/(T-T0)*1000) 175 | 1421 GOTO9999 176 | 4000 PRINT"{down}{purple}":FORI=0TO7:FORJ=0TO7:PRINT"{purple}";MID$(Q$,S(I,J),1); ;:NEXTJ 177 | 4350 print" ";:onigoto4380,4390,4400,4410,4420,4430,4440 178 | 4360 PRINT"{light blue}Years :{white}";T9-T 179 | 4370 NEXT:GOTO4442 180 | 4380 PRINT"{light blue}Stardate :{white}";T;TAB(29);"{white}{sh -}";DA$(0):GOTO4370 181 | 4390 PRINT"{light blue}Condition: ";C$;TAB(29);"{white}{sh -}";DA$(1):GOTO4370 182 | 4400 PRINT"{light blue}Zone :{white}";Q1+1;"-";Q2+1;TAB(29);"{white}{sh -}";DA$(2):GOTO4370 183 | 4410 PRINT"{light blue}Sector :{white}";S1+1;"-";S2+1;TAB(29);"{white}{sh -}";DA$(3):GOTO4370 184 | 4420 PRINT"{light blue}Energy :{white}";INT(E)"{left} ";TAB(29);"{white}{sh -}";DA$(4):GOTO4370 185 | 4430 PRINT"{light blue}Torpedos :{white}";P;TAB(29);"{white}{sh -}";DA$(5):GOTO4370 186 | 4440 PRINT"{light blue}Klingons :{white}";K9"{left} {left}":GOTO4370 187 | 4442 PRINT"{light blue}Klingons at start :{white}"O%;" {light blue}Star bases:{white}";B9 188 | 4500 RETURN 189 | 9999 END 190 | -------------------------------------------------------------------------------- /extras/prg.star trek.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Saturday, May 20, 2017 1:38:34 AM 3 | !- Import of : 4 | !- c:\src\zelch128\extras\prg.star trek.prg 5 | !- Commodore 128 BASIC 7/7.1 6 | !-------------------------------------------------- 7 | 20 Q$="{sh +}XV@*" 8 | 25 DA$(0)="{purple} Move":DA$(2)="{purple} {sh -} 1.5":DA$(3)="{purple} 5-+-1":DA$(4)="{purple} {sh -} " 9 | 27 DA$(5)="{purple} 6 7 8":DA$(1)="{purple} 4 3 2" 10 | 30 D$(0)="{pink}Warp engines" 11 | 40 D$(1)="{yellow}Short range sensors" 12 | 50 D$(2)="{light green}Long range sensors" 13 | 60 D$(3)="{cyan}Phasers" 14 | 70 D$(4)="{light blue}Photon torpedoes":D$(5)="{blue}Galactic records" 15 | 90 I=INT(RND(1)*256):FORJ=0TOI:K=RND(1):NEXT 16 | 100 DEFFND(N)=SQR((K1(I)-S1)^2+(K2(I)-S2)^2) 17 | 110 GOSUB610:GOSUB450:Q1=X:Q2=Y:X=8:Y=1:X1=.2075:Y1=6.28:X2=3.28 18 | 120 Y2=1.8:A=.96:C=100:W=10:K9=0:B9=0:S9=400:T9=3575:GOTO 140 19 | 130 K=K+(NA):B9=B9-B:Q(I,J)=K*C+B*W-INT(RND(Y)*X+Y):NEXTJ,I 24 | 170 IFK9>(T9-T0)THENT9=T0+K9 25 | 180 IFB9>0THEN182 26 | 181 GOSUB450:Q(X,Y)=Q(X,Y)-10:B9=0 27 | 182 PRINT"{clear}";TAB(15)"{down*3}Star Trek V" 28 | 183 FORI=1TO1000:NEXTI:GOTO190 29 | 184 NEXTI:E$="{cm i*3}U{sh asterisk}I{down}{left*4}MJ{cm r}K{down}{left*5}{reverse on}{cm i*4}{reverse off}" 30 | 185 PRINT"{up*2}";:FORI=1TO34:PRINT" {down}{left} {down}{left*3} {left}{up*2}";E$;"{up*2}{left*5}";:NEXT 31 | 190 PRINT"{clear}{down*2}" 32 | 191 PRINT"{light green}You command the starship enterprise." 33 | 193 PRINT"{down*2}Objective:" 34 | 194 PRINT"{down}Find and destroy";K9;"klingons in 55 years" 35 | 195 INPUT"{down}instructions (y/n)";E$:IFE$="n"THEN218 36 | 197 PRINT"{clear}{down}" 37 | 200 PRINT"{white}*GALAXY-64 Zones of 64 Sectors each" 38 | 201 PRINT"*Command 3 shows objects in your zone" 39 | 202 PRINT" and surrounding 8 zones" 40 | 203 PRINT" (digit 1-klingons 2-bases 3-stars)" 41 | 204 PRINT"*Torpedoes or phasers destroy klingons" 42 | 205 PRINT"*.125 warp moves you one sector" 43 | 206 PRINT"*Dock at base to reload torpedoes and" 44 | 207 PRINT" energy. *-star X-you V-klingon @-base" 45 | 208 PRINT"{right}{down}{right*2}{purple}COMMAND LIST{right}" 46 | 209 U=-1 47 | 210 U=U+1:PRINT LEFT$(D$(U),1);U+1;D$(U): 48 | 211 IFU<>5THEN210 49 | 215 PRINT:PRINT"( hit any key to cont.)"; 50 | 216 GETE$:IFE$=""THEN216 51 | 218 PRINT"{clear}{down}" 52 | 230 A=0:IFQ1<0ORQ1>7ORQ2<0ORQ2>7THENN=0:S=0:K=0:GOTO250 53 | 240 N=ABS(Q(Q1,Q2)):Q(Q1,Q2)=N:S=N-INT(N/10)*10:K=INT(N/100) 54 | 250 B=INT(N/10-K*10):GOSUB450:S1=X:S2=Y 55 | 260 FORI=0TO7:FORJ=0TO7:S(I,J)=1:NEXTJ,I:S(S1,S2)=2 56 | 270 FORI=0TO7:K3(I)=0:X=8:IFI0THENGOSUB460:S(X,Y)=4 59 | 300 IFI>0THENGOSUB460:S(X,Y)=5:I=I-1:GOTO300 60 | 310 GOSUB550:IFA=0THENGOSUB480 61 | 320 IFE<=0THEN1370 62 | 330 I=1:IFD(I)>0THEN620 63 | 340 GOSUB4000 64 | 443 GOTO650 65 | 450 X=INT(RND(1)*8):Y=INT(RND(1)*8):RETURN 66 | 460 GOSUB450:IFS(X,Y)>1THEN460 67 | 470 RETURN 68 | 480 IFK<1THENRETURN 69 | 490 IFC$="{white}Docked"THENPRINT"Starbase protects enterprise":RETURN 70 | 500 FORI=0TO7:IFK3(I)<=0THENNEXT:RETURN 71 | 510 H=K3(I)*.4*RND(1):K3(I)=K3(I)-H:H=H/(FND(0)^.4):E=E-H 72 | 520 E$="Enterprise from":N=E:GOSUB530:NEXT:GOSUB4000:RETURN 73 | 530 PRINT"{down*2}{red}";H" Unit hit on ";E$ 74 | 535 PRINT" Sector";K1(I)+1;"-";K2(I)+1; 75 | 540 PRINT"(";N;"left)":FORC=1TO500 76 | 545 NEXTC:RETURN 77 | 550 FORI=S1-1TOS1+1:FORJ=S2-1TOS2+1 78 | 560 IFI<0ORI>7ORJ<0ORJ>7THEN580 79 | 570 IFS(I,J)=4THENC$="{white}Docked":E=E0:P=P0:GOSUB610:RETURN 80 | 580 NEXTJ,I:IFK>0THENC$="{red}Red":RETURN 81 | 590 IFE6THEN680 90 | 670 ONAGOTO710,310,1250,1140,690,1300 91 | 680 FORI=0TO5:PRINTLEFT$(D$(I),1);I+1;"= ";D$(I):NEXT:GOTO650 92 | 690 IFD(4)>0THENPRINT"{purple}Space crud blocking tubes!":I=4:GOTO630 93 | 700 N=15:IFP<1THENPRINT"{purple}No torpedoes left":GOTO650 94 | 710 IFA=5THENPRINT"{purple}Torpedo "; 95 | 720 INPUT"Course(1-8.9)";Z:IFZ<1THEN650 96 | 730 IFZ>=9THEN710 97 | 740 IFA=5THENP=P-1:PRINT"{purple}Track";:GOTO900 98 | 750 INPUT"Warp(0-12)";W:IFW<=0ORW>12THEN710 99 | 760 IFW<=.2ORD(0)<=0THEN780 100 | 770 I=0:PRINTD$(I);" damaged, max is .2":GOSUB630:GOTO750 101 | 780 GOSUB480:IFE<=0THEN1370 102 | 790 IFRND(1)>.33THEN870 103 | 800 X=INT(RND(1)*6):IFRND(1)>.5THEN830 104 | 810 D(X)=D(X)+INT(6-RND(1)*5):PRINT"{blue}**SPACE{sh space}STORM, " 105 | 820 PRINTD$(X);" damaged**":I=X:GOSUB630:D(X)=D(X)+1:GOTO870 106 | 830 FORI=XTO5:IFD(I)>0THEN860 107 | 850 NEXT:FORI=0TOX:IFD(I)<=0THENNEXT:GOTO870 108 | 860 D(I)=.5:PRINT"{light blue}**Spock used a new repair technique**" 109 | 870 FORI=0TO5:IFD(I)=0THEN890 110 | 880 D(I)=D(I)-1:IF D(I)<=0THEND(I)=0:PRINTD$(I);" are fixed" 111 | 890 NEXT:N=INT(W*8):E=E-N-N+.5:S(S1,S2)=1 112 | 900 T=T+1:Y1=S1+.5:X1=S2+.5:IFT>T9THEN1370 113 | 910 Y=(Z-1)*.785398:X=COS(Y):Y=-SIN(Y) 114 | 920 FORI=1TON:Y1=Y1+Y:X1=X1+X:Y2=INT(Y1):X2=INT(X1) 115 | 930 IFX2<0ORX2>7ORY2<0ORY2>7THEN1110 116 | 940 IFA=5THENPRINTY2+1;"-";X2+1, 117 | 950 IFS(Y2,X2)=1THENNEXT:GOTO1060 118 | 960 PRINT:IFA=1THENPRINT"Blocked by "; 119 | 970 ONS(Y2,X2)-3GOTO1040,1020 120 | 980 PRINT"Klingon";:IFA=1THEN1050 121 | 990 FORI=0TO7:IFY2<>K1(I)THEN1010 122 | 1000 IFX2=K2(I)THENK3(I)=0 123 | 1010 NEXT:K=K-1:K9=K9-1:GOTO1070 124 | 1020 PRINT"Star";:IFA=5THENS=S-1:GOTO1070 125 | 1030 GOTO1050 126 | 1040 PRINT"Starbase";:IFA=5THENB=2:GOTO1070 127 | 1050 PRINT" at sector";Y2+1;"-";X2+1:Y2=INT(Y1-Y):X2=INT(X1-X) 128 | 1060 S1=Y2:S2=X2:S(S1,S2)=2:A=2:GOTO310 129 | 1070 PRINT" destroyed!";:IFB=2THENB=0:PRINT".traitor!!!"; 130 | 1080 PRINT:S(Y2,X2)=1:Q(Q1,Q2)=K*100+B*10+S:T=T-1:IFK<1THENC$="{light green}Green" 131 | 1085 GOSUB4000:IFK9<1THEN1400 132 | 1090 GOSUB480:IFE<=0THEN1370 133 | 1100 GOSUB550:GOTO650 134 | 1110 IFA=5THENPRINT"Missed!":GOTO1090 135 | 1120 Q1=INT(Q1+W*Y+(S1+.5)/8):Q2=INT(Q2+W*X+(S2+.5)/8) 136 | 1130 Q1=Q1-(Q1<0)+(Q1>7):Q2=Q2-(Q2<0)+(Q2>7):GOTO230 137 | 1140 I=3:IFD(I)>0THEN620 138 | 1150 INPUT"{pink}Units to fire";X:IFX<=0THEN650 139 | 1160 IFX>ETHENPRINT"YOU'VE ONLY GOT";E:GOTO1150 140 | 1170 E=E-X:Y=K:FORI=0TO7:IFK3(I)<=0THEN1230 141 | 1180 H=X/(Y*(FND(0)^.4)):K3(I)=K3(I)-H 142 | 1190 E$="Klingon at":N=K3(I):GOSUB530 143 | 1200 IFK3(I)>0THEN1230 144 | 1210 PRINT"{purple}**Klingon destroyed**" 145 | 1220 K=K-1:K9=K9-1:S(K1(I),K2(I))=1:Q(Q1,Q2)=Q(Q1,Q2)-100 146 | 1230 NEXT:IFK<1THENC$="{light green}Green" 147 | 1231 GOSUB4000:IFK9<1THEN1400 148 | 1235 IFT>T9THEN1370 149 | 1240 GOTO1090 150 | 1250 I=2:IFD(I)>0THEN620 151 | 1260 PRINTD$(I);" for zone";Q1+1;"-";Q2+1 152 | 1270 FORI=Q1-1TOQ1+1:FORJ=Q2-1TOQ2+1:PRINT" "; 153 | 1280 IFI<0ORI>7ORJ<0ORJ>7THENPRINT"***";:GOTO1350 154 | 1290 Q(I,J)=ABS(Q(I,J)):GOTO1340 155 | 1300 I=5:IFD(I)>0THEN620 156 | 1310 PRINT"{clear}{light blue}Galactic record for{down}":PRINT" stardate";T;"{down}":M=1 157 | 1320 FORI=0TO7:FORJ=0TO7:PRINT" "; 158 | 1330 IFQ(I,J)<0THENPRINT"***";:GOTO1350 159 | 1340 E$=STR$(Q(I,J)):E$="00"+MID$(E$,2):PRINTRIGHT$(E$,3); 160 | 1350 NEXTJ:PRINT:NEXTI 161 | 1351 IFM<>1THENGOSUB610:GOTO650 162 | 1355 PRINT"Hit any key to cont.":M=0 163 | 1356 GETA$:IFA$=""THEN1356 164 | 1357 PRINT"{clear}":GOTO310 165 | 1360 PRINT:PRINT"{down}{yellow}It is stardate";T:RETURN 166 | 1370 GOSUB1360:PRINT 167 | 1371 PRINT"You lose!{down}" 168 | 1374 PRINT"The federation will be conquered by the" 169 | 1375 PRINT"remaining";K9;"klingon cruisers!":GOTO9999 170 | 1400 GOSUB1360 171 | 1401 PRINT"{down}{yellow}The federation is safe!" 172 | 1402 PRINT 173 | 1410 PRINT"{down}You destroyed";O%;"klingons in";T-T0;"years!{down}" 174 | 1420 PRINT"Rating:";INT(Z/(T-T0)*1000) 175 | 1421 GOTO9999 176 | 4000 PRINT"{down}{purple}":FORI=0TO7:FORJ=0TO7:PRINT"{purple}";MID$(Q$,S(I,J),1); ;:NEXTJ 177 | 4350 PRINT" ";:ONIGOTO4380,4390,4400,4410,4420,4430,4440 178 | 4360 PRINT"{light blue}Years :{white}";T9-T 179 | 4370 NEXT:GOTO4442 180 | 4380 PRINT"{light blue}Stardate :{white}";T;TAB(29);"{white}{sh -}";DA$(0):GOTO4370 181 | 4390 PRINT"{light blue}Condition: ";C$;TAB(29);"{white}{sh -}";DA$(1):GOTO4370 182 | 4400 PRINT"{light blue}Zone :{white}";Q1+1;"-";Q2+1;TAB(29);"{white}{sh -}";DA$(2):GOTO4370 183 | 4410 PRINT"{light blue}Sector :{white}";S1+1;"-";S2+1;TAB(29);"{white}{sh -}";DA$(3):GOTO4370 184 | 4420 PRINT"{light blue}Energy :{white}";INT(E)"{left} ";TAB(29);"{white}{sh -}";DA$(4):GOTO4370 185 | 4430 PRINT"{light blue}Torpedos :{white}";P;TAB(29);"{white}{sh -}";DA$(5):GOTO4370 186 | 4440 PRINT"{light blue}Klingons :{white}";K9"{left} {left}":GOTO4370 187 | 4442 PRINT"{light blue}Klingons at start :{white}"O%;" {light blue}Star bases:{white}";B9 188 | 4500 RETURN 189 | 9999 END 190 | -------------------------------------------------------------------------------- /v3.0 3d00.asm: -------------------------------------------------------------------------------- 1 | 2 | 3 | * = $3D00 4 | ;.D V3.0 3D00 5 | ; *** INTERRUPT/ MISC ROUTINES. 6 | JMP SETUP; 15616 / 1000 / SETUP INITIAL POINTERS/INITIALIZE INTERRUPTS 7 | JMP LOCKUPS; 15619 / 2000 / INTERRUPTS 8 | JMP OVERLAY; 15622 / 3000 / SET UP OVERLAY POINTERS 9 | JMP UNDERLAY; 15625 / 4000 / RESET BASIC VECTORS 10 | JMP CURSOR; 15628 / 5000 / 40 COLUMN CURSOR CONTROL 11 | JMP ONWINDOW; 15631 / 6000 / SEND STRING TO POSITION ON WINDOW 12 | JMP CLEAR1; 15634 / 7000 / SET VARS FOR CLEAR 13 | JMP CLEAR2; 15637 / 7500 / RESET VARS FOR CLEAR 14 | ;******************SETUP INITIAL IMPORTANT VALUES******************** 15 | SETUP 16 | SEI; ITS A DIRTY JOB... 17 | LDA $0314 18 | STA PLACE 19 | LDA $0315 20 | STA PLACE+1; IRQ VECTORS 21 | LDA #$03 22 | STA $0314 23 | LDA #$3D 24 | STA $0315; REPLACE WITH NEW IRQ 25 | LDX $0BA9; * SAVE RAMDOS DRIVE 26 | LDY #$00 27 | TYA;***CLEAR POINTER AREA 28 | CLRLOP 29 | STA $0B02,Y 30 | INY 31 | CPY #$F0 32 | BNE CLRLOP 33 | STX $0BA9; * RESTORE RAMDOS DRIVE 34 | LDA $D7 35 | CMP #$80 36 | BEQ CUR80; CHECK COLUMNS 37 | LDA #$38 38 | STA $1FF8; USING SPRITE NUMBER 1 39 | LDA #$01 40 | STA $D015; TURN SPRITE ON 41 | LDA #$00 42 | STA $D017 43 | STA $D01B 44 | STA $D01C 45 | STA $D01D; DEFAULTS 46 | LDA #$00 47 | STA $D020 48 | STA $D021; BACKGROUND DEFAULTS 49 | JMP CUR40 50 | CUR80 51 | NOP;PUT 80 COL CURSOR SETUP HERE 52 | CUR40 53 | CLI 54 | RTS 55 | PLACE 56 | NOP 57 | NOP 58 | ;***********************INTERRUPT ROUTINES***************** 59 | LOCKUPS 60 | SEI 61 | LDA $0B07 62 | BNE NOCHK 63 | LDA $DD01;****IGNORE CARRIER CHECKS FOR SYSOP 64 | AND $0B24 65 | CMP $0B25 66 | BNE NOCHK 67 | JMP LOGOFF;**CARRIER FAIL 68 | NOCHK 69 | LDA $0B62 70 | BEQ LOCHK 71 | LDA $DD0A 72 | CMP #$05 73 | BNE NOCHK2 74 | LDA $DD0B 75 | CMP #$12 76 | BNE NOCHK2 77 | LDA #$00 78 | STA $0B62 79 | LOCHK 80 | LDA $DD0A 81 | BNE NOCHK2 82 | LDA $DD0B 83 | CMP $0B90 84 | BNE LICHK 85 | LDA $0B91 86 | BNE LICHK 87 | LDA #$01 88 | STA $0B91 89 | LICHK 90 | CMP #$12 91 | BNE NOCHK2 92 | LDA $0B40 93 | LDX $0B3F 94 | CMP $0B40,X 95 | BEQ SKP1 96 | INC $0B40 97 | JMP SOCHK 98 | SKP1 99 | LDA #$01 100 | STA $0B40 101 | LDA $0B3F 102 | CMP #$0C 103 | BEQ SOCHK2 104 | INC $0B3F 105 | JMP SOCHK 106 | SOCHK2 107 | LDA #$01 108 | STA $0B3F 109 | INC $0B2F 110 | SOCHK 111 | LDA #$01 112 | STA $0B62 113 | NOCHK2 114 | LDA $0B08 115 | BEQ LOGOFF 116 | LDA $D3 117 | AND #$08;***CHECK ALT 118 | STA $0B4D 119 | BEQ NOALT 120 | LDA $0B71 121 | BEQ NOALT 122 | LDA $0B72 123 | BNE NOALT 124 | JSR LOCKALT 125 | NOALT 126 | LDA $DC00 127 | CMP #$6F 128 | BNE INRR 129 | LDA $D4 130 | CMP #$58 131 | BNE INRR 132 | LDA #$08 133 | STA $0B4D;**DO BUTTON 134 | INRR 135 | LDA $0B09 136 | BEQ TIMEUP; TIME UP 137 | LDA $0B0A; CHECK A TICK 138 | CMP $DD0A 139 | BNE INRC 140 | JMP OUTA 141 | TIMEUP 142 | LDA #$00 143 | STA $0B08 144 | STA $0B09 145 | LOGOFF 146 | LDA #$01 147 | STA $0B0B;***LOGOFFFLAG 148 | OUTA 149 | LDA $DD08 150 | JMP (PLACE); GOODBYE 151 | INRC 152 | LDA $DD0A 153 | STA $0B0A 154 | DEC $0B09;*****LOSE ONE TICK 155 | DEC $0BA7 156 | LDA $0B09 157 | BNE SLTM 158 | LDA $0BA7 159 | BEQ TIMEUP 160 | SLTM 161 | NOP 162 | LDA $0B9E 163 | BEQ INRR;**CHK IDLE 164 | LDA $0B07 165 | BNE INRR 166 | DEC $0B9D 167 | BNE INRR 168 | JMP TIMEUP 169 | ;**************SET UP BASIC OVERLAY NEXTS**************** 170 | OVERLAY 171 | LDA $0B05 172 | BNE OVRCONT 173 | LDA $1210 174 | STA $0B02 175 | LDA $1211 176 | STA $0B03; SAVE END BASIC POINTERS 177 | LDA $2D 178 | STA $0B04 179 | LDA $2E 180 | STA $0B05; SAVE START OF BASIC POINTERS 181 | OVRCONT 182 | LDA $0B02 183 | SEC 184 | SBC #$02 185 | STA $2D 186 | LDA $0B03 187 | SBC #$00 188 | STA $2E 189 | LDA #$01 190 | STA $0B06 191 | RTS 192 | LOCKALT 193 | LDY #$00 194 | ALP 195 | LDA BIXIT,Y 196 | STA $034A,Y 197 | INY 198 | CPY #$08 199 | BNE ALP 200 | STY $D0 201 | RTS 202 | 203 | BIXIT 204 | BYTE 83,89,83,56,50,52,51,13 205 | ;**********RESTORE OLD BASIC POINTERS*************** 206 | UNDERLAY 207 | LDA $0B06 208 | BEQ ALLSET 209 | LDA $0B04 210 | STA $2D 211 | LDA $0B05 212 | STA $2E; RESET START OF BASIC 213 | ALLSET 214 | LDA #$00 215 | STA $0B06 216 | RTS 217 | ;*************40 COLUMN CURSOR CONTROLER****************** 218 | CURSOR 219 | LDA $D7 220 | CMP #$80 221 | BEQ CURS80; SKIP IF 80 COLUMNS 222 | LDA #$01 223 | STA $D015 224 | LDA #$38 225 | STA $1FF8 226 | STA $07F8 227 | LDA $F1 228 | STA $D027; SPRITE COLOR 229 | LDA $EB; CURSOR Y COORD CONTROL 230 | CLC 231 | ASL 232 | ASL 233 | ASL 234 | ADC #$32 235 | STA $D001 236 | LDA $EC; CURSOR X COORD CONTROL 237 | CMP #$28 238 | BCC OVRBDR;OVER BOUNDRY 239 | SEC 240 | SBC #$28 241 | OVRBDR 242 | CMP #$1F 243 | BCS SKIP0;FORGOT WHAT THIS DOES 244 | ASL 245 | ASL 246 | ASL 247 | ADC #$08 248 | STA $D000 249 | LDA #$00 250 | STA $D010;LEFT SIDE OF BORDER 251 | JMP CURS80 252 | SKIP0 253 | SEC 254 | SBC #$1F 255 | ASL 256 | ASL 257 | ASL 258 | STA $D000 259 | LDA #$01 260 | STA $D010;RIGHT SIDE OF BORDER 261 | CURS80 262 | RTS 263 | ;**************ROUTINE TO POSITION A STRING ON THE WINDOW**************** 264 | ONWINDOW 265 | LDY #$00 266 | ONWINLP 267 | LDA $E0,Y 268 | STA $0B30,Y;*TEMP STORAGE 269 | INY 270 | CPY #$0F 271 | BNE ONWINLP 272 | LDA #$00 273 | STA $E5 274 | STA $E6;* RESET WINDOWS 275 | LDA #$18 276 | STA $E4 277 | LDA $EE 278 | STA $E7 279 | LDA $0B2D 280 | STA $EC 281 | LDA $0B2E 282 | STA $EB 283 | JSR $C15C;*SET CRSR POSITIONS 284 | LDY #$09 285 | LDA #$2F 286 | LDX #$01 287 | JSR $FF74 288 | STA $FB;*BEGIN STRING OUT 289 | INY 290 | LDA #$2F 291 | LDX #$01 292 | JSR $FF74 293 | STA $FC 294 | INY 295 | LDA #$2F 296 | LDX #$01 297 | JSR $FF74 298 | STA $FD 299 | LDY #$00 300 | ONWINLP2 301 | LDA #$FC 302 | LDX #$01 303 | JSR $FF74 304 | STA $FE 305 | JSR $FFD2;*SEND STRING 306 | INY 307 | CPY $FB 308 | BNE ONWINLP2 309 | LDY #$00 310 | ONWINLP3 311 | LDA $0B30,Y 312 | STA $E0,Y;*RESTORE OLD VALUES 313 | INY 314 | CPY #$0F 315 | BNE ONWINLP3 316 | LDA #$00 317 | STA $F3 318 | STA $F4 319 | STA $F5 320 | RTS 321 | ;****************ROUTINE TO SET VAR POINTERS BEFORE CLR******************* 322 | CLEAR1 323 | LDA $032C 324 | STA $0B51 325 | LDA $032D 326 | STA $0B52 327 | LDY #$00 328 | CLRLP 329 | LDA $2F,Y 330 | STA $0B53,Y 331 | INY 332 | CPY #$0D 333 | BNE CLRLP 334 | LDA #$EF 335 | STA $032C 336 | LDA #$84 337 | STA $032D 338 | RTS 339 | STA $7D 340 | STY $7E 341 | JSR $5AE1 342 | LDX #$1B 343 | STX $18 344 | PLA 345 | TAY 346 | PLA 347 | LDX #$FA 348 | TXS 349 | PHA 350 | TYA 351 | PHA 352 | LDA #$00 353 | STA $1203 354 | STA $12 355 | STA $03DF 356 | CLI 357 | RTS 358 | ;****************ROUTINE TO RESTORE POINTERS AFTER CLR******************* 359 | CLEAR2 360 | LDA $0B51 361 | STA $032C 362 | LDA $0B52 363 | STA $032D 364 | LDY #$00 365 | CLRLP2 366 | LDA $0B53,Y 367 | STA $2F,Y 368 | INY 369 | CPY #$0D 370 | BNE CLRLP2 371 | RTS 372 | PRINT 373 | NOP 374 | ; 375 | ;'OPEN1,8,15,"S0:ML3D00,V3.0 3D00":CLOSE1:SAVE"ML3D00",8 376 | 377 | 378 | -------------------------------------------------------------------------------- /extras/gam.zcasino.bas: -------------------------------------------------------------------------------- 1 | !-------------------------------------------------- 2 | !- Wednesday, August 18, 2021 1:05:36 AM 3 | !- Import of : 4 | !- c:\tmp\newproject\gam.zcasino.prg 5 | !- Unknown Machine 6 | !-------------------------------------------------- 7 | 30000 SYS15625 8 | 30010 U=PEEK(186):D=0:W2$=MID$(STR$(D),2):F$="cas.opener":GOSUB25:IFPEEK(215)THENFAST 9 | 30020 O$="{ct k*2}{pink}Zelch 128 Credit Casino{ct k}By Elite Software":GOSUB4:L=1:FORX=1TO60:TT$(X)="":NEXTX 10 | 30030 IFPEEK(2825)<7THENO$="{ct k*2}{yellow}You're running short on time,{f7}come back tomorrow!{ct k*2}":GOSUB4:GOTO920 11 | 30040 FORX=1TO4:FORY=2TO14:A$=RIGHT$(STR$(Y),2):IFY>10THENA$=" "+MID$("JQKA",Y-10,1) 12 | 30050 TT$(Y+((X-1)*13))=A$+"-"+MID$(STR$(X),2):NEXTY:NEXTX 13 | 30060 OPEN2,U,2,W2$+":cas.player,s,r":INPUT#2,I$:INPUT#2,W1$:X=0:FORI=1TO7:INPUT#2,VT(I):X=X+VT(I):NEXTI:CLOSE2:W0=(U$(1)=I$)AND(W1$=LEFT$(O$(2),6)) 14 | 30070 IFW0ANDX>30THENO$="{ct k}Let other people have a chance!!":GOSUB4:GOTO920:ELSEIFNOT(W0)THENFORI=1TO7:VT(I)=0:NEXTI:GOTO30090:ELSE30090 15 | 30080 OPEN1,U,15,"s"+W2$+":cas.player":CLOSE1:OPEN2,U,2,W2$+":cas.player,s,w":PRINT#2,U$(1)+R$+LEFT$(O$(2),6):FORI=1TO7:PRINT#2,VT(I):NEXTI:CLOSE2:GOTO920 16 | 30090 RESTORE:FORI=1TO51:X=INT(RND(TI)*51)+1:A$=TT$(X):TT$(X)=TT$(I):TT$(I)=A$:NEXTI:FORI=1TO6:READVT$(I):NEXTI:FORI=11TO16:READVT$(I):NEXTI 17 | 30095 DATA"{space*4}o{space*4}","o{space*7}o","o{space*3}o{space*3}o","o o{space*3}o o","o o o o o","o oo oo o" 18 | 30096 DATA "cherry{space*2}","plum{space*4}","apple{space*3}","grapes{space*2}","jackpot ","orange{space*2}" 19 | 30097 W5$="Craps{space*5}High/Low{space*2}Roulette{space*2}Black JackCut High{space*2}Slots{space*5}" 20 | 30100 GOSUB30160:O$="{yellow}Casino Main: {white}{ct c}":GOSUB4 21 | 30110 W7=0:C$="?CHRBTSQ":GOSUB28:IFI>1ANDI<8THENO$="":GOSUB4:IFVT(I)>=5THENVT(I)=5:O$="{pink}Sorry, your plays are up for{f7}that area.":GOSUB4:GOTO30100 22 | 30120 W9=I-1:ONIGOTO30140,31000,32000,33000,34000,35000,36000,30130 23 | 30130 O$="{ct k}{cyan}Quit to BBS (y/n)? {ct c}":GOSUB4:C$="YN":GOSUB28:ONIGOTO30080,30100 24 | 30140 O$="{clear}{ct k*2}{light gray}Casino Main Menu{ct k}":GOSUB4:A$=" {white}-{yellow}={cyan}":I$="{yellow}={white}-{cyan}{space*4}":X=1:W8=0 25 | 30150 O$=A$+MID$(C$,X+1,1)+I$+MID$(W5$+"Quit{space*6}",((X-1)*10)+1,10):GOSUB4:X=X+1:IFX<8THEN30150:ELSEO$="{ct k*2}":GOSUB4:GOTO30100 26 | 30160 O$="{yellow}{ct k}Credits: {white}"+STR$(U(2)):GOSUB4:RETURN 27 | 30170 IFVT(W9+1)=5THENO$="{ct k*2}{pink}Your plays for this part of the{f7}Casino are up, go somewhere else.":GOSUB4:GOTO30100 28 | 30175 W7=0:C$="?PHQ":GOSUB28:ONIGOTO30180,30220,30200:O$="{ct k}":GOSUB4:GOTO30100 29 | 30180 O$="{clear}{ct k*2}{light gray}"+MID$(W5$,((W9-1)*10)+1,10)+"{ct k*2} {white}-{yellow}={cyan}Play{yellow}={white}-{ct k} {white}-{yellow}={cyan}Help{yellow}={white}-{ct k} {white}-{yellow}={cyan}Quit to main{yellow}={white}-{ct k*2}":GOSUB4:I=W9+1:GOTO30120 30 | 30200 F$="cas.help"+STR$(W9):GOSUB25:I=W9+1:GOTO30120 31 | 30220 I=W9+1:W7=1:VT(I)=VT(I)+1:GOTO30120 32 | 30230 O$="{ct k*2}{light green}"+A$+": {white}{ct c}":GOSUB4:GOSUB10:IFI<1THENI=0:RETURN 33 | 30240 IFI>U(2)THENO$="{ct k}{red}You only have "+MID$(STR$(U(2)),2)+" credits remaining":GOSUB4:I=0:RETURN:ELSEW6=I:RETURN 34 | 30250 O$="{ct k}{white}{space*3}{cm d}{cm i*3}{cm f}":GOSUB4:FORX=1TO9STEP3:O$="{space*3}{reverse on}{cm k}"+MID$(VT$(I),X,3)+"{reverse off}{cm k}":GOSUB4:NEXTX:O$="{space*3}{cm c}{reverse on}{cm i*3}{reverse off}{cm v}":GOSUB4:RETURN 35 | 30260 O$="{ct k}{yellow}You've won"+STR$(W6*A)+" credits!":GOSUB4:U(2)=U(2)+(W6*A):I=W9+1:GOTO30120 36 | 30270 IFY>=51ORLEN(TT$(Y))<3THENGOSUB30280 37 | 30272 O$="{ct k}{white}"+LEFT$(TT$(Y),2)+" of ":O$=O$+MID$("DiamondsClubs{space*3}Hearts{space*2}Spades{space*2}",((VAL(RIGHT$(TT$(Y),1))-1)*8)+1,8):GOSUB4:W0=VAL(LEFT$(TT$(Y),2)) 38 | 30273 IFW0=0THENW0=10:IFMID$(TT$(Y),2,1)="A"ANDW8=0THENW0=11 39 | 30275 IFW8=1THENW8=0:IFMID$(TT$(Y),2,1)="A"THENO$="{ct k}An ace!{ct k}Count it as (a) 1 or (b) 11? {ct c}":GOSUB4:C$="AB":GOSUB28:W0=I:IFI=2THENW0=11 40 | 30276 RETURN 41 | 30280 IFL>=51THENFORI=1TO51:A$=TT$(I):Y=INT(RND(TI)*51)+1:TT$(I)=TT$(Y):TT$(Y)=A$:NEXTI:L=1 42 | 30290 Y=L:L=L+1:RETURN 43 | 30300 A$=LEFT$(TT$(A),2):A=VAL(A$):IFA$=" J"THENA=11:ELSEIFA$=" Q"THENA=12:ELSEIFA$=" K"THENA=13:ELSEIFA$=" A"THENA=14 44 | 30310 RETURN 45 | 30320 SLEEP1:O$="Click!...{ct c}":GOSUB4:RETURN 46 | 31000 IFW7=0THENGOSUB30160:O$="{light green}Craps menu: {white}{ct c}":GOSUB4:GOTO30170 47 | 31010 W7=0:A$="Throw for how much":GOSUB30230:IFI=0THEN31000 48 | 31020 O$="{ct k*2}{light blue}Rolling the dice...":GOSUB4 49 | 31030 W2=INT(RND(TI)*6)+1:I=W2:GOSUB30250 50 | 31040 W3=INT(RND(TI)*6)+1:I=W3:GOSUB30250:W4=W2+W3:IFW4=7ORW4=11THENA=1:GOSUB30260:GOTO31000:ELSEIFW4=2THEN31000 51 | 31050 O$="{ct k}{cyan}You must throw a(n)"+STR$(W4)+"...":GOSUB4:SLEEP2 52 | 31060 W2=INT(RND(TI)*6)+1:I=W2:GOSUB30250:W3=INT(RND(TI)*6)+1:I=W3:GOSUB30250 53 | 31070 W5=W2+W3:IFW5=7ORW5=11ORW5=2THEN31080:ELSEIFW4=W5THENA=1:GOTO30260:ELSEO$="{ct k}{white}{cyan}No dice, rolling again...":GOSUB4:SLEEP1:GOTO31060 54 | 31080 O$="{ct k*2}{red}CRAPS!!!":GOSUB4:U(2)=U(2)-W6:GOTO31000 55 | 32000 IFW7=0THENGOSUB30160:O$="{cyan}High/Low menu: {white}{ct c}":GOSUB4:GOTO30170 56 | 32010 W7=0:A$="Bet how much on this round":GOSUB30230:IFI=0THEN32000 57 | 32020 X=1:GOSUB30280:GOSUB30270 58 | 32025 IFX=4THENA=1:GOTO30260 59 | 32030 O$="{ct k}{green}H)igher or L)ower: {white}{ct c}":GOSUB4:C$="HL":GOSUB28 60 | 32040 A=Y:GOSUB30300:W2=A:W5=I:GOSUB30280:GOSUB30270:A=Y:GOSUB30300:IF(A>W2ANDW5=1)OR(A36THEN33000 66 | 33040 W2=INT(RND(TI)*36)+1:O$="{ct k*2}{light blue}The ball is off...{ct c}":GOSUB4:SLEEP3:O$="{ct k*2}{blue}It falls on number"+STR$(W2)+"{ct k*2}":GOSUB4:IFI=W2THENA=36:GOTO30260 67 | 33050 O$="{ct k}{pink}Sorry, you lose!":GOSUB4:U(2)=U(2)-W6:GOTO33000 68 | 33060 O$="{ct k}{cyan}A {white}1-18{ct k}{cyan}B {white}19-36{ct k}{cyan}C {white}Red{ct k}{cyan}D {white}Black{ct k}{cyan}E {white}Even{ct k}{cyan}F {white}Odd{ct k}{cyan}G {white}Left col{ct k}{cyan}H {white}Mid col{ct k}{cyan}I {white}Right col{ct k}{cyan}{ct k}Which will it be? {white}{ct c}":GOSUB4 69 | 33070 C$="ABCDEFGHI":GOSUB28:W2=INT(RND(TI)*36)+1:O$="{ct k}{light blue}The ball is off...{ct c}":GOSUB4:SLEEP3:O$="{ct k*2}{blue}It falls on number"+STR$(W2)+"{ct k*2}":GOSUB4 70 | 33080 A=1:IFI=1ANDW2>0ANDW2<19THEN30260 71 | 33090 IFI=2ANDW2>18ANDW2<37THEN30260 72 | 33100 IFI=3ORI=5THENIF(INT(W2/2)=(W2/2))THEN30260 73 | 33110 IFI=4ORI=6THENIF(INT(W2/2)<>(W2/2))THEN30260 74 | 33120 IFI>6THENBEGIN:E=0:FORX=(I-6)TO36STEP3:IFW2=XTHENE=1 75 | 33130 NEXTX:BEND:IFI>6ANDE=1THEN30260 76 | 33140 GOTO33050 77 | 34000 IFW7=0THENGOSUB30160:O$="{light gray}Blackjack menu: {white}{ct c}":GOSUB4:GOTO30170 78 | 34010 W7=0:A$="Amount to anti":GOSUB30230:IFI=0THEN34000 79 | 34020 W2=0:GOSUB30280:O$="{ct k}{yellow}Facing up, I have a: ":GOSUB4:GOSUB30270:W1=W0:X=Y 80 | 34030 GOSUB30280:O$="{ct k*2}{yellow}Your cards:":GOSUB4:W8=1:GOSUB30270:W2=W2+W0 81 | 34040 GOSUB30280:W8=1:GOSUB30270:W2=W2+W0 82 | 34050 IFW2=21THENO$="{ct k}{pink}Blackjack!{ct k}":GOSUB4:A=1:GOTO30260 83 | 34060 IFW2>21THENO$="{ct k}You're over!":GOSUB4:U(2)=U(2)-W6:GOTO34000 84 | 34070 O$="{ct k}{pink}Points:{white}"+STR$(W2)+"{ct k}{pink}Hit {cyan}or {yellow}Stay{cyan} (H/S)? {white}{ct c}":GOSUB4:C$="HS":GOSUB28:ONIGOTO34040,34080 85 | 34080 O$="{ct k*2}{yellow}Ok, my turn:":GOSUB4:Y=X:GOSUB30270 86 | 34090 GOSUB30280:GOSUB30270:W1=W1+W0 87 | 34100 IFW1=21THENO$="{ct k}{pink}Blackjack!{ct k}You lose!":GOSUB4:U(2)=U(2)-W6:GOTO34000 88 | 34110 IFW1>21THENO$="{ct k}{cyan}I'm over...":GOSUB4:A=1:GOTO30260 89 | 34120 IFW1<17THENSLEEP1:O$="{ct k}{yellow}I must take a card...":GOSUB4:GOTO34090 90 | 34130 O$="{ct k}{cyan}My total:"+STR$(W1)+" points{ct k}Your total:"+STR$(W2)+" points{ct k*2}":GOSUB4 91 | 34140 IFW1>=W2THENO$="{ct k}You lose!":GOSUB4:U(2)=U(2)-W6:GOTO34000 92 | 34150 A=1:GOTO30260 93 | 35000 IFW7=0THENGOSUB30160:O$="{light green}Cut High menu: {white}{ct c}":GOSUB4:GOTO30170 94 | 35010 W7=0:A$="How much will you bet":GOSUB30230:IFI=0THEN34000 95 | 35020 O$="{ct k}{light blue}Rolling dice...{ct c}":GOSUB4:SLEEP1:O$="...My roll:{ct k}":GOSUB4 96 | 35030 W2=INT(RND(TI)*6)+1:I=W2:GOSUB30250:W0=INT(RND(TI)*6)+1:I=W0:GOSUB30250:W0=W0+W2 97 | 35040 SLEEP1:O$="{ct k}{blue}{space*12}Your roll:{ct k}":GOSUB4 98 | 35050 W2=INT(RND(TI)*6)+1:I=W2:GOSUB30250:W1=INT(RND(TI)*6)+1:I=W1:GOSUB30250:W1=W1+W2 99 | 35060 IFW1=W0THENO$="{ct k}{yellow}It's a tie!":GOSUB4:GOTO35000 100 | 35070 IFW1>W0THENA=1:GOTO30260:ELSEO$="{ct k}{cyan}You're a loser!":GOSUB4:U(2)=U(2)-W6:GOTO35000 101 | 36000 IFW7=0THENGOSUB30160:O$="{light gray}Slot machine: {white}{ct c}":GOSUB4:GOTO30170 102 | 36005 I=5:GOSUB30240:IFI=0THEN36000 103 | 36010 W7=0:O$="{ct k}{purple}You pop 5 credits in,{ct k}Hit {red}{purple} to pull the arm,{f7}or {green}{purple} to abort: {white}{ct c}":GOSUB4:C$=" "+R$:GOSUB28:ONIGOTO36020,36000 104 | 36020 O$="{ct k}{light blue}Spinning...{ct c}":GOSUB4:GOSUB30320:GOSUB30320:GOSUB30320:SLEEP1 105 | 36030 W0=INT(RND(TI)*6)+1:W1=INT(RND(TI)*6)+1:W2=INT(RND(TI)*6)+1 106 | 36040 O$="{ct k*2}"+VT$(10+W0)+VT$(10+W1)+VT$(10+W2):A=0:GOSUB4 107 | 36050 A=0:IFW0=1THENA=1:IFW1=1THENA=2:IFW2=1THENA=4 108 | 36060 IFW0=5ANDW1=5ANDW2=5THENA=5:GOTO30260 109 | 36070 IFW0=W1ANDW1=W2THENA=2:GOTO30260 110 | 36080 IFATHEN30260:ELSEO$="{ct k}{pink}Nothing! Oh well...":GOSUB4:U(2)=U(2)-5:GOTO36000 111 | 55555 A=PEEK(186):OPEN1,A,15,"s0:gam.zcasino":CLOSE1:SAVE"gam.zcasino",A 112 | --------------------------------------------------------------------------------