home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / d / k12ipl.pal < prev    next >
Text File  |  2020-01-01  |  9KB  |  243 lines

  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. /    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. /    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. /    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. /    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. /    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. INPUT,    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!
  243.