home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / ibm370 / iktmac.asm < prev    next >
Assembly Source File  |  2020-01-01  |  50KB  |  616 lines

  1. *COPY                                                 RTEXT             00800000
  2.          MACRO                                                          00800500
  3. &LABEL   RTEXT  &BUF,&PROMPT=,&E=                                       00801000
  4. .* Read from the terminal, possible prompt.  Get length read in R0.     00801500
  5. .*  &1: read buffer (len=130) (LA), &PROMPT(1)= prompt buf. if any      00802000
  6. .*  (LA/R), &PROMPT(2)= prompt length (LA/R), &E= branch if error       00802500
  7.          GBLC  &KVRSN,&KSYS                                    @SC89027 00803000
  8.          AIF   ('&KVRSN' EQ '4.3' OR '&KSYS' EQ '').VOK        @SC90072 00803500
  9.    MNOTE 16,'* * * --> IKTMAC version number should be &KVRSN' @SC89027 00804000
  10. .VOK     ANOP                                                  @SC89027 00804500
  11. &LABEL   DS    0H                                              @SC86299 00805000
  12.          AIF   (T'&PROMPT EQ 'O').NOPR                         @SC87268 00805500
  13.          AIF   ('&PROMPT(1)'(1,1) NE '(').NOSV1                @SC89214 00806000
  14.          ST    &PROMPT(1),RTXTSV  Save register, in case (1)   @SC89214 00806500
  15. .NOSV1   ANOP                                                  @SC89214 00807000
  16.          KCALL SUPFNC,7,E=RTE&SYSNDX Skip prompt if stacked    @SC88095 00807500
  17.          AIF   ('&PROMPT(1)'(1,1) NE '(').NOSV2                @SC89214 00808000
  18.          L     &PROMPT(1),RTXTSV                               @SC89214 00808500
  19. .NOSV2   ANOP                                                  @SC89214 00809000
  20.          TPUT  &PROMPT(1),&PROMPT(2),ASIS                      @SC87268 00809500
  21. .NOPR    ANOP                                                           00810000
  22. RTE&SYSNDX KCALL GETLIN,&BUF,E=&E                              @SC88095 00810500
  23.          MEND                                                           00811000
  24. *COPY                                                 DMSFREE           00811500
  25.          MACRO                                                          00812000
  26. &LABEL   DMSFREE &DWORDS=(0),&ERR=                                      00812500
  27. .* Obtain free storage block: len=8*(R0).  Returns ptr in R1, but       00813000
  28. .*    preserves registers 2-14                                          00813500
  29. .*  &DWORDS= length in doublewords should be in R0,                     00814000
  30. .*  &ERR= branch if failure                                             00814500
  31. &LABEL   LREG  0,&DWORDS                                       @SC86299 00815000
  32.          SLA   0,3                                             @SC86299 00815500
  33.          AIF   ('&ERR' NE '').COND                             @SC86345 00816000
  34.          GETMAIN R,LV=(0)                                      @SC86299 00816500
  35.          MEXIT                                                          00817000
  36. .COND    GETMAIN RC,LV=(0)                                     @SC86345 00817500
  37.          LTR   15,15                                           @SC86345 00818000
  38.          BNZ   &ERR                                            @SC86345 00818500
  39.          MEND                                                           00819000
  40. *COPY                                                 DMSFRET           00819500
  41.          MACRO                                                          00820000
  42. &LABEL   DMSFRET &DWORDS=(0),&LOC=(1),&ERR=                             00820500
  43. .* Return free storage block: len=8*(R0), adr=(R1).  Preserve R2-14.    00821000
  44. .*  &DWORDS= length in doublewords should be in R0, &LOC= adr (in R1),  00821500
  45. .*  &ERR= branch if failure                                             00822000
  46. &LABEL   LREG  0,&DWORDS                                       @SC86299 00822500
  47.          SLA   0,3                                             @SC86299 00823000
  48.          FREEMAIN R,LV=(0),A=&LOC                              @SC86299 00823500
  49.          MEND                                                           00824000
  50. *COPY                                                 WRITF             00824500
  51.          MACRO                                                          00825000
  52. &LABEL   WRITF &TICK,&BUFFER=,&BSIZE=,&E=                               00825500
  53. .* Write to a disk file (ticket ptr in R1)                              00826000
  54. .*  &1: adr of file access ticket returned by OPENF (A),                00826500
  55. .*  &BUFFER= data ptr (LA/R), &BSIZE= data length (LA/R) - if either is 00827000
  56. .*  given, it replaces FDB value (see OPENF), &E= branch on error       00827500
  57. &LABEL   READF &TICK,BUFFER=&BUFFER,BSIZE=&BSIZE,E=&E,CODE=10           00828000
  58.          MEND                                                           00828500
  59. *COPY                                                 READF             00829000
  60.          MACRO                                                          00829500
  61. &LABEL   READF &TICK,&NONUM,&BUFFER=,&BSIZE=,&E=,&CODE=9                00830000
  62. .* Read from disk file (or write) (see WRITF, but also...)              00830500
  63. .*  &2: NONUM means chop off numbers                                    00831000
  64.          LCLC  &R                                              @SC86299 00831500
  65.          LCLA  &C                                              @SC88101 00832000
  66. &C       SETA  &CODE                                           @SC88101 00832500
  67.          AIF   (T'&NONUM EQ 'O').RDC                           @SC88101 00833000
  68.          AIF   ('&NONUM' NE 'NONUM').ER1                       @SC88101 00833500
  69. &C       SETA  0             Code 0 means exclude sequence nos.@SC88101 00834000
  70. .RDC     ANOP                                                  @SC88101 00834500
  71. &LABEL   L     1,&TICK                                         @SC86299 00835000
  72.          AIF   ('&BUFFER' EQ '').BZ                            @SC86299 00835500
  73.          AIF   ('&BUFFER'(1,1) NE '(').BLA                     @SC86299 00836000
  74. &R       SETC  '&BUFFER(1)'                                    @SC86299 00836500
  75.          AGO   .BST                                            @SC86299 00837000
  76. .BLA     LA    15,&BUFFER                                      @SC86299 00837500
  77. &R       SETC  '15'                                            @SC86299 00838000
  78. .BST     ST    &R,FDBBUFF-FABD(1)                              @SC86299 00838500
  79. .BZ      AIF   ('&BSIZE' EQ '').SZ                             @SC86299 00839000
  80.          AIF   ('&BSIZE'(1,1) NE '(').SLA                      @SC86299 00839500
  81. &R       SETC  '&BSIZE(1)'                                     @SC86299 00840000
  82.          AGO   .SST                                            @SC86299 00840500
  83. .SLA     LA    15,&BSIZE                                       @SC86299 00841000
  84. &R       SETC  '15'                                            @SC86299 00841500
  85. .SST     ST    &R,FDBBSIZ-FABD(1)                              @SC86299 00842000
  86. .SZ      LA    0,&C                                            @SC88101 00842500
  87.          KCALL DISKIO,E=&E                                     @SC86299 00843000
  88.          MEXIT                                                          00843500
  89. .ER1     MNOTE 2,'INVALID PARAMETER ''&NONUM'''                @SC88101 00844000
  90.          MEND                                                           00844500
  91. *COPY                                                 SAVEF             00845000
  92.          MACRO                                                          00845500
  93. &LABEL   SAVEF &TICK,&E=                                       @SC88168 00846000
  94. .* Update disk directory for given file (ticket ptr in R1)              00846500
  95. .*  &1: adr of file access ticket (A), &E= branch on error              00847000
  96. &LABEL   L     1,&TICK                                         @SC88168 00847500
  97.          READF &TICK,E=&E,CODE=21                              @SC88168 00848000
  98.          MEND                                                           00848500
  99. *COPY                                                 KSETKW            00849000
  100.          MACRO                                                          00849500
  101.          KSETKW ,                                              @SC87166 00850000
  102. .* Define system-specific SET/SHOW parameters (keywords)                00850500
  103.          GBLC  &AADELIM,&DESTINA                               @SC92300 00851000
  104.          KW    '&AADELIM',SHODLM,MIN=4                         @SC92300 00851500
  105.          KW    '&DESTINA',SHODST,MIN=3                         @SC87166 00852000
  106.          MEND                                                           00852500
  107. *COPY                                                 KSETPRC           00853000
  108.          MACRO                                                          00853500
  109.          KSETPRC                                                        00854000
  110. .* System-specific SET handlers (in any order).  No operands.           00854500
  111.          GBLC  &DELIMSG                                        @SC92300 00855000
  112.          PUSH  PRINT                                           @SC86355 00855500
  113.          PRINT GEN                                             @SC86355 00856000
  114. SETDST   KCALL CWDSET                                          @SC86164 00856500
  115.          B     RTRN          Preserve return code              @SC86295 00857000
  116. SETDLM   NTOKN N=SETDLM1,H=SETDLMH                             @SC88095 00857500
  117.          LTR   7,7           Exactly one character?            @SC88095 00858000
  118.          BNZ   SETDLMH       No, explain it                    @SC88095 00858500
  119.          MVC   LNDLM,0(6)    Yes, use that character           @SC88095 00859000
  120.          B     RTRN0                                           @SC88095 00859500
  121. SETDLM1  MVI   LNDLM,C' '    Turn delimiter off                @SC88095 00860000
  122.          B     RTRN0                                           @SC88095 00860500
  123. SETDLMH  PTEXT '&DELIMSG'                                      @SC88095 00861000
  124.          B     SUBERR                                          @SC88095 00861500
  125.          POP   PRINT                                           @SC86355 00862000
  126.          MEND                                                           00862500
  127. *COPY                                                 KSHOPRC           00863000
  128.          MACRO                                                          00863500
  129.          KSHOPRC                                                        00864000
  130. .* System-specific SHOW handlers (in same order as KW).  No operands.   00864500
  131.          PUSH  PRINT                                           @SC86355 00865000
  132.          PRINT GEN                                             @SC86355 00865500
  133. SHODLM   LA    8,LNDLM       Show delimiter                    @SC88095 00866000
  134.          BAL   14,SHOCHR                                       @SC88095 00866500
  135.           B    SETDLM                                          @SC88095 00867000
  136. SHODST   LA    8,DEST                                          @SC86316 00867500
  137.          LH    9,DESTL       Get length                        @SC86316 00868000
  138.          BAL   14,SHOCHRN                                      @SC86295 00868500
  139.           B    SETDST                                          @SC87166 00869000
  140.          POP   PRINT                                           @SC86355 00869500
  141.          MEND                                                           00870000
  142. *COPY                                                 KFILKW            00870500
  143.          MACRO                                                          00871000
  144.          KFILKW ,                                              @SC87166 00871500
  145. .* Define system-specific file attribute parameters (keywords)          00872000
  146.          GBLC  &AABLKSI,&AARECFM,&DCBSPAC,&AAAUNIT,&AAAAVOL    @SC92300 00872500
  147.          KW    '&AABLKSI',SHOBSZ,MIN=2                         @SC87166 00873000
  148.          KW    '&AARECFM',SHORFM                               @SC87166 00873500
  149.          KW    '&DCBSPAC',SHOTRK,MIN=2                         @SC87166 00874000
  150.          KW    '&AAAUNIT',SHOUNT                               @SC87166 00874500
  151.          KW    '&AAAAVOL',SHOVOL,MIN=2                         @SC87166 00875000
  152.          MEND                                                           00875500
  153. *COPY                                                 KFILSET           00876000
  154.          MACRO                                                          00876500
  155.          KFILSET                                                        00877000
  156. .* Specific SET FILE handlers (any order).  No operands.                00877500
  157.          GBLC  &FIXED,&VARIABL,&UNDEFND                        @SC92300 00878000
  158.          PUSH  PRINT                                           @SC87012 00878500
  159.          PRINT GEN                                             @SC87012 00879000
  160. SETCMDS  CSECT                                                 @SC92300 00879500
  161. SETRFMKW KW    '&FIXED',SETT,F                                 @SC92300 00880000
  162.          KW    '&VARIABL',SETT,V                               @SC92300 00880500
  163.          KW    '&UNDEFND',SETT,U                               @SC92300 00881000
  164.          KW    ,                                               @SC92300 00881500
  165. SET      CSECT                                                 @SC92300 00882000
  166. *                                                                       00882500
  167. SETUNT   BAL   2,SETFSTR     Get fixed-format string           @SC86316 00883000
  168.          TR    FILUNT,UPCASE Should always be upper case       @SC88020 00883500
  169.          MVC   LOGUNT,FILUNT                                   @SC86316 00884000
  170.          B     RTRN0                                           @SC86316 00884500
  171. *                                                                       00885000
  172. SETVOL   BAL   2,SETFSTR     Get fixed-format string           @SC86295 00885500
  173.          TR    FILVOL,UPCASE Should always be upper case       @SC88020 00886000
  174.          MVC   LOGVOL,FILVOL                                   @SC86316 00886500
  175.          B     RTRN0                                           @SC86295 00887000
  176.          POP   PRINT                                           @SC87012 00887500
  177.          MEND                                                           00888000
  178. *COPY                                                 KFILSHO           00888500
  179.          MACRO                                                          00889000
  180.          KFILSHO                                                        00889500
  181. .* Specific SHOW FILE handlers (same order as KW).  No operands.        00890000
  182.          PUSH  PRINT                                           @SC87012 00890500
  183.          PRINT GEN                                             @SC87012 00891000
  184. SHOBSZ   L     8,MAXBSZ      Limit                             @SC87166 00891500
  185.          LH    4,FILBLKSI                                      @SC87320 00892000
  186.          BAL   14,SHONUM     Print it                          @SC86295 00892500
  187.           B    RTRN0                                           @SC86295 00893000
  188. SHORFM   LA    4,SETRFMKW                                      @SC92300 00893500
  189.          LA    6,FILRCF                                        @SC92300 00894000
  190.          BAL   14,SHOBRV                                       @SC92300 00894500
  191.           NOP  0                                               @SC92300 00895000
  192. SHOTRK   L     8,MAXBSZ      Limit                             @SC87166 00895500
  193.          L     4,FILTRKAL                                      @SC88026 00896000
  194.          BAL   14,SHONUM     Print it                          @SC86295 00896500
  195.           B    RTRN0                                           @SC87166 00897000
  196. SHOUNT   LA    8,FILUNT                                        @SC86316 00897500
  197.          LA    9,8                                             @SC86316 00898000
  198.          BAL   14,SHOCHRN                                      @SC86316 00898500
  199.           B    SETUNT                                          @SC87166 00899000
  200. SHOVOL   LA    8,FILVOL                                        @SC86295 00899500
  201.          LA    9,6                                             @SC86295 00900000
  202.          BAL   14,SHOCHRN                                      @SC86295 00900500
  203.           B    SETVOL                                          @SC87166 00901000
  204.          POP   PRINT                                           @SC87012 00901500
  205.          MEND                                                           00902000
  206. *COPY                                                 WTEXT             00902500
  207.          MACRO                                                          00903000
  208. &LABEL   WTEXT &ARG,&LEN                                                00903500
  209. .* Display some text, e.g., WTEXT 'Hi there' or WTEXT (3),(4)           00904000
  210. .* Preserves R2-R14                                                     00904500
  211. .*  &1: 'text' (where text has no doubled ' or & characters)  OR        00905000
  212. .*  &1: adr of text (LA/R), &2: length of text (LA/R)                   00905500
  213. &LABEL   PTEXT &ARG,&LEN,AREG=1,LREG=0                         @SC86295 00906000
  214.          BAL   15,WTEXT      'TPUT'                            @SC87020 00906500
  215.          MEND                                                           00907000
  216. *COPY                                                 FDBD              00907500
  217.          MACRO                                                          00908000
  218.          FDBD                                                           00908500
  219. .* Map of File Descriptor Block + File Access Block                     00909000
  220. FABD     DSECT ,                                               @SC86295 00909500
  221. FABRELAD DS    17X           FAB maps DCB                      @SC86299 00910000
  222. FABREL   DS    AL3                                             @SC86299 00910500
  223. FABBUFNO DS    0BL1                                            @SC86299 00911000
  224. FABBUFCB DS    A                                               @SC86299 00911500
  225. FABBUFL  DS    H                                               @SC86299 00912000
  226. FABDSORG DS    BL2                                             @SC86299 00912500
  227. FABIOBAD DS    A                                               @SC86299 00913000
  228. FABEODAD DS    A                                               @SC86299 00913500
  229. FABRECFM DS    0BL1                                            @SC86299 00914000
  230. FABRECU  EQU   X'C0'         Undefined-length records          @SC86299 00914500
  231. FABRECF  EQU   X'80'         Fixed-length records              @SC86299 00915000
  232. FABRECV  EQU   X'40'         Varying-length records            @SC86299 00915500
  233. FABRECBR EQU   X'10'         Blocked records                   @SC86299 00916000
  234. FABRECCC EQU   X'06'         Control chars present             @SC88106 00916500
  235. FABEXLST DS    A                                               @SC86299 00917000
  236. FABDDNAM DS    CL8                                             @SC86299 00917500
  237. FABOFLGS DS    BL1                                             @SC86299 00918000
  238. FABIFLG  DS    BL1                                             @SC86299 00918500
  239. FABMACR  DS    BL2                                             @SC86299 00919000
  240.          ORG   FABDDNAM                                        @SC86299 00919500
  241. FABTIOT  DS    BL2                                             @SC86299 00920000
  242. FABMACRF DS    BL2                                             @SC86299 00920500
  243. FABDEBAD DS    A                                               @SC86299 00921000
  244. FABGET   DS    A                                               @SC86299 00921500
  245. FABCHECK DS    A                                               @SC86299 00922000
  246. FABSYNAD DS    A                                               @SC86299 00922500
  247. FABCIND1 DS    BL2                                             @SC86299 00923000
  248. FABBLKSI DS    H                                               @SC86299 00923500
  249. FABWCPO  DS    BL4                                             @SC86299 00924000
  250. FABIOBA  DS    A                                               @SC86299 00924500
  251. FABEOBAD DS    A                                               @SC86299 00925000
  252. FABRECAD DS    A                                               @SC86299 00925500
  253. FABDIRCT DS    H                                               @SC86299 00926000
  254. FABLRECL DS    H                                               @SC86299 00926500
  255. FABCNTRL DS    A                                               @SC86299 00927000
  256.          ORG   FABD+90                                         @SC86299 00927500
  257. FABPRECL DS    AL2                                             @SC86299 00928000
  258. FABEOB   DS    A                                               @SC86299 00928500
  259. FDBD     DS    0F            Beginning of short descriptor     @SC86295 00929000
  260. FDBBUFF  DS    A             Buffer ptr                        @SC86295 00929500
  261. FDBBSIZ  DS    F             Max record length                 @SC86295 00930000
  262. FDBRCF   DS    C             Record format                     @SC86295 00930500
  263. FDBFLGS  DS    X             Flags                             @SC86295 00931000
  264. FDBACTV  EQU   X'80'         File is already open              @SC86295 00931500
  265. * SVATT  EQU   X'40'         Preserve attributes               @SC90033 00932000
  266. * APPN   EQU   X'10'         DISP=MOD                          @SC86295 00932500
  267. *ABRECCC EQU   X'06'         Control chars present             @SC88246 00933000
  268. PDSF     EQU   X'01'         Dataset is a PDS                  @SC87015 00933500
  269. FDBLRC   DS    H             File record length                @SC86295 00934000
  270. FDBTRKAL DS    F             File track allocation increment   @SC88026 00934500
  271. FDBBLKSI DS    H             File block size                   @SC86295 00935000
  272. FDBDEVT  DS    XL4           Device type (must precede VOL)    @SC88106 00935500
  273. FDBVOL   DS    CL6           File volume label                 @SC86295 00936000
  274. FDBUNT   DS    CL8           File unit name                    @SC86299 00936500
  275. FDBSIZE  DS    F             File size in Kbytes               @SC86299 00937000
  276. FDBCOP   EQU   *-FDBD        Length to copy for OPEN           @SC90037 00937500
  277. FDBDATE  DS    XL7,X         Time stamp: packed yyyymmddhhmmss @SC88235 00938000
  278. FABDSN   DS    CL52          Dataset name                      @SC86299 00938500
  279. FABDSMB  EQU   FABDSN+44,8   Member name                       @SC88119 00939000
  280. FDBINFO  EQU   *-FDBD        Length of info returned           @SC86295 00939500
  281. FABLRTR  DS    F             Record length for truncation      @SC88120 00940000
  282. FABEXL   DS    3A            Modifiable EXLST                  @SC89073 00940500
  283. FABCOMM  DS    CL8           Command name                      @SC87351 00941000
  284. FABDWDS  EQU   (*-FABD+7)/8                                    @SC86295 00941500
  285.          MEND                                                           00942000
  286. *COPY                                                 FDBPAT            00942500
  287.          MACRO                                                          00943000
  288.          FDBPAT &N,&RFM,&SIZ                                   @SC88120 00943500
  289. .* Define system-dependent part of output FDB patterns                  00944000
  290. .*  &1: variable-name prefix (or null if defining init. values)         00944500
  291. .*  &2: RECFM (1-char), &3: LRECL (skip rest of FDB if omitted)@SC88120 00945000
  292.          LCLC  &T,&B,&D,&V,&U,&Z                               @SC88287 00945500
  293.          LCLC  &R,&F,&L,&S,&P4                                 @SC90037 00946000
  294.          AIF   ('&N' EQ '').ALC                                @SC86316 00946500
  295. &R       SETC  'RCF'                                           @SC88120 00947000
  296. &F       SETC  'FLGS'                                          @SC88120 00947500
  297. &L       SETC  'LRC'                                           @SC88120 00948000
  298. &T       SETC  'TRKAL'                                         @SC87320 00948500
  299. &B       SETC  'BLKSI'                                         @SC87320 00949000
  300. &D       SETC  'DEVT'                                          @SC88287 00949500
  301. &V       SETC  'VOL'                                           @SC86316 00950000
  302. &U       SETC  'UNT'                                           @SC86316 00950500
  303. &S       SETC  'FSIZ'                                          @SC90037 00951000
  304. .ALC     ANOP                                                  @SC86316 00951500
  305. &N&R     DC    C'&RFM'       RECFM                             @SC88120 00952000
  306. &N&F     DC    X'00'         Flags                             @SC88120 00952500
  307.          AIF   ('&SIZ' EQ '').DONE                             @SC88120 00953000
  308.          AIF   ('&RFM' NE 'V').OKL                             @SC88120 00953500
  309. &P4      SETC  '+4'          Add 4 for RDW                     @SC88120 00954000
  310. .OKL     ANOP                                                  @SC88120 00954500
  311. &N&L     DC    Y(&SIZ&P4)    LRECL                             @SC88120 00955000
  312. &N&T     DC    F'5'          Track allocation                  @SC88026 00955500
  313. &Z       SETC  '6233'        Default block size                @SC87320 00956000
  314.          AIF   ('&SIZ' NE 'LPKT').P1                           @SC88120 00956500
  315. &Z       SETC  'LPKT+8'      Block size for log file           @SC87320 00957000
  316. .P1      ANOP                                                           00957500
  317. &N&B     DC    Y(&Z)                                           @SC87320 00958000
  318. &N&D     DC    XL4'0'        Device type (must precede VOL)    @SC88287 00958500
  319. &N&V     DC    CL6' '        No volume specified               @SC87320 00959000
  320. &N&U     DC    CL8' '        Default unit                      @SC88054 00959500
  321. &N&S     DC    F'0'          File size in Kbytes               @SC90037 00960000
  322. .DONE    ANOP                                                  @SC88120 00960500
  323.          MEND                                                           00961000
  324. *COPY                                                 KSYSVAR           00961500
  325.          MACRO                                                          00962000
  326.          KSYSVAR                                                        00962500
  327. .* Define system-dependent globally-known variables                     00963000
  328. COMPTR   DS    2A            Common/storage ptrs               @SC87015 00963500
  329. APGPB    GETLINE MF=L        Parameter block for GETLINE       @NW86330 00964000
  330. STAXPLR  STAX  0,MF=L        Parameter block for STAX (replace)@NW86330 00964500
  331. IOPLAREA DS    4F            IOPL                              @TS86001 00965000
  332. ORGPCMD  DS    CL8           Saved ECT PCMD field              @SC89052 00965500
  333. CPECB    DS    F             GETLINE/PUTLINE/PUTGET ECB        @TS86001 00966000
  334. ECBREAD  DS    F                                               @NW86330 00966500
  335. TASKADD  DS    A             Async task adr                    @NW86330 00967000
  336. SYSPROC  DS    A             Ptr to CLIST library DCB          @SC89073 00967500
  337. ECBTGET  DS    F                                               @NW86330 00968000
  338. KTGETT   DS    2F            Adr and length of read request    @SC87015 00968500
  339. PUTLINAD DS    A             Adr of PUTLINE routine            @SC88026 00969000
  340. GETLINAD DS    A             Adr of GETLINE routine            @NW86330 00969500
  341. DFMSGP   DS    A             Ptr to DAIR message buffer        @SC88119 00970000
  342. CATDSPTR DS    A             Catalog buffer ptr                @NW86330 00970500
  343. NXSFPTR  DS    A             Ptr to suffix comparand           @SC87015 00971000
  344. CIRPARM  DS    0F                                              @NW86330 00971500
  345. CIROPT   DS    X'02'         Get all matches                   @NW86330 00972000
  346.          DS    2AL1(0)       Reserved by system                @NW86330 00972500
  347. CIRLOCRC DS    AL1(0)        Locate return code                @NW86330 00973000
  348. CIRSRCH  DS    A             Search arg: adr of test DSN       @NW86330 00973500
  349. CIRCVOL  DS    F'0'          Vol adr=0 - force cat lookup      @NW86330 00974000
  350. CIRWA    DS    A             Ptr to user work area             @NW86330 00974500
  351. CIRSAVE  DS    A             Ptr to save area for macro        @NW86330 00975000
  352. CIRPSWD  DS    F'0'          Adr of password                   @NW86330 00975500
  353. DESTL    DS    H'0'          Length                            @SC86299 00976000
  354. DEST     DS    CL44          Default PREFIX                    @SC86299 00976500
  355. DESTP    DS    C' '          PDS indicator ('.' if so)         @SC86299 00977000
  356. RTXTSV   DS    F             Saved register for prompt         @SC89214 00977500
  357. CAMLOC   DS    4F            Ptrs for locating dataset         @SC86299 00978000
  358. CAMOBT   DS    4F            Ptrs for getting DSCB             @SC86299 00978500
  359. CAMVOLS  DS    0D,XL265      Storage for volume list           @SC86299 00979000
  360. CAMDEVT  EQU   CAMVOLS+2,4   1st device type                   @SC88106 00979500
  361.          ORG   CAMVOLS+100   Do a little overlaying            @SC88049 00980000
  362. CAMDSCB  DS    0F,XL101      Storage for DSCB                  @SC88014 00980500
  363.          ORG   CAMDSCB+1                                       @SC88014 00981000
  364. DS1VOL   DS    CL6,XL2       Volume serial                     @SC86299 00981500
  365. DS1CRDT  DS    2XL3,3X,XL8   Creation date                     @GH89270 00982000
  366. DS1MDDT  DS    XL3           Modification date (ASM2)          @GH89270 00982500
  367. DS1MDTM  DS    XL2           Modification time of day (ASM2)   @GH89270 00983000
  368. DS1RFDT  DS    XL3,XL4       Reference date                    @SC86299 00983500
  369. DS1DSO   DS    XL2           Dataset org                       @SC86299 00984000
  370. DS1RCF   DS    X             Record format                     @SC86299 00984500
  371. DS1OPT   DS    X             Error option                      @SC86299 00985000
  372. DS1BLK   DS    H             Block size                        @SC86299 00985500
  373. DS1LRC   DS    H             Logical record length             @SC86299 00986000
  374. LKPMEM   DS    CL8           Temporary for member name if mig. @SC89250 00986500
  375.          ORG   ,                                               @SC86299 00987000
  376.          DS    0F                                              @SC86299 00987500
  377. DSKSTT   EQU   *-FDBD+FABD                                     @SC86299 00988000
  378.          DS    XL(FDBINFO)   Room for FDB                      @SC86299 00988500
  379.          ORG   DSKSTT+8*FABDWDS  Rest of FAB to end            @SC91017 00989000
  380. NXFN     DS    CL(LFID)      Pattern filespec for search       @SC87015 00989500
  381. DSNPFL   DS    H             Prefix length for search          @NW86330 00990000
  382. DSNSFL   DS    H             Suffix length for search          @NW86330 00990500
  383. ICPRGS   DS    4F            Saved registers for type-out      @SC88026 00991000
  384. ICPFL    DS    X             Flag for type-out interception    @SC87020 00991500
  385. SCRLST   DS    X             Flag for previous I/O op          @SC88091 00992000
  386. STMUCH   DS    XL2           Saved user profile values         @SC86299 00992500
  387. OLDUPTSW DS    X             Old UPTSWS field, saved for STCOM @TL89181 00993000
  388. PTLLEN   DS    0F,2H         PUTLINE data descriptor           @SC88026 00993500
  389. PTLBUF   DS    CL133                                           @SC88026 00994000
  390. STKDSN   DS    CL(LFID)      DSN for STACK                     @SC88026 00994500
  391. *                                                                       00995000
  392. DSKFL    DS    X             Flags for catalog scanning        @SC90033 00995500
  393. NXDON    EQU   X'40'         Catalog search done               @SC87015 00996000
  394. WFN      EQU   X'08'         Filename contains wild chars      @SC88246 00996500
  395. PDSBLK   DS    0H,XL62       BLDL list                         @GH90139 00997000
  396.          ORG   PDSBLK                                          @GH90139 00997500
  397. PDSCOUNT DS    H'1'          Number of entries                 @GH90139 00998000
  398. PDSSIZE  DS    Y(58)         Size of each entry                @GH90139 00998500
  399. PDSMEMBR DS    CL8           Member name                       @GH90139 00999000
  400.          DS    XL3,2XL1      TTRC, Linklist/STEPLIB            @GH90139 00999500
  401. PDSINDIC DS    XL1           Indicators                        @GH90139 01000000
  402. PDSUSER  DS    0C            User data field                   @GH90139 01000500
  403.          DS    2XL1,XL2,PL4  Version, level, reserved, CREDT   @GH90139 01001000
  404. ISPFMDDT DS    PL4           ISPF mod date (00YYDDDF)          @GH90139 01001500
  405. ISPFMDTM DS    PL2           ISPF mod time (HHMM)              @GH90139 01002000
  406.          ORG   ,                                               @GH90139 01002500
  407.          MEND                                                           01003000
  408. *COPY                                                 KSYSTF            01003500
  409.          MACRO                                                          01004000
  410.          KSYSTF                                                         01004500
  411. .* Define system-dependent globally-known constants and init. variables 01005000
  412. .*  symb .DS + label &P.DEFS mark start of variables/init. values       01005500
  413.          GBLC  &STORDS                                         @SC89268 01006000
  414.          LCLC  &P                                                       01006500
  415.          PUSH  PRINT                                                    01007000
  416.          PRINT GEN                                                      01007500
  417.          AIF   ('&SYSECT' EQ '&STORDS').DS                     @SC89268 01008000
  418. &P       SETC  'I'           For initial values                         01008500
  419. WTEXT    STM   14,1,ICPRGS   Save                              @SC88026 01009000
  420.          CLI   ICPFL,2       Intercepting?                     @SC88026 01009500
  421.          BE    WTXICP        Yes, do it                        @SC88026 01010000
  422.          MVC   PTLBUF,0(1)   Copy to buffer                    @SC88026 01010500
  423.          A     0,F4                                            @SC88026 01011000
  424.          STH   0,PTLLEN      And save length                   @SC88026 01011500
  425.          MVI   CPECB,0       Clear ECB                         @SC88119 01012000
  426.          L     15,PUTLINAD                                     @SC88026 01012500
  427.          PUTLINE PARM=PTPB,MF=(E,IOPLAREA),ENTRY=(15)          @SC88026 01013000
  428.          B     WTXRET                                          @SC87020 01013500
  429. WTXICP   KCALL ICPTYP        Call interception routine         @SC87020 01014000
  430. WTXRET   LM    14,1,ICPRGS   Restore                           @SC88026 01014500
  431.          BR    15                                              @SC87020 01015000
  432. KSYSATOE DC    A(0)          Normal TTY E/A translation        @SC88302 01015500
  433. KSYSETOA DC    A(0)                                            @SC88302 01016000
  434. SYSATR   DC    AL1(ADOT,ABL+2,AI,A2)  ."I2  System type=TSO    @SC88273 01016500
  435. LSYSATR  EQU   *-SYSATR      Length of stuff for A-packet      @SC88273 01017000
  436. LOGNAM   DC    C'KER.LOG'                                      @SC86299 01017500
  437. REPNAM   DC    C'KER.REPLY'                                    @SC86299 01018000
  438. SYSTAKE  DC    C'''SYS1'                                       @SC88113 01018500
  439. DKERMINI DC    C'.KERMINI'''                                   @SC88113 01019000
  440. LSYST    EQU   *-SYSTAKE                                       @SC86299 01019500
  441. USRTAKE  DC    C'KERMINI'    Init file                         @SC86299 01020000
  442. LUSRT    EQU   *-USRTAKE                                       @SC86299 01020500
  443. KMAIL1   DC    C'KERMAIL ' System cmd for invoking mail        @SC90037 01021000
  444. KMAIL2   DC    C' LIST('                                       @SC90037 01021500
  445. KMAIL3   DC    C')'                                            @SC90037 01022000
  446. KPRNT1   DC    C'KERMPRT ' System cmd for printing             @SC90037 01022500
  447. KPRNT2   DC    C' OPTIONS('                                    @SC90037 01023000
  448. KPRNT3   DC    C')'                                            @SC90037 01023500
  449. KSUBM1   DC    C'KERMSUB ' System cmd for submitting job       @SC90037 01024000
  450. KSUBM2   DC    C' OPTIONS('                                    @SC90037 01024500
  451. KSUBM3   DC    C')'                                            @SC90037 01025000
  452. CIRWAL   DC    H'32004,0'    Length of catalog work area       @SC87015 01025500
  453. KSYSNIT  CSECT                                                 @SC89215 01026000
  454. .DS      ANOP                                                           01026500
  455. &P.DEFS  DS    0D                                                       01027000
  456. * Timer exit routine                                           @SC88299 01027500
  457.          USING *,15          Addressiblity for getting ECB     @SC88299 01028000
  458. &P.TMXIT STM   0,1,20(13)    Save registers                    @SC88299 01028500
  459.          ICM   1,15,&P.TMXPT Get ptr to target ECB             @SC88299 01029000
  460.          POST  (1),1                                           @SC88299 01029500
  461.          LM    0,1,20(13)    Restore registers                 @SC88299 01030000
  462.          BR    14            Return to system                  @SC88299 01030500
  463. &P.TMXPT DS    AL4           Ptr to ECB                        @SC88299 01031000
  464.          DROP  15                                              @SC88299 01031500
  465. *                                                                       01032000
  466. &P.KPRPL DC    AL1(L'KPRPT)                                    @SC89268 01032500
  467. &P.KPRPT DC    C'Kermit-TSO>'                                  @SC87268 01033000
  468.          ORG   &P.KPRPT+20                                     @SC87268 01033500
  469. &P.LNDLM DC    C' '          Initially no delimiter            @SC88095 01034000
  470.          POP   PRINT                                                    01034500
  471. &P.PTPB  PUTLINE MF=L,OUTPUT=(0,TERM,SINGLE,DATA)              @SC88026 01035000
  472.          MEND                                                           01035500
  473. *COPY                                                 KSYSBUF           01036000
  474.          MACRO                                                          01036500
  475.          KSYSBUF                                                        01037000
  476. .* Store buffer ptrs from R1 and increment R1 for specific buffers      01037500
  477.          LA    0,4-1                                           @SC87015 01038000
  478.          AR    1,0                                             @SC87015 01038500
  479.          OR    1,0                                             @SC87015 01039000
  480.          XR    1,0                                             @SC87015 01039500
  481.          ST    1,CIRSAVE     Catalog scan save area            @SC87015 01040000
  482.          LA    1,72(1)                                         @SC87015 01040500
  483.          ST    1,CIRWA       Catalog info buffer               @SC87015 01041000
  484.          AH    1,CIRWAL                                        @SC87015 01041500
  485.          ST    1,CIRSRCH     Catalog search comparand          @SC87015 01042000
  486.          LA    1,44(1)                                         @SC87015 01042500
  487.          ST    1,DFMSGP      DAIR message buffer               @SC88119 01043000
  488.          LA    1,512(1)                                        @SC88119 01043500
  489.          MEND                                                           01044000
  490. *COPY                                                 SSYMS             01044500
  491.          MACRO                                                          01045000
  492.          SSYMS                                                          01045500
  493. .* Set global symbols for conditional assembly                          01046000
  494.          GBLC  &KVRSN,&KSYS,&KDATE,&RTN,&TYPCMD,&S1CMD,&KCONT  @SC88309 01046500
  495.          GBLC  &KEDIT,&STORDS,&KTAG,&AEACMD,&CONOPTS,&S1CMD1   @SC91311 01047000
  496.          GBLA  &MAXLR,&MAXBS                                   @SC86268 01047500
  497.          GBLC  &AAAAAOK,&AAAAVOL,&AAAUNIT,&AABLKSI,&BADFSPC    @SC92300 01048000
  498.          GBLC  &CWDERRM,&DCBSPAC,&DESTINA,&FILCLSN,&FMTFSPC    @SC92300 01048500
  499.          GBLC  &MIGRATD,&NOFSPEC,&NOTCPER,&QQWRITE,&SPACERR    @SC92300 01049000
  500. &KSYS    SETC  'TSO'         System name                       @SC86299 01049500
  501.   MNOTE '*** Kermit-&KSYS release &KVRSN..&KEDIT &KTAG (&KDATE) ***'    01050000
  502. ** BEGIN LANGUAGE-SPECIFIC DATA **   ** TSO-specific **        @SC92300 01050500
  503. &AAAAAOK SETC 'OK'            (see QQWRITE)                    @SC88076 01051000
  504. &BADFSPC SETC 'Invalid DSN'                                    @SC86299 01051500
  505. &CWDERRM SETC 'Must be valid DSN prefix'                       @SC86299 01052000
  506. &FILCLSN SETC '  File name collision'  (2 leading blanks)      @SC88049 01052500
  507. &FMTFSPC SETC 'Enter d.s.n'                                    @SC91224 01053000
  508. &MIGRATD SETC '  Dataset not on-line'  (2 leading blanks)      @SC89250 01053500
  509. &NOFSPEC SETC 'Missing DSN'                                    @SC86299 01054000
  510. &NOTCPER SETC 'Kermit-TSO must be a command processor'         @SC86299 01054500
  511. &QQWRITE SETC ' exists.  Reply "OK" to overwrite:'             @SC87015 01055000
  512. &SPACERR SETC 'SPACE not implemented'  (see AASPACE)           @SC86299 01055500
  513. * Subcommand keywords                                          @SC92300 01056000
  514. &AAAAVOL SETC 'VOLUME'          kwd->AAAFILE, m=2              @SC87166 01056500
  515. &AAAUNIT SETC 'UNIT'            kwd->AAAFILE                   @SC87166 01057000
  516. &AABLKSI SETC 'BLKSIZE'         kwd->AAAFILE, m=2              @SC87166 01057500
  517. &DCBSPAC SETC 'SPACE'           kwd->AAAFILE, m=2              @SC87166 01058000
  518. &DESTINA SETC 'PREFIX'          kwd->AAAASET, m=3              @SC87166 01058500
  519. ** END LANGUAGE-SPECIFIC DATA **                               @SC92300 01059000
  520. &MAXLR   SETA  32756         Max lrecl                         @SC86299 01059500
  521. &MAXBS   SETA  32760         Max blksize                       @SC86299 01060000
  522. &AEACMD  SETC  'X''F3'''        AEA command prefix (X'F3'=WSF) @SC90173 01060500
  523. &S1CMD   SETC  'X''F1C2'''   S/1 command prefix                @SC90264 01061000
  524. &S1CMD1  SETC  'X''F1C1'''   S/1 command prefix for Status Req @SC91311 01061500
  525. &CONOPTS SETC  'STCQNS1'     SETCON options                    @SC91311 01062000
  526. &KCONT   SETC  'T'           Default controller type (TTY)     @SC88309 01062500
  527.          PUSH  PRINT                                                    01063000
  528.          PRINT GEN                                                      01063500
  529. MAXWT    EQU   1024          Max TPUT buffer                   @SC86299 01064000
  530. MAXRT    EQU   1024          Max TGET buffer                   @SC86299 01064500
  531. MAXWS    EQU   1920          Max fullscreen output buffer      @SC90277 01065000
  532. MAXRS    EQU   1920          Max fullscreen input buffer       @SC90277 01065500
  533. FSRDOF   EQU   6             Offset of data in fullscreen read @SC92030 01066000
  534. MAXDOF   EQU   0             Offset of disk out buffer         @SC90264 01066500
  535. STMGT    EQU   0             Overhead for storage mngmnt       @SC90264 01067000
  536. LFID     EQU   60            Max length of filespec            @SC88342 01067500
  537. &TYPCMD  SETC  'LIST'        Host command for TYPE             @SC86299 01068000
  538. TYPMIN   EQU   4             Min abbrv of system TYPE cmd or 2 @SC86299 01068500
  539. FBRK1    EQU   C'<'          Starting character for options    @SC89218 01069000
  540. FBRK2    EQU   C'>'          Ending character for options      @SC89218 01069500
  541. KMAXE    EQU   1920          < 9025  Kermit extended max pkt   @SC90277 01070000
  542. STKDWDS  EQU   511           Size of save-area stack           @SC87012 01070500
  543. &STORDS  SETC  'KSTORG'      Storage DSECT for Kermit globals  @SC89268 01071000
  544. KWRKBASE EQU   11            Base register for work area       @SC89268 01071500
  545. KSUBBASE EQU   12            Base register for CSECT           @SC89268 01072000
  546.          POP   PRINT                                                    01072500
  547.          MEND                                                  @SC86268 01073000
  548. *COPY                                                 SYSMACS           01073500
  549.          MACRO                                                          01074000
  550.          SYSMACS                                                        01074500
  551. .* Include system control block definition macros and list all macros   01075000
  552.  MNOTE '---MACROs: ATTACH, BLDL, CATALOG, CLOSE, DETACH, DEVTYPE,'      01075500
  553.  MNOTE '---        ESTAI, FIND, FREEMAIN,'                              01076000
  554.  MNOTE '---        FREEPOOL, GETLINE, GETMAIN, GTSIZE, IDENTIFY,'       01076500
  555.  MNOTE '---        IKJCPPL, IKJECT, IKJGTPB, IKJIOPL, IKJUPT,'          01077000
  556.  MNOTE '---        LINK, LOAD, LOCATE, OBTAIN, OPEN, POST,'             01077500
  557.  MNOTE '---        PUTLINE, RDJFCB, SAVE, SCRATCH, STACK,'              01078000
  558.  MNOTE '---        STATUS, STAX, STCC,'                                 01078500
  559.  MNOTE '---        STCOM, STFSMODE, STIMER, STSIZE, SYNADAF,'           01079000
  560.  MNOTE '---        SYNADRLS, TGET, TPG, TPUT, TTIMER, WAIT'             01079500
  561.          IKJCPPL ,                                             @SC86299 01080000
  562.          IKJECT ,                                              @SC86299 01080500
  563.          IKJGTPB ,                                             @NW86330 01081000
  564.          IKJIOPL ,                                             @TS86001 01081500
  565.          IKJUPT ,                                              @SC86299 01082000
  566. * DSECT for addressing catalog information work area                    01082500
  567. CATDSET  DSECT                                                 @NW86330 01083000
  568. TYPEBYTE DS    XL1           Type byte we want only A's        @NW86330 01083500
  569. CATDNAME DS    44CL1         Data set name                     @NW86330 01084000
  570.          MEND                                                  @SC86268 01084500
  571. *COPY                                                 STRTMSGS          01085000
  572.          MACRO                                                          01085500
  573. &LABEL   STRTMSGS                                                       01086000
  574. .* Print system-dependent start-up messages                             01086500
  575.          GBLC  &HANDXON                                        @SC92300 01087000
  576. &LABEL   CLI   S1HND,XON                                       @SC87338 01087500
  577.          BNE   STRT1Z                                          @SC87338 01088000
  578.          BAL   14,TTYCHK                                       @SC92030 01088500
  579.           B    STRT1Z        TTY, suppress message             @SC87338 01089000
  580.          WTEXT '&HANDXON'                                      @SC87338 01089500
  581. STRT1Z   DS    0H                                              @SC87338 01090000
  582.          MEND                                                  @SC87338 01090500
  583. *COPY                                                 KMAIN             01091000
  584.          MACRO                                                          01091500
  585. &LABEL   KMAIN &TYPE                                                    01092000
  586. .* Linkage conventions with system.                                     01092500
  587. .*  &1: ENTER if entering, RETURN if returning                          01093000
  588.          AIF   ('&TYPE' NE 'RETURN').ENT                       @SC89268 01093500
  589. &LABEL   L     13,4(13)      Unlink                            @SC86295 01094000
  590.          ST    15,16(13)     Save return code                  @SC86295 01094500
  591.          LA    0,STODWDS+STKDWDS                               @SC87012 01095000
  592.          LR    1,KWRKBASE                                      @SC89268 01095500
  593.          DMSFRET DWORDS=(0),LOC=(1)                            @SC86295 01096000
  594.          LM    14,12,12(13)  Restore registers                 @SC86295 01096500
  595.          BR    14                                              @SC86295 01097000
  596.          MEXIT ,                                               @SC89268 01097500
  597. .ENT     AIF   ('&TYPE' NE 'ENTER').OTH                        @SC89268 01098000
  598.          SAVE  (14,12),,&LABEL                                 @SC90264 01098500
  599.          LR    KSUBBASE,15                                     @SC89268 01099000
  600.          L     10,=A(COMMON) Common code addressibility        @SC86316 01099500
  601.          LA    0,STODWDS+STKDWDS                               @SC87012 01100000
  602.          DMSFREE DWORDS=(0)  Get storage for vars + stack      @SC86295 01100500
  603.          LR    KWRKBASE,1    Get addressibility                @SC89268 01101000
  604.          LR    0,1                                             @SC86295 01101500
  605.          LA    1,8*STODWDS   Length of storage                 @SC86295 01102000
  606.          SR    15,15         Zero fill                         @SC86295 01102500
  607.          MVCL  0,14                                            @SC86295 01103000
  608.          LR    15,0          Start of stack                    @SC86295 01103500
  609.          A     0,=A(8*STKDWDS) End of stack                    @SC87012 01104000
  610.          STM   15,0,STKPTR                                     @SC86295 01104500
  611.          ST    15,STKLO                                        @SC89089 01105000
  612.          LM    15,1,16(13)   Restore registers                 @SC86295 01105500
  613.          MEXIT ,                                               @SC89268 01106000
  614. .OTH     MNOTE 12,'Invalid type &TYPE'                         @SC89268 01106500
  615.          MEND                                                  @SC89268 01107000
  616.