User Tools

Site Tools


cdc:nos2.source:nam5871:ndlstd

NDLSTD

Table Of Contents

Source Code

NDLSTD.txt
  1. *DECK NDLSTD
  2. IDENT NDLSTD
  3. ENTRY STD$STA
  4. ENTRY STD$RET
  5. ENTRY STDYES
  6. ENTRY STDNO
  7. ENTRY TFLAG
  8. EXT NEXLXID,SYNSECT,LEXSNC,LINELMT,NWORD
  9. EXT SYNTBL,LBLPNTR,TRACE,NDLDIAG,PRINTRC,LEXSCAN,NEXTYPE
  10. EXT NEXLENW,NEXLENG
  11. EXT SWITCHV
  12. STKLIMT EQU 64 SPACE ALLOCATED FOR PROCESSOR REQUEST STACK
  13. SNW EQU 13 CODE FOR LEXSCAN SCAN-NEXT-WORD REQUEST.
  14. ************************************************************************
  15. * * S T D $ S T A R T * *
  16. * *
  17. * ENTRY CONDITIONS: *
  18. * A CALL PARAMETER IS LOCATION OF BASE OF SWITCH VECTOR TO BE USED *
  19. * IN EXECUTING SUBROUTINE CALL INSTRUCTIONS FOR SEMANTIC PROCESSING.*
  20. * PRIOR TO CALL TO STD$START, LEXSCAN MUST HAVE BEEN CALLED TO SCAN *
  21. * THE 1ST SOURCE WORD AND IDENTIFY IT. *
  22. * *
  23. * EXTERNAL REFERENCES: *
  24. * SYNTBLE, TRACEM, AND LBLPTRS TABLES BUILT BY SYNGEN AND SEPARATELY*
  25. * COMPILED ARE EXTERNALLY DEFINED ARRAYS. *
  26. * SYNSECT IS AN EXTERNALLY DEFINED ITEM FROM WHICH STD OBTAINS INDEX*
  27. * VALUES FOR +SUBS INSTRUCTIONS. *
  28. * NEXTYPE IS AN EXTERNALLY DEFINED ITEM CONTAINING CODES FOR THE *
  29. * SYNTACTIC TYPE OF THE NEXT SOURCE WORD. *
  30. * DIAG IS THE DIAGNOSTIC MODULE OF ADL WHICH IS CALLED WHENEVER *
  31. * A DIAGNOSTIC INSTRUCTION IS EXECUTED. *
  32. * LEXSCAN IS AN ENTRY CALLED TO REQUEST THE IDENTIFICATION OF THE *
  33. * NEXT SOURCE WORD. *
  34. * LEXSNC IS THE ENTRY POINT CALLED TO REQUEST LEXSCAN TO SKIP TO *
  35. * THE NEXT SOURCE RECORD AND CONTINUE PROCESSING. *
  36. * *
  37. * EXIT CONDITIONS: *
  38. * STD EXISTS LOGICALLY AS A CO-ROUTINE, SO THERE IS NO LOGICAL EXIT.*
  39. * WHEN THE END OF THE SOURCE STREAM IS ENCOUNTERED, HOWEVER, A *
  40. * SEMANTIC PROCESSOR MAY CALL STD$RETURN, RESULTING IN A RETURN TO *
  41. * WHOMEVER CALLED STD$START. *
  42. * *
  43. * ERROR CONDITIONS: *
  44. * IF A 03777 INSTRUCTION IS ENCOUNTERED, IT SIGNIFIES A REFERENCE *
  45. * TO AN UNDEFINED SYMBOL IN THE SYNGEN INPUT SOURCE. STD WILL CAUSE *
  46. * A MODE 1 ERROR IF SUCH AN INSTRUCTION IS EXECUTED. *
  47. * A 13777 INSTRUCTION IS A REFERENCE TO AN UNDEFINED SEMANTIC SUB- *
  48. * ROUTINE IN THE SOURCE INPUT TO SYNGEN AND CAUSES STD TO GENERATE A*
  49. * MODE 1 ERROR. *
  50. * IF THE STD PROCESSOR REQUEST STACK UNDERFLOWS, A COMPILER ERROR *
  51. * MESSAGE IS ISSUED AND THE JOB ABORTED. *
  52. * IF THE STD PROCESSOR REQUEST STACK OVERFLOWS, A COMPILER ERROR *
  53. * MESSAGE IS ISSUED AND THE JOB ABORTED. *
  54. ************************************************************************
  55. STD$RET DATA 0 ENTRY FOR RETURN FROM SEMANTIC ROUTINES.
  56. STD$STA DATA 0 ENTRY FOR STARTING SYNTAX ANALYSIS.
  57. SA1 DIAGSTD
  58. MX2 24
  59. LX2 54
  60. BX6 -X2*X1
  61. SA6 DIAGSTD
  62. SA1 NDLDIAG BIND THE LOCATION OF THE
  63. LX1 30
  64. SA2 DIAGSTD APPROPRIATE DIAGNOSTIC RTN
  65. BX6 X1+X2
  66. SA6 DIAGSTD
  67. SA4 SUBCALL+1 FETCH CODE SKELETON FOR SWITCH CALL.
  68. SA1 SWITCHV
  69. MX6 42 LOCATION OF BASE OF SWITCH VECTOR
  70. BX4 X6*X4
  71. BX6 X1+X4 ADD ADDRESS OF SWITCH TO CODE.
  72. MX7 0
  73. SA6 A4 STORE WORD OF CODE CONTAINING SWITCH ADDR.
  74. SA7 INSTWD INITIALIZE NEXT-INSTRUCTION-WORD-POINTER.
  75. SX6 1
  76. SA7 TRANWD INITIALIZE NEXT-TRANSFER-WORD-POINTER.
  77. SA6 TRANPAR INITIALIZE NEXT-TRANSFER-PARCEL-POINTER.
  78. SA1 LBLPNTR FETCH POINTER TO FIRST SYNTBL SECTION
  79. IX1 X1+X6
  80. SA1 X1
  81. SX6 -1
  82. SA7 INSTPAR INITIALIZE NEXT-INSTRUCTION-PARCEL-POINTER.
  83. SA6 STKPTR INITIALIZE PTR TO STD"S CALL STACK.
  84. BX6 X1
  85. SA7 STKPTR INITIALIZE PROCESSOR REQUEST STACK LEVEL.
  86. SA6 SECTAD SAVE POINTER TO 1ST SYNTBLE SECTION.
  87. EQ GETINST FETCH FIRST SYNTBLE INSTRUCTION.
  88. STDNO DATA 0
  89. GETINST SA1 INSTWD FETCH NEXT-INSTRUCTION-WORD-POINTER.
  90. SA2 INSTPAR FETCH NEXT-INSTRUCTION-PARCEL-POINTER.
  91. SA4 TFLAG CHECK TRACE REQUEST FLAG.
  92. ZR X4,NOTOUT IF ZERO, PUT OUT NO TRACE.
  93. SX5 X4-1
  94. ZR X5,TROUT IF TFLAG = 1 THEN TRACE IS PUT OUT.
  95. SX7 B0 IF TFLAG > 1 THEN TFLAG IS RESET AND NO
  96. SA7 A4 TRACE IS PUT OUT.
  97. SA1 INSTWD
  98. EQ NOTOUT
  99. TROUT LX1 2 USE THE WORD AND PARCEL RELATIVE VALUES TO
  100. IX5 X1+X2 OBTAIN AN INDEX INTO TRACEM TABLE.
  101. SA1 LINECNT
  102. SA4 LINELMT
  103. IX7 X4-X1
  104. NZ X7,TLINE TEST FOR TRACE LIMIT EXCEEDED.
  105. SA7 LINECNT
  106. SX7 -1
  107. SA7 TFLAG
  108. SA1 INSTWD
  109. EQ NOTOUT
  110. TLINE SX7 X1+1
  111. SA7 LINECNT
  112. SB3 1
  113. SA4 TRACE FETCH APPROPRIATE TRACE MESSAGE
  114. IX4 X4+X5
  115. SA4 X4
  116. BX6 X4
  117. SA6 TMSG+1 STORE TRACE MESSAGE IN SKELETON WSA.
  118. SA3 NEXLENW
  119. SA2 NEXLENG
  120. SX5 X3-5
  121. SA4 NWORD STORE CONTENTS OF NEXWORD IN TRACE MESSAGE.
  122. NG X5,LT4WORDS MAX OF 4 WORDS LISTED ON TRACE.
  123. SX3 4
  124. LT4WORDS SB2 X3-1
  125. SX7 X2+40
  126. SB4 TMSG+3
  127. SA7 TLG
  128. LE B2,ALLNEXT
  129. SB7 1
  130. LOOPNEX BX6 X4
  131. SA4 A4+B3
  132. SA6 B4+B7
  133. SB2 B2-B3
  134. SB4 B4+B7
  135. NE B2,LOOPNEX
  136. ALLNEXT BX6 X4
  137. SA6 B4+B3
  138. SA3 NEXLXID FETCH NEXLXID.
  139. MX7 30
  140. RJ BINCON CONVERT TO DISPLAY CODE.
  141. SA4 =5LLXID=
  142. BX6 X4+X6
  143. SA6 TMSG+3
  144. SA3 NEXTYPE FETCH NEXTYPE.
  145. RJ BINCON CONVERT TO DISPLAY CODE.
  146. SA4 =5LTYPE=
  147. BX6 X4+X6
  148. SA6 TMSG+2
  149. SA1 AWRITE
  150. RJ PRINTRC
  151. SA1 INSTWD
  152. SA2 INSTPAR
  153. NOTOUT SA3 SYNTBL
  154. IX3 X3+X1
  155. SA3 X3
  156. BX6 X2
  157. MX0 15 MASK FOR INSTRUCTION.
  158. LX6 4 16 * PARCEL.
  159. SB1 X6
  160. SB7 X2+1 INCREMENT NEXT-INSTRUCTION-PARCEL-POINTER.
  161. SB2 X2
  162. SB2 B1-B2 15 * PARCEL
  163. SX2 B7-4
  164. LX6 X3,B2 LEFT-JUSTIFY PROPER PARCEL OF SYNTBLE WORD.
  165. BX5 X0*X6 ISOLATE INSTRUCTION.
  166. NZ X2,SETPAR IF NEXT PARCEL IS IN THE NEXT SYNTBLE WORD
  167. SB7 B0 THEN NEXT-INSTRUCTION-PARCEL-POINTER MUST
  168. SX6 X1+1 BE SET TO 1ST PARCEL OF NEXT SYNTBLE WORD
  169. SA6 A1 AND NEXT-INSTRUCTION-WORD-POINTER INCRMENTD
  170. SETPAR SX7 B7
  171. MX1 56 MASK FOR SEPARATING OPERATOR AND OPERAND.
  172. SA7 A2 STORE NEXT-INSTRUCTION-PARCEL-POINTER.
  173. LX1 56
  174. BX6 X1*X5 PICK OFF OPERAND.
  175. BX2 -X1*X5 PICK OFF OPERATOR.
  176. AX6 45
  177. LX2 4
  178. SA6 OPERAND SAVE OPERAND.
  179. SB1 X2 SAVE OPERATOR IN B1 FOR USE IN A SWITCH
  180. JP B1+OPRATOR SWITCH TO PROPER OPERATOR ROUTINE.
  181. OPRATOR EQ DRIVEREQ OPERATOR = 0.
  182. EQ DIAGNOS OPERATOR = 1.
  183. EQ SUBCALL OPERATOR = 2.
  184. EQ KEY$ OPERATOR = 3.
  185. EQ KEY OPERATOR = 4.
  186. EQ LBLCALL OPERATOR = 5.
  187. EQ ERROP OPERATOR = 6.
  188. EQ ERROP OPERATOR = 7.
  189. EQ SUBLBL OPERATOR = 8.
  190. EQ SUBLBL OPERATOR = 9.
  191. EQ SUBLBL OPERATOR = 10.
  192. EQ SUBLBL OPERATOR = 11.
  193. EQ TRANSF OPERATOR = 12.
  194. EQ TRANSF OPERATOR = 13.
  195. EQ TRANSF OPERATOR = 14.
  196. TRANSF MX0 58 LAST 2 BITS OF OPERATOR TELL WHICH PARCEL.
  197. SA5 SECTAD GET ADDRESS OF CURRENT SYNTBLE SECTION.
  198. BX7 -X0*X2
  199. SA7 TRANPAR SET NEXT-TRANSFER-PARCEL-POINTER.
  200. IX6 X6+X5 OPERAND VALUE IS NEXT-TRANSFER-WORD-
  201. SA6 TRANWD POINTER VALUE RELATIVE TO BASE OF SECTION.
  202. EQ GETINST FETCH NEXT INSTRUCTION.
  203. SUBLBL MX0 58 LAST 2 BITS OF OPERATOR TELL WHICH PARCEL.
  204. SA5 SECTAD GET BASE ADDRESS OF CURRENT LABELLED SECT.
  205. BX7 -X0*X2
  206. SA7 A2 SET NEXT-INSTRUCTION-PARCEL-POINTER.
  207. IX6 X5+X6
  208. SA6 A1 SET NEXT-INSTRUCTION-WORD-POINTER.
  209. EQ GETINST FETCH NEXT INSTRUCTION.
  210. LBLCALL SA2 STKPTR FETCH DEPTH OF PROCESSOR REQUEST STACK.
  211. SX3 X2-STKLIMT CHECK DEPTH OF STACK AGAINST ALLOCATED SIZE
  212. NZ X3,STKOK IF STACK OVERFLOW OCCURS, PRINT DAYFILE
  213. MESSAGE OVRFLOW MESSAGE AND ABORT JOB.
  214. ABORT
  215. STKOK SX4 X2+1 PUCH DOWN STACK BY INCREMENTING DEPTH-PTR.
  216. SA5 SECTAD FETCH POINTER TO BASE OF CURRENT SYNTBLE
  217. SECTION.
  218. SA1 A1 FETCH NEXT-INSTRUCTION-WORD-POINTER.
  219. LX5 2
  220. SA3 TRANWD FETCH NEXT-TRANSFER-WORD-POINTER.
  221. BX5 X5+X7 COMBINE SECTADD WITH NEXT-PARCEL-POINTER.
  222. SA2 TRANPAR FETCH NEXT-TRANSFER-PARCEL-POINTER.
  223. LX5 18
  224. BX5 X1+X5 INSERT NEXT-INSTRUCTION-WORD POINTER.
  225. LX2 18 POSITION NEXT-TRANSFER-PARCEL-POINTER.
  226. BX1 X2+X3
  227. LX5 20
  228. IX7 X5+X1 PLACE NEXT-INSTRUCTION AND NEXT-TRANSFER
  229. SA7 STDSTK+X4 POINTERS ON TOP OF PROCESSOR REQUEST STACK.
  230. SA2 LBLPNTR USE OPERAND AS INDEX INTO LBLPTR TABLE
  231. IX2 X2+X6
  232. SA2 X2
  233. BX7 X4
  234. MX6 0 START OF NEW LABELLED SECTION IS WORD BNDRY
  235. SA7 STKPTR STORE NEW DEPTH-POINTER VALUE.
  236. SA6 INSTPAR STORE NEW NEXT-INSTRUCTION-PARCEL-POINTER.
  237. BX7 X2
  238. SA7 SECTAD SAVE POINTER TO NEW LABELLED SECTION.
  239. SA7 INSTWD STORE NEW NEXT-INSTRUCTIO-WORD-POINTER.
  240. EQ GETINST FETCH NEXT INSTRUCTION.
  241. KEY SA1 NEXLXID FETCH LEXID OF NEXT SOURCE WORD, AND
  242. MX0 49 COMPARE 11 LOW-ORDER BITS WITH OPERAND
  243. BX1 -X0*X1 VALUE.
  244. IX4 X6-X1
  245. NZ X4,GETINST IF SOURCE WORD IS NOT THE SPECIFIC KEYWORD
  246. TESTED FOR, THEN GO EXECUTE NEXT SYNTBLE
  247. INSTRUCTION.
  248. RJ LEXSCAN IF SOURCE = KEYWORD BEING TESTED FOR, CALL
  249. LEXSCAN TO ADVANCE IN SOURCE STREAM AND
  250. EQ GETINST THEN GO EXECUTE THE NEXT SYNTBLE INSTRUCT.
  251. KEY$ SA1 NEXLXID FETCH LEXID OF NEXT SOURCE WORD AND COMPARE
  252. MX0 49 11 LOW-ORDER BITS WITH OPERAND VALUE.
  253. BX1 -X0*X1
  254. IX4 X6-X1
  255. NZ X4,GETINST IF NOT THE KEYWORD THEN GO EXECUTE THE NEXT
  256. SYNTBLE INSTRUCTION.
  257. RJ LEXSCAN IF SOURCE = KEYWORD BEING TESTED FOR, CALL
  258. LEXSCAN TO ADVANCE IN SOURCE STREAM AND
  259. EQ STDYES+1 JUMP TO NEXT-TRANSFER-POINT.
  260. SUBCALL SB1 X6 OPERAND USED AS INDEX INTO USER"S SWITCH
  261. VECTOR TO CALL A SEMANTIC PROCESSING RTN.
  262. SB4 3777B TEST FOR A REFERENCE TO A SUBROUTINE WHICH
  263. SX1 B1
  264. EQ B1,B4,GENMODE WAS UNDEFINED AT SYNGEN TIME.
  265. JP B0+0 THIS CODE WILL BE MODIFIED AT EXECUTION.
  266. DIAGNOS SA1 OPNDADD PASS OPERAND AS PARAMETER IN CALL TO THE
  267. DIAGSTD VFD 6/1,54/0 DIAGNOSTIC MODULE
  268. EQ GETINST FETCH NEXT INSTRUCTION.
  269. DRIVEREQ ZR X5,GETINST INSTRUCTION PARCEL OF ZERO TREATED AS NO-OP
  270. SX4 X6-3
  271. ZR X4,SUBS IF OPERAND IS 3 THEN INSTRUCTION IS +SUBS.
  272. PL X4,AMBIG ELSE MAY BE EITHER TYPE CHECK OR SCAN REQ.
  273. LX4 59 SHIFT TO FIND WHETHER OPERAND = YES OR NO.
  274. SA1 STKPTR FETCH PTR TO TOP OF PROCESSOR REQUEST STACK
  275. SB1 X1
  276. SA3 STDSTK+X1 FETCH TOP OF STACK.
  277. GE B1,OKSTK IF STACK UNDERFLOW OCCURS, ABORT WITH A
  278. MESSAGE UNDRFLO DAYFILE MESSAGE.
  279. ABORT
  280. OKSTK LX3 20
  281. MX0 2 MASK FOR PARCEL POINTER.
  282. SX7 X3 ISOLATE BASE ADDRESS OF SYNTBLE SECTION.
  283. PL X4,NO
  284. LX3 20 POSITION TO YES-RETURN POINTERS.
  285. NO LX0 20
  286. SA7 SECTAD SAVE BASE ADDRESS OF SECTION TO WHICH
  287. CONTROL IS RETURNING.
  288. LX3 20 POSITION TO YES OR NO RETURN POINTERS.
  289. SX6 X3 ISOLATE WORD POINTER.
  290. BX7 X3*X0 ISOLATE PARCEL POINTER.
  291. SA6 INSTWD STORE NEXT-INSTRUCTION-WORD-POINTER.
  292. AX7 18
  293. SA7 INSTPAR STORE NEXT-INSTRUCTION-PARCEL-POINTER.
  294. PL X4,SETRANS FOR YES-RETURN, SET TRANSFER POINTERS = 0.
  295. SX6 B0
  296. MX7 0
  297. EQ STORTRN
  298. SETRANS LX3 20 FOR NO-RETURN, RESET TRANSFER POINTERS WITH
  299. SX6 X3 STACKED VALUES.
  300. BX7 X3*X0
  301. STORTRN SA6 TRANWD STORE NEXT-TRANSFER-WORD-POINTER.
  302. AX7 18
  303. SX6 X1-1 POP REQUEST STACK.
  304. SA7 TRANPAR STORE NEXT-TRANSFER-PARCEL-POINTER.
  305. SA6 STKPTR
  306. EQ GETINST FETCH NEXT INSTRUCTION.
  307. SUBS SA2 SYNSECT
  308. USE VALUE ON SYNSECT AS OPERAND FOR A
  309. BX6 X2 LABEL CALL.
  310. ZR X2,GENMODE 0 IS AN ILLEGAL INDEX VALUE FOR LBLPTRS
  311. ARRAY.
  312. EQ LBLCALL
  313. AMBIG SB1 X6-100 TEST FOR SCAN REQUEST OR TYPE CHECK.
  314. LT B1,SCANREQ OPERAND < 100 MEANS POSSIBLE SCAN REQUEST.
  315. SB4 3777B-100 TEST FOR UNDEFINED REFERENCE AT SYNGEN
  316. EQ B1,B4,GENMODE TIME WHICH RESULTED IN AN INSTRUCTION
  317. DESIGNED TO GENERATE A MODE 1 ERROR.
  318. IN THE FOLLOWING TEST, THE TEST IS TRUE
  319. (RESULTING IN A CALL TO STDYES) IF THE TWO
  320. VALUES IN NEXTYPE AND OPERAND ARE EQUAL OR
  321. NEXTYPE SPECIFIES A TYPE INCLUDED IN A MORE
  322. GENERAL TYPE CODED IN OPERAND.
  323. SA4 NEXTYPE FETCH SYNTACTIC-TYPE CODE OF NEXT SOURCE
  324. SB2 X4-100 WORD AND COMPARE WITH OPERAND VALUE. IF THE
  325. EQ B1,B2,EQLTYPE VALUES ARE NOT EQUAL HAVE TO GO THROUGH
  326. JP B1+TYPECHK SWITCH TO COMPLETE TYPE TEST.
  327. TYPECHK EQ GETINST OPERAND = 100, TYPE TESTED FOR = KEYWORD.
  328. EQ GETINST OPERAND = 101, TYPE TESTED FOR = NAME.
  329. GE B2,B1,EQLTYPE OPERAND = 102, TYPE TESTED FOR = ANY
  330. EQ GETINST LITERAL STRING.
  331. EQ NONNUM OPERAND = 103, TYPE TESTED FOR = NONNUMERIC
  332. EQ GETINST OPERAND = 104, TYPE TESTED FOR = CHAR MASK.
  333. EQ GETINST OPERAND = 105, TYPE TESTED FOR = BIT MASK.
  334. GE B2,B1,EQLTYPE OPERAND = 106, TYPE TESTED FOR = ANY
  335. EQ GETINST NUMERIC TYPE
  336. EQ GETINST OPERAND = 107, TYPE TESTED FOR = INTEGER.
  337. EQ GETINST OPERAND = 108, TYPE TESTED FOR = FIXED PT.
  338. EQ GETINST OPERAND = 109, TYPE TESTED FOR = COMPLEX.
  339. GE B2,B1,EQLTYPE OPERAND = 110, TYPE TESTED FOR = EITHER
  340. EQ GETINST SINGLE OR DOUBLE PREC FLOATING POINT.
  341. EQ GETINST OPERAND = 111, TYPE TESTED FOR = SINGLE.
  342. EQ GETINST OPERAND = 112, TYPE TESTED FOR = DOUBLE.
  343. EQLTYPE RJ LEXSCAN THE NEXT SOURCE WORD IS THE TYPE TESTED FOR
  344. EQ STDYES+1 ADVANCE IN SOURCE AND JMP TO NEXT TRANSFER.
  345. NONNUM LT B2,B1,GETINST NEXT SOURCE TYPE IS NON-NUMERIC IF THE
  346. SB3 106-100 CODE < 106 AND > 102
  347. LT B2,B3,EQLTYPE
  348. EQ GETINST
  349. SCANREQ SB2 X6-SNW IF SCAN REQUEST IS +SNC THEN CALL LEXSNC TO
  350. GT B2,B0,SNCREQ GET THE NEXT SOURCE RECORD.
  351. EQ B2,B0,SNWREQ IF +SNW THEN CALL LEXSCAN TO GET THE NEXT
  352. SOURCE WORD.
  353. SA4 NEXTYPE REQUEST IS +EOT OR +EOF. IF NEXTYPE IS
  354. BX4 X4-X6 EITHER EOT OR EOF AND THE REQUESTED TYPE IS
  355. NZ X4,GETINST DIFFERENT , GO TO STDNO
  356. EQ STDYES+1 THE SAME , GO TO STDYES
  357. SNWREQ RJ LEXSCAN SCAN NEXT SOURCE WORD.
  358. EQ GETINST FETCH THE NEXT INSTRUCTION PARCEL.
  359. SNCREQ RJ LEXSNC IF REQUEST IS +SNC, CALL LEXSNC TO GET THE
  360. 1ST SOURCE WORD IN THE NEXT SOURCE RECORD.
  361. EQ GETINST FETCH THE NEXT INSTRUCTION PARCEL.
  362. STDYES DATA 0
  363. SA1 TRANWD FETCH NEXT-TRANSFER-WORD-POINTER.
  364. SA2 TRANPAR FETCH NEXT-TRANSFER-PARCEL-POINTER.
  365. MX6 0
  366. BX7 X1
  367. SA6 TRANWD SET NEXT-TRANSFER-WORD-POINTER TO ZERO.
  368. SA7 INSTWD STORE NEW VALUE IN NEXT-INSTRUCTION-WORD.
  369. SA6 A2 SET NEXT-TRANSFER-PARCEL-POINTER TO ZERO.
  370. BX7 X2
  371. SA7 INSTPAR STORE NEW VALUE IN NEXT-INSTRUCTION-PARCEL.
  372. EQ GETINST FETCH NEXT INSTRUCTION.
  373. GENMODE EQ 377777B GENERATES A MODE ERROR FOR UNDEFINED REF-
  374. ERENCE INSTRUCTIONS.
  375. ERROP ABORT
  376. BINCON DATA 0 CONVERTS A 12-BIT, UNSIGNED, BINARY INTEGER
  377. MX0 48 IN X3 TO DISPLAY-CODED OCTAL,LEFT-JUSTIFIED
  378. BX3 -X0*X3 IN X6 AND PADDED WITH 1 BLANK TO MAKE 5
  379. NZ X3,NONZERO CHARACTERS RETURNED IN X6.
  380. SA4 =5R 0
  381. BX6 X4
  382. EQ BINCON
  383. NONZERO MX0 57
  384. SB7 4
  385. MX6 0
  386. SB6 -1
  387. LX3 48
  388. SHIFTL LX3 3
  389. BX4 -X0*X3
  390. SX5 X4+33B
  391. SB7 B7+B6
  392. BX6 X6+X5
  393. BX3 X3*X0
  394. LX6 6
  395. NE B7,SHIFTL
  396. SX5 55B
  397. BX6 X6+X5
  398. EQ BINCON
  399. OPNDADD CON OPERAND POINTER TO OPERAND FOR PARAMETER PASSING
  400. CON NULL,NULL END OF PARAMETER LIST FOR DIAG
  401. NULL DATA 0 DUMMY PARAMETER FOR DIAG
  402. LINECNT BSSZ 1
  403. TFLAG DATA 0 FLAG FOR TRACE REQUEST
  404. INSTWD BSS 1 NEXT-INSTRUCTION-WORD-POINTER
  405. INSTPAR BSS 1 NEXT-INSTRUCTION-PARCEL-POINTER
  406. TRANWD BSS 1 NEXT-TRANSFER-WORD-POINTER
  407. TRANPAR BSS 1 NEXT-TRANSFER-PARCEL-POINTER
  408. STKPTR BSS 1 POINTER TO TOP OF PROCESSOR REQUEST STACK
  409. OPERAND BSS 1 VALUE OF CURRENT OPERAND
  410. SECTAD BSS 1 POINTER TO 1ST WORD OF CURRENT SYNTBLE SECT
  411. STDSTK BSS STKLIMT SPACE FOR PROCESSOR REQUEST STACK
  412. ZEROES DATA 10H0000000000
  413. BLANKS DATA 10H
  414. TMSG DIS ,* INSTRUCT= *
  415. DATA 40H
  416. OVRFLOW DIS ,* COMPILER ERROR - STD STACK OVERFLOW *
  417. VFD 48/8H ,12/0
  418. UNDRFLO DIS ,* COMPILER ERROR - STD STACK UNDERFLOW*
  419. VFD 48/8H ,12/0
  420. AWRITE CON TMSG,TLG,TRC PARAMETER LIST FOR WRITE
  421. TLG DATA 110 NUMBER CHARS IN TRACE OUTPUT LINE.
  422. TRC BSS 1 I/O RETURN CODE FROM WRITE
  423. END
cdc/nos2.source/nam5871/ndlstd.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator