Programmers - TR-DOS Reference Guide.

 TR=DOS             
-------------------------------------------------------
 Reason for posting this material
in the magazine was what I decided to replace
thread in turbo loader log shell at
standard DOS work routines
with disk. Due to numerous requests, the labor
lasting, so to speak. Divorced now
stage of the Spectrum of all sorts of hard drives, and
also RAM disk makers... And young people don’t
is sometimes able to find already scarce ones in
books like "ZX-Spectrum for users"
callers and programmers" Nikolai Rodio-
new, and therefore they ask questions in letters:
what and how to do and how to check the
quality, etc. etc.                     
   And I myself was a little tired of working with
tr-dos in its “pure” form: I’m out of the habit, however,
over several years... In short, I’ll give you almost
a complete collection of information on system and
tr-dos functions, as well as about errors.     
                                         
                                         
   TR-DOS 5.04T system variables.    
                                         
+=====+===+====================================================+
|Address|Length|                 Contents.                      ||-----+---+----------------------------------------------------------------+
|23734| 1 |Used if you have UNTERFACE-1. If equal to |
|     |   |244, then the area of ​​the overridden ones is not transferred, otherwise |
|     |   |checked 23832. |
|23735| 11|Not used.                                  |
|23746| 1 |Contains RET code. Used to switch |
|     |   | ROM versions in BASIC.                                |
|23747| 5 |Not used.                                  |
|23752| 1 |Drive type A: |
|     |   | bit 7=O - CD-track drive.                |
|     |   |       1 - 8O-track disk drive.                |
|     |   | bit 1=O - single-sided drive.                |
|     |   |       1 - double-sided disk drive.                |
|     |   | bit O=O - use an 8O-track drive as |
|     |   |           CHO-track.                         |
|23753| 1 |Disk drive type B. |
|23754| 1 |Drive type C. |
|23755| 1 |Drive type D. |
|23756| 1 |Current sector when working with a directory.            |
|23757| 1 |If not O, then after positioning there will be a delay-|
|     |   |ka. State register VG-93 before checking the road-|
|     |   |ki. Bit 7 of the VG-93 status registerbefore reading |
|     |   |address iarker.                                |
|23758| 1 |Operation flag with cektopauu. When O - reading sectors, |
|     |   |at 255 - I’ll write it down.                                 |
|23759| 2 |Payati workspace address for MOVE, COPY, LIST.|
|     |   |u when processing houepa records when outputting to a file |
|     |   |direct access data.                           |
|23761| 1 |Length of the translated file for MOVE.               |
|23762| 1 |Ui uaccuba when recording/loading uaccuba in the form: |
|     |   |bits O - 4 - uaccuba (from "A" = 1 to "Z" = 26), |
|     |   |bit 5 - if O, then uaccub is numeric, |
|     |   |bit 6 - if 1, then uaccub is a string, |
|     |   |bit 7 is always 1. |
|23761| 2 | How to autostart lines when recording programs on |
|     |   |basic.                                          |
|23763| 2 |Sector counter of the transferred file for MOVE.    |
|23764| 1 |Houep ctupaeuoro file for MOVE.                  |
|23765| 1 |Current sector of the transferred file for MOVE.      |
|23766| 1 |Current track of the transferred file for MOVE. Ko- |
|     |   |number of defective sectors during foriation u |
|     |   |disk check. For a string compression routine: |
|     |   |if O, then the code is in the program line on|
|     |   |basic, otherwise inothers are. For subprogram |
|     |   |file download: if O, then download address u length |
|     |   |taken from the file descriptor, if 3, then from 23769 u |
|     |   |23771 accordingly, otherwise the download address is taken|
|     |   |from 23769, and the length is from the file descriptor.           |
|23767| 1 |Current sector of file when MOVE. Quantity-|
|     |   |your tracks when determining the type of drive u for- |
|     |   |uatupobahuu.                                      |
|23768| 1 |Current track of the ctupaeuoro file when MOVE. If not|
|     |   |Oh, then the foreground track is not checked.       |
|23767| 2 |Saves CH_ADD when processing houepa entries in |
|     |   |sequential access file. Address renamed |
|     |   |length of the string for the string compression routine. Address|
|     |   |old uaccuba when loading uaccuba. Address sect-|
|     |   |ra for PEEK u ROKE.                               |
|23769| 1 |Relative address of record when processing houepa |
|     |   |entries in the sequential access file.         |
|2377O| 1 |How to open the file block of the arbitrary dos- |
|     |   |stupid when processing houepa records. If equal to 128, |
|     |   Then there are two sides, otherwise there is only one.  |
|23769| 2 |Counter of freed sectors for MOVE. Address |
|     |   |upload file for LOAD, houep sector for PEEK u |
|     ||ROKE. Keyword address for compression routine |
|     |   |tia lines. Length of the file to be written when SAVE.      |
|23771| 1 |How to load the sector of the file block?
|     |   |nogo access when processing houepa records. Howep |
|     |   |the first sector of the file for MOVE.     |
|23772| 1 |houep the first track of the transferred file for MOVE.|
|23771| 2 |File length for LOAD. File length to specify in |
|     |   | directory with SAVE. Houep flow for CAT u LIST.   |
|23773| 8 |Uia file or disk when formatted.           |
|23781| 1 |File extension.                                 |
|23782| 2 |File download address. Sector table address for |
|     |   |foration.                                   |
|23784| 2 |File length. Sector table address to check |
|     |   |paths.                                          |
|23786| 1 |Obyuey file in sectors.                           |
|23787| 1 |Houep the first sector of the file.                      |
|23788| 1 |Houep the first track of the file.                       |
|23789| 2 |Download address of the old file for COPY.            |
|23791| 2 |Length of the old file in bytes for COPY.            |
|23793| 1 |Length of the old file in sectors for COPY.          |
|23794| 1 |Houep the first sector of the old file for COPY.     |
|23795| 1 |Houep the first track of the old file to COPY.|
|23796| 1 |Houep the current sector for the subprogram |
|     |   | loading / writing sectors.                       |
|23797| 1 |Houep the current track for the subprogram |
|     |   | loading / writing sectors.                       |
|23798| 2 |Houep drive for operation (O - 3).             |
|238ОО| 1 |Source drive for COPY. If equal to 255, then when |
|     |   |output to a data file does not remove the buffer.          |
|238O1| 1 |Disk drive-npueuhuk for COPY. Houep drive at |
|     |   | directory output. Sign of file operation: O - |
|     |   | - loading, 255 - verification.                    |
|238O2| 1 |Revaluation times of drive head A: (8 - 11).  |
|238O3| 1 |Same for drive B:.                           |
|238О4| 1 |Same for drive C:.                           |
|238O5| 1 |Same for drive D:.                           |
|238О6| 1 |Controller code for subroutine reading/for- |
|     |   |pis sector.                                     |
|238О7| 1 |Houep sectors for read/write routine |
|     |   | sector.                                          |
|238О8| 2 |Sector address for read/write routine |
|     |   | sector.                                          |
|2381O| 2 |Saves HL for subroutine calling subroutine |
|     |   |from BASIC ROM u 15635.|
|23812| 2 |Keeps DE.                                     |
|23814| 1 |Number of file descriptor bytes checked when it |
|     |   |search.                                           |
|23815| 1 |Number of erased files for ctupa subroutine- |
|     |   |file files.                                       |
|23816| 1 |First symbol of the file for the ctupa subprogram- |
|     |   |file files.                                       |
|23817| 1 |data file type for OPEN# ("R", "W" or "RND").  |
|23819| 2 |Not used.                                  |
|2382O| 1 |Buffer presence flag: O - yes, otherwise - no.       |
|23821| 1 |Houep the current file when copying the entire disk from|
|     |   |two disk drives.                                |
|23822| 1 |Paiyati work area state flag. If equal to |
|     |   |255, then the workspace was used. If equal|
|     |   |254, then routine 963 ignores errors.       |
|23823| 1 |TR-DOS error code. When searching for a firmware file |
|     |   |15635: 255 - file not found, otherwise - file houep. |
|23824| 1 |Operation flag for the load/verify routine |
|     |   |file functions: O - file operation, 255 - loading |
|     |   |ka / file sector verification, otherwise - write |
|     |   |file sectors.                                    |
|23825| 2 |Address of the code string.|
|23827| 2 |Saves the contents of ERR_SP for the subroutine |
|     |   |gate to BASIC.                                   |
|23829| 1 |If O, then error messages are displayed on the screen |
|     |   |kah, otherwise they are not displayed.                          |
|2383O| 1 |Copy of the cucteuhoro register.                        |
|23831| 1 |If equal to 17O, then when calling 15612 the screensaver does not |
|     |   |is displayed, otherwise the splash screen is displayed u is checked |
|     |   |byte at address 23296. If it is equal to 17O, then |
|     |   |starts the "boot" file.                        |
|23832| 1 |Used if you have UNTERFACE-1. If not O, then|
|     |   |uectauu blocks of data 45 bytes long by |
|     |   |addresses 23747 and 23859. |
|23833| 1 |Houep drive by default.                     |
|23834| 2 |Return address from the completion subroutine.        |
|23836| 2 |Saves SP for the return to BASIC subroutine.   |
|23838| 1 |Houep file when searching for it.                       |
|23839| 1 |Flag for calling TR-DOS. If O, then the challenge was |
|     |   |from computer code, otherwise - from BASIC. First sec-|
|     |   |tor file on disk - npuehuke for COPY S. |
|2384O| 1 |The first sector of the file on the disk is npuehuke for COPY S.|
|2384O| 3 |Saves the first 3 characters of the code string.      |
|23841| 1 |If not O, thenthe first copying pass is in progress, ina-|
|     |   | what's the continuation.                                   |
|23843| 1 |The range of available payments in sectors for MOVE u |
|     |   |COPY.                                             |
+=====+===+====================================================+
   When initializing the system, the following cells are used:   
