- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Of course it's clear that all those forms were filled out on a wooden table.
Admin
me haz water tight drool proof key board!
btw, http://ars.userfriendly.org/cartoons/?id=19990815
Admin
29 posts were split to a new topic: :fire: :sleeping: This argument is stupid
Admin
Females or managers.
Admin
"Attempt?" Does that mean you couldn't slow it down enough to run as fast as Windows?
Admin
TI-BASIC? That slow ass shit? Please. With the right tools, one could load and run native Z80 assembly on those calculators. I used to have a lot of fun doing that when I was 16, back when I should have been learning social skills...
Admin
To be fair, the BASIC on their calculators was not as slow-ass as the BASIC on their personal computers.
I would love to read a WTF collection from the people actually involved in the process of implementing a BASIC interpreter on top of a VM interpreter running on a TMS9900 with only 256 bytes of directly addressable RAM.
If I recall correctly, the TI99/4A's Graphics Programming Language virtual machine interpreter had to do all access to the main RAM array - virtual instruction fetch as well as all virtual data memory access - by waiting in a software loop for a vertical or horizontal video refresh, then writing the address to a memory-mapped port and reading/writing the data from/to another. Given that architecture, it should have been no surprise to find that the BASIC interpreter (written in GPL code) ended up running at around ten statements per second at best.
Which was a real pity. The TMS9900 was actually quite a sweet little CPU, and if only the supporting hardware design had not been done by architecture astronauts, the 99/4A could easily have been a far more capable machine than it ended up as.
Admin
If measured by its intended application of being a language for mathematical calculations, then TI-BASIC succeeded. For being a language for performant applications, it falls flat, but TI made it easy to run assembly programs, and one can do a lot with a 6MHz Z80. Some people were able to make simple platformer games.
That's... special.
Software rendering on tiny monochrome screens ought to be plausible for even that CPU. Shame that they had to put in so many layers of abstraction.
I seem to remember the TI-83 requiring something similar - you had to
out
to an I/O port to request/perform updates to the video buffer. The TI-86 simplified that by giving direct, unrestricted access to the video buffer itself, much as how the0xA0000-0xAFFFF
range is reserved in the IBM PC.Admin
Yeah, and I had said tools, but not enough drive to actually do anything in it. For whatever reason, Assembly was scary to me at the time. No idea why, especially as I had quite a bit greater memory and simulation capacity to prepare coding...
Admin
To be fair, the TMS9900 did run best with fast static 16-bit RAM (it used a window into RAM the way most of its contemporaries used registers) and that's always going to cost more than 8-bit DRAM for any given capacity. But even a TMS9900 design somewhat crippled by using DRAM instead of static would have performed better than the soft VM bodge they actually implemented. After all, the contemporary Apple II ran a comparably capable BASIC at ten times the speed, on comparably capable DRAM, using an 8-bit CPU that also relied heavily on using RAM as pseudo-registers (6502).
Really, the only reason that the TI99/4 could achieve anything useful was that its video display controller had some quite useful inbuilt sprite support and it also had an audio processor that was quite advanced for the time. The way TI went about wiring all these really nice chips together, though? Utterly half-assed.
The Wikipedia article is decent.
Admin
What? That guy who was talking about his tile fetish on 4chan is here?! :underage:
Admin
There was a clear set of requirements in this case: reimplement what was already being done. Just faster. Without the seduction of whizzbangery leading to all sorts of scope creep, things went to plan.
Admin
From my experience, whenever the task is "reimplement something", it actually means "make it better, faster, stronger, with this and this and this new feature, and oh maybe that one too".
Admin
Admin
"... And don't forget the features we think of and/or remember telling you two
dayshours before rollout."Admin
IIRC, 0xB0000–0xBFFFF was also reserved, but that was for text mode and not graphics. I don't remember the exact organisation of that space; by the point I would have started hacking around with it, using a library to hide the details was becoming far more relevant.
Admin
For monochrome text, the starting address was 0xB0000. For color text, the starting address of page 0 was 0xB8000, and pages 1-3 were aligned at 4096-byte offsets. Text memory buffers contained 2 bytes per character: 1 byte for the character code, and 1 byte for the color information.
Admin
Yay! This reminds me of my self. Except I used Access97 and later on, the shit I made with LAMP did actually work.
Admin
You are correct.
I seem to remember that the 80x25 and 40x25 CGA text modes start at
0xB8000
and the lower ranges were reserved for monochrome graphics cards. Each character was represented by two bytes, one for the actual ASCII code and the other for the foreground color, background color, and whether the text was blinking or not. This goes into more detail about all the old modes.Direct access to the video buffers was straightforward if you were working with a linear mapped video mode that fit in the allocated region like mode
0x13
(320x200x8bpp), but the planar and banked video modes are a gigantic pain*.*I have to talk to a plane select masking register via an I/O port to control which subset of a possible quartet of pixels the next byte I write to video memory sets? Have fun implementing a transparent sprite renderer!
Admin
TIL marriage is like playing Thermonuclear War.
Admin
What, the only winning move is not to play?
Admin
That's The Reference™.
Admin
The EGA and VGA text mode memory starts at the same address.
The Hercules Graphics Card on the other hand had its first page at
0xB000
and its second page at0xB8000
.Copy-pasta from Wikipedia, since the Disco-oneboxer doesn't know what to do with page fragments:
The same 2 byte per character memory layout was used, although instead of color attributes (that's kind of hard to do on a monochrome display), the second byte controlled attributes like bold, blinking, reverse video, ….
Admin
Having worked for companies that made VGA-compatible chips, I can tell you it was a gigantic pain from the hardware side, too. You had to include all those backward-compatible modes, too, including weird behavior that would be considered a bug, except IBM's hardware did it that way. Having once managed to create a chip that reproduced VGA's quirky behavior, the design could never, ever be improved; too risky.
Admin
And underline. Don't forget underline.
Admin
I didn't, I abbreviated it to … in my post.
Admin
That's an abbreviation for ellipsis, not underline. :stuck_out_tongue: