Commit | Line | Data |
---|---|---|
81e70d48 PH |
1 | / INITIAL PROGRAM LOADER |
2 | ||
3 | / LAST EDIT: 06-OCT-1991 05:00:00 CJL | |
4 | ||
5 | / MAY BE ASSEMBLED WITH '/F' SWITCH SET. | |
6 | ||
7 | / THIS PROGRAM IS USED TO LOAD BINARY PROGRAMS IN .IPL FORMAT DIRECTLY. AN | |
8 | / ERROR-FREE PATH IS ASSUMED BETWEEN THE PDP-8 (OR DECMATE) AND THE DATA SERVER. | |
9 | / SUCH A CONNECTION COULD BE ESTABLISHED BETWEEN THE PDP-8 AND A NEARBY PC USING | |
10 | / A SHORT RS-232 CABLE WITH NULL MODEM. THIS UTILITY IS WRITTEN FOR THE EXPRESS | |
11 | / PURPOSE OF LOADING KERMIT-12 ON PDP-8 SYSTEMS WITHOUT IT. ONCE KERMIT-12 HAS | |
12 | / BEEN LOADED, ITS USE SUPERSEDES THIS PROGRAM ENTIRELY. | |
13 | ||
14 | / THERE IS NO FLOW-CONTROL PROTOCOL PER SE BETWEEN SYSTEMS, SINCE THE UTILITY | |
15 | / STORES DATA DIRECTLY INTO PDP-8 MEMORY AND THEREFORE DOESN'T REQUIRE | |
16 | / SYNCHRONIZATION DELAYS. INITIAL SYNCHRONIZATION CAN BE ACCOMPLISHED BY | |
17 | / SENDING A SINGLE CHARACTER FROM THE PDP-8 TO THE SERVER SIDE WHICH STARTS THE | |
18 | / TRANSMISSION. ALTERNATIVELY THE PDP-8 PROGRAM CAN BE STARTED FIRST, THEN THE | |
19 | / SERVER CAN SEND DATA DIRECTLY TO THE PDP-8; THIS ASSUMES THE ABILITY TO START | |
20 | / THE SERVER TRANSMISSION FROM THE SERVER'S END. | |
21 | ||
22 | / THIS PROGRAM IS FOR ANY MODEL PDP-8 WITH A KL-STYLE REMOTE LINE SERIAL | |
23 | / INTERFACE OR EQUIVALENT. DEFAULT PARAMETER VALUES ARE CONSISTENT WITH THE | |
24 | / DISTRIBUTION SETTINGS FOR KERMIT-12 ITSELF AND ARE EASILY CHANGED. IT CAN BE | |
25 | / MODIFIED FOR USE ON VARIOUS DECMATE MODELS, BUT WILL BECOME SOMEWHAT LARGER IN | |
26 | / THE PROCESS DUE TO THE MUCH GREATER COMPLEXITY OF THE VARIOUS DECMATE | |
27 | / COMMUNICATIONS INTERFACES UNLESS THE COMPATIBLE PRINTER PORT IS CHOSEN (DEVICE | |
28 | / 32/33). | |
29 | ||
30 | / THIS PROGRAM SHOULD ONLY BE USED IF NO OTHER METHOD IS AVAILABLE AS THE | |
31 | / ASSUMPTION OF AN ERROR-FREE CONNECTION IS UNRELIABLE. DISTRIBUTION PATHS SUCH | |
32 | / AS INTERNET FTP OR CONTACTING THE AUTHOR CAN YIELD COMPLETE COPIES OF THE | |
33 | / PROGRAM DISTRIBUTION ON APPROPRIATE MEDIA WHERE APPLICABLE. | |
34 | \f/ USAGE: | |
35 | ||
36 | / THIS PROGRAM IS RESTRICTED TO A SINGLE-FIELD LOAD ONLY. SEVERAL VARIANT | |
37 | / VERSIONS MUST BE CREATED TO COMPLETELY LOAD KERMIT-12. (AS OF THIS WRITING, | |
38 | / ONLY A FIELD ZERO AND FIELD ONE VERSION NEED BE CREATED. HOWEVER, KERMIT-12 | |
39 | / MAY BECOME LARGER!). THE EXAMPLE GIVEN BELOW ILLUSTRATES USAGE FOR FIELD ONE. | |
40 | / REPEATING THE PROCESS WITH THE INTENDED CONTENTS OF ALL OTHER FIELDS WILL | |
41 | / (EVENTUALLY) YIELD AN ENTIRE COPY OF KERMIT-12: | |
42 | ||
43 | / .R IPL1 (OR RUN DEV IPL1) | |
44 | ||
45 | / [PRESS AN APPROPRIATE KEY (SUCH AS CR) TO START WAITING FOR THE TRANSFER] | |
46 | ||
47 | / [THE DATA IS TRANSFERRED FROM THE OTHER SYSTEM AT THIS TIME AND THE PROGRAM | |
48 | / EXITS AUTOMATICALLY TO THE KEYBOARD MONITOR.] | |
49 | ||
50 | / .SAVE DEV FIELD1.SV 10000-17577=0 | |
51 | ||
52 | / CHANGING ALL OF THE ONES IN THE ABOVE EXAMPLE TO ZERO WILL YIELD THE | |
53 | / FIELD-ZERO LOAD FILE FIELD0.SV AS WELL. DEV IS ANY CONVENIENT OS/8 DEVICE | |
54 | / SUCH AS SYS OR DSK. (IT ISN'T CRITICAL SINCE THESE FILES CAN BE DELETED ONCE | |
55 | / KERMIT-12 IS CREATED.) ONCE ALL PORTIONS OF KERMIT-12 HAVE BEEN OBTAINED, THE | |
56 | / FOLLOWING COMMANDS WILL COMBINE THEM INTO THE STANDARD RELEASE FILE K12MIT.SV: | |
57 | ||
58 | / .LOAD DEV:FIELD1.SV/I,FIELD0.SV/I$ LOAD IMAGE FILES FIELD1.SV, FIELD0.SV | |
59 | / WITH /I SWITCH SET. (FUTURE VERSIONS | |
60 | / MAY REQUIRE LENGTHENING THE COMMAND TO | |
61 | / ADD MORE FILES SUCH AS FIELD2.SV, | |
62 | / FIELD3.SV, ETC.) $ INDICATES USING | |
63 | / <ESC> TO TERMINATE LINE. | |
64 | ||
65 | / .SAVE DEV K12MIT=1 SAVE COMPLETED FILE ON ANY AVAILABLE | |
66 | / DEVICE DEV (PREFERABLY SYS). | |
67 | ||
68 | / CREATING THE VARIANT VERSIONS. | |
69 | ||
70 | / ONLY ONE PARAMETER NEED BE CHANGED TO PRODUCE THE VARIOUS VERSIONS REQUIRED. | |
71 | / SETTING DFIELD=0 CREATES A VERSION USED TO OBTAIN THE FIELD-ZERO DATA. | |
72 | / SETTING DFIELD=1 CREATES THE FIELD-ONE VERSION. LEGAL VALUES FOR DFIELD | |
73 | / EXTEND UP TO SEVEN. THE DEFAULT VALUE IS ZERO. NOTE THAT THE FIELD-ZERO | |
74 | / VERSION LOADS INTO FIELD ONE WHILE ALL OTHER VERSIONS LOAD INTO FIELD ZERO. | |
75 | / THIS IS NECESSARY TO ALLOW UNRESTRICTED FILE LOADING WITHIN THE SELECTED | |
76 | / FIELD. (OS/8 ITSELF GENERALLY BARS LOADING INTO 7600-7777 OF ANY FIELD, THUS | |
77 | / LOADING IS ACTUALLY RESTRICTED TO 0000-7577 OF THE SELECTED FIELD.) | |
78 | \f/ OTHER ASSEMBLY PARAMETERS. | |
79 | ||
80 | / SETTING REC= XX SETS THE REMOTE RECEIVE DEVICE CODE TO | |
81 | / XX (DEFAULT VALUE IS 40). | |
82 | ||
83 | / SETTING SEN= XY SETS THE REMOTE TRANSMIT DEVICE CODE | |
84 | / TO XY (DEFAULT VALUE IS 41). | |
85 | ||
86 | / SETTING BRATE= NN SETS THE BAUD RATE (FOR SYSTEMS THAT | |
87 | / SUPPORT THIS FEATURE SUCH AS THE | |
88 | / VT-78) FROM A TABLE OF VALUES (00-17) | |
89 | / AS FOLLOWS: | |
90 | ||
91 | / NN (OCTAL) BAUD RATE | |
92 | ||
93 | / 00 50 | |
94 | / 01 75 | |
95 | / 02 110 | |
96 | / 03 134.5 | |
97 | / 04 150 | |
98 | / 05 300 | |
99 | / 06 600 | |
100 | / 07 1200 | |
101 | / 10 1800 | |
102 | / 11 2000 | |
103 | / 12 2400 | |
104 | / 13 3600 | |
105 | / 14 4800 | |
106 | / 15 7200 | |
107 | / 16 9600 | |
108 | / 17 19200 | |
109 | ||
110 | / (THE DEFAULT VALUE IS 07 FOR 1200 | |
111 | / BAUD COMMUNICATIONS.) | |
112 | \f/ ASSEMBLY INSTRUCTIONS FOR ANY VARIANT VERSION. | |
113 | ||
114 | / ASSUMING A CUSTOMIZED FILE SETUP FOR LOADING FIELD ZERO DATA IS CALLED | |
115 | / IPL0.PA, THE FOLLOWING COMMANDS WILL CREATE IPL0.SV: | |
116 | ||
117 | / .PAL IPL0<IPL0/E/F ASSEMBLE VARIANT FOR FIELD ZERO | |
118 | / .LOAD IPL0 LOAD THE BINARY | |
119 | / .SAVE DEV IPL0 ;10200=0 SAVE THE IMAGE ON ANY DEV (SUCH AS | |
120 | / SYS). | |
121 | ||
122 | / NOTE THE NON-STANDARD STARTING ADDRESS FOR THE FIELD ZERO VERSION (10200). | |
123 | ||
124 | / ASSUMING A CUSTOMIZED FILE SETUP FOR LOADING FIELD ONE DATA IS CALLED IPL1.PA, | |
125 | / THE FOLLOWING COMMANDS WILL CREATE IPL1.SV: | |
126 | ||
127 | / .PAL IPL1<IPL1/E/F ASSEMBLE VARIANT FOR FIELD ONE | |
128 | / .LOAD IPL1 LOAD THE BINARY | |
129 | / .SAVE DEV IPL1=0 SAVE THE IMAGE ON ANY DEV (SUCH AS | |
130 | / SYS). | |
131 | ||
132 | / IF NECESSARY FOR FIELD TWO AND FOLLOWING, ADDITIONAL VERSIONS CAN BE CREATED. | |
133 | / THE SAVE COMMAND WILL BE THE SAME AS FOR IPL1. | |
134 | \f/ EQUATED SYSMBOLS. | |
135 | ||
136 | / LOADING FIELD DEFINED HERE. REMOVE THE / FROM THE APPROPRIATE LINE. | |
137 | ||
138 | / DFIELD= 0 /LOAD FIELD ZERO DATA | |
139 | / DFIELD= 1 /LOAD FIELD ONE DATA | |
140 | ||
141 | IFNDEF DFIELD <DFIELD=0> /DEFINE LOADING FIELD ZERO BY DEFAULT | |
142 | ||
143 | / REMOTE LINE RECEIVE DEVICE CODE DEFINED HERE. REMOVE THE / AND FILL IN THE | |
144 | / APPROPRIATE VALUE. | |
145 | ||
146 | / REC= 40 /REMOTE RECEIVE DEVICE CODE | |
147 | ||
148 | IFNDEF REC <REC= 40> /DEFAULT RECEIVE DEVICE CODE IS 40 | |
149 | ||
150 | / REMOTE LINE TRANSMIT DEVICE CODE DEFINED HERE. REMOVE THE / AND FILL IN THE | |
151 | / APPROPRIATE VALUE. | |
152 | ||
153 | / SEN= 41 /REMOTE TRANSMIT DEVICE CODE | |
154 | ||
155 | IFNDEF SEN <SEN= 41> /DEFAULT TRANSMIT DEVICE CODE IS 41 | |
156 | ||
157 | / BAUD RATE CONTROL VALUE DEFINED HERE FOR VT-78, ETC. REMOVE THE / AND FILL IN | |
158 | / THE APPROPRIATE VALUE. | |
159 | ||
160 | / BRATE= 7 /BAUD RATE CONTROL VALUE | |
161 | ||
162 | IFNDEF BRATE <BRATE= 7> /DEFAULT IS VALUE FOR 1200 BAUD | |
163 | ||
164 | / REMOTE LINE IOT DEFINITIONS. | |
165 | ||
166 | / RECEIVE DEFINITIONS. | |
167 | ||
168 | / RKCCIOT=REC^10+6002 /CLEAR REMOTE INPUT FLAG, AC | |
169 | RKRBIOT=REC^10+6006 /READ REMOTE, CLEAR FLAG | |
170 | RKSFIOT=REC^10+6001 /SKIP ON REMOTE INPUT FLAG | |
171 | ||
172 | / TRANSMIT DEFINITIONS. | |
173 | ||
174 | RSBIOT= SEN^10+6003 /SET BAUD RATE FROM AC[8-11] | |
175 | RTLSIOT=SEN^10+6006 /TRANSMIT CHARACTER, CLEAR FLAG | |
176 | / RTSFIOT=SEN^10+6001 /SKIP ON TRANSMIT FLAG | |
177 | ||
178 | / OTHER DEFINITIONS. | |
179 | ||
180 | DATFLD= DFIELD^10 /LOADING FIELD FOR CDF INSTRUCTIONS | |
181 | \f/ THE PROGRAM CODE STARTS HERE. | |
182 | ||
183 | IFZERO DFIELD <FIELD 1> /FIELD ZERO VERSION LOADS HERE | |
184 | ||
185 | IFNZRO DFIELD <FIELD 0> /ALL OTHER VERSIONS LOAD HERE | |
186 | ||
187 | *200 /START AT THE BEGINNING | |
188 | ||
189 | START, KCC /CLEAR KEYBOARD FLAG AND AC | |
190 | TAD INPUT /GET BAUD RATE CONTROL VALUE | |
191 | RSBIOT /SETUP THE BAUD RATE | |
192 | / RKSFIOT /**** FOR DECMATE PRINTER PORT ONLY **** | |
193 | KSF /WAIT FOR | |
194 | JMP .-1 /KEYBOARD INPUT | |
195 | KRB /GET THE CHARACTER | |
196 | RTLSIOT /OUTPUT TO REMOTE | |
197 | TLS /LET USER SEE IT ALSO | |
198 | RKRBIOT /CLEAR REMOTE INPUT FLAG NOW | |
199 | CDF DATFLD /SETUP LOADING FIELD | |
200 | JMS INPUT /TRY TO GET A VALID DATA CHARACTER | |
201 | JMP .-1 /LEADER FOUND, IGNORE IT | |
202 | JMP GOTDATA /LOAD FIRST DATA CHARACTER THERE | |
203 | ||
204 | DATLUP, JMS INPUT /TRY TO GET A VALID DATA CHARACTER | |
205 | JMP LOADEND /TRAILER FOUND, GO FINISH THERE | |
206 | GOTDATA,CLL RTL;RTL;RTL /MOVE HALF-WORD UP | |
207 | DCA I LOADPTR /STORE HIGH-ORDER HALF | |
208 | JMS INPUT /TRY TO GET A VALID DATA CHARACTER | |
209 | JMP LOADEND /TRAILER FOUND, GO FINISH THERE | |
210 | TAD I LOADPTR /COMBINE LATEST WITH PREVIOUS | |
211 | DCA I LOADPTR /STORE BACK COMPOSITE | |
212 | ISZ LOADPTR /BUMP TO NEXT | |
213 | L177, 177 /CONSTANT 0177; HERE JUST IN CASE IT SKIPS | |
214 | JMP DATLUP /GO BACK FOR MORE | |
215 | ||
216 | / COMES HERE WHEN LOADING IS DONE. | |
217 | ||
218 | LOADEND,CLA!400 /CLEAN UP; ALSO CONSTANT 7600 | |
219 | CIF CDF 00 /GOING TO MONITOR FIELD | |
220 | JMP I LOADEND/(7600) /EXIT TO MONITOR | |
221 | ||
222 | LOADPTR,0000 /LOADING POINTER | |
223 | \fINPUT, BRATE /INPUT ROUTINE; ALSO HOLDS BAUD RATE VALUE | |
224 | INPAGN, RKSFIOT /ANY REMOTE INPUT? | |
225 | JMP INPAGN /NO, WAIT FOR IT | |
226 | RKRBIOT /YES, READ IT IN | |
227 | AND L177/(177) /REMOVE PARITY BIT | |
228 | TAD L7737/(-41) /COMPARE TO LOWER LIMIT | |
229 | SPA /SKIP IF GREATER THAN THAT | |
230 | JMP INPAGN /ELSE IGNORE IT | |
231 | TAD L7700/(-100) /COMPARE TO UPPER LIMIT | |
232 | SMA /SKIP IF IN RANGE | |
233 | JMP I INPUT /ELSE TAKE IMMEDIATE RETURN ON LEADER/TRAILER | |
234 | AND L77/(77) /REMOVE JUNK BITS | |
235 | ISZ INPUT /BUMP RETURN | |
236 | JMP I INPUT /TAKE SKIP RETURN TO CALLER | |
237 | ||
238 | L77, 77 /CONSTANT 0077 | |
239 | L7700, 7700 /CONSTANT 7700 | |
240 | L7737, 7737 /CONSTANT 7737 | |
241 | ||
242 | $ /THAT'S ALL FOLK! |