317 lines
9.6 KiB
Plaintext
317 lines
9.6 KiB
Plaintext
|
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
|
|||
|
|