chitselb / pettil Goto Github PK
View Code? Open in Web Editor NEW6502 Forth-83 dialect for the Commodore PET 2001
Home Page: http://pettil.tumblr.com
6502 Forth-83 dialect for the Commodore PET 2001
Home Page: http://pettil.tumblr.com
Currently it blindly fetches a packet from the buffer
after status, load and save
: const create , does> @ ;
42 const meaning
meaning .
PETTIL will print "7418", but expected output is 42
If you FORGET the word, will the previous version be FINDable again?
pasting to line 0
rethink linewrap logic
separate linewrap logic from cmove logic
uses ?PAIRS in the compiler for DOES> ? Maybe not since it isn't immediate
: <BUILDS CREATE SMUDGE ;
If the current screen is uneditable, SCR! exits without changing the packet buffer.
STOP is used as a meta key, and flashes (reverses) the screen for commands or pops up a reverse status/command bar on the top or bottom line
e.g. possibly
STOP UP/DOWN goes to the previous/next block buffer;
STOP HOME goes to the lowest block buffer
STOP CLR exits the editor
http://pettil.tumblr.com/post/83629005389/easiest-full-screen-editor-ever is the editor design
And make FIND walk through it with C@+ , not pull values like it's a stack
not every time through (FIND)
benefits: faster, cleaner FIND, better separation of duty
Also consider ONLY / ALSO at that point
user is prompted to operate tape controls
store source screens in a SEQ file
an indefinite number of blocks can be loaded in PLAY mode
FLUSH appends all modified buffers to the open file in RECORD mode
BLOCK retrieves the nth block from the beginning of tape
implement some type of fastloader
copy ideas from Fig Forth 1.0 for PET
http://cbm-hackers.2304266.n4.nabble.com/Forth-for-PET-WAS-Re-Commodore-8032-SK-tp4656548p4656551.html
.d82 image at http://www.idealine.info/CBM/forth.d82
done
Should display an error when attempting to load a screen that isn't packet-buffered
TIB contains a space, SPAN contains a 1, it gets sent to FIND which doesn't find it, and then off to NUMBER which returns a 0. Ugh.
write stories for:
editor displays an info page about the current screen
editor displays data blocks as read-only
editor STOP-CLR resets linewrap table and makes screen writeable
repeat counts - x x 0 = 256 total; x x 1 is impossible; x x 2 is 2 total (do nothing)
Also make sure CREATE sets the Bloom filter bit
do 31 passes where things are copied from SYMTABLE to PAD by size
do 16 passes where things are copied from PAD to SYMTABLE by hashcode
swapzp to re-enable BASIC in case it fails
get warm start working to restore as much PETTIL state as possible in the event of rerunning from BASIC
prepend "@0:" to filename
string variables to hold default filename
STOP-N to name the blocks file (default PETTIL.FS)
STOP- to select a current device
STOP-? for info on the current file and current screen
filename and device
vm buffer size in bytes
vm start address
vm end address
number of blocks
Appended as new last screen? inserted as block 0?
PET ROM routines for tape i/o drop out to BASIC an error (e.g. finds an end of tape marker) or the user hits STOP.
see http://forum.6502.org/viewtopic.php?f=2&t=2865 for further discussion
new pettil-utils.a65 module for .S FORGET etc...
Right now it puts the alignment NOP(s) after the CFA, needs to be before. e.g.
this:
$17FC nop
$17FD nop
foosecondary
$17FE jsr enter
not this:
foosecondary
$17FC nop
$17FD nop
$17FE jsr enter
EDIT
STOP-C copy any line
home the cursor
STOP-P paste the line
hit return anywhere on the screen and it throws the cursor to the bottom
C:00e0 80 00 00 00 00 00 00 01 01 01 01 01 01 02 02 02
C:00f0 02 02 02 02 03 03 03 03 83
e.g. not start at the beginning of the screen. Maybe rethink use of >IN as BLK and >IN are saved to the return stack by LOAD
( screen 1 )
2 5 thru
7 load
( screen 2 )
... some code ...
( screen 3 )
... some code ...
( screen 4 )
... some code ...
( screen 5 )
... some code ...
( screen 6)
... something else ...
( screen 7 )
... more code ...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.