From 57f2f4b3d3b546705a2819ce25ab9176c8f994a9 Mon Sep 17 00:00:00 2001 From: Jeremy Penner Date: Sun, 15 Oct 2023 16:54:40 -0400 Subject: [PATCH] file area, speed up text display --- dialer.com | Bin 10064 -> 21830 bytes dialer.jrt | 66 +++++++++++++++++++++++++++++++++++------------- dirtrect.com | Bin 2315 -> 2317 bytes embed.jrt | 4 +-- iter.jrt | 3 +++ rick.jrt | 69 ++++++++++++++++++++++++++++++++++++++++++++++++--- swine.com | Bin 7828 -> 8092 bytes timer.jrt | 2 +- zipoff.com | Bin 20374 -> 20400 bytes zipstub.seg | Bin 4543 -> 4601 bytes 10 files changed, 120 insertions(+), 24 deletions(-) diff --git a/dialer.com b/dialer.com index 0ca7d2de9f74d86667406f169d7d980c912639ce..1944d9a885a8d45c323a2c210ab0aedfc809fbf7 100755 GIT binary patch literal 21830 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 diff --git a/dialer.jrt b/dialer.jrt index f6ca1cd..f632ae6 100755 --- a/dialer.jrt +++ b/dialer.jrt @@ -1,6 +1,21 @@ -0 var, quiet +1 var, quiet 0 var, quick +: quiet? quiet @ quick @ or ; : quick? quick @ ; +: noisy quiet? if rdrop then ; +: slow quick? if rdrop then ; +var last-delay +: delay-base + timer @ dup last-delay @ - dup 0 >= swap 5 < and if drop last-delay @ then ; +: delay dup not quick? and if drop else + delay-base + dup last-delay ! + begin dup timer @ > while suspend repeat drop + then ; + +var ms-error +: ms ms-error @ + 8 /mod ms-error ! delay ; + +dbg" modem sounds" array dtmf-col 1209 freq>div , 1336 freq>div , 1477 freq>div , array dtmf-row 697 freq>div , 770 freq>div , 852 freq>div , 941 freq>div , @@ -12,11 +27,6 @@ array dtmf-row 697 freq>div , 770 freq>div , 852 freq>div , 941 freq>div , -2 const D* -1 const D# -: quiet? quiet @ quick @ or ; : quick? quick @ ; -: noisy quiet? if rdrop then ; -: slow quick? if rdrop then ; -: delay quick? if drop else sleep-csec then ; - : dtmf ( digit -- f1 f2 ) 1- dup 0 < if abs 3 % 3 swap else 3 /mod then cells dtmf-col + @ swap cells dtmf-row + @ ; @@ -57,7 +67,7 @@ array dtmf-row 697 freq>div , 770 freq>div , 852 freq>div , 941 freq>div , 45 probe-hi 50 probe-lo 15 probe-hi 60 probe-lo 60 probe-hi 300 fullduplex ; -( statusbar words ) +dbg" statusbar" var status var status-timer var status-bg @@ -88,7 +98,7 @@ disconnect-status :| begin textstate draw-status textstate! suspend again |; spawn-task drop ; -( terminal words ) +dbg" terminal" : sleep-key begin key-waiting? not while suspend repeat wait-key ; : pause sleep-key drop ; @@ -98,8 +108,10 @@ disconnect-status : nl nextline fixcursor ; : emit draw-char fixcursor ; -: xmit ( st -- ) chars each i emit 1 delay next ; +: xmit-iter each i emit 3 ms next ; +: xmit ( st -- ) chars xmit-iter ; : xmit-line xmit nl ; +: repeated ( v n -- ) times >arg (( each dup map next drop )) ; { :timm x" t" t, xmit ; :timm l" t" t, xmit-line ; } @@ -123,23 +135,43 @@ array linebuf MAXLINE 1+ allot : call ( st -- ) white fg! x" ATDT" dup xmit-line quiet? if drop else offhook dialtone dialst then ; : successful-call ( st -- ) call noisy 200 sleep-csec handshake ; -: hangup ( -- ) nl offhook disconnect-status white fg! l" NO CARRIER" ; +: hangup ( -- ) offhook nl disconnect-status white fg! l" NO CARRIER" ; : connect ( cp st -- ) successful-call connect-status l" CONNECT 57600" execute hangup ; -( bbses ) - +dbg" downloading" import embed.jrt -: xmit-screen ( rle -- ) rle-decode each i 8 >> textpen ! i emit next ; + +: embed-write ( fp p -- ) dup embed-size swap embed-data t w>t w>t w>t w>t ; + : defembed ( filename desc -- ) + over [ tdict-lookup open drop , ] filebytes target embed-bytes + t' embed-size t' embed-write deffile ; + : deffake ( filename desc size -- ) t' noop t' rand-write deffile ; } + +: filename ( file -- st ) 4 cells + @ ; +: filedesc ( file -- st ) 3 cells + @ ; +: filedata ( file -- data ) 2 cells + @ ; +: filesize ( file -- n ) dup filedata swap cell + @ execute ; +: write-file ( file -- ) + dup filename overwrite >r r@ over filedata > textpen ! pass next )) xmit-iter + textpen ! ; { : lines-of pagew 2* * take ; } import rick.jrt -( menu ) +dbg" menu" : snapshot 1 0 pagecopy ; : restore 0 1 pagecopy ; -: nth ( i -- v ) 0 each 2dup = if drop i break then 1+ next swap drop ; -: count 0 each 1+ next ; var menu-onclose : close-menu ( cp -- ) menu-onclose ! restore suspend ; @@ -187,7 +219,7 @@ pagew menux 2* - const menuw : popup-menu snapshot textstate 0 menu-onclose ! first-option draw-menubox menu-loop textstate! menu-onclose @ execute 0 menu-onclose ! ; -( logo ) +dbg" startup" { : X ( v -- v ) 2* 1 | ; : o ( v -- v ) 2* ; } 7 const logoh diff --git a/dirtrect.com b/dirtrect.com index 1485fe219f51af7398093df8f90ca95cff33068c..51c32870e85eb983c13497a21cb440865db03fa6 100755 GIT binary patch delta 10 RcmeAc>J{3+&B>&}2mlY#0xSRk delta 7 OcmeAb>K59-%?SVrd;$Rg diff --git a/embed.jrt b/embed.jrt index b6050ae..6e40052 100755 --- a/embed.jrt +++ b/embed.jrt @@ -35,8 +35,8 @@ var rle-run : encode-rle ( call with iterator that returns bytes ) >rle-start each i iterate if i 8 << | >rle else drop then next >rle-done ; : embed-rle ( host-filename -- ) open filebytes encode-rle ; -: embed ( host-filename -- ) - target 0 w>t open filebytes each i >t next target swap !t ; +: embed-bytes ( -- ) target 0 w>t each i >t next target swap !t ; +: embed ( host-filename -- ) open filebytes embed-bytes ; } : embed-size ( embed -- v ) dup @ swap - ; diff --git a/iter.jrt b/iter.jrt index f66a1b4..d28e572 100755 --- a/iter.jrt +++ b/iter.jrt @@ -142,6 +142,9 @@ nexttop :push >next >next >next 1 nextpeek - >i :| 2 nextpeek +for? 3 |; >next ; : pchars ( st -- ) 1- >i :| i 1 else drop 0 then 1 |; >next ; +: nth ( i -- v ) 0 each 2dup = if drop i break then 1+ next swap drop ; +: count 0 each 1+ next ; + :asm _resume ( cpcancel -- 0 0 args... ) POP DX MOV AX SS diff --git a/rick.jrt b/rick.jrt index e06d63b..35eb61e 100755 --- a/rick.jrt +++ b/rick.jrt @@ -29,13 +29,74 @@ deferred rick-menu noop l" Sorry, guess he's not home!" ' rick-menu ; -: rick-files l" WORK IN PROGRESS, HERE BE DRAGONS" ' rick-menu ; +dbg" swine.com" s" swine.com" +s" Swine Meeper - A fun freeware puzzler. Find all the truffles!" +defembed swine.com + +dbg" dirtrect.com" s" dirtrect.com" +s" Dirty Rectangles - A simple textmode graphics demo" +defembed dirtrect.com + +dbg" kpshrink4.kps" 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 + +dbg" mazecr3d.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 (( + kpshrink4.kps yield + dirtrect.com yield + mazecr3d.kps yield + swine.com yield + )) ; + +: xmit-desc ( st -- ) + chars (( each i [ key \ lit ] = if nl else pass then next )) + xmit-iter ; + +array numstr 7 allot +key 0 const $0 +: char>> ( st ch -- st+1 ) over b! 1+ ; +: digit>> ( st state n div -- st state n ) + /mod swap dup if ( st state n digit ) + $0 + >r > ( state n st ) + > >rot then then ; +: nsep>> ( st state n -- st state n ) + over if > >rot then ; +: n>st ( n -- st ) + numstr 0 > 1000 digit>> nsep>> 100 digit>> 10 digit>> + swap drop $0 + char>> 0 char>> drop numstr ; + +: 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 ; + +: inputch readch tolower dup emit nl ; + +: download-file ( file -- ) write-file ; ( todo: more elaborate ) +: select-file + 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!" ' rick-menu return then + drop lred fg! l" Sorry, that is not a valid selection." ' select-file ; + +: rick-files nl rick-filelist list-files ' select-file ; :noname ( -- cp ) nl rick-menu-rle xmit-screen nl 0 begin yellow fg! black bg! - nl x" Your selection: " readch tolower dup emit nl + 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 @@ -48,7 +109,7 @@ deferred rick-menu noop : rick black bg! white fg! - nl nl nl rick-welcome-rle xmit-screen login + sp [ pagew 3 * lit ] repeated xmit-iter + rick-welcome-rle xmit-screen login ' rick-menu begin execute dup not until ; -: call-rick s" 5551212" ; diff --git a/swine.com b/swine.com index fddd259cd794abaadd18d2f423f4568b916e197f..6351e5d826d9c3b164fc04dfa1bd6ad2148c2fe1 100755 GIT binary patch literal 8092 zcmeG>eSA|@vUl#yO`0^fZJJG+k2VR<70QR$!nTNRkXj3}Y@twH(!`>TmX9Y;q%A)D zfkiq#!Nk&75-+D*ONY z>j5Wc&YYP!Gjrz5nS1D;Cdr_K`jtOMR}Mv2USIc(_V|`*!j@@baHVElSexW}R|0=@ zR6#+>uHcdAs4OTbh)#-wb-Ldb#|Jqbbvizp09oJx!2{R_R|H+cOe z#U*@j0SBdXN{aCxBfEy0fgEGmks2F(_uD}Q9zQp7SKAl6U&v3~wgaQ=_MX+sQEgL2^vSL9jIJC#HA zqTf4O#fC)h101^@u~#p0co)JsA6^|Sp35aetJn$4A%Oh=5Oh-X>N{46S5+y|s31i1 zy18Z1ydDl*CZg)T{%@i;P>;!Hsz2}lGMXSEcw}`~|LLfifwk}Ve-L#dh_pxb-PIla z?a@1Ec&7S|{vFW(42qXTTH7S?Ud#GoBpIPD|1cxxsxLw~N5xl5rQVOe;P|x!U*Pa2 z$=ju(LkOzaKT3Wz++LOZ@o3vmaQ0W6F)Zo)BUPd9I!dlZ2tDM_rtogz^Ih`>&D+&66OlLlb;ctLy|f@pLB zQnqRKOTvj1W>gjk0<{2yz$mOx<-DWmk&bFQ@OL?Uq4BoMD)rZzx+(8!+C`r_9@3Py zg9?)b-N@@`27|N&WkE6?U^>I-3lB&h(0D-hfYt*#4;c;Z5cY4By$#y+a^1)bxqixF&0D8*ms{f| z24EWsZIo8ahndG?qqo^;ue@5`hK{Y1wyDd}xLLjxGkm;Pt`&(Y#-q~)FV7#YfHY;h z{Axl+wWhWIYIH1W6hwrY!G59riLON2x=y=Y=ErNU)?38?2ig0=Qv{L;plC|`mukVVRLlF zY?bM{8rJ9NCa7cT`Dzl%t`c`jgxLUVbf5j@lVj8$+W+PO>N`IE=+D%D`tHGZsBeE` z-&@oldB5`m>fei;`Y-AacYS!A`tX_4Cj-zd55N}GLllBynJ%QeEFY3d&uwvBi;j&k zwsKj#G>V7h2vq3uMT(>fHrp)cid@D39@#c1N@x_PqYZ#qw@|Dl__ADtoM9N7K!<%E zi^?c^*!>z#V{Gu?QK1EOZB8wT$5_c4(T=c@Z|M5|hN|+^mF&@bCz+E1g?18&I za8CgKP2Y%Tni!^gV1@@~dtij_&=*al|;m0k6^yr5PKdC~D&7?bGj|4TGGF-^6xI4ui`(=aTbfmOx;j8BX} z*zmC-AN#z-9_emuqsWQ)fV&(gYi z^-cp?%M9I5#%l$x1Ni`_;u_?NdksanK0l!mpwV|yJ~qzldR9jm~S*< zA%t2R0glABbcc#_4#OQZGNOV4G{eZt=UF{?p0ND98$udORhz4>yr7$1$nGlnZ$5+Brk`1l6{*_ zHFVGoKrOF+iW6?U(C7E(9IH!SH|3xr)HrtcYP_vq4iyCFtwXyRi`Tm!gyOp7{Cxhc7Jy`>1wO?B zG=w>4GU~^7y#>A*hTDwz0FYnh6rwy}oSaNidlR1-#~0#0#qh*28D|b)jK}2jxkBZd zk!CA!wgvo*X0~$9*oWLCn_!Yt%c_ETVhgNcEA%O(BbPBx%ol4#is%45kwU+1@cWb} zQl4e-HI#k=c{-EP{l`)$qzGyIF{3(S`JrWj2YJfz8jUkac} z5Uv-Guh-U_rj8Hd@9jFFTDQl2-t8TXcn8Nv$8RycY1)%_zQB8a>c%h5PgS)Gny3&W zZ(TAmZ$*Gml&HTk^(3ReJ~Q3)QKzX{ky0-h!tevruPhOZ71tZ4&87-AZo=q@MrmAx z<58)5_R)Ix;d=LdRc@5dm$OyxP2GR?7jLHu{;QXHVNjgAYeZ zfFkz!7t45$q|U?7_fD9VO8yyu+f%QYIJ{qfdukb6F~umirpBm7Cp9aFQYmjdpE`gR z?Zz3NHw}hdJmU`L-8Q(4G$E`Lg18&`1}m0)MdBhuzL<;lUS;d@UChS)DHdWhS;D^#qn3o{(b}eDiiqbCf6M11ChPz_YF=XIpSWdl zXo-2JRAwGz5k&B#D!j$q2CtY`nMslpzcVT0|No!=3lC($&+uu%h|P(6mTqa19N4yr zyUhHY6NbLJW8+=sph!4+ilW$x;B7GtA1{bYi?tek{csFX5heqxs$aoc4@|`(l06;d zTIiNqW0}P&;AYDj3q6MTus$G(`}M?mSlq8CnTN%or44piXl9rBHcMkt3?iz%Y;>E2 z;Gj5-)o<@vnw1|cKD^udq%d4$oGzTFGo_@pSi&HskqoW@ht{Dk99kQPHmDHY!Y%N- zG|Dx2%o|x7k)ncepjKoc5vYKQslCZSAWjZIEo&oE@Dk^#y3jHytp)zf7QuA>ep;zg zt~`X6A7)Ulg{AgZRGic2iZ7?pHGKi6i^Oca&c8~dOZ?+B{#hD=Hz^2akSq3cw47Y$CQ=-2seXWI4k4Y!DM39<_H(z=L<+ed_x*I75faE=# zPKk*Q?4~mf9ebv3JPBv7cF*j!e)n3<&+1I;57&I3aCq&PXE&On+DFs-&qp_28XYMh znj?+rkJKmGEWzVfyDz*Kol$V%o#@P&(=Y6cvYh)mpUvs+|0;SYMtR|-D1M#bBLr$` zxB6gydXH49>_z)_ndt`j8lkP&KDCg(*AY6X&dpD6VxJOe)2}=7qS*(3vj*5(NEt%2 z7({o}O;{QRYlgvc9R9>g(&$Y8%}U12v2{YGEes_#l6TG;#_YcV9Y0&~4j|ykY3Et+TO>Vc5Uhno+w;wgU`Dn$wAH1D(AS@p}7NTPB-XE%P9##b*}& zhE^+6zNwRLViY@nNpjh{nC~vjId)o!I4PS{*q7=`@jIm49>HT7hB@|5?DH87y-0tNyVpE-3q6u~QbJeysYij}ODD zhi~r3Xouc`-@gu*1783gqwz1Fic#{2os;>6j~$59qfCue>(LvW$EN=QBId6Znrl1+QpF+y0cX69ZDQ zSK+hc4hFjr?n2$S=$5Kaoy~HMjy74u67LYg^!&LEXZfQianb)pkR<9q1-ex1nL9H2 zq(5N`gEKQ$S`rP>(^ii7srmVtWd1T{Vo4^M?}P6%BJd=`JeFC8(M4nKpqfk{Din

