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

📄 core.lst

📁 一个微型操作系统源码
💻 LST
📖 第 1 页 / 共 2 页
字号:
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 1
core.ASM
instinct - core	0.0.3


      1						     %TITLE	 "instinct - core 0.0.3"
      2
      3					 ; APM code provided by	Vinny <vincent@gmx.at>
      4					 ; FAT12 code provided by Simeon Maxein	<smaxein@freenet.de>
      5					 ; IDEAL mode code inspired by Tom Swan's Mastering Borland Turbo Assembler
      6
      7						     IDEAL
      8	    0000				     MODEL	 SMALL,	C
      9	    0000				     STACK
     10						     JUMPS
     11						     LOCALS	 @@
     12	    0400				     CODESEG
     13						     P386N
     14	    0000			 start:
     15	    0000  8C C8				     MOV	 AX, CS
     16	    0002  8E D8				     MOV	 DS, AX
     17	    0004  8E C0				     MOV	 ES, AX
     18	    0006  66| C1 E0 10			     SHL	 EAX, 16d		     ; Map Interrupt 20h
     19	    000A  B8 0700r			     MOV	 AX, OFFSET int20h
     20	    000D  33 DB				     XOR	 BX, BX
     21	    000F  8E E3				     MOV	 FS, BX
     22	    0011  FA				     CLI
     23	    0012  66| 64: A3 0080		     MOV	 [FS:20h*4], EAX
     24	    0017  FB				     STI
     25
     26	    0018  E8 0939			     CALL	 consoleClearScreen
     27	    001B  BE 0026r			     MOV	 SI, OFFSET bMSG
     28	    001E  E8 08CE			     CALL	 consoleBufferedOutput
     29	    0021  E8 0757			     CALL	 consoleCLI
     30	    0024  EB FE				     JMP	 $
     31
     32	    0026  69 6E	73 74 69 6E 63+	 bMSG	     DB		 'instinct v0.0.3',13,10,0
     33		  74 20	76 30 2E 30 2E+
     34		  33 0D	0A 00
     35
     36	    0038  0012			 wSectsPTrk  DW		 18d
     37	    003A  0002			 wDrivHeads  DW		 2d
     38	    003C  00			 bDrivNumbr  DB		 00h
     39	    003D  ??			 bdiskfsCYL  DB		 ?
     40	    003E  ??			 bdiskfHEAD  DB		 ?
     41	    003F  ??			 bdiskfSECT  DB		 ?
     42	    0040  0003			 wCoreVersn  DW		 0003h
     43
     44
     45
     46
     47
     48
     49
     50
     51
     52						     ORG	 700h
     53	    0700			 int20h:
     54	    0700  80 FC	00		 D00h:	     CMP	 AH, 00h
     55	    0703  75 06				     JNE	 D01h
     56	    0705  E8 01DF			     CALL	 appReturn
     57	    0708  EB 70	90			     JMP	 Dxxh
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 2
core.ASM
instinct - core	0.0.3


     58	    070B  80 FC	01		 D01h:	     CMP	 AH, 01h
     59	    070E  75 06				     JNE	 D02h
     60	    0710  E8 01D8			     CALL	 appExecute
     61	    0713  EB 65	90			     JMP	 Dxxh
     62	    0716  80 FC	02		 D02h:	     CMP	 AH, 02h
     63	    0719  75 05				     JNE	 D03h
     64	    071B  E8 01D1			     CALL	 consoleBufferedOutput
     65	    071E  EB 5A				     JMP	 Dxxh
     66	    0720  80 FC	03		 D03h:	     CMP	 AH, 03h
     67	    0723  75 05				     JNE	 D04h
     68	    0725  E8 01D9			     CALL	 consoleBufferedInput
     69	    0728  EB 50				     JMP	 Dxxh
     70	    072A  80 FC	04		 D04h:	     CMP	 AH, 04h
     71	    072D  75 05				     JNE	 D05h
     72	    072F  E8 0222			     CALL	 consoleClearScreen
     73	    0732  EB 46				     JMP	 Dxxh
     74	    0734  80 FC	05		 D05h:	     CMP	 AH, 05h
     75	    0737  75 05				     JNE	 D06h
     76	    0739  E8 0235			     CALL	 coreBeep
     77	    073C  EB 3C				     JMP	 Dxxh
     78	    073E  80 FC	06		 D06h:	     CMP	 AH, 06h
     79	    0741  75 05				     JNE	 D07h
     80	    0743  E8 0269			     CALL	 coreShutdown
     81	    0746  EB 32				     JMP	 Dxxh
     82	    0748  80 FC	07		 D07h:	     CMP	 AH, 07h
     83	    074B  75 0B				     JNE	 D08h
     84						     CALL	 diskfsReadSector, BX, CX, ES
