The BackUp Utility


A neat utility for copying between to hard disks with a HFDC from MYARC.


       DEF  SHOW
       REF  DSRLNK,VWTR,VMBW,VMBR,VSBW,VSBR
 
CRUMOU EQU  >1000
MOUROM EQU  >0
 
HEADER TEXT '            Backup-System               '
       TEXT '           ===============              '
TXTPFA TEXT 'Source-Pathname     :                   '
       TEXT 'Destination-Pathname:                   '
LINE   TEXT ' Dateiname    Typ     Length  Records   '
       TEXT '    Create-Date          Edit-Date      '
       TEXT '----------------------------------------'
       TEXT '----------------------------------------'
LINEBL TEXT '                                        '
TXTRED TEXT 'Ready!                                  '
TXTFIL TEXT 'Filenumber in Progress:                 '
TXTERR TEXT 'Summe aller Fehler    :                 '
 
SPFAD  BYTE >05               * SOURCE-PFAD
       TEXT 'WDS1.'
       BSS  >40               * SYSTEM ERWEITERT NAMEN!!
DPFAD  BYTE >09               * DESTINATION-PFAD
       TEXT 'WDS2.BAK.'
       BSS  >40
       EVEN
 
REGDAT DATA >0004,>0170,>0203,>032F
       DATA >0402,>07F1,>0808,>0982
       DATA >0A00,>0CF5,>0D66,>0E00
       DATA >0F00,>1000,>122D,>1300
       DATA >1700,>0000
BYTE00 BYTE >00
BYTE20 BYTE >20
BYTEFF BYTE >FF
       EVEN
 
FILE#  BSS  >2
ERROR# BSS  >2
MYWS   BSS  >20
 
*******************************
*                             *
*      HAUPT-PROGRAMM         *
*                             *
*******************************
SHOW   LWPI MYWS
       LI   1,REGDAT
INITLP MOV  *1+,0
       JEQ  INTRED
       BLWP @VWTR
       JMP  INITLP
INTRED MOVB @BYTE20,1
       LI   2,>86F
       BLWP @VSBW
INICLR MOVB 1,@>8C00
       DEC  2
       JNE  INICLR
       LI   0,>A00
       MOVB @BYTE00,1
       LI   2,>10D
       BLWP @VSBW
COLCLR MOVB 1,@>8C00
       DEC  2
       JNE  COLCLR
       LI   12,CRUMOU
       SBO  MOUROM
       LI   0,>1000
       LI   1,>4BF8
       LI   2,>800
       BLWP @VMBW
       A    2,1
       LI   2,>8
DCHARL MOV  *1+,0
       JEQ  DCHARE
       BLWP @VMBW
       A    2,1
       JMP  DCHARL
DCHARE SBZ  MOUROM            * INIT 80-ZEICHEN-KARTE FERTIG
       LI   0,>14
       LI   1,HEADER
       LI   2,>28
       BLWP @VMBW
       AI   0,>50
       AI   1,>28
       BLWP @VMBW
       LI   0,>1EA
       LI   1,TXTPFA
       BLWP @VMBW
       AI   0,>50
       AI   1,>28
       BLWP @VMBW
       LI   0,>320
       LI   1,TXTFIL
       LI   2,>28
       BLWP @VMBW
       AI   0,>28
       LI   1,TXTERR
       BLWP @VMBW
       LI   0,>460
       LI   1,LINE
       LI   2,>A0
       BLWP @VMBW
 
       CLR  @FILE#
       CLR  @ERROR#
       LI   0,>337
       MOV  @FILE#,3
       BLWP @ZAHL
       LI   0,>35F
       MOV  @ERROR#,3
       BLWP @ZAHL
       LI   0,>201
       LI   1,SPFAD+1
       MOVB @SPFAD,2
       SRL  2,8
       BLWP @VMBW
       AI   0,>50
       LI   1,DPFAD+1
       MOVB @DPFAD,2
       SRL  2,8
       BLWP @VMBW
       LI   0,>0
       BLWP @PRLINE
       LI   0,>50
       BLWP @PRLINE
       LI   0,>A0
       BLWP @PRLINE
 
       BLWP @GETCAT
 
       LI   0,>3E1
       LI   1,TXTRED
       LI   2,>28
       BLWP @VMBW
       LI   0,>320
       BLWP @PRLINE
       BLWP @FFEED
       CLR  @>83D6
       LIMI 1
