Inferno #04
22 июня 2003 |
|
Softinka - The functions of the operating system ZXVGS.
Options ZXVGS All functions ZXVGS caused by RST # 08 with the number of functions in the next byte (hook code). The program continues to address lying for hook code. RST # 08 DEFB function In the following tables the column labeled "input" describes the registers containing the function arguments. Column marked "exit" - the register in which function returns, and other registers are unchanged. The contents of AF at the entrance ignored, the state F at the exit is not defined. In some cases, the function can set the 7-bit register R, it would mean that one or more screen interrupt was missed. Byte value after RST 8. # 00 - # 1a - BASIC interpreter errors # 1b-# 31 - Interface a hook codes # 32 - # 47 - command codes DISCiPLE # 78 - # 7e - Internal Use RSX'ah # 7f - internal call ROM # 80 - # 83 - Joystick # 84 - # 85 - mouse # 87 - # 88 - speed # 89 - # 8f - Keyboard # 90 - # 9f - control the screen - so far not used # A0-# a1 - Information # A2-# a3 - setup (config) # A4-# a5 - sound # A6-# a7 - Screen # Ac-# af - RSX'y # B0-# bf - memory banks # C0-# c1 - the current path (current path) # C2-# c3 - directory # C4-# c7 - disc information # C8-# cf - Working with Files # D0-# db - direct access to files # E0-# e7 - operation with files that have headlines (headers) # E8-# e9 - image # Ea-# eb - shipment Games # Ec-# ed - work with pieces of files (Raw data) # Ee-# ef - the selection of files # F0-# f7 - Printer # F8-# fb - Overlays # Fc-# fe - system calls # Ff - OK Notes: * Interface a hook codes are processed through MDR.RZX and BI1.RZX. * Commands are processed through DISCiPLE MGT.RZX and BD1.RZX. Internal call ROM Code # 7F is reserved for internal use system. Used to call ZX Rom from the system. Joysticks Note. Function calls # 80 .. # 83 can be interrupted by the user. To avoid exit without saving the results, use # A3 (will be available in future versions). Perhaps the use of 4 independent joysticks. Usually used the first two. The meaning of bits 0 .. 4 is compatible with the value from the port of Kempston joystick (# 1F, b0 = right, b1 = left, b2 = down, b3 = up, b4 = fire). Bit 5 - the second fire (usually not used). Bits 6 and 7 are common to all joysticks represent two more buttons. Bit 6 (HALT) can cause delays in the game (when fitted) or activate the option. Bit 7 (EXIT) can interrupt the game or cause a transition the main menu. The specification calls: Number name description input output # 80 J0 read joystick 0 - A = state # 81 J1 read joystick 1 - A = state # 82 J2 read joystick 2 - A = state # 83 J3 read joystick 3 - A = state Using a Mouse You can use an external mouse (operated outside the main program), as well as generates an interrupt. The problem of computing absolute coordinates, drawing a pointer and track events are on your programme.Dlya use the mouse in any management programs with the following requirements: 1. Disable interrupts! Turn on IM 2. 2. Set the value of the register I (preferably # 80 .. # FE). It must not point in ROM! 3. Fill in the interrupt table (257 bytes from the address I * 256) identical bytes. Beware! Some types of mice (AMX) generate vectors IM 2! 4. At the address indicated interrupt table, place: NOP NOP NOP JP ownint "Ownint" - address maintenance procedures preryvaniy.Esli you do not need a handler, you can put EI: RETI instead transition. 5. Book 128B buffer for maintenance procedures mouse. Put the address this buffer in the HL (# 5B00 .. # FF80). You do not will have to spoil this area after setting your mouse. 6. Book a byte to store the horizontal smescheniya.Pomestite his address in BC. 7. Book a byte to store vertical displacement. Put his address in DE. 8. Call the function # 84. She will fill buffer and the area under the NOPs. And in the case need to replace the interrupt table. 9. Allow me to interrupt! For older programs, it is recommended to put XOR A: RET in the beginning of the buffer to avoid crashes when you call to initialize the mouse. Coordinates will be changed to the specified address. They are all 8-bit. You can only read them and compare with the standards for opredeneniya changes. To test buttons simply call the procedure from the beginning of the buffer. It will return the state of the buttons in A, preserving the values of other registers (b0 = left button, b1 = right; bit set indicates the press). Please note that some types of mice (RS232, AMX) can generate its own interrupt, useless for our program. All non-staff interrupts are "eaten" (return address is removed from the stack). And if the return address refers to the byte after the command HALT, it will be decremented to continue to HALT human interruption. The mouse can be deactivated by specifying 0 as a buffer address (in HL). Data returned in this case, are useful for the RSX - They help to disable the driver used by the main program, connect your driver to process the request, after which turn off your driver and return the driver of the main program. The specification calls: Number name description input output # 84 MSEINI set I = page A = result Mouse BC = ^ xcoord DE = ^ ycoord HL = ^ buf interview HL =??? A = result Mouse BC = ^ xcoord DE = ^ ycoord HL = ^ buf disable HL = 0 A = result Mouse BC = ^ xcoord DE = ^ ycoord HL = ^ buf # 85 MSEGET read state - A = keys (For ext. B = dy use) C = dx Speed Function # 87 switches the processor into a rapid rezhim.Skorost not qualified - simply assumed that the program works faster. Function # 88 returns the processor is in standards mode is 3.5MHz. The specification calls: Number name description input output # 87 FAST (Scorpion) - A = result accelerates work CPU # 88 SLOW (Scorpion) - A = result returns 3.5MHz Keyboard Extended keyboard can be used to enter text in certain programs. Provides several additional buttons (on the emulators, SAM Coupe, ZX128 keypad). Will be used in BASIC, if there will be patches or ways to intercept INT. Function call # 8F??? should be placed in IM 2 processor, at least to the conservation AF. Or may be caused by illicit interrupts about 50 times per second. While not apply! Not completed yet! The specification calls: Number name description input output # 8C? KBDGET get char () (A) from buffer # 8D? KBDTST read char () (A) from buffer 'Leave it # 8E? KBDMOD mode selection (BC) (A = result) # 8F? KBDINT sync. () (A) interrupt Management Screen Function # 90 .. # 9F designed to display the menu, move the mouse pointer and text output in 42, 51 or 64 column. In particular, the additional screen modes. In the current version ZXVGS not implemented! The specification calls: Number name description input output # 9F? CHOICE ask user HL = ^ title A = result what to do BC = ^ options The specification calls config 'system info: Number name description input output # A0? Unknown # A1? Unknown Function Setting Teams # A2 and # A3 mashinnozavisimymi control functions. Parameters: Option D E meaning Type # 80-83 0 does not change joystick 1 Sinclair 1 2 Sinclair 2 3 Kempston April Fuller 5 arrows SAM Coupe +6 function Button SAM Coupe 7 (undefined) 8 TC2068 left (AY # F5, # F6) 9 TC2068 right (AY # F5, F6) Type mice. # 84 0 Kempston Mouse Changing a server mouse impossible, 2 SAM Mouse when the driver 3 J3 mouse active. 4 AMX Mouse 5 AY mouse (Ukrainian) 6 (undefined) 7 (undefined) 8 M $ Mouse in YAMOD.8250 / 0 9 M $ Mouse in YAMOD.8250 / 1 10 M $ Mouse in YAMOD.8250 / 2 11 M $ Mouse in YAMOD.8250 / 3 The presence of # A4 mask (1 = no) Sound devices. Printer Type # F7 (not defined) The specification calls: Number name description input output # A2? GETCFG take the function D = A = error setting E = mode function # A3? SETCFG establish the function D = A = error parameter E = mode0 function E = mode1 Sound configuration Function # A4 provides information about available audio devices. Bit 0 corresponds to the beeper on port # FE, bit 1 - BEEPER procedure in ROM Beysika.Sbroshenny bit means - do not generate sound in this way (you do not want to hear this sound). Fixed bit 2 indicates the presence AY-3-8910 / 2 ports # BFFD and # FFFD (as well as # BEFD and # FEFD for misspelled players), bit 3 - chip SAA 1099 (SAM Coupe) by port # 00FF and # 01FF. If one of the two last bit is cleared, you should not use these ports! This can lead to crash! If this function is called without first calling the function # A5 (post # AF), it identifies all the available audio devices (downward compatibility, will be removed). Function # A5 is used to auto-detect audio device. Device number should be in D, and some of the parameters - in E. (An asterisk "*" indicates that the device has fixed the port addresses.) Parameter to the function # A5 D unit E # 01 * AY-3-891X (ZX128) channels (in the form Register 7) # 02 * AY-3-8912 (TC2068) channels (in the form Register 7) # 03 * both (1 and 2) channels (in the form Register 7) # 04 * SAA1099 (SAM) channels (in the form Register 14'15 ; B6, b7 - your choice) # 08 8255 D / A (MB-02) channels b0 .. b3 The specification calls: Number name description input output # A4 SOUND information - A = flags # A5? OPENSOUND find D = A = number of difference unit E = E = channels channels Display Settings # A6? VIDEO () (A, D = ula, E = mode, B, C) returns the type of ULA in the D (Display Properties) Options - in the case D Country D computer graphics England # 00 Sinclair ZX ULA 6C001E-7 Spectrum (+) # 01 Sinclair AMSTRAD 40056 ZX + 128 # 02 Amstrad ZX +2 ULA 7K010E5 # 03 Amstrad ZX GATE ARRAY +2 A / +2 B / +3 40077 # 0C MGT SAM Coupe ASIC Porto # 20 Timex TS 2068 - 60Hz gallium Sinclair 2068 # 21 Timex TS 2068 - Computer 2068 50Hz, grey # 22 Timex TS 2068 - Computer 2048 50Hz, black Poland # 80 ELWRO 800? Junior #? Solum? Russia # C0 Pentagon? # C1 Scorpion ZS? et al # F0 Warajevo emulator # FF unknown B, C - parameters of the time frame synchronization in ticks Z80 (fast RAM) # A7 OPENVIDEO Log (BC = timing, DE = mode, HL = buffer) Exit (BC = timing, DE = mode, H = tacts, L = len) Options # E8, # E9, # F3 use the value screen mode (screenmode). LINT: + # 80 LINT interface generates an interrupt to the how the display line indicated in the port # F9. Interrupt can be recognized cheniem port # F9. Presence should be determined by the function # A???. (At the moment such a possibility is supported only on SAM Coupe.) the main modes of non-core modes E Bulletin E description # 00 Standard # 08 Standard screen # 4000 screens # 4000 and # C000 # 01 Standard # 09 Standard screen # 6000 screens # 4000 and # 6000 # 02 high colour # 0A high colour screen # 4000 screens # 4000 and # C000 # 03 hires # 0B hires screen # 4000 screens # 4000 and # C000 # 04 Standard # 0C standard screen # C000 screens # 4000 # 6000, # C000, # E000 # 05 Standard # 0D standard screen # E000 screens # C000 and # E000 # 06 high colour # 0E high colour screen # C000 screen # 4000 and # C000 - 1:3 # 07 high colour # 0F high colour screen # C000 screen # 4000 and # C000 - 1:2 When HL> # 4000 at HL placed relotsiruemy code for selecting one of the main screen mode. In this case, L contains the length of this code, and H - the number required him taktov.Vyzovami with H = 0 mode is selected directly. The specification calls: Number name description input output # A6? VIDEO info? A on the screen D = ula E = mode B C # A7 OPENVIDEO include BC = timing BC = timing display DE = mode DE = mode Mode HL = buffer H = tacts L = len Management Resident Expansion Resident System Extentions (RSX) Function # AC is used to load RSX in memory of the system without activation. In the case of no errors (A = 0), handle (handle) selected RSX back in D. Function # AD? calls internal functions of the available RSX. Function # AE is designed to control all loaded RSX.Pri E = 0 puts in HL name of the file that caused the boot program or an error if the program was launched directly, without reference to the file. BC must contain a buffer size of at least # 0080. # AF function loads the RSX, the corresponding file extension, followed by the RSX download the file. For example, for File "GAME.Z80" RSX is loaded from a file "ZX: Z80.RZX". This is not the case Extensions "V00" (native program ZXVGS) and "RZX" (RSX will ship directly, and not "RZX.RZX"). Function # AF downloads: * Files "*. V00" - the desired program (then the file "*. SV @", if it exists) * For "*. RZX" - required RSX, * For the rest - "ZX: ext.RZX" (if found; "ext" - the file extension), and the name of the file will be available through the function # AE at E = 0; The specification calls: Number name description input output # AC RSXINIT take RSX DE = ^ rsxname D = handle A = error # AD? RSXCTRL call D = handle? function RSX E = A = error function # AE RSXINFO information E = what? on the RSX HL A = error BC # AF RSXLOAD download DE = ^ filename file RSX'om A = error Memory banks These functions, you can manage up to 4MB memory. (What does the result 4128kB mode 16kB 8208kB mode or 32kB.) Introduction There is a 16kB RAM switchable in the upper (Section D) of memory (# C000 .. # FFFF). It is possible to use virtual memory banks, the contents of which will move the software. Banks # 00 .. # 07 preferred and can be switched quickly, the individual functions # B0 .. # B7 with no arguments. The Bank must be opened before the operation with him. If the opening is not enough memory (RAM in case of non-virtual banks or external memory for virtual), generated a fatal error. Pre- Check the free space! Outdoor pot filled with zeros. Options do not check the PC, SP and I, so using them in the wrong context can cause a system crash. If, for hardware reasons it is impossible to switch the top quarter of memory available only virtual banks (with a long switching time). If the hardware can only reasons to switch both the upper quarter of the memory simultaneously (32kB, # 8000 .. # FFFF), then switching the top quarter of the simulated with or without rewriting another quarter (section C). In this case, can not open bank switching quickly and not debasing this section C. She copied when it opens. There are three types of banks: 1. Individual - numbers 0 .. 15 - each can be opened in his regime. 2. Parametric - numbers 16 to the return value of function A # BF. This group exists only if the function # BF returns greater than 15. Open mode is determined for the first public bank in this group and will be the same for others. 3. Virtual - numbers in excess of the value returned by the # BF. This group exists only if the function returns # BF A value less than 255. Open mode determined for the first public bank in group and will be the same for others. These Banks can only be opened as virtual. To open the first virtual Bank at least one of the real banks should be opened as a slow (bit 0 in Register D dropped) - he will replace the state on virtual and will be used for Storage of virtual memory (banks, particularly public, preserve the real state). Options Options # B0 .. # B7 choose one of the privileged bankov.Funktsiya # B8 choose any bank - his number is transferred in register E. Function # B9 provides information about banks. Function # BA used to get a piece of code switching banks. For more details see next section. # BB function copies the contents of section C all open 32kB pages, or ignored in the case of 16kB-page mode. Function # BC tries to open the Bank E and D mode and returns udavshiysya regime D. See the table settings. Function # BD closes bank E. If E is included in the current bank, then contents of the top quarter of the memory is not defined (ie, may contain ROM or # FF-s) to select another bank. Function # BE closes all banki.Soderzhimoe top quarter of the RAM is undefined. # BF function returns the register number of the E current bank, and in case D his regime. The register B returns the number of open bankov.Registr A contains a number of additional banks (except virtual): * 0 - 48 kB (standard ZX48) * 1 - 64 kB (32kB usually one bank, so called ZX80kB) * 2 - 80 kB (two additional bank - usually 16kB) * 5 - 128 kB (five additional banks - ZX128) * 6 - 144 kB (view extended TC2048) * 27 - 480 kB (Pentagon 512kB two reserved pages) Parameters: D vh.dannye vyh.dannye # BC # BD / BF when 1 when 0 when 1 0 must click quickly? bit1 = 0 bit1 = 1 (Not virtual) 0 16Kvirt 32Kreal 1 domain bit0 + copy C # 8000 .. # BFFF a 32Kreal 16Kreal does not change? 2 contains a screen? no screen is a screen 3 corresponds to the incompatible compatible Bank ZX128? with OUT # 7FFD with OUT # 7FFD OUT (# 7FFD), E +16 4 can be put there, it is possible Table IM 2 will "snow" without "snow"? "Snow" will not 5 processor is yes, would not the bank inhibit ULA? brake fast 6 supports 8 no, but yes, 8 bits (???) bit color 1-bit color 7 will even open will not open if not, is Soble to their demands? Function # BA - fast switching banks Allows banks to click a lot faster. Follow these instructions: 1. Determine whether your program work in a 32kB page mode. If not, use mode% XXXXXX11 (will not be to work on some types of equipment). Otherwise, 32kB or 16kB. Make sure stack and interrupts. 2. Open a bank function # BC. 3. Book 32B for the program to switch pages. Program moveable. To use the program without moving it, you can fill the buffer with zeros, and place it in its complete programmu.Ili 33 bytes code "RET" (# C9), or "JP (HL)" (# E9), depending on the structure of your program. 4. Book two bytes in the # 5B00 .. # 7FFE, put their address in BC at the first call to # BA (then BC will be ignored). 5. Call the # BA to put Package include Bank E at HL. Function returns the actual length of the code in the BC and the number of ticks in A. DE point to the byte after the code so you can add (using LDIR) go your own code. 6. To select the bank, call this code. Remember! * Each bank has its own program of inclusion. * (!!!) Code can be moved anywhere place and at any time. * Code MUST NOT be used after the closure of the bank! The code, issued by the function # BA, no longer 32 bytes. * He always spoils AF, BC, and sometimes, but that uses the stack. * To call any function ZXVGS you MUST call the code that includes a page that stood before the first call of these codes (the latter bank, selected functions # B0 .. # B8). * Code MUST be in the bank, which He vklyuchet.Problem not occur when placing the code in the address # 4000 .. # 7FFF. After placing it in the address # 8000 .. # BFFF you can call a function to copy the # BB it in other banks. But if you want use it with the addresses # C000 .. # FFFF, you themselves must copy it in the included page. * In some cases (such as emulators) function returns the # BA # FF, which means that the code contains a function call # B8. Remember the stack! The specification calls: Number name description input output # B0 BNK0 include - A =? .. .. privileged # B7 BNK7 vanny Bank Fatal Error when unopened # B8 BNKE include - A =? any bank Fatal Error when unopened # B9 BNKCTRL data DE = infonum A Bank of BC DE HL # BA BNKCODE get E = number BC = length program HL = ^ buffer DE = ^ end Switching BC = ^ word A = tacts # BB BNKCOPY copy - A =? section C all banks # BC BNKOPEN open D = mode0 D = mode1 Bank E = number A = xor # BD BNKCLOSE close E = number A =? jar # BE BNKRESET close - A =? All banks # BF BNKINFO information - B = opened for all D = mode Banks E = bank A = memory Current directory The specification calls: Number name description input output # C0 GETPATH current path DE = ^ buf A = error (Disk) name = DE ^ Begins with a drive letter and colon # C1 SETPATH Change the way DE = ^ name A = error Reading the contents of the directory # C2 function returns the directory entry, selected function # C3. HL points to the string format (as determined by the function # C3 used either at H = 0, or if HL indicates the zero-byte internal system structure is returned when H = 1), DE points to a buffer. In this buffer is returned directory entry - ASCII Text, ready for display. (Use the HL = 0 for fill the file selector (fileselector), then HL = ^ '% f% n' for taking the file name selected by the user.) Function # C3 chooses directory finds elements and copies them into an internal buffer. (The buffer should be released (DE = 0) after read completely directory.) HL indicates on the format string (system format on default or at H = 0 or if HL points to null byte internal system structure is returned by H = 1). Can use the following formatting characters: *% A attributes *% B number of allocation units, engaged in a file or string "Dir" *% C file comment *% D date of last modification *% E filename extension *% F the path to (real) *% G group name files (GID) *% K number of the first allocation unit *% L the length, in bytes, or the string "Dir" *% M file name without extension *% N filename extension *% P path (the pointed by DE) *% S file name extension (?) *% T the time of last modification *% U username file (UID) *% X attributes U * IX Other characters are copied without change. Decimal number between% and the letter indicates a fixed width polya.Polozhitelnye value - right-aligned, negative - on the left. Value after point indicates the number of cut characters in a row. Examples: "%-16.16m%-3.3e% l" - NeOS 1.0 style (DEC) "%-8.8m <% 1.1e>% 3b% 13l" - TR-DOS style (Start parameter is not available) "% X%-9g%-9u% 8l% 6d% 5t% n" - U * IX style (Ls-l) "%-9.8m%-4.3e% 13l% 9.8d% 9t" - MS-DOS 6.20 style (default) Internal system structure consists of following fields (not fully defined): * + # 00 - - 4B; * + # 04 - - 4B; * + # 08 - - 4B; * + # 0C - - 4B; * + # 10 - - 4B; * + # 14 - - 4B; * + # 18 - - 4B; * + # 20 - ASCIIZ filename without a path - to 32B; Free disk space can be found at the "# C4 or # C5. Note: some drives (most of the network, such as "TCP:", "HTTP:" or "FTP:") do not show all possible subdirectories, but only those that have been used recently (or are in the tabs). The specification calls: Number name description input output # C2 take the element BC = number of A = error Catalog HL = ^ buf1 HL ^ = entry (Entry) DE = ^ format DE =? BC =? # C3 set HL = ^ name A = error mask DE = ^ format BC = number of Directory BC = attr DE =? HL =? Data on disk Options # C4 and # C6 return information specified drive / path or file. Options # C5 and # C7 change information specified drive / path or file, but only if possible. Options BC returns # C4 # C6 # 0000 disk space in KB HL ASCIIZ text # 0001 depth directory L ASCIIZ text (1 = root) The specification calls: Number name description input output # C4 GETINFO get DE = ^ name A = error parameters BC = infonum BC numerically HL DE form HL # C5 SETINFO set DE = ^ name A = error parameters BC = infonum BC in the numerical value HL = DE form HL # C6 GETINF $ get DE = ^ name A = error parameters BC = infonum BC in the form HL = ^ buf DE line HL # C7 SETINF $ set DE = ^ name A = error parameters BC = infonum BC in the form HL = ^ value DE line HL Manipulating files # CB function deletes a file or directory (Directory must be empty). # CC function checks for the file (error or not). The remaining functions are not defined yet. The specification calls: Number name description input output # C8? RESET Initialization - A = error filesystem # C9? FLUSH release - - all buffers to disk # CA? MAKE create a DE = ^ name - " or directory # CB KILL to delete the file DE = ^ name - " or an empty directory # CC EXIST check DE = ^ name - " presence of a file or directory # CD? ASSIGN connects DE = ^ name - " new drive HL = ^ newname # CE? MOVE move / rename DE = ^ oldname - " files / directories HL = ^ newname # CF? COPY duplication DE = ^ srcname - " files / directories HL = ^ desname Simple file functions Options for working with files. If you want to download the entire file into memory, or to retain a portion of memory as a file, see first function # E0 .. # ED. Function # D0 always closes the file with the specified handle. If the handle is given as 0, it will close all open files. # D1 function opens a file for reading (returns an error if the file does not exist). # D2 function opens a file for writing - delete an existing file and create a new, zero length. Function # D3 opens the file and read, and on zapis.Esli file does not exist, it will created with the first record. Options # D4 .. # D7 are used for reading and record file. Options # D4 # D5 and remit the number of bytes (returns The number of bytes transferred in fact - if it is less than requested, an error is generated). # D6 function reads bytes from a file to limit or to the values # 00 or # 0D (including them). Function # D7 writes bytes to Byte # 00, which is not recorded. It can be written only when the first byte in line. # D8 function returns the current position in file. # D9 function allows you to move current position in the file and returns the old position in fayle.Smeschenie counted depending on the register B: # FF means "From the beginning," # 00 "from the current position", and # 01 Since the end of a file. Error value is returned if crossed the start or end file. Addressing capabilities file of up to 8MB (23-bit addresses). Function # DA says, is whether the current position at end of file (EOF). # DB function truncates the file to the current position. Following features - an almost direct calls systemic structure FILEDISK. Its definition can still be changed in the future. The specification calls: Number name description input output # D0 CLOSE to close the file handle to D = A = error # D1 OPENI open file DE = ^ name A = error read D = handle # D2 OPENO open file DE = ^ name A = oschibka write D = handle # D3 OPENO open file DE = ^ name A = oschibka read / write D = handle # D4 READ reads D = BC = readed handle from the File BC = length A = error HL = ^ databuf # D5 WRITE record handle D = BC = written a file BC = length A = error HL = ^ data # D6? GETL read line D = A = handle error from the File BC = maxlen BC = length HL = ^ linebuf # D7? PUTL record string handle D = A = error to file HL = ^ line # D8 FPOS get a handle D = EHL = pos current position of the A = error # D9 SEEK set D = handle EHL = oldpos the position where B = A = error EHL = newpos # DA? EOF checking D = A = handle error at the end # DB? TRUNC cut the file handle to D = A = error on the current position Files with the headline Options # E0 .. # E7 operate on files with a title (like tape). Before calling a function # E4 .. # E6 type header must be set to one of the functions # E0 .. # E3. This setting is valid until the next call to any of the functions # E0 .. E3. If the file exists, then in certain registers, return values, taken from the title of this fayla.Esli file is missing or the type of title does not conformity is not, it returns an error indication. Error can be ignored if it made an entry in the file, but Reading such a file will always result in an error. At the entrance to the function # E3 buffer size indicated in BC. The length returned in BC, is limited to this size, whereas the DE contains the actual size. This is to avoid the limitations of tape - you can not upload a real tape the first few byte file length, and its checksum could not be verified. Also, BC = # 1B00 and HL = # 4000 are recognized as your wish download or burn the screen (although you can download it and save from other addresses). Reading and writing an error if we assume or recorded fewer bytes than trebovalos.V this case, check the BC. The operation verification is equivalent to reading and occurs both on tape - error if the data is different or the file is too short. Function # E7 vyzavaetsya before # E4 .. # E6. Allows you to set the offset, which gives the possibility of sequential access file. This means, for example, the reading of successive parts of a file in different banks memory. Error is returned when the position goes through the end of the file. Options # E0 .. # E3 always set the offset to 0 (Immediately after the title). Calling any of the functions # E4 .. # E7 without calling one of the # E0 .. # E3 causes a fatal error. File with the headline can be up to 65535 bytes long (not including the header). Rest cut off. The header format may vary in different file systems. Therefore, discouraged processing files with a title with the help of other functions, except when a file or a screen play shipment. For files with extensions other than ". CZX", ". DZX", ". DAT", ". ROM", ". SCR", called sootvetstvyuschee RSX. So you can, for example, download data or BASIC program from a file "*. Z80"! For details, see the documentation for the RSX. The specification calls: Number name description input output # E0 HEADER0 select File DE = ^ name A = error type of program BC = prog DE = length HL = line BC = prog HL = line # E1 HEADER1 select File DE = ^ name A = error Type H = DE = tip'imya length number array H = tip'imya # E2 HEADER2 select File DE = ^ name A = error Type H = DE = tip'imya length character array H = tip'imya # E3 HEADER3 choice DE = ^ name A = error Binary BC = maxlen DE = length File HL = start HL = start BC = length # E4 LOAD read the file, the length of BC = A = error in memory of HL = start BC = readed # E5 SAVE write to the file length BC = A = error from memory HL = start BC = written # E6 VERIFY to compare the length of BC = A = error File HL = start memory BC = verified # E7 SHIFT move DE = shift A = error position in the file Screen Files To read or write Spectrum screens can be used and the function # E8 # E9. Operation always involves 6912 bytes of memory. Separating these functions allows you to convert graphics from / to different image formats. Recorded screen is 256x192 pixels and 16 colors, but there may isklyucheniya.Esli contents of the downloaded file is not compatible with restrictions Spectrum, the result will not opredelen.Oshibka returned if the file was not recorded, or does not exist or format is not recognized. In future releases will be used ZXVGS RSX to read and write images with extensions other than ". SCR" and ". CZX". These functions can also be shown on the screen dialog with a list of valid formats if was not given the file extension or file for reading is missing, or the name of the file is empty. Other display modes are also supported. The specification calls: Number name description input output # E8 LOADSCR load screen DE = ^ name A = error from file HL = addr # E9 SAVESCR save screen DE = ^ name A = error to file HL = addr Files game shipments Options # EA # EB and designed to preserve and restore the state of gaming or configuration of these programm.Vyzov function allows the user to select one of 10 such files. When you save users may comment fayl.Fayly saved with the name of the current program and one of the extensions "SV0" .. "SV9" (User selectable). D = 0 dialog appears and the file will the default extension ". SV?". In this case, E contains the character code placed in the 3-th position of the extension (unfit characters are replaced by "!"). This is available for download defoltnoy configuration when you run or save the output. The comment line at Conservation is set to "Autosaved" (May include date and time). This can be used along with standard call (when the user selects himself) For the function # EA at HL = 0 uses the address from the header. Expansion of "SV @" (E = # 40) reserved to store the file table records. If file exists, ZXVGS download "*. SV @" immediately after the file is "*. V00". Later, the file is saved when the user invokes the menu ZXVGS. The new curricula must be preserves the function # EB at each table updates rekordov.Fayly "*. SV?" stored and loaded on the disk "SV:". The specification calls: Number name description input output # EA LOADCFG load settings BC = length A = error DE = ^ title HL = addr # EB SAVECFG save settings BC = length A = error DE = ^ title HL = addr Files without a title Function # EC is used to load a file or its initial part of the memory. The error code is returned if it was Loaded fewer bytes than requested. Function # ED is used to save continuous area of memory to a file. Code error is returned if it was stored less bytes than the required (low on ROM). Always check the BC error. The specification calls: Number name description input output # EC LOADANY load BC = length A = error any file DE = ^ name BC = readed HL = addr # ED SAVEANY save BC = length A = error any file DE = ^ name BC = written HL = addr File selector Options # EE # EF, and allow the user to select or enter the name of the file or directory in easy way. Perhaps an indication of the default name and the restriction of choice mask. The mask can be edited by the user, which means zaisklyucheniem "*/", choice of directory. There is also the title of the operation. To view the results (with path) to reserve 128 bytes a buffer. Functions return an error if file selector was abandoned on the button <EDIT>, Or file name is blank. # EE function always returns the screen (memory # 4000 .. # 5AFF) intact, that in many cases results in a limited way selector. Function # EF always uses full-screen interface, but leaves the screen in a random state. After This requires a screen refresh. It is recommended to use file selectors for each case specify the names of files the user. If the mask is "*. SZX" or "*. SCR", a selector can also choose to allow other graphics formats, and accordingly can change the extension. The specification calls: Number name description input output # EE FILESELL selector DE = ^ default A = error without spoiling BC = ^ mask name = DE ^ Screen HL = ^ title # EF FILESELH selector DE = ^ default A = error with damage BC = ^ mask name = DE ^ Screen HL = ^ title Printer The function returns # F0 control code printera.V register E is given a code number, in HL - address of buffer for him. In BC sets the maximum length (B is ignored - should be 0). When control codes placed in the clipboard, BC (B = 0) contains a number of characters, and A is 0. If the buffer was too small, BC returns the required size, and A> 0.Esli control code is not available, then BC = 0 and A> 0. Function # F1 sends the requested control code directly to printer.Sm.takzhe function # F0. # F2 function equivalent to the command BASIC COPY. Function # F3 print screen (256x192), taken from the specified address. # F4 function mimics the ZX Printer on a normal character printer. # F5 function mimics the ZX Printer dot-matrix printer, but for a character printer works like the # F4. Function # F6 is designed for printing text with national characters. If there are no perekoditoraniya, the equivalent function # F7. Values 1 .. 5 in register D choose the character set ISO-8859-D. Function # F7 sends bytes directly to the printer (control sequence can be a function of # F0). Options # F0 .. # F6 service module {PRINTER.RZX}. Printer control codes for the functions # F0 and # F1: code meaning setting for your printer Epson FX HP LaserJet {EPSONFX.RZX} {LASERJET.RZX} # 00 the number of needles on August 8 # 01 ahead of print 27,65,8? Screen # 02 number of points of 224.1? in the mode1 # 03 choice mode1 27,75,224,1? # 04 number of points of 192.3? in mode2 # 05 selection mode2 27,76,192,3? # 06 code for CR 13 13 # 07 LF code for October 1910 The specification calls: Number name description input output # F0 GETPRINT take E = A = error code kontr.kod HL = ^ buffer BC = codelen printer BC = buflen code = HL ^ # F1? SETPRINT give E = A = error code kontr.kod # F2 DUMP print 22 - A =? line of the screen Graphics # F3? DUMPANY printing HL = address A =? 24 lines screen graphics # F4 ZXPRINT print the symbol E = A =? symbol as on the ZX Printer # F5? HLPRINT printing HL = ^ pattern A =? character, E = symbol defined by HL as the ZX Printer # F6? DEPRINT print D = modificator A =? symbol E = symbol with modifier # F7 LPRINT line E = symbol A =? printer output Overlays Options # F8 .. # FB designed to control overlays. Typically, overlays are The following levels of the game. Overlay can be loaded with the function call # F8, indicating Rooms overlay. Preparation of (feature # F9) gives the result on server systems and allow to raise the upload speed (for example, Timex FDD 3000) - is not neobhodimoy.Zagruzka overlay buffer (function # FA) leads to accelerate your downloads. This option is ignored when not RAM for storage. This can be used instead of downloading the overlays directly into the memory banks (like the games that run on ZX48, and the ZX128), because buffer overlays are stored in compressed form and, Also, can be stored in the shadow RAM at ROM (MB-02). Function # FB removes the overlay from buffer. All functions return free buffer space in kilobytes. If free space is greater than 254kB, returns 255. The specification calls: Number name description input output # F8 OVRLOAD load overlay E = number of A = free E = 0 mean main program # F9 OVRPREPARE load E = number of A = free overlay to clipboard only if multitasking # FA OVRSTORE copy overlay E = number of A = free the internal buffer # FB OVRREMOVE remove E = number of A = free overlay of vnutr.bufera System calls Options # FC .. # FF are designed to yield from the program in the system menu and complete the program. Function # FC only causes the system menu. The program can be continued. # FD function terminates the program after the end of its work (closes all open files, banks, clears the buffer overlay, etc.) The function is similar to # FE # FD, but shows the message you want to exit the menu. Function # FF is reserved for BASIC interpreter, which causes her after of the last instruktsii.Eto useless programs ZXVGS. Normally (without the RSX) word of XPTR # 5C5F copied to CHADD # 5C5D, # FF placed in ERRNR # 5C3A, and the program continues with the # 0058 (Processor errors). The specification calls: Number name description input output # FC MENU exit the menu, - A =??? return item "Continue" # FD QUIT exit the menu - - with a message "Program finished" # FE FATAL exit the menu DE = ^ text {Zxvgs@yarek.com}, {http: \ zxvgs.yarek.com}
Other articles:
Similar articles:
В этот день... 21 November