📄 core.lst
字号:
332 09E4 CD 20 INT 20h
333 09E6 1F POP DS
334 09E7 B8 0001 MOV AX, 0001h
335 09EA F9 STC
1 336 09EB C3 RET 00000h
337
338 09EC 54 68 65 20 73 79 73+ @@shutoff DB 'The system is now safe to switch off...',0
339 74 65 6D 20 69 73 20+
340 6E 6F 77 20 73 61 66+
341 65 20 74 6F 20 73 77+
342 69 74 63 68 20 6F 66+
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 7
core.ASM
instinct - core 0.0.3
343 66 2E 2E 2E 00
344 0A14 63 61 6E 63 65 6C 65+ @@canceled DB 'canceled.',13,10,0
345 64 2E 0D 0A 00
346
347 0A20 ENDP coreShutdown
348
349 0A20 PROC diskfsReadSector NEAR @@SectStart:WORD, @@SectCount:WORD, @@LoadSeg:WORD
350 LOCAL @@Attempt:BYTE
1 351 0A20 C8 0002 00 ENTERW 00002h,0
1 352 0A24 06 PUSH ES
353 0A25 C6 46 FE 03 MOV [@@Attempt], 03h
354
355 0A29 @@sectLoop:
356 0A29 83 7E 06 00 CMP [@@SectCount], 0000h
357 0A2D 74 46 JE @@success
358 CALL getCHS, [@@SectStart]
1 359 0A2F FF 76 04 PUSH [@@SECTSTART]
1 360 0A32 E8 0066 CALL GETCHS
1 361 0A35 83 C4 02 ADD SP,00002h
362 0A38 8B 46 08 MOV AX, [@@LoadSeg]
363 0A3B 8E C0 MOV ES, AX
364 0A3D 33 DB XOR BX, BX
365 0A3F 2E: 8A 2E 003Dr MOV CH, [bdiskfsCYL]
366 0A44 2E: 8A 0E 003Fr MOV CL, [bdiskfSECT]
367 0A49 2E: 8A 36 003Er MOV DH, [bdiskfHEAD]
368 0A4E 2E: 8A 16 003Cr MOV DL, [bDrivNumbr]
369 0A53 B0 01 MOV AL, 01h
370 0A55 B4 02 MOV AH, 02h
371 0A57 CD 13 INT 13h
372 0A59 73 0E JNC @@L01
373 0A5B FE 4E FE DEC [@@Attempt]
374 0A5E 80 7E FE 00 CMP [@@Attempt], 0
375 0A62 74 15 JE @@failure
376 0A64 E8 005A CALL resetDisk
377 0A67 EB C0 JMP @@sectLoop
378 0A69 @@L01:
379 0A69 83 46 08 20 ADD [@@LoadSeg], 20h
380 0A6D FF 46 04 INC [@@SectStart]
381 0A70 FF 4E 06 DEC [@@SectCount]
382 0A73 EB B4 JMP @@sectLoop
383
384 0A75 @@success:
385 0A75 07 POP ES
386 0A76 F8 CLC
1 387 0A77 C9 LEAVEW
1 388 0A78 C3 RET 00000h
389
390 0A79 @@failure:
391 0A79 07 POP ES
392 0A7A F9 STC
1 393 0A7B C9 LEAVEW
1 394 0A7C C3 RET 00000h
395
396 0A7D ENDP diskfsReadSector
397
398 0A7D PROC diskfsWriteSector NEAR
399
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 8
core.ASM
instinct - core 0.0.3
400 0A7D 33 C0 XOR AX, AX
401 0A7F F8 CLC
1 402 0A80 C3 RET 00000h
403
404 0A81 ENDP diskfsWriteSector
405
406 0A81 PROC coreQueryVersion NEAR
407 0A81 2E: A1 0040r MOV AX, [wCoreVersn]
408 0A85 F8 CLC
1 409 0A86 C3 RET 00000h
410
411 0A87 ENDP coreQueryVersion
412
413 0A87 PROC memAlloc NEAR @@length:WORD
1 414 0A87 C8 0000 00 ENTERW 00000h,0
1 415 0A8B 8B 46 04 MOV AX, [@@length]
416 0A8E 2E: 01 06 0A99r ADD [@@NextSeg], AX ; 4K
417 0A93 2E: A1 0A99r MOV AX, [@@NextSeg]
1 418 0A97 C9 LEAVEW
1 419 0A98 C3 RET 00000h
420
421 0A99 0500 @@NextSeg DW 500h
422 0A9B ENDP memAlloc
423
424
425
426
427
428
429 0A9B PROC getCHS NEAR @@address:WORD
1 430 0A9B C8 0000 00 ENTERW 00000h,0
1 431 0A9F 8B 46 04 MOV AX, [@@address]
432 0AA2 33 D2 XOR DX, DX
433 0AA4 2E: F7 36 0038r DIV [wSectsPTrk]
434 0AA9 42 INC DX
435 0AAA 2E: 88 16 003Fr MOV [bdiskfSECT], DL
436 0AAF 33 D2 XOR DX, DX
437 0AB1 2E: F7 36 003Ar DIV [wDrivHeads]
438 0AB6 2E: A2 003Dr MOV [bdiskfsCYL], AL
439 0ABA 2E: 88 16 003Er MOV [bdiskfHEAD], DL
1 440 0ABF C9 LEAVEW
1 441 0AC0 C3 RET 00000h
442
443 0AC1 ENDP getCHS
444
445 0AC1 PROC resetDisk NEAR
446 0AC1 2E: 8A 16 003Cr MOV DL, [bDrivNumbr]
447 0AC6 B4 00 MOV AH, 0
448 0AC8 CD 13 INT 13h
449 0ACA 72 03 JC @@failure
450
451 0ACC @@success:
452 0ACC 33 DB XOR BX, BX
1 453 0ACE C3 RET 00000h
454
455 0ACF @@failure:
456 0ACF BB 0001 MOV BX, 0001h
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 9
core.ASM
instinct - core 0.0.3
1 457 0AD2 C3 RET 00000h
458
459 0AD3 ENDP resetDisk
460
461 0AD3 PROC chainLoad NEAR @@Cluster:WORD, @@StartSeg:WORD
1 462 0AD3 C8 0000 00 ENTERW 00000h,0
1 463 0AD7 06 PUSH ES
464 0AD8 8B 46 04 MOV AX, [@@Cluster]
465
466 0ADB @@chlstart:
467 0ADB 05 001F ADD AX, 31d
468 CALL diskfsReadSector, AX, 0001h, [@@StartSeg]
1 469 0ADE FF 76 06 PUSH [@@STARTSEG]
1 470 0AE1 6A 01 PUSH 0001H
1 471 0AE3 50 PUSH AX
1 472 0AE4 E8 FF39 CALL DISKFSREADSECTOR
1 473 0AE7 83 C4 06 ADD SP,00006h
474 0AEA 72 2F JC @@failure
475 0AEC 83 46 06 20 ADD [@@StartSeg], 20h
476
477 0AF0 B8 2000 MOV AX, 2000h ; FAT
478 0AF3 8E C0 MOV ES, AX
479 0AF5 8B 76 04 MOV SI, [@@Cluster]
480 0AF8 D1 E6 SHL SI, 01d ; si=si*2
481 0AFA 03 76 04 ADD SI, [@@Cluster] ; si=si+cluster (si=si*3)
482 0AFD D1 EE SHR SI, 01d ; si=si/2 (si=si*1.5)
483 0AFF 26: 8B 04 MOV AX, [ES:SI]
484 0B02 73 05 JNC @@L01
485
486 0B04 C1 E8 04 SHR AX, 04d
487 0B07 EB 03 JMP @@L02
488 0B09 @@L01:
489 0B09 25 0FFF AND AX, 0FFFh
490 0B0C @@L02:
491 0B0C 3D 0FF8 CMP AX, 0FF8h
492 0B0F 73 05 JAE @@success
493 0B11 89 46 04 MOV [@@Cluster], AX
494 0B14 EB C5 JMP @@chlstart
495
496 0B16 @@success:
497 0B16 07 POP ES
498 0B17 33 DB XOR BX, BX
1 499 0B19 C9 LEAVEW
1 500 0B1A C3 RET 00000h
501
502 0B1B @@failure:
503 0B1B 07 POP ES
504 0B1C BB 0001 MOV BX, 0001h
1 505 0B1F C9 LEAVEW
1 506 0B20 C3 RET 00000h
507
508 0B21 ENDP chainLoad
509
510 0B21 PROC findFile NEAR @@FilePointer:WORD, @@StartSeg
1 511 0B21 C8 0000 00 ENTERW 00000h,0
1 512 0B25 06 PUSH ES
513 0B26 8B 46 06 MOV AX, [@@StartSeg]
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 10
core.ASM
instinct - core 0.0.3
514 0B29 8E C0 MOV ES, AX
515 0B2B 33 D2 XOR DX, DX
516
517 0B2D @@ffloop1:
518 0B2D 8B 76 04 MOV SI, [@@FilePointer]
519 0B30 8B FA MOV DI, DX
520 0B32 B9 000B MOV CX, 11
521 0B35 FC CLD
522 0B36 F3> A6 REPE CMPSB
523 0B38 74 0B JE @@getCluster
524 0B3A 83 C2 20 ADD DX, 32d
525 0B3D 81 FA 1C00 CMP DX, 1C00h ; 7K
526 0B41 77 15 JA @@failure
527 0B43 EB E8 JMP @@ffloop1
528
529 0B45 @@getcluster:
530 0B45 83 C2 1A ADD DX, 26d
531 0B48 8B FA MOV DI, DX
532 0B4A 26: 8B 05 MOV AX, [ES:DI] ; Start Cluster
533 0B4D 83 C7 04 ADD DI, 4d
534 0B50 26: 8B 0D MOV CX, [ES:DI] ; Size ( <= 64k )
535
536 0B53 @@success:
537 0B53 07 POP ES
538 0B54 33 DB XOR BX, BX
1 539 0B56 C9 LEAVEW
1 540 0B57 C3 RET 00000h
541
542 0B58 @@failure:
543 0B58 07 POP ES
544 0B59 BB 0001 MOV BX, 0001h
1 545 0B5C C9 LEAVEW
1 546 0B5D C3 RET 00000h
547
548 0B5E ENDP findFile
549
550 END start
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 11
Symbol Table
instinct - core 0.0.3
Symbol Name Type Value
??DATE Text "11/01/02"
??FILENAME Text "core "
??TIME Text "01:23:10"
??VERSION Number 040A
@32BIT Text 0
@@ADDRESS Number [DGROUP:BP+0004]
@@ATTEMPT Number [DGROUP:BP-0002]
@@BACKSPACE Near _TEXT:0921
@@BBUFFER Byte _TEXT:07CD
@@BCRLF Byte _TEXT:08CD
@@BLOADFAIL Byte _TEXT:08D5
@@BPROMPT Byte _TEXT:08D0
@@CANCELED Byte _TEXT:0A14
@@CHARLOOP Near _TEXT:08EF
@@CHARSAVE Near _TEXT:091E
@@CHLSTART Near _TEXT:0ADB
@@CLILOOP Near _TEXT:0781
@@CLUSTER Number [DGROUP:BP+0004]
@@FAIL Near _TEXT:07C5
@@FAILURE Near _TEXT:0A79
@@FAILURE Near _TEXT:0ACF
@@FAILURE Near _TEXT:0B1B
@@FAILURE Near _TEXT:0B58
@@FFLOOP1 Near _TEXT:0B2D
@@FILEPOINTER Number [DGROUP:BP+0004]
@@GETCLUSTER Near _TEXT:0B45
@@KEYCANCEL Near _TEXT:0943
@@KEYLOOP Near _TEXT:0903
@@KEYRELEASE Near _TEXT:09A5
@@KEYWAITLOOP Near _TEXT:099D
@@L01 Near _TEXT:0A69
@@L01 Near _TEXT:0B09
@@L02 Near _TEXT:0B0C
@@LENGTH Number [DGROUP:BP+0004]
@@LOADSEG Number [DGROUP:BP+0008]
@@NEXTSEG Word _TEXT:0A99
@@SECTCOUNT Number [DGROUP:BP+0006]
@@SECTLOOP Near _TEXT:0A29
@@SECTSTART Number [DGROUP:BP+0004]
@@SHUTOFF Byte _TEXT:09EC
@@STARTSEG Number [DGROUP:BP+0006]
@@STARTSEG Number [DGROUP:BP+0006]
@@SUCCESS Near _TEXT:08FD
@@SUCCESS Near _TEXT:0949
@@SUCCESS Near _TEXT:09AB
@@SUCCESS Near _TEXT:0A75
@@SUCCESS Near _TEXT:0ACC
@@SUCCESS Near _TEXT:0B16
@@SUCCESS Near _TEXT:0B53
@@WAITLOOP Near _TEXT:0992
@CODE Text _TEXT
@CODESIZE Text 0
@CPU Text 0F0FH
@CURSEG Text _TEXT
Turbo Assembler Version 4.1 11/01/02 01:23:14 Page 12
Symbol Table
instinct - core 0.0.3
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text CORE
@INTERFACE Text 001H
@MODEL Text 2
@STACK Text DGROUP
@WORDSIZE Text 4
APPEXECUTE Near _TEXT:08EB
APPRETURN Near _TEXT:08E7
BDISKFHEAD Byte _TEXT:003E
BDISKFSCYL Byte _TEXT:003D
BDISKFSECT Byte _TEXT:003F
BDRIVNUMBR Byte _TEXT:003C
BMSG Byte _TEXT:0026
CHAINLOAD Near _TEXT:0AD3
CONSOLEBUFFEREDINPUT Near _TEXT:0901
CONSOLEBUFFEREDOUTPUT Near _TEXT:08EF
CONSOLECLEARSCREEN Near _TEXT:0954
CONSOLECLI Near _TEXT:077B
COREBEEP Near _TEXT:0971
COREQUERYVERSION Near _TEXT:0A81
CORESHUTDOWN Near _TEXT:09AF
D00H Near _TEXT:0700
D01H Near _TEXT:070B
D02H Near _TEXT:0716
D03H Near _TEXT:0720
D04H Near _TEXT:072A
D05H Near _TEXT:0734
D06H Near _TEXT:073E
D07H Near _TEXT:0748
D08H Near _TEXT:0758
D09H Near _TEXT:0762
D0AH Near _TEXT:076C
DFFH Near _TEXT:0776
DISKFSREADSECTOR Near _TEXT:0A20
DISKFSWRITESECTOR Near _TEXT:0A7D
DXXH Near _TEXT:077A
FINDFILE Near _TEXT:0B21
GETCHS Near _TEXT:0A9B
INT20H Near _TEXT:0700
MEMALLOC Near _TEXT:0A87
RESETDISK Near _TEXT:0AC1
START Near _TEXT:0000
WCOREVERSN Word _TEXT:0040
WDRIVHEADS Word _TEXT:003A
WSECTSPTRK Word _TEXT:0038
Groups & Segments Bit Size Align Combine Class
DGROUP Group
STACK 16 0400 Para Stack STACK
_DATA 16 0000 Word Public DATA
_TEXT 16 0B5E Word Public CODE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -