mirror of
https://github.com/david-schmidt/Davex.git
synced 2024-10-19 23:24:55 +00:00
686 lines
108 KiB
Plaintext
686 lines
108 KiB
Plaintext
{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff0\deff0\stshfdbch11\stshfloch0\stshfhich0\stshfbi0\deflang1033\deflangfe1041{\fonttbl{\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}
|
|
{\f11\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}MS Mincho{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f37\fmodern\fcharset128\fprq1{\*\panose 02020609040205080304}@MS Mincho;}{\f38\froman\fcharset238\fprq2 Times New Roman CE;}
|
|
{\f39\froman\fcharset204\fprq2 Times New Roman Cyr;}{\f41\froman\fcharset161\fprq2 Times New Roman Greek;}{\f42\froman\fcharset162\fprq2 Times New Roman Tur;}{\f43\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}
|
|
{\f44\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f45\froman\fcharset186\fprq2 Times New Roman Baltic;}{\f46\froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f58\fmodern\fcharset238\fprq1 Courier New CE;}
|
|
{\f59\fmodern\fcharset204\fprq1 Courier New Cyr;}{\f61\fmodern\fcharset161\fprq1 Courier New Greek;}{\f62\fmodern\fcharset162\fprq1 Courier New Tur;}{\f63\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);}
|
|
{\f64\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f65\fmodern\fcharset186\fprq1 Courier New Baltic;}{\f66\fmodern\fcharset163\fprq1 Courier New (Vietnamese);}
|
|
{\f150\fmodern\fcharset0\fprq1 MS Mincho Western{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f148\fmodern\fcharset238\fprq1 MS Mincho CE{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
|
|
{\f149\fmodern\fcharset204\fprq1 MS Mincho Cyr{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f151\fmodern\fcharset161\fprq1 MS Mincho Greek{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}
|
|
{\f152\fmodern\fcharset162\fprq1 MS Mincho Tur{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f155\fmodern\fcharset186\fprq1 MS Mincho Baltic{\*\falt \'82\'6c\'82\'72 \'96\'be\'92\'a9};}{\f410\fmodern\fcharset0\fprq1 @MS Mincho Western;}
|
|
{\f408\fmodern\fcharset238\fprq1 @MS Mincho CE;}{\f409\fmodern\fcharset204\fprq1 @MS Mincho Cyr;}{\f411\fmodern\fcharset161\fprq1 @MS Mincho Greek;}{\f412\fmodern\fcharset162\fprq1 @MS Mincho Tur;}{\f415\fmodern\fcharset186\fprq1 @MS Mincho Baltic;}}
|
|
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;
|
|
\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\stylesheet{\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs24\alang1025
|
|
\ltrch\fcs0 \fs24\lang1033\langfe1041\loch\f0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 \snext0 Normal;}{\*\cs10 \additive \ssemihidden Default Paragraph Font;}{\*
|
|
\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tscellwidthfts0\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv
|
|
\ql \li0\ri0\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \fs20\lang1024\langfe1024\cgrid\langnp1024\langfenp1024 \snext11 \ssemihidden Normal Table;}}
|
|
{\*\latentstyles\lsdstimax156\lsdlockeddef0}{\*\revtbl {Unknown;}}{\*\rsidtbl \rsid4805073}{\*\generator Microsoft Word 11.0.0000;}{\info{\operator .}{\creatim\yr2011\mo12\dy6\hr22\min18}{\revtim\yr2011\mo12\dy6\hr22\min18}{\version2}{\edmins0}{\nofpages12}{\nofwords3422}
|
|
{\nofchars19512}{\nofcharsws22889}{\vern24615}{\*\password 00000000}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}}\paperw12240\paperh15840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect
|
|
\widowctrl\ftnbj\aenddoc\donotembedsysfont0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701\dgvorigin1984\dghshow0\dgvshow3
|
|
\jcompress\viewkind4\viewscale100\rsidroot4805073 \fet0{\*\wgrffmtfilter 013f}\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1\pnucrm\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2
|
|
\pnucltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5\pndec\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}
|
|
{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}
|
|
{\*\pnseclvl9\pnlcrm\pnqc\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qc \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 \rtlch\fcs1 \af0\afs24\alang1025 \ltrch\fcs0
|
|
\fs24\lang1033\langfe1041\loch\af0\hich\af0\dbch\af11\cgrid\langnp1033\langfenp1041 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Appendix\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
|
|
Writing external DAVEX commands
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 DAL Systems \hich\af2\dbch\af11\loch\f2 20\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 Feb\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 90\hich\af2\dbch\af11\loch\f2 Version
|
|
\hich\af2\dbch\af11\loch\f2 1.25
|
|
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 This appendix is for assembly\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 language programmers\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
It explains the format of Davex external commands and the resources available to them\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Three files are provided that should be \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 put\hich\af2\dbch\af11\loch\f2 " (\hich\af2\dbch\af11\loch\f2 included\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2
|
|
by external commands\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 these files are in Merlin format and will have to be modified some if you are using EDASM or some other assembler\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 1
|
|
\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines entry points and locations provided \hich\af2\dbch\af11\loch\f2
|
|
by Davex\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 apple\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines entry points in the Apple ROM and some locations on zero page and page \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
and \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 ) "\hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s
|
|
\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 defines ProDOS \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 command numbers\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 error codes\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 and global\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 page locations\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 xc\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 is the source code for an }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0
|
|
\f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 empty}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 exte\hich\af2\dbch\af11\loch\f2 rnal command\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
|
|
the best way to start a new command is by making a copy of \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 xc\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ". \hich\af2\dbch\af11\loch\f2
|
|
Source code for the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 du\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 external command is also provided as an example\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 An external Davex command is assembled to run below \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
External commands have a fixed \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 roughly\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 ending address to allow Davex to grow without overlapping previously\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 assembled external commands\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Command files have filetype \hich\af2\dbch\af11\loch\f2 $2\hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 auxiliary type \hich\af2\dbch\af11\loch\f2 $8001\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 For compatibility with old versions of Davex\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
commands may also have filetype BIN\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 External comm\hich\af2\dbch\af11\loch\f2 ands can have all the same kinds of parameters built\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 in commands can have\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Here is the format for an external command\hich\af2\dbch\af11\loch\f2 :
|
|
\par }\pard \ltrpar\ql \li1200\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1200\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 $60\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 RTS
|
|
\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 EE
|
|
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 EE
|
|
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx version \hich\af2\dbch\af11\loch\f2 # \hich\af2\dbch\af11\loch\f2 of command \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $34\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 Version \hich\af2\dbch\af11\loch\f2 3.4\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 recommended\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 use versions less than \hich\af2\dbch\af11\loch\f2 1.0\hich\af2\dbch\af11\loch\f2 for in\hich\af2\dbch\af11\loch\f2
|
|
complete versions\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx minimum Davex version required \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 use the version number for the Davex you are working with\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 unless you\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
|
|
re sure your command works with earlier versions\hich\af2\dbch\af11\loch\f2 ) [\hich\af2\dbch\af11\loch\f2 see auxiliary version nibble below\hich\af2\dbch\af11\loch\f2 ]
|
|
\par \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx command characteristics \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 byte\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 40\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 col screen
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 80\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 col screen
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 5\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 //\hich\af2\dbch\af11\loch\f2 e or IIgs
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 4\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires \hich\af2\dbch\af11\loch\f2 //\hich\af2\dbch\af11\loch\f2 c
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 requires IIgs
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ..\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 reserved\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 use
|
|
\hich\af2\dbch\af11\loch\f2 0
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte pointer to ASCII descri\hich\af2\dbch\af11\loch\f2 ption text \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 or \hich\af2\dbch\af11\loch\f2 0
|
|
\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 Description must be in first \hich\af2\dbch\af11\loch\f2 512\hich\af2\dbch\af11\loch\f2 bytes of the object file and must be preceded by a length byte\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The author
|
|
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s name or other identification should appear in this description for commands not distributed by DAL Systems\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The
|
|
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 comm\hich\af2\dbch\af11\loch\f2 and displays these descriptions\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
|
|
be sure to test it on your commands\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 load address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 The address at which this file must be loaded\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 typically an exact page boundary that makes the code end shortly before \hich\af2\dbch\af11\loch\f2 $
|
|
\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 execution address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 D\hich\af2\dbch\af11\loch\f2 avex will JSR to the address stored here once the command is loaded at its load address\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 auxiliary minimum Davex version required \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 v\hich\af2\dbch\af11\loch\f2 1.22\hich\af2\dbch\af11\loch\f2 +]
|
|
\par \hich\af2\dbch\af11\loch\f2 The low nibble of this byte is an extension of the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 minimum Davex version\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 byte above\hich\af2\dbch\af11\loch\f2
|
|
. \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a command th\hich\af2\dbch\af11\loch\f2 at requires Davex version \hich\af2\dbch\af11\loch\f2 1.82\hich\af2\dbch\af11\loch\f2 or greater would have
|
|
\hich\af2\dbch\af11\loch\f2 $02\hich\af2\dbch\af11\loch\f2 in this byte\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The high nibble of this byte is reserved and should be \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for now
|
|
\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes reserved for future extensions of the external command format \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 FILL WITH \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 )
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 parameter table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 see below\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 p\hich\af2\dbch\af11\loch\f2 +
|
|
\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 p\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 number of parameters\hich\af2\dbch\af11\loch\f2 )
|
|
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2
|
|
bytes for each parameter\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 then \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 bytes of \hich\af2\dbch\af11\loch\f2 $00
|
|
\par
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Davex loads the external command at its load address \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 after checking that it would not overlap memory used by Davex\hich\af2\dbch\af11\loch\f2 ).
|
|
\hich\af2\dbch\af11\loch\f2 Davex then evaluates any parameters and calls the command\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s execution address AT LEAST once\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
If the command has any \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 wildpath\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 parameter\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
Davex expands the wildcards and calls the command once for each file that matches the wildcard\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 with}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 out}{
|
|
\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 reloading the external command\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 Even if your command does not take wildcards\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 do not assume that it will be reloaded whenever it is used\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 the \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 rep\hich\af2\dbch\af11\loch\f2 '
|
|
\hich\af2\dbch\af11\loch\f2 command may execute your command repeatedly without reloading it\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 When the external command finishes its work\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it will normally RTS back to Davex\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If an error occurs
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it might JMP to xerr or to xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err instead\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 see below\hich\af2\dbch\af11\loch\f2
|
|
.)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 The parameter table is\hich\af2\dbch\af11\loch\f2 a list of two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte entries\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 A double
|
|
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 zero entry marks the end of the table\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The first byte of each pair is the option character for one parameter \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 use \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for parameters without any associated \hich\af2\dbch\af11\loch\f2 "-" \hich\af2\dbch\af11\loch\f2 character\hich\af2\dbch\af11\loch\f2 ).
|
|
\hich\af2\dbch\af11\loch\f2 The second byte is the type\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 If one wildcard\hich\af2\dbch\af11\loch\f2 pathname is allowed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it must be the first parameter in the table\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
If two wildcard pathnames are allowed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 they must be the first two parameters in the table\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 wildcard matching will take place on the first name
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and the text matching the wildcard will be s\hich\af2\dbch\af11\loch\f2 ubstituted into the second parameter whenever a wildcard character appears\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 All of the wildcard processing is invisible to external commands\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 The option characters in the parameter table must be in lower case \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 if they are letters\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and must have their hig
|
|
\hich\af2\dbch\af11\loch\f2 h bits on\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Note that all \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 required\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 parameters \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
|
|
parameters that are not associated with a dash and a character\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 must come before all other parameters in the table\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
even though the user no longer needs to type them in that order\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a required pathname\hich\af2\dbch\af11\loch\f2 or string parameter may contain }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073
|
|
\hich\af2\dbch\af11\loch\f2 zero}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 characters\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 From the user\hich\af2\dbch\af11\loch\f2 '
|
|
\hich\af2\dbch\af11\loch\f2 s point of view\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the parameter is optional\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 but it is treated internally as a string with no characters
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The difference is important when your command decides how to act on the parameter\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s v\hich\af2\dbch\af11\loch\f2 alue
|
|
\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 If you do not want Davex to display each wildcard match before calling your command\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 use a NOP as the first executable byte of your code\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 Commands that always incorporate the pathname\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 passed to them into their output may want to do this
|
|
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 The \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 command is a good example\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Note\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 When Davex prints a wildcard match\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it prints it to the SCREEN\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 never to a file or to the printer\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If you command would be useful for printing \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 tables\hich\af2\dbch\af11\loch\f2
|
|
" \hich\af2\dbch\af11\loch\f2 of information \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 something like \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 size\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 and
|
|
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 what\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 do\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 you wil\hich\af2\dbch\af11\loch\f2
|
|
l probably want to use the NOP option and have your command print the filenames or pathnames itself\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Parameter types \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 defined in \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 globals\hich\af2\dbch\af11\loch\f2 "):
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 nil no value associated with option character
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte integer
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte intege
|
|
\hich\af2\dbch\af11\loch\f2 r \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 XY\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 high\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 low\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 int\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte integer
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AXY\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 highest\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 lowest\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 path ProDOS pathname \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 X
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 file type given after name\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wildpath ProDOS pathname allowing wildcards \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 string string value \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 yesno y\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 n \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 :
|
|
\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 no\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 yes\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ftype file type \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 devnum device number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 ) (\hich\af2\dbch\af11\loch\f2 example
|
|
\hich\af2\dbch\af11\loch\f2 : ".\hich\af2\dbch\af11\loch\f2 62\hich\af2\dbch\af11\loch\f2 " = \hich\af2\dbch\af11\loch\f2 slot \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 drive \hich\af2\dbch\af11\loch\f2 2
|
|
\hich\af2\dbch\af11\loch\f2 ):
|
|
\par \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 E\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 +
|
|
\hich\af2\dbch\af11\loch\f2 $60\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 For string and pathname values\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a pointer is passed in A and Y\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The data pointed to is a lengt
|
|
\hich\af2\dbch\af11\loch\f2 h\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed string\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 suitable for use in a ProDOS parameter block\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 Resources available to external commands\hich\af2\dbch\af11\loch\f2 --
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 External commands may use \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 ', '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ',
|
|
\hich\af2\dbch\af11\loch\f2 and \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 filebuff\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 ', \hich\af2\dbch\af11\loch\f2 defined in GLOBALS\hich\af2\dbch\af11\loch\f2 ;
|
|
\hich\af2\dbch\af11\loch\f2 each one is \hich\af2\dbch\af11\loch\f2 $400\hich\af2\dbch\af11\loch\f2 bytes long\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 32\hich\af2\dbch\af11\loch\f2 bytes of zero page are\hich\af2\dbch\af11\loch\f2 reserved for XCs at \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 xczpage\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 .
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 The high bit of \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 xspeech\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 is on when a speech synthesizer is being used\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 XCs may use standard Monitor ROM routines for output \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 but not for input\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
|
|
The following entry points into Davex are defined in the Globals file\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 AS\hich\af2\dbch\af11\loch\f2 SUME ALL REGISTERED ARE SCRAMBLED\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
EXCEPT AS DOCUMENTED BELOW\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n
|
|
\hich\af2\dbch\af11\loch\f2 -- \hich\af2\dbch\af11\loch\f2 get value of parameter number A
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Use this subroutine to get the values of required parameters
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 ones with a \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 for the first byte of their pair in the parameter table\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 Before call
|
|
\hich\af2\dbch\af11\loch\f2 ing this routine\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 load the A register with a parameter number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 the first parameter is \hich\af2\dbch\af11\loch\f2 0
|
|
\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 a \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 rename\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 command would LDA
|
|
\hich\af2\dbch\af11\loch\f2 #0\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n to get the value of the first parameter\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 Then it would LDA \hich\af2\dbch\af11\loch\f2 #1\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n to get the value of the s
|
|
\hich\af2\dbch\af11\loch\f2 econd parameter\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 NOTE\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 When an external command gets control\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 LDA \hich\af2\dbch\af11\loch\f2 #0
|
|
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 JSR xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 has just been done\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ch
|
|
\hich\af2\dbch\af11\loch\f2 -- \hich\af2\dbch\af11\loch\f2 get value of parameter for option char in A
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Use this routine to get the value of an optional parameter
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 one that has a character in the first byte of its pair in the parameter table\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
|
|
Load the A register with the character before calling this routine\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The character should be lowercase \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 if it\hich\af2\dbch\af11\loch\f2 '
|
|
\hich\af2\dbch\af11\loch\f2 s a l\hich\af2\dbch\af11\loch\f2 etter\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and have its high bit ON\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 If the parameter in question was not given on the command line\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 this routine will return with the carry flag set \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
|
|
SEC\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 Otherwise the carry will be clear and the value of the parameter will be in the appropriate registers\hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A
|
|
\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 see table of parameter types above\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xmess
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints an inline message\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
|
|
ASCII text\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 followed by a \hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 follows the JSR to this subroutine\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ftype
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes filetype code in A and prints a three\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 character filetype name\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 or \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 xx if the filetype in n\hich\af2\dbch\af11\loch\f2 ot known to Davex
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 the lists of known filetypes are stored in the \hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config file and in Davex itself\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
and the \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 ftype\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 command can be used to view and edit the user\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s list
|
|
\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 access
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes a ProDOS access byte and prints\hich\af2\dbch\af11\loch\f2 :
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 rwndIB
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Only the letters c\hich\af2\dbch\af11\loch\f2 orresponding to bits set in the access byte are printed\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 blanks are printed for the others \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 r\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 w\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 rename\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 d\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 delete\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 I\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 invisible\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 needs backup\hich\af2\dbch\af11\loch\f2 ).
|
|
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 2
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 byte value in decimal\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 AY contains the value \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 high byte
|
|
\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 No characters \hich\af2\dbch\af11\loch\f2 are printed before or after the number\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 3
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 byte value in decimal\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The number must be stored in xnum \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 lowest byte\hich\af2\dbch\af11\loch\f2 )
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xnum\hich\af2\dbch\af11\loch\f2 +\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 middle byte\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 and xnum\hich\af2\dbch\af11\loch\f2 +\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 highest byte\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2
|
|
No characters are printed before or after the number\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 pady
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints a decimal number from NUM \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 right\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 justified in a field of Y\hich\af2\dbch\af11\loch\f2 +
|
|
\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 characters
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 pad
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Same as xprdec\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 3
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 except the number is right\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 justified in a field of \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 characters
|
|
\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 path
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 in lowercase
|
|
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 a length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed string pointed to by\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xbuild\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 local
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 AY must point to a partial pathname\hich\af2\dbch\af11\loch\f2 ;
|
|
\hich\af2\dbch\af11\loch\f2 builds a complete pathname by appending to the \hich\af2\dbch\af11\loch\f2 "%" \hich\af2\dbch\af11\loch\f2 directory name\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This will locate the
|
|
\hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config file\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns AY pointing to the complete path
|
|
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you call this routine more than once\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 note that the same memory will be used to store the pathname\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 so the previous name will be erased\hich\af2\dbch\af11\loch\f2 .)
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 sd
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Entry\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 device number\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 prints\hich\af2\dbch\af11\loch\f2 : .\hich\af2\dbch\af11\loch\f2 sd\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
where s and d are the slot and drive of the given device number\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 drvr \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 input functions in Davex \hich\af2\dbch\af11\loch\f2 1.25\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Provides calls to open\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
close\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and poll character devices\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Entry\hich\af2\dbch\af11\loch\f2 :
|
|
\hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 function\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Other parameters depend on the function\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
For convenience\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 ProDOS call numbers are used \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 as defined in MLI\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 GLOBALS
|
|
\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 S\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Slots are opened \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 independently\hich\af2\dbch\af11\loch\f2 - \hich\af2\dbch\af11\loch\f2 for inp\hich\af2\dbch\af11\loch\f2 ut and output\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 Input is supported for Pascal devices\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but not for parallel cards\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 open a slot for output
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 slot number \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2
|
|
for default\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
|
|
\hich\af2\dbch\af11\loch\f2 open a slot for input
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 slot number
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 close a slot for output
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
|
|
for xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
|
|
\hich\af2\dbch\af11\loch\f2 close a slot for input
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 send a character
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 bits significant\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 character to be written
|
|
\par \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number from the open
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 :
|
|
\hich\af2\dbch\af11\loch\f2 send a character \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 all \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 bits significant\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 inputs and outputs as for mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 ab\hich\af2\dbch\af11\loch\f2 ove
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 see if device is ready to accept output
|
|
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 successful
|
|
\par \hich\af2\dbch\af11\loch\f2 Bit \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 of A is \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if device is ready to receive
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 other bits are undefined
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 error code \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 $80
|
|
\par \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 character successfully read
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 if no character ready
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 >\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 if error \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
|
|
for xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 )
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xredirect
|
|
\par \hich\af2\dbch\af11\loch\f2 Contro\hich\af2\dbch\af11\loch\f2 ls suspension of I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 multiple levels of suspension are allowed
|
|
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 one \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 restore\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 is required for each \hich\af2\dbch\af11\loch\f2 "
|
|
\hich\af2\dbch\af11\loch\f2 suspend\hich\af2\dbch\af11\loch\f2 ").
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Input in A\hich\af2\dbch\af11\loch\f2 :
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 determine current suspension level
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection
|
|
\par \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : (\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 FF\hich\af2\dbch\af11\loch\f2 ): \hich\af2\dbch\af11\loch\f2 restore I\hich\af2\dbch\af11\loch\f2 /
|
|
\hich\af2\dbch\af11\loch\f2 O redirectio\hich\af2\dbch\af11\loch\f2 n
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Output in A\hich\af2\dbch\af11\loch\f2 :
|
|
\par \hich\af2\dbch\af11\loch\f2 N flag \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 bit \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if output is being redirected
|
|
|
|
\par \hich\af2\dbch\af11\loch\f2 V flag \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 bit \hich\af2\dbch\af11\loch\f2 6\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if input is being redirected
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 xpercent
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes two \hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 byte values\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 one in AXY and one in xnum\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 in A
|
|
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 the percentage that AXY is of xnum \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 bytes\hich\af2\dbch\af11\loch\f2 ).
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xyesno
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints \hich\af2\dbch\af11\loch\f2 '? \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 y\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 and waits for a Y or N to be typed\hich\af2\dbch\af11\loch\f2 .
|
|
\par \hich\af2\dbch\af11\loch\f2 Returns\hich\af2\dbch\af11\loch\f2 :
|
|
\par \hich\af2\dbch\af11\loch\f2 No\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Z flag\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 BEQ will be taken\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 Yes\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $80\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Z flag\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 BNE will be taken\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 See xredirect notes in xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 description\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.2\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Just like xyesno\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
except that the SPACE and RETURN keys are also accepted\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Before calling this routine\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 load the A register with a \hich\af2\dbch\af11\loch\f2 '
|
|
\hich\af2\dbch\af11\loch\f2 y\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 or an \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
If the user types a SPACE or RETURN\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 it is translated into the character you passed\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 should be used\hich\af2\dbch\af11\loch\f2 when there is a clear and }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2
|
|
safe}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 default choice at a yes\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 no question\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
The default should never be destructive\hich\af2\dbch\af11\loch\f2 ! \hich\af2\dbch\af11\loch\f2 If there is no clear default choice\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
|
|
t try to outguess the user\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 just use xyesno\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 To asking a yes\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 no question\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 you should call xredirect wi\hich\af2\dbch\af11\loch\f2 th A
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to suspend any active I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 print the prompt
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 call xyesno or xyesno\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 call xredirect with A\hich\af2\dbch\af11\loch\f2 =-\hich\af2\dbch\af11\loch\f2 1
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 FF\hich\af2\dbch\af11\loch\f2 )\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and then act on the answer to the question\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 If you don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t call xredirect\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the question may get printed or sent to a disk file\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 and the a\hich\af2\dbch\af11\loch\f2 nswer to the question may come from an exec file\hich\af2\dbch\af11\loch\f2 !
|
|
\par
|
|
\par }\pard \ltrpar\ql \li2160\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin2160\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #1
|
|
\par \hich\af2\dbch\af11\loch\f2 jsr xredirect
|
|
\par \hich\af2\dbch\af11\loch\f2 jsr xmess
|
|
\par \hich\af2\dbch\af11\loch\f2 asc \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 Okay to detonate mouse\hich\af2\dbch\af11\loch\f2 "
|
|
\par \hich\af2\dbch\af11\loch\f2 dfb \hich\af2\dbch\af11\loch\f2 0
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #\hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 n\hich\af2\dbch\af11\loch\f2 "
|
|
\par \hich\af2\dbch\af11\loch\f2 jsr xyesno\hich\af2\dbch\af11\loch\f2 2
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 php \hich\af2\dbch\af11\loch\f2 ;\hich\af2\dbch\af11\loch\f2 save Z flag for BEQ\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 BNE
|
|
\par \hich\af2\dbch\af11\loch\f2 lda \hich\af2\dbch\af11\loch\f2 #\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1
|
|
\par \hich\af2\dbch\af11\loch\f2 jsr xredirect
|
|
\par \hich\af2\dbch\af11\loch\f2 plp
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 beq TheySaidNo
|
|
\par \hich\af2\dbch\af11\loch\f2 ...
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xgetln
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 get an input line and place it in string\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 NOT string\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 this was documented wrong before\hich\af2\dbch\af11\loch\f2 ] \hich\af2\dbch\af11\loch\f2 zero
|
|
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 terminated \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 there is also a length byte at string\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 ).
|
|
\hich\af2\dbch\af11\loch\f2 Returns SEC if input was cancelled by Ctrl\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This is the same string that Davex uses for the command lin
|
|
\hich\af2\dbch\af11\loch\f2 e\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 so a command that uses this call must preserve and restore the contents of this buffer \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 256
|
|
\hich\af2\dbch\af11\loch\f2 bytes starting at string\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 this is actually overkill by a few bytes\hich\af2\dbch\af11\loch\f2 )].
|
|
\hich\af2\dbch\af11\loch\f2 Note that the up and down arrows \hich\af2\dbch\af11\loch\f2 *\hich\af2\dbch\af11\loch\f2 will\hich\af2\dbch\af11\loch\f2 * \hich\af2\dbch\af11\loch\f2 allow the user to scroll through the command his
|
|
\hich\af2\dbch\af11\loch\f2 tory if this call is used\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 A BETTER GETLN ROUTINE WILL BE AVAILABLE IN DAVEX \hich\af2\dbch\af11\loch\f2 1.3\hich\af2\dbch\af11\loch\f2 :
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 PLANNED FOR DAVEX \hich\af2\dbch\af11\loch\f2 1.3\hich\af2\dbch\af11\loch\f2 ]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 AY
|
|
\hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 address of input buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 provided by your command\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 X \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 length of the buffer
|
|
\par \hich\af2\dbch\af11\loch\f2 Output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 zero\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 terminated s\hich\af2\dbch\af11\loch\f2 tring in buffer
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 reads lines of text from an input device\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Input will often come from the keyboard
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but it can come from an exec file or a peripheral device\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If you want to force input to come from the keyboard\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 use xredirect to suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redir\hich\af2\dbch\af11\loch\f2 ection before calling xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2
|
|
and to restore it afterwards\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you print a prompt before getting the input\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 be sure to print the prompt AFTER suspending I
|
|
\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Unlike xgetln\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 the up and down arrows \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for history scrolling\hich\af2\dbch\af11\loch\f2 )
|
|
\hich\af2\dbch\af11\loch\f2 are disabled during \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Note that the maximum number of characters in the input string is two less than the size of the buffer\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 since one byte is used for the length of the string and one
|
|
\hich\af2\dbch\af11\loch\f2 $00\hich\af2\dbch\af11\loch\f2 byte marks the end of the string\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 xgetln\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2
|
|
s behavior is undefined if it is ca\hich\af2\dbch\af11\loch\f2 lled with X less than \hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xbell
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Sound a warning bell \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2
|
|
a ProDOS\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 style \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 blat\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 or a system \hich\af2\dbch\af11\loch\f2 "
|
|
\hich\af2\dbch\af11\loch\f2 beep\hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 depending on \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 config \hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 b
|
|
\hich\af2\dbch\af11\loch\f2 ").
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xdowncase
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 If character in A is a capital letter\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 changes it into a lowercase letter \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 always sets bit \hich\af2\dbch\af11\loch\f2 7\hich\af2\dbch\af11\loch\f2 ). \hich\af2\dbch\af11\loch\f2 X and Y are preserved
|
|
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 A is preserved or capitalized\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine always turns on the high bit of the character in A\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xplural
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2
|
|
byte value in AY and \hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 if the value is not equal to \hich\af2\dbch\af11\loch\f2 1
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Let\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s not have any more \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 files found
|
|
\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 messages\hich\af2\dbch\af11\loch\f2 !
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Returns with SEC if the user has pressed ESC\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 This is a SOFT ABORT if your command supports it\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 wildcard expansion and further command\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 line processi
|
|
\hich\af2\dbch\af11\loch\f2 ng\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 if any\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 will continue\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If the user hits Ctrl
|
|
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 C or Apple\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 period\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 this routine will print \hich\af2\dbch\af11\loch\f2 "***
|
|
\hich\af2\dbch\af11\loch\f2 aborted\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 and will clean up and return to the command prompt\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 The user can also PAUSE and single\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 step the screen by hitting SPACE\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine will call pol
|
|
\hich\af2\dbch\af11\loch\f2 l\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 io \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 for print spooling\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 while the screen is frozen
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Apple\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 H will do a screen dump \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 except on II\hich\af2\dbch\af11\loch\f2 +).
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 NOTE\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 If an external command calls xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
it should do it exactly once per line printed\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Test your command for reasonable behavior by singl\hich\af2\dbch\af11\loch\f2 e\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2
|
|
stepping the output with the space bar\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xpr\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 date\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ay
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes standard ProDOS date word in AY and prints date in the form dd
|
|
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 mmm\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 yy\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If AY\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 <\hich\af2\dbch\af11\loch\f2 no date\hich\af2\dbch\af11\loch\f2 >\hich\af2\dbch\af11\loch\f2 " \hich\af2\dbch\af11\loch\f2 instead
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Question marks are printed for any parts of the date that have illegal values\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xpr\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 t\hich\af2\dbch\af11\loch\f2 ime\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ay
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Takes standard ProDOS time word in AY and prints time in the form hh
|
|
\hich\af2\dbch\af11\loch\f2 :\hich\af2\dbch\af11\loch\f2 mm xM\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 If AY\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
prints blanks instead\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints ProDOS error message from A and aborts to the command line
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This routine closes any files you opened \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 provided you didn\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t fiddle with LEVEL
|
|
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and cleans up the stack\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 You generally don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t have to worry about cleaning things up
|
|
\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Input and output redirection are cancelled\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but print spooling is not disturbed\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 er
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prints ProDOS error without a bell and returns \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 does N\hich\af2\dbch\af11\loch\f2 OT abort\hich\af2\dbch\af11\loch\f2 ).
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xerr
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Aborts to Davex\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 s command
|
|
\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 line prompt\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Use this routine if you print an error message \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 with xmess
|
|
\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 and want to abort like xProDOS\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err would\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2
|
|
Note that the error message may be redirected to a file or printer\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 You may want to call xredirect with A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to
|
|
\hich\af2\dbch\af11\loch\f2 suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection before calling xmess to print the error\hich\af2\dbch\af11\loch\f2 .)
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xpush\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 level
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Prepares to open a new directory level\hich\af2\dbch\af11\loch\f2 ;
|
|
\hich\af2\dbch\af11\loch\f2 must be called before dir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup is called\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Opens a new directory level\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 Call xpush\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 level first\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Use xread\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 dir to read entri
|
|
\hich\af2\dbch\af11\loch\f2 es from the directory\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Call xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 finish when there are no more entries\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 On entry to xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A and Y should point to a complete pathname or a partial pathname RELEATIVE TO THE PREFIX
|
|
\hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 compare xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ).
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.23\hich\af2\dbch\af11\loch\f2 +]
|
|
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Just like xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 s
|
|
\hich\af2\dbch\af11\loch\f2 etup\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but the pathname pointed to by AY should be either \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 )
|
|
\hich\af2\dbch\af11\loch\f2 complete or \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 partial RELEATIVE TO THE DIRECTORY ALREADY OPEN\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 This is useful for commands that traverse a subdirectory structure\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 since you can just call this routine with the directory name\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 finish
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Closes the current directory level and re\hich\af2\dbch\af11\loch\f2 -
|
|
\hich\af2\dbch\af11\loch\f2 opens the previous one\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 if one was open\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 To exit normally\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 you must call this routine once for each call to xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup you make\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 If you jump to xerr or xProDOS
|
|
\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 err\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 don\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t worry about it\hich\af2\dbch\af11\loch\f2 .)
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xread\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 di\hich\af2\dbch\af11\loch\f2 r
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Reads one entry from the current directory\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 opened with xdir\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 setup\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Returns SEC if there were no more entries in the current directory
|
|
\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The directory entry is stored at \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 catbuff\hich\af2\dbch\af11\loch\f2 ".
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xpoll\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 io
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 Should be called while waiting for keyboard input\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 This gives\hich\af2\dbch\af11\loch\f2 Davex a chance\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 to send data from spooled files to the printer
|
|
\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 This routine is called automatically during xcheck\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 wait\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xrdkey
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and xgetln calls\hich\af2\dbch\af11\loch\f2 .) \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and P are PRESERVED\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Also\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 xpoll\hich\af2\dbch\af11\loch\f2 _
|
|
\hich\af2\dbch\af11\loch\f2 io increments the two\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 byte random number on zero\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 page \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 $4
|
|
\hich\af2\dbch\af11\loch\f2 E and \hich\af2\dbch\af11\loch\f2 $4\hich\af2\dbch\af11\loch\f2 F\hich\af2\dbch\af11\loch\f2 ).
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xmmgr
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 A crude memory manager\hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2
|
|
allows external commands to use the space between the end of Davex and the beginning of the external command\hich\af2\dbch\af11\loch\f2 . (\hich\af2\dbch\af11\loch\f2 Assemble external commands to end as close to \hich\af2\dbch\af11\loch\f2 $
|
|
\hich\af2\dbch\af11\loch\f2 B\hich\af2\dbch\af11\loch\f2 000\hich\af2\dbch\af11\loch\f2 as possible to maximize this free space\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 )
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Input in X\hich\af2\dbch\af11\loch\f2 :
|
|
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 close free all dynamic memory
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open alloc A pages from low mem\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 out of mem
|
|
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 return A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 st page
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read return number of free pages in A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 gfinfo return lowest free page number into A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 mli\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 write set highest available page to A
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xpmgr
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 PathManager\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
|
|
performs common operations on pathnames\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The format of a call is\hich\af2\dbch\af11\loch\f2 :
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 jsr xpmgr
|
|
\par \hich\af2\dbch\af11\loch\f2 dfb COMMAND
|
|
\par \hich\af2\dbch\af11\loch\f2 dw PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 ,\hich\af2\dbch\af11\loch\f2 PARM\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 ]
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 COMMAND is one of the following\hich\af2\dbch\af11\loch\f2 :
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 appay
|
|
\par \hich\af2\dbch\af11\loch\f2 appends path at A\hich\af2\dbch\af11\loch\f2 Y to path at PARM\hich\af2\dbch\af11\loch\f2 1
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 appch
|
|
\par \hich\af2\dbch\af11\loch\f2 appends character in A to path at PARM\hich\af2\dbch\af11\loch\f2 1
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 up
|
|
\par \hich\af2\dbch\af11\loch\f2 removes one segment from end of path at PARM\hich\af2\dbch\af11\loch\f2 1
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 slashif
|
|
\par \hich\af2\dbch\af11\loch\f2 adds \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 ' \hich\af2\dbch\af11\loch\f2 to end of path at PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 if it doesn
|
|
\hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 t already end
|
|
\par \hich\af2\dbch\af11\loch\f2 in \hich\af2\dbch\af11\loch\f2 '\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 '
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 pm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 copy
|
|
\par \hich\af2\dbch\af11\loch\f2 copie\hich\af2\dbch\af11\loch\f2 s length\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 prefixed path from PARM\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 to PARM\hich\af2\dbch\af11\loch\f2 2
|
|
\par \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.2\hich\af2\dbch\af11\loch\f2 +!]
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xgetnump \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
|
|
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 none
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 number of parameters given for command
|
|
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 including all required parameters\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 even if they are
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 length strings or pathnames\hich\af2\dbch\af11\loch\f2 ).
|
|
\par \hich\af2\dbch\af11\loch\f2 \hich\af2\dbch\af11\loch\f2 X and Y are preserved\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xrdkey \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
|
|
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
|
|
character under cursor \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 normally use a blank \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 key pressed \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 high bit on\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Call this routine }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 instead}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2
|
|
of using ROM routines for input\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 For example\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 RDKEY\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 RDCHAR
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 and GETLN are not\hich\af2\dbch\af11\loch\f2 guaranteed to work correctly\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
Note that input will may come from an exec file rather than from the keyboard\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 unless you use xredirect to suspend I\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 O redirection
|
|
\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xdirty \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v
|
|
\hich\af2\dbch\af11\loch\f2 1.1\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 No inputs or outputs\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
Sets a flag to force Davex to try to re\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 save\hich\af2\dbch\af11\loch\f2 the \hich\af2\dbch\af11\loch\f2 %\hich\af2\dbch\af11\loch\f2 config information\hich\af2\dbch\af11\loch\f2 . (
|
|
\hich\af2\dbch\af11\loch\f2 The attempted re\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 saving happens before command prompts\hich\af2\dbch\af11\loch\f2 .)
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xprint\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 ver
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 version number in A
|
|
\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2 $34\hich\af2\dbch\af11\loch\f2 prints \hich\af2\dbch\af11\loch\f2 "\hich\af2\dbch\af11\loch\f2 v\hich\af2\dbch\af11\loch\f2 3.4\hich\af2\dbch\af11\loch\f2 "
|
|
\par \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 all registers scrambled\hich\af2\dbch\af11\loch\f2 )
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2
|
|
AY points to pathname of a file
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 file reference number
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 ProDOS error code
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open and xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read provide a way to read text and AppleWorks Word Processor \hich\af2\dbch\af11\loch\f2 (
|
|
\hich\af2\dbch\af11\loch\f2 AWP\hich\af2\dbch\af11\loch\f2 ) \hich\af2\dbch\af11\loch\f2 files without caring which kind of file is which\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 The resulting stream of data
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Additional \hich\af2\dbch\af11\loch\f2 filetypes may be interpreted in the future\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 In general\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
these routines perform a reasonable mapping from some non\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 text files into a legible sequentially\hich\af2\dbch\af11\loch\f2 -\hich\af2\dbch\af11\loch\f2 readable format\hich\af2\dbch\af11\loch\f2 .
|
|
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Warning\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Do not attempt to open more than one file at a time using xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 .
|
|
\hich\af2\dbch\af11\loch\f2 It \hich\af2\dbch\af11\loch\f2 is not currently supported\hich\af2\dbch\af11\loch\f2 .
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par \hich\af2\dbch\af11\loch\f2 xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 read
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 A
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 reference number returned from xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 character
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A \hich\af2\dbch\af11\loch\f2 = \hich\af2\dbch\af11\loch\f2 ProDOS error code
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 Returns the next character from a file opened with xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 .
|
|
\par \hich\af2\dbch\af11\loch\f2 No special way is provided to close a \hich\af2\dbch\af11\loch\f2 file opened with xfman\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 open\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
|
|
close with a ProDOS call if necessary\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 This may be inadequate if these file manager routines are ever enhanced to deal with more than one file open at a time\hich\af2\dbch\af11\loch\f2 .
|
|
\par
|
|
\par }\pard \ltrpar\ql \li960\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin960\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 xshell\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 info
|
|
\hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 Davex v\hich\af2\dbch\af11\loch\f2 1.25\hich\af2\dbch\af11\loch\f2 +]
|
|
\par }\pard \ltrpar\ql \li1440\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin1440\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073 \hich\af2\dbch\af11\loch\f2 input\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 X
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 request code
|
|
\par \hich\af2\dbch\af11\loch\f2 output\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 CLC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 requested information in registers\hich\af2\dbch\af11\loch\f2 /\hich\af2\dbch\af11\loch\f2 etc
|
|
\hich\af2\dbch\af11\loch\f2 .
|
|
\par \hich\af2\dbch\af11\loch\f2 SEC\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 requested information not available
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get Davex version in A\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Y\hich\af2\dbch\af11\loch\f2
|
|
.
|
|
\par \hich\af2\dbch\af11\loch\f2 For version \hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 a\hich\af2\dbch\af11\loch\f2 .\hich\af2\dbch\af11\loch\f2 bc\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 A\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 $\hich\af2\dbch\af11\loch\f2 ab and Y\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 $0\hich\af2\dbch\af11\loch\f2 c\hich\af2\dbch\af11\loch\f2 .
|
|
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 1\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get alias buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 size in pages\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 2\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get history buffer \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY\hich\af2\dbch\af11\loch\f2 =
|
|
\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 size in pages\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 3\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get internal filetype table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 )
|
|
\par \hich\af2\dbch\af11\loch\f2 X\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 4\hich\af2\dbch\af11\loch\f2 : \hich\af2\dbch\af11\loch\f2 Get internal filetype name table \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 AY
|
|
\hich\af2\dbch\af11\loch\f2 =\hich\af2\dbch\af11\loch\f2 address\hich\af2\dbch\af11\loch\f2 )
|
|
\par }\pard \ltrpar\ql \li600\ri600\nowidctlpar\wrapdefault\faauto\rin600\lin600\itap0 {\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 --\hich\af2\dbch\af11\loch\f2 notes\hich\af2\dbch\af11\loch\f2 --
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 External commands should not open any files below }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\ul\insrsid4805073 \hich\af2\dbch\af11\loch\f2 stdlevel}{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid4805073
|
|
\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 which is the current ProDOS file level when the shell \hich\af2\dbch\af11\loch\f2 executes an XC\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2
|
|
Davex automatically closes any files open at or above stdlevel when the external command finishes\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 Davex guarantees that an XC will be able to open \hich\af2\dbch\af11\loch\f2 3
|
|
\hich\af2\dbch\af11\loch\f2 files\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 but it does not guarantee any more than that \hich\af2\dbch\af11\loch\f2 (\hich\af2\dbch\af11\loch\f2 Davex may have up to \hich\af2\dbch\af11\loch\f2 5
|
|
\hich\af2\dbch\af11\loch\f2 files open a\hich\af2\dbch\af11\loch\f2 lready \hich\af2\dbch\af11\loch\f2 [\hich\af2\dbch\af11\loch\f2 spooling\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 exec\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 output redirection to disk\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 wildcard expansion and maybe one more in the future\hich\af2\dbch\af11\loch\f2 ]\hich\af2\dbch\af11\loch\f2 ; \hich\af2\dbch\af11\loch\f2
|
|
the ProDOS limit is \hich\af2\dbch\af11\loch\f2 8\hich\af2\dbch\af11\loch\f2 open files\hich\af2\dbch\af11\loch\f2 ).
|
|
\par
|
|
\par \hich\af2\dbch\af11\loch\f2 When an external command gets control at its execution address\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 Davex has just finished calling xgetparm\hich\af2\dbch\af11\loch\f2 _\hich\af2\dbch\af11\loch\f2 n for par
|
|
\hich\af2\dbch\af11\loch\f2 ameter number \hich\af2\dbch\af11\loch\f2 0\hich\af2\dbch\af11\loch\f2 . \hich\af2\dbch\af11\loch\f2 So\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2 for example\hich\af2\dbch\af11\loch\f2 ,
|
|
\hich\af2\dbch\af11\loch\f2 a command whose first parameter is a pathname may start out by storing A and Y into a ProDOS parameter block\hich\af2\dbch\af11\loch\f2 , \hich\af2\dbch\af11\loch\f2
|
|
since AY will have the address of the value of the first parameter\hich\af2\dbch\af11\loch\f2 .
|
|
\par }}
|