WAIT   MOV  @>83D6,0          * 10 SEKUNDEN WARTEN
       CI   0,>400
       JNE  WAIT
       CLR  12
       SBZ  22
       CLR  0
       DEC  0
       JNE  $-2
       BLWP @>0000
 
*------------------------------------------------------------------------------*
*                                                                              *
*      REKURSIVEN KATALOG ERSTELLEN UND AUFRUF DATOPE ALS AKTION.              *
*                                                                              *
*------------------------------------------------------------------------------*
GETCAT DATA GETWS,GETPG
MAXCHR EQU  >40               * 64 ZEICHEN MAXIMALE LAENGE!
MAXREK EQU  >0A                    +--- 1 GEHT NICHT, FAENGT IMMER BEI 0 AN!!!
PABBUF EQU  >2400                  !    ( ANDERS BEIM ORGINAL TI-CONTROLLER)
NAMPTR EQU  >8356                  v
PDATA  DATA >000D,PABBUF,>0050,>0000,>0000
*SPFAD  BSS  MAXCHR            * PFADNAME, SOURCE
*DPFAD  BSS  MAXCHR            * PFADNAME, DESTINATION
READ   BYTE >02
CLOSE  BYTE >01
CLEAR  BYTE >20
H01    BYTE >01
POINT  TEXT '.'
DOPPEL TEXT ':'
DATTXT TEXT ' VOLUME '        * 0
       TEXT ' DIS/FIX'        * 1
       TEXT ' DIS/VAR'        * 2
       TEXT ' INT/FIX'        * 3
       TEXT ' INT/VAR'        * 4
       TEXT ' PROGRAM'        * 5
       TEXT ' DIREC. '        * 6
       TEXT ' EMULATE'        * 7
       EVEN
DIRECT DATA >0006
PABPOI DATA >1F80             * PAB-POINTER
GWSPOI DATA GETWS             * WORKSPACE-POINTER
H0020  DATA >0020
MAXPAB DATA MAXCHR+10         * PAB'S NICHT LAENGER
 
GETWS  BSS  >20*MAXREK        * WS IST MAXREK MAL VORHANDEN
STRING BSS  MAXCHR            * DATEINAME
       EVEN
 
DATNAM BSS  >10               * 16 ZEICHEN FUER DATEINAMEN MAXIMAL!
TYP    BSS  >2
RECORD BSS  >2
LENGTH BSS  >2
CSEC   BSS  >2
CMIN   BSS  >2
CHOU   BSS  >2
CDAY   BSS  >2
CMON   BSS  >2
CYEA   BSS  >2
ESEC   BSS  >2
EMIN   BSS  >2
EHOU   BSS  >2
EDAY   BSS  >2
EMON   BSS  >2
EYEA   BSS  >2
CDATE  BSS  >14
EDATE  BSS  >14
*-----------------------------+
GETPG  MOV  @PABPOI,0         !
       LI   1,PDATA           !
       LI   2,>9              !
       BLWP @VMBW             !
       AI   0,>9              !
       LI   1,SPFAD           !
       MOVB @SPFAD,2          !
       SRL  2,8               !
       INC  2                 !
       BLWP @VMBW             !
       MOV  0,@NAMPTR         !
       BLWP @DSRLNK           !
       DATA >0008             !
       JEQ  CLSERR            !
*-----------------------------+
       MOV  @PABPOI,0         *
       MOVB @READ,1           *
       BLWP @VSBW             *
       AI   0,>9              * SKIP SYSTEMINFORMATION
       MOV  0,@NAMPTR         * DA MIT MYARC-WDS KEINE RECORD-SPEZIFIKATION BEIM
       BLWP @DSRLNK           * KATALOG ERLAUBT!
       DATA >0008             *
       JEQ  CLSERR            *
*-----------------------------*
       CLR  3