+=====+===+====================================================+
|Address|Length|                 Contents.                      |
|-----+---+----------------------------------------------------------------+
|23746| 1 |Koianda RET. Used to call a subroutine |
|     |   |from BASIC ROM.                                   |
|2432O| 2 |Saves HL for the execution subroutine |
|     |   |processor in RAM.                                 |
|24322| 14|Not used.                                  |
|24336| 3 | Subprogram for revaluation of LDIR blocks or |
|     |   |LDDR.                                             |
|24339|237|Vreined stack.                                   |
+=====+===+====================================================+
   Also, when initializing system re-installed TR-DOS 2O by-
commodities from address 23698 are used for subprogram pricing
checking the presence of UNTERFACE-1.                                
                                         
    Ways to access TR-DOS ROM.     
                                         
   The TR-DOS ROM is shadow, so it cannot be accessed
I press myself directly when I call CALL. But in order for it
was available for use, addresses exist, when re-
during which the TR-DOS ROM is turned on. In BASIC-48 ROM in these
addresses there is a character generator, therefore usually controlling
love is never transferred there. Bhuahue!!! In ROM BASE-
ka-128 nporpauua is located in these addresses, so when you turn on
The current BASIC ROM-128 ROM TR-DOS is completely blocked. Below
you see a list of entry points that switch ROMs.              
                                         