1    85	    074D  06				 PUSH	 ES
1    86	    074E  51				 PUSH	 CX
1    87	    074F  53				 PUSH	 BX
1    88	    0750  E8 02CD			 CALL	 DISKFSREADSECTOR
1    89	    0753  83 C4	06			 ADD	 SP,00006h
     90	    0756  EB 22				     JMP	 Dxxh
     91	    0758  80 FC	08		 D08h:	     CMP	 AH, 08h
     92	    075B  75 05				     JNE	 D09h
     93	    075D  E8 031D			     CALL	 diskfsWriteSector
     94	    0760  EB 18				     JMP	 Dxxh
     95	    0762  80 FC	09		 D09h:	     CMP	 AH, 09h
     96	    0765  75 05				     JNE	 D0Ah
     97	    0767  E8 0317			     CALL	 coreQueryVersion
     98	    076A  EB 0E				     JMP	 Dxxh
     99	    076C  80 FC	0A		 D0Ah:	     CMP	 AH, 0Ah
    100	    076F  75 05				     JNE	 DFFh
    101	    0771  E8 0007			     CALL	 consoleCLI
    102	    0774  EB 04				     JMP	 Dxxh
    103	    0776  B8 FFFF		 DFFh:	     MOV	 AX, 0FFFFh
    104	    0779  F9				     STC
    105	    077A			 Dxxh:
    106	    077A  CF				     IRET
    107
    108
    109
    110
    111
    112
    113
    114	    077B			 PROC consoleCLI NEAR
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 3
core.ASM
instinct - core	0.0.3


    115	    077B  8C C8				     MOV	 AX, CS
    116	    077D  8E D8				     MOV	 DS, AX
    117	    077F  8E C0				     MOV	 ES, AX
    118	    0781			 @@CLILoop:
    119	    0781  BE 08D0r			     MOV	 SI, OFFSET @@bPrompt
    120	    0784  E8 0168			     CALL	 consoleBufferedOutput
    121	    0787  BF 07CDr			     MOV	 DI, OFFSET @@bBuffer
    122	    078A  B9 00FF			     MOV	 CX, 0FFh
    123	    078D  E8 0171			     CALL	 consoleBufferedInput
    124	    0790  81 FF	07CEr			     CMP	 DI, OFFSET @@bBuffer+1
    125	    0794  74 EB				     JE		 @@CLILoop
    126	    0796  BE 08CDr			     MOV	 SI, OFFSET @@bCRLF
    127	    0799  E8 0153			     CALL	 consoleBufferedOutput
    128
    129						     CALL	 findFile, OFFSET @@bBuffer, 2500h
1   130	    079C  68 2500			 PUSH	 2500H
1   131	    079F  68 07CDr			 PUSH	 OFFSET	@@BBUFFER
1   132	    07A2  E8 037C			 CALL	 FINDFILE
1   133	    07A5  83 C4	04			 ADD	 SP,00004h
    134	    07A8  0B DB				     OR		 BX, BX
    135	    07AA  75 19				     JNZ	 @@Fail
    136						     CALL	 chainLoad, AX,	5000h
1   137	    07AC  68 5000			 PUSH	 5000H
1   138	    07AF  50				 PUSH	 AX
1   139	    07B0  E8 0320			 CALL	 CHAINLOAD
1   140	    07B3  83 C4	04			 ADD	 SP,00004h
    141	    07B6  0B DB				     OR		 BX, BX
    142	    07B8  75 0B				     JNZ	 @@Fail
    143	    07BA  1E				     PUSH	 DS
    144	    07BB  06				     PUSH	 ES
    145	    07BC  9A				     DB		 09Ah
    146	    07BD  0000				     DW		 0000h
    147	    07BF  5000				     DW		 5000h
    148	    07C1  07				     POP	 ES
    149	    07C2  1F				     POP	 DS
    150
    151	    07C3  EB BC				     JMP	 @@CLILoop
    152	    07C5			 @@Fail:
    153	    07C5  BE 08D5r			     MOV	 SI, OFFSET @@bLoadFail
    154	    07C8  E8 0124			     CALL	 consoleBufferedOutput
    155	    07CB  EB B4				     JMP	 @@CLILoop
    156
    157	    07CD  0100*(??)		 @@bBuffer   DB		 256 DUP (?)
    158	    08CD  0D 0A	00		 @@bCRLF     DB		 13,10,0
    159	    08D0  0D 0A	3E 20 00	 @@bPrompt   DB		 13,10,'> ',0
    160	    08D5  55 6E	6B 6E 6F 77 6E+	 @@bLoadFail DB		 'Unknown Command',13,10,0
    161		  20 43	6F 6D 6D 61 6E+
    162		  64 0D	0A 00
    163
    164	    08E7			 ENDP consoleCLI
    165
    166	    08E7			 PROC appReturn	NEAR
    167	    08E7  33 C0				     XOR	 AX, AX
    168	    08E9  F8				     CLC
1   169	    08EA  C3				 RET	 00000h
    170
    171	    08EB			 ENDP appReturn
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 4
core.ASM
instinct - core	0.0.3


    172
    173	    08EB			 PROC appExecute NEAR
    174	    08EB  33 C0				     XOR	 AX, AX
    175	    08ED  F8				     CLC
1   176	    08EE  C3				 RET	 00000h
    177
    178	    08EF			 ENDP appExecute
    179
    180	    08EF			 PROC consoleBufferedOutput NEAR
    181	    08EF			 @@charLoop:
    182	    08EF  AC				     LODSB
    183	    08F0  0A C0				     OR		 AL, AL
    184	    08F2  74 09				     JZ		 @@success
    185	    08F4  BB 0007			     MOV	 BX, 0007h
    186	    08F7  B4 0E				     MOV	 AH, 0Eh
    187	    08F9  CD 10				     INT	 10h
    188	    08FB  EB F2				     JMP	 @@charLoop
    189
    190	    08FD			 @@success:
    191	    08FD  33 C0				     XOR	 AX, AX
    192	    08FF  F8				     CLC
1   193	    0900  C3				 RET	 00000h
    194
    195	    0901			 ENDP consoleBufferedOutput
    196
    197	    0901			 PROC consoleBufferedInput NEAR
    198	    0901  8B D7				     MOV	 DX, DI
    199	    0903			 @@keyLoop:
    200	    0903  33 C0				     XOR	 AX, AX
    201	    0905  CD 16				     INT	 16h			     ; Key Input
    202	    0907  3C 0D				     CMP	 AL, 13d
    203	    0909  74 3E				     JE		 @@success
    204	    090B  3C 08				     CMP	 AL, 8d
    205	    090D  74 12				     JE		 @@backspace
    206	    090F  8B DF				     MOV	 BX, DI
    207	    0911  2B DA				     SUB	 BX, DX
    208	    0913  3B D9				     CMP	 BX, CX
    209	    0915  73 EC				     JAE	 @@keyLoop
    210	    0917  B4 0E				     MOV	 AH, 0Eh
    211	    0919  BB 0007			     MOV	 BX, 0007h
    212	    091C  CD 10				     INT	 10h			     ; Character Output
    213	    091E			 @@charSave:
    214	    091E  AA				     STOSB
    215	    091F  EB E2				     JMP	 @@keyLoop
    216	    0921			 @@backspace:
    217	    0921  3B FA				     CMP	 DI, DX
    218	    0923  74 1E				     JE		 @@keyCancel
    219	    0925  4F				     DEC	 DI
    220	    0926  B0 08				     MOV	 AL, 8d
    221	    0928  B4 0E				     MOV	 AH, 0Eh
    222	    092A  BB 0007			     MOV	 BX, 0007h
    223	    092D  CD 10				     INT	 10h			     ; Character Output
    224	    092F  B0 20				     MOV	 AL, ' '
    225	    0931  B4 0E				     MOV	 AH, 0Eh
    226	    0933  BB 0007			     MOV	 BX, 0007h
    227	    0936  CD 10				     INT	 10h			     ; Character Output
    228	    0938  B0 08				     MOV	 AL, 8d
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 5
core.ASM
instinct - core	0.0.3


    229	    093A  B4 0E				     MOV	 AH, 0Eh
    230	    093C  BB 0007			     MOV	 BX, 0007h
    231	    093F  CD 10				     INT	 10h			     ; Character Output
    232	    0941  EB C0				     JMP	 @@keyLoop
    233	    0943			 @@keyCancel:
    234	    0943  B4 05				     MOV	 AH, 05h		     ; Beep
    235	    0945  CD 20				     INT	 20h
    236	    0947  EB BA				     JMP	 @@keyLoop
    237	    0949			 @@success:
    238	    0949  8B CF				     MOV	 CX, DI
    239	    094B  2B CA				     SUB	 CX, DX
    240	    094D  8A C0				     MOV	 AL, AL
    241	    094F  AA				     STOSB
    242	    0950  8B C0				     MOV	 AX, AX
    243	    0952  F8				     CLC
1   244	    0953  C3				 RET	 00000h
    245
    246	    0954			 ENDP consoleBufferedInput
    247
    248	    0954			 PROC consoleClearScreen NEAR
    249	    0954  B0 00				     MOV	 al, 00h
    250	    0956  B7 07				     MOV	 bh, 7d
    251	    0958  B9 0000			     MOV	 cx, 00h
    252	    095B  B6 18				     MOV	 dh, 24d
    253	    095D  B2 4F				     MOV	 dl, 79d
    254	    095F  B4 06				     MOV	 ah, 06h
    255	    0961  CD 10				     INT	 10h
    256	    0963  B7 00				     MOV	 bh, 00h
    257	    0965  B6 00				     MOV	 dh, 00h
    258	    0967  B2 00				     MOV	 dl, 00h
    259	    0969  B4 02				     MOV	 ah, 02h
    260	    096B  CD 10				     INT	 10h
    261	    096D  33 C0				     XOR	 AX, AX
    262	    096F  F8				     CLC