LOOPR  MOV  @PABPOI,0
       AI   0,>9
       MOV  0,@NAMPTR
       BLWP @DSRLNK
       DATA >0008
       JEQ  CLSERR
       LI   0,PABBUF
       BLWP @VSBR
       SRL  1,8               * LAENGEN-BYTE
       JEQ  CLOSEN
*-----------------------------+
       INC  1                 ! DATEINAME HOLEN
       MOV  1,2               !
       LI   1,DATNAM          !
       BLWP @VMBR             !
       A    2,0               !
*-----------------------------*
       BLWP @GFLOAT           * GET FLOATINGPOINT AND CONVERT TO INTEGER
       MOV  @NUMBER,@TYP      * (TYPE)
       BLWP @GFLOAT           * GET RECORD
       MOV  @NUMBER,@RECORD
       BLWP @GFLOAT           * GET LENGHT
       MOV  @NUMBER,@LENGTH
       BL   @CREATE
*-----------------------------*
       C    @TYP,@DIRECT      * TYPE DIRECTORY?
       JNE  NODIRC            *
       MOVB @SPFAD,2          * SAVE SPFAD-LAENGE
       MOVB @DPFAD,6          * SAVE DPFAD-LAENGE
       AB   @DATNAM,@SPFAD    *
       MOVB @DATNAM,3         *
       SRL  3,8               *
       LI   4,DATNAM+1        *
       MOV  2,5               *
       SRL  5,8               *
       AI   5,SPFAD+1         *
MKENME MOVB *4+,*5+           *
       DEC  3                 *
       JNE  MKENME            *
       MOVB @POINT,*5         *
       AB   @H01,@SPFAD       *
       A    @H0020,@GWSPOI    *
       A    @MAXPAB,@PABPOI   *
       MOV  @GWSPOI,@GETCAT   *
       BLWP @DIRPRO           *
       BLWP @GETCAT           *
       S    @H0020,@GWSPOI    *
       S    @MAXPAB,@PABPOI   *
       MOVB 2,@SPFAD          *
       MOVB 6,@DPFAD          *
       BLWP @DIREPI           *
       JMP  LOOPR             * DIRECTORY NUR CREATE DATE!!!
*-----------------------------*
NODIRC BL   @EDIT
       BLWP @DATOPE
       JMP  LOOPR
CLSERR
CLOSEN MOV  @PABPOI,0
       MOVB @CLOSE,1
       BLWP @VSBW
       AI   0,>9
       MOV  0,@NAMPTR
       BLWP @DSRLNK
       DATA >0008
       RTWP
 
*******************************
*                             *
*      DATEIOPERATION         *
*                             *
*******************************
DATOPE DATA DATWS,DATPG
NAME   BSS  >A
SCROLL BSS  >320              * 10 ZEILEN A 80 ZEICHEN
DATWS  BSS  >20
DATPG  LI   2,NAME
       LI   3,>A
DATLOP MOVB @CLEAR,*2+
       DEC  3
       JNE  DATLOP
       LI   2,NAME
       LI   3,DATNAM+1
       MOVB @DATNAM,4
       SRL  4,8
DATLO1 MOVB *3+,*2+
       DEC  4
       JNE  DATLO1
       LI   0,>820            * DATEINAME
       LI   1,NAME
       LI   2,>A
       BLWP @VMBW
       AI   0,>C
       MOV  @TYP,1
       SLA  1,3
       AI   1,DATTXT
       LI   2,>8
       BLWP @VMBW
       AI   0,>9
       MOV  @LENGTH,3
       BLWP @ZAHL
       AI   0,>9
       MOV  @RECORD,3
       BLWP @ZAHL
       AI   0,>A
       LI   1,CDATE+1
       LI   2,>13
       BLWP @VMBW
       AI   0,>15
       LI   1,EDATE+1
       BLWP @VMBW
 
       LI   0,>550            * SCROLL
       LI   1,SCROLL
       LI   2,>320
       BLWP @VMBR
       LI   0,>500
       BLWP @VMBW
       LI   0,>AAA
       LI   2,>64
       BLWP @VMBR
       LI   0,>AA0
       BLWP @VMBW
       LI   0,>820            * CLEAR LAST LINE
       MOVB @BYTE20,1
       LI   2,>4F
       BLWP @VSBW
