home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Mega CD-ROM 1
/
megacd_rom_1.zip
/
megacd_rom_1
/
GNUISH
/
SWALIB0.ZIP
/
_SWAP_L.ASM
next >
Wrap
Assembly Source File
|
1990-09-10
|
46KB
|
2,466 lines
; Static Name Aliases
;
; $S476__swap_kernel_orig_mcbs EQU _swap_kernel_orig_mcbs
; $S459__swap_kernel_handle EQU _swap_kernel_handle
; $S464__swap_kernel_environment_ptr EQU _swap_kernel_environment_ptr
; $S588__swap_kernel_err_msg_3 EQU _swap_kernel_err_msg_3
; $S584__swap_kernel_err_msg_head EQU _swap_kernel_err_msg_head
; $S587__swap_kernel_err_msg_2 EQU _swap_kernel_err_msg_2
; $S586__swap_kernel_err_msg_1 EQU _swap_kernel_err_msg_1
; $S585__swap_kernel_err_msg_0 EQU _swap_kernel_err_msg_0
; $S484__swap_kernel_swap_out EQU _swap_kernel_swap_out
; $S485__swap_kernel_xms_control EQU _swap_kernel_xms_control
; $S569__swap_kernel_int23_message EQU _swap_kernel_int23_message
; $S467__swap_kernel_parameter_block EQU _swap_kernel_parameter_block
; $S568__swap_kernel_user_interrupt EQU _swap_kernel_user_interrupt
; $S472__swap_kernel_environ_seg EQU _swap_kernel_environ_seg
; $S474__swap_kernel_return_code EQU _swap_kernel_return_code
; $S463__swap_kernel_environment EQU _swap_kernel_environment
; $S487__swap_kernel_xms_move_table EQU _swap_kernel_xms_move_table
; $S488__swap_kernel_local_stack EQU _swap_kernel_local_stack
; $S471__swap_kernel_fcb_2 EQU _swap_kernel_fcb_2
; $S470__swap_kernel_fcb_1 EQU _swap_kernel_fcb_1
; $S461__swap_kernel_resident_paras EQU _swap_kernel_resident_paras
; $S480__swap_kernel_swap_in EQU _swap_kernel_swap_in
; $S468__swap_kernel_path EQU _swap_kernel_path
; $S465__swap_kernel_ems_page_frame EQU _swap_kernel_ems_page_frame
; $S462__swap_kernel_first_block_paras EQU _swap_kernel_first_block_paras
; $S469__swap_kernel_cmdline EQU _swap_kernel_cmdline
; $S458__swap_kernel_swapped_bytes EQU _swap_kernel_swapped_bytes
; $S489__swap_kernel_stack_pointer EQU _swap_kernel_stack_pointer
; $S460__swap_kernel_psp EQU _swap_kernel_psp
; $S473__swap_kernel_environment_size EQU _swap_kernel_environment_size
; $S490__swap_kernel_stack_segment EQU _swap_kernel_stack_segment
; $S100_RCS_id EQU RCS_id
; $S566__swap_kernel_caller_int23 EQU _swap_kernel_caller_int23
; $S743_ems_id EQU ems_id
TITLE swap.c
.8087
INCLUDELIB LLIBCE
SWAP_TEXT SEGMENT WORD PUBLIC 'CODE'
SWAP_TEXT ENDS
_DATA SEGMENT WORD PUBLIC 'DATA'
_DATA ENDS
CONST SEGMENT WORD PUBLIC 'CONST'
CONST ENDS
_BSS SEGMENT WORD PUBLIC 'BSS'
_BSS ENDS
SWAP5_DATA SEGMENT PARA PUBLIC 'FAR_DATA'
SWAP5_DATA ENDS
DGROUP GROUP CONST, _BSS, _DATA
ASSUME DS: DGROUP, SS: DGROUP
EXTRN __fstrcpy:FAR
EXTRN __fstrncmp:FAR
EXTRN _unlink:FAR
EXTRN __dos_close:FAR
EXTRN __dos_creat:FAR
EXTRN __aFchkstk:FAR
EXTRN __dos_getdrive:FAR
EXTRN __aFlmul:FAR
EXTRN __dos_getdiskfree:FAR
EXTRN __dos_getvect:FAR
EXTRN _strlen:FAR
EXTRN __aFahdiff:FAR
EXTRN __dos_setvect:FAR
EXTRN __ctype:BYTE
EXTRN _errno:WORD
EXTRN __psp:WORD
_DATA SEGMENT
$S100_RCS_id DB '$Header: e:/gnu/swaplib/RCS/swap.c''v 0.9 90/09/09 21:43:50 '
DB 'tho Stable $', 00H
_DATA ENDS
SWAP5_DATA SEGMENT
$S743_ems_id DB 'EMMXXXX0', 00H
SWAP5_DATA ENDS
_BSS SEGMENT
$S566__swap_kernel_caller_int23 DW 02H DUP (?)
_BSS ENDS
SWAP_TEXT SEGMENT
ASSUME CS: SWAP_TEXT
; Line 1
; Line 27
; Line 28
; Line 29
; Line 30
; Line 31
; Line 32
; Line 33
; Line 34
; Line 35
; Line 259
_swap_kernel_setup_environment PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 261
mov ax,WORD PTR cs:$S463__swap_kernel_environment+2
sub ax,WORD PTR cs:$S460__swap_kernel_psp
mov WORD PTR cs:$S461__swap_kernel_resident_paras,ax
; Line 263
cmp WORD PTR cs:$S473__swap_kernel_environment_size,0
jne $JCC28
jmp $I590
$JCC28:
les bx,DWORD PTR cs:$S464__swap_kernel_environment_ptr
cmp BYTE PTR es:[bx],0
jne $JCC42
jmp $I590
$JCC42:
; Line 264
; Line 267
push WORD PTR cs:$S473__swap_kernel_environment_size
push WORD PTR cs:$S464__swap_kernel_environment_ptr+2
push WORD PTR cs:$S464__swap_kernel_environment_ptr
push WORD PTR cs:$S463__swap_kernel_environment+2
push WORD PTR cs:$S463__swap_kernel_environment
call FAR PTR _swap_kernel_memcpy
add sp,10
; Line 268
mov cl,4
mov ax,WORD PTR cs:$S473__swap_kernel_environment_size
add ax,15
shr ax,cl
add WORD PTR cs:$S461__swap_kernel_resident_paras,ax
; Line 269
mov ax,WORD PTR cs:$S463__swap_kernel_environment+2
mov WORD PTR cs:$S472__swap_kernel_environ_seg,ax
; Line 270
; Line 271
jmp $I591
$I590:
; Line 272
mov WORD PTR cs:$S472__swap_kernel_environ_seg,0
$I591:
; Line 273
$EX589:
pop si
pop di
mov sp,bp
pop bp
ret
$S476__swap_kernel_orig_mcbs DW 032H DUP (?)
$S459__swap_kernel_handle DW 01H DUP (?)
$S464__swap_kernel_environment_ptr DW 02H DUP (?)
$S588__swap_kernel_err_msg_3 DB 'Too many MCBs.', 00H
$S584__swap_kernel_err_msg_head DB 0dH, 0aH, 'Fatal error in memory management. Aborting.', 0dH
DB 0aH, 'Reason: ', 00H
$S587__swap_kernel_err_msg_2 DB 'Can''t release core.', 00H
$S586__swap_kernel_err_msg_1 DB 'Can''t swap code back.', 00H
$S585__swap_kernel_err_msg_0 DB 'Can''t reallocate core.', 00H
$S484__swap_kernel_swap_out DW 02H DUP (?)
$S485__swap_kernel_xms_control DW 02H DUP (?)
$S569__swap_kernel_int23_message DB 0dH, 0aH, 07H, '*** Interrupt.', 0dH, 0aH, 00H
$S467__swap_kernel_parameter_block DW 07H DUP (?)
$S568__swap_kernel_user_interrupt DW 00H
$S472__swap_kernel_environ_seg DW 01H DUP (?)
$S474__swap_kernel_return_code DW 01H DUP (?)
$S463__swap_kernel_environment DW 02H DUP (?)
$S487__swap_kernel_xms_move_table DW 08H DUP (?)
$S488__swap_kernel_local_stack DW 0100H DUP (?)
$S471__swap_kernel_fcb_2 DW 08H DUP (?)
$S470__swap_kernel_fcb_1 DW 08H DUP (?)
$S461__swap_kernel_resident_paras DW 01H DUP (?)
$S480__swap_kernel_swap_in DW 02H DUP (?)
$S468__swap_kernel_path DW 048H DUP (?)
$S465__swap_kernel_ems_page_frame DW 02H DUP (?)
$S462__swap_kernel_first_block_paras DW 01H DUP (?)
$S469__swap_kernel_cmdline DW 040H DUP (?)
$S458__swap_kernel_swapped_bytes DW 02H DUP (?)
$S489__swap_kernel_stack_pointer DW 01H DUP (?)
$S460__swap_kernel_psp DW 01H DUP (?)
$S473__swap_kernel_environment_size DW 01H DUP (?)
$S490__swap_kernel_stack_segment DW 01H DUP (?)
_swap_kernel_setup_environment ENDP
; Line 278
_swap_kernel_memcpy PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; bytes = 14
; source = 10
; destination = 6
; Line 279
; Line 281
push ds
; Line 282
mov cx,WORD PTR [bp+14] ;bytes
; Line 283
lds si,DWORD PTR [bp+10] ;source
; Line 284
les di,DWORD PTR [bp+6] ;destination
; Line 285
shr cx,1
; Line 286
rep movsw
; Line 287
adc cx,cx
; Line 288
rep movsb
; Line 289
pop ds
; Line 290
; Line 292
mov ax,WORD PTR [bp+6] ;destination
mov dx,WORD PTR [bp+8]
jmp $EX595
; Line 293
$EX595:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_memcpy ENDP
; Line 317
_swap_kernel_free_block PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; block = 6
; Line 318
; Line 320
mov ax,WORD PTR [bp+6] ;block
; Line 321
mov es,ax
; Line 322
mov ah,73
; Line 323
int 33
; Line 324
jb $failed598
; Line 325
xor ax,ax
; Line 326
$failed598:
; Line 327
; Line 328
$EX597:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_free_block ENDP
; Line 332
_swap_kernel_set_block PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; paras = 8
; block = 6
; Line 333
; Line 335
mov ax,WORD PTR [bp+6] ;block
; Line 336
mov es,ax
; Line 337
mov bx,WORD PTR [bp+8] ;paras
; Line 338
mov ah,74
; Line 339
int 33
; Line 340
jb $failed602
; Line 341
xor ax,ax
; Line 342
$failed602:
; Line 343
; Line 344
$EX601:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_set_block ENDP
; Line 349
_swap_kernel_allocate_block PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; paras = 6
; Line 350
; Line 352
mov bx,WORD PTR [bp+6] ;paras
; Line 353
mov ah,72
; Line 354
int 33
; Line 355
jae $done605
; Line 356
mov ax,0
; Line 357
$done605:
; Line 358
; Line 359
$EX604:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_allocate_block ENDP
; Line 368
_swap_kernel_free_upper_blocks PROC FAR
push bp
mov bp,sp
sub sp,6
push di
push si
; i = -6
; mcb = -4
; Line 369
mov WORD PTR [bp-6],0 ;i
; Line 372
mov ax,WORD PTR cs:$S460__swap_kernel_psp
dec ax
mov WORD PTR [bp-2],ax
mov WORD PTR [bp-4],0 ;mcb
; Line 374
$FC610:
les bx,DWORD PTR [bp-4] ;mcb
cmp BYTE PTR es:[bx],77
je $JCC1433
jmp $FB611
$JCC1433:
; Line 375
; Line 376
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+3]
inc ax
add WORD PTR [bp-2],ax
; Line 378
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR cs:$S460__swap_kernel_psp
cmp WORD PTR es:[bx+1],ax
je $JCC1460
jmp $I612
$JCC1460:
; Line 379
; Line 380
cmp WORD PTR [bp-6],25 ;i
jge $JCC1469
jmp $I613
$JCC1469:
; Line 381
mov ax,15
push ax
mov ax,OFFSET $S588__swap_kernel_err_msg_3
push ax
mov al,255
push ax
call FAR PTR _swap_kernel_fatal_error
add sp,6
; Line 382
$I613:
mov ax,WORD PTR [bp-2]
inc ax
push ax
call FAR PTR _swap_kernel_free_block
add sp,2
cmp ax,0
jne $JCC1509
jmp $I614
$JCC1509:
; Line 383
mov ax,20
push ax
mov ax,OFFSET $S587__swap_kernel_err_msg_2
push ax
mov al,255
push ax
call FAR PTR _swap_kernel_fatal_error
add sp,6
; Line 384
$I614:
mov ax,WORD PTR [bp-2]
inc ax
mov bx,WORD PTR [bp-6] ;i
shl bx,1
shl bx,1
mov WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx],ax
; Line 385
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+3]
mov bx,WORD PTR [bp-6] ;i
shl bx,1
shl bx,1
mov WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx+2],ax
; Line 386
inc WORD PTR [bp-6] ;i
; Line 387
; Line 388
$I612:
jmp $FC610
$FB611:
; Line 389
mov bx,WORD PTR [bp-6] ;i
shl bx,1
shl bx,1
mov WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx],0
; Line 390
$EX606:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_free_upper_blocks ENDP
; Line 403
_swap_kernel_reclaim_blocks PROC FAR
push bp
mov bp,sp
sub sp,2
push di
push si
; i = -2
; Line 404
mov WORD PTR [bp-2],0 ;i
; Line 406
$FC618:
mov bx,WORD PTR [bp-2] ;i
shl bx,1
shl bx,1
cmp WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx],0
jne $JCC1621
jmp $FB619
$JCC1621:
; Line 408
mov bx,WORD PTR [bp-2] ;i
shl bx,1
shl bx,1
push WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx+2]
call FAR PTR _swap_kernel_allocate_block
add sp,2
mov bx,WORD PTR [bp-2] ;i
shl bx,1
shl bx,1
cmp WORD PTR cs:$S476__swap_kernel_orig_mcbs[bx],ax
jne $JCC1658
jmp $I620
$JCC1658:
; Line 409
mov ax,23
push ax
mov ax,OFFSET $S585__swap_kernel_err_msg_0
push ax
mov al,255
push ax
call FAR PTR _swap_kernel_fatal_error
add sp,6
; Line 410
jmp $I621
$I620:
; Line 411
inc WORD PTR [bp-2] ;i
$I621:
jmp $FC618
$FB619:
; Line 412
$EX615:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_reclaim_blocks ENDP
; Line 417
_swap_kernel_exec PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 419
mov ax,WORD PTR cs:$S472__swap_kernel_environ_seg
mov WORD PTR cs:$S467__swap_kernel_parameter_block,ax
; Line 421
mov WORD PTR cs:$S467__swap_kernel_parameter_block+2,OFFSET $S469__swap_kernel_cmdline
mov WORD PTR cs:$S467__swap_kernel_parameter_block+4,cs
; Line 423
mov WORD PTR cs:$S467__swap_kernel_parameter_block+6,OFFSET $S470__swap_kernel_fcb_1
mov WORD PTR cs:$S467__swap_kernel_parameter_block+8,cs
; Line 425
mov WORD PTR cs:$S467__swap_kernel_parameter_block+10,OFFSET $S471__swap_kernel_fcb_2
mov WORD PTR cs:$S467__swap_kernel_parameter_block+12,cs
; Line 429
; Line 431
push ds
; Line 433
mov ax,cs
; Line 434
mov es,ax
; Line 435
mov ds,ax
; Line 437
mov si,OFFSET $S469__swap_kernel_cmdline
; Line 438
mov di,OFFSET $S470__swap_kernel_fcb_1
; Line 439
mov ax,10497
; Line 440
int 33
; Line 441
mov di,OFFSET $S471__swap_kernel_fcb_2
; Line 442
mov ax,10497
; Line 443
int 33
; Line 444
mov bx,OFFSET $S467__swap_kernel_parameter_block
; Line 445
mov dx,OFFSET $S468__swap_kernel_path
; Line 447
mov ax,19200
; Line 448
int 33
; Line 449
mov ax,-1
; Line 450
jb $failed623
; Line 452
mov ah,77
; Line 453
int 33
; Line 454
mov WORD PTR $S474__swap_kernel_return_code,ax
; Line 456
$failed623:
; Line 457
pop ds
; Line 458
; Line 459
$EX622:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_exec ENDP
; Line 463
_swap_kernel_spawn_child PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 467
; Line 470
mov WORD PTR cs:$S489__swap_kernel_stack_pointer,sp
; Line 471
mov WORD PTR cs:$S490__swap_kernel_stack_segment,ss
; Line 474
cli
; Line 477
mov ax,SEG $S488__swap_kernel_local_stack
; Line 478
mov ss,ax
; Line 479
mov sp,OFFSET $S488__swap_kernel_local_stack+512
; Line 482
sti
; Line 483
; Line 486
push WORD PTR cs:$S458__swap_kernel_swapped_bytes+2
push WORD PTR cs:$S458__swap_kernel_swapped_bytes
push WORD PTR cs:$S463__swap_kernel_environment+2
push WORD PTR cs:$S463__swap_kernel_environment
push WORD PTR cs:$S459__swap_kernel_handle
call DWORD PTR cs:$S484__swap_kernel_swap_out
add sp,10
cmp ax,0
jne $JCC1871
jmp $I625
$JCC1871:
; Line 487
mov ax,-1
jmp $EX624
; Line 489
$I625:
call FAR PTR _swap_kernel_setup_environment
; Line 490
call FAR PTR _swap_kernel_free_upper_blocks
; Line 491
push WORD PTR cs:$S461__swap_kernel_resident_paras
push WORD PTR cs:$S460__swap_kernel_psp
call FAR PTR _swap_kernel_set_block
add sp,4
; Line 493
call FAR PTR _swap_kernel_exec
; Line 496
push WORD PTR cs:$S462__swap_kernel_first_block_paras
push WORD PTR cs:$S460__swap_kernel_psp
call FAR PTR _swap_kernel_set_block
add sp,4
cmp ax,0
jne $JCC1936
jmp $I626
$JCC1936:
; Line 497
mov ax,23
push ax
mov ax,OFFSET $S585__swap_kernel_err_msg_0
push ax
mov al,255
push ax
call FAR PTR _swap_kernel_fatal_error
add sp,6
; Line 498
$I626:
call FAR PTR _swap_kernel_reclaim_blocks
; Line 501
push WORD PTR cs:$S458__swap_kernel_swapped_bytes+2
push WORD PTR cs:$S458__swap_kernel_swapped_bytes
push WORD PTR cs:$S463__swap_kernel_environment+2
push WORD PTR cs:$S463__swap_kernel_environment
push WORD PTR cs:$S459__swap_kernel_handle
call DWORD PTR cs:$S480__swap_kernel_swap_in
add sp,10
cmp ax,0
jne $JCC2001
jmp $I627
$JCC2001:
; Line 502
mov ax,22
push ax
mov ax,OFFSET $S586__swap_kernel_err_msg_1
push ax
mov al,255
push ax
call FAR PTR _swap_kernel_fatal_error
add sp,6
; Line 504
$I627:
; Line 507
mov ax,WORD PTR cs:$S489__swap_kernel_stack_pointer
; Line 508
mov bx,WORD PTR cs:$S490__swap_kernel_stack_segment
; Line 511
cli
; Line 514
mov ss,bx
; Line 515
mov sp,ax
; Line 518
sti
; Line 519
; Line 522
mov ax,WORD PTR cs:$S474__swap_kernel_return_code
jmp $EX624
; Line 524
$EX624:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_spawn_child ENDP
; Line 534
_swap_kernel_fatal_error PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; len = 10
; msg = 8
; code = 6
; Line 535
; Line 537
mov ax,cs
; Line 538
mov ds,ax
; Line 539
mov bx,2
; Line 540
mov dx,OFFSET $S584__swap_kernel_err_msg_head
; Line 541
mov cx,56
; Line 542
mov ah,64
; Line 543
int 33
; Line 544
mov dx,WORD PTR [bp+8] ;msg
; Line 545
mov cx,WORD PTR [bp+10] ;len
; Line 546
mov ah,64
; Line 547
int 33
; Line 548
mov al,BYTE PTR [bp+6] ;code
; Line 549
mov ah,76
; Line 550
int 33
; Line 551
; Line 552
$EX631:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_fatal_error ENDP
; Line 562
_swap_kernel_write_to_handle PROC FAR
push bp
mov bp,sp
sub sp,4
push di
push si
; size = 12
; buffer = 8
; handle = 6
; Line 563
$FC637:
cmp WORD PTR [bp+14],0
jge $JCC2115
jmp $FB638
$JCC2115:
jle $JCC2120
jmp $L20000
$JCC2120:
cmp WORD PTR [bp+12],0 ;size
ja $JCC2129
jmp $FB638
$JCC2129:
$L20000:
; Line 564
; bytes_written = -2
; bytes = -4
; Line 565
mov ax,WORD PTR [bp+12] ;size
mov dx,WORD PTR [bp+14]
cmp dx,0
jge $JCC2143
jmp $L20001
$JCC2143:
jle $JCC2148
jmp $L20002
$JCC2148:
cmp ax,-32768
ja $JCC2156
jmp $L20001
$JCC2156:
$L20002:
mov dx,0
mov ax,-32768
$L20001:
mov WORD PTR [bp-4],ax ;bytes
; Line 566
push WORD PTR [bp-4] ;bytes
push WORD PTR [bp+10]
push WORD PTR [bp+8] ;buffer
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_write
add sp,8
mov WORD PTR [bp-2],ax ;bytes_written
; Line 567
mov ax,WORD PTR [bp-4] ;bytes
cmp WORD PTR [bp-2],ax ;bytes_written
jne $JCC2199
jmp $I641
$JCC2199:
; Line 568
mov ax,-1
jmp $EX635
; Line 569
$I641:
mov cl,4
mov ax,WORD PTR [bp-4] ;bytes
shr ax,cl
add WORD PTR [bp+10],ax
mov al,BYTE PTR [bp-4] ;bytes
sub ah,ah
add WORD PTR [bp+8],ax ;buffer
; Line 570
mov ax,WORD PTR [bp-4] ;bytes
sub dx,dx
sub WORD PTR [bp+12],ax ;size
sbb WORD PTR [bp+14],dx
; Line 571
jmp $FC637
$FB638:
; Line 573
mov ax,0
jmp $EX635
; Line 574
$EX635:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_write_to_handle ENDP
; Line 578
_swap_kernel_write PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; bytes = 12
; buffer = 8
; handle = 6
; Line 579
; Line 581
push ds
; Line 582
mov dx,WORD PTR [bp+8] ;buffer
; Line 583
mov ax,WORD PTR [bp+10]
; Line 584
mov ds,ax
; Line 585
mov bx,WORD PTR [bp+6] ;handle
; Line 586
mov cx,WORD PTR [bp+12] ;bytes
; Line 587
mov ah,64
; Line 588
int 33
; Line 589
jae $done646
; Line 590
mov ax,-1
; Line 591
$done646:
; Line 592
pop ds
; Line 593
; Line 594
$EX645:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_write ENDP
; Line 602
_swap_kernel_read_from_handle PROC FAR
push bp
mov bp,sp
sub sp,4
push di
push si
; size = 12
; buffer = 8
; handle = 6
; Line 603
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_rewind
add sp,2
; Line 605
$FC652:
cmp WORD PTR [bp+14],0
jge $JCC2318
jmp $FB653
$JCC2318:
jle $JCC2323
jmp $L20003
$JCC2323:
cmp WORD PTR [bp+12],0 ;size
ja $JCC2332
jmp $FB653
$JCC2332:
$L20003:
; Line 606
; bytes = -4
; bytes_read = -2
; Line 607
mov ax,WORD PTR [bp+12] ;size
mov dx,WORD PTR [bp+14]
cmp dx,0
jge $JCC2346
jmp $L20004
$JCC2346:
jle $JCC2351
jmp $L20005
$JCC2351:
cmp ax,-32768
ja $JCC2359
jmp $L20004
$JCC2359:
$L20005:
mov dx,0
mov ax,-32768
$L20004:
mov WORD PTR [bp-4],ax ;bytes
; Line 608
push WORD PTR [bp-4] ;bytes
push WORD PTR [bp+10]
push WORD PTR [bp+8] ;buffer
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_read
add sp,8
mov WORD PTR [bp-2],ax ;bytes_read
; Line 609
mov ax,WORD PTR [bp-4] ;bytes
cmp WORD PTR [bp-2],ax ;bytes_read
jne $JCC2402
jmp $I656
$JCC2402:
; Line 610
mov ax,-1
jmp $EX650
; Line 611
$I656:
mov cl,4
mov ax,WORD PTR [bp-4] ;bytes
shr ax,cl
add WORD PTR [bp+10],ax
mov al,BYTE PTR [bp-4] ;bytes
sub ah,ah
add WORD PTR [bp+8],ax ;buffer
; Line 612
mov ax,WORD PTR [bp-4] ;bytes
sub dx,dx
sub WORD PTR [bp+12],ax ;size
sbb WORD PTR [bp+14],dx
; Line 613
jmp $FC652
$FB653:
; Line 615
mov ax,0
jmp $EX650
; Line 616
$EX650:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_read_from_handle ENDP
; Line 620
_swap_kernel_read PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; bytes = 12
; buffer = 8
; handle = 6
; Line 621
; Line 623
push ds
; Line 624
mov dx,WORD PTR [bp+8] ;buffer
; Line 625
mov ax,WORD PTR [bp+10]
; Line 626
mov ds,ax
; Line 627
mov bx,WORD PTR [bp+6] ;handle
; Line 628
mov cx,WORD PTR [bp+12] ;bytes
; Line 629
mov ah,63
; Line 630
int 33
; Line 631
jae $done661
; Line 632
mov ax,-1
; Line 633
$done661:
; Line 634
pop ds
; Line 635
; Line 636
$EX660:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_read ENDP
; Line 643
_swap_kernel_rewind PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; handle = 6
; Line 644
; Line 646
mov bx,WORD PTR [bp+6] ;handle
; Line 647
mov cx,0
; Line 648
mov dx,0
; Line 649
mov ax,16896
; Line 650
int 33
; Line 651
jb $failed664
; Line 652
mov ax,0
; Line 653
$failed664:
; Line 654
; Line 655
$EX663:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_rewind ENDP
; Line 663
_swap_kernel_xms_move_out PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; bytes = 12
; buffer = 8
; handle = 6
; Line 664
mov ax,WORD PTR [bp+12] ;bytes
mov dx,WORD PTR [bp+14]
mov WORD PTR cs:$S487__swap_kernel_xms_move_table,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+2,dx
; Line 665
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+4,0
; Line 666
mov ax,WORD PTR [bp+8] ;buffer
mov dx,WORD PTR [bp+10]
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+6,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+8,dx
; Line 667
mov ax,WORD PTR [bp+6] ;handle
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+10,ax
; Line 668
sub ax,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+14,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+12,ax
; Line 670
call FAR PTR _swap_kernel_xms_move
; Line 671
$EX668:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_xms_move_out ENDP
; Line 675
_swap_kernel_xms_move_in PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; bytes = 12
; buffer = 8
; handle = 6
; Line 676
mov ax,WORD PTR [bp+12] ;bytes
mov dx,WORD PTR [bp+14]
mov WORD PTR cs:$S487__swap_kernel_xms_move_table,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+2,dx
; Line 677
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+10,0
; Line 678
mov ax,WORD PTR [bp+8] ;buffer
mov dx,WORD PTR [bp+10]
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+12,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+14,dx
; Line 679
mov ax,WORD PTR [bp+6] ;handle
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+4,ax
; Line 680
sub ax,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+8,ax
mov WORD PTR cs:$S487__swap_kernel_xms_move_table+6,ax
; Line 682
call FAR PTR _swap_kernel_xms_move
; Line 683
$EX672:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_xms_move_in ENDP
; Line 687
_swap_kernel_xms_move PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 688
; Line 690
push ds
; Line 691
mov si,OFFSET $S487__swap_kernel_xms_move_table
; Line 692
mov ax,SEG $S487__swap_kernel_xms_move_table
; Line 693
mov ds,ax
; Line 694
mov ah,11
; Line 695
call DWORD PTR cs:$S485__swap_kernel_xms_control
; Line 696
cmp ax,1
; Line 697
jne $failed674
; Line 698
mov ax,0
; Line 699
jmp $done675
; Line 700
$failed674:
; Line 701
mov ax,-1
; Line 702
$done675:
; Line 703
pop ds
; Line 704
; Line 705
$EX673:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_xms_move ENDP
; Line 716
_swap_kernel_ems_move_out PROC FAR
push bp
mov bp,sp
sub sp,10
push di
push si
; ptr = -4
; logical_page = -6
; bytes = 12
; buffer = 8
; handle = 6
; Line 717
mov ax,WORD PTR [bp+8] ;buffer
mov dx,WORD PTR [bp+10]
mov WORD PTR [bp-4],ax ;ptr
mov WORD PTR [bp-2],dx
; Line 718
mov WORD PTR [bp-6],0 ;logical_page
; Line 720
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_save_page_map
add sp,2
; Line 722
$FC683:
cmp WORD PTR [bp+14],0
jge $JCC2766
jmp $FB684
$JCC2766:
jle $JCC2771
jmp $L20006
$JCC2771:
cmp WORD PTR [bp+12],0 ;bytes
ja $JCC2780
jmp $FB684
$JCC2780:
$L20006:
; Line 723
; n = -8
; Line 724
mov ax,WORD PTR [bp+12] ;bytes
mov dx,WORD PTR [bp+14]
cmp dx,0
jge $JCC2794
jmp $L20007
$JCC2794:
jle $JCC2799
jmp $L20008
$JCC2799:
cmp ax,16384
ja $JCC2807
jmp $L20007
$JCC2807:
$L20008:
mov dx,0
mov ax,16384
$L20007:
mov WORD PTR [bp-8],ax ;n
; Line 726
push WORD PTR [bp-6] ;logical_page
inc WORD PTR [bp-6] ;logical_page
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_map_logical_pa
add sp,4
cmp ax,0
jne $JCC2841
jmp $I686
$JCC2841:
; Line 727
mov ax,-1
jmp $EX679
; Line 729
$I686:
push WORD PTR [bp-8] ;n
push WORD PTR [bp-2]
push WORD PTR [bp-4] ;ptr
push WORD PTR cs:$S465__swap_kernel_ems_page_frame+2
push WORD PTR cs:$S465__swap_kernel_ems_page_frame
call FAR PTR _swap_kernel_memcpy
add sp,10
; Line 731
mov ax,WORD PTR [bp-8] ;n
sub dx,dx
sub WORD PTR [bp+12],ax ;bytes
sbb WORD PTR [bp+14],dx
; Line 732
mov cl,4
mov ax,WORD PTR [bp-8] ;n
shr ax,cl
add WORD PTR [bp-2],ax
mov al,BYTE PTR [bp-8] ;n
sub ah,ah
add WORD PTR [bp-4],ax ;ptr
; Line 733
jmp $FC683
$FB684:
; Line 735
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_restore_page_m
add sp,2
; Line 737
mov ax,0
jmp $EX679
; Line 738
$EX679:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_ems_move_out ENDP
; Line 743
_swap_kernel_ems_move_in PROC FAR
push bp
mov bp,sp
sub sp,10
push di
push si
; ptr = -4
; logical_page = -6
; bytes = 12
; buffer = 8
; handle = 6
; Line 744
mov ax,WORD PTR [bp+8] ;buffer
mov dx,WORD PTR [bp+10]
mov WORD PTR [bp-4],ax ;ptr
mov WORD PTR [bp-2],dx
; Line 745
mov WORD PTR [bp-6],0 ;logical_page
; Line 747
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_save_page_map
add sp,2
; Line 749
$FC694:
cmp WORD PTR [bp+14],0
jge $JCC2975
jmp $FB695
$JCC2975:
jle $JCC2980
jmp $L20009
$JCC2980:
cmp WORD PTR [bp+12],0 ;bytes
ja $JCC2989
jmp $FB695
$JCC2989:
$L20009:
; Line 750
; n = -8
; Line 751
mov ax,WORD PTR [bp+12] ;bytes
mov dx,WORD PTR [bp+14]
cmp dx,0
jge $JCC3003
jmp $L20010
$JCC3003:
jle $JCC3008
jmp $L20011
$JCC3008:
cmp ax,16384
ja $JCC3016
jmp $L20010
$JCC3016:
$L20011:
mov dx,0
mov ax,16384
$L20010:
mov WORD PTR [bp-8],ax ;n
; Line 753
push WORD PTR [bp-6] ;logical_page
inc WORD PTR [bp-6] ;logical_page
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_map_logical_pa
add sp,4
cmp ax,0
jne $JCC3050
jmp $I697
$JCC3050:
; Line 754
mov ax,-1
jmp $EX690
; Line 756
$I697:
push WORD PTR [bp-8] ;n
push WORD PTR cs:$S465__swap_kernel_ems_page_frame+2
push WORD PTR cs:$S465__swap_kernel_ems_page_frame
push WORD PTR [bp-2]
push WORD PTR [bp-4] ;ptr
call FAR PTR _swap_kernel_memcpy
add sp,10
; Line 758
mov ax,WORD PTR [bp-8] ;n
sub dx,dx
sub WORD PTR [bp+12],ax ;bytes
sbb WORD PTR [bp+14],dx
; Line 759
mov cl,4
mov ax,WORD PTR [bp-8] ;n
shr ax,cl
add WORD PTR [bp-2],ax
mov al,BYTE PTR [bp-8] ;n
sub ah,ah
add WORD PTR [bp-4],ax ;ptr
; Line 760
jmp $FC694
$FB695:
; Line 762
push WORD PTR [bp+6] ;handle
call FAR PTR _swap_kernel_ems_restore_page_m
add sp,2
; Line 764
mov ax,0
jmp $EX690
; Line 765
$EX690:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_ems_move_in ENDP
; Line 770
_swap_kernel_ems_map_logical_pa PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; logical_page = 8
; handle = 6
; Line 771
; Line 773
mov dx,WORD PTR [bp+6] ;handle
; Line 774
mov bx,WORD PTR [bp+8] ;logical_page
; Line 775
mov ax,17408
; Line 776
int 103
; Line 777
mov cl,8
; Line 778
shr ax,cl
; Line 779
; Line 780
$EX700:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_ems_map_logical_pa ENDP
; Line 784
_swap_kernel_ems_save_page_map PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; handle = 6
; Line 785
; Line 787
mov dx,WORD PTR [bp+6] ;handle
; Line 788
mov ah,71
; Line 789
int 103
; Line 790
mov cl,8
; Line 791
shr ax,cl
; Line 792
; Line 793
$EX702:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_ems_save_page_map ENDP
; Line 797
_swap_kernel_ems_restore_page_m PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; handle = 6
; Line 798
; Line 800
mov dx,WORD PTR [bp+6] ;handle
; Line 801
mov ah,72
; Line 802
int 103
; Line 803
mov cl,8
; Line 804
shr ax,cl
; Line 805
; Line 806
$EX704:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_ems_restore_page_m ENDP
; Line 824
_swap_kernel_int23_handler PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 826
mov WORD PTR cs:$S568__swap_kernel_user_interrupt,1
; Line 828
; Line 830
push ax
; Line 831
push bx
; Line 832
push cx
; Line 833
push dx
; Line 834
push ds
; Line 835
pushf
; Line 837
sti
; Line 838
push cs
; Line 839
pop ds
; Line 840
mov bx,2
; Line 841
mov dx,OFFSET $S569__swap_kernel_int23_message
; Line 842
mov cx,20
; Line 843
mov ah,64
; Line 844
int 33
; Line 846
popf
; Line 847
pop ds
; Line 848
pop dx
; Line 849
pop cx
; Line 850
pop bx
; Line 851
pop ax
; Line 853
pop si
; Line 854
pop di
; Line 855
pop bp
; Line 857
stc
; Line 858
ret
; Line 859
; Line 860
$EX705:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_int23_handler ENDP
; Line 867
_swap_kernel_end PROC FAR
push bp
mov bp,sp
sub sp,0
push di
push si
; Line 869
$EX706:
pop si
pop di
mov sp,bp
pop bp
ret
_swap_kernel_end ENDP
; Line 880
install_parameters PROC FAR
push bp
mov bp,sp
mov ax,10
call FAR PTR __aFchkstk
push di
push si
; len = -6
; mcb = -4
; size = 18
; env = 14
; cmdline = 10
; path = 6
; Line 881
push WORD PTR [bp+12]
push WORD PTR [bp+10] ;cmdline
call FAR PTR _strlen
add sp,4
mov WORD PTR [bp-6],ax ;len
; Line 884
push WORD PTR [bp+8]
push WORD PTR [bp+6] ;path
mov ax,OFFSET $S468__swap_kernel_path
push cs
push ax
call FAR PTR __fstrcpy
add sp,8
; Line 886
mov al,BYTE PTR [bp-6] ;len
mov BYTE PTR cs:$S469__swap_kernel_cmdline,al
; Line 887
push WORD PTR [bp+12]
push WORD PTR [bp+10] ;cmdline
mov ax,OFFSET $S469__swap_kernel_cmdline+1
push cs
push ax
call FAR PTR __fstrcpy
add sp,8
; Line 888
mov bx,WORD PTR [bp-6] ;len
mov BYTE PTR cs:$S469__swap_kernel_cmdline[bx+1],13
; Line 890
mov ax,WORD PTR [bp+14] ;env
mov dx,WORD PTR [bp+16]
mov WORD PTR cs:$S464__swap_kernel_environment_ptr,ax
mov WORD PTR cs:$S464__swap_kernel_environment_ptr+2,dx
; Line 891
mov ax,WORD PTR [bp+18] ;size
mov WORD PTR cs:$S473__swap_kernel_environment_size,ax
; Line 893
mov ax,WORD PTR __psp
mov WORD PTR cs:$S460__swap_kernel_psp,ax
; Line 894
mov ax,WORD PTR cs:$S460__swap_kernel_psp
dec ax
mov WORD PTR [bp-2],ax
mov WORD PTR [bp-4],0 ;mcb
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+3]
mov WORD PTR cs:$S462__swap_kernel_first_block_paras,ax
; Line 895
$EX711:
pop si
pop di
mov sp,bp
pop bp
ret
install_parameters ENDP
; Line 904
alloc_swap_kernel_file PROC FAR
push bp
mov bp,sp
mov ax,18
call FAR PTR __aFchkstk
push di
push si
; disk_free = -16
; drive = -6
; free = -4
; handle = -8
; size = 10
; name = 6
; Line 910
mov ax,WORD PTR [bp+8]
or ax,WORD PTR [bp+6] ;name
jne $JCC3457
jmp $I722
$JCC3457:
les bx,DWORD PTR [bp+6] ;name
cmp BYTE PTR es:[bx],0
je $JCC3469
jmp $I721
$JCC3469:
$I722:
; Line 911
mov ax,-1
jmp $EX716
; Line 913
$I721:
les bx,DWORD PTR [bp+6] ;name
cmp BYTE PTR es:[bx+1],58
je $JCC3488
jmp $I723
$JCC3488:
; Line 914
les bx,DWORD PTR [bp+6] ;name
mov al,BYTE PTR es:[bx]
cbw
mov bx,ax
test BYTE PTR __ctype[bx+1],1
jne $JCC3507
jmp $L20013
$JCC3507:
les bx,DWORD PTR [bp+6] ;name
mov al,BYTE PTR es:[bx]
cbw
add ax,32
jmp $L20014
$L20013:
les bx,DWORD PTR [bp+6] ;name
mov al,BYTE PTR es:[bx]
cbw
$L20014:
sub ax,96
mov WORD PTR [bp-6],ax ;drive
; Line 915
jmp $I724
$I723:
; Line 917
lea ax,WORD PTR [bp-6] ;drive
push ss
push ax
call FAR PTR __dos_getdrive
add sp,4
$I724:
; Line 919
lea ax,WORD PTR [bp-16] ;disk_free
push ss
push ax
push WORD PTR [bp-6] ;drive
call FAR PTR __dos_getdiskfree
add sp,6
; Line 922
mov ax,WORD PTR [bp-10]
sub dx,dx
push dx
push ax
mov ax,WORD PTR [bp-14]
mul WORD PTR [bp-12]
push dx
push ax
call FAR PTR __aFlmul
mov WORD PTR [bp-4],ax ;free
mov WORD PTR [bp-2],dx
; Line 924
mov ax,WORD PTR [bp-4] ;free
mov dx,WORD PTR [bp-2]
cmp WORD PTR [bp+12],dx
jge $JCC3605
jmp $I725
$JCC3605:
jle $JCC3610
jmp $L20016
$JCC3610:
cmp WORD PTR [bp+10],ax ;size
ja $JCC3618
jmp $I725
$JCC3618:
$L20016:
; Line 925
mov ax,-1
jmp $EX716
; Line 927
$I725:
lea ax,WORD PTR [bp-8] ;handle
push ss
push ax
mov ax,0
push ax
push WORD PTR [bp+8]
push WORD PTR [bp+6] ;name
call FAR PTR __dos_creat
add sp,10
cmp ax,0
jne $JCC3655
jmp $I726
$JCC3655:
; Line 928
mov ax,-1
jmp $EX716
; Line 929
jmp $I727
$I726:
; Line 930
mov ax,WORD PTR [bp-8] ;handle
jmp $EX716
$I727:
; Line 931
$EX716:
pop si
pop di
mov sp,bp
pop bp
ret
alloc_swap_kernel_file ENDP
; Line 937
cleanup_swap_kernel_file PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; name = 8
; handle = 6
; Line 938
push WORD PTR [bp+6] ;handle
call FAR PTR __dos_close
add sp,2
cmp ax,0
je $JCC3708
jmp $L20017
$JCC3708:
push WORD PTR [bp+10]
push WORD PTR [bp+8] ;name
call FAR PTR _unlink
add sp,4
cmp ax,0
je $JCC3730
jmp $L20017
$JCC3730:
mov ax,1
jmp $L20018
$L20017:
mov ax,0
$L20018:
jmp $EX730
; Line 939
$EX730:
pop si
pop di
mov sp,bp
pop bp
ret
cleanup_swap_kernel_file ENDP
; Line 949
xms_installed PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; Line 950
; Line 952
mov ax,17152
; Line 953
int 47
; Line 954
cmp al,128
; Line 955
jne $failed732
; Line 956
mov ax,1
; Line 957
jmp $done733
; Line 958
$failed732:
; Line 959
mov ax,0
; Line 960
$done733:
; Line 961
; Line 962
$EX731:
pop si
pop di
mov sp,bp
pop bp
ret
xms_installed ENDP
; Line 966
xms_get_control_function PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; Line 967
; Line 969
mov ax,17168
; Line 970
int 47
; Line 971
mov WORD PTR cs:$S485__swap_kernel_xms_control,bx
; Line 972
mov bx,es
; Line 973
mov WORD PTR cs:$S485__swap_kernel_xms_control+2,bx
; Line 974
; Line 975
$EX734:
pop si
pop di
mov sp,bp
pop bp
ret
xms_get_control_function ENDP
; Line 979
xms_allocate_memory PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; kilobytes = 6
; Line 980
; Line 982
mov dx,WORD PTR [bp+6] ;kilobytes
; Line 983
mov ah,9
; Line 984
call DWORD PTR cs:$S485__swap_kernel_xms_control
; Line 985
cmp ax,1
; Line 986
jne $failed737
; Line 987
mov ax,dx
; Line 988
jmp $done738
; Line 989
$failed737:
; Line 990
mov ax,-1
; Line 991
$done738:
; Line 992
; Line 993
$EX736:
pop si
pop di
mov sp,bp
pop bp
ret
xms_allocate_memory ENDP
; Line 997
xms_free_memory PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; handle = 6
; Line 998
; Line 1000
mov dx,WORD PTR [bp+6] ;handle
; Line 1001
mov ah,10
; Line 1002
call DWORD PTR cs:$S485__swap_kernel_xms_control
; Line 1003
cmp ax,1
; Line 1004
je $done741
; Line 1005
mov ax,0
; Line 1006
$done741:
; Line 1007
; Line 1008
$EX740:
pop si
pop di
mov sp,bp
pop bp
ret
xms_free_memory ENDP
; Line 1020
ems_present PROC FAR
push bp
mov bp,sp
mov ax,4
call FAR PTR __aFchkstk
push di
push si
; ems_device = -4
; Line 1028
mov ax,103
push ax
call FAR PTR __dos_getvect
add sp,2
mov WORD PTR [bp-4],ax ;ems_device
mov WORD PTR [bp-2],dx
; Line 1030
mov WORD PTR [bp-4],10 ;ems_device
; Line 1032
mov ax,8
push ax
push WORD PTR [bp-2]
push WORD PTR [bp-4] ;ems_device
mov ax,OFFSET $S743_ems_id
mov cx,SEG $S743_ems_id
push cx
push ax
call FAR PTR __fstrncmp
add sp,10
cmp ax,1
sbb ax,ax
neg ax
jmp $EX742
; Line 1033
$EX742:
pop si
pop di
mov sp,bp
pop bp
ret
ems_present ENDP
; Line 1039
ems_alloc_pages PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; n = 6
; Line 1040
; Line 1042
mov bx,WORD PTR [bp+6] ;n
; Line 1043
mov ah,67
; Line 1044
int 103
; Line 1045
cmp ah,0
; Line 1046
je $success747
; Line 1047
mov ax,-1
; Line 1048
ret
; Line 1049
$success747:
; Line 1050
mov ax,dx
; Line 1051
; Line 1052
$EX746:
pop si
pop di
mov sp,bp
pop bp
ret
ems_alloc_pages ENDP
; Line 1058
ems_free_pages PROC FAR
push bp
mov bp,sp
mov ax,0
call FAR PTR __aFchkstk
push di
push si
; handle = 6
; Line 1059
; Line 1061
mov dx,WORD PTR [bp+6] ;handle
; Line 1062
mov ah,69
; Line 1063
int 103
; Line 1064
mov cl,8
; Line 1065
shr ax,cl
; Line 1066
; Line 1067
$EX749:
pop si
pop di
mov sp,bp
pop bp
ret
ems_free_pages ENDP
; Line 1073
ems_get_page_frame PROC FAR
push bp
mov bp,sp
mov ax,4
call FAR PTR __aFchkstk
push di
push si
; frame = -4
; Line 1074
sub ax,ax
mov WORD PTR [bp-2],ax
mov WORD PTR [bp-4],ax ;frame
; Line 1076
; Line 1078
mov ah,65
; Line 1079
int 103
; Line 1080
cmp ah,0
; Line 1081
je $success752
; Line 1082
ret
; Line 1083
$success752:
; Line 1084
mov WORD PTR [bp-2],bx
; Line 1085
; Line 1087
mov ax,WORD PTR [bp-4] ;frame
mov dx,WORD PTR [bp-2]
jmp $EX750
; Line 1088
$EX750:
pop si
pop di
mov sp,bp
pop bp
ret
ems_get_page_frame ENDP
; Line 1098
last_mcb PROC FAR
push bp
mov bp,sp
mov ax,8
call FAR PTR __aFchkstk
push di
push si
; mcb = -4
; ret = -8
; Line 1102
mov ax,WORD PTR cs:$S460__swap_kernel_psp
dec ax
mov WORD PTR [bp-2],ax
mov WORD PTR [bp-4],0 ;mcb
; Line 1104
$FC757:
les bx,DWORD PTR [bp-4] ;mcb
cmp BYTE PTR es:[bx],77
je $JCC4132
jmp $FB758
$JCC4132:
; Line 1105
; Line 1106
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+1]
cmp WORD PTR cs:$S460__swap_kernel_psp,ax
je $JCC4149
jmp $I759
$JCC4149:
; Line 1107
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+3]
inc ax
add WORD PTR [bp-2],ax
mov ax,WORD PTR [bp-4] ;mcb
mov dx,WORD PTR [bp-2]
mov WORD PTR [bp-8],ax ;ret
mov WORD PTR [bp-6],dx
; Line 1108
jmp $I760
$I759:
; Line 1109
les bx,DWORD PTR [bp-4] ;mcb
mov ax,WORD PTR es:[bx+3]
inc ax
add WORD PTR [bp-2],ax
$I760:
; Line 1110
jmp $FC757
$FB758:
; Line 1112
les bx,DWORD PTR [bp-4] ;mcb
cmp BYTE PTR es:[bx],90
je $JCC4201
jmp $I761
$JCC4201:
; Line 1113
mov ax,WORD PTR [bp-8] ;ret
mov dx,WORD PTR [bp-6]
jmp $EX753
; Line 1114
jmp $I762
$I761:
; Line 1115
mov ax,0
mov dx,0
jmp $EX753
$I762:
; Line 1116
$EX753:
pop si
pop di
mov sp,bp
pop bp
ret
last_mcb ENDP
; Line 1130
PUBLIC __swap_spawn_child
__swap_spawn_child PROC FAR
push bp
mov bp,sp
mov ax,6
call FAR PTR __aFchkstk
push di
push si
; rc = -2
; cleanup_function = -6
; file = 22
; len = 20
; env = 16
; cmdline = 12
; path = 8
; mode = 6
; Line 1134
push WORD PTR [bp+20] ;len
push WORD PTR [bp+18]
push WORD PTR [bp+16] ;env
push WORD PTR [bp+14]
push WORD PTR [bp+12] ;cmdline
push WORD PTR [bp+10]
push WORD PTR [bp+8] ;path
call FAR PTR install_parameters
add sp,14
; Line 1136
mov WORD PTR cs:$S463__swap_kernel_environment,OFFSET _swap_kernel_end
mov WORD PTR cs:$S463__swap_kernel_environment+2,SEG _swap_kernel_end
; Line 1137
mov cl,4
mov ax,WORD PTR cs:$S463__swap_kernel_environment
add ax,15
shr ax,cl
inc ax
add WORD PTR cs:$S463__swap_kernel_environment+2,ax
mov WORD PTR cs:$S463__swap_kernel_environment,0
; Line 1140
push WORD PTR cs:$S463__swap_kernel_environment+2
push WORD PTR cs:$S463__swap_kernel_environment
call FAR PTR last_mcb
push dx
push ax
call FAR PTR __aFahdiff
mov WORD PTR cs:$S458__swap_kernel_swapped_bytes,ax
mov WORD PTR cs:$S458__swap_kernel_swapped_bytes+2,dx
; Line 1142
mov ax,WORD PTR [bp+6] ;mode
jmp $S774
; Line 1143
; Line 1144
$SC778:
; Line 1146
call FAR PTR xms_installed
cmp ax,0
jne $JCC4358
jmp $I779
$JCC4358:
; Line 1147
; Line 1148
call FAR PTR xms_get_control_function
; Line 1149
mov WORD PTR cs:$S484__swap_kernel_swap_out,OFFSET _swap_kernel_xms_move_out
mov WORD PTR cs:$S484__swap_kernel_swap_out+2,SEG _swap_kernel_xms_move_out
; Line 1150
mov WORD PTR cs:$S480__swap_kernel_swap_in,OFFSET _swap_kernel_xms_move_in
mov WORD PTR cs:$S480__swap_kernel_swap_in+2,SEG _swap_kernel_xms_move_in
; Line 1151
mov WORD PTR [bp-6],OFFSET xms_free_memory ;cleanup_function
mov WORD PTR [bp-4],SEG xms_free_memory
; Line 1155
mov ax,WORD PTR cs:$S458__swap_kernel_swapped_bytes
mov dx,WORD PTR cs:$S458__swap_kernel_swapped_bytes+2
sub ax,1
sbb dx,0
mov al,ah
mov ah,dl
mov dl,dh
shl dh,1
sbb dh,dh
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
inc ax
push ax
call FAR PTR xms_allocate_memory
add sp,2
mov WORD PTR cs:$S459__swap_kernel_handle,ax
; Line 1156
cmp WORD PTR cs:$S459__swap_kernel_handle,-1
jne $JCC4459
jmp $I780
$JCC4459:
; Line 1157
jmp $SB775
; Line 1158
$I780:
; Line 1162
$I779:
$SC781:
; Line 1164
call FAR PTR ems_present
cmp ax,0
jne $JCC4475
jmp $I782
$JCC4475:
; Line 1165
; Line 1166
mov WORD PTR cs:$S484__swap_kernel_swap_out,OFFSET _swap_kernel_ems_move_out
mov WORD PTR cs:$S484__swap_kernel_swap_out+2,SEG _swap_kernel_ems_move_out
; Line 1167
mov WORD PTR cs:$S480__swap_kernel_swap_in,OFFSET _swap_kernel_ems_move_in
mov WORD PTR cs:$S480__swap_kernel_swap_in+2,SEG _swap_kernel_ems_move_in
; Line 1168
mov WORD PTR [bp-6],OFFSET ems_free_pages ;cleanup_function
mov WORD PTR [bp-4],SEG ems_free_pages
; Line 1169
call FAR PTR ems_get_page_frame
mov WORD PTR cs:$S465__swap_kernel_ems_page_frame,ax
mov WORD PTR cs:$S465__swap_kernel_ems_page_frame+2,dx
; Line 1172
mov ax,WORD PTR cs:$S458__swap_kernel_swapped_bytes
mov dx,WORD PTR cs:$S458__swap_kernel_swapped_bytes+2
sub ax,1
sbb dx,0
mov al,ah
mov ah,dl
mov dl,dh
shl dh,1
sbb dh,dh
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
sar dx,1
rcr ax,1
inc ax
push ax
call FAR PTR ems_alloc_pages
add sp,2
mov WORD PTR cs:$S459__swap_kernel_handle,ax
; Line 1173
mov ax,WORD PTR cs:$S465__swap_kernel_ems_page_frame+2
or ax,WORD PTR cs:$S465__swap_kernel_ems_page_frame
jne $JCC4604
jmp $I783
$JCC4604:
cmp WORD PTR cs:$S459__swap_kernel_handle,-1
jne $JCC4615
jmp $I783
$JCC4615:
; Line 1174
jmp $SB775
; Line 1175
$I783:
; Line 1179
$I782:
$SC784:
; Line 1180
mov WORD PTR cs:$S484__swap_kernel_swap_out,OFFSET _swap_kernel_write_to_handle
mov WORD PTR cs:$S484__swap_kernel_swap_out+2,SEG _swap_kernel_write_to_handle
; Line 1181
mov WORD PTR cs:$S480__swap_kernel_swap_in,OFFSET _swap_kernel_read_from_handle
mov WORD PTR cs:$S480__swap_kernel_swap_in+2,SEG _swap_kernel_read_from_handle
; Line 1182
mov WORD PTR [bp-6],OFFSET cleanup_swap_kernel_file ;cleanup_function
mov WORD PTR [bp-4],SEG cleanup_swap_kernel_file
; Line 1184
push WORD PTR cs:$S458__swap_kernel_swapped_bytes+2
push WORD PTR cs:$S458__swap_kernel_swapped_bytes
push WORD PTR [bp+24]
push WORD PTR [bp+22] ;file
call FAR PTR alloc_swap_kernel_file
add sp,8
mov WORD PTR cs:$S459__swap_kernel_handle,ax
; Line 1185
cmp WORD PTR cs:$S459__swap_kernel_handle,-1
jne $JCC4695
jmp $I785
$JCC4695:
; Line 1186
jmp $SB775
; Line 1188
$I785:
mov WORD PTR _errno,28
; Line 1189
mov ax,-1
jmp $EX770
; Line 1191
$SC786:
; Line 1194
mov WORD PTR _errno,22
; Line 1195
mov ax,-1
jmp $EX770
; Line 1196
jmp $SB775
$S774:
or ax,ax
jne $JCC4732
jmp $SC786
$JCC4732:
dec ax
jne $JCC4738
jmp $SC784
$JCC4738:
dec ax
jne $JCC4744
jmp $SC781
$JCC4744:
dec ax
jne $JCC4750
jmp $SC778
$JCC4750:
jmp $SB775
$SB775:
; Line 1198
mov WORD PTR cs:$S568__swap_kernel_user_interrupt,0
; Line 1201
mov ax,35
push ax
call FAR PTR __dos_getvect
add sp,2
mov WORD PTR $S566__swap_kernel_caller_int23,ax
mov WORD PTR $S566__swap_kernel_caller_int23+2,dx
; Line 1202
mov ax,OFFSET _swap_kernel_int23_handler
mov dx,SEG _swap_kernel_int23_handler
push dx
push ax
mov ax,35
push ax
call FAR PTR __dos_setvect
add sp,6
; Line 1204
call FAR PTR _swap_kernel_spawn_child
mov WORD PTR [bp-2],ax ;rc
; Line 1207
cmp WORD PTR cs:$S568__swap_kernel_user_interrupt,0
jne $JCC4818
jmp $I787
$JCC4818:
; Line 1208
or WORD PTR [bp-2],512 ;rc
; Line 1210
$I787:
push WORD PTR $S566__swap_kernel_caller_int23+2
push WORD PTR $S566__swap_kernel_caller_int23
mov ax,35
push ax
call FAR PTR __dos_setvect
add sp,6
; Line 1212
push WORD PTR [bp+24]
push WORD PTR [bp+22] ;file
push WORD PTR cs:$S459__swap_kernel_handle
call DWORD PTR [bp-6] ;cleanup_function
add sp,6
; Line 1214
mov ax,WORD PTR [bp-2] ;rc
jmp $EX770
; Line 1215
$EX770:
pop si
pop di
mov sp,bp
pop bp
ret
__swap_spawn_child ENDP
SWAP_TEXT ENDS
END