Subversion Repositories NedoOS

Rev

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

  1.  
  2.         ;include "atm.asm"
  3.         include "sysdefs.asm"
  4.        
  5. ;do define oldtimer (2 bytes)
  6.         macro YIELD ;use instead of HALT
  7.         OS_YIELD
  8. _0=$
  9.         OS_GETTIMER ;hlde=timer
  10.         ld hl,(oldtimer)
  11.         or a
  12.         sbc hl,de
  13.         jr z,_0 ;TODO OS_YIELDIDLE (шэрўх эх ёЁрсюЄрхЄ 'c'+'m'+'d')
  14.          ld (oldtimer),de
  15.         endm
  16.         macro YIELDGETKEY ;out: nz=nokey, a=keylang, c=keynolang
  17.         YIELD ;halt ;хёыш ёфхырЄ№ яЁюёЄю di:rst 0x38, Єю 1.ёфтшэхь ЄрщьхЁ ш 2.ьюцхь яюЄхЁ Є№ ърфЁютюх яЁхЁ√трэшх, р хёыш схч ei, Єю сєфєЄ уы■ъш
  18.         GET_KEY
  19.         or a ;cp NOKEY ;keylang==0?
  20.         jr nz,$+3
  21.         cp c ;keynolang==0?
  22.         endm
  23.         macro YIELDGETKEYLOOP
  24. _1=$
  25.         YIELDGETKEY
  26.         jr z,_1
  27.         endm
  28.  
  29.         macro WAITPID
  30.         ;push de
  31.         ;YIELD ;ўЄюс√ чряєёърхьр  чрфрўр єёяхыр чрїтрЄшЄ№ Їюъєё
  32.         ;ld e,-1
  33.         ;OS_SETGFX ;disable gfx, give focus (хёыш эх ёфхырЄ№ YIELD, Їюъєё юЄфр╕Єё  эх Єюьє яЁшыюцхэш■, ъръюх ь√ цф╕ь!)
  34.         ;ld a,e
  35.         ;pop de
  36.         ;ld d,a
  37.         push de
  38.         OS_SETWAITING
  39.         pop de
  40. _1=$
  41.         push de
  42.         YIELD
  43.         pop de
  44.         push de
  45.         OS_WAITPID
  46.         pop de
  47.         or a
  48.         jr nz,_1
  49.         ;push de
  50.         ;OS_RESETWAITING
  51.         ;pop de
  52.         ;ld e,d ;ld e,6 ;textmode
  53.         ;OS_SETGFX ;take focus (can be random after closing cmd)
  54.         endm
  55.        
  56. ;from CP/M        
  57.         macro OS_PRCHAR
  58.         ld c,CMD_PRCHAR
  59.         CALLBDOS
  60.         endm
  61.         macro OS_SETDRV
  62.         ld c,CMD_SETDRV
  63.         CALLBDOS
  64.         endm
  65.         macro OS_FOPEN
  66.         ld c,CMD_FOPEN
  67.         CALLBDOS
  68.         endm
  69.         macro OS_FCLOSE
  70.         ld c,CMD_FCLOSE
  71.         CALLBDOS
  72.         endm
  73.         macro OS_FSEARCHFIRST
  74.         ld c,CMD_FSEARCHFIRST
  75.         CALLBDOS
  76.         endm
  77.         macro OS_FSEARCHNEXT
  78.         ld c,CMD_FSEARCHNEXT
  79.         CALLBDOS
  80.         endm
  81.         macro OS_FDEL
  82.         ld c,CMD_FDEL
  83.         CALLBDOS
  84.         endm
  85.         macro OS_FREAD
  86.         ld c,CMD_FREAD
  87.         CALLBDOS
  88.         endm
  89.         macro OS_FWRITE
  90.         ld c,CMD_FWRITE
  91.         CALLBDOS
  92.         endm
  93.         macro OS_FCREATE
  94.         ld c,CMD_FCREATE
  95.         CALLBDOS
  96.         endm
  97.         macro OS_SETDTA
  98.         ld c,CMD_SETDTA
  99.         CALLBDOS
  100.         endm
  101.  
  102. ;from MSX-DOS
  103.         macro OS_SEEKHANDLE
  104.         ld c,CMD_SEEKHANDLE
  105.         CALLBDOS
  106.         endm
  107.         macro OS_OPENHANDLE
  108.         ld c,CMD_OPENHANDLE
  109.         CALLBDOS
  110.         endm
  111.         macro OS_CREATEHANDLE
  112.         ld c,CMD_CREATEHANDLE
  113.         CALLBDOS
  114.         endm
  115.         macro OS_CLOSEHANDLE
  116.         ld c,CMD_CLOSEHANDLE
  117.         CALLBDOS
  118.         endm
  119.         macro OS_READHANDLE
  120.         ld c,CMD_READHANDLE
  121.         CALLBDOS
  122.         endm
  123.         macro OS_WRITEHANDLE
  124.         ld c,CMD_WRITEHANDLE
  125.         CALLBDOS
  126.         endm
  127.         macro OS_RENAME
  128.         ld c,CMD_RENAME
  129.         CALLBDOS
  130.         endm
  131.         macro OS_CHDIR
  132.         ld c,CMD_CHDIR
  133.         CALLBDOS
  134.         endm
  135.         macro OS_PARSEFNAME
  136.         ld c,CMD_PARSEFNAME
  137.         CALLBDOS
  138.         endm
  139.         macro OS_GETPATH
  140.         ld c,CMD_GETPATH
  141.         CALLBDOS
  142.         endm
  143.         macro OS_DELETE
  144.         ld c,CMD_DELETE
  145.         CALLBDOS
  146.         endm
  147.  
  148. ;invented  
  149.         macro OS_GETFILESIZE
  150.         ld c,CMD_GETFILESIZE
  151.         CALLBDOS
  152.         endm
  153.         macro OS_SETWAITING
  154.         ld c,CMD_SETWAITING
  155.         CALLBDOS
  156.         endm
  157.         ;macro OS_RESETWAITING
  158.         ;ld c,CMD_RESETWAITING
  159.         ;CALLBDOS
  160.         ;endm
  161.         macro OS_NETSOCKET;D=address family, E=socket type ; out: L=SOCKET(if L < 0 then A=error)
  162.         ld l,0x01
  163.         ld c,CMD_WIZNETOPEN
  164.         CALLBDOS
  165.         endm
  166.         macro OS_NETSHUTDOWN;A=SOCKET ; out: if HL < 0 then A=error
  167.         ld l,0x02
  168.         ld c,CMD_WIZNETOPEN
  169.         CALLBDOS
  170.         endm
  171.         macro OS_NETCONNECT;A=SOCKET, DE=sockaddr ptr ; out: if HL < 0 then A=error
  172.         ld l,0x03
  173.         ld c,CMD_WIZNETOPEN
  174.         CALLBDOS
  175.         endm
  176.         macro OS_ACCEPT;A=SOCKET; out: HL
  177.         ld l,0x04
  178.         ld c,CMD_WIZNETOPEN
  179.         CALLBDOS
  180.         endm
  181.         macro OS_BIND;A=SOCKET, DE=
  182.         ld l,0x05
  183.         ld c,CMD_WIZNETOPEN
  184.         CALLBDOS
  185.         endm
  186.         macro OS_LISTEN;A=SOCKET
  187.         ld l,0x06
  188.         ld c,CMD_WIZNETOPEN
  189.         CALLBDOS
  190.         endm
  191.         macro OS_WIZNETCLOSE
  192.         ld c,CMD_WIZNETCLOSE
  193.         CALLBDOS
  194.         endm
  195.         macro OS_WIZNETREAD;A=SOCKET, de=buffer_ptr, HL=sizeof(buffer) ; out: HL=count if HL < 0 then A=error
  196.         ld c,CMD_WIZNETREAD
  197.         CALLBDOS
  198.         endm
  199.         macro OS_WIZNETWRITE;A=SOCKET, de=buffer_ptr, HL=sizeof(buffer) ; out: HL=count if HL < 0 then A=error
  200.         ld c,CMD_WIZNETWRITE
  201.         CALLBDOS
  202.         endm
  203.         macro OS_DROPAPP
  204.         ld c,CMD_DROPAPP
  205.         CALLBDOS
  206.         endm
  207.         macro OS_GETAPPMAINPAGES
  208.         ld c,CMD_GETAPPMAINPAGES
  209.         CALLBDOS
  210.         endm
  211.         macro OS_GETXY
  212.         ld c,CMD_GETXY
  213.         CALLBDOS
  214.         endm
  215.         macro OS_GETTIME
  216.         ld c,CMD_GETTIME
  217.         CALLBDOS
  218.         endm
  219.         macro OS_GETFILETIME
  220.         ld c,CMD_GETFILETIME
  221.         CALLBDOS
  222.         endm
  223.         macro OS_SETFILETIME
  224.         ld c,CMD_SETFILETIME
  225.         CALLBDOS
  226.         endm
  227.         macro OS_TELLHANDLE
  228.         ld c,CMD_TELLHANDLE
  229.         CALLBDOS
  230.         endm
  231.         macro OS_SCROLLUP
  232.         ld c,CMD_SCROLLUP
  233.         CALLBDOS
  234.         endm
  235.         macro OS_SCROLLDOWN
  236.         ld c,CMD_SCROLLDOWN
  237.         CALLBDOS
  238.         endm
  239.         macro OS_FWRITE_NBYTES
  240.         ld c,CMD_FWRITE_NBYTES
  241.         CALLBDOS
  242.         endm
  243.         ;macro OS_GETKEYNOLANG
  244.         ;ld c,CMD_GETKEYNOLANG
  245.         ;CALLBDOS
  246.         ;endm
  247.         macro OS_SETSYSDRV
  248.         ld c,CMD_SETSYSDRV
  249.         CALLBDOS
  250.         endm
  251.         macro OS_MKDIR
  252.         ld c,CMD_MKDIR
  253.         CALLBDOS
  254.         endm
  255.         macro OS_WAITPID
  256.         ld c,CMD_WAITPID
  257.         CALLBDOS
  258.         endm
  259.         macro OS_FREEZEAPP
  260.         ld c,CMD_FREEZEAPP
  261.         CALLBDOS
  262.         endm
  263.         macro OS_GETATTR
  264.         ld c,CMD_GETATTR
  265.         CALLBDOS
  266.         endm
  267.         macro OS_MOUNT
  268.         ld c,CMD_MOUNT
  269.         CALLBDOS
  270.         endm
  271.         macro OS_GETKEYMATRIX
  272.         ld c,CMD_GETKEYMATRIX
  273.         CALLBDOS
  274.         endm
  275.         macro OS_GETTIMER
  276.         ld c,CMD_GETTIMER
  277.         CALLBDOS
  278.         endm
  279.         macro OS_YIELD
  280.         ld c,CMD_YIELD
  281.         CALLBDOS
  282.         endm
  283.         macro OS_RUNAPP
  284.         ld c,CMD_RUNAPP
  285.         CALLBDOS
  286.         endm
  287.         macro OS_NEWAPP
  288.         ld c,CMD_NEWAPP
  289.         CALLBDOS
  290.         endm
  291.         macro OS_PRATTR
  292.         ld c,CMD_PRATTR
  293.         CALLBDOS
  294.         endm
  295.         macro OS_CLS
  296.         ld c,CMD_CLS
  297.         CALLBDOS
  298.         endm
  299.         macro OS_SETCOLOR
  300.         ld c,CMD_SETCOLOR
  301.         CALLBDOS
  302.         endm
  303.         macro OS_SETXY
  304.         ld c,CMD_SETXY
  305.         CALLBDOS
  306.         endm
  307.         macro OS_SETGFX
  308.         ld c,CMD_SETGFX
  309.         CALLBDOS
  310.         endm
  311.         macro OS_SETPAL
  312.         ld c,CMD_SETPAL
  313.         CALLBDOS
  314.         endm
  315.         macro OS_GETMAINPAGES
  316.         ld c,CMD_GETMAINPAGES
  317.         CALLBDOS
  318.         endm
  319.         macro OS_NEWPAGE
  320.         ld c,CMD_NEWPAGE
  321.         CALLBDOS
  322.         endm
  323.         macro OS_DELPAGE
  324.         ld c,CMD_DELPAGE
  325.         CALLBDOS
  326.         endm
  327.         macro OS_SETSCREEN
  328.         ld c,CMD_SETSCREEN
  329.         CALLBDOS
  330.         endm
  331.         macro OS_GETSCREENPAGES
  332.         ld c,CMD_GETSCREENPAGES
  333.         CALLBDOS
  334.         endm
  335.  
  336.  
  337.  
  338. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  339.        
  340.         macro QUIT
  341.         rst 0 ;close app
  342.         endm
  343.  
  344.         macro CALLBDOS ;don't use CALLBDOS or call 0x0005 directly!!!
  345.         ex af,af'
  346.        call 0x0005 ;c=CMD
  347.        endm
  348.  
  349.        macro GET_KEY
  350.        rst 0x08 ;out: a=key (NOKEY=no key), de=mouse delta (dy,dx), l=mouse buttons (bits 0,1,2: 0=pressed), h=high bits of key|register, bc=keynolang
  351.        endm
  352.  
  353.        macro PRCHAR
  354.        rst 0x10 ;a=char
  355.        endm
  356.  
  357.        macro SETPG16K
  358.        rst 0x18 ;set page "a" in 0x4000
  359.        endm
  360.        
  361.        macro SETPG32KLOW
  362.        rst 0x20 ;set page "a" in 0x8000
  363.        endm
  364.        
  365.        macro SETPG32KHIGH
  366.        rst 0x28 ;set page "a" in 0xc000
  367.        endm
  368.  
  369.        macro STANDARDPAL
  370.        dw 0xf3f3,0xf2f2,0xf1f1,0xf0f0,0xe3e3,0xe2e2,0xe1e1,0xe0e0
  371.        dw 0xf3f3,0xd2d2,0xb1b1,0x9090,0x6363,0x4242,0x2121,0x0000
  372.        endm
  373.  
  374.