jG`_;Bdf9v~b2PT$J;CWLrBdY?fyc1+Y=d0q#mt|} z0r_4GlNPwsSvvb6_q^G&aCN(IJaYk~@j34?k3pIT7|nx>=GU`J9z-G=5>c#-!0CxN zP5%SZikJZtReUGJolIRI(tlsp>Qj#3h9#C`0O z-f_~&Dw#K9R-wD7u&}srE-t_YlX|jC&T{!}_qZx-vs{(7M_sFIPq-@06UXP|xEEBe zaL=n;@kCYi;)*Jv7$J8_c}-RM!U}gub@{T#h5IVYS1dum{b0?CK;@#!g+fW?Q%fq{ zzbb$FY2p6LWn_!X5>9nsOUG8p^du*eU9|jjE@`i8o2%E=<+8XXH+^dw(4o97cP)p) z@~TyC`jh3($^Ms|>~Yw+t5?)4Sg@p`$~_tv;89{kE~h{oMU{_NtSGOpK#mE>F=3p0 z;y-ZE@h6U7GL8qzS3It+F_ClR-NHc|OZ$G&9s(2cNf>bh&KY>b$%tIHW|8|dXO(-C z>lwG=dfr`WM*pm+c2B2mzJKw81&bf6SyH`9cyLk0QuHKkH!9u)do*9_welSI9`^rl F{|g>7dE5X1 literal 7828 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 (( begin yield0 dup timer @ <= until drop )) ; + timer @ + >arg (( begin dup timer @ > while yield0 repeat drop )) ; : sleep-csec ( cs -- ) over-csec each suspend next ; ' init :chain [ 0xffff 3 >> lit ] set-timer-div timer-isr install-isr ; diff --git a/zipoff.com b/zipoff.com index 1d2a05f63c476bf8c08f4d022374d818e45f019a..32c449bd51c365025487c4c00b58b66175dfc663 100755 GIT binary patch delta 955 zcmYk3U1$?o6vyvvGO5{G=Y!OWZnbH*pp+D`S<#fn2Jxe2?w$DYCK#v5Z5^6UrgJ9& zKOk06a3R7Hwn#;)5c?u(CHmlt`p~BPvJVQviuks;2rg{>0QF(JXQnOs`2YR?=iGD7 zot(zA)41#H2jyns`p-=LFR2V(O;-C(ki_=IK1^o_+3`Dhp4{1s>HV%L0ngT+3NJ_Cu@baLQD7-olNCZdg_gKR~tyF#36H9 zyY`6up^npYsdcHzT2t>*5LatW{Q*(Eq56>NoIK0x( z6hN`l2Fqok`K4WRp%?4^X{j_uVxfi(`mqErO$aaynGklj)^V8xuovErzTyu0TI`|1 zGVt`GxQDI;;vNV}+A7%Lfw1(N`0$u+d8%LPBh4sn>6}NtU1d}%QSWR{p=6tIlnJQ; zMt4(QRayF^2JoE5l4`_|Z;C39^L!(}~tie;DGx@ALTSERj*^CONVRA>$WP^9Fa5zbcOp_>gY9&TZuvaKc{oZI!DyMZZ8 z>s$6kEeRzo5Q3sG_Mt$~K=4D<7bEBe`k07c3JpRiJ9ks;)sP+X~l~32Lp_diY9GuF%;XdQ-mbdnJOS z;VpGIS6sK_g?Dnr=iPj5Z>tA%n}nwO323Z$@**k%-84-Nl8iGD;p=5DXuE{lJ6f)E zbTcwO*`*xMj`Om=6OD4`{44O9?0{8O;5m#m`W!V5**^h0(RXeI;dnqf%s zt-!B}3+|%(Xa$b2M6i(XId*mm8NS&Cci}6RdBjFSdzs${Wj`C7Ku5Dhc#9Q|a{G%= zqr3cMQ#<-rHOVGq>i!3MvKoUmUr^2#FwPzmTZG)jZ} z7ika(wojHNR@zLmgUEsdxuBiOPep`ZiW~Om35%F{&?PJ>E?{YW_JMU_Nbv%bXz}Qv zMJOXP!o0$P*bU9J)q>E9i-4ZAG9+d-Gq5at+6Ms!z6k5s33Ssvz{I97S&qvc+j#N< zu7+^A8D*_7Z+7;LG8{&#CEj=P+|r1nP6Pcuv|7P4q-1yWr!J!Q4(WlT>PdU z05m~}v4@mqesLUzSnYJ|`8O#b$En{0_(oNlFL&>hs}nB1D|{uEa)jOJp_rE z4@36Q%V-aSFdBc@91K ze$~~^ryv7U(8b>d)Gw|;9PUF__ZZ92A_eF+Dln=q>1F6JEF#V(R3HHkD65iy9K zqE^(7^_`dz{Xi4m3H0VHh)L32eO=qaa3L;iA!HGeIzn>rSf<$0MUjq3goKDi{E{(A z1+M@v=p=n2?E{qmiZK-fr}LRs(fNtaQYb@-it#Mac^uCIt-$RBT$Uo(wG2?Q`ZgWa zU#T~#Qic_jbNt`jHMCpw%8%!zSZ$-W(Q7{{UBbjj}HEVW{o)&QeSl;S5Q8DNLh zB&(`P&bB4-zvePYh=mXroQrUT-wg%YI+fpH-^{5Q7W7Ty>FrP+cI12NJ<(P*+Va`H zIrf3&uhnlw>%nJh^`J}_hiR5klSH(+%Ve8XgshCp)B^0VRRcTy&cxF@#aCEXSNShj z84hKEV`tJ}pMS?@*@V1j@L_FR+)cdq@%(#{a2OK~Z;oqfeO#s;;)_48e&kAQe=jV7 zFy9=%aP-$32g^@@czGI#(qK(6Ns=^So>XBMck=;{kP2?&9WEx+1TSwe$6h?`ya2}BGCLWpRqi{=nQ5QWf_U=>?hl0xtxLX6h3&Pls?-#k(|2QN;sV)~mQlSBQ9P zm`UQ46yaOT1|_dQr&0Zh>ZD2)kGWj8{=xl_$5ncIW2v&RzP-LZX5S)X_TEfB&r};3pul7R!Pt7HcC!QlyO)QpYz^g4YO>8frLVhymJY zF^hHMwf+{1!D2mT)abEJxbylQqmCG6jW+*rH!^S7;OI+^WT7C