Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
BASIC 8
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Use dmy dates|date=March 2019}} '''BASIC 8''' (or '''BASIC 8.0'''){{snd}} "'''The Enhanced Graphics System For The C128'''"{{snd}} was an American-designed graphics system developed by Walrusoft of [[Gainesville, Florida]]<ref name="AussieCnA-DT"/> and published in 1986 by Patech Software of [[Somerset, New Jersey]]. The system was an [[BASIC extension|extension]] of [[Commodore International|Commodore]]'s [[Commodore BASIC|BASIC 7.0]] for the [[Commodore 128]] computer. BASIC 8.0 provided commands lacking in BASIC 7.0 to generate (color) [[2D computer graphics|graphics]] in the C128's high-resolution 80-column mode (640×200 [[pixel]]s) for [[RGB]] monitors. The BASIC 8 package was developed by Walrusoft's Louis Wallace and David Darus, with contributions from Ken French ([[printer driver]]s) and indirectly from Richard Rylander (who allowed his 3D solids commands for the [[Commodore 64]], originally published in ''[[Dr. Dobb's Journal]]'', to be converted to the C128's hi-res mode). ==Background== {{tone|section|date=April 2017}} ===The problem=== Unlike its competitors, such as the [[Apple II]] and [[Atari 8-bit computers]], Commodore’s [[BASIC 2.0]] programming language built into the [[Commodore 64]] (C-64) lacks commands for generating sound and high-resolution, [[raster graphics|bit-mapped]] graphics, and responding to [[joystick#Electronic games|joystick]]s and [[game paddle]]s. Instead, awkward and slow BASIC [[PEEK and POKE]] sequences, or custom-written [[assembly language]] routines, are required to accomplish these tasks. The lack of suitable BASIC commands led to the development of many third-party language extensions, such as [[Simons' BASIC]], greatly reducing the complication of writing games in BASIC. Upon its introduction in 1985, the [[Commodore 128]] (C-128) had BASIC 7.0—a substantially more-powerful version of BASIC 2.0—that includes commands for sound and graphics generation, as well as joystick and paddle detection. In addition to its more-powerful BASIC, the C-128 is equipped with dual video displays: an [[MOS Technology 8563|8563 video display controller]] (VDC) for generating an 80-column text display, and an enhanced [[VIC-II]] video interface controller for generating a 40-column text display like that of the C-64. When operated in its high-resolution, bit-mapped display mode, the VDC is capable of 640 × 200 [[pixel]] resolution, twice that of the VIC-II’s 320 × 200 pixel resolution. However, the BASIC 7.0 commands that manipulate bit-mapped graphics are only effective on the VIC-II display. If a programmer wishes to generate bit-mapped graphics on the VDC display, s/he must resort to assembly language (there are intractable difficulties in PEEKing and POKEing VDC registers) and deal with the convoluted means by which the VDC is controlled.{{ref|vdc-vs-vic-ii}} ===A solution=== BASIC 8.0, available via [[floppy disk]] or [[read-only memory|ROM]], provided many graphics commands that were competitive with the C128's competitors in the high-end 8-bit microcomputer market. BASIC 8.0 was fully compatible with the various first-party [[random-access memory|RAM]] and video RAM expansion chips and [[ROM cartridge|cartridge]]s, as well as [[computer mouse|mice]] and [[joystick]]s. It also provided basic [[3D computer graphics|3D graphics]] commands.<ref name="RetroC-WB8"/> Along with a 188-page manual, the software package included an example of a [[graphical user interface|GUI]], and a high-res [[bitmap graphics editor|paint program]], '''Basic Paint,''' both developed using BASIC 8.0. ==Source code and copy protection== Source code of some of the BASIC 8 package was provided, and the BASIC 8.0 disk lacked any sort of [[copy protection]], but this was before the [[Open Source Initiative]]; it was done as a courtesy. Instead of threatening legal action, Walrusoft simply asked users not to copy the software in the documentation. It worked; BASIC 8.0 became one of the best selling expansions for the C128.{{fact|date=July 2014}} ==Sample commands== In BASIC 8.0, all added commands were prefaced with the [[@]] mark, which was not normally used in Commodore BASIC, to distinguish between the original and the new keywords. The use of this character would allow the developer to extend BASIC 7.0 without having to re-tokenize the commands as it was done on the C64. It was accomplished by trapping the syntax error generated by the command. * <code>@CHAR</code> – Displays a text string on a bitmap field (similar to the BASIC 7.0's low-res <code>CHAR</code> command) * <code>@MODE</code> – Switch between one of up to 32 high-res screens * <code>@PAINT</code> – Fill a closed area with a color or a pattern * <code>@PIXEL</code> – Returns the color value of a pixel * <code>@STASH</code> – Copies part or all of a screen for later usage * <code>@WALRUS</code> – Displays the Walrusoft logo and the type/size of video RAM used (16K or 64K) * <code>@WINDOWOPEN</code> – Define part of the screen as a 'window' for purposes of drawing ==References notes and citations== ===References=== * {{cite book | last = Wallace | first = Louis R. | date = 1987 | title = Basic 8 Manual | location = Somerset, NJ | publisher = Walrusoft/Patech Software, Inc. | page = 188 pp }} ===Notes=== # {{note|vdc-vs-vic-ii}} The VDC was programmed by writing commands to and reading status messages from a single [[hardware register|control register]] and transferring data between system RAM and the chip's dedicated video RAM (16 or 64 KB, depending on C128 version) via a single data register, following a relatively complex protocol{{snd}} a laborious and slow procedure compared with the straightforward use of the several discrete, [[memory map]]ped control/status registers the shared system/video memory setup of the VIC-II. Many programmers took advantage of a VDC control [[machine code|primitive]] buried deep within the part of the [[KERNAL]] that controlled the 80 column video display, rather than writing their own primitive. ===Citations=== {{reflist|refs= <ref name="AussieCnA-DT">{{cite magazine|title=The Australian Commodore and Amiga Review|volume=6|issue=11|date=November 1989|url=https://the-eye.eu/public/Books/retrowith.in/Australian%20Commodore%20Review/acar-nov89.pdf|publisher=Saturday Magazine Pty Ltd.|url-status=live|archive-url=https://web.archive.org/web/20190311162209/https://the-eye.eu/public/Books/retrowith.in/Australian%20Commodore%20Review/acar-nov89.pdf|archive-date=11 March 2019|df=dmy-all|page=13|first=Eric|last=Holroyd}}</ref> <ref name="RetroC-WB8">{{cite web|title=Walrusoft Basic 8|website=Retro Commodore|date=28 March 2010|access-date=11 March 2019|url=https://www.retrocommodore.com/en/articles/walrusoft-basic-8.html|url-status=live|archive-url=https://web.archive.org/web/20180920235959/https://www.retrocommodore.com/en/articles/walrusoft-basic-8.html|archive-date=20 September 2018|df=dmy-all}}</ref> }} ==External links== *[https://project64.c64.org/Software/basic8.txt] (270-[[kilobyte|KB]] [[text file]]){{snd}} From the [http://project64.c64.org/index.htm Project 64] documentation project {{BASIC}} [[Category:BASIC extensions]] [[Category:Commodore 128 software]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Ambox
(
edit
)
Template:BASIC
(
edit
)
Template:Cite book
(
edit
)
Template:DMCA
(
edit
)
Template:Fact
(
edit
)
Template:Note
(
edit
)
Template:Ref
(
edit
)
Template:Reflist
(
edit
)
Template:Snd
(
edit
)
Template:Tone
(
edit
)
Template:Use dmy dates
(
edit
)