Real mode flat modelWhat key factor led to the sudden commercial success of MS Windows with v3.0?80286 can switch from real mode to protected mode - but why not back?IBM PS/2 Model 53 Not Powering OnWas there ever a genuine “mainframe-on-a-chip” microprocessor?Is there any reason to chose ES, FS, or GS over the others in real mode?What instructions for the 8086 and subsequent x86 CPUs are not available in Long Mode?What was the first Intel x86 processor with “Base + Index * Scale + Displacement” addressing mode?
Are space camera sensors usually round, or square?
"Literally" Vs "In the true sense of the word"
Bit one of the Intel 8080's Flags register
How major are these paintwork & rust problems?
POSIX compatible way to get user name associated with a user ID
Were Roman public roads build by private companies?
Can I tap all my opponent's lands while they're casting a spell to negate it?
Should I leave the first authorship of our paper to the student who did the project whereas I solved it?
Make 2019 with single digits
How do certain apps show new notifications when internet access is restricted to them?
Is the Dodge action perceptible to other characters?
In Germany, how can I maximize the impact of my charitable donations?
Telling my mother that I have anorexia without panicking her
Why don't Wizards use wrist straps to protect against disarming charms?
Ambiguity in notation resolved by +
How to publish superseding results without creating enemies
Has SHA256 been broken by Treadwell Stanton DuPont?
How are unbalanced coaxial cables used for broadcasting TV signals without any problems?
How would you control supersoldiers in a late iron-age society?
How do EVA suits manage water excretion?
2000s space film where an alien species has almost wiped out the human race in a war
why car dealer is insisting on loan v/s cash
Parallel resistance in electric circuits
What's 待ってるから mean?
Real mode flat model
What key factor led to the sudden commercial success of MS Windows with v3.0?80286 can switch from real mode to protected mode - but why not back?IBM PS/2 Model 53 Not Powering OnWas there ever a genuine “mainframe-on-a-chip” microprocessor?Is there any reason to chose ES, FS, or GS over the others in real mode?What instructions for the 8086 and subsequent x86 CPUs are not available in Long Mode?What was the first Intel x86 processor with “Base + Index * Scale + Displacement” addressing mode?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I am interested in old Intel processors. I'll try to be as concise as possible.
1) In real mode flat model, does the CPU and operating system see all 1MB but only programs see 64KB or the operating system and the CPU is also limited to 64KB (16-bit)?
2) Do 16-bit processors run in both real mode flat model and real mode segmented model but 32-bit processors run in protected mode flat model?
3) What are the examples (Windows) of real mode flat model, real mode segmented model and protected mode flat model (like MS-DOS, Windows 3.1 to Windows XP - or higher)? (Can't find it in the Internet)
Thanks in advance for reply,
Adi
intel
migrated from softwareengineering.stackexchange.com 8 hours ago
This question came from our site for professionals, academics, and students working within the systems development life cycle.
add a comment
|
I am interested in old Intel processors. I'll try to be as concise as possible.
1) In real mode flat model, does the CPU and operating system see all 1MB but only programs see 64KB or the operating system and the CPU is also limited to 64KB (16-bit)?
2) Do 16-bit processors run in both real mode flat model and real mode segmented model but 32-bit processors run in protected mode flat model?
3) What are the examples (Windows) of real mode flat model, real mode segmented model and protected mode flat model (like MS-DOS, Windows 3.1 to Windows XP - or higher)? (Can't find it in the Internet)
Thanks in advance for reply,
Adi
intel
migrated from softwareengineering.stackexchange.com 8 hours ago
This question came from our site for professionals, academics, and students working within the systems development life cycle.
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago
add a comment
|
I am interested in old Intel processors. I'll try to be as concise as possible.
1) In real mode flat model, does the CPU and operating system see all 1MB but only programs see 64KB or the operating system and the CPU is also limited to 64KB (16-bit)?
2) Do 16-bit processors run in both real mode flat model and real mode segmented model but 32-bit processors run in protected mode flat model?
3) What are the examples (Windows) of real mode flat model, real mode segmented model and protected mode flat model (like MS-DOS, Windows 3.1 to Windows XP - or higher)? (Can't find it in the Internet)
Thanks in advance for reply,
Adi
intel
I am interested in old Intel processors. I'll try to be as concise as possible.
1) In real mode flat model, does the CPU and operating system see all 1MB but only programs see 64KB or the operating system and the CPU is also limited to 64KB (16-bit)?
2) Do 16-bit processors run in both real mode flat model and real mode segmented model but 32-bit processors run in protected mode flat model?
3) What are the examples (Windows) of real mode flat model, real mode segmented model and protected mode flat model (like MS-DOS, Windows 3.1 to Windows XP - or higher)? (Can't find it in the Internet)
Thanks in advance for reply,
Adi
intel
intel
asked 9 hours ago
AdyAdy
111 bronze badge
111 bronze badge
migrated from softwareengineering.stackexchange.com 8 hours ago
This question came from our site for professionals, academics, and students working within the systems development life cycle.
migrated from softwareengineering.stackexchange.com 8 hours ago
This question came from our site for professionals, academics, and students working within the systems development life cycle.
migrated from softwareengineering.stackexchange.com 8 hours ago
This question came from our site for professionals, academics, and students working within the systems development life cycle.
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago
add a comment
|
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago
add a comment
|
2 Answers
2
active
oldest
votes
I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.
Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS. There’s no practical distinction between “real mode flat model” and “real mode segmented model”.
The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.
Up to Windows 3.0 included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. Windows NT, Windows 95 and all subsequent versions of Windows run in 32-bit protected mode. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS/4GW.
There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as “flat real mode”, when running 16-bit code with 32-bit registers and 4 GiB segment limits.
Most other 386-based operating systems run in 32-bit protected mode, generally with a flat model where segments cover all of the address space.
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
add a comment
|
1) All software sees the full 20bit address space, since there is no distinction between kernel and user land.
2) Flat mode is simply all segment descriptors set to maximum length and base offset 0. This is not feasible in 16 bit protected mode (80286), but most 80386 operating systems will use this mode in protected mode. There are other alternatives supported by the hardware, however
3) MS-DOS in real mode was always segmented. There are DOS extenders that allow flat modes beyond 16 bit addressing. 16 bit windows is designed in such way it is mostly transparent whether the cpu is running in real or protected mode.
add a comment
|
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "648"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
noCode: true, onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f12305%2freal-mode-flat-model%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.
Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS. There’s no practical distinction between “real mode flat model” and “real mode segmented model”.
The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.
Up to Windows 3.0 included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. Windows NT, Windows 95 and all subsequent versions of Windows run in 32-bit protected mode. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS/4GW.
There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as “flat real mode”, when running 16-bit code with 32-bit registers and 4 GiB segment limits.
Most other 386-based operating systems run in 32-bit protected mode, generally with a flat model where segments cover all of the address space.
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
add a comment
|
I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.
Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS. There’s no practical distinction between “real mode flat model” and “real mode segmented model”.
The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.
Up to Windows 3.0 included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. Windows NT, Windows 95 and all subsequent versions of Windows run in 32-bit protected mode. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS/4GW.
There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as “flat real mode”, when running 16-bit code with 32-bit registers and 4 GiB segment limits.
Most other 386-based operating systems run in 32-bit protected mode, generally with a flat model where segments cover all of the address space.
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
add a comment
|
I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.
Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS. There’s no practical distinction between “real mode flat model” and “real mode segmented model”.
The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.
Up to Windows 3.0 included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. Windows NT, Windows 95 and all subsequent versions of Windows run in 32-bit protected mode. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS/4GW.
There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as “flat real mode”, when running 16-bit code with 32-bit registers and 4 GiB segment limits.
Most other 386-based operating systems run in 32-bit protected mode, generally with a flat model where segments cover all of the address space.
I’m assuming you’re asking about x86 processors, not the older 8-bit CPUs.
Real mode is always segmented, and everything (CPU, operating system, programs, even peripherals on the CPU bus) has access to all the system’s address space up to just over 1 MiB (1 MiB strictly before the 286). You can write programs without paying attention to segments, and you’ll be limited to 64 KiB, but nothing enforces that; this is the memory model used by default for COM programs under DOS. There’s no practical distinction between “real mode flat model” and “real mode segmented model”.
The 8086, 8088, and 80186 CPUs only run in real mode. The 80286 introduced 16-bit protected mode with a 24-bit address space. The 80386 introduced 32-bit protected mode, which still relies on segments (but segments can provide direct access to all 4 GiB of address space). Newer CPUs support all the modes available in older CPUs.
Up to Windows 3.0 included, Windows could run in real mode, using segments. Windows/386, Windows 3.0 and later could also run in protected mode, on 286s (Windows 3.0) and 386s. Windows NT, Windows 95 and all subsequent versions of Windows run in 32-bit protected mode. MS-DOS always ran in real mode; there were several DOS extenders which allowed programs to run in protected mode on top of DOS, such as DOS/4GW.
There is an “unreal flat mode” on 386s and later, which allows programs to run in real mode while accessing all 4 GiB, but it’s difficult to use and never gained much popularity. Sometimes this is referred to as “flat real mode”, when running 16-bit code with 32-bit registers and 4 GiB segment limits.
Most other 386-based operating systems run in 32-bit protected mode, generally with a flat model where segments cover all of the address space.
edited 6 hours ago
answered 8 hours ago
Stephen KittStephen Kitt
50.1k9 gold badges206 silver badges208 bronze badges
50.1k9 gold badges206 silver badges208 bronze badges
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
add a comment
|
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply.
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
Thanks lot for reply. 1) So what's the difference between real mode flat model and real mode segmented model after all? 2) 16-bit protected mode? Protected segmented? Never heared that! 3) DOS - ok. But what about Windows 95, Windows 98 and Windows XP?
– Ady
8 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
See my updated answer.
– Stephen Kitt
6 hours ago
1
1
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
@Ady Real mode flat model isn't a thing. I don't know where you heard that term. Maybe someone used it when they meant unreal mode, like Stephan suggested. Maybe someone used it when they meant the tiny memory model, which your question seems to suggest is what you think it is. Regardless, it's not a generally used term so it's meaningless.
– Ross Ridge
6 hours ago
add a comment
|
1) All software sees the full 20bit address space, since there is no distinction between kernel and user land.
2) Flat mode is simply all segment descriptors set to maximum length and base offset 0. This is not feasible in 16 bit protected mode (80286), but most 80386 operating systems will use this mode in protected mode. There are other alternatives supported by the hardware, however
3) MS-DOS in real mode was always segmented. There are DOS extenders that allow flat modes beyond 16 bit addressing. 16 bit windows is designed in such way it is mostly transparent whether the cpu is running in real or protected mode.
add a comment
|
1) All software sees the full 20bit address space, since there is no distinction between kernel and user land.
2) Flat mode is simply all segment descriptors set to maximum length and base offset 0. This is not feasible in 16 bit protected mode (80286), but most 80386 operating systems will use this mode in protected mode. There are other alternatives supported by the hardware, however
3) MS-DOS in real mode was always segmented. There are DOS extenders that allow flat modes beyond 16 bit addressing. 16 bit windows is designed in such way it is mostly transparent whether the cpu is running in real or protected mode.
add a comment
|
1) All software sees the full 20bit address space, since there is no distinction between kernel and user land.
2) Flat mode is simply all segment descriptors set to maximum length and base offset 0. This is not feasible in 16 bit protected mode (80286), but most 80386 operating systems will use this mode in protected mode. There are other alternatives supported by the hardware, however
3) MS-DOS in real mode was always segmented. There are DOS extenders that allow flat modes beyond 16 bit addressing. 16 bit windows is designed in such way it is mostly transparent whether the cpu is running in real or protected mode.
1) All software sees the full 20bit address space, since there is no distinction between kernel and user land.
2) Flat mode is simply all segment descriptors set to maximum length and base offset 0. This is not feasible in 16 bit protected mode (80286), but most 80386 operating systems will use this mode in protected mode. There are other alternatives supported by the hardware, however
3) MS-DOS in real mode was always segmented. There are DOS extenders that allow flat modes beyond 16 bit addressing. 16 bit windows is designed in such way it is mostly transparent whether the cpu is running in real or protected mode.
answered 6 hours ago
tuomastuomas
6555 silver badges13 bronze badges
6555 silver badges13 bronze badges
add a comment
|
add a comment
|
Thanks for contributing an answer to Retrocomputing Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fretrocomputing.stackexchange.com%2fquestions%2f12305%2freal-mode-flat-model%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Can you give a reference to your source for "real mode flat model"?
– Curt J. Sampson
1 hour ago