Table of
Contents for MMURTL V1.0
(PDF version)
The MMURTL V1.0 PDF file uses bookmarks as a table
of contents. When you open the bookmarks for viewing (F5 or Window Menu, Open
Bookmarks) in Abobe Acrobat, the same items are listed as shown below and you
may jump directly to them by clicking on them with your mouse.We have provided
this file to help you if you desire to leave the PDF file open in full screen
or full page width. The page numbers match the PFD file page numbers. Simply save
or print this and you’re all set!
CHAPTER
1, INTRODUCTION...................................... 3
OVERVIEW.................................................... 3
WHAT THIS BOOK IS
ABOUT..................................... 4
WHO SHOULD USE THIS
BOOK.................................... 5
MY BASIC DESIGN
GOALS (YOURS MAY VARY)...................... 6
A BRIEF DESCRIPTION
OF MMURTL............................... 7
USES FOR
MMURTL............................................. 9
SIMILARITIES TO
OTHER OPERATING SYSTEMS.................... 10
HARDWARE
REQUIREMENTS...................................... 10
CHAPTER
2, GENERAL DISCUSSION AND BACKGROUND................ 11
WHERE DOES ONE
BEGIN?...................................... 11
YOU ARE WHERE YOU
WERE WHEN................................ 12
THE DEVELOPMENT
PLATFORM AND THE TOOLS..................... 13
THE CHICKEN AND THE
EGG.................................... 13
EARLY HARDWARE
INVESTIGATION............................... 15
THE REAL TASK AT
HAND (PUN INTENDED)....................... 17
A STARTING
POINT........................................... 17
THE CRITICAL
PATH.......................................... 17
WORKING
ATTITUDE........................................... 18
CHAPTER
3, THE TASKING MODEL................................ 19
TERMS WE SHOULD
AGREE ON................................... 19
RESOURCE
MANAGEMENT........................................ 20
TASK
MANAGEMENT............................................ 21
SINGLE VS. MULTI
USER...................................... 21
THE HARDWARE
STATE......................................... 22
THE SOFTWARE
STATE......................................... 22
CPU
TIME................................................... 23
SINGLE
TASKING............................................. 23
MULTITASKING............................................... 23
COOPERATIVE
MULTITASKING................................... 24
PREEMPTIVE
MULTITASKING.................................... 24
TASK
SCHEDULING............................................ 25
WHO, WHEN, AND HOW
LONG?................................... 25
SCHEDULING
TECHNIQUES...................................... 26
TIME
SLICING............................................. 26
SIMPLE COOPERATIVE
QUEUING............................... 27
PRIORITIZED
COOPERATIVE SCHEDULING....................... 27
VARIABLE TIME
SLICING.................................... 28
OTHER SCHEDULING
FACTORS................................... 28
MIXED SCHEDULING
TECHNIQUES................................ 29
FULLY TIME SLICED,
SOME COOPERATION...................... 29
TIME SLICED, MORE
COOPERATIVE............................ 29
PRIMARILY
COOPERATIVE, LIMITED TIME SLICING.............. 30
PRIMARILY
COOPERATIVE, MORE TIME SLICING................. 30
THE TASKING MODEL I
CHOSE.................................. 30
INTERRUPT
HANDLING......................................... 32
CHAPTER
4, INTERPROCESS COMMUNICATIONS...................... 33
INTRODUCTION............................................... 33
MESSAGING AND
TASKS........................................ 34
SYNCHRONIZATION............................................ 34
SEMAPHORES................................................. 35
PIPES...................................................... 36
MESSAGES................................................... 36
SEND AND
WAIT............................................ 36
REQUEST()................................................ 41
RESPOND()................................................ 43
LINK
BLOCKS.............................................. 43
REENTRANCY
ISSUES.......................................... 44
INTERRUPT
LATENCY.......................................... 45
MEMORY MANAGEMENT
ISSUES................................... 46
CHAPTER
5, MEMORY MANAGEMENT................................ 47
INTRODUCTION............................................... 47
BASIC
TERMS................................................ 47
MEMORY
MODEL............................................... 48
SIMPLE FLAT
MEMORY....................................... 48
PAGED FLAT
MEMORY........................................ 49
DEMAND-PAGED FLAT MEMORY.................................
50
VIRTUAL PAGED
MEMORY..................................... 51
DEMAND PAGED
VIRTUAL MEMORY.............................. 53
DEMAND-PAGED
MEMORY MANAGEMENT........................... 53
SEGMENTED
MEMORY......................................... 53
MEMORY
MANAGEMENT.......................................... 54
TRACKING LINEAR
MEMORY ALLOCATION.......................... 55
BASIC MEMORY
ALLOCATION UNIT............................... 55
LINKED LIST MANAGEMENT.....................................
55
MEMORY MANAGEMENT
WITH TABLES.............................. 60
TRACKING PHYSICAL
MEMORY................................... 60
INITIALIZATION OF
MEMORY MANAGEMENT........................ 60
MEMORY
PROTECTION.......................................... 62
AN INTEL BASED
MEMORY MANAGEMENT IMPLEMENTATION............ 62
A FEW MORE WORDS
ON SEGMENTATION......................... 61
HOW MMURTL USES
PAGING..................................... 63
PAGE TABLES (PTS)........................................
62
PAGE DIRECTORIES
(PDS)................................... 62
THE MEMORY
MAP........................................... 63
CHAPTER
6, HARDWARE INTERFACE............................... 72
HARDWARE
ISOLATION......................................... 72
THE
CPU.................................................... 73
THE BUS
STRUCTURE.......................................... 74
SERIAL
I/O................................................. 74
PARALLEL I/O...............................................
75
BLOCK-ORIENTED
DEVICES..................................... 76
KEYBOARD................................................... 76
VIDEO...................................................... 77
DIRECT MEMORY ACCESS
(DMA)................................. 79
TIMERS..................................................... 87
PRIORITY INTERRUPT
CONTROLLER UNIT (PICU).................. 88
CHAPTER
7, OS INITIALIZATION................................ 89
BOOT ROM...................................................
89
THE BOOT
SECTOR............................................ 90
OPERATING SYSTEM
BOOT IMAGE............................... 100
OTHER BOOT
OPTIONS........................................ 100
BASIC HARDWARE
INITIALIZATION............................. 100
STATIC TABLES AND
STRUCTURES.............................. 101
INITIALIZATION OF
TASK MANAGEMENT......................... 101
INITIALIZATION OF
MEMORY.................................. 102
DYNAMIC TABLES AND
STRUCTURES............................. 103
CHAPTER
8, PROGRAMMING INTERFACES.......................... 104
APPLICATION
PROGRAMMING INTERFACE......................... 104
MECHANICAL
DETAILS........................................ 106
PORTABILITY
CONSIDERATIONS................................ 107
ERROR HANDLING AND
REPORTING.............................. 107
SYSTEMS PROGRAMMING
INTERFACE............................. 108
INTERNAL
COOPERATION...................................... 108
DEVICE DRIVER INTERFACES..................................
108
A DEVICE-DRIVER
INTERFACE EXAMPLE......................... 109
ANNOUNCING THE
DRIVER TO THE OS......................... 110
A CALL TO THE
DRIVER.................................... 112
CHAPTER
9, APPLICATION PROGRAMMING......................... 114
INTRODUCTION.............................................. 114
TERMINOLOGY............................................... 114
UNDERSTANDING 32-BIT
SOFTWARE............................. 114
TABLE 9.1 - MEMORY
ALIGNMENT............................ 115
OPERATING SYSTEM
CALLING CONVENTIONS...................... 115
STACK
USAGE............................................... 116
MEMORY
MANAGEMENT......................................... 116
TABLE 9.2 - BASIC
MEMORY MAP............................ 117
OPERATING SYSTEM
PROTECTION............................... 118
APPLICATION
MESSAGING..................................... 119
STARTING A NEW
THREAD..................................... 119
JOB CONTROL BLOCK.........................................
120
BASIC
KEYBOARD............................................ 121
BASIC
VIDEO............................................... 122
TABLE 9.3 -
FOREGROUND COLORS (LOW NIBBLE).............. 122
TABLE 9.4 -
BACKGROUND COLORS (HIGH NIBBLE)............. 123
TERMINATING YOUR
APPLICATION.............................. 123
REPLACING YOUR
APPLICATION................................ 124
CHAPTER
10, SYSTEMS PROGRAMMING............................ 125
INTRODUCTION..............................................
125
WRITING
MESSAGE-BASED SYSTEM SERVICES..................... 125
INITIALIZING YOUR
SYSTEM SERVICE.......................... 125
A SIMPLE SYSTEM
SERVICE EXAMPLE........................... 126
LISTING 10.1 - A
SYSTEM SERVICE......................... 126
THE REQUEST
BLOCK......................................... 127
ITEMS IN THE REQUEST
BLOCK................................ 127
THE SERVICE
CODE.......................................... 128
CALLER INFORMATION
IN A REQUEST........................... 128
ASYNCHRONOUS
SERVICES..................................... 129
SYSTEM SERVICE ERROR
HANDLING............................. 129
WRITING DEVICE
DRIVERS.................................... 130
DEVICE DRIVER
THEORY...................................... 131
BUILDING DEVICE
DRIVERS................................... 131
HOW CALLERS REACH
YOUR DRIVER............................. 132
DEVICE DRIVER SETUP
AND INSTALLATION...................... 132
SYSTEM RESOURCES FOR
DEVICE DRIVERS....................... 133
INTERRUPTS.............................................. 133
DIRECT MEMORY
ACCESS DEVICE (DMA)....................... 134
TIMER
FACILITIES........................................ 134
MESSAGE FACILITIES
FOR DEVICE DRIVERS..................... 134
DETAILED DEVICE
INTERFACE SPECIFICATION................... 135
DEVICE CONTROL
BLOCK SETUP AND USE...................... 135
TABLE 10.1-.
DEVICE CONTROL BLOCK DEFINITION............ 135
STANDARD DEVICE CALL
DEFINITIONS.......................... 137
DEVICEOP FUNCTION
IMPLEMENTATION........................ 138
DEVICESTAT
FUNCTION IMPLEMENTATION...................... 139
DEVICEINIT
FUNCTION IMPLEMENTATION...................... 139
INITIALIZING YOUR
DRIVER.................................. 140
OS FUNCTIONS FOR
DEVICE DRIVERS........................... 141
STANDARD DEVICE
ERROR CODES............................... 141
CHAPTER
11, THE MONITOR PROGRAM............................ 142
INTRODUCTION..............................................
142
ACTIVE JOB (VIDEO
& KEYBOARD)............................. 142
INITIAL
JOBS.............................................. 142
LISTING 11.1.
SAMPLE INITIAL.JOB FILE................... 143
MONITOR FUNCTION
KEYS..................................... 143
TABLE 11.1.
MONITOR FUNCTION KEYS....................... 143
MONITOR PROGRAM
THEORY.................................... 143
PERFORMANCE
MONITORING.................................... 144
MONITOR SOURCE
LISTING.................................... 145
LISTING
11.2.MONITOR PROGRAM SOURCE LISTING............. 145
CHAPTER
12, DEBUGGER....................................... 162
INTRODUCTION.............................................. 162
USING THE
DEBUGGER........................................ 162
ENTERING THE
DEBUGGER................................... 162
EXITING THE
DEBUGGER.................................... 162
DEBUGGER
DISPLAY........................................ 163
DEBUGGER FUNCTION
KEYS.................................. 163
DEBUGGING YOUR
APPLICATION................................ 165
DEBUGGER
THEORY........................................... 165
TABLE
12.1.PROCESSOR EXCEPTIONS......................... 167
CHAPTER
13, KEYBOARD SERVICE............................... 169
INTRODUCTION.............................................. 169
AVAILABLE
SERVICES........................................ 170
TABLE
13.1.AVAILABLE KEYBOARD SERVICES.................. 170
READ KEYBOARD...........................................
170
NOTIFY ON GLOBAL
KEYS................................... 171
CANCEL NOTIFY ON
GLOBAL KEYS............................ 171
ASSIGN
KEYBOARD......................................... 171
KEY CODES AND
STATUS...................................... 172
ALPHA-NUMERIC KEY
VALUES................................ 172
TABLE 13.2 -
.SHIFT STATE BITS.......................... 172
LOCK-STATE BYTE
(THIRD BYTE)............................ 173
TABLE 13.3 - LOCK
STATE BITS............................ 173
NUMERIC PAD
INDICATOR................................... 173
KEY
CODES................................................. 174
TABLE 13.4 - .KEYS
VALUES............................... 174
FUNCTION STRIP KEY
CODES................................ 175
TABLE 13.5 -
FUNCTION KEY STRIP CODES................... 175
NUMERIC PAD KEY
CODES................................... 176
TABLE 13.6 -
NUMERIC PAD KEY CODES...................... 176
CURSOR, EDIT, AND
SPECIAL PAD KEY CODES................. 176
13.7.ADDITIONAL
KEY CODES............................... 176
YOUR KEYBOARD
IMPLEMENTATION.............................. 177
CHAPTER
14, THE FILE SYSTEM SERVICE........................ 178
INTRODUCTION.............................................. 178
FILE
SPECIFICATIONS....................................... 178
NETWORK FILE REQUEST
ROUTING.............................. 178
FILE
HANDLES.............................................. 179
FILE OPEN MODES...........................................
179
FILE ACCESS
TYPE.......................................... 179
BLOCK
MODE.............................................. 179
STREAM
MODE............................................. 180
LOGICAL FILE
ADDRESS...................................... 180
FILE SYSTEM
REQUESTS...................................... 181
LISTING 14.1 -
OPENFILE REQUEST IN C.................... 181
TABLE 14.1 - FILE
SYSTEM SERVICE CODES.................. 181
PROCEDURAL INTERFACES.....................................
182
DEVICE ACCESS
THROUGH THE FILE SYSTEM..................... 182
TABLE 14.2 -
DEVICE STREAM ACCESS....................... 182
FILE SYSTEM
FUNCTIONS IN DETAIL........................... 183
OPENFILE................................................ 183
CLOSEFILE............................................... 183
READBLOCK............................................... 184
WRITEBLOCK.............................................. 185
READBYTES...............................................
185
WRITEBYTES.............................................. 186
GETFILELFA.............................................. 187
SETFILELFA.............................................. 187
GETFILESIZE............................................. 188
SETFILESIZE............................................. 188
CREATEFILE.............................................. 189
RENAMEFILE.............................................. 190
DELETEFILE..............................................
190
CREATEDIRECTORY......................................... 191
DELETEDIRECTORY......................................... 191
GETDIRSECTOR............................................ 192
FILE SYSTEM
THEORY........................................ 193
INTERNAL FILE
SYSTEM STRUCTURES......................... 193
FILE CONTROL
BLOCKS................................... 193
FILE USER
BLOCKS...................................... 193
FAT BUFFERS...........................................
194
FILE
OPERATIONS......................................... 195
READ.................................................. 195
WRITE................................................. 195
CLOSE................................................. 195
CHAPTER
15, API SPECIFICATION.............................. 197
INTRODUCTION.............................................. 197
PUBLIC
CALLS.............................................. 197
PARAMETERS TO
CALLS (ARGS).............................. 197
TABLE 15.1 -
SIZE AND TYPE PREFIXES................... 197
TABLE 15.2 -
ADDITIONAL PREFIXES...................... 198
TABLE1 5.3 -
COMPOUND PREFIXES........................ 198
ALPHABETICAL CALL
LISTING................................. 202
ADDCALLGATE............................................. 202
ADDIDTGATE.............................................. 202
ALARM................................................... 203
ALIASMEM................................................
203
ALLOCDMAPAGE............................................ 204
ALLOCEXCH............................................... 204
ALLOCOSPAGE............................................. 204
ALLOCPAGE............................................... 205
BEEP.................................................... 205
CHAIN................................................... 205
CHECKMSG................................................ 206
CLRSCR..................................................
206
COMPARE................................................. 207
COMPARENCS.............................................. 207
COPYDATA................................................ 207
COPYDATAR............................................... 207
DEALIASMEM.............................................. 208
DEALLOCEXCH............................................. 208
DEALLOCPAGE............................................. 208
DEVICEINIT..............................................
208
DEVICEOP................................................ 209
DEVICESTAT.............................................. 209
DMASETUP................................................ 210
FILLDATA................................................ 211
GETCMDLINE.............................................. 212
GETCMOSTIME............................................. 212
GETCMOSDATE............................................. 212
GETDMACOUNT.............................................
213
GETEXITJOB.............................................. 213
GETIRQVECTOR............................................ 213
GETJOBNUM............................................... 214
GETNORMVID.............................................. 214
GETPATH................................................. 214
GETPHYADD............................................... 215
GETPJCB................................................. 215
GETSYSIN................................................
215
GETSYSOUT............................................... 215
GETTIMERTICK............................................ 216
GETTSSEXCH.............................................. 216
GETUSERNAME............................................. 216
GETVIDCHAR.............................................. 217
GETVIDOWNER............................................. 217
GETXY................................................... 217
INBYTE..................................................
217
INDWORD................................................. 217
INWORD.................................................. 218
INWORDS................................................. 218
INITDEVDR............................................... 218
ISENDMSG................................................ 219
KILLALARM............................................... 220
LOADNEWJOB.............................................. 220
MASKIRQ.................................................
220
MICRODELAY.............................................. 220
MOVEREQUEST............................................. 221
NEWTASK................................................. 221
OUTBYTE................................................. 222
OUTDWORD................................................ 222
OUTWORD................................................. 222
PUTVIDATTRS............................................. 223
PUTVIDCHARS.............................................
223
QUERYPAGES.............................................. 224
READCMOS................................................ 224
READKBD................................................. 224
REGISTERSVC............................................. 224
REQUEST................................................. 225
RESPOND................................................. 226
SCROLLVID............................................... 226
SENDMSG.................................................
227
SETCMDLINE.............................................. 227
SETEXITJOB.............................................. 228
SETIRQVECTOR............................................ 229
TABLE 15.4 -
HARDWARE IRQS............................ 230
SETJOBNAME.............................................. 230
SETNORMVID.............................................. 231
SETPATH................................................. 231
SETPRIORITY.............................................
231
SETSYSIN................................................ 232
SETSYSOUT............................................... 232
SETUSERNAME............................................. 232
SETVIDOWNER............................................. 232
SETXY................................................... 233
SLEEP................................................... 233
SPAWNTASK............................................... 233
TONE....................................................
234
TTYOUT.................................................. 234
UNMASKIRQ............................................... 234
UNREGISTERSVC........................................... 235
WAITMSG................................................. 236
CHAPTER
16, MMURTL SAMPLE SOFTWARE......................... 237
INTRODUCTION.............................................. 237
COMMAND LINE
INTERPRETER (CLI)............................ 237
INTERNAL
COMMANDS....................................... 237
CLS (CLEAR
SCREEN).................................... 238
COPY (COPY A
FILE)................................... 238
DIR (DIRECTORY
LISTING).............................. 238
DEBUG (ENTER
DEBUGGER)................................ 239
DEL (DELETE A
FILE)................................... 239
DUMP (HEX DUMP
OF A FILE)............................. 239
EXIT (EXIT THE
CLI)................................... 239
HELP (LIST
INTERNAL COMMANDS)......................... 239
MONITOR (RETURN
TO MONITOR)........................... 239
MD (MAKE
DIRECTORY)................................... 240
PATH (SET FILE
ACCESS PATH)........................... 240
RD (REMOVE
DIRECTORY)................................. 240
RENAME (RENAME A
FILE)................................ 241
RUN (EXECUTE A
.RUN FILE)............................. 241
TYPE (VIEW A
TEXT FILE ON THE SCREEN)................. 241
EXTERNAL COMMANDS.........................................
241
COMMANDS.CLI
FILE....................................... 241
GLOBAL "HOT
KEYS"....................................... 242
CLI SOURCE
LISTING........................................ 242
LISTING 16.1.CLI
SOURCE CODE LISTING VER. 1.0........... 242
A SIMPLE
EDITOR........................................... 259
EDITOR
SCREEN........................................... 259
EDITOR
COMMANDS......................................... 259
TABLE 16.1 - FILE
MANAGEMENT AND GENERAL COMMANDS....... 260
TABLE 16.2 -
CURSOR AND SCREEN MANAGEMENT COMMANDS...... 260
LISTING
16.2.EDITOR SOURCE CODE......................... 261
DUMBTERM.................................................. 285
LISTING 16.3 -
DUMBTERM SOURCE CODE..................... 285
PRINT..................................................... 288
LISTING 16.4.PRINT
SOURCE CODE.......................... 288
SYSTEM SERVICE
EXAMPLE.................................... 292
SERVICE.C
LISTING....................................... 293
LISTING 16.5 -
SIMPLE SERVICE SOURCE CODE............... 293
TESTSVC.C
LISTING......................................... 295
LISTING 16.6 -
TESTSVC.C................................ 295
CHAPTER
17, INTRODUCTION TO THE SOURCE CODE................ 296
COMMENTS IN THE
CODE...................................... 296
CALLING
CONVENTIONS....................................... 296
ORGANIZATION.............................................. 296
BUILDING
MMURTL........................................... 299
LISTING 17.1 -
ASSEMBLER TEMPLATE FILE.................. 300
USING PIECES OF
MMURTL IN YOUR OS......................... 301
USING PIECES OF
MMURTL IN OTHER PROJECTS.................. 301
CHAPTER
18, THE KERNEL..................................... 302
INTRODUCTION.............................................. 302
NAMING
CONVENTIONS...................................... 302
KERNEL
DATA............................................... 302
LISTING
18.1.KERNEL DATA SEGMENT SOURCE................. 303
LOCAL KERNEL HELPER
FUNCTIONS............................. 303
ENQUEUEMSG................................................ 304
LISTING
18.2.QUEUEING FOR MESSAGES AT AN EXCHANGE....... 304
DEQUEUEMSG................................................ 305
LISTING
18.3.DE-QUEUEING A MESSAGE FROM AN EXCHANGE..... 305
DEQUEUETSS................................................ 305
LISTING
18.4.DE-QUEUEING A TASK FROM AN EXCHANGE........ 305
ENQUEUERDY................................................
306
LISTING
18.5.ADDING A TASK TO THE READY QUEUE........... 306
DEQUEUERDY................................................ 307
LISTING
18.6.DE-QUEUEING THE HIGHEST PRIORITY TASK...... 307
CHKRDYQ................................................... 307
INTERNAL PUBLIC
HELPER FUNCTIONS.......................... 308
REMOVERDYJOB............................................ 308
LISTING
18.8.REMOVING A TERMINATED TASK FROM THE READY
QUEUE.................................................
308
GETEXCHOWNER............................................ 309
LISTING
18.9.FINDING THE OWNER OF AN EXCHANGE......... 311
SETEXCHOWNER............................................ 312
LISTING
18.10.CHANGING THE OWNER OF AN EXCHANGE....... 312
SENDABORT............................................... 312
PUBLIC KERNEL
FUNCTIONS................................... 314
REQUEST()............................................... 314
LISTING
18.12.REQUEST KERNEL PRIMITIVE CODE........... 314
RESPOND()............................................... 317
LISTING
18.13.RESPOND KERNEL PRIMITIVE CODE........... 317
MOVEREQUEST()........................................... 320
SENDMSG()............................................... 321
LISTING
18.15.SENDMSG KERNEL PRIMITIVE CODE........... 321
ISENDMSG().............................................. 323
LISTING
18.16.ISENDMSG KERNEL PRIMITIVE CODE.......... 324
WAITMSG()...............................................
325
CHECKMSG().............................................. 329
LISTING 18.18
-CHECKMSG KERNEL PRIMITIVE CODE......... 330
NEWTASK()............................................... 332
SPAWNTASK()............................................. 334
ALLOCEXCH()............................................. 337
DEALLOCEXCH()........................................... 338
GETTSSEXCH()............................................ 339
LISTING
18.23.GETTSS EXCHANGE CODE.................... 339
SETPRIORITY()........................................... 340
LISTING
18.24.SET PRIORITY CODE....................... 340
GETPRIORITY()........................................... 340
LISTING
18.25.GET PRIORITY CODE....................... 340
CHAPTER
19, MEMORY MANAGEMENT CODE......................... 342
INTRODUCTION.............................................. 342
MEMORY MANAGEMENT
DATA.................................. 342
INTERNAL CODE.............................................
343
INITMEMMGMT............................................. 343
LISTING
19.3.CONTINUATION OF MEMORY MANAGEMENT INIT... 344
LISTING
19.4.CONTINUATION OF MEMORY MANAGEMENT INIT... 344
LISTING
19.6.ALLOCATION OF MEMORY MANAGEMENT EXCHANGE. 345
LISTING
19.7.FINISHING MEMORY MANAGEMENT INITI........ 345
FINDHIPAGE.............................................. 346
LISTING
19.8.FIND HIGHEST PHYSICAL PAGE CODE.......... 346
FINDLOPAGE..............................................
347
LISTING
19.9.FIND LOWEST PHYSICAL PAGE CODE........... 347
MARKPAGE................................................ 348
LISTING
19.10.CODE TO MARK A PHYSICAL PAGE IN USE..... 348
UNMARKPAGE.............................................. 348
LISTING
19.11.CODE TO FREE A PHYSICAL PAGE OFR REUSE.. 349
LINTOPHY................................................ 349
LISTING
19.12.CODE TO CONVERT LINEAR TO PHYSICAL
ADDRESSES.............................................
349
FINDRUN................................................. 350
LISTING
19.13.CODE TO FIND A FREE RUN OF LINEAR MEMORY 350
ADDRUN.................................................. 352
ADDALIASRUN............................................. 353
LISTING
19.15.ADDING AN ALIASED RUN OF LINEAR MEMORY.. 353
ADDUSERPT............................................... 355
LISTING
19.16.ADDING A PAGE TABLE FOR USER MEMORY..... 355
ADDOSPT.................................................
356
LISTING
19.17.ADDING AN OPERATING SYSTEM PAGE TABLE... 357
PUBLIC MEMORY
MANAGEMENT CALLS............................ 359
ADDGDTCALLGATE.......................................... 359
LISTING
19.18.ADDING A CALL GATE TO THE GDT........... 359
ADDIDTGATE.............................................. 360
LISTING
19.19.ADDING ENTRIES TO THE IDT............... 360
ALLOCOSPAGE............................................. 361
LISTING 19.20.ALLOCATING
A PAGE OF LINEAR MEMORY...... 361
ALIASMEM................................................ 362
LISTING
19.21.CODE TO ALIAS MEMORY.................... 362
DEALIASMEM.............................................. 365
LISTING
19.22.CODE TO REMOVE ALIAS PTES............... 365
DEALLOCPAGE............................................. 366
LISTING
19.23.DEALLOCATING LINEAR MEMORY.............. 366
QUERYMEMPAGES........................................... 368
LISTING 19.24.CODE
TO FIND NUMBER OF FREE PAGES....... 368
GETPHYADD............................................... 369
CHAPTER
20, TIMER MANAGEMENT SOURCE CODE................... 370
INTRODUCTION.............................................. 370
CHOOSING A STANDARD
INTERVAL.............................. 370
LISTING 20.1.LOOP
IN TIMER ISR.......................... 371
TIMER
DATA................................................ 371
LISTING 20.2 -
DATA AND CONSTANTS FOR TIMER CODE........ 372
TIMER CODE................................................
372
LISTING 20.3 -
EXTERNAL FUNCTIONS FOR TIMER CODE........ 372
THE TIMER
INTERRUPT..................................... 372
LISTING 20.4 -
THE TIMER INTERRUPT SERVICE ROUTINE
373
SLEEP()................................................. 375
LISTING 20.5 -
CODE FOR THE SLEEP FUNCTION............ 375
ALARM()................................................. 376
LISTING 20.6 -
CODE FOR THE ALARM FUNCTION............ 376
KILLALARM().............................................
377
LISTING 20.7 -
CODE FOR THE KILLALARM FUNCTION........ 377
MICRODELAY()............................................ 377
LISTING 20.8 -
CODE FOR THE MICRDELAY FUNCTION........ 378
GETCMOSTIME()........................................... 378
LISTING
20.9.CODE TO READ THE CMOS TIME............... 378
GETCMOSDATE()........................................... 379
LISTING 20.10 -
CODE TO READ THE CMOS DATE............ 379
GETTIMERTICK()..........................................
380
LISTING
20.11.CODE TO RETURN THE TIMER TICK........... 380
BEEP_WORK()............................................. 381
LISTING
20.12.HELPER FUNCTION FOR BEEP() AND TONE()
381
BEEP().................................................. 382
LISTING
20.13.CODE TO PRODUCE A BEEP.................. 382
TONE().................................................. 382
LISTING 20.14 -
CODE TO PRODUCE A TONE................ 382
CHAPTER
21, INITIALIZATION CODE............................ 384
INTRODUCTION.............................................. 384
OS GLOBAL
DATA............................................ 384
LISTING 21.1 -
MAIN OPERATING SYSTEM DATA............... 385
OPERATING SYSTEM
ENTRY POINT.............................. 386
LISTING 21.5 - END
OF INITIALIZATION CODE............... 393
INITIALIZATION
HELPERS.................................... 393
LISTING 21.6 -
INITIALIZATION SUBROUTINES............... 394
LISTING 21.7 - INITIALIZE
CALL GATES AMD THE IDT........ 397
CHAPTER
22, JOB MANAGEMENT CODE............................ 403
INTRODUCTION.............................................. 403
RECLAMATION OF
RESOURCES.................................. 403