LASCLR MOVB 1,@>8C00
       DEC  2
       JNE  LASCLR
       LI   0,>B04            * INKLUSIVE BLINKATTRIBUTE!
       MOVB @BYTE00,1
       LI   2,>9
       BLWP @VSBW
LASCOL MOVB 1,@>8C00
       DEC  2
       JNE  LASCOL
 
       INC  @FILE#
       LI   0,>337
       MOV  @FILE#,3
       BLWP @ZAHL
 
       LI   0,SPFAD
       LI   1,DPFAD
       LI   2,NAME
       LI   3,NAME
       BLWP @COPYFI
       MOVB @>8350,@>8350
       JEQ  DATAOK
       LI   0,>AFA
       MOVB @BYTEFF,1
       LI   2,>9
       BLWP @VSBW
LASERR MOVB 1,@>8C00
       DEC  2
       JNE  LASERR
       INC  @ERROR#
       LI   0,>35F
       MOV  @ERROR#,3
       BLWP @ZAHL
       LI   0,>1E0
       BLWP @PRLINE
       LI   0,>230
       BLWP @PRLINE
       LI   0,>7D0
       BLWP @PRLINE
       BLWP @ERROR            * PRINT FEHLER-CODE
       LI   0,>A0             * BLANKLINE
       BLWP @PRLINE
DATAOK RTWP
 
*******************************
*                             *
*      DIRECTOTY-OPERATION    *
*                             *
*******************************
DIRPRO DATA DIROWS,DIRPPG     * PROLOG
DIROWS BSS  >20
DIRPPG LI   0,>0E01
       BLWP @VWTR
       LI   2,NAME
       LI   3,>A
DIRPLO MOVB @CLEAR,*2+
       DEC  3
       JNE  DIRPLO
       LI   2,NAME
       LI   3,DATNAM+1
       MOVB @DATNAM,4
       SRL  4,8
DIRPL1 MOVB *3+,*2+
       DEC  4
       JNE  DIRPL1
       LI   0,DPFAD           * PFAD SETZEN
       BLWP @SETPAT
       LI   0,NAME
       BLWP @CDIR             * KEIN ERROR-CHECKING, SONST ERROR WENN DIR SCHON
       MOVB @DPFAD,5          * EXISTENT!!
       AB   @DATNAM,@DPFAD
       MOVB @DATNAM,3
       SRL  3,8
       LI   4,DATNAM+1
       SRL  5,8
       AI   5,DPFAD+1
DMKE   MOVB *4+,*5+
       DEC  3
       JNE  DMKE
       MOVB @POINT,*5
       AB   @H01,@DPFAD
       LI   0,>0E00
       BLWP @VWTR
       LI   0,>201
       LI   1,SPFAD+1
       MOVB @SPFAD,2
       SRL  2,8
       BLWP @VMBW
       AI   0,>50
       LI   1,DPFAD+1
       MOVB @DPFAD,2
       SRL  2,8
       BLWP @VMBW
       RTWP
 
*******************************
*                             *
*      DIRECTOTY-OPERATION    *
*                             *
*******************************
DIREPI DATA DIROWS,DIREPG     * EPILOG
DIREPG LI   0,>201
       LI   1,LINEBL
       LI   2,>28
       BLWP @VMBW
       AI   0,>50
       BLWP @VMBW
       LI   0,>201
       LI   1,SPFAD+1
       MOVB @SPFAD,2
       SRL  2,8
       BLWP @VMBW
       AI   0,>50
       LI   1,DPFAD+1
       MOVB @DPFAD,2
       SRL  2,8
       BLWP @VMBW
       RTWP
 
*******************************
*                             *
*      GET CREATE-DATE        *
*                             *
*******************************
CREATE MOV  11,10
       BLWP @GFLOAT           * CREATE SEC
       MOV  @NUMBER,@CSEC
       BLWP @GFLOAT           * CREATE MIN
       MOV  @NUMBER,@CMIN
       BLWP @GFLOAT           * CREATE HOU
       MOV  @NUMBER,@CHOU
       BLWP @GFLOAT           * CREATE DAY
       MOV  @NUMBER,@CDAY
       BLWP @GFLOAT           * CREATE MON
       MOV  @NUMBER,@CMON
       BLWP @GFLOAT           * CREATE YEA
       MOV  @NUMBER,@CYEA
       LI   5,CDATE
       LI   6,>14
       LI   7,>3000
