mirror of https://github.com/nmlgc/ReC98.git
96 lines
2.3 KiB
NASM
96 lines
2.3 KiB
NASM
; Hiper library
|
|
;
|
|
; Description:
|
|
; 起動したマシン情報を得る。
|
|
;
|
|
; Procedures/Functions:
|
|
; int get_machine( void );
|
|
;
|
|
; Parameters:
|
|
;
|
|
; Returns:
|
|
; bit 15 - 8 : 0 : (reserved)
|
|
; bit 54 :
|
|
; 00 : unknown machine
|
|
; 01 : PC/AT or compatible
|
|
; 10 : PC-9801
|
|
; 11 : unknown machine(ありえない)
|
|
; bit 3210 : bit 4 が 1 のとき
|
|
; 000x : PS/55
|
|
; 001x : DOS/V
|
|
; 010x : AX
|
|
; 011x : J3100
|
|
; 100x : DR-DOS
|
|
; 101x : MS-DOS/V
|
|
; 110x : (reserved)
|
|
; 111x : (reserved)
|
|
; xxx0 : Japanese mode
|
|
; xxx1 : English mode
|
|
; bit 83210 : bit 5 が 1 のとき
|
|
; xxxx0 : DeskTop
|
|
; xxx0x : NEC #0.07 以降
|
|
; xxx1x : EPSON #0.07 以降
|
|
; x00xx : Normal mode only (400 lines)
|
|
; x01xx : MATE mode supported (480 lines)
|
|
; x1xxx : High-resolustion mode
|
|
;
|
|
;
|
|
; Binding Target:
|
|
; Microsoft-C / Turbo-C
|
|
;
|
|
; Running Target:
|
|
; PC-9801, PC/AT
|
|
;
|
|
; Requiring Resources:
|
|
; CPU: 8086
|
|
;
|
|
; Notes:
|
|
; PC-9801, PC/AT 以外のマシンの返り値について保証できません。
|
|
; FM-R では、暴走するらしいっす(^_^;
|
|
;
|
|
; Compiler/Assembler:
|
|
; OPTASM 1.6
|
|
;
|
|
; Author:
|
|
; のろ/V(H.Maeda)
|
|
;
|
|
; Revision History:
|
|
; 93/ 7/19 Initial: Hiper.lib
|
|
; 93/07/29 add PC-9821 check
|
|
; 93/08/10 add PC-98 color/mono check ?
|
|
; & _get_machine -> get_machine
|
|
; 93/08/25 98 MATE check bugfix
|
|
; 93/09/19 ret 処理が... (^_^;
|
|
; 93/10/06 si を壊していた(^_^;
|
|
; 93/10/22 Mono&Color チェック廃止、NEC, EPSON チェック追加
|
|
; また、EPSON note もチェック可能
|
|
; 93/11/ 3 AX check で、0040:00e0 〜を
|
|
; 16 byte から 12 byte check に変更
|
|
; 93/12/11 Initial: getmachi.asm/master.lib 0.22 (from hiper.lib)
|
|
; 94/01/05 get_machine() を、get_machine_at()、get_machine_98() に分割
|
|
; それに伴い、それぞれ、getmachi.asm、getmacat.asm、gatmac98.asm
|
|
; にファイルを分離。
|
|
; 95/ 2/21 各機種部分へjumpしていたのをcallに変更し、戻ってきたら
|
|
; DOS BOX判定をするように追加。
|
|
; 95/ 3/ 8 get_machine_dosbox(getmacdb.asm)に分離。このため
|
|
; callにしていたのをjumpに戻した。
|
|
|
|
FMR_MACHINE EQU 01000000b
|
|
|
|
func GET_MACHINE ; get_machine(void)
|
|
_call CHECK_MACHINE_FMR
|
|
jz short @@FMR_RET
|
|
mov ah,0fh
|
|
int 10h ; get text mode (DOS/V)
|
|
cmp ah,0fh
|
|
jnz @@ZUN1
|
|
nop
|
|
nop
|
|
jmp GET_MACHINE_98
|
|
@@ZUN1:
|
|
jmp GET_MACHINE_AT
|
|
@@FMR_RET:
|
|
mov AX,FMR_MACHINE
|
|
ret
|
|
endfunc
|