Insanity #01
20 июля 1999 |
|
RAM Project - considerations Zetter'a of RAM Disk'e.
(R) Surv! V0r EeЄєЇїЎў ° ∙ · √ № ¤ ■ RAM PROJECT ■ ¤ № √ · ∙ ° ўЎїЇєЄeE Today in our room, we will present you with the opportunity acquainted with the project Zetter'a (author's well-known and popular program SSO1.0) "Menedzher upper memory." The system contained the material is fairly spetsifichina and time-consuming for acquaintance with it. Published in the SC # 1 article, and program Flying'a on the same issue will help you compare these two System Ram Disk'a. Their implementation of the program, or even possible say "core" nashlo (a) only on paper. In principle itself ideas should be ponyatnymi.Po Zetter'a own words, this tools will make soon a new version program SSO. (C) Zetter Memory Manager for 128/1024k Mashines Project Version 0.5 (c) Zetter 1999 Technical info: Max Memory: 1024k Max Work Memory: 512k (inside VirtMem) Max Special Memory: 512k (used for special bloks and free use) Max Bloks: 256 bloks Max Free Bytes: 512k bytes for programs and data + 480k for spe cial use Max Continuous mem available: 16128 bytes Max Continuous Mem available in special mode: 16384 bytes Page Map 49152 65408 65535 n 16256 128 Catalog page 65408: START CATALOGUE +0: B - unit (LUN) +1: \ "MMv0.50" +7: / 65416: BLOK TABLE F (+0) +8: B - the block number (0 - free) / - ^ - \ (+1) +9: B - blok flag: 0 - free 1 - (M) emory X V S P M 2 - (P) rogram 4 - (S) prite 7 6 5 4 3 2 1 0 7 - (F) ull blok +128 - Fi (X) ed unit, fixed at this page + 64 - (V) irtual memory blok Program blocks are fixed on the page and fdresu Fixed units are fixed only on the page (+4) +10: W-addr in page (+2) +12: W-blok lenght (if flag = 4 then Xlen, Ylen) (+6) +14: W-Start addr: 'Home' address for memory or program, Xzn_scr, Yzn_scr for sprite Memory Types RAM512 - memory in computers 128-1024K, up to 512K, ie 32 pages without considering the deleted pages (2,5, etc.) RAM1024 - memory in computers with 1024K remaining after create RAM512 In 48k Memory: Memory Map: creating a function: InitMem 'AddPage Mem_Map +000: B Unit / Full - 256 times + ... +255: B Unit / Full Unit / Full format: 7 6 5 4 3 2 1 0 F V U U U U U U U - logical page number 0-63 F - Full: This block covers the entire page (16K) 1 / 0 V - Virtual page 1 - yes 0 - no # FF - to block this number is not fixed format block numbers: in order. table of memory: (len 1024 bytes (512k available)) creating a function: InitMem 'AddBloks FreeTab; unit 0 - logical page 0 +0: W - start free bytes 1, the beginning of free space unit 0, free Block 0. '0 '- Not this block +2: W - lenght free bytes 1, length of free space in the unit 0, free Block 0. '0 '-No this block ... +28: W - start free bytes 8 +30: W - lenght free bytes 8 ; Logical unit 1,2 ... 32 Repeat for all the logical page. Place under non-existent pages contain # FF Table of logical pages (temporary) creating a function: TestMem broken up 'tables existing pages': TestMem PageTab (serial number - the logical, the content - physical) +0: B - '0 ' +1: B - '1 ' ... +63: B - '63 ' Table of existing pages RAM512 creating a function: TestMem. PageTab512 (serial number - a logical, content-physical) +0: B - unit 0 +1: B - unit 1 ... **+?: B - the last physical page (bit 7-ON: Virtual Page) ** +? - The last logical page +?: # FF - end mark RAM512 Table of existing pages RAM1024 creating a function: TestMem. PageTab1024 (serial number - a logical, content - the physical page) +0: B - page 0 (if this byte is 0 - not found memory RAM1024) +1: B - page 1 ... +?: B - the last physical page of a 512-1024k +?: # FF - end mark RAM1024 Table FULL blocks (if any RAM1024) 64 bytes +00: B - LUN RAM1024 straniitsy +01: B - 0 - empty, 1 - FULL blok, # FF - physical absence page .... +62: B +63: B FUNCTIONS 1. Saving functions: functions of creating and writing blocks Standart Input: A - blok flag MPSF HL-Start addr (Xzn_scr, Yzn_scr) NOR 001 002 004 007 BC-Lenght (Xlen, Ylen) FIX 129130132 - Standart Output: A - the block number (0-out of memory) VIR 065 066 068 071 [DE - block address in a page] * F + V 193194196 - (For the debug A = 255 - error i / o) * Function returns the value 1.1 ClearPage Input: none Output: A = any - ok; 0 - out of memory Cleans up some memory page from the blocks. Next for ClearPage team Put??? put it on this block has already cleared the page in the address 49152. Need to download software in memory. Steps: 1. Clear page 2. Put??? (Took place under a piece of program code) 3. PutTo A = (Put???) (Attached to the software unit) 4. Put???, Put ???... (Loads the data into the same page, where is the program) 5. PutTo A = 0 (Disables snapping) 1.2 PutTo Input: A - the block number to which to commit. 0 - undo command Output: A = 0 - ok; # FF - not found; other - error i / o Allows you to write blocks to a page which has a block A Command action a long-term, defeated by the transfer 0 as the parameter. When the binding could plummet speed because of the need for frequent execution ClearPage as memory will be searched within a 16k page. For newly created units will automatically perform the function FixBlok 1.3 Put start_adres, lenght, flag Standart i / o * creates a block and returns all the parameters of the block 1.4 PutReal Standart i / o creates a block and moves it into RAM512 2. Load Functions: reading function blocks Standart input: A - the block number Standart output: HL-block address in the page DE-setting unit Start Addr BC-block length A - 0 - ok, # FF - Not Found, Other - error i / o 2.1 Get Standart i / o returns all the block parameters 2.2 GetReal Standart i / o moves a block of memory in the 'Start Addr' 3.Other functions 3.1 DelBlok Input: A - the block number Output: A - 0 - ok, # FF - Not Found, Other - error i / o Remove the block. number of the block is removed from the memory card MemoryMap 3.2 FixBlok Input: A - the block number Output: A - 0 - ok, # FF - Not Found, Other - error i / o Commits block A on the page on which it is found by affixing a flag Fi (X) ed in BlokFlag. With this unit will not work function and MoveMem ClearPage 3.3 AutoFlush Input: A = 1: ON; A = 0: OFF Output: none In the ON state attempt to deal with Command error Put??? - Out of memory, not terrorizing an application of the above wild shouts. Working with functions and FlushMem MoveMem, trying to find a place to block. Failing this still gives an error, allowing the application to their own press the reset ;-) In this case, the program is recommended to have some unnecessary components such as undo buffer and retry Put??? In OFF state system makes no attempt to free up memory, giving it an honorable duty of a software program - WARNING !!!!! DO NOT abuse the fixation blocks and software blocks! Remember that your program can be running at 128k car! Probability-of-memory is directly proportional to the number of Program and Fixed Blocks!! Use this option only if necessary! " APPLICATION VirtMem to increase the amount of available memory can cause a state of shock from the user of your program. If you are an all-yet decided on such a heroic deed, it is not Remember to use the PutVirt??? Only for those blocks that you plan to put on VirtMem. As a rule it should be blocks to be used very rarely, such as levels, loadable to the game or what that external functions in the system program 4. Memory Functions: the function of memory blocks (RAM512) Names pamati: RAM512 - 48-512k pages RAM1024 - over 512k RAM pages Virt - Virtual (disk) pages. If the RAM> 128k, Virt mem NOT USED 4.1 FreeMem Input: none Output: HL - Total free memory DE - Free RAM512 BC - free RAM1024 IX - free VirtMem 4.2 MaxMem Input: none Output: HL - maximum continuous region in RAM512 4.3 FlushMem Input: none Output: HL - maximum continuous region in RAM512 Not move PROGRAM blocks within a single page. Gives the maximum continuous memory RAM512 This function does not work with Virt memory. 4.4 MoveMem Input: none Output: HL - maksimalinaya continuous memory RAM512 not move PROGRAM and NOT FIXED blocks of pages in the page to get really possible contiguous memory. Performed in an emergency shortage of memory or when you call ClearPage This feature does not work with Virt memory. 4.5 FlushPage Input: A - number of the block, whose homepage you want to clean Output: HL - maximum continuous memory in this page and not move PROGRAM IS NOT FIXED blocks except Block A of This page on other pages. Gives the maximum memory single page to accommodate the fixed blocks this function does not work with Virt memory. A - 0 - ok, # FF - not found, other - error i / o - 5. Initialise Functions: initialization function These functions are used for the initial launch of the program * 5.1 TestMem () Input: HL - sign PageTab (auto-installed) Output: HL - sign PageTab512 DE - sign PageTab1024 (DE) = 0 - RAM1024 no A - total number of pages available, take in (ALLPAGES) Determines the available memory kompyutera.Ne destroys data stranichkah.Ustanavlivaet (MEMTYPE) * 5.2 DelPage pagetab???, Page Input: HL - Plate RAM512 or RAM1024 A - the physical number of pages to delete Output: A - 0: ok; # FF - not found; other - error i / o 5.3 AddBloks Input: A - logical page number to be added to Directory structure blocks Output: A = 0: ok; A = other-This page does not contain Block structure of A = # FF - not found page, or i / o error Feature for programmers by Memory Manager. Adds manually creating a page with blocks in MemoryMap * 5.4 InitMem () Input: HL - sign RAM512 Output: A = 0: ok a = # FF: error i / o Create a directory structure on the free pages RAM512 and puts them in MemoryMap. Skips pages occupied Employed under the blocks page is defined by the signature "? MMv?." c 49152 5.6 CreateVirtMem Input: HL - the beginning of the base name: - 8 character file name B - number of added Virt Pages Output: A - 0 - ok, other-i / o error If you do not exist, writes files to disk Virtual Mem. 5.5 AddVirtPage Input: A - the number added Virt pages HL-address structure: 0-7: name \ 8: Virtual page number | 9: Start adres (49152) | 10: \ 11: bytes len (16384) / 16 bytes TR-DOS name 1912: | 13: Sector len (64 | 14: Start track | 15: Start sector / . . . Output: A - 0 - ok, other-i / o error Clears the directory and adds Virt pages in MemoryMap. 6. Internal functions 6.1 SearchByte: in - HL - Launch A - B out-HL - Address A - B or # FF - not found corrupt: B Search for bytes from HL to (A) or before the first # FF Variables: ALLPAGES.b - the total number of pages available MEMTYPE.b - the type of memory found 0 - no RAM1024, 1 - a PageTab512.w - a pointer to the beginning of the table RAM512. PageTab1024.w - a pointer to the beginning of the table RAM1024, if con contains 0 - no memory RAM1024 BlokF.b - the flag of the current block BlokST.w - starting address of the current block BlokL.w - The length of the current block BlokLOG.b - logical page for the current block BlokNUM.b - number of the current block BlokPAGE.w - Place the current block on the page BlokFTab.w - address space for the current block
Other articles:
Similar articles:
В этот день... 21 November