home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
program
/
compiler
/
nasm20b
/
doc
/
stdio.txt
< prev
next >
Wrap
Text File
|
1993-01-19
|
4KB
|
107 lines
----------------------------------------------------------------------
Copyright (C) 1990 by Natürlich!
This file is copyrighted!
Refer to the documentation for details.
----------------------------------------------------------------------
The STD.L65 contains
STDIO.O65 --- include file "STDIO.H65"
STDIO -- OPEN CLOSE BPUT BGET PRINT INPUT XIO
*** WARNING --- THESE MACROS DO LITTLE OR NO ERROR CHECKING***
Macros:
OPEN channel,aux1,aux2,string[,flags]
f.e. OPEN 2,4,0,file
file: .byte "D:FOOBAR.TXT",0
opens in IOCB #2 the file FOOBAR.TXT for reading.
The actual assembled code would look something like this:
ldx #$20
lda #4
sta icax1,x
lda #0
sta icax2,x
...
This might not be appropriate in all cases, where you know
the values only at runtime. In that case you want output
like this
lda my_icax1
sta icax1,x
lda my_icax2
sta icax2,x
...
That's when the flags come into play. With the flags you can
specify, which values are supposed to be POKEd » lda #, sta «
and which are to be MOVEd » lda, sta «. For that purpose most
macros have an auxiliary parameter [,flags] as the OPEN macro
above. If this parameter is omitted the default is usually
POKE. I F you supply a parameter which has to be a number,
then the bits of this number are examined to determine, which
parameters are to be POKEd and which are to be MOVEd
F E D C B A 9 8 7 6 5 4 3 2 1 0 bit
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|x|s|s|s|s|s|s|s|u|p|p|p|p|p|p|p|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
7 6 5 4 3 2 1 7 6 5 4 3 2 1 parameter number
x = Special flag -- @SPECIAL
s = String flag (maybe used for other purposes) -- @S1 - @S7
u = unused
p = POKE flag, 1 == POKE 0 == MOVE -- @P1 - @P7
Therefore to open like above, but with a variable ICAX1 you would
call the OPEN macro like this:
OPEN 2,what,0,file,@p1+@p3+@p4
file: .byte "D:FOOBAR.TXT"
what: .byte 8
Note that if you omit the optional flag parameter, the macro
assumes the default to be all POKEs not MOVEs!!
If you set the @SPECIAL flag, in STDIO macros, the macro
assumes that the X register is already correctly loaded and
does not assemble code that loads the X register.
If the channel number is greater than 8, it will be used
directly as the X register value.
IMPORTANT!!
OPEN by default assumes that the fourth parameter is a string
parameter (as with PRINT), as if called like this:
OPEN 2,8,0,"E:"
OPEN will generate a .BYTE "E:" inline and jump around it (not
particularly efficient). This for quick'n mindless hacks. Not
recommended.
CLOSE channel[,flag]
Closes IOCB #channel.
BPUT channel,buffer,len[,flags]
Outputs >len< bytes of the >buffer< on IOCB #channel. Flag usage
is as in OPEN. Refer to the source for further (implicit) infor-
mation.
BGET channel,buffer,len[,flags]
PRINT channel[,buffer[,len[,flags]]]
If you omit the length parameter, the macro assumes that the buffer
parameter given is really a string, which will be assembled in the
macro. Not recommended technique for serious programs, but occasionally
useful. If you omit everything but the buffer, a LF will be printed.
INPUT channel,buffer,len[,flags]
XIO cmd,channel,aux1,aux2,string[,flags]