?login_element?

Subversion Repositories NedoOS

Rev

Rev 1768 | Rev 2046 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  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.  
  225.         MODULE SETPG32KHIGH
  226.         PUBLIC SETPG32KHIGH
  227.         #include "sysdefs.asm"
  228.         RSEG CODE
  229. SETPG32KHIGH:
  230.         push bc
  231.         push ix
  232.         push iy
  233.         ld a,e
  234.         rst 0x28
  235.         pop iy
  236.         pop ix
  237.         pop bc
  238.         ret
  239.         ENDMOD
  240.        
  241.         MODULE MAIN_ARGS
  242.         PUBLIC main_args
  243.         RSEG CODE
  244. main_args
  245.         ld hl,args
  246.         ld de,0x0080
  247. get_cmd_args_l2
  248.         ld (hl),e
  249.         inc hl
  250.         ld (hl),d
  251.         inc hl
  252.         dec de
  253. get_cmd_args_l
  254.         inc de
  255.         ld a,(de)
  256.         or a
  257.         jr z,get_cmd_args_end
  258.         cp ' '
  259.         jr nz,get_cmd_args_l
  260.         xor a
  261.         ld (de),a
  262. skipspaces
  263.         inc de
  264.         ld a,(de)
  265.         or a
  266.         jr z,get_cmd_args_end
  267.         cp ' '
  268.         jr nz,get_cmd_args_l2
  269.         jr skipspaces
  270. get_cmd_args_end:
  271.         ld bc,args
  272.         sbc hl,bc
  273.         ex de,hl
  274.         srl e
  275.         ret
  276.         RSEG    NO_INIT
  277. args:
  278.         defs 32
  279.         ENDMOD
  280.  
  281.  
  282.         MODULE OSDROPAPP
  283.         PUBLIC OS_DROPAPP
  284.         #include "sysdefs.asm"
  285.         RSEG CODE
  286. OS_DROPAPP:     ;e=id ; hl=result
  287.         ld c,CMD_DROPAPP
  288.         push ix
  289.         push iy
  290.         call BDOS
  291.         pop iy
  292.         pop ix
  293.         ret
  294.         ENDMOD
  295.  
  296.         MODULE OS_SETGFX
  297.         PUBLIC OS_SETGFX
  298.         #include "sysdefs.asm"
  299.         RSEG CODE
  300. OS_SETGFX:      ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;eF=-1: disable gfx (out: e=old gfxmode)
  301.    push bc
  302.         push hl
  303.         push ix
  304.         push iy
  305.         ld c,CMD_SETGFX
  306.         call BDOS
  307.         pop iy
  308.         pop ix
  309.         pop hl
  310.         pop bc
  311.         ret
  312.         ENDMOD
  313.  
  314.         MODULE OSGETPAGEOWNER   ;e=page ;out: e=owner id (0=free, 0xff=system)
  315.         PUBLIC OS_GETPAGEOWNER
  316.         #include "sysdefs.asm"
  317.         RSEG CODE
  318. OS_GETPAGEOWNER:
  319.    push bc
  320.         ld c,CMD_GETPAGEOWNER
  321.         push de
  322.         push ix
  323.         push iy
  324.         call BDOS
  325.         LD a, e
  326.         pop iy
  327.         pop ix
  328.         pop de
  329.    pop bc
  330.         ret
  331.         ENDMOD
  332.        
  333.         MODULE  my_im2
  334.         PUBLIC  my_im2_init
  335.         RSEG    INTJP
  336.         DEFS 3
  337.         RSEG    INTTABLE
  338.         DEFS 257
  339.         RSEG    CODE
  340. my_im2_init
  341.         di
  342.         ld a,0xc3
  343.         ld (SFB(INTJP)),a
  344.         ld (SFB(INTJP)+1),de
  345.         ld a,HIGH(SFB(INTTABLE))
  346.         ld i,a
  347.         inc a
  348.         ld hl,SFB(INTTABLE)-1
  349. tloop
  350.         inc hl
  351.         ld (hl),HIGH(SFB(INTJP))
  352.         cp h
  353.         jr nz,tloop
  354.         im 2
  355.         ret
  356.         ENDMOD
  357.  
  358. ;Kulich Area
  359.  
  360.         MODULE OS_NEWPAGE       ;out: a=0 (OK)/!=0 (fail), e=page
  361.         PUBLIC OS_NEWPAGE
  362.         #include "sysdefs.asm"
  363.         RSEG CODE
  364. OS_NEWPAGE:
  365.    push bc
  366.         ld c,CMD_NEWPAGE
  367.         push ix
  368.         push iy
  369.         call BDOS
  370.         pop iy
  371.         pop ix
  372.    pop bc
  373.         ld h,a                  ;error
  374.         ld l,e                  ;page
  375.         ret
  376.         ENDMOD
  377.  
  378.  
  379. // DE - старое имя, возможно с полным или относительным путём (ASCIIZ). HL - новое имя, пока что требуется такой же путь, как в DE.
  380. // out HL - указатель на последний элемент пути в этом буфере (NOT MSXDOS compatible! with Drive/path!)
  381.         MODULE OS_RENAME
  382.         PUBLIC OS_RENAME
  383.         #include "sysdefs.asm"
  384.         RSEG CODE
  385. OS_RENAME:
  386. ;           ld de, oldname
  387. ;       ld bc, newname
  388.         ld h,b
  389.         ld l,c
  390.         push ix
  391.         push iy
  392.         ld c,CMD_RENAME
  393.         call BDOS
  394.         pop iy
  395.         pop ix
  396.         ret
  397.         ENDMOD
  398.  
  399. // DE - имя файла, возможно с полным или относительным путём (ASCIIZ).; А - ошибка. Если 0x00, то ошибки нет.                                                                                        
  400.         MODULE OS_DELETE
  401.         PUBLIC OS_DELETE
  402.         #include "sysdefs.asm"
  403.         RSEG CODE
  404. OS_DELETE:
  405.         push bc
  406.         push ix
  407.         push iy
  408.         ld c,CMD_DELETE
  409.         call BDOS
  410.         pop iy
  411.         pop ix
  412.         pop bc
  413.         ld h,0
  414.         ld l,a
  415.         ret
  416.         ENDMOD
  417.  
  418.  
  419.  
  420.  
  421.  
  422.         MODULE OS_READSECTORS   ;de= pointer to diskOp structure
  423.         PUBLIC OS_READSECTORS
  424.         #include "sysdefs.asm"
  425.         RSEG CODE
  426. OS_READSECTORS:
  427.         push bc
  428.         push de
  429.         push ix
  430.         push iy
  431.  
  432.         ex de,hl
  433.         ld b,(hl)       ;drive
  434.         inc l
  435.         ld e,(hl)       ;buffer L
  436.         inc l
  437.         ld d,(hl)       ;buffer H
  438.         inc l
  439.         push de
  440.         ld e,(hl)       ;sector L
  441.         inc l
  442.         ld d,(hl)       ;sector H
  443.         inc l
  444.         ld  a,(hl)      ;sector X
  445.         ld  ixl,a
  446.         inc l
  447.         ld  a,(hl)      ;sector I
  448.         ld  ixh,a
  449.         inc l
  450.         ld  a,(hl)      ;count
  451.         pop hl
  452.         ex de,hl
  453.         ld c,CMD_READSECTORS
  454.         ex af,af' ;'
  455.     call BDOS ;c=CMD
  456.         pop iy
  457.         pop ix
  458.         pop de
  459.         pop bc
  460.         ret             ;BCHL
  461.         ENDMOD 
  462.        
  463.         MODULE OS_WRITESECTORS  ;de= pointer to diskOp structure
  464.         PUBLIC OS_WRITESECTORS
  465.         #include "sysdefs.asm"
  466.         RSEG CODE
  467. OS_WRITESECTORS:
  468.         push bc
  469.         push de
  470.         push ix
  471.         push iy
  472.  
  473.         ex de,hl
  474.         ld b,(hl)       ;drive
  475.         inc l
  476.         ld e,(hl)       ;buffer L
  477.         inc l
  478.         ld d,(hl)       ;buffer H
  479.         inc l
  480.         push de
  481.         ld e,(hl)       ;sector L
  482.         inc l
  483.         ld d,(hl)       ;sector H
  484.         inc l
  485.         ld  a,(hl)      ;sector X
  486.         ld  ixl,a
  487.         inc l
  488.         ld  a,(hl)      ;sector I
  489.         ld  ixh,a
  490.         inc l
  491.         ld  a,(hl)      ;count
  492.         pop hl
  493.         ex de,hl
  494.         ld c,CMD_WRITESECTORS
  495.         ex af,af' ;'
  496.     call BDOS ;c=CMD
  497.         pop iy
  498.         pop ix
  499.         pop de
  500.         pop bc
  501.         ret             ;BCHL  
  502.         ENDMOD
  503.  
  504.         MODULE OS_GETPATH
  505.         PUBLIC OS_GETPATH
  506.         #include "sysdefs.asm"
  507.         RSEG CODE
  508. OS_GETPATH:
  509.         push bc
  510.         push ix
  511.         push iy
  512.         ld c,CMD_GETPATH
  513.         call BDOS
  514.         pop iy
  515.         pop ix
  516.         pop bc
  517.         ld hl,0
  518.         ret
  519.         ENDMOD
  520.  
  521.         MODULE OS_SETSYSDRV                    
  522.         PUBLIC OS_SETSYSDRV                    
  523.         #include "sysdefs.asm"
  524.         RSEG CODE      
  525. OS_SETSYSDRV
  526.         push bc
  527.         push de
  528.         push ix
  529.         push iy
  530.         ld c,CMD_SETSYSDRV                      ; out: A: A!=0 -- системный диск не примонтирован. L: -- общее количество примонтированных дисков.
  531.         call BDOS
  532.         pop iy
  533.         pop ix
  534.         pop de
  535.         pop bc
  536.         ld h,a                                          ;h = error l = No of disks
  537.         ret
  538.         ENDMOD
  539.  
  540.         MODULE OS_CHDIR
  541.         PUBLIC OS_CHDIR
  542.         #include "sysdefs.asm"
  543.         RSEG CODE
  544. OS_CHDIR:
  545.         push bc
  546.         push ix
  547.         push iy
  548.         ld c,CMD_CHDIR                          ;DE = Pointer to ASCIIZ string. Out A=error
  549.         call BDOS
  550.         pop iy
  551.         pop ix
  552.         pop bc
  553.         ld l,0
  554.         ld h,a                                          ;h = error
  555.         ret
  556.         ENDMOD
  557.  
  558.  
  559.         MODULE OS_NEWAPP
  560.         PUBLIC OS_NEWAPP
  561.         #include "sysdefs.asm"
  562.         RSEG CODE
  563. OS_NEWAPP:
  564.         push bc
  565.         ld (strPtr), de
  566.         push ix
  567.         push iy
  568.         ld c,CMD_NEWAPP                         ;out: b=id, a=error, dehl=newapp pages in 0000,4000,8000,c000 ;MAKE NEW DISABLED APP
  569.         call BDOS
  570.         pop iy
  571.         pop ix
  572.         ld c,a
  573.         push hl
  574.         ld hl,(strPtr)
  575.         ld (hl),d
  576.         inc hl
  577.         ld (hl),e
  578.         pop hl
  579.         ex de,hl
  580.         ld hl,(strPtr)
  581.         inc hl
  582.         inc hl
  583.         ld (hl),d
  584.         inc hl
  585.         ld (hl),e
  586.         inc hl
  587.         ld (hl),b
  588.         inc hl
  589.         ld (hl),c
  590.         pop bc
  591.         ret
  592. strPtr
  593.         DEFW 0000
  594.         ENDMOD
  595.  
  596.         MODULE OS_RUNAPP
  597.         PUBLIC OS_RUNAPP
  598.         #include "sysdefs.asm"
  599.         RSEG CODE
  600. OS_RUNAPP:     
  601.         push hl
  602.         push bc
  603.         push ix
  604.         push iy
  605.         ld c,CMD_RUNAPP ;e=id ;ACTIVATE DISABLED APP
  606.         call BDOS
  607.         pop iy
  608.         pop ix
  609.     pop bc
  610.         pop hl
  611.         ret
  612.         ENDMOD
  613.  
  614.         MODULE OS_WAITPID
  615.         PUBLIC OS_WAITPID
  616.         #include "sysdefs.asm"
  617.         RSEG CODE
  618. OS_WAITPID:
  619.         push bc
  620.         push ix
  621.         push iy
  622.     ld c,CMD_SETWAITING
  623.         call BDOS
  624.         ld c,CMD_YIELD
  625.         call BDOS
  626.         ld c,CMD_GETCHILDRESULT
  627.         call BDOS
  628.         pop iy
  629.         pop ix
  630.         pop bc
  631.         ret
  632.         ENDMOD
  633.  
  634.  
  635.  
  636.  
  637.         MODULE OS_HIDEFROMPARENT
  638.         PUBLIC OS_HIDEFROMPARENT
  639.         #include "sysdefs.asm"
  640.         RSEG CODE
  641. OS_HIDEFROMPARENT:     
  642.         push bc
  643.         push ix
  644.         push iy
  645.         ld c,CMD_HIDEFROMPARENT
  646.         call BDOS
  647.         pop iy
  648.         pop ix
  649.     pop bc
  650.         ret
  651.         ENDMOD
  652.  
  653.         MODULE OS_CLS
  654.         PUBLIC OS_CLS
  655.         #include "sysdefs.asm"
  656.         RSEG CODE
  657. OS_CLS:
  658.         push bc
  659.         push hl
  660.         push ix
  661.         push iy
  662.         ld c,CMD_CLS
  663.         call BDOS
  664.         pop iy
  665.         pop ix
  666.         pop bc
  667.         pop hl
  668.         ret
  669. //      ENDMOD
  670.  
  671.         END
  672.