Benutzer-Werkzeuge

Webseiten-Werkzeuge


tape_progs

Programm TMOUNT

Im Hercules Emulator steht für virtuelle Bandgeräte ein zusätzliches Kommando X'4B zur Verfügung, mit dem das virtuelle Gerät mit einer PC Datei verbunden werden kann. Das Programm TMOUNT stellt diese Funktion im DOS bereit. Der Bandname wird als Parameter book der EXEC Anweisung übergeben. Das Programm erzeugt aus dem Bandnamen einen Dateinamen im Wirtssystem und weisst dem ersten freien Magnetbandgerät unter der ersten freien SYS-Nummer die Datei des entsprechenden Namens zu. Ist diese nicht vorhanden, wird sie automatisch erzeugt. Um den Ablauf genauer steuern zu können, kann man auch die Zuweisung des Bandgerätes explizit angeben, indem man selbst ein Bandgerät zuweist und den Namen des logischen Gerätes mittels USAREA übergibt.

[ASSGN SYSnnn,cuu|TAPE]
[USAREA SYSnnn]
EXEC TMOUNT,xxxxxx

Die Verbindung zur PC Datei wird aufgelöst, sobald das virtuelle Magnetband entladen wird (MTC RUN,SYSnnn).

Im Standarmakro RSTART gibt es das Kommando MOUNT cuu,volser. Dieses erzeugt intern einen entsprechenden Batch. Das Kommando UMOUNT entlädt das Band.

Hier der Quelltext der DOS-Version von TMOUNT:

TMOUNT
         TITLE 'HERCULES TMOUNT COMMAND'
         PRINT NOGEN
         IQLW  DC
         IQPUB DC
         IQCOM DC
         IQLUB DC
         IQCCB DC
         USING IQLW,0
TMOUNT   CSECT
         BALR  12,0
         USING *,12
*
         MVI   JOBCTL,C' '
         MVC   JOBCTL+1(L'JOBCTL-1),JOBCTL
         MVC   FN(L'FN),JOBCTL
         MVC   MSG(L'MSG),JOBCTL
*
* BUILD FILENAME
*
         COMRG
         MVC   FN(8),IQCOMSPN-IQCOM(1)       TAPE NAME
         LA    15,8                          FIND FIRST BLANK
         LA    14,FN
MNTCMP   CLI   0(14),X'40'
         BE    MNTFND
         LA    14,1(,14)
         BCT   15,MNTCMP
MNTFND   SH    15,=H'8'
         LPR   15,15
         BZ    NOTAPE                  NO TAPENAME GIVEN
         TR    FN(0),TABLE
         EX    15,*-6
         MVC   0(4,14),=C'.het'        FILENAME EXTENSION
         LA    15,4(,15)
         STCM  15,7,CCW+5              LENGTH OF FILENAME
*
* FIND FIRST FREE SYS# AND ASSIGN TAPE DEVICE
*
         MVC   SYSN(6),IQCOMUSA-IQCOM(1)     SYSXXX IN USAREA GIVEN?
         CLI   SYSN,X'00'
         BE    NOUSAREA
         NC    SYSN(6),=C'SYS000'            FORMAT OK?
         CLC   SYSN(6),=C'SYS000'
         BNE   NOUSAREA
         PACK  SYSNR(8),IQCOMUSA-IQCOM+3(3,1) SYSNR
         CVB   15,SYSNR
         LA    15,X'20'(,15)           DISPLACEMENT FOR SYS000
         STCM  15,1,CCB+IQCCBLUB-IQCCB        STORE LUB-INDEX IN CCB
         B     SKIPASG                 NO ASSGN REQUIRED
NOUSAREA LA    15,224                  NUMBER OF LUB INDEXES
         LA    14,IQCOM000-IQCOM(1)    SYS000 LUB
         TM    IQLUBFLG-IQLUB(14),IQLUBUA IS IT UA?
         BNZ   *+16
         LA    14,4(,14)
         BCT   15,*-12
         B     NOLUB                   NO FREE LUB (IMPOSSIBLE)
         SH    15,=H'224'
         LPR   15,15
         CVD   15,SYSNR                       PRINTABLE FOR ASSGN
         LA    15,X'20'(,15)                  DISPLACEMENT FOR SYS000
         STCM  15,1,CCB+IQCCBLUB-IQCCB        STORE LUB-INDEX IN CCB
         UNPK  SYSNRC,SYSNR
         OI    SYSNRC+2,X'F0'
         MVC   JOBCTL(17),=C'ASSGN SYS...,TAPE'
         MVC   JOBCTL+9(3),SYSNRC
         LA    1,JOBCTL
         JBCL  NUM=1
SKIPASG  EQU   *
*
* AUTOMOUNT CCB
*
         PFIX  CCW,CCW+1000
         REALAD FN
         STCM  0,7,CCW+1
         REALAD CCW
         STCM  0,7,CCB+IQCCBCW-IQCCB
         REALAD SENSE
         STCM  0,7,CCB+IQCCBLEN+1
         EXCPW CCB,REAL
         CLC   SENSE,=F'0'
         BNE   MNTFAIL
*
* OK-MESSAGE
*
         COMRG
         MVC   MSG(28),=C'SUCCESFULLY MOUNTED ON CUU: '
         MVC   MSG+28(L'FN),FN
         SR    15,15
         IC    15,CCB+IQCCBLUB-IQCCB    LUB INDEX
         SH    15,=H'32'               FROM SYS000
         MH    15,=Y(IQLUBLEN)
         LA    15,IQCOM000-IQCOM(15,1)    SYS000 LUB
         SR    14,14
         IC    14,IQLUBACT-IQLUB(15)    PUB INDEX
         MH    14,=Y(IQPUBLEN)
         L     1,IQLWPUBT               PUB ADRESS
         LA    1,0(14,1)               POINT TO PUB
         UNPK  MSG+23(4),IQPUBCUU-IQPUB(3,1)
         MVI   MSG+26,C':'
         TR    MSG+23(3),TRTAB-240
         TYPE  MSG,L'MSG
* ICH RELEASE HIER GARNISCHT, VIELLEICHT WILL JA WER INTTP
         EOJ
*
* RELEASE TAPE
*
         MVC   JOBCTL+13(4),=C'UA  '          RESET ASSIGNMENT
         LA    1,JOBCTL
         JBCL  NUM=1
         EOJ
*
* ERROR ROUTINES
*
NOTAPE   TYPE  'NO (CORRECT) TAPE NAME GIVEN'
         COMTY
         EOJ
NOLUB    TYPE  'NO FREE SYS# EXIST'
         COMTY
         EOJ
MNTFAIL  MVC   MSG(39),=C'AUTOMOUNT FAILED: SENSE(00000000) FILE='
         MVC   MSG+39(L'FN),FN
         UNPK  MSG+24(9),SENSE(5)
         MVI   MSG+32,C')'
         TR    MSG+24(8),TRTAB-240
         TYPE  MSG,L'MSG
         COMTY
         EOJ
         PRINT GEN
TABLE    DC    0XL256'0',(C'A')AL1(*-TABLE),9AL1(*-TABLE-X'40')
         DC    (C'J'-(*-TABLE))AL1(*-TABLE),9AL1(*-TABLE-X'40')
         DC    (C'S'-(*-TABLE))AL1(*-TABLE),8AL1(*-TABLE-X'40')
         DC    (256-(*-TABLE))AL1(*-TABLE)
TRTAB    DC    C'0123456789ABCDEF'
CCW      CCW   X'4B',FN,X'20',1
CCB      CCB   SYS004,CCW,SENSE=(SENSE,4)
SENSE    DC    F'0'
FN       DC    CL12' '
SYSN     DS    CL6
SYSNRC   DC    C'000'
SYSNR    DC    D'0'
JOBCTL   DS    CL80
MSG      DS    CL80
         END
tape_progs.txt · Zuletzt geändert: 2017/05/12 09:06 von roman