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