From 68367057b8fb1eb77a0ec33fc7c70fab128501e3 Mon Sep 17 00:00:00 2001 From: Marius Gavrilescu Date: Sat, 17 Feb 2018 12:19:47 +0000 Subject: [PATCH] Write documentation --- lib/App/Scheme79asm.pm | 118 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 114 insertions(+), 4 deletions(-) diff --git a/lib/App/Scheme79asm.pm b/lib/App/Scheme79asm.pm index 61305f7..60af90f 100644 --- a/lib/App/Scheme79asm.pm +++ b/lib/App/Scheme79asm.pm @@ -196,11 +196,121 @@ expression to be evaluated). In normal use a single S-expression will be supplied, representing an entire program. -The B method takes such a string and prints a block -of verilog code assigning the memory contents to an array named -C. +The C is either a number, a type, or a primitive. +The available types are: -More documentation and features to follow. +=over + +=item LIST + +=item SYMBOL (syn. NUMBER) + +=item VAR (syn. VARIABLE) + +=item CLOSURE + +=item PROC (syn. PROCEDURE) + +=item IF (syn. COND, CONDITIONAL) + +=item CALL + +=item QUOTE (syn. QUOTED) + +=back + +The available primitives are: + +=over + +=item MORE + +=item CAR + +=item CDR + +=item CONS + +=item ATOM + +=item PROGN + +=item MAKELIST + +=item FUNCALL + +=back + +The following methods are available: + +=over + +=item App::Scheme79asm->B([key => value, key => value, ...]) + +Create a new assembler object. Takes a list of keys and values, here +are the possible keys: + +=over + +=item type_bits + +=item address_bits + +A word is made of a type and an address, with the type occupying the +most significant C (default 3) bits, and the address +occupying the least significant C (default 8) bits. +Therefore the word size is C (default 13). + +=item freeptr + +A pointer to the last used byte in memory (default 6). The program +will be laid out starting with location C. + +=item memory + +The initial contents of the memory. Note that locations 4, 5, 6 will +be overwritten, as will every location larger than the value of +C. + +=item comment + +The initial comments for memory entries. C<< $comment->[$i] >> is the +comment for C<< $memory->[$i] >>. + +=item symbols + +The initial symbol map, as a hashref from symbol name to the index of +that symbol. Defaults to C<< {NIL => 0, T => 1} >>. + +=item nsymbols + +The number of distinct symbols in the initial symbols map (default 2). + +=back + +=item $asm->B(I<$string>) + +Parse a sequence of S-expressions and lay it out in memory. +Can be called multiple times to lay out multiple sequences of +S-expressions one after another. + +=item $asm->B + +Move the last pointer to position 5, and put the free pointer at +position 4. After all sequences of S-expressions have been given to +B, this method should be called. + +=item $asm->B([I<$fh>]) + +Print a block of Verilog code assigning the memory contents to an +array named C to the given filehandle (default STDOUT). + +=item $asm->B(I<$string>[, I<$fh>]) + +Convenience method that calls B($string), B, and then +B($fh). + +=back =head1 SEE ALSO -- 2.39.2