Subversion Repositories NedoOS

Rev

Rev 2292 | Blame | Compare with Previous | Last modification | View Log | Download

  1.  
  2.     MODULE TIME
  3.     PUBLIC time
  4.         #include "sysdefs.asm"
  5.         RSEG CODE
  6. time:
  7.         push ix
  8.         push iy
  9.     ld c,CMD_GETTIMER ;out: dehl=timer
  10.         call BDOS
  11.         ld b,d
  12.         ld c,e
  13.         pop iy
  14.         pop ix
  15.         ret ;return bchl
  16.         ENDMOD
  17.  
  18.  
  19. ;unsigned long OS_GETTIME (struct diskOp *); //out: ix=date, hl=time
  20.  
  21.  
  22.     MODULE OS_GETTIME
  23.     PUBLIC OS_GETTIME
  24.         #include "sysdefs.asm"
  25.         RSEG CODE
  26. OS_GETTIME:
  27.     push ix
  28.     push iy
  29.     ld c,CMD_GETTIME ;out: ix=date, hl=time
  30.         call BDOS
  31.         di
  32.         push ix
  33.         pop bc
  34.         ei
  35.         pop iy
  36.     pop ix
  37.     ret ;return bchl
  38.         ENDMOD
  39.  
  40.         MODULE ERRNOMOD
  41.         PUBLIC errno
  42.         RSEG    NO_INIT
  43. errno:
  44.         defs 1
  45.         ENDMOD
  46.        
  47.         MODULE MYGETCHAR
  48.         PUBLIC getchar
  49.         EXTERN _low_level_get
  50.         RSEG CODE
  51. getchar:
  52.         call _low_level_get
  53.         or a
  54.         jr z,getchar
  55.         ld l,a
  56.         ld h,0
  57.         ret    
  58.         ENDMOD
  59.        
  60.         MODULE OS_RESERV_1
  61.         PUBLIC os_reserv_1
  62.         #include "sysdefs.asm"
  63.         RSEG CODE
  64. os_reserv_1:
  65.         push bc
  66.         push ix
  67.         push iy
  68.     ld c,CMD_RESERV_1
  69.         call BDOS
  70.         pop iy
  71.         pop ix
  72.         pop bc
  73.         ret    
  74.         ENDMOD
  75.        
  76.         MODULE SCRREDRAW
  77.         PUBLIC scrredraw
  78.         RSEG CODE
  79. scrredraw:
  80.         xor a
  81.         ret    
  82.         ENDMOD
  83.  
  84.         MODULE OSLOWGET
  85.         PUBLIC bdosgetkey
  86.         EXTERN scrredraw,exit,YIELD
  87.         #include "sysdefs.asm"
  88.         RSEG CODE
  89. bdosgetkey:
  90.         push de
  91.         push bc
  92.         push ix
  93.         push iy
  94.         ld c,CMD_YIELD
  95.         call BDOS
  96.         rst 0x08
  97.         cp key_esc
  98.         jp z,exit
  99.         cp key_redraw
  100.         call z,scrredraw
  101.         ld l,a
  102.         ld h,0
  103.         pop iy
  104.         pop ix
  105.         pop bc
  106.         pop de
  107.         ret
  108.         ENDMOD
  109.    
  110.         MODULE conv1251to866
  111.         PUBLIC conv1251to866, t1251to866
  112.         RSEG CODE
  113. conv1251to866:  ;DE-string
  114.         push de
  115. ploop:
  116.         ld a,(de)
  117.         or a
  118.         jr z,pexit
  119.         cp 128
  120.         jr c,asci
  121.         add a,low(t1251to866-128)
  122.         ld l,a
  123.         ld a,0
  124.         adc a,high(t1251to866-128)
  125.         ld h,a
  126.         ld a,(hl)
  127.         ld (de),a
  128. asci:
  129.         inc de
  130.         jr ploop
  131. pexit:
  132.         pop de
  133.         ret
  134.         RSEG    CONST
  135. t1251to866:
  136.         DEFB 0x3F, 0x3F, 0x27, 0x3F, 0x22, 0x3A, 0xC5, 0xD8, 0x3F, 0x25, 0x3F, 0x3C, 0x3F, 0x3F, 0x3F, 0x3F
  137.         DEFB 0x30, 0x3F, 0x27, 0x27, 0x22, 0x22, 0x07, 0x2D, 0x2D, 0x54, 0x3F, 0x3E, 0x3F, 0x3F, 0x3F, 0x3F
  138.         DEFB 0xFF, 0xF6, 0xF7, 0x3F, 0xFD, 0x3F, 0xB3, 0x15, 0xF0, 0x63, 0xF2, 0x3C, 0xBF, 0x2D, 0x52, 0xF4
  139.         DEFB 0xF8, 0x2B, 0x3F, 0x3F, 0x3F, 0xE7, 0x14, 0xFA, 0xF1, 0xFC, 0xF3, 0x3E, 0x3F, 0x3F, 0x3F, 0xF5
  140.         DEFB 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F
  141.         DEFB 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F
  142.         DEFB 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF
  143.         DEFB 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF
  144.         ENDMOD
  145.        
  146.         MODULE YIELD
  147.         PUBLIC YIELD
  148.         #include "sysdefs.asm"
  149.         RSEG CODE
  150. YIELD:
  151.         push bc
  152.         push de
  153.         push ix
  154.         push iy
  155.         ld c,CMD_YIELD
  156.         call BDOS
  157.         pop iy
  158.         pop ix
  159.         pop de
  160.         pop bc
  161.         ret
  162.         ENDMOD
  163.        
  164.         MODULE SETMUSIC
  165.         PUBLIC OS_SETMUSIC
  166.         #include "sysdefs.asm"
  167.         RSEG CODE
  168. OS_SETMUSIC:    ;DE - proc_ptr, A - ?
  169.         ld h,d
  170.         ld l,e
  171.         ld a,c
  172.     ex af,af'
  173.         push ix
  174.         push iy
  175.         ld c,CMD_SETMUSIC       ;hl=muzaddr (0x4000..0x7fff), a=muzpg
  176.         call BDOS
  177.         pop iy
  178.         pop ix
  179.         ret
  180.         ENDMOD
  181.        
  182.         MODULE OSGETCONFIG
  183.         PUBLIC OS_GETCONFIG
  184.         #include "sysdefs.asm"
  185.         RSEG CODE
  186. OS_GETCONFIG:
  187.    push bc
  188.         ld c,CMD_GETCONFIG
  189.         push de
  190.         push ix
  191.         push iy
  192.         call BDOS
  193.         pop iy
  194.         pop ix
  195.         pop de
  196.    pop bc
  197.         ret
  198.         ENDMOD
  199.  
  200.         MODULE GETMAINPAGES
  201.         PUBLIC OS_GETMAINPAGES,OS_GETAPPMAINPAGES
  202.    EXTERN errno
  203.         #include "sysdefs.asm"
  204.         RSEG CODE
  205. OS_GETAPPMAINPAGES:
  206.    ld c,CMD_GETAPPMAINPAGES
  207.    jr l1
  208. OS_GETMAINPAGES:
  209.         ld c,CMD_GETMAINPAGES
  210. l1
  211.         push de
  212.         push ix
  213.         push iy
  214.         call BDOS
  215.         ld b,d ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags, a=error
  216.         ld c,e
  217.         pop iy
  218.         pop ix
  219.         pop de
  220.         LD (errno), a
  221.         ret
  222.         ENDMOD
  223.  
  224.         MODULE SETPG32KHIGH
  225.         PUBLIC SETPG32KHIGH
  226.         #include "sysdefs.asm"
  227.         RSEG CODE
  228. SETPG32KHIGH:
  229.         push bc
  230.         push ix
  231.         push iy
  232.         ld a,e
  233.         rst 0x28
  234.         pop iy
  235.         pop ix
  236.         pop bc
  237.         ret
  238.         ENDMOD
  239.  
  240.         MODULE OS_SETSCREEN
  241.         PUBLIC OS_SETSCREEN
  242.         #include "sysdefs.asm"
  243.         RSEG CODE
  244. OS_SETSCREEN:
  245.   ;halt
  246.         push bc
  247.         push hl
  248.         push ix
  249.         push iy
  250.         ld c,CMD_SETSCREEN       ;e=screen=0..1
  251.         call BDOS
  252.         pop iy
  253.         pop ix
  254.         pop hl
  255.         pop bc
  256.         ret
  257.         ENDMOD
  258.  
  259.         MODULE OS_SETPG8000
  260.         PUBLIC OS_SETPG8000
  261.         #include "sysdefs.asm"
  262.         RSEG CODE
  263. OS_SETPG8000:
  264.         push bc
  265.         push ix
  266.         push iy
  267.         ld a,e
  268.         rst 0x20
  269.         pop iy
  270.         pop ix
  271.         pop bc
  272.         ret
  273.         ENDMOD
  274.  
  275.         MODULE MAIN_ARGS
  276.         PUBLIC main_args
  277.         RSEG CODE
  278. main_args
  279.         ld hl,args
  280.         ld de,0x0080
  281. get_cmd_args_l2
  282.         ld (hl),e
  283.         inc hl
  284.         ld (hl),d
  285.         inc hl
  286.         dec de
  287. get_cmd_args_l
  288.         inc de
  289.         ld a,(de)
  290.         or a
  291.         jr z,get_cmd_args_end
  292.         cp ' '
  293.         jr nz,get_cmd_args_l
  294.         xor a
  295.         ld (de),a
  296. skipspaces
  297.         inc de
  298.         ld a,(de)
  299.         or a
  300.         jr z,get_cmd_args_end
  301.         cp ' '
  302.         jr nz,get_cmd_args_l2
  303.         jr skipspaces
  304. get_cmd_args_end:
  305.         ld bc,args
  306.         sbc hl,bc
  307.         ex de,hl
  308.         srl e
  309.         ret
  310.         RSEG    NO_INIT
  311. args:
  312.         defs 32
  313.         ENDMOD
  314.  
  315.  
  316.         MODULE OSDROPAPP
  317.         PUBLIC OS_DROPAPP
  318.         #include "sysdefs.asm"
  319.         RSEG CODE
  320. OS_DROPAPP:     ;e=id ; hl=result
  321.         ld c,CMD_DROPAPP
  322.         push ix
  323.         push iy
  324.         call BDOS
  325.         pop iy
  326.         pop ix
  327.         ret
  328.         ENDMOD
  329.  
  330.         MODULE OS_SETGFX
  331.         PUBLIC OS_SETGFX
  332.         #include "sysdefs.asm"
  333.         RSEG CODE
  334. OS_SETGFX:      ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  335.         push bc
  336.         push hl
  337.         push ix
  338.         push iy
  339.         ld c,CMD_SETGFX
  340.         halt
  341.         call BDOS
  342.         pop iy
  343.         pop ix
  344.         pop hl
  345.         pop bc
  346.         ld a, e
  347.         ret
  348.         ENDMOD
  349.  
  350.         MODULE OSGETPAGEOWNER   ;e=page ;out: e=owner id (0=free, 0xff=system)
  351.         PUBLIC OS_GETPAGEOWNER
  352.         #include "sysdefs.asm"
  353.         RSEG CODE
  354. OS_GETPAGEOWNER:
  355.    push bc
  356.         push ix
  357.         push iy
  358.         ld c,CMD_GETPAGEOWNER
  359.         call BDOS
  360.         LD a, e
  361.         pop iy
  362.         pop ix
  363.    pop bc
  364.         ret
  365.         ENDMOD
  366.        
  367.         MODULE  my_im2
  368.         PUBLIC  my_im2_init
  369.         RSEG    INTJP
  370.         DEFS 3
  371.         RSEG    INTTABLE
  372.         DEFS 257
  373.         RSEG    CODE
  374. my_im2_init
  375.         di
  376.         ld a,0xc3
  377.         ld (SFB(INTJP)),a
  378.         ld (SFB(INTJP)+1),de
  379.         ld a,HIGH(SFB(INTTABLE))
  380.         ld i,a
  381.         inc a
  382.         ld hl,SFB(INTTABLE)-1
  383. tloop
  384.         inc hl
  385.         ld (hl),HIGH(SFB(INTJP))
  386.         cp h
  387.         jr nz,tloop
  388.         im 2
  389.         ret
  390.         ENDMOD
  391.  
  392. ;Kulich Area
  393.  
  394.         MODULE OS_NEWPAGE       ;out: a=0 (OK)/!=0 (fail), e=page
  395.         PUBLIC OS_NEWPAGE
  396.         #include "sysdefs.asm"
  397.         RSEG CODE
  398. OS_NEWPAGE:
  399.    push bc
  400.         ld c,CMD_NEWPAGE
  401.         push ix
  402.         push iy
  403.         call BDOS
  404.         pop iy
  405.         pop ix
  406.    pop bc
  407.         ld h,a                  ;error
  408.         ld l,e                  ;page
  409.         ret
  410.         ENDMOD
  411.  
  412.         MODULE OS_DELPAGE       ;out: a=0 (OK)/!=0 (fail), e=page
  413.         PUBLIC OS_DELPAGE
  414.         #include "sysdefs.asm"
  415.         RSEG CODE
  416. OS_DELPAGE:
  417.    push bc
  418.         push hl
  419.         ld c,CMD_DELPAGE
  420.         push ix
  421.         push iy
  422.         call BDOS
  423.         pop iy
  424.         pop ix
  425.    pop hl
  426.         pop bc
  427.         ret
  428.         ENDMOD
  429.  
  430.         MODULE OS_GETSCR0      
  431.         PUBLIC OS_GETSCR0
  432.         #include "sysdefs.asm"
  433.         RSEG CODE
  434. OS_GETSCR0:
  435.        
  436.        
  437.         ld a,(user_scr0_high)
  438.         ld h,a
  439.         ld a,(user_scr0_low)
  440.         ld l, a
  441.         ret
  442.         ENDMOD
  443.  
  444.         MODULE OS_GETSCR1      
  445.         PUBLIC OS_GETSCR1
  446.         #include "sysdefs.asm"
  447.         RSEG CODE
  448. OS_GETSCR1:
  449.         ld a,(user_scr1_high)
  450.         ld h,a
  451.         ld a,(user_scr1_low)
  452.         ld l,a
  453.         ret
  454.         ENDMOD
  455.  
  456.         MODULE OS_RENAME
  457.         PUBLIC OS_RENAME
  458.         #include "sysdefs.asm"
  459.         RSEG CODE
  460. OS_RENAME:
  461. ;           ld de, oldname
  462. ;       ld bc, newname
  463.         ld h,b
  464.         ld l,c
  465.         push ix
  466.         push iy
  467.         ld c,CMD_RENAME
  468.         call BDOS
  469.         pop iy
  470.         pop ix
  471.         ret
  472.         ENDMOD
  473.  
  474.         MODULE OS_SETBORDER    
  475.         PUBLIC OS_SETBORDER
  476.         #include "sysdefs.asm"
  477.         RSEG CODE
  478. OS_SETBORDER:
  479.         push bc
  480.         push hl
  481.         push ix
  482.         push iy
  483.    ld c,CMD_SETBORDER ;e=0..15
  484.         call BDOS
  485.         pop iy
  486.         pop ix
  487.         pop hl
  488.         pop bc
  489.         ret
  490.         ENDMOD
  491.  
  492.         MODULE OS_DELETE
  493.         PUBLIC OS_DELETE
  494.         #include "sysdefs.asm"
  495.         RSEG CODE
  496. OS_DELETE:
  497.         push bc
  498.         push ix
  499.         push iy
  500.         ld c,CMD_DELETE
  501.         call BDOS
  502.         pop iy
  503.         pop ix
  504.         pop bc
  505.         ld h,0
  506.         ld l,a
  507.         ret
  508.         ENDMOD
  509.  
  510.  
  511.  
  512.  
  513.  
  514.         MODULE OS_READSECTORS   ;de= pointer to diskOp structure
  515.         PUBLIC OS_READSECTORS
  516.         #include "sysdefs.asm"
  517.         RSEG CODE
  518. OS_READSECTORS:
  519.         push bc
  520.         push de
  521.         push ix
  522.         push iy
  523.  
  524.         ex de,hl
  525.         ld b,(hl)       ;drive
  526.         inc l
  527.         ld e,(hl)       ;buffer L
  528.         inc l
  529.         ld d,(hl)       ;buffer H
  530.         inc l
  531.         push de
  532.         ld e,(hl)       ;sector L
  533.         inc l
  534.         ld d,(hl)       ;sector H
  535.         inc l
  536.         ld  a,(hl)      ;sector X
  537.         ld  ixl,a
  538.         inc l
  539.         ld  a,(hl)      ;sector I
  540.         ld  ixh,a
  541.         inc l
  542.         ld  a,(hl)      ;count
  543.         pop hl
  544.         ex de,hl
  545.         ld c,CMD_READSECTORS
  546.         ex af,af' ;'
  547.     call BDOS ;c=CMD
  548.         pop iy
  549.         pop ix
  550.         pop de
  551.         pop bc
  552.         ret             ;BCHL
  553.         ENDMOD 
  554.        
  555.         MODULE OS_WRITESECTORS  ;de= pointer to diskOp structure
  556.         PUBLIC OS_WRITESECTORS
  557.         #include "sysdefs.asm"
  558.         RSEG CODE
  559. OS_WRITESECTORS:
  560.         push bc
  561.         push de
  562.         push ix
  563.         push iy
  564.  
  565.         ex de,hl
  566.         ld b,(hl)       ;drive
  567.         inc l
  568.         ld e,(hl)       ;buffer L
  569.         inc l
  570.         ld d,(hl)       ;buffer H
  571.         inc l
  572.         push de
  573.         ld e,(hl)       ;sector L
  574.         inc l
  575.         ld d,(hl)       ;sector H
  576.         inc l
  577.         ld  a,(hl)      ;sector X
  578.         ld  ixl,a
  579.         inc l
  580.         ld  a,(hl)      ;sector I
  581.         ld  ixh,a
  582.         inc l
  583.         ld  a,(hl)      ;count
  584.         pop hl
  585.         ex de,hl
  586.         ld c,CMD_WRITESECTORS
  587.         ex af,af' ;'
  588.     call BDOS ;c=CMD
  589.         pop iy
  590.         pop ix
  591.         pop de
  592.         pop bc
  593.         ret             ;BCHL  
  594.         ENDMOD
  595.  
  596.         MODULE OS_GETPATH
  597.         PUBLIC OS_GETPATH
  598.         #include "sysdefs.asm"
  599.         RSEG CODE
  600. OS_GETPATH:
  601.         push bc
  602.         push ix
  603.         push iy
  604.         ld c,CMD_GETPATH
  605.         call BDOS
  606.         pop iy
  607.         pop ix
  608.         pop bc
  609.         ld hl,0
  610.         ret
  611.         ENDMOD
  612.  
  613.         MODULE OS_SETSYSDRV                    
  614.         PUBLIC OS_SETSYSDRV                    
  615.         #include "sysdefs.asm"
  616.         RSEG CODE      
  617. OS_SETSYSDRV
  618.         push bc
  619.         push de
  620.         push ix
  621.         push iy
  622.         ld c,CMD_SETSYSDRV                      ; out: A: A!=0 -- системный диск не примонтирован. L: -- общее количество примонтированных дисков.
  623.         call BDOS
  624.         pop iy
  625.         pop ix
  626.         pop de
  627.         pop bc
  628.         ld h,a                                          ;h = error l = No of disks
  629.         ret
  630.         ENDMOD
  631.  
  632.         MODULE OS_CHDIR
  633.         PUBLIC OS_CHDIR
  634.         #include "sysdefs.asm"
  635.         RSEG CODE
  636. OS_CHDIR:
  637.         push bc
  638.         push ix
  639.         push iy
  640.         ld c,CMD_CHDIR                          ;DE = Pointer to ASCIIZ string. Out A=error
  641.         call BDOS
  642.         pop iy
  643.         pop ix
  644.         pop bc
  645.         ld l,0
  646.         ld h,a                                          ;h = error
  647.         ret
  648.         ENDMOD
  649.  
  650.  
  651.         MODULE OS_NEWAPP
  652.         PUBLIC OS_NEWAPP
  653.         #include "sysdefs.asm"
  654.         RSEG CODE
  655. OS_NEWAPP:
  656.         push bc
  657.         ld (strPtr), de
  658.         push ix
  659.         push iy
  660.         ld c,CMD_NEWAPP                         ;out: b=id, a=error, dehl=newapp pages in 0000,4000,8000,c000 ;MAKE NEW DISABLED APP
  661.         call BDOS
  662.         pop iy
  663.         pop ix
  664.         ld c,a
  665.         push hl
  666.         ld hl,(strPtr)
  667.         ld (hl),d
  668.         inc hl
  669.         ld (hl),e
  670.         pop hl
  671.         ex de,hl
  672.         ld hl,(strPtr)
  673.         inc hl
  674.         inc hl
  675.         ld (hl),d
  676.         inc hl
  677.         ld (hl),e
  678.         inc hl
  679.         ld (hl),b
  680.         inc hl
  681.         ld (hl),c
  682.         pop bc
  683.         ret
  684. strPtr
  685.         DEFW 0000
  686.         ENDMOD
  687.  
  688.         MODULE OS_RUNAPP
  689.         PUBLIC OS_RUNAPP
  690.         #include "sysdefs.asm"
  691.         RSEG CODE
  692. OS_RUNAPP:     
  693.         push hl
  694.         push bc
  695.         push ix
  696.         push iy
  697.         ld c,CMD_RUNAPP ;e=id ;ACTIVATE DISABLED APP
  698.         call BDOS
  699.         pop iy
  700.         pop ix
  701.     pop bc
  702.         pop hl
  703.         ret
  704.         ENDMOD
  705.  
  706.         MODULE OS_WAITPID
  707.         PUBLIC OS_WAITPID
  708.         #include "sysdefs.asm"
  709.         RSEG CODE
  710. OS_WAITPID:
  711.         push bc
  712.         push ix
  713.         push iy
  714.     ld c,CMD_SETWAITING
  715.         call BDOS
  716.         ld c,CMD_YIELD
  717.         call BDOS
  718.         ld c,CMD_GETCHILDRESULT
  719.         call BDOS
  720.         pop iy
  721.         pop ix
  722.         pop bc
  723.         ret
  724.         ENDMOD
  725.  
  726.  
  727.  
  728.  
  729.         MODULE OS_HIDEFROMPARENT
  730.         PUBLIC OS_HIDEFROMPARENT
  731.         #include "sysdefs.asm"
  732.         RSEG CODE
  733. OS_HIDEFROMPARENT:     
  734.         push bc
  735.         push ix
  736.         push iy
  737.         ld c,CMD_HIDEFROMPARENT
  738.         call BDOS
  739.         pop iy
  740.         pop ix
  741.     pop bc
  742.         ret
  743.         ENDMOD
  744.  
  745.         MODULE OS_CLS
  746.         PUBLIC OS_CLS
  747.         #include "sysdefs.asm"
  748.         RSEG CODE
  749. OS_CLS:
  750.         push bc
  751.         push hl
  752.         push ix
  753.         push iy
  754.         ld c,CMD_CLS
  755.         call BDOS
  756.         pop iy
  757.         pop ix
  758.         pop bc
  759.         pop hl
  760.         ret
  761.         ENDMOD
  762.  
  763.  
  764.  
  765.         MODULE OS_GETKEY
  766.         PUBLIC OS_GETKEY
  767.         RSEG CODE
  768. OS_GETKEY:
  769.         push ix
  770.         push iy
  771.     rst 0x08    ;out: a=key (NOKEY=no key), de=mouse position (y,x), l=mouse buttons (bits 0,1,2: 0=pressed)+mouse wheel (bits 7..4), h=high bits of key|register, bc=keynolang, lx=kempston joystick, nz=no focus (mouse position=0, ignore it!)
  772.         pop iy
  773.         pop ix
  774.         ld l,a
  775.         ld h,c
  776.         ld bc,0x8000
  777.         jp nz, focusFalse
  778.         ld bc,0x0000
  779.         focusFalse:
  780.         ret
  781.         ENDMOD
  782.  
  783.         MODULE OS_GETMOUSE
  784.         PUBLIC OS_GETMOUSE
  785.         RSEG CODE
  786. OS_GETMOUSE:
  787.         push ix
  788.         push iy
  789.     rst 0x08    ;out: a=key (NOKEY=no key), de=mouse position (y,x), l=mouse buttons (bits 0,1,2: 0=pressed)+mouse wheel (bits 7..4), h=high bits of key|register, bc=keynolang, lx=kempston joystick, nz=no focus (mouse position=0, ignore it!)
  790.         pop iy
  791.         pop ix
  792.         ld h,c
  793.         ld b,d
  794.         ld c,e
  795.         ret
  796.         ENDMOD
  797.  
  798.         MODULE OS_SETCOLOR
  799.         PUBLIC OS_SETCOLOR
  800.         #include "sysdefs.asm"
  801.         RSEG CODE
  802. OS_SETCOLOR
  803.         push bc
  804.         push hl
  805.         push ix
  806.         push iy
  807.     ld c,CMD_SETCOLOR
  808.         call BDOS
  809.         pop iy
  810.         pop ix
  811.         pop bc
  812.         pop hl
  813.         ret
  814.         ENDMOD
  815.  
  816.         MODULE OS_DIHALT
  817.         PUBLIC OS_DIHALT
  818.         RSEG CODE
  819. OS_DIHALT:
  820.         DI
  821.         HALT
  822.         ret
  823.         //ENDMOD
  824.         END
  825.