dbg" Rick's Clubhouse BBS" array rick-welcome-rle { s" rickclub.bin" open filebytes 18 lines-of encode-rle } array rick-menu-rle { s" rickmenu.bin" open filebytes 7 lines-of encode-rle } dbg" login" : login l" To login as a guest, leave your name blank." begin x" Enter your name: " readline nl dup b@ while x" Sorry, I don't recognize " xmit l" !" nl repeat nl cyan fg! l" Welcome, guest! We hope you decide to apply for a full membership." l" Guest accounts have limited access." l" If you have any questions, feel free to page the sysop - I'll be happy" l" to chat with you if I'm around!" l" -- Rick" nl ; deferred rick-menu noop : page-rick x" Paging Sysop..." 5 times each 100 delay [ key . lit ] emit next nl l" Sorry, guess they're not home!" ' rick-menu ; dbg" files" s" swine.com" s" Swine Meeper - A fun freeware puzzler. Find all the truffles!" defembed swine.com s" dirtrect.com" s" A simple textmode graphics demo advertising the game development collective\called Dirty Rectangles." defembed dirtrect.com s" assemble.com" s" This claims to be some kind of combination Forth system / 8086 assembler??\I don't know Forth and I don't have any documentation for it, and it\doesn't use a standard assembly syntax, so your guess is as good as mine." defembed assemble.com ( s" kpshrink4.kps" s" KP Shrinker 4.0 - Compressor and decompressor for KPS files\Requires an earlier version of PK Shrinker to extract." 59943 deffake kpshrink4.kps s" mazecr3d.kps" s" Maze Crazy 3D - Explore a fascinating maze filled with twists and turns\in 3 incredible dimensions! Includes instructions for building a PC adapter\for the Virtua Glove." 48371 deffake mazecr3d.kps ) : rick-filelist (( swine.com yield dirtrect.com yield assemble.com yield )) ; : list-files 1 each blue bg! yellow fg! x" [" dup .digit x" ]" lcyan fg! black bg! sp emit i filename xmit cyan fg! x" (" i filesize n>st xmit l" bytes)" lgray fg! nl i filedesc xmit-desc nl nl 1+ next drop ; : select-file black bg! white fg! x" Type the number of a file, or Q to return to the menu: " inputch dup [ key q lit ] = if drop ' rick-menu return then [ key 1 lit ] - dup 0 >= over rick-filelist count < and if rick-filelist nth lblue fg! x" Downloading " dup filename xmit l" ..." download-file l" Done!" else drop lred fg! l" Sorry, that is not a valid selection." then ' select-file ; : rick-files nl rick-filelist list-files ' select-file ; dbg" menu" :noname ( -- cp ) nl rick-menu-rle xmit-screen nl 0 begin yellow fg! black bg! nl x" Your selection: " inputch dup [ key m lit ] = if lred fg! l" Sorry, message boards are not available to guests." then dup [ key g lit ] = if lred fg! l" Sorry, games are not available to guests." then dup [ key p lit ] = if swap drop ' page-rick swap then dup [ key f lit ] = if swap drop ' rick-files swap then [ key h lit ] = if lcyan fg! l" Thank you for calling!" 300 delay return then dup until ; ' rick-menu redefine : rick black bg! white fg! sp [ pagew 3 * lit ] repeated xmit-iter rick-welcome-rle xmit-screen login ' rick-menu begin execute dup not until ;