CLOOP  MOVB 7,*5+
       DEC  6
       JNE  CLOOP
       LI   1,>1300
       MOVB 1,@CDATE
       MOVB @POINT,@CDATE+3
       MOVB @POINT,@CDATE+6
       MOVB @CLEAR,@CDATE+1
       MOVB @CLEAR,@CDATE+11
       MOVB @CLEAR,@CDATE+12
       MOVB @DOPPEL,@CDATE+14
       MOVB @DOPPEL,@CDATE+17
       LI   5,CDATE+2
       MOV  @CDAY,7
       BL   @CIS              * CONVERT INTEGER TO STRING
       LI   5,CDATE+5
       MOV  @CMON,7
       BL   @CIS
       LI   5,CDATE+10
       MOV  @CYEA,7
       BL   @CIS
       LI   5,CDATE+13
       MOV  @CHOU,7
       BL   @CIS
       LI   5,CDATE+16
       MOV  @CMIN,7
       BL   @CIS
       LI   5,CDATE+19
       MOV  @CSEC,7
       BL   @CIS
       B    *10
 
*******************************
*                             *
*      GET EDIT-DATE          *
*                             *
*******************************
EDIT   MOV  11,10
       BLWP @GFLOAT           * EDIT SEC
       MOV  @NUMBER,@ESEC
       BLWP @GFLOAT           * EDIT MIN
       MOV  @NUMBER,@EMIN
       BLWP @GFLOAT           * EDIT HOU
       MOV  @NUMBER,@EHOU
       BLWP @GFLOAT           * EDIT DAY
       MOV  @NUMBER,@EDAY
       BLWP @GFLOAT           * EDIT MON
       MOV  @NUMBER,@EMON
       BLWP @GFLOAT           * EDIT YEA
       MOV  @NUMBER,@EYEA
       LI   5,EDATE
       LI   6,>14
       LI   7,>3000
ELOOP  MOVB 7,*5+
       DEC  6
       JNE  ELOOP
       LI   1,>1300
       MOVB 1,@EDATE
       MOVB @POINT,@EDATE+3
       MOVB @POINT,@EDATE+6
       MOVB @CLEAR,@EDATE+1
       MOVB @CLEAR,@EDATE+11
       MOVB @CLEAR,@EDATE+12
       MOVB @DOPPEL,@EDATE+14
       MOVB @DOPPEL,@EDATE+17
       LI   5,EDATE+2
       MOV  @EDAY,7
       BL   @CIS              * CONVERT INTEGER TO STRING
       LI   5,EDATE+5
       MOV  @EMON,7
       BL   @CIS
       LI   5,EDATE+10
       MOV  @EYEA,7
       BL   @CIS
       LI   5,EDATE+13
       MOV  @EHOU,7
       BL   @CIS
       LI   5,EDATE+16
       MOV  @EMIN,7
       BL   @CIS
       LI   5,EDATE+19
       MOV  @ESEC,7
       BL   @CIS
       B    *10
 
*******************************
*                             *
*      INTEGER -> STRING      *
*                             *
*******************************
CIS    LI   3,>A
CISLOP CLR  6
       DIV  3,6
       AI   7,>30
       SWPB 7
       MOVB 7,*5
       DEC  5
       MOV  6,7
       JNE  CISLOP
       RT
 
*******************************
*                             *
*      GET FLOATINGPOINT      *
*                             *
*******************************
GFLOAT DATA GFWS,GFPG
LENFLO DATA >0009
GFWS   BSS  >20
GFPG   MOV  *13,0
       INC  0
       LI   1,NUMBER
       LI   2,>8
       BLWP @VMBR
       BLWP @CFI
       A    @LENFLO,*13
       RTWP
 
