Previous File   Multiple Pages   Next File

* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 1

0001 * NAME BASIC-INIT-A DOC. 70181909000 REV. A 0002 * 0003 * 0004 * DESCRIPTION INITIALIZATION ROUTINE FOR STAND-ALONE VERSION OF BASIC-16 0005 * 0006 * 0007 * REVISION HISTORY 0008 * REV. DATE ECO NO. 0009 * A RELEASED 0010 * 0011 * 0012 * 0013 * 0014 * 0015 * DOCUMENTATION REFERENCES 0016 * TITLE DOC. NO. 0017 * BASIC-16 USER'S MANUAL 70130072543 0018 * 0019 * 0020 * 0021 * 0022 * 0023 * COPYRIGHT 1971 BY HONEYWELL INFORMATION SYSTEMS INC., COMPUTER 0024 * SYSTEMS DIVISION, FRAMINGHAM, MASSACHUSETTS. CONTENTS OF THIS 0025 * PUBLICATION MAY NOT BE REPRODUCED IN ANY FORM, IN WHOLE OR IN 0026 * PART, WITHOUT PERMISSION OF THE COPYRIGHT OWNER. ALL RIGHTS 0027 * RESERVED. 0028 ************************************************************************ 0029 EJCT
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 2

0030 EXT SIT ADDRESS OF HIGHEST AVAILABLE MEMORY 0031 * LOCATION 0032 EXT PTB ADDRESS OF LOWEST WORD IN USER SPACE 0033 EXT TYPE OUTPUTS MESSAGE ON ASR 0034 EXT IPUT INPUTS A LINE FROM THE ASR 0035 EXT GNBC GETS NEXT NON-BLANK CHARACTER FROM THE 0036 * INPUT BUFFER 0037 EXT LODF FLAGS PAPER TAPE INPUT FROM ASR 0038 EXT LFCR OUTPUTS CARRIAGE RETURN, LINE FEED ON ASR 0039 EXT JOB JOB COMMAND PROCESSOR ENTRY 0040 EXT FINT INTEGER TO FLOATING POINT CONVERSION 0041 EXT DELT DAC TO ROUTINE TO FLAG ERROR DF 0042 EXT ATND DAC TO ARCTANGENT FUNCTION 0043 EXT TAND DAC TO TANGENT FUNCTION 0044 EXT SIND DAC TO SINE FUNCTION 0045 EXT COSD DAC TO COSINE FUNCTION 0046 EXT SQRD DAC TO SQUARE ROOT FUNCTION 0047 EXT SCVL STORES A NUMBER INTO THE FLOATING POINT 0048 * ACCUMULATOR 0049 EXT PCVL PRINTS THE NUMBER IN THE FLOATING POINT 0050 * ACCUMULATOR 0051 EXT C1 0052 EXT C10 0053 EXT C215 0054 EXT C240 0055 EXT C241 0056 EXT C260 0057 * 0058 * 0059 * 0060 ENT INIT 0061 ENT CSRH HIGH CROSS SECTOR REFERENCE GENERATOR 0062 * 0063 * 0064 * 0065 REL 0066 * 0067 * 0068 * 0069 EJCT
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 3

