Rev 1967 | Details | Compare with Previous | Last modification | View Log
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 20 | dimkam | 1 | BDOS=0x0005 |
| 2 | COMMANDLINE=0x0080 |
||
| 3 | COMMANDLINE_sz=0x0080 |
||
| 4 | PROGSTART=0x0100 |
||
| 5 | |||
| 434 | alone | 6 | ;from userkrnl.asm: |
| 2230 | alone | 7 | curpg4000=0x0044 |
| 8 | curpg16k=curpg4000 |
||
| 9 | curpg8000=0x004a |
||
| 10 | curpg32klow=curpg8000 |
||
| 11 | curpgc000=0x0050 |
||
| 12 | curpg32khigh=curpgc000 |
||
| 660 | alone | 13 | user_scr0_low=0x0017 |
| 14 | user_scr0_high=0x0035 |
||
| 15 | user_scr1_low=0x0036 |
||
| 16 | user_scr1_high=0x0037 |
||
| 434 | alone | 17 | |
| 55 | Alone | 18 | MAXPATH_sz=256;64 |
| 1509 | alone | 19 | DIRMAXFILENAME64=64 ;including EOL |
| 55 | Alone | 20 | |
| 344 | alone | 21 | ;------------------------ CP/M -------------------------------------- |
| 330 | alone | 22 | ;from CP/M (try to avoid use!): |
| 20 | dimkam | 23 | CMD_PRCHAR=0x05 ;e=char |
| 224 | alone | 24 | CMD_SETDRV=0x0e ;e=drive ;out: a!=0 => not mounted, [l=number of drives] |
| 20 | dimkam | 25 | CMD_FOPEN=0x0f ;de = pointer to unopened FCB |
| 26 | CMD_FCLOSE=0x10 ;de = pointer to opened FCB |
||
| 185 | demige | 27 | CMD_FSEARCHFIRST=0x11 ;de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA. DTA had to set every time |
| 330 | alone | 28 | CMD_FSEARCHNEXT=0x12 ;(NOT CP/M compatible!!!)de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA. DTA had to set every time |
| 573 | alone | 29 | CMD_FDEL=0x13 ;DEPRECATED!!!!! ;DE = Pointer to unopened FCB |
| 330 | alone | 30 | CMD_FREAD=0x14 ;DE = Pointer to opened FCB, read 128 bytes in DTA, out: a=128^bytes actually read (not CP/M!) |
| 20 | dimkam | 31 | CMD_FWRITE=0x15 ;DE = Pointer to opened FCB, write 128 bytes from DTA |
| 32 | CMD_FCREATE=0x16 ;DE = Pointer to unopened FCB |
||
| 33 | CMD_SETDTA=0x1a ;DE = data transfer address (DTA) |
||
| 621 | alone | 34 | CMD_RNDRD=0x21 ;DE = Pointer to opened FCB. The file position is defined by the three byte random record number in the FCB (bytes 21h...23h). TP uses 21,22 |
| 35 | CMD_RNDWR=0x22 ;DE = Pointer to opened FCB. The file position is defined by the three byte random record number in the FCB (bytes 21h...23h). TP uses 21,22 |
||
| 20 | dimkam | 36 | |
| 37 | ;from MSX-DOS: |
||
| 38 | CMD_SEEKHANDLE=0x4a ;b=file handle, dehl=offset [signed, a=method:0=begin,1=cur,2=end TODO] |
||
| 39 | CMD_OPENHANDLE=0x43 ;DE = Drive/path/file ASCIIZ string |
||
| 40 | ;[A = Open mode. b0 set => no write, b1 set => no read, b2 set => inheritable, b3..b7 - must be clear] |
||
| 41 | ;out: B = new file handle, A=error |
||
| 42 | CMD_CREATEHANDLE=0x44 ;DE = Drive/path/file ASCIIZ string |
||
| 43 | ;[A = Open mode. b0 set => no write, b1 set => no read, b2 set => inheritable, b3..b7 - must be clear] |
||
| 44 | ;[B = b0..b6 = Required attributes, b7 = Create new flag] |
||
| 45 | ;out: B = new file handle, A=error |
||
| 46 | CMD_CLOSEHANDLE=0x45 ;B = file handle, out: A=error |
||
| 47 | CMD_READHANDLE=0x48 ;B = file handle, DE = Buffer address, HL = Number of bytes to read, out: HL = Number of bytes actually read, A=error(=0) |
||
| 48 | CMD_WRITEHANDLE=0x49 ;B = file handle, DE = Buffer address, HL = Number of bytes to write, out: HL = Number of bytes actually written, A=error(=0) |
||
| 631 | alone | 49 | CMD_RENAME=0x4e ;DE = Drive/path/file ASCIIZ string, HL = New filename ASCIIZ string (NOT MSXDOS compatible! with Drive/path!) ;RENAME OR MOVE FILE |
| 1410 | alone | 50 | CMD_CHDIR=0x5a ;DE = Pointer to ASCIIZ string. Out A=error |
| 608 | alone | 51 | CMD_PARSEFNAME=0x5c ;NOT RECOMMENDED ;de(dotname) -> hl(cpmname) ;out: de=pointer to termination character, hl=buffer filled in |
| 611 | alone | 52 | CMD_GETPATH=0x5e ;DE = Pointer to MAXPATH_sz byte buffer ;out: DE = Filled in with whole path string (WITH DRIVE! Finished by slash only if root dir), HL = Pointer to start of last item |
| 64 | Alone | 53 | CMD_DELETE=0x4d ;DE = Drive/path/file ASCIIZ string, out: A = Error |
| 20 | dimkam | 54 | |
| 55 | ;invented: |
||
| 1895 | alone | 56 | CMD_GETPAL=0xc8 ;de=palette (32 bytes) |
| 1659 | alone | 57 | CMD_SETTIME=0xc9 ;ix=date, hl=time |
| 1477 | alone | 58 | CMD_GETMEMPORTS=0xca ;out: ix=memport0000, bc=memport4000, de=memport8000, hl=memportc000 |
| 1297 | alone | 59 | CMD_GETPAGEOWNER=0x0cb ;e=page ;out: e=owner id (0=free, 0xff=system) |
| 1673 | dimkam | 60 | CMD_GETCONFIG=0xcc ;out: H=system drive, L= 1-Evo 2-ATM2 3-ATM3 6-p2.666, E=pgsys(system page), D= TR-DOS page, IXBC=SVN revision |
| 875 | alone | 61 | CMD_GETCHILDRESULT=0xcd ;hl=childresult |
| 823 | dimkam | 62 | CMD_RESERV_1=0xce |
| 643 | alone | 63 | CMD_OPENDIR=0xcf ;de=path |
| 644 | alone | 64 | CMD_READDIR=0xd0 ;de=buf for FILINFO (if no LNAME, use FNAME), 0x00 in FILINFO_FNAME = end dir |
| 875 | alone | 65 | CMD_HIDEFROMPARENT=0xd1 ;for tasks with their own screen handling ;hl=result |
| 545 | alone | 66 | CMD_SETSTDINOUT=0xd2 ;b=id, e=stdin, d=stdout, h=stderr |
| 1410 | alone | 67 | CMD_GETSTDINOUT=0xd3 ;e=stdin, d=stdout, h=stderr, l=hgt of stdout |
| 454 | alone | 68 | CMD_PLAYCOVOX=0xd4 ;hl=data (0xc000+, 0x00=end), de=pagetable (0x0000+), hx=delay (18=11kHz, 7=22kHz, 1=44kHz) |
| 1597 | alone | 69 | CMD_SETMUSIC=0xd5 ;hl=muzaddr (0x4000..0x7fff, 0=killmuz), a=muzpg (pages in 0x8000, 0xc000 are taken from current user memory) |
| 1381 | alone | 70 | CMD_READSECTORS=0xd6 ;b=drive, de=buffer, ixhl=sector number, a=count ;out: a=error |
| 71 | CMD_WRITESECTORS=0xd7 ;b=drive, de=buffer, ixhl=sector number, a=count ;out: a=error |
||
| 212 | alone | 72 | CMD_SETBORDER=0xd8 ;e=0..15 |
| 608 | alone | 73 | CMD_SETWAITING=0xd9 ;don't use directly! ;set WAITING state for current task |
| 33 | Alone | 74 | CMD_GETFILESIZE=0xda ;b=handle, out: dehl=file size |
| 330 | alone | 75 | CMD_WIZNETOPEN=0xdb ;A=SOCKET, L=subfunction (see sys_h.asm) |
| 1967 | kulich | 76 | CMD_WIZNETCLOSE=0xdc ;A=SOCKET, E=(0 - ࠧ, 1 - ⮫쪮 ࠢ ) |
| 409 | dimkam | 77 | CMD_WIZNETREAD=0xdd ;if TCP: A=SOCKET, de=buffer_ptr, HL=sizeof(buffer) |
| 78 | ;else: A=SOCKET, IX=buffer_ptr, HL=sizeof(buffer), de=sockaddr_in ptr |
||
| 79 | ;out: HL=count if HL < 0 then A=error |
||
| 80 | CMD_WIZNETWRITE=0xde ;if TCP: A=SOCKET, de=buffer_ptr, HL=sizeof(buffer) |
||
| 81 | ;else: A=SOCKET, IX=buffer_ptr, HL=sizeof(buffer), de=sockaddr_in ptr |
||
| 82 | ;out: HL=count if HL < 0 then A=error |
||
| 20 | dimkam | 83 | CMD_DROPAPP=0xdf ;e=id |
| 229 | alone | 84 | CMD_GETAPPMAINPAGES=0xe0 ;e=id ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags, a=error |
| 608 | alone | 85 | CMD_GETXY=0xe1 ;OBSOLETE ;out: de=yx ;GET CURSOR POSITION |
| 20 | dimkam | 86 | CMD_GETTIME=0xe2 ;out: ix=date, hl=time |
| 87 | CMD_GETFILETIME=0xe3 ;de=Drive/path/file ASCIIZ string, out: ix=date, hl=time |
||
| 88 | CMD_SETFILETIME=0xe4 ;de=Drive/path/file ASCIIZ string, ix=date, hl=time |
||
| 330 | alone | 89 | CMD_TELLHANDLE=0xe5 ;b=file handle, out: dehl=offset ;GET POSITION IN FILE |
| 608 | alone | 90 | CMD_SCROLLUP=0xe6 ;OBSOLETE ;de=topyx, hl=hgt,wid ;x, wid even ;TEXTMODE ONLY |
| 91 | CMD_SCROLLDOWN=0xe7 ;OBSOLETE ;de=topyx, hl=hgt,wid ;x, wid even ;TEXTMODE ONLY |
||
| 722 | alone | 92 | CMD_GETFILINFO=0xe8 ;de=filename, hl=buf[FILINFO_sz] to get FILINFO |
| 248 | alone | 93 | CMD_SETMAINPAGE=0xe9 ;e=page for 0x0000 |
| 20 | dimkam | 94 | CMD_SETSYSDRV=0xea ;out: a!=0 => not mounted, l=number of drives |
| 95 | CMD_MKDIR=0xeb ;DE = Pointer to ASCIIZ string, out: a |
||
| 875 | alone | 96 | CMD_CHECKPID=0xec ;e=id ;check if this child(!) app exists, out: a!=0 => OK, or else a=0 |
| 20 | dimkam | 97 | CMD_FREEZEAPP=0xed ;e=id ;disable app and make non-graphic |
| 609 | alone | 98 | CMD_GETATTR=0xee ;DEPRECATED!!! ;out: a ;READ ATTR AT CURSOR POSITION |
| 20 | dimkam | 99 | CMD_MOUNT=0xef ;e=drive, out: a |
| 330 | alone | 100 | CMD_GETKEYMATRIX=0xf0 ;out: bcdehlix = halfrows cs...space |
| 1510 | alone | 101 | CMD_GETTIMER=0xf1 ;out: dehl=timer |
| 20 | dimkam | 102 | CMD_YIELD=0xf2 ;schedule to another app (use YIELD macro instead of HALT!!!) |
| 103 | CMD_RUNAPP=0xf3 ;e=id ;ACTIVATE DISABLED APP |
||
| 330 | alone | 104 | CMD_NEWAPP=0xf4 ;out: b=id, a=error, dehl=newapp pages in 0000,4000,8000,c000 ;MAKE NEW DISABLED APP |
| 608 | alone | 105 | CMD_PRATTR=0xf5 ;OBSOLETE ;e=color byte ;DRAW ATTR AT CURSOR POSITION |
| 20 | dimkam | 106 | CMD_CLS=0xf6 ;e=color byte |
| 107 | CMD_SETCOLOR=0xf7 ;e=color byte |
||
| 108 | CMD_SETXY=0xf8 ;de=yx ;SET CURSOR POSITION |
||
| 707 | alone | 109 | CMD_SETGFX=0xf9 ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+8 for noturbo ;+0x80 for auto screen pages keeping ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode) |
| 330 | alone | 110 | CMD_SETPAL=0xfa ;de=palette (32 bytes) |
| 545 | alone | 111 | CMD_GETMAINPAGES=0xfb ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags, b=id |
| 330 | alone | 112 | CMD_NEWPAGE=0xfc ;out: a=0 (OK)/!=0 (fail), e=page |
| 113 | CMD_DELPAGE=0xfd ;e=page ;GIVE SOME PAGE BACK TO THE OS |
||
| 20 | dimkam | 114 | CMD_SETSCREEN=0xfe ;e=screen=0..1 |
| 566 | alone | 115 | CMD_YIELDKEEP=0xff |
| 20 | dimkam | 116 | |
| 643 | alone | 117 | ; STRUCT FILINFO |
| 118 | FILINFO_FSIZE=0; DWORD ;/* FILE SIZE */ |
||
| 119 | FILINFO_FDATE=4; WORD ;/* LAST MODIFIED DATE */ |
||
| 120 | FILINFO_FTIME=6; WORD ;/* LAST MODIFIED TIME */ |
||
| 121 | FILINFO_FATTRIB=8; BYTE ;/* ATTRIBUTE */ |
||
| 122 | FILINFO_FNAME=9; BLOCK 13,0 ;/* SHORT FILE NAME (8.3 FORMAT with dot and terminator) */ |
||
| 646 | alone | 123 | FILINFO_LNAME=22; BLOCK DIRMAXFILENAME64,0 ;/* LONG FILE NAME (ASCIIZ) */ |
| 124 | FILINFO_sz=FILINFO_LNAME+DIRMAXFILENAME64 |
||
| 643 | alone | 125 | |
| 20 | dimkam | 126 | ; STRUCT FCB |
| 23 | dimkam | 127 | FCB_drv=0 ;drv BYTE; /* drive number */ |
| 128 | FCB_FNAME=1 ;FNAME BLOCK 11; |
||
| 129 | FCB_EXTENTNUMBERLO=12 ;EXTENTNUMBERLO BYTE; ;NU |
||
| 130 | FCB_FATTRIB=13 ;FATTRIB BYTE; |
||
| 131 | FCB_EXTENTNUMBERHI=14 ;EXTENTNUMBERHI BYTE; ;NU |
||
| 132 | FCB_RECORDCOUNT=15 ;RECORDCOUNT BYTE; ;NU |
||
| 133 | FCB_FSIZE=16 ;FSIZE DWORD; |
||
| 134 | FCB_FTIME=20 ;FTIME WORD; |
||
| 344 | alone | 135 | FCB_FFSFCB=22 ;FFSFCB WORD; /* TRDOSFCB FIL */ |
| 136 | FCB_DIRPOS=24 ;DIRPOS WORD; /* ਢ離 窥 ᪠ */ |
||
| 20 | dimkam | 137 | ;RESERVED BLOCK 2 ;reserved (14 in MS-DOS???) |
| 23 | dimkam | 138 | FCB_RECORDSIZE=28 ;RECORDSIZE WORD; /* must be 128 */ |
| 139 | FCB_FDATE=30 ;FDATE WORD |
||
| 344 | alone | 140 | FCB_FRECORD=32 ;FRECORD BYTE; /* ⥭*/ |
| 20 | dimkam | 141 | ; ENDS |
| 142 | FCB_sz=33 |
||
| 143 | |||
| 23 | dimkam | 144 | FATTRIB_DIR=0x10 ;mask for FCB_FATTRIB |
| 20 | dimkam | 145 | |
| 146 | ;Application flags: |
||
| 147 | |||
| 344 | alone | 148 | factive=0 ;0=zombie, 1=scheduled ;TODO ᮮ饭: SET ᮮ饭, RES ⨨ ᮮ饭 |
| 1410 | alone | 149 | fchildfinished=1 ;⠭ 襭 (⮡ ⮬ 砥 SETWAITING), 뢠 GETCHILDRESULT |
| 344 | alone | 150 | ;fcritical=4 (⮡ hl) |
| 20 | dimkam | 151 | fgfx=5 ;app can take focus |
| 152 | ;ffocus=6 ;app has focus (only one can) |
||
| 153 | fwaiting=7 ;app is waiting for another app, can't take focus by hand |
||
| 154 | |||
| 147 | alone | 155 | ;Internal keyboard values: |
| 20 | dimkam | 156 | |
| 631 | alone | 157 | extbase=0xb0 ;with H=1 ;can't mix with 32..127 ;temporary internal code |
| 158 | csbase=0xf3 ;temporary internal code |
||
| 159 | extenter=csbase+12 ;temporary internal code |
||
| 160 | graphlock=extenter ;temporary internal code |
||
| 161 | csnoshifts=0;NOKEY ;cs release result for AltGr ;temporary internal code |
||
| 162 | csspace=27 ;temporary internal code |
||
| 163 | csss=9 ;Tab ;temporary internal code |
||
| 147 | alone | 164 | key_extspace=0;NOKEY ;extbase+14 ;unusable because happens simultaneously with extZ because of keyboard matrix |
| 631 | alone | 165 | cssspress=csss ;temporary internal code (impossible to type without AltGr before language recoding) |
| 166 | ssnoshifts=0xd1 ;temporary internal code (impossible to type without AltGr before language recoding) |
||
| 20 | dimkam | 167 | ext0=extbase+0 |
| 147 | alone | 168 | ext1=extbase+1 |
| 20 | dimkam | 169 | ext2=extbase+2 |
| 170 | ext3=extbase+3 |
||
| 171 | ext4=extbase+4 |
||
| 172 | ext5=extbase+5 |
||
| 173 | ext6=extbase+6 |
||
| 174 | ext7=extbase+7 |
||
| 175 | ext8=extbase+8 |
||
| 176 | ext9=extbase+9 |
||
| 147 | alone | 177 | cs0=8 ;as extH (CP/M) ;csbase+0 reserved |
| 178 | cs1=csbase+1 ;readable only in keynolang (switches language) |
||
| 179 | cs2=csbase+2 ;readable only in keynolang (switches Caps Lock) |
||
| 20 | dimkam | 180 | cs3=csbase+3 |
| 181 | cs4=csbase+4 |
||
| 182 | cs5=csbase+5 |
||
| 183 | cs6=csbase+6 |
||
| 184 | cs7=csbase+7 |
||
| 185 | cs8=csbase+8 |
||
| 186 | cs9=csbase+9 |
||
| 187 | |||
| 147 | alone | 188 | ;Usable key codes: |
| 189 | |||
| 20 | dimkam | 190 | extA=1 |
| 191 | extB=2 |
||
| 192 | extC=3 |
||
| 193 | extD=4 |
||
| 194 | extE=5 |
||
| 195 | extF=6 |
||
| 196 | extG=7 |
||
| 197 | extH=8 ;as cs0 (BackSpace) |
||
| 198 | extI=9 ;as csss (Tab) |
||
| 199 | extJ=10 |
||
| 200 | extK=11 |
||
| 201 | extL=12 |
||
| 116 | alone | 202 | extM=13 ;as Enter |
| 20 | dimkam | 203 | extN=14 |
| 204 | extO=15 |
||
| 205 | extP=16 |
||
| 206 | extQ=17 |
||
| 207 | extR=18 |
||
| 208 | extS=19 |
||
| 209 | extT=20 |
||
| 210 | extU=21 |
||
| 211 | extV=22 |
||
| 212 | extW=23 |
||
| 213 | extX=24 |
||
| 214 | extY=25 |
||
| 215 | extZ=26 |
||
| 216 | |||
| 737 | alone | 217 | ss0='_' |
| 116 | alone | 218 | ss1='!' |
| 219 | ss2='@' |
||
| 220 | ss3='#' |
||
| 221 | ss4='$' |
||
| 222 | ss5='%' |
||
| 223 | ss6='&' |
||
| 224 | ss7=0x27;'\'' |
||
| 225 | ss8='(' |
||
| 226 | ss9=')' |
||
| 227 | ssA='~' |
||
| 228 | ssB='*' |
||
| 229 | ssC='?' |
||
| 230 | ssD=0x5c;'\\' |
||
| 231 | ssE=30;extbase+30 |
||
| 232 | ssF='{' |
||
| 233 | ssG='}' |
||
| 234 | ssH='^' |
||
| 235 | ssI=127;extbase+12 |
||
| 236 | ssJ='-' |
||
| 237 | ssK='+' |
||
| 238 | ssL='=' |
||
| 239 | ssM='.' |
||
| 240 | ssN=',' |
||
| 241 | ssO=';' |
||
| 242 | ssP=0x22;'"' |
||
| 243 | ssQ=28;extbase+28 |
||
| 244 | ssR='<' |
||
| 245 | ssS='|' |
||
| 246 | ssT='>' |
||
| 247 | ssU=']' |
||
| 248 | ssV='/' |
||
| 249 | ssW=29;extbase+29 |
||
| 250 | ssX='`' |
||
| 251 | ssY='[' |
||
| 252 | ssZ=':' |
||
| 253 | |||
| 254 | key_home=ssQ |
||
| 255 | key_end=ssE |
||
| 256 | key_ins=ssW |
||
| 257 | key_enter=13 |
||
| 258 | key_left=cs5 |
||
| 259 | key_right=cs8 |
||
| 260 | key_up=cs7 |
||
| 261 | key_down=cs6 |
||
| 262 | key_pgup=cs3 |
||
| 263 | key_pgdown=cs4 |
||
| 264 | key_backspace=cs0 |
||
| 265 | key_del=cs9 |
||
| 266 | key_ssleft=ext5 |
||
| 267 | key_ssright=ext8 |
||
| 268 | key_ssup=ext7 |
||
| 269 | key_ssdown=ext6 |
||
| 270 | key_sspgup=ext3 |
||
| 271 | key_sspgdown=ext4 |
||
| 272 | key_ssbackspace=ext0 |
||
| 273 | key_ssdel=ext9 |
||
| 274 | key_tab=csss |
||
| 275 | key_esc=csspace |
||
| 147 | alone | 276 | key_csenter=csbase+10 |
| 277 | key_ssspace=csbase+11 |
||
| 140 | dimkam | 278 | key_F1=ext1 |
| 279 | key_F2=ext2 |
||
| 280 | key_F3=ext3 |
||
| 281 | key_F4=ext4 |
||
| 282 | key_F5=ext5 |
||
| 283 | key_F6=ext6 |
||
| 284 | key_F7=ext7 |
||
| 285 | key_F8=ext8 |
||
| 286 | key_F9=ext9 |
||
| 287 | key_F10=ext0 |
||
| 116 | alone | 288 | |
| 147 | alone | 289 | NOKEY=0 |
| 290 | key_redraw=31 ;if equal to ssEnter, then scheduling through idle will catch ssEnter twice |
||
| 291 | ;single ext (Tab) is returned at key release (TODO keypress in keynolang) |
||
| 292 | ;single ss, cs keypresses are not returned, or else CP/M-like apps can't filter them out (TODO in keynolang, and all other key releases too) |