home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   alt.os.development      Operating system development chatter      4,255 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 3,285 of 4,255   
   s_dubrovich@yahoo.com to muta...@gmail.com   
   Re: segmentation (1/3)   
   28 Sep 22 10:13:54   
   
   On Tuesday, September 20, 2022 at 3:54:34 PM UTC-5, muta...@gmail.com wrote:   
   > On Tuesday, September 20, 2022 at 9:20:19 PM UTC+8, s_dub...@yahoo.com wrote:   
   > > On Sunday, September 18, 2022 at 4:29:15 PM UTC-5, muta...@gmail.com wrote:   
   > > > On Sunday, September 18, 2022 at 10:50:29 PM UTC+8, s_dub...@yahoo.com   
   wrote:   
   > > > > On Sunday, September 11, 2022 at 8:44:53 PM UTC-5, muta...@gmail.com   
   wrote:   
   > > > > > On Monday, September 12, 2022 at 4:23:43 AM UTC+8, s_d   
   b...@yahoo.com wrote:   
   > > > > > > On Sunday, September 4, 2022 at 1:55:32 PM UTC-5, mu   
   a...@gmail.com wrote:   
   > > > > > > > On Monday, September 5, 2022 at 1:03:24 AM UTC+8, Scott Lurndal   
   wrote:   
   > > > > > > > > "muta...@gmail.com"  writes:   
   > > > > > > > > >On Sunday, September 4, 2022 at 9:25:34 PM UTC+8, wolfgang   
   kern wrote:   
   > > > > > > > > >> On 04/09/2022 06:32, muta...@gmail.com wrote:   
   > > > > > > > >   
   > > > > > > > > >Noone had done segmentation before and it   
   > > > > > > > > >would take decades of science still to   
   > > > > > > > > >work through the repercussions.   
   > > > > > > > > Several very successful systems that predate the   
   > > > > > > > > 8086 by a full decade used segmentation; examples include the   
   PDP-11,   
   > > > > > > > > the B6500 et alia.   
   > > > > > > > They presumably didn't do 4 bit shifts or similar   
   > > > > > > > so didn't hit the a20 issue nor the flexible shift issue.   
   > > > > > > >   
   > > > > > > > The a20 is probably because of cp/m PSP though,   
   > > > > > > > not segment shift.   
   > > > > > > They presumably didn't do 4 bit shifts or similar   
   > > > > > > so didn't hit the a20 issue nor the flexible shift issue.   
   > > > > > >   
   > > > > > > The a20 is probably because of cp/m PSP though,   
   > > > > > > not segment shift.   
   > > > > > > ~~~   
   > > > > > >   
   > > > > > > Gosh, istm you have these concepts jumbled up.   
   > > > > > >   
   > > > > > > Sorry for the review but..   
   > > > > > > The 8080 cpu has 16 address lines A0..A15, we show this as a   
   hexidecimal word..   
   > > > > > >   
   > > > > > > Which ranges, 0000h..FFFFh, with each address addressing an 8-bits   
   byte.   
   > > > > > > This amounts to 65,536 bytes (64k) addressable, for the 8080 cpu.   
   > > > > > > The Code, Data, and Stack concepts are intermixed in the address   
   range.   
   > > > > > > Segment logic in not supported in the 8080 hardware.   
   > > > > > >   
   > > > > > > The address lines are binary, where each line is conceptually a   
   bit with the   
   > > > > > > value of either a 0 (clear) or 1 (set).   
   > > > > > > The address lines together (16 lines are 16 bits) indicate an   
   address value.   
   > > > > > > The address value is shown _in hex_ with 4 'nibbles' nnnnh, with 2   
   'nibbles'   
   > > > > > > forming a 'byte' nnh of 8 bits. Conceptually, a nibble (nh) is 4   
   bits.   
   > > > > > > Yet note that the smallest directly addressable element is a BYTE.   
   > > > > > > Nibbles and bits are indirectly accessable thru processor   
   instructions of   
   > > > > > > shift, rotate, logic masking etc in the context of a directly   
   addressed byte or   
   > > > > > > word. IOW you can make a pointer to a byte or word directly but   
   not a pointer   
   > > > > > > to a bit directly. You can make a pointer to a bit in a bit field   
   indirectly   
   > > > > > > as a side effect of making a pointer to a byte or word (with extra   
   processing).   
   > > > > > >   
   > > > > > > The binary nature of bit values, set (1) or clear (0) lends itself   
   to 'power of   
   > > > > > > 2' math in the cpu venue. Consequently, a value in the accumulator   
   shifted   
   > > > > > > left is a 'power of two' multiply. A value shifted right is a   
   'power of 2'   
   > > > > > > divide.   
   > > > > > >   
   > > > > > > Lets consider a nibble, whose value is 1, is in the low order   
   position of a byte in the accumulater, 01h.   
   > > > > > > We decide we want to place that nibble in the high order position   
   of the byte   
   > > > > > > in the accumulater, as 10h, the processor command to   
   left-shift-by-4 gives our   
   > > > > > > desired result. An 1x2**4 = 16, reflected in hexadecimal as 10h.   
   > > > > > >   
   > > > > > > Note that the 8080 does not have multiply and divide instructions.   
   > > > > > > Those functions were performed in software using the bit shift,   
   logic, compare,   
   > > > > > > and other primitives. Still, trig and floating-point libraries   
   were developed   
   > > > > > > for the 8080. You know, when programmers were PROGRAMMERS!   
   > > > > > >   
   > > > > > > CP/M, which should be called CP/M-80 to be clear, is an 8080 OS.   
   > > > > > > 86-DOS was the precursor to PC-DOS & MS-DOS.   
   > > > > > > 86-DOS took the logic of cpm-80 and tranfigured it for the 8086/88   
   cpu. Also   
   > > > > > > it adopted the fat file system.   
   > > > > > > CP/M-86 was a new OS that adopted the filesystem of cp/m-80 v2.2   
   and the same   
   > > > > > > BDOS function numbers plus additions for the 8086, notably,   
   setting the 'base'   
   > > > > > > ie. segment value of a DMA buffer. It adopted a 'loader linkage   
   record'   
   > > > > > > - my terminology - which told the loader how to set the segments   
   for an   
   > > > > > > executable .CMD file.   
   > > > > > >   
   > > > > > > Segmentation was thought to be helpful in program reliability by   
   computer scientists because the separation of code from data could lesson bugs   
   of   
   > > > > > > corruption of code or data or both.   
   > > > > > >   
   > > > > > > The 8086 has a linear addressing range of 00000h..FFFFFh.   
   > > > > > > Five nibbles = 20 address lines which are named A0..A19 inclusive.   
   > > > > > > An increment on an address value of FFFFFh rolls-over to address   
   00000h.   
   > > > > > > This is effectively a circular buffer structure but pertaining to   
   code.   
   > > > > > >   
   > > > > > > The A20 'thing' was not a 'thing' until subsequent cpu's expanded   
   the address   
   > > > > > > lines above the 8086 range, that is A20++.   
   > > > > > >   
   > > > > > > The 'thing' was that 86-dos, pc-dos, & msdos depended on the 8086   
   address   
   > > > > > > roll-over to implement cp/m-80 CALL 0005h operation. As I recall,   
   I saw   
   > > > > > > 'call 5' was in one of the utilities for 86-DOS src yet CALL 5 is   
   supported in   
   > > > > > > CMD.EXE .COM programs, up thru XP at least.   
   > > > > > >   
   > > > > > > So, no roll-over is bad. So the A20 was made to be toggled either   
   normal or   
   > > > > > > always clear until the controlling flag is changed. This was done   
   by the OEM   
   > > > > > > so as to not break those dos's.   
   > > > > > >   
   > > > > > > As to 8086 segmentation.. we have a linear address range of   
   00000h..FFFFFh.   
   > > > > > > An offset range for code and data, stack and ES of 0000h..FFFFh,   
   16 bits MAX.   
      
   [continued in next message]   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca