Repository navigation
Expand file tree
/
Copy pathkernal.asm
More file actions
173 lines (130 loc) · 6.18 KB
/
Copy pathkernal.asm
File metadata and controls
173 lines (130 loc) · 6.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
;-----------------------------------------------------------------------------------------------------------------------------------;
; KERNAL ;
;-----------------------------------------------------------------------------------------------------------------------------------;
;---------------------------------------------------------------------------------------------------------------------------------;
; Author: SYEED MOHD AMEEN DATE: 16-09-2020 ;
; Email: ameensyeed2@gmail.com ;
;---------------------------------------------------------------------------------------------------------------------------------;
;----------------------------------------------------------;
; MEMORY MAP ;
;----------------------------------------------------------;
; ------------------- 0X00000
; | BOOTLOADER |
; | |
; | |
; | |
; | | 0X00200
; -------------------
; | KERNAL | 0X00201
; | |
; | |
; | |
; | | 0X02000
; -------------------
; | SYSTEM CALLS | 0X02001
; | |
; | |
; | |
; | | 0X03000
; -------------------
; | I/0 | 0X03001
; | |
; | |
; | | 0X030FF
; -------------------
KERNAL:
ORG 0XFFFF0 ;8086 RESET VECTOR
JMP BOOTLOADER ;JMP BOOTLOADER
ORG 0X00000
BOOTLOADER:
; --------------------
; INCOMPLETE
;-------------------------------------------------------;
; PROCESS SCHEDULAR ;
;-------------------------------------------------------;
SCHEDULAR:
PROCESS_QUEUE: EQU 0X1000 ;PROCESS QUEUE ADDRESS
DPTR_SJF: EQU 0X1050 ;PROCESS ARRAY BASE ADDRESS
POP AX ;POP RETURN ADDRESS OF SUBROUTINE
POP SI ;BASE ADDRESS OF PROCESS TIME QUANTUM
POP CX ;NUMBER OF PROCESS
PUSH AX ;PUSH RETURN ADDRESS OF SUBROUTINE
PUSH CX
PUSH SI
CALL SELSORT ;SORT PROCESS (SHORTEST JOB FIRST [algo])
MOV DI,PROCESS_QUEUE
REPEAT_SCHEDULAR:
MOV [DI],[SI]
INC DI ;COPY PROCESS ID INTO PROCESS QUEUE
INC SI
LOOP REPEAT_SCHEDULAR
;-------------------------------------------------------;
; SELECTION SORT ;
;-------------------------------------------------------;
SELSORT:
POP AX ;POP RET ADDRESS OF SUBROUTINE
POP SI ;BASE ADDRESS OF ARRAY
POP CX ;COUNTER REGISTER
PUSH AX ;PUSH RET ADDRESS OF SUBROUTINE
COUNTER_SELSORT: EQU 0X4500
DPTR_SELSORT: EQU 0X4510
MOV ES:[COUNTER_SELSORT],CX
MOV ES:[COUNTER_SELSORT+2],CX
MOV ES:[DPTR_SELSORT],SI
XOR BX,BX ;CLEAR INDEX REGISTER
REPEAT2_SELSORT:
MOV AH,[SI+BX] ;MOVE INITIAL ELEMENT AND COMPARE IN ENTIRE ARRAY
REPEAT1_SELSORT:
CMP AH,[SI+BX+1]
JC NOSWAP_SELSORT
XCHG AH,[SI+BX+1]
NOSWAP_SELSORT:
INC SI ;INCREMENT INDEX REGISTER
LOOP REPEAT1_SELSORT ;REPEAT UNTIL COUNTER != 0
MOV SI,ES:[DPTR_SELSORT] ;MOVE BASE ADDRESS OF ARRAY
DEC ES:[COUNTER_SELSORT+2]
MOV CX,ES:[COUNTER_SELSORT+2] ;MOVE COUNTER INTO CX REG.
INC BX ;INCREMENT INDEX REGISTER
CMP BX,ES:[COUNTER_SELSORT]
JNE SKIP_SELSORT ;IF BX == ES:[COUNTER_SELSORT] RET SUBROUTINE
RET ;RETURN SUBROUTINE
SKIP_SELSORT:
JMP REPEAT2_SELSORT
;---------------------------------------------------------;
; COMMANDS ;
;---------------------------------------------------------;
COMMANDS:
DW DIR ;0 ;DIRECTORY SHOW
DW OPEN ;1 ;OPEN FILE
DW CLOSE ;2 ;CLOSE FILE
DW MKDIR ;3 ;CREATE DIRECTORY
DW RMDIR ;4 ;REMOVE DIRECTORY
DW GETDATE ;5 ;GET DATE
DW GETTIME ;6 ;GET TIME
DW SETDATE ;7 ;SET DATE
DW SETTIME ;8 ;SET TIME
DW DELETE ;9 ;DELETE FILE
DW RENAME ;10 ;RENAME FILE
DW GETHEX ;11 ;GET HEX DUMP
;----------------------------------------------------------;
; ;-----------------------------------------------------------------------------------;
; ; COMMAND HEX DUMP FILE ;
; ;-----------------------------------------------------------------------------------;
; ; FORMAT: ;
; ; ADDRESS: HEX BYTES ANSI ENCODING ;
; ; 0X0000 BC CA 10 23 45 24 12 12 04 45 50 30 23 04 32 34 $3!fd& 4#?}[ ;
; ;-----------------------------------------------------------------------------------;
; GETHEX:
; T_HEX_COUNTER EQU 100
; T_DATAPOINTER EQU 200
bubble_sort:
pop ax
pop si
pop cx
pop di
push ax
repeat_bubble_sort:
mov [di],[si]
inc di
inc si
loop repeat_bubble_sort