*******************************
*                             *
*      CONVERT FLOAT->INTEGER *
*                             *
*******************************
CFI    DATA CFIWS,CFIPG
NUMLOW BYTE >3F
NUMHUN BYTE >41
NUMTAU BYTE >42
NUMRUN BYTE >32
       EVEN
HUNDER DATA >0064
NUMBER BSS  >8
CFIWS  BSS  >20
CFIPG  MOV  @NUMBER,4
       JEQ  CFIEND
       CLR  0
       LI   2,NUMBER+1
       CLR  3
       ABS  @NUMBER
       CB   @NUMBER,@NUMLOW
       JLT  CFINUL
       JEQ  CFIRUN
       CB   @NUMBER,@NUMHUN
       JLT  CFIUHU
       JEQ  CFIHUN
       CB   @NUMBER,@NUMTAU
       JGT  CFIOVE
       MOVB *2+,@CFIWS+1
       MPY  @HUNDER,0
       MOV  1,0
CFIHUN MOVB *2+,@CFIWS+7
       A    3,0
       MPY  @HUNDER,0
       MOV  0,0
       JNE  CFIOVE
       MOV  1,0
CFIUHU MOVB *2+,@CFIWS+7
       A    3,0
       JOC  CFIOVE
CFIRUN CB   *2+,@NUMRUN
       JL   CFINUL
       INC  0
       JOC  CFIOVE
CFINUL MOV  0,@NUMBER
       JMP  CFIEND
CFIOVE SETO @NUMBER
CFIEND RTWP
 
*******************************
*                             *
*      DISPLAY ZAHL (RECHTS)  *
*                             *
*******************************
ZAHL   DATA ZAHLWS,ZAHLPG
ZAHLWS BSS  >20
ZAHLPG MOV  *13,0
       AI   0,>5
       MOV  @>0006(13),3
       LI   4,>A
ZAHLLO CLR  2
       DIV  4,2
       AI   3,>30
       SWPB 3
       MOVB 3,1
       BLWP @VSBW
       DEC  0
       MOV  2,3
       JNE  ZAHLLO
       RTWP
 
********************************************************************************
*                                                                              *
*      LOW-LEVEL OPERATIONEN AUF HARDDISK-CONTROLLER!!!                        *
*                                                                              *
********************************************************************************
VDP1   EQU  >0000
VDP2   EQU  >0040
VDP3   EQU  >0080
 
MAXSEK DATA >003F             * MAXIMALE ANZAHL VON SEKTOREN FUER EIN TRANSFER
 
DRIVE# BSS  >2                                                           BLANKS
ACCNAM BSS  >A                * IMMER 10 ZEICHEN LINKSBUENDIG, AUFGEFUELLT MIT
DIRNAM BSS  >A                * WIE ACCESS-NAME
       EVEN
 
*******************************
*                             *
*      KOPIEREN EINER DATEI   *
*                             *
*******************************
COPYFI DATA COPYWS,COPYPG     * R0 POINTER AUF SOURCE-PATH
COPYWS BSS  >20               * R1 POINTER AUF DESTINATION-PATH
COPYPG LI   0,>0E01           * R2 POINTER AUF SOURCE-FILE
       BLWP @VWTR             * R3 POINTER AUF DESTINATION-FILE
       CLR  12                * VWTR AUF >0E01, SOMIT 16K SPEICHER!
TRLOOP MOV  @>0000(13),0      * R12 IST FLAG FUER PARAMETER-PATHING
       BLWP @SETPAT
       MOVB @>8350,@>8350
       JNE  COPYER
       MOV  12,12             * FLAG GESETZ?
       JNE  NINFO1
       MOV  @>0004(13),0
       CLR  1                 * PARAMETER-PATHING
       BLWP @INPUT
       MOVB @>8350,@>8350
       JNE  COPYER
       MOVB @>830A,6          * R6/R7 32-BIT FUER RECORDS ALLOCATED
       SRL  6,8
       MOV  @>8302,7
       CLR  8                 * R8/R9 32-BIT AKTUELLE SEKTOR-NUMMER
       CLR  9
