home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Power-Programmierung
/
CD1.mdf
/
magazine
/
qbnewsl
/
qbnws202
/
fastprnt
/
figures.txt
< prev
Wrap
Text File
|
1991-05-09
|
5KB
|
103 lines
──────────────────────────────────────────────────────────────────────
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
──────────────────────────────────────────────────────────────────────