home *** CD-ROM | disk | FTP | other *** search
- ──────────────────────────────────────────────────────────────────────
- Figure 1.1 Stack contents after entry into FastPrint.
-
- ┌───────────────────────┐
- │ First Parameter │ BP + 12 ROW% co-ordinate
- ├───────────────────────┤
- │ Second Parameter │ BP + 10 COLUMN% co-ordinate
- ├───────────────────────┤
- │ Third Parameter │ BP + 8 Pointer to string
- ├───────────────────────┤
- │ Fourth Parameter │ BP + 6 ATTRIBUTE% value
- ├───────────────────────┤ ┐
- │ Return Segment │ │ This is a FAR call so both the
- ├───────────────────────┤ ├ Segment & Offset of the return
- │ Return Offset │ │ address are pushed.
- ├───────────────────────┤ ┘
- │ Saved BP register │ <-- Base Pointer (BP) stays here.
- ├───────────────────────┤
- │ Saved ES register │
- ├───────────────────────┤
- │ Saved SI register │
- ├───────────────────────┤ Stack Pointer (SP) register
- │ Saved DI register │ <-- points to last item pushed.
- └───────────────────────┘
-
- ──────────────────────────────────────────────────────────────────────
- Figure 1.2 The interrupt sequence used on computers such as the IBM-PC
- which use the Intel 80x86 family of micro-processors.
-
- Interrupt Vector Program Interrupt Handler
- Table at address 1DA6:01E3
-
- ├───────────┤ ├──────────┤ ┌──────────┐
- 14 │ 167F:0439 │ ┌─>│ INT 16 │───────>│ PUSH AX │
- ├───────────┤ │ ├──────────┤ ├──────────┤
- 15 │ 0070:0774 │ │ │ │<───┐ │ PUSH BX │
- ├───────────┤ │ │ ├──────────┤
- 16 │ 1DA6:01E3 │<──┘ Stack │ │ etc. │
- ├───────────┤ ├──────────┤ │ ├ . ┤
- 17 │ F000:F84D │ │ saved IP │──┐ │
- ├───────────┤ ├──────────┤ │ │ ├ . ┤
- 18 │ F000:F841 │ │ saved CS │──┤ │ │ . │
- ├───────────┤ ├──────────┤ │ │ ├──────────┤
- │ Flags │──┤ └───│ IRET │
- ├──────────┤ │ └──────────┘
- └───────────┘
-
- ──────────────────────────────────────────────────────────────────────
- Figure 1.3 PC Memory map highlighting the BIOS data area in low RAM
-
- Segment address (in hex)
-
- FFFF ┌─────────────────────┐ 1024K
- │ ROM-BIOS │
- E000 ├─────────────────────┤
- │ Hardware extensions │
- C000 ├─────────────────────┤ Color screen is at segment B800
- │ Display memory │ Mono screen is at segment B000
- A000 └─────────────────────┘
- up to 640K
- 9FFF ┌─────────────────────┐
- │ Transient part of │
- │ DOS │
- ├─────────────────────┤
- │ │
- │ │
-
- │ far data │
- │ (dynamic arrays) │
- ┌┼─────────────────────┼┐
- │├ ┤│
- ││ QuickBASIC data │├─ Default DEF SEG address
- ││ segment (DGROUP) ││
- │├ ┤│ ┌──────────────────────────────┐
- └┼─────────────────────┼┘ │ Offsets from segment 40(Hex) │█
- │ QuickBASIC program │ │ │█
- ├─ ─┤ │ 0050 ├─ ─┤ │█
- │ TSRs │ │ │ Offset address of │ │█
- ├─ ─┤ │ │ current page │ │█
- │ Resident part of │ │ 004E ├─ ─┤ │█
- │ DOS │ │ │ Number of bytes in │ │█
- ├─────────────────────┤ │ │ cureent screen │ │█
- │ BIOS Data area │ │ 004C ├─ ─┤ │█
- 0040 ├─────────────────────┤<─┤ │ Characters per row │ │█
- │ Interrupt vectors │ │ 0049 ├─ ─┤ │█
- 0000 └─────────────────────┘ │ │█
- └──────────────────────────────┘█
- ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
- ──────────────────────────────────────────────────────────────────────
-
- Figure 1.4 Structure of the String Descriptor passed by QuickBASIC
-
- ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
- ┌──────┬──────┬──────┬──────┐█
- │ LSB MSB │ LSB MSB │█
- └──────┴──────┴──────┴──────┘
- Length Offset
- (0 to 32767) (0 to 65535)
-
- LSB = Least Significant Byte MSB = Most Significant Byte
-
- ──────────────────────────────────────────────────────────────────────
-