?login_element?

Subversion Repositories NedoOS

Rev

Rev 1464 | Rev 1679 | 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.         MODULE ERRNOMOD
  19.         PUBLIC errno
  20.         RSEG    NO_INIT
  21. errno:
  22.         defs 1
  23.         ENDMOD
  24.        
  25.         MODULE MYGETCHAR
  26.         PUBLIC getchar
  27.         EXTERN _low_level_get
  28.         RSEG CODE
  29. getchar:
  30.         call _low_level_get
  31.         or a
  32.         jr z,getchar
  33.         ld l,a
  34.         ld h,0
  35.         ret    
  36.         ENDMOD
  37.        
  38.         MODULE OS_RESERV_1
  39.         PUBLIC os_reserv_1
  40.         #include "sysdefs.asm"
  41.         RSEG CODE
  42. os_reserv_1:
  43.         push bc
  44.         push ix
  45.         push iy
  46.     ld c,CMD_RESERV_1
  47.         call BDOS
  48.         pop iy
  49.         pop ix
  50.         pop bc
  51.         ret    
  52.         ENDMOD
  53.        
  54.         MODULE SCRREDRAW
  55.         PUBLIC scrredraw
  56.         RSEG CODE
  57. scrredraw:
  58.         xor a
  59.         ret    
  60.         ENDMOD
  61.  
  62.         MODULE OSLOWGET
  63.         PUBLIC bdosgetkey
  64.         EXTERN scrredraw,exit,YIELD
  65.         #include "sysdefs.asm"
  66.         RSEG CODE
  67. bdosgetkey:
  68.         push de
  69.         push bc
  70.         push ix
  71.         push iy
  72.         ld c,CMD_YIELD
  73.         call BDOS
  74.         rst 0x08
  75.         cp key_esc
  76.         jp z,exit
  77.         cp key_redraw
  78.         call z,scrredraw
  79.         ld l,a
  80.         ld h,0
  81.         pop iy
  82.         pop ix
  83.         pop bc
  84.         pop de
  85.         ret
  86.         ENDMOD
  87.    
  88.         MODULE conv1251to866
  89.         PUBLIC conv1251to866, t1251to866
  90.         RSEG CODE
  91. conv1251to866:  ;DE-string
  92.         push de
  93. ploop:
  94.         ld a,(de)
  95.         or a
  96.         jr z,pexit
  97.         cp 128
  98.         jr c,asci
  99.         add a,low(t1251to866-128)
  100.         ld l,a
  101.         ld a,0
  102.         adc a,high(t1251to866-128)
  103.         ld h,a
  104.         ld a,(hl)
  105.         ld (de),a
  106. asci:
  107.         inc de
  108.         jr ploop
  109. pexit:
  110.         pop de
  111.         ret
  112.         RSEG    CONST
  113. t1251to866:
  114.         DEFB 0x3F, 0x3F, 0x27, 0x3F, 0x22, 0x3A, 0xC5, 0xD8, 0x3F, 0x25, 0x3F, 0x3C, 0x3F, 0x3F, 0x3F, 0x3F
  115.         DEFB 0x30, 0x3F, 0x27, 0x27, 0x22, 0x22, 0x07, 0x2D, 0x2D, 0x54, 0x3F, 0x3E, 0x3F, 0x3F, 0x3F, 0x3F
  116.         DEFB 0xFF, 0xF6, 0xF7, 0x3F, 0xFD, 0x3F, 0xB3, 0x15, 0xF0, 0x63, 0xF2, 0x3C, 0xBF, 0x2D, 0x52, 0xF4
  117.         DEFB 0xF8, 0x2B, 0x3F, 0x3F, 0x3F, 0xE7, 0x14, 0xFA, 0xF1, 0xFC, 0xF3, 0x3E, 0x3F, 0x3F, 0x3F, 0xF5
  118.         DEFB 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F
  119.         DEFB 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F
  120.         DEFB 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF
  121.         DEFB 0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xEB, 0xEC, 0xED, 0xEE, 0xEF
  122.         ENDMOD
  123.        
  124.         MODULE YIELD
  125.         PUBLIC YIELD
  126.         #include "sysdefs.asm"
  127.         RSEG CODE
  128. YIELD:
  129.         push bc
  130.         push de
  131.         push ix
  132.         push iy
  133.         ld c,CMD_YIELD
  134.         call BDOS
  135.         pop iy
  136.         pop ix
  137.         pop de
  138.         pop bc
  139.         ret
  140.         ENDMOD
  141.        
  142.         MODULE SETMUSIC
  143.         PUBLIC OS_SETMUSIC
  144.         #include "sysdefs.asm"
  145.         RSEG CODE
  146. OS_SETMUSIC:    ;DE - proc_ptr, A - ?
  147.         ld h,d
  148.         ld l,e
  149.         ld a,c
  150.     ex af,af'
  151.         push ix
  152.         push iy
  153.         ld c,CMD_SETMUSIC       ;hl=muzaddr (0x4000..0x7fff), a=muzpg
  154.         call BDOS
  155.         pop iy
  156.         pop ix
  157.         ret
  158.         ENDMOD
  159.        
  160.         MODULE OSGETCONFIG
  161.         PUBLIC OS_GETCONFIG
  162.         #include "sysdefs.asm"
  163.         RSEG CODE
  164. OS_GETCONFIG:
  165.    push bc
  166.         ld c,CMD_GETCONFIG
  167.         push de
  168.         push ix
  169.         push iy
  170.         call BDOS
  171.         pop iy
  172.         pop ix
  173.         pop de
  174.    pop bc
  175.         ret
  176.         ENDMOD
  177.  
  178.         MODULE GETMAINPAGES
  179.         PUBLIC OS_GETMAINPAGES,OS_GETAPPMAINPAGES
  180.    EXTERN errno
  181.         #include "sysdefs.asm"
  182.         RSEG CODE
  183. OS_GETAPPMAINPAGES:
  184.    ld c,CMD_GETAPPMAINPAGES
  185.    jr l1
  186. OS_GETMAINPAGES:
  187.         ld c,CMD_GETMAINPAGES
  188. l1
  189.         push de
  190.         push ix
  191.         push iy
  192.          call BDOS
  193.         ld b,d ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags, a=error
  194.         ld c,e
  195.         pop iy
  196.         pop ix
  197.         pop de
  198.    LD (errno), a
  199.         ret
  200.         ENDMOD
  201.  
  202.  
  203.         MODULE SETPG32KHIGH
  204.         PUBLIC SETPG32KHIGH
  205.         #include "sysdefs.asm"
  206.         RSEG CODE
  207. SETPG32KHIGH:
  208.         push bc
  209.         push ix
  210.         push iy
  211.         ld a,e
  212.         rst 0x28
  213.         pop iy
  214.         pop ix
  215.         pop bc
  216.         ret
  217.         ENDMOD
  218.        
  219.         MODULE MAIN_ARGS
  220.         PUBLIC main_args
  221.         RSEG CODE
  222. main_args
  223.         ld hl,args
  224.         ld de,0x0080
  225. get_cmd_args_l2
  226.         ld (hl),e
  227.         inc hl
  228.         ld (hl),d
  229.         inc hl
  230.         dec de
  231. get_cmd_args_l
  232.         inc de
  233.         ld a,(de)
  234.         or a
  235.         jr z,get_cmd_args_end
  236.         cp ' '
  237.         jr nz,get_cmd_args_l
  238.         xor a
  239.         ld (de),a
  240. skipspaces
  241.         inc de
  242.         ld a,(de)
  243.         or a
  244.         jr z,get_cmd_args_end
  245.         cp ' '
  246.         jr nz,get_cmd_args_l2
  247.         jr skipspaces
  248. get_cmd_args_end:
  249.         ld bc,args
  250.         sbc hl,bc
  251.         ex de,hl
  252.         srl e
  253.         ret
  254.         RSEG    NO_INIT
  255. args:
  256.         defs 32
  257.         ENDMOD
  258.  
  259.  
  260.         MODULE OSDROPAPP
  261.         PUBLIC OS_DROPAPP
  262.         #include "sysdefs.asm"
  263.         RSEG CODE
  264. OS_DROPAPP:     ;e=id ; hl=result
  265.         ld c,CMD_DROPAPP
  266.         push ix
  267.         push iy
  268.         call BDOS
  269.         pop iy
  270.         pop ix
  271.         ret
  272.         ENDMOD
  273.  
  274.  
  275.  
  276.  
  277.         MODULE OSGETPAGEOWNER   ;e=page ;out: e=owner id (0=free, 0xff=system)
  278.         PUBLIC OS_GETPAGEOWNER
  279.         #include "sysdefs.asm"
  280.         RSEG CODE
  281. OS_GETPAGEOWNER:
  282.    push bc
  283.         ld c,CMD_GETPAGEOWNER
  284.         push de
  285.         push ix
  286.         push iy
  287.         call BDOS
  288.         LD a, e
  289.         pop iy
  290.         pop ix
  291.         pop de
  292.    pop bc
  293.         ret
  294.         ENDMOD
  295.  
  296.  
  297.  
  298.  
  299.        
  300.         MODULE  my_im2
  301.         PUBLIC  my_im2_init
  302.         RSEG    INTJP
  303.         DEFS 3
  304.         RSEG    INTTABLE
  305.         DEFS 257
  306.         RSEG    CODE
  307. my_im2_init
  308.         di
  309.         ld a,0xc3
  310.         ld (SFB(INTJP)),a
  311.         ld (SFB(INTJP)+1),de
  312.         ld a,HIGH(SFB(INTTABLE))
  313.         ld i,a
  314.         inc a
  315.         ld hl,SFB(INTTABLE)-1
  316. tloop
  317.         inc hl
  318.         ld (hl),HIGH(SFB(INTJP))
  319.         cp h
  320.         jr nz,tloop
  321.         im 2
  322.         ret
  323.         ENDMOD
  324.  
  325.  
  326.  
  327.  
  328. ;Kulich Area
  329.         MODULE OS_READSECTORS   ;de= pointer to diskOp structure
  330.         PUBLIC OS_READSECTORS
  331.         #include "sysdefs.asm"
  332.         RSEG CODE
  333. OS_READSECTORS:
  334.         push bc
  335.         push de
  336.         push ix
  337.         push iy
  338.  
  339.         ex de,hl
  340.         ld b,(hl)       ;drive
  341.         inc l
  342.         ld e,(hl)       ;buffer L
  343.         inc l
  344.         ld d,(hl)       ;buffer H
  345.         inc l
  346.         push de
  347.         ld e,(hl)       ;sector L
  348.         inc l
  349.         ld d,(hl)       ;sector H
  350.         inc l
  351.         ld  a,(hl)      ;sector X
  352.         ld  ixl,a
  353.         inc l
  354.         ld  a,(hl)      ;sector I
  355.         ld  ixh,a
  356.         inc l
  357.         ld  a,(hl)      ;count
  358.         pop hl
  359.         ex de,hl
  360.  
  361. ;       push hl
  362.         ld c,CMD_READSECTORS
  363.         ex af,af' ;'
  364.     call BDOS ;c=CMD
  365.  
  366. ;       pop hl
  367.         pop iy
  368.         pop ix
  369.         pop de
  370.         pop bc
  371.         ret             ;BCHL
  372.         ENDMOD 
  373.        
  374.         MODULE OS_WRITESECTORS  ;de= pointer to diskOp structure
  375.         PUBLIC OS_WRITESECTORS
  376.         #include "sysdefs.asm"
  377.         RSEG CODE
  378. OS_WRITESECTORS:
  379.         push bc
  380.         push de
  381.         push ix
  382.         push iy
  383.  
  384.         ex de,hl
  385.         ld b,(hl)       ;drive
  386.         inc l
  387.         ld e,(hl)       ;buffer L
  388.         inc l
  389.         ld d,(hl)       ;buffer H
  390.         inc l
  391.         push de
  392.         ld e,(hl)       ;sector L
  393.         inc l
  394.         ld d,(hl)       ;sector H
  395.         inc l
  396.         ld  a,(hl)      ;sector X
  397.         ld  ixl,a
  398.         inc l
  399.         ld  a,(hl)      ;sector I
  400.         ld  ixh,a
  401.         inc l
  402.         ld  a,(hl)      ;count
  403.         pop hl
  404.         ex de,hl
  405.  
  406. ;       push hl
  407.         ld c,CMD_WRITESECTORS
  408.         ex af,af' ;'
  409.     call BDOS ;c=CMD
  410.  
  411. ;       pop hl
  412.         pop iy
  413.         pop ix
  414.         pop de
  415.         pop bc
  416.         ret             ;BCHL  
  417. ;End of Kulich area
  418.         END
  419.