DOS-debug

Форк
0
/
DPMICL16.ASM 
86 строк · 1.7 Кб
1

2
;--- DPMICL16.ASM: 16bit DPMI application written in MASM syntax.
3
;--- assemble: JWasm -bin -Fo dpmicl16.com dpmicl16.asm
4

5
LF  equ 10
6
CR  equ 13
7

8
    .286
9
    .model tiny
10

11
    .code
12

13
    org 100h
14

15
;--- the 16bit initialization part
16

17
start:
18
    pop ax          ;get word saved on stack for COM files
19
    mov bx, sp
20
    shr bx, 4
21
    jnz @F
22
    mov bx,1000h    ;it was a full 64kB stack
23
@@:
24
    mov ah, 4Ah     ;free unused memory
25
    int 21h
26
    mov ax, 1687h   ;DPMI host installed?
27
    int 2Fh
28
    and ax, ax
29
    jnz nohost
30
    push es         ;save DPMI entry address
31
    push di
32
    and si, si      ;requires host client-specific DOS memory?
33
    jz nomemneeded
34
    mov bx, si
35
    mov ah, 48h     ;alloc DOS memory
36
    int 21h
37
    jc nomem
38
    mov es, ax
39
nomemneeded:
40
    mov bp, sp
41
    mov ax, 0000    ;start a 16-bit client
42
    call far ptr [bp]   ;initial switch to protected-mode
43
    jc initfailed
44

45
;--- now in protected-mode
46

47
    call printstring
48
    db "welcome in protected-mode",CR,LF,0
49
    mov ax, 4C00h   ;normal client exit
50
    int 21h
51

52
nohost:
53
    call error
54
    db "no DPMI host installed",CR,LF,'$'
55
nomem:
56
    call error
57
    db "not enough DOS memory for initialisation",CR,LF,'$'
58
initfailed:
59
    call error
60
    db "DPMI initialisation failed",CR,LF,'$'
61
error:
62
    push cs
63
    pop ds
64
    pop dx
65
    mov ah, 9
66
    int 21h
67
    mov ax, 4C00h
68
    int 21h
69

70
;--- print a string in protected-mode with simple
71
;--- DOS commands not using pointers.
72

73
printstring:
74
    pop si
75
nextchar:
76
    lodsb
77
    and al,al
78
    jz stringdone
79
    mov dl,al
80
    mov ah,2
81
    int 21h
82
    jmp nextchar
83
stringdone:
84
    push si
85
    ret
86

87
    end start
88

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.