home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1993 #2 / Image.iso / comm / mbbs25a4.zip / MACROBBS.MAC < prev    next >
Text File  |  1993-05-30  |  57KB  |  2,022 lines

  1.  
  2.                               MacroBBS 2.5 ALPHA
  3.                       by Jeff Oberlee   (C)opyright 1992,93
  4.  
  5. {:ALR} {GOTO WF3} {:ALU} {GOTO BBS}
  6.  
  7. {:setup}
  8.   {CLEA}
  9.   {STAT n} {LIGH y} {LOCA n} {SPOC y} {CURS n}
  10.   {SETE time_out}
  11.   {DISP 1,1,0F,Setup}
  12.   {SETV s}
  13.  
  14. ┌── * CONFIGURATION *
  15. │ {IFEX %_hom%MACROBBS.CFG,,err}
  16. │ {DISP 2,1,0E,Reading MacroBBS configuration...}
  17. │ {ROPE %_hom%MACROBBS.CFG,err}
  18. │ {READ bbs}
  19. │ {COMP bbs,BBS's name here} {IFCO err}
  20. │ {READ sysop}
  21. │ {READ syspass}
  22. │ {READ datadir}
  23. │ {IFEX %datadir%*.*,,err}
  24. │ {READ msgsdir}
  25. │ {READ max}
  26. │ {READ userdir}
  27. │ {IFEX %userdir%*.*,,err}
  28. │ {READ filedir}
  29. │ {READ mspeed}
  30. │ {READ initstr}
  31. │ {READ bw}
  32. │ {READ term}
  33. │ {SETV dline,atv} {INST %dline,%term} {IFCO ,err}
  34. │ {READ cb}
  35. │ {READ dal}
  36. │ {READ sal}
  37. │ {READ ring}
  38. │ {READ connect}
  39. │ {READ tlc}
  40. │ {READ lock}
  41. │ {READ bink}
  42. │ {READ para}
  43. │ {READ nicd}
  44. │ {READ uicd}
  45. │ {READ pp}
  46. │ {READ busy}
  47. │ {READ nual}
  48. │ {READ maindir}
  49. │ {IFEX %maindir%\*.*,,err}
  50. │ {READ clr1}
  51. │ {READ hang}
  52. │ {READ hflo} {HFLO %hflo} {SETV hflo}
  53. │ {COMP bink,y} {IFCO ,RC1}
  54. │ {SEND ^J^MResetting...}
  55. │ {READ myno}
  56. │ {READ tagline}
  57. │ {:RC1} {RCLO}
  58. │ {RETURN}
  59. └──
  60.  
  61. {:init}
  62.   {DISP 3,1,0E,Initializing modem...} {DISP 4,1,,}
  63.   {SEND %initstr^J^M}
  64.   {RETURN}
  65.  
  66. {:err} {RCLO}
  67.   {CLEA} {SEND ^G^G}
  68.   {SPOC n} {LOCA n}
  69.   {DISP 2,2,0C,MacroBBS must be configured for your system before it will work properly.}
  70.   {DISP 3,2,07,You should only have to do this once to initialize the system. But you may}
  71.   {DISP 4,2,07,re-configure MacroBBS whenever you want to make changes.}
  72.   {DISP 6,2,0F,PLEASE be sure to answer ALL questions accurately and make SURE}
  73.   {DISP 7,2,0F,all disk directories that you specify do indeed exist on your disk.}
  74.   {PAUS 3}
  75. {:ER0} {DISP 10,2,07,Press the SPACEBAR to run the CONFIG module.... ^H}
  76. {:ER!} {GETS-H ch,1,ER1}
  77.   {COMP ch, } {IFCO ER2,ER0}
  78. {:ER2} {MACL MACROCFG.MAC,start}
  79.  
  80. {:cd}
  81.   {IFCA cd1}
  82.   {COMP on,1} {IFCO time_out}
  83. {:cd1} {COMP on,1} {IFCO ,cd2}
  84.   {COMP _ela,%tlc} {IFCO-GE gby2}
  85. {:cd2} {RETURN}
  86.  
  87. {:cls}
  88.   {COMP mnu,A} {IFCO CLS1}
  89.   {SEND ^[[2J}
  90.   {GOTO CLS2}
  91. {:CLS1} {SEND ^L}
  92. {:CLS2}
  93.   {COMP on,} {IFCO CLS3}
  94.   {DISP 1,1,4F,│                                                                              }
  95.   {DISP 1,3,4E,%login_name #%userno}
  96.   {DISP 1,40,47,AL=%al}
  97.   {DISP 1,49,47,%mspeed}
  98.   {DISP 1,57,47,%_ela mins}
  99.   {DISP 1,70,4F,%an9%%chat}
  100.   {DISP 2,1,4F,│                                                                              }
  101.   {DISP 2,3,47,%rname  -  %from}
  102.   {DISP 3,1,4F,└──────────────────────────────────────────────────────────────────────────────}
  103.   {DISP 4,1,07,}
  104. {:CLS3} {RETURN}
  105.  
  106. {:press_any_key}
  107.   {COMP mnu,a} {IFCO PAK1}
  108.   {SEND %an3%%an9^[[24;1h^[[24;1f[Press Any Key]%an0}
  109.   {GOTO PAK2}
  110. {:PAK1} {SEND ^J^M^J[Press Any Key]}
  111. {:PAK2} {SETG 300,time_out}
  112.  {GETS-H temp,1,PAK}
  113. {:PAK} {SEND ^M               ^M}
  114.   {SETV temp}
  115.   {RETURN}
  116.  
  117. {:ascii_ul}
  118.   {COMP mnu,A} {IFCO AU1}
  119.   {SEND ^[[2J} {GOTO AU2}
  120. {:AU1} {SEND ^L}
  121. {:AU2}
  122.   {IFEX %dump_file,,AU3}
  123.   {PARM ,,,,%uicd}
  124.   {ASCI-S0 %dump_file,}
  125.   {PARM ,,,,%nicd}
  126. {:AU3} {RETURN}
  127.  
  128. {:dsp_file}
  129.   {IFEX %dump_file,,DF5}
  130.   {SETE time_out}
  131.   {SETV count,0}
  132.   {ROPE %dump_file,DF3}
  133.   {COMP e,1} {IFCO ,DF}
  134.   {INCR count,2} {READ dline}
  135.   {READ dline} {SEND %an7%To:   %an3%%dline^J^M} {INCR count}
  136.   {READ dline} {SEND %an7%From: %an1%%dline^J^M} {INCR count}
  137.   {READ dline} {SEND %an7%Subj: %an4%%dline^J^M} {INCR count}
  138.   {READ dline} {SEND %an7%Date: %an0%%dline^J^M} {INCR count}
  139. {:DF} {PUSH}
  140.   {SETE-P0 esc_menu}
  141. {:DF1} {READ dline}
  142.   {COMP e,1} {IFCO ,DF8}
  143.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀} {IFCO ,DF11}
  144.   {SETV dline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  145.   {GOTO DF12}
  146. {:DF11} {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄} {IFCO ,DF12}
  147.   {SETV dline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  148. {:DF12} {SEND ^M%dline^J^M}
  149.   {GOTO DF10}
  150. {:DF8} {SEND ^M%dline^J^M}
  151. {:DF10} {INCR count}
  152.   {COMP count,22} {IFCO DF4}
  153.   {GOTO DF1}
  154. {:DF2} {RCLO}
  155. {:DF3} {SETV dline} {SETV ch} {SETV count}
  156.   {SETG 300,time_out}
  157.   {POPS}
  158.   {RETURN}
  159.  
  160. {:DF4} {SETV count,0}
  161.   {SEND More? (Y,n) : }
  162.   {SETG 300,DF9}
  163. {:DF6} {CALL cd}
  164.   {GETS-H ch,1,DF7}
  165.   {COMP ch,y} {IFCO DF7}
  166.   {COMP ch,n} {IFCO DF7}
  167.   {SEND ^H} {GOTO DF6}
  168. {:DF7} {SEND ^M                  ^M}
  169.   {COMP ch,n} {IFCO DF2}
  170. {:DF9} {COMP clr2,n} {IFCO DF1}
  171.   {CALL CLS}
  172.   {SEND ^J^M}
  173.   {GOTO DF1}
  174. {:DF5} {SEND ^J^M^G%an1%Error: %an7%File not found: %dump_file}
  175.   {CALL press_any_key}
  176.   {SETG 300,time_out}
  177.   {RETURN}
  178.  
  179. {:screen_full}
  180.   {SEND %an4%More? %an7(Y,n) %an0: }
  181.   {CALL cd}
  182.   {SETG 300,SF3}
  183. {:SF1} {GETS-H ch,1,SF2}
  184.   {COMP ch,y} {IFCO SF4}
  185.   {COMP ch,n} {IFCO SF4}
  186.   {SEND ^H} {GOTO SF1}
  187. {:SF2} {SETV ch,y} {GOTO SF4}
  188. {:SF3} {SETV ch,n}
  189. {:SF4} {SEND ^M                  ^M}
  190.   {SETG 300,time_out}
  191.   {RETURN}
  192.  
  193. {:expert_tog}
  194.   {COMP expert,ON}
  195.   {IFCO ET1}
  196.   {SETV expert,ON}
  197.   {GOTO ET2}
  198. {:ET1} {SETV expert,OFF}
  199. {:ET2} {RETURN}
  200.  
  201. {:esc_menu}
  202.   {IFCA ,ESM} {SEND ^J^M%an7%%an9%Time comes to a grinding halt!  %an0}
  203. {:ESM} {SETE-P0 ESM2} {SETV ch}
  204.   {PARM ,,,,%nicd}
  205.   {INPU ch, PRESS:  [ENTER] to CHAT, [U]seredit, [D]OS, [H]angup}
  206.   {COMP ch,h} {IFCO ESM4}
  207.   {COMP ch,d} {IFCO ESM5}
  208.   {COMP on,} {IFCO ESM}
  209.   {COMP ch,u} {IFCO ESM8}
  210.   {COMP ch,} {IFCO ,ESM}
  211. {:ESM1} {COMP cf,} {IFCO CT8,ESM}
  212. {:ESM2} {SETE-P0 esc_menu}
  213.   {IFCA ,ESM6} {SEND %an3%Then suddenly...} {PAUS 1}
  214. {:ESM6} {RETURN}
  215. {:ESM5} {SHEL} {EXEC-N CD %maindir} {GOTO ESM}
  216. {:ESM8} {COMP login_name,} {IFCO ESM}
  217.   {SETV lname,%login_name} {INPU lname,EDIT: Handle  (3-30 characters)}
  218.   {COMP lname,1} {IFCO-GE ESM8}
  219.   {LENG %lname} {COMP _len,3} {IFCO-L ESM8}
  220.   {LENG %lname} {COMP _len,30} {IFCO-G ESM8}
  221. {:ESM10} {SETV ch,%al} {INPU ch,EDIT: Access Level  (0-999)}
  222.   {COMP ch,999} {IFCO-G ESM10}
  223. {:ESM9} {SETV temp,%pcpd} {INPU temp,EDIT: Time limit per Day/Call (D/C)}
  224.   {COMP temp,c} {IFCO ESM11}
  225.   {COMP temp,d} {IFCO ,ESM9}
  226. {:ESM11}
  227.   {SETV al,%ch}
  228.   {SETV pcpd,%temp}
  229.   {SETV row,%_row} {SETV col,%_col} {DISP 2,2,0F,%an9 * Saving * }
  230.   {COMP lname,%login_name} {IFCO ESM7}
  231.   {SETV login_name,%lname}
  232.   {SETE time_out}
  233.   {CALL update_clist}
  234. {:ESM7} {CALL write_user}
  235.   {DISP 2,2,07,            }
  236.   {DISP %row,%col,,}
  237.   {SETV row} {SETV col} {SETV lname}
  238.   {GOTO ESM}
  239. {:ESM4} {SETV s,2} {GOTO time_out}
  240.  
  241. {:get_name}
  242.   {PUSH}
  243. {:GN1} {CALL cd}
  244.   {SEND ^J^M%an7%Enter your name or handle:%an4 }
  245. {:GN0} {GETS lname,30,GN0}
  246.   {SEND ^J^M%an3%Checking...}
  247.   {LENG %lname} {COMP %_len,3} {IFCO-L GN2}
  248.   {COMP lname,new} {IFCO GN6}
  249.   {COMP lname,1} {IFCO-GE GN6}
  250.   {IFEX %datadir%CALLERS.LST,,GN5}
  251.   {ROPE %datadir%CALLERS.LST,GN5}
  252. {:GN4} {READ ch} {READ dline} {READ cline}
  253.   {COMP lname,%dline} {IFCO GN3,GN4}
  254. {:GN5} {SEND %an7 OK}
  255.   {SETV login_name,%lname} {SETV lname} {SETV dline} {SETV cline}
  256.   {POPS}
  257.   {RETURN}
  258. {:GN2} {SEND ^G%an1%Invalid handle.  %an0%Must be at least 3 characters long.}
  259.   {GOTO GN1}
  260. {:GN3} {RCLO} {SEND ^G%an1%Sorry!  That handle is being used already.^J^M}
  261. {:GN6} {SEND %an1%Please choose something else...}
  262.   {GOTO GN1}
  263.  
  264. {:get_rname}
  265.   {PUSH}
  266.   {SEND ^J^M%an7%For the records, what's your REAL name?}
  267.   {SEND ^J^M%an0(Press ENTER if your system handle IS your real name.)^J^M}
  268.   {SEND %an0->%an5 }
  269.   {GETS rname,30,GN7}
  270. {:GN8} {POPS}
  271.   {RETURN}
  272. {:GN7} {SETV rname,%login_name}
  273.   {SEND %rname}
  274.   {GOTO GN8}
  275.  
  276. {:get_from}
  277.   {PUSH}
  278.   {SEND ^J^M%an7%Where are you calling from?  %an0(City, State)^J^M}
  279.   {SEND %an0->%an1 }
  280. {:GN9} {GETS from,30,GN9}
  281.   {POPS}
  282.   {RETURN}
  283.  
  284. {:get_pass}
  285.   {CALL cd}
  286. {:GP1} {GETS-P pass,15,GP1}
  287.   {CALL cd}
  288.  {RETURN}
  289.  
  290. {:read_user}
  291.   {ROPE %userdir%%userno.USR,RU1}
  292.   {READ login_name}
  293.   {READ password}
  294.   {READ al}
  295.   {READ protocol}
  296.   {READ expert}
  297.   {READ a}
  298.   {READ fa}
  299.   {READ l_call}
  300.   {READ rname}
  301.   {READ from}
  302.   {READ pcpd}
  303.   {READ clr2}
  304.   {READ arcer}
  305.   {READ arc}
  306.   {RCLO}
  307. {:RU1}
  308.   {IFEX %msgsdir%INDEX\%userno.IDX,,RU3}
  309.   {ROPE %msgsdir%INDEX\%userno.IDX,RU3}
  310.   {SETV mic,0}
  311. {:RU2} {INCR mic}
  312.   {READ a%mic} {COMP mic,%mhigh} {IFCO ,RU2} {RCLO}
  313. {:RU3}
  314.   {SETV mic}
  315.   {RETURN}
  316.  
  317. {:write_user}
  318.   {WOPE %userdir%%userno.USR}
  319.   {WRIT %login_name}
  320.   {WRIT %password}
  321.   {WRIT %al}
  322.   {WRIT %protocol}
  323.   {WRIT %expert}
  324.   {WRIT %a}
  325.   {WRIT %fa}
  326.   {WRIT %_dwt %_dat}
  327.   {WRIT %rname}
  328.   {WRIT %from}
  329.   {WRIT %pcpd}
  330.   {WRIT %clr2}
  331.   {WRIT %arcer}
  332.   {WRIT %arc}
  333.   {WCLO}
  334.   {WOPE %msgsdir%INDEX\%userno.IDX}
  335.   {SETV mic,0}
  336. {:WU1} {INCR mic}
  337.   {COMP mic,%mhigh} {IFCO-G WU2}
  338.   {SETV-S ch,a%mic} {COMP ch,} {IFCO WU3}
  339.   {WRIT %ch} {GOTO WU1}
  340. {:WU3} {WRIT 1} {SETV a%mic,1} {GOTO WU1}
  341. {:WU2}
  342.   {WCLO}
  343.   {SETV mic}
  344.   {RETURN}
  345.  
  346. {:read_data}
  347.   {ROPE %datadir%CALLER.DAT,RD1}
  348.   {READ %callno}
  349.   {READ %tdcalls}
  350.   {READ pub}
  351.   {READ pvt}
  352.   {READ ttu}
  353.   {READ tf}
  354.   {READ ldate}
  355.   {READ stime}
  356.   {READ ftime}
  357.   {READ l_caller}
  358.   {READ luserno}
  359.   {READ uhigh}
  360.   {READ mhigh}
  361.   {READ fhigh}
  362.   {RCLO}
  363. {:RD1} {RETURN}
  364.  
  365. {:write_data}
  366.   {WOPE %datadir%CALLER.DAT}
  367.   {WRIT %callno}
  368.   {WRIT %tdcalls}
  369.   {WRIT %pub}
  370.   {WRIT %pvt}
  371.   {WRIT %ttu}
  372.   {WRIT tf}
  373.   {WRIT %ldate}
  374.   {WRIT %stime}
  375.   {WRIT %ftime}
  376.   {WRIT %login_name}
  377.   {WRIT %userno}
  378.   {WRIT %uhigh}
  379.   {WRIT %mhigh}
  380.   {WRIT %fhigh}
  381.   {WCLO}
  382.   {RETURN}
  383.  
  384. {:new_user}
  385.   {SETV new,1}
  386.   {SETV dump_file,%datadir%NEWUSER%mnu.MNU}
  387.   {CALL ascii_ul}
  388.   {CALL get_name}
  389.   {CALL get_rname}
  390.   {CALL get_from}
  391. {:NU10} {PUSH}
  392.   {SEND ^J^M%an7%Please choose a password.  You will need it each time you log-on.^J^M}
  393. {:NU1} {SEND %an0%Password:%an3 }
  394. {:NU7} {CALL cd}
  395.   {GETS password,15,NU7}
  396.   {LENG %password} {COMP %_len,4} {IFCO-GE NU3}
  397.   {SEND ^J^M%an1%Invalid password.  %an0%Must be at least 4 characters long.^J^M}
  398.   {GOTO NU1}
  399. {:NU3}
  400.   {IFEX MACRODAT.MAC,,NU11}
  401.   {MACL MACRODAT.MAC,get_protocol}
  402. {:NU11} {SETV count,0} {SETV al,%nual} {SETV pcpd,d}
  403. {:NU2} {INCR count} {IFEX %userdir%%count.USR,NU2}
  404.   {SETV userno,%count}
  405.   {SEND ^J^M^J%an3%Your Caller ID# is%an0 %userno}
  406.   {COMP userno,%uhigh} {IFCO-LE NU9}
  407.   {SETV uhigh,%userno}
  408.   {WOPE-A %datadir%TIMEUSED.LOG} {WRIT %tlc} {WCLO}
  409. {:NU9} {SEND ^J^M%an1%Saving your information...}
  410.   {WOPE-A %datadir%LOG-1.LOG} {WRIT ▒▒ NEW CALLER ▒▒   %login_name #%userno} {WCLO}
  411. {:NU6}
  412.   {SETV mic,0}
  413. {:AI} {INCR mic}
  414.   {COMP mic,%mhigh} {IFCO-G AI2}
  415.   {SETV a%mic,1} {GOTO AI}
  416. {:AI2} {SETV mic}
  417.   {CALL write_user}
  418.   {WOPE-A %datadir%CALLERS.LST}
  419.   {WRIT %userno}
  420.   {WRIT %login_name}
  421.   {WRIT %password}
  422.   {WCLO}
  423.   {CALL write_data}
  424.   {SEND ^J^M%an0%Please re-enter your name and password for verification.^J^M}
  425. {:NU8} {GOTO login_user}
  426.  
  427. {:login_user}
  428.   {PUSH}
  429.   {SETV success} {SETV tries,0}
  430. {:LU0} {INCR tries} {COMP tries,5} {IFCO LU4}
  431.   {SEND ^J^M%an2%Login   : %an7}
  432.   {SETG 300,gbye}
  433.   {CALL cd}
  434.   {GETS to,30,LU0}
  435.   {CALL cd}
  436.   {INST to,*} {IFCO LU0}
  437.   {INST to,?} {IFCO LU0}
  438.   {INST to,,} {IFCO LU0}
  439.   {SETG 300,time_out}
  440.   {COMP to,new} {IFCO ,LU8}
  441.   {COMP new,1} {IFCO LU0,new_user}
  442. {:LU8} {SEND ^J^M^J%an3%%an9%Verifying}
  443.   {IFEX %userdir%%to.USR,,LU12}
  444.   {SETV userno,%to}
  445.   {CALL read_user}
  446.   {SETV dline,%password} {SETV tono,%userno}
  447.   {GOTO LU11}
  448. {:LU12} {CALL match_name_userno}
  449.   {SEND ^M}
  450.   {COMP t,1} {SETV t} {IFCO LU11}
  451. {:LU6} {SEND %an0  Type "%an7%%an9%NEW%an0" if you're 100%% POSITIVE you logged-in correctly.^J^M}
  452.   {WOPE-A %datadir%LOG-1.LOG} {WRIT ▒░▒░▒  NAME NOT FOUND: "%to"  ▒░▒░▒} {WCLO}
  453.   {GOTO LU0}
  454. {:LU11} {SETV new}
  455.   {POPS}
  456. {:LU7} {PUSH}
  457.   {SETV ptries,0}
  458. {:LU3} {INCR ptries}
  459.   {COMP ptries,4} {IFCO LU4}
  460.   {SEND ^M%an2%Password:%an7 }
  461.   {CALL get_pass}
  462.   {COMP dline,%pass} {IFCO LU5}
  463.   {SEND ^J^M%an1%Incorrect password.^J^M^J}
  464.   {WOPE-A %datadir%LOG-1.LOG} {WRIT ▒░▒░▒  ENTERED INCORRECT PASSWORD: "%pass"  ▒░▒░▒} {WCLO}
  465.   {GOTO LU3}
  466. {:LU5}
  467.   {SEND ^J^M}
  468.   {SETV userno,%tono}
  469.   {CALL read_user}
  470.   {COMP rname,} {IFCO ,LU9}
  471.   {CALL get_rname}
  472. {:LU9} {COMP from,} {IFCO ,LU10}
  473.   {CALL get_from}
  474. {:LU10} {SETV success,y}
  475.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %login_name #%userno} {WCLO}
  476.   {SEND ^J^M%an0%One moment please...}
  477. {:LU4}
  478.   {SETV tries} {SETV ptries} {SETV lname} {SETV pass}
  479.   {SETV dline} {SETV to} {SETV tono}
  480.   {POPS}
  481.   {GOTO BB}
  482.  
  483. {:edit_system}
  484.   {SETE-P0 esc_menu}
  485.   {SEND ^M   ^M}
  486. {:ES0}
  487.   {PUSH}
  488.   {SEND ^J^M%an1%Editor: %an7%A%an0%bort,%an7%C%an0%ont,%an7%D%an0%elete,%an7%E%an0%dit,%an7%I%an0%nsert,%an7%L%an0%ist,%an7%R%an0%eplace,%an7%S%an0%ave: %an3}
  489.   {SETG 300,time_out}
  490. {:ES1} {GETS-H ch,1,ES1}
  491.   {COMP ch,a} {IFCO abort}
  492.   {COMP ch,c} {IFCO continue}
  493.   {COMP ch,d} {IFCO delete}
  494.   {COMP ch,e} {IFCO edit_line}
  495.   {COMP ch,i} {IFCO insert}
  496.   {COMP ch,l} {IFCO list}
  497.   {COMP ch,r} {IFCO replace}
  498.   {COMP ch,s} {IFCO save}
  499. {:ES3} {SEND ^H} {GOTO ES1}
  500.  
  501. {:abort}
  502.   {SETE time_out}
  503.   {POPS}
  504.   {SEND bort^J^M}
  505.   {SETV dline}
  506.   {GOTO BB13}
  507.  
  508. {:continue}
  509.   {COMP lineno,%max} {IFCO ES3}
  510.   {SETE time_out}
  511.   {POPS}
  512.   {SEND ontinue^J^M}
  513.   {SEND ^M%an7%Ok.  Carry on...  :)%an3^J^M}
  514.   {GOTO BB27}
  515.  
  516. {:delete}
  517.   {COMP lineno,0} {IFCO ES3}
  518.   {SEND elete}
  519.   {SEND ^J^M^J}
  520. {:D5} {SEND ^M%an7%DELETE%an4  From Line #:%an0    ^H^H^H}
  521.   {GETS ch1,3,R1}
  522.   {COMP ch1,1} {IFCO-L D5}
  523.   {COMP ch1,%lineno} {IFCO-G D5}
  524.   {SEND ^J^M}
  525. {:D6} {SEND ^M%an4          To Line #:%an0    ^H^H^H}
  526.   {GETS ch2,3,R1}
  527.   {COMP ch2,%ch1} {IFCO-L D6}
  528.   {COMP ch2,%lineno} {IFCO-G D6}
  529.   {CALL range_dsp}
  530.   {SEND ^J^M^J%an7%Are you sure? %an0(%an7%Y%an0,n) :%an7 }
  531. {:D3} {GETS-H ch,1,D4}
  532.   {COMP ch,y} {IFCO D4}
  533.   {COMP ch,n} {IFCO R1}
  534.   {SEND ^H} {GOTO D3}
  535. {:D4} {COMP ch2,%lineno} {IFCO D2}
  536. {:D7} {INCR ch2} {SETV-S line%ch1,line%ch2} {INCR ch1}
  537.   {COMP ch2,%lineno} {IFCO ,D7}
  538. {:D2} {DECR ch1} {SETV lineno,%ch1}
  539. {:D8} {SEND ^J^M%an0%Line(s) deleted.^J^M}
  540. {:D1} {RETURN}
  541.  
  542. {:edit_line}
  543.   {COMP lineno,0} {IFCO ES3}
  544.   {SEND dit^J^M^J}
  545. {:EL5} {SEND ^M%an4%Line # to EDIT:%an0    ^H^H^H}
  546.   {GETS no,3,R1}
  547.   {COMP no,1} {IFCO-L EL5}
  548.   {COMP no,%lineno} {IFCO-G EL5}
  549.   {SEND ^J^M}
  550.   {SETV-S dline,line%no}
  551. {:EL0}
  552.   {SEND ^J^M%an5%Line %no reads:^J^M}
  553.   {SEND %an7%%dline^J^M}
  554.   {SEND ^J^M%an0%Type the string to replace, or press ENTER to abort.^J^M%an3}
  555.   {GETS oldstr,60,EL1}
  556.   {INST dline,%oldstr}
  557.   {COMP %_pos,0} {IFCO-G EL2}
  558.   {SEND ^J^M^J%an1%String not found.^J^M}
  559.   {GOTO EL0}
  560. {:EL2} {SETV spos,%_pos}
  561.   {LENG %oldstr} {SETV olen,%_len}
  562.   {SETV mx,0}
  563.   {SETV ch,79} {LENG %dline} {DECR ch,%_len}
  564.   {INCR mx,%ch} {INCR mx,%olen}
  565.   {SEND ^J^M^J%an0%Type the replacement string, or press ENTER to cut.^J^M%an3}
  566.   {GETS newstr,%mx,EL3}
  567. {:EL3} {SEND ^J^M}
  568.   {DECR spos}
  569.   {SUBS lstr,1,%spos,%dline}
  570.   {INCR spos,%olen} {INCR spos}
  571.   {SUBS rstr,%spos,100,%dline}
  572.   {SETV dline,%lstr%%newstr%%rstr%}
  573.   {SETV line%no,%dline}
  574.   {GOTO EL0}
  575. {:EL1} {SETV olen} {SETV spos} {SETV lstr} {SETV rstr} {SETV newstr} {SETV mx}
  576.   {RETURN}
  577.  
  578. {:insert}
  579.   {COMP lineno,0} {IFCO ES3}
  580.   {COMP lineno,%max} {IFCO ES3}
  581.   {SEND nsert^J^M^J}
  582. {:I4} {SEND ^M%an4%Line # to insert BEFORE:%an0    ^H^H^H}
  583.   {GETS no,3,R1}
  584.   {COMP no,1} {IFCO-L I4}
  585.   {COMP no,%lineno} {IFCO-G I4}
  586.   {SEND ^J^M^J%an5%INSERTING between these lines:}
  587.   {COMP no,1} {IFCO ,I2}
  588.   {SETV dline,*** BEGINNING OF MESSAGE ***}
  589.   {GOTO I3}
  590. {:I2} {DECR no} {SETV-S dline,line%no} {INCR no}
  591. {:I3} {SEND ^J^M^J%an7%%dline^J^M}
  592.   {SETV-S dline,line%no}
  593.   {SEND ^J^M%an7%%dline^J^M}
  594.   {SEND ^J^M%an0%Type the text for Line %no, or press ENTER to abort.^J^M%an3}
  595.   {GETS dline,79,I1} {SEND ^J^M}
  596.   {SETV ch1,%lineno} {INCR lineno} {SETV ch2,%lineno}
  597. {:I5} {SETV-S line%ch2,line%ch1}
  598.   {DECR ch2} {DECR ch1}
  599.   {COMP ch2,%no} {IFCO ,I5}
  600.   {SETV line%ch2,%dline}
  601.   {SEND %an0%Line inserted.^J^M}
  602. {:I1} {RETURN}
  603.  
  604. {:list}
  605.   {COMP lineno,0} {IFCO ES3}
  606.   {SEND ist^J^M}
  607.   {SETV no,0} {SETV count,1}
  608.   {SEND ^J^M}
  609. {:L0} {SEND ^M%an7%Start listing at which line #?%an0 [1-%lineno, ENTER=1] :%an7    ^H^H^H}
  610.   {GETS-H ch,3,L2}
  611.   {COMP ch,1} {IFCO-L L0}
  612.   {COMP ch,%lineno} {IFCO-G L0}
  613.   {SETV count,%ch}
  614. {:L2} {SEND ^J^M%an7%Include line numbers? %an0(y,%an7%N%an0) :%an7 }
  615. {:L1} {GETS-H temp,1,L4}
  616.   {COMP temp,y} {IFCO L4}
  617.   {COMP temp,n} {IFCO L4}
  618.   {SEND ^H} {GOTO L1}
  619. {:L4}
  620.   {SEND ^J^M^J%an3%Your message reads:^J^M^J%an0}
  621. {:L6} {INCR no}
  622.   {SETV-S dline,line%count}
  623.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀} {IFCO ,L11}
  624.   {SETV dline,%an4▀▀▀▀▀▀ %an7%Quote %an4▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀%an7}
  625.   {GOTO L12}
  626. {:L11} {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄} {IFCO ,L12}
  627.   {SETV dline,%an4▄▄▄▄▄▄ %an7%UnQuote %an4▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄%an0}
  628. {:L12} {SEND %dline%%an0}
  629.   {COMP temp,y} {IFCO ,L7}
  630.   {SEND ^M%an7%%count:%an0}
  631. {:L7} {SEND ^J^M}
  632.   {COMP count,%lineno} {IFCO L10}
  633.   {INCR count}
  634.   {COMP no,21} {IFCO ,L6}
  635.   {CALL screen_full}
  636.   {COMP ch,y} {SETV no,0} {IFCO L6}
  637. {:L10} {SETV dline} {SETV count} {SETV no}
  638.   {RETURN}
  639.  
  640. {:replace}
  641.   {COMP lineno,0} {IFCO ES3}
  642.   {SEND eplace^J^M^J}
  643. {:R2} {SEND ^M%an4%Line # to REPLACE:%an0    ^H^H^H}
  644.   {GETS no,3,R1}
  645.   {COMP no,1} {IFCO-L R2}
  646.   {COMP no,%lineno} {IFCO-G R2}
  647.   {SETV-S dline,line%no)
  648.   {SEND ^J^M^J%an5%Line %no reads:^J^M}
  649.   {SEND %an7%%dline^J^M}
  650.   {SEND ^J^M%an0%Type the new line, or press ENTER to abort.^J^M%an3}
  651.   {GETS dline,79,I1}
  652.   {SETV line%no,%dline}
  653.   {SEND ^J^M%an0%Line replaced.}
  654. {:R1} {SEND ^J^M}
  655.   {RETURN}
  656.  
  657. {:save}
  658.   {SETE time_out}
  659.   {POPS}
  660.   {SEND ave}
  661. {:S0} {SEND ^J^M^J%an1%Saving...}
  662.   {WOPE %dump_file}
  663.   {WRIT %userno}
  664.   {WRIT %to}
  665.   {WRIT %login_name}
  666.   {WRIT %subj}
  667.   {WRIT %_dat %_tim}
  668.   {WRIT }
  669.   {SETV ch,0}
  670. {:S1} {INCR ch}
  671.   {COMP ch,%lineno} {IFCO-G S2}
  672.   {SETV-S dline,line%ch} {SETV line%ch}
  673.   {WRIT %dline}
  674.   {GOTO S1}
  675. {:S2} {WCLO}
  676.   {SEND %an0%Ok}
  677.   {SETV subj} {SETV lineno} {SETV qcount}
  678.   {GOTO BB11}
  679.  
  680. {:range_dsp}
  681.   {SETV ch,%ch1}
  682.   {SEND ^J^M}
  683. {:RDS}
  684.   {SETV-S dline,line%ch}
  685.   {SEND ^J^M%an7%%dline}
  686.   {COMP ch,%ch2} {IFCO-GE RDS1}
  687.   {INCR ch} {GOTO RDS}
  688. {:RDS1} {RETURN}
  689.  
  690. {:quote}
  691.   {COMP r,1} {IFCO ,BB27}
  692.  {:Q1}
  693.   {SETV count,0}
  694.   {ROPE %quotemsg,Q7}
  695.   {READ dline} {READ dline} {READ dline}
  696.   {READ dline} {READ dline} {READ dline}
  697.   {SEND ^M    ^M%an7%%an12                                                                              ^M}
  698.   {SEND                              Quoting %to ...^J^M}
  699.   {SEND %an7%%an12           SPACEBAR = Quote Line            N = Skip Line     Q = Quit        ^J^M}
  700. {:Q2} {SEND ^M%an0%%an13                                                                               ^M}
  701.   {READ dline}
  702.   {COMP dline,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀} {IFCO ,Q10}
  703.   {SETV dline,▀▀▀▀▀▀ Quote ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀}
  704.   {GOTO Q5}
  705. {:Q10} {COMP dline,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄} {IFCO ,Q5}
  706.   {SETV dline,▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄}
  707. {:Q5} {SEND %an0%%dline}
  708. {:Q6} {GETS-H ch,1,Q6}
  709.   {COMP ch, } {IFCO Q3}
  710.   {COMP ch,n} {IFCO Q2}
  711.   {COMP ch,q} {IFCO ,Q6}
  712.   {RCLO}
  713. {:Q7}
  714.   {COMP count,0} {IFCO Q9}
  715.   {INCR count} {INCR lineno}
  716.   {SETV line%lineno,&▄▄▄▄▄▄ UnQuote ▄▄▄▄▄▄}
  717.   {COMP lineno,%max} {IFCO BB32}
  718.   {INCR count} {INCR lineno}
  719.   {SETV line%lineno,}
  720.   {COMP lineno,%max} {IFCO BB32}
  721.   {SEND ^J^M%an7%Finished quoting.  Please continue your message ...^J^M}
  722.   {GOTO BB27}
  723. {:Q3} {COMP count,0} {IFCO ,Q8}
  724.   {INCR count} {INCR lineno}
  725.   {SETV line%lineno,&▀▀▀▀▀▀ Quote ▀▀▀▀▀▀}
  726.   {COMP lineno,%max} {IFCO BB32}
  727. {:Q8}
  728.   {INCR count} {INCR lineno}
  729.   {SETV line%lineno,%dline}
  730.   {COMP lineno,%max} {IFCO BB32}
  731.   {GOTO Q2}
  732. {:Q9} {SEND ^J^M%an7%No lines quoted.  Please continue your message ...^J^M}
  733.   {GOTO BB27}
  734.  
  735. {:chat}
  736.   {SETV temp,0} {SETV ccount,0}
  737.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Chat request} {WCLO}
  738.   {SEND ^J^M^J%an4%Paging %sysop ...^J^M}
  739.   {SPOC n} {SEND %an3%Press %an0[ESC]%an3 then %an0[ENTER]%an3 to chat with%an7 %login_name %an3...^J^M} {SPOC y}
  740. {:CT7} {INCR ccount} {SETV-S ch,an%ccount}
  741.   {SEND %ch█}
  742.   {SEND ^G} {SEND ^G} {SEND ^G} {PAUS 2}
  743.   {COMP ccount,5} {IFCO-G ,CT7}
  744. {:CT6} {SETV chat,CHAT}
  745.   {SEND ^M%an0%Sorry, %sysop isn't around right now.^J^M}
  746.   {SEND %an0%However, the chat flag has been set.^J^M^J}
  747.   {GOTO CT9}
  748. {:CT8} {SETV tl,%_ela}
  749.   {SETG 300,time_out}
  750.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Started chat} {WCLO}
  751.   {COMP cb,y} {IFCO ,CT14}
  752.   {CAPT y,%datadir%CHAT.LOG}
  753. {:CT14} {SEND ^J^M^J%an3%You've just entered . . . %an7%The Twilight Zone.  %an3%Reality vanishes.^J^M}
  754.   {SEND %an2(Type "%an0%bye!%an2" on a blank line to exit when desired.)^J^M}
  755.   {SETV cf,1} {SETV co1,%an0} {SETV co2,%an3}
  756.   {SETE-P0 esc_menu}
  757.   {PUSH}
  758. {:CT2} {COMP cf,1} {IFCO CT3}
  759.   {SEND %co2} {SETV cf,1} {GOTO CT4}
  760. {:CT3} {SEND %co1} {SETV cf,2}
  761. {:CT4} {SETV cline}
  762. {:CT5} {SEND ^J}
  763. {:CT13} {SEND ^M%cline}
  764.   {GETS-AH cline,78,CT2}
  765.  
  766.   {COMP cline,/c} ......... {IFCO switch_c}
  767.   {COMP cline,bye!} ....... {IFCO CT1}
  768.   {COMP cline,bye!!} ...... {IFCO time_out}
  769.   {COMP cline,/scroll} .... {IFCO view_scroll}
  770.   {COMP cline,NO CARRIER} . {IFCO time_out}
  771.  
  772.   {LENG %cline}
  773.   {COMP %_len,78} {IFCO-L CT4}
  774.   {SETV ccount,79}
  775. {:CT11} {DECR ccount}
  776.   {COMP ccount,60} {IFCO-LE CT4}
  777.   {SUBS ch,%ccount,1,%cline}
  778.   {COMP ch, } {IFCO ,CT11}
  779.   {COMP ccount,78} {IFCO CT4}
  780.   {INCR ccount}
  781.   {SUBS cline,%ccount,100,%cline}
  782. {:CT12} {COMP ccount,%_len} {IFCO-G CT5}
  783.   {SEND ^H ^H}
  784.   {INCR ccount}
  785.   {GOTO CT12}
  786. {:CT1} {CAPT n}
  787.   {SETV ch,%_ela} {DECR ch,%tl} {INCR tlc,%ch} {SETV tl}
  788.   {SEND ^J^M^J%an3%You've just left . . . %an7%The Twilight Zone.  %an3%Reality restored.^J^M^J}
  789.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Ended chat} {WCLO}
  790.   {SETV cf} {SETV co1} {SETV co2} {SETV chat} {SETV cline}
  791.   {POPS}
  792. {:CT9} {SETV ccount}
  793.   {SETE-P0 esc_menu}
  794.   {CALL press_any_key}
  795.   {RETURN}
  796.  
  797. {:switch_c}
  798. {:SW1} {SEND ^M%an0(0 %an1%1 %an2%2 %an3%3 %an4%4 %an5%5 %an6%6 %an7%7%an0)  ^H}
  799.   {GETS-H ch,1,SW1}
  800.   {COMP ch,0} {IFCO-L SW1}
  801.   {COMP ch,7} {IFCO-G SW1}
  802.   {SEND ^M                    ^M}
  803.   {COMP cf,1} {IFCO ,SW3}
  804.   {SETV-S co2,an%ch} {SEND %co2} {GOTO SW4}
  805. {:SW3} {SETV-S co1,an%ch} {SEND %co1}
  806. {:SW4} {SETV cline}
  807.   {GOTO CT13}
  808.  
  809. {:update_clist}
  810.   {ROPE %datadir%CALLERS.LST,UC1}
  811.   {WOPE %datadir%TEMP.000}
  812. {:UC2}
  813.   {READ ch} {READ cline} {READ dline}
  814.   {COMP ch,%userno} {IFCO UC3}
  815.   {WRIT %ch} {WRIT %cline} {WRIT %dline} {GOTO UC2}
  816. {:UC3}
  817.   {WRIT %userno}
  818.   {WRIT %login_name}
  819.   {WRIT %password}
  820. {:UC4}
  821.   {READ dline} {WRIT %dline} {GOTO UC4}
  822. {:UC1}
  823.   {WCLO}
  824.   {EXEC-N COPY %datadir%TEMP.000 %datadir%CALLERS.LST}
  825.   {EXEC-N DEL %datadir%TEMP.000}
  826.   {RETURN}
  827.  
  828. {:main_menu}
  829.   {PUSH}
  830.   {SETE-P0 esc_menu}
  831. {:MM1} {CALL cd}
  832. {:MM9} {COMP expert,ON} {IFCO MM2}
  833. {:MM15} {CALL cls}
  834.   {LENG %bbs} {SETV ch,80} {DECR ch,%_len} {DIVI ch,2}
  835.   {SUBS dline,1,%ch,                                        }
  836.   {SEND ^J^M^J^J}
  837.   {SEND ^J^M%an3%%dline%%bbs^J^M}
  838.   {SEND ^J^M%an7                                   Main Menu^J^M}
  839.  
  840.   {SEND ^J^M%an0[%an3%M%an0] Message Base    [%an3%B%an0] Bulletin/Text   [%an3%H%an0] Hall of Fame    [%an3%C%an0] Chat          }
  841.   {SEND ^J^M%an0[%an3%O%an0] Msg Packer      [%an3%E%an0] External Stuff  [%an3%L%an0] List Members    [%an3%V%an0] Version/BBS   }
  842.   {SEND ^J^M%an0[%an3%F%an0] File Base       [%an3%Y%an0] Your Config     [%an3%R%an0] Read E-mail     [%an3%G%an0] Goodbye       }
  843.   {COMP al,1} {IFCO-GE ,MM18}
  844.   {SEND ^J^M}
  845.   {SEND %an0[%an3%S%an0] Send E-mail     }
  846.   {SEND %an0[%an3%I%an0] Intromsg        }
  847. {:MM16}
  848.   {COMP al,%dal} {IFCO-GE ,MM18}
  849.   {SEND %an0[%an3%D%an0] DOS Doorway     }
  850.   {SEND %an0[%an3%U%an0] Usage Logs      }
  851.   {SEND %an0[%an3%!%an0] Remote Config   }
  852. {:MM18}
  853.   {SEND ^J^M^J%an0                     [%an3%A%an0] ANSI Toggle    [%an3%X%an0] Xpert Toggle}
  854.   {SEND ^J^M%an0                     [%an3*%an0] Quick log-off (from all menus)}
  855.  
  856. {:MM2} {SEND ^J^M^J%an3%Main Menu  %an0%%_tim^J^M}
  857.   {SETV ch,%tlc} {DECR ch,%_ela}
  858.   {SEND %an0%Mins Left: %ch^J^M}
  859. {:MM8} {SEND ^M} {COMP expert,ON} {IFCO ,MM17}
  860.   {SEND %an3(%an7?%an3%=menu) }
  861. {:MM17} {SEND %an7%MM Command:  ^H}
  862. {:MM3} {CALL cd}
  863.   {SETG 300,time_out}
  864.   {GETS-H ch,1,MM3}
  865.   {COMP ch,*} {IFCO time_out}
  866.   {COMP ch,m} {IFCO msg_base}
  867.   {COMP ch,o} {IFCO msg_pack}
  868.   {COMP ch,f} {IFCO file_base}
  869.   {COMP ch,h} {IFCO hall}
  870.   {COMP ch,e} {IFCO externals}
  871.   {COMP ch,b} {IFCO bulletins}
  872.   {COMP ch,y} {IFCO user_info}
  873.   {COMP ch,g} {IFCO MM5}
  874.   {COMP ch,r} {IFCO email}
  875.   {COMP ch,c} {IFCO chat}
  876.   {COMP ch,a} {IFCO color_tog}
  877.   {COMP ch,x} {IFCO expert_tog}
  878.   {COMP ch,v} {IFCO ver}
  879.   {COMP ch,l} {IFCO SP13}
  880.   {COMP ch,?} {IFCO MM15}
  881. {COMP al,0} {IFCO MM8}
  882.   {COMP ch,s} {IFCO send_email}
  883.   {COMP ch,i} {IFCO intromsg}
  884. {COMP al,%dal} {IFCO-GE ,MM8}
  885.   {COMP ch,d} {IFCO dos}
  886.   {COMP ch,u} {IFCO SP14}
  887.   {COMP ch,!} {IFCO sysop,MM8}
  888.  
  889. {:MM5} {SEND ^J^M^J%an7%Are you sure? %an0(%an7%Y%an0,n) :%an3 }
  890.   {SETG 60,MM10}
  891. {:MM13} {GETS-H ch,1,MM10}
  892.   {COMP ch,y} {IFCO MM10}
  893.   {COMP ch,n} {IFCO MM2}
  894.   {SEND ^H} {GOTO MM13}
  895. {:MM10} {SEND ^J^M^J%an3%Drop a note to %sysop? %an0(y,%an7%N%an0) :%an3 }
  896.   {SETG 60,gby}
  897. {:MM11} {GETS-H ch,1,gby}
  898.   {COMP ch,y} {IFCO MM12}
  899.   {COMP ch,n} {IFCO gby}
  900.   {SEND ^H} {GOTO MM11}
  901. {:MM12} {SETG 300,time_out}
  902.   {SETV f,1} {SETV to,%sysop} {SETV tono,1} {CALL SE4} {GOTO gby}
  903.  
  904. {:color_tog}
  905.   {COMP mnu,a} {IFCO ansi,ascii}
  906.   {RETURN}
  907.  
  908. {:bulletins}
  909.   {IFEX MACROBUL.MAC,,MM8}
  910.   {MACL MACROBUL.MAC,start}
  911.  
  912. {:externals}
  913.   {IFEX MACRODOR.MAC,,MM8}
  914.   {MACL MACRODOR.MAC,start}
  915.  
  916. {:ver}
  917.   {SEND ^J^M^J               %an3%Macro%an7%BBS %an0(tm) %an7%2.5 ALPHA}
  918.   {SEND ^J^M^J  %an7(C)opyright 1992,93 by Jeff Oberlee%an0 -%an7 All Rights Reserved}
  919.   {GOTO MM2}
  920.  
  921. {:sysop}
  922.   {IFEX MACROSYS.MAC,,MM8}
  923.   {MACL MACROSYS.MAC,menu}
  924.  
  925. {:msg_pack}
  926.   {IFEX MACROPAK.MAC,,MM8}
  927.   {MACL MACROPAK.MAC,start}
  928.  
  929. {:msg_base}
  930.   {IFEX MACROMSG.MAC,,MM8}
  931.   {IFEX %msgsdir%A%a.BAS,MB2}
  932.   {IFEX %msgsdir%A*.BAS,,MM8}
  933.   {SETV a,0}
  934. {:MB1} {INCR a}
  935.   {COMP a,%mhigh} {IFCO-G MM8}
  936.   {IFEX %msgsdir%A%a.BAS,,MB1}
  937. {:MB2}
  938.   {ROPE %msgsdir%A%a.BAS,MB1} {READ ch} {READ ch} {RCLO}
  939.   {COMP ch,%al} {IFCO-G MB1}
  940.   {MACL MACROMSG.MAC,start}
  941.  
  942. {:file_base}
  943.   {IFEX MACROFIL.MAC,,MM8}
  944.   {IFEX %filedir%F%fa.BAS,FX2}
  945.   {IFEX %filedir%F*.BAS,,MM8}
  946.   {SETV fa,0}
  947. {:FX1} {INCR fa}
  948.   {COMP fa,%fhigh} {IFCO-G MM8}
  949.   {IFEX %filedir%F%fa.BAS,,FX1}
  950. {:FX2}
  951.   {ROPE %filedir%F%fa.BAS,FX1} {READ ch} {READ ch} {RCLO}
  952.   {COMP ch,%al} {IFCO-G FX1}
  953.   {MACL MACROFIL.MAC,start}
  954.  
  955. {:hall}
  956.   {IFEX MACROREG.MAC,,MM8}
  957.   {MACL MACROREG.MAC,start}
  958.  
  959. {:email}
  960.   {IFEX %msgsdir%E%userno-1.PVT,BB10}
  961.   {SEND ^J^M^J%an0  Sorry.  Your E-mailbox is empty.}
  962.   {GOTO MM2}
  963.  
  964. {:user_info}
  965.   {IFEX MACRODAT.MAC,,MM8}
  966.   {MACL MACRODAT.MAC,user_info}
  967.  
  968. {:intromsg}
  969.   {IFEX MACRODAT.MAC,,MM8}
  970.   {MACL MACRODAT.MAC,intro_msg}
  971.  
  972. {:dos}
  973.   {SEND ^J^M^J%an1%DOS password: %an0}
  974.   {CALL get_pass}
  975.   {COMP pass,%syspass} {SETV pass} {IFCO ,DS4}
  976.   {COMP mspeed,local} {IFCO DS2}
  977.   {IFEX DOORWAY.EXE,,DS3}
  978.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : ▓▓ ENTERED DOS VIA DOORWAY.EXE ▓▓} {WCLO}
  979.   {EXEC DOORWAY COM%_port /M:60 /G:ON /A:ON /V:D^U /O:T /S:* /C:DOS}
  980.   {EXEC-N CD %maindir}
  981. {:DS1} {RETURN}
  982. {:DS2} {SHELL}
  983.   {EXEC-N CD %maindir}
  984.   {GOTO MM2}
  985. {:DS3} {SEND ^J^M%an1%DOORWAY.EXE is not installed.}
  986. {:DS4} {GOTO MM2}
  987.  
  988. {:view_scroll}
  989.   {SCROLL}
  990.   {COMP on,} {IFCO WF0,CT4}
  991.  
  992. {:m_init}
  993.   {CLEA}
  994.   {SPOC y}
  995.   {SETV count,0}
  996.   {DISP 2,1,0F,Initializing modem...}
  997.   {DISP 3,1,0F,}
  998.   {PARM %mspeed,%para}
  999.   {SEND %initstr^J^M}
  1000.   {GOTO WFC}
  1001.  
  1002. {:m_init_w}
  1003.   {SPOC y}
  1004.   {SETV count,0}
  1005.   {CALL EO2}
  1006.   {DISP 15,4,0F,%an9%Initializing} {PAUS 1}
  1007.   {PARM %mspeed,%para}
  1008.   {SEND %initstr^J^M}
  1009.   {CALL EO2}
  1010.   {GOTO WF0}
  1011.  
  1012. {:sys_files}
  1013.   {CALL get_syspass}
  1014.   {CALL EO2}
  1015.   {MACL MACROCFG.MAC,menu}
  1016.  
  1017. {:call_log}
  1018.   {CLEA} {STAT y}
  1019. {:CL1} {DISP 3,6,0F, (%an3%T%an7)oday or (%an3%A%an7)ll?  ^H}
  1020.   {GETS-H ch,1,WFC}
  1021.   {COMP ch,t} {IFCO CL2}
  1022.   {COMP ch,a} {IFCO ,CL1}
  1023.   {SETV dump_file,%datadir%CALLERS.ALL} {GOTO CL3}
  1024. {:CL2} {SETV dump_file,%datadir%CALLERS.TDY}
  1025. {:CL3} {CLEA}
  1026.   {DISP 1,1,0F,Date       Time On     Time Off    Handle}
  1027.   {DISP 2,1,07,}
  1028.   {CALL dsp_file}
  1029.   {CALL press_any_key}
  1030.   {GOTO WFC}
  1031.  
  1032. {:use_log}
  1033.   {CLEA} {STAT y}
  1034. {:USE1} {DISP 3,6,0F, (%an3%D%an7%)ata or (%an3%C%an7%)hart?  ^H}
  1035.   {GETS-H ch,1,WFC}
  1036.   {COMP ch,c} {IFCO USE2}
  1037.   {COMP ch,d} {IFCO ,USE1}
  1038.   {CLEA}
  1039.   {DISP 1,1,0F,Date        Calls    Active    Public   Private}
  1040.   {DISP 2,1,07,}
  1041.   {SETV dump_file,%datadir%STATS.LOG}
  1042.   {CALL dsp_file}
  1043. {:USE3} {CALL press_any_key}
  1044.   {GOTO WFC}
  1045. {:USE2} {ROPE %datadir%CHART.LOG,USE6}
  1046. {:USE4} {CLEA}
  1047.   {SETV count,0}
  1048.   {DISP 1,1,0F,Date  %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4}
  1049.   {DISP 2,1,0F,}
  1050. {:USE5} {READ dline}
  1051.   {SEND       %an0│  %an2░  ░  ░  ░  ░  ░  ░  ░  ░  %an3░  ░  ░  ░  ░  ░  ░  ░  ░  ░  %an1░  ░  ░  ░  ░^M}
  1052.   {SEND %an0%%dline^J^M}
  1053.   {INCR count} {COMP count,21} {IFCO-L USE5}
  1054.   {SEND       %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4^J^M}
  1055.   {CALL screen_full}
  1056.   {COMP ch,y} {IFCO USE4}
  1057.   {RCLO}
  1058. {:USE6} {SEND       %an0├%an2--1--2--3--4--5--6--7--8--9--%an3%0--1--2--3--4--5--6--7--8--9--%an1%0--1--2--3--4}
  1059.   {GOTO USE3}
  1060.  
  1061.  {:dos_shell}
  1062.   {SHELL}
  1063.   {EXEC-N CD %maindir}
  1064.   {GOTO WF0}
  1065.  
  1066. {:get_syspass}
  1067.   {COMP on,} {IFCO ,GS1}
  1068.   {DISP 25,32,87,                  } {DISP 15,3,87,}
  1069.   {SPOC y} {LOCA n} {SEND %busy^J^M} {PAUS %pp} {SPOC n} {LOCA y}
  1070.   {CALL EO2}
  1071. {:GS1} {DISP 15,3,0C, PASSWORD%an0: }
  1072.   {GETS-P ch,15,GS}
  1073.   {COMP ch,%syspass} {IFCO ,GS}
  1074.   {RETURN}
  1075. {:GS} {POPS}
  1076.   {GOTO m_init_w}
  1077.  
  1078. {:special}
  1079.   {CALL get_syspass}
  1080. {:SP0} {CLEA} {STAT n} {SPOC n}
  1081.   {CALL ansi}
  1082.   {SETV login_name,%sysop}
  1083.   {SEND ^J^M^J^J^J                             %an1%Special Functions Menu^J^M^J}
  1084.   {SEND                %an7%1.%an3 Read SYSOP mail           %an7 5.%an3 Edit a letter^J^M}
  1085.   {SEND                %an7%2.%an3 Read another's mail       %an7 6.%an3 System logs^J^M}
  1086.   {SEND                %an7%3.%an3 Send e-mail to ...        %an7 7.%an3 List Members^J^M}
  1087.   {SEND                %an7%4.%an3 Mail count                %an7 8.%an3 Re-config MacroBBS^J^M^J}
  1088. {:SP1}
  1089.   {SEND ^M               %an4%Which? %an0(1-8, ENTER=quit) :%an7  ^H}
  1090.   {GETS-H ch,1,m_init}
  1091.   {COMP ch,1} {IFCO SP2}
  1092.   {COMP ch,2} {IFCO SP3}
  1093.   {COMP ch,3} {IFCO SP7}
  1094.   {COMP ch,4} {IFCO SP8}
  1095.   {COMP ch,5} {IFCO SP9}
  1096.   {COMP ch,6} {IFCO SP14}
  1097.   {COMP ch,7} {IFCO SP13}
  1098.   {COMP ch,8} {IFCO ,SP1}
  1099.  
  1100. {:SP11} {MACL MACROCFG.MAC,start}
  1101.  
  1102. {:SP13} {STAT y} {SETV mcount,1}
  1103. {:SP21} {CALL CLS} {SETV count,0}
  1104.   {SEND ^J^M%an1          #  Handle^J^M^J}
  1105. {:SP15} {IFEX %userdir%%mcount.USR,,SP18}
  1106.   {ROPE %userdir%%mcount.USR,SP18} {READ dline} {RCLO}
  1107.   {SEND %an7          %mcount. %an3%%dline^J^M}
  1108.   {INCR count}
  1109. {:SP18} {INCR mcount} {COMP mcount,%uhigh} {IFCO-G SP16}
  1110.   {COMP count,18} {IFCO ,SP15}
  1111.   {CALL screen_full}
  1112.   {COMP ch,y} {IFCO SP21}
  1113. {:SP16} {CALL press_any_key}
  1114.   {COMP on,} {IFCO SP0}
  1115.   {RETURN}
  1116.  
  1117. {:SP2} {SETV userno,1}
  1118.   {GOTO SP6}
  1119.  {:SP3} {SEND ^J^M%an0               Read whose mail?}
  1120.   {CALL SP10}
  1121. {:SP6} {IFEX %msgsdir%E%userno-1.PVT,,SP0}
  1122.   {CALL mail_count}
  1123.   {SETV total,%ch} {SETV ch,1}
  1124.   {STAT y} {CALL BB42}
  1125.   {GOTO SP0}
  1126.  
  1127. {:SP7} {SETV userno,1}
  1128.   {CALL send_email}
  1129.   {GOTO SP0}
  1130.  
  1131. {:SP8} {SEND ^J^M%an0               Count whose mail?}
  1132.   {CALL SP10}
  1133.   {CALL mail_count}
  1134.   {SEND ^J^M^J               %an7%%to %an3%has %an7%%ch %an3%letter(s) waiting.}
  1135.   {CALL press_any_key}
  1136.   {GOTO SP0}
  1137.  
  1138. {:SP9} {SEND ^J^M%an0               To whom is the letter addressed?}
  1139.   {CALL SP10}
  1140.   {CALL mail_count}
  1141.   {SEND ^J^M}
  1142. {:SP12} {SEND ^M%an4               Edit which letter? %an0(1 - %ch) :   ^H^H}
  1143.   {GETS to,2,SP0}
  1144.   {COMP to,%ch} {IFCO-G SP12}
  1145.   {IFEX %msgsdir%E%userno-%to.PVT,,SP12}
  1146.   {EDIT %msgsdir%E%userno-%to.PVT}
  1147.   {GOTO SP0}
  1148.  
  1149. {:SP14} {SEND ^J^M^J}
  1150. {:SP20} {SEND ^M%an4               View which? %an0(1-7, Q=quit) :  ^H}
  1151.   {GETS-H ch,1}
  1152.   {COMP ch,q} {IFCO ,SP23}
  1153.   {COMP on,} {IFCO SP0,MM2}
  1154. {:SP23} {COMP ch,1} {IFCO-L SP20}
  1155.   {COMP ch,7} {IFCO-G SP20}
  1156.   {IFEX %datadir%LOG-%ch.LOG,,SP20}
  1157.   {SETV dump_file,%datadir%LOG-%ch.LOG}
  1158.   {CLEA} {STAT y}
  1159.   {COMP on,} {IFCO SP24}
  1160.   {CALL cls}
  1161. {:SP24} {CALL dsp_file}
  1162.   {CALL press_any_key}
  1163.   {COMP on,} {IFCO SP0,MM1}
  1164.  
  1165. {:SP10} {SEND ^J^M%an3               Enter a handle or ID# %an0[ENTER=quit]^J^M}
  1166. {:SP22} {SEND ^M%an0                :                               }
  1167.   {SEND ^M%an0                : }
  1168. {:SP4} {GETS to,30,SP19}
  1169.   {SEND %an0 : }
  1170.   {CALL match_name_userno}
  1171.   {COMP t,1} {IFCO ,SP22} {SETV t}
  1172.  
  1173.   {SETV userno,%tono}
  1174.   {RETURN}
  1175. {:SP19} {POPS}
  1176.   {GOTO SP0}
  1177.  
  1178. {:wait_for_call}
  1179.   {PUSH}
  1180.   {SETE cancel}
  1181. {:WFC} {SETV s} {SETV count,0}
  1182. {:WF7} {SETV userno,1} {CALL mail_count}
  1183.   {CALL read_data} {SETV login_name,%l_caller} {SETV userno,%luserno}
  1184.   {COMP ldate,%_dat} {IFCO ,midnight}
  1185.  
  1186.   {STAT n} {CLEA}
  1187. {:WF8} {DISP 1,2,0C,%bbs}
  1188.   {DISP 25, 4,02,System Time: }
  1189.   {DISP 25,57,02,Date: }
  1190.   {CALL WF6}
  1191.   {CALL WF5}
  1192.   {DISP 2 ,36,0C,╔%an3 ▄   ▄ ▄▄▄ ▄▄▄ ▄▄▄  ▄▄▄▄%an0 (tm) %an1═══════════╗}
  1193.   {DISP 3 ,36,0C,║%an3 ██▄██ █▄█ █   █▄█▄ █  █%an7 2.5 ALPHA      %an1 ║}
  1194.   {DISP 4 ,36,0C,║%an3 █ ▀ █ █ █ █▄▄ █  █ █▄▄█%an0 by Jeff Oberlee%an1 ║}
  1195.   {DISP 5 ,36,0C,╚═════════%an7 B B S%an1 ═════════════════════════╝}
  1196.   {DISP 18, 4,0C,Last Caller: %an0%%l_caller #%luserno}
  1197.   {DISP 19, 4,0C,Last Date  : %an0%%ldate}
  1198.   {DISP 20, 4,0C,Logon Time : %an0%%stime}
  1199.   {DISP 21, 4,0C,Logoff Time: %an0%%ftime}
  1200.   {DISP 22, 4,0C,Calls Today: %an0%%tdcalls}
  1201.   {DISP 23, 4,0C,Mins Active: %an0%%ttu}
  1202.   {DISP 19,37,07,   ____    }
  1203.   {DISP 20,37,07,^|\/ o  \   }
  1204.   {DISP 21,37,07,^|    ,__^|  }
  1205.   {DISP 22,37,07,^|/\____/  }
  1206.   {DISP 19,60,09,Pub Posted : %an0%%pub}
  1207.   {DISP 20,60,09,Pvt Mailed : %an0%%pvt}
  1208.   {DISP 18,60,09,Sysop Mail : %an0%%ch}
  1209.   {DISP 22,60,09,Total Calls: %an0%%callno}
  1210. {:WF0}
  1211.   {SETE-P0 m_init}
  1212.   {DISP 25,32,87,Waiting for a Call}
  1213.   {DISP 25,17,07,%_tim} {DISP 25,63,07,%_dat (%_dwt)}
  1214.   {DISP 15,3,02, Command:                     } {DISP 15,3,02, Command%an0: }
  1215.   {SPOC y} {LOCA y} {CURS y}
  1216.   {SETG 30,blink,l}
  1217. {:WF1} {GETS-L ch,10,WF1}
  1218.   {SETG 0,,l}
  1219.   {COMP ch,%ring} {IFCO WF9}
  1220.   {COMP ch,i} {IFCO m_init_w}
  1221.   {COMP ch,1} {IFCO WF2}
  1222.   {SPOC n}
  1223.   {SETE cancel}
  1224.   {COMP ch,c} {IFCO call_log}
  1225.   {COMP ch,u} {IFCO use_log}
  1226.   {COMP ch,s} {IFCO special}
  1227.   {COMP ch,2} {IFCO view_scroll}
  1228.   {COMP ch,3} {IFCO edit_menu}
  1229.   {COMP ch,4} {IFCO edit_a_file}
  1230.   {COMP ch,5} {IFCO sys_file}
  1231.   {COMP ch,d} {IFCO dos_shell}
  1232.   {COMP ch,q} {IFCO WF3,WF0}
  1233.  
  1234. {:WF2}
  1235.   {SETV mspeed,LOCAL}
  1236.   {SETV on,2} {SETV nicd,0} {SETV uicd,0}
  1237.   {SEND %busy^J^M}
  1238.   {SPOC n}
  1239.   {POPS-C}
  1240.   {GOTO BBS1}
  1241.  
  1242. {:WF9}
  1243.   {DISP 15,3,,                              } {DISP 15,4,,}
  1244.   {SETG 2,RNG2}
  1245. {:RNG1} {GETS ch,20,RNG1}
  1246.   {DISP 15,3,,                              } {DISP 15,4,,}
  1247.   {GOTO RNG1}
  1248. {:RNG2} {DISP 25,32,8E,Waiting to CONNECT} {DISP 15,4,,}
  1249.   {SEND ATA^J^M}
  1250.   {DISP 15,4,0F,ATA%an9:                        } {DISP 14,1,,}
  1251.   {SETL 45,m_init}
  1252.   {GOLO 300,%connect^M}
  1253.   {GOLO 1200,%connect 1200}
  1254.   {GOLO 2400,%connect 2400}
  1255.   {GOLO 4800,%connect 4800}
  1256.   {GOLO 7200,%connect 7200}
  1257.   {GOLO 9600,%connect 9600}
  1258.   {GOLO 12000,%connect 12000}
  1259.   {GOLO 14400,%connect 14400}
  1260.   {GOLO 19200,%connect 19200}
  1261.   {GOLO m_init_w,%ring}
  1262.   {GOLO m_init,NO CARRIER}
  1263.   {LOOK %connect 38400}
  1264.   {SETV mspeed,38400} (SETV uicd,0}
  1265.   {GOTO WF10}
  1266.  
  1267. {:300} {SETV mspeed,300} {GOTO WF10}
  1268. {:1200} {SETV mspeed,1200} {GOTO WF10}
  1269. {:2400} {SETV mspeed,2400} {GOTO WF10}
  1270. {:4800} {SETV mspeed,4800} {GOTO WF10}
  1271. {:7200} {SETV mspeed,7200} {GOTO WF10}
  1272. {:9600} {SETV mspeed,9600} {GOTO WF10}
  1273. {:12000} {SETV mspeed,12000} {GOTO WF10}
  1274. {:14400} {SETV mspeed,14400} {GOTO WF10}
  1275. {:19200} {SETV mspeed,19200} {GOTO WF10}
  1276.  
  1277. {:bink1}
  1278.   {EXIT}
  1279.  
  1280. {:bink}
  1281.  {CALL setup}
  1282.  {STAT y} {SPOC y} {LOCA y} {CURS y}
  1283.  {COMP term,a} {IFCO asn1}
  1284.    {CALL ascii}
  1285.    {GOTO asn2}
  1286. {:asn1} {CALL ansi}
  1287. {:asn2} {SETV-E mspeed,BD}
  1288.  {COMP mspeed,mid} {IFCO ,asn3}
  1289.    {IFCA asn3}
  1290.    {CALL read_data}
  1291.    {COMP ldate,%_dat} {IFCO bink1,midnight}
  1292. {:asn3}
  1293.  {COMP mspeed,local} {IFCO ,WF10}
  1294.    {CALL bbs_line}
  1295.    {GOTO m_init}
  1296.  
  1297. {:WF10}
  1298.   {COMP bink,y} {IFCO WF105}
  1299.   {PAUS 10}
  1300. {:WF105}
  1301.   {COMP lock,y} {IFCO WF11}
  1302.   {PARM %mspeed,%para,,,%nicd}
  1303. {:WF11}
  1304.   {SETV on,1}
  1305.   {POPS-C}
  1306.   {GOTO BBS1}
  1307.  
  1308. {:blank_wait}
  1309.   {SETE-P0 m_init}
  1310.   {CLEA}
  1311.   {SETG 60,BW2}
  1312. {:BW1} {GETS-H ch,1}
  1313.   {GOTO WFC}
  1314. {:BW2} {COMP %_dat,%ldate} {IFCO ,midnight}
  1315.   {GOTO BW1}
  1316.  
  1317. {:WF5}
  1318.   {DISP 6 ,36,17,╔═════════════════════════════════════════╗
  1319.   {DISP 7 ,36,17,║    Embryo     ____    by Shad Muegge    ║}
  1320.   {DISP 8 ,36,17,║   ---------^|\/ o  \------------------   ║}
  1321.   {DISP 9 ,36,17,║        ____^|    ,__^| Association of     ║}
  1322.   {DISP 10,36,17,║       /  o \/^|____/  Babble Fish        ║}
  1323.   {DISP 11,36,17,║      ^|__,    ^|____   Programmers        ║}
  1324.   {DISP 12,36,17,║       \____^|\/ o  \                     ║}
  1325.   {DISP 13,36,17,║            ^|    ,__^| MEMBER             ║}
  1326.   {DISP 14,36,17,║   ---------^|/\____/------------------   ║}
  1327.   {DISP 15,36,17,║                                         ║}
  1328.   {DISP 16,36,17,╚═════════════════════════════════════════╝}
  1329.   {RETURN}
  1330.  
  1331. {:WF6}
  1332.   {DISP  2,2,47,╔════════════════════════════════╗}
  1333.   {DISP  3,2,47,║%an3%%an13 MacroBBS:%an0%%an13  OFF-LINE            ║}
  1334.   {DISP  4,2,47,╠════════════════════════════════╣}
  1335.   {DISP  5,2,47,║%an7%%an13 OPTIONS                MISC%an0%%an13    ║}
  1336.   {DISP  6,2,47,║ 1. Log-on (local)     D - DOS  ║}
  1337.   {DISP  7,2,47,║ 2. See Scrollback     I - Init ║}
  1338.   {DISP  8,2,47,║ 3. Text/Bulletins     S - Spec ║}
  1339.   {DISP  9,2,47,║ 4. Edit Ext. File     Q - Quit ║}
  1340.   {DISP 10,2,47,║ 5. Master SysMenu    ESC-Reset ║}
  1341.   {DISP 11,2,47,║              %an7%%an13%LOGS%an0%%an13              ║}
  1342.   {DISP 12,2,47,║    C - Calls      U - Usage    ║}
  1343.   {DISP 13,2,47,╚════════════════════════════════╝}
  1344. {:EO2}
  1345.   {DISP 14,1,07, ╔════════════════════════════════╗}
  1346.   {DISP 15,1,07, ║                                ║}
  1347.   {DISP 16,1,07, ╚════════════════════════════════╝}
  1348.   {DISP 17,1,,            }
  1349.   {RETURN}
  1350.  
  1351. {:cancel}
  1352.   {RCLO}
  1353.   {GOTO BBS}
  1354.  
  1355. {:WF3} {CLEA}
  1356.   {SPOC y} {LOCA n}
  1357.   {SETV mic,0}
  1358. {:WF305} {INCR mic} {SETV a%mic} {COMP mic,%mhigh} {IFCO-L WF305}
  1359.   {SETV mic} {SETV pcpd} {SETV arcer} {SETV arc} {SETV mac}
  1360.   {SETV a} {SETV e} {SETV f} {SETV n} {SETV r} {SETV t} {SETV ta} {SETV em}
  1361.   {SETV aa} {SETV ch} {SETV temp} {SETV cf} {SETV na} {SETV mx} {SETV mic}
  1362.   {SETV new} {SETV df} {SETV em} {SETV tl} {SETV ta} {SETV on} {SETV fa}
  1363.   {SETV rname} {SETV from} {SETV l_call}
  1364.   {SETV fido} {SETV tnod} {SETV fnod} {SETV myno}
  1365.  
  1366.   {SETV al}
  1367.   {SETV bal}
  1368.   {SETV bname}
  1369.   {SETV ccount}
  1370.   {SETV chat}
  1371.   {SETV cline}
  1372.   {SETV co1}
  1373.   {SETV co2}
  1374.   {SETV ch1}
  1375.   {SETV ch2}
  1376.   {SETV count}
  1377.   {SETV dfiles}
  1378.   {SETV dline}
  1379.   {SETV dump_file}
  1380.   {SETV ecount}
  1381.   {SETV expert}
  1382.   {SETV files}
  1383.   {SETV fline}
  1384.   {SETV high}
  1385.   {SETV himsgno}
  1386.   {SETV line}
  1387.   {SETV lname}
  1388.   {SETV login_name}
  1389.   {SETV lomsgno}
  1390.   {SETV maxmsg}
  1391.   {SETV mcount}
  1392.   {SETV msgno}
  1393.   {SETV nual}
  1394.   {SETV password}
  1395.   {SETV proto}
  1396.   {SETV qcount}
  1397.   {SETV protocol}
  1398.   {SETV quotemsg}
  1399.   {SETV reads}
  1400.   {SETV subj}
  1401.   {SETV to}
  1402.   {SETV tono}
  1403.   {SETV total}
  1404.   {SETV trace}
  1405.   {SETV userno}
  1406.  
  1407.   {COMP s,5} {IFCO ,CU} {RETURN}
  1408.  
  1409. {:CU} {STAT y}
  1410.   {CALL ascii}
  1411.   {SETV mnu} {SETV s} {SETV busy} {SETV nicd} {SETV uicd} {SETV pp} {SETV term}
  1412.   {SETV maindir} {SETV datadir} {SETV filedir} {SETV msgsdir} {SETV userdir}
  1413.   {SETV cb} {SETV bw} {SETV lock} {SETV bink} {SETV para} {SETV clr1} {SETV clr2}
  1414.   {SETV bbs} {SETV sysop} {SETV syspass} {SETV initstr} {SETV dal} {SETV sal}
  1415.   {SETV connect} {SETV ring} {SETV tlc} {SETV max} {SETV mspeed} {SETV tagline}
  1416.   {SETV hang} {SETV callno} {SETV uhigh} {SETV mhigh} {SETV fhigh}
  1417.   {SETV ttu} {SETV pub} {SETV pvt} {SETV l_caller} {SETV luserno}
  1418.   {SETV stime} {SETV ftime} {SETV ldate} {SETV tdcalls} {SETV tf}
  1419.   {DISP 2,1,0E,Exiting to ^(COMMO^) ...^J^M}
  1420.   {LIGH n}
  1421.   {INIT}
  1422.   {MACL COMMO.MAC}
  1423.  
  1424. \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
  1425.  
  1426. {:edit_menu}
  1427.   {COMP clr1,y} {IFCO ,ECLR1}
  1428.   {CLEA}
  1429. {:ECLR1}
  1430.   {DISP  2,2,0C,╔════════════════════════════════╗}
  1431.   {DISP  3,2,0C,║           %an7 EdIT MENU %an1          ║}
  1432.   {DISP  4,2,0C,╠════════════════════════════════╣}
  1433.   {DISP  5,2,0C,║                                ║}
  1434.   {DISP  6,2,0C,║    %an7   1.%an0 Logon NOTICES   %an1      ║}
  1435.   {DISP  7,2,0C,║                                ║}
  1436.   {DISP  8,2,0C,║    %an7   2.%an0 Bulletins Config  %an1    ║}
  1437.   {DISP  9,2,0C,║                                ║}
  1438.   {DISP 10,2,0C,║    %an7   3.%an0 Archivers Config  %an1    ║}
  1439.   {DISP 11,2,0C,║                                ║}
  1440.   {DISP 12,2,0C,║  %an0   Select 1-3, ENTER=quit %an1    ║}
  1441.   {DISP 13,2,0C,╚════════════════════════════════╝}
  1442.   {CALL EO2}
  1443.   {SETG 0,,n}
  1444. {:NE1}
  1445.   {GETS-H ch,1,edexit}
  1446.   {COMP ch,1} {IFCO note_ed}
  1447.   {COMP ch,2} {IFCO bull_ed}
  1448.   {COMP ch,3} {IFCO arc_ed}
  1449.   {GOTO NE1}
  1450. {:bull_ed}
  1451.   {CALL warn}
  1452.   {EDIT MBBSBULL.LST}
  1453.   {GOTO ECLR1}
  1454. {:note_ed}
  1455.   {CALL warn}
  1456.   {EDIT %datadir%NOTICES.DAT}
  1457.   {GOTO ECLR1}
  1458. {:arc_ed}
  1459.   {CALL warn}
  1460.   {EDIT MBBSARCH.LST}
  1461.   {GOTO ECLR1}
  1462. {:edexit}
  1463.   {COMP clr1,y} {IFCO ,ECLR2}
  1464.   {GOTO WFC}
  1465. {:ECLR2}
  1466.   {CALL WF6}
  1467.   {GOTO WF0}
  1468.  
  1469. {:warn}
  1470.   {COMP clr1,y} {IFCO ,WCLR}
  1471.   {CLEA}
  1472. {:WCLR}
  1473.   {DISP  6,5,0E,  You are about to enter}
  1474.   {DISP  7,5,0E,^(COMMO^)'s text editor to}
  1475.   {DISP  8,5,0E,customize a file which will}
  1476.   {DISP  9,5,0E,be used by MacroBBS.      }
  1477.   {DISP 10,5,0F,                          }
  1478.   {DISP 12,5,0F,                          }
  1479.   {DISP 11,5,0F,Press any key to continue...}
  1480.   {SETG 0,,n} {GETS-H ch,1}
  1481.   {RETURN}
  1482.  
  1483. {:edit_a_file}
  1484.   {SPOC y} {LOCA n} {SEND %busy^J^M} {PAUS %pp} {SPOC n} {LOCA y}
  1485.   {SETV ch,%_hom}
  1486.   {DISP 13,36,17,╚═════════════════════════════════════════╝}
  1487.   {COMP clr1,y} {IFCO ,CLR1}
  1488.   {CLEA}
  1489. {:CLR1}
  1490.   {DISP 14, 2,0F,╔════════════%an3 Type full path of file to edit, then press ENTER%an7 ═════════════╗}
  1491.   {DISP 15, 2,0F,║                                                                           ║}
  1492.   {DISP 16, 2,0F,╚═══════════════════════════════════════════════════════════════════════════╝}
  1493. {:EAF2} {DISP 15,4,09,Path:                                                                  }
  1494.   {DISP 15, 4,0E,Path: %an0%%ch}
  1495.   {GETS-A ch,67,EAF1}
  1496.   {INST %ch,.} {IFCO ,EAF2}
  1497.   {IFEX %ch,,EAF2}
  1498.   {EDIT %ch}
  1499.   {SETV ch,%_hom}
  1500.   {GOTO EAF2}
  1501. {:EAF1}
  1502.   {COMP clr1,y} {IFCO ,CLR2}
  1503.   {GOTO m_init}
  1504. {:CLR2}
  1505.   {CALL WF5}
  1506.   {CALL EO2}
  1507.   {GOTO m_init_w}
  1508.  
  1509. {:blink}
  1510.   {INCR count}
  1511.   {COMP %_dat,%ldate} {IFCO ,midnight}
  1512.   {CURS n}
  1513.   {DISP 20,37,07,\}
  1514.   {DISP 21,37,07,\}
  1515.   {DISP 22,37,07,\}
  1516.   {PAUS 1}
  1517.   {DISP 20,37,07,^|}
  1518.   {DISP 21,37,07,^|}
  1519.   {DISP 22,37,07,^|}
  1520.   {DISP 15,13,07,}
  1521.   {COMP bw,y} {IFCO blank_wait}
  1522.   {CURS y}
  1523.   {COMP count,15} {IFCO-GE m_init_w,WF0}
  1524.  
  1525. {:midnight}
  1526.   {CLEA}
  1527.   {SEND %busy^J^M}
  1528.   {MACL MACRONYT.MAC,start}
  1529.  
  1530. {:mail_count}
  1531.   {SETV ch,0}
  1532. {:MC1} {INCR ch}
  1533.   {IFEX %msgsdir%E%userno-%ch.PVT,MC1}
  1534.   {DECR ch}
  1535.   {RETURN}
  1536.  
  1537. {:send_email}
  1538.   {SETE time_out}
  1539.   {CALL cls}
  1540.   {SETV f,1}
  1541.   {SEND ^J^M%an0%     (Enter a Handle or ID#)^J^M}
  1542.   {SEND %an7%To:  %an7%%an12                              ^M}
  1543.   {SEND %an7%To:  %an7%%an12}
  1544.   {GETS to,30,BB16}
  1545.   {SEND ^J^M}
  1546.   {CALL match_name_userno}
  1547.   {COMP t,1} {IFCO ,send_email} {SETV t}
  1548.   {SEND %an3%Send email to %an7%%to (#%tono)%an3?  %an0(%an7%Y%an0,n) : %an7}
  1549. {:SE1} {GETS-H ch,1,SE4}
  1550.   {COMP ch,y} {IFCO SE4}
  1551.   {COMP ch,n} {IFCO send_email}
  1552.   {SEND ^H} {GOTO SE1}
  1553.  
  1554. {:match_name_userno}
  1555.   {IFEX %datadir%CALLERS.LST,,MNU2}
  1556.   {ROPE %datadir%CALLERS.LST,MNU2}
  1557. {:MNU1} {READ ch} {READ lname} {READ dline}
  1558.   {COMP to,%ch} {IFCO MNU5}
  1559.   {COMP to,%lname} {IFCO ,MNU1}
  1560. {:MNU5} {SETV to,%lname}
  1561.   {SETV tono,%ch}
  1562.   {RCLO}
  1563.   {SETV t,1}
  1564.   {GOTO MNU4}
  1565. {:MNU2} {SEND %an1%ID not found.} {PAUS 1}
  1566. {:MNU4} {RETURN}
  1567.  
  1568. {:BBS}
  1569.   {CLEA}
  1570.   {POPS-C}
  1571.   {SETV on} {SETV s,5}
  1572.   {CALL WF3}
  1573.   {CALL setup}
  1574.   {COMP bink,y} {IFCO ,BK2}
  1575.   {IFCA bink1}
  1576.   {SETG 2,BK1}
  1577. {:BK0} {GETS-H ch,1,BK0}
  1578.   {COMP ch, } {IFCO BK2}
  1579. {:BK1} {COMP bink,y} {IFCO bink1}
  1580. {:BK2} {CALL init}
  1581.  {PARM %mspeed,%para,,%term}
  1582.  {COMP term,a} {IFCO BK3}
  1583.   {CALL ascii}
  1584.   {GOTO BK4}
  1585. {:BK3} {CALL ansi}
  1586. {:BK4} {CALL bbs_line}
  1587.   {GOTO wait_for_call}
  1588.  
  1589. {:BBS_line}
  1590.   {SETV dline} {SETV cline}
  1591.   {LENG %bbs} {SETV ch,52} {DECR ch,%_len}
  1592.   {SUBS dline,1,%ch,░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░}
  1593.   {COMP myno,} {IFCO BB38}
  1594.   {LENG %myno} {SETV ch,20} {DECR ch,%_len}
  1595.   {SUBS cline,1,%ch,░░░░░░░░░░░░░░░░░░░░░░}
  1596.   {SETV bbs,%an3░%an0 %bbs%%an3 %dline%%cline%%an0 %myno %an3░}
  1597.   {GOTO BB41}
  1598. {:BB38} {SETV bbs,%an3░%an0 %bbs%%an3 %dline░░░░░░░░░░░░░░░░░░░░░░}
  1599. {:BB41} {SETV dline} {SETV cline}
  1600.   {RETURN}
  1601.  
  1602. {:BBS1}
  1603.   {SETV ring} {SETV connect} {SETV initstr} {SETV busy}
  1604.   {SETV bw} {SETV bink} {SETV lock} {SETV para} {SETV pp}
  1605.   {SETV login_name} {SETV userno} {SETV rname} {SETV from}
  1606.   {SETV expert,OFF} {SETV a,1} {SETV fa,1} {SETV pcpd,d}
  1607.   {CLEA} {STAT y} {ELAP}
  1608.   {SETE-P0 esc_menu}
  1609.   {WOPE-A %datadir%LOG-1.LOG} {WRIT █████  Connect: %mspeed on %_dat %_tim  █████} {WRIT } {WCLO}
  1610.   {SEND ^[[2J^L}
  1611.   {ROPE %_hom%MACROBBS.CFG,} {READ bbs} {RCLO}
  1612.   {SEND ^J^M^J}
  1613.   {SEND                    MacroBBS (tm) 2.5 ALPHA^J^M}
  1614.   {SEND   (C)opyright 1992,93 by Jeff Oberlee - All Rights Reserved^J^M^J^J}
  1615.   {SEND   Welcome to %bbs}
  1616.   {COMP myno,} {IFCO BB37}
  1617.   {SEND   -  FidoNet node %myno}
  1618. {:BB37}
  1619.   {CALL cd}
  1620.   {COMP term,A} {IFCO ,BB24}
  1621.   {COMP on,1} {IFCO ,BB23}
  1622. {:BB22}
  1623.   {RTRA y,26,94}
  1624.   {RTRA 27,94}
  1625.   {SEND ^J^M^J^J  Testing video mode...}
  1626.   {PARM ,,,T}
  1627.   {SEND ^[[6n}
  1628.   {SETL 3,BB24}
  1629.   {LOOK [}
  1630.   {LOOK ;}
  1631.   {PARM ,,,%term}
  1632.   {SEND %an3 ANSI detected.}
  1633.   {PAUS 2}
  1634. {:BB23}
  1635.   {CALL ansi}
  1636.   {GOTO BB25}
  1637. {:BB24}
  1638.   {PARM ,,,%term}
  1639.   {CALL ascii}
  1640.  
  1641. {:BB25}
  1642.   {RTRA-I n}
  1643.   {SETV dump_file,%datadir%LOGON%mnu.MNU}
  1644.   {CALL ascii_ul}
  1645.   {CALL read_data}
  1646.   {ELAP}
  1647.   {GOTO login_user}
  1648. {:BB} {SETV new} {SETV lock}
  1649.   {COMP success,y} {IFCO ,gbye}
  1650. {:BB1} {SETV stime,%_tim} {SETV reads,0} {SETV ftime,%_tim}
  1651.   {IFEX %datadir%TIMEUSED.LOG,BB00}
  1652.   {WOPE %datadir%TIMEUSED.LOG}
  1653.   {SETV ch,0}
  1654. {:BB000} {INCR ch}
  1655.   {WRIT %tlc}
  1656.   {COMP ch,%uhigh} {IFCO ,BB000}
  1657.   {WCLO}
  1658. {:BB00}
  1659.   {ROPE %datadir%TIMEUSED.LOG,BB01}
  1660.   {SETV ch,0}
  1661. {:BB02} {INCR ch} {READ tlc} {COMP ch,%userno} {IFCO ,BB02}
  1662.   {RCLO}
  1663.   {COMP tlc,0} {IFCO time_out}
  1664. {:BB01}
  1665.   {COMP on,2} {IFCO BB15}
  1666.   {INCR callno} {INCR tdcalls}
  1667.   {CALL write_data}
  1668. {:BB15}
  1669.   {CALL write_user}
  1670.   {PUSH}
  1671.   {CALL cls}
  1672.   {SEND ^J^M^J%an3  Greetings %an7%%login_name%%an3%!  Glad you could drop by!^J^M}
  1673.   {SEND ^J^M%an1  You are caller #%an0%%callno^J^M}
  1674.   {SEND ^J^M%an5  The last person online was none other than %an7%%l_caller %an0%#%luserno^J^M^J}
  1675.   {SEND %an7  You last called on %an4%%l_call^J^M} {SETV l_call}
  1676.   {SEND %an7  Allotted time this call:  %an4%%tlc%%an7 minute(s)^J^M^J}
  1677.   {IFEX %datadir%INTROMSG.MSG,,BB2}
  1678.   {SETE time_out}
  1679.   {ROPE %datadir%INTROMSG.MSG,BB2} {READ ch}
  1680.   {SEND ^J^M%an1  INTROMSG   %an0%by %an7%%ch^J^M^J}
  1681. {:BB26} {READ dline} {SEND %dline^J^M} {GOTO BB26}
  1682. {:BB2}
  1683.   {POPS}
  1684.   {SETV dline}
  1685.   {SETE-P0 esc_menu}
  1686.   {CALL press_any_key}
  1687. {:BB17}
  1688.   {SETE time_out}
  1689.   {IFEX %datadir%PERSONAL.DAT,,BB21}
  1690.   {IFEX %userdir%DATA\%userno.DAT,BB21}
  1691.   {IFEX MACRODAT.MAC,,BB21}
  1692.   {MACL MACRODAT.MAC,start}
  1693. {:BB21}
  1694.   {SETE-P0 esc_menu}
  1695.   {SETV dump_file,%datadir%NOTICES.DAT}
  1696.   {IFEX %dump_file,,BB35}
  1697.   {CALL cls} {SEND ^J^M%an7                                    NOTICES^J^M%an5}
  1698.   {CALL dsp_file}
  1699.   {CALL press_any_key}
  1700. {:BB35}
  1701.   {CALL cls}
  1702.   {SETE time_out}
  1703.   {IFEX %_hom%QUOTED.EXE,,BB10}
  1704.   {SETV dump_file,%datadir%TEMP.000}
  1705.   {SEND ^J^M%an7...and I quote:^J^M^J%an3}
  1706.   {EXEC-N %_hom%QUOTED.EXE > %dump_file}
  1707.   {CALL dsp_file}
  1708.   {SEND ^J^M%an1────────────────────────────────────-}
  1709. {:BB10}
  1710.   {IFEX %msgsdir%E%userno-1.PVT,,BB18}
  1711.   {CALL mail_count}
  1712.   {SETV total,%ch} {SETV ch,1}
  1713.   {SEND ^J^M^J%an7%Ltr#     From:                          Subject:}
  1714.   {SEND ^J^M-----------------------------------------------------------------------------^J^M-
  1715.   {SETV temp,0}
  1716. {:RE7} {INCR temp}
  1717.   {ROPE %msgsdir%E%userno-%ch.PVT,RE8}
  1718.   {SETV mx,9} {SETV dline,%ch}
  1719.   {LENG %dline} {DECR mx,%_len} {SUBS cline,1,%mx,         }
  1720.   {SEND ^M%an0%%dline%%cline}
  1721.   {READ dline} {READ dline}
  1722.   {SETV mx,31}
  1723.   {READ dline} {LENG %dline} {DECR mx,%_len} {SUBS cline,1,%mx,                               }
  1724.   {SEND %an1%%dline%%cline}
  1725.   {READ dline}
  1726.   {SEND %an4%%dline^J^M}
  1727.   {RCLO}
  1728. {:RE8} {INCR ch} {COMP ch,%total} {IFCO-G RE9}
  1729.   {IFEX %msgsdir%E%userno-%ch.PVT,,RE8}
  1730.   {COMP temp,20} {IFCO RE11}
  1731.   {GOTO RE7}
  1732. {:RE11} {SETV aa,%ch}
  1733.   {CALL screen_full}
  1734.   {COMP ch,y} {IFCO RE12}
  1735.   {COMP expert,ON} {IFCO MB4,MB8}
  1736. {:RE12} {SETV ch,%aa}
  1737.   {GOTO RE5}
  1738. {:RE6} {IFEX %msgsdir%E%userno-%ch.PVT,RE5}
  1739. {:RE3} {SEND ^J^M%an1%That message does not exist.^J^M}
  1740.   {GOTO RE1}
  1741. {:RE9}
  1742.   {SETE time_out}
  1743.   {SEND ^J^M%an7  Read your private mail? %an0(%an7%Y%an0,n) : %an3}
  1744. {:BB33} {GETS-H ch,1,BB36}
  1745.   {COMP ch,n} {IFCO BB3}
  1746.   {COMP ch,y} {IFCO BB36}
  1747.   {SEND ^H} {GOTO BB33}
  1748. {:BB36} {POPS}
  1749. {:BB42} offline entry point
  1750.   {SETV mcount,0}
  1751. {:BB4}
  1752.   {INCR mcount}
  1753. {:BB14}
  1754.   {SETV dump_file,%msgsdir%E%userno-%mcount.PVT}
  1755.   {IFEX %dump_file,,BB5}
  1756.   {CALL cls}
  1757.   {SEND %an7%Letter #%mcount of %total^J^M^J}
  1758.   {SETV e,1} {CALL dsp_file} {SETV e}
  1759.  
  1760. {:BB6}
  1761.   {PUSH}
  1762.   {SETE-P0 esc_menu}
  1763.   {SEND ^J^M%an5%E-mail Menu%an0%:  %an7%R%an0%eply, %an7%P%an0%rev, %an7%A%an0%gain, %an7%N%an0%ext, %an7%J%an0%ump or %an7%Q%an0%uit? }
  1764. {:BB8} {GETS-H ch,1,FW60}
  1765.   {COMP ch,a} {IFCO FW1}
  1766.   {COMP ch,n} {IFCO FW16}
  1767.   {COMP ch,p} {IFCO FW4}
  1768.   {COMP ch,j} {IFCO FW22}
  1769.   {COMP ch,q} {IFCO BB20}
  1770.   {COMP ch,r} {IFCO BB7}
  1771.   {SEND ^H} {GOTO BB8}
  1772.  
  1773. {:FW1}
  1774.   {SETE time_out}
  1775.   {POPS}
  1776.   {SEND gain}
  1777.   {GOTO BB14}
  1778. {:FW16}
  1779.   {SETE time_out}
  1780.   {SEND ext}
  1781. {:FW60} {POPS}
  1782.   {GOTO BB4}
  1783. {:FW4}
  1784.   {SETE time_out}
  1785.   {POPS}
  1786.   {SEND revious}
  1787.   {COMP mcount,1} {IFCO ,FW2}
  1788.   {SEND ^J^M^J%an7<Beginning of %an5%E-mail%an7>^J^M} {GOTO BB6}
  1789. {:FW2} {DECR mcount,2}
  1790.   {GOTO BB4}
  1791. {:FW22}
  1792.   {SETE time_out}
  1793.   {POPS}
  1794.   {SEND ump^J^M^J}
  1795. {:FW23} {SEND ^M%an4%Enter a letter number to jump to. %an0(1-%total) :%an0    ^H^H^H}
  1796.   {GETS ch,3,BB6}
  1797.   {COMP ch,1} {IFCO-L FW23}
  1798. {:FW47}
  1799.   {COMP ch,%total} {IFCO-LE FW48}
  1800.   {GOTO FW23}
  1801. {:FW48} {IFEX %msgsdir%E%userno-%ch.PVT,FW49}
  1802.   {SEND ^J^M%an7%Message #%ch not found.} {PAUS 1}
  1803.   {INCR ch} {GOTO FW47}
  1804. {:FW49}
  1805.   {SETV mcount,%ch}
  1806.   {GOTO BB14}
  1807. {:BB20}
  1808.   {SETE time_out}
  1809.   {POPS}
  1810.   {SEND uit}
  1811.   {GOTO BB5}
  1812. {:BB7}
  1813.   {SETE time_out}
  1814.   {POPS}
  1815.   {SEND eply}
  1816.   {SETV r,1}
  1817.   {SETV quotemsg,%msgsdir%E%userno-%mcount.PVT}
  1818.   {ROPE %quotemsg,BB6} {READ tono} {READ to} {READ to} {READ subj} {RCLO}
  1819.   {CALL cls}
  1820. {:SE4} {SETV ecount,0}
  1821. {:BB9} {INCR ecount} {IFEX %msgsdir%E%tono-%ecount.PVT,BB9}
  1822.   {SETV dump_file,%msgsdir%E%tono-%ecount.PVT}
  1823.   {SETE time_out}
  1824.   {SEND ^J^M^J}
  1825.   {COMP r,1} {IFCO ,E3}
  1826.   {SEND %an0      (Press ENTER for "%an7%%subj%%an0")^J^M}
  1827. {:E3} {SEND ^M%an7%Subj: %an12                              ^M}
  1828.   {SEND %an7%Subj: %an12}
  1829.   {COMP r,1} {IFCO ,E5}
  1830.   {GETS sub,30,E4}
  1831.   {SETV %subj,%sub} {SETV sub}
  1832.   {GOTO E6}
  1833. {:E4} {SEND %subj}
  1834.   {GOTO E6}
  1835. {:E5} {GETS subj,30,E5}
  1836. {:E6}
  1837.   {SEND %an0^J^M}
  1838.   {CALL cls}
  1839.   {SETV lineno,0}
  1840.   {SEND ^J^M^J%an7%Maximum of %max lines.^J^M}
  1841.   {SEND %an4-------------%an0 /s - save %an4-------%an0 /e - editor %an4-------%an0 /abt - abort %an4--------------^J^M}
  1842.   {COMP r,1} {IFCO ,BB27}
  1843.   {SEND %an4-------------------------------%an0 /q - quoter %an4-----------------------------------^J^M}
  1844. {:BB27} {SETV dline}
  1845. {:BB28} {SEND ^J^M%an3%%dline}
  1846.   {SETG ,BB13}
  1847.   {GETS-AH dline,78,BB12}
  1848.   {COMP dline,/e} ..... {IFCO edit_system}
  1849.   {COMP dline,/q} ..... {IFCO quote}
  1850.   {COMP dline,/s} ..... {IFCO S0}
  1851.   {COMP dline,/abt} ... {IFCO BB13}
  1852.   {LENG %dline} {COMP %_len,78} {IFCO-L BB12}
  1853.   {SETV ccount,79}
  1854. {:BB29} {DECR ccount}
  1855.   {COMP ccount,60} {IFCO-LE BB12}
  1856.   {SUBS ch,%ccount,1,%dline}
  1857.   {COMP ch, } {IFCO ,BB29}
  1858.   {COMP ccount,78} {IFCO BB12}
  1859.   {SETV ch,%ccount}
  1860. {:BB30} {INCR ccount} {SEND ^H ^H}
  1861.   {COMP ccount,%_len} {IFCO ,BB30}
  1862.   {SUBS cline,1,%ch,%dline}
  1863.   {INCR lineno} {SETV line%lineno,%cline}
  1864.   {SETV cline}
  1865.   {INCR ch}
  1866.   {SUBS dline,%ch,100,%dline}
  1867.   {COMP lineno,%max} {IFCO-L BB28,BB32}
  1868.  
  1869. {:BB12} {INCR lineno} {SETV line%lineno,%dline}
  1870.   {COMP lineno,%max} {IFCO-L BB27}
  1871. {:BB32} {RCLO}
  1872.   {SEND ^J^M%an7%You have reached the line limit.^J^M}
  1873.   {GOTO edit_system}
  1874. {:BB11} save
  1875.   {COMP on,} {IFCO BB16}
  1876.   {CALL read_data} {INCR pvt} {CALL write_data}
  1877.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Sent private email to %to #%tono} {WCLO}
  1878.   {GOTO BB16}
  1879. {:BB13}
  1880.   {SEND ^J^M%an1%Message aborted.} {PAUS 1}
  1881.   {SEND ^J^M}
  1882. {:BB16}
  1883.   {SETV r} {COMP f,1} {IFCO ,BB6}
  1884.   {SETV f} {SEND %an0}
  1885. {:BB19}
  1886.   {SETV mcount} {SETV ecount} {SETV total}
  1887.   {RETURN}
  1888.  
  1889. {:BB5}
  1890.   {COMP on,} {IFCO BB19}
  1891.   {CALL cls}
  1892.   {SEND ^J^M^J%an7 That's all for now...^J^M^J}
  1893.   {SETV line} {SETV lname} {SETV dline}
  1894. {:BB39} {SEND ^M%an3 Delete your e-mail? %an0(y,%an7%N%an0) :%an7  ^H}
  1895.   {GETS-H ch,1,BB3}
  1896.   {COMP ch,n} {IFCO BB3}
  1897.   {COMP ch,y} {IFCO ,BB39}
  1898. {:BB40} {SEND ^J^M^J%an3 Deleting e-mail...}
  1899.   {EXEC-N DEL %msgsdir%E%userno-*.PVT}
  1900.   {SEND %an0%Ok}
  1901.   {GOTO BB3}
  1902.  
  1903. {:BB18}
  1904.   {SEND ^J^M^J%an0  Sorry.  Your E-mailbox is empty.^J^M^J}
  1905.   {COMP expert,ON} {IFCO BB3}
  1906.   {CALL press_any_key}
  1907. {:BB3}
  1908.   {SETV mcount} {SETV ecount} {SETV total}
  1909.   {GOTO main_menu}
  1910.  
  1911. {:ansi}
  1912.   {SETV mnu,n}
  1913.   {SETV an0,^[[0;2;37m}
  1914.   {SETV an1,^[[0;1;31m}
  1915.   {SETV an2,^[[0;2;32m}
  1916.   {SETV an3,^[[0;1;33m}
  1917.   {SETV an4,^[[0;1;34m}
  1918.   {SETV an5,^[[0;1;35m}
  1919.   {SETV an6,^[[0;1;36m}
  1920.   {SETV an7,^[[0;1;37m}
  1921.  
  1922.   {SETV an9,^[[5m} {SETV an12,^[[44m} {SETV an13,^[[41m}
  1923.   {RETURN}
  1924.  
  1925. {:ascii}
  1926.   {SETV mnu,A}
  1927.   {SETV an0} {SETV an1} {SETV an2} {SETV an3} {SETV an4} {SETV an5}
  1928.   {SETV an6} {SETV an7} {SETV an9} {SETV an12} {SETV an13}
  1929.   {RETURN}
  1930.  
  1931. {:time_out}
  1932.   {RCLO}
  1933.   {WCLO}
  1934.   {POPS-C}
  1935.   {CAPT n}
  1936.   {STAT n}
  1937. {:TKO2}
  1938.   {COMP success,y} {SETV success} {IFCO ,gbye}
  1939.   {CALL write_user}
  1940.   {COMP cline,bye!!} {IFCO gby4}
  1941.   {COMP ch,*} {IFCO gby3}
  1942.   {COMP _ela,%tlc} {IFCO-GE gby2}
  1943.   {COMP on,2} {IFCO gby3}
  1944.   {COMP on,1} {IFCO ,bbs}
  1945.   {IFCA ,gby5}
  1946.   {COMP s,2} {IFCO gbye}
  1947.   {WOPE-A %datadir%LOG-1.LOG} {WRIT Read: %reads}
  1948.   {SEND ^J^M^J%an7%Idle timer expired.  Please call back later.%an0^J^M}
  1949.   {WRIT ▒░▒░▒  USER ABSENT  ▒░▒░▒}
  1950.   {WRIT ▒░▒░▒  AUTO-DISCONNECT: %_dat %_tim ▒░▒░▒} {WRIT } {WCLO}
  1951.   {GOTO GB2}
  1952.  
  1953. {:gby5}
  1954.   {WOPE-A %datadir%LOG-1.LOG} {WRIT Read: %reads}
  1955.   {WRIT ▒░▒░▒  DISCONNECTED: %_dat %_tim ▒░▒░▒} {WRIT } {WCLO}
  1956.   {COMP on,1} {IFCO GB2,bbs}
  1957.  
  1958. {:gby4}
  1959.   {WOPE-A %datadir%LOG-1.LOG} {WRIT %_tim : Ended chat} {WCLO}
  1960.  
  1961. {:gby3}
  1962.   {WOPE-A %datadir%LOG-1.LOG} {WRIT Read: %reads}
  1963.   {WRIT ▓▓▓▓▓  XPRESS Logoff: %_dat %_tim  ▓▓▓▓▓} {WRIT } {WCLO}
  1964.   {COMP on,1} {IFCO GB2}
  1965.   {GOTO bbs}
  1966.  
  1967. {:gby2}
  1968.   {SEND ^J^M^J%an1%%an9%Your time on-line for today has expired.}
  1969.   {WOPE-A %datadir%LOG-1.LOG} {WRIT Read: %reads}
  1970.   {WRIT ▒░▒░▒  OUT OF TIME  ▒░▒░▒}
  1971.   {WRIT ▒░▒░▒  AUTO-DISCONNECT: %_dat %_tim ▒░▒░▒} {WRIT } {WCLO}
  1972.   {GOTO GB2}
  1973.  
  1974. {:gby}
  1975.   {WOPE-A %datadir%LOG-1.LOG} {WRIT Read: %reads}
  1976.   {WRIT ░░░░░  Logoff: %_dat %_tim  ░░░░░} {WRIT } {WCLO}
  1977.   {SEND ^J^M^J}
  1978.   {SETV dump_file,%datadir%LOGOFF%mnu.MNU}
  1979.   {CALL ascii_ul}
  1980. {:GB2}
  1981.   {SETV ftime,%_tim}
  1982.   {INCR ttu,%_ela}
  1983.   {COMP hang,n} {IFCO GB4}
  1984.   {HANG y} {HANG y}
  1985. {:GB4} {SEND ^J^M%an3%Saving...}
  1986.   {CALL write_data}
  1987.   {COMP pcpd,c} {IFCO GB3}
  1988.   {SEND ^J^M%an1%Updating Time Usage log...}
  1989.   {CALL updat_tu}
  1990. {:GB3}
  1991.   {COMP on,2} {IFCO bbs}
  1992.   {SEND ^J^M%an1%Updating Caller log...}
  1993.   {WOPE-A %datadir%CALLERS.TDY}
  1994.   {WRIT %_dat   %stime TO %ftime    %login_name  #%userno} {WCLO}
  1995. {:hng} {GOTO bbs}
  1996.  
  1997. {:gbye} {HANG y}
  1998.   {WOPE-A %datadir%LOG-1.LOG}
  1999.   {WRIT ▒░▒░▒  DISCONNECTED: %_dat %_tim ▒░▒░▒} {WRIT } {WCLO}
  2000.   {GOTO bbs}
  2001.  
  2002. {:updat_tu}
  2003.   {DECR %tlc,%_ela}
  2004.   {IFEX %datadir%TIMEUSED.LOG,,UT0}
  2005.   {ROPE %datadir%TIMEUSED.LOG,UT1}
  2006.   {WOPE %datadir%TEMP.000}
  2007.   {SETV ch,0}
  2008. {:UT2} {INCR ch} {READ dline}
  2009.   {COMP ch,%userno} {IFCO UT3}
  2010.   {WRIT %dline} {GOTO UT2}
  2011. {:UT3} {WRIT %tlc}
  2012. {:UT4} {READ dline} {WRIT %dline} {GOTO UT4}
  2013. {:UT1}
  2014.   {WCLO}
  2015.   {EXEC-N COPY %datadir%TEMP.000 %datadir%TIMEUSED.LOG}
  2016. {:UT0}
  2017.   {RETURN}
  2018.  
  2019.  
  2020.