home *** CD-ROM | disk | FTP | other *** search
- ;----------------------------------------------------------------------------
- ;
- ; $Source: /unixb/home/unixlib/source/unixlib37/src/sys/s/RCS/_os,v $
- ; $Date: 1996/11/06 22:01:42 $
- ; $Revision: 1.4 $
- ; $State: Rel $
- ; $Author: unixlib $
- ;
- ; $Log: _os,v $
- ; Revision 1.4 1996/11/06 22:01:42 unixlib
- ; Yet more changes by NB, PB and SC.
- ;
- ; Revision 1.3 1996/10/30 21:59:00 unixlib
- ; Massive changes made by Nick Burret and Peter Burwood.
- ;
- ; Revision 1.2 1996/09/16 21:23:52 unixlib
- ; CL_0002 Nick Burret
- ; Minor changes to file handling
- ; Change most error numbers, and use in assembler sources (SJC)
- ; Various minor bug fixes and compatability changes.
- ;
- ; Revision 1.1 1996/04/19 21:34:32 simon
- ; Initial revision
- ;
- ;----------------------------------------------------------------------------
-
- GET Unix37:unixlib.s.asm_dec
-
- AREA |C$$code|,CODE,READONLY
-
- EXPORT os_console
-
- NAME os_console
- os_console
- MOV a1,#3
- MOV a2,#0
- SWI XOS_Byte
- BVS os_console_l1
- MOV a1,#2
- MOV a2,#2
- SWI XOS_Byte
- MOVVC a1,#0
- os_console_l1
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_vdu
-
- NAME os_vdu
- os_vdu
- SWI XOS_WriteC
- MOVVCS pc,lr
- MVN a1,#0
- MOVS pc,lr
-
- EXPORT os_get
-
- NAME os_get
- os_get
- SWI XOS_ReadC
- MOVVCS pc,lr
- MVN a1,#0
- MOVS pc,lr
-
- EXPORT os_inkey
-
- NAME os_inkey
- os_inkey
- MOV ip,a1
- MOV a1,#&81
- AND a2,ip,#&ff
- MOV a3,ip,LSR #8
- SWI XOS_Byte
- MVNVS a1,#0
- MOVVSS pc,lr
- CMP a3,#0
- MOVEQ a1,a2
- MVNNE a1,#0
- MOVS pc,lr
-
- EXPORT os_keyflush
-
- NAME os_keyflush
- os_keyflush
- MOV a1,#21
- MOV a2,#0
- MOV a3,#0
- SWI XOS_Byte
- MOVVC a1,#0
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423
-
- NAME os_423
- os_423
- MOV a1,#2
- MOV a2,#2
- SWI XOS_Byte
- BVS os_423_l1
- MOV a1,#0
- MOV a2,#0 ; reset 6551
- MOV a3,#0
- SWI XOS_SerialOp
- MOVVC a1,#0
- os_423_l1
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423vdu
-
- NAME os_423vdu
- os_423vdu
- MOV a2,a1
- MOV a1,#3
- SWI XOS_SerialOp
- MOVVC a1,#0
- MVNCS a1,#0 ; buffer full
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423get
-
- NAME os_423get
- os_423get
- MOV a1,#4
- os_423get_l1
- SWI XOS_SerialOp
- BCS os_423get_l1
- MOVVC a1,a2
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423inkey
-
- NAME os_423inkey
- os_423inkey
- MOV a4,a1
- SWI XOS_ReadMonotonicTime
- ADD a4,a4,a1
- os_423inkey_l1
- MOV a1,#4
- SWI XOS_SerialOp
- BCC os_423inkey_l2
- BVS os_423inkey_l2
- SWI XOS_ReadMonotonicTime
- CMP a4,a1
- BHI os_423inkey_l1
- MVN a2,#0
- os_423inkey_l2
- MOVVC a1,a2
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423flush
-
- NAME os_423flush
- os_423flush
- MOV a1,#21
- MOV a2,#1
- MOV a3,#0
- SWI XOS_Byte
- MOVVC a1,#0
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_423break
-
- NAME os_423break
- os_423break
- MOV a2,a1
- MOV a1,#2
- SWI XOS_SerialOp
- MOVVC a1,#0
- MVNVS a1,#0
- MOVS pc,lr
-
- EXPORT os_byte
-
- NAME os_byte
- os_byte
- MOVS ip,a4
-
- SWI XOS_Byte
-
- STMNEIA ip,{a1,a2,a3}
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_word
-
- NAME os_word
- os_word
- SWI XOS_Word
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_prhex
-
- NAME os_prhex
- os_prhex
- SUB a4,sp,#8
- MOVS a3,#7
- os_prhex_l1
- ANDS a2,a1,#&f
- CMP a2,#10
- ADDLT a2,a2,#48
- ADDGE a2,a2,#87
- STRB a2,[a4,a3]
- SUBS a3,a3,#1
- BLT os_prhex_l4
- MOVS a1,a1,LSR #4
- BNE os_prhex_l1
- os_prhex_l2
- MOV a2,#32
- os_prhex_l3
- STRB a2,[a4,a3]
- SUBS a3,a3,#1
- BGE os_prhex_l3
- os_prhex_l4
- MOV a1,a4
- MOV a2,#8
- B os_write
-
- EXPORT os_print
-
- NAME os_print
- os_print
- SWI XOS_Write0
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_write
-
- NAME os_write
- os_write
- SWI XOS_WriteN
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_nl
-
- NAME os_nl
- os_nl
- SWI XOS_NewLine
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_cli
-
- NAME os_cli
- os_cli
- SWI XOS_CLI
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_file
-
- NAME os_file
- os_file
- STMFD sp!,{v1,v2,lr}
-
- CMP a3,#0
- ADDNE ip,a3,#8
- LDMNEIA ip,{a3,a4,v1,v2}
-
- SWI XOS_File
-
- SUBNE ip,ip,#8
- STMNEIA ip,{a1,a2,a3,a4,v1,v2}
-
- MOVVC a1,#0
- LDMFD sp!,{v1,v2,pc}^
-
- EXPORT os_fopen
-
- NAME os_fopen
- os_fopen
- MOV ip,a3
-
- SWI XOS_Find
-
- STR a1,[ip,#0]
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_fclose
-
- NAME os_fclose
- os_fclose
- MOV a2,a1
- MOV a1,#0
-
- SWI XOS_Find
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_fread
-
- NAME os_fread
- os_fread
- STMFD sp!,{v1,lr}
-
- MOVS ip,a4
-
- MOV a4,a3
- MOV a3,a2
- MOV a2,a1
- MOV a1,#4
-
- SWI XOS_GBPB
-
- STMNEIA ip,{a1,a2,a3,a4,v1}
-
- MOVVC a1,#0
- LDMFD sp!,{v1,pc}^
-
- EXPORT os_fwrite
-
- NAME os_fwrite
- os_fwrite
- STMFD sp!,{v1,lr}
-
- MOVS ip,a4
-
- MOV a4,a3
- MOV a3,a2
- MOV a2,a1
- MOV a1,#2
-
- SWI XOS_GBPB
-
- STMNEIA ip,{a1,a2,a3,a4,v1}
-
- MOVVC a1,#0
- LDMFD sp!,{v1,pc}^
-
- EXPORT os_args
-
- NAME os_args
- os_args
- MOVS ip,a4
-
- SWI XOS_Args
-
- STMNEIA ip,{a1,a2,a3}
-
- MOVVC a1,#0
- MOVS pc,lr
-
- EXPORT os_fsctrl
-
- NAME os_fsctrl
- os_fsctrl
- SWI XOS_FSControl
-
- MOVVC a1,#0
- MOVS pc,lr
-
-
- AREA |C$$wrcode|,CODE
-
- EXPORT os_swi
-
- NAME os_swi
- os_swi
- STMFD sp!,{v1,v2,v3,v4,v5,v6,fp,lr}
-
- ORR ip,a1,#&20000 ; X bit
- MOVS fp,a2
- LDMNEIA fp,{a1,a2,a3,a4,v1,v2,v3,v4,v5,v6}
- SWI XOS_CallASWIR12
- TEQ fp,#0
- STMNEIA fp,{a1,a2,a3,a4,v1,v2,v3,v4,v5,v6}
-
- MOVVC a1,#0
- LDMFD sp!,{v1,v2,v3,v4,v5,v6,fp,pc}^
-
- END
-