?login_element?

Subversion Repositories NedoOS

Rev

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