Repository navigation
Expand file tree
/
Copy pathprg.logon.bas
More file actions
107 lines (107 loc) · 10.6 KB
/
Copy pathprg.logon.bas
File metadata and controls
107 lines (107 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
!--------------------------------------------------
!- Wednesday, May 17, 2017 12:20:30 AM
!- Import of :
!- c:\src\zelch128next\prg.logon.prg
!- Commodore 128 BASIC 7/7.1
!--------------------------------------------------
30000 SYS15625:REM =============== LOGON MODULE V3.0 =============== 09/22/90 =
30010 IFO(26)THENO(26)=0:GOTO50000
30100 ID=0:SYS15634:CLR:SYS15637:IFO(15)THENGOSUB35400:O$="{ct c}":GOTO34500:ELSEI=M(9):GOSUB450:CLOSE5:OPEN5,2,0,CHR$(PEEK(2576))
30120 GOSUB37300:IFM(0)>2THEN30200:ELSEPRINT#5,R$R$R$:A$=O$(14):GOSUB37200
30130 IFW1=408THENW1=0:GOTO35700
30200 RESTORE30300:FORI=.TO21:READA:POKEA,.:NEXT:FORI=.TO4:READA,B:POKEA,B:NEXT:POKE2925,M(3):POKE2982,O(25)
30300 DATA 2822,2824,2825,2827,2829,2830,2831,2844,2893,2895,2896,2915,2917,2929,2930,2953,2954,2958,2959,2974,2979,2983,2603,8,2823,1,2845,1,2850,1,2984,24
30350 FORI=7TO15:O(I)=0:NEXTI:FORI=0TO26:PL(I)=0:PL$(I)="":NEXTI:O(26)=0:FORI=0TO13:MB(I)=0:UB(I)=0:MB$(I)="":UB$(I)="":NEXTI:O(1)=0:O(3)=0:O(20)=0:P0=1
30370 MB$(7)="$":UB$(5)="$":MB$(1)="(none)":UB$(1)="(none)":MB$(6)="MESSAGE BASES":MB$(2)="?":UB$(2)="?":UB$(4)="U/D BASES"
30400 O$="Waiting for call":GOSUB250:GOSUB300:TRAP360:SY$(1)="":U$(8)="11111111"
30500 PRINT"{clear}";:WINDOW0,4,29,15:PRINTCHR$(27)"f"R$"{clear}{light gray}{reverse on}{ct n}{cm t*29}":O$="{reverse on}"+LEFT$(SP$,29)+R$+"{up}{reverse on} ":IFPEEK(215)THENFAST
30600 PRINTO$TAB(13-(INT(LEN(N$)/2)))LEFT$(N$,27)R$O$R$O$R$O$R$O$"Total calls"TAB(20)":"O(4)R$O$"Calls since boot"TAB(20)":"O(0)
30700 PRINTO$"Number of feedback"TAB(20)":"O(2)R$O$"Logged errors"TAB(20)":"O(5)R$O$"New users"TAB(20)":"O(6)R$"{reverse on}{cm @*29}"
30900 SYS8216:PRINT"{home}{down*3}{right}{reverse on}"MID$("JanFebMarAprMayJunJulAugSepOctNovDec",((PEEK(2879)-1)*3)+1,3)PEEK(2880)TAB(21)I$
31200 IFPEEK(2961)THENGOSUB37400:GOSUB35900:GOSUB36666:I$="prg.monster":U=D(0,0):D=D(0,1):GOTO23
31250 IFM(0)<5THEN31300:ELSEIF(PEEK(56577)ANDM(4))<>M(19)THEN34100:ELSE31600
31300 IF(PEEK(56577)AND8)=8ORM(0)<3THEN31600:ELSEI=0:GOSUB37400
31400 IF(PEEK(56577)ANDM(4))<>M(19)THEN34100:ELSEIFI<11THENI=I+1:SLEEP1:GOTO31400
31500 GOSUB37300
31600 GETA$:IFA$=CHR$(27)ORPEEK(56320)=111THENX=1:GOTO32000:ELSEIFINSTR("{ct c}{ct z}{ct x} {ct f}{ct b}",A$)=0THEN31630
31610 IFA$="{ct c}"THENGOSUB35900:I$="prg.online utils":U=D(0,0):D=D(0,1):W1=9E9:GOTO23:ELSEIFA$="{ct z}"THENPOKE2823,1:W1=9E9:POKE2829,1:GOTO35450
31620 IFA$="{ct x}"THENPRINTCHR$(27)"x":GOSUB36666:PRINT"{down}{home}":SLOW:GOTO30400:ELSEIFA$=" "THENO(3)=1:TI$="000000":GOSUB35900
31625 IFA$="{ct f}"THENI=1:GOSUB35950:GOSUB35300:GOTO35100:ELSEIFA$="{ct b}"THENGOSUB35300:POKE2893,8:POKE2930,0:POKE2931,0:POKE2932,0:GOTO8960
31630 IF(PEEK(211)AND8)THENO(16)=ABS(O(16)-1):IFO(16)=0THENGOSUB35900
31640 IFO(3)ANDVAL(TI$)>10THENO(3)=0:ELSEIFO(16)ANDO(3)=0THENGOSUB35800
31700 GET#5,A$:IFA$=""THEN30900:ELSEA=ASC(A$)AND127:IFA<>49THEN31800:ELSEGET#5,A$:IF(ASC(A$)AND127)=48THENI=2400:GOSUB450:GOTO34100:ELSEI=300:GOSUB450:GOTO34100
31800 IFA=53THENI=1200:GOSUB450:GOTO34100:ELSEIFA=50ANDINSTR(O$(14),"s0=0")THENSLEEP1:PRINT#5,"ata"
31900 GOTO30900
32000 GOSUB35950:A=PEEK(238)-34:WINDOWA,9,A+22,23:W0=1:GOSUB32100:X=1:I=0:GOSUB32500:GOTO32800
32100 DATA"{cm m}{reverse on} {reverse off}{cm g}","Local logon ","Read feedback ","Zapterm ","Check errorlog ","View userlog "
32150 DATA"Gate system ","New user apps ","Sysop utilities "
32200 RESTORE32100:FORI=0TO8:READTT$(I):NEXT:PRINT"{clear} {cm @*20} "R$TT$(0)R$"{cm m}{reverse on} Local options menu {reverse off}{cm g}"R$TT$(0)
32300 FORI=1TO8:PRINT"{cm m}{reverse on} "TT$(I)"{reverse off}{cm g}":NEXT:PRINTTT$(0)R$"{reverse off} {cm t*20}":RETURN
32500 PRINTLEFT$("{home}{down*11}",X+4);:PRINT"{reverse off}{light gray}{cm m}{reverse on} "TT$(X)"{reverse off}{cm g}"R$"{up}"A$"{reverse off}{cm m}{reverse on}"CHR$(PEEK(2835+W0))" "TT$(X+I)"{light gray}{reverse off}{cm g}":RETURN
32800 A=0:TI$="000000":A$="":DOUNTIL(A$=R$ORPEEK(212)=72ORVAL(TI$)>20):GOSUB8
32810 I=INSTR("{up} {down}",A$)-2:IF(I=-1ANDX>1)OR(I=1ANDX<8)THENW0=W0+I:GOSUB32500:X=X+I
33100 LOOP:GETC$:IFA$<>R$ANDPEEK(215)THENPRINT"{home}"SP$SP$SP$SP$:WINDOW0,4,29,15:PRINT:GOTO30900:ELSEIFA$<>R$THEN30500:ELSEGOSUB35300:PRINT"{clear}{ct n}";:U=D(0,0):D=D(0,1)
33200 IFX=1THEN34200:ELSEIFX=3THENI$="prg.zapterm":GOTO23:ELSEIFX=6THENI$="prg.online utils":W1=9E8:GOTO23:ELSEU=D(1,0):D=D(1,1)
33400 F$="sys.userlog":IFX=7THENW1=408:GOTO35450:ELSEIFX=2THEN35500:ELSEIFX=8THENGOSUB35300:I=1:E=1:BA=9600:GOTO35100:ELSEIFX=4THENF$="sys.errorlog"
33500 GOSUB35950:OPEN1,U,15:OPEN2,U,2,MID$(STR$(D),2)+":"+F$+",s,r":PRINT"{clear}{ct n}";:INPUT#1,I:IFITHENCLOSE2:GOTO33700
33600 SYS8210:IFPEEK(255)=0THEN33650:ELSEPRINT"{ct n}"+CHR$(13)+"RETURN>";:DO:GOSUB8:LOOPUNTILA$=CHR$(13):GOTO33600
33650 CLOSE2:PRINT"DELETE{sh space}(Y/N)? ";:C$="YN"+R$:GOSUB28:IFI>1THENCLOSE1:GOTO30200
33700 PRINT#1,"s"+MID$(STR$(D),2)+":"+F$:CLOSE1:IFMID$(F$,10)="log"ANDO(5)THENO(5)=0:GOTO35700
33800 IFMID$(F$,9)="user"ANDO(6)THENO(6)=0:GOTO35700:ELSE30200
34100 POKE2973,3:POKE2979,0:POKE2974,3:POKE2823,0:GOSUB35300:SYS8216:O$="Connect:"+STR$(BA)+" baud / On at: "+I$:GOSUB250:POKE2845,1
34200 SLEEP1:FORI=0TO50:GET#5,A$:NEXTI:PRINTO$(21);
34250 O$=T$(35):GOSUB4:C$=R$+CHR$(10)+"Z":GOSUB32:IFI=3THENI$="prg.network":U=D(0,0):D=D(0,1):W1=.1:GOTO23:ELSEO$=T$(36):GOSUB4
34300 O$=T$(21):POKE2829,1:DO:GOSUB8:LOOPUNTILA$>""ANDA$<>R$ANDA$<>CHR$(10):IFA$=CHR$(20)THENPOKE2845,0:O$=T$(21):GOTO34500:ELSEPOKE2829,0:O$=T$(22):GOSUB4
34400 O$=T$(37):GOSUB4:C$="NY"+R$:GOSUB28:POKE2845,SGN(I-1):O$=T$(23):IFI=1THENO$=T$(24):GOSUB4:ELSEGOSUB4
34410 O$=T$(94):GOSUB4:C$=R$+"NY":GOSUB28:O$=T$(92):IFI=3THENO$=T$(93):POKE2979,1
34500 GOSUB4:POKE2825,4:U=D(1,0):D=D(1,1):A$="":IFM(16+PEEK(2829))>1THENA$=STR$(INT(RND(TI)*(M(PEEK(2829)+16))+1))
34590 F$="sys.title"+A$:IFPEEK(2829)=0THENF$=F$+"/a":GOSUB25:ELSEGOSUB25
34600 ID=0:O$=T$(38):GOSUB4:X=16:GOSUB5:I=VAL(I$):IFI$="NEW"ORI$="New"THEN34800:ELSEIFI>0ANDI<501THEN34900
34700 IFI$<>""THENX=0:DO:X=X+1:LOOPUNTIL(UI$(X)="")OR(X>M(14))OR(UI$(X)=I$):IFUI$(X)=I$THENI=X:GOTO34900
34800 O$=T$(39):GOSUB4:C$="YN":GOSUB28:IFI=1THENI$="prg.new user":U=D(0,0):D=D(0,1):POKE2973,5:POKE2974,5:GOTO23:ELSE34600
34900 IFUI$(I)=""ORUI$(I)="^"THEN34700:ELSEO$=T$(40):GOSUB4:POKE2844,1:X=10:GOSUB5:IFI$=""THEN34600
35000 O$=I$:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":RECORD#2,I:SYS8222:SYS8222:CLOSE2:IFI$<>O$THENO$=T$(41):GOSUB4:GOTO34600
35100 ID=I:O$=T$(42):GOSUB4:OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles"
35150 RECORD#2,ID:FORI=1TO10:SYS8222:U$(I)=I$:NEXTI:FORI=1TO8:SYS8222:U(I)=VAL(I$):NEXTI:IFPEEK(2823)THENPOKE2915,SGN(PEEK(215))
35160 IFLEN(U$(6))=10THENIFLEFT$(U$(6),1)>"8"THENU$(6)="19"+U$(6):ELSEU$(6)="20"+U$(6)
35200 CLOSE2:U(6)=U(6)+1:POKE2959,VAL(MID$(U$(8),5,1)):POKE2915,VAL(MID$(U$(8),2,1))
35210 U=D(0,0):D=D(0,1):IFPEEK(2823)THENBLOAD(PR$(0,1)),U(U),D(D):O(19)=0:O$(23)=PR$(0,0):GOTO35250:ELSEIFBA=2400THENPOKE2582,160+VAL(MID$(U$(8),9,1))
35220 A=VAL(MID$(U$(8),6,1)):IFA<>O(19)THENBLOAD(PR$(A,1)),U(U),D(D):O(19)=A:O$(23)=PR$(A,0)
35250 A=CD(ASC(U$(5))-192,2):POKE2973,A:POKE2974,A:IFE=0THEN2000:ELSE37000
35300 POKE2603,0:ID=0:PRINTCHR$(27)"e{light gray}{clear}"CHR$(27)"s";:POKE2825,3:POKE2824,1:POKE2827,0:O(1)=0
35400 O(15)=0:O(3)=0:E=0:GOSUB35900:GOSUB36666:RETURN
35450 I$="prg.sysop":U=D(0,0):D=D(0,1):POKE2915,SGN(PEEK(215)):GOSUB35300:POKE2825,255:GOTO23
35500 F0$="sys.feedback":U0=D(6,0):D0=D(6,1):POKE2915,SGN(PEEK(215)):GOSUB35300:GOSUB35950:OPEN1,U0,15,"s"+MID$(STR$(D0),2)+":mail.work":CLOSE1
35600 PRINT"{clear}{ct n}";:U$(1)=UI$(1):ID=1:GOSUB8130:O(2)=W7:IFO(2)<0THENO(2)=0
35700 GOSUB35750:POKE2915,0:GOTO30200
35750 OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.misc data":RECORD#2,1:A$="":FORI=2TO6:A$=A$+STR$(O(I))+R$:NEXTI:PRINT#2,A$+O$(12)+R$+O$(26):CLOSE2:RETURN
35800 SYS52684,1,34:SYS52684,1,35:FAST:RETURN
35900 SYS52684,125,34:SYS52684,100,35:IFPEEK(215)THENRETURN:ELSESLOW:RETURN
35950 GOSUB35900:POKE2823,1:POKE2825,255:POKE2824,1:POKE2827,0:POKE2829,1:POKE2845,0:ID=0:BA=9600:RETURN
36000 O$=" BASIC: [ALT] = Exit":GOSUB250:POKE2894,0:SYS15622:SYS8240:POKE2823,1:POKE2825,255:PRINT"{clear}{down}BASIC interface v1.0":NEW
36666 WINDOW0,4,PEEK(238),23:RETURN
37000 O(21)=0:OPEN1,D(9,0),15:OPEN2,D(9,0),2,MID$(STR$(D(9,1)),2)+":"+O$(22)+",s,r":INPUT#1,E:IFETHENCLOSE2:CLOSE1:GOTO37100
37010 SYS8213:FORI=1TO4:SYS8222:NEXTI:IFPEEK(253)THENCLOSE2:CLOSE1:GOTO37100
37040 O(21)=O(21)+1:FORI=0TO4:SYS8222:M$(O(21),I)=I$:NEXTI
37050 IFPEEK(253)=0THEN37040:ELSECLOSE2:CLOSE1
37100 O$(15)=O$(20):POKE2825,255:GOSUB100:GOTO8990
37200 FAST:IFM(0)>2ORA$=""THENRETURN:ELSESLEEP1:I=0:PRINT#5,"atv0"+A$:DO:GET#5,W1$:I=I+1:IFINSTR("0{cm a}",W1$)THENGET#5,W2$:IFW2$=R$THENEXIT
37250 LOOPUNTILI=300:IFI=300THENGOSUB450:PRINT#5,"atv0"R$R$:I=M(9):GOSUB450:GOTO37200:ELSEPOKE56577,M(5):POKE56579,M(6):IFPEEK(215)THENRETURN:ELSESLOW:RETURN
37300 IF(PEEK(56577)ANDM(4))=M(19)THENRETURN:ELSEA$="+++":IFM(0)>2THENPOKE56577,M(5):POKE56579,M(6):A$="{ct a}{ct b}{ct c}{ct d}":IFM(0)<5THENRETURN
37350 SLEEP1:FORX=1TOLEN(A$):PRINT#5,MID$(A$,X,1);:FORI=1TO200:NEXT:NEXT:SLEEP2:PRINT#5,"ath0"R$:FORX=1TO100:GET#5,A$:NEXT:SLEEP1:GOTO37300
37400 IFM(0)<3THENPRINT#5,R$:SLEEP1:PRINT#5,"ats0=0"R$:RETURN:ELSEPOKE56577,M(7):POKE56579,M(8):RETURN
49999 REM ------- LOGOFF
50000 O(20)=0:F0$="mail.work":ONO(14)GOSUB8245:FORI=1TO4:CLOSEI:NEXT:IFPEEK(2824)=0THENO$=T$(9):GOSUB4
50010 IFINSTR(N$,"{ct c}")=0THENO$="{ct k}Elite Software{ct k}1991 - 1993 RIP{ct k}Tucson, Az 85741{ct k}":GOSUB4
50020 IFPEEK(212)=75ORID<1THEN50500:ELSEU(8)=PEEK(2983)
50025 IFO(15)=0THENGOSUB37300
50030 O(4)=O(4)+1:O(0)=O(0)+1:GOSUB400:U(3)=BA:U$(6)=O$(17):OPEN1,D(1,0),15:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.userlog,s,a":SY$(6)=U$(1):SY$(7)=O$(3)
50040 INPUT#1,I:IFI<20THEN50050:ELSECLOSE2:OPEN2,D(1,0),2,MID$(STR$(D(1,1)),2)+":sys.userlog,s,w"
50050 SYS8216:O$="{cyan}":A$="":IFU$(5)="A"THENO$="{white}"
50060 PRINT#2,USINGO$+"{reverse on}########{reverse off} {reverse on}#######{reverse off}-{reverse on}#######{reverse off} {reverse on}####{reverse off} {reverse on}###{reverse off} {reverse on}################{reverse off} {reverse on}################{reverse off}";O$(3),O$(1),I$,BA,ID,U$(1),U$(3)
50070 FORI=1TOP0:PRINT#2,P0$(I):P0$(I)="":NEXTI:CLOSE2:CLOSE1:A$="":OPEN2,D(4,0),2,MID$(STR$(D(4,1)),2)+":sys.userfiles":RECORD#2,ID:A$=""
50080 IFO(19)<>0THENMID$(U$(8),6,1)=MID$(STR$(O(19)),2,1)
50090 FORI=1TO10:A$=A$+U$(I)+R$:NEXTI:FORI=1TO8:A$=A$+STR$(U(I))+R$:NEXTI:RECORD#2,ID:PRINT#2,A$:CLOSE2
50100 GOSUB35750:P0=1:IFLEFT$(U$(6),1)>"8"THENU$(6)="19"+U$(6):ELSEU$(6)="20"+U$(6)
50500 POKE2896,0:GOSUB300:GOTO30100
55555 A=PEEK(186):OPEN1,A,15,"s0:prg.logon":CLOSE1:SAVE"prg.logon",A