home *** CD-ROM | disk | FTP | other *** search
/ ARM Club 3 / TheARMClub_PDCD3.iso / hensa / unix / unixlib_1 / !UnixLib37_src_sys_s__os < prev    next >
Encoding:
Text File  |  1996-11-09  |  4.8 KB  |  388 lines

  1. ;----------------------------------------------------------------------------
  2. ;
  3. ; $Source: /unixb/home/unixlib/source/unixlib37/src/sys/s/RCS/_os,v $
  4. ; $Date: 1996/11/06 22:01:42 $
  5. ; $Revision: 1.4 $
  6. ; $State: Rel $
  7. ; $Author: unixlib $
  8. ;
  9. ; $Log: _os,v $
  10. ; Revision 1.4  1996/11/06 22:01:42  unixlib
  11. ; Yet more changes by NB, PB and SC.
  12. ;
  13. ; Revision 1.3  1996/10/30 21:59:00  unixlib
  14. ; Massive changes made by Nick Burret and Peter Burwood.
  15. ;
  16. ; Revision 1.2  1996/09/16 21:23:52  unixlib
  17. ; CL_0002 Nick Burret
  18. ; Minor changes to file handling
  19. ; Change most error numbers, and use in assembler sources (SJC)
  20. ; Various minor bug fixes and compatability changes.
  21. ;
  22. ; Revision 1.1  1996/04/19 21:34:32  simon
  23. ; Initial revision
  24. ;
  25. ;----------------------------------------------------------------------------
  26.  
  27.     GET    Unix37:unixlib.s.asm_dec
  28.  
  29.     AREA    |C$$code|,CODE,READONLY
  30.  
  31.     EXPORT    os_console
  32.  
  33.     NAME    os_console
  34. os_console
  35.     MOV    a1,#3
  36.     MOV    a2,#0
  37.     SWI    XOS_Byte
  38.     BVS    os_console_l1
  39.     MOV    a1,#2
  40.     MOV    a2,#2
  41.     SWI    XOS_Byte
  42.     MOVVC    a1,#0
  43. os_console_l1
  44.     MVNVS    a1,#0
  45.     MOVS    pc,lr
  46.  
  47.     EXPORT    os_vdu
  48.  
  49.     NAME    os_vdu
  50. os_vdu
  51.     SWI    XOS_WriteC
  52.     MOVVCS    pc,lr
  53.     MVN    a1,#0
  54.     MOVS    pc,lr
  55.  
  56.     EXPORT    os_get
  57.  
  58.     NAME    os_get
  59. os_get
  60.     SWI    XOS_ReadC
  61.     MOVVCS    pc,lr
  62.     MVN    a1,#0
  63.     MOVS    pc,lr
  64.  
  65.     EXPORT    os_inkey
  66.  
  67.     NAME    os_inkey
  68. os_inkey
  69.     MOV    ip,a1
  70.     MOV    a1,#&81
  71.     AND    a2,ip,#&ff
  72.     MOV    a3,ip,LSR #8
  73.     SWI    XOS_Byte
  74.     MVNVS    a1,#0
  75.     MOVVSS    pc,lr
  76.     CMP    a3,#0
  77.     MOVEQ    a1,a2
  78.     MVNNE    a1,#0
  79.     MOVS    pc,lr
  80.  
  81.     EXPORT    os_keyflush
  82.  
  83.     NAME    os_keyflush
  84. os_keyflush
  85.     MOV    a1,#21
  86.     MOV    a2,#0
  87.     MOV    a3,#0
  88.     SWI    XOS_Byte
  89.     MOVVC    a1,#0
  90.     MVNVS    a1,#0
  91.     MOVS    pc,lr
  92.  
  93.     EXPORT    os_423
  94.  
  95.     NAME    os_423
  96. os_423
  97.     MOV    a1,#2
  98.     MOV    a2,#2
  99.     SWI    XOS_Byte
  100.     BVS    os_423_l1
  101.     MOV    a1,#0
  102.     MOV    a2,#0    ; reset 6551
  103.     MOV    a3,#0
  104.     SWI    XOS_SerialOp
  105.     MOVVC    a1,#0
  106. os_423_l1
  107.     MVNVS    a1,#0
  108.     MOVS    pc,lr
  109.  
  110.     EXPORT    os_423vdu
  111.  
  112.     NAME    os_423vdu
  113. os_423vdu
  114.     MOV    a2,a1
  115.     MOV    a1,#3
  116.     SWI    XOS_SerialOp
  117.     MOVVC    a1,#0
  118.     MVNCS    a1,#0    ; buffer full
  119.     MVNVS    a1,#0
  120.     MOVS    pc,lr
  121.  
  122.     EXPORT    os_423get
  123.  
  124.     NAME    os_423get
  125. os_423get
  126.     MOV    a1,#4
  127. os_423get_l1
  128.     SWI    XOS_SerialOp
  129.     BCS    os_423get_l1
  130.     MOVVC    a1,a2
  131.     MVNVS    a1,#0
  132.     MOVS    pc,lr
  133.  
  134.     EXPORT    os_423inkey
  135.  
  136.     NAME    os_423inkey
  137. os_423inkey
  138.     MOV    a4,a1
  139.     SWI    XOS_ReadMonotonicTime
  140.     ADD    a4,a4,a1
  141. os_423inkey_l1
  142.     MOV    a1,#4
  143.     SWI    XOS_SerialOp
  144.     BCC    os_423inkey_l2
  145.     BVS    os_423inkey_l2
  146.     SWI    XOS_ReadMonotonicTime
  147.     CMP    a4,a1
  148.     BHI    os_423inkey_l1
  149.     MVN    a2,#0
  150. os_423inkey_l2
  151.     MOVVC    a1,a2
  152.     MVNVS    a1,#0
  153.     MOVS    pc,lr
  154.  
  155.     EXPORT    os_423flush
  156.  
  157.     NAME    os_423flush
  158. os_423flush
  159.     MOV    a1,#21
  160.     MOV    a2,#1
  161.     MOV    a3,#0
  162.     SWI    XOS_Byte
  163.     MOVVC    a1,#0
  164.     MVNVS    a1,#0
  165.     MOVS    pc,lr
  166.  
  167.     EXPORT    os_423break
  168.  
  169.     NAME    os_423break
  170. os_423break
  171.     MOV    a2,a1
  172.     MOV    a1,#2
  173.     SWI    XOS_SerialOp
  174.     MOVVC    a1,#0
  175.     MVNVS    a1,#0
  176.     MOVS    pc,lr
  177.  
  178.     EXPORT    os_byte
  179.  
  180.     NAME    os_byte
  181. os_byte
  182.     MOVS    ip,a4
  183.  
  184.     SWI    XOS_Byte
  185.  
  186.     STMNEIA ip,{a1,a2,a3}
  187.  
  188.     MOVVC    a1,#0
  189.     MOVS    pc,lr
  190.  
  191.     EXPORT    os_word
  192.  
  193.     NAME    os_word
  194. os_word
  195.     SWI    XOS_Word
  196.  
  197.     MOVVC    a1,#0
  198.     MOVS    pc,lr
  199.  
  200.     EXPORT    os_prhex
  201.  
  202.     NAME    os_prhex
  203. os_prhex
  204.     SUB    a4,sp,#8
  205.     MOVS    a3,#7
  206. os_prhex_l1
  207.     ANDS    a2,a1,#&f
  208.     CMP    a2,#10
  209.     ADDLT    a2,a2,#48
  210.     ADDGE    a2,a2,#87
  211.     STRB    a2,[a4,a3]
  212.     SUBS    a3,a3,#1
  213.     BLT    os_prhex_l4
  214.     MOVS    a1,a1,LSR #4
  215.     BNE    os_prhex_l1
  216. os_prhex_l2
  217.     MOV    a2,#32
  218. os_prhex_l3
  219.     STRB    a2,[a4,a3]
  220.     SUBS    a3,a3,#1
  221.     BGE    os_prhex_l3
  222. os_prhex_l4
  223.     MOV    a1,a4
  224.     MOV    a2,#8
  225.     B    os_write
  226.  
  227.     EXPORT    os_print
  228.  
  229.     NAME    os_print
  230. os_print
  231.     SWI    XOS_Write0
  232.  
  233.     MOVVC    a1,#0
  234.     MOVS    pc,lr
  235.  
  236.     EXPORT    os_write
  237.  
  238.     NAME    os_write
  239. os_write
  240.     SWI    XOS_WriteN
  241.  
  242.     MOVVC    a1,#0
  243.     MOVS    pc,lr
  244.  
  245.     EXPORT    os_nl
  246.  
  247.     NAME    os_nl
  248. os_nl
  249.     SWI    XOS_NewLine
  250.  
  251.     MOVVC    a1,#0
  252.     MOVS    pc,lr
  253.  
  254.     EXPORT    os_cli
  255.  
  256.     NAME    os_cli
  257. os_cli
  258.     SWI    XOS_CLI
  259.  
  260.     MOVVC    a1,#0
  261.     MOVS    pc,lr
  262.  
  263.     EXPORT    os_file
  264.  
  265.     NAME    os_file
  266. os_file
  267.     STMFD    sp!,{v1,v2,lr}
  268.  
  269.     CMP    a3,#0
  270.     ADDNE    ip,a3,#8
  271.     LDMNEIA ip,{a3,a4,v1,v2}
  272.  
  273.     SWI    XOS_File
  274.  
  275.     SUBNE    ip,ip,#8
  276.     STMNEIA ip,{a1,a2,a3,a4,v1,v2}
  277.  
  278.     MOVVC    a1,#0
  279.     LDMFD    sp!,{v1,v2,pc}^
  280.  
  281.     EXPORT    os_fopen
  282.  
  283.     NAME    os_fopen
  284. os_fopen
  285.     MOV    ip,a3
  286.  
  287.     SWI    XOS_Find
  288.  
  289.     STR    a1,[ip,#0]
  290.  
  291.     MOVVC    a1,#0
  292.     MOVS    pc,lr
  293.  
  294.     EXPORT    os_fclose
  295.  
  296.     NAME    os_fclose
  297. os_fclose
  298.     MOV    a2,a1
  299.     MOV    a1,#0
  300.  
  301.     SWI    XOS_Find
  302.  
  303.     MOVVC    a1,#0
  304.     MOVS    pc,lr
  305.  
  306.     EXPORT    os_fread
  307.  
  308.     NAME    os_fread
  309. os_fread
  310.     STMFD    sp!,{v1,lr}
  311.  
  312.     MOVS    ip,a4
  313.  
  314.     MOV    a4,a3
  315.     MOV    a3,a2
  316.     MOV    a2,a1
  317.     MOV    a1,#4
  318.  
  319.     SWI    XOS_GBPB
  320.  
  321.     STMNEIA ip,{a1,a2,a3,a4,v1}
  322.  
  323.     MOVVC    a1,#0
  324.     LDMFD    sp!,{v1,pc}^
  325.  
  326.     EXPORT    os_fwrite
  327.  
  328.     NAME    os_fwrite
  329. os_fwrite
  330.     STMFD    sp!,{v1,lr}
  331.  
  332.     MOVS    ip,a4
  333.  
  334.     MOV    a4,a3
  335.     MOV    a3,a2
  336.     MOV    a2,a1
  337.     MOV    a1,#2
  338.  
  339.     SWI    XOS_GBPB
  340.  
  341.     STMNEIA ip,{a1,a2,a3,a4,v1}
  342.  
  343.     MOVVC    a1,#0
  344.     LDMFD    sp!,{v1,pc}^
  345.  
  346.     EXPORT    os_args
  347.  
  348.     NAME    os_args
  349. os_args
  350.     MOVS    ip,a4
  351.  
  352.     SWI    XOS_Args
  353.  
  354.     STMNEIA ip,{a1,a2,a3}
  355.  
  356.     MOVVC    a1,#0
  357.     MOVS    pc,lr
  358.  
  359.     EXPORT    os_fsctrl
  360.  
  361.     NAME    os_fsctrl
  362. os_fsctrl
  363.     SWI    XOS_FSControl
  364.  
  365.     MOVVC    a1,#0
  366.     MOVS    pc,lr
  367.  
  368.  
  369.     AREA    |C$$wrcode|,CODE
  370.  
  371.     EXPORT    os_swi
  372.  
  373.     NAME    os_swi
  374. os_swi
  375.     STMFD    sp!,{v1,v2,v3,v4,v5,v6,fp,lr}
  376.  
  377.     ORR    ip,a1,#&20000        ; X bit
  378.     MOVS    fp,a2
  379.     LDMNEIA fp,{a1,a2,a3,a4,v1,v2,v3,v4,v5,v6}
  380.     SWI    XOS_CallASWIR12
  381.     TEQ    fp,#0
  382.     STMNEIA fp,{a1,a2,a3,a4,v1,v2,v3,v4,v5,v6}
  383.  
  384.     MOVVC    a1,#0
  385.     LDMFD    sp!,{v1,v2,v3,v4,v5,v6,fp,pc}^
  386.  
  387.     END
  388.