171 lines
2.6 KiB
ArmAsm
171 lines
2.6 KiB
ArmAsm
!******************************************************************************
|
|
*******************************************************************************
|
|
|
|
W E G A - Quelle (C) ZFT/KEAW Abt. Basissoftware - 1985
|
|
|
|
Standalone Modul sa.function.s
|
|
|
|
|
|
Bearbeiter: P. Hoge
|
|
Datum: 04/01/87 11:20:56
|
|
Version: 1.1
|
|
|
|
*******************************************************************************
|
|
|
|
Dieser Modul gestattet die Benutzung der Boot Systemfunktionen
|
|
von einem User Programm aus. Dieser Modul wird zusammen mit
|
|
dem Modul misc.c zur libb.a
|
|
|
|
*******************************************************************************
|
|
******************************************************************************!
|
|
|
|
|
|
sa_function_s module
|
|
|
|
$nonsegmented
|
|
|
|
|
|
external
|
|
|
|
_printfv procedure
|
|
|
|
global
|
|
|
|
_printf procedure
|
|
entry
|
|
ex r2, @r15
|
|
push @r15, r3
|
|
push @r15, r4
|
|
push @r15, r5
|
|
push @r15, r6
|
|
ld r6, r15
|
|
push @r15, r2
|
|
call _printfv
|
|
ld r2, @r15
|
|
inc r15, #12
|
|
jp @r2
|
|
end _printf
|
|
|
|
_exit procedure
|
|
entry
|
|
ldb rl1, #0
|
|
jr system
|
|
end _exit
|
|
|
|
_read procedure !read nach Segment 0!
|
|
entry
|
|
ldb rl1, #1
|
|
jr system
|
|
end _read
|
|
|
|
_write procedure !von Segment 0!
|
|
entry
|
|
ldb rl1, #2
|
|
jr system
|
|
end _write
|
|
|
|
_open procedure
|
|
entry
|
|
ldb rl1, #3
|
|
jr system
|
|
end _open
|
|
|
|
_close procedure
|
|
entry
|
|
ldb rl1, #4
|
|
jr system
|
|
end _close
|
|
|
|
_lseek procedure
|
|
entry
|
|
ldb rl1, #5
|
|
jr system
|
|
end _lseek
|
|
|
|
_loadit procedure
|
|
entry
|
|
ldb rl1, #6
|
|
jr system
|
|
end _loadit
|
|
|
|
_getchar procedure
|
|
entry
|
|
ldb rl1, #7
|
|
jr system
|
|
end _getchar
|
|
|
|
_putchar procedure
|
|
entry
|
|
ldb rl1, #8
|
|
jr system
|
|
end _putchar
|
|
|
|
_getc procedure
|
|
entry
|
|
ldb rl1, #9
|
|
jr system
|
|
end _getc
|
|
|
|
_getw procedure
|
|
entry
|
|
ldb rl1, #10
|
|
end _getw
|
|
|
|
internal
|
|
|
|
system procedure
|
|
entry
|
|
ld r0, #%C000
|
|
ldctl FCW, r0
|
|
!$segmented!
|
|
wval %5F00 !call <3F>%8002!
|
|
wval %BF00
|
|
wval %8002
|
|
ld r0, #%5800
|
|
ldctl FCW, r0
|
|
!nonsegmented!
|
|
ret
|
|
end system
|
|
|
|
|
|
!*--------------------------------------------------------*!
|
|
!*
|
|
* Realisierung von in und out Befehlen fuer C
|
|
*!
|
|
!*--------------------------------------------------------*!
|
|
|
|
global
|
|
|
|
_otirb !@r7, @r6, r5! procedure
|
|
entry
|
|
otirb @r7, @r6, r5
|
|
ret
|
|
end _otirb
|
|
|
|
_outb !@r7, rl6! procedure
|
|
entry
|
|
outb @r7, rl6
|
|
ret
|
|
end _outb
|
|
|
|
_inb !rl2, @r7! procedure
|
|
entry
|
|
inb rl2, @r7
|
|
xorb rh2, rh2
|
|
ret
|
|
end _inb
|
|
|
|
_out !@r7, r6! procedure
|
|
entry
|
|
out @r7, r6
|
|
ret
|
|
end _out
|
|
|
|
_in !r2, @r7! procedure
|
|
entry
|
|
in r2, @r7
|
|
ret
|
|
end _in
|
|
|
|
end sa_function_s
|