NINFO1 LI   0,VDP3            * READ SEKTOREN
       MOV  0,@>8300
       MOVB @COPYWS+17,@>830A
       MOV  9,@>8302
       MOV  @>0004(13),0
       MOV  6,6
       JEQ  CHECK1
       MOV  @MAXSEK,1
       JMP  GOON1
CHECK1 C    @MAXSEK,7
       JGT  CHECK2
       MOV  @MAXSEK,1
       JMP  GOON1
CHECK2 MOV  7,1
GOON1  BLWP @INPUT
       MOVB @>8350,@>8350
       JNE  COPYER
       MOV  @>0002(13),0      * DESTINATION-PATH, WRITE SEKTOREN
       BLWP @SETPAT
       MOVB @>8350,@>8350
       JNE  COPYER
       MOV  12,12             * FLAG GESETZT?
       JNE  NINFO2
       MOVB @COPYWS+13,@>830A * ALTEN SEKTOREN-STAND EINSETZEN
       MOV  7,@>8302
       MOV  @>0006(13),0
       CLR  1                 * CREATE FILE-DESCRIPTOR
       BLWP @OUTPUT
       MOVB @>8350,@>8350
       JNE  COPYER
       SETO 12                * NUR EINMAL PARAMETER-PATHING
NINFO2 LI   0,VDP3            * SEKTOREN SCHREIBEN
       MOV  0,@>8300
       MOVB @COPYWS+17,@>830A
       MOV  9,@>8302
       MOV  @>0006(13),0
       MOV  6,6
       JEQ  CHECK3
       MOV  @MAXSEK,1
       JMP  GOON2
CHECK3 C    @MAXSEK,7
       JGT  CHECK4
       MOV  @MAXSEK,1
       JMP  GOON2
CHECK4 MOV  7,1
GOON2  BLWP @OUTPUT
       MOVB @>8350,@>8350
       JNE  COPYER
       A    1,9
       JNC  SKIP1
       INC  8
SKIP1  S    1,7
       JOC  SKIP2
       DEC  6
SKIP2  MOV  6,6
       JNE  LOOPOK
       MOV  7,7
       JEQ  COPYER
LOOPOK B    @TRLOOP
COPYER LI   0,>0E00           * ALTES VDP-SPACE
       BLWP @VWTR
       RTWP
 
*******************************
*                             *
*      PFAD SETZEN R0 POINTER *
*                             *
*******************************
SETPAT DATA PATHWS,PATHPG
PDATAP DATA >0127
PMASK  BYTE >F0
       EVEN
PATHWS BSS  >20
PATHPG CLR  @DRIVE#
       MOV  *13,1
       MOVB @>0004(1),@DRIVE#+1
       SZCB @PMASK,@DRIVE#+1
       MOVB @DRIVE#+1,@>834C
       LI   0,VDP1
       MOVB *1,2
       SRL  2,8
       INC  2
       BLWP @VMBW
       MOV  0,@>834E
       CLR  @>8350
       LI   0,VDP2
       LI   1,PDATAP
       LI   2,>2
       BLWP @VMBW
       MOV  0,@>8356
       BLWP @DSRLNK
       DATA >A
       RTWP
 
*******************************
*                             *
*      WRITE SEKTOREN         *
*                             *
*******************************
OUTPUT DATA OUTWS,OUTPG
ODATA  DATA >0125
OUTWS  BSS  >20
OUTPG  MOVB @DRIVE#+1,@>834C
       MOVB @>0003(13),@>834D
       LI   0,VDP1
       MOV  *13,1
       LI   2,>A
       BLWP @VMBW
       MOV  0,@>834E
       CLR  @>8350
       LI   0,VDP2
       LI   1,ODATA
       LI   2,>2
       BLWP @VMBW
       MOV  0,@>8356
       BLWP @DSRLNK
       DATA >A
       RTWP
 
*******************************
*                             *
*      READ SEKTOREN          *
*                             *
*******************************
INPUT  DATA INWS,INPG
IDATA  DATA >0124
INWS   BSS  >20
INPG   MOVB @DRIVE#+1,@>834C
       MOVB @>0003(13),@>834D
       LI   0,VDP1
       MOV  *13,1
       LI   2,>A
       BLWP @VMBW
       MOV  0,@>834E
       CLR  @>8350
       LI   0,VDP2
       LI   1,IDATA
       LI   2,>2
       BLWP @VMBW
       MOV  0,@>8356
       BLWP @DSRLNK
       DATA >A
       RTWP
 
