Table of Contents

1DL

Table Of Contents

  • [00009] 1DL - DISPLAY OVERLAY LOADER.
  • [00011] DISPLAY OVERLAY LOADER.
  • [00093] MAIN PROGRAM.
  • [00095] LDO - MAIN PROGRAM.
  • [00223] SFO - SEARCH FOR OVERLAY.
  • [00334] MSR - MASS STORAGE ERROR PROCESSOR FOR *COMPRNS*.
  • [00371] SPL - SEARCH PERIPHERAL LIBRARY DIRECTORY.
  • [00449] PRS - PRESET PROGRAM.
  • [00481] TCHS - CHANNEL TABLE.

Source Code

1DL.txt
  1. IDENT 1DL,LDO
  2. PERIPH
  3. BASE MIXED
  4. SST
  5. EOR$ EQU 1 DEFINE EOR POSITION ADVANCE
  6. MSR$ EQU 1 DEFINE ERROR PROCESSING FOR *RNS*
  7. *COMMENT 1DL - DISPLAY OVERLAY LOADER.
  8. COMMENT COPYRIGHT CONTROL DATA SYSTEMS INC. 1992.
  9. TITLE 1DL - DISPLAY OVERLAY LOADER.
  10. SPACE 4
  11. *** 1DL - DISPLAY OVERLAY LOADER.
  12. * G. R. MANSFIELD. 70/12/11.
  13. SPACE 4
  14. *** 1DL MAY BE CALLED TO LOAD OVERLAYS FROM MASS STORAGE
  15. * FOR DISPLAY PROGRAMS. THE OVERLAYS ARE ASSUMED TO BEGIN AT
  16. * THE MASS STORAGE ADDRESS SPECIFIED BY THE FIRST OVERLAY
  17. * WHICH HAS THE SAME FIRST 2 CHARACTERS OF THE REQUESTED
  18. * OVERLAY AND CONTINUE IN A CONTIGUOUS BLOCK,
  19. SPACE 4
  20. *** CALL.
  21. *
  22. *
  23. *T 18/ *1DL*,6/ CP,12/ CH,24/ NAME
  24. * CP CONTROL POINT NUMBER
  25. * CH CHANNEL FOR TRANSMISSION OF OVERLAY
  26. * IF CH IS GREATER THAN 77 THEN A CM TRANSFER WILL BE
  27. * SELECTED TO THE RECEIVING PPS MSG. BUFFER. CH MUST BE
  28. * THE RECEIVING PPS INPUT REGISTER ADDRESS.
  29. * NAME OVERLAY NAME
  30. SPACE 4
  31. *** COMMUNICATION.
  32. *
  33. *
  34. * WHEN 1DL IS READY TO TRANSMIT THE OVERLAY TO THE
  35. * CALLING PROGRAM, BYTE 2 OF THE INPUT REGISTER IS SET TO
  36. * 7777B. 1DL THEN WAITS FOR BYTE 2 OF THE INPUT REGISTER TO
  37. * BE SET TO 0. IF THIS DOES NOT TAKE PLACE WITHIN 1 SECOND,
  38. * 1DL EXITS TO PP RESIDENT, THUS ABORTING THE OVERLAY LOAD.
  39. * IF A CM TRANSFER IS SELECTED, THE FOLLOWING ADDITIONAL
  40. * INTERFACE REQUIREMENTS MUST BE FOLLOWED.
  41. * 1. AFTER 1DL READY TO SEND IS DETECTED, RECEIVER MUST
  42. * ZERO HIS OUTPUT REGISTER AND THEN SET BYTE 2 OF HIS
  43. * INPUT REGISTER TO ZERO. -READY TO RECEIVE
  44. * 2. RECEIVER READS HIS OUTPUT REGISTER. IF BYTE 4 IS
  45. * ZERO, DELAY 128 MICROSECS AND READ AGAIN. IF BYTE
  46. * 4 IS NON-ZERO THE LOWER 6 BITS CONTAIN THE BLOCK
  47. * WORD-COUNT AND THE UPPER 6 BITS CONTAIN A FLAG.
  48. * THE FLAG INDICATES DATA IS IN THE MSG. BUFFER.
  49. * IF THE WORD COUNT IS ZERO,THE LAST BLOCK HAS ALREADY
  50. * BEEN RECEIVED AND THE TRANSFER IS COMPLETE.
  51. * 3 IF THE WORD-COUNT IS NON-ZERO, READ FROM THE MSG.
  52. * BUFFER (WORD-COUNT) WORDS. OTHERWISE, END.
  53. * 4. ZERO THE OUTPUT REGISTER TO INDICATE TO 1DL THAT
  54. * THE DATA HAS BEEN REMOVED FROM THE BUFFER AND GO TO
  55. * STEP 2.
  56. *
  57. * *WARNING* - DIRECT CHANNEL TRANSFERS ARE LIMITED TO *MXPC*
  58. * SECTORS; ANY DATA BEYOND THIS LIMIT IS IGNORED. ON CM
  59. * TRANSFERS AFTER *MXPC* SECTORS, IT IS POSSIBLE FOR *1DL* TO
  60. * BE TRAPPED BY A STORAGE MOVE OR DROP. IF A PAUSE OCCURS,
  61. * THE CM TRANSFER PROTOCOL (IN WHICH THE TWO PP-S MONITOR
  62. * EACH OTHER-S OUTPUT REGISTERS) WILL BREAK DOWN. SINCE
  63. * *1DL* CANNOT TELL WHETHER OR NOT A PAUSE ACTUALLY OCCURRED,
  64. * *1DL* MUST THEREFORE RESYNCHRONIZE THE TRANSFER AFTER EACH
  65. * *MXPC* SECTORS. *1DL* WILL DO THIS BY STARTING OVER WITH
  66. * THE INITIAL PROTOCOL (*1DL* SETTING BYTE 2 OF ITS INPUT
  67. * REGISTER SET TO 7777B AND THE CALLING PP SETTING IT TO ZERO).
  68. * THEREFORE, THE CALLING PP MUST BE PREPARED TO PAUSE (IF *1DL*
  69. * PAUSES) AND TO RESYNCHRONIZE THE TRANSFER (IN ANY EVENT)
  70. * AFTER EACH *MXPC* SECTORS ARE TRANSFERRED.
  71. SPACE 4
  72. *CALL COMPCHI
  73. *CALL COMPMAC
  74. *CALL COMSMSP
  75. *CALL COMSPIM
  76. SPACE 4
  77. **** DIRECT LOCATION ASSIGNMENTS.
  78.  
  79.  
  80. T8 EQU 16 *7SE* PARAMETER WORD
  81. CN EQU 20 CM WORD BUFFER (5 LOCATIONS)
  82. OV EQU 25 OVERLAY NAME
  83. BO EQU 26 BUFFER OVERFLOW
  84. TN EQU 30 - 34 TRANSFER DIRECT CELLS
  85. CW EQU 40 - 44 CM TRANSFER CONTROL WORD
  86. ****
  87. SPACE 4
  88. * ASSEMBLY CONSTANT.
  89.  
  90.  
  91. CH EQU CHDS TRANSMISSION CHANNEL
  92. WT EQU 6 CM WORDS PER CM TRANSFER
  93. TITLE MAIN PROGRAM.
  94. LDO SPACE 4
  95. ** LDO - MAIN PROGRAM.
  96.  
  97.  
  98. ORG PPFW
  99. LDO RJM PRS PRESET PROGRAM
  100. LDN 0
  101. RJM SFO SEARCH FOR OVERLAY
  102. NJN LDO.1 IF FOUND
  103. LJM DPP
  104.  
  105. * INITIATE TRANSMISSION.
  106.  
  107. LDO.1 PAUSE NE
  108. AOD IR+2
  109. STD TN SAVE CHANNEL OR CM FLAG (IF CM THE OA)
  110. LDO0.2 LCN 0 SET TRANSMIT REQUEST
  111. STD IR+2
  112. STD TN+1 SET PRIMARY TIMEOUT COUNTER
  113. LDN 3
  114. STD TN+2 SET SECONDARY TIMEOUT COUNTER
  115. LDD IA
  116. CWD IR
  117. LDO1 SOD TN+1
  118. NJN LDO1.1 IF TIME NOT UP YET
  119. SOD TN+2
  120. ZJN LDO2 IF TIME UP
  121. LCN 0
  122. STD TN+1 RESET PRIMARY TIMEOUT COUNTER
  123. LDO1.1 LDC 160
  124. LDOA EQU *-2
  125. SBN 1
  126. NJN *-1
  127. LDD IA READ RESPONSE
  128. CRD CM
  129. LDD CM+2
  130. NJN LDO1 IF RECEIVE NOT READY
  131.  
  132.  
  133. * TRANSMIT OVERLAY.
  134.  
  135. LDD TN
  136. SHN -6
  137. NJN LDO3 IF CM TRANSFER DESIRED
  138. LDM BUF+4 FORM PP WORD COUNT
  139. SHN 2
  140. ADM BUF+4
  141. IJM *,CH WAIT FOR ACTIVE CHANNEL
  142. OAM BUF,CH OUTPUT OVERLAY
  143. FJM *,CH
  144. DCN CH+40
  145.  
  146. DPP MONITOR DPPM DROP PP
  147. LJM PPR EXIT TO PP RESIDENT
  148.  
  149. * CLEAR READY TO SEND FLAG AND CHANGE THIRD CHARACTER OF NAME
  150. * SO THAT THE RECEIVING PPU FIGURES OUT *1DL* IS GOING TO DROP.
  151.  
  152. LDO2 LDN 0
  153. STD IR+2
  154. LDD IR+1 CHANGE NAME
  155. LPN 77
  156. STD IR+1
  157. LDD IA
  158. CWD IR
  159. LCN 0 DELAY
  160. SBN 1
  161. NJN *-1
  162. UJN DPP
  163.  
  164. LDO3 LDC 4000+WT INITIALIZE TRANSFER COUNT
  165. STD CW+4
  166. LDD TN SAVE MESSAGE BUFFER ADDRESS
  167. ADN 1
  168. STD TN+1
  169. LDM BUF+4 SET WORD COUNT
  170. STD TN+2
  171. LDN WT SET WORDS PER TRANSFER
  172. STD TN+3
  173. LDO4 LDD TN+2 CHECK LAST BLOCK
  174. SBD TN+3
  175. PJN LDO5 IF MORE THAN WT WORDS LEFT
  176. RAD CW+4 UPDATE WORD COUNT IN BLOCK
  177. LPN 77
  178. ZJN LDO8 IF END OF BUFFER / DATA
  179. LDO5 LDN 77 DELAY
  180. SBN 1
  181. NJN *-1
  182. LDD TN
  183. CRD CM
  184. LDD CM+4
  185. NJN LDO5 IF NOT READY TO SEND
  186. LDD TN+1
  187. CWM BUF,TN+3 TRANSFER BLOCK
  188. LDOB EQU *-1
  189. SBN WT+1
  190. CWD CW SET DATA READY
  191. LDN WT*5 UPDATE BLOCK ADDRESS
  192. RAM LDOB
  193. LDD CW+4
  194. LPN 77
  195. NJN LDO7 IF NOT END OF TRANSFER
  196. LDO6 LJM DPP
  197.  
  198. LDO7 LCN WT
  199. RAD TN+2
  200. PJN LDO4 IF STILL MORE WORDS TO TRANSFER
  201. LDO8 LDD BO
  202. NJN LDO9 IF BUFFER OVERFLOW
  203. LDC 4000 SET NULL TRANSFER
  204. STD CW+4
  205. UJN LDO5
  206.  
  207. LDO9 STM BUF+4 SET REMAINING WORD COUNT
  208. LDN 0 CLEAR BUFFER OVERFLOW
  209. STD BO
  210. PSN
  211. * UJN LDO10 (CM RESIDENT OVERLAY)
  212. LDOC EQU *-1
  213. SETMS READSYS
  214. LDC BUF+5
  215. STM LDOB
  216. SBN 2 (BUF+3)
  217. STD CN PPU ADDRESS
  218. LDO10 LDN MXPC
  219. STD CN+4
  220. RJM SFO GET THE REST OF THE OVERLAY
  221. LJM LDO0.2 RESYNCHRONIZE THE TRANSFER
  222. SFO SPACE 4,15
  223. ** SFO - SEARCH FOR OVERLAY.
  224. *
  225. * ENTRY (A) = 0 IF INITIAL ENTRY.
  226. * (A) .NE. 0 IF CONTINUATION ENTRY.
  227. * (T4 - T7) = MASS STORAGE PARAMETERS IF CONTINUATION
  228. * ENTRY AND NOT CM RESIDENT OVERLAY.
  229. *
  230. * EXIT (A) = 0 IF NOT FOUND.
  231. * (BUF - BUF+N) = OVERLAY FOUND.
  232. * (T4 - T7) = MASS STORAGE PARAMETERS IF INITIAL ENTRY
  233. * AND NOT CM RESIDENT OVERLAY.
  234. *
  235. * USES BO, CN - CN+4, T4 - T7.
  236. *
  237. * CALLS SPL, RNS.
  238. *
  239. * MACROS ENDMS, SETMS.
  240.  
  241.  
  242. SFO9 LDI CN
  243. STD CN+1
  244. LDM 1,CN
  245. STD CN+2
  246. LDD CN READ NEXT SECTOR
  247. RJM RNS
  248. SFO10 LDD CN+1 RESTORE 2 BYTES
  249. STI CN
  250. LDD CN+2
  251. STM 1,CN
  252. LDC 500 ADVANCE SECTOR ADDRESS
  253. RAD CN
  254. LDD T1 CHECK WORD COUNT
  255. SHN -6
  256. ZJN SFO12 IF EOR
  257. SOD CN+4
  258. SFO11 NJN SFO9 IF MORE SECTORS WILL FIT INTO BUFFER
  259. LDM BUF+4
  260. ADC -100*MXPC
  261. ZJN SFO12 IF NEXT SECTOR EOR
  262. STD BO WORDS LEFT OVER
  263. LDC MXPC*100 SET MAXIMUM WORD COUNT
  264. STM BUF+4
  265. SFO12 ENDMS
  266. SFO13 LDN 1 INDICATE OVERLAY FOUND
  267.  
  268. SFO SUBR ENTRY/EXIT
  269. NJN SFO11 IF NOT FIRST ENTRY
  270. * NJN SFO3 IF NOT FIRST ENTRY (CM RESIDENT OVERLAY)
  271. SFOA EQU *-1
  272.  
  273. * SEARCH PLD FOR FIRST OVERLAY OF GROUP.
  274.  
  275. SFO1 RJM SPL SEARCH PLD
  276. ZJN SFOX IF OVERLAY NOT FOUND
  277. MJP SFO6 IF FOUND IN *RPL*
  278. SETMS READSYS
  279. SFO2 LDD CN READ NEXT SECTOR
  280. RJM RNS
  281. NJN SFO5 IF NOT EMPTY SECTOR
  282. ENDMS
  283. * LDN 0 RETURN WITH (A) = 0
  284. UJN SFOX
  285.  
  286. SFO3 LDC BUF RESET TRANSFER ADDRESS
  287. STM LDOB
  288. LDM BUF+4
  289. UJN SFO7 READ REST OF OVERLAY
  290.  
  291. SFO4 LDD T1 CHECK SECTOR WORD COUNT
  292. SHN -6
  293. ZJN SFO2 IF SHORT SECTOR
  294. LDD CN READ NEXT SECTOR
  295. RJM RNS
  296. UJN SFO4 LOOP
  297.  
  298. * CHECK OVERLAY NAME.
  299.  
  300. SFO5 LDM 2,CN
  301. SHN 6
  302. LMD IR+4
  303. SHN 6
  304. LMM 3,CN
  305. LMD IR+3
  306. NJN SFO4 IF NO MATCH
  307. LDN MXPC SET MAXIMUM SECTOR COUNT
  308. STD CN+4
  309. LJM SFO10 READ OVERLAY
  310.  
  311. * READ CM RESIDENT OVERLAY.
  312.  
  313. SFO6 LDD T4+3
  314. SFO7 STD T4
  315. SBK MXPC*100
  316. MJN SFO8 IF OVERLAY FITS IN BUFFER
  317. STD BO SAVE REMAINDER
  318. LDC MXPC*100
  319. STD T4
  320. SFO8 LDD T4+1
  321. LPN 77
  322. SHN 14
  323. LMD T4+2
  324. CRM BUF,T4 READ IN OVERLAY
  325. ISTORE LDOC,(UJN LDO10)
  326. ISTORE SFOA,(NJN SFO3)
  327. LDD T4 SET TRANSFER SIZE
  328. STM BUF+4
  329. RAD T4+2 UPDATE READ ADDRESS
  330. SHN -14
  331. RAD T4+1
  332. UJP SFO13 SET OVERLAY FOUND
  333. MSR SPACE 4,10
  334. ** MSR - MASS STORAGE ERROR PROCESSOR FOR *COMPRNS*.
  335. *
  336. * LOOP TRYING TO READ THE SECTOR UNTIL NO ERROR IS ENCOUNTERED.
  337. * THE DRIVER WILL AUTOMATICALLY SWITCH TO DIFFERENT SYSTEM
  338. * DEVICES.
  339.  
  340.  
  341. MSR1 SOM MSRA
  342. ZJP DPP IF RETRY LIMIT EXHAUSTED
  343.  
  344. MSR2 LDD CN RETRY THE READ
  345. RJM RDS
  346. MJN MSR1 IF ERROR
  347.  
  348. MSR SUBR ENTRY/EXIT
  349. SFA EST,T5
  350. ADK EQDE
  351. CRD CM READ EST ENTRY
  352. LDD CM
  353. SHN 21-12
  354. MJN MSR2 IF ERROR ON SYSTEM DEVICE
  355.  
  356. * CALL *7SE* TO REMOVE THE ASR ENTRY FOR THE OVERLAY.
  357.  
  358. LDN IR+3 SET *7SE* CALL PARAMETERS
  359. STD T8
  360. EXECUTE 7SE,BUF
  361. LJM SFO1 RETRY
  362.  
  363.  
  364. MSRA CON 10D ERROR RETRY LIMIT
  365. SPACE 4,10
  366. * COMMON DECKS.
  367.  
  368.  
  369. *CALL COMPRNS
  370. SPL SPACE 4,15
  371. ** SPL - SEARCH PERIPHERAL LIBRARY DIRECTORY.
  372. *
  373. * ENTRY (IR+3 - IR+4) = OVERLAY NAME.
  374. *
  375. * EXIT (A) = 0 IF NEITHER THE OVERLAY NOR FIRST OVERLAY OF
  376. * GROUP FOUND.
  377. * (A) .GT. 0 IF OVERLAY OR FIRST OVERLAY OF GROUP FOUND.
  378. * (A) .LT. 0 IF OVERLAY FOUND IN *RPL*.
  379. * (T4 - T7) = MASS STORAGE PARAMETERS.
  380. * (CN) = BUFFER ADDRESS.
  381. * (BO) = 0 IF OVERLAY FOUND.
  382. *
  383. * USES BO, CN, OV, CM - CM+4, T4 - T7.
  384. *
  385. * MACROS MONITOR, SFA.
  386.  
  387.  
  388. SPL3 STD BO CLEAR BUFFER OVERFLOW
  389. LDC BUF-2 SET BUFFER ADDRESS
  390. STD CN
  391.  
  392. SPL SUBR ENTRY/EXIT
  393. LDD IA MOVE OVERLAY NAME TO MONITOR CALL
  394. CRD CM+3-4
  395. MONITOR SPLM REQUEST LIBRARY SEARCH
  396. LDD OA SET LOAD PARAMETERS
  397. CRD T4
  398. LDD CM+1
  399. SCN 77
  400. ZJN SPL3 IF MASS STORAGE RESIDENT
  401. SHN -7
  402. NJN SPL1.2 IF NOT IN *RPL*
  403. STD BO CLEAR BUFFER OVERFLOW
  404. LDD T4+4 CHECK FOR DUMMY *SFP* ENTRY
  405. ADD T4+3
  406. ZJN SPLX IF OVERLAY NOT FOUND
  407. LCN 1
  408. SPL1.1 UJN SPLX SET FOUND IN *RPL*
  409.  
  410. SPL1 SHN -7
  411. ZJN SPLX IF IN *RPL*
  412. SPL1.2 SHN -1
  413. NJN SPL1 IF 16 BIT OVERLAY
  414. LDD IR+3
  415. LMN 1R9
  416. NJN SPL1 IF NOT CALL FOR DISPLAY OVERLAY
  417. LDD IR+4 PRESET FIRST OVERLAY IN GROUP
  418. SCN 77
  419. * LMN 1RA-1
  420. STD OV
  421. SPL2 AOD OV ADVANCE FIRST OVERLAY IN GROUP
  422. STD CM+3
  423. LMD IR+4
  424. ZJN SPL1.1 IF REQUESTED OVERLAY INACCESSIBLE
  425. LDN 1R9 SET NAME IN MONITOR CALL
  426. STD CM+2
  427. MONITOR SPLM REQUEST LIBRARY SEARCH
  428. LDD OA SET LOAD PARAMETERS
  429. CRD T4
  430. LDD CM+1
  431. SCN 77
  432. NJN SPL2 IF NOT MASS STORAGE RESIDENT
  433. SFA EST,T5
  434. ADK EQDE
  435. CRD CM
  436. LDD CM
  437. SHN 21-12
  438. PJN SPL2 IF NOT SYSTEM DEVICE
  439. LDN 0
  440. LJM SPL3 RETURN
  441. SPACE 4,10
  442. ** BUFFER.
  443.  
  444.  
  445. BUF EQU *+2
  446. BUFL EQU EPFW-BUF BUFFER LENGTH
  447. MXPC EQU BUFL/500 MAXIMUM PRU COUNT
  448. PRS SPACE 4,10
  449. ** PRS - PRESET PROGRAM.
  450. *
  451. * USES T1, T2, CM - CM+4.
  452. *
  453. * MACROS SFA.
  454.  
  455.  
  456. PRS1 RAI T2 MODIFY CHANNEL INSTRUCTION
  457. AOD T1 ADVANCE TABLE ADDRESS
  458. PRS2 LDI T1 SET NEXT INSTRUCTION
  459. STD T2
  460. LDD IR+2 CHECK CHANNEL
  461. CHTL *
  462. SBN CH
  463. NJN PRS1 LOOP FOR ALL CHANNEL INSTRUCTIONS
  464.  
  465. PRS SUBR ENTRY/EXIT
  466. LDN DSEQ
  467. SFA EST FETCH EST ENTRY FOR DISPLAY
  468. ADK EQAE
  469. CRD CM
  470. LDD CM+2 SET TIMEOUT DELAY
  471. RAM LDOA
  472. LDN ZERL CLEAR CONTROL WORD
  473. CRD CW
  474. LDD IR+2 CHECK CHANNEL
  475. SHN -6
  476. NJN PRSX IF CM TRANSFER SELECTED
  477. LDC TCHS SET CHANNEL TABLE
  478. STD T1
  479. UJN PRS2 ENTER LOOP
  480. TCHS SPACE 4
  481. ** TCHS - CHANNEL TABLE.
  482.  
  483.  
  484. TCHS CHTB
  485.  
  486. SPACE 4
  487. END