home *** CD-ROM | disk | FTP | other *** search
- ; 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
-