[net.sources] MacTEP VERSION 1.81 <<< REVISED >>>

ghb@ecsvax.UUCP (05/25/84)

< Some fewmets -- from the dragon >
Here is the latest version of the Macintosh terminal
package from Compuserve.....

Please note that it does have NEW pinouts for the
cables.

George Brett ...decvax!mcnc!ecsvax!ghb
NCECS POB 12035 RTP NC 27709 (919)549-0671

< have fun >
-------------------  cut here  -----------------
1000 REM   MacTEP - Macintosh Terminal Emulator Program
1010 REM
1020 REM   Version 1.81 - 6-Apr-84
1030 REM   Dennis F. Brothers - Compuserve 70065,172 - MCI Mail DBROTHERS
1040 REM
1050 REM   Copyright (c) 1984 - Brothers Associates, Wayland MA
1060 REM   Permission is hereby granted for personal, non-commercial
1070 REM   reproduction and use of this program, provided that this
1080 REM   notice is included in any copy.
1090 REM
1100 REM   Modem connections:
1110 REM          Mac   Modem
1120 REM           1      1     (Frame Ground)
1130 REM           3,8    7     (Signal Ground)
1140 REM           5      2     (Transmit Data)
1150 REM           6      20    (+12V -> DTR)
1160 REM           7      8     (CTS <- DCD)
1170 REM           9      3     (Receive Data)
1180 REM
1190 REM
1200 CLEAR ,25000: REM  Allocate extra memory
1210 REM
1220 DEFINT A-Z: REM  Default to integers for speed
1230 REM
1240 REM
2000 REM    Define constants
2010 REM
2020 BUFFERSIZE=2048
2030 BUFLIM=BUFFERSIZE\4
2040 REM
2050 FALSE=0: TRUE=-1
2060 REM
2070 LF=10: LF$=CHR$(LF)
2080 CR=13: CR$=CHR$(CR)
2090 XON=17: XON$=CHR$(XON)
2100 XOFF=19: XOFF$=CHR$(XOFF)
2110 REM
2120 CMDB=2: CMDB$=CHR$(CMDB)
2130 CMDE=5: CMDE$=CHR$(CMDE)
2140 CMDR=18: CMDR$=CHR$(CMDR)
2150 CMDT=20: CMDT$=CHR$(CMDT)
2160 REM
2170 AIN=-6: AOUT=-7
2180 SB1=&H4000: SB15=&H8000: SB2=&HC000
2190 PARNONE=&H0: PARODD=&H1000: PAREVEN=&H3000
2200 DB5=&H0: DB6=&H800: DB7=&H400: DB8=&HC00
2210 REM
2220 REM
3000 REM  Pre-allocate all variables so arrays don't move
3010 REM
3020 GOSUB 20000
3030 DIM XTABLEARRAY(127)
3040 DIM BUFFERARRAY(BUFFERSIZE/2)
3050 DIM PARAMLIST(39)
3060 I=0: A=0
3070 TL=0
3080 BR=0: TC=0
3090 L$="": LP!=0: C$="": XL$=""
3100 F$="": FL=0: FP!=0
3110 TYPEAPPL$=""
3120 XFLAG=FALSE
3130 CRFLAG=FALSE: FLUSH=FALSE
3140 C=0
3150 QUIT=0
3160 REM
3170 CONTROL!=0
3180 TRANSLATE!=0
3190 BPROC!=0
3200 GETFILEINFO!=0
3210 SETFILEINFO!=0
3220 XTABLE!=0
3230 BUFFER!=0: BUFFERT!=0: BUFFERH=0: BUFFERL=0
3240 PARAM!=0
3250 LP!=VARPTR(L$): FP!=VARPTR(F$)
3260 TLP!=0
3270 CRFLAGP!=0: FLUSHP!=0
3280 REM
3290 CONTROL!=VARPTR(CONTROLCODE(0))
3300 TRANSLATE!=VARPTR(TRANSLATECODE(0))
3310 BPROC!=VARPTR(BPROCCODE(0))
3320 GETFILEINFO!=VARPTR(GETFILEINFOCODE(0))
3330 SETFILEINFO!=VARPTR(SETFILEINFOCODE(0))
3340 XTABLE!=VARPTR(XTABLEARRAY(0))
3350 BUFFER!=VARPTR(BUFFERARRAY(0))
3360 BUFFERH=INT(BUFFER!/65536!): BUFFERT!=BUFFER!-(BUFFERH*65536!)
3370 IF BUFFERT!<32768! THEN BUFFERL=BUFFERT! ELSE BUFFERL=BUFFERT!-65536!
3380 PARAM!=VARPTR(PARAMLIST(0))
3390 LP!=VARPTR(L$): FP!=VARPTR(F$)
3400 TLP!=VARPTR(TL)
3410 CRFLAGP!=VARPTR(CRFLAG)
3420 FLUSHP!=VARPTR(FLUSH)
3430 REM
3440 REM  Initialize the character translation table
3450 REM
3460 FOR I=0 TO 255:POKE XTABLE!+I,0:NEXT I
3470 FOR I=8 TO 13
3480 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
3490 NEXT I
3500 POKE XTABLE!+10,0: POKE XTABLE!+128+10,0
3510 FOR I=32 TO 126
3520 POKE XTABLE!+I,I: POKE XTABLE!+128+I,I
3530 NEXT I
3540 REM
3550 REM
4000 REM   Initialize and display startup information
4010 REM
4020 CALL TEXTSIZE(9): CALL TEXTFONT(4):WIDTH 255
4030 CALL PENNORMAL: CALL SHOWPEN: CALL PENMODE(10)
4040 CLS: PRINT: PRINT: PRINT
4050 PRINT  "MacTEP  -  V1.81  -  Copyright (c) 1984, Brothers Associates"
4060 PRINT: PRINT: PRINT
4070 PRINT "  CMD-E exits to the Macintosh desktop."
4080 PRINT "  CMD-T starts and stops ASCII transmit (upload)."
4090 PRINT "  CMD-R starts and stops ASCII receive (download)."
4100 PRINT "  CMD-B starts and stops ASCII Basic receive"
4110 PRINT "             (lines not beginning with a digit are ignored)."
4120 PRINT: PRINT
4130 REM
4140 REM
5000 REM  Set up and OPEN the COM1 port
5010 REM
5020 OPEN "COM1:" AS #1 LEN=BUFFERSIZE
5030 WIDTH #1,255
5040 REM
5050 INPUT "Baud rate: ", BR
5060 TC=(115200!/BR)-2
5070 REM
5080 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
5090 PARAMLIST(24\2)=AIN
5100 PARAMLIST(26\2)=8
5110 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC
5120 CALL CONTROL!(PARAM!)
5130 REM
5140 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
5150 PARAMLIST(24\2)=AOUT
5160 PARAMLIST(26\2)=8
5170 PARAMLIST(28\2)=SB1+PARNONE+DB8+TC
5180 CALL CONTROL!(PARAM!)
5190 REM
5200 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
5210 PARAMLIST(24\2)=AIN
5220 PARAMLIST(26\2)=9
5230 PARAMLIST(28\2)=BUFFERH
5240 PARAMLIST(30\2)=BUFFERL
5250 PARAMLIST(32\2)=BUFFERSIZE
5260 CALL CONTROL!(PARAM!)
5270 REM
5280 FOR I=0 TO 49\2: PARAMLIST(I)=0: NEXT I
5290 PARAMLIST(24\2)=AIN
5300 PARAMLIST(26\2)=10
5310 POKE PARAM!+28,1: REM enable XON/XOFF output handshake
5320 POKE PARAM!+29,0: REM disable CTS output handshake
5330 POKE PARAM!+30,XON: REM X-ON handshake character
5340 POKE PARAM!+31,XOFF: REM X-OFF handshake character
5350 POKE PARAM!+32,0: REM no aborts
5360 POKE PARAM!+33,0: REM no events
5370 POKE PARAM!+34,0: REM disable XON/XOFF input flow control
5380 CALL CONTROL!(PARAM!)
5390 REM
5400 PRINT: PRINT: PRINT
5410 REM
5420 REM
6000 REM   Terminal Mode
6010 REM
6020 CALL PENSIZE(4,1)
6030 XFLAG=FALSE
6040 CALL LINE(0,-4)
6050 IF LOC(1)=0 THEN GOTO 6110
6060    IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
6070    L$=INPUT$(LOC(1),#1)
6080    CALL TRANSLATE!(XTABLE!,LP!,TLP!)
6090    IF TL<>0 THEN CALL LINE(0,4): PRINT LEFT$(L$,TL);: CALL LINE(0,-4)
6100    IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
6110 C$=INKEY$
6120 IF C$="" THEN GOTO 6050
6130 IF C$=CMDE$ THEN PRINT: PRINT "Exiting...": SYSTEM
6140 IF C$=CMDB$ THEN CALL LINE(0,4): GOTO 7000
6150 IF C$=CMDR$ THEN CALL LINE(0,4): GOTO 8000
6160 IF C$=CMDT$ THEN CALL LINE(0,4): GOTO 9000
6170 PRINT #1,C$;
6180 GOTO 6050
6190 REM
6200 REM
7000 REM Receive (download) BASIC program
7010 REM
7020 CALL PENSIZE(6,1)
7030 XFLAG=FALSE: CRFLAG=TRUE: FLUSH=FALSE
7040 PRINT: LINE INPUT "BASIC File Name: ",F$
7050 IF F$="" THEN GOTO 6000
7060 OPEN F$ FOR OUTPUT AS #2
7070 CALL LINE(0,-2)
7080 QUIT=FALSE
7090 WHILE NOT QUIT
7100    IF LOC(1)=0 THEN GOTO 7210
7110       IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
7120       L$=INPUT$(LOC(1),#1)
7130       CALL TRANSLATE!(XTABLE!,LP!,TLP!)
7140       IF TL=0 THEN GOTO 7200
7150          CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2)
7160          CALL BPROC!(LP!,TLP!,CRFLAGP!,FLUSHP!)
7170          IF TL=0 THEN GOTO 7200
7180          IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
7190          PRINT #2,LEFT$(L$,TL);
7200       IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
7210    C$=INKEY$
7220    IF C$="" THEN GOTO 7250
7230    IF (C$=CMDB$) OR (C$=CMDR$) THEN QUIT=TRUE: GOTO 7250
7240    PRINT #1,C$;
7250    WEND
7260 CALL LINE(0,2)
7270 CLOSE #2
7280 IF RIGHT$(F$,1)<>":" THEN TYPEAPPL$="MSBAMSBA": GOSUB 10000
7290 PRINT: PRINT "BASIC Receive Ended": PRINT
7300 GOTO 6000
7310 REM
7320 REM
8000 REM Receive (download) ASCII file
8010 REM
8020 CALL PENSIZE(6,1)
8030 XFLAG=FALSE
8040 PRINT: LINE INPUT "Receive File Name: ",F$
8050 IF F$="" THEN GOTO 6000
8060 OPEN F$ FOR OUTPUT AS #2
8070 CALL LINE(0,-2)
8080 QUIT=FALSE
8090 WHILE NOT QUIT
8100    IF LOC(1)=0 THEN GOTO 8190
8110       IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
8120       L$=INPUT$(LOC(1),#1)
8130       CALL TRANSLATE!(XTABLE!,LP!,TLP!)
8140       IF TL=0 THEN GOTO 8180
8150       CALL LINE(0,2): PRINT LEFT$(L$,TL);: CALL LINE(0,-2)
8160       IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
8170       PRINT #2,LEFT$(L$,TL);
8180       IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
8190    C$=INKEY$
8200    IF C$="" THEN GOTO 8230
8210    IF (C$=CMDB$) OR (C$=CMDR$) THEN QUIT=TRUE: GOTO 8230
8220    PRINT #1,C$;
8230    WEND
8240 CALL LINE(0,2)
8250 CLOSE #2
8260 IF RIGHT$(F$,1)<>":" THEN TYPEAPPL$="TEXTMACA": GOSUB 10000
8270 PRINT: PRINT "Receive Ended": PRINT
8280 GOTO 6000
8290 REM
8300 REM
9000 REM Transmit (upload) ASCII file
9010 REM
9020 CALL PENSIZE(2,1)
9030 XFLAG=FALSE
9040 PRINT: LINE INPUT "Transmit File Name: ",F$
9050 IF F$="" THEN GOTO 6000
9060 OPEN F$ FOR INPUT AS #2
9070 CALL LINE(0,-6)
9080 QUIT=FALSE
9090 WHILE NOT (EOF(2) OR QUIT)
9100    IF LOC(1)<>0 THEN GOTO 9150
9110       LINE INPUT #2,XL$
9120       IF XL$<>"" THEN FOR I=1 TO LEN(XL$): PRINT #1,MID$(XL$,I,1);: NEXT I
9130       PRINT #1,CR$;
9140       IF LOC(1)=0 THEN GOTO 9200
9150       IF LOC(1)>BUFLIM AND NOT XFLAG THEN PRINT #1,XOFF$;: XFLAG=TRUE
9160       L$=INPUT$(LOC(1),#1)
9170       CALL TRANSLATE!(XTABLE!,LP!,TLP!)
9180       IF TL<>0 THEN CALL LINE(0,6): PRINT LEFT$(L$,TL);: CALL LINE(0,-6)
9190       IF XFLAG THEN XFLAG=FALSE: PRINT #1,XON$;
9200    C$=INKEY$
9210    IF C$="" THEN GOTO 9240
9220    IF C$=CMDT$ THEN QUIT=TRUE: GOTO 9250
9230    PRINT #1,C$;
9240    IF LOC(1)<>0 THEN GOTO 9150
9250    WEND
9260 CALL LINE(0,6)
9270 CLOSE #2
9280 PRINT: PRINT "Transmit Ended": PRINT
9290 GOTO 6000
9300 REM
9310 REM
10000 REM  Subroutine to set type and application of a file
10010 REM
10020 FL=LEN(F$)
10030 F$=CHR$(FL)+F$
10040 FOR I=0 TO 79: POKE PARAM!+I,0: NEXT I
10050 POKE PARAM!+19,PEEK(FP!+2)
10060 POKE PARAM!+20,PEEK(FP!+3)
10070 POKE PARAM!+21,PEEK(FP!+4)
10080 CALL GETFILEINFO!(PARAM!)
10090 FOR I=1 TO 8
10100 POKE PARAM!+31+I,ASC(MID$(TYPEAPPL$,I,1))
10110 NEXT I
10120 CALL SETFILEINFO!(PARAM!)
10130 RETURN
10140 REM
10150 REM
20000 REM Set up Control ROM call
20010 REM
20020 DIM CONTROLCODE(25)
20030 RESTORE 20100
20040 I=0
20050 READ A:CONTROLCODE(I)=A
20060 I=I+1
20070 IF A<>-1 THEN GOTO 20050
20080 REM
20090 REM
20100 REM Machine language code to invoke Control ROM function
20110 REM
20120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA004
20130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75
20140 DATA -1
20150 REM
20160 REM
21000 REM Set up Translate ML routine
21010 REM
21020 DIM TRANSLATECODE(50)
21030 RESTORE 21100
21040 I=0
21050 READ A:TRANSLATECODE(I)=A
21060 I=I+1
21070 IF A<>-1 THEN GOTO 21050
21080 REM
21090 REM
21100 REM Machine language code to translate strings
21110 REM
21120 DATA &H4E56, &HFFE8, &H48EE, &H0707, &HFFE8, &H226E, &H000C, &H4281
21130 DATA &H1219, &HE181, &H1219, &H4282, &H1419, &HE182, &H1419, &HE182
21140 DATA &H1419, &H2042, &H2248, &H246E, &H0010, &H4282, &H4A41, &H6712
21150 DATA &H4280, &H1018, &H12B2, &H0000, &H6704, &H5289, &H5242, &H5341
21160 DATA &H66F0, &H206E, &H0008, &H3082, &H4CEE, &H0707, &HFFE8, &H4E5E
21170 DATA &H4E75
21180 DATA -1
21190 REM
21200 REM
22000 REM Set up Process BASIC ML routine
22010 REM
22020 DIM BPROCCODE(100)
22030 RESTORE 22100
22040 I=0
22050 READ A:BPROCCODE(I)=A
22060 I=I+1
22070 IF A<>-1 THEN GOTO 22050
22080 REM
22090 REM
22100 REM Machine language code to process BASIC program
22110 REM
22120 DATA &H4E56, &HFFE0, &H48EE, &H1F07, &HFFE0, &H206E, &H0014, &H5488
22130 DATA &H4280, &H1018, &HE180, &H1018, &HE180, &H1018, &H2040, &H2248
22140 DATA &H246E, &H0010, &H266E, &H000C, &H286E, &H0008, &H3212, &H4282
22150 DATA &H4A41, &H6746, &H1018, &H0C00, &H000D, &H661A, &H4A54, &H6708
22160 DATA &H4254, &H36BC, &H0001, &H602E, &H4A53, &H662A, &H36BC, &H0001
22170 DATA &H12C0, &H5242, &H6020, &H4A54, &H661C, &H4A53, &H6712, &H0C00
22180 DATA &H0030, &H6D06, &H0C00, &H0039, &H6F06, &H38BC, &H0001, &H6006
22190 DATA &H4253, &H12C0, &H5242, &H5341, &H66BA, &H3482, &H4CEE, &H1F07
22200 DATA &HFFE0, &H4E5E, &H4E75
22210 DATA -1
22220 REM
22230 REM
23000 REM Set up GetFileInfo ROM call
23010 REM
23020 DIM GETFILEINFOCODE(25)
23030 RESTORE 23100
23040 I=0
23050 READ A: GETFILEINFOCODE(I)=A
23060 I=I+1
23070 IF A<>-1 THEN GOTO 23050
23080 REM
23090 REM
23100 REM Machine language code to invoke GetFileInfo ROM function
23110 REM
23120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA00C
23130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75
23140 DATA -1
23150 REM
23160 REM
24000 REM Set up SetFileInfo ROM call
24010 REM
24020 DIM SETFILEINFOCODE(25)
24030 RESTORE 24100
24040 I=0
24050 READ A: SETFILEINFOCODE(I)=A
24060 I=I+1
24070 IF A<>-1 THEN GOTO 24050
24080 REM
24090 REM
24100 REM Machine language code to invoke SetFileInfo ROM function
24110 REM
24120 DATA &H4E56, &HFFF8, &H48EE, &H0101, &HFFF8, &H206E, &H0008, &HA00D
24130 DATA &H4CEE, &H0101, &HFFF8, &H4E5E, &H4E75
24140 DATA -1
24150 REM
24160 REM
25000 RETURN
25010 REM
25020 REM
25030 END