(* Release 3.00 *) (* c_coreinit - common initialisation between PLIB and CLIB *) (* Copyright (C) 1991 Psion PLC. All Rights Reserved*) (* Written by NSM.*) include "corelib.inc" include "epocdefs.inc" module coreinit (***************************************************************************) section segment _MAGIC(MAGIC,68H) segment _DATA(DATA,68H) segment _CONST(DATA,48H) segment _BSS(BSS,68H) segment BSS_END(BSS,68H) group DGROUP(_MAGIC,_DATA,_CONST,_BSS,BSS_END) select _DATA public _winHandle : dw 0 public __conName : db 'CON:*',0 (***************************************************************************) section segment _DATA(DATA,68H) public __DefScreenRect : dw -1,0,0,0 (***************************************************************************) section segment _DATA(DATA,68H) public __DefScreenMode : dw 0 (****************************************************************************) section segment _TEXT(CODE,28H) public __FatalErrorPos : push bx mov bx, sp mov ax, ss:[bx][2] pop bx ret 0 (****************************************************************************) section segment _TEXT(CODE,28H) public __FatalError : mov al, 80 int ProcPanic (****************************************************************************) section segment _TEXT(CODE,28H) segment _DATA(DATA,28H) extrn _winHandle extrn _DatCommandPtr extrn __DefScreenRect extrn __DefScreenMode extrn __conName select _TEXT extrn __FatalErrorPos extrn __FatalError xMode = -2 xParse = xMode-FullParseEnt xBuf = xParse-MaxPathSize public _p_xwind : push bp mov bp, sp add sp, xBuf push ax push bx push cx push dx push di push si ; mov bx, [_DatCommandPtr] test bx, bx je noCommandLine sub cx, cx lea di, [bp][xBuf] lea si, [bp][xParse] sub al, al mov ah, NmFilParse int FilManager jc noCommandLine lea di, [bp][xBuf] mov si, __conName int StringCopy add di, 5 lea si, [bp][xBuf][FileSystemNameSize] mov ax, [bp][xParse][FullParseDevice] add al, ah sub ah, ah add si, ax mov cl, [bp][xParse][FullParseName] sub ch, ch cld rep ; movsb sub al, al stosb jmp openCon noCommandLine: lea di, [bp][xBuf] mov si, __conName int StringCopy mov byte [di][4], 0 openCon: lea bx, [bp][xBuf] mov cx, -1 mov ah, NmIoOpen int DevManager jnc openOk ; call __FatalErrorPos mov bx, FatalOpenConsole jmp __FatalError ; openOk: mov [_winHandle], ax ; mov si, ds:[Datawserv_channel] or si, si jz old_window_server mov al, [si][wserv_spec_info_version] and al, 0FH cmp al, 2 (* WS_VERSION_4 *) jb old_window_server ; sub sp, 32 (* SIZE W_SUPPORT_INFO *) mov si, sp mov ax, 0FF06H (* WOR_X_SUPPROT_INFO *) int WservOpcodes mov ax, [__DefScreenMode] mov bx, [si] add sp, 32 (* SIZE W_SUPPORT_INFO *) ; test bx, 2 (* W_SUPPORT_CTBY_S3 *) jz no_ctby_mode test ax, 1 (* Use compatibility mode if set *) jnz no_ctby_mode push ax push bx mov word [bp][xMode], 20 (* P_SCR_COMPATIBILITY *) lea cx, [bp][xMode] xor ax, ax (* No compatibilty mode *) push ax mov dx, sp mov bx, [_winHandle] mov al, IoFuncSet mov ah, NmIoWithWait int IoManager pop ax pop bx pop ax ; no_ctby_mode: test bx, 1 (* W_SUPPORT_CTBY_GREY *) jz no_grey test ax, 2 (* Use grey if set *) jz no_grey ; mov word [bp][xMode], 21 (* P_SCR_GREY *) lea cx, [bp][xMode] mov ax, TRUE push ax mov dx, sp mov bx, [_winHandle] mov al, IoFuncSet mov ah, NmIoWithWait int IoManager pop ax no_grey: ; old_window_server: mov di, __DefScreenRect cmp word [di][RectTl][PointX], -1 jne rectGood sub ax, ax mov [di][RectTl][PointX], ax mov [di][RectTl][PointY], ax mov ah, NmGenLcdType int GenManager mov bx, 60 mov cx, 15 cmp al, Lcd240X80 jne try160X80 mov bx, 40 mov cx, 9 jmp setBr try160X80: cmp al, Lcd160X80 jne setBr mov bx, 26 mov cx, 9 setBr: mov [di][RectBr][PointX], bx mov [di][RectBr][PointY], cx rectGood: mov word [bp][xMode], 5 (* P_SCR_WSET *) lea cx, [bp][xMode] mov dx, di mov bx, [_winHandle] mov al, IoFuncSet mov ah, NmIoWithWait int IoManager ; mov word [bp][xMode], 3 (* P_SCR_POSA *) lea cx, [bp][xMode] xor ax, ax push ax push ax mov dx, sp mov al, IoFuncSet mov ah, NmIoWithWait int IoManager ; lea di, [bp][xParse] mov word [di], 1 mov dx, di mov word [bp][xMode], 9 (* P_SCR_CURSOR *) mov al, IoFuncSet mov ah, NmIoWithWait int IoManager ; pop si pop di pop dx pop cx pop bx pop ax mov sp, bp pop bp ret 0 ; (****************************************************************************) section segment _TEXT(CODE,28H) public _ClassTable : public _ExtCatTable : dw 0 end