morgan@ucbcad.UUCP (07/14/83)
#N:ucbcad:2800004:000:8336
ucbcad!morgan Jul 13 20:09:00 1983
My apologies to all of you for the incorrect termcap posted here
a few weeks ago. It was my original scratch version which refused to
work with vi. Herein you will find the corrected, updated version.
For those of you with either Programma's Pie or Hayden's Pie, I'm
including a patch for DOS which allows them to function interactively
as a terminal, with data transfer.
-------------------------------------------------------------------------
#The following termcap entry works only with an Apple ][+ that is
# equipped with a Videx 80 collumn card in slot 3. A special routine
# must be installed at the apple end to enable scroll down, here
# indicated with a ^U. The Videx card must have inverse char set.
qa|apple|apple-v80|Apple][+ w/Videx80 & custom scroll down:co#80:li#24:\
:bs:ae=^z2:as=^z3:cm=6\015\036%r%+ %+ :\
:ce=6\035:ho=50\031:so=^z3:se=^z2:nd=\034:\
:do=\012:up=\037:cl=40*\014:dB=10:xn:am:dF=50:sr=\020:cd=20*\013:
-------------------------------------------------------------------------
Pieterm is written using Lisa 2.5. If any of the opcodes used are
confusing, refer to hex values in the left most collumn.
1 TTL "PIETERM 1.0
2 NLS
3 ;
4 ; PIETERM: A program which patches 48k DOS 3.3 to allow
5 ; Programma Pie, and Hayden Pie to function in
6 ; a terminal mode.
7 ;
8 ; ASSUMES: Videx 80 collumn Videoterm in slot 3.
9 ; 1200 baud Serial Card in slot 2.
10 ; DOS 3.3 unmodified at $9D00 (master or slave)
11 ;
12 ; TO USE: Either from the Command level of Pie, or in a
13 ; "HELLO" program, "BRUN PIETERM,A$6000".
14 ; To enter terminal mode, from the Command level
15 ; of Pie, enter "TERM" or "TERM ".
16 ; "TERM" Sends a carriage return before entering terminal
17 ; mode. Best for reentering csh.
18 ; "TERM " Sends a ^D character before entering
19 ; terminal mode. For example, "TERM " should be
20 ; entered if returning to a cat>filename.
21 ;
22 ; RETURN: To return to the command level of Pie from the
23 ; terminal mode, enter "^@". With an upper case
24 ; locked keyboard, that is control-shift-P. With
25 ; and Enhanser II lower case keyboard, that is ^0.
26 ;
27 ; SENDING: From the Command level of Pie, indicated by
28 ; "Command:" (csh indicated by %), enter:
29 ;
30 ; Command:TERM
31 ; % stty -echo;cat>filename;stty echo
32 ; % ^@
33 ; Command:>#2
34 ; Command:TERM
35 ; ^__space
36 ;
37 ; RECEIVING: % wc filename
38 ; 46 123 4567 filename
39 ; % sleep 20;cat filename
40 ; ^@
41 ; Command:(1,46)<#2
42 ;
43 ; BUGS: Extra linefeeds are sent both ways. A filter program
44 ; at the UN*X end is required to strip every other \n.
45 ; Arg "^J" Arg "" ^W^X will globally illiminate them
46 ; within Pie.
47 ;
48 ; Since the Patch program overwrites the INIT portion
49 ; of DOS, it must be brun every boot. A zap utility
50 ; may be used to modify DOS directly on the disk.
51 ;
52 ; Pie gives no indication of what is going on. This
53 ; takes a little getting used to. It is possible to
54 ; get so involved with what you are doing in Pie, that
55 ; you forget you are logged on.
56 ;
57 ; Because of the limitation of Pie's buffer, large
58 ; file need to be transfered in chunks.
59 ;
60 ; --------------------------------
61 ;
62 ;
0800 63 ;
06F8 64 NO EQU $6F8 ; address specific to videx
0638 65 START EQU NO-$C0 ; card in slot 3. See
C080 66 DEV0 EQU $C080 ; reference manual.
C081 67 DEV1 EQU $C081
03B8 68 BASEL EQU $478-$C0
CA2E 69 BASCLC1 EQU $CA2E
0438 70 BASEH EQU $4F8-$C0
0800 71 ;
C0AE 72 STATUS EQU $C0AE ; Serial card specific to
C0AF 73 DATAPORT EQU $C0AF ; slot 2. Adjust as needed.
0800 74 ;
FDED 75 COUT EQU $FDED ; Stdout
0800 76 ;
A884 77 PUTNAME EQU $A884 ; DOS patch addresses
A909 78 PUTTOKEN EQU $A909
9D1E 79 PUTADR EQU $9D1E
AE8E 80 PUTPATCH EQU $AE8E
0800 81 ;
6000 82 ORG $6000
6000 83 OBJ $800
6000 84 ;
6000 4C 0B 60 85 JMP MAIN
6003 86 ;
6003 54 45 52 87 NAME DCI 'TERM' ; hi-bit off except last
6006 CD
6007 40 70 88 TOKEN HEX 4070 ; need-filename optional
6009 8D AE 89 ADRESS ADR PUTPATCH-1
600B 90 ;
600B 91 MAIN:
600B A2 04 92 LDX 4
600D BD 02 60 93 ^1 LDA NAME-1,X
6010 9D 83 A8 94 STA PUTNAME-1,X
6013 CA 95 DEX
6014 D0 F7 96 BNE <1
6016 E8 97 INX
6017 BD 07 60 98 ^2 LDA TOKEN,X
601A 9D 09 A9 99 STA PUTTOKEN,X
601D BD 09 60 100 LDA ADRESS,X
6020 9D 1E 9D 101 STA PUTADR,X
6023 CA 102 DEX
6024 10 F1 103 BPL <2
6026 A2 73 104 LDX #ENDPATCH-PATCH+1
6028 BD 32 60 105 ^3 LDA PATCH,X
602B 9D 8E AE 106 STA PUTPATCH,X
602E CA 107 DEX
602F 10 F7 108 BPL <3
6031 60 109 RTS
6032 110 ;
6032 111 PATCH:
6032 112 PHS PUTPATCH
AE8E 113 ;
AE8E A2 8D 114 LDX #$8D
AE90 AD 04 02 115 LDA INBUFF+4
AE93 C9 A0 116 CMP #" "
AE95 D0 02 117 BNE >0
AE97 A2 84 118 LDX #$84
AE99 8A 119 ^0 TXA
AE9A 4C BD AE 120 JMP SENDIT
AE9D AD AE C0 121 RECEIVE LDA STATUS
AEA0 29 01 122 AND #$01
AEA2 F0 0C 123 BEQ SEND
AEA4 AD AF C0 124 LDA DATAPORT
AEA7 29 7F 125 AND #$7F
AEA9 C9 10 126 CMP #$10
AEAB F0 1F 127 BEQ SCROLLD
AEAD 20 ED FD 128 PRINTIT JSR COUT
AEB0 AD 00 C0 129 SEND LDA $C000
AEB3 10 E8 130 BPL RECEIVE
AEB5 8D 10 C0 131 STA $C010
AEB8 29 7F 132 AND #$7F
AEBA D0 01 133 BNE SENDIT
AEBC 60 134 RTS
AEBD 48 135 SENDIT PHA
AEBE AD AE C0 136 S0 LDA STATUS
AEC1 29 02 137 AND #$02
AEC3 F0 F9 138 BEQ S0
AEC5 68 139 PLA
AEC6 8D AF C0 140 STA DATAPORT
AEC9 4C 9D AE 141 JMP RECEIVE
AECC 38 142 SCROLLD SEC
AECD A2 C3 143 LDX #$C3 ; for slot 3
AECF AC F8 06 144 LDY NO
AED2 BD 38 06 145 LDA START,X
AED5 E9 05 146 SBC #$05
AED7 29 7F 147 AND #$7F
AED9 9D 38 06 148 STA START,X
AEDC 20 2E CA 149 JSR BASCLC1
AEDF A9 0D 150 LDA #$0D
AEE1 99 80 C0 151 STA DEV0,Y
AEE4 BD B8 03 152 LDA BASEL,X
AEE7 99 81 C0 153 STA DEV1,Y
AEEA A9 0C 154 LDA #$0C
AEEC 99 80 C0 155 STA DEV0,Y
AEEF BD 38 04 156 LDA BASEH,X
AEF2 99 81 C0 157 STA DEV1,Y
AEF5 A9 19 158 LDA #$19 ; home cursor
AEF7 20 ED FD 159 JSR COUT
AEFA A9 1D 160 LDA #$1D ; ceol
AEFC 20 ED FD 161 JSR COUT
AEFF 4C 9D AE 162 JMP RECEIVE
AF02 163 ;
AF02 164 DPH
60A6 165 ORG $6000+*-$800
60A6 166 OBJ *
60A6 167 ;
60A6 168 ENDPATCH:
60A6 169 END