├── v2 ├── asm │ ├── .gitignore │ ├── tests │ │ ├── patch.asm │ │ ├── break.asm │ │ ├── base.asm │ │ ├── plus_test remote.lbl │ │ └── dumpm.asm │ ├── setup.asm │ ├── build.sh │ ├── changelog.txt │ ├── README.md │ ├── rs232 │ │ └── rs232.asm │ ├── calls.asm │ └── jump-table.asm ├── docker │ ├── build.sh │ ├── files │ │ ├── C64List4.04 │ │ │ ├── Win32 │ │ │ │ └── C64List.exe │ │ │ ├── Win64 │ │ │ │ └── C64List.exe │ │ │ └── C64List 4.0 Users Guide.pdf │ │ └── README.md │ └── Dockerfile ├── core │ ├── jack │ │ ├── islashUD.edit.lbl │ │ ├── sub_handles.lbl │ │ ├── sub_menus.lbl │ │ ├── i_SB.lbl │ │ ├── i_relread.lbl │ │ ├── islashIM.NetSubEdit.lbl │ │ ├── islashlo-news.lbl │ │ ├── i_MX.lbl │ │ ├── sub_protos.lbl │ │ ├── islashlo!telecheck.lbl │ │ ├── islashlo-bonus.lbl │ │ ├── sub_sysdos.lbl │ │ ├── i.make index.lbl │ │ ├── islashlo-BA.graph.1.lbl │ │ ├── islashMM.ud-sort.lbl │ │ ├── islashlo-last.lbl │ │ ├── blocks-free-merge.lbl │ │ ├── islashlo!help.lbl │ │ ├── islashlo.off.lbl │ │ ├── islashlo.instant.lbl │ │ ├── islashlo-UB.update.lbl │ │ ├── i_menuedit.lbl │ │ ├── i_main.lbl │ │ ├── sub_feedback.lbl │ │ └── i_UB.lbl │ ├── plus_kill.lbl │ ├── plus_check index.lbl │ ├── plus- lo - blocks free.lbl │ ├── plus_convert port.lbl │ ├── plus_convert sigs.lbl │ ├── plusslashloslashblocks free.lbl │ ├── plusslashSM_consig1.lbl │ ├── plusslashlo_mailcheck.lbl │ ├── plus_NMslashlog.lbl │ ├── plus_scan netlog.lbl │ ├── plus_convert sigs2.lbl │ ├── README.md │ ├── plusslashSM_consig2.lbl │ ├── plus_stack 2_1.lbl │ ├── plus_NMslashreport.lbl │ ├── plus_NMslashcheck.lbl │ ├── plusslashlo_checknet.lbl │ ├── plus_relread.lbl │ ├── plus_find acs.lbl │ ├── plusslashSM_find acs.lbl │ ├── plus_convert menu.lbl │ ├── im_screens.lbl │ ├── plus_NetSubEdit.lbl │ ├── plus- lo-news.lbl │ ├── plus_convert GF.lbl │ ├── plusslashNM_compiler.lbl │ ├── plusslashSM_scan netlog.lbl │ ├── plusslashlo_off.lbl │ ├── plusslashlo-news.lbl │ ├── plus_MX.lbl │ ├── plusslashSM_bu.lbl │ ├── im_comm2.lbl │ ├── plus_unv_sig.lbl │ ├── plus- lo-bonus.lbl │ ├── plus_get.lbl │ ├── plusslashlo-bonus.lbl │ ├── plus_convert f-GF.lbl │ ├── plus_convert phone.lbl │ ├── plus_scan netsub.lbl │ ├── plusslashlo-bar.lbl │ ├── plus_convert UD.lbl │ ├── plus_top ten.lbl │ ├── im_param2.lbl │ ├── plusslashloslashbingo.lbl │ ├── plus- lo-cr pool.lbl │ ├── plusslashlo-cr pool.lbl │ ├── plusslashloslashnum squ.lbl │ ├── plus- lo - filelist.lbl │ ├── plus_QM.lbl │ ├── plus- lo-last.lbl │ ├── plusslashloslashan.lbl │ ├── plus- lo - payroll.lbl │ ├── plusslashloslashfilelist.lbl │ ├── plusslashlo-last.lbl │ ├── plusslashloslashpayroll.lbl │ ├── plus_MM_ld.lbl │ ├── plus_convert to f.lbl │ ├── plusslashlo_mail.lbl │ ├── plus_netapp.lbl │ ├── plus_daily stats.lbl │ ├── plus_menu example.lbl │ ├── im_menus.lbl │ ├── plusslashlo_num squ.lbl │ ├── plus_RS_v2_2.lbl │ ├── plusslashSM_menuedit.lbl │ ├── plusslashNM_netsub1.lbl │ ├── plus_LMP.lbl │ ├── plusslashSM_textedit.lbl │ ├── im_trans.lbl │ ├── plus_UB.lbl │ ├── plus_bio.lbl │ ├── im_local.lbl │ └── plus- lo - jerk.lbl ├── README.md ├── tests │ ├── plus_test select.lbl │ ├── plus_test y2k patch.lbl │ ├── test-insert.lbl │ ├── custom-input-image.lbl │ ├── custom-input-basic.lbl │ ├── plus_test speed.lbl │ ├── plus_test visual ed.lbl │ ├── align-test.asm │ └── plus_test area.lbl └── docs │ └── notes ├── v1.2 ├── games │ ├── empire6 │ │ ├── emp.fame.txt │ │ ├── build-date_basic.lbl │ │ ├── plus_emp6_quests.lbl │ │ ├── mdl.emp.delx.txt │ │ ├── zircon-intro.txt │ │ ├── zircon-lose.txt │ │ ├── build-empire-module.bat │ │ ├── isle5.txt │ │ ├── wreck5.txt │ │ ├── wreck3.txt │ │ ├── isle2.txt │ │ ├── build-date_basic.bat │ │ ├── wreck6.txt │ │ ├── isle4.txt │ │ ├── isle1.txt │ │ ├── wreck1.txt │ │ ├── isle3.txt │ │ ├── isle6.txt │ │ ├── wreck2.txt │ │ ├── tourney 10.txt │ │ ├── build-empire-main.bat │ │ ├── wreck7.txt │ │ ├── wreck4.txt │ │ ├── tourney 12.txt │ │ ├── tourney 9.txt │ │ ├── tourney 3.txt │ │ ├── tourney 4.txt │ │ ├── tourney 7.txt │ │ ├── tourney 11.txt │ │ ├── tourney 8.txt │ │ ├── tourney 5.txt │ │ ├── tourney 1.txt │ │ ├── tourney 6.txt │ │ ├── tourney 2.txt │ │ ├── win6.txt │ │ ├── win1.txt │ │ ├── win4.txt │ │ ├── win2.txt │ │ ├── win8.txt │ │ ├── build-disk.bat │ │ ├── win7.txt │ │ ├── win5.txt │ │ ├── win3.txt │ │ ├── emp.menu3.txt │ │ ├── quest payoffs.txt │ │ ├── emp.menu2.txt │ │ ├── emp.title.txt │ │ ├── variables.txt │ │ ├── emp.menu1.txt │ │ ├── emp.menu4.txt │ │ ├── includes.lbl │ │ ├── emp.menu5.txt │ │ ├── emp.intro.txt │ │ └── emp.docs2.txt │ └── shadowrun │ │ ├── shadowrun graphics.d64 │ │ └── shadowrun variables.txt ├── source │ └── equates-1_2.asm ├── docs │ ├── image-sysop-manual.odt │ ├── README.md │ ├── TODO │ └── plusplus index 1_2.txt ├── web-page │ ├── imageprg-chap2.txt │ └── imageprg-chap3.txt └── core │ └── README.md ├── v3 └── sub.turbo.lbl ├── scripts ├── start-tcpser-user-port.sh ├── start-tcpser-userport.sh ├── start-tcpser-swiftlink.sh ├── start-tcpser.bat ├── start-bbs.sh ├── test-translate.sh ├── c64list-linter.sh └── start-bbs-userport.sh ├── .gitattributes ├── .gitignore ├── includes └── includes.lbl └── tests └── test-translate.sh /v2/asm/.gitignore: -------------------------------------------------------------------------------- 1 | build.lst 2 | build.sym 3 | -------------------------------------------------------------------------------- /v2/docker/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | docker build -t imagebbs_docker . 4 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.fame.txt: -------------------------------------------------------------------------------- 1 | TOM SMITH 2 | 10/07/96 3 | 1120 4 | 600 5 | -------------------------------------------------------------------------------- /v3/sub.turbo.lbl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v3/sub.turbo.lbl -------------------------------------------------------------------------------- /v1.2/source/equates-1_2.asm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v1.2/source/equates-1_2.asm -------------------------------------------------------------------------------- /scripts/start-tcpser-user-port.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/scripts/start-tcpser-user-port.sh -------------------------------------------------------------------------------- /scripts/start-tcpser-userport.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/scripts/start-tcpser-userport.sh -------------------------------------------------------------------------------- /v1.2/docs/image-sysop-manual.odt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v1.2/docs/image-sysop-manual.odt -------------------------------------------------------------------------------- /v1.2/web-page/imageprg-chap2.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v1.2/web-page/imageprg-chap2.txt -------------------------------------------------------------------------------- /v1.2/web-page/imageprg-chap3.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v1.2/web-page/imageprg-chap3.txt -------------------------------------------------------------------------------- /v1.2/games/shadowrun/shadowrun graphics.d64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v1.2/games/shadowrun/shadowrun graphics.d64 -------------------------------------------------------------------------------- /v2/docker/files/C64List4.04/Win32/C64List.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v2/docker/files/C64List4.04/Win32/C64List.exe -------------------------------------------------------------------------------- /v2/docker/files/C64List4.04/Win64/C64List.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v2/docker/files/C64List4.04/Win64/C64List.exe -------------------------------------------------------------------------------- /v1.2/games/empire6/build-date_basic.lbl: -------------------------------------------------------------------------------- 1 | ' {uses:.\build-date_basic.lbl} 2 | {ifdef:debug} 3 | print "Wed 10/22/2014 12:26:41.26" 4 | {endif} 5 | -------------------------------------------------------------------------------- /v2/docker/files/C64List4.04/C64List 4.0 Users Guide.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Pinacolada64/ImageBBS/HEAD/v2/docker/files/C64List4.04/C64List 4.0 Users Guide.pdf -------------------------------------------------------------------------------- /v1.2/core/README.md: -------------------------------------------------------------------------------- 1 | `im.txt` was generated with the following command line: 2 | 3 | `wine c64list4_00.exe im.prg -txt -alpha:alt -keycase -varcase -ovr && less im.txt` 4 | 5 | 6 | -------------------------------------------------------------------------------- /v2/core/jack/islashUD.edit.lbl: -------------------------------------------------------------------------------- 1 | &,60,1,20,UD%(11,XN),A$:IF Q=1 OR(A$=NA$AND ID=UD%(10,XN) then {:4004} 2 | &"SORRY, YOU CANNOT EDIT THAT ENTRY.{f6}":RETURN 3 | {:4004} 4 | RETURN 5 | -------------------------------------------------------------------------------- /v2/asm/tests/patch.asm: -------------------------------------------------------------------------------- 1 | ; patch.asm 2 | ; output 'b' 3 | ; wine c64list4_04.exe patch.asm -prg -ovr -verbose 4 | 5 | orig $c00d 6 | lda #66 ; .C:c00d A9 41 LDA #$42 'b' 7 | -------------------------------------------------------------------------------- /scripts/start-tcpser-swiftlink.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Jay's config: 3 | # tcpser -s 19200 -v 25232 -i "q0e1v0h0x4s0=0&D2&C1&K3" -l7 -tsS -I 4 | tcpser -s 2400 -v 25232 -i "v0h0x4s0=1&D2&C1&K3" -l7 -tsS -I 5 | -------------------------------------------------------------------------------- /v1.2/docs/README.md: -------------------------------------------------------------------------------- 1 | To generate a PDF: 2 | 3 | `asciidoctor-pdf image-1_2b-sysop-manual.adoc` 4 | 5 | To generate and view HTML: 6 | 7 | `asciidoctor image-1_2b-sysop-manual.adoc -b html && chromium image-1_2b-sysop-manual.html` 8 | -------------------------------------------------------------------------------- /v1.2/games/empire6/plus_emp6_quests.lbl: -------------------------------------------------------------------------------- 1 | {number:800} 2 | +.emp6.quests - written by pinacolada 3 | {uses:.\includes.lbl} 4 | print "Quests not finished yet.":return 5 | {number:999} 6 | +.emp6.quests - written by pinacolada 7 | -------------------------------------------------------------------------------- /v2/README.md: -------------------------------------------------------------------------------- 1 | # Image BBS v1.3 2 | 3 | This is the development branch for Image BBS v1.3. 4 | 5 | It has a lot of new features, but there's a lack of documentation on how to use them. As with any software, some bugs come free of charge. 6 | -------------------------------------------------------------------------------- /v2/docker/files/README.md: -------------------------------------------------------------------------------- 1 | # C64List 2 | 3 | The C64List binaries and .docx files were downloaded from (here)[http://commodoreserver.com/BlogEntryView.asp?EID=8AA5A8C601114E8C8FEEC094A758FABA] 4 | and are included in this Git repository for simplicity. 5 | 6 | -------------------------------------------------------------------------------- /v2/core/jack/sub_handles.lbl: -------------------------------------------------------------------------------- 1 | GOSUB{:60005}:ON IM GOTO{:60015}:RETURN 2 | REM IM=1-FINDS ID FROM HANDLE IN AN$ 3 | {:60005} 4 | A$="INDEX":GOSUB 28 5 | DR=6:GOSUB 3:A$=DR$+"U.INDEX":&,16,1:UH=A%:RETURN 6 | {:60015} 7 | GOSUB 35:&,16:CLOSE 2:I=A%:RETURN 8 | -------------------------------------------------------------------------------- /v1.2/games/empire6/mdl.emp.delx.txt: -------------------------------------------------------------------------------- 1 | 2 | 3 | ;mdl.emp.delx.prg ==1c01== 4 | 9000 gosub 3680:draw"{$0a}Entering the empire... 5 | 9010 a$="mdl.emp.delx1":goto 9090 6 | 9050 sys c(52):if left$(a$,4)<>"mdl."then 1980 7 | 9090 gosub 489:a$=dr$+a$:sys c(10),dv,2 8 | 9 | -------------------------------------------------------------------------------- /v1.2/games/empire6/zircon-intro.txt: -------------------------------------------------------------------------------- 1 | Your rivals are pressing you hard! In desperation, you have undertaken a 2 | long and dangerous journey. Now at last you stand before Castle Dragonmare, 3 | the home of Arch-mage Zircon. It is your hope that you can convince him to 4 | help you... 5 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Set the default behavior, in case people don't have core.autocrlf set. 2 | # CRLF endings are done because C64List is a Windows utility. 3 | * text=auto 4 | 5 | # Explicitly declare text files you want to always be normalized and converted 6 | # to native line endings on checkout. 7 | *.lbl eol=crlf 8 | -------------------------------------------------------------------------------- /v1.2/games/empire6/zircon-lose.txt: -------------------------------------------------------------------------------- 1 | You have really stuck your foot in it now! As the price for being 2 | allowed to keep your present form, you have agreed to give Arch-Mage Zircon 3 | 2,000 acres, the 600 serfs living on them, the 4 Nobles governing them, 4 | and the 9,000 Gold currently in the treasury!!! 5 | -------------------------------------------------------------------------------- /v2/core/plus_kill.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {step:2} 3 | ' TODO: ask for confirmation like 1.2's +.kill does 4 | ' check for carrier before hanging up 5 | if peek(2033) and 128=128 then print# 131,"ath" 6 | ' 226+(252*256)=64738, reset 7 | ' JMP $FCE2 8 | POKE 49152,32:POKE 49153,226:POKE 49154,252:&,16 9 | rem +.kill 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # EditPad Pro files: 2 | # exclude any __history folder and its contents: 3 | __history 4 | # exclude project files: 5 | *.epp 6 | 7 | # exclude disk images: 8 | *.d64 9 | *.D64 10 | *.d71 11 | *.D71 12 | *.d81 13 | *.D81 14 | 15 | # exclude C64 binaries: 16 | *.prg 17 | *.bin 18 | 19 | # exclude backup files: 20 | *.bak 21 | -------------------------------------------------------------------------------- /v1.2/games/empire6/build-empire-module.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem build-empire-module.bat 3 | rem a quick hack for your disgust 4 | 5 | set script_dir=. 6 | 7 | rem the lbl file should {include:build-date_basic.lbl} 8 | C:\opt\C64List3_03.exe "%1" -alpha:invert -crunch -prg -verbose -ovr 9 | rem ~nF1.txt or %filenameroot% in editpad pro 10 | 11 | set script_dir= -------------------------------------------------------------------------------- /v2/core/plus_check index.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM u%(uh+1):GOSUB {:3002}:GOTO 1812 5 | {:3002} 6 | dr=6:GOSUB 1010:a$=dr$+"u.index":&,60,2,0,u%(0),a$,dv% 7 | GOSUB 1065:a$="":FOR i=1 TO u%(0):x=u%(i):GOSUB 1001:b$=a$:x=u%(i):&,2,2 8 | &"{pound}$a{f6}":IF a$<=b$THEN:&" >***<{f6}" 9 | NEXT:RETURN 10 | rem "+.check index" 11 | -------------------------------------------------------------------------------- /scripts/start-tcpser.bat: -------------------------------------------------------------------------------- 1 | tcpser -s 19200 -v 25232 -p 6400 -i "e1v0h0x4s0=1&D2&C1&K3" -l7 -tmM 2 | 3 | rem -s 19200: 19.2k bps 4 | rem -v 25232: connect to vice instance, using default rs232 port # 5 | rem -p 6400: incoming connection port # 6 | rem -i "...": init string (see start-bbs*.sh for explanation) 7 | rem -l7: logging level 8 | rem -tmM: trace inbound and outbound modem activity 9 | -------------------------------------------------------------------------------- /v2/asm/setup.asm: -------------------------------------------------------------------------------- 1 | ; "setup.s - 05/20/91 11:57a" 2 | 3 | logoff: 4 | stx curdsp 5 | lda #0 6 | sta chatpage 7 | sta sndrept 8 | lda #11 9 | sta var 10 | lda #d1str 13 | sta var+2 14 | ldx #4 15 | jsr putvar ;d1$ 16 | lda #$a0 17 | sta tdisp+30 18 | sta tdisp+31 19 | sta tdisp+32 20 | rts 21 | 22 | setbaud: 23 | txa 24 | jmp rsbaud 25 | -------------------------------------------------------------------------------- /v1.2/games/empire6/isle5.txt: -------------------------------------------------------------------------------- 1 | You have anchored in a cove of a mist-shrouded island. You send some 2 | of your Nobles and Soldiers ashore to explore the island. 3 | After several hours, one of your Nobles returns to report their findings. 4 | He reports that the island has much timber and a herd of wild horses! 5 | 6 | You gain 100 horses, and 20 tons of timber! 7 | 8 | \g1 9 | -------------------------------------------------------------------------------- /v2/tests/plus_test select.lbl: -------------------------------------------------------------------------------- 1 | {alpha:alt} 2 | {number:3000} 3 | {step:2} 4 | &,28,1:dim s%(39,60) 5 | &"Loading files from a struct..." 6 | dr=4:gosub 1010:&,60,2,0,s%(0,0),dr$+"d.GF.Games",dv% 7 | &"Select files from a struct:" 8 | im=2:a$="select":gosub 2500 9 | &"Select files from a disk directory:" 10 | im=1:a$="select":gosub 2500:goto 1812 11 | rem "+.test select" - adapted by pinacolada 2018-09-24 12 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck5.txt: -------------------------------------------------------------------------------- 1 | You have found a long trail of wreckage floating on the waves. 2 | Evidently the work of a storm or pirates. 3 | 4 | As the wreckage drifts by, you notice that some of the crates appear 5 | to be undamaged. You order them hauled aboard. 6 | 7 | Upon closer examination you discover that they are full of spice: 16 8 | tons of spice! 9 | 10 | \g1 11 | -------------------------------------------------------------------------------- /v2/core/plus- lo - blocks free.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem blocks free 3 | &"{f6}Updating Blocks Free.{f6}" 4 | for dr=1 to 6:gosub 1081:tt$(dr)=str$(bf):next:a$=" {lt. green}Blocks Free:"+r$ 5 | gosub 1095:for i=1 to 6 6 | a$=" {lt. green}"+mid$("SysE-MEtcDirPrgUsr",i*3-2,3)+" Disk:{white}"+tt$(i) 7 | gosub 1095:next:a$=" {pound}q0{yellow}{pound}o{$c0}{pound}o{$c0}":gosub 1095:close 2:return 8 | close 2:return 9 | copr. 1994 new image 9/17/94 10 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck3.txt: -------------------------------------------------------------------------------- 1 | The wreckage your lookouts have spotted appears to be from a merchantman. 2 | A broken mast, splintered planks, and a large number of crates drift by. 3 | 4 | Noticing that some of the crates appear to be intact, you order them 5 | hauled aboard. 6 | 7 | Upon closer examination, you discover they are full of exports. In fact, 8 | you end up with 5 tons of good Exports! 9 | 10 | \g1 11 | -------------------------------------------------------------------------------- /v2/core/plus_convert port.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | dr=3:a$="e.sw.ports,l,"+CHR$(70):GOSUB 1011:r$=CHR$(13) 5 | x=150:GOSUB 1001:PRINT# 2:x=1 6 | CLOSE 3:OPEN 3,dv%,3,dr$+"port.data,s,r" 7 | {:3006} 8 | b$="":FOR i=1 TO 9:&,2,3:b$=b$+a$+r$:NEXT:s=st:GOSUB 1001:PRINT# 2,b$;:x=x+1 9 | ON-(s=0)GOTO {:3006}:CLOSE 2:CLOSE 3:GOTO 1811 10 | rem "+.convert port" 11 | 12 | ' FIXME: no idea what this program is for 13 | ' something to do with LtK. hard drives? 14 | -------------------------------------------------------------------------------- /v2/asm/build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # Ensure Docker is available 4 | if ! docker info &>/dev/null; then 5 | echo "ERROR: Please ensure you have Docker installed and that your shell user is part of the 'docker' group" 1>&2 6 | exit 1 7 | fi 8 | 9 | # Build Docker image 10 | # Will use cached copy if already built 11 | (cd ../docker && ./build.sh) 12 | 13 | # Execute build inside Docker container 14 | 15 | docker run -it --rm -v $(pwd):/asm imagebbs_docker:latest bash -c "cd /asm && make clean all" 16 | -------------------------------------------------------------------------------- /v1.2/games/empire6/isle2.txt: -------------------------------------------------------------------------------- 1 | You have anchored in a cove of a barren, mist-shrouded island. The 2 | island is dominated by a large, cone-shaped mountain. 3 | As you explore the island, the ground begins to rumble! Quickly, you 4 | order everyone back to your ships. But before you can leave the cove, 5 | the top of the mountain explodes! 6 | Rock and molten lava are thrown in the air, as the volcano erupts! 7 | 8 | Your flotilla is damaged in the eruption! 9 | 10 | \g1 11 | -------------------------------------------------------------------------------- /v2/core/plus_convert sigs.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:dim x%(17,60):gosub {:3002}:&,28,1:goto 1811 5 | {:3002} 6 | dr=3:a$="e.Sig":gosub 1011:if e%then close 2:&:return 7 | &,2,2:x%(0,0)=val(a$):if x%(0,0)=0 then close 2:return 8 | for i=1 to x%(0,0):x=i+1:gosub 1001:&,2,2:input# 2,x%(1,i),x%(0,i),x%(2,i) 9 | if x%(2,i)<0 then x%(2,i)=0 10 | &,60,0,30,x%(3,i),a$:next:close 2 11 | &,60,3,0,x%(0,0),36+x%(0,0)*36,dr$+"e.Siglist",dv%:gosub 1012:&:return 12 | rem +.convert sigs 13 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashblocks free.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | rem "+/lo/blocks free" - update blocks free 5 | &"{f6}Updating Blocks Free.{f6}" 6 | FOR dr=1 TO 6:GOSUB 1081:tt$(dr)=STR$(bf):NEXT:a$=" {lt. green}Blocks Free:"+r$ 7 | GOSUB 1095:FOR i=1 TO 6 8 | a$=" {lt. green}"+MID$("SysE-MEtcDirPrgUsr",i*3-2,3)+" Disk:{white}"+tt$(i) 9 | GOSUB 1095:NEXT:a$=" {pound}q0{yellow}{pound}o{$c0}{pound}o{$c0}":GOSUB 1095:CLOSE 2:RETURN 10 | CLOSE 2:RETURN 11 | copr. 1994 NEW image 9/17/94 12 | -------------------------------------------------------------------------------- /v1.2/games/empire6/build-date_basic.bat: -------------------------------------------------------------------------------- 1 | rem pina is to blame for this: 2 | set output_filename=build-date_basic.lbl 3 | set script_dir=. 4 | 5 | rem output c64list comment describing {uses:} path: 6 | echo ' {uses:%script_dir%\%output_filename%} > %output_filename% 7 | 8 | rem conditionally write build date/time 9 | echo {ifdef:debug} >> %output_filename% 10 | echo print "%date% %time%" >> %output_filename% 11 | echo {endif} >> %output_filename% 12 | 13 | set output_filename= 14 | set script_dir= 15 | 16 | echo Done. 17 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck6.txt: -------------------------------------------------------------------------------- 1 | The wreckage your lookouts have spotted appears to be from a large 2 | vessel of some kind. 3 | As you follow the drifting trail of wreckage, one of your lookouts spots 4 | several small life boats just over the horizon. 5 | You order a change in course to overtake the life boats. Upon reaching 6 | them, you rescue a young Prince, 3 Nobles, 25 soldiers, and 15,000 gold. 7 | For his rescue, the Prince gives everything else to you! 8 | 9 | \g1 10 | e of 11 | y -------------------------------------------------------------------------------- /v2/asm/changelog.txt: -------------------------------------------------------------------------------- 1 | 3/Jun/2015 17:25 2 | irqhn.lbl: 3 | + changed duplicate l1: label to l2: 4 | + fixed 'byte ":"', now 'byte #58' instead 5 | 6 | 5/Jun/2015 11:11 7 | irqhn.lbl: 8 | + lda #'a' (single quotes only) for a character value (except space) works 9 | 10 | 2018-11-14 10:57 11 | Note: "*.s" is native c64 "fast assembler" source 12 | 13 | equat.s: 14 | * un-commented missing "carrier" label 15 | 16 | irqhn.s: 17 | * does not crash with "missing label" error on pass 3 of running build.s 18 | 19 | "ml 2.0": 25339 bytes 20 | -------------------------------------------------------------------------------- /v2/asm/tests/break.asm: -------------------------------------------------------------------------------- 1 | ' break.lbl 2 | {asm} break: 3 | lda #$27 4 | sta $d011 5 | 6 | ldy #0 7 | lda 0 8 | jsr hex 9 | lda 1 10 | jsr hex 11 | tsx 12 | txa 13 | jsr hex 14 | break2: 15 | pla 16 | jsr hex 17 | tsx 18 | cpx #$ff 19 | bne break2 20 | ; byte 2 21 | ; 22 | hex: 23 | pha 24 | lsr 25 | lsr 26 | lsr 27 | lsr 28 | jsr hex1 29 | pla 30 | hex1: 31 | and #$0f 32 | ora #$30 33 | cmp #$3a 34 | bcc hex2 35 | adc #$06 36 | hex2: 37 | sta $0400,y 38 | lda #1 39 | sta $d800,y 40 | iny 41 | rts 42 | {endasm} -------------------------------------------------------------------------------- /v1.2/games/empire6/isle4.txt: -------------------------------------------------------------------------------- 1 | You have anchored in a cove of a mist-shrouded island. You send a 2 | party of Nobles and Soldiers ashore to explore. 3 | With your forces halfway to shore, you hear the crack of muskets! 4 | Looking towards the entrance to the cove, you see a small vessel exiting 5 | the thick mist. 6 | It is a pirate ship! The pirates have caught you off guard! 7 | 8 | Your forces are severely damaged before they can regroup and drive the 9 | pirates off! 10 | 11 | \g1 12 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_consig1.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM x%(17,60):GOSUB {:4002}:&,28,1:RETURN 5 | {:4002} 6 | dr=3:a$="e.Sig":GOSUB 1011:IF e%THEN CLOSE 2:&:RETURN 7 | &,2,2:x%(0,0)=VAL(a$):IF x%(0,0)=0 THEN CLOSE 2:RETURN 8 | FOR i=1 TO x%(0,0):x=i+1:GOSUB 1001:&,2,2:INPUT# 2,x%(1,i),x%(0,i),x%(2,i) 9 | IF x%(2,i)<0 THEN x%(2,i)=0 10 | &,60,0,30,x%(3,i),a$:NEXT:CLOSE 2 11 | &,60,3,0,x%(0,0),36+x%(0,0)*36,dr$+"e.Siglist",dv%:GOSUB 1012:&:RETURN 12 | REM "+/SM.consig1" sysop menu 180801 x-tec 13 | 14 | -------------------------------------------------------------------------------- /v1.2/games/empire6/isle1.txt: -------------------------------------------------------------------------------- 1 | You land on a mist-shrouded island, which appears to be uninhabited. You 2 | and your men spread out to explore the island. 3 | While pushing your way through a tangle of brush, you come upon a 4 | boulder with a cross carved on it. Deciding that this is a good omen, you 5 | instruct your men to dig beneath the boulder. 6 | After many hours of digging, your men discover a chest. Anticipation 7 | mounts, as you order it opened. 8 | 9 | Inside, you find 90,000 gold! 10 | 11 | \g1 12 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck1.txt: -------------------------------------------------------------------------------- 1 | You have found the wreckage of a ship floating on the waves. Timbers, 2 | beams, and broken crates drift by. Then, off in the distance, one of your 3 | lookouts spots two small life boats. 4 | 5 | As you draw nearer, you see that they are filled to overflowing with 6 | people. You are seen as well, people waving a small plank with a white 7 | shirt attached to attract your attention. 8 | 9 | You pull alongside and rescue 2 Nobles, 15 Soldiers, and 30 serfs! 10 | 11 | \g1 12 | -------------------------------------------------------------------------------- /v1.2/games/empire6/isle3.txt: -------------------------------------------------------------------------------- 1 | You have landed on an uncharted island. You send your men out to explore it. 2 | One of your men has climbed up a brush-covered hill, and now calls for 3 | your attention. You climb up to join him. 4 | At the top of the hill you discover the remains of a fort. Then, just 5 | beyond the fort, you see a run-down settlement. People cautiously emerge from 6 | broken down huts. You have found a lost colony! 7 | 8 | You gain 10 Cannons, 3 Nobles, 30 Soldiers, and 250 Serfs! 9 | 10 | \g1 11 | -------------------------------------------------------------------------------- /v2/core/plusslashlo_mailcheck.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | {crunch:on} 5 | ' TODO: use routine at 1046 to allow entering UID# or handle 6 | rem +/lo.mailcheck 2019-04-25 pinacolada 7 | &"MailCheck{f6:2}Enter the HANDLE of the user you want{f6}to check for.{f6:2}" 8 | ' ----+----+----+----+----+----+----+---- 9 | ' Enter the HANDLE of the user you want 10 | ' to check for. 11 | poke 53252,20:&"> {pound}i1":if tr%<1 or an$=""then return 12 | a$="r":tt$=an$:gosub 1062:close 2:&"{f6}{pound}v7 has ":if e% then:&"no " 13 | &"mail.{f6}":return 14 | -------------------------------------------------------------------------------- /v2/core/jack/sub_menus.lbl: -------------------------------------------------------------------------------- 1 | &,27,7:DIM FD%(50),JM%(29,49) 2 | X=LC:ON IM GOSUB{:60004},{:60006},{:60010}:&,28,7:RETURN 3 | {:60004} 4 | GOSUB{:60006}:X=1:IF LC=1 OR RC THEN RETURN 5 | {:60006} 6 | B$="E.MENU"+STR$(X):GOSUB{:60010}:IF E%=.THEN RETURN 7 | DR=1:A$="S.MENU"+STR$(X):GOTO 14 8 | {:60010} 9 | DR=3:GOSUB 3:A$=DR$+B$ 10 | &,60,2,.,JM%(.,.),A$,DV%:GOSUB 5:IF E%THEN RETURN 11 | &,60,8,50,60,2^AC%+ZZ*32768,JM%(1,.),FD%(1),.:IF A%=.THEN RETURN 12 | &"{f6}":FOR I=1 TO A%:&,60,1,50,JM%(5,FD%(I)),A$:LP=1:&:I=I+A%*RC:NEXT:RETURN 13 | COPR. 1994 NEW IMAGE 9/27/94 14 | -------------------------------------------------------------------------------- /v1.2/games/empire6/isle6.txt: -------------------------------------------------------------------------------- 1 | You have landed on a mist-shrouded island. You send your troops out to 2 | explore. 3 | As your forces begin to spread out, you hear a blood-curdling scream! One 4 | of your men drops, with an arrow through his neck! 5 | More arrows fly through the air, taking their toll. You order your men 6 | back to the ships, as waves of cannibals emerge from the thick brush. 7 | Other cannibals are headed for your ships, in dugout canoes. 8 | 9 | You finally beat off the cannibals but suffer some losses! 10 | 11 | \g1 12 | -------------------------------------------------------------------------------- /v2/core/jack/i_SB.lbl: -------------------------------------------------------------------------------- 1 | PR$="":GOSUB{:3050}:ON-(F1=3)GOTO 200:GOTO 2 | &,16,255:IF PR=A%THEN RETURN 3 | {:3042} 4 | ML$="":A$="POST":GOSUB 28:&,16,255:PR=A%:D4$="TURBOPOST":RETURN 5 | {:3048} 6 | S$="":LM$="":P1$="":SG=.:OS=.:SB$="":GOTO 300 7 | {:3050} 8 | H$="BASE":I$=" SUBOP ":J$="BULLETIN":K$="RESPONSE":L$="ANONYMOUS":RETURN 9 | LM$="":P1$="":R$=CHR$(13):LC=2:ON TR%+1 GOTO{:3048}:A=8:GOSUB 11:Q=A 10 | A$="E.SUB":DR=3:GOSUB 4:&,2,2:&,2,2:IT=VAL(A$):CLOSE 2 11 | IF IT THEN A=TR%:TR%=TR%+IT:IT=A 12 | GOSUB{:3042}:GOSUB{:3950} 13 | {:3950} 14 | A$="{$cd:2}.LOAD":GOSUB 72 15 | -------------------------------------------------------------------------------- /v2/core/plus_NMslashlog.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | {:3000} 5 | &"{f6:2}Which Log: {pound}i1":IF an$<>""THEN GOSUB {:3004}:GOTO {:3000} 6 | GOTO 1812 7 | {:3004} 8 | b$="nm.log "+an$:dr=2:a$=b$+",s,r":GOSUB 1011:IF e%THEN{:3012} 9 | CLOSE 3:OPEN 3,dv%,3,dr$+b$+".t,s,w":GOSUB 1012:IF e%THEN{:3012} 10 | {:3008} 11 | &,2,2:b$=MID$(a$,6,3)+" - "+MID$(a$,13,3):&,2,2:PRINT# 3,b$": "a$:&"." 12 | {:3010} 13 | &,2,2:s=st:ON-(s=0 AND a$<>"{up arrow}")GOTO {:3010}:ON-(s=0)GOTO {:3008}:a$="{f6}" 14 | {:3012} 15 | &:CLOSE 2:CLOSE 3:RETURN 16 | REM "+.NM/log" 17 | -------------------------------------------------------------------------------- /v2/asm/tests/base.asm: -------------------------------------------------------------------------------- 1 | ; base.asm 2 | ; set $d020/21 to black, clear screen, output 'a' 3 | ; wine c64list4_00.exe base.asm -prg -ovr -verbose -d64:test.d64::BASE 4 | 5 | orig $c000 6 | lda #$00 ; .C:c000 A9 00 LDA #$00 7 | sta $d020 ; .C:c002 8D 20 D0 STA $D020 8 | sta $d021 ; .C:c005 8D 21 D0 STA $D021 9 | lda #147 ; .C:c008 A9 93 LDA #$93 10 | jsr $ffd2 ; .C:c00a 20 D2 FF JSR $FFD2 11 | lda #65 ; .C:c00d A9 41 LDA #$41 12 | jsr $ffd2 ; .C:c00f 20 D2 FF JSR $FFD2 13 | rts ; .C:c012 60 RTS 14 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck2.txt: -------------------------------------------------------------------------------- 1 | Your lookouts have spotted the wreckage of another ship. Broken 2 | beams, splintered planks, and crushed crates are all that remains. 3 | 4 | As you sail along the trail of wreckage, you hear a terrified cry 5 | from one of your lookouts. Looking up, you see a huge Sea Serpent bearing 6 | down on your ships! 7 | 8 | Quickly, you give the order for battle stations, but, it's already too 9 | late! The monster charges your ships, doing considerable damage, before your 10 | cannon fire drives it away... 11 | 12 | \g1 13 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 10.txt: -------------------------------------------------------------------------------- 1 | For some time now, you and Prince Glascow, have disputed the ownership 2 | of a parcel of land. He suggests the dispute be solved by a joust between 3 | his champion and yours. You confidently agree! 4 | 5 | Now the two champions are facing each other awaiting the sound of the 6 | trumpets. With the sound of the trumpets, they charge! 7 | 8 | Meeting with a crash, you see your champion suspended in air as he is 9 | knocked off his horse on the first pass! You have lost! 10 | 11 | You lose 100 acres and a Shipyard! 12 | 13 | \g1 14 | -------------------------------------------------------------------------------- /includes/includes.lbl: -------------------------------------------------------------------------------- 1 | {quoter:$20="space"} 2 | {quoter:$c1="A"} 3 | {quoter:$c2="B"} 4 | {quoter:$c3="C"} 5 | {quoter:$c4="D"} 6 | {quoter:$c5="E"} 7 | {quoter:$c6="F"} 8 | {quoter:$c7="G"} 9 | {quoter:$c8="H"} 10 | {quoter:$c9="I"} 11 | {quoter:$ca="J"} 12 | {quoter:$cb="K"} 13 | {quoter:$cc="L"} 14 | {quoter:$cd="M"} 15 | {quoter:$ce="N"} 16 | {quoter:$cf="O"} 17 | {quoter:$d0="P"} 18 | {quoter:$d1="Q"} 19 | {quoter:$d2="R"} 20 | {quoter:$d3="S"} 21 | {quoter:$d4="T"} 22 | {quoter:$d5="U"} 23 | {quoter:$d6="V"} 24 | {quoter:$d7="W"} 25 | {quoter:$d8="X"} 26 | {quoter:$d9="Y"} 27 | {quoter:$da="Z"} 28 | -------------------------------------------------------------------------------- /v1.2/games/empire6/build-empire-main.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem build-empire-main.bat 3 | rem a quick hack for your disgust 4 | 5 | set script_dir=. 6 | 7 | rem output build date/time to "build-date_basic.lbl": 8 | rem this includes BASIC PRINT statement to print date/time of build 9 | if exist %script_dir%\build-date_basic.bat call %script_dir%\build-date_basic.bat 10 | 11 | rem the lbl file should {include:build-date_basic.lbl} 12 | C:\opt\C64List3_03.exe "Empire6.lbl" -alpha:invert -crunch -prg -verbose -ovr -labels > includes.lbl 13 | rem ~nF1.txt or %filenameroot% in editpad pro 14 | 15 | set script_dir= 16 | type includes.lbl 17 | -------------------------------------------------------------------------------- /v2/core/plus_scan netlog.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | GOSUB {:3002}:GOTO 1812 5 | {:3002} 6 | a%=0:dr=2:a$="nm.log 05,s,r":GOSUB 1011:IF e%THEN RETURN 7 | {:3004} 8 | &,2,2:f$=a$:&,2,2:d$=a$:&,2,2:n=0 9 | {:3006} 10 | &,2,2:s=st:IF MID$(a$,11,5)="nm.U."THEN n=n+1:tt$(n)=a$ 11 | ON-(s=0 AND a$<>"{up arrow}")GOTO {:3006}:a%=a%+1:&"{pound}#4{pound}# {pound}%a{left:4}":IF n=0 THEN{:3014} 12 | &"{f6}";f$;":";MID$(d$,4,2);"/";MID$(d$,6,2);"/";MID$(d$,2,2);"{f6}" 13 | FOR i=1 TO n:a$=tt$(i):&"{pound}$a{f6}":NEXT:&"{f6}" 14 | {:3014} 15 | ON-(s=0)GOTO {:3004}:&"{f6}":RETURN 16 | rem +.scan netlog 17 | 18 | -------------------------------------------------------------------------------- /v2/core/plus_convert sigs2.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM x%(60,2):GOSUB {:3002}:&,28,1:GOTO 1811 5 | {:3002} 6 | xx=0 7 | {:3004} 8 | xx=xx+1:dr=3:a$="e.Sig"+STR$(xx)+",s,r":GOSUB 1011:IF e%THEN RETURN 9 | x%(0,0)=0:x%(0,1)=0:x%(0,2)=0:a=xx:&"Sig {pound}!a ":&,2,2 10 | {:3008} 11 | &,2,2:s=st:IF a$="{up arrow}"THEN{:3014} 12 | b$=LEFT$(a$,3):a=VAL(MID$(a$,4)):x=-(b$="U/D")-2*(b$="U/X") 13 | i=x%(0,x)+1:x%(i,x)=a:x%(0,x)=i:&".":IF s=0 THEN{:3008} 14 | {:3014} 15 | &"{f6}":CLOSE 2 16 | &,60,3,0,x%(0,0),366,dr$+"e.Siglist"+STR$(xx),dv%:GOSUB 1012:&:GOTO {:3004} 17 | rem "+.convert sigs2" 18 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck7.txt: -------------------------------------------------------------------------------- 1 | As you drift by the wreckage, it becomes apparent that there is nothing 2 | of any value to salvage. Still, you feel you have an obligation to search 3 | thoroughly, in case of any survivors. 4 | After about an hour of searching, you find your ships heading into a fog 5 | bank. Knowing that you are well out to sea, you order lanterns lit, and 6 | proceed with your search. 7 | Shortly after entering the fog, the wind picks up. The waves begin to 8 | break over your bow! You order 180 about, to escape the fog, but too late! 9 | Your ships are devastated! 10 | 11 | \g1 12 | -------------------------------------------------------------------------------- /v2/core/README.md: -------------------------------------------------------------------------------- 1 | C64List filename | C64 filename | Purpose | Starting line number 2 | ---------------- | ------------ | ------- | -------------------- 3 | `plus_*` | `+.*` | System command | 3000 4 | `plus_XX_YY*` | `+.XX.YY*` | Sub-module YY of XX | 4000 5 | `plus_XXslashYY*` | `+.XX/YY*` | Sub-module YY of XX | 3000 6 | `plusslashlo_*` | `+/lo.*` | Idle command | 4000 7 | `plusslashlo-*` | `+/lo-*` | Login module | 4000 8 | `plusslashloslash*` | `+/lo/*` | Automaint module | 4000 9 | `plusslashXX_YY*` | `+/XX.YY*` | Sub-module YY of XX | 4000 10 | `im_xx*` | `im.xx*` | im sub-module | 60000 11 | 12 | - sd2iec devices interpret `/` in filenames to an invalid pathname 13 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_consig2.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM x%(60,2):GOSUB {:4002}:&,28,1:RETURN 5 | {:4002} 6 | xx=0 7 | {:4004} 8 | xx=xx+1:dr=3:a$="e.Sig"+STR$(xx)+",s,r":GOSUB 1011:IF e%THEN RETURN 9 | x%(0,0)=0:x%(0,1)=0:x%(0,2)=0:a=xx:&"Sig {pound}!a ":&,2,2 10 | {:4008} 11 | &,2,2:s=st:IF a$="{up arrow}"THEN{:4014} 12 | b$=LEFT$(a$,3):a=VAL(MID$(a$,4)):x=-(b$="U/D")-2*(b$="U/X") 13 | i=x%(0,x)+1:x%(i,x)=a:x%(0,x)=i:&".":IF s=0 THEN{:4008} 14 | {:4014} 15 | &"{f6}":CLOSE 2 16 | &,60,3,0,x%(0,0),366,dr$+"e.Siglist"+STR$(xx),dv%:GOSUB 1012:&:GOTO {:4004} 17 | REM "+/SM.consig2" sysop menu 180801 x-tec 18 | 19 | -------------------------------------------------------------------------------- /v1.2/games/empire6/wreck4.txt: -------------------------------------------------------------------------------- 1 | The wreckage your lookouts have spotted appears to be from several 2 | ships. As you drift by, you see a broken mast, splintered planks, 3 | demolished crates, and an occasional body! 4 | 5 | Not seeing anything of value, you are about to give the order to resume 6 | course, when a lookout gives a warning! 7 | 8 | You look in the direction he is pointing, and see a large water spout, 9 | heading directly toward you! You order full sail, in an attempt to get 10 | out of its way, but too late! 11 | 12 | The water spout slams into your flotilla, doing considerable damage! 13 | 14 | \g1 15 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 12.txt: -------------------------------------------------------------------------------- 1 | Your tournament has gone well, and now the upstart Baron Newsome in 2 | all his arrogance has suggested a small wager between you. Thinking to 3 | put this pup in his place, you accept! 4 | 5 | Now it is time for the match! The trumpets sound, and the two Nobles 6 | charge. On the first pass, neither scores a hit. On the second pass, your 7 | champion scores a solid hit, unfortunately he too is hit solidly! Baron 8 | Newsome's champion manages to remain in the saddle; unfortunately, your 9 | champion is laying on the ground! 10 | 11 | You have lost! You lose 2 tons of timber! 12 | 13 | \g1 14 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 9.txt: -------------------------------------------------------------------------------- 1 | Up to this point, your tournament has gone well. Unfortunately, your 2 | greatest rival has also shown up. He proposes settling a dispute 3 | involving a Shipyard and some land by a single contest. Reluctantly, you 4 | agree. 5 | 6 | The arena falls into silence as word of the wager spreads. All in 7 | attendance watch as your champion prepares for the contest. 8 | 9 | With the blaring of trumpets, the two Nobles charge! Then with a crash 10 | of armor, you rise in pride, as your rival's Noble hits the ground! You 11 | have won! 12 | 13 | You win 1 Shipyard, and 100 acres of land! 14 | \g1 15 | -------------------------------------------------------------------------------- /v1.2/docs/TODO: -------------------------------------------------------------------------------- 1 | TODO: 2 | 3 | Check whether every command matches up with its documentation. 4 | 5 | Can document attributes be used for macros, such as: 6 | {pause} -> "Text output can be paused with Home, or aborted with Space or /." 7 | 8 | Look at FIXMEs. 9 | 10 | Why is {revdate} not displaying on title page? 11 | 12 | Find out how to include list of Tables in Table of Contents 13 | 14 | * fix table of contents heading levels 15 | * fix typographical quotes 16 | * command summary appendix 17 | * keystrokes in kbd:[x] wrapper 18 | * fix footnotes 19 | * "will " -> "s" 20 | * include screenshots 21 | * separate chapter files for possible inclusion in v1.3+ docs 22 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 3.txt: -------------------------------------------------------------------------------- 1 | Your tournament has gone well, and your champion seems invincible. Baron 2 | Stallworth approaches you and suggests a small wager on the joust between his 3 | champion and yours. With confidence, you agree. 4 | As the two champions await the signal for the contest to begin, Baron 5 | Stallworth's champion suddenly leans forward, and falls from his horse. 6 | Physicians rush forward as the crowd is silenced by the scene. It is 7 | determined that Baron Stallworth's champion has had an attack of 8 | appendicitis and can't continue. You claim the victory, by default! 9 | 10 | You win 1,000 gold!! 11 | \g1 12 | -------------------------------------------------------------------------------- /v2/tests/plus_test y2k patch.lbl: -------------------------------------------------------------------------------- 1 | ' h 0000 ffff a9 2c (lda #$2c, "," in d1str) 2 | ' code is at $af2d :) 3 | ' 4 | ' (C:$af54) a af32 5 | ' .af32 lda #$32 6 | ' .af34 7 | ' (C:$af34) a af37 8 | ' .af37 lda #$30 9 | 10 | {number:3000} 11 | {alpha:invert} 12 | rem +.TEST Y2K PATCH 13 | ' &,5:if lp<2 then:&"Sorry, this works only under Image BBS 2.0.{f6}":goto 1811 14 | &"Image BBS 2.0 Y2K patch test{f6:2} 15 | &"Before Y2K patch: {pound}v0{f6}" 16 | poke $16ec,$32:poke $16ed,$30 17 | &" After Y2K patch: {pound}v0{f6:2}" 18 | &"Wait until the system clock rolls over{f6}" 19 | &"to the next minute, then hit RETURN: {pound}i1" 20 | goto 1811 21 | rem +.TEST Y2K PATCH -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 4.txt: -------------------------------------------------------------------------------- 1 | You are very pleased with the turnout for your tournament. Now one 2 | of your rivals has approached you suggesting that his champion can 3 | easily defeat yours. You take offence at his attitude, and offer a small 4 | wager. He accepts with a grin. 5 | Now it is time for the match. Your champion looks confident as the 6 | trumpets sound and the two knights charge. On the first pass, only 7 | glancing blows are delivered. Now they charge each other again! With a 8 | crash of armor they meet, and this time your champion is knocked from 9 | his horse. You have lost! 10 | 11 | You lose 1,000 gold!! 12 | \g1 13 | -------------------------------------------------------------------------------- /v2/core/plus_stack 2_1.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{clear}{f6:2}STACK Investigator 2.1:{f6:2}":POKE$c000,$ba:POKE$c001,$60:pr=-1:SYS$c000 5 | x=PEEK(781)+256:IF x>=502 THEN:&"Stack Has No Garbage.{f6:2}":GOTO {:3016} 6 | a=502-x:&"Stack Has {pound}!a Bytes of Garbage:{f6:2}" 7 | FOR a=x+5 TO 511:b=PEEK(a):x=PEEK(a+1)+PEEK(a+2)*256 8 | IF b=141 THEN:&"GOSUB on Line {pound}!x{f6}":a=a+4:GOTO {:3014} 9 | ON-(b<>129)GOTO {:3014}:&"FOR "+CHR$(PEEK(x-2))+CHR$(PEEK(x-1)) 10 | n=PEEK(a+14)+PEEK(a+15)*256:&" On Line {pound}!n{f6}":a=a+17 11 | {:3014} 12 | NEXT:RETURN 13 | {:3016} 14 | &"{f6} Press A Key: {pound}g1":GOTO 1812 15 | rem +.stack 2.1 16 | 17 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 7.txt: -------------------------------------------------------------------------------- 1 | Your champion is Greystoke, and though he is a boastful Noble, he is 2 | also a winner! Now one of your rivals approaches, and asks if you feel 3 | like a small wager. Feeling your champion can defeat his, and knowing 4 | you had a poor harvest this year, you suggest the wager be in bushels of 5 | grain. He accepts! 6 | Now it is time for the match! The trumpets sound, and the two Nobles 7 | charge! With a crash of armor and shields, they meet! True to his form, 8 | your champion struts away, leaving his opponent gasping for air, in the 9 | dust! You have won! 10 | 11 | You win 7,000 bushels of grain! 12 | \g1 13 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 11.txt: -------------------------------------------------------------------------------- 1 | Your tournament is a sight to behold with the flags and crests of all the 2 | nobility in attendance making for a colorful and impressive display. 3 | 4 | Now one of your rivals, Prince Draconas, has suggested a small wager on 5 | the outcome of the match between his champion and yours. You hesitantly 6 | agree. 7 | 8 | Now it is time for the match. The two Nobles sit astride their charges, 9 | awaiting the sound of the trumpets. The trumpets sound, the two champions 10 | charge, and with a crash of armor, Prince Draconas' champion flies from 11 | his horse! You have won! 12 | 13 | You win 2 tons of timber! 14 | \g1 15 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 8.txt: -------------------------------------------------------------------------------- 1 | You have planned long for this tournament, and it has really gone 2 | well. Many of your rivals are in attendance, and you hope to add some 3 | insult to injury. One of your rivals, Baron Hellguard, has had a bad year. 4 | You think you can make it worse with a small wager. Though his champion 5 | hasn't been doing well, Baron Hellguard accepts. 6 | 7 | With a contemptuous snort, your champion looks at his opponent. Now 8 | the trumpets sound, and the two Nobles charge! Unbelievably, you watch in 9 | disgust as your champion is unseated on the first pass. You have lost! 10 | 11 | You lose 7,000 bushels of grain! 12 | 13 | \g1 14 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 5.txt: -------------------------------------------------------------------------------- 1 | Your tournament has gone well, but now your greatest rival, King 2 | Urigard, has made a claim that his champion is the best in the land. He 3 | further states that he will meet any wager offered. 4 | 5 | Enraged by his boastful manner, you suggest that if your champion were to 6 | lose, you would give him to the victor. You ask King Urigard if he 7 | is willing to do the same. He seems a little nervous, but agrees. 8 | 9 | Now the match is under way, and with four passes already completed, 10 | you begin to worry. Then on the fifth pass, your champion finally 11 | succeeds in unseating King Urigard's champion! You have won! 12 | 13 | You win 1 Noble! 14 | \g1 15 | -------------------------------------------------------------------------------- /v2/tests/test-insert.lbl: -------------------------------------------------------------------------------- 1 | ' test insert into sig list 2 | {alpha:upper} 3 | {step:2} 4 | ' xx=sig # x3%(0,xx)=entry count (j) 5 | dim x3%(10,10):xx=1:j=9:x3%(0,xx)=j 6 | ' set up dummy values: 7 | for x=1 to j:x3%(x,xx)=x:next 8 | gosub {:show_array} 9 | ' value to be inserted: 10 | input "insert which";an$:a=val(an$):if a<1 or a>999 then stop 11 | ' where to insert it: 12 | input "insert where";an$:b=val(an$):if b<1 or b>j then stop 13 | ' update count j: 14 | j=j+1:x3%(0,xx)=j 15 | ' make room (move a...j to a+1...j+1): 16 | for i=j to b step -1:x3%(i,xx)=x3%(i-1,xx):next 17 | ' insert a into b: 18 | x3%(b,xx)=a:gosub {:show_array} 19 | end 20 | {:show_array} 21 | for x=1 to j:print "x3%("x","xx")="x3%(x,xx):next:return 22 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 1.txt: -------------------------------------------------------------------------------- 1 | For some time now you have been planning for your tournament. Now, 2 | the compliments of your guests make the preparations all worthwhile. 3 | 4 | Count Graznick, one of your rivals, approaches you and suggests that a 5 | small wager would make the upcoming joust more interesting. You agree, 6 | and decide the winner gets a parcel of land along the common border your 7 | two kingdoms share. 8 | 9 | It is now time for the joust. The trumpets sound, and the two knights 10 | urge their steeds forward. With a crash of armor they meet! You rise to 11 | your feet with a cheer as Count Graznick's champion is knocked to the 12 | ground! 13 | 14 | You win 100 acres!!! 15 | \g1 16 | -------------------------------------------------------------------------------- /v2/core/plus_NMslashreport.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | s$=" ":FOR i=1 TO 4:s$=s$+s$:NEXT 5 | dr=2:a$="nm.reports,s,r":GOSUB 1011:IF e%THEN:&:GOTO {:3020} 6 | CLOSE 3:OPEN 3,dv%,3,dr$+"nm.reportlist,s,a":GOSUB 1012 7 | IF e%THEN CLOSE 3:OPEN 3,dv%,3,dr$+"nm.reportlist,s,w":GOSUB 1012 8 | IF e%THEN:&:GOTO {:3020} 9 | {:3010} 10 | &,2,2:s=st:ON-(s<>0)GOTO {:3020}:ON-(a$="{up arrow}"OR a$="")GOTO {:3010} 11 | z$=a$:&,2,2:b$=a$:&,2,2:c$=a$:&,2,2:d$=a$:&,2,2:d$=d$+","+a$:a$=z$:s=st 12 | a=45-LEN(d$):IF LEN(c$)>a THEN c$=LEFT$(c$,a-1) 13 | z$=LEFT$(a$+" "+b$+s$,29)+c$+LEFT$(s$,a-LEN(c$))+d$ 14 | PRINT# 3,z$:&"{pound}$z{f6}":ON-(s=0 AND rc=0)GOTO {:3010} 15 | {:3020} 16 | CLOSE 2:CLOSE 3:GOTO 1812 17 | rem "+.NM/report" 18 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 6.txt: -------------------------------------------------------------------------------- 1 | Your tournament has gone well up to this point. Now your greatest rival, 2 | Duke Mumford, boasts that his champion is the best in the land. He further 3 | states he is willing to pit his champion against yours, with the winner to 4 | get the loser's champion. 5 | 6 | You feel you have little choice but to accept, so, with not a little 7 | anticipation, you wait for the joust to begin. 8 | 9 | On the first pass, both Nobles score glancing blows, but neither is 10 | unseated. Unfortunately on the second pass, Duke Mumford's champion scores a 11 | solid blow, leaving your champion on the ground, coughing in the dust! You 12 | have lost! 13 | 14 | You lose 1 Noble! 15 | 16 | \g1 17 | -------------------------------------------------------------------------------- /v2/core/plus_NMslashcheck.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | GOSUB {:3004}:GOTO 1812 5 | {:3002} 6 | a$=a$(a%):&"{cyan}{pound}$b{lt. blue}{pound}#2{pound}%a{cyan}/{white}{pound}$a{red}":RETURN 7 | {:3004} 8 | dr=2:a$="nm.nodes":GOSUB 1011:ON-(e%<>0)GOTO {:3018}:INPUT# 2,n:DIM a$(n),z%(n,4) 9 | FOR i=1 TO n:x=i+1:GOSUB 1001:a%=i:&"{f6}{up}{pound}%a" 10 | INPUT# 2,a$(i),b$,b$,b$,b$,z%(i,1),z%(i,2),z%(i,3),z%(i,4):NEXT:CLOSE 2 11 | &"{f6:2}":FOR i=1 TO n:b$="" 12 | a%=i:GOSUB {:3002}:b$=": ":FOR j=1 TO 4:a%=z%(i,j):ON-(a%=0)GOTO {:3016}:IF j>1 THEN b$=", " 13 | GOSUB {:3002}:f=0:FOR k=1 TO 4:f=f-(z%(a%,k)=i):NEXT:IF f<>1 THEN:&"*" 14 | {:3016} 15 | NEXT:&"{pound}q0{f6}":NEXT 16 | {:3018} 17 | CLOSE 2:RETURN 18 | rem "+.NM/check" 19 | -------------------------------------------------------------------------------- /v2/core/plusslashlo_checknet.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | {crunch:on} 5 | rem +/lo.checknet 2019-04-10 6 | poke 53248,1:&"{clear}Checking Net Files{f6:2}":gosub {:4004}:&"{f6:2}Key: {pound}g1{f6:2}":poke 53248,0:return 7 | {:4004} 8 | ' pinacolada: changed 8 to dv% 9 | dr=2:gosub 1010:close 1:open 1,dv%,0,"$"+dr$+"nm.l.*,p,r" 10 | get#1,a$,a$:&,8,1,1:n=0 11 | {:4008} 12 | &,8,1,1:if mid$(a$,8,5)="nm.l."then n=n+1:tt$(n)=a$:goto {:4008} 13 | close 2:if n=0 then:&" No Network Files waiting...":return 14 | for i=1 to n:a$=mid$(tt$(i),8,8)+",s,r":gosub 1011:a%=0:if e% then {:4016} 15 | {:4014} 16 | a%=a%+1:&,2,2:on -(st=0) goto {:4014} 17 | {:4016} 18 | close 2:a$=mid$(tt$(i),13,3):&" >{pound}$a -- {pound}%a Files{f6}":next 19 | return 20 | 21 | -------------------------------------------------------------------------------- /v2/tests/custom-input-image.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | goto {:23} 3 | {:3} 4 | p=1 5 | {:5} 6 | &"{pound}g1":if an$=r$ or tr%<1 then {:21} 7 | an=asc(an$) 8 | if (nl=1 and an<>20) or (nl<>1 and an<>127) then {:13} 9 | if len(in$) then in$=left$(in$,len(in$)-1):p=p-1:goto {:19} 10 | {:13} 11 | if p=1 then an=an or 128:p=2:goto {:17} 12 | p=p+1:an=an and 127 13 | {:17} 14 | in$=in$+chr$(an) 15 | {:19} 16 | &chr$(an);:goto {:5} 17 | {:21} 18 | &"{f6}":return:&"Done: "+in$+len(in$):return 19 | {:23} 20 | lp=1:&"Custom input: Capitalize first letter, lowercase everything else. DELete works.{f6:2}" 21 | &"Enter first name: ":gosub {:3}:f$=in$ 22 | &"Enter last name: ":gosub {:3}:l$=in$ 23 | &"Real name: {pound}$f {pound}$l{f6}" 24 | goto 1811 25 | rem pinacolada 7/28/2019 26 | -------------------------------------------------------------------------------- /v2/asm/tests/plus_test remote.lbl: -------------------------------------------------------------------------------- 1 | {def:v2} ' which version is built -- currently this crashes under Image v3 2 | {alpha:alt} 3 | {ifdef:v2} 4 | {number:1} 5 | {assign:load_protocol =1750 } ' load protocol a$ 6 | {assign:main_prompt =1811 } ' main prompt 7 | rem "+.test remote" {usedef:__BuildDate} {usedef:__BuildTime} pinacolada 8 | {else} 9 | {number:3000} 10 | {assign:load_protocol =28 } ' load protocol a$ 11 | {assign:main_prompt =300 } ' main prompt 12 | rem "i.test remote" {usedef:__BuildDate} {usedef:__BuildTime} pinacolada 13 | {endif} 14 | ' common code: 15 | a$="remote":gosub {:load_protocol}:if e% then:&:return 16 | &,16:&"{f5}++ remote{f5} is now hooked into system.{f6}" 17 | goto {:main_prompt} 18 | ' FIXME: "> d018 14" in monitor to reset VIC screen mode after this runs 19 | -------------------------------------------------------------------------------- /v2/core/jack/i_relread.lbl: -------------------------------------------------------------------------------- 1 | GOSUB{:3002}:GOTO 300 2 | {:3002} 3 | POKE 53252,16:N=.:&"{f6:2}FILENAME: {pound}I0{f6}":F$=AN$:IF AN$=""THEN RETURN 4 | IF D1%<7 THEN D1%=8 5 | A%=D1%:B%=D2%:&"DEVICE ({pound}%A,{pound}%B): {pound}I1":DR=VAL(AN$) 6 | IF DR>6 THEN D1%=DR:DR=0:&"DRIVE: {pound}I1":D2%=VAL(AN$) 7 | ON-(DR<0)GOTO{:3002}:GOSUB 3:CLOSE 15:A=-(ST<>.):IF A THEN{:3022} 8 | CLOSE 15:OPEN 15,DV%,15:CLOSE 2:OPEN 2,DV%,2,DR$+F$:GOSUB 5:IF E% then {:3024} 9 | {:3014} 10 | &"{f6}RECORD: {pound}I1{f6}":X=VAL(AN$):IF X<1 THEN CLOSE 2:&"{f6}":RETURN 11 | GOSUB 1 12 | {:3018} 13 | GET#2,A$:A=ASC(A$+CHR$(0)):IF(A AND 127)<32 THEN A$="{rvrs on}"+CHR$(A+64)+"{rvrs off}" 14 | &:ON-(ST=.)GOTO{:3018}:&"{f6}":GOTO{:3014} 15 | {:3022} 16 | A$="{f6}ERROR: DEVICE NOT PRESENT{f6}" 17 | {:3024} 18 | &:CLOSE 2:RETURN 19 | REM 20 | -------------------------------------------------------------------------------- /v1.2/games/empire6/tourney 2.txt: -------------------------------------------------------------------------------- 1 | To celebrate the good fortune your lands have been blessed with, you 2 | decide to hold a tournament. 3 | 4 | All the Nobles have come to pit their champions against other champions 5 | of the land. One of your rivals, Prince Lloyd, suggests a land dispute 6 | between the two of you might be settled by a single competition: his 7 | champion against yours. Feeling lucky, you agree. 8 | 9 | As word spreads of the side bet, all eyes turn to the "Field of Honor." 10 | Both Prince Lloyd's and your champion line up for the joust. The trumpets 11 | sound, and they charge! 12 | 13 | The crowd rises as your champion's horse stumbles. Unfortunately, it was 14 | at the moment the two knights met. Your champion, thrown off balance, is 15 | knocked from his horse. 16 | 17 | You lose 100 acres! 18 | \g1 19 | -------------------------------------------------------------------------------- /v2/core/plus_relread.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | gosub {:3002}:goto 1812 5 | {:3002} 6 | poke 53252,16:n=.:&"{f6:2}Filename: {pound}i0{f6}":f$=an$:if an$=""then return 7 | if d1%<7 then d1%=8 8 | a%=d1%:b%=d2%:&"Device ({pound}%a,{pound}%b): {pound}i1":dr=val(an$) 9 | if dr>6 then d1%=dr:dr=0:&"Drive: {pound}i1":d2%=val(an$) 10 | on-(dr<0)goto {:3002}:gosub 1474:if a then{:3022} 11 | close 15:open 15,dv%,15:close 2:open 2,dv%,2,dr$+f$:gosub 1012:if e% then {:3024} 12 | {:3014} 13 | &"{f6}Record: {pound}i1{f6}":x=val(an$):if x<1 then close 2:&"{f6}":return 14 | gosub 1001 15 | {:3018} 16 | get#2,a$:a=asc(a$+chr$(0)):if(a and 127)<32 then a$="{rvrs on}"+chr$(a+64)+"{rvrs off}" 17 | &:on-(st=.)goto {:3018}:&"{f6}":goto {:3014} 18 | {:3022} 19 | a$="{f6}Error: Device Not Present{f6}" 20 | {:3024} 21 | &:close 2:return 22 | rem +.relread 23 | -------------------------------------------------------------------------------- /v2/core/jack/islashIM.NetSubEdit.lbl: -------------------------------------------------------------------------------- 1 | &,28,1:DIM A%(99):GOSUB{:4002}:&,28,1:GOTO 300 2 | {:4002} 3 | POKE 53252,3:&"{f6}NETSUB #: {pound}I1":IF AN$=""THEN RETURN 4 | N=ABS(INT(VAL(AN$))):DR=2:GOSUB 3:O$=DR$+"NM.NETSUB"+STR$(N) 5 | &,60,2,0,A%(0),O$,DV%:GOSUB 5:IF E%THEN:&:GOTO{:4002} 6 | TZ=1:&,60,1,30,A%(0),B$:&,60,1,48,A%(15),C$ 7 | {:4010} 8 | &"{clear}NETSUB {pound}!N: {pound}$B{f6:2}":FOR I=0 TO 15:A$=MID$(C$,I*3+1,3) 9 | D$=CHR$(193+I):&"{pound}$D) {pound}$A ":NEXT:&"{f6:2}OPTION? {pound}G1{pound}V7{f6}" 10 | IF AN$>="A"AND AN$<="P"THEN GOSUB{:4018}:GOTO{:4010} 11 | ON TZ GOTO{:4002}:PRINT# 15,"S"O$:&,60,3,0,A%(0),198,O$,DV%:GOSUB 5:&:GOTO{:4002} 12 | {:4018} 13 | A=ASC(AN$)-193:IF A<0 OR A>15 THEN RETURN 14 | W$=MID$(C$,A*3+1,3):P$="LINK TO":POKE 53252,3:&,1,32:IF LEN(AN$)<>3 THEN RETURN 15 | C$=LEFT$(C$,A*3)+AN$+MID$(C$,A*3+4):&,60,0,48,A%(15),C$:TZ=0:RETURN 16 | -------------------------------------------------------------------------------- /v2/core/plus_find acs.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | {:3000} 5 | GOSUB {:3010}:GOSUB 1065:GOSUB {:3014} 6 | FOR x=1 TO ur:GOSUB 1001:&,2,2:an$=a$:&,15,1 7 | FOR i=1 TO 6:&,2,2:NEXT:a=VAL(LEFT$(a$,1)) 8 | IF a=c THEN:&"ID:{pound}!x ({pound}!a) {pound}v7{f6}" 9 | a=rc:&".{left}":IF rc OR a THEN x=ur 10 | NEXT:CLOSE 2:GOTO {:3016} 11 | {:3010} 12 | &"{clear}{f6:2}Access Group Finder. This Program Will{f6}Look Through Your User Files" 13 | &" And Find{f6}All Users With Any Specified Access{f6}Group.":RETURN 14 | {:3014} 15 | &"{f6:2}Find Which Access Group?: {pound}g1{pound}v7{f6}":c=VAL(an$):IF c=0 THEN{:3020} 16 | RETURN 17 | {:3016} 18 | &"{f6}Run again? ":GOSUB 1907:ON a GOTO {:3000} 19 | GOTO 1812 20 | {:3020} 21 | &"{f6}These users are unvalidated or{f6}have not called back...{f6:2}":RETURN 22 | REM "+.find acs" - find access group 180209 x-tec 23 | -------------------------------------------------------------------------------- /v2/tests/custom-input-basic.lbl: -------------------------------------------------------------------------------- 1 | {alpha:alt} 2 | {number:1} 3 | {step:2} 4 | ' user input, force 1st char to be uppercase, otherwise lowercase 5 | ' allow backspace 6 | {:1} 7 | goto {:100} 8 | {:10} 9 | in$="":poke 204,.:p=1:nl=1 10 | {:20} 11 | get an$:if an$="" then {:20} 12 | {:22} 13 | an=asc(an$):if an=13 then {:60} 14 | {:24} 15 | if (nl=1 and an<>20) or (nl<>1 and an<>127) then {:30} 16 | {:26} 17 | if len(in$) then in$=left$(in$,len(in$)-1):p=p-1:goto {:55} 18 | {:30} 19 | if p=1 then an=an or 128:p=2:goto {:50} 20 | {:40} 21 | p=p+1:an=an and 127 22 | {:50} 23 | in$=in$+chr$(an) 24 | {:55} 25 | print chr$(an);:goto {:20} 26 | {:60} 27 | poke 204,1:return:print" "an$"done: "in$;len(in$) 28 | {:100} 29 | print "User's first name: ";:gosub {:10}:ff$=in$:print ff$" entered." 30 | print "User's last name: ";:gosub {:10}:ll$=in$:print ll$" entered." 31 | print "Real name: "ff$" "ll$ 32 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_find acs.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | {:4000} 5 | GOSUB {:4012}:GOSUB 1065:GOSUB {:4016} 6 | FOR x=1 TO ur:GOSUB 1001:&,2,2:an$=a$:&,15,1 7 | FOR i=1 TO 6:&,2,2:NEXT:a=VAL(LEFT$(a$,1)) 8 | IF a=c THEN:&"ID:{pound}!x ({pound}!a) {pound}v7{f6}" 9 | a=rc:&".{left}":IF rc OR a THEN x=ur 10 | NEXT:CLOSE 2:GOTO {:4020} 11 | {:4012} 12 | &"{clear}{f6:2}Access Group Finder. This Program Will{f6}Look Through Your User Files" 13 | &" And Find{f6}All Users With Any Specified Access{f6}Group.":RETURN 14 | {:4016} 15 | &"{f6:2}Find Which Access Group?: {pound}g1{pound}v7{f6}":c=VAL(an$):IF c=0 THEN{:4024} 16 | RETURN 17 | {:4020} 18 | &"{f6}Run again? ":GOSUB 1907:ON a GOTO {:4000} 19 | RETURN 20 | {:4024} 21 | &"{f6}These users are unvalidated or{f6}have not called back...{f6:2}":RETURN 22 | rem find access groups 23 | REM "+/SM.find acs" sysop menu 180209 x-tec 24 | 25 | -------------------------------------------------------------------------------- /scripts/start-bbs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 11/May/2018 3 | basedir="~/c64/Image\ BBS/v2" 4 | 5 | # tcpser is in ~/bin 6 | 7 | # test Image 1.3 in VICE 3.1 at 2400 bps on user port 8 | # +acia disable ACIA emulation 9 | # -rsdev1 define device, address:port for tcpser to connect to 10 | # -rsuser enable user port RS232 emulation 11 | # -drive10type 1581 12 | # -10 attach disk image 13 | 14 | x64 -verbose \ 15 | +acia \ 16 | -rsdev1 0 \ 17 | # -rsuserdev1 \|nc\ -p\ 3064\ 127.0.0.1\ 25232 18 | -rsuser \ 19 | -rsdev1baud 2400 \ 20 | -drive10type 1581 -10 "($basedir)/image\ 2_0\ boot-e.d81" -drive11type 1581 -11 "($basedir)/image\ 2_0\ s-nm.d81" 21 | 22 | # FIXME 23 | #Error - Cannot attach disk image `~/c64/Image\ BBS/v2/image\ 2_0\ boot-e.d81' to unit 10. 24 | #Filesystem Image: Error - Cannot open file `~/c64/Image\ BBS/v2/image\ 2_0\ s-nm.d81'. 25 | #Error - Cannot attach disk image `~/c64/Image\ BBS/v2/image\ 2_0\ s-nm.d81' to unit 11. 26 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo-news.lbl: -------------------------------------------------------------------------------- 1 | REM - NEWS MODULE - 2 | KK=.:B=.:T=.:DR=4:A$="D.N.MAIN,S,R":GOSUB 4 3 | ON SGN(E%)GOTO{:4526}:INPUT# 2,B:IF B<1 THEN{:4526} 4 | T=.:FOR X=1 TO B:INPUT# 2,ED$(X),NN$(X),D%(X):D%(X)=D%(X)*-((D%(X)AND 2^AC%)<>.) 5 | IF D%(X)THEN T=T+1:ED$(T)=ED$(X):NN$(T)=NN$(X):C%(T)=D%(X) 6 | NEXT:CLOSE 2:IF T=. then {:4526} 7 | FOR I=1 TO T:SH=.:C$="NEW NEWS":F2=-(MID$(NN$(I),2)1) 8 | IF F2 THEN C$="REMINDER":IF LEFT$(ED$(I),1)<>"$" then {:4524} 9 | B$=ED$(I):IF LEFT$(B$,1)="$"THEN B$=MID$(B$,2) 10 | &"{f6}{yellow}{pound}$C:{white} {pound}$B{f6}{cyan}({$04}"+NN$(I):&"){pound}Q0{f6:2}":KK=1:DR=1:B$=A$ 11 | A$="N."+LEFT$(ED$(I),14)+",S,R":GOSUB 4:ON-(E%<>.)GOTO{:4522}:&,3-9*(F2=.),2 12 | {:4522} 13 | CLOSE 2:GOSUB 12:IF TR%<1 THEN I=T 14 | {:4524} 15 | NEXT:RETURN 16 | {:4526} 17 | CLOSE 2:IF KK=.THEN:&"{f6}NO NEW NEWS.{f6}" 18 | RETURN 19 | COPR 1990 NEW IMAGE 12-26-90 20 | -------------------------------------------------------------------------------- /v2/core/plus_convert menu.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | ' TODO: if menu # is 4, change access level to 9? 5 | &,28,1:dim jm%(29,49) 6 | {:3002} 7 | &"Menu #: {pound}i1":m=val(an$):if m then gosub {:3006}:goto {:3002} 8 | &,28,1:goto 1812 9 | {:3006} 10 | n=0:dr=1:a$="s.menu"+str$(m)+",s,r":gosub 1011:if e%then close 2:&:return 11 | {:3008} 12 | &,2,2:s=st:on-(a$="{up arrow}")goto {:3012}:lp=1:&:&,60,0,50,jm%(5,n),a$ 13 | ' jm%(0,n): 1=? not implemented. flag as active command? 14 | ' jm%(1,n): 1023=access level 15 | ' jm%(2,n): -1=? 16 | ' IDEA: maybe if ZZ mode needed? if user not in ZZ mode, don't list this command 17 | jm%(0,n)=1:jm%(1,n)=1023:jm%(2,n)=-1:n=n+1:on-(s=0 and n<50)goto {:3008} 18 | {:3012} 19 | if n<50 then jm%(0,n)=0:jm%(1,n)=0:n=n+1:goto {:3012} 20 | close 2:dr=3:gosub 1010:a$=dr$+"e.menu"+str$(m) 21 | print# 15,"s"a$:&,60,3,0,jm%(0,0),3000,a$,dv%:gosub 1012:&:return 22 | rem +.convert menu 23 | -------------------------------------------------------------------------------- /v2/core/im_screens.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | {alpha:alt} 3 | {step:2} 4 | on im goto {:60022},{:60024} 5 | return 6 | {:60004} 7 | a=peek(53248):poke 53248,1:&,18,0 8 | x$="Send":if x>1 then x$="Receiv":if x>2 then x$="Copy":if x>3 then x$="Scann" 9 | &"{clear} {cyan}{$a2:37}{f6}" 10 | &" {rvrs on} {pound}$xing{pound}{back arrow}11: {f5}{pound}v7{f5}{pound}{back arrow}38{rvrs off}{yellow}{$a1}{f6}" 11 | &" {rvrs on}{cyan} Device : {pound}%a{pound}{back arrow}38{rvrs off}{yellow}{$a1}{f6}" 12 | &" {rvrs on}{cyan} Drive : {pound}%b{pound}{back arrow}38{rvrs off}{yellow}{$a1}{f6}" 13 | &" {rvrs on}{cyan} Protocol : {pound}vl{pound}{back arrow}38{rvrs off}{yellow}{$a1}{f6}" 14 | &" {yellow}{$bc}{rvrs on}{$a2:36}{rvrs off}{$be}{f6}{lt. blue}" 15 | &" Good: 00000 Bad: 00000 Bytes: 000000{f6}":poke 53248,a:return 16 | {:60022} 17 | a%=dv%(bn+6):b%=dr%(bn+6):goto {:60004} 18 | {:60024} 19 | a%=d1%:b%=d2%:goto {:60004} 20 | rem im.screens 21 | -------------------------------------------------------------------------------- /v2/core/plus_NetSubEdit.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM a%(99):GOSUB {:3002}:&,28,1:GOTO 1812 5 | {:3002} 6 | POKE 53252,3:&"{f6}Netsub #: {pound}i1":IF an$=""THEN RETURN 7 | n=ABS(INT(VAL(an$))):dr=2:GOSUB 1010:o$=dr$+"nm.netsub"+STR$(n) 8 | &,60,2,0,a%(0),o$,dv%:GOSUB 1012:IF e%THEN:&:GOTO {:3002} 9 | tz=1:&,60,1,30,a%(0),b$:&,60,1,48,a%(15),c$ 10 | {:3010} 11 | &"{clear}Netsub {pound}!n: {pound}$b{f6:2}":FOR i=0 TO 15:a$=MID$(c$,i*3+1,3) 12 | d$=CHR$(193+i):&"{pound}$d) {pound}$a ":NEXT:&"{f6:2}Option? {pound}g1{pound}v7{f6}" 13 | IF an$>="A"AND an$<="P"THEN GOSUB {:3018}:GOTO {:3010} 14 | ON tz GOTO {:3002}:PRINT# 15,"s"o$:&,60,3,0,a%(0),198,o$,dv%:GOSUB 1012:&:GOTO {:3002} 15 | {:3018} 16 | a=ASC(an$)-193:IF a<0 OR a>15 THEN RETURN 17 | w$=MID$(c$,a*3+1,3):p$="Link to":POKE 53252,3:&,1,32:IF LEN(an$)<>3 THEN RETURN 18 | c$=LEFT$(c$,a*3)+an$+MID$(c$,a*3+4):&,60,0,48,a%(15),c$:tz=0:RETURN 19 | rem "+.NetSubEdit" 20 | -------------------------------------------------------------------------------- /v2/tests/plus_test speed.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {step:2} 3 | &"Test #1:Wrap On{f6}":gosub {:3100}:&"Key {pound}g1{f6}" 4 | &"Test #2:Wrap Off{f6}":gosub {:3200}:&"Key {pound}g1{f6}" 5 | pr$="":goto 1812 6 | {number:3100} 7 | {:3100} 8 | ' 56584-56587 = $dd08-$dd0b, CIA#2 Time of Day Clock 9 | m=56584:&"{clear}":poke m+3,0:poke m+2,0:poke m+1,0:poke m,0 10 | for i=1 to 50:lp=1:&"----------++++++++++----------+++++++++ ":next 11 | d%=peek(m):c%=peek(m+1):c%=(c%and 15)+int(c%/16)*10:a=2000/(c%+d%/10) 12 | a%=a:b%=(a-a%)*10:&"{pound}%c.{pound}%d Seconds / {pound}%a.{pound}%b CPS{f6}" 13 | return 14 | {number:3200} 15 | {:3200} 16 | m=56584:&"{clear}":poke m+3,0:poke m+2,0:poke m+1,0:poke m,0 17 | for i=1 to 50:lp=0:&"----------++++++++++----------+++++++++ ":next 18 | d%=peek(m):c%=peek(m+1):c%=(c%and 15)+int(c%/16)*10:a=2000/(c%+d%/10) 19 | a%=a:b%=(a-a%)*10:&"{pound}%c.{pound}%d Seconds / {pound}%a.{pound}%b CPS{f6}" 20 | return 21 | rem +.test speed 22 | 23 | -------------------------------------------------------------------------------- /v1.2/games/shadowrun/shadowrun variables.txt: -------------------------------------------------------------------------------- 1 | Shadowrun variables: 2 | 3 | Lines 61 and 12 do not exist 4 | 5 | mo : moves 6 | 7 | o(0) : 8 | o(1) : # of players in game 9 | o(2) : room # 10 | o(3) : player credits 11 | o(4) : pass cards found 12 | o(5) : player health 13 | o(6) : player class 1: Decker 2: Merc 3: St Mage 14 | o(7) : player number 15 | o(8) : 16 | o(9) : opponent's current health 17 | o(10): opponent's max health 18 | o(11): ? 19 | 20 | a$(33): items in room: 21 | a$(26)="y" - called Ares helicopter 22 | a$(27)=" 3"- correct microchip 23 | ' "a"=active security droid, "n"=no 24 | 25 | player log format: 26 | create: a$=na$+r$+d1$+r$+" 15"+r$+" "+an$+r$+" 0"+r$+" 0"+r$+" 10"+r$+" 25"+r$ 27 | read : input# 2,lp$,o(5),o(6),o(4),o(2),o(3):if d1$>lp$ then if ac%=9 then {:169} 28 | Create: Read into: 29 | handle na$ lp$ 30 | last play d1$ o(5) 31 | player health 15 o(6) 32 | player class an$ o(4) 33 | room # 0 o(2) 34 | player credits 0 o(3) 35 | 10 36 | 25 37 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win6.txt: -------------------------------------------------------------------------------- 1 | You have heard of a distant land which is rich in the finest spices. 2 | You have thought many times about setting sail in search of this land. Now 3 | you have decided to look for this land. 4 | 5 | You have hired a small vessel, and with some of your Nobles and their 6 | men, you set sail on your adventure. 7 | 8 | After many weeks, you are considering turning back. Then the call "Land 9 | ho!" comes down from the crow's nest. 10 | 11 | Sure enough: in the hazy distance there is the outline of a large island. 12 | Having seen other islands without finding the "Island of Spice," you still 13 | hold a faint hope. But you decide that if this one turns out to be just 14 | another island, you will set sail for home. 15 | 16 | However, on approaching the island, your nostrils detect the sweet scent 17 | of spices -- you have found the fabled "Island of Spice!" 18 | 19 | You gain 40 tons of Spices!! 20 | 21 | \g1 22 | -------------------------------------------------------------------------------- /v2/asm/README.md: -------------------------------------------------------------------------------- 1 | # README 2 | 3 | Some handy regexes to format source code in Kate: 4 | 5 | `(:)(\S) -> \n\t\2` Search for : not followed by whitespace, replace with newline and tab 6 | 7 | ## Label files 8 | 9 | Vice can also load label files created by the Acme assembler. Their syntax is e.g. 10 | `labelname = $1234 ; Maybe a comment`. A dot will be added automatically 11 | to label names assigned in this way to fit to the Vice label syntax. 12 | 13 | To change Windows' CR/LF line endings to Linux's LF line endings: `wine c64list.exe -sym | dos2unix` 14 | 15 | ## Docker-based build 16 | 17 | The `./v2/asm` directory can be built inside a Docker container to ease environment setup. 18 | 19 | Prerequisites: 20 | * Ensure you have Docker installed on your system. 21 | * Ensure your user account is part of the `docker` group. Sample command: `sudo usermod -G docker -a $(whoami)` 22 | 23 | Execute `./build.sh` to execute the build. Once the build completes, note the `*.bin` files in the current directory. 24 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win1.txt: -------------------------------------------------------------------------------- 1 | 2 | You have heard that a band of pirates has been raiding the area 3 | recently, causing much strife to the poor serfs in your dominion. 4 | Thus it is with a stout heart and a sharp sword that you determine to 5 | rid your kingdom of these pests once and for all. 6 | 7 | After a meeting with your nobles, you decide that the best route of 8 | invasion would be through a secret tunnel which one of your spies 9 | discovered about a month ago. It leads into a storage room to the 10 | north of the pirates' main cave. 11 | 12 | This course determined, your hardy band sets out for the cave less 13 | than a week later. You arrive at the secret tunnel and, after checking 14 | for sentries, enter the passage. 15 | 16 | Your invasion is swift and merciless, and the pirate camp is soon under 17 | your control. Flushed with victory, your band counts the treasure which 18 | you have received. 19 | 20 | You gain 30,000 gold!! 21 | \g1 22 | -------------------------------------------------------------------------------- /v2/core/jack/i_MX.lbl: -------------------------------------------------------------------------------- 1 | {:3000} 2 | POKE 53252,62:DR=3:A$="E.MACS":GOSUB 4:IF E%=. then {:3006} 3 | &"{f6}{cyan}PLEASE WAIT, SETTING FILES...{f6}":DR=3:A$="E.MACS,L,"+CHR$(64):GOSUB 4 4 | X=UR*4:GOSUB 1:PRINT# 2,"{up arrow}":CLOSE 2:GOTO{:3000} 5 | {:3006} 6 | X=ID*4-4:FOR A=.TO 3:X=X+1:GOSUB 1:&,2,2:ON-(A$="{up arrow}")GOSUB{:3008}:TT$(A+1)=A$:NEXT:GOSUB{:3010} 7 | {:3008} 8 | A$="USE 'MX' COMMAND TO CONFIGURE":RETURN 9 | {:3010} 10 | &"{f6} {rvrs on}{cyan} SYSTEM MACRO EDITOR {f6:3}" 11 | FOR A=1 TO 4:A%=A:AN$=TT$(A):&"{white}{pound}%A> {lt. blue}{pound}V7{f6}":NEXT 12 | &"{f6}{lt. blue}EDIT WHICH:{white} {pound}I1":ON-(TR%<1)GOTO{:3022}:A=VAL(AN$):IF A<1 OR A>4 THEN{:3020} 13 | W$=TT$(A):A%=A:&"{lt. blue}RETURN ALONE = OLD{f6:3}":P$="{lt. blue}EDIT {pound}#0{pound}%A{white}":&,1,32:IF AN$="" then {:3010} 14 | ON-(TR%<1)GOTO{:3022}:TT$(A)=AN$:GOTO{:3010} 15 | {:3020} 16 | X=ID*4-4:FOR A=.TO 3:X=X+1:GOSUB 1:PRINT# 2,TT$(A+1):NEXT 17 | {:3022} 18 | CLOSE 2:RETURN 19 | COPR. 1994 NEW IMAGE 9/13/94 20 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win4.txt: -------------------------------------------------------------------------------- 1 | Your land has suffered a terrible drought. Being a caring ruler, you 2 | have prayed for deliverance for many months. You have diligently made 3 | sacrifices to the gods and have refused to give up hope. 4 | 5 | Then in a dream you had an image of an island in the swamps. This 6 | island was covered with grain. When you awoke, you were left with the 7 | impression that the island is in a swamp on your land. Arising, you 8 | decide to search the swamp for this bounty. 9 | 10 | You gather your nobles together, and outline your plan for a thorough 11 | search of the swamp. Convinced that this is a sign from the gods, you begin 12 | your quest. 13 | 14 | After several weeks of searching, you are about to give up hope. On the 15 | next day, however, you hack your way through a thick mass of vines and see 16 | before you the image of your dream! You have found the island of grain! 17 | 18 | You gain 40,000 bushels of grain! 19 | 20 | \g1 21 | -------------------------------------------------------------------------------- /v2/core/plus- lo-news.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem - news module 11-26-94 3 | cm$="News":gosub 1360:kk=.:b=.:t=.:dr=4:a$="d.n.Main,s,r":gosub 1011 4 | on sgn(e%)goto {:4026}:input# 2,b:if b<1 then{:4026} 5 | t=.:for x=1 to b:input# 2,ed$(x),nn$(x),d%(x):d%(x)=d%(x)*-((d%(x)and 2^ac%)<>.) 6 | if d%(x)then t=t+1:ed$(t)=ed$(x):nn$(t)=nn$(x):c%(t)=d%(x) 7 | next:close 2:if t=. then {:4026} 8 | for i=1 to t:sh=.:c$="New News":f2=-(mid$(nn$(i),2)1) 9 | if f2 then c$="Reminder":if left$(ed$(i),1)<>"$" then {:4024} 10 | b$=ed$(i):if left$(b$,1)="$"then b$=mid$(b$,2) 11 | &"{f6} {lt. blue}{pound}$c:{white} {pound}$b{pound}{back arrow}39 {cyan}Date: ({gray3}{$04}"+nn$(i):&"{cyan}){f6}{blue}{pound}vj{pound}q0{f6:2}":kk=1:dr=1:b$=a$ 12 | a$="n."+left$(ed$(i),14)+",s,r":gosub 1011:on-(e%<>.)goto {:4022}:&,3-9*(f2=.),2 13 | {:4022} 14 | close 2:gosub 1914:if tr%<1 then i=t 15 | {:4024} 16 | next:return 17 | {:4026} 18 | close 2:if kk=.then:&"{f6}No New News.{f6}" 19 | return 20 | copr 1994 new image 21 | -------------------------------------------------------------------------------- /v2/core/plus_convert GF.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM s%(39,60):dr=4:GOSUB 1010 5 | CLOSE 1:OPEN 1,dv%,0,"$"+dr$+"d.GF.*":GET#1,a$,a$:&,8,1,1:n=0 6 | {:3002} 7 | &,8,1,1:an$=a$:&,15,6,34:ON-(an$="")GOTO {:3004}:&,15,6,34:ON-(an$="")GOTO {:3004} 8 | n=n+1:tt$(n)=a$:&".":GOTO {:3002} 9 | {:3004} 10 | CLOSE 1:&"{f6:2}":IF n=0 THEN:&"None Found.":GOTO 1812 11 | &"{pound}!n Found:{f6:2}":FOR i=1 TO n:a$=tt$(i):&"Reading {f5}{pound}$a{f5}" 12 | &,60,2,0,s%(0,0),dr$+tt$(i),dv%:GOSUB 1012:IF e%THEN:&:GOTO {:3017} 13 | &,60,0,20,s%(15,0),MID$(tt$(i),6):IF s%(0,0)=0 THEN{:3015} 14 | FOR j=1 TO s%(0,0):&,60,1,16,s%(13,j),a$:&,60,1,28,s%(21,j),b$ 15 | &,60,0,20,s%(27,j),a$:&,60,0,28,s%(13,j),b$:NEXT 16 | {:3015} 17 | a$=tt$(i):&"{f6}Writing {f5}{pound}$a{f5}":PRINT# 15,"s"dr$tt$(i) 18 | &,60,3,0,s%(0,0),80+80*s%(0,0),dr$+tt$(i),dv%:&"{f6}" 19 | {:3017} 20 | NEXT:&"Done{f6}":GOTO 1812 21 | rem "+.convert GF" - updates "d.GF.*" files from "+.convert GF" somehow 22 | ' TODO: figure out what this does 23 | -------------------------------------------------------------------------------- /v2/core/plusslashNM_compiler.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+/NM.compiler" 5 | dr=2:a$="nm.connect":GOSUB 1011:IF e%THEN RETURN 6 | FOR x=1 TO 4:GOSUB 1001:&,2,2:lg$(x)=a$:NEXT 7 | j=.:FOR i=1 TO 4:dr=2:a$="nm.l."+lg$(i):GOSUB 1011:IF e%THEN{:4032} 8 | {:4008} 9 | j=j+1:&,2,2:tt$(j)=a$:ON-(st=.)GOTO {:4008} 10 | dr=2:a$="nm.l."+lg$(i):ON-(LEN(lg$(i))<>3)GOTO {:4033}:GOSUB 1023 11 | PRINT# 2,lg$(i)+"/"+nn$+"/A/nm.Z."+lg$(i)+"/"+nn$:CLOSE 2 12 | &"{f6:2} Compiling Files For "+lg$(i)+" ..." 13 | dr=2:a$="nm.Z."+lg$(i)+"/"+nn$+",s,w":GOSUB 1011 14 | IF e%THEN a$="nm.Z."+lg$(i)+"/"+nn$+",s,a":GOSUB 1011 15 | FOR k=1 TO j:IF MID$(tt$(k),11,5)="nm.Z."THEN{:4030} 16 | dr=2:GOSUB 1009:OPEN 3,dv%,3,dr$+MID$(tt$(k),11)+",s,r" 17 | PRINT# 2,tt$(k) 18 | {:4026} 19 | &,2,3:s=st:PRINT# 2,a$:ON-(s=.)GOTO {:4026}:PRINT# 2,"{up arrow}":CLOSE 3 20 | PRINT# 15,"s"+dr$+MID$(tt$(k),11) 21 | {:4030} 22 | NEXT k 23 | {:4032} 24 | &" Done!{f6:2}" 25 | {:4033} 26 | NEXT i:CLOSE 2:CLOSE 3:CLOSE 15:RETURN 27 | REM 04/06/95 28 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_scan netlog.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | {:4000} 5 | GOSUB {:4016}:GOSUB {:4002}:&"{f6}{rvrs on} Scan Another? {rvrs off}":GOSUB 1907:ON a GOTO {:4000}:RETURN 6 | {:4002} 7 | dr=2:a$="nm.log "+an$+",s,r":GOSUB 1011:a%=.:sh=.:IF e%THEN{:4014} 8 | {:4004} 9 | a%=a%+1:INPUT# 2,a$,b$:&"{f6}{white}#{pound}%a:{rvrs on}{yellow} {pound}$a {rvrs off}{f6} {green}{$04}"+RIGHT$(b$,11) 10 | IF LEN(b$)>11 THEN:&"{f6} To {green}{$04}"+LEFT$(b$,11) 11 | &"{f6}{white}Files Transferred:":&,3,2:IF st=.AND sh=.THEN{:4004} 12 | CLOSE 2 13 | {:4012} 14 | CLOSE 2:RETURN 15 | {:4014} 16 | &"{f6:2}{white}No Log Found":GOTO {:4012} 17 | {:4016} 18 | &"{clear}{f6}{green}Scan which log?{f6}{white}(Enter ? for list){f6}nm.log {pound}i0":ON-(an$="{f2}")GOTO {:4020} 19 | RETURN 20 | {:4020} 21 | dr=2:GOSUB 1009:CLOSE 1:OPEN 1,dv%,0,"$"+dr$+"nm.log*":&"{f6}{white}":&,8,1:CLOSE 1 22 | &"{pound}{back arrow}10{f6}{rvrs on}Any Key{rvrs off}{pound}g1":GOTO {:4016} 23 | REM "+/SM.scan netlog" sysop menu 180228 x-tec 24 | 25 | -------------------------------------------------------------------------------- /v2/core/plusslashlo_off.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {crunch:on} 3 | {step:2} 4 | rem +/lo.off - logoff 5 | gosub 1060:for x=1 to 11:gosub 1026:next:close 2 6 | {number:4008} 7 | gosub {:4034}:a=st(4):if a then b$="{white}"+str$(a)+" {lt. blue}Post":if a<>1 then b$=b$+"s" 8 | a=st(5):if a then c$="{white}"+str$(a)+" {lt. blue}Response":if a<>1 then c$=c$+"s" 9 | gosub {:4034}:a$=d$ 10 | a=st(3):if a then b$="{white}"+str$(a)+" {lt. blue}Mail" 11 | a=st(1):if a then c$="{white}"+str$(a)+" {lt. blue}Feedback" 12 | gosub {:4034} 13 | a$=a$+d$+" {lt. blue}Logoff {white}{$04}"+d1$+r$ 14 | a$=a$+" {pound}q0{pound}o{$c0}{pound}o{$c0}":gosub 1095 15 | x=2:gosub 1530:gosub 1070:close 2 16 | d3$=na$ 17 | gosub 1063:x=1:gosub 1001:print# 2,ca+1:x=17:gosub 1001:print# 2,d3$ 18 | x=19:gosub 1001:print# 2,d1$:close 2 19 | return 20 | {:4034} 21 | d$=b$+"{blue}, "+c$+r$:if b$=""and c$=""then d$="":goto {:4040} 22 | if b$=""then d$=c$+r$:goto {:4040} 23 | d$=b$+r$ 24 | {:4040} 25 | b$="":c$="":tr%=.:return 26 | rem modified line 4040 171215 x-tec 27 | -------------------------------------------------------------------------------- /v2/tests/plus_test visual ed.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {step:2} 3 | {alpha:invert} 4 | REM +.TEST VISUAL ED -- PINACOLADA 27/NOV/2017 15:44 5 | ' set up "area" window: 6 | ' uppercase chars must be from $61-$7a range to properly display in screen mask 7 | &,18,1:cm$="{$76}isual {$65}ditor {$74}est":gosub 1360 8 | &"{pound}q0{f6}{pound}r1Ctrl-V{pound}r0 outputs lines typed so far" 9 | &"{f6}{pound}r1Ctrl-X{pound}r0 exits" 10 | &"{f6}Press any key to begin: {pound}g1{pound}f1":&,18,0 11 | ' show "s.visual": 12 | a$="visual":gosub 1350 13 | ' load "++ visual": 14 | a$="visual":gosub 1750:if e% then:&:goto {:finish} 15 | ' start visual editor: 16 | &,16 17 | ' show editor lines (kk does not track # of lines in editor): 18 | ' visual.s: lines = $03fe (perhaps # of lines in editor?) 19 | kk=peek($03fe):if kk then:&str$(kk)+" lines entered.{f6}" 20 | if kk then for x=1 to kk:&"{pound}#3{pound}!x: "+tt$(x)+"{f6}":next 21 | {:finish} 22 | ' restore screen mask 23 | &,18,1:goto 1811 24 | REM +.TEST VISUAL ED -- PINACOLADA 27/NOV/2017 15:44 25 | 26 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win2.txt: -------------------------------------------------------------------------------- 1 | With the need for good horses, and also having heard of wild horses, in 2 | the mountains, you set out with some of your Nobles to try to find them. 3 | 4 | Questioning the people you meet you discover that the horses have been 5 | seen near a haunted cave. Not believing in ghosts, you head for the location. 6 | 7 | Finally, you find the cave, seeing one of the horses entering it. Quietly 8 | you and your men approach the cave. You are within a hundred yards when you 9 | hear some spooky sounds coming from it. 10 | 11 | Determined to discover the secret of the sounds, you advance toward the 12 | cave. Upon reaching the cave's entrance, you see daylight quite far back. 13 | Boldly entering, you discover a tunnel through a mountain. The tunnel 14 | distorted the sounds you heard, producing the "ghostly" manifestations! 15 | 16 | There is a hidden valley on the other end of the tunnel. In the valley 17 | you find a herd of horses. 18 | 19 | You gain 30 horses! 20 | \g1 21 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win8.txt: -------------------------------------------------------------------------------- 1 | You have long heard the story, of a ship at the base of a mountain. 2 | Knowing that no one would build a ship so far from the ocean, you have 3 | dismissed the tale as serfs' superstition. 4 | 5 | Then, one day, you came across an ancient manuscript. It told of a great 6 | tidal wave which hit the land long ago, carrying houses for miles inland. You 7 | wonder if a ship could have been carried as far as the mountains. With your 8 | curiosity aroused, you set off with some of your Nobles in search of the ship. 9 | 10 | After many weeks of searching, you are about to give up when one of 11 | your men gives a shout! You look up, and see he is pointing at something. 12 | 13 | Climbing to the top of a small hill, you look in the direction he is 14 | pointing. There, before your eyes, is the rotting remains of a small ship. 15 | Upon closer examination, you find some cannon, which may be useful, otherwise, 16 | the ship is a total loss. 17 | 18 | You gain 6 cannons! 19 | 20 | \g1 21 | -------------------------------------------------------------------------------- /v2/core/plusslashlo-news.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+/lo-news" - news module 11-26-94 5 | cm$="News":GOSUB 1360:kk=.:b=.:t=.:dr=4:a$="d.n.Main,s,r":GOSUB 1011 6 | ON SGN(e%)GOTO {:4026}:INPUT# 2,b:IF b<1 THEN{:4026} 7 | t=.:FOR x=1 TO b:INPUT# 2,ed$(x),nn$(x),d%(x):d%(x)=d%(x)*-((d%(x)AND 2^ac%)<>.) 8 | IF d%(x)THEN t=t+1:ed$(t)=ed$(x):nn$(t)=nn$(x):c%(t)=d%(x) 9 | NEXT:CLOSE 2:IF t=.THEN{:4026} 10 | FOR i=1 TO t:sh=.:c$="New News":f2=-(MID$(nn$(i),2)1) 11 | IF f2 THEN c$="Reminder":IF LEFT$(ed$(i),1)<>"$"THEN{:4024} 12 | b$=ed$(i):IF LEFT$(b$,1)="$"THEN b$=MID$(b$,2) 13 | &"{f6} {lt. blue}{pound}$c:{white} {pound}$b{pound}{back arrow}39 {cyan}Date: ({gray3}{$04}"+nn$(i):&"{cyan}){f6}{blue}{pound}vj{pound}q0{f6:2}":kk=1:dr=1:b$=a$ 14 | a$="n."+LEFT$(ed$(i),14)+",s,r":GOSUB 1011:ON-(e%<>.)GOTO {:4022}:&,3-9*(f2=.),2 15 | {:4022} 16 | CLOSE 2:GOSUB 1914:IF tr%<1 THEN i=t 17 | {:4024} 18 | NEXT:RETURN 19 | {:4026} 20 | CLOSE 2:IF kk=.THEN:&"{f6}No New News.{f6}" 21 | RETURN 22 | copr 1994 NEW image 23 | -------------------------------------------------------------------------------- /v2/core/jack/sub_protos.lbl: -------------------------------------------------------------------------------- 1 | GOSUB{:60035}:IF E%=0 THEN ON IM GOTO{:60010},{:60015} 2 | {:60005} 3 | RETURN 4 | {:60010} 5 | ON A%GOTO{:60005}:GOSUB{:60055}:GOTO{:60020} 6 | {:60015} 7 | A=UL+1:IF A%AND B%THEN A=X 8 | {:60020} 9 | IF A=0 THEN RETURN 10 | A$=TT$(A):F=VAL(MID$(A$,7,1)):NB=VAL(MID$(A$,8,1)):D4$=MID$(A$,10):PR=-1 11 | A$=LEFT$(A$,6):PM$=A$:GOSUB 28:&,16,4,F:RETURN 12 | {:60035} 13 | &,11:DR=1:A$="S.M.PROTOS,S,R":GOSUB 4:X=0:IF E%THEN:&:RETURN 14 | {:60040} 15 | &,2,2:IF A$<>"{up arrow}"AND X<20 THEN X=X+1:TT$(X)=A$:IF ST=0 THEN{:60040} 16 | CLOSE 2:&,52,4,3:B%=0:IF ZZ=1 OR A%=1 THEN X=X+1:TT$(X)="COPIER00 COPIER":B%=1 17 | RETURN 18 | {:60055} 19 | A=VAL(MID$(AN$,3,3)):IF A>0 THEN{:60070} 20 | {:60060} 21 | &"{f6}AVAILABLE PROTOCOLS:{f6:2}":FOR I=1 TO X:A%=I:A$=MID$(TT$(I),10) 22 | LP=1:&"{pound}%A) {pound}$A{pound}{back arrow}39 ":NEXT:&"{f6:2}--> {pound}G1":A=VAL(AN$) 23 | {:60070} 24 | IF A>0 AND A<=X THEN LP=1:&MID$(TT$(A),10):IF A0):RETURN 27 | -------------------------------------------------------------------------------- /v2/core/plus_MX.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | {:3000} 5 | POKE 53252,62:dr=3:a$="e.macs":GOSUB 1011:IF e%=.THEN{:3006} 6 | &"{f6}{cyan}Please Wait, Setting files...{f6}":dr=3:a$="e.macs,l,"+CHR$(64):GOSUB 1011 7 | x=ur*4:GOSUB 1001:PRINT# 2,"{up arrow}":CLOSE 2:GOTO {:3000} 8 | {:3006} 9 | x=id*4-4:FOR a=.TO 3:x=x+1:GOSUB 1001:&,2,2:ON-(a$="{up arrow}")GOSUB {:3008}:tt$(a+1)=a$:NEXT:GOTO {:3010} 10 | {:3008} 11 | a$="Use 'MX' Command To Configure":RETURN 12 | {:3010} 13 | &"{f6} {rvrs on}{cyan} System Macro Editor {f6:3}" 14 | FOR a=1 TO 4:a%=a:an$=tt$(a):&"{white}{pound}%a> {lt. blue}{pound}v7{f6}":NEXT 15 | &"{f6}{lt. blue}Edit Which:{white} {pound}i1":ON-(tr%<1)GOTO {:3022}:a=VAL(an$):IF a<1 OR a>4 THEN{:3020} 16 | w$=tt$(a):a%=a:&"{lt. blue}Return Alone = Old{f6:3}":p$="{lt. blue}Edit {pound}#0{pound}%a{white}":&,1,32:IF an$=""THEN{:3010} 17 | ON-(tr%<1)GOTO {:3022}:tt$(a)=an$:GOTO {:3010} 18 | {:3020} 19 | x=id*4-4:FOR a=.TO 3:x=x+1:GOSUB 1001:PRINT# 2,tt$(a+1):NEXT 20 | {:3022} 21 | CLOSE 2:RETURN 22 | rem "+.MX" copr. 1994 NEW image 9/13/94 23 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo!telecheck.lbl: -------------------------------------------------------------------------------- 1 | REM"I/LO!TELECHECK - RASK V2.0 - DATE STAMP: 05 JAN 95 10:22PM 2 | REM 3 | B$="TELECHECK":GOSUB 37:GOSUB{:4522} 4 | PRINT# 2,"{up arrow}":CLOSE 2 5 | KK=.:A$="S.TCHKMAIL,S,R":DR=1:GOSUB 4:IF E%THEN CLOSE 2:RETURN 6 | {:4510} 7 | KK=KK+1:&,2,2:S=(64 AND ST):TT$(KK)=A$:IF S=. then {:4510} 8 | CLOSE 2:TT$=NA$:A$="A":GOSUB 32:IF E%THEN A$="W":GOSUB 32 9 | A$="[LOGIN VERIFICATION ERROR]":A=.:PRINT# 2,"AUTO-MESSAGE"R$0;R$D1$R$A$R$ 10 | GOSUB{:4522}:PRINT# 2,"{lt. blue}{pound}VJ{pound}Q0":FOR X=1 TO KK:PRINT# 2,TT$(X):NEXT:PRINT# 2,"{up arrow}":CLOSE 2 11 | CLOSE 15:GOSUB 30:I=1:X=14:GOSUB 16:X=25:GOSUB 16:X=32:GOSUB 16 12 | IF ID=1 THEN X=2:GOSUB 16:X=13:GOSUB 16:X=24:GOSUB 16:X=31:GOSUB 16 13 | RETURN 14 | {:4522} 15 | TT$=PW$:IF ID=1 THEN PW$="PRIVATE" 16 | PRINT# 2,"{lt. green}FAILED SECURITY CHECK. (ATTEMPT"STR$(K+1)")"R$ 17 | IF Z$<>TT$THEN PRINT# 2,"{lt. green}PASSWORD:{yellow}"PW$" {cyan}({f5}"Z$"{f5} WAS ENTERED)"R$ 18 | IF C$<>T$THEN PRINT# 2,P$:PRINT# 2,"{lt. green}"T$" {cyan}({f5}"AN$"{f5} WAS ENTERED)"R$ 19 | RETURN 20 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_bu.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | GOSUB {:4006} 5 | RETURN 6 | REM lt.k backups 180119 7 | {:4006} 8 | &"{f6:2}{white}Performing Backups{f6:2}" 9 | RESTORE:READ dv%,dr$ 10 | {:4010} 11 | READ b$:IF b$="-1"THEN{:4022} 12 | CLOSE 15:OPEN 15,dv%,15,b$:GOSUB 1012:IF e%THEN CLOSE 15:&:GOTO {:4010} 13 | d$=dr$+":"+MID$(b$,3)+LEFT$(d1$,1) 14 | PRINT# 15,"s"d$:&"{f6}{lt. red}Scratch{white}: "+d$:&"{f6}{lt. green}Copying{white}: "+b$+" {lt. green}To {white}"+d$ 15 | PRINT# 15,"c"+d$+"="+b$ 16 | GOTO {:4010} 17 | {:4022} 18 | &"{f6:2}{white}Done!{f6:2}":RETURN 19 | DATA8,"6" 20 | DATA"0:u.config" 21 | DATA"0:e.data" 22 | DATA"0:e.stats" 23 | DATA"0:e.cr.pool1" 24 | DATA"0:e.daily stats" 25 | DATA"0:u.index" 26 | DATA"0:u.weedinfo" 27 | DATA"0:e.nark" 28 | DATA"0:e.top ten" 29 | DATA"0:e.log1" 30 | DATA"0:e.log2" 31 | DATA"0:e.log3" 32 | DATA"0:e.log4" 33 | DATA"0:e.log5" 34 | DATA"0:e.log6" 35 | DATA"0:e.log7" 36 | DATA"-1" 37 | REM"Backups for Lazy Sysops by X-Tec v2.0 180109 38 | REM "+/SM.bu": sysop menu 180210 x-tec 39 | 40 | -------------------------------------------------------------------------------- /v1.2/games/empire6/build-disk.bat: -------------------------------------------------------------------------------- 1 | echo off 2 | rem import-files.bat 3 | rem pinacolada did this 4 | rem it's supposed to import a list of files from "file-list.txt", 5 | rem invoke c1541.exe to copy them with the correct name supplied on 6 | rem the next line 7 | 8 | rem 3/Oct/2014 18:09 9 | rem just picked gene's pumpkin 10 | 11 | set utils_path=c:\opt 12 | 13 | if exist %utils_path%\c1541.exe goto :ok 14 | echo %utils_path%\c1541.exe not found. 15 | goto :quit 16 | 17 | :ok 18 | if exist file-list.txt goto :new_disk 19 | echo file-list.txt not found. 20 | goto :quit 21 | 22 | :new_disk 23 | REM c1541.exe format "-empire 6 alpha-,--" d64 test,d64 24 | 25 | REM for /F %%a in (file-list.txt) do @echo %%a ; @echo --- 26 | 27 | REM FOR /F "tokens=* usebackq" %i IN (`type "C:\path\to\titles.txt"`) DO COPY "C:\Temp\OriginalFilename.mp4" "C:\Temp\%i.mp4" 28 | 29 | REM To parse a file, ignoring commented lines, type: 30 | REM 31 | REM for /F "eol=; tokens=2,3* delims=," %i in (myfile.txt) do @echo %i %j %k 32 | 33 | for /F "eol=; tokens=1,2 delims=, %i in (file-list.txt) do @echo %%i, %%j, %%k 34 | 35 | :quit 36 | REM Bye. 37 | -------------------------------------------------------------------------------- /v2/core/im_comm2.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | {step:2} 3 | {alpha:alt} 4 | {crunch:on} 5 | on im goto {:60002}:return 6 | {:60002} 7 | &,18,0:gosub 1914:if peek(1063)<>250 then print# 131,"ate1v1m1" 8 | {:60004} 9 | &,52,16,3:a$="C/G":if a%then a$="ASC{$c9:2}" 10 | a%=qb:&"{f6:2}{white}Image Mini-Term, {white}{pound}%a {lt. blue}BPS, {white}{pound}$a {lt. blue}Mode{f6}" 11 | &"{white}B{lt. blue}aud{blue}, {white}T{lt. blue}erm{blue}, {white}M{lt. blue}ode{blue}, {white}Q{lt. blue}uit{blue}: {white}" 12 | {:60010} 13 | &"{pound}g1":if tr%<1 or an$="Q"then:&"Quit{f6:2}":a$="e0v0":goto {:60026} 14 | if an$="T"then:&"Term{f6:2}(Press {f5}C= CTRL{f5} to Exit){f6:2}":&,10:goto {:60004} 15 | if an$="M"then:&"Mode{f6}":&,52,16,2:goto {:60004} 16 | if an$="B"then:&"Baud{f6}":gosub {:60020}:goto {:60004} 17 | goto {:60010} 18 | {:60020} 19 | lp=1:&"1-300 2-600 3-1200 4-2400 5-4800 6-9600 7-19200 8-38400: " 20 | &"{pound}g1":a=val(an$)-1:if a<0 or a>7 then return 21 | qb=300*2^a:&,41,a:a=qb:&"{pound}v7-{pound}!a{f6}" 22 | {:60026} 23 | if peek(1063)<>250 then print# 131,"at" 24 | return 25 | rem im.comm2 26 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo-bonus.lbl: -------------------------------------------------------------------------------- 1 | REM ADD BONUS 2 | A=.:IF TC%/10=INT(TC%/10)AND TC%>1 THEN A=1 3 | IF CA/100=INT(CA/100)AND CA>1 THEN A=A OR 2 4 | IF CA/1000=INT(CA/1000)AND CA>1 THEN A=A OR 4 5 | ON A GOTO{:4510},{:4514},{:4518},{:4530},{:4532}:RETURN 6 | {:4510} 7 | C%=50:REM TC% /10 8 | {:4512} 9 | A%=TC%:&"{f6:2}{green}THIS IS YOUR {pound}#0{pound}%ATH CALL!":GOTO{:4524} 10 | {:4514} 11 | C%=100:REM CA /100 12 | A=CA:&"{f6:2}{green}YOU ARE THE {pound}!ATH CALLER TO THE SYSTEM!":GOTO{:4524} 13 | {:4518} 14 | C%=200:REM TC%/100 & CA/100 15 | {:4520} 16 | A=CA:A%=TC%:&"{f6:2}{$0f}{green}{rvrs on}YOU HIT THE JACKPOT!{f6:2}{lt. red}YOUR {pound}#0{pound}%ATH CALL IS ALSO" 17 | &" THE {pound}$ATH CALL TO THE SYSTEM!" 18 | {:4524} 19 | CR=CR+C%:A=CR:&"{f6:2}{gray3}YOU WIN {white}{pound}#0{pound}%C {gray3}CREDITS!{f6:2}" 20 | &"{lt. green}YOU NOW HAVE{lt. red} {pound}!A {lt. green}CREDITS TOTAL!{f6:2}" 21 | A$=" {yellow}CREDIT WINNER:{white}"+STR$(C%)+"{yellow} CREDITS":GOTO 50 22 | {:4530} 23 | C%=250:GOTO{:4512}:REM CA/1000 24 | {:4532} 25 | C%=500:GOTO{:4520}:REM TC%/10 & CA/1000 26 | COPR. 1994 NEW IMAGE 9/18/94 27 | -------------------------------------------------------------------------------- /tests/test-translate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash 4 | 5 | # echo "$? params" 6 | # echo "$argv value" 7 | 8 | # http://tldp.org/LDP/abs/html/string-manipulation.html 9 | # (Substring Replacement) 10 | use_slashes=1 11 | 12 | function translate_filename() 13 | { 14 | stringZ="$1" 15 | # // delimiter replaces globally; / replaces first occurrence 16 | echo "Input : $stringZ" 17 | test=${stringZ//plus/+} # plus to + 18 | echo "Step 1: $test" 19 | if [ "$use_slashes" == "1" ]; then 20 | test=${test//slash/\/} # slash to / -- escape /! 21 | else 22 | test=${test//slash/-} # slash to - 23 | fi; 24 | echo "Step 2: $test" 25 | test=${test//_/.} # _ to . 26 | echo "Step 3: $test" 27 | } 28 | 29 | translate_filename "plusplus 2.prg" # "++ 2.prg" 30 | PRG_FILE=$test 31 | 32 | translate_filename "plusslashMM_load.lbl" # "+/MM.load.lbl" 33 | LBL_FILE=$test 34 | 35 | echo "PRG_FILE=$PRG_FILE" 36 | echo "LBL_FILE=$LBL_FILE" 37 | 38 | echo "Setting 'use_slashes' to 0." 39 | use_slashes=0 40 | translate_filename "slashslashslash_" # "---." 41 | FILE=$test; echo $FILE 42 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win7.txt: -------------------------------------------------------------------------------- 1 | The mystical bird city.... is it a child's tale or does it really exist? 2 | You finally decide to search for it in the small hope that it does exist. 3 | 4 | You and your men journey through the Endless Forest, a great sprawling 5 | wood that lies to the west. The city is rumored to lie in that general 6 | direction. 7 | 8 | It takes you days to penetrate the dense foliage, but, eventually, you 9 | arrive in the heart of the forest.... The sight that greets you defies all 10 | description. 11 | 12 | Towers soar high above the ground and beautiful winding airways glisten in 13 | the sun... You are ushered immediately into the presence of the High King of 14 | the Bird-Men: Lazarus! 15 | 16 | He stares at you compassionately. "So, you are the sad creatures with no 17 | wings... What a sad life you must live, unable to soar the skies, to feel the 18 | wind at your back and the sun on your shoulders... I would learn more of your 19 | world... Take four of my Captains... May they serve you well! Goodbye, 20 | Wingless Ones!" 21 | 22 | You gain 4 Nobles! 23 | 24 | \g1 25 | -------------------------------------------------------------------------------- /v2/asm/tests/dumpm.asm: -------------------------------------------------------------------------------- 1 | orig $c000 2 | 3 | usetbl1 = $cd03 4 | chrout = $ffd2 5 | clrchn = $ffcc 6 | chkout = $ffc9 7 | var = $61 8 | 9 | {undef:standalone} 10 | {ifdef:standalone} 11 | save_x: 12 | .byte $00 13 | save_y: 14 | .byte $00 15 | {endif} 16 | 17 | dump: 18 | ; for standalone code only - I don't think "&,16,x,y" 19 | ; needs this temporary storage stuff 20 | 21 | {ifdef:standalone} 22 | ldx save_x 23 | ldy save_y 24 | {endif} 25 | stx dump3+1 ; output device # 26 | sty dump7+1 ; # of arrays to output 27 | lda #1 28 | sta dump1+1 29 | lda #0 30 | sta dump2+1 31 | jsr chkout 32 | dump1: 33 | lda #1 34 | pha 35 | tax 36 | jsr getarr 37 | inc dump1+1 38 | dump2: 39 | lda #0 40 | sec 41 | adc var 42 | cmp #79 43 | bcc dump4 44 | jsr clrchn 45 | lda #0 46 | sta dump2+1 47 | dump3: 48 | ldx #2 49 | jsr chkout 50 | dump4: 51 | ldy #0 52 | dump5: 53 | cpy var 54 | beq dump6 55 | lda (var+1),y 56 | jsr chrout 57 | inc dump2+1 58 | iny 59 | bne dump5 60 | dump6: 61 | lda #13 62 | jsr chrout 63 | inc dump2+1 64 | pla 65 | dump7: 66 | cmp #100 67 | bcc dump1 68 | jmp clrchn 69 | 70 | getarr: 71 | lda #33 ; &,33: getarr 72 | jmp usetbl1 73 | -------------------------------------------------------------------------------- /v2/core/jack/sub_sysdos.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | {step:2} 3 | ' want to be able to input just "DC/DR" and be prompted "Device, Drive" 4 | ' or input "DR5" and skip the prompt 5 | ' 350: check DC/DR device[,drive] params, a=1: device not present 6 | ' 349: ask for device/drive if not specified 7 | gosub 350:if a=. then gosub 349:goto 60000 8 | if a then:&"Device not present!{f6}":return 9 | {:60004} 10 | poke 53252,58:on im gosub {:disk_command},{:get_directory}:poke 53252,ll%:return 11 | {:disk_command} 12 | &"{f6}Disk Command: {pound}i0":&,15,2 13 | z$=an$:if z$="" or z$="@" then gosub 3:gosub 5:&:return 14 | b$=left$(z$,1):if b$="n" or b$="s" then gosub 93:if a=. then return 15 | gosub 3:print# 15,z$:gosub 5:&:return 16 | {nice:100} 17 | {:get_directory} 18 | t%=.:b%=.:&"{f6}Pattern (*): {pound}i0":if an$="" then an$="*" 19 | &,15,2:close 1:open 1,dv%,.,"$"+dr$+an$:&,8,1,1:&:&"{f6}" 20 | ' TODO: check st instead? 21 | {:get_directory_2} 22 | &,8,1,1:if mid$(a$,7,6)<>"blocks" then b%=b%+val(a$):t%=t%+1:&:goto {:get_directory_2} 23 | close 1:&"{pound}# {pound}#5%b blocks.{f6}{pound}#5{pound}%t files.{f6}":return 24 | rem sub.sysdos 1/14/2020 pinacolada 25 | -------------------------------------------------------------------------------- /v2/core/jack/i.make index.lbl: -------------------------------------------------------------------------------- 1 | &,28,1:DIM A$(UR):&"{f6}READING":GOSUB{:1065}:S$=" " 2 | FOR X=1 TO UR:GOSUB{:1001}:&,2,2 3 | IF A$<>"{up arrow}"AND A$<>"RES"THEN N=N+1:A$(N)=LEFT$(A$+S$,20)+MID$(STR$(X),2):&"." 4 | NEXT:DIM A%(N):&"{f6}SORTING":&,60,7,0,A$(1),N:&"{f6}WRITING":DR=6:GOSUB{:1010} 5 | A%(0)=N:FOR I=1 TO N:A%(I)=VAL(MID$(A$(I),21)):A$(I)="":NEXT:A$=DR$+"U.INDEX" 6 | PRINT# 15,"S"A$:&,60,3,0,A%(0),N*2+2,A$,DV%:&"{f6}DONE{f6}" 7 | A=0:GOTO{:2004} 8 | {:1001} 9 | REM GOSUB1002:&,22,1 10 | PRINT# 15,"P{$02}"CHR$(X AND 255)CHR$(X/256)"{$01}":RETURN 11 | {:1009} 12 | DV%(.)=D1%:DR%(.)=D2%:DV%=DV%(DR):DR$=MID$(STR$(DR%(DR)),2)+":":RETURN 13 | {:1010} 14 | CLOSE 15:GOSUB{:1009}:OPEN 15,DV%,15:RETURN 15 | {:1011} 16 | CLOSE 2:GOSUB{:1010}:OPEN 2,DV%,2,DR$+A$ 17 | INPUT# 15,E%,E$,T%,S%:A$="{f6}STATUS:{pound}#2{pound}%E:{pound}$E:{pound}%T:{pound}%S{f6}":RETURN 18 | {:1065} 19 | DR=6:A$="U.CONFIG":GOTO{:1011} 20 | POKE 22,25:FOR I=2 TO PEEK(152):CLOSE PEEK(603):NEXT 21 | X=PEEK(780):Y=PEEK(781)+PEEK(782)*256:POKE 53248,0:A=2 22 | {:2004} 23 | &,28,1 24 | DR$=MID$(STR$(DR%(5)),2)+":":DV%=DV%(5):PR$="IM":A$=DR$+PR$:LOAD A$,DV%,A 25 | -------------------------------------------------------------------------------- /v2/core/plus_unv_sig.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{clear}{f6:2}{rvrs on}{white} Unvalidated File Finder{f6} (SIG Version){f6:2}" 5 | dr=3:a$="e.U/D":GOSUB 1011:INPUT# 2,bz 6 | y=.:FOR i=1 TO bz:x=i+1:GOSUB 1001:INPUT# 2,a$,a$,nn$(i):NEXT:CLOSE 2 7 | a%=bz:&" {pound}%a UDs{f6}" 8 | &"Start UD:{pound}i1":a=VAL(an$):IF an$=""THEN 1812 9 | &"End UD:{pound}i1":b=VAL(an$):IF an$=""THEN 1812 10 | dr=1:GOSUB 1010:PRINT# 15,"s"dr$"s.unv":dr=4:GOSUB 1010 11 | dr=1:GOSUB 1009:OPEN 3,dv%,3,dr$+"s.unv,s,w":dr=4:GOSUB 1009 12 | FOR i=a TO b:g=.:OPEN 2,dv%,2,dr$+"d.u/d"+STR$(i)+",s,r":GOSUB 1012:IF e%THEN{:3030} 13 | a%=i:a$=nn$(i):&"{f6}{pound}#2{pound}# {pound}%a {pound}$a":INPUT# 2,rn:IF rn=.THEN{:3030} 14 | FOR j=1 TO rn:INPUT# 2,a$,a$,b$,a$,a$,a$:f=(VAL(a$)=.) 15 | b$=MID$(b$,23) 16 | IF f<>.AND g=.THEN g=1:PRINT# 3,nn$(i) 17 | IF f THEN y=y+1:PRINT# 3," "CHR$(34)b$CHR$(34):&"." 18 | NEXT 19 | {:3030} 20 | CLOSE 2:NEXT:CLOSE 3:a%=y:&"{f6:2}{pound}%a Unvalidated Files.{f6}":IF y=.THEN 1811 21 | &"Read List?":GOSUB 1902:IF a=0 THEN 1811 22 | a$="s.unv":dr=1:GOSUB 1075 23 | &"Press a key:{pound}g1":GOTO 1811 24 | REM +.unv.sig 25 | 26 | -------------------------------------------------------------------------------- /v2/core/plus- lo-bonus.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem +.lo.bonus - add bonus credits 3 | a=.:if tc%/10=int(tc%/10)and tc%>1 then a=1 4 | if ca/100=int(ca/100)and ca>1 then a=a or 2 5 | if ca/1000=int(ca/1000)and ca>1 then a=a or 4 6 | on a goto {:4010},{:4014},{:4018},{:4030},{:4032}:return 7 | {:4010} 8 | c%=50:rem tc% /10 9 | {:4012} 10 | a%=tc%:&"{f6:2}{green}This is Your {pound}#0{pound}%ath Call!":goto {:4024} 11 | {:4014} 12 | c%=100:rem ca /100 13 | a=ca:&"{f6:2}{green}You are the {pound}!ath Caller to the System!":goto {:4024} 14 | {:4018} 15 | c%=200:rem tc%/100 & ca/100 16 | {:4020} 17 | a=ca:a%=tc%:&"{f6:2}{$0f}{green}{rvrs on}YOU HIT THE JACKPOT!{f6:2}{lt. red}Your {pound}#0{pound}%ath Call is also" 18 | &" the {pound}$ath Call to the System!" 19 | {:4024} 20 | cr=cr+c%:a=cr:&"{f6:2}{gray3}You Win {white}{pound}#0{pound}%c {gray3}Credits!{f6:2}" 21 | &"{lt. green}You Now Have{lt. red} {pound}!a {lt. green}Credits Total!{f6:2}" 22 | a$=" {yellow}Credit Winner:{white}"+str$(c%)+"{yellow} Credits":goto 1095 23 | {:4030} 24 | c%=250:goto {:4012}:rem ca/1000 25 | {:4032} 26 | c%=500:goto {:4020}:rem tc%/10 & ca/1000 27 | copr. 1994 new image 9/18/94 28 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo-BA.graph.1.lbl: -------------------------------------------------------------------------------- 1 | REM BAR GRAPH 2 | A=LL%/2-19:L$="":IF A>0 THEN L$=LEFT$(" ",A-1) 3 | H$="{$a2:30}" 4 | I$=" ":J$="{$bb}" 5 | &"{f6:2}{pound}$L {white}{rvrs on} TODAY'S BOARD ACTIVITY {f6:2}":SH=.:RC=. 6 | &"{pound}$L 1 1 1 1 1 2 2 2 2 2 3{f6}" 7 | &"{pound}$L 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0{f6}" 8 | &"{pound}$L 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0{f6}" 9 | &"{pound}$L {lt. blue}{$b0}{pound}O{$b2:12}{$ae}{f6}":FOR I=1 TO 9:D$=MID$("{cyan}{purple}{cyan}{purple}{cyan}{purple}{cyan}{purple}{cyan}",I,1) 10 | C$=MID$("FBACKSMAILMAIL POSTSRESPSUPLDSDNLDSNEW CALLS",I*5-4,5) 11 | X=INT(ST(I+11)/5+.5):B=INT(X/2+.5):IF B>28 THEN B=28 12 | A$="":C=B+1:IF X>1 AND(X AND 1)THEN A$=J$:C=B+2 13 | A$=LEFT$(H$,B)+A$+MID$(I$,C) 14 | &"{lt. blue}{pound}$L {pound}$C {$dd}{pound}$D{pound}$A{lt. blue}{$dd}{f6}":I=I-9*(SH<>.OR RC<>.):NEXT 15 | &"{pound}$L {lt. blue}{$ad}{pound}O{$b1:12}{$bd}{f6:2}" 16 | B%=ST(21):C%=ST(22):A=B%+C%:IF A THEN B%=INT(B%/A*100+.5):C%=100-B% 17 | &"{white}{pound}$L USED TIME:{pound}#3{pound}# {pound}%B% IDLE TIME:{pound}#3{pound}# {pound}%C%{f6}{lt. blue}":RETURN 18 | REM 19 | -------------------------------------------------------------------------------- /v2/core/plus_get.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | ' a module for downloading source code files? 5 | ' can be excluded from disk build 6 | restore:gosub 1667:d1%=8:d2%=5:gosub {:3002}:goto 1812 7 | {:3002} 8 | read f$:if f$=""then return 9 | t$="s":&"{pound}$f,{pound}$t: [Y/N/Q] {pound}g1":if an$="Q"then:&"Quit{f6}":return 10 | if an$<>"Y"then:&"No{f6}":goto {:3002} 11 | &"Yes{f6}":poke 2043,1-(t$="s"):an$=f$:a$=f$+","+t$+",r":dr=0:gosub 1011 12 | x=1:an$=f$+","+t$:gosub 2103:&,16,0:close 2 13 | if rc=.then:&"{f6} Aborted!{f6}" 14 | &,22,10:goto {:3002} 15 | data"xmodem.lst" 16 | data"copier.lst","editor.lst","indexr.lst","chksum.lst","kwload.lst" 17 | data"serial.lst","remote.lst","random.lst","b1.rs232.lst","visual.lst" 18 | data"punter.lst","++pilot.lst","struct.lst" 19 | data"intout.lst","bigbang.lst","t1.rs232.lst","rs232-1.2.lst" 20 | data"chksum+.lst","tagscan.lst","rspatch.lst","punter2.lst","wxmodem.lst" 21 | data"convert.lst","chatmode.lst","ibasmath.lst","editor.ld.lst" 22 | data"cursmenu.lst","rs232-1.2sl.lst","xmodemcrc.lst","rs232-user.lst" 23 | data"copyright.lst" 24 | data"ml-patcher.lst","loadeditor.lst","rs232-swift.lst" 25 | data"" 26 | rem +.get 27 | 28 | -------------------------------------------------------------------------------- /v2/core/plusslashlo-bonus.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM +/lo-bonus - add bonus credits 5 | a=.:IF tc%/10=INT(tc%/10)AND tc%>1 THEN a=1 6 | IF ca/100=INT(ca/100)AND ca>1 THEN a=a OR 2 7 | IF ca/1000=INT(ca/1000)AND ca>1 THEN a=a OR 4 8 | ON a GOTO {:4010},{:4014},{:4018},{:4030},{:4032}:RETURN 9 | {:4010} 10 | c%=50:REM tc% /10 11 | {:4012} 12 | a%=tc%:&"{f6:2}{green}This is Your {pound}#0{pound}%ath Call!":GOTO {:4024} 13 | {:4014} 14 | c%=100:REM ca /100 15 | a=ca:&"{f6:2}{green}You are the {pound}!ath Caller to the System!":GOTO {:4024} 16 | {:4018} 17 | c%=200:REM tc%/100 & ca/100 18 | {:4020} 19 | a=ca:a%=tc%:&"{f6:2}{$0f}{green}{rvrs on}YOU HIT{$a0}THE{$a0}JACKPOT!{f6:2}{lt. red}Your {pound}#0{pound}%ath Call is also" 20 | &" the {pound}$ath Call to the System!" 21 | {:4024} 22 | cr=cr+c%:a=cr:&"{f6:2}{gray3}You Win {white}{pound}#0{pound}%c {gray3}Credits!{f6:2}" 23 | &"{lt. green}You Now Have{lt. red} {pound}!a {lt. green}Credits Total!{f6:2}" 24 | a$=" {yellow}Credit Winner:{white}"+STR$(c%)+"{yellow} Credits":GOTO 1095 25 | {:4030} 26 | c%=250:GOTO {:4012}:REM ca/1000 27 | {:4032} 28 | c%=500:GOTO {:4020}:REM tc%/10 & ca/1000 29 | copr. 1994 NEW image 9/18/94 30 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win5.txt: -------------------------------------------------------------------------------- 1 | The Cult of the Goddess of Evil has been a thorn in your side since 2 | you first started ruling your kingdom. You decide to rid the kingdom of them 3 | once and for all. 4 | 5 | You lead your men into their main temple and begin to burn their 6 | horrible altars, their sacrificial daggers, and the executioners wielding 7 | them. 8 | 9 | Then, as you are cleaning up the mess, you hear a voice inside your 10 | head. "STOP, human! These are MY followers you are destroying!" 11 | 12 | You realize that you are listening to the Goddess of Evil herself. "Yes, 13 | Goddess. YOUR followers! The ones who kill children for sport, who eat 14 | the entrails of animals... who blind old men for the pleasure of watching 15 | them crawl, begging and helpless on the ground! Speak not to me of murder, 16 | Goddess of Evil! I will see your cult destroyed!" And with that, you close 17 | your mind to the insistent voice, turning instead to the business at hand. 18 | 19 | Because of your determination, High King Vaximian rewards you with 20 | all the lands of the Goddess of Evil, a virtual kingdom in itself. 21 | 22 | You gain 4,000 acres! 23 | 24 | \g1 25 | -------------------------------------------------------------------------------- /v2/asm/rs232/rs232.asm: -------------------------------------------------------------------------------- 1 | {uses:..\equates-2_0.asm} 2 | orig $c000 3 | ; for pass=1 to 3:org $c000,-(pass=3),8,"@:ml.rs232" 4 | ; print pass 5 | 6 | ; get &,16,x parameter (im 3082): 7 | ; &,16,0: init user port 8 | ; &,16,1: init SwiftLink 9 | 10 | ; TODO: add SwiftLink/Turbo232 auto-detect from swiftlib 11 | ; then just &,16 would fall back to user port if neither detected 12 | 13 | ml: 14 | cpx #2 15 | bcs ml3 16 | lda rslow,x 17 | sta ml1+1 18 | lda rshigh,x 19 | sta ml1+2 20 | ldy #0 21 | ldx #3 22 | ml1: 23 | lda rs232a,y 24 | ml2: 25 | sta rs232,y 26 | iny 27 | bne ml1 28 | inc ml1+2 29 | inc ml2+2 30 | dex 31 | bne ml1 32 | ml3: 33 | jmp rs232 ; $0800 34 | 35 | rslow: 36 | byte rs232a,>rs232b ; $c0 $c3 39 | rs232a: 40 | {info:INFO: Embedding "rs232-user.bin"} 41 | embed "rs232-user.bin" 42 | rs232b: 43 | {info:INFO: Embedding "rs232-swift.bin"} 44 | embed "rs232-swift.bin" 45 | 46 | ; FIXED: since load addresses ($00 $08) are part of the binaries, 47 | ; the program is JMPing there and hitting a BRK instruction 48 | 49 | ; in monitor (to skip load address): 50 | ; bload "ml.rs232" 0a bffe 51 | ; or 52 | ; l "ml.rs232" 0a c000 53 | -------------------------------------------------------------------------------- /v2/core/plus_convert f-GF.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM s%(39,60):dr=4:GOSUB 1010 5 | CLOSE 1:OPEN 1,dv%,0,"$"+dr$+"d.f.*":GET#1,a$,a$:&,8,1,1:n=0 6 | {:3002} 7 | &,8,1,1:an$=a$:&,15,6,34:ON-(an$="")GOTO {:3004}:&,15,6,34:ON-(an$="")GOTO {:3004} 8 | n=n+1:tt$(n)=a$:&".":GOTO {:3002} 9 | {:3004} 10 | CLOSE 1:&"{f6:2}":IF n=0 THEN:&"None Found.":GOTO 1812 11 | &"{pound}!n Found:{f6:2}":FOR i=1 TO n:a$=tt$(i):&"Reading {f5}{pound}$a{f5}" 12 | GOSUB 1011:IF e%THEN:&:GOTO {:3017} 13 | &,2,2:s%(0,0)=VAL(a$):&,60,0,30,s%(25,0),MID$(tt$(i),5) 14 | s%(1,0)=0:s%(2,0)=0:s%(3,0)=dv%(4):s%(4,0)=dr%(4):IF s%(0,0)=0 THEN{:3015} 15 | FOR j=1 TO s%(0,0):x=j+1:GOSUB 1001:&"." 16 | &,2,2:s%(1,j)=VAL(a$):&,2,2:&,60,0,28,s%(21,j),a$:&,2,2 17 | s%(2,j)=VAL(LEFT$(a$,1)):&,60,0,16,s%(13,j),MID$(a$,2) 18 | &,2,2:s%(3,j)=VAL(a$):&,2,2:s%(4,j)=VAL(a$):&,2,2:s%(6,j)=VAL(a$) 19 | &,2,2:&,60,4,0,s%(7,j),LEFT$(a$,11):&,60,4,0,s%(10,j),MID$(a$,12) 20 | &,2,2:s%(6,j)=VAL(a$):NEXT 21 | {:3015} 22 | a$="d.GF."+MID$(tt$(i),5):&"{f6}Writing {f5}{pound}$a{f5}" 23 | &,60,3,0,s%(0,0),80+80*s%(0,0),dr$+a$,dv%:&"{f6}" 24 | {:3017} 25 | NEXT:&"Done{f6}":GOTO 1812 26 | rem "+.convert f-GF" 27 | rem converts 1.3's "d.f.*" rel files into "d.GF.*" struct files 28 | -------------------------------------------------------------------------------- /v2/core/plus_convert phone.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {step:2} 3 | &,28,1:dim s%(24,100):gosub {:3002}:goto 1812 4 | {:3002} 5 | n=0:dr=1:a$="s.phone,s,r":gosub 1011:if e% then:&:return 6 | {:3004} 7 | ' s.phone 8 | ' col: 7 23 9 | ' 123456[ width 16 ][ width 13 ] 10 | ' 100000Port Commodore 1 801 4232734 11 | ' ===== <- 5 bytes=starlink id. "1" byproduct of writing "1e5+" 12 | 13 | ' e.phone $83 $4d $00 $28 14 | ' +53 byte record 131 77 00 40 15 | 16 | ' $834d $0028 17 | ' 33613 40 18 | ' record 0: 19 | ' 83 4d 00 28 00 00 00 00 00 00 00 00 00 00 00 00 ; 16 20 | ' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; 32 21 | ' 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ; 48 22 | ' 00 00 00 00 00 i wonder what bytes 1-4 mean ; 53 23 | 24 | ' &,60,0,bytes,array%(field,record),string$ put string into structure 25 | 26 | ' store starlink id s%(0,n) & bbs name s%(1,n): 27 | &,2,2:n=n+1:s%(0,n)=val(mid$(a$,2,5)):&,60,0,32,s%(1,n),mid$(a$,7,16) 28 | ' store phone number s%(17,n): 29 | &,60,0,14,s%(17,n),mid$(a$,23):on -(st=0) goto {:3004}:close 2 30 | ' s%(0,0) = # of entries 31 | s%(0,0)=n:dr=3:gosub 1010:a$=dr$+"e.phone" 32 | ' save struct: 33 | &,60,3,0,s%(0,0),5050,a$,dv%:gosub 1012:&:return 34 | rem +.convert phone 35 | -------------------------------------------------------------------------------- /v2/core/plus_scan netsub.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | GOSUB 2100:GOSUB {:3002}:GOTO 1812 5 | {:3002} 6 | dr=5:GOSUB 1010:a$=dr$+"++ netlist":&,7,dv%,2:GOSUB 1012:IF e%THEN:&:RETURN 7 | GOSUB {:3100}:rn=i-1:IF rn=0 THEN:&"No netsubs Defined.":RETURN 8 | {:3006} 9 | &"{f6:2}":FOR i=1 TO rn:a%=i:a$=nn$(i):&"{pound}#2{pound}# {pound}%a. {pound}$a{f6}":NEXT 10 | POKE 53252,2:&"{f6}Which One: {pound}i1":ns=VAL(an$):IF ns<1 OR ns>rn THEN RETURN 11 | GOSUB {:3012}:GOTO {:3006} 12 | {:3012} 13 | a$=dr$+"nm.netsub"+STR$(ns):&,16,2,dv%:IF a%(0)=0 THEN:&"No Subs{f6}":RETURN 14 | dr=4:GOSUB 1010:&,16:n$=a$:f$=dr$+"d.netsubs":&"{f6}Opening {f5}{pound}$f{f5}" 15 | CLOSE 3:OPEN 3,dv%,3,f$+",s,w":GOSUB 1012 16 | IF e%THEN CLOSE 3:OPEN 3,dv%,3,f$+",s,a":GOSUB 1012 17 | IF e%THEN:&:RETURN 18 | FOR i=1 TO a%(0):CLOSE 2:OPEN 2,dv%,2,dr$+"d.sub"+STR$(a%(i)) 19 | GOSUB 1012:IF e%THEN{:3030} 20 | a%=a%(i):&"{f6}Reading Sub {pound}%a":&,2,2:n=VAL(a$) 21 | IF n THEN FOR x=2 TO n+1:GOSUB 1001:&,2,2:PRINT# 3,n$":"a$:&".":NEXT 22 | {:3030} 23 | CLOSE 2:NEXT:RETURN 24 | {:3100} 25 | &"Reading NetSubs":dr=2:GOSUB 1010 26 | FOR i=1 TO 60:a$=dr$+"nm.netsub"+STR$(i):&,16,2,dv%:GOSUB 1012:IF e%THEN RETURN 27 | &".":&,16:nn$(i)=a$:NEXT:RETURN 28 | rem +.scan netsub 29 | 30 | -------------------------------------------------------------------------------- /v2/core/plusslashlo-bar.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+/lo-bar" - bar graph login module 5 | a=ll%/2-19:l$="":IF a>0 THEN l$=LEFT$(" ",a) 6 | h$="{$a2:30}" 7 | i$=" ":j$="{$bb}" 8 | &"{f6:2}{pound}$l {white}{rvrs on} Today's Board Activity {f6:2}":sh=.:rc=. 9 | &"{pound}$l 1 1 1 1 1 2 2 2 2 2 3{f6}" 10 | &"{pound}$l 2 4 6 8 0 2 4 6 8 0 2 4 6 8 0{f6}" 11 | &"{pound}$l 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0{f6}" 12 | &"{pound}$l {lt. blue}{$b0}{pound}o{$b2:12}{$ae}{f6}":FOR i=1 TO 9:d$=MID$("{cyan}{purple}{cyan}{purple}{cyan}{purple}{cyan}{purple}{cyan}",i,1) 13 | c$=MID$("FbackSMailMail PostsRespsUpldsDnldsNew Calls",i*5-4,5) 14 | x=INT(st(i+11)/5+.5):b=INT(x/2+.5):IF b>28 THEN b=28 15 | a$="":c=b+1:IF x>1 AND(x AND 1)THEN a$=j$:c=b+2 16 | a$=LEFT$(h$,b)+a$+MID$(i$,c) 17 | &"{lt. blue}{pound}$l {pound}$c {$dd}{pound}$d{pound}$a{lt. blue}{$dd}{f6}":i=i-9*(sh<>.OR rc<>.):NEXT 18 | &"{pound}$l {lt. blue}{$ad}{pound}o{$b1:12}{$bd}{f6:2}" 19 | b%=st(21):c%=st(22):a=b%+c%:IF a THEN b%=INT(b%/a*100+.5):c%=100-b% 20 | &"{white}{pound}$l Used Time:{pound}#3{pound}# {pound}%b% Idle Time:{pound}#3{pound}# {pound}%c%{f6}{lt. blue}":RETURN 21 | REM 22 | 23 | -------------------------------------------------------------------------------- /v2/core/plus_convert UD.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:DIM ud%(31,61),a$(61):GOSUB {:3002}:&,28,1:GOTO 1811 5 | {:3002} 6 | dr=3:a$="e.U/D":GOSUB 1011:IF e%THEN CLOSE 2:&:RETURN 7 | &,2,2:bz=VAL(a$):CLOSE 2:IF bz=0 THEN:&"No U/Ds{f6}":RETURN 8 | fi=1:FOR i=1 TO bz:dr=4:a$="d.u/d"+STR$(i)+",s,r":GOSUB 1011 9 | &"{f6}UD{pound}!i: {pound}#2{pound}%e,{pound}$e{f6}":ON-(e%=0)GOSUB {:3010}:NEXT:RETURN 10 | {:3010} 11 | &,2,2:rn=VAL(a$):ud%(0,0)=rn:ud%(1,1)=0:ON-(rn=0)GOTO {:3038} 12 | FOR j=1 TO rn:&".":ud%(0,j)=0 13 | &,2,2:fs=VAL(a$)*254:&,60,14,0,ud%(4,j),fs 14 | &,2,2:ud%(13,j)=VAL(LEFT$(a$,4)):&,60,0,20,ud%(14,j),MID$(a$,5) 15 | &,2,2:&,60,4,0,ud%(7,j),LEFT$(a$,11):&,60,4,0,ud%(10,j),MID$(a$,12,11) 16 | a$=MID$(a$,23):b$=RIGHT$(a$,1):c$=LEFT$(a$,LEN(a$)-2) 17 | &,60,0,16,ud%(24,j),c$ 18 | &,2,2:a$(j)=STR$(fs)+r$+c$+","+b$+r$+a$:ud%(1,j)=fi:fi=fi+1 19 | &,2,2:ud%(2,j)=-(b$="p")+VAL(a$)*256 20 | &,2,2:ud%(3,j)=VAL(a$):IF ud%(3,j)<1 THEN ud%(3,j)=0:ud%(0,j)=1 21 | NEXT:CLOSE 2:&"{f6}" 22 | &,60,3,0,ud%(0,0),60*(rn+1),dr$+"d.UD"+STR$(i),dv%:GOSUB 1012 23 | dr=3:a$="e.UD.desc,l,"+CHR$(110):GOSUB 1011:PRINT# 2,fi 24 | FOR j=1 TO rn:x=ud%(1,j)+1:GOSUB 1001:PRINT# 2,a$(j):NEXT:x=1:GOSUB 1001:CLOSE 2 25 | {:3038} 26 | RETURN 27 | rem "+.convert UD" 28 | -------------------------------------------------------------------------------- /v1.2/games/empire6/win3.txt: -------------------------------------------------------------------------------- 1 | You are in need of timber for your forts and ships. Your land is well- 2 | suited for growing grain, but you have very little timber. 3 | 4 | So, at last you decide if your empire is to survive, you must find a source 5 | of timber. Discussing this with your Nobles, you decide to lead an expedition 6 | into the mountains. Though most of the trees are bent from the high winds, you 7 | have heard of a small valley, with good timber. 8 | 9 | You and your men have been searching for some weeks, when you come upon a 10 | young woman. She is in tears, explaining a band of brigands had captured her 11 | and her sister. They were being used as slave labor at the brigands' camp. 12 | She further explains she managed to slip away, and begs you to come and free 13 | her sister. 14 | 15 | Considering that these brigands may some day become a threat to your land, 16 | you agree. So it was that when you and your men came upon the brigands, you 17 | were prepared to fight. The brigands, believing themselves safe, were caught 18 | off guard. 19 | 20 | Your seasoned troops make quick work of the task. But you have found 21 | something more. The brigands' camp is in a small valley with good timber! 22 | 23 | You gain 15 tons of timber!! 24 | \g1 25 | -------------------------------------------------------------------------------- /v2/core/plus_top ten.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | a$=" Restart Top Ten List":GOSUB 1095:GOSUB {:3002}:GOTO 1812 5 | {:3002} 6 | &,11:&,28,1:DIM a$(50,8):GOSUB 1065:x=0:p=50:m=mn% 7 | {:3004} 8 | &"{f6}Reading " 9 | {:3006} 10 | x=x+1:x%=x:&"{pound}h3{pound}#3{pound}# {pound}%x":ON-(x>ur)GOTO {:3014} 11 | GOSUB 1001:&,2,2:ON-(a$="RES"OR a$="{up arrow}")GOTO {:3006}:an$=a$:&,15,1 12 | FOR i=2 TO 9:&,2,2:NEXT:i=1:GOSUB {:3030}:FOR i=10 TO 14:&,2,2:NEXT 13 | FOR i=2 TO 8:&,2,2:GOSUB {:3030}:NEXT:p=p-1:ON-(p>0)GOTO {:3006} 14 | {:3014} 15 | &" Sorting" 16 | FOR i=1 TO 8:&".":&,60,7,0,a$(p+1,i),50-p:NEXT:p=40 17 | ON-(x= {pound}g1{clear}{f6}{lt. blue} Total "b$"{f6} #{pound}{back arrow}09User{f6} {pound}o{$c0}{pound}o{$c0}" 22 | FOR j=50 TO 41 STEP-1:PRINT# 2,a$(j,i):NEXT:NEXT:CLOSE 2:RETURN 23 | {:3030} 24 | a$(p,i)=RIGHT$(" "+MID$(STR$(VAL(a$)),2),7)+"{pound}{back arrow}10"+an$:RETURN 25 | DATA"Calls","Downloads","Uploads","Blks D/Loaded","Blks U/Loaded" 26 | DATA"Credits","Posts","Responses" 27 | rem +.top ten 28 | 29 | -------------------------------------------------------------------------------- /v2/core/jack/islashMM.ud-sort.lbl: -------------------------------------------------------------------------------- 1 | &"{f6}{pound}Q0 (N) FILENAME{f6} (S) FILESIZE{f6} (D) TIMES {pound}$KED{f6:2} SORT BY?: {pound}G1" 2 | X=-(AN$="N")-2*(AN$="S")-3*(AN$="D"):IF X=0 THEN{:4032} 3 | A%=RN:&"{f6}SORTING {pound}%A FILES..." 4 | FOR I=1 TO RN:&".":A%(I)=0:FOR J=1 TO I:IF A%(J)=0 THEN{:4010} 5 | ON X GOSUB{:4100},{:4102},{:4104}:IF A THEN NEXT 6 | {:4010} 7 | B%=A%(J):A%(J)=I:FOR J=J TO I:C%=A%(J+1):A%(J+1)=B%:B%=C%:NEXT:NEXT 8 | &"{f6}":B$="BK":IF CO%>2 THEN B$="KB" 9 | POKE 970,0:&"{f6}{white} ## {lt. red}{pound}$B'S {green}DL'D {lt. blue}NAME{f6}{orange}{pound}VJ" 10 | FOR I=1 TO RN:A=A%(I) 11 | B$=MID$(DT$(A),23):IF F%(A)>.THEN C$="{lt. blue}{f5}{pound}$B{f5}":GOTO{:4024} 12 | C$="{yellow}(UNVALIDATED)":A$=RIGHT$("0000"+MID$(STR$(ID),2),4)+NA$ 13 | IF(Q OR A$=NN$(A))THEN C$="{white}*{lt. blue}{f5}{pound}$B{f5}" 14 | {:4024} 15 | A%=A:B%=C%(A):C%=F%(A)-1:IF C%<0 THEN C%=0 16 | IF CO%>2 THEN B%=(B%*254)/1024:IF B%<1 THEN B%=1 17 | &" {white}{pound}#2{pound}# {pound}%A {lt. red}[{white}{pound}#4{pound}%B{lt. red}] {green}{pound}#3[{white}{pound}%C{green}] {lt. blue}"+C$+"{f6}":IF RC THEN I=RN 18 | NEXT:&"{orange}{pound}VJ" 19 | {:4032} 20 | RETURN 21 | {:4100} 22 | A=MID$(DT$(I),12)>MID$(DT$(A%(J)),12):RETURN 23 | {:4102} 24 | A=C%(I)"{up arrow}"then n=n+1:tt$(n)=a$:if st=. then {:60020} 22 | close 2 23 | {:60024} 24 | ' reset usrlinm (output line count) for possible more prompt: 25 | poke 971,.:&"{f6}Select {pound}$d Time Zone:{f6:2}" 26 | for i=1 to n:b$=left$(tt$(i),3):c$=mid$(tt$(i),8):a%=i:&"{pound}%a) ({pound}$b) {pound}$c{f6}":next 27 | poke 53252,2:&"{f6}Which One (L=List)? {pound}i1":if an$="L" then {:60024} 28 | a=val(an$):if an$=""or a<1 or a>n then a=.:return 29 | c$=mid$(tt$(a),8):an$=left$(tt$(a),7):return 30 | copr. 1994 new image 9/18/94 31 | rem im.param2 2019-05-16 pinacolada 32 | -------------------------------------------------------------------------------- /v1.2/games/empire6/quest payoffs.txt: -------------------------------------------------------------------------------- 1 | Tourney 1: Win 100 acres 2 | Tourney 2: Lose 100 acres 3 | Tourney 3: Win 1,000 gold 4 | Tourney 4: Lose 1,000 gold 5 | Tourney 5: Win 1 noble 6 | Tourney 6: Lose 1 noble 7 | Tourney 7: Win 7,000 bushels of grain 8 | Tourney 8: Lose 7,000 bushels of grain 9 | Tourney 9: Win 1 Shipyard and 100 acres 10 | Tourney 10: Lose 1 shipyard and 100 acres 11 | Tourney 11: Win 2 tons of timber 12 | Tourney 12: Lose 2 tons of timber 13 | 14 | Isle 1: Win 90,000 gold 15 | Isle 2: Flotilla damaged 16 | Isle 3: Win 10 Cannons, 3 Nobles, 30 Soldiers, and 250 Serfs 17 | Isle 4: Forces are severely damaged 18 | Isle 5: Win 100 horses, 20 tons of timber 19 | Isle 6: Forces suffer "some losses" 20 | 21 | Quest 1: 90,000 gold 22 | Quest 2: 30 horses 23 | Quest 3: 15 tons of timber 24 | Quest 4: 40,000 bushels of grain 25 | Quest 5: 4,000 acres 26 | Quest 6: 40 tons of spice 27 | Quest 7: 4 nobles 28 | Quest 8: 6 cannons 29 | Quest 9: Lose 2,000 acres, 600 serfs, 4 Nobles, 9,000 gold 30 | 31 | Wreck 1: 2 Nobles, 15 Soldiers, and 30 serfs 32 | Wreck 2: Lose a few ships from sea serpent attack 33 | Wreck 3: 5 tons of exports 34 | Wreck 4: Flotilla damaged from waterspout 35 | Wreck 5: 16 tons of spice 36 | Wreck 6: 3 Nobles, 25 soldiers, and 15,000 gold 37 | Wreck 7: Your ships are devastated! 38 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.menu2.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | _____________________ 4 | INVESTMENT MENU 5 | 6 | (1) Armies - $ 10..Per Man 7 | (2) Markets - $ 1000..Each 8 | (3) Mills - $ 2000..Each 9 | (4) Palace - $10000..Per Unit 10 | (5) Foundries- $ 7000..Each 11 | (6) Shipyards- $ 8000..Each 12 | (7) Nobles - $25000..Each 13 | (8) Ships - $ 5000..Each 14 | (9) Stables - $10000..Each 15 | (Y)our Current Stats 16 | 17 | _ _ 18 | 19 | \X\MB\ 20 | _____________________ 21 | INVESTMENT MENU 22 | 23 | (1) Armies - $ 10..Per Man 24 | (2) Markets - $ 1000..Each 25 | (3) Mills - $ 2000..Each 26 | (4) Palace - $10000..Per Unit 27 | (5) Foundries- $ 7000..Each 28 | (6) Shipyards- $ 8000..Each 29 | (7) Nobles - $25000..Each 30 | (8) Ships - $ 5000..Each 31 | (9) Stables - $10000..Each 32 | (Y)our Current Stats 33 | 34 | _ _ 35 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo-last.lbl: -------------------------------------------------------------------------------- 1 | REM" ** I/LO-LAST ** 95JUN04 JLF LAST 10 CALLER DISPLAY " 2 | ON-(LL%>77)GOTO{:4700}:GOTO{:4600} 3 | {:4600} 4 | FOR X=1 TO 5:TT$(X)="":&,60,1,20,L%(8,X),A$:&,60,1,25,L%(18,X),B$ 5 | TT$(X)=" {purple}{$dd}{cyan}"+A$+" {gray3}("+LEFT$(B$,33-LEN(A$))+"{gray3}){pound}{back arrow}38{purple}{$dd}{f6} {$dd}{yellow}ON " 6 | &,60,5,0,L%(1,X),AN$:TT$(X)=TT$(X)+MID$(AN$,4,2)+"/"+MID$(AN$,6,2)+" @" 7 | &,15:TT$(X)=TT$(X)+MID$(AN$,13,6)+CHR$(ASC(MID$(AN$,20,1))-128)+"M-" 8 | &,60,5,0,L%(4,X),AN$:&,15:B$="ULDLEMFBPFTF" 9 | TT$(X)=TT$(X)+MID$(AN$,14,5)+CHR$(ASC(MID$(AN$,20,1))-128)+"M {white}(" 10 | TT$(X)=TT$(X)+MID$(STR$(L%(7,X)),2,3)+" MIN){pound}{back arrow}38{purple}{$dd}{f6} {$dd}{red}ACTIVITY{orange}:{lt. red}" 11 | IF L%(.,X)=.THEN TT$(X)=TT$(X)+" NONE":GOTO{:4618} 12 | IF L%(.,X)AND 2 THEN TT$(X)=TT$(X)+" MSG" 13 | FOR I=2 TO 7:IF L%(.,X)AND 2^I THEN TT$(X)=TT$(X)+" "+MID$(B$,((I-2)*2)+1,2) 14 | NEXT 15 | {:4618} 16 | TT$(X)=TT$(X)+"{pound}{back arrow}38{purple}{$dd}{f6}":NEXT:A$="{pound}O{$c0:18}" 17 | &" {purple}{$b0}"+A$+"{$ae}{f6} {$dd}{lt. blue}LAST FIVE CALLERS & ACTIVITY LISTING{purple}{$dd}{f6}" 18 | FOR X=1 TO 5:&" {purple}{$ab}"+A$+"{$b3}{f6}"+TT$(X):NEXT:&" {purple}{$ad}"+A$+"{$bd}{f6}":REM"{lt. green}({green}PRESS A KEY{white}){pound}G1{pound}HN" 19 | RETURN 20 | {:4700} 21 | GOTO{:4600} 22 | -------------------------------------------------------------------------------- /v2/core/jack/blocks-free-merge.lbl: -------------------------------------------------------------------------------- 1 | {number:4430} 2 | {:4430} 3 | {alpha:alt} 4 | {crunch:on} 5 | {step:2} 6 | ' i/lo-idle 7 | f3=3:poke 53248,1:poke 2042,.:&"{f6:2} {rvrs on}{cyan} Blocks Free on System Disks: {f6:2}":x=1 8 | ' 3x2 display: 9 | ' ----+----+----+----+----+----+----+----+ 10 | ' [ Blocks Free on System Disks: ] 11 | ' 12 | ' System: xxxxx Directory: xxxxx 13 | ' Mail: xxxxx Plus-File: xxxxx 14 | ' Etcetera: xxxxx User: xxxxx 15 | 16 | ' a$="{lt. red} {pound}$b {gray3}Disk{white}:{pound}{back arrow}15{pound}$c{f6}{lt. red} {pound}$b {gray3}Disk{white}:{pound}{back arrow}15{pound}$f{f6}":dr=1 17 | ' b$="System":d$="Mail":gosub{:4438}:b$="Etc.":d$="Dir.":gosub{:4438} 18 | ' b$="Program":d$="User":gosub{:4438}:&"{f6:2}":poke 53248,.:goto{:4040} 19 | ' pina fix! 20 | ' TODO: interrogate drive as to total blocks available, display percentage free 21 | b$=" System":d$="Directory":gosub {:4438} 22 | b$=" E-Mail":d$="Plus-File":gosub {:4438} 23 | b$="Ecetera":d$=" User":gosub {:4438}:&"{f6:2}":poke 53248,.:goto 4040 24 | {:4438} 25 | ' get blocks free, set digits to print and leading spaces 26 | ' b$: 1st column, b: blocks free 27 | ' d$: 2nd column, f: blocks free 28 | b%=bf(x):f%=bf(x+3):x=x+1:&"{pound}#5{pound}# {cyan}{pound}$b: {white}{pound}%b{pound}{back arrow}21{cyan}{pound}$d: {white}{pound}!f{f6}":return 29 | -------------------------------------------------------------------------------- /v2/asm/calls.asm: -------------------------------------------------------------------------------- 1 | ; print"04/04/90 05:59p" 2 | inline: 3 | lda #00 4 | byte $2c 5 | clrarr: 6 | lda #11 7 | byte $2c 8 | sound: 9 | lda #25 10 | byte $2c 11 | inline0: 12 | lda #63 13 | byte $2c 14 | convstr: 15 | lda #64 16 | byte $2c 17 | convert: 18 | lda #65 19 | jmp usetbl1 ; $cd03 20 | copyrite: 21 | lda #67 22 | jsr usetbl1 ; $cd03 23 | jmp outastr ; $cd00, defined in build.asm 24 | 25 | ; 26 | ; passed address in x (hi),y (lo) 27 | ; 28 | caller: 29 | sty calljmp+1 30 | cpx callpage 31 | beq caller2 32 | lda callpage 33 | beq caller1 34 | jsr callswap 35 | jsr caller1 36 | jsr callswap 37 | lda 780 38 | rts 39 | 40 | caller1: 41 | lda callpage 42 | pha 43 | stx callpage 44 | jsr callswap 45 | jsr caller2 46 | jsr callswap 47 | pla 48 | sta callpage 49 | lda 780 50 | rts 51 | 52 | caller2: 53 | lda 780 54 | ldx 781 55 | ldy 782 56 | calljmp: 57 | jsr $c000 58 | sta 780 59 | stx 781 60 | sty 782 61 | rts 62 | 63 | callswap: 64 | pha 65 | txa 66 | pha 67 | tya 68 | pha 69 | lda callpage 70 | ldx #4 ;swap1/2 71 | cmp #>$f400 72 | bcs callswp1 73 | ldx #6 ;struct 74 | cmp #>$ee00 75 | bcs callswp1 76 | ldx #10 ;ecs 77 | cmp #>$e400 78 | bcs callswp1 79 | ldx #4 ;gc 80 | callswp1: 81 | ldy #>$c000 82 | jsr swapper 83 | pla 84 | tay 85 | pla 86 | tax 87 | pla 88 | rts 89 | 90 | callpage: 91 | byte 0 92 | calltemp: 93 | byte 0 94 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashbingo.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {step:2} 3 | {alpha:alt} 4 | rem "+/lo/bingo" - bingo automaint 8/19/94 5 | rem:ifval(left$(d1$,1)<>1thenreturn 6 | cm$="Bingo Automaint":gosub 1360 7 | dr=3:a$="e.bscore,s,r":gosub 1011:if e%then close 2:return 8 | &,2,2:w$=a$:&,2,2:close 2:an$=w$:gosub 1046:y=i:if i=.then return 9 | x=i:gosub 1065:gosub 1001:for i=1 to 24:&,2,2:tt$(i)=a$:next 10 | tt$(19)=str$(val(tt$(19))+100):a$="":for i=1 to 24:a$=a$+tt$(i)+r$:next 11 | gosub 1001:print# 2,a$:close 2:dr=3:a$="e.bscore":gosub 1024 12 | a$="{green} {rvrs on}"+w$+r$+" {lt. green}Won Weekly Bingo Pool"+r$+"{yellow}{pound}o{$c0}{pound}o{$c0}":gosub 1095 13 | z=1:tt$=w$:a$="w":gosub 1062:if e%then a$="a":z=.:gosub 1062 14 | print# 2,"Weekly Bingo Winner"r$;0;r$;d1$;r$;"[Congratulations]"r$ 15 | print# 2," {green}The award for winning is 100 credits."r$ 16 | print# 2," {yellow}Good luck again this week!"r$:print# 2,"{up arrow}":close 2 17 | if y=1 then gosub 1060:x=2:i=1:gosub 1025:x=13:gosub 1025:x=24:gosub 1025:x=31 18 | if y=1 then gosub 1025 19 | on-(y<>1)gosub 1060:x=3:i=1:gosub 1025:x=14:gosub 1025:x=32:gosub 1025 20 | x=25:on z gosub 1025:close 2:return 21 | rem 22 | rem by: 23 | rem port commodore 24 | rem (801-423-2734) 25 | rem 26 | rem nissa 27 | rem 28 | rem august, 19, 1994 29 | rem 30 | rem "+/lo/bingo" - bingo automaint 31 | -------------------------------------------------------------------------------- /v2/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu:latest 2 | 3 | RUN apt-get update \ 4 | && apt install -y --no-install-recommends \ 5 | apt-transport-https \ 6 | bison \ 7 | build-essential \ 8 | ca-certificates \ 9 | flex \ 10 | git \ 11 | gnupg \ 12 | gpg-agent \ 13 | libreadline-dev \ 14 | libxaw7-dev \ 15 | unzip \ 16 | wget 17 | 18 | # Adapted from https://github.com/scottyhardy/docker-wine/blob/master/Dockerfile 19 | # Install wine 20 | ARG WINE_BRANCH="stable" 21 | ARG C64LIST_VER="4.04" 22 | RUN wget -nv -O- https://dl.winehq.org/wine-builds/winehq.key | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ 23 | && echo "deb https://dl.winehq.org/wine-builds/ubuntu/ $(grep VERSION_CODENAME= /etc/os-release | cut -d= -f2) main" >> /etc/apt/sources.list \ 24 | && dpkg --add-architecture i386 \ 25 | && DEBIAN_FRONTEND="noninteractive" apt-get install -y --install-recommends wine-${WINE_BRANCH} 26 | 27 | RUN apt install -y libwine --install-recommends \ 28 | && apt update \ 29 | && apt install -y wine32 --no-install-recommends 30 | 31 | 32 | # Configure locale for unicode 33 | #RUN locale-gen en_US.UTF-8 34 | ENV LANG en_US.UTF-8 35 | 36 | COPY files/C64List${C64LIST_VER}/Win32/C64List.exe /bin/C64List.exe 37 | 38 | RUN apt install -y vice 39 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.title.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | _ _________L_ _ 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | DELUXE! 20 | 21 | 22 | 23 | WITH TOURNEYS, QUESTS, AND 24 | ALTERATIONS BY: XEVIOUS 25 | 26 | \X\MB\ 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | _ _________L_ _ 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | DELUXE! 44 | 45 | 46 | 47 | WITH TOURNEYS, QUESTS, AND 48 | ALTERATIONS BY: XEVIOUS 49 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo!help.lbl: -------------------------------------------------------------------------------- 1 | REM"+/LO.TELECHECK - RASK V2.0 - DATE STAMP: 26 OCT 94 6:51PM 2 | REM I/LO!HELP 3 | DR=1:A$="S.LOGON HELP":GOSUB 14 4 | LP=1:&"{f6:2}WOULD YOU LIKE TO LOG ON WITH A TEMPORARY ACCOUNT? ":GOSUB 94 5 | IF A=.THEN RETURN 6 | &"{f6}LOGGING ON FOR HELP...{f6}":T=5 7 | {:4510} 8 | A$="FIRST NAME":GOSUB{:4532}:ON-(T<1)GOTO{:4522}:FF$=AN$:IF AN$="" then {:4510} 9 | {:4512} 10 | A$="LAST NAME":GOSUB{:4532}:ON-(T<1)GOTO{:4522}:LL$=AN$:IF AN$="" then {:4512} 11 | {:4514} 12 | A$="PHONE NUMBER":GOSUB{:4532}:ON-(T<1)GOTO{:4522}:PH$=AN$:IF AN$="" then {:4514} 13 | NA$="HELP"+"":PW$="NONE"+"":LD$=D1$:AC%=0:DT%=0:TC%=0:CO%=1:ID=0 14 | UL=1:LF=1:EM=.:DC=.:UC=.:BD=.:BU=.:CR=.:PS=.:RP=.:D5$=D1$:FL$=FL$(AC%) 15 | CO$=CO$(CO%):RN$=FF$+" "+LL$:TR%=15:GOSUB{:4533}:GOSUB{:4524}:IF TR%>.THEN A=2:RETURN 16 | {:4522} 17 | &"{f6:2}SORRY, UNABLE TO LOG YOU IN...{f6:2}":A=1:RETURN 18 | {:4524} 19 | &"{f6:2}ENTER A BRIEF MESSAGE STATING WHY YOU{f6}NEED HELP.{f6}NOTE: ABORTING THIS " 20 | &"WI{$cc:2} LOG YOU OFF.{f6:2}" 21 | LE=10*(VAL(MID$(FL$,6,1))+1):IM=1:GOSUB 440:IF KK=.THEN TR%=.:RETURN 22 | B$="TELECHECK":GOSUB 37:PRINT# 2,"FORGOTTEN PASSWORD"R$:GOTO 39 23 | {:4532} 24 | POKE 53252,15:&"{f6}ENTER YOUR {pound}$A:{f6}: {pound}I1":T=T+(AN$=""):T=T*-(TR%>.):RETURN 25 | {:4533} 26 | &,52,17,LF:&,52,20,EM:POKE 951,LL%:POKE 971,MP%:POKE 970,.:RETURN 27 | REM"COPYRIGHT (C) 1994, N.I.S." 28 | -------------------------------------------------------------------------------- /v2/core/plus- lo-cr pool.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem +.lo.cr pool - credit pool 3 | on-(cr<10 or ct%>1)goto {:4006} 4 | &"{f6}{green}Join The Credit Pool? ":gosub 1907:on-(a=1)goto {:4014}:goto {:4006} 5 | {:4004} 6 | a$="e.cr.pool"+str$(p)+",s,r":dr=3:gosub 1011:if e%then gosub {:4034} 7 | {:4006} 8 | return 9 | {:4008} 10 | a$="e.cr.pool 1":dr=3:goto 1023 11 | {:4010} 12 | a$="e.cr.pool 2,s,a":gosub 1011:if e% then {:4038} 13 | return 14 | {:4014} 15 | a=.:b=.:c=.:d=.:n=.:l=. 16 | &"{f6}{gray3}Instructions? ":gosub 1902:if a then a$="s.pool":dr=1:gosub 1075 17 | &"{f6}{cyan}You Have {white}":&str$(cr):&" {cyan}Credits." 18 | {:4020} 19 | &"{f6}{lt. green}({f5}Q{f5} Quits:100 Max){f6}How Many Credits? {pound}i1":on tr%+1 goto 1603:if an$="Q"then return 20 | a=int(val(an$)):if a<10 or a>cr or a>100 then:&"{f6}Sorry, Not Acceptable":goto {:4020} 21 | p=1:gosub {:4004}:&,2,2:n=val(a$):&,2,2:b=val(a$):close 2 22 | &"{f6:2}Present Pool Stands At":&str$(b) 23 | a%=a/10:&"{f6}You Have {pound}%a Chances To Win" 24 | c=a+b:&"{f6}New Value = ":&str$(c):&"{f6:2}Good Luck!!{f6}":cr=cr-a 25 | gosub {:4008}:print# 2,n+a%:print# 2,c:close 2:gosub {:4010}:for i=1 to a%:print# 2,na$:next:close 2:return 26 | {:4034} 27 | dr=3:a$="e.cr.pool 1":gosub 1023:print# 2,0:print# 2,0:a$="e.cr.pool 1,s,r" 28 | gosub 1011:return 29 | {:4038} 30 | dr=3:a$="e.cr.pool 2":gosub 1023:return 31 | copr. 1990 fred dart 12-26-90 32 | -------------------------------------------------------------------------------- /v1.2/games/empire6/variables.txt: -------------------------------------------------------------------------------- 1 | Variables: 2 | 3 | e9 maintenance flag 4 | 5 | f%(1) palace 6 | f%(2) markets 7 | f%(3) mills 8 | f%(4) foundries 9 | f%(5) shipyards 10 | f%(6) diplomats 11 | 12 | g3 player # 13 | gr grain 14 | 15 | i8 colonies 16 | 17 | la land 18 | 19 | nb nobles 20 | 21 | pn cash 22 | 23 | sf serfs 24 | 25 | tr tax rate 26 | ty previous rank 27 | tz current rank 28 | 29 | wa soldiers 30 | wc not defined? 31 | 32 | x8 navigators 33 | 34 | yc ships 35 | 36 | in stats: 37 | yc ships 38 | ye exports 39 | ys serfs 40 | yw nobles 41 | 42 | z8 0: wall read flag in +.emp6.startup 43 | 1: 44 | 2: max turns taken today? 45 | 46 | z9 maintenance mode flag (0 or 1) [deprecated] 47 | 48 | peek(899) # of plays taken 49 | 50 | Player file format 51 | PC Opponent 52 | na$ handle en$ 53 | la land ez 54 | wa soldiers ew 55 | sf serfs ef 56 | nb nobles en 57 | gr grain eg 58 | tr tax rate et 59 | pn money ep 60 | f%(1) palaces e1 61 | f%(2) markets e2 62 | f%(3) mills e3 63 | f%(4) foundries e4 64 | f%(5) shipyards e5 65 | f%(6) diplomats e6 66 | yc ships e7 67 | i8 colonies e8 68 | z9 training og 69 | 70 | "e.emp 6 config": 71 | ln 1=auto-reset when player reaches land requirement 72 | mp 1=auto-reset when player reaches emperor status 73 | en 1=BBS credit/Empire money exchange active 74 | nn BBS credit/Empire money exchange rate (1:nn) 75 | 76 | During combat: 77 | og opponent training units 78 | z9 training units 79 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.menu1.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | 4 | 5 | _____________________ 6 | EMPIRE II - MAIN MENU 7 | 8 | (C)ontinue Your Turn 9 | (L)ist All Players/Ratings 10 | (H)old a Tournament 11 | (I)nformation (Docs) 12 | (N)ews Of The Past Two Days 13 | (Q)uit And RETURN To The BBS 14 | (Y)our Current Stats 15 | 16 | _ _ 17 | 18 | \X\MB\ 19 | 20 | 21 | _____________________ 22 | EMPIRE II - MAIN MENU 23 | 24 | (C)ontinue Your Turn 25 | (L)ist All Players/Ratings 26 | (H)old a Tournament 27 | (I)nformation (Docs) 28 | (N)ews Of The Past Two Days 29 | (Q)uit And RETURN To The BBS 30 | (Y)our Current Stats 31 | 32 | _ _ 33 | 34 | orts........50 35 | 36 | or a point rating of 1000 37 | 38 | 39 | _ d e l u x e _ 40 | 41 | 42 | -------------------------------------------------------------------------------- /v2/core/plusslashlo-cr pool.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | ON-(cr<10 OR ct%>1)GOTO {:4006} 5 | &"{f6}{green}Join The Credit Pool? ":GOSUB 1907:ON-(a=1)GOTO {:4014}:GOTO {:4006} 6 | {:4004} 7 | a$="e.cr.pool"+STR$(p)+",s,r":dr=3:GOSUB 1011:IF e%THEN GOSUB {:4034} 8 | {:4006} 9 | RETURN 10 | {:4008} 11 | a$="e.cr.pool 1":dr=3:GOTO 1023 12 | {:4010} 13 | a$="e.cr.pool 2,s,a":GOSUB 1011:IF e%THEN{:4038} 14 | RETURN 15 | {:4014} 16 | a=.:b=.:c=.:d=.:n=.:l=. 17 | &"{f6}{gray3}Instructions? ":GOSUB 1902:IF a THEN a$="s.pool":dr=1:GOSUB 1075 18 | &"{f6}{cyan}You Have {white}":&STR$(cr):&" {cyan}Credits.":POKE 53252,3 19 | {:4020} 20 | &"{f6}{lt. green}({f5}Q{f5} Quits:100 Max){f6}How Many Credits? {pound}i1":ON tr%+1 GOTO 1603:IF an$="Q"THEN RETURN 21 | a=INT(VAL(an$)):IF a<10 OR a>cr OR a>100 THEN:&"{f6}Sorry, Not Acceptable":GOTO {:4020} 22 | p=1:GOSUB {:4004}:&,2,2:n=VAL(a$):&,2,2:b=VAL(a$):CLOSE 2 23 | &"{f6:2}Present Pool Stands At":&STR$(b) 24 | a%=a/10:&"{f6}You Have {pound}%a Chances To Win" 25 | c=a+b:&"{f6}New Value = ":&STR$(c):&"{f6:2}Good Luck!!{f6}":cr=cr-a 26 | GOSUB {:4008}:PRINT# 2,n+a%:PRINT# 2,c:CLOSE 2:GOSUB {:4010}:FOR i=1 TO a%:PRINT# 2,na$:NEXT:CLOSE 2:RETURN 27 | {:4034} 28 | dr=3:a$="e.cr.pool 1":GOSUB 1023:PRINT# 2,0:PRINT# 2,0:a$="e.cr.pool 1,s,r" 29 | GOSUB 1011:RETURN 30 | {:4038} 31 | dr=3:a$="e.cr.pool 2":GOSUB 1023:RETURN 32 | rem "+/lo-cr pool" copr. 1990 FREd dart 12-26-90 33 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashnum squ.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+/lo/num squ" automaint 8/19/1994, 4/12/2019 5 | REM:ifval(left$(d1$,1)<>1thenreturn 6 | cm$="Numbersquare Automaint":GOSUB 1360 7 | dr=3:a$="e.num squ,s,r":GOSUB 1011:IF e%THEN CLOSE 2:RETURN 8 | &,2,2:w$=a$:&,2,2:CLOSE 2:an$=w$:GOSUB 1046:y=i:IF i=.THEN RETURN 9 | x=i:GOSUB 1065:GOSUB 1001:FOR i=1 TO 24:&,2,2:tt$(i)=a$:NEXT 10 | ' 250 credits now matches the announcement 11 | tt$(19)=STR$(VAL(tt$(19))+250):a$="":FOR i=1 TO 24:a$=a$+tt$(i)+r$:NEXT 12 | GOSUB 1001:PRINT# 2,a$:CLOSE 2:dr=3:a$="e.num squ":GOSUB 1024 13 | a$="{yellow} {rvrs on}"+w$+r$+" {cyan}Weekly Numbersquare Winner"+r$+"{yellow}{pound}o{$c0}{pound}o{$c0}":GOSUB 1095 14 | z=1:tt$=w$:a$="w":GOSUB 1062:IF e%THEN a$="a":z=.:GOSUB 1062 15 | PRINT# 2,"Weekly Numbersquare Winner"r$;0;r$;d1$;r$;"[Congratulations]"r$ 16 | PRINT# 2," {yellow}The award for winning is 250 credits."r$ 17 | PRINT# 2," {lt. green}Good luck again this week!"r$:PRINT# 2,"{up arrow}":CLOSE 2 18 | IF y=1 THEN GOSUB 1060:x=2:i=1:GOSUB 1025:x=13:GOSUB 1025:x=24:GOSUB 1025:x=31 19 | IF y=1 THEN GOSUB 1025 20 | ON-(y<>1)GOSUB 1060:x=3:i=1:GOSUB 1025:x=14:GOSUB 1025:x=32:GOSUB 1025 21 | x=25:ON z GOSUB 1025:CLOSE 2:RETURN 22 | REM 23 | REM by: 24 | REM port commodore 25 | REM (801-423-2734) 26 | REM 27 | REM nissa 28 | REM 29 | REM august, 19, 1994 30 | REM 31 | REM numbersquare automaint 32 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo.off.lbl: -------------------------------------------------------------------------------- 1 | REM"I.LO.OFF 2 | GOTO{:4100} 3 | {:4010} 4 | D$=B$+"{white}, "+C$+R$:IF B$=""AND C$=""THEN D$="":GOTO{:4016} 5 | IF B$=""THEN D$=C$+R$:GOTO{:4016} 6 | D$=B$+R$ 7 | {:4016} 8 | B$="":C$="":RETURN 9 | {:4100} 10 | IM=5:GOSUB 447:O$=D1$:O%=MN%:GOSUB 30:FOR X=1 TO 11:GOSUB 17:NEXT:CLOSE 2 11 | &,27,3:DIM L%(30,9):DR=3:GOSUB 3:&,60,2,.,L%(.,.),DR$+"E.LAST",DV% 12 | L%(7,.)=O%-L%(7,.):&,60,4,.,L%(4,.),O$:F=L%(.,.) 13 | B$="":C$="":D$="" 14 | A=ST(4):IF A THEN B$="{white}"+STR$(A)+" {lt. green}POST":F=(F)OR 2:IF A<>1 THEN B$=B$+"S" 15 | A=ST(5):IF A THEN C$="{white}"+STR$(A)+" {green}RESPONSE":F=(F)OR 2:IF A<>1 THEN C$=C$+"S" 16 | GOSUB{:4010}:A$=D$ 17 | A=ST(6):IF A THEN B$="{white}"+STR$(A)+" {lt. green}UPLOAD":F=(F)OR 4:IF A<>1 THEN B$=B$+"S" 18 | A=ST(7):IF A THEN C$="{white}"+STR$(A)+" {green}DOWNLOAD":F=(F)OR 8:IF A<>1 THEN C$=C$+"S" 19 | GOSUB{:4010}:A$=A$+D$ 20 | A=ST(3):IF A THEN B$="{white}"+STR$(A)+" {lt. green}MAIL":F=(F)OR 16 21 | A=ST(1):IF A THEN C$="{white}"+STR$(A)+" {green}FEEDBACK":F=(F)OR 32 22 | GOSUB{:4010}:A$=A$+D$ 23 | A$=A$+" {lt. blue}LOGOFF{white}: {$04}"+O$+R$+" {yellow}STATS {white}:"+STR$(CR)+" {gray3}CREDITS"+R$ 24 | A$=A$+LEFT$(AK$,24):GOSUB 50 25 | DR=3:GOSUB 3:&,60,3,.,L%(.,.),610,DR$+"E.LAST",DV% 26 | &,25,.,2:IM=1:GOSUB 445:CLOSE 2:D3$=NA$ 27 | GOSUB 33:X=1:GOSUB 1:PRINT# 2,CA+1:X=17:GOSUB 1:PRINT# 2,D3$ 28 | X=19:GOSUB 1:PRINT# 2,O$:CLOSE 2:CLOSE 15 29 | &,28,3:RETURN 30 | -------------------------------------------------------------------------------- /v2/core/plus- lo - filelist.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | &,27,2:fd=10:bl=10:dim s%(8+bl,fd):tz=0:gosub {:4002}:&,28,2:return 3 | {:4002} 4 | dr=3:a$="e.U/D":gosub 1011:if e%then:&"{f6}Error opening UD file{f6:2}{pound}w1":return 5 | &,2,2:bz=val(a$):for x=2 to bz+1:gosub 1001:&,2,2:&,2,2:&,2,2:tt$(x-1)=a$:next 6 | close 2:tt$(0)="None":a$=dr$+"e.filelists":&,60,2,0,s%(0,0),a$,dv%:gosub 1012 7 | s$=" " 8 | for i=1 to fd:&,60,1,16,s%(1,i),b$:if s%(0,i)=0 or b$="" then {:4038} 9 | dr=3:a$="e.U/D":gosub 1011:x=s%(0,i)+1:gosub 1001:&,2,2:&,2,2:&,2,2:&,2,2 10 | &,2,2:d1%=val(a$):&,2,2:d2%=val(a$):close 2 11 | dr=0:gosub 1010:print# 15,"s"dr$b$:a$=b$+",s,w":gosub 1011 12 | print# 2,"{white}File list: {cyan}{$04}"d1$:dr=4:gosub 1009:close 16:open 16,dv%,15 13 | for j=1 to bl:a=s%(8+j,i):if a=0 then{:4036} 14 | print# 2,"{lt. blue}"tt$(a)r$ 15 | close 3:open 3,dv%,3,dr$+"d.u/d"+str$(a)+",s,r":input# 16,e% 16 | k=1:on-(e%<>0)goto {:4034}:&"UD{pound}!a" 17 | &,2,3:a=val(a$):on-(a=0)goto {:4034}:for k=1 to a:&,2,3:b=val(a$):&,2,3:&,2,3 18 | d$=mid$(a$,4,2)+"/"+mid$(a$,6,2)+"/"+mid$(a$,2,2):f$=mid$(a$,23) 19 | f$=left$(f$,len(f$)-2)+","+right$(f$,1):&,2,3:b$=a$:&,2,3:&,2,3:n=val(a$) 20 | print# 2,"{white}"right$(s$+str$(b),4);" {cyan}";left$(f$+s$,20);" {white}"d$:rem print#2,b$ 21 | &".":next:&"{f6}" 22 | {:4034} 23 | print# 2,r$;"{white}"k-1"Files"r$:close 3 24 | {:4036} 25 | next:close 2 26 | {:4038} 27 | next:return 28 | -------------------------------------------------------------------------------- /v1.2/docs/plusplus index 1_2.txt: -------------------------------------------------------------------------------- 1 | ;++ 4.docs ++ 4 (indexer) functions: 2 | 3 | FIND &,16 4 | Uses a binary search to find the string AN$ in the REL file. 5 | Entry: AN$=sting to find 6 | File 2 must be open to the REL file 7 | File 15 must be open to the command channel 8 | Exit: if found then A%=value found, B%=position found 9 | if not found then A%=0, B%=position to insert 10 | 11 | LOADINDX &,16,1 12 | Load an index into the index buffer. 13 | Entry: A$=drive#+filename, DV%=device 14 | Exit: A%=# of entries in index 15 | 16 | SAVEINDX &,16,2 17 | Save an index to disk. 18 | Entry: A$=drive#+filename, DV%=device 19 | 20 | MAKEINDX &,16,3 21 | This will clear the index buffer. 22 | 23 | INSTINDX &,16,4 24 | This will insert a value into the index buffer. 25 | Entry: A%=value, B%=position 26 | 27 | DELTINDX &,16,5 28 | This will delete a value from the index buffer. 29 | Entry: B%=position 30 | 31 | NEXTINDX &,16,6 32 | This will return the next value from the index buffer. 33 | Entry: B%=current position 34 | Exit: A%=value at new position, B%=new position 35 | 36 | SETCRSKP &,16,7 37 | This will set the # of Carriage Returns to skip when reading data. This 38 | allows fields other than the first one to be indexed. 39 | Entry: A%=# of CRs 40 | 41 | FINDINDX &,16,8 42 | This will find the first occurance of the value given. 43 | Entry: A%=value to find 44 | Exit: B%=position found at, or 0 if not found. 45 | -------------------------------------------------------------------------------- /v2/core/plus_QM.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{clear}{f6:2}{lt. blue}{pound}v5 QuickMail{f6:2}" 5 | {:3002} 6 | a=9:GOSUB 1004:IF a=.THEN x=4:GOSUB 1980:RETURN 7 | &"{lt. red}Enter User Handle Or ID#.{f6:2}":GOSUB 1006:x=ABS(VAL(an$)):IF x THEN{:3010} 8 | GOSUB 1046:x=i:IF x THEN nn$=an$:GOTO {:3016} 9 | &"{f6:2}{white}{f5}{lt. blue}{pound}v7{white}{f5} {lt. blue}Not Found.{f6}":RETURN 10 | {:3010} 11 | IF x<1 OR x>ur THEN{:3014} 12 | GOSUB 1065:GOSUB 1001:INPUT# 2,nn$:IF nn$<>"{up arrow}"AND nn$<>"RES"THEN{:3016} 13 | {:3014} 14 | &"{f6}{yellow}Invalid Account Number.{f6}":x=.:RETURN 15 | {:3016} 16 | &"{f6}{lt. green}Handle: {rvrs on}"+nn$+"{f6}{yellow}Is That Correct?: ":GOSUB 1902:IF a=.THEN{:3002} 17 | GOSUB 1079:ON-(a<20)GOTO {:3038}:GOSUB 1085:IF a THEN GOSUB 1980:RETURN 18 | POKE 53252,30:&"{f6}":&"Subject: ":pl=.:&,1,5:IF an$=""THEN an$="QuickMail" 19 | &"Subject: {pound}v7{f6}":c$="QuickMail" 20 | tt$(.)="["+an$+"]":y=i:GOSUB 1604:a=1:IF kk=.THEN RETURN 21 | &"{f6}Filing Mail For "+nn$+"...{f6}" 22 | z=1:a$="w":tt$=nn$:GOSUB 1062:IF e%THEN a$="a":z=.:GOSUB 1062 23 | PRINT# 2,na$r$id;r$d1$:FOR x=.TO kk-1:PRINT# 2,tt$(x):NEXT:PRINT# 2,"{up arrow}":CLOSE 2 24 | IF y=1 THEN GOSUB 1060:x=2:i=1:GOSUB 1025:x=13:GOSUB 1025:x=24:GOSUB 1025:x=31:GOSUB 1025 25 | ON-(y<>1)GOSUB 1060:x=3:i=1:GOSUB 1025:x=14:GOSUB 1025:x=32:GOSUB 1025 26 | x=25:ON z GOSUB 1025:CLOSE 2:GOSUB 1081:RETURN 27 | {:3038} 28 | x=2:GOSUB 1980:RETURN 29 | rem "+.QM" 30 | -------------------------------------------------------------------------------- /v2/core/plus- lo-last.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem last five callers 3 | close 2:a$="e.last,s,r":dr=3:gosub 1011:for i=0 to 5:&,2,2:tt$(i)=a$:next:close 2 4 | a=ll%/2-16:l$="":if a>0 then l$=left$(" ",a) 5 | &"{f6}{pound}$l{lt. blue}{pound}o{$a4:14}{f6}{pound}$l{rvrs on} Last Five Callers {f6}" 6 | &"{pound}$l{pound}o{$a3:14}{f6}" 7 | gosub {:4014}:for i=1 to 5:a$=left$(tt$(i),11):b$=mid$(tt$(i),12):a%=i 8 | &"{pound}$l{white}{pound}%a. {yellow}{pound}$b{f6}{pound}$l{white}On {lt. blue}{$04}"+a$+"{f6}":next 9 | {:4014} 10 | on nl goto {:4016},{:4022}:return 11 | {:4016} 12 | a$="{lt. blue} {$b9}{purple} {$b9}{yellow} {$b9}":&"{pound}$l{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 13 | a$="{lt. blue}{$b4}{yellow}{$b4}{purple}{$b4}":&"{pound}$l{rvrs on}{purple} {pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 14 | a$="{yellow} {$b7}{lt. blue} {$b7}{purple} {$b7}":&"{pound}$l{purple}{$b7}{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}":return 15 | {:4022} 16 | a$="{lt. blue}{$a2:2}{purple}{$a2:2}{yellow}{$a2:2}" 17 | b$="{lt. blue}{$a1}{$b6}{purple}{$a1}{$b6}{yellow}{$a1}{$b6}" 18 | c$="{lt. blue}{$b8:2}{purple}{$b8:2}{yellow}{$b8:2}" 19 | rem printa$a$a$:printb$b$b$:printc$c$c$:end 20 | &"{pound}$l {pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 21 | &"{pound}$l {pound}$b{pound}$b{pound}$b{pound}$b{pound}$b{f6}" 22 | &"{pound}$l {pound}$c{pound}$c{pound}$c{pound}$c{pound}$c{f6}" 23 | return 24 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashan.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | rem "+/lo/an" - write auto-new user welcome 5 | &"{f6}{yellow}AutoNew {green}- Version 1.0{f6:2}{gray3}Reading new users." 6 | x=.:dr=3:a$="e.new temp,s,r":GOSUB 1011:b=.:IF e%THEN CLOSE 2:x=1:GOTO {:4012} 7 | {:4006} 8 | &,2,2:b=b+1:tt$(b)=a$:s=st:&"." 9 | IF s=.THEN{:4006} 10 | &"{f6}{lt. green}Scratching Old File...{f6}":CLOSE 2:dr=3:a$="e.new temp":GOSUB 1024 11 | {:4012} 12 | &"{f6}{green}Writing News File...{f6}":dr=1:a$="n.$Welcome!":GOSUB 1023:ON x GOTO {:4026} 13 | PRINT# 2,"{lt. red}{pound}vj{white}{pound}$q {rvrs on}{pound}{back arrow}06Please Welcome Our New Users:{rvrs off}{pound}{back arrow}39{f6}{lt. red}{pound}vj{f6}" 14 | FOR i=1 TO b STEP 3:an$=tt$(i):&,15,1:tt$(i)=an$:PRINT# 2,"{pound}$q {yellow}{rvrs on}";tt$(i) 15 | an$=tt$(i+1):&,15,1:tt$(i+1)=an$:PRINT# 2,"{pound}$q {gray3}From:{white} ";tt$(i+1); 16 | PRINT# 2,", ";tt$(i+2):NEXT:PRINT# 2,"{f6:2}{lt. green}{pound}$qYou are invited to send them a"; 17 | PRINT# 2," message of welcome!" 18 | {:4024} 19 | PRINT# 2,"{f6:2}{pound}$q{gray3}(Tap One) {pound}g1{pound}hj":CLOSE 2:RETURN 20 | {:4026} 21 | PRINT# 2,"{lt. green}{pound}vj{white}{pound}$q {rvrs on}{pound}{back arrow}06There Have Been No New Users In {rvrs off}{pound}{back arrow}39{f6}"; 22 | PRINT# 2,"{pound}$q {rvrs on}{pound}{back arrow}06The Past 24 Hours. {rvrs off}" 23 | PRINT# 2,"{lt. green}{pound}vj":x=.:GOTO {:4024} 24 | copr. 1994 NEW image 9/11/94 25 | 26 | -------------------------------------------------------------------------------- /v2/core/plus- lo - payroll.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | rem distribute paychecks 3 | n=0:dr=6:a$="u.payroll,s,r":gosub 1011:if e% then {:4012} 4 | {:4004} 5 | n=n+1:&,2,2:a%(n)=val(left$(a$,3)):c%(n)=val(mid$(a$,5)):if st=. then {:4004} 6 | close 2:&"{f6}Executing Credit Payroll{f6:2}" 7 | gosub 1065:for i=1 to n:x=a%(i):c%=c%(i):gosub {:4014}:next:close 2 8 | for k=1 to n:tt$=tt$(k):c%=c%(k):gosub {:4022}:next 9 | {:4012} 10 | close 2:return 11 | {:4014} 12 | gosub 1001:for j=1 to 23:&,2,2:ed$(j)=a$:next 13 | a$=ed$(1):tt$(i)=a$:if a$="{up arrow}"then return 14 | &"{pound}$a{pound}{back arrow}25{pound}%c Credits{f6}":ed$(19)=str$(val(ed$(19))+c%) 15 | a$="":for j=1 to 23:a$=a$+ed$(j)+r$:next:gosub 1001:print# 2,a$:return 16 | {:4022} 17 | a$=tt$:&"{pound}$a{pound}{back arrow}30Notified{f6}":if tt$="{up arrow}" then {:4036} 18 | z=1:a$="w":gosub 1062:if e%then z=.:a$="a":gosub 1062 19 | print# 2,"IMAGE"r$0;r$d1$r$"[Payroll]"r$ 20 | print# 2,"You have received"str$(c%)" credits{f6}"r$"for this week's paycheck." 21 | print# 2,"{up arrow}":gosub 1060:i=1:x=3:gosub 1025:x=14:gosub 1025:x=32:gosub 1025 22 | if y=1 then for x=2 to 24 step 11:gosub 1025:next:x=31:gosub 1025 23 | x=25:on z gosub 1025:close 2:goto 1079 24 | {:4036} 25 | dr=3:a$="fback":b$="a":gosub 1027:if e%then a$="fback":b$="w":gosub 1027 26 | print# 2,"IMAGE"r$"0"d1$r$"0"r$"None"r$"IMAGE {$c2:2}S"r$"Commodore 64" 27 | print# 2,"Paycheck To Non-Existant User:"r$tt$r$"{up arrow}":close 2:return 28 | copr. 1990 new image 12-26-90 29 | -------------------------------------------------------------------------------- /v2/tests/align-test.asm: -------------------------------------------------------------------------------- 1 | ; $1000 seems to be the practical limit to the amount 2 | ; of data you can align in a single align statement (2k) 3 | 4 | ; one data byte must be inserted between align statements 5 | 6 | ; align $0800 = 2k 7 | 8 | ; don't try align $8000 ... abnormal program termination (at least under wine) 9 | 10 | orig $6c00 11 | lda #$01 12 | 13 | {info:Aligning to $7000.} 14 | align $0400,$00 15 | lda #$02 16 | 17 | {info:Aligning to $8000.} 18 | align $1000,$00 19 | lda #$03 20 | 21 | {info:Aligning to $8400.} 22 | align $0400,$00 23 | lda #$04 ; $8400 24 | 25 | addrcheck $8e00 26 | 27 | {info:Aligning to $8e00.} 28 | align $0b00,$00 ; $8400 + $0a00 = $8c00 29 | 30 | addrcheck $8e00 ; passes with beta-c 31 | 32 | byte $ea 33 | ; align $0200,$00 34 | ; lda #$05 ; $8c00 + $0200 = $8e00 35 | 36 | 37 | lda #$06 ; $8e00 38 | 39 | align $0200,$00 40 | 41 | lda #$07 ; $9800 42 | 43 | align $0800,$ea 44 | 45 | lda #$08 ; $a000 46 | 47 | {info:Aligning to $9400.} 48 | align $0600,$00 49 | lda #$09 50 | 51 | {info:Aligning to $9800.} 52 | align $0400,$00 53 | lda #$0a 54 | 55 | {info:Aligning to $9c00.} 56 | align $0400,$00 57 | lda #$0b 58 | 59 | {info:Aligning to $a000.} 60 | align $0400,$00 61 | lda #$0c 62 | 63 | {info:Aligning to $c000.} 64 | align $2000,$00 65 | lda #$0d 66 | 67 | {info:Aligning to $cb00.} 68 | align $0200,$00 69 | lda #$0e 70 | 71 | {info:Aligning to $cd00.} 72 | align $0e00,$00 73 | lda #$0f 74 | 75 | {info:Aligning to $ce00.} 76 | align $0100,00 77 | lda #$10 78 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.menu4.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | _____________________ 4 | ATTACK MENU 5 | 6 | (1) Attacks Armies 7 | (2) Attack The Palace 8 | (3) Ambush Nobles 9 | (4) Sell Armies To The Rebels 10 | (5) Use Sneak Attack (1 turn) 11 | (6) Abort Attack 12 | (Y)our Status 13 | 14 | _ _ 15 | 16 | \X\MB\ 17 | _____________________ 18 | ATTACK MENU 19 | 20 | (1) Attacks Armies 21 | (2) Attack The Palace 22 | (3) Ambush Nobles 23 | (4) Sell Armies To The Rebels 24 | (5) Use Sneak Attack (1 turn) 25 | (6) Abort Attack 26 | (Y)our Status 27 | 28 | _ _ 29 | 30 | MAINLAND.................ISLAND 31 | ------------------------------- 32 | (1) Grain - Grain (1) 33 | (2) Serfs - Serfs (2) 34 | (3) Nobles - Soldiers (3) 35 | (4) Navigators - Horses (4) 36 | (5) Spices - Exports (5) 37 | (6) Ship Stats - Ship Stats (6) 38 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashfilelist.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | &,27,2:fd=10:bl=10:DIM s%(8+bl,fd):tz=0:GOSUB {:4002}:&,28,2:RETURN 5 | {:4002} 6 | dr=3:a$="e.U/D":GOSUB 1011:IF e%THEN:&"{f6}Error opening UD file{f6:2}{pound}w1":RETURN 7 | &,2,2:bz=VAL(a$):FOR x=2 TO bz+1:GOSUB 1001:&,2,2:&,2,2:&,2,2:tt$(x-1)=a$:NEXT 8 | CLOSE 2:tt$(0)="None":a$=dr$+"e.filelists":&,60,2,0,s%(0,0),a$,dv%:GOSUB 1012 9 | s$=" " 10 | FOR i=1 TO fd:&,60,1,16,s%(1,i),b$:IF s%(0,i)=0 OR b$=""THEN{:4038} 11 | dr=3:a$="e.U/D":GOSUB 1011:x=s%(0,i)+1:GOSUB 1001:&,2,2:&,2,2:&,2,2:&,2,2 12 | &,2,2:d1%=VAL(a$):&,2,2:d2%=VAL(a$):CLOSE 2 13 | dr=0:GOSUB 1010:PRINT# 15,"s"dr$b$:a$=b$+",s,w":GOSUB 1011 14 | PRINT# 2,"{white}File list: {cyan}{$04}"d1$:dr=4:GOSUB 1009:CLOSE 16:OPEN 16,dv%,15 15 | FOR j=1 TO bl:a=s%(8+j,i):IF a=0 THEN{:4036} 16 | PRINT# 2,"{lt. blue}"tt$(a)r$ 17 | CLOSE 3:OPEN 3,dv%,3,dr$+"d.u/d"+STR$(a)+",s,r":INPUT# 16,e% 18 | k=1:ON-(e%<>0)GOTO {:4034}:&"UD{pound}!a" 19 | &,2,3:a=VAL(a$):ON-(a=0)GOTO {:4034}:FOR k=1 TO a:&,2,3:b=VAL(a$):&,2,3:&,2,3 20 | d$=MID$(a$,4,2)+"/"+MID$(a$,6,2)+"/"+MID$(a$,2,2):f$=MID$(a$,23) 21 | f$=LEFT$(f$,LEN(f$)-2)+","+RIGHT$(f$,1):&,2,3:b$=a$:&,2,3:&,2,3:n=VAL(a$) 22 | PRINT# 2,"{white}"RIGHT$(s$+STR$(b),4);" {cyan}";LEFT$(f$+s$,20);" {white}"d$:REM print#2,b$ 23 | &".":NEXT:&"{f6}" 24 | {:4034} 25 | PRINT# 2,r$;"{white}"k-1"Files"r$:CLOSE 3 26 | {:4036} 27 | NEXT:CLOSE 2 28 | {:4038} 29 | NEXT:RETURN 30 | rem "+/lo/filelist" automaint 31 | -------------------------------------------------------------------------------- /v2/core/plusslashlo-last.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | rem "+/lo-last" - last five callers 4/25/2019 5 | CLOSE 2:a$="e.last,s,r":dr=3:GOSUB 1011:FOR i=0 TO 5:&,2,2:tt$(i)=a$:NEXT:CLOSE 2 6 | a=ll%/2-16:l$="":IF a>0 THEN l$=LEFT$(" ",a) 7 | &"{f6}{pound}$l{lt. blue}{pound}o{$a4:14}{f6}{pound}$l{rvrs on} Last Five Callers {f6}" 8 | &"{pound}$l{pound}o{$a3:14}{f6}" 9 | GOSUB {:4014}:FOR i=1 TO 5:a$=LEFT$(tt$(i),11):b$=MID$(tt$(i),12):a%=i 10 | &"{pound}$l{white}{pound}%a. {yellow}{pound}$b{f6}{pound}$l{white}On {lt. blue}{$04}"+a$+"{f6}":NEXT 11 | {:4014} 12 | ON nl GOTO {:4016},{:4022}:RETURN 13 | {:4016} 14 | a$="{lt. blue} {$b9}{purple} {$b9}{yellow} {$b9}":&"{pound}$l{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 15 | a$="{lt. blue}{$b4}{yellow}{$b4}{purple}{$b4}":&"{pound}$l{rvrs on}{purple} {pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 16 | a$="{yellow} {$b7}{lt. blue} {$b7}{purple} {$b7}":&"{pound}$l{purple}{$b7}{pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}":RETURN 17 | {:4022} 18 | a$="{lt. blue}{$a2:2}{purple}{$a2:2}{yellow}{$a2:2}" 19 | b$="{lt. blue}{$a1}{$b6}{purple}{$a1}{$b6}{yellow}{$a1}{$b6}" 20 | c$="{lt. blue}{$b8:2}{purple}{$b8:2}{yellow}{$b8:2}" 21 | ' REM printa$a$a$:printb$b$b$:printc$c$c$:end 22 | &"{pound}$l {pound}$a{pound}$a{pound}$a{pound}$a{pound}$a{f6}" 23 | &"{pound}$l {pound}$b{pound}$b{pound}$b{pound}$b{pound}$b{f6}" 24 | &"{pound}$l {pound}$c{pound}$c{pound}$c{pound}$c{pound}$c{f6}" 25 | RETURN 26 | -------------------------------------------------------------------------------- /v2/core/plusslashloslashpayroll.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+/lo/payroll" - distribute paychecks 5 | n=0:dr=6:a$="u.payroll,s,r":GOSUB 1011:IF e%THEN{:4012} 6 | {:4004} 7 | n=n+1:&,2,2:a%(n)=VAL(LEFT$(a$,3)):c%(n)=VAL(MID$(a$,5)):IF st=.THEN{:4004} 8 | CLOSE 2:&"{f6}Executing Credit Payroll{f6:2}" 9 | GOSUB 1065:FOR i=1 TO n:x=a%(i):c%=c%(i):GOSUB {:4014}:NEXT:CLOSE 2 10 | FOR k=1 TO n:tt$=tt$(k):c%=c%(k):GOSUB {:4022}:NEXT 11 | {:4012} 12 | CLOSE 2:RETURN 13 | {:4014} 14 | GOSUB 1001:FOR j=1 TO 23:&,2,2:ed$(j)=a$:NEXT 15 | a$=ed$(1):tt$(i)=a$:IF a$="{up arrow}"THEN RETURN 16 | &"{pound}$a{pound}{back arrow}25{pound}%c Credits{f6}":ed$(19)=STR$(VAL(ed$(19))+c%) 17 | a$="":FOR j=1 TO 23:a$=a$+ed$(j)+r$:NEXT:GOSUB 1001:PRINT# 2,a$:RETURN 18 | {:4022} 19 | a$=tt$:&"{pound}$a{pound}{back arrow}30Notified{f6}":IF tt$="{up arrow}"THEN{:4036} 20 | z=1:a$="w":GOSUB 1062:IF e%THEN z=.:a$="a":GOSUB 1062 21 | PRINT# 2,"IMAGE"r$0;r$d1$r$"[Payroll]"r$ 22 | PRINT# 2,"You have received"STR$(c%)" credits{f6}"r$"for this week's paycheck." 23 | PRINT# 2,"{up arrow}":GOSUB 1060:i=1:x=3:GOSUB 1025:x=14:GOSUB 1025:x=32:GOSUB 1025 24 | IF y=1 THEN FOR x=2 TO 24 STEP 11:GOSUB 1025:NEXT:x=31:GOSUB 1025 25 | x=25:ON z GOSUB 1025:CLOSE 2:GOTO 1079 26 | {:4036} 27 | dr=3:a$="fback":b$="a":GOSUB 1027:IF e%THEN a$="fback":b$="w":GOSUB 1027 28 | PRINT# 2,"IMAGE"r$"0"d1$r$"0"r$"None"r$"IMAGE BBS"r$"Commodore 64" 29 | PRINT# 2,"Paycheck To Non-Existant User:"r$tt$r$"{up arrow}":CLOSE 2:RETURN 30 | copr. 1990 NEW image 12-26-90 31 | -------------------------------------------------------------------------------- /v2/core/plus_MM_ld.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM "+.MM.ld" 5 | {:4002} 6 | nr=1:&"{f6}{cyan}Last Call: {$04}"+ld$+"{f6:2}Add Or Subtract How Many Days? {f6:2}Last: {pound}i1" 7 | a=INT(VAL(an$)):IF tr%<1 THEN RETURN 8 | ON-(a=.)GOTO {:4032}:IF a<-999 OR a>999 THEN:&"{f6}Out Of Range!{f6}":GOTO {:4002} 9 | b=VAL(LEFT$(ld$,1))+a:c=VAL(MID$(ld$,2,2)):d=VAL(MID$(ld$,4,2)) 10 | e=VAL(MID$(ld$,6,2))+a:a$="{blue}{red}{blue}{green}{blue}{green}{blue:2}{green}{blue}{green}{blue}" 11 | {:4012} 12 | IF e<=ASC(MID$(a$,d))THEN{:4018} 13 | e=e-ASC(MID$(a$,d)):d=d+1:IF d<13 THEN{:4012} 14 | d=1:c=c+1:GOTO {:4012} 15 | {:4018} 16 | IF e>.THEN{:4024} 17 | d=d-1:e=e+ASC(MID$(a$,d-12*(d=.))):IF d>.THEN{:4018} 18 | d=12:c=c-1:GOTO {:4018} 19 | {:4024} 20 | IF b>7 THEN b=b-7:GOTO {:4024} 21 | {:4026} 22 | IF b<1 THEN b=b+7:GOTO {:4026} 23 | a$=RIGHT$("0"+MID$(STR$(c),2),2)+RIGHT$("0"+MID$(STR$(d),2),2) 24 | ld$=CHR$(48+b)+a$+RIGHT$("0"+MID$(STR$(e),2),2)+RIGHT$(ld$,4) 25 | {:4032} 26 | &"{f6}Change Time?: ":GOSUB 1902:ON a GOSUB {:4036} 27 | &"{f6}Last Date: {$04}"+ld$:&"{f6:2}":RETURN 28 | {:4036} 29 | &"{f6}Enter Time In This Format:{f6:2}Example: 9:20 AM--920A{f6}" 30 | &"{pound}{back arrow}0911:23 PM--1123P{f6:2}Last: {pound}i1" 31 | a$=RIGHT$(an$,1):IF an$=""THEN RETURN 32 | an$=LEFT$(an$,LEN(an$)-1):IF(a$<>"A"AND a$<>"P")OR VAL(RIGHT$(an$,2))>59 THEN{:4036} 33 | IF VAL(an$)>1259 OR VAL(an$)<100 THEN{:4036} 34 | t=-(a$="P")*8000 35 | ld$=LEFT$(ld$,7)+RIGHT$("0"+MID$(STR$(VAL(an$)+t),2),4):RETURN 36 | copr.1990 NEW image 01/02/90 37 | -------------------------------------------------------------------------------- /v1.2/games/empire6/includes.lbl: -------------------------------------------------------------------------------- 1 | ' ----------line label assignments----------------- 2 | {assign:1=1} 3 | {assign:sub.load_lmp=5} 4 | {assign:sub.comma_value=10} 5 | {assign:2852=12} 6 | {assign:sub.str_to_int=15} 7 | {assign:sub.any_key=20} 8 | {assign:sub.open_playerlog=25} 9 | {assign:save_stats_quit=30} 10 | {assign:sub.save_your_stats=35} 11 | {assign:sub.load_your_stats=40} 12 | {assign:quit_game=45} 13 | {assign:quit_game_2=46} 14 | {assign:sub.other_rulers=50} 15 | {assign:58=54} 16 | {assign:64=57} 17 | {assign:sub.rank=60} 18 | {assign:sub.rank_2=64} 19 | {assign:484=65} 20 | {assign:486=66} 21 | {assign:sub.request_your_status=70} 22 | {assign:sub.your_status=71} 23 | {assign:sub.log_event=90} 24 | {assign:sub.read_config=92} 25 | {assign:init=100} 26 | {assign:start_turn=106} 27 | {assign:351=108} 28 | {assign:352=109} 29 | {assign:353=111} 30 | {assign:sub.title=115} 31 | {assign:412=119} 32 | {assign:414=120} 33 | {assign:416=121} 34 | {assign:420=123} 35 | {assign:422=124} 36 | {assign:700=125} 37 | 38 | ' Image BBS line numbers 39 | {assign:1001=1001} 40 | {assign:1012=1012} 41 | {assign:1023=1023} 42 | {assign:1027=1027} 43 | {assign:1811=1811} 44 | {assign:sub.yes_no=1902} 45 | 46 | ' encoded characters represented by function keys 47 | ' (in quoted strings and disk files/filenames): 48 | {quoter:comma =133} ' f1 , 49 | {quoter:question=137} ' f2 ? 50 | {quoter:colon =134} ' f3 : 51 | {quoter:equal =138} ' f4 = 52 | {quoter:quote =135} ' f5 " 53 | {quoter:return =139} ' f6 [K] 54 | {quoter:asterisk=136} ' f7 * 55 | {quoter:uparrow =140} ' f8 ^ 56 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo.instant.lbl: -------------------------------------------------------------------------------- 1 | REM" 'I.LO.INSTANT' 10APR95 JLF INSTANT LOGIN MODULE " 2 | REM I/LO.INSTANT 3 | &,27,2:DIM FB%(29,15),FF%(15):DR=3:GOSUB 3:REM FB WAS DB 4 | &,60,2,.,FB%(.,.),DR$+"E.SYSOPLIST",DV%:GOSUB 5:IF E% then {:4028} 5 | &,52,4,3:&,60,8,FB%(.,.),60,2^(A%+3),FB%(11,1),FF%(1),1:IF A%=. then {:4028} 6 | FOR I=1 TO A%:X=FF%(I):&,60,1,20,FB%(1,X),AN$:&,15,1:B%=FB%(.,X) 7 | &" {white}{pound}!I. {green}{pound}V7 {cyan}{pound}{back arrow}28(ID# {pound}#0{pound}%B){f6}":NEXT:POKE 53252,4 8 | &"{f6}{gray3} LOGON WHICH ACCOUNT?{white}: {pound}I1":A=VAL(AN$):ON-(A<1 OR A>A%OR TR%<1)GOTO{:4024} 9 | A=FF%(A):ID=FB%(.,A):I%=1:&,28,2:&"4014{f6}":GOSUB{:4060} 10 | GOTO{:4030}:ON I%AND ZZ GOTO{:4040}:GOTO{:4030} 11 | &,28,2 12 | {:4022} 13 | MM=9:GOTO 3000 14 | {:4024} 15 | &,28,2 16 | {:4026} 17 | MM=.:F1=3:GOTO 3000 18 | {:4028} 19 | &,28,2:ID=1:I%=1:GOTO{:4030} 20 | {:4030} 21 | &"{f6}{gray3} PLEASE ENTER YOUR PASSWORD{white}:{f6:2}{pound}B1: ":POKE 53252,14:&,6:IF TR%<1 THEN{:4026} 22 | Z$=AN$:&"4032{f6}":GOSUB{:4060}:ON-(Z$="")GOTO{:4050} 23 | {:4040} 24 | &"4040: LOOK UP ACCOUNT{f6}":IM=2:GOSUB 445:IF NA$="{up arrow}"OR NA$="RES" then {:4052} 25 | GOSUB{:4060}:ON-(PW$<>Z$)GOTO{:4050}:&"{f6}{lt. red}LOGIN COMPLETE!{f6}":IF ZZ=.THEN K%=I%:I%=. 26 | MM=10:GOTO 3000 27 | {:4050} 28 | &"{f6}{lt. red}LOGIN IS NOT VALID.{f6}":GOTO{:4022} 29 | {:4052} 30 | LP=1:&"{f6}{lt. red}THAT ACCOUNT HAS BEEN DELETED OR IS NOT ACTIVE.{f6}":GOTO{:4022} 31 | {:4060} 32 | &"{f6}4060: Z$={pound}$Z, AN$={pound}V7, I%={pound}%I, ZZ="+STR$(ZZ)+"{f6}":RETURN 33 | -------------------------------------------------------------------------------- /v2/tests/plus_test area.lbl: -------------------------------------------------------------------------------- 1 | {alpha:upper} 2 | {quoter:$20="space"} 3 | {quoter:$c1="A"} 4 | {quoter:$c2="B"} 5 | {quoter:$c3="C"} 6 | {quoter:$c4="D"} 7 | {quoter:$c5="E"} 8 | {quoter:$c6="F"} 9 | {quoter:$c7="G"} 10 | {quoter:$c8="H"} 11 | {quoter:$c9="I"} 12 | {quoter:$ca="J"} 13 | {quoter:$cb="K"} 14 | {quoter:$cc="L"} 15 | {quoter:$cd="M"} 16 | {quoter:$ce="N"} 17 | {quoter:$cf="O"} 18 | {quoter:$d0="P"} 19 | {quoter:$d1="Q"} 20 | {quoter:$d2="R"} 21 | {quoter:$d3="S"} 22 | {quoter:$d4="T"} 23 | {quoter:$d5="U"} 24 | {quoter:$d6="V"} 25 | {quoter:$d7="W"} 26 | {quoter:$d8="X"} 27 | {quoter:$d9="Y"} 28 | {quoter:$da="Z"} 29 | ' other ranges of uppercase characters will display wrong with &,69 30 | {number:3000} 31 | rem +.TEST AREA 32 | a=peek(17139):&"{S}creen mask (17139)={pound}!a{f6}" 33 | &"{C}lear area display":cm$="":gosub {:sub.update_area} 34 | cm$=" {S}ystem {A}uto{M}aint ":c=5 35 | &"{D}isplay {f5}"+cm$+"{f5} in reverse green":gosub {:sub.update_area} 36 | goto 1811 37 | 38 | {nice:10} 39 | {:sub.update_area} 40 | ' fixme: "area" strings can be " <21 chars> " now, in idle or online modes 41 | ' new: clear cm$ area in med. gray, specify color of title in c 42 | ' new: to clear cm$, set cm$="" 43 | ' {pound}o prints literally - need {space:21} 44 | ' $81=rvs white $82=rvs red $85=rvs green 45 | ' question: is , optional? 46 | if peek(17139)=. then:&,69,4,21,"{space:23}",$8c:if cm$<>"" then:&,69,5,21,left$(cm$,21),$80+c 47 | 48 | {nice:10} 49 | {:sub.get_key} 50 | &"{f6}{K}ey: {pound}g1{f6}":return 51 | 52 | {number:3999} 53 | rem by pinacolada 54 | -------------------------------------------------------------------------------- /v2/core/jack/islashlo-UB.update.lbl: -------------------------------------------------------------------------------- 1 | REM ADD BIOGRAPHIES 2 | IF AC%<1 THEN{:4540} 3 | DR=6:A$="U.BIOGRAPHIES":GOSUB 4:IF E% then {:4540} 4 | X=ID:GOSUB 1:&,2,2:IF A$=NA$ then {:4540} 5 | &"{f6}{purple} {$b0}{$c0:20}{$ae}" 6 | &"{f6}{purple} {$dd}{cyan}{rvrs on} OUR DATABASE DOES {purple}{rvrs off}{$dd}" 7 | &"{f6}{purple} {$dd}{cyan}{rvrs on} NOT HOLD YOUR BIO- {purple}{rvrs off}{$dd}" 8 | &"{f6}{purple} {$dd}{cyan}{rvrs on} GRAPHY. PLEASE ADD {purple}{rvrs off}{$dd}" 9 | &"{f6}{purple} {$dd}{cyan}{rvrs on} YOUR CITY{f1} STATE {purple}{rvrs off}{$dd}" 10 | &"{f6}{purple} {$dd}{cyan}{rvrs on} AND{f1} A SHORT QUOTE {purple}{rvrs off}{$dd}" 11 | &"{f6}{purple} {$dd}{cyan}{rvrs on} OR SAYING ABOUT {purple}{rvrs off}{$dd}" 12 | &"{f6}{purple} {$dd}{cyan}{rvrs on} YOURSELF FOR OUR {purple}{rvrs off}{$dd}" 13 | &"{f6}{purple} {$dd}{cyan}{rvrs on} OTHER USERS TO SEE.{purple}{rvrs off}{$dd}" 14 | &"{f6}{purple} {$ad}{$c0:20}{$bd}{f6}" 15 | {:4528} 16 | POKE 53252,20:&"{f6}{cyan}ENTER YOUR CITY:{lt. green} {pound}I1":ON TR%+1 GOTO{:4540}:ON-(AN$="")GOTO{:4528}:B$=AN$+R$ 17 | {:4530} 18 | POKE 53252,2:&"{f6}{cyan}ENTER YOUR STATE {white}(TWO LETTERS):{lt. green} {pound}I1":ON TR%+1 GOTO{:4540} 19 | ON-(AN$="")GOTO{:4530}:B$=B$+AN$+R$ 20 | {:4534} 21 | POKE 53252,79:PL=.:&"{f6}{cyan}ENTER YOUR BIOGRAPHY {white}(80 CHARS MAX){lt. green}{f6}":P$="":&,1,9 22 | ON TR%+1 GOTO{:4540}:ON-(AN$="")GOTO{:4534}:B$=NA$+R$+B$+AN$ 23 | DR=6:A$="U.BIOGRAPHIES":GOSUB 4:X=ID:GOSUB 1:PRINT# 2,B$:CLOSE 2:GOTO{:4540} 24 | {:4540} 25 | GOTO 12 26 | COPR. 1994 NEW IMAGE 9/14/94 27 | -------------------------------------------------------------------------------- /v2/core/jack/i_menuedit.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | PR$="":&,28,1:DIM JM%(29,49),FD%(50):GOSUB{:3100}:&,28,1:GOTO 300 3 | {:3002} 4 | FOR I=0 TO 49:JM%(0,0)=0:NEXT:TZ=0 5 | DR=3:GOSUB 3:M$=DR$+"E.MENU"+STR$(M):&,60,2,0,JM%(0,0),M$,DV%:GOTO 5 6 | {:3006} 7 | DR=3:GOSUB 3:PRINT# 15,"S"M$:&,60,3,0,JM%(0,0),3000,M$,DV%:GOTO 5 8 | {:3008} 9 | &"CHANGES MADE-- SAVE? ":GOSUB 96:ON A GOSUB{:3006}:RETURN 10 | {:3100} 11 | &"{f6}EDIT WHICH MENU: {pound}I1":M=VAL(AN$):IF TR%=0 OR M=0 THEN RETURN 12 | GOSUB{:3002} 13 | {:3104} 14 | FOR X=0 TO 49:&,60,1,30,JM%(5,X),A$:A%=X:B%=JM%(1,X)AND 32767 15 | &"{white}{pound}#2{pound}%A:{pound}#5{pound}%B {pound}$A{f6}":X=X+RC*50:NEXT 16 | {:3108} 17 | &"{f6}OPTIONS: LIST EDIT QUIT{f6:2}>" 18 | {:3110} 19 | &"{pound}G1":IF TR%=0 THEN RETURN 20 | ON-(AN$="Q")-2*(AN$="L")-3*(AN$="E")GOTO{:3114},{:3116},{:3120}:GOTO{:3110} 21 | {:3114} 22 | &"QUIT{f6:2}":ON TZ GOSUB{:3008}:GOTO{:3100} 23 | {:3116} 24 | &"LIST{f6:2}":GOTO{:3104} 25 | &,28,1:GOTO 300 26 | {:3120} 27 | POKE 53252,2:&"EDIT #{pound}I1{f6}":X=VAL(AN$):IF X<0 OR X>49 THEN{:3108} 28 | {:3122} 29 | &"{clear}ITEM#{pound}!X:{f6:2}":A%=JM%(1,X)AND 32767 30 | &"1. ACCESS: {pound}%A{f6}":A%=JM%(0,X)AND 255 31 | &"2. FLAGS: {pound}%A{f6}" 32 | &"3. TEXT:{f6}":&,60,1,50,JM%(5,X),A$ 33 | &:&"{f6}>{pound}G1":A=VAL(AN$):IF A THEN ON A GOSUB{:3134},{:3136},{:3138}:GOTO{:3122} 34 | GOTO{:3108} 35 | {:3134} 36 | POKE 53252,5:&"ACCESS: {pound}I1":JM%(1,X)=VAL(AN$):TZ=1:RETURN 37 | {:3136} 38 | POKE 53252,3:&"FLAGS: {pound}I1":JM%(0,X)=VAL(AN$):TZ=1:RETURN 39 | {:3138} 40 | POKE 53252,50:P$="TEXT":PL=0:&,1,9:&,60,0,50,JM%(5,X),AN$:TZ=1:RETURN 41 | -------------------------------------------------------------------------------- /v2/core/plus_convert to f.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | dr=4:GOSUB 1010:tt=.:q$="xpxtmr":&"{f6}Converting Files Sections...{f6:2}" 5 | FOR tp=2 TO 6:ON-(tp<>3)GOSUB {:3004}:NEXT:&"Done!{f6:2}":GOTO 1811 6 | {:3004} 7 | f=.:o$="Main":GOSUB {:3010}:j=1:IF f=.THEN RETURN 8 | {:3006} 9 | o$=tt$(j):GOSUB {:3010}:j=j+1:ON-(j<=f)GOTO {:3006} 10 | {:3008} 11 | RETURN 12 | {:3010} 13 | a$="d."+MID$(q$,tp,1)+"."+o$:&"Reading from {f5}{pound}$a{f5}":GOSUB 1011 14 | q=1:t=.:IF e%THEN CLOSE 2:&:&"{f6}":RETURN 15 | {:3014} 16 | x=q:GOSUB 1001:&,2,2:IF a$="{up arrow}"THEN{:3026} 17 | &".":t=t+1:nn$(t)=a$:&,2,2:dt$(t)=LEFT$(a$,11)+LEFT$(a$,11):a%(t)=tp 18 | a$=MID$(a$,12):IF LEFT$(a$,2)="d."THEN a$=MID$(a$,5):GOSUB {:3042}:a%(t)=1 19 | ed$(t)=a$:&,2,2:an$=a$:&,15,6,94:dv%(t+6)=VAL(an$):dr%(t+6)=VAL(a$) 20 | &,2,2:ac%(t)=VAL(a$):&,2,2:c%(t)=VAL(a$):&,2,2:d%(t)=VAL(a$) 21 | q=q+1:GOTO {:3014} 22 | {:3026} 23 | CLOSE 2:a$="d.f."+o$:&"{f6}Writing to {f5}{pound}$a{f5}":GOSUB 1011 24 | IF e%=.THEN:&,2,2:n=VAL(a$):GOTO {:3032} 25 | CLOSE 2:a$="d.f."+o$+",l,"+CHR$(127):GOSUB 1011:n=. 26 | {:3032} 27 | FOR i=1 TO t:x=i+1+n:GOSUB 1001:&"." 28 | a$=MID$(STR$(ac%(i)),2)+r$+nn$(i)+r$+CHR$(48+a%(i))+ed$(i)+r$ 29 | a$=a$+MID$(STR$(dv%(i+6)),2)+r$+MID$(STR$(dr%(i+6)),2)+r$ 30 | a$=a$+MID$(STR$(c%(i)),2)+r$+dt$(i)+r$+MID$(STR$(d%(i)),2) 31 | PRINT# 2,a$:NEXT:x=1:GOSUB 1001:PRINT# 2,t+n:GOSUB 1001:CLOSE 2:&"{f6:2}":RETURN 32 | {:3042} 33 | IF f THEN FOR i=1 TO f:ON-(a$=tt$(i))GOTO {:3008}:NEXT 34 | f=f+1:tt$(f)=a$:RETURN 35 | rem "+.convert to f" 36 | rem this converts 1.2's d.p, d.r, d.t, etc., rel files into d.f rel files 37 | -------------------------------------------------------------------------------- /v2/core/plusslashlo_mail.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | ' FIXME: not ready for commit 5 | ' a%=new messages, b%=total messages 6 | a=9:gosub 1004:on -(a=.) goto {:4026}:b%=.:a%=.:mm=.:&"{f6}Checking for Mail..." 7 | a$="r":tt$=na$:gosub 1062:if e% then:&"{f6}Sorry, No Mail Today.{f6}":goto {:4026} 8 | ' logged in through immediate mode (i%) or console (k%) 9 | if i% or k% then {:local_mail} 10 | {:4006} 11 | &".":if rc then gosub 1920:goto {:local_mail} 12 | b%=b%+1:input# 2,a$,a$,a$:if mid$(a$,2)>mid$(ld$,2)then a%=a%+1 13 | {:4010} 14 | &,2,2:s=st:on tr%+1 goto {:4026}:on -(a$<>"{up arrow}") goto {:4010}:on -(s=.) goto {:4006}:close 2 15 | &"{f6}":a$="s.mail":dr=1:gosub 1076:b$="":if b%>1 then b$="s" 16 | c$="It Is":if a%>1 then c$="Are" 17 | ' possible output: 18 | ' a% b% Message: 19 | ' 1 0 You Have 1 Piece of Mail 20 | ' 1 1 You Have 1 Piece of Mail, It Is New 21 | ' 2 1 You Have 2 Pieces of Mail, 1 Is New 22 | ' a%=b% You Have 5 Pieces of Mail, All Are New 23 | 24 | mm=1:&"{f6}{green}You Have {white}{pound}%b{green} Piece{pound}$b Of Mail" 25 | ' FIXME: "You Have 2 Pieces of Mail, It Is New" 26 | if a% then:&"{f1} {pound}$c New":goto {:4024} 27 | if b%>1 then if a%=1 then:&"{f1}{white}{pound}%a {green}Is New":goto {:4024} 28 | if b%>1 then if a%=b%then:&"{f1} {green}All {pound}$c New":goto {:4024} 29 | &"{f1}{white} {pound}%a {green}{pound}$c New":goto {:4024} 30 | {:local_mail} 31 | close 2:&"{f6:2}{gray3}You have Mail" 32 | {:4024} 33 | &"!{f6:2}Read Now?: ":goto 1907 34 | {:4026} 35 | close 2:a=.:return 36 | rem 2019-04-10 pinacolada: fix grammar, new messages 37 | rem +/lo.mail - copr. 1994 new image 11/27/94 38 | -------------------------------------------------------------------------------- /scripts/test-translate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash 4 | 5 | # echo "$? params" 6 | # echo "$argv value" 7 | 8 | # http://tldp.org/LDP/abs/html/string-manipulation.html 9 | # (Substring Replacement) 10 | use_slashes=1 11 | 12 | function translate_filename() 13 | # this translates the filename given and returns in $test 14 | { 15 | stringZ="$1" 16 | # // delimiter replaces globally; / replaces first occurrence 17 | echo "Input : $stringZ" 18 | test=${stringZ//plus/+} # plus to + 19 | echo "Step 1: $test" 20 | if [ "$use_slashes" == "1" ]; then 21 | test=${test//slash/\/} # slash to / -- escape /! 22 | else 23 | test=${test//slash/-} # slash to - 24 | fi; 25 | echo "Step 2: $test" 26 | test=${test//_/.} # _ to . 27 | echo "Step 3: $test" 28 | } 29 | 30 | disk_image=$2 31 | 32 | input_lbl=$1 # "plusslashMM_load.lbl" 33 | input_prg=${input_lbl//.lbl/.prg} # change .lbl extension to .prg 34 | 35 | translate_filename "$input_lbl" # "+/MM.load.lbl" 36 | C64_FILE=${test//.lbl/} # remove .lbl extension 37 | 38 | # translate_filename "plusplus 2" # "++ 2.prg" 39 | 40 | echo "input_lbl=$input_lbl" 41 | echo "C64_FILE=$C64_FILE" 42 | 43 | # quote filenames since some have spaces in them 44 | echo "wine c64list3_05.exe \"$input_lbl\" -prg -ovr" 45 | echo "c1541 \"$disk_image\" \ 46 | -del \"$C64_FILE\" \ 47 | -write \"$input_prg\" \"$C64_FILE\"" 48 | 49 | wine c64list3_05.exe \"$input_lbl\" -prg -ovr 50 | c1541 "$disk_image" \ 51 | -del "$C64_FILE" \ 52 | -write "$input_prg" "$C64_FILE" 53 | 54 | # echo "Setting 'use_slashes' to 0." 55 | # use_slashes=0 56 | # translate_filename "slashslashslash_" # "---." 57 | # FILE=$test; echo $FILE 58 | -------------------------------------------------------------------------------- /scripts/c64list-linter.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # C64List .lbl linter -- fix some issues with .prg -> .lbl conversion 3 | 4 | # 2019/02/22: C64List 3.50 handles uppercase characters in listings now; 5 | # removed e.g. "A" -> "{A}" abstraction, is now just "A" in output file 6 | 7 | # https://unix.stackexchange.com/questions/95939/how-exactly-do-i-create-a-sed-script-and-use-it-to-edit-a-file 8 | 9 | output_file="$1" 10 | cat $output_file | \ 11 | 12 | # echo < space 30 | 31 | s/{\$c1}/A/g 32 | s/{\$c2}/B/g 33 | s/{\$c3}/C/g 34 | s/{\$c4}/D/g 35 | s/{\$c5}/E/g 36 | s/{\$c6}/F/g 37 | s/{\$c7}/G/g 38 | s/{\$c8}/H/g 39 | s/{\$c9}/I/g 40 | s/{\$ca}/J/g 41 | s/{\$cb}/K/g 42 | s/{\$cc}/L/g 43 | s/{\$cd}/M/g 44 | s/{\$ce}/N/g 45 | s/{\$cf}/O/g 46 | s/{\$d0}/P/g 47 | s/{\$d1}/Q/g 48 | s/{\$d2}/R/g 49 | s/{\$d3}/S/g 50 | s/{\$d4}/T/g 51 | s/{\$d5}/U/g 52 | s/{\$d6}/V/g 53 | s/{\$d7}/W/g 54 | s/{\$d8}/X/g 55 | s/{\$d9}/Y/g 56 | s/{\$da}/Z/g 57 | ' "$@" 58 | 59 | # change "(if|then)" to "(if|then) " 60 | # sed -E s/then\[\^\ \]/then\ /g | \ 61 | 62 | # change "go(to|sub)" to "go(to|sub) " 63 | # "\^\ " = 'not followed by a space" 64 | # sed -E s/\(goto\|gosub\)\[\^\ \]/\\1\ /g # "goto 1000" 65 | -------------------------------------------------------------------------------- /v2/core/jack/i_main.lbl: -------------------------------------------------------------------------------- 1 | ON MM GOTO{:3010},{:3004},{:3006} 2 | {:3002} 3 | &,28,1:&,11:LC=1:&,27,1:SY$="":GOTO 200 4 | {:3004} 5 | P$=PO$:RETURN 6 | {:3006} 7 | RETURN 8 | {:3010} 9 | IF ZZ AND AN$="R" then {:3030} 10 | IF VAL(AN$)THEN GOSUB{:3020}:IF A$<>""THEN UU$=A$:GOTO{:3002} 11 | REM IFAN$="NORM" then MM=0:GOTO2006 12 | GOSUB 90:&"{f6}{lt. red}{pound}VJ{lt. blue} {rvrs on} UNKNOWN COMMAND. ENTER {f5}?{f5} FOR HELP. {f6}{lt. red}{pound}VJ":GOTO{:3002} 13 | {:3020} 14 | A%=VAL(AN$):A$="{up arrow}":IF A%<1 OR A%>4 THEN RETURN 15 | DR=3:A$="E.MACS":GOSUB 4:A$="{up arrow}":IF E%=0 THEN X=ID*4-4+A%:GOSUB 1:&,2,2 16 | CLOSE 2:RETURN 17 | {:3030} 18 | &,52,$30,3:ON A%+1 GOTO{:3032} 19 | GOSUB 304:POKE 53252,14:&"{f6:2}RUN: +.{pound}I0":A$=AN$:ON-(A$="")GOTO{:3002}:GOTO 1016 20 | {:3032} 21 | GOSUB 304:&"{f6:2}{lt. blue}WHICH CLASS{cyan}? ({lt. blue}3{cyan},{lt. blue}4{cyan},{lt. blue}5{cyan}): {white}{pound}G1":A=VAL(AN$):IF A<3 OR A>5 THEN A 22 | &MID$(STR$(A),2)+"{f6}":C=A-2:POKE 53252,14:&"{f6}{lt. blue}RUN{cyan}: {white}I":&MID$("./",C,1) 23 | IF C=3 THEN:&".SUB.":POKE 53252,10 24 | &"{pound}I0":C$=AN$:ON-(C$="")GOTO{:3002}:ON-(C=3)GOTO{:3046}:&"{f6}{lt. blue}DEVICE{cyan}, {lt. blue}DRIVE{cyan}: {white}{pound}I1" 25 | A=INT(VAL(LEFT$(AN$,2))):IF A>.AND A<7 THEN DR=A:GOTO{:3046} 26 | IF A<7 OR A>29 THEN DR=5:GOTO{:3046} 27 | &,15,6,133:D2%=VAL(AN$):D1%=A:DR=.:DV%(.)=D1%:DV%(2)=D2%:GOSUB 3:CLOSE 15 28 | IF A<>.THEN X=6:GOSUB 390:GOTO{:3002} 29 | {:3046} 30 | &"{f6}{lt. blue}ENTER VALUE FOR "+MID$("MMLMIM",C*2-1,2)+"{cyan}: {white}{pound}I1" 31 | A$=C$:ON C-1 GOTO{:3048},{:3050}:MM=VAL(AN$):GOTO 71 32 | {:3048} 33 | LM=VAL(AN$):GOSUB 73:GOTO{:3002} 34 | {:3050} 35 | IM=VAL(AN$):GOSUB 74:GOTO{:3002} 36 | -------------------------------------------------------------------------------- /v2/core/plus_netapp.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | GOTO {:3016} 5 | {:3002} 6 | dr=3:GOSUB 1079:IF a<35 THEN 1978 7 | a$="a":b$="fback":GOSUB 1027 8 | IF e%THEN a$="w":b$="fback":GOSUB 1027 9 | PRINT# 2,na$r$id;r$d1$r$ac%;r$ph$r$rn$r$co$(co%) 10 | FOR x=1 TO 11:PRINT# 2,ed$(x),tt$(x):NEXT:PRINT# 2,"{up arrow}":CLOSE 2:GOSUB 1081:&,11,. 11 | GOSUB 1060:i=1:x=1:GOSUB 1025:x=12:GOSUB 1025:x=23:GOSUB 1025:x=30:GOSUB 1025 12 | CLOSE 2:RETURN 13 | {:3016} 14 | &"{clear}{yellow}{rvrs on}IMAGE Network Node Application{rvrs off}{lt. green}" 15 | a$="s.netapp":dr=1:GOSUB 1076 16 | &"{gray3}Do You Wish To Apply? ":GOSUB 1902:ON a+1 GOTO 1812 17 | &"{lt. red}Please Answer ALL Questions.{lt. green}{f6:2}":RESTORE:FOR i=1 TO 11:READ ed$(i):NEXT:p$="" 18 | FOR i=1 TO 11:&ed$(i):GOSUB 1006:ON tr%+1 GOTO 1812:tt$(i)=an$:NEXT 19 | {:3026} 20 | FOR i=1 TO 11:b%=i:&"{f6}{pound}%b ":&ed$(i):&" ":&tt$(i):NEXT 21 | &"{f6:2}{white}Correct? (A Aborts) ":GOSUB 1902:ON a GOTO {:3038}:IF an$="A"THEN 1812 22 | {:3030} 23 | &"{f6}{green}Edit Which #? {pound}i1":ON tr%+1 GOTO 1812:i=VAL(an$):IF i>11 THEN{:3030} 24 | {:3032} 25 | ON-(i=.)GOTO {:3038}:&ed$(i):&"New?: {pound}i1":ON tr%+1 GOTO 1812:b$=an$:&"{pound}$b{f6:2}Correct? " 26 | GOSUB 1902:IF a THEN tt$(i)=b$:GOTO {:3026} 27 | GOTO {:3032} 28 | {:3038} 29 | &"{f6:2}{lt. green}Saving Data...":GOSUB {:3002}:&"{pound}hn{white}Thanks, You'll Be Notified When A Node" 30 | &"{f6}Connection Is Made...{pound}w2":GOTO 1812 31 | DATA"BBS Name ","BBS Phone ","SYSOP Handle ","Sysop Name " 32 | DATA"City ","State ","BBS Serial # ","Net Password " 33 | DATA"Drive Config. ","Baud Rate ","LD Connect OK? " 34 | REM +.netapp 35 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.menu5.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | _____________________ 4 | QUEST MENU 5 | 6 | (1) Raid the Pirates Camp. 7 | (2) Mystery of the Haunted Cave 8 | (3) Rescue the Maiden's Sister 9 | (4) The Quest of the Gods 10 | (5) Eradicate the Evil Cult 11 | (6) Search for the Island of 12 | Spice! 13 | (7) Quest for the Legendary 14 | Bird City! 15 | (8) Look for the Mountain Side 16 | Ship! 17 | (9) Seek Arch-Mage Zircon's 18 | Help! 19 | Warning: Zircon's Help, is a 20 | GAMBLE!! 21 | 22 | _ _ 23 | \X\MB\ 24 | _____________________ 25 | QUEST MENU 26 | 27 | (1) Raid the Pirates Camp. 28 | (2) Mystery of the Haunted Cave 29 | (3) Rescue the Maiden's Sister 30 | (4) The Quest of the Gods 31 | (5) Eradicate the Evil Cult 32 | (6) Search for the Island of 33 | Spice! 34 | (7) Quest for the Legendary 35 | Bird City! 36 | (8) Look for the Mountain Side 37 | Ship! 38 | (9) Seek Arch-Mage Zircon's 39 | Help! 40 | Warning: Zircon's Help, is a 41 | GAMBLE!! 42 | -------------------------------------------------------------------------------- /v2/core/jack/sub_feedback.lbl: -------------------------------------------------------------------------------- 1 | &,27,2:DIM FB%(29,15),FF%(15) 2 | &"{f6}FEEDBACK:{f6}":DR=3:GOSUB 3:A$=DR$+"E.SYSOPLIST":TT=. 3 | &,60,2,.,FB%(.,.),A$,DV%:GOSUB 5:ON-(E%<>.)GOTO{:60026} 4 | A%=.:IF FB%(.,.)>.THEN:&,60,8,FB%(.,.),60,1,FB%(11,1),FF%(1),1 5 | IF A%=. then {:60026} 6 | IF A%=1 THEN A=1:GOTO{:60024} 7 | FOR X=1 TO A%:A=FF%(X):&,60,1,20,FB%(1,A),AN$:&,15,1:&,60,1,36,FB%(12,A),D$ 8 | X%=X:LP=1:IF LL%>40 THEN:&"{f6}{gray3}{pound}#2{pound}# {pound}%X{blue}. {white}{pound}V7 {blue}- {yellow}{pound}$D":GOTO{:60018} 9 | &"{f6}{gray3}{pound}#2{pound}# {pound}%X{blue}. {white}{pound}V7 {f6} {yellow}{pound}$D" 10 | {:60018} 11 | NEXT:&"{f6:2} {pound}Q0FEEDBACK TO WHOM: {lt. green}{pound}I1" 12 | A=VAL(AN$):IF AN$="A"THEN TT$="A{$cc:2}":GOTO{:60026} 13 | IF A<1 OR A>A%THEN TT=-1:GOTO{:60026} 14 | {:60024} 15 | A=FF%(A):&,60,1,20,FB%(1,A),TT$:TT=FB%(.,A):IF FB%(11,A)AND 2 THEN TT=. 16 | {:60026} 17 | ON-(TT=-1)GOTO{:60056}:IM=1:GOSUB 440:ON-(KK=.)GOTO{:60056} 18 | &"{f6:2}FILING FEEDBACK...{f6:2}":IF TT=. then {:60044} 19 | Y=TT:TT$(.)="[FEEDBACK]":NN$=TT$ 20 | Z=1:A$="W":TT$=NN$:GOSUB 32:IF E%THEN A$="A":Z=.:GOSUB 32 21 | PRINT# 2,NA$R$ID;R$D1$R$"[FEEDBACK]":&,14,2,KK-1:PRINT# 2,"{up arrow}":CLOSE 2 22 | GOSUB 61:GOSUB 30 23 | IF Y=1 THEN X=2:I=1:GOSUB 16:X=13:GOSUB 16:X=24:GOSUB 16:X=31:GOSUB 16 24 | X=3:I=1:GOSUB 16:X=14:GOSUB 16:X=32:GOSUB 16:X=25:ON Z GOSUB 16 25 | GOTO{:60054} 26 | {:60044} 27 | B$="FBACK":GOSUB 37 28 | PRINT# 2,"FEEDBACK TO "TT$R$ 29 | &,14,2,KK-1:PRINT# 2,"{up arrow}":CLOSE 2 30 | GOSUB 61:GOSUB 30:I=1 31 | X=1:GOSUB 16:X=12:GOSUB 16:X=23:GOSUB 16:X=30:GOSUB 16 32 | {:60054} 33 | CLOSE 2:&,28,2:&,11:RETURN 34 | {:60056} 35 | &"{f6}ABORTED!":GOTO{:60054} 36 | COPR. 1994 NEW IMAGE 9/15/94 37 | -------------------------------------------------------------------------------- /v2/core/plus_daily stats.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &,28,1:k=12:DIM ed$(k),dt$(k) 5 | RESTORE:FOR i=1 TO k-1:READ ed$(i):NEXT:FOR j=0 TO 6:READ dt$(j):NEXT 6 | GOSUB {:3020}:ON-(e%=0)GOSUB {:3036}:GOTO 1812 7 | DATA"Feedback ","Sysop Mail" 8 | DATA"Users Mail","Posts " 9 | DATA"Responses ","Uploads " 10 | DATA"Downloads ","New Users " 11 | DATA"Calls/Log ","Time Used " 12 | DATA"Time Idle " 13 | DATA"Sun","Mon","Tue","Wed","Thu","Fri","Sat" 14 | {:3020} 15 | dr=3:a$="e.daily stats":GOSUB 1011:IF e%THEN:&:CLOSE 2:RETURN 16 | FOR j=0 TO 6:x=j+1:GOSUB 1001:FOR i=0 TO 11:&,2,2:tt$(i+j*k)=a$:NEXT:NEXT 17 | FOR j=0 TO 6:a$=tt$(j*k) 18 | dt$(j)=dt$(j)+" "+MID$(a$,4,2)+"-"+MID$(a$,6,2)+"-"+MID$(a$,2,2):NEXT 19 | CLOSE 2:RESTORE:&"{clear}{rvrs on}{white} Sun Mon Tue Wed Thu Fri Sat{f6}" 20 | FOR i=1 TO k-1:a$=ed$(i):&"{rvrs on}{white}{pound}$a:{rvrs off}":FOR j=0 TO 6:a%=VAL(tt$(i+j*k)):GOSUB {:3034} 21 | &"{pound}#4{pound}# {pound}%a":NEXT:&"{f6}":NEXT:RETURN 22 | {:3034} 23 | &MID$("{lt. blue}{cyan}",(j AND 1)+1,1):RETURN 24 | {:3036} 25 | &"{f6}View Detailed Info? ":GOSUB 1902:IF a=0 THEN RETURN 26 | FOR i=1 TO k-1:a$=ed$(i):&"{clear}{rvrs on}{white}{pound}$a ### %%%{f6}" 27 | b=0:FOR j=0 TO 6:a=VAL(tt$(i+j*k)):a%(j)=a:b=b+a:NEXT 28 | FOR j=0 TO 6:a$=dt$(j):a%=a%(j):b%=0:IF b<>0 THEN b%=a%/b*100 29 | &"{rvrs on}{white}{pound}$a:{rvrs off}":GOSUB {:3034}:&"{pound}#4{pound}# {pound}%a{pound}#4{pound}# {pound}%b%{f6}":NEXT:a%=b:b%=a%/7 30 | &"{rvrs on}{white}Total {rvrs off} {pound}#4{pound}# {pound}%a{f6}{rvrs on}{white}Average{rvrs off} {pound}#4{pound}# {pound}%b{f6:2}Press a key (A=Abort): {pound}g1" 31 | IF an$="A"OR tr%<1 THEN i=k 32 | NEXT:RETURN 33 | REM +.daily stats 34 | 35 | -------------------------------------------------------------------------------- /v2/core/plus_menu example.lbl: -------------------------------------------------------------------------------- 1 | {{number:3000} 2 | {step:2} 3 | {alpha:alt} 4 | rem "+.menu example" - graphic menu demo/example program 5 | &,52,44,3:mm=a%:&,52,45,3:mm=mm and a%: rem check litebar verify both =1 6 | dr=5:gosub 1010:a$=dr$+"++ menu2":&,7,dv%,2: rem load in protocol 7 | {:3006} 8 | &,28,1: rem clear variables 9 | n=4: rem number of options 10 | dim m%(16,n):rem 16 is # of characters for options 11 | rem next lines setup menu information 12 | &,16,.,34,m%(.,1),"A","","Option A" 13 | &,16,.,34,m%(.,2),"B","","Option B" 14 | &,16,.,34,m%(.,3),"C","","Option C" 15 | &,16,.,34,m%(.,4),"D","","Quit" 16 | rem setup header 17 | &"{clear}{blue}{rvrs on}{pound}{back arrow}39{f6}{rvrs on} {cyan} Image BBS V2.0{pound}{back arrow}37{blue} {f6}" 18 | &"{rvrs on} {cyan} Menu Example Program{pound}{back arrow}37{rvrs off} {rvrs on}{blue} {f6}{rvrs on} {rvrs off}{pound}{back arrow}38{rvrs on} {f6}" 19 | rem enable menu 20 | &,16,2,34,m%(.,1),n,17,2,n/2+.5,2,6,.:lm=a%+1:&,70,.,n/2+8.5:&"{white}" 21 | rem 22 | if tr%<1 or lm=n or lm=.then 1811:rem check for carrier drop or for 23 | rem null string, or for quit option which must be last on list 24 | on lm goto {:3040},{:3048},{:3056} 25 | goto 1811: rem no option/return to main 26 | {:3040} 27 | rem option a 28 | &"{f6:2}{lt. blue}{rvrs on} * Option A Executed *{rvrs off}": 29 | &"{f6:2}{white}- Hit Any Key -{pound}g1": 30 | goto {:3006} 31 | {:3048} 32 | rem option b 33 | &"{f6:2}{lt. blue}{rvrs on} * Option B Executed *{rvrs off}": 34 | &"{f6:2}{white}- Hit Any Key -{pound}g1": 35 | goto {:3006} 36 | {:3056} 37 | rem option c 38 | &"{f6:2}{lt. blue}{rvrs on} * Option C Executed *{rvrs off}" 39 | &"{f6:2}{white}- Hit Any Key -{pound}g1": 40 | goto {:3006} 41 | copr. 1994 new image 10/25/94 42 | -------------------------------------------------------------------------------- /v2/core/im_menus.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | ' see +.menu create for more details of struct 3 | ' fd%(): list of records matching user's access level 4 | ' jm%(29,49): 29=field size (zero-based, so 0-29), 49=# of records within struct, 50) 5 | &,27,7:dim fd%(50),jm%(29,49) 6 | x=lc:on im gosub {:60004},{:60006},{:60010}:&,28,7:return 7 | {:60004} 8 | gosub {:60006}:x=1:if lc=1 or rc then return 9 | {:60006} 10 | ' read access-aware menu listing if it exists 11 | b$="e.menu"+str$(x):gosub {:60010}:if e%=.then return 12 | ' otherwise, fall back to SEQ style 13 | dr=1:a$="s.menu"+str$(x):goto 1076 14 | {:60010} 15 | dr=3:gosub 1010:a$=dr$+b$ 16 | ' load struct: 17 | &,60,2,.,jm%(.,.),a$,dv%:gosub 1012:if e%then return 18 | ' scan struct: 19 | ' &,60,8,recs,size,access,search%(field,record),result%(element),start 20 | ' recs: 50 21 | ' # of records in struct 22 | ' size: 60 23 | ' size of the record in the struct (seems too large: was only DIMensioned for 30) 24 | ' access: 2^ac%+zz%*32768 25 | ' access level to filter results by 26 | ' search%(field,record): jm%(1,.) 27 | ' search%() the integer array to search 28 | ' field the field within the record to search 29 | ' record the record to search 30 | 31 | ' returns a% (# of matches) and fd%(): list of matching records 32 | &,60,8,50,60,2^ac%+zz*32768,jm%(1,.),fd%(1),.:if a%=.then return 33 | ' &,60,1: get 50-byte string from field (or offset, if you like) 6 (zero-based) 34 | ' of jm%( , ), assign to a$: 35 | &"{f6}":for i=1 to a%:&,60,1,50,jm%(5,fd%(i)),a$:lp=1:&:i=i+a%*rc:next:return 36 | 37 | ' TODO: proposed rewrite: 38 | ' &,60,8,50,60,2^ac%+zz*32768,jm%(1,.),fd%(1),. 39 | ' if a% then:&"{f6}":for i=1 to a%:&,60,1,50,jm%(5,fd%(i)),a$:lp=1:&:i=i+a%*rc:next 40 | ' return 41 | 42 | copr. 1994 new image 9/27/94 43 | rem im.menus 44 | -------------------------------------------------------------------------------- /v2/core/plusslashlo_num squ.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {step:2} 3 | {crunch:on} 4 | rem "+/lo.num squ" (numbersquare automaint) 8/19/94 5 | ' run on Sundays: 6 | REM:IFVAL(LEFT$(D1$,1))<>1 then RETURN 7 | cm$="Numbersquare Automaint":gosub 1360 8 | dr=3:a$="e.num squ,s,r":gosub 1011:if e%then close 2:return 9 | &,2,2:w$=a$:&,2,2:close 2:an$=w$:gosub 1046:y=i:if i=.then return 10 | ' add this to i.misc? im=3 11 | ' used when program needs to modify something in user account 12 | ' then immediately write it back... replaces for...next loops, 13 | ' but there is the size/delay of loading im.misc2... 14 | x=i:gosub 1065:gosub 1001:for i=1 to 24:&,2,2:tt$(i)=a$:next 15 | tt$(19)=str$(val(tt$(19))+100):a$="":for i=1 to 24:a$=a$+tt$(i)+r$:next 16 | gosub 1001:print# 2,a$:close 2:dr=3:a$="e.num squ":gosub 1024 17 | ' wish: use im.misc, im=3 (currently unused) flag to pass email parameters 18 | ' im=3:na$="SENDER":id=.:nn$="RECIPIENT":tt$(.)="[Winner]" 19 | 'gosub {:60132} (RETURNs) 20 | 21 | a$="{yellow} {rvrs on}"+w$+r$+" {cyan}Weekly Numbersquare Winner"+r$+"{yellow}{pound}o{$c0}{pound}o{$c0}":gosub 1095 22 | z=1:tt$=w$:a$="w":gosub 1062:if e%then a$="a":z=.:gosub 1062 23 | print# 2,"Weekly Numbersquare Winner"r$;0;r$;d1$;r$;"[Congratulations]"r$ 24 | print# 2," {yellow}The award for winning is 250 credits."r$ 25 | print# 2," {lt. green}Good luck again this week!"r$:print# 2,"{up arrow}":close 2 26 | if y=1 then gosub 1060:x=2:i=1:gosub 1025:x=13:gosub 1025:x=24:gosub 1025:x=31 27 | if y=1 then gosub 1025 28 | on-(y<>1)gosub 1060:x=3:i=1:gosub 1025:x=14:gosub 1025:x=32:gosub 1025 29 | x=25:on z gosub 1025:close 2:return 30 | REM 31 | REM BY: 32 | REM PORT COMMODORE 33 | REM (801-423-2734) 34 | REM 35 | REM NISSA 36 | REM 37 | REM AUGUST, 19, 1994 38 | REM 39 | REM NUMBERSQUARE AUTOMAINT 40 | -------------------------------------------------------------------------------- /v2/core/plus_RS_v2_2.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | {:3000} 5 | a%=ur+1:&"{f6:2}{pound}r1 Add RES Account:{f6:2}Start From What Account Number?" 6 | &"{f6}({f5}E{f5} Will Put Account{f6}On End Of User File.){f6:2}RES: {pound}i1" 7 | c=INT(VAL(an$)):ON-(tr%<1 OR an$="Q"OR an$="")GOTO {:3052} 8 | IF an$="E"THEN c=a%:l=l1:IF l1>ur THEN l=c+1 9 | IF c<1 OR c>ur+1 THEN:&"{f6}Invalid Account Number.":GOTO {:3000} 10 | kk=.:sh=.:GOSUB 1065:FOR x=c TO ur:GOSUB 1001:&,2,2:IF a$<>"{up arrow}"THEN{:3016} 11 | a%=x:&"{f6}Account {pound}%a Is Open. Use?: ":GOSUB 1902 12 | IF a THEN kk=1:ON-(a%=l1)GOSUB {:3046}:x=ur:GOTO {:3018} 13 | {:3016} 14 | &".":IF rc THEN x=ur:NEXT:GOTO {:3052} 15 | {:3018} 16 | NEXT:IF kk THEN x=a%:GOTO {:3022} 17 | x=ur+6:GOSUB 1001:PRINT# 2,0:ur=ur+1:x=ur 18 | {:3022} 19 | FOR i=1 TO 23:tt$(i)="0":NEXT 20 | tt$(1)="RES":&"{f6}Password?: {pound}i1":IF an$=""THEN an$="PASS" 21 | tt$(2)=an$ 22 | &"{f6}Access?: {pound}g1{pound}v7{f6}":a$=an$:IF tr%<1 THEN ur=ur+(kk=.):GOTO {:3052} 23 | b=VAL(an$):IF an$<"0"OR an$>"9"THEN b=. 24 | tt$(7)=STR$(b) 25 | &"Credits? : {pound}i1":a=VAL(an$) 26 | tt$(19)=STR$(a):GOSUB {:3060} 27 | f$="":FOR i=1 TO 23:f$=f$+tt$(i)+r$:NEXT:GOSUB 1065:x=a% 28 | GOSUB 1001:PRINT# 2,f$:a%=x:GOSUB 1063 29 | x=12:GOSUB 1001:PRINT# 2,ur+1:x=31:GOSUB 1001:PRINT# 2,l:l1=l:CLOSE 2:GOSUB 1374 30 | &"{f6:2}Account {pound}vn{pound}%a Has Been Reserved.{f6}":GOTO {:3054} 31 | {:3046} 32 | l=ur+1:FOR x=a%+1 TO ur:IF x/3=INT(x/3)THEN:&"." 33 | GOSUB 1001:&,2,2:IF a$="{up arrow}"THEN l=x:x=ur 34 | NEXT:RETURN 35 | {:3052} 36 | GOSUB 1920 37 | {:3054} 38 | CLOSE 2:GOTO 1812 39 | copr.1988 NEW image 40 | {:3060} 41 | GOSUB 1061:x=b+1:GOSUB 1001:&,2,2:&,2,2:tt$(23)=a$:RETURN 42 | REM "+.RS v2.2": reserve account v2.2 180501 43 | REM:converted to 2.0 180422 x-tec 44 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_menuedit.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | REM +.menuedit 11/27/2017 - pinacolada 5 | pr$="":&,28,1:DIM jm%(29,49),fd%(50):GOSUB {:4012}:&,28,1:RETURN 6 | {:4004} 7 | FOR i=0 TO 49:jm%(0,i)=0:NEXT:tz=0 8 | dr=3:GOSUB 1010:m$=dr$+"e.menu"+STR$(m):&,60,2,0,jm%(0,0),m$,dv%:GOTO 1012 9 | {:4008} 10 | dr=3:GOSUB 1010:PRINT# 15,"s"m$:&,60,3,0,jm%(0,0),3000,m$,dv%:GOTO 1012 11 | {:4010} 12 | &"Changes made-- Save? ":GOSUB 1902:ON a GOSUB {:4008}:RETURN 13 | {:4012} 14 | &"{f6}Edit Which Menu: {pound}i1":m=VAL(an$):IF tr%=0 OR m=0 THEN RETURN 15 | GOSUB {:4004} 16 | {:4016} 17 | FOR x=0 TO 49:&,60,1,30,jm%(5,x),a$:a%=x:b%=jm%(1,x)AND 32767 18 | &"{white}{pound}#2{pound}%a:{pound}#5{pound}%b {pound}$a{f6}":x=x+rc*50:NEXT 19 | {:4020} 20 | &"{f6}Options: List Edit Quit{f6:2}>" 21 | {:4022} 22 | &"{pound}g1":IF tr%=0 THEN RETURN 23 | ON-(an$="Q")-2*(an$="L")-3*(an$="E")GOTO {:4026},{:4028},{:4032}:GOTO {:4022} 24 | {:4026} 25 | &"Quit{f6:2}":ON tz GOSUB {:4010}:GOTO {:4012} 26 | {:4028} 27 | &"List{f6:2}":GOTO {:4016} 28 | &,28,1:RETURN 29 | {:4032} 30 | POKE 53252,2:&"Edit #{pound}i1{f6}":x=VAL(an$):IF x<0 OR x>49 THEN{:4020} 31 | {:4034} 32 | &"{clear}Item#{pound}!x:{f6:2}":a%=jm%(1,x)AND 32767 33 | &"1. Access: {pound}%a{f6}":a%=jm%(0,x)AND 255 34 | &"2. Flags: {pound}%a{f6}" 35 | &"3. Text:{f6}":&,60,1,50,jm%(5,x),a$ 36 | &:&"{f6}>{pound}g1":a=VAL(an$):IF a THEN ON a GOSUB {:4046},{:4048},{:4050}:GOTO {:4034} 37 | GOTO {:4020} 38 | {:4046} 39 | POKE 53252,5:&"Access: {pound}i1":jm%(1,x)=VAL(an$):tz=1:RETURN 40 | {:4048} 41 | POKE 53252,3:&"Flags: {pound}i1":jm%(0,x)=VAL(an$):tz=1:RETURN 42 | {:4050} 43 | &"{f6}":POKE 53252,50:p$="Text":&,60,1,50,jm%(5,x),w$:pl=0:&,1,32 44 | IF an$<>"" OR an$<>w$ THEN:&,60,0,50,jm%(5,x),an$:tz=1 45 | RETURN 46 | REM "+/SM.menuedit" sysop menu 180210 x-tec 47 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.intro.txt: -------------------------------------------------------------------------------- 1 | \EB BBBA A BBAA 2 | \X\MA\ 3 | 4 | 5 | _____________________ 6 | e m p i r e i i 7 | 8 | to become king you must have: 9 | 10 | acres.....30000 cash....$250000 11 | serfs......9000 serfs......5000 12 | palace.....100% nobles......100 13 | markets.....200 mills.......200 14 | shipyards....50 forts........50 15 | 16 | or a point rating of 1000 17 | 18 | 19 | _ d e l u x e _ 20 | 21 | 22 | \X\MB\ 23 | 24 | 25 | _____________________ 26 | e m p i r e i i 27 | 28 | to become king you must have: 29 | 30 | acres.....30000 cash....$250000 31 | serfs......9000 serfs......5000 32 | palace.....100% nobles......100 33 | markets.....200 mills.......200 34 | shipyards....50 forts........50 35 | 36 | or a point rating of 1000 37 | 38 | 39 | _ d e l u x e _ 40 | 41 | 42 | 43 | -------------------------------------------------------------------------------- /v2/core/plusslashNM_netsub1.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{f6:2} {gray3}{rvrs on} Image NetSubs V2.0 10/11/94 8:40PM" 5 | &"{f6:2}{green}Processing NetSubs...":CLOSE 3:tt=.:pr=-1:pn=.:rn=.:tz=. 6 | dr=2:a$="nm.list,s,r":GOSUB 1011:IF e%=.THEN{:4008} 7 | {:4006} 8 | CLOSE 2:&"{f6:2} {lt. red}{rvrs on} No Incoming Messages...{f6}":GOTO {:4040} 9 | {:4008} 10 | dr=2:a$="nm.list,s,r":GOSUB 1011 11 | {:4010} 12 | &,2,2:b$=a$:a=-(st=.) 13 | IF MID$(b$,11,8)="nm.P."+nn$THEN tt=tt+1:tt$(tt)=MID$(b$,11)+",s,r":GOTO {:4020} 14 | CLOSE 3:OPEN 3,dv%,3,dr$+"nm.templist,s,a":GOSUB 1012 15 | IF e%THEN CLOSE 3:OPEN 3,dv%,3,dr$+"nm.templist,s,w" 16 | PRINT# 3,b$:CLOSE 3 17 | {:4020} 18 | ON a GOTO {:4010}:CLOSE 2:a$="nm.list":GOSUB 1024 19 | PRINT# 15,"r"+dr$+"nm.list="+dr$+"nm.templist":CLOSE 15:IF tt=.THEN{:4006} 20 | &"{f6:2}{lt. green}Reading NetSub Configuration..." 21 | dr=5:GOSUB 1010:a$=dr$+"++ netlist":&,7,dv%,2:GOSUB 1012:IF e%THEN RETURN 22 | a%=.:dr=2:GOSUB 1010:FOR i=1 TO 60:a$=dr$+"nm.netsub"+STR$(i):&,16,2,dv% 23 | GOSUB 1012:IF e%THEN i=60:GOTO {:4036} 24 | an$="":a$="":&,16:a%=a%+1:bn=LEN(an$):dt$(i)=an$+a$ 25 | PRINT# 15,"s"dr$"nm.P.temp"+STR$(i) 26 | {:4036} 27 | NEXT:n=a%:CLOSE 15:&"{f6:2}{yellow}{pound}#0{pound}%a NetSubs Defined...":ON a%+1 GOTO {:4040}:GOSUB {:4050} 28 | ON x GOTO {:4040}:a$="netsub2":GOSUB 3641:GOTO 2600 29 | {:4040} 30 | a$="netsub4":GOSUB 3641:GOTO 2600 31 | {:4042} 32 | x=1:&"{f6} {orange}{rvrs on} Error - Incoming Messages Not Sorted! ":RETURN 33 | {:4044} 34 | dr=2:GOSUB 1010:b$="nm.P.track"+STR$(i)+STR$(x):a$=dr$+b$:&,16,2,dv% 35 | GOSUB 1012:IF e%THEN RETURN 36 | &,16,7:a$=b$:dr=2:GOSUB 1024:a$=dr$+b$:&,16,3,dv%:x=x+1:GOTO {:4044} 37 | {:4050} 38 | dr=5:GOSUB 1010:a$=dr$+"++ netsub":&,7,dv%,2:GOSUB 1012:IF e%THEN{:4042} 39 | &"{f6:2}{white}Message Tracking System Initialized...":x=.:RETURN 40 | copr. 1994 NEW image 10/14/94 41 | rem "+/NM.netsub1" 42 | 43 | -------------------------------------------------------------------------------- /v2/core/jack/i_UB.lbl: -------------------------------------------------------------------------------- 1 | &"{f6}{cyan} {$c0:15}{f6} {rvrs on}{purple} USER BIO V2.0 {f6}{cyan} {$c0:15}{f6}":A=8:GOSUB 11:Q=A 2 | GOSUB{:3008}:ON E%+1 GOTO{:3010}:IF Q=.THEN:&"{f6}SORRY, NO BIOGRAPHIES AVAILABLE TODAY.{f6}":GOTO{:3042} 3 | &"{f6}CREATING {f5}U.BIOGRAPHIES{f5} NOW...":DR=6:A$="U.BIOGRAPHIES,L,"+CHR$(125):GOSUB 4 4 | X=UR:GOSUB 1:PRINT# 2,"{up arrow}":CLOSE 2:&"!{f6}":GOTO{:3010} 5 | {:3008} 6 | DR=6:A$="U.BIOGRAPHIES":GOTO 4 7 | {:3010} 8 | I=.:X=.:A=.:POKE 53252,20:&"{f6}{cyan}ENTER THE HANDLE OR{f1} USER{f6}ID# OF USER TO VIEW{f6}: {white}{pound}I1" 9 | ON-(TR%<1 OR AN$=""OR AN$=R$)GOTO{:3042}:A=ABS(VAL(AN$)):IF A THEN{:3016} 10 | GOSUB 505:A=I:IF A THEN N$=AN$:I=1:GOTO{:3018} 11 | {:3016} 12 | IF A<1 OR A>UR THEN:&"{f6}{white}INVALID USER ACCOUNT!{f6}":GOTO{:3010} 13 | {:3018} 14 | GOSUB 35:X=A:GOSUB 1:&,2,2:ON I GOTO{:3020}:N$=A$:IF A$="{up arrow}"OR A$="RES"THEN A=.:GOTO{:3016} 15 | {:3020} 16 | INPUT# 2,A$,F$,L$:CLOSE 2:GOSUB{:3008}:X=A:GOSUB 1:&,2,2 17 | IF N$<>A$THEN AN$=N$:&,15,1:LP=1:&"{f6}{cyan}THERE IS NO BIOGRAPHY AVAILABLE FOR {pound}V7.{f6}":GOTO{:3010} 18 | INPUT# 2,B$,C$,D$:CLOSE 2 19 | A%=A:AN$=N$:&,15,1:&"{f6} {pound}VN{pound}#0{pound}%A - {cyan}{pound}V7":IF Q THEN AN$=F$+" "+L$:&,15,1:&"{f6}{cyan} REAL NAME: {white}{pound}V7" 20 | AN$=B$:&,15,1:&"{f6} {gray3}FROM:{lt. green} {pound}V7{f1} {pound}$C{f6} {purple}BIOGRAPHY:{cyan}{f6:2} {pound}$D{f6}":IF Q=.OR A<>ID THEN{:3010} 21 | I=A:&"{f6}{yellow}EDIT THIS BIO?:{white} ":GOSUB 94:ON A+1 GOTO{:3010} 22 | &"{f6}":TF=.:GOSUB{:3008}:X=A%:GOSUB 1:INPUT# 2,AA$,B$,C$,D$:CLOSE 2 23 | POKE 53252,20:PL=1:W$=B$:P$="CITY":&,1,32:IF AN$<>W$OR AN$<>""THEN B$=AN$:TF=1 24 | &"{f6}":POKE 53252,2:PL=1:W$=C$:P$="STATE":&,1,32:IF AN$<>W$OR AN$<>""THEN C$=AN$:TF=. 25 | &"{f6}":POKE 53252,79:PL=.:W$=D$:P$="BIO":&,1,32:IF AN$<>W$OR AN$<>""THEN D$=AN$:TF=1 26 | ON TF+1 GOTO{:3010}:GOSUB{:3008}:X=I:GOSUB 1:TT$=AA$+R$+B$+R$+C$+R$+D$:PRINT# 2,TT$:CLOSE 2:GOTO{:3010} 27 | {:3042} 28 | GOTO 300 29 | COPR. 1994 NEW IMAGE 9/14/94 30 | -------------------------------------------------------------------------------- /v2/core/plus_LMP.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | REM " +.LMP 02/19/92 09:02P " 5 | cm$="{rvrs on}{lt. green}LMP Tester{rvrs off}":GOSUB 1360:&"{clear}{f6:3}{pound}{back arrow}12{lt. blue}{rvrs on} LMP{$a0}FILE{$a0}TESTER {rvrs off}{f6:3}" 6 | &"{f6}{lt. green}SYSOP{$a0}INSTRUCTIONS? ":GOSUB 1902:ON a GOTO {:3038}:IF tr%<1 THEN 1811 7 | {:3006} 8 | GOSUB {:3012}:GOTO 1811 9 | {:3008} 10 | dr=5:GOSUB 1010:a$=dr$+"+/"+hr$+fd$+b$:LOAD a$,dv%:GOSUB 1012:IF e%=.THEN 4000 11 | &"{f6:2}Error Loading {f5}{pound}$a{f5} Module.{f6}":RETURN 12 | {:3012} 13 | &,28:&"{f6}{lt. blue}Input Module Prefix?{f6} {cyan}(lo, IM, sub, etc): {white}{pound}i0":hr$=an$ 14 | IF tr%<1 THEN RETURN 15 | &"{f6}{yellow}Input Name Of LMP File?{f6} {lt. green}(IE. news, main, etc.): {white}{pound}i0":b$=an$:IF tr%<1 THEN RETURN 16 | IF an$=""THEN RETURN 17 | &"{f6}What Divides Prefix And The Module?{f6}({f5}/{f5}, {f5}-{f5}) or {f5}.{f5}: {white}{pound}g1":fd$=an$ 18 | ON-(fd$="/")-(fd$="-")*2-(fd$=".")*3 GOTO {:3022},{:3024},{:3026} 19 | {:3022} 20 | &"Slash {f5}/{f5}{f6}":GOTO {:3028} 21 | {:3024} 22 | &"Hyphen {f5}-{f5}{f6}":GOTO {:3028} 23 | {:3026} 24 | &"Period {f5}.{f5}{f6}" 25 | {:3028} 26 | &"{f6:2}{lt. green}Is {white}+/"+hr$+fd$+b$+" {lt. green}Correct? ":GOSUB 1907:ON-(a=.)GOTO {:3012} 27 | IF tr%<1 THEN RETURN 28 | &"Starting Line = 4000{f6}{cyan}":GOSUB {:3008} 29 | &"{f6}{lt. green}Run Another One? :":GOSUB 1902:ON a GOTO {:3012}:IF tr%<1 THEN RETURN 30 | RETURN 31 | {:3038} 32 | lp=1:&"{clear}{f6:2} {white}LMP{$a0}File Tester, This Program is To Test LMP{$a0}Files, These Files" 33 | lp=1:&"Must Not Have Any Calls To A Main File That Might Be Needed. This" 34 | lp=1:&"Is Very Usefull for Creating LMP Files Or Added Stand Alone" 35 | lp=1:&"Modules Such As the NetWork Wall Writers.{f6}" 36 | lp=1:&" You Also Have The Ability To Use Different File Dividers." 37 | lp=1:&"Such As {f5}.{f5} or {f5}/{f5}.{f6:2}":GOTO {:3006} 38 | REM" Written By Bucko Of The Wrong # ][ BBS (914)/328-9078 " 39 | REM " +.LMP (C) NISSA 02/19/92 " 40 | -------------------------------------------------------------------------------- /v2/core/plusslashSM_textedit.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{clear}{f6:2}{pound}{back arrow}10{white}Text Message Editor{f6}{lt. green}{f6}Instructions? ":GOSUB 1902:IF a THEN{:4034} 5 | {:4002} 6 | &"{clear}{f6} 1) List Text Messages{f6:2} 2) Edit{f6:2} 3) Quit{f6:2} ME: {pound}g1{pound}v7{f6}":ON tr%+1 GOTO 1812 7 | a=VAL(an$):IF a<1 OR a>3 THEN{:4054} 8 | ON a GOTO {:4008},{:4016},{:4054}:GOTO {:4002} 9 | {:4008} 10 | a$="e.text":dr=3:GOSUB 1011:IF e%THEN{:4052} 11 | FOR x=1 TO 6:GOSUB 1001:&,2,2 12 | b%=x:&"{f6}({pound}%b)":& 13 | NEXT:&"{f6:2} Any Key {pound}g1":GOTO {:4002} 14 | {:4016} 15 | &"{f6:2} Edit Which? {pound}i1":IF tr%<1 GOTO {:4054} 16 | ON-(an$="")GOTO {:4002}:x=VAL(an$):IF x<1 OR x>6 THEN{:4016} 17 | a$="e.text":dr=3:GOSUB 1011:IF e%THEN{:4052} 18 | GOSUB 1001:&,2,2:&"{f6}Edit {f6}":& 19 | pl=.:POKE 53252,254:p$="{f6:2}Enter new text, 254 Character Max.{f6} ":&,1,43 20 | n$=an$:&"{f6}{pound}$n{f6:2} Ok? {pound}g1":IF tr%<1 THEN{:4054} 21 | IF an$<>"Y"THEN{:4016} 22 | GOSUB 1001:PRINT# 2,n$:GOSUB 1012:IF e%THEN{:4050} 23 | GOTO {:4002} 24 | {:4034} 25 | &"{clear}{f6:2}{pound}{back arrow}13{rvrs on} INSTRUCTIONS {rvrs off}" 26 | &"{f6}The text messages are the messages that{f6}your users see when they try" 27 | &"{f6}to do something they do not have the{f6}proper access for or have not been" 28 | &"{f6}cleared to do. The text messages{f6}may be edited to a certain extent" 29 | &"{f6}and this file will help you do that.{f6:2}It is self prompting and will" 30 | &"{f6}request verification before writing{f6}to your text file.{f6}" 31 | &"{f6}We recommend that you make a backup of{f6}your original file before you{f6}" 32 | &"proceed.{f6:2}(Any Key) {pound}g1":ON tr%+1 GOTO 1812:GOTO {:4002} 33 | {:4050} 34 | &"{f6:2}Error writing to {f5}e.text{f5}{pound}w3":GOTO {:4054} 35 | {:4052} 36 | &"{f6:2}Error opening {f5}e.text{f5}{pound}w3" 37 | {:4054} 38 | &,28,1:RETURN 39 | REM text msg editor 8/23 40 | REM converted to 2.0 12/31/2017 by x-tec 41 | REM "+/SM.textedit" sysop menu 180210 x-tec 42 | 43 | -------------------------------------------------------------------------------- /v1.2/games/empire6/emp.docs2.txt: -------------------------------------------------------------------------------- 1 | A few additions to the game are at 2 | the main menu, if you hit "H", you 3 | will hold a tournament. There are 4 | 12 possibilities: 6 winners and 6 5 | losers. 6 | 7 | After the battle, you now have the 8 | option of going on a quest. There are 9 | 8 regular quests, and then there's 10 | Zircon's Help. Zircon's Help is a 11 | multi-outcome quest. You may get up 12 | to five things, and they will not be 13 | the same each time! Also, you may 14 | enrage Zircon! In this case you will 15 | LOSE some of your possessions! Zircon 16 | may be too busy to see you, also. 17 | 18 | Also, now you will need a point 19 | rating of 300 to win on points!! 20 | 21 | There are some other changes but, 22 | like any good game, you will have to 23 | discover them, for yourself! 24 | 25 | OK, there is a new routine in the 26 | ATTACK phase. You now have the option 27 | of using a "Sneak Attack". Please 28 | note you will lose a turn if you use 29 | this. Also, you may not recruit rebel 30 | forces, attack Nobles, attack the 31 | Palace, or attack Armies. 32 | 33 | The way this works is your forces 34 | sneak into your opponent's territory. 35 | They strike without warning, possibly 36 | killing some Nobles and Soldiers. 37 | They may also burn down some Markets, 38 | Mills, Foundries, Shipyards, Ships, 39 | and Stables. They may also steal 40 | some grain and horses, or may kidnap 41 | some serfs. You, on the other hand, 42 | may lose some of your Nobles, 43 | Soldiers, and Horses. The routine 44 | takes 10% of your opponent's item, 45 | then selects a random number of that 46 | 10%. It then subtracts 2 from that 47 | number. If the number ends up being 48 | =<0, then you didn't destroy any of 49 | that item. Your losses are figured 50 | on a 5% basis, allowing for the 51 | elements of surprise and stealth. 52 | 53 | Also, if you should attack yourself 54 | (have a Civil War), then, you may lose 55 | some of everything -- NOT JUST HALF 56 | YOUR SERFS! Civil Wars are costly! 57 | 58 | XEVIOUS -------------------------------------------------------------------------------- /v2/core/im_trans.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | {alpha:alt} 3 | {step:2} 4 | i=1:on im gosub {:60100},{:60200},{:60300},{:60400},{:60500},{:60500} 5 | &"{f6:2}End of Transfer.{f6:2}":return 6 | {:60002} 7 | a=peek(53248):poke 53248,1:&,18,0:a%=dv%:b%=val(dr$) 8 | &"{clear} {cyan}{$a2:37}{f6}" 9 | &" {rvrs on} {pound}$x{pound}{back arrow}11: {f5}{pound}$f{f5}{pound}{back arrow}38{rvrs off}{gray3}{$a1}{f6}" 10 | &" {rvrs on}{cyan} Device : {pound}%a{pound}{back arrow}38{rvrs off}{gray3}{$a1}{f6}" 11 | &" {rvrs on}{cyan} Drive : {pound}%b{pound}{back arrow}38{rvrs off}{gray3}{$a1}{f6}" 12 | &" {rvrs on}{cyan} Protocol : {pound}vl{pound}{back arrow}38{rvrs off}{gray3}{$a1}{f6}" 13 | &" {gray3}{$bc}{rvrs on}{$a2:36}{rvrs off}{$be}{f6}" 14 | &"{lt. red} Good: {white}00000 {lt. red}Bad: {white}00000 {lt. red}Bytes: {white}000000{f6}" 15 | an$=f$:&,16,x:&"{clear}":&,18,1:poke 53248,a:b=-(rc<>.)*int(rc/254+.999):return 16 | {:60020} 17 | an$=tt$(i):gosub {:60022}:goto {:60024} 18 | {:60022} 19 | ' 58=":", 13= 20 | &,15,6,58:dv%=val(a$):&,15,6,58:dr$=a$+":":&,15,6,13:f$=a$:return 21 | {:60024} 22 | close 15:close 2:open 15,dv%,15:open 2,dv%,2,dr$+f$+b$:gosub 1012 23 | if e%then close 2 24 | return 25 | {:60100} 26 | b$=",r":gosub {:60020}:if e%then return 27 | {:60102} 28 | x$="Sending":x=0:poke 2036,-(right$(f$,1)="p"):gosub {:60002}:close 2 29 | return 30 | {:60200} 31 | b$=",w":gosub {:60020}:if e%=.then x$="Receiving":x=1:gosub {:60002}:close 2 32 | return 33 | {:60300} 34 | for i=1 to n:a=.:b$=",r":gosub {:60020} 35 | if e%=.then x$="Sending":x=2:gosub {:60002}:gosub {:60102}:if b=. then {:60304} 36 | tt$(i)=mid$(str$(b),2)+":"+f$:next 37 | {:60304} 38 | n=i-1:return 39 | {:60400} 40 | dv%=d1%:dr$=mid$(str$(d1%),2)+":":n=. 41 | {:60402} 42 | f$="":x=3:gosub {:60002}:if an$=""then return 43 | f$=an$:b$=",w":gosub {:60024}:if e%then return 44 | x$="Receiving":x=1:gosub {:60002}:close 2:if b=.then return 45 | n=n+1:tt$(n)=mid$(str$(b),2)+":"+f$:on-(n<60)goto {:60402} 46 | {:60500} 47 | return 48 | rem im.trans 49 | copr. 1994 new image 9/8/94 50 | -------------------------------------------------------------------------------- /v2/core/plus_UB.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{f6}{cyan} {$c0:15}{f6} {rvrs on}{purple} User Bio v2.0 {f6}{cyan} {$c0:15}{f6}":a=8:GOSUB 1004:q=a 5 | GOSUB {:3008}:ON e%+1 GOTO {:3010}:IF q=.THEN:&"{f6}Sorry, No Biographies Available Today.{f6}":GOTO {:3042} 6 | &"{f6}Creating {f5}u.biographies{f5} Now...":dr=6:a$="u.biographies,l,"+CHR$(125):GOSUB 1011 7 | x=ur:GOSUB 1001:PRINT# 2,"{up arrow}":CLOSE 2:&"!{f6}":GOTO {:3010} 8 | {:3008} 9 | dr=6:a$="u.biographies":GOTO 1011 10 | {:3010} 11 | i=.:x=.:a=.:POKE 53252,20:&"{f6}{cyan}Enter The Handle Or{f1} User{f6}ID# Of User To View{f6}: {white}{pound}i1" 12 | ON-(tr%<1 OR an$=""OR an$=r$)GOTO {:3042}:a=ABS(VAL(an$)):IF a THEN{:3016} 13 | GOSUB 1046:a=i:IF a THEN n$=an$:i=1:GOTO {:3018} 14 | {:3016} 15 | IF a<1 OR a>ur THEN:&"{f6}{white}Invalid User Account!{f6}":GOTO {:3010} 16 | {:3018} 17 | GOSUB 1065:x=a:GOSUB 1001:&,2,2:ON i GOTO {:3020}:n$=a$:IF a$="{up arrow}"OR a$="RES"THEN a=.:GOTO {:3016} 18 | {:3020} 19 | INPUT# 2,a$,f$,l$:CLOSE 2:GOSUB {:3008}:x=a:GOSUB 1001:&,2,2 20 | IF n$<>a$THEN an$=n$:&,15,1:lp=1:&"{f6}{cyan}There Is No Biography Available For {pound}v7.{f6}":GOTO {:3010} 21 | INPUT# 2,b$,c$,d$:CLOSE 2 22 | a%=a:an$=n$:&,15,1:&"{f6} {pound}vn{pound}#0{pound}%a - {cyan}{pound}v7":IF q THEN an$=f$+" "+l$:&,15,1:&"{f6}{cyan} Real Name: {white}{pound}v7" 23 | an$=b$:&,15,1:&"{f6} {gray3}From:{lt. green} {pound}v7{f1} {pound}$c{f6} {purple}Biography:{cyan}{f6:2} {pound}$d{f6}":IF q=.OR a<>id THEN{:3010} 24 | i=a:&"{f6}{yellow}Edit This Bio?:{white} ":GOSUB 1902:ON a+1 GOTO {:3010} 25 | &"{f6}":tf=.:GOSUB {:3008}:x=a%:GOSUB 1001:INPUT# 2,aa$,b$,c$,d$:CLOSE 2 26 | POKE 53252,20:pl=1:w$=b$:p$="City":&,1,32:IF an$<>w$OR an$<>""THEN b$=an$:tf=1 27 | &"{f6}":POKE 53252,2:pl=1:w$=c$:p$="State":&,1,32:IF an$<>w$OR an$<>""THEN c$=an$:tf=. 28 | &"{f6}":POKE 53252,79:pl=.:w$=d$:p$="Bio":&,1,32:IF an$<>w$OR an$<>""THEN d$=an$:tf=1 29 | ON tf+1 GOTO {:3010}:GOSUB {:3008}:x=i:GOSUB 1001:tt$=aa$+r$+b$+r$+c$+r$+d$:PRINT# 2,tt$:CLOSE 2:GOTO {:3010} 30 | {:3042} 31 | GOTO 1811 32 | rem "+.UB" copr. 1994 NEW image 9/14/94 33 | -------------------------------------------------------------------------------- /v2/core/plus_bio.lbl: -------------------------------------------------------------------------------- 1 | {number:3000} 2 | {alpha:alt} 3 | {step:2} 4 | &"{f6}{cyan} {$c0:15}{f6} {rvrs on}{purple} User Bio v1.3 {f6}{cyan} {$c0:15}{f6}":a=8:GOSUB 1004:q=a 5 | GOSUB {:3008}:ON e%+1 GOTO {:3010}:IF q=.THEN:&"{f6}Sorry, No Biographies Available Today.{f6}":GOTO {:3042} 6 | &"{f6}Creating {f5}u.biographies{f5} Now...":dr=6:a$="u.biographies,l,"+CHR$(125):GOSUB 1011 7 | x=ur:GOSUB 1001:PRINT# 2,"{up arrow}":CLOSE 2:&"!{f6}":GOTO {:3010} 8 | {:3008} 9 | dr=6:a$="u.biographies":GOTO 1011 10 | {:3010} 11 | i=.:x=.:a=.:POKE 53252,20:&"{f6}{cyan}Enter The Handle Or{f1} User{f6}ID# Of User To View{f6}: {white}{pound}i1" 12 | ON-(tr%<1 OR an$=""OR an$=r$)GOTO {:3042}:a=ABS(VAL(an$)):IF a THEN{:3016} 13 | GOSUB 1046:a=i:IF a THEN n$=an$:i=1:GOTO {:3018} 14 | {:3016} 15 | IF a<1 OR a>ur THEN:&"{f6}{white}Invalid User Account!{f6}":GOTO {:3010} 16 | {:3018} 17 | GOSUB 1065:x=a:GOSUB 1001:&,2,2:ON i GOTO {:3020}:n$=a$:IF a$="{up arrow}"OR a$="RES"THEN a=.:GOTO {:3016} 18 | {:3020} 19 | INPUT# 2,a$,f$,l$:CLOSE 2:GOSUB {:3008}:x=a:GOSUB 1001:&,2,2 20 | IF n$<>a$THEN an$=n$:&,15,1:lp=1:&"{f6}{cyan}There Is No Biography Available For {pound}v7.{f6}":GOTO {:3010} 21 | INPUT# 2,b$,c$,d$:CLOSE 2 22 | a%=a:an$=n$:&,15,1:&"{f6} {pound}vn{pound}#0{pound}%a - {cyan}{pound}v7":IF q THEN an$=f$+" "+l$:&,15,1:&"{f6}{cyan} Real Name: {white}{pound}v7" 23 | an$=b$:&,15,1:&"{f6} {lt. blue}From:{lt. green} {pound}v7{f1} {pound}$c{f6} {purple}Biography:{cyan}{f6:2} {pound}$d{f6}":IF q=.OR a<>id THEN{:3010} 24 | i=a:&"{f6}{yellow}Edit This Bio?:{white} ":GOSUB 1902:ON a+1 GOTO {:3010} 25 | &"{f6}":tf=.:GOSUB {:3008}:x=a%:GOSUB 1001:INPUT# 2,aa$,b$,c$,d$:CLOSE 2 26 | POKE 53252,20:pl=1:w$=b$:p$="City":&,1,32:IF an$<>w$OR an$<>""THEN b$=an$:tf=1 27 | &"{f6}":POKE 53252,2:pl=1:w$=c$:p$="State":&,1,32:IF an$<>w$OR an$<>""THEN c$=an$:tf=. 28 | &"{f6}":POKE 53252,79:pl=.:w$=d$:p$="Bio":&,1,32:IF an$<>w$OR an$<>""THEN d$=an$:tf=1 29 | ON tf+1 GOTO {:3010}:GOSUB {:3008}:x=i:GOSUB 1001:tt$=aa$+r$+b$+r$+c$+r$+d$:PRINT# 2,tt$:CLOSE 2:GOTO {:3010} 30 | {:3042} 31 | GOTO 1811 32 | rem "+.bio" - copr. 1990 NEW image software 33 | -------------------------------------------------------------------------------- /scripts/start-bbs-userport.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 2020-01-11 3 | basedir=$HOME/c64/Image\ BBS/v2 4 | diskname=image-1_3-boot-e-user_port-fresh.d81 5 | 6 | # tcpser is in ~/bin 7 | 8 | # test Image 1.3 at 2400 bps on user port 9 | # using VICE 3.3 r37286: mouseover drive 11 crash bug 10 | # using VICE 3.3 r37354: fixed!!! happy hacker 11 | 12 | # +acia disable ACIA emulation 13 | # -rsdev1 define device, address:port for tcpser to connect to 14 | # -rsuser enable user port RS232 emulation 15 | # -drive10type 0=none, 1581=1581 16 | # -10 attach disk image 17 | 18 | # im: (use &,16,0 in line 3086) 19 | # +/modem (have &,41 limited to 2400 bps) 20 | 21 | # 'ss -t' shows ala 'netstat' the tcp connections 22 | # shut down vice, shut down tcpser - still 'broken pipe' error on next run of vice? 23 | 24 | # RS232 options: 25 | # 'nc -q 1' waits 1 second after connection closes to exit 26 | # *no colon needed between address and port*, despite VICE docs (maybe in Windows) 27 | # nc: '-u' specifies UDP connection instead of TCP 28 | 29 | # "-default" is just here temporarily to make sure command-line parameters are being used 30 | x64sc -drive8type 0 -drive9type 0 -drive10type 1581 -drive11type 1581 -10 "$basedir/$diskname" -11 "$basedir/image-1_3-s-nm.d81" +acia1 -rsuser -rsdev1 "|nc -p 3007 -q 1 127.0.0.1 25232" -rsdev1baud 2400 -rsuserdev 0 -rsdev1ip232 31 | 32 | exit 33 | 34 | # enable remote monitor for quick detach/rewrite/re-attach cycle 35 | -remotemonitor \ 36 | -remotemonitoraddress 127.0.0.1:6510 37 | 38 | x64sc \ 39 | # -verbose \ 40 | 41 | # drive/disk image options: 42 | -drive8type 0 \ 43 | -drive9type 0 \ 44 | -drive10type 1581 \ 45 | -drive11type 1581 \ 46 | -10 "$basedir/$diskname" \ 47 | -11 "$basedir/image-1_3-s-nm.d81" \ 48 | 49 | # RS232 options: 50 | # 'nc -q 1' waits 1 second after connection closes to exit 51 | # *no colon needed between address and port*, despite VICE docs (maybe in Windows) 52 | +acia1 -rsuser -rsdev1 "|nc -p 3000 -q 1 127.0.0.1 25232" -rsdev1baud 2400 -rsuserdev 0 -rsdev1ip232 \ 53 | 54 | # enable remote monitor for quick detach/rewrite/re-attach cycle 55 | -remotemonitor \ 56 | -remotemonitoraddress 127.0.0.1:6510 57 | -------------------------------------------------------------------------------- /v2/asm/jump-table.asm: -------------------------------------------------------------------------------- 1 | ; print"11/08/90 03:28p" 2 | ; jump table for &'s 3 | 4 | word outastr ; & 5 | word $f400 ; &,1 inline (swap1.asm) 6 | word dskin ; &,2 (disk-io.asm) 7 | word $fc00 ; &,3 read0 (swap3.asm) 8 | word getmdm ; &,4 9 | word getversn ; &,5 10 | word $f406 ; &,6 password (swap1.asm) 11 | word prgfile ; &,7 12 | word dskdir ; &,8 13 | word $f806 ; &,9 btmvar (swap2.asm) 14 | word $f800 ; &,10 term (swap2.asm) 15 | word $ee00 ; &,11 clrarr (struct.asm) 16 | word $fc03 ; &,12 newuser (swap3.asm) 17 | word inchr ; &,13 18 | word dumparr ; &,14 19 | word convan ; &,15 20 | word 49152 ; &,16 21 | word 49155 ; &,17 22 | word setmode ; &,18 23 | word getversn ; &,19 24 | word getversn ; &,20 25 | word getversn ; &,21 26 | word tenwait ; &,22 27 | word xgetin ; &,23 28 | word xchrout1 ; &,24 29 | word $f80c ; &,25 sound (swap2.asm) 30 | word callmod ; &,26 31 | word arraysav ; &,27 32 | word arrayres ; &,28 33 | word usevar ; &,29 34 | word putvar ; &,30 35 | word zero ; &,31 36 | word minusone ; &,32 37 | word getarr ; &,33 38 | word putarr ; &,34 39 | word getln ; &,35 40 | word putln ; &,36 41 | word trapon ; &,37 42 | word trapoff ; &,38 43 | word prtln ; &,39 44 | word forcegc ; &,40 45 | word setbaud ; &,41 46 | word $e400 ; &,42 ecs (ecs.asm) 47 | word chatchk ; &,43 48 | word trace ; &,44 49 | word prtvar ; &,45 50 | word prtvar0 ; &,46 51 | word carchk ; &,47 52 | word getkbd ; &,48 53 | word getmod ; &,49 54 | word outscn ; &,50 55 | word outmod ; &,51 56 | word chkflags ; &,52 57 | word logoff ; &,53 58 | word $f409 ; &,54 useeditr (swap1.asm) 59 | word output ; &,55 60 | word $f803 ; &,56 chatmode (swap2.asm) 61 | word $fc06 ; &,57 relread (swap3.asm) 62 | word setalm ; &,58 63 | word farerr ; &,59 64 | word struct ; &,60 65 | word poscrsr ; &,61 66 | word settim ; &,62 67 | word $f403 ; &,63 inline1 (swap1.asm) 68 | word $f809 ; &,64 convstr (swap2.asm) 69 | word $fc09 ; &,65 convert (swap3.asm) 70 | word calcgoto ; &,66 71 | word $fc0c ; &,67 copyrite (swap3.asm) 72 | word $ee03 ; &,68 struct (struct.asm) 73 | word dispstr ; &,69 74 | word cursposn ; &,70 75 | word cursmenu ; &,71 76 | -------------------------------------------------------------------------------- /v2/core/im_local.lbl: -------------------------------------------------------------------------------- 1 | {number:60000} 2 | {alpha:alt} 3 | {step:2} 4 | on im goto {:60002},{:60006},{:60008},{:60010},{:60016},{:60018},{:60026},{:60032} 5 | {:60002} 6 | ' TODO: display amount of credits first, add check for <0 credits 7 | &"{f6:2}#Credits?: {pound}i1":cr=cr+int(val(left$(an$,6))) 8 | b$=str$(cr):&"{f6}Now:{pound}$b Credits{f6}":return 9 | {:60006} 10 | dr=1:a$="s.menu 4":goto 1075 11 | {:60008} 12 | gosub 1094:goto 1372 13 | {:60010} 14 | gosub 1470:on a goto 1995:&"{f6:2}Filename?: ":gosub 1499:if an$=""then return 15 | a$=an$+",s,r":gosub 1011:if e%then:&:return 16 | {:60014} 17 | &,3,2:s=st:on-(rc+s=.)goto {:60014}:goto 1032 18 | {:60016} 19 | gosub 1470:on a goto 1995:gosub 1081:a%=dv%:b$=dr$:&"{f6:2}{pound}%a:{pound}$b":&str$(a):return 20 | {:60018} 21 | dr=5:gosub 1010:pr=-1:a$=dr$+"++ read":&,7,dv%,2:gosub 1012:if e%then return 22 | gosub 1470:on a goto 1995:poke 53252,16:&"{f6:2}Filename: ":gosub 1499:if an$=""then return 23 | a$=an$+",p,r":gosub 1011:if e%then:&:close 2:return 24 | &,16,nl,ll%:close 2:return 25 | {:60026} 26 | &,52,4,3:if a%then zz=1-zz:&,52,5,zz:return 27 | a=3:gosub 1004:if a then a=zz:b$="Local":gosub 1870:zz=a:&,52,5,zz:return 28 | rs=.:return 29 | {:60032} 30 | if tt$=""then return 31 | ' 94=^ 32 | an$=mid$(tt$,5):&,15,6,94:b$=an$:an$=a$ 33 | if left$(tt$,1)="!"then b$=mid$(tt$,2,3)+b$ 34 | if b$<>"" then {:60046} 35 | c$=left$("m."+an$,15):gosub {:60064}:if e%then close 2:&:return 36 | an$=right$(str$(id+10000),4)+na$ 37 | print# 2,an$r$id:goto {:60062} 38 | {:60046} 39 | dr=2:a$="nm.config":gosub 1011 40 | &,2,2:x=val(a$)+1:&,2,2:&,2,2:&,2,2:&,2,2:close 2:if x<2 then return 41 | d$="":if len(a$)=3 then d$="{up arrow}"+a$ 42 | dr=2:a$="nm.nodes":gosub 1011 43 | gosub 1001:&,2,2:close 2:if len(a$)<>3 then return 44 | n$=a$:a$=left$(b$,3):b$=mid$(b$,4):if len(b$)=3 then a$=a$+"-"+b$ 45 | c$="nm.E."+a$+"/"+n$:gosub {:60064}:if e%then close 2:&:return 46 | print# 2,tt$r$"!"n$na$d$r$0 47 | {:60062} 48 | print# 2,d1$r$tt$(0):&,14,2,kk:print# 2,"{up arrow}":close 2:return 49 | {:60064} 50 | dr=2:a$=c$+",s,w":gosub 1011:if e%then a$=c$+",s,a":gosub 1011 51 | return 52 | rem im.local 53 | -------------------------------------------------------------------------------- /v2/docs/notes: -------------------------------------------------------------------------------- 1 | Files needed: 2 | 3 | Thought being since Subs haven't been converted to structs, 4 | we need separate modules for now. 5 | 6 | 2.0 filename 1.3 filename C64List filename Status 7 | ========================================================================= 8 | i.UD +.UD plus_UD.lbl 9 | i/UD.edit +/UD.edit plusslashUD_edit.lbl (unfinished) 10 | i/MM.load +/UD.load plusslashUD_load.lbl 11 | i/MM.maint +/UD.maint plusslashUD_maint.lbl 12 | i/MM.ud-sort +/UD.ud-sort plusslashUD_ud-sort.lbl (no struct sorting) 13 | i/MM.subop +/UD.subop plusslashUD_subop.lbl (work in progress) 14 | 15 | Run +.reledit, create a U/D, create a SIG containing that U/D. 16 | This creates: 17 | "e.Sig,r" 18 | "e.Sig 1,s" 19 | "e.Sig 2,s" 20 | for example. 21 | 22 | Run "+.convert sigs" to convert "e.Sig,r" to "e.Siglist,p" (the struct format) 23 | Should return "00:ok:00:00" status. 24 | 25 | Now you have: 26 | "e.Sig" 27 | "e.Siglist" 28 | "e.Sig 1" 29 | 30 | Run +.sigedit - Should see 1 SIG defined. 31 | List doesn't display the name of the U/D. 32 | 33 | If you need to add/remove a SIG: 34 | 1) scratch "e.Siglist*" 35 | 3) re-run "+.convert sigs", then "+.convert sigs2". 36 | 37 | "+.convert sigs2" will go through the other SIGs in the list, creating 38 | "e.Sig 1,s" 39 | through 40 | "e.Sig xx,s" 41 | and create 42 | "e.Siglist xx,p" 43 | 44 | "contains" flags are reversed, Like X-Tec mentioned 45 | 46 | ud%(29,60) struct for holding U/D info (60 entries of 30 bytes) 47 | ud%( 0, 0) # of files in directory 48 | ud%( 0, 1) files tagged 49 | 50 | ud%( 0,xn) bits: 51 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 52 | 0=validation status: 0=not validated 53 | 1=tagged? 54 | 55 | ud%( 1,xn) block/kbyte size 56 | ud%( 2,xn) # of times downloaded 57 | ud%( 3,xn) Date first uploaded 58 | ud%( 6,xn) Date last downloaded 59 | ud%( 9,xn) 1=Commented 60 | ud%(10,xn) Uploader's UID# 61 | ud%(11,xn) Handle of uploader 62 | ud%(21,xn) Filename 63 | ud%(29,xn) Filetype: 0=SEQ, 1=PRG 64 | 65 | ud%( 1, 0) subop? 66 | 67 | rn # of files in directory [copy of ud%(0,0)] 68 | xn current file in directory doing an About, Read, etc. 69 | q=1 subop status 70 | 71 | Maybe +/lo/filelist should be converted to use structs too 72 | -------------------------------------------------------------------------------- /v2/core/plus- lo - jerk.lbl: -------------------------------------------------------------------------------- 1 | {number:4000} 2 | cm$="jerk award":gosub 1360:goto {:4006} 3 | {:4002} 4 | t=int((37-len(a$))/2):t$=mid$(str$(t),2):if t<10 then t$="0"+t$ 5 | return 6 | {:4006} 7 | dr=3:a$="e.jerks":gosub 1011:if e%then return 8 | c=.:x=17:gosub 1001:&,2,2:d=val(a$):x=. 9 | {:4010} 10 | x=x+1:if x>d then{:4016} 11 | gosub 1001:&,2,2:c%=val(a$):if c%>c then c=c%:j=x 12 | goto {:4010} 13 | {:4016} 14 | x=j:gosub 1001:&,2,2:an$=mid$(a$,4):&,15,1:n$=an$ 15 | a$="n.$Jerk Award":dr=1:gosub 1023:print# 2,r$"{pound}$q {$04}"+d1$ 16 | print# 2,"{pound}$q{white}{$b0}{pound}o{$c0:18}{$ae}"r$"{pound}$q{$dd}{pound}{back arrow}37{$dd}" 17 | gosub {:4002}:a$="{yellow}This month the {green}{rvrs on}Jerk Award{rvrs off}":print# 2,"{$dd}{pound}$q{pound}{back arrow}"+t$+a$+"{pound}{back arrow}37{white}{$dd}" 18 | a$="{yellow}is proudly presented to":gosub {:4002} 19 | print# 2,"{pound}$q{$dd}{pound}{back arrow}37{$dd}"r$"{pound}$q{$dd}{pound}{back arrow}"+t$+a$+"{pound}{back arrow}37{white}{$dd}" 20 | a$=n$:gosub {:4002} 21 | print# 2,"{pound}$q{$dd}{pound}{back arrow}37{$dd}"r$"{pound}$q{$dd}{gray3}{pound}{back arrow}"+t$+"{rvrs on}"+n$+"{rvrs off}{pound}{back arrow}37{white}{$dd}"r$"{pound}$q{$dd}{pound}{back arrow}37{$dd}" 22 | a$="{lt. red}who has exhibited qualities":gosub {:4002} 23 | gosub {:4002}:print# 2,"{pound}$q{$dd}{pound}{back arrow}"+t$+a$+"{pound}{back arrow}37{white}{$dd}" 24 | a$="{lt. red}that make him the overwhelming" 25 | gosub {:4002}:print# 2,"{pound}$q{$dd}{pound}{back arrow}"+t$+a$+"{pound}{back arrow}37{white}{$dd}" 26 | a$="{lt. red}choice by a vote of his peers." 27 | gosub {:4002}:print# 2,"{pound}$q{$dd}{pound}{back arrow}"+t$+a$+"{pound}{back arrow}37{white}{$dd}" 28 | print# 2,"{pound}$q{$dd}{pound}{back arrow}37{$dd}"r$"{pound}$q{$ad}{pound}o{$c0:18}{$bd}"r$"{up arrow}":close 2 29 | dr=3:a$="e.jvoters":gosub 1023:print# 2,"THE SYSOP":close 2 30 | a$="e.jerks":dr=3:gosub 1024:b$=",l,"+chr$(30):a$=a$+b$:dr=3:gosub 1011 31 | x=18:gosub 1001:print# 2,chr$(255):x=17:d=1:gosub 1001:print# 2,d 32 | x=1:gosub 1001:print# 2,"{up arrow}":close 2:a$=" {lt. red}Jerk Award Restarted"+r$+" {yellow}{pound}o{$c0}{pound}o{$c0}{lt. green}":goto 1095 33 | copr. 1994 new image 9/18/94 34 | --------------------------------------------------------------------------------