317 lines
9.6 KiB
Plaintext
Executable File
317 lines
9.6 KiB
Plaintext
Executable File
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 1
|
||
kern.asm
|
||
|
||
|
||
|
||
1 ; kern.asm: 20-Nov-93, 21:52
|
||
2 IDEAL
|
||
3 P286
|
||
4 0000 MODEL LARGE
|
||
5 ; Fuer Turboc gerettet werden muessen folgende Register:
|
||
6 ; BP, SS, SP, DS, CS u. SI, DI
|
||
7
|
||
8 MACRO P_START
|
||
9 push bp
|
||
10 mov bp, sp
|
||
11 ENDM
|
||
12
|
||
13 MACRO P_END
|
||
14 pop bp
|
||
15 ENDM
|
||
16
|
||
17 MACRO PUSH_REGS
|
||
18 push ds
|
||
19 push si
|
||
20 push di
|
||
21 ENDM
|
||
22
|
||
23 MACRO POP_REGS
|
||
24 pop di
|
||
25 pop si
|
||
26 pop ds
|
||
27 ENDM
|
||
28
|
||
29 ;; EXTRN _esr_routine:FAR
|
||
30
|
||
31 PUBLIC _IPXinit;
|
||
32 PUBLIC _IPXopen_socket;
|
||
33 PUBLIC _IPXclose_socket;
|
||
34 PUBLIC _IPXlisten;
|
||
35 ;; PUBLIC _asm_esr_routine;
|
||
36 PUBLIC _xmemmove;
|
||
37 PUBLIC _Net_Call;
|
||
38
|
||
39 0000 DATASEG
|
||
40 0000 0000FFFE enterIPX DD FAR
|
||
41
|
||
42 0004 CODESEG
|
||
43 0000 PROC _IPXinit;
|
||
44 P_START
|
||
1 45 0000 55 push bp
|
||
1 46 0001 8B EC mov bp, sp
|
||
47 PUSH_REGS
|
||
1 48 0003 1E push ds
|
||
1 49 0004 56 push si
|
||
1 50 0005 57 push di
|
||
51 0006 B8 7A00 mov ax, 7A00h
|
||
52 0009 CD 2F int 2Fh
|
||
53 000B 3C FF cmp al, 0FFh
|
||
54 000D 75 10 jne @@fertig
|
||
55 000F B9 0000s mov cx, @data
|
||
56 0012 8E D9 mov ds, cx
|
||
57 0014 89 3E 0000r mov [WORD PTR enterIPX], di
|
||
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 2
|
||
kern.asm
|
||
|
||
|
||
|
||
58 0018 8C C0 mov ax, es
|
||
59 001A A3 0002r mov [WORD PTR enterIPX+2], ax
|
||
60 001D B0 01 mov al, 1 ; OK
|
||
61 001F @@fertig:
|
||
62 001F B4 00 mov ah, 0
|
||
63 POP_REGS
|
||
1 64 0021 5F pop di
|
||
1 65 0022 5E pop si
|
||
1 66 0023 1F pop ds
|
||
67 P_END
|
||
1 68 0024 5D pop bp
|
||
69 0025 CB ret ; OK = 1 ; nicht ok = 0
|
||
70 0026 ENDP
|
||
71
|
||
72 0026 PROC _xmemmove;
|
||
73 ARG z:DATAPTR, q:DATAPTR, nmbr:WORD; Argumente
|
||
74 0026 FA cli ; Disable Interrupts
|
||
75 0027 55 push bp
|
||
76 0028 8B EC mov bp,sp
|
||
77 002A 8B 4E 0E mov cx, [nmbr];
|
||
78 002D 0B C9 or cx, cx;
|
||
79 002F 74 1F jz @@fertig; Anzahl ist 0;
|
||
80 0031 1E push ds;
|
||
81 0032 56 push si;
|
||
82 0033 57 push di;
|
||
83 0034 9C pushf
|
||
84 0035 C5 76 0A lds si, [q] ; Quelle
|
||
85 0038 C4 7E 06 les di, [z] ; Ziel
|
||
86 003B 3B FE cmp di, si ;
|
||
87 003D 7C 0A jl @@L1 ; Ziel ist kleiner
|
||
88 003F FD std ; Richtungsflag setzen
|
||
89 0040 49 dec cx
|
||
90 0041 03 F9 add di, cx ; Von oben nach unten kopieren
|
||
91 0043 03 F1 add si, cx ;
|
||
92 0045 41 inc cx ; alten Wert wiederherstellen
|
||
93 0046 EB 02 90 jmp @@L2;
|
||
94 0049 @@L1:
|
||
95 0049 FC cld ; Richtungsflag loeschen
|
||
96 004A @@L2: ; und nun das eigentliche kopieren
|
||
97 004A F3> A4 REP movsb ;
|
||
98 004C 9D popf
|
||
99 004D 5F pop di;
|
||
100 004E 5E pop si;
|
||
101 004F 1F pop ds;
|
||
102 0050 @@fertig:
|
||
103 0050 5D pop bp;
|
||
104 0051 FB sti ; enable Interrupts
|
||
105 0052 CB ret
|
||
106 0053 ENDP
|
||
107
|
||
108 0053 PROC _IPXopen_socket;
|
||
109 ARG sock:WORD, live:WORD
|
||
110 P_START
|
||
1 111 0053 55 push bp
|
||
1 112 0054 8B EC mov bp, sp
|
||
113 PUSH_REGS
|
||
1 114 0056 1E push ds
|
||
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 3
|
||
kern.asm
|
||
|
||
|
||
|
||
1 115 0057 56 push si
|
||
1 116 0058 57 push di
|
||
117 0059 8B 46 08 mov ax, [live]
|
||
118 005C 8B 56 06 mov dx, [sock]
|
||
119 005F BB 0000s mov bx, @data
|
||
120 0062 8E DB mov ds, bx
|
||
121 0064 BB 0000 mov bx, 0
|
||
122 0067 FF 1E 0000r call [enterIPX]
|
||
123 006B 3C FF cmp al, 0FFh
|
||
124 006D 75 06 jne @@L1
|
||
125 006F B8 FFFF mov ax, -1 ; Socket already open
|
||
126 0072 EB 0D 90 jmp @@L3
|
||
127 0075 @@L1:
|
||
128 0075 3C FE cmp al, 0FEh
|
||
129 0077 75 06 jne @@L2
|
||
130 0079 B8 FFFE mov ax, -2 ; Socket Table full
|
||
131 007C EB 03 90 jmp @@L3
|
||
132 007F @@L2:
|
||
133 007F 8B C2 mov ax, dx
|
||
134 0081 @@L3:
|
||
135 POP_REGS
|
||
1 136 0081 5F pop di
|
||
1 137 0082 5E pop si
|
||
1 138 0083 1F pop ds
|
||
139 P_END
|
||
1 140 0084 5D pop bp
|
||
141 0085 CB ret
|
||
142 0086 ENDP
|
||
143
|
||
144 0086 PROC _IPXclose_socket;
|
||
145 ARG sock:WORD
|
||
146 P_START
|
||
1 147 0086 55 push bp
|
||
1 148 0087 8B EC mov bp, sp
|
||
149 PUSH_REGS
|
||
1 150 0089 1E push ds
|
||
1 151 008A 56 push si
|
||
1 152 008B 57 push di
|
||
153 008C 8B 56 06 mov dx, [sock]
|
||
154 008F BB 0000s mov bx, @data
|
||
155 0092 8E DB mov ds, bx
|
||
156 0094 BB 0001 mov bx, 1
|
||
157 0097 FF 1E 0000r call [enterIPX]
|
||
158 POP_REGS
|
||
1 159 009B 5F pop di
|
||
1 160 009C 5E pop si
|
||
1 161 009D 1F pop ds
|
||
162 P_END
|
||
1 163 009E 5D pop bp
|
||
164 009F CB ret
|
||
165 00A0 ENDP
|
||
166
|
||
167 00A0 PROC _IPXlisten;
|
||
168 ARG ecb:DATAPTR
|
||
169 P_START
|
||
1 170 00A0 55 push bp
|
||
1 171 00A1 8B EC mov bp, sp
|
||
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 4
|
||
kern.asm
|
||
|
||
|
||
|
||
172 PUSH_REGS
|
||
1 173 00A3 1E push ds
|
||
1 174 00A4 56 push si
|
||
1 175 00A5 57 push di
|
||
176 00A6 C4 76 06 les si, [ecb] ; Adresse ecb
|
||
177 00A9 BB 0000s mov bx, @data
|
||
178 00AC 8E DB mov ds, bx
|
||
179 00AE BB 0004 mov bx, 4
|
||
180 00B1 FF 1E 0000r call [enterIPX]
|
||
181 POP_REGS
|
||
1 182 00B5 5F pop di
|
||
1 183 00B6 5E pop si
|
||
1 184 00B7 1F pop ds
|
||
185 P_END
|
||
1 186 00B8 5D pop bp
|
||
187 00B9 B4 00 mov ah, 0
|
||
188 00BB CB ret
|
||
189 00BC ENDP
|
||
190
|
||
191 ;; PROC _asm_esr_routine;
|
||
192 ;; push bp;
|
||
193 ;; PUSH_REGS;
|
||
194 ;; mov ax, @data
|
||
195 ;; mov ds, ax ; F<>r C PROGRAMM
|
||
196 ;; push es; Adressegment vom EBC
|
||
197 ;; push si; Adressoffset vom ECB
|
||
198 ;; call _esr_routine; C ROUTINE
|
||
199 ;; pop si;
|
||
200 ;; pop es;
|
||
201 ;; POP_REGS;
|
||
202 ;; pop bp;
|
||
203 ;; cli ; no Interrupt says NOVELL
|
||
204 ;; ret
|
||
205 ;; ENDP
|
||
206
|
||
207
|
||
208 00BC PROC _Net_Call;
|
||
209 ARG func:WORD, req:DATAPTR, repl:DATAPTR; Argumente
|
||
210 00BC 55 push bp
|
||
211 00BD 8B EC mov bp, sp
|
||
212 00BF 8B 46 06 mov ax, [func];
|
||
213 00C2 1E push ds;
|
||
214 00C3 56 push si;
|
||
215 00C4 57 push di;
|
||
216 00C5 9C pushf
|
||
217 00C6 C5 76 08 lds si, [req] ; Request
|
||
218 00C9 C4 7E 0C les di, [repl] ; Reply
|
||
219 00CC CD 21 int 21h
|
||
220 00CE 9D popf
|
||
221 00CF 5F pop di;
|
||
222 00D0 5E pop si;
|
||
223 00D1 1F pop ds;
|
||
224 00D2 5D pop bp;
|
||
225 00D3 B4 00 mov ah, 0
|
||
226 00D5 CB ret
|
||
227 00D6 ENDP
|
||
228
|
||
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 5
|
||
kern.asm
|
||
|
||
|
||
|
||
229 END
|
||
Turbo Assembler Version 3.1 28/04/96 13:28:50 Page 6
|
||
Symbol Table
|
||
|
||
|
||
|
||
|
||
Symbol Name Type Value
|
||
|
||
??DATE Text "28/04/96"
|
||
??FILENAME Text "kern "
|
||
??TIME Text "13:28:50"
|
||
??VERSION Number 030A
|
||
@32BIT Text 0
|
||
@@FERTIG Near KERN_TEXT:001F
|
||
@@FERTIG Near KERN_TEXT:0050
|
||
@@L1 Near KERN_TEXT:0049
|
||
@@L1 Near KERN_TEXT:0075
|
||
@@L2 Near KERN_TEXT:004A
|
||
@@L2 Near KERN_TEXT:007F
|
||
@@L3 Near KERN_TEXT:0081
|
||
@CODE Text KERN_TEXT
|
||
@CODESIZE Text 1
|
||
@CPU Text 0787H
|
||
@CURSEG Text KERN_TEXT
|
||
@DATA Text DGROUP
|
||
@DATASIZE Text 1
|
||
@FILENAME Text KERN
|
||
@INTERFACE Text 00H
|
||
@MODEL Text 5
|
||
@STACK Text DGROUP
|
||
@WORDSIZE Text 2
|
||
ECB Number [DGROUP:BP+0006]
|
||
ENTERIPX Dword DGROUP:0000
|
||
FUNC Number [DGROUP:BP+0006]
|
||
LIVE Number [DGROUP:BP+0008]
|
||
NMBR Number [DGROUP:BP+000E]
|
||
Q Number [DGROUP:BP+000A]
|
||
REPL Number [DGROUP:BP+000C]
|
||
REQ Number [DGROUP:BP+0008]
|
||
SOCK Number [DGROUP:BP+0006]
|
||
Z Number [DGROUP:BP+0006]
|
||
_IPXCLOSE_SOCKET + Far KERN_TEXT:0086
|
||
(_IPXclose_socket)
|
||
_IPXINIT (_IPXinit) Far KERN_TEXT:0000
|
||
_IPXLISTEN (_IPXlisten) Far KERN_TEXT:00A0
|
||
_IPXOPEN_SOCKET + Far KERN_TEXT:0053
|
||
(_IPXopen_socket)
|
||
_NET_CALL (_Net_Call) Far KERN_TEXT:00BC
|
||
_XMEMMOVE (_xmemmove) Far KERN_TEXT:0026
|
||
|
||
Macro Name
|
||
|
||
POP_REGS
|
||
PUSH_REGS
|
||
P_END
|
||
P_START
|
||
|
||
Groups & Segments Bit Size Align Combine Class
|
||
|
||
DGROUP Group
|
||
_DATA 16 0004 Word Public DATA
|
||
KERN_TEXT 16 00D6 Word Public CODE
|
||
|