Subversion Repositories NedoOS

Rev

Rev 64 | Rev 140 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1. BDOS=0x0005
  2. COMMANDLINE=0x0080
  3. COMMANDLINE_sz=0x0080
  4. PROGSTART=0x0100
  5.  
  6. MAXPATH_sz=256;64
  7.  
  8. ;------------------------╤╥╨╙╩╥╙╨█ CP/M --------------------------------------
  9. ;from CP/M:
  10. CMD_PRCHAR=0x05 ;e=char
  11. CMD_SETDRV=0x0e ;e=drive ;out: a!=0 => not mounted, l=number of drives
  12. CMD_FOPEN=0x0f ;de = pointer to unopened FCB
  13. CMD_FCLOSE=0x10 ;de = pointer to opened FCB
  14. CMD_FSEARCHFIRST=0x11 ;de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA
  15. CMD_FSEARCHNEXT=0x12 ;(NOT CP/M!!!)de = pointer to unopened FCB (filename with ????????), read matching FCB to DTA
  16. CMD_FDEL=0x13 ;DE = Pointer to unopened FCB
  17. CMD_FREAD=0x14 ;DE = Pointer to opened FCB, read 128 bytes in DTA, out: a=128^bytes actually read
  18. CMD_FWRITE=0x15 ;DE = Pointer to opened FCB, write 128 bytes from DTA
  19. CMD_FCREATE=0x16 ;DE = Pointer to unopened FCB
  20. CMD_SETDTA=0x1a ;DE = data transfer address (DTA)
  21.  
  22. ;from MSX-DOS:
  23. CMD_SEEKHANDLE=0x4a ;b=file handle, dehl=offset [signed, a=method:0=begin,1=cur,2=end TODO]
  24. CMD_OPENHANDLE=0x43 ;DE = Drive/path/file ASCIIZ string
  25.                         ;[A = Open mode. b0 set => no write, b1 set => no read, b2 set => inheritable, b3..b7   -  must be clear]
  26.                         ;out: B = new file handle, A=error
  27. CMD_CREATEHANDLE=0x44 ;DE = Drive/path/file ASCIIZ string
  28.                         ;[A = Open mode. b0 set => no write, b1 set => no read, b2 set => inheritable, b3..b7   -  must be clear]
  29.                         ;[B = b0..b6 = Required attributes, b7 = Create new flag]
  30.                         ;out: B = new file handle, A=error
  31. CMD_CLOSEHANDLE=0x45 ;B = file handle, out: A=error
  32. 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)
  33. 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)
  34. CMD_RENAME=0x4e ;DE = Drive/path/file ASCIIZ string, HL = New filename ASCIIZ string (NOT MSXDOS! with Drive/path!) ;RENAME OR MOVE FILE
  35. CMD_CHDIR=0x5a ;DE = Pointer to ASCIIZ string
  36. CMD_PARSEFNAME=0x5c ;de(dotname) -> hl(cpmname) ;out: de=pointer to termination character, hl=buffer filled in
  37. CMD_GETPATH=0x5e ;DE = Pointer to 64 byte (MAXPATH_sz!) buffer ;out: DE = Filled in with whole path string (WITH DRIVE!), HL = Pointer to start of last item
  38. CMD_DELETE=0x4d ;DE = Drive/path/file ASCIIZ string, out: A = Error
  39.  
  40. ;invented:
  41. CMD_SETWAITING=0xd9
  42. CMD_GETFILESIZE=0xda ;b=handle, out: dehl=file size
  43. CMD_WIZNETOPEN=0xdb
  44. CMD_WIZNETCLOSE=0xdc
  45. CMD_WIZNETREAD=0xdd ;de=pointer, hl=buffer size ;out: hl=size
  46. CMD_WIZNETWRITE=0xde ;de=pointer, hl=size
  47. CMD_DROPAPP=0xdf ;e=id
  48. CMD_GETAPPMAINPAGES=0xe0 ;e=id ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags
  49. CMD_GETXY=0xe1 ;out: de=yx ;GET CURSOR POSITION
  50. CMD_GETTIME=0xe2 ;out: ix=date, hl=time
  51. CMD_GETFILETIME=0xe3 ;de=Drive/path/file ASCIIZ string, out: ix=date, hl=time
  52. CMD_SETFILETIME=0xe4 ;de=Drive/path/file ASCIIZ string, ix=date, hl=time
  53. CMD_TELLHANDLE=0xe5 ;b=file handle, out: dehl=offset
  54. CMD_SCROLLUP=0xe6 ;de=topyx, hl=hgt,wid ;x, wid even
  55. CMD_SCROLLDOWN=0xe7 ;de=topyx, hl=hgt,wid ;x, wid even
  56. CMD_FWRITE_NBYTES=0xe8 ;hl=bytes, de=FCB
  57. ;CMD_GETKEYNOLANG=0xe9
  58. CMD_SETSYSDRV=0xea ;out: a!=0 => not mounted, l=number of drives
  59. CMD_MKDIR=0xeb ;DE = Pointer to ASCIIZ string, out: a
  60. CMD_WAITPID=0xec ;e=id ;check if app closed, out: a=0 => OK (and reset waiting), or else a!=0
  61. CMD_FREEZEAPP=0xed ;e=id ;disable app and make non-graphic
  62. CMD_GETATTR=0xee ;out: a ;READ ATTR AT CURSOR POSITION
  63. CMD_MOUNT=0xef ;e=drive, out: a
  64. CMD_GETKEYMATRIX=0xf0 ;out: bcdehlix = яюыєЁ ф√ cs...space
  65. CMD_GETTIMER=0xf1 ;out: hlde=timer
  66. CMD_YIELD=0xf2 ;schedule to another app (use YIELD macro instead of HALT!!!)
  67. CMD_RUNAPP=0xf3 ;e=id ;ACTIVATE DISABLED APP
  68. CMD_NEWAPP=0xf4 ;out: b=id, a=error, dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000 эютюую яЁшыюцхэш  ;MAKE NEW DISABLED APP
  69. CMD_PRATTR=0xf5 ;e=color byte ;DRAW ATTR AT CURSOR POSITION
  70. CMD_CLS=0xf6 ;e=color byte
  71. CMD_SETCOLOR=0xf7 ;e=color byte
  72. CMD_SETXY=0xf8 ;de=yx ;SET CURSOR POSITION
  73. CMD_SETGFX=0xf9 ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  74. CMD_SETPAL=0xfa ;de=palette
  75. CMD_GETMAINPAGES=0xfb ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags
  76. CMD_NEWPAGE=0xfc ;out: a=0 (OK), e=page
  77. CMD_DELPAGE=0xfd ;e=page
  78. CMD_SETSCREEN=0xfe ;e=screen=0..1
  79. ;TODO х∙╕ єёЄрэютъє Єхъє∙хую юсЁрсрЄ√трхьюую ¤ъЁрэр
  80. CMD_GETSCREENPAGES=0xff ;out: de=pages of screen 0 (d=higher page), hl=pages of screen 1 (h=higher page)
  81.  
  82. ;        STRUCT FCB
  83. FCB_drv=0 ;drv             BYTE; /* drive number */
  84. FCB_FNAME=1 ;FNAME           BLOCK 11;
  85. FCB_EXTENTNUMBERLO=12 ;EXTENTNUMBERLO  BYTE; ;NU
  86. FCB_FATTRIB=13 ;FATTRIB         BYTE;
  87. FCB_EXTENTNUMBERHI=14 ;EXTENTNUMBERHI  BYTE; ;NU
  88. FCB_RECORDCOUNT=15 ;RECORDCOUNT     BYTE; ;NU
  89. FCB_FSIZE=16 ;FSIZE           DWORD;
  90. FCB_FTIME=20 ;FTIME           WORD;
  91. FCB_FFSFCB=22 ;FFSFCB          WORD; /* TRDOSFCB шыш FIL */
  92. FCB_DIRPOS=24 ;DIRPOS          WORD; /* яЁшт чър ъ Єюўъх яюшёър */
  93. ;RESERVED        BLOCK 2 ;reserved (14 in MS-DOS???)
  94. FCB_RECORDSIZE=28 ;RECORDSIZE      WORD; /* must be 128 */
  95. FCB_FDATE=30 ;FDATE           WORD
  96. FCB_FRECORD=32 ;FRECORD         BYTE; /*эюьхЁ чряшёш тэєЄЁш ¤ъёЄхэЄр*/
  97. ;       ENDS
  98. FCB_sz=33
  99.  
  100. FATTRIB_DIR=0x10 ;mask for FCB_FATTRIB
  101.  
  102. ;Application flags:
  103.  
  104. factive=0 ;0=zombie, 1=scheduled ;TODO хёЄ№ ёююс∙хэш : SET яЁш фюсртыхэшш ёююс∙хэш , RES яЁш тч Єшш яюёыхфэхую ёююс∙хэш 
  105. ;fcritical=4 (ўЄюс√ эх яюЁЄшЄ№ hl)
  106. fgfx=5 ;app can take focus
  107. ;ffocus=6 ;app has focus (only one can)
  108. fwaiting=7 ;app is waiting for another app, can't take focus by hand
  109.  
  110. ;Keyboard values:
  111.  
  112. NOKEY=0
  113. key_redraw=31 ;хёыш ёфхырЄ№ Ёртэ√ь ssEnter, Єю яЁш °хфєышэух ўхЁхч idle ssEnter ёыютшЄё  тЄюЁющ Ёрч
  114. Enter=13
  115. ssI=127;extbase+12
  116. extSpace=NOKEY ;extbase+14 ;эх■чрсхы№эю, Є.ъ. шч-чр ьрЄЁшЎ√ т√фрхЄё  тьхёЄх ё extZ
  117.  
  118. extbase=0xb0 ;with H=1 ;эю эхы№ч  яхЁхёхърЄ№ё  ё 32..127
  119. ext0=extbase+0
  120. ext1=extbase+1  ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ Ёхцшь яёхтфюуЁрЇшъш)
  121. ext2=extbase+2
  122. ext3=extbase+3
  123. ext4=extbase+4
  124. ext5=extbase+5
  125. ext6=extbase+6
  126. ext7=extbase+7
  127. ext8=extbase+8
  128. ext9=extbase+9
  129.  
  130. csbase=0xf3
  131. cs0=8 ;as extH (CP/M)
  132. ;csbase+0 reserved
  133. cs1=csbase+1 ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ  ч√ъ)
  134. cs2=csbase+2 ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ Caps Lock)
  135. cs3=csbase+3
  136. cs4=csbase+4
  137. cs5=csbase+5
  138. cs6=csbase+6
  139. cs7=csbase+7
  140. cs8=csbase+8
  141. cs9=csbase+9
  142. csEnter=csbase+10
  143. ssSpace=csbase+11
  144. extEnter=csbase+12
  145.  
  146. extA=1
  147. extB=2
  148. extC=3
  149. extD=4
  150. extE=5
  151. extF=6
  152. extG=7
  153. extH=8 ;as cs0 (BackSpace)
  154. extI=9 ;as csss (Tab)
  155. extJ=10
  156. extK=11
  157. extL=12
  158. extM=13
  159. extN=14
  160. extO=15
  161. extP=16
  162. extQ=17
  163. extR=18
  164. extS=19
  165. extT=20
  166. extU=21
  167. extV=22
  168. extW=23
  169. extX=24
  170. extY=25
  171. extZ=26
  172. csnoshifts=NOKEY ;cs release result for AltGr
  173. csSpace=27
  174. ssQ=extbase+28
  175. Home=ssQ
  176. ssW=extbase+29
  177. Ins=ssW
  178. ssE=extbase+30
  179. Endkey=ssE
  180.  
  181. csss=9 ;Tab
  182.  
  183. cssspress=csss ;temporary internal code (impossible to type without AltGr before language recoding)
  184. ssnoshifts=0xd1 ;temporary internal code (impossible to type without AltGr before language recoding)
  185.  
  186. ;тёхую єяЁрты ■∙шї ъюьсшэрЎшщ:
  187. ;1: nokey
  188. ;1: redraw
  189. ;1: Enter
  190. ;12: ЎшЇЁ√ ё CS, cs+Space, cs+Enter
  191. ;3: ss, cs, sscs
  192. ;6[5]: ss+Q,+W,+E,+I,[+Enter],+Space
  193. ;38[37] ext+ъэюяър[ъЁюьх extSpace, ъюЄюЁ√щ т√фр╕Єё  тьхёЄх ё extZ]
  194. ;=62[60], ьюцэю єьхёЄшЄ№ т фтр эрсюЁр 0..31, эю Єръ эх яюьхёЄ Єё  ёшьтюы√ 0..31 ъръ ёшьтюы√!
  195.  
  196. ;SO, SI чрэшьрЄ№ эхы№ч 
  197. ;єяЁ. ъюф√, эхюсїюфшь√х фы  CP/M, яхЁхфртрЄ№ эхяюёЁхфёЄтхээю (ўхь шї ьхэ№°х, Єхь сюы№°х юЄфхы№э√ї ext+keys ьюцэю яЁхфєёьюЄЁхЄ№)
  198. ;ext+keys яхЁхфртрЄ№ ъръ 0..31 (ўЄюс√ ьюцэю с√ыю ттхёЄш ы■сющ єяЁ.ъюф CP/M, эрфю х∙╕ эхёъюы№ъю ъыртш° фы  юёЄры№э√ї ъюфют)
  199. ;ёшьтюы√ 0..31 яхЁхфртрЄ№ ъръ SO, ъюф+0xb0, SI
  200. ;юёЄры№э√х єяЁ. ъюф√ (cs+digit, ext+digit, extSpace, extEnt, ssQWE) яхЁхфртрЄ№ ъръ SO, ъюф+0xd0, SI
  201. ;юЄфхы№э√щ ext (Tab) яхЁхфртрЄ№ яю юЄцрЄш■
  202. ;эрцрЄш  юЄфхы№э√ї ss, cs эх яхЁхфртрЄ№, шэрўх CP/M яЁшыюцхэш  эх ёьюуєЄ шї юЄЇшы№ЄЁютрЄ№ (юЄцрЄш  ъыртш° Єюцх яхЁхфрЄ№ эхтючьюцэю, Ёрчтх ўЄю ўхЁхч GETKEYNOLANG)
  203.  
  204. ;00*nokey ^@ NUL - TODO єсЁрЄ№ (GET_KEY сєфхЄ ёрь фхырЄ№ YIELD фю яЁшїюфр ёюс√Єш  ъыртшрЄєЁ√/ь√°ш, р ў№╕ ёюс√Єшх - ъръ-Єю ъюфшЁютрЄ№ т H)
  205. ;01       ^A SOH All (WordLeft т TP) -- home
  206. ;02       ^B STX -- left
  207. ;03       ^C ETX Copy (PgDn т TP) (close app т MS-DOS) -- close app
  208. ;04       ^D EOT (Right т TP ш ATM CP/M) -- del
  209. ;05       ^E ENQ (Up т TP) -- end
  210. ;06       ^F ACK Find (WordRight т TP) -- right
  211. ;07       ^G BEL Replace (Del т TP)
  212. ;08 cs0   ^H BS  BS! (BS т MS-DOS) (Up т TPlib) -- bs
  213. ;09 csss  ^I HT  Tab! (Tab т MS-DOS) -- tab
  214. ;0A       ^J LF (Enter т ATM CP/M)
  215. ;0B       ^K VT (Left т TPlib) -- kill line
  216. ;0C       ^L FF  (FindNext т TP) -- update screen
  217. ;0D Enter ^M CR  Enter! (Enter т ATM CP/M ш Notepad++) (Right т TPlib) (Ёхцшь т√фхыхэш  т Win) -- enter
  218. ;0E       ^N SO  New -- next
  219. ;0F       ^O SI  Open -- flush
  220. ;10       ^P DEL Del (Down т TPlib) -- previous
  221. ;11       ^Q DC1 -- verbatim?
  222. ;12       ^R DC2 (PgUp? т TP) -- search back
  223. ;13       ^S DC3 Save (Left т TP ш ATM CP/M) -- search forward
  224. ;14       ^T DC4 (DelWordRight т TP)
  225. ;15       ^U NAK -- numeric?
  226. ;16       ^V SYN Paste (Ins т TP) -- verbatim? pgup?
  227. ;17       ^W ETB
  228. ;18       ^X CAN Cut (Down т TP) (delete command т ATM CP/M)
  229. ;19       ^Y EM  DelLn
  230. ;1A       ^Z SUB Undo (EOF)
  231. ;1B csSpc ^[ SUB Esc! (Esc key, Esc symbol)
  232. ;1C Home  ^\ FS
  233. ;1D Ins   ^] GS
  234. ;1E End   ^^ RS
  235. ;1F redraw^_ US
  236.  
  237.