0070 * 0071 * 0072 * INITIALIZATION ROUTINE 0073 * 0074 * CALLING SEQUENCE: 0075 * 0076 * JST INIT 0077 * RETURN IS MADE THROUGH JOB COMMAND PROCESSOR 0078 * 0079 * 0080 * THE PROGRAM TEXT TABLE BASE POINTER(PTB) IS INITIALIZED 0081 * TO THE LOWEST ADDRESS OF THE INITIALIZATION ROUTINE, AND AN 0082 * IDENTIFICATION MESSAGE IS PRINTED. IF THE IOS WAS LOADED AFTER 0083 * MTHPAK, OR IF MTHPAK WAS LOADED AFTER THE INITIALIZATION ROUTINE, 0084 * AN ILLEGAL CONFIGURATION MESSAGE IS PRINTED, AND THE PROGRAM HALTS. 0085 * IF ANYTHING WAS LOADED BETWEEN MTHPAK AND THE INITIALIZATION 0086 * ROUTINE, THERE IS A JUMP TO SET THE STATEMENT INDEX HIGH POINTER 0087 * (SIT). OTHERWISE THW USER IS ASKED IF HE WOULD LIKE TO DELETE ATN. 0088 * A NO ANSWER CAUSES A JUMP TO SET SIT. A YES ANSWER CAUSES PTB TO 0089 * BE SET TO THE FIRST WORD OF THE ROUTINE, AND THE POINTER TO THE 0090 * ROUTINE IS REPLACED BY A POINTER TO A ROUTINE WHICH FLAGS A DE- 0091 * LETED LIBRARY FUNCTION(DF) ERROR. THIS SEQUENCE IS THEN REPEATED 0092 * FOR SIN, COS, AND TAN, AND SQR. 0093 * SIT IS INITIALIZED TO THE HIGH CORE MEMORY ADDRESS, AND THE 0094 * USER IS ASKED IF IT IS ALL RIGHT TO USE ALL OF CORE. A YES ANSWER 0095 * CAUSES A JUMP TO CALCULATE THE AMOUNT OF USER SPACE. OTHERWISE THE 0096 * USER INPUT HIGH OCTAL ADDRESS IS FORMED. NON-OCTAL NUMBERS, OVER- 0097 * FLOW, OR AN ADDRESS GREATER THAN THE HIGH CORE ADDRESS CAUSES A 0098 * MESSAGE TO BE PRINTED REQUESTING A YES OR A HIGH OCTAL ADDRESS. 0099 * OTHERWISE SIT IS SET TO THE USER INPUT HIGH OCTAL ADDRESS. THE 0100 * AMOUNT OF USER SPACE IS CALCULATED BY SUBTRACTING PTB FROM SIT AND 0101 * ADDING ONE. IF THE RESULT IS LESS THAN ELEVEN, A MESSAGE IS 0102 * PRINTED TO FLAG INSUFFICIENT USER SPACE, AND THE ROUTINE LOOPS TO 0103 * RESET SIT. OTHERWISE THE AMOUNT OF USER SPACE IS PRINTED, THE CALL 0104 * TO THE INITIALIZATION ROUTINE IS REPLACED WITH A CRA INSTRUCTION, 0105 * AND THE ROUTINE EXITS THROUGH THE JOB COMMAND PROCESSOR. 0106 * 0107 * 0108 00000 0 000000 INTA DAC * ADDRESS OF FIRST WORD OF INITIALIZATION 0109 * ROUTINE 0110 00001 0 000000 INIT DAC ** ENTRY 0111 00002 0 02 00000 LDA INTA INITIALIZE LOW POINTER TO FIRST WORD 0112 00003 0 04 00000 STA PTB OF INITIALIZATION ROUTINE 0113 00004 0 04 00000 STA LODF SET FLAG FOR NO PAPER TAPE INPUT 0114 00005 0 10 00000 JST LFCR C/R, LINE FEED 0115 00006 0 10 00000 JST TYPE OUTPUT ID MESSAGE 0116 00007 0 000000 XAC IDMS X 0117 00010 0 10 00000 JST LFCR A COUPLE OF LINE FEEDS 0118 00011 0 10 00000 JST LFCR X 0119 *
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 4

