FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   1

      1                         ;^Z80^
      3                         ;NAME ^Rev 01 - DTT^
      4
      5                         De_DDP_MANAGER MACRO              ;Header Rev. 5
      6                                         .GOTO Ede_DDP_MANAGER
      7
      8                          Project:       H132, VS
      9
     10                          ******************************
     11                          *                            *
     12                          *  DDP_MANAGER           DTT   *
     13                          *                            *
     14                          ******************************
     15
     16                                Rev History
     17                                Rev.  Date         Name      Change
     18                                 1             DTT       DEVICE_ID --> DEV_ID
     19                                 0    9/9/83   DTT       Initial Pseudo Code
     20
     21                          Function:
     22
     23                               CONTROLS THE DIGITAL DATA PACK FOR READS AND WRITES SETUP BY TAPE_INTERFACE
     24
     25                         Ede_DDP_MANAGER  MEND
     26                         Pseudo_code_DDP_MANAGER    MACRO  ;Pseudocode macro area
     27                                            .GOTO Ep_DDP_MANAGER
     28
     29
     30
     31                         Ep_DDP_MANAGER  MEND
     32
     33
     34                         ;Inputs/Outputs passed in registers
     35                         ;  CALLED EVERY 60th SECOND BY THE NMI
     36
     37
     38           0008          TAPE1          EQU  08H
     39           0081          READ_TAPE      EQU  81H
     40           0082          WRITE_TAPE     EQU  82H
     41           0087          KILL_TAPE      EQU  87H
     42                          INCLUDE P_DCB_EQ.ASM                  ;INCLUDE P_DCB_EQU:EOS
     43                     A   ;THESE OUR EQUATES THAT ARE USED BY THE EOS PROGRAMS TO REFEFERNCE
     44                     A   ;PCB AND DCB INFORMATION
     45                     A
     46                     A
     47                     A   ;PCB EQUATES
     48                     A
     49           0000      A   P_COM_STAT             EQU     0       ; THIS IS THE COMMAND/STATUS BYTE
     50                     A
     51           0001      A   P_REL_ADDR             EQU     1       ; THIS IS THE RELOCATION ADDRESS
     52           0001      A   P_REL_ADDR_LO          EQU     P_REL_ADDR+0
     53           0002      A   P_REL_ADDR_HI          EQU     P_REL_ADDR+1
     54                     A
     55           0003      A   P_NUM_DCBS             EQU     3       ; THIS IS THE NUMBER OF DCBS DEFINED
     56                     A

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   2

     57                     A
     58           0004      A   P_SIZE                 EQU     4       ; THE NUMBER OF BYTES IN THE PCB
     59                     A
     60                     A
     61                     A
     62                     A   ;DCB EQUATES
     63                     A
     64           0000      A   D_COM_STAT            EQU     0       ; THE COMMAND STATUS BYTE
     65                     A
     66           0001      A   D_BUF_ADR             EQU     1       ; ADDRESS OF THE DATA BUFFER
     67           0001      A   D_BUF_ADR_LO          EQU     D_BUF_ADR+0
     68           0002      A   D_BUF_ADR_HI          EQU     D_BUF_ADR+1
     69                     A
     70           0003      A   D_BUF_LEN             EQU     3       ; THE LENGTH OF THE DATA BUFFER
     71           0003      A   D_BUF_LEN_LO          EQU     D_BUF_LEN+0
     72           0004      A   D_BUF_LEN_HI          EQU     D_BUF_LEN+1
     73                     A
     74           0005      A   D_SECT_NUM            EQU     5       ; THE BLOCK DEVICE SECTOR NUMBER
     75                     A
     76           0009      A   D_SEC_DEV_ID          EQU     9       ; SECONDARY DEVICE ID
     77                     A
     78           000E      A   D_RET_COUNT           EQU     14      ; THE NUMBER OF TIMES A COMMAND WILL
     79                     A                                          ; BE RETRIED.
     80           000E      A   D_RET_COUNT_LO        EQU     D_RET_COUNT+0
     81           000F      A   D_RET_COUNT_HI        EQU     D_RET_COUNT+1
     82                     A
     83           0010      A   D_DEV_ADDR            EQU     16      ; THE DEVICE ADDRESS (ID)
     84                     A
     85           0011      A   D_MAX_MSG_LEN         EQU     17      ; THE MAX LENGTH OF A DATA STRING
     86                     A                                          ; FOR THE DEVICE
     87           0011      A   D_MAX_MSG_LEN_LO      EQU     D_MAX_MSG_LEN+0
     88           0012      A   D_MAX_MSG_LEN_HI      EQU     D_MAX_MSG_LEN+1
     89                     A
     90           0013      A   D_DEV_TYPE            EQU     19      ; THE DEVICE TYPE, BLOCKED OR CHARACTGER
     91                     A
     92           0014      A   D_STATUS_FLAGS        EQU     20      ; DEVICE DEPENDENT STATUS FLAGS
     93                     A
     94                     A
     95                     A
     96           0015      A   D_SIZE                EQU     21      ; THE NUMBER OF BYTES IN THE DCB
     97                     A
     98                     A
     99                     A
    100                     A   ;DEVICE ID'S FOR THE KEYBOARD, PRINTER, AND TAPE DRIVE
    101                     A
    102           0001      A   KEYBOARD_ID            EQU     1       ; KYBD  ID
    103           0002      A   PRINTER_ID             EQU     2       ; PRINTER ID
    104           0008      A   TAPE_ID                EQU     8       ; TAPE DRIVE ID
    105                     A
    106           0002      A   ERROR_RETRY            EQU     2       ; MAX RETRYS ON ERRORS, READ_BLOCK AND WRITE_BLOCK
    107                     A
    108           000F      A   MAX_DEV_ADDR           EQU     15      ; HIGHEST POSSIBLE DEVICE ADDRESS
    109                     A                                          ;  ON NETWORK
    110                     A
    111                     A
    112                     A   ;PCB COMMAND EQUATES
    113                     A

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   3

    114           0000      A   PCB_IDLE               EQU     0       ; THIS IS AN IDLE STATE
    115                     A
    116           0001      A   PCB_SYNC1              EQU     1       ; SYNC BYTE 1
    117           0081      A   PCB_SYNC1_ACK          EQU     PCB_SYNC1+80H
    118                     A
    119           0002      A   PCB_SYNC2              EQU     2       ; SYNC BYTE 2
    120           0082      A   PCB_SYNC2_ACK          EQU     PCB_SYNC2+80H
    121                     A
    122           0003      A   PCB_SNA                EQU     3       ; SET NEW PCB ADDRESS
    123           0083      A   PCB_SNA_ACK            EQU     PCB_SNA+80H
    124                     A
    125           0004      A   PCB_RESET              EQU     4       ; RESET ALL NODES
    126           0084      A   PCB_RESET_ACK          EQU     PCB_RESET+80H
    127                     A
    128           0005      A   PCB_WAIT               EQU     5       ;
    129           0085      A   PCB_WAIT_ACK           EQU     PCB_WAIT+80H
    130                     A
    131                     A
    132                     A
    133                     A   ;DCB COMMAND EQUATES
    134                     A
    135           0000      A   DCB_IDLE               EQU     00      ;
    136           0001      A   DCB_STATUS             EQU     01      ; REQUEST STATUS
    137           0002      A   DCB_RESET              EQU     02      ; RESET NODE
    138           0003      A   DCB_WR                 EQU     03      ; WRITE DATA TO DEVICE
    139           0004      A   DCB_RD                 EQU     04      ; READ DATA FROM DEVICE
    140                     A
    141                     A
    142                     A
    143           FEC0      A   INIT_PCB_ADDR          EQU     0FEC0H  ; INITIAL ADDRESS OF THE PCB
    144                     A
    145                     A
    146                     A
    147                     A   ;GENERAL USAGE EQUATES FOR USE WITH DCB INFO
    148                     A
    149           0007      A   CMND_COMPLETE_BIT      EQU     7       ; THIS IS THE BIT THAT INDICATES THE
    150                     A                                          ; COMMAND HAS BEEN PROCESSED.
    151           0080      A   CMND_FIN_STATUS        EQU     80H     ; THIS IS THE STATUS OF A COMMAND
    152                     A                                          ; THAT COMPLETED WITH NO ERRORS
    153           008C      A   KBD_NAK                EQU     8CH     ; INDICATES NO KEY READY
    154                     A
    155           0086      A   PR_NAK                 EQU     86H     ; INDICATES THE PRINTER IS BUSY
    156                     A
    157           0003      A   ETX                    EQU     03H     ; END OF DATA STRING INDICATOR
    158                     A
    159           009B      A   TIMEOUT                EQU     9BH     ; DEVICE TIMED OUT
    160                          INCLUDE EOS_ERRS.ASM                  ;INCLUDE EOS_ERRS:EOS
    161                     A
    162           0001      A   DCB_NOT_FOUND          EQU     1       ; THERE WAS NO DCB FOR THE DEVICE REQUESTED.
    163           0002      A   DCB_BUSY               EQU     2       ; DCB IS BUSY
    164           0003      A   DCB_IDLE_ERR           EQU     3       ; DCB IS IDLE
    165                     A
    166           0004      A   NO_DATE_ERR            EQU     4
    167           0005      A   NO_FILE_ERR            EQU     5
    168           0006      A   FILE_EXISTS_ERR        EQU     6
    169           0007      A   NO_FCB_ERR             EQU     7
    170           0008      A   MATCH_ERR              EQU     8

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   4

    171           0009      A   BAD_FNUM_ERR           EQU     9
    172           000A      A   EOF_ERR                EQU     10
    173           000B      A   TOO_BIG_ERR            EQU     11
    174           000C      A   FULL_DIR_ERR           EQU     12
    175           000D      A   FULL_TAPE_ERR          EQU     13
    176           000E      A   FILE_NM_ERR            EQU     14               ;DLS(8/28/83)
    177           000F      A   RENAME_ERR             EQU     15               ;DLS(8/30/83)
    178           0010      A   DELETE_ERR             EQU     16               ;DLS(8/30/83)
    179           0011      A   RANGE_ERR              EQU     17               ;DLS(8/31/83)
    180                     A
    181           0012      A   CANT_SYNC1             EQU     18
    182           0013      A   CANT_SYNC2             EQU     19
    183           0014      A   PRT_ERR                EQU     20
    184                     A
    185           0015      A   RQ_TP_STAT_ERR         EQU     21
    186           0016      A   DEV_DEPD_ERR           EQU     22
    187
    188                         ;*EXTERNAL DATA AREAS USED:
    189
    190                                         EXT _START_RD_1_BLOCK
    191                                         EXT _FIND_DCB
    192                                         EXT _START_WR_1_BLOCK
    193                                         EXT _END_RD_1_BLOCK
    194
    195                         NEXT_STATE      MACRO LP1
    196                                  LD     A,LP1                          ;SOMETHING IN THE COMMAND BUFFER!
    197                                  LD     [D_TAPE_STATE],A
    198                                  LD     HL,[STATE_VECTORS+LP1+LP1]
    199                                  LD     [NEXT_STATE_ADDRESS],HL
    200                                  JP     END_OF_STATE_MACHINE
    201                                  MEND
    202
    203
    204
    205                                GLOBAL  DEV_ID
    206                                GLOBAL  INITIALIZE_DDP,INITIALIZE_TAPE,INIT_TAPE,INIT_DDP
    207   0000'                 INITIALIZE_DDP:
    208   0000'                 INITIALIZE_TAPE:
    209   0000'                 INIT_TAPE:
    210   0000'                 INIT_DDP:
    211   0000'                 INIT_CODE:
    212   0000' AF                       XOR    A
    213   0001' 32 0200"                 LD     (D_CSA),A
    214   0004' 32 0100"                 LD     (D_TAPE_STATE),A
    215   0007' 3D                       DEC    A
    216   0008' 32 0000"                 LD     (D_OVERLAY_NUMBER),A
    217   000B' 2A 1200'                 LD     HL,(STATE_VECTORS+0000)          ;IDLE STATE
    218   000E' 22 D200'                 LD     (NEXT_STATE_ADDRESS),HL
    219   0011' C9                       RET
    220   0012'                 STATE_VECTORS:
    221   0012' 1F00'                    DEFW   STATE_IDLE                       ;STATE 0
    222   0014' 2600'                    DEFW   STATE_1                          ;      1  REQUEST FOR I/O FOR 1 BLOCK
    223   0016' 5800'                    DEFW   STATE_2                          ;      2  TEST FOR COMPLETE AND REQUEST STATUS
    224   0018' 7B00'                    DEFW   STATE_3                          ;      3  TEST STATUS
    225           001A          LEN_INIT EQU $-INIT_CODE
    226                         ;*
    227                         ;*

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   5

    228
    229   001A'   0001                   DEFS   1BH-LEN_INIT    ;MAKE SURE THE MANAGER VECTOR IS AT THE SAME LOC AS THE S/IO_MANAGER
    230
    231
    232                                GLOBAL  DDP_MANAGER
    233                                GLOBAL  TAPE_MANAGER
    234   001B'                 TAPE_MANAGER:
    235   001B'                 DDP_MANAGER:
    236                         ;*  BEGIN        (Ordinarily registers are restored; retain only the pushes and pops you need.)
    237                         ;*
    238                         ;*
    239                         ;*
    240                         ;*                FALL THRU TO CASE STATEMENT     ;IF STATE = 6,7
    241                         ;*                                                ;FILE IS TRYING TO CLOSE
    242                         ;*
    243                         ;*
    244                         ;*        CASE    D_TAPE_STATE,(IDLE,STATE_1,STATE_2,STATE_3,INIT_DDP)
    245                         ;*
    246   001B'                 CASE_STATE:
    247                         ;*
    248                         ;*
    249   001B' 2A D200'                 LD     HL,[NEXT_STATE_ADDRESS]
    250   001E' E9                       JP     [HL]
    251                         ;*
    252                         ;*        IF THE MACHINE IS IDLE IT'S OK TO TEST FOR ANOTHER I/O REQUEST
    253                         ;*
    254   001F'                 STATE_IDLE:                                     ;STATE 0
    255   001F' 3A 0200"                 LD     A,[D_CSA]                 ;TEST THE COMMAND STATUS AREA
    256   0022' B7                       OR     A
    257   0023' F2 CF00'                 JP     P,END_OF_STATE_MACHINE    ;IF THE CSA CONTAINS AN ERROR CODE DON't PROCESS IT
    258                         ;*
    259                         ;*               FALL THROUGH TO STATE 1
    260                         ;*
    261   0026'                 STATE_1:
    262   0026' 3A 0200"        AB_REQ:  LD     A,(D_CSA)                          ;IF COMMAND IS TO KILL DDP COMMAND
    263   0029' FE 87                    CP     KILL_TAPE
    264   002B' CA 0000'                 JP     Z,INIT_DDP
    265                         ;*
    266                         ;*        REQUEST TO WRITE/READ A RECORD
    267                         ;*
    268
    269   002E' 2A 0300"                 LD     HL,(XFER_ADDR)
    270   0031' ED 5B 0500"              LD     DE,(BLOCK_NUM)
    271   0035' 01 0000                  LD     BC,0000H
    272   0038' 3A 0200"                 LD     A,(D_CSA)
    273   003B' FE 81                    CP     READ_TAPE
    274   003D' 3A D100'                 LD     A,(DEV_ID)
    275   0040' 20 05                    JR     NZ,EOS_TAPE_WRITE
    276   0042'                 EOS_TAPE_READ:
    277   0042' CD 0000#                 CALL   _START_RD_1_BLOCK
    278   0045' 18 03                    JR     RET_ADDR
    279   0047'                 EOS_TAPE_WRITE:
    280   0047' CD 0000#                 CALL   _START_WR_1_BLOCK
    281
    282
    283   004A'                 RET_ADDR:
    284   004A'                          NEXT_STATE 2

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   6

    285   004A' 3E 02       A            LD     A,2                          ;SOMETHING IN THE COMMAND BUFFER!
    286   004C' 32 0100"    A            LD     [D_TAPE_STATE],A
    287   004F' 2A 1600'    A            LD     HL,[STATE_VECTORS+2+2]
    288   0052' 22 D200'    A            LD     [NEXT_STATE_ADDRESS],HL
    289   0055' C3 CF00'    A            JP     END_OF_STATE_MACHINE
    290
    291                         ;*
    292                         ;*               TEST FOR ACCEPTANCE/COMPLETION OF I/O REQUEST
    293                         ;*
    294   0058'                 STATE_2:
    295   0058' 3A D100'                 LD     A,(DEV_ID)              ;TEST THE STATUS OF THE FILE
    296   005B' CD 0000#                 CALL   _END_RD_1_BLOCK
    297   005E' D2 CF00'                 JP     NC,END_OF_STATE_MACHINE           ;BETTER RETRY STATE 2
    298                         ;*
    299                         ;*        AT THIS POINT THE COMMAND HAS BEEN ACCEPTED BY THE NETWORK
    300                         ;*        IF THE ZERO FLAG IS NOT SET THERE HAVE BEEN ERRORS (09BH=TIMEOUT)
    301                         ;*
    302
    303   0061' 20 C3                    JR     NZ,STATE_1                         ;BETTER RETRY STATE 1
    304                         ;*
    305                         ;*        IF NO ERRORS THEN SET UP REQUEST STATUS OF THE TAPE DRIVE
    306                         ;*        THIS TESTS THE CHECK SUM (CRC) OF THE DATA XMITTED BY THE TAPE
    307                         ;*
    308   0063'                 STATE_2_OK:
    309                         ;*
    310   0063' 3A D100'                 LD   A,(DEV_ID)                          ;STATUS COMMAND
    311   0066' CD 0000#                 CALL _FIND_DCB
    312   0069' FD 36 00 01              LD   (IY+D_COM_STAT),DCB_STATUS
    313   006D'                          NEXT_STATE 3
    314   006D' 3E 03       A            LD     A,3                          ;SOMETHING IN THE COMMAND BUFFER!
    315   006F' 32 0100"    A            LD     [D_TAPE_STATE],A
    316   0072' 2A 1800'    A            LD     HL,[STATE_VECTORS+3+3]
    317   0075' 22 D200'    A            LD     [NEXT_STATE_ADDRESS],HL
    318   0078' C3 CF00'    A            JP     END_OF_STATE_MACHINE
    319                         ;*
    320                         ;*        IN STATE 3 TEST FOR ACCEPTANCE OF THE REQUEST FOR STATUS COMMAND
    321                         ;*
    322   007B'                 STATE_3:
    323   007B' 3A D100'                 LD   A,(DEV_ID)
    324   007E' CD 0000#                 CALL _FIND_DCB                            ;WAS THE STATUS REQUEST ACKNOWLEDGED????
    325   0081' FD CB 00 7E              BIT  CMND_COMPLETE_BIT,(IY+D_COM_STAT)
    326   0085' CA CF00'                 JP   Z,END_OF_STATE_MACHINE
    327                         ;*
    328                         ;*        IF THE COMMAND IS NOT YET ACCEPTED, COME BACK TO STATE 3 NEXT PASS
    329                         ;*
    330   0088' FD 7E 00                 LD   A,(IY+D_COM_STAT)                   ;STATUS COMMAND ACCEPTED
    331   008B' FE 80                    CP   080H
    332   008D' 20 D4                    JR   NZ,STATE_2_OK                        ;COULD NOT GET STATUS?
    333                         ;*
    334                         ;*
    335                         ;*
    336                                                                            ;SAVE THE STATUS IN REGISTER B
    337   008F' 3A D100'                 LD   A,(DEV_ID)                        ;CHECK FOR SECONDARY DEVICE ID
    338   0092' E6 F0                    AND  0F0H
    339   0094' FD 7E 14                 LD   A,(IY+D_STATUS_FLAGS)
    340   0097' 28 08                    JR   Z,DEV_0_CHECK                        ;SECONDARY_DEV_ID=0
    341   0099' CB 1F                    RR   A                                    ;GET STATUS INTO THE LOW NIBBLE

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   7

    342   009B' CB 1F                    RR   A
    343   009D' CB 1F                    RR   A
    344   009F' CB 1F                    RR   A
    345   00A1'                 DEV_0_CHECK:
    346   00A1' E6 0F                    AND  0FH
    347   00A3' C2 C600'                 JP   NZ,ERROR                             ;A BAD STATUS
    348                         ;*
    349                         ;*        IF THE COMMAND IS ACCEPTED AND THERE ARE NO ERRORS INCREMENT THE CSA DATA
    350                         ;*
    351   00A6' 2A 0300"                 LD   HL,(XFER_ADDR)                        ; A BLOCK HAS BEEN WRITTEN OR READ
    352   00A9' ED 5B 0500"              LD   DE,(BLOCK_NUM)                        ;UPDATE THE D_CSA AREA!
    353   00AD' 01 0004                  LD   BC,0400H
    354   00B0' 3A 0700"                 LD   A,(RANGE)
    355   00B3' 3D                       DEC  A
    356   00B4' CA 0000'                 JP   Z,INIT_DDP                           ;DONE WITH OVERLAY?
    357                         ;*
    358                         ;*        IF THE RANGE WAS DECREMENTED TO ZERO WE ARE DONE ELSE (WE ARE NOT?)
    359                         ;*
    360   00B7' 32 0700"                 LD   (RANGE),A
    361   00BA' 13                       INC  DE
    362   00BB' ED 53 0500"              LD   (BLOCK_NUM),DE
    363   00BF' 09                       ADD  HL,BC
    364   00C0' 22 0300"                 LD   (XFER_ADDR),HL
    365
    366   00C3' C3 2600'                 JP   STATE_1
    367
    368                         ;*
    369                         ;*               ERROR PROCESSING FROM REQUEST STATUS
    370                         ;*
    371   00C6'                 ERROR:
    372                         ;*               Errors occur after request status
    373                         ;*               Possible errors are 1=CRC error (bad data on tape)
    374                         ;*               2=block not found   3=no tape in drive  4=no drive
    375                         ;*               The user program is expected to test for errors via
    376                         ;*               TEST_TAPE in the TAPE_INTERFACE module.
    377                         ;*
    378                         ;*
    379   00C6' 32 0200"                  LD   (D_CSA),A                        ;SAVE THE ERROR CODE IN THE CSA
    380   00C9' 2A 1200'                  LD   HL,(STATE_VECTORS+0)             ;NEXT STATE = IDLE
    381   00CC' 22 D200'                  LD   (NEXT_STATE_ADDRESS),HL
    382
    383
    384                         ;*  END (DDP_MANAGER)
    385
    386   00CF'                 END_OF_STATE_MACHINE:
    387   00CF' AF                     XOR A
    388   00D0' C9                     RET
    389                         ;************************************************************************
    390                         ;*****           DEV_ID IS DEFAULT 08 FOR TAPE DRIVE 0           *****
    391                         ;************************************************************************
    392
    393
    394   00D1' 08              DEV_ID      DEFB TAPE1
    395
    396
    397                         ;************************************************************************
    398                         ;************************************************************************

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   8

    399                         ;************************************************************************
    400                                GLOBAL D_OVERLAY_NUMBER
    401                                GLOBAL D_TAPE_STATE
    402                                GLOBAL D_CSA
    403                         ;*--------------------------------------------------------------
    404                         ;*THE NEXT_STATE_ADDRESS MAY BE PUT IN DATA,PROG,OR COMN (IT'S ALL RAM TO ADAM)
    405                         ;*
    406   00D2'   0002          NEXT_STATE_ADDRESS DEFS 2
    407   00D4'                 ;*--------------------------------------------------------------
    408                         ;*               BY MAKING THE CSA COMMON IT IS EASILY LINKED
    409                         ;*               INTO EXISTING CODE
    410                          DATA
    411   0000"   0001          D_OVERLAY_NUMBER DEFS 1
    412   0001"   0001          D_TAPE_STATE     DEFS 1
    413   0002"   0006          D_CSA            DEFS 6
    414           0003"         XFER_ADDR EQU D_CSA+1
    415           0005"         BLOCK_NUM EQU XFER_ADDR+2
    416           0007"         RANGE     EQU BLOCK_NUM+2

     0 Error(s) Detected.   212 Program Bytes.     8 Data Bytes.
   113 Symbols Detected.

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page   9

Value   Symbol          Defined         Referenced:

0026' AB_REQ               262
0009  BAD_FNUM_ERR         171
0005" BLOCK_NUM            415     270   352   362   416
0012  CANT_SYNC1           181
0013  CANT_SYNC2           182
001B' CASE_STATE           246
0007  CMND_COMPLETE_BIT    149     325
0080  CMND_FIN_STATUS      151
0002  DCB_BUSY             163
0000  DCB_IDLE             135
0003  DCB_IDLE_ERR         164
0001  DCB_NOT_FOUND        162
0004  DCB_RD               139
0002  DCB_RESET            137
0001  DCB_STATUS           136     312
0003  DCB_WR               138
001B' DDP_MANAGER          235     232
0010  DELETE_ERR           178
00A1' DEV_0_CHECK          345     340
0016  DEV_DEPD_ERR         186
00D1' DEV_ID               394     205   274   295   310   323   337
0001  D_BUF_ADR             66      67    68
0002  D_BUF_ADR_HI          68
0001  D_BUF_ADR_LO          67
0003  D_BUF_LEN             70      71    72
0004  D_BUF_LEN_HI          72
0003  D_BUF_LEN_LO          71
0000  D_COM_STAT            64     312   325   330
0002" D_CSA                413     213   255   262   272   379   402   414
0010  D_DEV_ADDR            83
0013  D_DEV_TYPE            90
0011  D_MAX_MSG_LEN         85      87    88
0012  D_MAX_MSG_LEN_HI      88
0011  D_MAX_MSG_LEN_LO      87
0000" D_OVERLAY_NUMBER     411     216   400
000E  D_RET_COUNT           78      80    81
000F  D_RET_COUNT_HI        81
000E  D_RET_COUNT_LO        80
0005  D_SECT_NUM            74
0009  D_SEC_DEV_ID          76
0015  D_SIZE                96
0014  D_STATUS_FLAGS        92     339
0001" D_TAPE_STATE         412     214   286   315   401
00CF' END_OF_STATE_MACHINE
                           386     257   289   297   318   326
000A  EOF_ERR              172
0042' EOS_TAPE_READ        276
0047' EOS_TAPE_WRITE       279     275
00C6' ERROR                371     347
0002  ERROR_RETRY          106
0003  ETX                  157
0006  FILE_EXISTS_ERR      168
000E  FILE_NM_ERR          176
000C  FULL_DIR_ERR         174
000D  FULL_TAPE_ERR        175
0000' INITIALIZE_DDP       207     206
0000' INITIALIZE_TAPE      208     206

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page  10

Value   Symbol          Defined         Referenced:

0000' INIT_CODE            211     225
0000' INIT_DDP             210     206   264   356
FEC0  INIT_PCB_ADDR        143
0000' INIT_TAPE            209     206
008C  KBD_NAK              153
0001  KEYBOARD_ID          102
0087  KILL_TAPE             41     263
001A  LEN_INIT             225     229
0008  MATCH_ERR            170
000F  MAX_DEV_ADDR         108
00D2' NEXT_STATE_ADDRESS
                           406     218   249   288   317   381
0004  NO_DATE_ERR          166
0007  NO_FCB_ERR           169
0005  NO_FILE_ERR          167
0000  PCB_IDLE             114
0004  PCB_RESET            125     126
0084  PCB_RESET_ACK        126
0003  PCB_SNA              122     123
0083  PCB_SNA_ACK          123
0001  PCB_SYNC1            116     117
0081  PCB_SYNC1_ACK        117
0002  PCB_SYNC2            119     120
0082  PCB_SYNC2_ACK        120
0005  PCB_WAIT             128     129
0085  PCB_WAIT_ACK         129
0002  PRINTER_ID           103
0014  PRT_ERR              183
0086  PR_NAK               155
0000  P_COM_STAT            49
0003  P_NUM_DCBS            55
0001  P_REL_ADDR            51      52    53
0002  P_REL_ADDR_HI         53
0001  P_REL_ADDR_LO         52
0004  P_SIZE                58
0007" RANGE                416     354   360
0011  RANGE_ERR            179
0081  READ_TAPE             39     273
000F  RENAME_ERR           177
004A' RET_ADDR             283     278
0015  RQ_TP_STAT_ERR       185
0026' STATE_1              261     222   303   366
0058' STATE_2              294     223
0063' STATE_2_OK           308     332
007B' STATE_3              322     224
001F' STATE_IDLE           254     221
0012' STATE_VECTORS        220     217   287   316   380
0008  TAPE1                 38     394
0008  TAPE_ID              104
001B' TAPE_MANAGER         234     233
009B  TIMEOUT              159
000B  TOO_BIG_ERR          173
0082  WRITE_TAPE            40
0003" XFER_ADDR            414     269   351   364   415
0000# _END_RD_1_BLOCK              193   296
0000# _FIND_DCB                    191   311   324
0000# _START_RD_1_BLOCK            190   277

FILE: DDP_MANAG:TOS      HEWLETT-PACKARD: DDP_MANAGER  (c) Coleco 1983 Confidential            Tue, 15 May 1984, 20:29     Page  11

Value   Symbol          Defined         Referenced:

0000# _START_WR_1_BLOCK            192   280