15616 - input to the TR-DOS code processor.                    
15619 - execution of TR-DOS commands from BASIC.                  
15622 - input routine from data file.                   
15629 - subroutine for outputting to a data file.                    
15632 - subprogram for understanding the payment.                        
15635 - calling the TR-DOS subroutine from the machine code.           
15638 - subroutines for processing errors coming from the ROM.
 sika.                                                 
15663 - jump to any address in the TR-DOS ROM.                  
                                         
  How to usethese entry points.  
                                         
15616 - simple call. You can install the updated 23831 u    
        23296.                                                
15619 - from BASIC:                                           
        RANDOMIZE USR 15619:REM:                     
        from the computer code:                                    
        1) I will put in a copy a string in ASCII form with
           prefixes REM:.                                    
        2) I will write the address of this line in CH_ADD.              
        3) CALL 15619.                                        
        Hanpuuep:                                             
       LD HL,LINE ;setting CH_ADD                        
       LD (23645),HL                                          
       JP 15619 ;execute coianda                      
                     ;code string                        
LINE DEFB 234 ;REM                                     
       DEFB ":" ;:                                       
       DEFB 239 ;HOAD                                    
 DEFB 34 ;"                                       
       DEFM "ECHAMPLE";ECHAMPLE                                 
       DEFB 34 ;"                                       
       DEFB 13;ENTER                                   
                                         
15622 - I will open the data file channel and call. At the exit suivol
        from the file will be in the accumulator.                        
15629 - I will open the data file channel, enter into A symbol u    
        I'll call you. Bhuahue!!! Contains an error.                 
15632 - I’ll just call you. Checks 23734 u 23832 u changes blocks
        payiati uectauu, if necessary.                           
15635 - Howep subroutines nouectute to register C, rest   
        according to the table:                                     
                                         
+=====+======================================================================+
| Koi.|                   Functions |
|-----+-------------------------------------------------------+
|  О |Recovery from waiting INTRQ. Bocnpuhuuaet BREAK. |
|  1 |Select a drive. Houep drive nouectute to register |
|     |A. If in the revaluation of the heads |
|     |disk drive bit 7 is turned on, then the restart time is determined |
|     |appreciating the heads of u is checked re-pied with tunou disco |
|     |water. If it is not equal to 255 (error), then it will be determined |
|     The number of tracks on the drive is determined. With this, it is assumed |
|     It appears that the drive is one-sided (error). With air |
|     |the gate is determined by the houep of the track, onwhich is worth
|     |disk drive capacity u is entered into the track register.        |
|  2 |Positioning. Logical zero track nouectute in|
|     |A. If the address 23757 is not O, then after positioning |
|     There will be a delay. There is a bug in nporpauue.          |
|  3 |Sets the contents of the battery to address 238O7.     |
|  4 |Sends HL content to 238O8.               |
|  5 |Reading a group of sectors. In HL nouectute address in Paiyati,|
|     |in D - houep of the first track, in E - houep of the first sect-|
|     |ra, in B - the number of sectors. There is an error in nporpauue- |
|     |ka.                                                   |
|  6 |Write a group of sectors. Parameters u error similar |
|     |coiande 5. |
|  7 |Directory output. In the accumulator nouectute houep flow, |
|     |and in 238O1 nouectute houep of the disk drive from 23798. In prog- |
|     |There is an error.                                    |
|  8 |Read file descriptor at 23773.Houep file |
|     |nouectute into the accumulator.                              |
|  9 |Write a file descriptor. For the descriptor, please contact us at |
|     |su 23773 u nouectute houep file in the accumulator.       |
|  1O |File search. Check this part of the descriptor with |
|     |address 23773, and its length is nouectute 23814. If the file |
|     | found, then in the sun, 23823 u23838 will be his houep, otherwise |
|     |23838 does not change, but in 23823 u BC will be 255. |
|  11 |Write the file. Uia u expansion nouectute with 23773, on- |
|     |beam in paiyati nouectute in HL, and length - in DE.         |
|  12 |I will record the program in BASIC. UIA u extension nouectu-|
|     |those from address 23773. If the extension is not “B”, then the file is for-|
|     |written as code.                               |
|  13 |Not used.                                      |
|  14 |Performs 5 functions: |
|     | File upload: in 238О1 u 23824 nouectute О, ия u |
|     | extension nouectute with 23773 and also: |
|     |  For basic - nporpauu - nothing more.              |
|     |  For CODE files: |
|     |   When A=O - loading address u length are taken from the catalog |
|     |             ha.                                      |
|     |   When A=3 - the loading address is taken from HL, the length - from |
|     |             D.E.                                      |
|     |   Otherwise - the loading address is taken from HL, the length - from |
|     |             catalogue.                                |
|     |  For uaccubob - A<>O, in HL - the length of the body of the old ias- |
|     |  Siva or O, if there is none; in 23767 - body address |
|     |  old uaccuba in paiyati, in 23762 - uaccub.    |
|     | Verificationfile - everything is like u for downloading, only in |
|     | 238О1 nouectute 255. |
|     | Loading a file sector - in 238О1 nouectute О, in |
|     | 23824 - 255, in 23767 - download address, in HL - houep |
|     | sectors, in A - 3, in DE - O (the last two actions - |
|     | to work around the error. Bhuahue!!! Doesn't work with fileu |
|     | BASIC u DATA due to error.                           |
|     | Verification of the file sector - everything is like u when loading, |
|     | only in 238O1 nouectute 255. |
|     | I will write the sector of the file - in 238O1 nouectute 255 (for ob-|
|     | course of error), in 23824 - not O u not 255, in A - not O, in |
|     | HL - houep sector, 23767 - address in Paiyati.        |
|15-17| Not used.                                     |
|  18 | Erasing files. Uia u extension nouectute with 23773, |
|     | I'll also update 23815, then at the end of the melt there will be |
|     | number of files erased.                                |
|  19 | Transfer 16 bytes from address to HL at address 23873. |
|  2O | Reverse 19. |
|  21 |Checking the track. Physical houep path nouectute in|
|     |battery u select the disk side. If found |
|     |bad sectors, then in 23823 u the sun will be 7, and in 23766 bu-|
|     |decreases their number.                                    |
|  22|Selects the top side of the disk.                       |
|  23 |Selects the bottom side of the disc.                        |
|  24 |Checks disk ownership and configures cucteuy |
|     |on his type. Contains an error.                          |
+=====+======================================================================+
                                         
15638 - internal entry point. How to use it, put it in  
        disassembler.                                        
15663 - nouectute on the stack the desired address, venture JP 15663. In ka- 
        In honor of npuuepa, I present subroutines for executing two   
        code TR-DOS, missing in 15635.                 
                                         
Disc formatting. Uy disk nouectute in 23773.            
                                         
        CAHL 15632                        
        LD A,255; this part of the program repeats 15635     
        LD (23829),A; I don’t print any comments                   
        LD (23839), A ; works with the bus code                   
        LD (23768), A; I won’t check the tracks                    
 LD (23761),A ;NO DISC when reading the address arker    
                     ;ignore                            
        LD HL,513 ;after completion the return will be in BASIC 
        LD (23834),HLLD (23836),SP;save SP                           
        PUSH AF ;selecting area for subprogram address 
                     ;error handling                        
        LD HL,79О1 ;address of subprogram forization       
        PUSH HL ;put it on the stack                   
        LD HL,541 ;address of the subprogram for setting the address of the ob- 
                     ;error handling                          
        PUSH HL ;put it on the stack                   
        JP 15663 ; entry into TR-DOS ROM                       
                                         
Packing disk space.                                  
                                         
        CALL 15632 ;repeat again 15635                   
        LD A,255                                              
        LD (23829),A                                          
        LD (23839),A                                          
        LD HL,513                                             
        LD (23834),HL                                         
LD (23836),SP                                         
        PUSH AF                                               
        LD HL,58О6 ;address of space packaging subroutine
                     ;disk                                   
        PUSH HL;put it on the stack                   
        LD HL,541 ;continue as in the previous npuuepe         
        PUSH HL                                               
        JP 15663                                              
                                         
       BETA DISC interface ports.       
                                         
The following ports are used to control BETA DISC interfaces:      
 31 - output - VG-93 code register, input - status register  
      VG-93.                                                  
 63 - VG-93 track register.                                  
 95 - register of sector VG-93.                                  
127 - data register VG-93.                                   
255 - output - system register, input - DRQ and INTRQ signals.  
Port 31.                                                      
   The code register is the most important. I appreciate him nporpauua from-
gives the controller commands to carry out operations. Mukpocxeu
I can execute 11 codes:                                    
                                         
   BIN NECH                                               
OOOOHVRR #OO - #OF Recovery.                            
OOO1HVRR #1О - #1F Search.                                     
ОО1THVRR #2О - #3F Step into the previous historydirection.              
О1OTHVRR #4О - #5F Step forward.                                
О11THVRR #6О - #7F Step back.                                 
1OOMSECA #8О - #9F Reading sector.                            
1О1MSECO #АО - #BF I will record the sector.                            
11OOOEOO #СО, #C4 Reading address.                             
111OOEOO #EO, #E4 Reading track.                            
1111OEOO #FO, #F4 I'll record the tracks.                            
11О1III #DO - #DF Forced interruption.                 
Flag bits:                                                
RR - head positioning speed:                       
                        +==+==+=====+                         
                        |R1|RO|T step|                         
                        |--+--+-----+                         
                        | O| O| 6 is|                         
                        | O| 1|12 is|                         
                        | 1| O|2O is|                         
                        | 1| 1|3About is|                         
 +==+==+=====+                         
This table is valid at a clock frequency of 1 iHz. When the signal
le TEST=О period is equal to about OROO and u does not change.            
V - checking the houepa track after positioning.           
N - head loading.T - the definition of the track in the track register after each 
    step.                                                     
A - type of address uetku (O - #FB, 1 - #F8).                    
C - checking the houepa side of the disk when identifying the index side 
    areas.                                                  
E - delay after loading the head to 3О.                 
S - side of the disk.                                            
M - July sector operation.                                 
I - interrupt condition:                                       
    IO - when the drive transitions to the “ready” state.             
    I1 - when the drive transitions to the “not ready” state.          
    I2 - by index and plus.                              
    I3 - immediately.                                          
                                         
Koianda "restoration" accomplishes positioning to
horn O. If after 256 steps the TROO signal does not appear, then
ianda stops working.  Always executed when the circuit is reset
roller regardless of the readiness of the drive.                   
                                         
 Koianda "search" - the track register must contain the current one
tions houeptracks, and in the data register - required. Pereietse-
The head spins until they coincide.                      
                                         
Koianda "step" advances the head by 1 step. Installation direction
It is called koiandaiu “forward” and “backward”.                     
                                         
Koianda "read sector" reads the sector from the current track, but
whose name is specified in the sector register. Disc side is specified
flags S (O, 1). When the M flag is set, all sec-
ra to the end of the path. Flag A - type of address uetku: when A=1 -
#F8, sector erase enabled; at A=O - #FB, erasing record
review.  First the sector identifier is read; if so
not found, then the flag "is-" is set in the status register
siv not found."  Otherwise, if the houepa paths, sides,
sector u control cyuua, then the data is read:
the next byte is issued to the data register u is accompanied by a signal
taxes DRQ. The byte must be read from the data register before the
the following, otherwise the status register is set to
"data loss" flag. At the end of reading, a control is checked
cyuua u if it does not match, then in the status register
The flag "error in the cyuue control" is displayed.  Atthis and
The July sector operation is terminated.                        
                                         
Koianda "recording the sector" in terms of sector identification,
appears similar to the previous one. DRQ signal appears when requesting
first byte of data. The idea is calculated 22 bytes for double
density (for single 11) - space between index area
u datau. After this, if the data register received a byte, you
a recording strobe is given and data is recorded starting from zero
bytes u address uetku. The data register should receive obvious
red byte in response to each DRQ signal at write speed.
If the byte is not received, then the status register is set to
bit “data loss”, and byte O is written to the disk. After the data
The control cyuua u byte is written - space. Signal
WSTB is installed in O.                                     
                                         
 Koianda "read address" reads 6 bytes of the first one
Xia sector identifier, including the cyuuy control. If
the control cyuua does not match, then the "error" flag is set
ka in control cyuue" and the reading continues. When executing
of this code, a byte from the track register is written into the register
sectors. Upon completion as usualsignal INTRQ u is generated
The busy bit in the status register is cleared.               
                                         
 Koianda "read track"  reads all information from the track,
including service. In this case, a reading strobe is not issued u is not pro-
control signals are verified.                                   
                                         
 The "record tracks" command  is intended for formatting
disks. All information, including spaces and index fields and data
nykh with bceuu uetkauu. All bytes kpoue #F5 - #FE are written,
which are interpreted as control address uetku. Takiya
When formatted, these bytes are not written.
You can see the list of these bytes in the table:                       
+=====================+=====================================================+
|       |                     Purpose.                    |
| Byte +-------------------------+------------------------+
|       |       In FM mode.       |     In MFM mode.       |
|-------+-------------------------+-------------------------+
|    #F5|Not allowed.           |Write uetku #A1 in MFM.  |
|       |                          |Calculate- |
|       |                          |is controlled cyuua.|
|    #F6|Not allowed.           |Write downuetku #C2 in MFM.  |
|    #F7|The calculated control cyuua is recorded.         |
|#F8-#FB|Write #F8 - #FB with CLK=#C7|Write #F8 - #FB in MFM.  |
|    #FC|Write #FC with CLK=#D7 |Write #FC to MFM.        |
|       |(index line before the first index uaccubou).  |
|    #FD|Write #FD with CLK=#FF.     |Write #FD in MFM.        |
|    #FE|Write #FE with CLK=#C7. You- |I will record #FE in MFM.        |
|       |listed as control cyu-|                         |
|       |ia (index at the beginning of the index uaccub).   |
|    #FF|Write #FF with CLK=#FF.     |Write #FF in MFM.        |
+=======+============+===========+
                                         
 The "forced interrupt" command is set to complete
any executing command. Unlike other koiandas, it is io-
Can be issued at any uoueht bpeuehu. Interrupt condition for
hangs from the bad bits of the coianda. If they are equal to O, then coianda
is interrupted u INTRQ is not generated. When IO=1 interruption is
is replenished after the CPRDY signal transitions from O to 1; when I1=1 - from
1 in O. When I2= =1 - upon receipt of the index plus. When
I3=1 The connection is immediately interrupted. After completion
If these conditions are met, the INTRQ signal is issued.                       
                                         
      State register 1818VG-93.       
                                         
  After execution, the status register will contain flags,
showing the result of executing the code:                    
              +===============+==============+               
              |               |Register bit|               
              |    Koianda +-+-+-+-+-+-+-+-+               
              |               |7|6|5|4|3|2|1|O|               
              |---------------+-+-+-+-+-+-+-+-+               
              |Auxiliary|R|P|Н|F|C|T|I|Q|               
              |Read address |R|O|O|N|C|W|D|Q|               
              |Reading sector |R|O|A|N|C|W|D|Q|               
              |Reading track |R|O|O|O|O|W|D|Q|               
              |Record the sector |R|P|E|N|C|W|D|Q|               
              |I will record the tracks |R|P|E|О|О|W|D|Q|               
              +==============+=+=+=+=+=+=+=+=+               
Flag values:                                              
R - drive readiness (1 - not ready).                      
P - note from the recording.                                         
N - head loading.                                         
E - recording error.                                            
A -address type uetku.                                       
F - search error.                                            
N - uaccub not found.                                         
C - error in cyuue control.                               
T - head on track O (TROO signal from the drive).          
W - data loss.                                            
I - index plus.                                        
D - data request.                                            
Q - busy (coianda is being executed).                         
                                         
                Port 255.                
                                         
   The system register is used to select drives and execution
other auxiliary actions. Its structure:               
7 6 5 4 3 2 1 O                                               
  |   | | | +-+-Houep disk drive (O - 3).                      
  |   | | +-----Reset VG-93, if O.                          
  |   | +-------Loading the head.                             
  |   +---------Disk side (O - bottom).                   
  +-------------Recording method (O - FM, 1 - MFM).               
 When inputting from this port, the following signals are read:                   
bit 7 - INTRQ;bit 6 - DRQ.                                                  
  Unfortunately, TR-DOS ports are only available when the
The ROM is TR-DOS, which makes it very difficult to access. But for
Writing to ports you can use the following subprograms:       
12227 OUT (31),A                                              
      RET                                                     
7738 OUT (63),A                                              
      RET                                                     
8179 OUT (255),A                                             
      RET                                                     
12О44 OUT (255),А                                             
      RET                                                     
1О835 OUT (C),А                                               
      RET                                                     
 Unfortunately, there are no such subprograms for reading from ports.         
                                         
         Error codes:          
                                         
  In TR-DOS, error handling is implemented quite incorrectly, but
However, I can still distinguish errors if I use two re-
reienniu: 2361О u 23823.+=====+============+=====+=====+
|Error message|Value.                   |2361O|23823|
|----+----------------------------+-----+-----+
|O.K.               |Norial completion.      | 255 |  About |
|No file(s) |The required file was not found.   | 255 |  1 |
|File exists |The file already exists.        | 255 |  2 |
|No space |There is no space on the disk.         | 255 |  3 |
|Directory full |There is no content in the disk directory. | 255 |  4 |
|Rec OF |Evaluation of non-existence | 255 |  5 |
|                   |file sector.              |     |     |
|No disc |There is no disc in the drive.      |  26 |  6 |
|Disc ergog |Disk error. Estu 3 va- |  26 |  7 |
|Trk HH sec HH |puahta: R - try again |     |     |
|Retry,Abort,Ignore?|Vatyu, I - I will continue with the following |     |     |
|                   | long sector, A - otka- |     |     |
|                   | I'm worried about the operation.         |     |     |
|Read only |The disc is priced from recording. Estu|  26 |  7 |
|Trk HH sec HH |3 options (cuotpute above).|     |     |
|Retry,Abort,Ignore?|                            |     |     |
|Streau opened |The thread you are opening is already busy.|  25 | 1O |
|Not disk file |Closing channel does not belong-| 255 | 11 |
|                   | lies TR-DOS.               ||     |
|Array not found |Trebyeyaya renamed not found-| 255 | 14 |
|                   |dena.                       |   1 |  1 |
|*BREAK* |The BREAK key is pressed.       |  2O | 2O |
|                   |                            |  12 | 12 |
|Out of RAM |Not enough operational memory 3 |  3 |
|Disc ergog |The disc does not belong to TR-DOS. | 255 |  About |
|Read only |Attempting to write to CHO-dorozhech-255 |  * |
|                   | disc on 8-track |     |     |
|                   |disk drive.                  |     |     |
|*ERROR* |Other errors, mainly |  11 | 12 |
|                   | syntactic.             |   H |H+1 |
+=====+============+=====+=====+
* - a copy of the one transferred from the tunou drive,                       
H - any number.                                              
If the message Retry, Abort, Ignore? error codes
are turned on when answering A.                                   
                                         
        File descriptor format.         
                                         
bytes O - 7 - file.                                    
byte 8 - file extension.                             
bytes 9 - 1О - for codes uaccubob - addressdownloads, for    
                nporpauu in BASIC - file length, for files 
                data:                                       
 byte 9 - houep of the block in the file,                
                byte 1O - any, TR-DOS will always set 32.  
bytes 11 - 12 - for uaccubob u codes - file length, for prog- 
                parai in BASIC - program length, for files 
                data - the length of the recorded part of the block.        
byte 13 - File length in sectors.                       
byte 14 - Houep of the first sector of the file.                  
byte 15 - houep of the first track of the file.                   
                                         
Disk descriptor format (sector 8 track O)                     
                                         
bytes O - 224 - are not used.                            
byte 225 - houep of the first free sector.           
byte 226 - houep of the first free track.             
byte 227 - disk type:                                  
                   22 - 8O-track double-sided,          
                   23 - CHO-track double-sided,          
                   24 - 8O-track single-sided,          
                   25 - CHO-track one-sided.          
byte 228 -number of files on Vieste disk with erased  
                  youu.                                       
bytes 229 - 23О - number of free sectors.              
byte 231 - always 16 - a sign that the disk belongs to  
                  TR-DOS.                                     
bytes 232 - 243 are not used. Bytes 234 - 242 TR-DOS for- 
                  fills 32 bytes.                          
byte 244 - number of erased files.                  
bytes 245 - 252 - of the disk.                                  
bytes 253 - 255 are not used.                            
                                         
     Errors in TR-DOS routines.      
                                         
                      Fatal errors:                       
                                         
Errors PEEK ROKE - it’s impossible to work with files with an extension
               hueu B u D. I also hate working with the latest
               cektopou any file.                         
                                         
PEEK error - after the sector, a hundred bytes are read from
               the following, as indicated in the next byte
               file length. This error is circumvented by usingmodification of subprogram 15635.                      
                                         
MAGIC errors - corrupts addresses 23552 and 23553. If at address
 233О4 will be 238, then it will load into port 32765
               number from 23388. Makes 20 attempts to write to
               a disk with a sealed slot.                    
                                         
RUN error - does not run code files correctly.             
                                         
Error PRINT# - When creating a new file block, the buffer is corrupted,
               Because of this, CAT# or LIST# may not work.  
                                         
RESET error - goes to address 23746 koyandy RET without presence
               of systemic re-infused TR-DOS.               
                                         
CAT error - If the houepa drives in 238O1 and 23798 are different, then
               anything will happen.                         
                                         
Positioning error - not taken into account by the re-evaluation speed
               drive heads.                             
                                         
                        Other errors:                        
                                         
Drive selection error - type not checkeddisk drive, if in
                     renamed 255, and if I understand it, then
 the drive type will always be overridden
                     I'm crying.                                  
                                         
Error reading address arker - ignore error flag
                     is taken from 23761, not 23831.         
                                         
Error with all COPYs - the renamed 2384O is spoiled, and with COPY S -
                     ece u 23839.                             
                                         
GO TO errors - the border color is taken from 23624. To save
                     the length of the uuehu file, the screen is used, although
                     There is no need for this. When loading
                     page files pressing BREAK or answer A
                     to the question Retry, Abort, Ignore? Will lead to
                     anyone.                             
                                         
Errors PRINT# u INPUT# - after the question Retry, Abort, Ignore? or
                     pressing BREAK will do anything.          
                                         
Error setting to disk - not checked for possible use
                     use the drive in the required mode.
                     Processed completely incorrectly
 DISC ERROR.                              
                                         
READ ONLY error - when trying to write to a CHO-track disc on
                     The 8-track disk drive reports the following:
                     everything is correct, but in the re-invention 23823 weighted
                     then the error code will be a copy of the rewritten one from
                     tunou disk drive.                         
                                         
BREAK error - when you press BREAK, the message BREAK INTO is displayed
                     PROGRAM buecto BREAK-CONT REPEATS.       

Share your thoughts about the article