⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 core.lst

📁 一个微型操作系统源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
    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 + -