*******************************
*                             *
*      MAKE DIRECTORY         *
*                             *
*******************************
CDIR   DATA CDIRWS,CDIRPG
CDATA  DATA >0128
CDIRWS BSS  >20
CDIRPG MOVB @DRIVE#+1,@>834C
       LI   0,VDP1
       MOV  *13,1
       LI   2,>A
       BLWP @VMBW
       MOV  0,@>834E
       CLR  @>8350
       LI   0,VDP2
       LI   1,CDATA
       LI   2,>2
       BLWP @VMBW
       MOV  0,@>8356
       BLWP @DSRLNK
       DATA >A
       RTWP
 
*******************************
*                             *
*      DELETE DIRECTORY       *
*                             *
*******************************
DDIR   DATA DDIRWS,DDIRPG
DDATA  DATA >0129
DDIRWS BSS  >20
DDIRPG MOVB @DRIVE#+1,@>834C
       LI   0,VDP1
       MOV  *13,1
       LI   2,>A
       BLWP @VMBW
       MOV  0,@>834E
       CLR  @>8350
       LI   0,VDP2
       LI   1,DDATA
       LI   2,>2
       BLWP @VMBW
       MOV  0,@>8356
       BLWP @DSRLNK
       DATA >A
       RTWP
 
*******************************
*                             *
*      ERROR-AUSGABE AUF PRT  *
*                             *
*******************************
ERROR  DATA ERRWS,ERRPG
ERRTXT TEXT 'Falscher Geraetename            '
       TEXT 'Write-Protected                 '
       TEXT 'Fehlerhafte Dateiart            '
       TEXT 'Nicht unterstuetzte Operation   '
       TEXT 'Ausserhalb des Speicherbereichs!'
       TEXT 'Operation hinter Dateiende      '
       TEXT 'Hardware Fehler!!!!             '
       TEXT 'Dateifehler (nicht vorhanden)   '
ERRWS  BSS  >20
ERRPG  MOVB @>8350,7
       SRL  7,13
       SLA  7,5
       AI   7,ERRTXT
       LI   8,>20
       BLWP @PRINT
       LI   7,PRLDAT
       LI   8,>2
       BLWP @PRINT
       RTWP
 
*******************************
*                             *
*      PRINT SCREEN-LINE      *
*                             *
*******************************
PRLINE DATA PRLWS,PRLPG
PRLDAT DATA >0D0A             * CRLF
PRLLIN BSS  >50
PRLWS  BSS  >20
PRLPG  MOV  *13,0
       LI   1,PRLLIN
       LI   2,>50
       BLWP @VMBR
       LI   7,PRLLIN
       LI   8,>50
       BLWP @PRINT
       LI   7,PRLDAT
       LI   8,>2
       BLWP @PRINT
       RTWP
 
*******************************
*                             *
*      PRINT FORM-FEED        *
*                             *
*******************************
FFEED  DATA FFWS,FFPG
FFDATA DATA >0C0D             * FFCR
FFWS   BSS  >20
FFPG   LI   7,FFDATA
       LI   8,>2
       BLWP @PRINT
       RTWP
 
*******************************
*                             *
*      PRINT-ROUTINE          *
*                             *
*******************************
PRINT  DATA PRTWS,PRTPG
PRTWS  BSS  >20
PRTPG  MOV  @>000E(13),1
       MOV  @>0010(13),2
       LI   12,>1300
       SBO  0
       SBO  7
       SBZ  1
       SBO  2
PRTLOP TB   2
       JEQ  PRTLOP
       MOVB *1+,@>5000
       SBZ  2
WAITPR TB   2
       JNE  WAITPR
       SBO  2
       DEC  2
       JNE  PRTLOP
       SBZ  7
       SBZ  0
       RTWP
 
       END  SHOW
    

eMail:Koplien@TU-Harburg.d400.DE

© Dr. Henry Koplien