build: add the SIBO SDK
This commit is contained in:
@@ -0,0 +1,136 @@
|
||||
(* Release 3.00 *)
|
||||
|
||||
module r_emul
|
||||
|
||||
include "corelib.inc"
|
||||
include "epocdefs.inc"
|
||||
|
||||
public FIDRQQ = 05C32H
|
||||
public FIWRQQ = 0A23DH
|
||||
|
||||
public FIERQQ = 01632H
|
||||
public FIARQQ = 0FE32H
|
||||
public FISRQQ = 00632H
|
||||
public FICRQQ = 00E32H
|
||||
|
||||
public FJERQQ = 00000H
|
||||
public FJARQQ = 04000H
|
||||
public FJSRQQ = 08000H
|
||||
public FJCRQQ = 0C000H
|
||||
|
||||
public FIXRQQ = 0
|
||||
|
||||
segment _TEXT(CODE,28H)
|
||||
segment _DATA(DATA,28H)
|
||||
|
||||
__emName: db 'SYS$8087.LDD',0
|
||||
__lddName: db 'EM$:',0
|
||||
__lddNameX: db 'EM$',0
|
||||
|
||||
extrn __SH_sword
|
||||
extrn _DatCommandPtr
|
||||
|
||||
segment _DATA(DATA,28H)
|
||||
|
||||
__FChan: dw 0
|
||||
|
||||
select _TEXT
|
||||
|
||||
extrn __fp_1
|
||||
extrn __sigFp
|
||||
extrn __math_excep
|
||||
extrn __FatalErrorPos
|
||||
extrn __FatalError
|
||||
|
||||
xEnv = -256
|
||||
xBuf = xEnv-MaxPathSize
|
||||
|
||||
public __FloatInit:
|
||||
|
||||
push bp
|
||||
mov bp, sp
|
||||
add sp, xBuf
|
||||
;
|
||||
sub dx, dx
|
||||
mov cx, [_DatCommandPtr]
|
||||
jcxz noCommandLine
|
||||
tryAgain:
|
||||
mov bx, __emName
|
||||
lea di, [bp][xBuf]
|
||||
sub si, si
|
||||
sub al, al
|
||||
mov ah, NmFilParse
|
||||
int FilManager
|
||||
jc noCommandLine
|
||||
mov bx, di
|
||||
xor al, al
|
||||
mov ah, NmDevLoadLDD
|
||||
int DevManager
|
||||
jnc loadedLdd
|
||||
cmp al, ExistsErr
|
||||
je loadedLdd
|
||||
test dx, dx
|
||||
jne openFailed
|
||||
noCommandLine:
|
||||
inc dx
|
||||
lea si, [bp][xEnv]
|
||||
mov di, __lddNameX
|
||||
mov ah, NmGenEnvStringGet
|
||||
int GenManager
|
||||
jc openFailed
|
||||
mov cx, si
|
||||
jmp tryAgain
|
||||
loadedLdd:
|
||||
mov dx, __sigFp
|
||||
mov cx, -1
|
||||
mov bx, __lddName
|
||||
mov ah, NmIoOpen
|
||||
int DevManager
|
||||
jc openFailed
|
||||
mov [__FChan], ax
|
||||
;
|
||||
mov sp, bp
|
||||
pop bp
|
||||
jmp __fp_1
|
||||
;
|
||||
openFailed:
|
||||
call __FatalErrorPos
|
||||
mov bx, 0FFFFH
|
||||
jmp __FatalError
|
||||
|
||||
public __FloatFinish:
|
||||
|
||||
mov bx, [__FChan]
|
||||
test bx, bx
|
||||
je skipClose
|
||||
mov ah, NmIoClose
|
||||
int IoManager
|
||||
mov bx, __lddNameX
|
||||
mov dx, LDDSignature
|
||||
mov ah, NmDevDelete
|
||||
int DevManager
|
||||
skipClose:
|
||||
ret 0
|
||||
|
||||
public __FloatMathExcepDos :
|
||||
fstsw [__SH_sword]
|
||||
fclex
|
||||
jmp near __math_excep
|
||||
|
||||
public __FloatJmpSave :
|
||||
|
||||
fld st(0), st(1)
|
||||
fstp tbyte [di][_j_st1], st(0)
|
||||
fld st(0), st(2)
|
||||
fstp tbyte [di][_j_st2], st(0)
|
||||
ret 0
|
||||
|
||||
public __FloatJmpRestore :
|
||||
|
||||
fld tbyte st(0), [si][_j_st1]
|
||||
fstp st(2), st(0)
|
||||
fld tbyte st(0), [si][_j_st2]
|
||||
fstp st(3), st(0)
|
||||
ret 0
|
||||
|
||||
end
|
||||
Reference in New Issue
Block a user