HP-IL Traces (part #2) [2023-07-16]
I am currently commenting HP-IL traces for another project, but it was suggested to made them public, so here they are ...
Setup:
- HP-41CX halfnut
- 82160A HP-IL module
- PIL-Box
- pyILPER
- Virtual Scope (incoming frames: 41__to__TAPE)
- Virtual Mass Storage (82161A Cassette Drive)
- Virtual Scope (outgoing frames: TAPE__to__41)
Listings:
- HP-41 / HP-IL / WRTS (write status file, ST) [2023-07-16]
- HP-41 / HP-IL / READS (read status file, ST) [upcoming]
Listing is easier to read with "View a Printable Version" (link at the bottom)
Sylvain
HP-41 / HP-IL / WRTS (write status file, ST) [2023-07-16]
Code:
HP-41 HP-IL WRTS (WRITE STATUS)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
--------------------------------------------------------------------------------
LOOP CONFIGURATION
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
IDY 00 (600) | idy 00 (600) | loop continuity test and service request detection
-------------+--------------+---------------------------------------------------
AAU (49A) | aau (49a) | auto address unconfigure,
| | all devices must set his loop address to 31
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
AAD 1 (581) | aad 2 (582) | adressing the loop, only 1 device in the loop
--------------------------------------------------------------------------------
GET DEVICE ACCESSORY ID
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SAI (563) | | talker accessory id request
| dab 10 (010) | aid = 10h (mass storage class)
DAB 10 (010) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GO TO FIRST DIRECTORY RECORD
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDL 04 (4A4) | ddl 04 (4a4) | tape seek request
| | parameters are in the next two DAB frames
RFC (500) | rfc (500) | ready for command
DAB 00 (000) | dab 00 (000) | track 0
DAB 02 (002) | dab 02 (002) | record 2
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
COPY TAPE DIRECTORY FIRST RECORD TO BUFFER 0
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 02 (4C2) | ddt 02 (4c2) | tape read request
| | track 0 record 2 is copied into buffer 0
| | tape is now set to track 0 record 3
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
-------------+--------------+---------------------------------------------------
SEND BUFFER 0 (FIRST 32 BYTES : FIRST FILE)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 00 (4C0) | ddt 00 (4c0) | ctrl is asking the talker to send his
| | buffer 0 content on the loop
RFC (500) | rfc (500) | ready for command
SDA (560) | | send data - LIF record 32 bytes
| dab 41 (041) | filename = "ABC " (10 bytes)
DAB 41 (041) | dab 42 (042) |
DAB 42 (042) | dab 43 (043) |
DAB 43 (043) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab e0 (0e0) | filetype = 0xE0D0 (SDATA, 2 bytes)
DAB E0 (0E0) | dab d0 (0d0) |
DAB D0 (0D0) | dab 00 (000) | start block = 0x00000008 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 08 (008) |
DAB 08 (008) | dab 00 (000) | allocated blocks = 0x00000004 (file length, 4 bytes))
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 04 (004) |
DAB 04 (004) | dab 00 (000) | date+time (6 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 80 (080) | miscellaneous data (6 bytes)
DAB 80 (080) | dab 01 (001) | tbd = 0x80 0x01 0x00 0x64 0x00 0x20
DAB 01 (001) | dab 00 (000) |
DAB 00 (000) | dab 64 (064) |
DAB 64 (064) | dab 00 (000) |
DAB 00 (000) | dab 20 (020) |
NRD (542) | nrd (542) | stop sending data
DAB 20 (020) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
SEND BUFFER 0 (SECOND 32 BYTES : SECOND FILE : NONE)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 00 (4C0) | ddt 00 (4c0) | ctrl is asking the talker to send his
| | buffer 0 content on the loop
RFC (500) | rfc (500) | ready for command
SDA (560) | | send data - LIF record 32 bytes
| dab ff (0ff) | empty directory entry
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
NRD (542) | nrd (542) | stop sending data
DAB FF (0FF) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
LOOP CONFIGURATION
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
AAU (49A) | aau (49a) | auto address unconfigure,
| | all devices must set his loop address to 31
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
AAD 1 (581) | aad 2 (582) | adressing the loop, only 1 device in the loop
--------------------------------------------------------------------------------
GO TO HEADER RECORD
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
UNT (45F) | unt (45f) | first device is no longer a talker (untalk)
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDL 04 (4A4) | ddl 04 (4a4) | tape seek request
| | parameters are in the next two DAB frames
RFC (500) | rfc (500) | ready for command
DAB 00 (000) | dab 00 (000) | track 0
DAB 00 (000) | DAB 00 (000) | record 0
| | track 0 sector 0 contains the LIF Volume data
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
COPY TAPE HEADER RECORD TO BUFFER 0
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 02 (4C2) | ddt 02 (4c2) | tape read request
| | track 0 record 0 is copied into buffer 0
| | tape is now set to track 0 record 1
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
SEND BUFFER 0 (FIRST 32 BYTES : PARTIAL TAPE HEADER)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 00 (4C0) | ddt 00 (4c0) | ctrl is asking the talker to send his
| | buffer 0 content on the loop
RFC (500) | rfc (500) | ready for command
SDA (560) | | ctrl is asking the talker for his data
| | LIF Volume
| dab 80 (080) | LIF identifier = 0x8000 (2 bytes)
DAB 80 (080) | dab 00 (000) |
DAB 00 (000) | |
| dab 20 (020) | Volume Label (6 bytes)
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | |
| dab 00 (000) | Directory start block = 0x00000002 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 02 (002) |
DAB 02 (002) | |
| dab 10 (010) | LIF identifer = 0x1000 ( 2 bytes)
DAB 10 (010) | dab 00 (000) |
DAB 00 (000) | |
| dab 00 (000) | Filler, must be zero (2 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | |
| dab 00 (000) | Length of directory in blocks = 0x00000006 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 06 (006) |
DAB 06 (006) | |
| dab 00 (000) | LIF version number, must be 1 (2 bytes)
DAB 00 (000) | dab 01 (001) |
DAB 01 (001) | |
| dab 00 (000) | Filler, must be zero (2 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | |
| dab 00 (000) | Number of tracks per surface = 0x0000002 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 02 (002) |
DAB 02 (002) | |
| dab 00 (000) | Number of surfaces = 0x00000001 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 01 (001) |
NRD (542) | nrd (542) |
DAB 01 (001) | eto (540) | end of transmission ok
| | LIF info not transmitted:
| | number of blocks per track (4 bytes)
| | cassette drive -> 256 blocks per track is assume here
| | date and time that the volume was initialized (6 bytes)
--------------------------------------------------------------------------------
GO TO FIRST DIRECTORY RECORD
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDL 04 (4A4) | ddl 04 (4a4) | tape seek request
| | parameters are in the next two DAB frames
RFC (500) | rfc (500) | ready for command
DAB 00 (000) | dab 00 (000) | track 0
DAB 02 (002) | dab 02 (002) | record 2
| | track 0 sector 2 contains the directory first record
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
COPY TAPE DIRECTORY FIRST RECORD TO BUFFER 0
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 02 (4C2) | ddt 02 (4c2) | tape read request
| | track 0 record 2 is copied into buffer 0
| | tape is now set to track 0 record 3
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
SEND BUFFER 0 (FIRST 32 BYTES : FIRST FILE)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 00 (4C0) | ddt 00 (4c0) | ctrl is asking the talker to send his
| | buffer 0 content on the loop
RFC (500) | rfc (500) | ready for command
SDA (560) | | send data - LIF record 32 bytes
| dab 41 (041) | filename = "ABC " (10 bytes)
DAB 41 (041) | dab 42 (042) |
DAB 42 (042) | dab 43 (043) |
DAB 43 (043) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab e0 (0e0) | filetype = 0xE0D0 (SDATA, 2 bytes)
DAB E0 (0E0) | dab d0 (0d0) |
DAB D0 (0D0) | dab 00 (000) | start block = 0x00000008 (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 08 (008) |
DAB 08 (008) | dab 00 (000) | allocated blocks = 0x00000004 (file length, 4 bytes))
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 04 (004) |
DAB 04 (004) | dab 00 (000) | date+time (6 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 80 (080) | miscellaneous data (6 bytes)
DAB 80 (080) | dab 01 (001) | tbd = 0x80 0x01 0x00 0x64 0x00 0x20
DAB 01 (001) | dab 00 (000) |
DAB 00 (000) | dab 64 (064) |
DAB 64 (064) | dab 00 (000) |
DAB 00 (000) | dab 20 (020) |
NRD (542) | nrd (542) | stop sending data
DAB 20 (020) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
SEND BUFFER 0 (SECOND 32 BYTES : SECOND FILE)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDT 00 (4C0) | ddt 00 (4c0) | ctrl is asking the talker to send his
| | buffer 0 content on the loop
RFC (500) | rfc (500) | ready for command
SDA (560) | | send data - LIF record 32 bytes
| dab ff (0ff) | empty directory entry
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
DAB FF (0FF) | dab ff (0ff) |
NRD (542) | nrd (542) | stop sending data
DAB FF (0FF) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET TAPE TRACK, RECORD & BYTE INFORMATION
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDT 03 (4C3) | ddt 03 (4c3) | tape position request
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SDA (560) | | ctrl is asking the talker for his data
| dab 00 (000) | track 0
DAB 00 (000) | dab 03 (003) | record 3
DAB 03 (003) | dab 40 (040) | byte 64
DAB 40 (040) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
SET BYTE POINTER TO 0 (BEGIN OF DIRECTORY RECORD)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDL 03 (4A3) | ddl 03 (4a3) | set byte pointer to 0 (00h)
RFC (500) | rfc (500) | ready for command
DAB 00 (000) | dab 00 (000) | byte pointer position
--------------------------------------------------------------------------------
ENABLE WRITE MODE
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 02 (4A2) | ddl 02 (4a2) | enable continuous write
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
SET BYTE POINTER TO 32 (SECOND FILE ENTRY)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 03 (4A3) | ddl 03 (4a3) | set byte pointer to 32 (20h)
RFC (500) | rfc (500) | ready for command
DAB 20 (020) | dab 20 (020) | byte pointer position
--------------------------------------------------------------------------------
WRITE TO BUFFER 0 (AT BYTE POSITION)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 00 (4A0) | ddl 00 (4a0) | write to buffer 0
RFC (500) | rfc (500) | ready for command
DAB 53 (053) | dab 53 (053) | filename = "STS " (10 bytes)
DAB 54 (054) | dab 54 (054) |
DAB 53 (053) | dab 53 (053) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB 20 (020) | dab 20 (020) |
DAB E0 (0E0) | dab e0 (0e0) | filetype = 0xE060 (HP-41 STATUS, 2 bytes)
DAB 60 (060) | dab 60 (060) |
DAB 00 (000) | dab 00 (000) | start block = 0x0000000C (4 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 0C (00C) | dab 0c (00c) |
DAB 00 (000) | dab 00 (000) | allocated blocks = 0x00000001 (file length, 4 bytes))
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 01 (001) | dab 01 (001) |
DAB 00 (000) | dab 00 (000) | date+time (6 bytes)
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 00 (000) | dab 00 (000) |
DAB 80 (080) | dab 80 (080) | miscellaneous data (6 bytes)
DAB 01 (001) | dab 01 (001) | tbd = 0x80 0x01 0x00 0x0a 0x00 0x20
DAB 00 (000) | dab 00 (000) |
DAB 0A (00A) | dab 0a (00a) |
DAB 00 (000) | dab 00 (000) |
END 20 (220) | end 20 (220) |
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
GET TAPE TRACK, RECORD & BYTE INFORMATION
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDT 03 (4C3) | ddt 03 (4c3) | tape position request
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SDA (560) | | ctrl is asking the talker for his data
| dab 00 (000) | track 0
DAB 00 (000) | dab 03 (003) | record 3
DAB 03 (003) | dab 40 (040) | byte 64
DAB 40 (040) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
COPY BUFFER 0 To BUFFER 1
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | devices are ready for another command
-------------+--------------+---------------------------------------------------
DDL 09 (4A9) | ddl 09 (4a9) | copy buffer 0 to buffer 1
| | reset buffer pointer to 0
| | buffer 1 hold a copy of the first directory record
RFC (500) | rfc (500) | devices are ready for another command
--------------------------------------------------------------------------------
POINTER = 240 (FAh)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 03 (4A3) | ddl 03 (4a3) | set byte pointer
RFC (500) | rfc (500) | devices are ready for another command
DAB FA (0FA) | dab fa (0fa) | to FAh or 250d
--------------------------------------------------------------------------------
BUFFER1[ POINTER ] = 240 (FAh)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 01 (4A1) | ddl 01 (4a1) | activate buffer 1
RFC (500) | rfc (500) | devices are ready for another command
DAB FA (0FA) | dab fa (0fa) | write FAh at position FAh in buffer 1
| | hein! why? I need to investigate this
--------------------------------------------------------------------------------
POINTER = 64 (40h)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
RFC (500) | rfc (500) | devices are ready for another command
-------------+--------------+---------------------------------------------------
DDL 03 (4A3) | ddl 03 (4a3) | set byte pointer
RFC (500) | rfc (500) | devices are ready for another command
DAB 40 (040) | dab 40 (040) | pointer set to 64 (40h)
-------------+--------------+---------------------------------------------------
UNL (43F) | unl (43f) | unlisten
RFC (500) | rfc (500) | devices are ready for another command
--------------------------------------------------------------------------------
GO TO FIRST RECORD OF STATUS FILE
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
| | and no longer the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
DDL 04 (4A4) | ddl 04 (4a4) | tape seek request
| | parameters are in the next two DAB frames
RFC (500) | rfc (500) | ready for command
DAB 00 (000) | dab 00 (000) | track 0
DAB 0C (00C) | dab 0C (00C) | record 12 (0Ch)
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
POINTER = 0 (0h)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
LAD 01 (421) | lad 01 (421) | first device is now one of the loop listeners
RFC (500) | rfc (500) | devices are ready for another command
-------------+--------------+---------------------------------------------------
DDL 03 (4A3) | ddl 03 (4a3) | set byte pointer
RFC (500) | rfc (500) | devices are ready for another command
DAB 00 (000) | dab 00 (000) | pointer set to 0 (0h)
-------------+--------------+---------------------------------------------------
UNL (43F) | unl (43f) | unlisten
RFC (500) | rfc (500) | devices are ready for another command
--------------------------------------------------------------------------------
ENABLE WRITE MODE
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 02 (4A2) | ddl 02 (4a2) | enable continuous write
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
WRITE TO BUFFER 0 (AT BYTE POSITION)
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 00 (4A0) | ddl 00 (4a0) | write to buffer 0
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
WRITE T REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | T Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 01 (001) | dab 01 (001) | DAB mn (0mn)
DAB 00 (000) | dab 00 (000) | DAB la (0la)
DAB 00 (000) | dab 00 (000) | DAB 00 (000)
DAB 00 (000) | dab 00 (000) | DAB jk (0jk)
DAB 00 (000) | dab 00 (000) | DAB hi (0hi)
DAB 00 (000) | dab 00 (000) | DAB fg (0fg)
DAB 00 (000) | dab 00 (000) | DAB de (0de)
DAB 33 (033) | dab 33 (033) | DAB bc (0bc)
--------------------------------------------------------------------------------
WRITE Z REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | Z Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 01 (001) | dab 01 (001) | DAB mn (0mn)
DAB 00 (000) | dab 00 (000) | DAB la (0la)
DAB 00 (000) | dab 00 (000) | DAB 00 (000)
DAB 00 (000) | dab 00 (000) | DAB jk (0jk)
DAB 00 (000) | dab 00 (000) | DAB hi (0hi)
DAB 00 (000) | dab 00 (000) | DAB fg (0fg)
DAB 00 (000) | dab 00 (000) | DAB de (0de)
DAB 22 (022) | dab 22 (022) | DAB bc (0bc)
--------------------------------------------------------------------------------
WRITE Y REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | Y Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 01 (001) | dab 01 (001) | DAB mn (0mn)
DAB 00 (000) | dab 00 (000) | DAB la (0la)
DAB 00 (000) | dab 00 (000) | DAB 00 (000)
DAB 00 (000) | dab 00 (000) | DAB jk (0jk)
DAB 00 (000) | dab 00 (000) | DAB hi (0hi)
DAB 00 (000) | dab 00 (000) | DAB fg (0fg)
DAB 00 (000) | dab 00 (000) | DAB de (0de)
DAB 11 (011) | dab 11 (011) | DAB bc (0bc)
--------------------------------------------------------------------------------
WRITE X REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | X Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB mn (0mn)
DAB 00 (000) | dab 00 (000) | DAB la (0la)
DAB 00 (000) | dab 00 (000) | DAB 00 (000)
DAB 00 (000) | dab 00 (000) | DAB jk (0jk)
DAB 00 (000) | dab 00 (000) | DAB hi (0hi)
DAB 00 (000) | dab 00 (000) | DAB fg (0fg)
DAB 00 (000) | dab 00 (000) | DAB de (0de)
DAB 00 (000) | dab 00 (000) | DAB bc (0bc)
--------------------------------------------------------------------------------
WRITE L REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | L Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB mn (0mn)
DAB 00 (000) | dab 00 (000) | DAB la (0la)
DAB 00 (000) | dab 00 (000) | DAB 00 (000)
DAB 00 (000) | dab 00 (000) | DAB jk (0jk)
DAB 00 (000) | dab 00 (000) | DAB hi (0hi)
DAB 00 (000) | dab 00 (000) | DAB fg (0fg)
DAB 00 (000) | dab 00 (000) | DAB de (0de)
DAB 00 (000) | dab 00 (000) | DAB bc (0bc)
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 53 (053) | dab 53 (053) | DAB (0 )
DAB 40 (040) | dab 40 (040) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 35 (035) | dab 35 (035) | DAB (0 )
DAB 05 (005) | dab 05 (005) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB B0 (0B0) | dab b0 (0b0) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 64 (064) | dab 64 (064) | DAB (0 )
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 48 (048) | dab 48 (048) | DAB (0 )
DAB C0 (0C0) | dab c0 (0c0) | DAB (0 )
DAB 13 (013) | dab 13 (013) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
--------------------------------------------------------------------------------
WRITE tbd REGISTER
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
| | ? Register : _______IN_RAM_______
| | byte : 66 55 44 33 22 11 00
| | ab cd ef gh ij kl mn
| | __ON_TAPE___
DAB 56 (056) | dab 56 (056) | DAB (0 )
DAB 40 (040) | dab 40 (040) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB 7D (07D) | dab 7d (07d) | DAB (0 )
DAB C5 (0C5) | dab c5 (0c5) | DAB (0 )
DAB C3 (0C3) | dab c3 (0c3) | DAB (0 )
DAB 00 (000) | dab 00 (000) | DAB (0 )
DAB CA (0CA) | dab ca (0ca) | DAB (0 )
--------------------------------------------------------------------------------
FLUSH BUFFER 0 TO TAPE
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
DDL 08 (4A8) | ddl 08 (4a8) | flush buffer to tape and close record
RFC (500) | rfc (500) | ready for command
--------------------------------------------------------------------------------
GET DEVICE STATUS
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
TAD 01 (441) | tad 01 (441) | first device is now the loop talker
RFC (500) | rfc (500) | ready for command
-------------+--------------+---------------------------------------------------
SST (561) | | talker interface status request
| dab 00 (000) | status = 0h (no error)
DAB 00 (000) | |
| eto (540) | end of transmission ok
--------------------------------------------------------------------------------
UNTALK
--------------------------------------------------------------------------------
41 _to_ TAPE | TAPE _to_ 41 | Description
-------------+--------------+---------------------------------------------------
UNT (45F) | unt (45f) | first device is no longer a talker (untalk)
RFC (500) | rfc (500) | ready for command
----------------------------------------------------------------------------‑--