Restructured directories. Added in files from earlier prototypes and cleanly organized them.
This commit is contained in:
parent
6eeb80fde1
commit
18a3cf9457
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
´€>||€>|*
Š|Í€|ëåëþHello World!´
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,56 @@
|
|||
00000000: b400 b002 cd10 c706 3f7c 007c b402 b700 ........?|.|....
|
||||
|
||||
|
||||
00000010: b601 b20f cd10 803e 3f7c 3f7f 3f80 3e3f .......>?|?.?.>?
|
||||
|
||||
|
||||
00000020: 7c1e 7f3f 8a06 0000 f626 3f7c eb3f c606 |..?.....&?|.?..
|
||||
|
||||
|
||||
00000030: 3f7c 3ffe 053f 7ceb 3fc6 063f 7c3f eb3f ?|?..?|.?..?|?.?
|
||||
|
||||
|
||||
00000040: c606 3f7c 3f88 e1eb 3fc6 063f 7c3f 88c9 ..?|?...?..?|?..
|
||||
|
||||
|
||||
00000050: 3c09 7f05 c606 3f7c 303c 0f7f 05c6 063f <.....?|0<.....?
|
||||
|
||||
|
||||
00000060: 7c37 0400 b40e cd10 eb00 c606 3f7c 0988 |7..........?|..
|
||||
|
||||
|
||||
00000070: c8eb 3fc6 063f 7c00 b020 b40e cd10 fe06 ..?..?|.. ......
|
||||
|
||||
|
||||
00000080: 3f7c ff06 3f7c eb3f 8a06 3f7c b40e cd10 ?|..?|.?..?|....
|
||||
|
||||
|
||||
00000090: 8a06 3f7c b40e cd10 9090 9090 9090 9090 ..?|............
|
||||
|
||||
|
||||
000000a0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000000b0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000000c0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000000d0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000000e0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000000f0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000100: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000110: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000120: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000130: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000140: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000150: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000160: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000170: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000180: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
00000190: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000001a0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000001b0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000001c0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
000001d0: 9090 9090 9090 9090 9090 9090 9090 9090 ................
|
||||
|
||||
|
||||
000001e0: 9090 9090 9090 9090 9090 9090 90b4 00cd ................
|
||||
|
||||
|
||||
000001f0: 163c 1b74 06b4 0ecd 10eb f2e9 3f3f 55aa .<.t........??U.
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ИЧU╙
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
|||
エー ヘ乎以ヘ郁ヘー ヘ庫以ヘ郁ヘー ヘ袴以ヘ郁ヘー ヘ雇以ヘ郁ヘー ヘ瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞瑞<E7919E>Uェ
|
Binary file not shown.
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Binary file not shown.
|
@ -0,0 +1,45 @@
|
|||
G {}
|
||||
V {}
|
||||
S {}
|
||||
E {}
|
||||
L 14 390 -860 410 -860 {}
|
||||
L 14 410 -860 410 -790 {}
|
||||
L 14 300 -720 480 -720 {}
|
||||
L 14 480 -720 480 -660 {}
|
||||
L 14 460 -690 480 -690 {}
|
||||
L 19 650 -770 650 -760 {}
|
||||
L 19 770 -790 790 -790 {}
|
||||
L 19 790 -820 790 -790 {}
|
||||
L 19 780 -730 800 -730 {}
|
||||
L 19 800 -730 800 -710 {}
|
||||
L 20 840 -760 840 -630 {}
|
||||
L 20 500 -780 520 -780 {}
|
||||
L 20 500 -780 500 -760 {}
|
||||
L 20 30 -760 500 -760 {}
|
||||
L 20 30 -760 30 -740 {}
|
||||
L 20 820 -760 840 -760 {}
|
||||
L 20 470 -630 840 -630 {}
|
||||
L 21 860 -770 860 -660 {}
|
||||
L 21 260 -790 510 -790 {}
|
||||
L 21 830 -770 860 -770 {}
|
||||
L 21 260 -660 860 -660 {}
|
||||
P 5 5 540 -810 540 -770 760 -770 760 -810 540 -810 {}
|
||||
P 5 5 540 -750 780 -750 780 -710 540 -710 540 -750 {}
|
||||
P 19 4 650 -750 640 -760 660 -760 650 -750 {}
|
||||
P 19 5 520 -820 520 -700 820 -700 820 -820 520 -820 {}
|
||||
P 19 4 770 -780 770 -800 760 -790 770 -780 {}
|
||||
P 19 4 790 -710 810 -710 800 -700 790 -710 {}
|
||||
P 20 4 470 -620 470 -640 460 -630 470 -620 {}
|
||||
P 20 4 20 -740 40 -740 30 -730 20 -740 {}
|
||||
P 21 4 830 -760 830 -780 820 -770 830 -760 {}
|
||||
P 21 4 520 -790 510 -780 510 -800 520 -790 {}
|
||||
T {x86 Program Loader Routine} 10 -950 0 0 0.4 0.4 {}
|
||||
T {Set Variables - Print Data Field Names} 20 -870 0 0 0.4 0.4 {}
|
||||
T {Text/Hex Display Routine} 20 -800 0 0 0.4 0.4 {}
|
||||
T {Set Variables - Print Colons} 20 -730 0 0 0.4 0.4 {}
|
||||
T {Display Routine: Disable Memory Increment} 40 -700 0 0 0.4 0.4 {}
|
||||
T {Display Routine: Enable Memory Increment} 40 -640 0 0 0.4 0.4 {}
|
||||
T {Call Display Routine} 60 -670 0 0 0.4 0.4 {}
|
||||
T {Text/Hex Display Routine} 520 -850 0 0 0.4 0.4 {}
|
||||
T {Address Calculator} 550 -800 0 0 0.4 0.4 {}
|
||||
T {Hext/ASCII Grid Display} 550 -740 0 0 0.4 0.4 {}
|
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,168 @@
|
|||
DATABASE LOGIC STEPPING PROGRAM - IMPLEMENTATION FILE
|
||||
|
||||
BX - Current Spot in DB
|
||||
|
||||
|
||||
INITIALIZATION STEP
|
||||
|
||||
COMMENTS ASSEMBLY OPCODES
|
||||
|
||||
Op Dest [Src] Op Data
|
||||
|
||||
Setting Up Eval Actions
|
||||
| Set Eval Result → <??> MOV <EvalLoc> ← ?? C606 ???? ??
|
||||
|
||||
|
||||
Adjust Pointer To SIZELEN From SIZE
|
||||
| Compare Skip Value To 0 CMP AL ← 00 3C ??
|
||||
| Jump To Grab SIZELEN If Not 0 JNZ <Grab SIZELEN> 75 ??
|
||||
| Skip Over Max SIZE ADD BX ← 0xFF 83C3 FF
|
||||
|
||||
|
||||
Size Length Zero?
|
||||
| Compare Size Length To Zero CMP [BX] ← 00 ???? 00
|
||||
| Jump Result If Match JE <Result> 74 ??
|
||||
|
||||
|
||||
The following function is set up to behave differently as it loops - to satisfy Initial, A, B and C requirements in the notes, in a single block of code.
|
||||
|
||||
|
||||
CONDITIONAL SIZE
|
||||
|
||||
This is what we send back if SIZELEN is zero. Tells other programs we didn't find anything.
|
||||
| Set DX to Zero Return Value MOV DX ← 01 00 BA 01 00
|
||||
|
||||
|
||||
If SIZELEN is 0, all there is here is a zero. We're done!
|
||||
| Grab SIZELEN to AL MOV AL ← [BX] 8A07
|
||||
| Compare Data To 0 CMP AL ← 00 3C 00
|
||||
| Jump if No Match JNE <Put SIZELEN in CL> 75 ??
|
||||
|
||||
|
||||
|
||||
The first cycle of this is NOP'd. This is designed to skip SIZELEN checks. Do we need this..?
|
||||
|
||||
| Jump To Increment BX (/ NOP) JMP <Increment BX/NOP> EB ??
|
||||
|
||||
I might not include this if I still can't think of why it's there. Maybe it was a jump point for custom SIZELEN interpretation? No point to that unless it's an E9 XXXX.
|
||||
|
||||
|
||||
Store SIZELEN in CL, so we remember its real size. We might not use the whole size, and we might treat the value the same as other sizes.
|
||||
But we will need to correctly skip over the real size of the data, so we need this to stick around.
|
||||
|
||||
| Put SIZELEN in CL MOV CL ← AL 88C1
|
||||
|
||||
|
||||
This code can be hijacked at JB to handle SIZELENs above 5. Currently, the real size is remembered, but the data is treated as SIZELEN of 4 by the reader.
|
||||
You can make it stop like at SIZELEN 0 if you like, just jump to the same spot as that JNE.
|
||||
|
||||
| Compare SIZELEN To 5 CMP AL ← 05 3C 05
|
||||
| Jump if Below JB <Increment BX (T)> 72 ??
|
||||
| Set SIZELEN To 4 MOV AL ← 04 B4 04
|
||||
|
||||
|
||||
The SIZELEN now holds a value from 0x01 to 0x04. We ruled out 0x00 with the earlier check.
|
||||
You will *hang* your system if this *ever* eats a 0x00 in AL. I make sure not to, but don't let that happen to you!
|
||||
Always wrap this in a zero check!
|
||||
|
||||
|
||||
|
||||
Move BX to wherever the SIZE data is. can be one byte ahead, but can also be somewhere dependent on SIZELEN.
|
||||
This needs to be fleshed out to handle that.
|
||||
|
||||
[ PLEASE IMPLEMENT ME! ]
|
||||
|
||||
|
||||
|
||||
Previous code for that was just an increment. The things I do for cool data structures.
|
||||
| Add/Subtract Position To BX INC BX 43
|
||||
The reason I'm sacrificing the glorious INC is so that the database can have a variable length SIZE field without changing the SIZELEN or the start position of the DB to other programs.
|
||||
|
||||
<---SIZE expands this way-| SIZELEN (1 byte) |-DB expands this way--->
|
||||
Look how nice that is. Now imagine if SIZE's arrow had to go in the other direction. It'd overwrite or force data to move and that's not good.
|
||||
|
||||
In other words, fix 255 bytes for SIZE, take how many bytes you need, and set SIZELEN to reflect it. Ignore the unused bytes or add a silly <255 character comment.
|
||||
|
||||
|
||||
We're dividing SIZELEN by 2. This will tell us two things - if the number is even, and if it's greater than two. This is everything we need to know.
|
||||
Remember, the number is 0x01 to 0x04. With the above we can know exactly which number it is - more importantly, what to and not to do based on the number.
|
||||
I specifically arranged the meanings attached to the numbers (since it's arbitrary) to make the check work in one pass.
|
||||
|
||||
| Set CH To 2 MOV CH ← 02 B5 02
|
||||
| Divide AL By 2 DIV AL ← CH F6 F5
|
||||
|
||||
|
||||
|
||||
|
||||
We're not returning that default value anymore - we want this zeroed. (Do we really?)
|
||||
| Zero DX XOR DX ← DX 31 D2
|
||||
|
||||
Take the first word of SIZE and add it to the value in DX, which is now zero.
|
||||
| Add Size Data To DX ADD DX ← [BX] 89 1F
|
||||
|
||||
|
||||
Hey, wait a second. Can't I just do a MOV?
|
||||
[ CHECK THIS LATER ]
|
||||
|
||||
|
||||
|
||||
|
||||
If the SIZELEN was even, AH will be zero. We can skip the code for relative addresses - our address must be absolute.
|
||||
| Compare AH to 00 CMP AH ← 00 80FC 00
|
||||
| Jump Multiply AL JE <Multiply AL by 2> 74 ??
|
||||
|
||||
If the SIZELEN was odd, we run this code. First, we subtract the SIZE word, undoing what we did earlier.
|
||||
| Subtract Size Data from DX SUB DX ← [BX] 2B 1F
|
||||
|
||||
Then we do the right thing - adding the SIZE *byte*.
|
||||
| Add Size Byte to DX ADD DX ← [BX] 88 1F
|
||||
|
||||
Then, since this is relative, we add the current location.
|
||||
| Add Current Location to BX ADD DX ← BX 8B D3
|
||||
|
||||
|
||||
We exclude the size from this calculation.
|
||||
| Add Size Length to DX ADD DX ← CL 8A D1
|
||||
Because of our fancy SIZE structure, this isn't enough. We'll be sitting at SIZELEN in that case, so we'd also need to push forward by one.
|
||||
|
||||
We should add an Increment DX/NOP here. Single byte, so easy to NOP.
|
||||
| Increment DX (/NOP) INC DX 42
|
||||
[ DON'T FORGET TO NOP ME ON CONDITION! ]
|
||||
|
||||
1
|
||||
00 01
|
||||
|
||||
2
|
||||
01 00
|
||||
|
||||
|
||||
3
|
||||
01 01
|
||||
|
||||
04
|
||||
|
||||
02 00
|
||||
|
||||
Add the remainder to AL, then Multiply AL by 2.
|
||||
| Add AH to AL ADD AL ← AH
|
||||
| Multiply AL By 2 MUL AL ← CH
|
||||
|
||||
|
||||
Intel uses 'Less' to describe signed integer < checks and 'Below' to describe unsigned < checks.
|
||||
Signed means that 00-FF is split in uneven halves at the highest bit, and half is 'positive', half is 'negative'.
|
||||
'Positive' numbers use up a spot for zero, so negative always goes one bit farther. If positive has up to the integer 3, negative will have up to -4, for example.
|
||||
Try to avoid mixing up signed and unsigned checks, even when they would normally behave the same, unless you're doing something special.
|
||||
|
||||
If the value in AL
|
||||
| Compare SIZELEN(AL) to 2 CMP AL ← CH 3C 02
|
||||
| Jump if Below or Equal JBE
|
||||
|
||||
|
||||
|
||||
| Increment BX INC BX 43
|
||||
|
||||
| Jump To Increment BX (/ NOP) JMP <Increment BX/NOP> EB ??
|
||||
|
|
||||
|
||||
|
||||
|
|
@ -0,0 +1,135 @@
|
|||
DATABASE LOGIC STEPPING PROGRAM - BRAINSTORMING FILE
|
||||
|
||||
All data is in Big Endian unless marked otherwise.
|
||||
|
||||
|
||||
SZsz [stSTlnLN [...]] ← non-optimized SIZELEN - may not have homogeneous SIZE
|
||||
sz [stln [...]] ← using optimized SIZELEN - homogeneous SIZE (fast index / search!)
|
||||
|
||||
|
||||
( db index number * db entry size ) + start of DB = location of homogeneous entry
|
||||
non-homogeneous entries cannot do this because 'db entry size' is not constant.
|
||||
You'd have to do some special work to tackle that, like sorting the DB by entry sizes to speed up indexing.
|
||||
|
||||
|
||||
Smallest DB ( not including interpreter ) : 0x XX XX XX
|
||||
| 3 bytes with optimized SIZELEN - contains a single arbitrary,
|
||||
| non-empty entry
|
||||
|
||||
: 0x 01 03 01 00 00
|
||||
| 5 bytes with non-optimized SIZELEN - single entry, [0x00,0x0]
|
||||
| (starts after end of DB, length of one byte)
|
||||
|
||||
: 0x 00
|
||||
| 1 byte if empty
|
||||
|
||||
|
||||
|
||||
|
||||
Add 255 → BX
|
||||
.- Size Length Zero? SIZELEN
|
||||
| Subtract SIZELEN → BX
|
||||
| CONDITIONAL SIZE EVAL → <??> ←----------. SIZE
|
||||
| ADD <??> (/00) → BX ←------------------|-.
|
||||
|- Past DB End? | |
|
||||
| Conditional Jump - Program State | |
|
||||
| | | |
|
||||
|- A | Start Length Zero? -----------------: | STARTLEN
|
||||
| | | Set Jump to B ----------------------: |
|
||||
| | | Set Eval Result → <??> | |
|
||||
| | | Jump CONDITIONAL SIZE EVAL----------: | START
|
||||
| | | |
|
||||
| B | Set Eval Result → <??> | | LENLEN
|
||||
| | | Set Jump to C | |
|
||||
| | | NOP Out BX Increment | |
|
||||
| | | Jump CONDITIONAL SIZE EVAL----------' | LEN
|
||||
| | |
|
||||
| C | Set Jump to A |
|
||||
| | Re-Add BX Increment |
|
||||
:----| Jump CONDITIONAL DATABASE OPERATION | <DATABASE 'FILE'>
|
||||
| | Jump Increment BX --------------------'
|
||||
|
|
||||
'→ Result → <??>
|
||||
|
||||
Conditional Size Evaluation Function
|
||||
(up to 255 bytes - our implementation will only handle up to four)
|
||||
|
||||
SIZE SIZELEN DESCRIPTION
|
||||
------------ 0x 00 Return 0x 01 00 (little endian)
|
||||
0x 00 0x 01 Distance after end of SIZELEN
|
||||
0x 0000 0x 02 Absolute location
|
||||
0x 00 0000 0x 03 Distance after end of SIZELEN, segment location override
|
||||
0x 0000 0000 0x 04 Absolute location, segment location override
|
||||
|
||||
0x >00000000 0x >04 Same as 0x04, skip extra bytes
|
||||
|
||||
|
||||
DISTANCE / ABSOLUTE
|
||||
(ODD) 3 1__ ____4 2 (EVEN)
|
||||
| `/. |
|
||||
(> 2) 3 4--` `--1 2 (!>2)
|
||||
SEGMENT / NO SEGMENT
|
||||
|
||||
|
||||
Compare to 2 ...
|
||||
|
||||
SIZELEN Empty
|
||||
AL AH
|
||||
1,2 3,4 What's There?
|
||||
|
||||
!>2 >2 Check To Determine Value
|
||||
------------------------------------------------------
|
||||
!SEG SEG Action To Take
|
||||
|
||||
|
||||
Divide By 2...
|
||||
|
||||
Quotient Remainder
|
||||
AL AH
|
||||
0 1 What's There?
|
||||
|
||||
|
||||
|
||||
XOR [BX] → DX - Zero DX
|
||||
|
||||
ODD?
|
||||
SUB [BX] → DX - Subtract the full location amount
|
||||
ADD [BX] → DL - Start with the size data
|
||||
ADD BX → DX - Add our current location
|
||||
ADD CL → DX - Add the size of our size descriptor
|
||||
|
||||
ADD [BX] → DX - Add the full location amount
|
||||
|
||||
|
||||
|
||||
|
||||
- Not Used - 2,4 1,3 Indicated SIZELEN Value
|
||||
|
||||
!=1 =1 Check to Determine Value
|
||||
EVEN ODD Contextual Meaning
|
||||
------------------------------------------------------
|
||||
ABS DIST Action To Take
|
||||
|
||||
|
||||
(This handling can be modified! It's really just a fancy way of encoding where
|
||||
something is. This version uses x86 16-bit memory addressing.)
|
||||
|
||||
|
||||
|
||||
|
||||
Consider: Optimized Fast Address Returns?
|
||||
|
||||
|
||||
SIZE Described Addresses | Quick n' Dirty Directly Returned Addresses (Optimized Stuff)
|
||||
SIZELEN 00 01 02 03 04 05 06 07 08 09 0A 0B 0C | 0D 0E 0F 10 11 12 13 14 15 16
|
||||
|
|
||||
SIZE 00 -- (returns smallest valid data) | -- -- -- -- -- -- -- -- -- --
|
||||
(Return Directly) |
|
||||
0x 01 00 (little endian) |
|
||||
01 XX | -- -- -- -- -- -- -- -- -- --
|
||||
02 XX xx | -- -- -- -- -- -- -- -- -- --
|
||||
.. -- XX←xx←xx←xx←xx←xx←xx←xx←xx←xx←xx←xx | -- -- -- -- -- -- -- -- -- --
|
||||
|(Return Directly)
|
||||
| 0123 4567 89AB CDEF ... ... ... ... ... ...
|
||||
|
||||
|
|
@ -0,0 +1,63 @@
|
|||
|
||||
|
||||
|
||||
|
||||
Set Statics
|
||||
|
||||
(Interrupt used is 0x10: Video Interrupt)
|
||||
|
||||
BH 0x00 Page 0 (Could use XOR here)
|
||||
BL 0x-- Non-Special Attribute
|
||||
DL 0xXX Initial Column
|
||||
DH 0xXX Initial Row
|
||||
|
||||
ES 0xXXXX Move DS to ES here, or set to your liking.
|
||||
BP 0xXXXX Set to wherever your string starts. Match it to the offset.
|
||||
|
||||
Template
|
||||
[ ] |
|
||||
|
|
||||
|
||||
|
||||
|
||||
Set Initial Statics
|
||||
|
||||
[ ] MOV DX 0x---- | BA ---- Set Initial Column And Row
|
||||
[ ] MOV BX 0x--00 | BB --00 Set Non-Special Attribute, Write To Page 0 of Video Memory
|
||||
[ ] MOV AX 0x0013 | B8 0013 Set Video Interrupt to: Write String Mode, String Format 00
|
||||
(String Format: Pure CP437, Attribute in BL, do not move cursor)
|
||||
[ ] MOV SI 0x---- | BD ---- Set Memory Location of Data To Print
|
||||
|
||||
[a] JMP ?? | EB ?? Jump To: d
|
||||
|
||||
Set Post Execution Statics
|
||||
|
||||
[b] INC BP | FF C5 Advance Memory
|
||||
[c] INC DL | FE C6 Advance Cursor
|
||||
[d] XOR CX | 31 C9 Zero Count
|
||||
|
||||
Check Execution Progress
|
||||
|
||||
[ ] MOV DI AX | 8B C7 Move ColMax, RowMax to AX
|
||||
[e] CMP AL 0x-- | 3C -- Check ColMax
|
||||
[ ] JB 0x-- | Skip If Below ColMax
|
||||
|
||||
[f] CMP AH -- | Check RowMax
|
||||
[ ] JGE | Stop Execution If
|
||||
|
||||
[g] INC CX | Advance Count
|
||||
|
||||
Set Lock State
|
||||
|
||||
[ ] MOV AL SI | Retrieve Current Memory Value
|
||||
|
||||
[h] CMP AX | Lock Effect Switch
|
||||
[ ] MOV BL 0x-- | Set Special Attribute To Lock
|
||||
[ ] MOV 0x---- 0x---- | C706 ---- ---- Set Lock Effect Switch To Excution
|
||||
|
||||
|
||||
Execution
|
||||
|
||||
[j] | Execute
|
||||
[ ] INT 10 | CD 10 Call Video Interrupt
|
||||
[k] | Jump To: b
|
|
@ -0,0 +1,140 @@
|
|||
Word Register Reference
|
||||
|
||||
AX - DB Value
|
||||
BX - DB Position
|
||||
CX - Displacement Value/DB Value
|
||||
DX - Displacement Value/DB Position Backup
|
||||
|
||||
|
||||
Byte Register Reference
|
||||
|
||||
AL - DB Type Byte
|
||||
Other Registers Unused
|
||||
|
||||
|
||||
Operational Data Reference
|
||||
|
||||
Bytes Description
|
||||
2 Pointer DB Start
|
||||
2 Pointer DB End
|
||||
2 Pointer DB Position
|
||||
1 Pointer Type
|
||||
2 Pointer Data
|
||||
|
||||
2 Range DB Start
|
||||
2 Range DB End
|
||||
2 Range DB Poisition
|
||||
1 Range Type
|
||||
2 Range Start
|
||||
2 Range End
|
||||
|
||||
2 Displacement Start
|
||||
2 Displacement End
|
||||
2 Displacement Value
|
||||
|
||||
|
||||
Pointer Type Byte Specification A
|
||||
|
||||
0x0, 0x6-FF - Empty Word
|
||||
0x1 - Byte Relative
|
||||
0x2 - Word Relative
|
||||
0x3 - Word Absolute
|
||||
0x4 - Byte Relative to Word Relative (B2W)
|
||||
0x5 - Word Relative to Byte Relative (W2B)
|
||||
|
||||
|
||||
Range Type Byte Specification A
|
||||
|
||||
Range : Consists of Start Word Pointer, End Word Pointer
|
||||
|
||||
0x0 - 0x3-FF - Empty DoubleWord
|
||||
0x1 - Inactive Range
|
||||
0x2 - Active Range
|
||||
|
||||
|
||||
Pointer Calculation Procedure Specification A
|
||||
|
||||
0x: Omit Data Here (0 Bytes)
|
||||
|
||||
Jump Description
|
||||
|
||||
Aa Limit Check
|
||||
CMP Pointer DB Position with Pointer DB End
|
||||
JGE Exit
|
||||
(Ba) JMP/0x Read Type
|
||||
|
||||
Ba Read Type
|
||||
MOV [BX] → AL
|
||||
|
||||
Read Pointer Data
|
||||
INC BX
|
||||
MOV [BX] → CX
|
||||
|
||||
Check Displacement
|
||||
CMP CX ⇄ Displacement Start
|
||||
(Ca) JB Check Type Zero
|
||||
CMP CX ⇄ Displacement End
|
||||
(Ca) JA Check Type Zero
|
||||
JMP/0x Add Displacement
|
||||
|
||||
Add Displacement
|
||||
ADD Displacement → CX
|
||||
(Ca) JMP/0x Check Type Zero
|
||||
|
||||
Ca Check Type Zero
|
||||
CMP AL ⇄ 0x0
|
||||
(?a/?b) JA Next Field
|
||||
(Da/Db) JMP/0x Check Type Empty (Pointer/Range)
|
||||
|
||||
Da Check Type Empty (Pointer)
|
||||
CMP AL ⇄ 0x5
|
||||
(?a) JA Next Field (Pointer)
|
||||
(Ea) JMP/0x Check Type 0x1 (Pointer)
|
||||
|
||||
Db Check Type Empty (Range)
|
||||
CMP AL ⇄ 0x2
|
||||
(?a) JA Next Field (Range)
|
||||
(Eb) JMP/0x Check Type 0x1 (Range)
|
||||
|
||||
Ea Check Type 0x1 (Pointer)
|
||||
CMP AL ⇄ 0x1
|
||||
(?a) JE Check Convert 0x1 (Pointer)
|
||||
(?a) JMP/0x Check Type 0x2 (Pointer)
|
||||
|
||||
Fa Check Type 0x1 (Range)
|
||||
CMP AL ⇄ 0x1
|
||||
(?a) JE Check Convert 0x1 (Range)
|
||||
(?a) JMP/0x Check Type 0x3 (Range)
|
||||
|
||||
Eb Check Type 0x2 (Pointer)
|
||||
CMP AL ⇄ 0x2
|
||||
(?a) JE Check Convert 0x2 (Pointer)
|
||||
(?a) JMP/0x Check Type 0x3 (Pointer)
|
||||
|
||||
Fb Check Type 0x2 (Range)
|
||||
CMP AL ⇄ 0x2
|
||||
(?a) JE Check Convert 0x2 (Range)
|
||||
(?a) JMP/0x Check Type 0x3 (Range)
|
||||
|
||||
Gb Next Field (Range)
|
||||
ADD BX + 0x4
|
||||
(Aa) JMP/0x Limit Check
|
||||
|
||||
Ec Check Type 0x3 (Pointer)
|
||||
CMP AL ⇄ 0x3
|
||||
(?a) JE Check Convert 0x3 (Pointer)
|
||||
(?a) JMP/0x Check Type 0x4 (Pointer)
|
||||
|
||||
Ed Check Type 0x4 (Pointer)
|
||||
CMP AL ⇄ 0x4
|
||||
(?a) JE Check Convert 0x4 (Pointer)
|
||||
(?a) JMP/0x Check Type 0x5 (Pointer)
|
||||
|
||||
Ee Check Type 0x5 (Pointer)
|
||||
CMP AL ⇄ 0x5
|
||||
(?a) JE Check Convert 0x5 (Pointer)
|
||||
(?a) JMP/0x Next Field (Pointer)
|
||||
|
||||
Ga Next Field (Pointer)
|
||||
ADD BX + 0x2
|
||||
(Aa) JMP/0x Limit Check
|
|
@ -0,0 +1,42 @@
|
|||
Steps:
|
||||
|
||||
Pointer Database Correction
|
||||
Initialize Registers
|
||||
|
||||
| Loop: BX < Pointer DB End
|
||||
| AL = 0x0
|
||||
| * Next Field (Pointer)
|
||||
AL < 0x2
|
||||
Zero DH, Increment BX, Move [BX] to DL, Decrement BX
|
||||
Add Displacement (CX) to DX
|
||||
Decrement AL, Add AL to Displacement
|
||||
Convert Byte-To-Word
|
||||
Range Database Check
|
||||
Initialize Registers
|
||||
Move BX to DX
|
||||
Move Range DB Start to BX
|
||||
Loop: BX < Range DB End
|
||||
Type not 0x2
|
||||
* Next Field (Range)
|
||||
Add Displacement End to Displacement Value in CX
|
||||
Range End > CX
|
||||
Range Start < CX
|
||||
Subtract Displacement End from Displacement Value in CX
|
||||
Add Range End to
|
||||
Next Field (Range)
|
||||
Finished
|
||||
* Initialize Registers
|
||||
No
|
||||
* Next Field (Pointer)
|
||||
0x3, 0x4
|
||||
Subtract Type-0x3 from Displacement
|
||||
Word-To-Byte Check
|
||||
Yes
|
||||
Convert Word-To-Byte
|
||||
* Initialize Registers
|
||||
No
|
||||
* Next Field (Pointer)
|
||||
| Next Field (Pointer)
|
||||
Finished! Perform Changes
|
||||
|
||||
|
Binary file not shown.
After Width: | Height: | Size: 334 KiB |
|
@ -0,0 +1,402 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="1000"
|
||||
height="1000"
|
||||
viewBox="0 0 264.58333 264.58334"
|
||||
version="1.1"
|
||||
id="svg8"
|
||||
inkscape:version="1.0.2 (e86c870879, 2021-01-15)"
|
||||
sodipodi:docname="Pointer Correction Graph.svg">
|
||||
<defs
|
||||
id="defs2">
|
||||
<marker
|
||||
style="overflow:visible;"
|
||||
id="Arrow1Lend"
|
||||
refX="0.0"
|
||||
refY="0.0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="scale(0.8) rotate(180) translate(12.5,0)"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
|
||||
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
|
||||
id="path1063" />
|
||||
</marker>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter1587"
|
||||
x="-0.0263094"
|
||||
width="1.0526188"
|
||||
y="-0.021265381"
|
||||
height="1.0425308">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.058255943"
|
||||
id="feGaussianBlur1589" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
style="color-interpolation-filters:sRGB"
|
||||
id="filter1591"
|
||||
x="-0.00547063"
|
||||
width="1.0109413"
|
||||
y="-0.043540705"
|
||||
height="1.0870814">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="0.05014874"
|
||||
id="feGaussianBlur1593" />
|
||||
</filter>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-5"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#775905;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path1063-9" />
|
||||
</marker>
|
||||
<marker
|
||||
style="overflow:visible"
|
||||
id="Arrow1Lend-59"
|
||||
refX="0"
|
||||
refY="0"
|
||||
orient="auto"
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
inkscape:isstock="true">
|
||||
<path
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 Z"
|
||||
id="path1063-6" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="0.95936913"
|
||||
inkscape:cx="621.92838"
|
||||
inkscape:cy="286.12663"
|
||||
inkscape:document-units="mm"
|
||||
inkscape:current-layer="layer1"
|
||||
inkscape:document-rotation="0"
|
||||
showgrid="false"
|
||||
units="px"
|
||||
inkscape:lockguides="false"
|
||||
inkscape:snap-global="false"
|
||||
inkscape:snap-page="true"
|
||||
inkscape:window-width="1375"
|
||||
inkscape:window-height="768"
|
||||
inkscape:window-x="29"
|
||||
inkscape:window-y="36"
|
||||
inkscape:window-maximized="0" />
|
||||
<metadata
|
||||
id="metadata5">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1">
|
||||
<path
|
||||
style="fill:#cac9e2;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
|
||||
d="M 0,0 V 264.58333 H 264.58333 V 0 Z"
|
||||
id="path1438-7"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<g
|
||||
id="g2254">
|
||||
<path
|
||||
id="path1438-7-6"
|
||||
style="fill:#d7d6e9;fill-opacity:1;stroke:#ffffff;stroke-width:0.95468;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 166.0681,257.03822 -46.21959,-15.0051 -11.07809,15.0051 z" />
|
||||
<path
|
||||
id="path2210"
|
||||
style="fill:#d7d6e9;fill-opacity:1;stroke:#ffffff;stroke-width:0.677351;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 168.46772,237.72786 -6.25225,-14.33411 16.97509,-43.07724 H 161.388 l -8.5089,-34.5757 -11.8643,8.74482 -20.56641,-16.10212 -2.01582,6.73179 -19.631126,-4.34843 v 7.44516 l -20.422547,10.59053 6.188544,3.61861 -13.775112,14.48639 11.604922,5.47903 -9.502988,26.92926 14.1759,-3.18317 12.05016,31.59518 h 13.409327 l 7.85994,-10.64618 32.79298,10.64618 z" />
|
||||
<path
|
||||
id="path2208"
|
||||
style="fill:#d7d6e9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 264.58333,128.803 -15.49518,8.93692 15.49518,11.56209 z" />
|
||||
<path
|
||||
id="path2206"
|
||||
style="fill:#d7d6e9;fill-opacity:1;stroke:#ffffff;stroke-width:0.903622;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 246.95999,113.44135 -53.99549,-23.369 21.71083,-24.33234 -109.67997,-1.909864 8.11482,-26.048883 -68.239624,31.731782 1.36399,-24.440206 c 0,0 -2.685982,3.302452 -6.724221,8.340835 -4.038238,5.038384 -9.428806,11.812724 -14.83858,18.756839 -2.704887,3.472057 -5.414366,6.98671 -7.962131,10.347828 -2.547765,3.36112 -4.93355,6.568854 -6.9908547,9.42745 -0.672227,0.934051 -1.245903,1.762312 -1.842156,2.614975 V 255.9145 H 88.21703 L 72.141474,213.76485 53.23007,218.01138 65.907561,182.0863 50.425977,174.77698 68.80271,155.45138 60.546862,150.62395 87.791629,136.49562 v -9.93224 l 26.188971,5.80104 2.68921,-8.98057 27.43669,21.48108 15.8276,-11.66605 11.35133,46.12582 H 195.035 l -22.64568,57.46734 8.34083,19.12246 h 66.22984 V 151.74372 l -14.00179,-10.44776 14.00179,-8.0756 z" />
|
||||
<path
|
||||
id="path2204"
|
||||
style="fill:#d7d6e9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 0,1.259365e-5 V 86.020083 c 0.65984815,-0.943605 1.2947103,-1.860206 2.0386352,-2.89388 2.2767316,-3.163486 4.9169764,-6.713347 7.7364785,-10.432955 2.8195023,-3.719605 5.8179663,-7.60912 8.8113483,-11.451497 5.986765,-7.684754 11.952275,-15.181625 16.42122,-20.757388 4.468945,-5.575763 7.441406,-9.230445 7.441406,-9.230445 l -1.509469,27.046928 75.517871,-35.116202 -8.98033,28.827181 121.37812,2.113565 -24.02644,26.927556 59.75449,25.861474 V 1.259365e-5 Z" />
|
||||
</g>
|
||||
<path
|
||||
style="fill:#ebefe0;fill-opacity:0.78555036;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 0,1.2916667e-5 V 264.58334 H 264.58333 V 1.2916667e-5 Z"
|
||||
id="path1438-7-7"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.158496;stroke-opacity:1;"
|
||||
x="16.154453"
|
||||
y="19.143269"
|
||||
id="text835"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan833"
|
||||
x="16.154453"
|
||||
y="19.143269"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;">AX - </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="16.154453"
|
||||
y="27.068106"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan837">BX - </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="16.154453"
|
||||
y="34.992943"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan839">CX - </tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="16.154453"
|
||||
y="42.917782"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan841">DX - </tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.158496;stroke-opacity:1;"
|
||||
x="-24.372194"
|
||||
y="-6.392415"
|
||||
id="text835-8"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="-24.372194"
|
||||
y="-6.392415"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan841-2">Text Template</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.158496;stroke-opacity:1;"
|
||||
x="14.462727"
|
||||
y="79.992447"
|
||||
id="text835-8-2"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="14.462727"
|
||||
y="79.992447"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:6.33987px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.158496;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan841-2-2">Pointer Correction Mechanism</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:10.5833px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
x="25.857334"
|
||||
y="92.007896"
|
||||
id="text914"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan912"
|
||||
x="25.857334"
|
||||
y="92.007896"
|
||||
style="stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:6.33987px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
x="42.553078"
|
||||
y="62.551476"
|
||||
id="text956"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan954"
|
||||
x="42.553078"
|
||||
y="62.551476"
|
||||
style="stroke-width:0.264583;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"></tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0827665;stroke-opacity:1;"
|
||||
x="139.01637"
|
||||
y="7.4506211"
|
||||
id="text835-8-2-6"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="7.4506211"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan841-2-2-1">Operational Data Reference</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="11.588972"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1020"></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="15.727324"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1022"> Bytes Description</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="19.865667"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1024"> 2 Pointer DB Start</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="24.004019"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1026"> 2 Pointer DB End</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="28.14237"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1028"> 2 Pointer DB Position</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="32.280724"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1030"> 1 Pointer Type</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="36.419075"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1032"> 2 Pointer Data</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="40.557419"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1034"></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="44.695778"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1036"> 2 Range DB Start</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="48.834114"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1038"> 2 Range DB End</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="52.972466"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1040"> 2 Range DB Poisition</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="57.110817"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1042"> 1 Range Type</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="61.249168"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1044"> 2 Range Start</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="65.38752"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1046"> 2 Range End</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="69.525871"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1048"></tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="73.664223"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1050"> 2 Displacement Start</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="77.802574"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1052"> 2 Displacement End</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="81.940926"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1054"> 2 Displacement Value</tspan><tspan
|
||||
sodipodi:role="line"
|
||||
x="139.01637"
|
||||
y="86.079277"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.31068px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.0827665;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
id="tspan1056" /></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
x="18.493484"
|
||||
y="109.32951"
|
||||
id="text835-0"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="18.493484"
|
||||
y="109.32951"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
id="tspan841-9">X</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
x="10.42958"
|
||||
y="100.94665"
|
||||
id="text835-0-4"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="10.42958"
|
||||
y="100.94665"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
id="tspan841-9-9">Pointer Limit Check</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m -33.283516,16.292564 0,35.929956 h 17.65181 l 0,-35.929956 z"
|
||||
id="path1438"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
id="path1454"
|
||||
style="fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.16997px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter1587)"
|
||||
d="m 5.966346,2.4561808 -1.679786,1.2568517 0.065731,1.3906371 0.3339653,0.00531 0.00133,-0.2818455 0.3645068,0.028218 0.016484,0.2510339 2.2880766,0.029485 L 7.2793448,6.2198873 6.8524903,6.8966181 6.1832443,7.0669078 6.3628436,6.5171232 7.0356328,5.6295157 6.1891002,6.0501261 6.0436958,5.4983862 5.3027311,6.4843475 H 4.6928956 L 5.3259691,7.5045022 4.7456794,7.9682692 5.8627702,8.3158454 5.9278371,9.0309165 7.2557312,8.0067781 7.558823,8.5774406 8.5809695,7.3478107 9.1430008,7.5144614 9.0218304,5.2411067 9.6007922,4.9496339 7.9339531,3.5812391 8.2908247,3.0361385 5.8382042,3.0842748 Z M 6.1373125,3.6997535 V 4.6478699 H 5.7933878 V 3.7306271 Z"
|
||||
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccc" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.07278px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.16997;filter:url(#filter1591);stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;"
|
||||
x="10.109465"
|
||||
y="7.1266541"
|
||||
id="text1461"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan1459"
|
||||
x="10.109465"
|
||||
y="7.1266541"
|
||||
style="font-style:italic;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:4.07278px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Bold Italic';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;stroke-width:0.16997;stroke:none;stroke-opacity:1;fill:#655b41;fill-opacity:1;">PROTOTYPE</tspan></text>
|
||||
<path
|
||||
id="path2105"
|
||||
style="fill:none;fill-opacity:1;stroke:#c2c1de;stroke-width:20;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m -330.93583,-100.13071 -75.51787,35.116205 1.50947,-27.046928 c 0,0 -47.55605,58.473188 -48.2322,64.482884 l -8.2703,-9.792684 -14.65285,56.620316 -27.82621,-7.687386 12.90516,120.131173 -26.42061,30.8813 118.83409,48.35829 4.08709,45.59052 131.39146,-31.81874 38.97178,25.80153 47.82396,-65.80942 43.58029,2.1213 -30.59764,-107.037894 41.74578,-8.121985 -76.70074,-57.233198 37.17654,-21.4421029 -81.43585,-35.2448751 24.02644,-26.927556 -121.37812,-2.113566 z m 3.93929,94.7327211 30.36301,23.7721909 17.51572,-12.9103229 12.56203,51.0454609 h 26.28263 l -25.061,63.59664 12.95269,29.69638 -74.7019,-24.25176 -24.65741,33.39746 -24.53338,-64.325285 -20.92844,4.699455 14.02964,-39.756746 -17.13281,-8.08891 20.33674,-21.386808 -9.13639,-5.34231 30.15062,-15.6352215 V -1.8793428 l 28.98221,6.4197652 z" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;line-height:1.25;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
x="36.368095"
|
||||
y="109.32951"
|
||||
id="text835-0-8"
|
||||
transform="scale(1.1002022,0.90892384)"><tspan
|
||||
sodipodi:role="line"
|
||||
x="36.368095"
|
||||
y="109.32951"
|
||||
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.356px;font-family:'Liberation Mono';-inkscape-font-specification:'Liberation Mono, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-east-asian:normal;fill:#655b41;fill-opacity:1;stroke:none;stroke-width:0.0838996;stroke-opacity:1"
|
||||
id="tspan841-9-2">O</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 30 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 53 KiB |
|
@ -0,0 +1 @@
|
|||
b40e803e127c1f7c14803e127c2a7f0d8a061f7ccd108006127c01ebe5ebfe48656c6c6f20576f726c6421
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,134 @@
|
|||
-- we can read Lua syntax here!
|
||||
return {
|
||||
["kopt_auto_straighten"] = 0,
|
||||
["toc_ticks_ignored_levels"] = {},
|
||||
["disable_fuzzy_search"] = false,
|
||||
["show_overlap_enable"] = false,
|
||||
["stats"] = {
|
||||
["md5"] = "f1d0c15e93f4f75173999fec567c85ec",
|
||||
["notes"] = 0,
|
||||
["language"] = "N/A",
|
||||
["authors"] = "N/A",
|
||||
["series"] = "N/A",
|
||||
["highlights"] = 0,
|
||||
["title"] = "210498-005_80286_and_80287_Programmers_Reference_Manual_1987",
|
||||
["pages"] = 513,
|
||||
},
|
||||
["kopt_font_size"] = 1,
|
||||
["readermenu_tab_index"] = 1,
|
||||
["doc_pages"] = 513,
|
||||
["kopt_page_margin"] = 0.1,
|
||||
["kopt_zoom_overlap_h"] = 36,
|
||||
["page_overlap_style"] = "dim",
|
||||
["kopt_zoom_range_number"] = 2,
|
||||
["percent_finished"] = 0.51267056530214,
|
||||
["zoom_overlap_h"] = 40,
|
||||
["kopt_page_gap_height"] = 8,
|
||||
["kopt_full_screen"] = 1,
|
||||
["kopt_line_spacing"] = 1.2,
|
||||
["kopt_text_wrap"] = 0,
|
||||
["kopt_justification"] = 3,
|
||||
["zoom_overlap_v"] = 40,
|
||||
["kopt_font_fine_tune"] = 0.05,
|
||||
["kopt_word_spacing"] = -0.2,
|
||||
["partial_md5_checksum"] = "f1d0c15e93f4f75173999fec567c85ec",
|
||||
["kopt_contrast"] = 1,
|
||||
["kopt_page_opt"] = 0,
|
||||
["kopt_hw_dithering"] = 0,
|
||||
["kopt_sw_dithering"] = 0,
|
||||
["kopt_quality"] = 1,
|
||||
["kopt_doc_language"] = "eng",
|
||||
["kopt_forced_ocr"] = 0,
|
||||
["kopt_writing_direction"] = 0,
|
||||
["kopt_defect_size"] = 1,
|
||||
["highlight"] = {},
|
||||
["kopt_rotation_mode"] = 0,
|
||||
["flipping_zoom_mode"] = "page",
|
||||
["flipping_scroll_mode"] = false,
|
||||
["kopt_zoom_mode_genus"] = 4,
|
||||
["kopt_zoom_overlap_v"] = 36,
|
||||
["kopt_zoom_mode_type"] = 1,
|
||||
["highlight_drawer"] = "lighten",
|
||||
["kopt_zoom_factor"] = 1.5,
|
||||
["kopt_detect_indent"] = 1,
|
||||
["zoom_mode"] = "pagewidth",
|
||||
["render_mode"] = 0,
|
||||
["kopt_page_scroll"] = 1,
|
||||
["kopt_trim_page"] = 1,
|
||||
["panel_zoom_enabled"] = false,
|
||||
["preferred_dictionaries"] = {},
|
||||
["bookmarks_sorted"] = true,
|
||||
["bookmarks_sorted_20220106"] = true,
|
||||
["rotation_mode"] = 0,
|
||||
["highlights_imported"] = true,
|
||||
["bookmarks"] = {},
|
||||
["config_panel_index"] = 1,
|
||||
["gamma"] = 1,
|
||||
["normal_zoom_mode"] = "pagewidth",
|
||||
["bbox"] = {},
|
||||
["page_positions"] = {
|
||||
[1] = 0.14947683109118,
|
||||
[2] = 0.67151767151767,
|
||||
[4] = 0.14067914067914,
|
||||
[5] = 0.62023562023562,
|
||||
[7] = 0.089397089397089,
|
||||
[8] = 0.56895356895357,
|
||||
[10] = 0.038115038115038,
|
||||
[11] = 0.51767151767152,
|
||||
[13] = 0,
|
||||
[235] = 0.42827442827443,
|
||||
[244] = 0.27442827442827,
|
||||
[245] = 0.75398475398475,
|
||||
[247] = 0.22314622314622,
|
||||
[241] = 0.32571032571033,
|
||||
[242] = 0.80526680526681,
|
||||
[221] = 0,
|
||||
[253] = 0.12058212058212,
|
||||
[505] = 0.8953568953569,
|
||||
[254] = 0.6001386001386,
|
||||
[507] = 0.36451836451836,
|
||||
[222] = 0.47955647955648,
|
||||
[248] = 0.7027027027027,
|
||||
[511] = 0.79279279279279,
|
||||
[510] = 0.31323631323631,
|
||||
[512] = 0,
|
||||
[250] = 0.17186417186417,
|
||||
[251] = 0.65142065142065,
|
||||
[229] = 0.85654885654886,
|
||||
[228] = 0.37699237699238,
|
||||
[231] = 0,
|
||||
[256] = 0.069300069300069,
|
||||
[257] = 0.54885654885655,
|
||||
[259] = 0.018018018018018,
|
||||
[260] = 0.4975744975745,
|
||||
[262] = 0,
|
||||
[226] = 0.90783090783091,
|
||||
[236] = 0.90783090783091,
|
||||
[225] = 0.42827442827443,
|
||||
[239] = 0.85654885654886,
|
||||
[508] = 0.84407484407484,
|
||||
[238] = 0.37699237699238,
|
||||
[513] = 0,
|
||||
[233] = 0.95911295911296,
|
||||
[223] = 0.95911295911296,
|
||||
[232] = 0.47955647955648,
|
||||
},
|
||||
["last_page"] = 262,
|
||||
["kopt_max_columns"] = 2,
|
||||
["inverse_reading_order"] = false,
|
||||
["doc_props"] = {
|
||||
["author"] = "",
|
||||
["subject"] = "",
|
||||
["description"] = "",
|
||||
["keywords"] = "",
|
||||
["title"] = "210498-005_80286_and_80287_Programmers_Reference_Manual_1987",
|
||||
["creator"] = "",
|
||||
["producer"] = "Adobe Acrobat 9.0 Paper Capture Plug-in",
|
||||
["language"] = "",
|
||||
["creationDate"] = "D:20170815134559-08'00'",
|
||||
["series"] = "",
|
||||
["modDate"] = "D:20170815141443-07'00'",
|
||||
["authors"] = "",
|
||||
},
|
||||
["kopt_zoom_direction"] = 7,
|
||||
}
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,102 @@
|
|||
|
||||
Using This Table
|
||||
|
||||
When you use an opcode, and it uses a byte from this table, it will always do an A to B or B to A operation.
|
||||
|
||||
A is on the top.
|
||||
It is selected by the column.
|
||||
|
||||
B is on the right side.
|
||||
It is selected by the row.
|
||||
|
||||
A and B are separated into four sections (§).
|
||||
|
||||
|
||||
The opcode will tell you whether it is modifying
|
||||
- A to B, or
|
||||
- B to A.
|
||||
|
||||
It might also
|
||||
- only use B.
|
||||
In that case,
|
||||
- ignore the contents of A.
|
||||
It will provide you with an explicit source.
|
||||
|
||||
It will also tell you whether A is a
|
||||
- Byte,
|
||||
- Word, or
|
||||
- Segment.
|
||||
|
||||
It will also tell you if B points to a
|
||||
- Byte, or a
|
||||
- Word.
|
||||
|
||||
The purpose of the table is to tell you where data is coming from and going to, based on the byte you select and the opcode used.
|
||||
|
||||
All you need to know is:
|
||||
whether the data is a byte or word,
|
||||
and from what to where.
|
||||
|
||||
|
||||
TABLE B-1 REVISED (B-1r)
|
||||
|
||||
|
||||
A § 1
|
||||
|
||||
AL CL DL BL AH CH DH BH Byte Byte to/from B
|
||||
AX CX DX BX SP BP SI DI Word Word to/from B
|
||||
ES CS SS DS -- -- -- -- Segment Word to/from B
|
||||
|
||||
__________________________
|
||||
|
||||
0 1 2 3
|
||||
0 8 0 8 0 8 0 8
|
||||
00 08 10 18 20 28 30 38 | Mem: BX+SI |
|
||||
01 09 11 19 21 29 31 39 | Mem: BX+DI |
|
||||
02 0A 12 1A 22 2A 32 3A | Mem: BP+SI |
|
||||
03 0B 13 1B 23 2B 33 3B | Mem: BP+DI | B § 1
|
||||
04 0C 14 1C 24 2C 34 3C | Mem: SI |
|
||||
05 0D 15 1D 25 2D 35 3D | Mem: DI |
|
||||
06 0E 16 1E 26 2E 36 3E | Mem: inline word |
|
||||
07 0F 17 1F 27 2F 37 3F | Mem: BX |
|
||||
7 F 7 F 7 F 7 F
|
||||
|
||||
A § 2
|
||||
4 5 6 7
|
||||
0 8 0 8 0 8 0 8
|
||||
40 48 50 58 60 68 70 78 | Mem: B § 1+inline signed byte |
|
||||
41 49 51 59 61 69 71 79 | |
|
||||
42 4A 52 5A 62 6A 72 7A | |
|
||||
43 4B 53 5B 63 6B 73 7B | | B § 2
|
||||
44 4C 54 5C 64 6C 74 7C | ... |
|
||||
45 4D 55 5D 65 6D 75 7D | |
|
||||
46 4E 56 5E 66 6E 76 7E | Mem: BP + inline signed byte |
|
||||
47 4F 57 5F 67 6F 77 7F | |
|
||||
7 F 7 F 7 F 7 F
|
||||
|
||||
A § 3
|
||||
8 9 A B
|
||||
0 8 0 8 0 8 0 8
|
||||
80 88 90 18 A0 A8 B0 B8 | Mem: B § 1+inline signed word |
|
||||
81 89 91 19 A1 A9 B1 B9 | |
|
||||
82 8A 92 1A A2 AA B2 BA | |
|
||||
83 8B 93 1B A3 AB B3 BB | |
|
||||
84 8C 94 1C A4 AC B4 BC | | B § 3
|
||||
85 8D 95 1D A5 AD B5 BD | ... |
|
||||
86 8E 96 1E A6 AE B6 BE | Mem: B § 2+inline signed word |
|
||||
87 8F 97 1F A7 AF B7 BF | |
|
||||
7 F 7 F 7 F 7 F
|
||||
|
||||
A § 4
|
||||
C D E F Byte Word
|
||||
0 8 0 8 0 8 0 8
|
||||
C0 C8 D0 D8 E0 E8 F0 F8 | AL AX |
|
||||
C1 C9 D1 D9 E1 E9 F1 F9 | CL CX |
|
||||
C2 CA D2 DA E2 EA F2 FA | DL DX |
|
||||
C3 CB D3 DB E3 EB F3 FB | BL BX |
|
||||
C4 CC D4 DC E4 EC F4 FC | AH SP | B § 4
|
||||
C5 CD D5 DD E5 ED F5 FD | CH BP |
|
||||
C6 CE D6 DE E6 EE F6 FE | DH SI |
|
||||
C7 CF D7 DF E7 EF F7 FF | BH DI |
|
||||
7 F 7 F 7 F 7 F
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
So, with these references, what you want is to print the Appendix B of the 80286 Programming Manual, and also print out the HTML file for additional quick reference.
|
||||
The tables at the start of Appendix B are super useful, you probably want to print them loose and stick them up on your wall or something similar.
|
||||
A BIOS interrupt reference has been included. Happy BIOS hacking!
|
||||
|
||||
It's also likely I'll put the Linux Syscall table here, too, at some point.
|
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,11 @@
|
|||
# Opcode Projects
|
||||
|
||||
This is my humble directory of opcode projects.
|
||||
|
||||
The 80286 project folders are named after the prototype letter designators and a number.
|
||||
|
||||
The number 0 designates the main program, and numbers afterward are tests or necessary components to that program.
|
||||
|
||||
Prototype A is just a simple injector and a couple basic BIOS capability tests.
|
||||
Prototype B is a hex editor, with a couple test functions to debug some weird segmentation issues. Turned out to be bad DS values from sloppy BIOSes.
|
||||
Prototype C, what I'm working on right now, is an advanced editor and debugger that is started from a full-on program loader.
|
Loading…
Reference in New Issue