Data Terminals & Communications Micro File Programming Guide
Below you will find brief information for Micro File. It's a data storage system with programmable functions, access routines, disk and digital I/O support, featuring memory sectioning and EXEC processing. It offers commands, routines, and parameters for custom applications.
Advertisement
Advertisement
DTC MICRO FILE
Programming
Guide
Hi
II.
III.
IV.
DTC MICRO FILE
PROGRAMMER'S GUIDE
Y Na.
Memory Overview -j
‘ _ +
Program Environment
2
Physical Boundaries -
Monitor/Program Relationship - Z
Parameter Passing
System Entry Point Definitions
'Snapshot' Activity
System Program Interfaces
Terminal/Line I/O
Logical I/O
Physical Disk 1/0
Real Time Clock
Digital Display Control
Miscellaneous Routines
Disk Layout and File Structures
Micro File Device Addresses
- 2
- $
- 3
- 36
Data Terminals & Communications
1190 Dell Avenue
Memory Overview
The Micro File memory is used by the various components
of the system as follows:
ROM-
0000
0800
1000
1800
1c00
2000
2240
2250
2600
2700
2800
07FF
OFFF
17FF
1BFF
1FFF
223F
224F
25FF
26FF
27FF
TOP
Monitor
Terminal and Line I/O
Disk I/O, Logical I/0, Real-time clock routine
Monitor Extensions
Reserved
Terminal and line I/O Control and Buffers
File Control Block Pointers
Monitor and Disk I/0 Control and Buffers
EXEC Program Area
Transient System Command Program Area
Applications Program Area and Stack
IT.
Applications Program Environment
Physical Boundaries-
The applications program is typically loaded and
executed at 2800H and may extend up to 3FFFH, in the
minimum system, excluding a reasonable space for the program
"stack". This is a 6K region. The program communicates
with the "outside world" by calling various system routines
which permit reading and writing to the disk, the terminal,
and to the line.
It is important to note that certain "control" infor-
mation is contained in RAM between the addresses 2000H
and 27FFH. If the applications program inadvertently
stores data into certain of these control elements, it can
be disastrous to the Micro File system.
Monitor/Program Relationship-
Each program is "called" by the monitor (or EXEC
process) as if it were a subroutine. This means that the
program relinquishes control at program completion time
simply with the RET instruction. The program must of
course maintain the proper stack alignment for this technique
to work. An alternate method of restoring control to the
Monitor is to jump directly to the MON entry point. This
method should only be used in error situations since it
effectively terminates an active EXEC process.
Parameter Passing-
When a program acquires control it may access the
statement which invoked it and glean its parameters from
the statement. The program must handle parsing of the
parameters, itself. At program entry the following conditions
exist:
Register pair BC - Points to the first character of the
"program name" term of the statement.
Register D = Number of characters in the statement,
excluding the CR/LF sequence.
Example-
The following statement would give the program (XPROG)
control with BC containing a pointer to the character X
and a count of 1710 in the D register.
RUN XPROG AAA BBB CCC
Certain system subroutines, described in Section III,
are available to ease the parsing problem. The following
routines are useful in dealing with parameters in command
statements.
STBNB - Scan to blank, then to non-blank.
HEX - Get a hex field.
GNAME - Get a file name.
DNUMB - Get a disk number.
System Entry Point Definitions-
Entry to the system routines have been provided at the
beginning of each of the three major sections of ROM. Each
entry point is a jump instruction to the proper routine.
This allows a section to change internally without affecting
the programs which use the routines. The following list of
EQU statements defines the system entry points. You must
include the applicable statements in your source program
(Also, don't forget the ORG 2800H).
Registers are generally not preserved by called system
ч = Tao oma om mo
routines. Exceptions are so noted in Section III.
Monitor Entry Points:
MON EQU 40H ; Monitor Primary Entry Point
WMAPS EQU 43H
RMAPS EQU 46H
GMSS EQU 49H
Write Allocation Maps
Read Allocation Maps
Get A Sector
e
“че
RMSS EQU 4CH Release A Sector
CLEAN EQU 4FH ‘Clean-Up Allocation Maps
SERR EQU 52H ; System Error
DERR EQU 55H ; Disk Error
CDERR EQU 58H ; Command Error
STBNB EQU 5BH ; Scan To Blank, Then To Non-Blank
HEX EQU 5EH ; Get A Hex Field
GNAME EQU 61H ; Get A File Name
DNUMB EQU
MOVE EQU
GENT EQU
GHOLE EQU
EROS EQU
COMP EQU
EXENT —EQU
OVERL EQU
EXEN3 EQU
GLERR EQU
Terminal/Line
TGET EQU
LGET EQU
TGETE EQU
LGETE EQU
TPUT EQU
LPUT EQU
TBRK EQU
LBRK EQU
TIN EQU
LIN EQU
TOUTX EQU
LOUTX EQU
TOUT EQU
LOUT EQU
?TIO EQU
INIT EQU
ABORT EQU
TIMON EQU
Terminal/Line
TCAUX EQU
LCAUX QU.
TRBUF EQU
LRBUF EQU
TXBUF EQU
LXBUF EQU
64H
67H
6AH
6DH
70H
73H
76H
79H
7CH
7FH
800H
803H
8C6H
809H
80CH-
80FH
812H
815H
818H
81BH
81EH
821H
824H
827H
82AH
82DH
830H
8 33H
200FH
2017H
201FH
2125H
20A2H
21A8H
..
a
a
“чё
=.
..
“че
.. “че “че -.
ua
-e “че “че “чо “че
“че
I/0 Control
“че
a
Get A Disk Number
Move Subroutine
Scan Directory For A File Entry
Scan Directory For A Hole
Erase Function
Compare Subroutine
EXEC "Call"
Overlay Function
Special Entry For Snapshot
'LOAD' -ABORT
I/O Entry Points:
Get A Char From Terminal
Get A Char From Line
Get A Char From Terminal W/Echo
Get A Char From Line W/Echo
Put A Char To Terminal
Put A Char To Line
Send Break To Terminal
Send Break To Line
Get A Text Line From Terminal
Get A Text Line From Line
Put A Text Line To Terminal
Put A Text Line To Line
Put A Text Line to Terminal With CR/LF
Put A Text Line To Line With CR/LF
USART Interrput
Terminal/Line Initialization
Test For Operator Break
USART Checking Routine
Elements
- Terminal Control Block
Line Control Block
Terminal Receive Buffer
Line Receive Buffer
Terminal Transmit Buffer
Line Transmit Buffer
UNLOD
READ
WRITE
FORM
RTZ
ZSECT
HEDS
Real-time
RTC
OPEN
CLOSE
CREAT
ERASE
RENAM
TOP
ALLOC
DEALL
DREAD
DWRIT
UTIMR
XTIM
MCDSK
SFILE
DSPZ
DSPHL
DSPP
DSPM
EQU
EQU
EQU
EQU
EQU
EQU
EQU
Clock
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
Disk I/O Entry Points:
1000H
1003H
1006H
1009H
100CH
100FH
1012H
Routines:
1015H
1018H
101BH
101EH
1021H
1024H
1027H
102AH
102DH
l1030H
1033H
2007H
200AH
2250H
2252H
1800H
1803H
1806H
1809H
—.
—.
.
r
Logical I/O Entry Points:
a
—.
-e
System Control Elements:
“
Digital Display Control:
Unload A Head
Read A Sector
Write A Sector
Format A Sector
Reset To Track 00
Zero A Sector
Unload All Heads
Real-Time Clock Interrupt
Open A File
Close A File
Create A File
Erase A File
Rename A File
Go To Top Of The File
Acquire A Sector
Release A Sector
Read A Sector Of The File
Write A Sector To The File
User Timer Value
User Timer Action Address
Active Disk Number
Active File Name And Type (6 Chars)
Zero Display
Display HL Contents
Increment Display
Decrement Display
Snapshot Sample:
*AS SHOT DO 0900
Program to illustrate
2800 (Prog
ORG 2800H
2800 ЗЕАА MVI А, ЙААН snapshot)
2802 FF DB @FFH
2893 B1CCBB LXI B,B8BBCCH
2806 FF DB OFFH
2807 11EEDD LXI D,@DDEEH
280A FF DB OFFH
280B 21FFFF LXI H,0FFFFH
280E FF DB OFFH
280F C9 RET
*SAVE SHOT 3108 310F 28808 (Save the program)
*RUN SHOT |
2803 AA 46 2506 9406 2800 3FED (a ce BO DE BL SP Y
2807 AA 46 BBCC 0486 2808 3FFD
280B AA 46 BBCC DDEE 2808 3FFD
280F AA 46 BBCC DDEE FFFF 3FFD
*ED SNAP (Create SNAP T)
NEW FILE:
-I MD 2899 2819
-I MD 3180 3112
-E
(Execute with SNAP T)
*RUN SHOT
2803 AA 46 2506 0406 2808 3FFD
2899 3E AA FF 91 CC BB FF 11 EE DD FF 21 FF FF FF C9
2810 ВВ 29 CD AE 38 7E B7 F8 23 7E FE 28 CA 91 36 21
3199 7E 71 BF C9 23 7E E6 7F FE OA ЗЕ 6D C2 F2 38 DI
3118 El B7 C9 21 27 31 CD 19 31 SE 23 56 23 JE 23 12
2807 AA 46 BBCC 8406 2888 3FFD
2800 3E AA FF #1 CC BB FF 11 EE DD FF 21 FF FF FF C9
2819 BB 29 CD AE 38 7E B7 F8 23 JE FE 28 CA 91 36 21
3190 7E 71 BF C9 23 7E E6 7F FE ЙА 3E UD C2 F2 38 DI
3119 El B7 C9 21 27 31 CD 19 31 SE 23 56 23 JE 23 12
280B AA 46 BBCC DDEE 2800 3FFD
2800 ЗЕ АА РР 81 CC BB FF 11 EE DD FF 21 FF FF FF C9
2819 BB 29 CD AE 38 7E B7 F8 23 7E FE 20 CA 91 36 21
3190 7E 71 BF C9 23 7E E6 7F FE OA ЗЕ 8D C2 F2 38 DI
3119 El B7 C9 21 27 31 CD 19 31 SE 23 56 23 7E 23 12
280F AA 46 BBCC DDEE FFFF 3FFD
2800 3E AA FF 01 CC BB FF 11 EE DD FF 21 FF FF FF C9
2810 BB 29 CD AE 38 7E B7 F8 23 7E FE 20 CA 91 36 21
3109 7E 71 BF C9 23 7E E6 7F FE OA 3E 0D C2 F2 30 Di
3110 El B7 C9 21 27 31 CD 19 31 5E 23 56 23 7E 23 12
*
-6A-
Miscellaneous:
SNAPS EQU 180CH ; Initiate Snapshot Activity
EROS EQU 180FH ; Erase Function
MFI EQU 1812H ; 'FILES' Command Process
The 'Snapshot' Activity-
This feature is used to debug application programs. It
is automatically activated when an RST 7 (OFFH) instruction
is encountered in a program. When activated, it prints the
snapshot location and the contents of all registers and the
condition flags at that point. In addition, it activates
and EXEC*-like program (SSNAP) which executes the statements
in the text file SNAP T.
Finally, control is returned to the program with the machine
state restored.
Generally, SNAP T contains one or more MD statements to
dump relevant blocks of memory. If a file SNAP T does not
exist, just the registers and condition flags are printed
before returning control to the program.
Usage-
The programmer uses the EDIT command to create a text
file on disk 0 whose name is SNAP T. He then inserts RST 7
instructions into his program at strategic points, either by
patching or at assembly time. Next, he loads and executes
his program. The program will execute normally except for
snapshot data being printed at the terminal.
*Refer to the Operator's Manual
-6-
III. System Program Interfaces
Terminal/Line I/O
The program communicates with the terminal or line in
terms of messages or individual characters. The message
level is principally used for typing instructions to the
operator and for reading his responses. The character level
is only used with the program as a special need that is
not provided by the message level, such as the monitoring
of an incoming character stream for special control
characters. The various entry points are described in pairs
since a basic function applies either to the local terminal
or to the line.
Message Level Routines-
There are six routines at this level, providing the
indicated functions:
Peet / TOUT - Output messages to the terminal, followed by CR/LF.
LOUT - Output messages to the line, followed by CR/LF.
fé:TY TOUTX - Output message to the terminal, without CR/LF.
LOUTX - Output message to the line, without CR/LF.
fIH TIN - Retrieve message from the terminal.
LIN - Retrieve message from the line.
The message output routines are used in the following
manner:
Calling Sequence:
LXI H, MSG ; Point To Message
TOUT
CALL Tou ; Output The Message
LOUTX
JNZ BREAK ; Detect Break
Where MSG is the beginning of a "message" consisting Of a
single byte character count of the number of characters in
the text of the message, followed by the message itself.
Messages are usually created at assembly time with DB
statements:
MSG: DB 17, 'This is a Message’
Pera не аб PASES CRE
+.
Pep Mes PYyyx — Mostesas 0
Upon return from one of the output routines:
If condition = 0, the message text was transmitted
successfully.
If condition # 0, a "break" occurred during transmission.
A message input routine retrieves a line of text, performs
CWL editing on it, and deposits it in the caller's buffer.
Calling Sequence:
LXI H,Buff
MVI M, SIZE
Buffer Origin
Set Buffer Size
“че
“че
cac 4 TES ; Retrieve the Message
LIN
JNZ EXCEP ‚ Break or Buffer Exhaust
Upon return from one of the input routines:
If condition # 0,....
and A = 1 - buffer was exhausted.
and A=-1 - a "break" occurred.
If condition = 0, the message resides in the caller's
buffer in the following form:
BUFF + 0 = Buffer size as established prior to the
CALL.
BUFF + 1 = Number of characters of text input,
including the trailing CR and LF.
BUFF + 2 = Text of message plus CR and LF.
TO
BUFF + N
(Bent K > CHE aa EA per E (oz Ho, 07 E | ,
1 TCHP TEST PAR CHARA hr ppg Sed Tue Taj JT PELEA LOMO SITES
e | |
f X TBUFE REA 14% ou PT Rg GEFEN F af 7°, 7 Le г, 4 т Ke)
| разл PNTTUUCIZE 4 Par
| 7 E 7 + 4 ñ к ORO
\ сАВЁТ | _
— Не ; PONE / “4. vue fd Flo / NT MELEE
“TBFE
System Interface-
TUAUX and LCAUX receive the BREAK signa
terminal or line. A BREAK received, sets the associated
location non-zero.
j=
from the
Te fe fe Се
Data 1s bidirectionally buffered via -RBUF (receive)
and -XBUF (send). It is not recommended that buffer
pointers be manipulated except via calls to the system
I/O routines (TIN, TGET, etc). The transmit buffers,
in particular, contain extra information for the sending
of BREAK and for delays following line-feed and tab.
It is possible, by looking at buffer pointers, to
determine that data is in the buffers. All buffers are
structured as follows:
Buffer: Size (bytes) -one byte, value 4-255
(system uses 128)
+1 OUT -Index (0> size-1)
+2 IN -Index (0> size-1)
+3 D |
+4 A |
m |
A
A rer arr TN Na OP
Ll Ll AAA,
DATA |
+3+ (size-1) I
. A "circular buffering" technique is used to maintain
the buffers. "IN" indexes to the next free (empty) byte
in the buffer. As data is put into the buffer, IN is
advanced. The next byte after the last buffer location is
the first buffer location (wrap-around). Likewise, "OUT"
indexes to the next da-a byte to be removed from the buffer.
Whenever "IN" # "OUT", data is in the buffer. A
situation where "IN" = "OUT" indicates an empty buffer
-9A—
Character Level Routines-
CET
TGET - Get a single character from the terminal.
LGET - Get a single character from the line.
These routines retrieve a single character from the
proper input buffer and present it to the caller in the
A register. If a break occurs, the A register and condition
flag are set to zero.
(GET E
TGETE - Get a single character from the terminal w/echo.
LGETE - Get a single character from the line w/echo.
Get a single character from Terminal/Line receive buffer.
Echo it if Full Duplex or Echoplex, except if it is a
character, word, or line delete character (but echo such a
character if it is in transparent mode from the terminal).
Upon return:
A
Character. If a break is seen, return is made with
A = 0. In such a case echoing may not have been done.
Prot
TPUT - Put a single character to the terminal.
LPUT - Put a single character to the line.
Put a single character to the Terminal/Line transmit
buffer. Checks for (NUL), (TAB,LF), and other things which
require special action.
Input condition:
A contains character to be sent.
Return conditions:
0 = Character was put
Non 0 = Break stopped put
P bic
TBRK - Send a break to the terminal.
LBRK - Send a break to the line.
Logical I/0
The routines described in this section provide access
to the files in the system and relieve the programmer of the
need to know about the physical characteristics of
recorded files, such as linkage conventions and directory
format etc....
Most of the routines require that a File Control Block
(FCB) be provided by the program which describes the file
to be accessed.
routine is called.
A pointer to the FCB is provided when the
Summary of routines:
OPEN
CLOSE
CREAT
ERASE
RENAM
TOP -
DREAD
DWRIT
ALLOC
DEALL .
Opens a file
Closes a file
Creates a file
Erases a file
Renames a file
Positions to top of the file
Reads next sector of the file
Writes next sector of the file
Allocates a sector
Deallocates a sector
The success or failure of a request is indicated to the
calling program by the status of the zero condition flag and
the contents of the A register.
If condition = 0, the requested operation was successful.
If condition # 0, the requested operation was not
successful and the specific reason
for its failure is encoded in the A
register.
FILE CONTROL BLOCK
0 Control Flags
1 Spare 1)
User A
2 Disk—#
3-71 File Name
8 11-17
File Type
9 = \ O 4 7
First Sector
Of File
SECTOR - TEA"
<
` и
за -те!
Current Sector
Of File
< сток - ТАС
13-073
Next Sector
Of File
SECTOR — TL Ack
15-16
Buffer
Address
1727
User-Defined
Extents
-11-
TAS <.
PIB.
OPEN - Open a File
This routine opens a file. The caller provides an FCB
with the filename and filetype filled in. The disk number
may also be provided if known. If not known, it should
be set to -1 and the routine will searchall disks starting
at disk 0. | | ` | —
9 MAX
Calling Sequence:
LXI H,FCB
CALL OPEN
«e ala Na’ de did de Y
The Return Codes are:
Open Successfully Done
= Unrecoverable I/O Error
= Invalid FCB parameter
= File not found
= File already open
слое о NH Oo
|
= Maximum 'Opens' already exist
CLOSE - Close a File
This routine closes a file. The file must have previously
been opened.
Calling Sequence:
LXI H,FCB
CALL CLOSE
The Return Codes are:
= File Successfully Closed
Unrecoverable I/O Error
= Invalid FCB parameter
о юн с
|
= File Not Open
-12-
CREAT - Create a File
Create a file and allocate its lst sector. This routine
creates a file as requested by the caller. The caller
supplies the disk No., Filename and Filetype.
Calling Sequence:
LXI H,FCB
CALL CREAT
The Return Codes are:
0 = Create Successful
1 = Unrecoverable I/O Error
2 = Invalid FCB Parameter
3 = File Already Exists
4 = Disk is Full
ERASE - Erase a File
This routine erases a disk file, recovers the space and
re-writes the directory record with a hole. The caller
supplies the Filename, Filetype and Disk No.
Calling Sequence:
LXI H,FCB
CALL ERASE
The Return Codes are:
= File Erased
= Unrecoverable I/0 Error
Invalid FCB Parameter
= File Not Found
= File Is Currently Active (is open)
E о ю нос
H
-13-
RENAM - Rename a file
This routine alters the name of an existing file.
Calling Sequence:
LXI H,PARMB
CALL RENAM
The parameter block (PARMB) has the following format:
- чо == = "о
PARMB (+) 0-1 - Not Used
2 - Disk Number
3-7 - Old File Name
8 - Old File Type
9-13 - New File Name
14 - New File Type
The Return Codes are:
= Rename Successful
= Unrecoverable I/0 Error
Invalid PARMB Parameter
= "Old' File Does Not Exist
= 'New' File Already Exists
U 8 wW N H ©
il
= '0ld' File is Currently Active
TOP - Go to top of file
This routine positions the file pointer to the top of
the file. The next 'Read' command will result in the lst
record of the file being read.
Calling Sequence:
LXI H,FCB
CALL TOP
The Return Codes are:
= 'Top' Operation Successfully Done
Unrecoverable I/0 Error
Invalid FCB Parameter
File Not Open
0
1
2
3
DREAD - Read the next sector
This routine reads the next sector from the file into
the users buffer. The FCB disk addresses are used and
updated.
Calling Sequence:
LXI H,FCB
CALL DREAD
The Return Codes are:
0 = Read Successfully Done
1 = Unrecoverable I/O Error
2 = Invalid FCB Parameter
3 = End-Of-File
4 = File Not Open
DWRIT - Write the next sector
This routine writes the next sector of a file. It assumes
an 'Append' type of write. It updates the FCB pointers.
Calling Sequence:
LXI H,FCB
CALL DWRIT
The Return Codes are:
0 = Write Successful
1 = Unrecoverable I/O Error
2 = Invalid FCB/Buffer-Link Parameters
3 = Disk is Full
4 = File Not Open
ALLOC - Allocate a sector
This routine allocates a disk sector to the caller. The
Disk No. for which the caller is requesting is passed to the
A-Reg. The sector address (if request is successful) is
passed back to the caller in H & L.
Calling Sequence:
MVI A, DISKNO
CALL ALLOC
-15-
The Return Condition Codes are:
Allocation Successful
Disk is full or I/O Error
Zero
Non- Zero
DEALL - Deallocate a sector
This routine returns a disk sector to the available
pool. Upon entry, the A-Reg contains the Disk No. and
H € L contain the sector address.
Calling Sequence:
LHLD DADDR (Get Disk Sector Address)
MVI A,DISK NO (Get Disk Number)
CALL DEALL
Return Condition Codes are as follows:
Zero Deallocation Successful
H
Invalid Contents of A, H and/or L - or -
unrecoverable I/O Error.
Non- Zero
Physical Disk 1/0
All data transfers to and from the disk (s) are handled
by the Disk I/O Driver. There are six entry points to the
Disk I/0 Driver, as described in the following paragraphs.
The caller must set the parameters which describe his
requested operation into the proper registers and then CALL
the desired routine.
Entry Point Summary:
RTZ - Reset to track 00
UNLOD - Unload a head
HEDS - Unload all heads
WRITE - Write a sector
ZSECT - Zero a sector
FORM - Format a sector
READ - Read a Sector
All registers except the A register are preserved by these
routines. The A register is used to pass the return code to
the caller.
Parameters are passed to these routines in the registers
as follows:
A = Disk Number (0 or 1)
D&E = Track and Sector numbers, respectively
H&L =
Data Buffer Address
-16-
Return Codes-
Upon return to the caller, immediately after the CALL
instruction, the contents of the accummulator and the
condition code reflect the success or failure of the request.
The caller must therefore supply a JNZ instruction to his
Own error routine to take appropriate action for the
indicated return code. If the zero condition is set it
means the command was completed successfully. a
Return Code Meanings
= The command was successfully executed.
= The drive-not-present status bit is high.
= The file-inoperable status bit is high.
= The file-busy status bit is high.
= The disk-ready status bit is low.
nn > 0 N HO
|
= The disk is write-protected. (Only after WRITE
FORM or ZSECT.
6 = The sector-error status bit is high.
This generally means the disk has not been formatted.
7 = The CRC-error status bit is high.
8 = Position Error.
This generally means the recorded track or sector
number is inconsistent with what should be recorded
on the sector.
9 = Command Error
A parameter provided by the caller is incorrect in
one of the follow ways:
A) The disk number given is beyond the Disk 1/0
Driver's configuration.
B) The track number is too large.
C) The sector number is too large.
D) The Read operation is not valid. The caller's
data buffer address is too low. It points to
ROM or a control block area.
10 = Data Error after WRITE.
Error Recovery-
Error recovery is an integral part of the disk I/O driver
and occurs transparently to the caller before control is
returned to him.
The disk I/O driver provides error recovery for "soft"
errors as follows:
-17-
Read-
A re-read is attempted 10 times or until successful.
If not successful, after 10 attempts, the head positioner
is stepped in the same direction 1 track position and then
in the opposite direction 1 track position. The read is
then attempted as many as 10 additional times. If still not
successful, it is a hard error.
The "re-positioning" of the head is by-passed if positioned
on the outermost or innermost track of the disk.
Write-
The command is attempted 10 times or until successful.
If not successful after 10 attempts it is a hard error.
Routine Descriptions-
RTZ - Reset to track 00
This routine moves the positioner arm of the drive to
track 0.
Required parameter:
A = Disk Number
UNLOD - Unload a head
This routine moves the head away from the recording
surface. This routine is used when prolonged inactivity
for the disk is anticipated.
Required parameter:
A = Disk Number
HEDS - Unload all heads
This routine makes multiple calls to UNLOD to move all
heads away from the recording surfaces.
Reguired parameters:
None
-18-
FORM - Format a sector
This function is functionally similar to WRITE except
that it does not verify track position before the write
and does not perform a read-back after the write. This
routine is used exclusively by a Disk Formatting Program.
Required Parameters: Same as WRITE
72SECT - Zero a sector
This routine is functionally similar to WRITE except
that it writes all zeros to the specified sector and does
not perform a read-back. It is used by the sector
deallocation mechanism to ensure that sectors that are
available for subsequent allocation are zeroed. This
routine should not be used by an applications program.
Required Parameters:
A
D&E
Disk Number
Track and Sector Numbers, respectively
Real Time Clock
The Real-Time Clock is available to the user for timing
purposes. To use it, first store an action address at
XTIM and a timer value into UTIMR. When the time interval
has expired, control will be transferred to the address in
XTIM via a CALL. The interrupt system is active, but the
interrupt priority is such that only the panel reset button
is still active. Therefore, the timer action routine should
be very short. Return from the timer action routine to
re-enable the full interrupt system.
The time interval is measured in units of léms. UTIMR
is loaded with the number of intervals (+0, -1) to wait.
UTIMR is counted down by one each clock period until it
reaches zero. Because the clock is usually running, the
store to UTIMR should be made with interrupts disabled, or
with an SHID.
-19-
Digital Display Control-
There are four routines for manipulating the digital
display on the front panel:
DSPZ - Zero the display
DSPHL - Display HL contents
DSPP - Increment Display (Decimal)
DSPM - Decrement Display (Decimal)
Registers D & E are not used by these routines.
When a program acquires control, the display has been
set to zeros.
Miscellaneous Routines
MON - Monitor primary entry point
This routine performs the following tasks:
1) Sets the stack pointer to the top of RAM.
2) Establishes the interrupt level and enables interrupts.
3) Pushes a vector to MON into the stack (pseudo CALL).
4) Types the operator prompt (*).
5) Waits for a command from the terminal.
6) Upon receipt of a command, zeros the display and
dispatches to the proper process.
MON acquires control after the "reset" greeting message.
Thereafter, it acquires control after each system command
or program has completed its task. The single exception
to this occurs when the program has been activated by a
statement from a file (EXEC process), in which case control
is returned to the EXEC process.
A program uses this entry point directly (with a JMP)
only when an error condition has been encountered which
requires operator intervention. However, a program restores
control to this point indirectly, at the completion of its
task, with an RET instruction. This is true so long as
commands are being supplied individually by the operator
(not EXEC).
SERR - System Error
This routine types 'SYSTEM ERROR AT XXXX' and then
jumps to MON, terminating the current activity. XXXX
is an address retrieved from the stack which simply shows
the point in the program where the error was detected.
A program calls this entry point when a situation is
encountered which should never occur, and if processing
were allowed to continue, would produce indeterminate or
disastrous results.
Normal usage is:
CMP B ; Compare
CNZ SERR ; Exit if NE, system error
DERR - Unrecoverable disk error
This routine types 'DSKERR N AT XXXX' then jumps to MON,
terminating the current activity.
A program calls this entry point when the return
condition from a call to a physical disk I/O routine is
intolerable.
Normal usage is:
CALL WRITE . Write a sector
CNZ DERR ; Exit if not successful
CDERR - Command Error
This routine types 'CMDERR' and jumps to MON, terminating
the current activity.
A program jumps to this entry point if it encounters an
error in content, or form of the activating command statement.
Normal usage is:
CALL STBNB ; Scan To Next Non-Blank String
JZ CDERR ; Command Error If Not There
DE Х E Те СТ NE fo r CT
-21-
yo
a ff
>
—
ABORT - Test for Operator or Line Break
This routine is called to determine if the operator has
depressed the break key or if a break has occurred on the
line. If either has occurred, control is given to entry
point MON of the monitor. Otherwise, control is returned
to the caller.
Normal usage:
CALL ABORT . Terminate if break
OVERL - Overlay Function
This routine is used to retrieve and execute a program
overlay.
Input conditions:
A MEDSK contains the disk number
E-CSFIEE contains the 5-character file name followed by
the filetype 'P'.
This routine is either CALLed or executed by a direct
JMP. Since program overlays typically terminate with an
RET instruction, you can either CALL this routine to regain
control when the program overlay is finished, as in a "main"
program, Or you may use a JMP instruction, which will return
control to the next outer level when the program overlay
is finished.
STBNB - Scan To Blank, Then to Non-Blank
This routine scans the command statement to the beginning
of the next character string, maintaining the pointer in BC
and the residual character count in D. It sets the condition
code to indicate whether a string was found or not.
A program calls this routine during his command statement
parsing activity.
Input conditions:
BC points to a character position of the command statement.
D contains the residual character count of the command
statement.
-22-
Return conditions:
If condition # 0,
BC points to the first character of the string.
D contains the residual character count.
If condition = 0,
The statement was exhausted without encountering a
character string.
Registers E, H & L are not used.
Note:
The calling program must maintain BC and D if subsequent
calls to STBNB are to be made.
HEX - Get a hex field equivalent
This routine translates a 1 to 4 character text string
of hexadecimal digits in the command statement to its
binary equivalent, maintaining BC and D. All registers are
used:
Input conditions:
BC points to the first character of the string.
D contains the residual character count of the command
statement.
Return conditions: |
т с. # » TE A AN E fe en VN HEX ETE =
HL contains the binary equivalent of the string.
BC and D are updated to the terminating blank character
position.
Other:
A jump to CDERR (Command error) occurs if one of the
following conditions is detected:
1) Hex string is longer than 4 digits.
2) A non-hexadecimal character is encountered other than
a blank.
-23-
G LAT - e IST Li NE AS"
TA a Ni MBA > ATMA A
Е АЙ со ML - Fort И vs «`` rf Lee 7 Дер ros ee
e A 8
x Y 7 > - / Pei ATA er EY eo
= r > К. С. D i Се! tr PA 2 , Lu A р ( Pa e
GNAME - Get a file name.s/e- nn
[eE
„ет
This routine moves £ive characters of a character string
from the command statement to à Œtôrage areä)designated
by the caller, padding with blanks on the right if fewer
than five-eharacters are in the-string. BC and D are main-
an am
tained. /=cesse Fhe com fete le spec 2.9. BEY MYyENEE.CT7
All registers are used.
Input conditions:
BC points to the first character of the string.
D contains the residual character count.
HL points to the caller's storage area. res)
Return conditions:
BC points to the string terminator character
D contains the residual character count
com, Fim Cotes.
HE —has been-incremented—by—5: A
т = Lile $A ex ©’ К. L
- Cro бот La ee Tec (5) Y
Normal usage: ’ St
LXI H,SFILE ; File name destination
CALL GNAME ; Retrieve name from text
TN Error
TC Lert [ot
DNUMB - Get the disk number
AFR
This routine establishes the active disk number for
subsequent/processing. It stores the default disk number
(0) into , and calls STBNB to scan the command statement
to the disk number parameter. If the parameter is present,
it translates the parameter to its internal code and stores
it into MCDSK. BC and D are maintained.
Registers E, H & L are not used.
Input conditions:
BC points to the preceding text string or its terminating
blank.
D contains the residual character count.
Return conditions: |
Tr SALE © Da EE far er ie fe Ts ROI Por - - PT | Е
If condition = 0, а parameter string was not found, the
default disk number is in effect.
If condition # 0, the disk number was explicitly declared
with a parameter.
я /, ET >La dg: NA |
y No MD Und for HE. . n.p-r . Pete cote “Aug Ar PF HE Pal
[Asses mew PORTO AE TE
Other:
A jump to CDERR (Command error) occurs if one of the
following conditions is detected:
1) The parameter does not begin with 'D'.
2) The second character is not a numeric, or is larger
than the largest valid disk number.
Note:
This routine can only be used when the disk number para-
meter is required in the "next" parameter position or when
it is optional as the last parameter of the command statement.
MOVE - Move routine
This routine simply moves a block of data from one
location to another.
Registers D & E are preserved.
Input conditions:
BC points to the source data block
HL points to the destination
A contains the count of the number of bytes to be moved.
Normal usage:
MVI A,50 Get block size
LXI B, FROM Get block location
LXI H,TO : Get destination
“e
“ее
CALL MOVE ; Move the block
; | | Iga +}, A - Fea
CLOSE > [loses A |! ГИ - + as le и, W 1 passe” e 7
~ | a A /
- Ca! | ad a À ‚ co De, “a Ne ) y © еже) r pr
LI mE Pl dy wa Lee Em бо DOTA
R M я - Ca a А. release © 15 far. re Source 5 » /
-25-
COMP - Compare routine
Input conditions:
BC points to the first data block
HL points to second data block
E contains a count of the number of bytes to be compared.
Return conditions:
If condition = 0, the first data block equals the second
data block, and BC and HL point to the
byte positions just beyond their
respective data blocks.
If condition # 0, the data blocks are not equal, and BC
and HL point to the bytes which yielded
the unequal result.
Normal Usage:
MVI E, 36 ; Size of compare
LXI B,BLK1 ; First block location
LXI H,BLK2 ; Second block location
CALL COMP ; Compare
JZ EQUAL ; Jump if a match
GENT - Scan directory for a fiie's entry
gx (in for the entry which represents the specified file
A (in (SFF . If a matching entry is found, the track/sector
address of the first sector of the file is returned to the
caller. All registers are used.
Ве = А( Кей)
Input conditions:
un ihe) for scans the directory of the specified disk
CDS
Á MEDSK contains the disk number
Lop ADDAESS
B{( $PFHE contains the H~character—file name-and-l-charaetesr
APPR) Eile Eyper
i La ai . EU LT Le 5 <—
H EL DOUTER Appngaas TPE LS A mee A ZFexnas INTO
—-26-
Return conditions:
If conditions = 0,
-DE-—— —contains—the track/sector address of +the first
sector ef—the—file-
PE FC
DLINK contains the track/sector address of the
directory sector which holds the entry.
CoMtATISS ADDOARSI Er OTCFECTueT РВ ту
{BUPL „fields \the directory sectar data.
NEG
If condition 26, a matching entry for the specified file
name was not found in the directory.
+f cond tou > 9, TE + ff «с Ask enter cocle
GHOLE - Get a hole in the directory for a new entry
This routine finds or creates a slot for a new directory
entry on the specified disk.
All registers are used:
Input conditions:
A-re? MEDSK- contains the disk number
HE: DiPiama “Conf: (E
Return conditions:
If condition = 0,
HL points to the usable entry location
D/E
BHENK contains the track/sector address of the
directory sector which holds the entry
фо РЕ бЙ
ALLER
© WBUF1 holds the directory sector data
ME AT Fr
If condition #£&, disk space was exhausted when attempting
to add a sector to the directory.
TÍ Condition —>0 7 - IS «a Arsh Error code
Normal usage:
A program calls this routine only after calls have been
made to GENT to determine if the file already exists, and to
RMAPS to prepare for the possibility of sector allocation
to extend the directory.
—27-
EROS - Erase a file
This routine calls GENT to determine if the specified
file exists and, if it does, changes the directory entry
to an "available slot" for subsequent use and restores
the sectors of the file to the sector allocation map.
All registers are used:
Input conditions:
A-¢i- MEDSK contains the disk number
psc SFIBE contains the file name and type
HELL BOFFEC APORESS FOR REMOT=C DISK ИЕ СФЕР: Ir Td
Return conditions:
HEGATIVE
If condition #-6, the specified file is not represented
in the directory.
If condition = 0, the file has been erased.
Tf (ont (tien >0 , + 15 ©. sk Errar role
RMAPS - Read the allocation maps
This routine reads the sector allocation maps from the
specifi ied disk into the sector allocation map buffers.
Y program y u és this roytine in conjunction with GMSS,
RMS and WMAP RMAPS is called as a first step before
oF aun calls to “GMSS and/or RMSS, which alter the number
available/s sectors. / |
/
/ ,
/ The program must et the proper disk number into MCDSK
“prior to calling PS. / |
Keg pers B, с D, E, H & 1 are preserved.
Upon yeturn: /
ré condition # 0, the A register contains an error code
/ / as returned ffom READ.
/ / / / |
Normal usage: / /
ge , ;
Read the maps
, /
Trap disk errors
e
CALL RMAPS
CNZ DERR
e
-28-
A = = 0 rl £ FLE
GMSS - Get a sector
This routine examines the resident sector allocation
map buffers and returns the next available sector to the
caller, deleting that sector's bit from the resident map.
This routine presupposes that a call to RMAPS has been
provided by the program prior to its being called and
further, that a call to WMAPS will ultimately follow.
Az DISK md.
Register B;—€, H & L are preserved.
Upon return:
ALEC prue
If condition £ 8, disk space has been exhausted.
DC
If condition = 0, D & E = Track number and sector number,
respectively, of allocated sector.
IL Couch tion > © y Fis a disle epror code
Normal usage:
CALL GMSS ; Get a sector
JNZ EXH ; Space-exhaust routine
RMSS - Release a sector
p <
This routine ensures that the track number and sector
number passed in'D & E are valid and then restores the
sector's bit to the resident map. The released sector is
then written with zeros.
The routine presupposes that a call to RMAPS has been
provided by the program prior to its being called and that a
call to WMAPS will ultimately follow.
A > DIS МФ.
Registers B, C, D, E, H € L are preserved.
Upon return:
If condition # 0, the A register contains one of the
following error codes: -
| -10 = Moog rp Drs Tle Error odo,
11 = Non-valid track or sector number,
or the resident allocation map
has been destroyed.
12 = The sector being released is already
represented in the map.
Normal usage:
LHLD SECT ; Get the sector ID
XCHG ‚ To proper registers
CALL RMSS ; Release it
JNZ ERR3 ; Error Routine
-29-
/
7
У
у
/
WMAPS - Write the allocation maps
This routine examines the "write" flags of the sector
allocation map buffers and appropriately updates the sector
allogation maps on the disk.
A program uses this routine in conjunction with RMAPS,
GMss, and RMSS. WMAPS is called as a final step after
óne or moré calls to GMSS or RMSS have altered the resident
sector a}location map.
A
The program must set the proper disk number into MEDSK
prior to calling WMAPS. .
Registers B, C, D, E, A & L are preserved.
у
1
Upon return: /
И
ТЕ condi tion # 0, the A register contains an error code
/ as returned from WRITE.
Normal ‘usage: /
CALL WMAPS /; Write the maps
CNZ DERR ; ; Trap disk errors
CLEAN - Clean-up allocation maps
re currently
isk and, if
This routine determines if allocation maps
sident el + mle La mera mad lames vaa J un dele om a
resident which have not been written to their
so, writes them. .
a
a
u
A program calls this routine as a housekeeping measure
to ensure that an improper or incomplete sector allocation/
deallócation activity is properly "closed-out" on the disk.
/
Registers are not preserved.
/ This routine stores a disk number into MCDSK if the maps
are written. |
/
/
-30-
IV. Disk Layout and File Structures
Each disk that enters the system is formatted in such a
manner as to enable certain system routines to manage the
space and files that will reside on the disk. In other
words, each disk has a pre-defined "structure" comprised
of the following items:
1) Label Sector - Track 0, Sector 0 of every disk
2) Directory Sectors -
3) Allocation Map Sectors -
4) File Storage Sectors -
-31-
contains the label of the disk.
The label is in the standard
output message form and is written
when the disk is formatted or
when the LABEL command is used
to re-label the disk.
These sectors contain an entry
for each file stored on the
disk. Entries are added as
files are created and "deleted"
when they are erased. The entry
effectively points to the beginning
sector of the file it represents.
Directory sectors are assigned
near the mid-point of the
positioner-arm travel to minimize
"seek" time.
These sectors contaln bit patterns
which represent the unused
sectors on the disk. Each
sector of the disk 1s represented
by a single bit in the allocation
map in a particular position.
When a sector is allocated, its
corresponding bit in the
allocation map is set to zero and
the updated map is written to
the disk. Conversely, when a
sector is released, its bit in
the map 1s set to one, etc.
Allocation map sectors are
assigned near the mid-point of
the positioner-arm travel to
minimize "seek" time.
The remainder of the disk consists
of unassigned sectors or sectors
containing files. Unassigned
sectors are written with all zeros
when the disk is initially formatted
and are also written with all zeros
when they are released. Therefore,
any sector containing non-zero
data is part of a file or is part
of one of the above items.
Directory Sectors Structure -
When the disk is formatted, it is written with a directory
that occupies 4 sectors. The first 4 directory sectors
are on track 39, sectors 1, 9, 17, and 25. The 4 logically-
linked sectors are separated from each other so that the
entire directory can be scanned in one disk revolution.
The directory is empty at this time but contains enough
space to accommodate 60 entires. (The directory automati-
cally expands to additional sectors if more than 60 files
are stored).
Each directory sector has the following format:
|
0 Sector Track
# | - Link to next directory sector
# or zero if this is the last
| directory sector.
2 0 0
4 Entry #1
12 Entry #2
| ENTRY:
|
| File
|
Мате
Entry #15 4 File
Type
6 {Sector | Track
+ 4
-32-
Directory sectors are initially written with all fields
set to zero except the link field.
When a file is added, an entry is created and inserted
into the directory in the first available entry "slot"
scanning from the first directory sector to the last.
When a file is erased, its entry is found and the first
byte of the entry is set to zero, thereby becoming a slot
in the directory for subsequent re-use by a new entry.
A schematic that shows the relationship between the
directory and the files is given below:
File 1 |__
Sect. ve [File 1 u
Sector l >
; / ,
File 2 |-— y — Y File 1
a ile 2 Sector 2
Sec t. eS
Sector 1 ;
C, File 2
|
| |
|
| .
| Sector 2 X
| nn]
|
| File 2
>» sector 3
—33-
Allocation - Map Sectors Structure
When the disk is formatted, it 1s written with an
allocation map that occupies 4 sectors. The allocation
map sectors are on track 39, sectors 0, 8, 16 and 24.
Each of the sectors represents a portion (approx 1/4) of
the total available sectors on the disk. Each potentially
available sector on the disk is represented by a particular
bit position in one of the allocation map sectors. If the
bit is =1, the sector is available for allocation, if it is
=0, the sector is already in use. Each allocation map
sector has the following format:
0 FIRST DIR. OF — 1 or -1
TRACK # ALLOCATION
2 LAST
TRACK # 0
4 SECTOR COUNT ——— Number of sectors
available in the bit map.
6 AVAILABLE- —— Fach 4 bytes represents
SECTOR l track of storage
BIT MAP
Sectors are allocated within a track in the following
order:
0, 4, 8, 12, 16, 20, 24, 28,
1, 5, 9, 13, 17, 21, 25, 29,
2, 6, 10, 14, 18, 22, 26, 30,
3, 7, 11, 15, 19, 23, 27, 31,
-34-
Program-File Sectors Structure
Each program file (P) consists of sectors in the
following format:
First Sector: 0 | Sector # Link to next sector or
zeros if last sector.
1 | Track + SECTOR
2} Track £
42 | Byte Count - Number of bytes of valid
data following this byte.
{3 | Program Load
Address
78 | Perm £aët
q — —
127 | Data T
Subsequent sectors of the file differ from the first one
in that there is no Program Load Address field. Program
data then starts in the byte #3 position.
\
or pre sue
J
Text File Sector Structure
Each text file (T) consists of sectors in the following
format :
0 Sector # Link to next sector or zeros
if last sector.
1 Track #
2 Sector # Link to preceding sector or zeros
if first sector
3 Track +
A Byte Count - Number of bytes of valid data
following this byte
5 Text 7
>} Data
7
The text data of the file consists of character strings
bounded by CR/LF pairs. A sector may therefore contain
part of a string or several strings.
-35-
BASIC-File Sector
Struction
Each BASIC file (B) consists of sectors in the following
format:
0 | Sector #
1 | Track
#
2 | Byte Count
3
12 7| Data
Program -—L
- Link to next sector or zeros if
last sector
— Number of bytes of valid data
following this byte
Program data is a compressed form of the BASIC source program,
as saved by a "SAVE" command.
Random File Sector Structure
Each random file (R) consists of sectors in the following
format:
Master Directory 00 | Sector #
Sector (First
sector of file) 1 | Track #
2 | Sector #
3 | Track #
126 | Sector +
127 | Track +
Subdirectory 0| Sector +
Sectors (for i=64x 1
master index) 2 | Track #
3| Sector +
Track #
126| Sector #
127| Track #
— ЗА —
location of subdirectory of
indices 0-63
location of subdirectory for
indices 64-127
location of subdirectory for
indices 4032-4095
location of data sector 1+0
location of data sector i+l
location of data sector 1+63
Data Sectors 0 Arbitrary |
— User
127 Data
If a data sector is absent, the subdirectory pointer is zero.
If no data sectors exist for any entry in a particular sub-
directory, the subdirectory is released and the master directory
entry is zero.
The index range is 0 to 4095
-37-
V.
MICRO FILE DEVICE ADDRESSES
OD- OF
10-18
18-1C
1D-1F
20
21
22
23
24
25
26
27
28-2F
30-37
38-3F
40
41
42-43
44-45
46-47
Interrupts
Real Time Clock
Reserved
Spare
Read Disk Status - Write CMDS
INFT 1 (DO + D1)
Read Chars - Write Chars
Read Sect Under Head - Reg Disk XFER
Reserved
Spare
INTF 2 (D2 + D3)
Reserved
Data in
Status in
Speed/Parity in
Echo/Delay in
USART Board 2
" " 3
"" " 4
Status in
— 38-
- Write Strobes
- Head Position
Data Out
Function Out TERMINAL
Clk Speed Out USART 1
Reset Out
n
" LINE
" USART 1
Indicators Out Board 1
Term/Line Parity &
Reset-Format-Enable
Function
" Board 2
" Board 3
" Board 4
Panel Switches and Lights
The panel switches are accessed with I/0 Port: 40H
Input from 40H reads the switches
Output to 40H sets the lights as follows:
INPUT: b7 рб b5 b4 b3 b2 bl b0
Unused HOST Switch ON=HOST
FORMAT ENABLE ON=enable
Tar IPARE HT
——— BINARY ON = yes
Control Suppress ON = yes
OUTPUT: b7 b6 b5 b4 b3 b2 bl БО
— веков, drsi—fite 0
fo _ _ A Er! BY, .
— 86%-full, disk f3de--0
2%) Loti dk Loi Y )
L A , , J
del vil, disie Lele À J I
Terminal} —(USARP)—errer
7 ds 7 error — -
A я
ен" A Lo ray a - -
—— 80%-£ul1, disk File
— ott te Eile 1 Peret 14 ke
© Ea DEN
(ох) = а, | )
LA sane error —
- 39 -
In addition, there is a 4 digit decimal display that can
be set:
1/0 port : 42H
Output word: ssss dddd
steering bits!
0001
0010
0100
1000
-40-
bed digit
units
tens
hundreds
thousands
I/0 PORT DEFINITIONS & USE OF INTERRUPTS FOR THE DTC MICRO FILE
Interrupt System
From the programmer's point of view, there are # interrupt
levels, 0-7, arranged in a priority scheme with 0 the highest
priority ard 7 the lowest. The priority interrupt chip is
an output device, controlled as follows:
I/0 Port # : 0
b7 БО
Output word: xxxx0sss
SSS is a binary level number. When sent to the interrupt
chip, it enables all interrupt levels, below.
E.G: to enable all levels use: 5“vS-6 —
MVI А, 7
OUT INTRP
Once an interrupt has been acknowledged, you must function
some level in order to re-establish interrupts (The priority
chip locks out further interrupts until refunctioned).
Currently Assigned Interrupt Levels:
"R"# Level RST Address Use
R7 0 00H Power on
R6 1 08H | Front Panel Reset
R5 2 10H Real Time Clock
R4 3 18H USARTS
(R2 Eb 28H Disk Drive) - Provisional
-41-
Real Time Clock
The Real Time Clock can provide interrupts at 4, 8, 16
or 32 ms. intervals. For the Micro File System, 16 ms. is
selected. The clock is controlled as follows:
I/0 Port #: 1
Output word: Bit 0: 0 = Reset Interrupt Request
1 = Leave Interrupt Request
Bit 1: 0 = Disable RTC
1 = Enable RTC
Normal Use is:
MVI 2,3
OUT CLOCK To start the clock
USARTS
Two USARTs are provided, "Terminal" and "Line". They
have port numbers: 20g and 24y, respectively. The sub-ports
and functions are allocated as follows:
PORT # INPUT OUTPUT
Port+0 USART data (RCV) USART data (XMT)
Port+1 USART status USART function
+ +
Port+2 Оррр =—0sss 0000 ssss
| TS
-—Speed — Clock Speed
parity я Aa
Port+3 ddddd eee 00000001 clears all
[qu lex XMT interrupt requests
Delay Р Port 23 only oo ELFEL DSART El
| = C1 FAu (ART EZ
SSS - Speed Code ppp - Parity e E Ш
- 7 - CLEAR SAE 2 |
000 - 110 000 - EVEN
001 - 150 001 - ODD
010 - 300 010 - MARK
011 - 1200 011 - SPACE
100 - 2400 100 - NONE (8-bit)
101 - 4800
110 - 960 a
y Ÿ <- A LÀ fo ime À г E
/ ‚4 ; if
x ey JA Пе Ter e VE
ddddd
Delay
00001
00010
00100
01000
10000
NO DELAY
100 ms
200 ms
400 ms
800 ms
eee Duplex
001 Half
010 Echoplex
100 Full
">
Download
Advertisement
Key features
Memory management
Terminal/Line I/O
Disk I/O support
EXEC processing
Real-time clock
Digital display control
Frequently asked questions
A program relinquishes control to the monitor with the RET instruction. An alternate method is to jump directly to the MON entry point, but this effectively terminates an active EXEC process.
When a program acquires control, it can access the statement that invoked it. Register pair BC points to the first character of the 'program name,' and register D contains the number of characters in the statement.
When an RST 7 instruction is encountered, the 'Snapshot' activity is initiated. It prints the snapshot location and the contents of all registers, as well as activates an EXEC-like program (SSNAP) that executes statements in the SNAP T file.