0120 * CHECK FOR ILLEGAL CONFIGURATION 0121 * 0122 00012 0 02 00205 LDA HMPK LOAD HIGH ADDRESS OF MTHPAK 0123 00013 0 07 00206 SUB IOSA SUBTRACT ADDRESS IN IOS 0124 00014 100400 SPL SKIP IF POSITIVE 0125 00015 0 01 00156 JMP IN06 JUMP TO FLAG ILLEGAL CONFIGURATION IF 0126 * NEGATIVE 0127 00016 0 02 00205 LDA HMPK LOAD THE LAST ADDRESS OF THE MTHPAK 0128 00017 101100 SLN SKIP IF THE ADDRESS IS ODD 0129 00020 141206 AOA IF IT'S EVEN ADD ONE SINCE LOADING STARTS 0130 * ON AN EVEN LOCATION 0131 00021 141206 AOA ADD ONE AND 0132 00022 0 11 00000 CAS INTA COMPARE WITH THE ADDRESS OF THE FIRST WORD 0133 * OF THE INITIALIZATION ROUTINE 0134 00023 0 01 00156 JMP IN06 IF THE MTHPAK WAS LOADED AFTER THE INITIAL- 0135 * IZATION ROUTINE THEN JUMP TO FLAG AN 0136 * ILLEGAL CONFIGURATION 0137 00024 100000 SKP IF MTHPAK WAS LOADED JUST BEFORE THE 0138 * INITIALIZATION ROUTINE THEN JUMP TO 0139 * ASK USER IF HE WISHES TO DELETE ANY OF 0140 * LIBRARY FUNCTION ROUTINES 0141 00025 0 01 00047 JMP IN01 IF ANYTHING WAS LOADED BETWEEN THE MTHPAK 0142 * AND THE INITIALIZATION ROUTINE THEN 0143 * JUMP TO SET THE HIGH POINTER (SIT) 0144 * 0145 * SET LOW POINTER, PTB 0146 * 0147 00026 0 02 00214 IN02 LDA ATQD LOAD ADDRESS OF ATN MESSAGE 0148 00027 0 10 00161 JST DFUA DELETE ARCTANGENT FUCTION 0149 00030 0 02 00000 LDA DELT YES-REPLACE POINTER TO ATN WITH A 0150 00031 0 13 00000 IMA ATND POINTER TO ROUTINE TO FLAG ERROR DF 0151 00032 0 04 00000 STA PTB AND SET LOW POINTER TO FIRST WORD OF ATN 0152 00033 0 02 00216 LDA SCQD LOAD ADDRESS OF SIN, COS, TAN MESSAGE 0153 00034 0 10 00161 JST DFUA DELETE SIN, COS, TAN FUNCTIONS 0154 00035 0 02 00000 LDA DELT YES- REPLACE POINTER TO THOSE FUNCTIONS 0155 00036 0 04 00000 STA TAND WITH POINTER TO FLAG ERROR DF 0156 00037 0 04 00000 STA SIND X 0157 00040 0 13 00000 IMA COSD X 0158 00041 0 04 00000 STA PTB SET LOW POINTER TO FIRST WORD OF COS 0159 00042 0 02 00215 LDA SQQD LOAD ADDRESS OE SQUARE ROOT MESSAGE 0160 00043 0 10 00161 JST DFUA DELETE SQUARE ROOT FUNCTION 0161 00044 0 02 00000 LDA DELT YES-REPLACE POINTER TO SQUARE ROOT FUNCTION 0162 00045 0 13 00000 IMA SQRD WITH POINTER TO ROUTINE TO FLAG ERROR DF 0163 00046 0 04 00000 STA PTB AND SET LOW POINTER TO FIRST WORD OF SQR 0164 * 0165 * NOW SET HIGH POINTER, SIT 0166 * 0167 00047 0 02 00211 IN01 LDA C16K LOAD HIGHEST POSSIBLE ADDRESS (16K) 0168 00050 0 04 00000 IN10 STA SIT STORE ADDRESS IN HIGH POINTER 0169 00051 -0 13 00000 IMA* SIT CHECK IF ADDRESS EXISTS BY STORING,
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 5