1   263	    0970  C3				 RET	 00000h
    264
    265	    0971			 ENDP consoleClearScreen
    266
    267	    0971			 PROC coreBeep NEAR
    268	    0971  FA				     CLI
    269	    0972  BA 0217			     MOV	 DX, 535		     ; higher =	quieter
    270	    0975  B0 B6				     MOV	 AL, 0B6h
    271	    0977  E6 43				     OUT	 43h, AL		     ; PIT ctrl	word port
    272	    0979  8A C2				     MOV	 AL, DL
    273	    097B  E6 42				     OUT	 42h, AL		     ; PIT misc	reg port
    274	    097D  8A C6				     MOV	 AL, DH
    275	    097F  E6 42				     OUT	 42h, AL		     ; PIT misc	reg port
    276	    0981  E4 61				     IN		 AL, 61h		     ; 8042 ctrl reg
    277	    0983  8A E0				     MOV	 AH, AL
    278	    0985  0C 03				     OR		 AL, 03h
    279	    0987  E6 61				     OUT	 61h, AL		     ; 8042 ctrl reg
    280	    0989  B4 00				     MOV	 AH, 00h		     ; Get time	of day
    281	    098B  CD 1A				     INT	 1Ah
    282	    098D  83 C2	04			     ADD	 DX, 04h		     ; Duration: 16th of seconds
    283	    0990  8B DA				     MOV	 BX, DX
    284	    0992			 @@waitLoop:
    285	    0992  CD 1A				     INT	 1Ah			     ; Get counter
Turbo Assembler	 Version 4.1	    11/01/02 01:23:14	    Page 6
core.ASM
instinct - core	0.0.3


    286	    0994  3B D3				     CMP	 DX, BX			     ; Keep waiting
    287	    0996  75 FA				     JNE	 @@waitloop
    288	    0998  8A C4				     MOV	 AL, AH
    289	    099A  E6 61				     OUT	 61h, AL		     ; 8042 ctrl reg
    290	    099C  FB				     STI
    291	    099D			 @@keyWaitLoop:
    292	    099D  B4 01				     MOV	 AH, 01h		     ; Wait for	key release
    293	    099F  CD 16				     INT	 16h
    294	    09A1  75 02				     JNZ	 @@keyRelease
    295	    09A3  EB 06				     JMP	 @@success
    296	    09A5			 @@keyRelease:
    297	    09A5  B4 00				     MOV	 AH, 00h		     ; Clear key buffer
    298	    09A7  CD 16				     INT	 16h
    299	    09A9  EB F2				     JMP	 @@keyWaitLoop
    300
    301	    09AB			 @@success:
    302	    09AB  33 C0				     XOR	 AX, AX
    303	    09AD  F8				     CLC
1   304	    09AE  C3				 RET	 00000h
    305
    306	    09AF			 ENDP coreBeep
    307
    308	    09AF			 PROC coreShutdown NEAR
    309	    09AF  B8 5300			     MOV	 AX, 5300h
    310	    09B2  33 DB				     XOR	 BX, BX
    311	    09B4  CD 15				     INT	 15h
    312	    09B6  B8 5304			     MOV	 AX, 5304h
    313	    09B9  33 DB				     XOR	 BX, BX
    314	    09BB  CD 15				     INT	 15h
    315	    09BD  B8 5301			     MOV	 AX, 5301h
    316	    09C0  33 DB				     XOR	 BX, BX
    317	    09C2  CD 15				     INT	 15h
    318	    09C4  B8 5307			     MOV	 AX, 5307h
    319	    09C7  BB 0001			     MOV	 BX, 01h
    320	    09CA  B9 0003			     MOV	 CX, 03h
    321	    09CD  CD 15				     INT	 15h
    322	    09CF  1E				     PUSH	 DS
    323	    09D0  8C C8				     MOV	 AX, CS
    324	    09D2  8E D8				     MOV	 DS, AX
    325	    09D4  BE 09ECr			     MOV	 SI, OFFSET @@shutoff
    326	    09D7  B4 02				     MOV	 AH, 02h
    327	    09D9  CD 20				     INT	 20h
    328	    09DB  33 C0				     XOR	 AX, AX
    329	    09DD  CD 16				     INT	 16h
    330	    09DF  BE 0A14r			     MOV	 SI, OFFSET @@canceled
    331	    09E2  B4 02				     MOV	 AH, 02h

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -