Subversion Repositories NedoOS

Rev

Rev 74 | Rev 147 | 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 ;TODO т√сЁюёшЄ№
  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.  
  115. extbase=0xb0 ;with H=1 ;эю эхы№ч  яхЁхёхърЄ№ё  ё 32..127
  116. ext0=extbase+0
  117. ext1=extbase+1  ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ Ёхцшь яёхтфюуЁрЇшъш)
  118. ext2=extbase+2
  119. ext3=extbase+3
  120. ext4=extbase+4
  121. ext5=extbase+5
  122. ext6=extbase+6
  123. ext7=extbase+7
  124. ext8=extbase+8
  125. ext9=extbase+9
  126.  
  127. csbase=0xf3
  128. cs0=8 ;as extH (CP/M)
  129. ;csbase+0 reserved
  130. cs1=csbase+1 ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ  ч√ъ)
  131. cs2=csbase+2 ;ъюф т√фр╕Єё  Єюы№ъю яЁш ўЄхэшш ўхЁхч keynolang (т keylang яхЁхъы■ўрхЄ Caps Lock)
  132. cs3=csbase+3
  133. cs4=csbase+4
  134. cs5=csbase+5
  135. cs6=csbase+6
  136. cs7=csbase+7
  137. cs8=csbase+8
  138. cs9=csbase+9
  139. key_csenter=csbase+10
  140. key_ssspace=csbase+11
  141. key_extenter=csbase+12
  142.  
  143. extA=1
  144. extB=2
  145. extC=3
  146. extD=4
  147. extE=5
  148. extF=6
  149. extG=7
  150. extH=8 ;as cs0 (BackSpace)
  151. extI=9 ;as csss (Tab)
  152. extJ=10
  153. extK=11
  154. extL=12
  155. extM=13 ;as Enter
  156. extN=14
  157. extO=15
  158. extP=16
  159. extQ=17
  160. extR=18
  161. extS=19
  162. extT=20
  163. extU=21
  164. extV=22
  165. extW=23
  166. extX=24
  167. extY=25
  168. extZ=26
  169. csnoshifts=NOKEY ;cs release result for AltGr
  170. csspace=27
  171.  
  172. ss1='!'
  173. ss2='@'
  174. ss3='#'
  175. ss4='$'
  176. ss5='%'
  177. ss6='&'
  178. ss7=0x27;'\''
  179. ss8='('
  180. ss9=')'
  181. ssA='~'
  182. ssB='*'
  183. ssC='?'
  184. ssD=0x5c;'\\'
  185. ssE=30;extbase+30
  186. ssF='{'
  187. ssG='}'
  188. ssH='^'
  189. ssI=127;extbase+12
  190. ssJ='-'
  191. ssK='+'
  192. ssL='='
  193. ssM='.'
  194. ssN=','
  195. ssO=';'
  196. ssP=0x22;'"'
  197. ssQ=28;extbase+28
  198. ssR='<'
  199. ssS='|'
  200. ssT='>'
  201. ssU=']'
  202. ssV='/'
  203. ssW=29;extbase+29
  204. ssX='`'
  205. ssY='['
  206. ssZ=':'
  207.  
  208. csss=9 ;Tab
  209. key_extspace=NOKEY ;extbase+14 ;эх■чрсхы№эю, Є.ъ. шч-чр ьрЄЁшЎ√ т√фрхЄё  тьхёЄх ё extZ
  210.  
  211. cssspress=csss ;temporary internal code (impossible to type without AltGr before language recoding)
  212. ssnoshifts=0xd1 ;temporary internal code (impossible to type without AltGr before language recoding)
  213.  
  214. key_home=ssQ
  215. key_end=ssE
  216. key_ins=ssW
  217. key_enter=13
  218. key_left=cs5
  219. key_right=cs8
  220. key_up=cs7
  221. key_down=cs6
  222. key_pgup=cs3
  223. key_pgdown=cs4
  224. key_backspace=cs0
  225. key_del=cs9
  226. key_ssleft=ext5
  227. key_ssright=ext8
  228. key_ssup=ext7
  229. key_ssdown=ext6
  230. key_sspgup=ext3
  231. key_sspgdown=ext4
  232. key_ssbackspace=ext0
  233. key_ssdel=ext9
  234. key_tab=csss
  235. key_esc=csspace
  236. ;юЄфхы№э√щ ext (Tab) яхЁхфр╕Єё  яю юЄцрЄш■ (TODO т GETKEYNOLANG яю эрцрЄш■)
  237. ;эрцрЄш  юЄфхы№э√ї ss, cs эх яхЁхфр■Єё , шэрўх CP/M яЁшыюцхэш  эх ёьюуєЄ шї юЄЇшы№ЄЁютрЄ№ (TODO ўхЁхч GETKEYNOLANG, ш юЄцрЄш  тёхї ъыртш° Єюцх)
  238.  
  239. ;тёхую єяЁрты ■∙шї ъюьсшэрЎшщ:
  240. ;1: nokey
  241. ;1: redraw
  242. ;1: Enter
  243. ;12: ЎшЇЁ√ ё CS, cs+Space, cs+Enter
  244. ;3: ss, cs, sscs
  245. ;6[5]: ss+Q,+W,+E,+I,[+Enter],+Space
  246. ;38[37] ext+ъэюяър[ъЁюьх extSpace, ъюЄюЁ√щ т√фр╕Єё  тьхёЄх ё extZ]
  247. ;=62[60], ьюцэю єьхёЄшЄ№ т фтр эрсюЁр 0..31, эю Єръ эх яюьхёЄ Єё  ёшьтюы√ 0..31 ъръ ёшьтюы√!
  248.  
  249. ;SO, SI чрэшьрЄ№ эхы№ч 
  250. ;єяЁ. ъюф√, эхюсїюфшь√х фы  CP/M, яхЁхфртрЄ№ эхяюёЁхфёЄтхээю (ўхь шї ьхэ№°х, Єхь сюы№°х юЄфхы№э√ї ext+keys ьюцэю яЁхфєёьюЄЁхЄ№)
  251. ;ext+keys яхЁхфртрЄ№ ъръ 0..31 (ўЄюс√ ьюцэю с√ыю ттхёЄш ы■сющ єяЁ.ъюф CP/M, эрфю х∙╕ эхёъюы№ъю ъыртш° фы  юёЄры№э√ї ъюфют)
  252. ;TODO ёшьтюы√ 0..31 яхЁхфртрЄ№ ъръ SO, ъюф+0xb0, SI?
  253. ;TODO юёЄры№э√х єяЁ. ъюф√ (cs+digit, ext+digit, extSpace, extEnt, ssQWE) яхЁхфртрЄ№ ъръ SO, ъюф+0xd0, SI?
  254.  
  255. ;00*nokey ^@ NUL - (хёыш GET_KEY сєфхЄ ёрь фхырЄ№ YIELD фю яЁшїюфр ёюс√Єш  ъыртшрЄєЁ√/ь√°ш, р ў№╕ ёюс√Єшх - ъръ-Єю ъюфшЁютрЄ№ т H - Єюуфр эхы№ч  яхЁхфртрЄ№ юЄцрЄшх, Є.ъ. ёюс√Єшх хёЄ№, р ъюф HA=nokey)
  256. ;01       ^A SOH All (WordLeft т TP) -- home
  257. ;02       ^B STX -- left
  258. ;03       ^C ETX Copy (PgDn т TP) (close app т MS-DOS) -- close app
  259. ;04       ^D EOT (Right т TP ш ATM CP/M) -- del
  260. ;05       ^E ENQ (Up т TP) -- end
  261. ;06       ^F ACK Find (WordRight т TP) -- right
  262. ;07       ^G BEL Replace (Del т TP)
  263. ;08 cs0   ^H BS  BS! (BS т MS-DOS) (Up т TPlib) -- bs
  264. ;09 csss  ^I HT  Tab! (Tab т MS-DOS) -- tab
  265. ;0A       ^J LF (Enter т ATM CP/M)
  266. ;0B       ^K VT (Left т TPlib) -- kill line
  267. ;0C       ^L FF  (FindNext т TP) -- update screen
  268. ;0D Enter ^M CR  Enter! (Enter т ATM CP/M ш Notepad++) (Right т TPlib) (Ёхцшь т√фхыхэш  т Win) -- enter
  269. ;0E       ^N SO  New -- next
  270. ;0F       ^O SI  Open -- flush
  271. ;10       ^P DEL Del (Down т TPlib) -- previous
  272. ;11       ^Q DC1 -- verbatim?
  273. ;12       ^R DC2 (PgUp? т TP) -- search back
  274. ;13       ^S DC3 Save (Left т TP ш ATM CP/M) -- search forward
  275. ;14       ^T DC4 (DelWordRight т TP)
  276. ;15       ^U NAK -- numeric?
  277. ;16       ^V SYN Paste (Ins т TP) -- verbatim? pgup?
  278. ;17       ^W ETB
  279. ;18       ^X CAN Cut (Down т TP) (delete command т ATM CP/M)
  280. ;19       ^Y EM  DelLn
  281. ;1A       ^Z SUB Undo (EOF)
  282. ;1B csSpc ^[ SUB Esc! (Esc key, Esc symbol)
  283. ;1C Home  ^\ FS
  284. ;1D Ins   ^] GS
  285. ;1E End   ^^ RS
  286. ;1F redraw^_ US
  287.