0170 00052 -0 13 00000 IMA* SIT THEN LOADING (BUT DON'T DESTROY CONTENTS OF 0171 00053 0 05 00000 ERA SIT ADDRESS), AND COMPARING 0172 00054 101040 SNZ TEST IF THE SAME 0173 00055 0 01 00060 JMP *+3 YES-HIGH MEMORY ADDRESS IS IN SIT 0174 00056 0 07 00210 SUB C4K NO-SUBTRACT 4K 0175 00057 0 01 00050 JMP IN10 AND TRY AGAIN 0176 00060 0 10 00000 JST TYPE ASK USER IF HE WOULD LIKE TO USE ALL OF 0177 00061 0 000000 XAC HMAM CORE 0178 00062 0 10 00000 IN03 JST TYPE REQUEST A YES OR HIGH OCTAL ADDRESS 0179 00063 0 000000 XAC AYOH X 0180 00064 0 10 00000 JST LFCR C/R, LINE FEED 0181 00065 0 02 00000 LDA C241 OUTPUT EXCLAMATION POINT 0182 00066 0 10 00000 JST IPUT THEN INPUT LINE FROM ASR 0183 00067 0 000000 XAC SBUF INPUT BUFFER 0184 00070 0 10 00000 JST GNBC GET THE FIRST NON-BLANK CHARACTER 0185 00071 0 11 00213 CAS C331 IS IT A 'Y' 0186 00072 0 01 00062 JMP IN03 NOT Y OR NUMBER-REQUEST YES OR HIGH 0187 * OCTAL ADDRESS 0188 00073 0 01 00127 JMP IN04 YES-ASSUME YES ANSWER-JUMP TO CALCULATE 0189 * USER SPACE 0190 00074 000201 IAB SAVE THE CHARACTER 0191 00075 140040 CRA CRA 0192 00076 0 04 00207 STA HOA INITIALIZE HIGH OCTAL ADDRESS TO ZERO 0193 00077 000201 IAB AND CLEAR B REGISTER 0194 * 0195 * HERE TO INPUT USER HIGH OCTAL ADDRESS 0196 * 0197 00100 0 07 00000 IN05 SUB C260 SUBTRACT '260 TO GET PURE NUMBER 0198 00101 100400 SPL MAKE SURE IT'S NOT LESS THAN ZERO 0199 00102 0 01 00062 JMP IN03 IF LESS, REQUEST YES OR HIGH ADDRESS 0200 00103 0 11 00000 CAS C10 OR GREATER THAN 7 0201 00104 101000 NOP X 0202 00105 0 01 00062 JMP IN03 IF GREATER THEN REQUEST YES OR HIGH OCTAL 0203 * ADDRESS 0204 00106 0 13 00207 IMA HOA MAKE ROOM FOR THE DIGIT 0205 00107 0412 75 LLR 3 BY SHIFTING ADDRESS THREE PLACES LEFT 0206 00110 0 05 00207 ERA HOA ADD THE DIGIT 0207 00111 000201 IAB MAKE SURE THERE IS NO OVERFLOW BY TESTING 0208 00112 100040 SZE THE B REGISTER 0209 00113 0 01 00062 JMP IN03 OVERFLOW-REQUEST YES OR HIGH OCTAL ADDRESS 0210 00114 000201 IAB REPOSITION 0211 00115 0 04 00207 STA HOA SAVE ADDRESS 0212 00116 0 10 00000 JST GNBC GET NEXT NON-BLANK CHARACTER 0213 00117 0 11 00000 CAS C215 CHECK FOR C/R 0214 00120 0 01 00100 JMP IN05 NO-LOOP TO ADD DIGIT TO HIGH ADDRESS 0215 00121 0 02 00207 LDA HOA YES-LOAD USER HIGH INPUT ADDRESS 0216 00122 101400 SMI IF USER INPUT HIGH ADDRESS IS NEGATIVE 0217 00123 0 11 00000 CAS SIT COMRARE WIIH HIGH CORE ADDRESS 0218 00124 0 01 00062 JMP IN03 USER INPUT HIGH ADDRESS IS TOO LARGE OR 0219 * NEGATIVE-JUMP TO INPUT AGAIN
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 6

0220 00125 101000 NOP X 0221 00126 0 04 00000 STA SIT OK-SAVE AS HIGH POINTER 0222 * 0223 * CALCULATE AND PRINT TOTAL USER SPACE 0224 * 0225 00127 0 02 00000 IN04 LDA SIT LOAD HIGH POINTER 0226 00130 0 07 00000 SUB PTB SUBTRACT LOW POINTER 0227 00131 0 06 00000 ADD C1 ADD ONE 0228 00132 0 11 00000 CAS C10 MAKE SURE IT ISN'T TOO SMALL 0229 00133 0 01 00141 JMP *+6 OK-JUMP TO PRINT USER SPACE MESSAGE 0230 00134 101000 NOP X 0231 00135 0 10 00000 JST TYPE TOO SMALL-FLAG INSUFFICIENT USER SPACE 0232 00136 0 000000 XAC ISSM X 0233 00137 0 10 00000 JST LFCR C/R, LINE FEED 0234 00140 0 01 00047 JMP IN01 LOOP TO SET HIGH POINTER 0235 00141 0 10 00000 JST FINT FLOAT THE NUMBER 0236 00142 0 10 00000 JST SCVL STORE IT INTO FLOATING POINT ACCUMULATOR 0237 00143 0 02 00000 LDA C240 SURPRESS BLANKS 0238 00144 0 10 00000 JST PCVL PRINT THE NUMBER 0239 00145 0 10 00000 JST TYPE PRINT USER SPACE MESSAGE 0240 00146 0 000000 XAC USPM X 0241 00147 0 10 00000 JST LFCR C/R, LINE FEED 0242 * 0243 * CHANGE CALL TO THE INITIALIZATION ROUTINE TO A CRA 0244 * 0245 00150 0 02 00001 LDA INIT LOAD ADDRESS PLUS ONE OF CALL 0246 00151 0 07 00000 SUB C1 SUBTRACT ONE 0247 00152 0 04 00001 STA INIT AND SAVE 0248 00153 0 02 00075 LDA CRA LOAD CRA 0249 00154 -0 04 00001 STA* INIT STORE IN LOCATION OF CALL 0250 00155 0 01 00000 JMP JOB EXIT THROUGH JOB COMMAND PROCESSOR 0251 * 0252 * HERE TO FLAG AN ILLEGAL CONFIGURATION 0253 * 0254 00156 0 10 00000 IN06 JST TYPE PRINT MESSAGE 0255 00157 0 000217 DAC ILCM X 0256 00160 000000 HLT AND HALT 0257 * 0258 EJCT
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 7

0259 * 0260 * 0261 * DELETE LIBRARY FUNCTION ROUTINE 0262 * 0263 * CALLING SEQUENCE: 0264 * 0265 * JST DFUA ADDRESS OF MESSAGE COANTAINING FUNCTION 0266 * NAME(S) IN THE A REGISTER 0267 * ......RETURN IF YES ANSWER 0268 * 0269 * 0270 * A MESSAGE IS PRINTED ASKING THE USER IF HE WOULD LIKE TO 0271 * DELETE THE LIBRARY FUNCTION(S) WHOSE NAME(S) IS CONTAINED IN THE 0272 * MESSAGE. A LINE IS INPUTED FROM THE ASR, AND THE FIRST NON-BLANK 0273 * CHARACTER IS TESTED. IF IT IS A Y, RETURN IS MADE. IF IT IS A N, 0274 * THE ROUTINE JUMPS INTO INIT T0 SET SIT. IF THE FIRST NON-BLANK 0275 * CHARACTER IS OTHER THAN A Y OR A N, A MESSAGE IS PRINTED REQUESTING 0276 * A YES OR A NO ANSWER. 0277 * 0278 * 0279 00161 0 000000 DFUA DAC ** ENTRY 0280 00162 0 04 00166 STA DFID STORE FUNCTION NAME MESSAGE 0281 00163 0 10 00000 JST TYPE OUTPUT QUESTION PREFIX 0282 00164 0 000000 XAC DFQ X 0283 00165 0 10 00000 JST TYPE PRINT FUNCTION NAME 0284 00166 0 000000 DFID DAC ** X 0285 00167 0 10 00000 JST LFCR OUTPUT C/R, LINE FEED 0286 00170 0 02 00000 DF02 LDA C241 OUTPUT AN EXCAMATION POINT 0287 00171 0 10 00000 JST IPUT INPUT FROM THE ASR UNTIL A C/R 0288 00172 0 000000 XAC SBUF INPUT BUFFER 0289 00173 0 10 00000 JST GNBC GET THE FIRST NON-BLANK CHARACTER 0290 00174 0 11 00213 CAS C331 IS IT A 'Y' 0291 00175 0 01 00202 JMP DF01 NO-REQUEST A YES OR A NO 0292 00176 -0 01 00161 JMP* DFUA Y-ASSUME YES ANSWER-EXIT TO RESET LOW 0293 * POINTER 0294 00177 0 11 00212 CAS C316 IS IT A 'N' 0295 00200 100000 SKP NO-REQUEST A YES OR NO ANSWER 0296 00201 0 01 00047 JMP IN01 N-ASSUME ANSWER-JUMP TO SET HIGH POINTER 0297 00202 0 10 00000 DF01 JST TYPE NO-REQUEST A YES OR NO ANSWER 0298 00203 0 000000 XAC AYON X 0299 00204 0 01 00170 JMP DF02 LOOP TO INPUT ANSWER 0300 EJCT
* NAME BASIC-INIT-A DOC. 70181909000 REV. A PAGE 8

0301 * 0302 * 0303 * 0304 00205 0 000000 HMPK XAC PP12 ADDRESS OF LAST WORD OF MTKPAK 0305 00206 0 000000 IOSA XAC IPUT ADDRESS IN IOS PACKAGE 0306 00207 000000 HOA BSZ 1 0307 00210 010000 C4K OCT 10000 0308 00211 037777 C16K OCT 37777 0309 00212 000316 C316 OCT 316 ASCII N 0310 00213 000331 C331 OCT 331 ASCII Y 0311 00214 0 000000 ATQD XAC ATNQ ADDRESS OF ATN NAME MESSAGE 0312 00215 0 000000 SQQD XAC SQRQ ADDRESS OF SIN, COS, AND TAN NAME MESSAGE 0313 00216 0 000000 SCQD XAC SCTQ ADDRESS OF SQR NAME MESSAGE 0314 00217 144714 ILCM BCI 14,ILLEGAL CONFIGURATION-RELOAD 00220 146305 00221 143701 00222 146240 00223 141717 00224 147306 00225 144707 00226 152722 00227 140724 00230 144717 00231 147255 00232 151305 00233 146317 00234 140704 0315 00235 000000 OCT 0 0316 000236 CSRH EQU * USING LDR-APM, THIS WILL GENERATE THE LAST 0317 * CROSS SECTOR REFERENCE IN SECTOR ZERO 0318 * 0319 * 0320 * 0321 END ATND 000000E ATQD 000214 C1 000000E C10 000000E C16K 000211 C215 000000E C240 000000E C241 000000E C260 000000E C316 000212 C331 000213 C4K 000210 COSD 000000E CRA 000075 CSRH 000236 DELT 000000E DF01 000202 DF02 000170 DFID 000166 DFUA 000161 FINT 000000E GNBC 000000E HMPK 000205 HOA 000207 ILCM 000217 IN01 000047 IN02 000026 IN03 000062 IN04 000127 IN05 000100 IN06 000156 IN10 000050 INIT 000001 INTA 000000 IOSA 000206 IPUT 000000E JOB 000000E LFCR 000000E LODF 000000E PCVL 000000E PTB 000000E SCQD 000216 SCVL 000000E SIND 000000E SIT 000000E SQQD 000215 SQRD 000000E TAND 000000E TYPE 000000E 0000 WARNING OR ERROR FLAGS DAP-16 MOD 2 REV. C 01-26-71
Previous File   Multiple Pages   Next File