Adventurer #05
30 ноября 1996

Obmen experience - Some features XAS'a. Passing parameters to the program from the command line.

<b>Obmen experience</b> - Some features XAS'a. Passing parameters to the program from the command line.
ATTENTION: ADVENTURER N4 article
"Sharing experiences" made a mistake! Correctly should be as 
follows: ROM routines to work properly

in the 128-meter mode, you must reset the 4-th bit peremennoy 
FLAGS (23611 / # 5C3B). 

     The editors apologize to readers for inaccuracies.


               (C) Cav inc.


      Some features XAS'a



     Attention! It's about XAS'e in
which is not listed version, but just given the copyright of 
the author showing in 1996 

     The first feature XAS'a, noticed
me - that after-JEMMINI
COMMANDER and, say, sealing drive
startup XAS'a loaded text, which was the last to edit.
(But not always).

     The second feature is
that when you run your program, you
can both want to "spoil" 3,4,5,6 and 0
memory page, and you can even 7 (if you
STS is not needed) - your text is not "die" when
output back to the XAS, it is to load a
disc. (Tip: Save before you start
text on disk).

     The third feature is
that the instruction LD (adr) Assemblée
is interpreted as LD (adr), BC.

     The fourth feature is not related to
XAS'u and to STS 3.2, which came to me
with XAS'om on the disk, it has a name:
"Xsts.C". Feature is the button [C] - it causes a directory of 
the drive. AND more: in this version is made to trace

desired address, and not by the number of
commands.

From the Editor: Another, unfortunately, unpleasant feature is 
that no control - whether to keep the working file

before starting or loading a new disc (there are, of course, 
color display, but after assembling it shows

incorrect information).



    On the question of transfer options

    in the program from the command line



     What is the usual way to run programs from a disk in the 
TR-DOS? Correctly, using boot'a. In any case, 90% of all 
launches. Parameters of the same program requests after launch. 
But I would like to specify the parameters or data for the 
program during the run as this is done in MS DOS or RT-11. Long

time, I did not know how to implement it (or rather, it was not 
necessary), and that once decided to solve this. What came out 
of it - read below ... 

     The first idea kotoraya comes to mind - is to use the 
clipboard editor line (pointed to by the E_LINE). Topics

more, a set of command line
TR-DOS'e it is used. The idea was good, but impossible, since 
this buffer 

overwritten when loading BASIC'om. About
two days, I racked my brains and pestered to
all coders familiar with the issues .. Scratch INSULT, but what 
I'm there nakovyryal I was not needed. It was found that the 
presence of anything after the file name was determined by

last character. That is, the string
should be long enough. Deliberation
this question, I found a solution, but it turned out not very 
handy thing (in terms of length). To get everything working, 
had to write the shortest possible downloaders, with this text: 


      10 RANDOMIZE USR VAL "23883": REM ...

After REM came the following code:

       LD HL, ADDR

       LD DE, (# 5CF4)

       LD BC, # nn05

       PUSH HL

       CALL # 3D13

       RET


     here ADDR - address code boot

     Block, nn - number of sectors.


     Even with such a short BASIC-file
had the command line to fill fifteen (!) extra characters 
(unnecessary) and only after they have already let the 
information you need (in my case it was the name of the file). 
Here's a story came out. In light of the foregoing, we conclude 
that running a program with parameters from command line will 
not receive wide distribution. 


 Do you know what RST 16 (# 10)?



     Of course - to answer beginner coder, it is routine 
printing character whose code is placed in register A. And he 
will not right! Or imagine the reaction of the same novice 
hacker when he climbs in, say, the program LIST III (by GDC) 
and 

with trepidation discovers that a RST 1916
to print fonts, wide
four pixels with the distance between the letters
one pixel!


     What will be discussed below, is
ordered materials, so that all who consider themselves cool 
hackers and coders, it can not read.



     The use of channels in the programs



     Generally, information on the
question can be found in the publications "Inforkom" 'Yes. But 
not all of them there, and says there is not always clear. So, 
after turn the machine defined by the four standard channels. 
The number of channels is limited only the size of RAM. Scope 
of channels located in front of the domain, and BASIC on it 
(The region of channels) indicates that the variable CHANS (# 
5C4F). The concept of channels is an important role in 
Spectrum'e. The whole character 

I / O going through the RST # 10 on the most
case goes through the channels. Therefore, if you
picking someone else's program, we saw that
let's print a 64 character goes through
RST # 10, or alternatively through the restart is done at all, 
almost all, then do not panic and do not dig frantically 
PZU'shku! Just in this program of overriden feed.


     Overriding the channels of their
discretion sometimes gives a significant advantage in the job. 
We now turn to a deeper consideration. 

     Standard channels are sufficiently
simple structure:

Length (bytes) Name Comment


    2 proc_out - address of the procedure

                          O

    2 proc_in - address of the procedure

                          I

    A name chanel - channel name



     Addresses procedures for entry (proc_in) y
all the standard channels, except channel "K"
installed on the # 15C4 (RST # 8), ie
Printing error message "Invalid I / O
device ". The channel" K "(the bottom of the screen) proc_in 
pointer points to the # 10A8 (Key-INPUT). If you are going to 
change the address and proc_out proc_in of standard channels, 
keep in mind that some Team BASIC'a in its implementation of 
the standard channels are initialized to the value of the ROM. 
Therefore it is desirable to create Your channel and do with it 
whatever your soul. The literature says that

Only the standard channels have a length of
5 bytes, and if the user has decided to pervert, then he needs 
to take a block information about the channel not less than 11 
bytes. Been audited and found that quite enough, and five (if 
the device I / O does not block). Its own channel, you can 
create the following way: 


    LD HL, (PROG); sist.perem. # 5C53

                     ; (Early BASIC)

    DEC HL;

    LD BC, len; length of the reserves
                     ; Fix area

    CALL # 1655, s / n MAKE_ROOM

    INC HL; channel address

    LD DE, adr_data; address your data
                     ; GOVERNMENTAL Channel

    EX DE, HL;

    LD BC, len_data; length of the data

                     , Should be equal
                     ; On len

    LDIR;


      ...

adr_data

      DEFW print_my; address proc_out

      DEFW input_my; address proc_in

      DEFB "E"; channel name

This way you get your channel, but
it should still connect to the stream. Flows of 19 and can not 
be greater. K stream must-subscribe if

you are going to use the RST # 10. Region
information flow takes memory
Address # 5C10 to address # 5C34. Under each
flow allocated two bytes. If the data
stream contains # 0000, this means
that this flux is not plugged. To
to connect the channel to the desired flow you need to stream 
data to the beginning offset of the description of your channel 
from the beginning of the field channels. It does not sound 
very clear, but in reality everything is simple and is 
calculated by the formula: 


     adr_my_chanel-adr_begin_chanel +1


Here adr_my_chanel - your starting address

                      channel;

      adr_begin_chanel - the start address of
                         region of the channels.


     Open channel can easily be much more difficult
close it. No, if the last channel, then
no problems, but if you are going to remove
channel description, for example, the penultimate, then you 
have to tinker. That is: turn off the flow, move the end of the 
field of channels in the lower side, move

BASIC and everything above it to RAMTOP'a,
Calculate the offset in flux for the remaining channels. But do 
not be afraid, do not is really a complicated matter.


     By the way, due to the fact that the region of channels is 
after the system variables (such as SOS, and DOS), you can 
create self-running disks (ie, the commands CAT, LIST, etc.). A 
occurs this way: when processing komadny CAT, LIST

and others to address # 5D25 formed a temporary
buffer to read the eighth sector for
product configuration to disk. Standard sector TR-DOS'a have 
256 bytes, so it is a number assigned by the buffer. But VG93 
can read any sector (128, 256, 512 and 1024 bytes) and if the 
time sector more standard measures, the remainder of the sector 
runs into the domain of the channels. After this, TR-DOS, 
suspecting nothing, trying to type "OK", as well as in our data 
on the channel is not what should (or rather, if the disc 
auto), then there is a transition or being in this sector is 
also considered the procedure of loading or "Ahun" (a concept 
"Ahun" explained the works of F. Karsak / ca. Editor /). In 
light of all above, it becomes clear the behavior of TR-DOS 
when you try to look directory MS-DOS disk (512 bytes per 
sector). And so same as running a start-iS-DOS.


     In fact, using the concept of overriding feeds, you can do
pretty entertaining stuff. So, I'm up to
the appearance of my STS 4.1, received text
disassembler programs (others) with the following
way: I opened a file sequential read access: (OPEN # 4, "NAME", 
W), Overriding printer n of m on to

(Stream # 3) on the newly opened stream in

file (POKE 23580, PEEK 23582:

      POKE 23581, PEEK 23583)
sinkers MONS, then block codes entered into
MONS, and gave the command "output disassembler
unit to the printer "out of MONS'a,
closes the file (CLOSE # 4) and got ready to use text in ASCII 
format. 


     That's, like, and all I wanted to say. Whoever does not 
understand, you can write a letter with specific questions it's 
not clear. 


         Used Books:


  Yu Pomortsev "TR-DOS for professional
                 channels and fans "


  "Inforkom" Three Volumes of the chart.

                Volume Two of "Applied

                Graphics


  "Inforkom" ZX-Revue 1991



                 (C) RAY






Other articles:

Obmen experience - The use of channels in the programs. Using sub-ROMs.

Obmen experience - Some features XAS'a. Passing parameters to the program from the command line.

Obmen experience - A few useful tips and advice on connecting FDD 3.5 (three-inch floppy disk).

Interview - An Interview with Nicodim'om (R. Romanov), the author of the game Prince of Persia.

Interface - Letters from readers: Igor Galuza, Garkushin Alexei Inozemtsev Andrey, Potolovsky Viktor Nikolaevich.

Interface - The reasons for the collapse of the Yaroslavl electronic journal "El Dorado". New protection - Anti McDonald. Bad Is Piracy? Are several reasons why not to buy IBM PC as a home computer. How to get "NEW DIZZY"?

Review - O new programs: Narc, The Hundred, Heavy Metal Mover, Quick Draw McGraw, Iice Climber (Climber), Super Cars, Lode Runner 3, Down Town, land of myths, Gremlin 2 , Sword of Bane, Turbo Skate Fighter, Assault Course, Mercs, Darkman. Ten of the best games.

Ottyag - Test "You do not happen to brake?" 20 things that you can do until the game is loaded from tape and disk. Test "As far as like you around?" 40 things you can do with a "broken" drive and 5 tips how not to do with "broken" disk. A few tips for those who want to send programs to soil- those to their foreign friends.

Presentation - Author's presentation: Ray Disk Monitor v1.5, Robot Wars.

Presentation - The program for creating adventyur QUILL.

Promotion - Novella to the game "Trap Door".

Promotion - Description of the game "Jungle Warrior".

Promotion - the passing game "Navy Moves-2".

Advertising - Advertising and announcements.

System - Description of programs: ZX-ASM3.0, Universal XAS Converter v2.1, Format Utility v2.01, Commander DOS v1.9, Super Catalog v1.12, Text Designer v1.0, The Dizzy Editor v1.0, Digital Studio for Covox, Alfasoft Music Crasher v2.13. Printer driver fonts created by Mach v2.4.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
Bowl - Trivial Fiction: "Declaration of a democratic society in itself as a promise nichego not stand. We used to believe the beautiful words but in deeds to believe why it is not accepted"

В этот день...   21 November