home *** CD-ROM | disk | FTP | other *** search
- From mipos3!intelca!oliveb!ames!husc6!linus!necntc!ncoast!allbery Mon Sep 19 12:23:38 PDT 1988
- Article 536 of comp.sources.misc:
- Path: td2cad!mipos3!intelca!oliveb!ames!husc6!linus!necntc!ncoast!allbery
- From: markb@sm.unisys.com (Mark Biggar)
- Newsgroups: comp.sources.misc
- Subject: v04i080: HP 41c assembler and barcode generator (in perl)
- Message-ID: <8809081839.AA11949@rdcf.sm.unisys.com>
- Date: 19 Sep 88 01:46:36 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: markb@sm.unisys.com (Mark Biggar)
- Organization: Unisys - System Development Group, Santa Monica
- Lines: 2252
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 4, Issue 80
- Submitted-by: "Mark Biggar" <markb@sm.unisys.com>
- Archive-name: hp41c-asm
-
- There is a nice example of fancy perl programming
-
- ------------------ cut here --------------------
- #!/bin/sh
- sed -e 's/^X//' >README <<'EEE_OOO_FFF'
- X
- X HP 41c Assembler and Barcode Generator
- X
- X Copyright 1988 Mark A. Biggar
- X This code may be freely redistributed and used as long
- X as you don't claim you wrote it or make any money off it.
- X
- X
- XThis system consists of two perl scripts with supporting files and
- Xdocumentation. The perl scripts require Perl 2.0 patchlevel 11 or later.
- X
- XINSTALLATION INSTRUCTIONS
- X
- X1) unshar the distribution file
- X
- X2) chose a directory for the rom library (suggested default
- X is /usr/local/lib/hp41c). If you chose a different directory
- X you will need to change the assignment to $romlib at the top of
- X the script asm41c.
- X
- X3) make the files asm41c, bar41c and rom/trans executable
- X
- X4) install stuff by copying it to the proper directories:
- X asm41c & bar41c /usr/local/bin (or equiv)
- X rom/* the selected rom library directory
- X doc/*.l the manl directory
- X tmac/tmac.*bar /usr/lib/tmac
- X
- X5) run the files in test to see if everything works
- X
- XI am loosing my network connect for a while so I can't handle bug reports
- Xsorry.
- EEE_OOO_FFF
- echo x - README
- sed -e 's/^X//' >MANIFEST <<'EEE_OOO_FFF'
- XMANIFEST list of files in distribution
- XREADME READ THIS FIRST
- Xasm41c assembler perl script
- Xbar41c barcode generator perl script
- Xdoc/asm41c.l man page for asm41c
- Xdoc/bar41c.l man page for bar41c
- Xrom/README How to build rom files
- Xrom/builtins Assembler builtin operator tables
- Xrom/trans perl script to translate rom files
- Xrom/CXextfcn.rom HP 41CX entended functions
- Xrom/CXtime.rom HP 41CX time functions
- Xrom/ILcntl.rom HP IL loop control functions
- Xrom/ILmass.rom HP IL loop mass storage functions
- Xrom/ILprinter.rom HP IL loop printer functions
- Xrom/advantage.rom advantage module
- Xrom/cardr.rom card reader internal module
- Xrom/extfcn.rom extended functions module
- Xrom/games.rom games I module
- Xrom/math.rom math module
- Xrom/ppc.rom PPC club rom module
- Xrom/printer.rom normal printer functions
- Xrom/time.rom time module
- Xrom/wand.rom wand internal module
- Xtest/README test case files for assembler
- Xtest/numbers.test
- Xtest/rom.test
- Xtest/single.test
- Xtest/string.test
- Xtest/symbol.test
- Xtest/test.41c
- Xtest/three.test
- Xtest/twobyte.test
- Xtmac/README discriptions of the macros (for brave people)
- Xtmac/tmac.lwbar
- Xtmac/tmac.vbar
- EEE_OOO_FFF
- echo x - MANIFEST
- sed -e 's/^X//' >asm41c <<'EEE_OOO_FFF'
- X#! /bin/perl
- X
- X$romlib = "/usr/local/lib/hp41c"; # default rom library
- X$outfile = 'bar.out'; # default output file
- X$title = "HP 41-C Assembler"; # default title
- Xunshift(INC,$romlib);
- X$DATE = `date`;
- X
- Xwhile ($_ = $ARGV[0], /^-/) {
- X shift;
- X last if /^--$/;
- X /^-n/ && do { # want null bytes
- X ++$nulls;
- X next; };
- X /^-l/ && do { # want listing
- X ++$listing;
- X next; };
- X /^-o/ && do { # specify output file
- X die "asm41c: no file arg for -o"
- X unless ($ARGV[0]);
- X $outfile = shift;
- X next; };
- X /^-u/ && do { # specfiy dir for user rom lib
- X die "asm41c: no arg for -u"
- X unless ($ARGV[0]);
- X unshift(INC,shift);
- X next; };
- X /^-t/ && do { # specify title
- X die "asm41c: no title arg for -t"
- X unless ($ARGV[0]);
- X $title = shift;
- X next; };
- X /^-r/ && do { # load rom
- X die "asm41c: no rom name for -r"
- X unless ($ARGV[0]);
- X die "asm41c: can't find rom ".$ARGV[0]
- X unless (do readrom($ARGV[0]));
- X shift;
- X next; };
- X /^-X/ && do { # load roms of 41-CX
- X die "asm41c: can't load HP-41CX roms"
- X unless (do readrom("CXextfcn") &&
- X do readrom("CXtime"));
- X next; };
- X /^-I/ && do { # load roms for IL support
- X die "asm41c: can't load IL roms"
- X unless (do readrom("ILcntl") &&
- X do readrom("ILmass") &&
- X do readrom("ILprinter"));
- X next; };
- X #default
- X die "asm41c: unknown flag $_";
- X}
- X
- Xdie "asm41c: can't find builtin ops file"
- X unless (do "builtins");
- X
- X$~ = 'line';
- X$^ = 'top';
- Xopen(OUTFILE,">$outfile");
- Xif ($title) {print OUTFILE "title $title\n";}
- Xdo defsym();
- X # special \ intreps for strings
- X$specord{'-'} = 127; # append char
- X$specord{'='} = 29; # not equal char
- X$specord{'S'} = 126; # sigma (can use '~' instead)
- X$specord{'M'} = 12; # mu
- X$specord{'L'} = 13; # angle char
- X$specord{'P'} = 123; # pi (can use '{' instead)
- X$specord{'A'} = 125; # arrow char (can use '}' instead)
- X
- Xwhile (<>) {
- X chop;
- X $line = $_;
- X $error = '';
- X unless (/^[ \t]*$\|^\.\|^[ \t]*#/) {
- X do display('',$_,"Non-directive",'');
- X next;
- X }
- X /^\.rom\s+([^\s#]+)\s*(#.*)?$/ && do {
- X $error = "Can't find rom '$rom'."
- X unless (do readrom($1));
- X do display('',$line,$error,'');
- X next; };
- X /^\.xrom\s+([^\s#]+)\s+(\d\d)\s+(\d\d)\s*(#.*)?$/ && do {
- X $xrom{$1} = sprintf("%03d %03d",160+($2/4),64*($2%4)+$3);
- X do display('',$line,'','');
- X next; };
- X /^\.title\s+([^#]*)(#.*)?$/ && do {
- X $title = $1;
- X do display('',$line,'','');
- X print outfile "title $1\n";
- X next; };
- X /^\.page\s*(#.*)?$/ && do {
- X $- = 0; #force new page
- X do display('',$line,'','');
- X next; };
- X /^\.prog(\s+private)?(\s+([^#]+))?(#.*)?$/ && do {
- X $program = ($3) || "unnamed";
- X $errcnt = 0;
- X print OUTFILE "program$1 $program\n";
- X do display('',$line,'','');
- X $lineno = 0;
- X $lastnum = $nulls;
- X while (<>) {
- X last if (/^\./);
- X chop;
- X /^\s*(#.*)?$/ && do { #blank or comment
- X do display('',$_,'','');
- X next; };
- X do asm($_);
- X $bytes = join(' ',@byt);
- X do display(++$lineno,$_,$error,$bytes);
- X print OUTFILE "$bytes\n";
- X }
- X $error = $errcnt ?
- X "program: $program, errors: $errcnt.":'';
- X do display('','',$error,'');
- X print OUTFILE "end $program\n";
- X $program = '';
- X last unless (/^\./);
- X redo; };
- X /^\.define\s+([A-Za-z]\w+)\s+(\d+|[A-Za-z]\w+)\s*(#.*)?$/ && do {
- X $name = $1;
- X $val = do validarg($2);
- X do display('',$_,$error,'');
- X $defsymbol{$name} = do pad($val);
- X next; };
- X /^\.exec(\s+([^#]*))?(#.*)?$/ && do {
- X print OUTFILE "exec $2\n";
- X do display('',$line,'','');
- X chop($line = <>);
- X do asm($line);
- X $bytes = join(' ',@byt);
- X do display('',$line,$error,$bytes);
- X print OUTFILE "$bytes\n";
- X next; };
- X /^\.string(\s+append)?\s+"(([^"]*\\")*.*)"(\s+([^#]*))?(#.*)?$/ && do {
- X $str = $2;
- X print OUTFILE "string$1 \"$str\" $5\n";
- X do strbytes($str);
- X if ($#byt > 14) {
- X $error = "String too long -- truncated.";
- X $#byt = 13;
- X }
- X $bytes = join(' ',@byt);
- X print OUTFILE "$bytes\n";
- X do display('',$line,$error,$bytes);
- X next; };
- X /^\.data\s+'([-+]?\d*\.?\d*([eE][-+]?\d*)?)'(\s+([^#]*))?(#.*)?$/ && do {
- X $num = $1;
- X $text = $4;
- X print OUTFILE "data '$num' $text\n";
- X do display('',$line,'','');
- X next; };
- X /^.bytes(\s+checksum)?\s+(\d+(\s+\d+)*)(\s+([^#]*))?(#.*)?/ && do {
- X @byt = split(//,$2);
- X print OUTFILE "bytes$1 $5\n";
- X $checksum = $1;
- X for $num (@byt) {
- X $num = do pad($num % 256);
- X }
- X if ($#byt > ($checksum?14:15)) {
- X $error = "Too many bytes -- Truncated";
- X $#byt = ($checksum?14:15);
- X }
- X $bytes = join(' ',@byt);
- X do display('',$line,$error,$bytes);
- X print OUTFILE "$bytes\n";
- X next; };
- X /^\.clear\s+roms\s*(#.*)?$/ && do {
- X reset 'x';
- X do display('',$line,'','');
- X next; };
- X /^\.clear\s+names\s*(#.*)?$/ && do {
- X reset 'd';
- X do defsym();
- X do display('',$line,'','');
- X next; };
- X /^\./ && do {
- X # if we get to here we don't recognize it
- X do display('',$_,"Unknown directive",'');
- X next; };
- X # default for blank line and/or comments
- X do display('',$_,'','');
- X}
- Xprint "\f" if ($listing);
- Xexit 0;
- X
- X#
- X# end of main routine
- X#
- X
- Xformat line =
- X# optional error message
- X~ @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- X $error;
- X#first six bytes, line number & start of line image
- X ^<<<<<<<<<<<<<<<<<<<<<<< @>>> ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- X $bytes $lno $limage
- X#optional second six bytes & rest of line image
- X~^<<<<<<<<<<<<<<<<<<<<<<< ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
- X $bytes $limage
- X#optional last six bytes
- X~^<<<<<<<<<<<<<<<<<<<<<<<
- X $bytes
- X.
- X
- Xformat top =
- X
- X
- X @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< @>>>>>>>>>>>>>>>>>>>>>>>>>>>
- X $title $DATE
- X @<<<<<<<<<<<<<<<<<<<<<<<<<< Page @>>
- X $program $%
- X
- X
- X.
- X
- Xsub readrom {
- X local($romname) = @_;
- X $romname .= ".rom" unless ($romname =~ /\.rom$/);
- X do $romname;
- X}
- X
- Xsub pad {
- X sprintf("%03d",pop(@_));
- X}
- X
- Xsub display {
- X local($lno,$limage,$error,$bytes) = @_;
- X ++$errcnt if $error;
- X if ($listing) {
- X $lno = sprintf("%04d",$lno) if $lno;
- X $error = "ERROR: $error" if $error;
- X write;
- X } else {
- X if ($error) {
- X print stderr "ERROR: $error\n";
- X print stderr "\t$limage\n";
- X }
- X }
- X}
- X
- Xsub strbytes {
- X local($_) = @_;
- X @byt = ();
- X while (length($_)) {
- X s/^\\(\d\d\d)(.*)$/$2/ && do {
- X push(byt,do pad($1 % 256));
- X next; };
- X s/^\\x([\da-fA-F][\da-fA-F])(.*)$/$2/ && do {
- X push(byt,do pad(hex($1)));
- X next; };
- X s/^\\(.)(.*)$/$2/ && do {
- X push(byt, do pad($specord{$1} || ord($1)));
- X next; };
- X s/^(.)(.*)$/$2/ && do {
- X push(byt,do pad(ord($1)));
- X next; };
- X }
- X}
- X
- Xsub numbytes {
- X local($_) = @_;
- X @byt = ();
- X foreach (split(//)) {
- X /[0-9]/ && (push(byt,do pad(16+$_)),next);
- X /[Ee]/ && (push(byt,do pad(27)) ,next);
- X /-/ && (push(byt,do pad(28)) ,next);
- X /\./ && (push(byt,do pad(26)) ,next);
- X # note '+' are ignored
- X }
- X}
- X
- Xsub defsym {
- X# Predefined user defined symbols
- X$defsymbol{'A'} = 102; $defsymbol{'B'} = 103;
- X$defsymbol{'C'} = 104; $defsymbol{'D'} = 105;
- X$defsymbol{'E'} = 106; $defsymbol{'F'} = 107;
- X$defsymbol{'G'} = 108; $defsymbol{'H'} = 109;
- X$defsymbol{'I'} = 110; $defsymbol{'J'} = 111;
- X$defsymbol{'T'} = 112; $defsymbol{'Z'} = 113;
- X$defsymbol{'Y'} = 114; $defsymbol{'X'} = 115;
- X$defsymbol{'L'} = 116; $defsymbol{'M'} = 117;
- X$defsymbol{'N'} = 118; $defsymbol{'O'} = 119;
- X$defsymbol{'P'} = 120; $defsymbol{'Q'} = 121;
- X$defsymbol{'R'} = 122; $defsymbol{'a'} = 123;
- X$defsymbol{'b'} = 124; $defsymbol{'c'} = 125;
- X$defsymbol{'d'} = 126; $defsymbol{'e'} = 127;
- X}
- X
- Xsub validarg {
- X local($val) = @_;
- X $val = $defsymbol{$val} if ($val =~ /^[A-Za-z]/);
- X if ($val eq '') {
- X $error = "Undefined symbol -- 000 assumed.";
- X $val = "000";
- X } elsif ($val < 0 || $val > 127) {
- X $error = "Arg out of range -- taken mod 128.";
- X $val %= 128;
- X };
- X $val;
- X}
- X
- Xsub asm {
- X local($_) = @_;
- X @byt = ();
- X $error = '';
- X /^\s*'([-+]?\d*\.?\d*([eE][-+]?\d*)?)'\s*(#.*)?$/ && do {
- X do numbytes($1);
- X unshift(byt,"000") if ++$lastnum;
- X return; };
- X $lastnum = $nulls;
- X /^\s*"(([^"]*\\")*.*)"\s*(#.*)?$/ && do {
- X do strbytes($1);
- X if ($#byt > 14) {
- X $error = "String too long -- truncated.";
- X $#byt = 14;
- X }
- X unshift(byt,do pad(241+$#byt));
- X return; };
- X /^\s*END\s*(#.*)?$/ && do {
- X @byt = ("192","000","009");
- X return; };
- X /^\s*XROM\s+(\d\d)\s+(\d\d)\s*(#.*)?$/ && do {
- X @byt = (do pad(160+($1/4)), do pad(64*($1%4)+$2));
- X return; };
- X /^\s*(STO|RCL|LBL)\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X ($op,$val) = ($1,do validarg($2));
- X if (($op eq "LBL" && $val > 14) || $val > 15) {
- X @byt = ($twobyte{$op},do pad($val));
- X } elsif ($op eq "STO") {
- X @byt = (do pad(48+$val));
- X } elsif ($op eq "RCL") {
- X @byt = (do pad(32+$val));
- X } else { # $op = "LBL"
- X @byt = (do pad(1+$val));
- X };
- X return; };
- X /^\s*LBL\s+"(([^"]*\\")*.*)"\s*(#.*)?$/ && do {
- X do strbytes($1);
- X unshift(byt,"192","000",do pad(242+$#byt),"000");
- X return; };
- X /^\s*GTO\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X $val = do validarg($1);
- X if ($val > 14) {
- X @byt = ("208","000",do pad($val));
- X } else {
- X @byt = (do pad(177+$val),"000");
- X };
- X return; };
- X /^\s*GTO3\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X $val = do validarg($1);
- X @byt = ("208","000",do pad($val));
- X return; };
- X /^\s*XEQ\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X $val = do validarg($1);
- X @byt = ("224","000",do pad($val));
- X return; };
- X /^\s*(GTO|XEQ|W)\s+"(([^"]*\\")*.*)"\s*(#.*)?$/ && do {
- X $op = (($1 eq "GTO") ? "029" : ($1 eq "W") ? "031" : "030");
- X do strbytes($2);
- X unshift(byt,$op,do pad(241+$#byt));
- X return; };
- X /^\s*(GTO|XEQ)\s+IND\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X ($op,$val) = ($1,do validarg($2));
- X @byt = ("174",do pad((($op eq "GTO")?0:128)+$val));
- X return; };
- X /^\s*BYTE\s+(\d+)\s*(#.*)?$/ && do {
- X @byt = (do pad($1 % 256));
- X return; };
- X /^\s*([^'"#\s]+)\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X $op = $twobyte{$1};
- X $val = do validarg($2);
- X unless ($op) {
- X $error .= "Undefined OP code -- RCL assumed.";
- X $op = "144";
- X };
- X @byt = ($twobyte{$1},do pad($val));
- X return; };
- X /^\s*([^'"#\s]+)\s+IND\s+([A-Za-z]\w*|\d+)\s*(#.*)?$/ && do {
- X $op = $twobyte{$1};
- X $val = do validarg($2);
- X unless ($op) {
- X $error .= "Undefined OP code -- RCL assumed.";
- X $op = "144";
- X };
- X @byt = ($op,do pad(128+$val));
- X return; };
- X /^\s*([^'"#\s]+)\s*(#.*)?$/ && do {
- X $op = $single{$1};
- X unless ($op) {
- X $op = $xrom{$1};
- X unless ($op) {
- X $error = "Undefined OP code -- NULL assumed.";
- X $op = "000";
- X };
- X };
- X @byt = ($op);
- X return; };
- X $error = "Syntax error.";
- X $bytes = ''; # work around for join bug
- X @byt = ();
- X}
- EEE_OOO_FFF
- echo x - asm41c
- sed -e 's/^X//' >bar41c <<'EEE_OOO_FFF'
- X#!/usr/local/bin/perl
- X
- X$width = 312; # 6.5i with 18pt bars (versitec)
- X$script_name = ARGV[0]; # save script name
- X
- Xwhile ($_ = $ARGV[0], /^-/) {
- X shift;
- X last if /^--$/;
- X /^-w/ && do { # specify output file
- X die "$script_name: no arg for -w"
- X unless ($ARGV[0]);
- X die "$script_name: -w arg not numeric"
- X unless ($ARGV[0] =~ /\d+/);
- X $width = shift;
- X next; };
- X /^-t/ && do { # specify bytes tabs on barcode lines
- X ++$tags;
- X next; };
- X #default
- X die "$script_name: unknown flag $_";
- X}
- X
- X@bpn = (0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4); # bits in a nibble
- X
- Xwhile (<>) {
- X chop;
- X $line = $_;
- X /^title\s*(.*)$/ && do { # title line
- X print '.Tl "'.$1.'"\n';
- X next; };
- X /^program(\s+private)?\s+(.*)$/ && do { # process program
- X do program($1,$2);
- X next; };
- X /^data\s+'([^']*)'\s*(.*)$/ && do { # numeric data
- X do data($1,$2);
- X next; };
- X /^string(\s+append)?\s*(.*)$/ && do { # string data
- X ($append,$text) = ($1,$2);
- X $_ = <>;
- X die "$script_name: illformed data line at line $.\n"
- X unless (/^\d+(\s+\d+)*$/);
- X @byt = split;
- X unshift(@byt,($append?128:112)+$#byt+1);
- X do checksum(0);
- X do dumpbar($text,@byt);
- X next; };
- X /^bytes(\schecksum)?\s*(.*)$/ && do { # generic barcode data
- X ($checksum,$text) = ($1,$2);
- X $_ = <>;
- X die "$script_name: illformed data line at line $.\n"
- X unless (/^\d+(\s+\d+)*$/);
- X @byt = split;
- X do checksum(0) if $checksum;
- X do dumpbar($text,@byt);
- X next; };
- X #default
- X die "$script_name: no directive at line $.\n";
- X}
- Xexit 0;
- X
- X#
- X# end of main routine
- X#
- X
- Xsub pad {
- X sprintf("%03d",pop(@_)); # pad number to 3 digits with zeros
- X}
- X
- Xsub checksum { # compute checksum with arg
- X local($run) = @_; # being running value and @byt
- X local($i); # being the array of bytes then
- X for $i (@byt) { # stuff check sum on front of byt
- X $run = $run + $i;
- X $run -= 255 if $run > 255;
- X } # checksum is sum mod 265 with end
- X # around carry
- X unshift(@byt,do pad($run));
- X}
- X
- Xsub dumpbar {
- X local($i);
- X print '.Sb "'.shift(@_)."\"\n"; # start bar code line
- X for $i (@_) {
- X print ".By ".do pad($i)."\n"; # dump each byte
- X }
- X print ".Eb",(($tags)?" 1\n":"\n"); # end barcode line
- X}
- X
- Xsub bytw { # width of byt array in bars
- X local($width,$i) = (9,0); # start and stop bar overhead
- X for $i (@byt) {
- X $width += (16 + $bpn[int($byte/16)] + $bpn[$byte%16]);
- X } # narrow bar = 2, wide bar = 3
- X return $width;
- X}
- X
- Xsub program {
- X local($private,$text) = @_;
- X print '.Pg "'.$text."\"\n"; # dump prog name
- X @values = (); # bytes of code
- X @inst_num = (); # 41c instruction numbers
- X @f_orphs = (); # leading orphan bytes
- X @b_orphs = (); # trailing orphan bytes
- X $inst_cnt = 0;
- X until ($_=<>,/^end/) { # read in all of the program
- X ++$inst_cnt; # labeling each byte with
- X @byt = split; # instruction number,
- X $b_orph = 0; # leading and trailing
- X $f_orph = $#byt+2; # orphan counts
- X for $_ (@byt) {
- X push(@value,$_);
- X push(@inst_num,$inst_cnt);
- X push(@b_orphs,((++$b_orph>$#byt)?0:$b_orph));
- X push(@f_orphs,(($f_orph-->$#byt+1)?0:$f_orph));
- X }
- X }
- X $seq_num = 0; # sequence numbers
- X $running = 0; # initial running checksum
- X $line_num = 1; # number of barcode lines
- X while($#value+1) {
- X $trial_length = ($#value < 12 ? $#value : 12);
- X # assume full line 13 bytes
- X $i = $#value; # save length
- X $#value = $trial_length; # pretend that value is that long
- X @byt = @value; # copy the front off
- X $#value = $1; # set length back
- X loop: {
- X unshift(@byt, $seq_num+16*($private?2:1),
- X # add seq number and prog type ...
- X $f_orphs[0]*16+$b_orphs[$trial_length]);
- X # ... and orphan counts
- X do checksum($running);
- X # compute checksum
- X if (do bytw() > $width) { # line to wide shorten by 1
- X shift(@byt),shift(@byt),shift(@byt);
- X # remove front stuff
- X pop(@byt); # drop last byte
- X --$trial_length;
- X redo loop; # and go put on new front stuff
- X }
- X }
- X $text = sprintf("Line %d (%d - %d)",$line_num++,
- X $inst_num[0],$inst_num[$trial_length]);
- X # barcode line label
- X do dumpbar($text,@byt); # generate *roff output
- X $running = shift(@byt); # save running checksum
- X for ($i=0; $i<$trial_length; ++$i) {
- X shift(@value); # remove this barcode lines
- X shift(@inst_num); # bytes and labels
- X shift(@f_orphs); # fron arrays
- X shift(@b_orphs);
- X }
- X $seq_num = ($seq_num==15?0:++$seqnum);
- X } # inc seq num mod 16
- X}
- X
- Xsub data {
- X local($_,$text) = @_;
- X @digits = split(/.*/); # split into single chars
- X @nibbles = ();
- X for $_ (@digits) { # build nibble array
- X /\d/ && (push(@nibbles,$_),next);
- X /\./ && (push(@nibbles,11),next);
- X /\+/ && (push(@nibbles,12),next);
- X /-/ && (push(@nibbles,13),next);
- X /[eE]/ && (push(@nibbles,14),next);
- X /./ &&
- X die "$script_name: illformed numeric data at line $.\n";
- X }
- X push(@nibbles,10) if ($#nibbles % 2); # make number nibbles even
- X push(@nibbles,10,10) if ($#nibbles == 1); # must have at least 2 bytes
- X @byt = (96+shift(@nibbles)); # generate header
- X while ($#nibbles > 0) {
- X $_ = shift(@nibbles); # combine nibbles into bytes
- X push(@byt,16*$_+shift(@nibbles));
- X }
- X do checksum(0);
- X do dumpbar($text,@byt); # dump barcode line
- X}
- EEE_OOO_FFF
- echo x - bar41c
- test -d doc || mkdir doc
- sed -e 's/^X//' >asm41c.l <<'EEE_OOO_FFF'{
- X.TH ASM41C 1 "Sep 7,1988"
- X.UC 4
- X.SH NAME
- Xasm41c \- HP 41c assembler
- X.SH SYNOPSIS
- X.B asm41c
- X[
- X.I options
- X] [ name ]
- X.SH DESCRIPTION
- X.I Asm41c
- Xassembles the named file, or the standard input if no file name is specified.
- XA file suitable for processing by
- X.B bar41c(1)
- Xis produced.
- XThe available flags are:
- X.TP
- X.B \-n
- XSpecifies that all numbers in programs are to be proceded by a zero
- Xbyte just as if the program had been entered via the 41c keyboard.
- XThe default action of the assembler is to not include zero bytes before
- Xnumbers unless they are necessary to separate two consecutive numbers.
- X.TP
- X.B \-r
- XSpecifies that the routine names and XROM codes for the named rom are
- Xloaded into the operator symbol table.
- X.TP
- X.B \-X
- XSpecifies that the XROM codes for the 41CX should be loaded.
- XThis is the same as specifing "\-r\ CXextfcn\ \-r\ CXtime"
- X.TP
- X.B \-I
- XSpecifies that the XROM codes for the IL interface loop rom should be
- Xloaded.
- XThis is the same as specifing
- X"\-r\ ILmass\ \-r\ ILprinter\ \-r\ ILcntl"
- X.TP
- X.B \-l
- XSpecifies that a listing is to be produced on stdout.
- XThe default is that error messages be produced on stderr.
- X.TP
- X.B \-t
- XSpecifies the title to be used on listings and barcode output.
- XThis may also be specified in the input using the ".title" directive.
- X.TP
- X.B -o
- XSpecifies the output barcode file name.
- XThe default is "bar.out".
- X.bp
- X.SH DIRECTIVES
- XAn input file for the assembler consists of a sequence of directives
- Xsome of which may be followed by a sequence of HP 41c assembler code.
- XBlank lines and comments are ignored.
- XComments are as in
- X.B sh ,
- Xthey start with a `#' character and continue to the end of the line.
- X.PP
- XThe directives are:
- X.TP
- X.B .rom \fR\fImodule
- X.br
- XThe entry points for the specifed rom are loaded into the operator
- Xsymbol table.
- XIf the file
- X.I module.rom
- Xis not found in the current directory, then a search is made of
- Xthe default rom library directory "/usr/local/lib/hprom".
- XThis directive has the same effect as the "-r" flag on the command
- Xline.
- XExample:
- X.sp 1
- X\&.rom wand
- X.sp 1
- XLoads the entry points for the barcode wand.
- X.sp 1
- XNote: if a rom module entry point has the same name as a builtin operator
- Xthen the builtin operator will hide the rom entry point.
- X.TP
- X.B .xrom \fR\fIname romnum entry
- X.br
- X.I Name
- Xis added to the operator symbol table as the rom module entry point
- Xspecified by the two numeric arguments
- X.I romnum
- Xand
- X.I entry .
- XThe numeric argument are the same numbers displayed by the 41c
- Xxrom operator when the rom module is not present in a 41c rom port.
- XThis directive may be used to define single rom module entry points when
- Xwhole rom is unneeded.
- X.TP
- X.B .title \fR\fItext
- X.br
- XAll of the text following on the line, but not including any comment,
- Xis used on subsequent pages of the listing as the listing title.
- XThis directive has the same effect as the "-t" flag on the command line.
- X.TP
- X.B .page
- X.br
- XCauses the start of a new page in the listing.
- X.TP
- X.B .define \fR\fIname value
- X.br
- XDefine a symbolic name for a register.
- X.I Value
- Xis either a number between 0 and 128 denoting a register or a previously
- Xdefined symbol. (Values greater then 99 denote the internal registers
- Xof the 41c and should only be used with care).
- XThe simple alpha labels A-Ja-eTZYXL and the synthetic register labels
- XMNOPQR (R being used instead of '|-') are predefined symbolic labels
- Xand their definitions may be redefined using this directive.
- X.TP
- X.B .prog \fR\fI[private] name
- X.br
- XStart the assembly of a program named
- X.I name .
- Xthe optional keyword
- X.I private
- Xspecifices the barcode produced sould be for a private program
- X(one that can not be listed by the 41c).
- Xthe following lines in the input are take to be 41c assembly instructions
- Xthat make up the program.
- XThe program ends at the end of the input or at the first following directive.
- XTHis means that and roms or defined symbols should be specified before the
- Xstart of the program.
- XSee the section below for a discription of the assembler instruction format.
- X.TP
- X.B .exec \fR\fItext
- X.br
- XThe following single line of 41c code is assembled and the barcode
- Xoutput is set up for an executable barcode line.
- XThe line of barcode is labeled with the text from the rest of the line.
- X.TP
- X.B .string \fR\fI[append] \"string\" text
- X.br
- XGenerate a string data barcode line labeled with the text.
- XThe optional
- X.I append
- Xkeyword specifies that the string data is to be append on to the alpha
- Xbuffer, otherwise the alpha buffer will be cleared when the barcode line
- Xis read.
- X.TP
- X.B .data \fR\fI'number' text
- X.br
- XGenerate a numeric data barcode line labeled with the text.
- X.TP
- X.B .bytes \fR\fI[checksum] bytes... text
- XGenerate a barcode line consisting of the specified decimal bytes
- Xlabeled with the text.
- XThe optional
- X.I checksum
- Xkeyword specifies that a checksum is to be computer and placed
- Xat the front of the barcode line.
- XThe directive can be used ot create arbitrary line of barcode such as the
- Xone and two byte paper keyboard lines.
- X.TP
- X.B ".clear rom"
- X.br
- XDelete all the rom entry points from the symbol table.
- X.TP
- X.B ".clear names"
- XDelete all the symbolic register names and restore the predefined
- Xsymbolic names.
- X.SH "ASSEMBLER CODES"
- XAll the 41c assembler code are just as they are displayed on the 41c except
- Xthat the greek sigma character has be replaced with the '~' character,
- Xthe arrow character has been relaced with the '}' charecter,
- Xthe not equal symbol has be replaced with the string '!=' and the
- Xangle character has been replaced with the string 'ANG' in the one place
- Xit was used so far (the advantage module).
- X.PP
- XStrings are enclosed in double quotes with the following escapes defined:
- X.sp 1
- X.nf
- X\& \e- append character
- X\& \e= not equals character
- X\& \eS Sigma (also can use '~')
- X\& \eM mu
- X\& \eL angle
- X\& \eP pi (also can use '{')
- X\& \eA arrow (also can use '}')
- X\& \eddd decimal byte
- X\& \exhh hex byte
- X\& \e" double quote
- X\& \e\e backslash
- X.fi
- X.ad l
- X.PP
- XNumber are enclosed in single quotes (this is a hack to make parsing
- Xeasier).
- XShort form numbers are allowed (e.g. 'E', '-E4' etc.)
- X.PP
- XThe indirect indicator IND must be in all caps
- X.PP
- XBecause some of the operators have both short and long forms
- X(RCL STO GTO LBL),
- Xthe operators RCL2, STO2, GTO3 and LBL2 have been defined to
- Xforce the long form (RCL 0 assmebles to 032 while RCL2 0 assembles
- Xto 144 000.)
- XThe two spare two-byte operators are included as SPARE1 and SPARE2,
- Xand the W string operator is defined (not that these actually do anything
- Xusefull.)
- XThere is the operator "XROM\ dd,dd" and a special operator "BYTE\ ddd" that
- Xjust includes the value into the output.
- X.SH FILES
- X.ta 1.5i
- X/usr/local/lib/hprom directory where rom library is kept
- X\&.../builtins file describing the builtin functions
- X.br
- X\&.../CXextfcn.rom 41CX builtin extended functions module
- X.br
- X\&.../CXtime.rom 41CX builtin time module
- X.br
- X\&.../ILcntl.rom IL device control
- X.br
- X\&.../ILmass.rom IL mass storage
- X.br
- X\&.../ILprinter.rom IL printer
- X.br
- X\&.../advantage.rom HP advantage module
- X.br
- X\&.../cardr.rom card reader internal rom
- X.br
- X\&.../extfcn.rom extended functions module
- X.br
- X\&.../games.rom games rom
- X.br
- X\&.../math.rom math rom
- X.br
- X\&.../ppc.rom PPC club rom
- X.br
- X\&.../printer.rom non-IL printer internal rom
- X.br
- X\&.../time.rom time module
- X.br
- X\&.../wand.rom barcode wand internal rom
- X.br
- Xbar.out default barcode output file
- X.SH SEE ALSO
- Xbar41c(l) barcode file to troff translator
- X.br
- XAuxiliary documentation:
- X.in +.5i
- X.br
- X.I "HP-41c Owners Manual."
- X.br
- X.I "Creating Your Own HP-41 Bar Code Manual. 82153-90019"
- X.br
- X.I "HP-41 Synthetic Programming Made Easy"
- Xby Keith Jarett.
- X.in -.5i
- X.SH AUTHORS
- XMark A. Biggar
- X.br
- Xsdcrdcf!markb
- X.br
- Xmarkb@rdcf.sm.unisys.com
- EEE_OOO_FFF
- echo x - doc/asm41c.l
- sed -e 's/^X//' >bar41c.l <<'EEE_OOO_FFF'
- X.TH BAR41C 1 "Sep 7,1988"
- X.UC 4
- X.SH NAME
- Xbar41c \- HP 41c barcode generator
- X.SH SYNOPSIS
- X.B bar41c
- X[
- X.I options
- X]
- X.SH DESCRIPTION
- X.I Bar41c
- Xis a filter that takes files like those produced by asm41c(1) and generates
- X*roff macros to print the barcodes.
- XThe available flags are:
- X.TP
- X.B \-w
- XThe integer argument specifies the maximun width of a program barcode line
- Xin narrow bar widths.
- XValue is used to fill out the line of program barcode to a given width.
- XThe default value of 312 is the equivlent to 6.5 inches using the versitec
- Xmacro set.
- XNarrow bars are half the width of wide bars and the spaces inbetween are
- Xthe same width as the narrow bars.
- XAs a line of barcode can not contain more then 16 bytes the maximum usefull
- Xvalue for -w is 456 (16 bytes * 8 bits * 3 bars (width of wide bar + space)
- X+ 9 (start and stop bars (3 narrow and 1 wide))).
- X.TP
- X.B \-t
- XSpecifies that byte tags are to be generated.
- XThe *roff macros will be called so that each byte in a line of barcode
- Xis labeled with its value.
- X.SH DIRECTIVES
- XAn input file for bar41c consists of a sequence of directives
- Xsome of which may be followed by a sequence of line of byte values.
- X.PP
- XThe directives are:
- X.TP
- X.B title /fR/fItext
- XThe
- X.I text
- Xis used as the argument for the .Tl macro.
- XThis directive has no other effect.
- X.TP
- X.B data \fR\fI'number' text
- XA numeric data barcode line type 6 is produced with
- X.I text
- Xas the barcode line's label.
- X.B string \fR\fI[append] text
- XA string data barcode line is produced with
- X.I text
- Xas its label.
- XIf the optional keyword
- X.I append
- Xis present then an append barcode line of type 8 is produced, otherwise
- Xa normal string barcode line type 7 is produced.
- XThe foolowing line in the input should be a single line of byte values
- Xconsisting of the character values for the string data.
- X.TP
- X.B bytes \fR\fI[checksum] text
- XA barcode line is produced using the following line of byte values
- Xand using
- X.I text
- Xas the label.
- XIf the optional keyword
- X.I checksum
- Xis present a checksum is first conputed and append on the front of the
- Xlist of byte values.
- XOnly the first 16 values (15 if a checksum is specified) are used,
- Xothers are ignored.
- X.TP
- X.B program \fR\fI[private] name
- XStart generating barcode line for the program
- X.I name.
- XThe following lines of byte values terminated by a line starting with
- Xthe keyword "end" consist of the instructions for the program, one
- Xinstruction per line (this is used to generate the instruction numbers
- Xin the standard barcode line labels which look like "Line 1 (1 - 3)".)
- XIf the optional keyword
- X.I private
- Xis used then program barcode line of type 2 (private) are produced,
- Xotherwise type 1 is used.
- X.SH FILES
- X.ta 1.5i
- Xtmac.vbar macro file of Versitec raster printers
- X.br
- Xtmac.lwbar macro file for Apple LaserWriter
- X.SH SEE ALSO
- Xasm41c(l) Hp41c assembler
- X.br
- XAuxiliary documentation:
- X.in +.5i
- X.br
- X.I "Creating Your Own HP-41 Bar Code Manual. 82153-90019"
- X.in -.5i
- X.SH BUGS
- XThere is no provision made for the sequenced data barcode types
- X(9, 10 & 11).
- X.SH AUTHORS
- XMark A. Biggar
- X.br
- Xsdcrdcf!markb
- X.br
- Xmarkb@rdcf.sm.unisys.com
- EEE_OOO_FFF
- echo x - doc/bar41c.l
- test -d rom || mkdir rom
- sed -e 's/^X//' >README <<'EEE_OOO_FFF'
- XHow to build rom files:
- X
- Xrom file consist of line of perl script loading the $xrom associative
- Xarray with the two bytes of assembled data coresponding to the
- Xxrom call. For example the file wand.rom looks like:
- X
- X$xrom{"WNDDTA"} = "166 193";
- X$xrom{"WNDDTX"} = "166 194";
- X$xrom{"WNDLNK"} = "166 195";
- X$xrom{"WNDSUB"} = "166 196";
- X$xrom{"WNDSCN"} = "166 197";
- X$xrom{"WNDTST"} = "166 198";
- X
- XIn order to make generating these file easier a perl script is included
- X(called trans) that will take files that look like:
- X
- XWNDDTA 27 1
- XWNDDTX 27 2
- XWNDLNK 27 3
- XWNDSUB 27 4
- XWNDSCN 27 5
- XWNDTST 27 6
- X
- Xand generate a file like the above. The numbers are the module number
- Xand the routine number just as displayed by the HP 41c in the XROM op
- Xwhen the module is not installed.
- EEE_OOO_FFF
- echo x - rom/README
- sed -e 's/^X//' >builtins <<'EEE_OOO_FFF'
- X$single{"NULL"} = "000";
- X$single{"+"} = "064";
- X$single{"-"} = "065";
- X$single{"*"} = "066";
- X$single{"/"} = "067";
- X$single{"X<Y?"} = "068";
- X$single{"X>Y?"} = "069";
- X$single{"X<=Y?"} = "070";
- X$single{"~+"} = "071";
- X$single{"~-"} = "072";
- X$single{"HMS+"} = "073";
- X$single{"HMS-"} = "074";
- X$single{"MOD"} = "075";
- X$single{"%"} = "076";
- X$single{"%CH"} = "077";
- X$single{"P}R"} = "078";
- X$single{"R}P"} = "079";
- X$single{"LN"} = "080";
- X$single{"X^2"} = "081";
- X$single{"SQRT"} = "082";
- X$single{"Y^X"} = "083";
- X$single{"CHS"} = "084";
- X$single{"E^X"} = "085";
- X$single{"LOG"} = "086";
- X$single{"10^X"} = "087";
- X$single{"E^X-1"} = "088";
- X$single{"SIN"} = "089";
- X$single{"COS"} = "090";
- X$single{"TAN"} = "091";
- X$single{"ASIN"} = "092";
- X$single{"ACOS"} = "093";
- X$single{"ATAN"} = "094";
- X$single{"}DEC"} = "095";
- X$single{"1/X"} = "096";
- X$single{"ABS"} = "097";
- X$single{"FACT"} = "098";
- X$single{"X!=0?"} = "099";
- X$single{"X>0?"} = "100";
- X$single{"LN1+X"} = "101";
- X$single{"X<0?"} = "102";
- X$single{"X=0?"} = "103";
- X$single{"INT"} = "104";
- X$single{"FRC"} = "105";
- X$single{"D}R"} = "106";
- X$single{"R}D"} = "107";
- X$single{"}HMS"} = "108";
- X$single{"}HR"} = "109";
- X$single{"RND"} = "110";
- X$single{"}OCT"} = "111";
- X$single{"CL+"} = "112";
- X$single{"X<>Y"} = "113";
- X$single{"PI"} = "114";
- X$single{"CLST"} = "115";
- X$single{"R^"} = "116";
- X$single{"RDN"} = "117";
- X$single{"LASTX"} = "118";
- X$single{"CLX"} = "119";
- X$single{"X=Y?"} = "120";
- X$single{"X!=Y?"} = "121";
- X$single{"SIGN"} = "122";
- X$single{"X<=0?"} = "123";
- X$single{"MEAN"} = "124";
- X$single{"SDEV"} = "125";
- X$single{"AVIEW"} = "126";
- X$single{"CLD"} = "127";
- X$single{"DEG"} = "128";
- X$single{"RAD"} = "129";
- X$single{"GRAD"} = "130";
- X$single{"ENTER^"} = "131";
- X$single{"STOP"} = "132";
- X$single{"RTN"} = "133";
- X$single{"BEEP"} = "134";
- X$single{"CLA"} = "135";
- X$single{"ASHF"} = "136";
- X$single{"PSE"} = "137";
- X$single{"CLRG"} = "138";
- X$single{"AOFF"} = "139";
- X$single{"AON"} = "140";
- X$single{"OFF"} = "141";
- X$single{"PROMPT"} = "142";
- X$single{"ADV"} = "143";
- X
- X$twobyte{"RCL"} = "144";
- X$twobyte{"STO"} = "145";
- X$twobyte{"RCL2"} = "144";
- X$twobyte{"STO2"} = "145";
- X$twobyte{"ST+"} = "146";
- X$twobyte{"ST-"} = "147";
- X$twobyte{"ST*"} = "148";
- X$twobyte{"ST/"} = "149";
- X$twobyte{"ISG"} = "150";
- X$twobyte{"DSE"} = "151";
- X$twobyte{"VIEW"} = "152";
- X$twobyte{"~REG"} = "153";
- X$twobyte{"ASTO"} = "154";
- X$twobyte{"ARCL"} = "155";
- X$twobyte{"FIX"} = "156";
- X$twobyte{"SCI"} = "157";
- X$twobyte{"ENG"} = "158";
- X$twobyte{"TONE"} = "159";
- X$twobyte{"SF"} = "168";
- X$twobyte{"CF"} = "169";
- X$twobyte{"FS?C"} = "170";
- X$twobyte{"FC?C"} = "171";
- X$twobyte{"FS?"} = "172";
- X$twobyte{"FC?"} = "173";
- X$twobyte{"SPARE1"} = "175";
- X$twobyte{"SPARE2"} = "176";
- X$twobyte{"X<>"} = "206";
- X$twobyte{"LBL2"} = "207";
- EEE_OOO_FFF
- echo x - rom/builtins
- sed -e 's/^X//' >trans <<'EEE_OOO_FFF'
- X#! /usr/local/bin/perl -i
- X
- Xwhile (<>) {
- X next if /^\s*#/; # ignore comments
- X /([^ ]+) *([0-9]+) *([0-9]+)/;
- X print sprintf("%-16s = \"%03d %03d\";\n",
- X "\$xrom{\"$1\"}", 160+($2/4), 64*($2%4)+$3);
- X}
- EEE_OOO_FFF
- echo x - rom/trans
- sed -e 's/^X//' >CXextfcn.rom <<'EEE_OOO_FFF'
- X$xrom{"ALENG"} = "166 065";
- X$xrom{"ANUM"} = "166 066";
- X$xrom{"APPCHR"} = "166 067";
- X$xrom{"APPREC"} = "166 068";
- X$xrom{"ARCLREC"} = "166 069";
- X$xrom{"AROT"} = "166 070";
- X$xrom{"ATOX"} = "166 071";
- X$xrom{"CLFL"} = "166 072";
- X$xrom{"CLKEYS"} = "166 073";
- X$xrom{"CRFLAS"} = "166 074";
- X$xrom{"CRFLD"} = "166 075";
- X$xrom{"DELCHR"} = "166 076";
- X$xrom{"DELREC"} = "166 077";
- X$xrom{"EMDIR"} = "166 078";
- X$xrom{"FLSIZE"} = "166 079";
- X$xrom{"GETAS"} = "166 080";
- X$xrom{"GETKEY"} = "166 081";
- X$xrom{"GETP"} = "166 082";
- X$xrom{"GETR"} = "166 083";
- X$xrom{"GETREC"} = "166 084";
- X$xrom{"GETRX"} = "166 085";
- X$xrom{"GETSUB"} = "166 086";
- X$xrom{"GETX"} = "166 087";
- X$xrom{"INSCHR"} = "166 088";
- X$xrom{"INSREC"} = "166 089";
- X$xrom{"PASN"} = "166 090";
- X$xrom{"PCLPS"} = "166 091";
- X$xrom{"POSA"} = "166 092";
- X$xrom{"POSFL"} = "166 093";
- X$xrom{"PSIZE"} = "166 094";
- X$xrom{"PURFL"} = "166 095";
- X$xrom{"RCLFLAG"} = "166 096";
- X$xrom{"RCLPT"} = "166 097";
- X$xrom{"RCLPTA"} = "166 098";
- X$xrom{"REGMOVE"} = "166 099";
- X$xrom{"REGSWAP"} = "166 100";
- X$xrom{"SAVEAS"} = "166 101";
- X$xrom{"SAVEP"} = "166 102";
- X$xrom{"SAVER"} = "166 103";
- X$xrom{"SAVERX"} = "166 104";
- X$xrom{"SAVEX"} = "166 105";
- X$xrom{"SEEKPT"} = "166 106";
- X$xrom{"SEEKPTA"} = "166 107";
- X$xrom{"SIZE?"} = "166 108";
- X$xrom{"STOFLAG"} = "166 109";
- X$xrom{"X<>F"} = "166 110";
- X$xrom{"XTOA"} = "166 111";
- X$xrom{"ASROOM"} = "166 113";
- X$xrom{"CLRGX"} = "166 114";
- X$xrom{"ED"} = "166 115";
- X$xrom{"EMDIRX"} = "166 116";
- X$xrom{"EMROOM"} = "166 117";
- X$xrom{"GETKEYX"} = "166 118";
- X$xrom{"RESZFL"} = "166 119";
- X$xrom{"~REG?"} = "166 120";
- X$xrom{"X=NN?"} = "166 121";
- X$xrom{"X!=NN?"} = "166 122";
- X$xrom{"X<NN?"} = "166 123";
- X$xrom{"X<=NN?"} = "166 124";
- X$xrom{"X>NN?"} = "166 125";
- X$xrom{"X>=NN?"} = "166 126";
- EEE_OOO_FFF
- echo x - rom/CXextfcn.rom
- sed -e 's/^X//' >CXtime.rom <<'EEE_OOO_FFF'
- X$xrom{"ADATE"} = "166 129";
- X$xrom{"ALMCAT"} = "166 130";
- X$xrom{"ALMNOW"} = "166 131";
- X$xrom{"ATIME"} = "166 132";
- X$xrom{"ATIME24"} = "166 133";
- X$xrom{"CLK12"} = "166 134";
- X$xrom{"CLK24"} = "166 135";
- X$xrom{"CLKT"} = "166 136";
- X$xrom{"CLKTD"} = "166 137";
- X$xrom{"CLOCK"} = "166 138";
- X$xrom{"CORRECT"} = "166 139";
- X$xrom{"DATE"} = "166 140";
- X$xrom{"DATE+"} = "166 141";
- X$xrom{"DDAYS"} = "166 142";
- X$xrom{"DMY"} = "166 143";
- X$xrom{"DOW"} = "166 144";
- X$xrom{"MDY"} = "166 145";
- X$xrom{"RCLAF"} = "166 146";
- X$xrom{"RCLSW"} = "166 147";
- X$xrom{"RUNSW"} = "166 148";
- X$xrom{"SETAF"} = "166 149";
- X$xrom{"SETDATE"} = "166 150";
- X$xrom{"SETSW"} = "166 151";
- X$xrom{"STOPSW"} = "166 152";
- X$xrom{"SW"} = "166 153";
- X$xrom{"T+X"} = "166 154";
- X$xrom{"TIME"} = "166 155";
- X$xrom{"XYZALM"} = "166 156";
- X$xrom{"CLALMA"} = "166 159";
- X$xrom{"CLALMX"} = "166 160";
- X$xrom{"CLRALMS"} = "166 161";
- X$xrom{"RCLALM"} = "166 162";
- X$xrom{"SWPT"} = "166 163";
- EEE_OOO_FFF
- echo x - rom/CXtime.rom
- sed -e 's/^X//' >ILcntl.rom <<'EEE_OOO_FFF'
- X$xrom{"AUTOIO"} = "167 027";
- X$xrom{"FINDID"} = "167 028";
- X$xrom{"INA"} = "167 029";
- X$xrom{"IND"} = "167 030";
- X$xrom{"INSTAT"} = "167 031";
- X$xrom{"LISTEN"} = "167 032";
- X$xrom{"LOCAL"} = "167 033";
- X$xrom{"MANIO"} = "167 034";
- X$xrom{"OUTA"} = "167 035";
- X$xrom{"PWRDN"} = "167 036";
- X$xrom{"PWRUP"} = "167 037";
- X$xrom{"REMOTE"} = "167 038";
- X$xrom{"SELECT"} = "167 039";
- X$xrom{"STOPIO"} = "167 040";
- X$xrom{"TRIGGER"} = "167 041";
- EEE_OOO_FFF
- echo x - rom/ILcntl.rom
- sed -e 's/^X//' >ILmass.rom <<'EEE_OOO_FFF'
- X$xrom{"CREATE"} = "167 001";
- X$xrom{"DIR"} = "167 002";
- X$xrom{"NEWM"} = "167 003";
- X$xrom{"PURGE"} = "167 004";
- X$xrom{"READA"} = "167 005";
- X$xrom{"READK"} = "167 006";
- X$xrom{"READP"} = "167 007";
- X$xrom{"READR"} = "167 008";
- X$xrom{"READRX"} = "167 009";
- X$xrom{"READS"} = "167 010";
- X$xrom{"READSUB"} = "167 011";
- X$xrom{"RENAME"} = "167 012";
- X$xrom{"SEC"} = "167 013";
- X$xrom{"SEEKR"} = "167 014";
- X$xrom{"UNSEC"} = "167 015";
- X$xrom{"VERIFY"} = "167 016";
- X$xrom{"WRTA"} = "167 017";
- X$xrom{"WRTK"} = "167 018";
- X$xrom{"WRTP"} = "167 019";
- X$xrom{"WRTPV"} = "167 020";
- X$xrom{"WRTR"} = "167 021";
- X$xrom{"WRTRX"} = "167 022";
- X$xrom{"WRTS"} = "167 023";
- X$xrom{"ZERO"} = "167 024";
- EEE_OOO_FFF
- echo x - rom/ILmass.rom
- sed -e 's/^X//' >ILprinter.rom <<'EEE_OOO_FFF'
- X$xrom{"ACA"} = "167 065";
- X$xrom{"ACCHR"} = "167 066";
- X$xrom{"ACCOL"} = "167 067";
- X$xrom{"ACSPEC"} = "167 068";
- X$xrom{"ACX"} = "167 069";
- X$xrom{"BLDSPEC"} = "167 070";
- X$xrom{"LIST"} = "167 071";
- X$xrom{"PRA"} = "167 072";
- X$xrom{"PRAXIS"} = "167 073";
- X$xrom{"PRBUF"} = "167 074";
- X$xrom{"PRFLAGS"} = "167 075";
- X$xrom{"PRKEYS"} = "167 076";
- X$xrom{"PRP"} = "167 077";
- X$xrom{"PRPLOT"} = "167 078";
- X$xrom{"PRPLOTP"} = "167 079";
- X$xrom{"PRREG"} = "167 080";
- X$xrom{"PRREGX"} = "167 081";
- X$xrom{"PR~"} = "167 082";
- X$xrom{"PRSTK"} = "167 083";
- X$xrom{"PRX"} = "167 084";
- X$xrom{"REGPLOT"} = "167 085";
- X$xrom{"SKPCHR"} = "167 086";
- X$xrom{"SKPCOL"} = "167 087";
- X$xrom{"STKPLOT"} = "167 088";
- X$xrom{"FMT"} = "167 089";
- EEE_OOO_FFF
- echo x - rom/ILprinter.rom
- sed -e 's/^X//' >advantage.rom <<'EEE_OOO_FFF'
- X$xrom{"BININ"} = "165 129";
- X$xrom{"BINVIEW"} = "165 130";
- X$xrom{"OCTIN"} = "165 131";
- X$xrom{"CVTVIEW"} = "165 132";
- X$xrom{"HEXIN"} = "165 133";
- X$xrom{"HEXVIEW"} = "165 134";
- X$xrom{"NOT"} = "165 135";
- X$xrom{"AND"} = "165 136";
- X$xrom{"OR"} = "165 137";
- X$xrom{"XOR"} = "165 138";
- X$xrom{"ROTXY"} = "165 139";
- X$xrom{"BIT?"} = "165 140";
- X$xrom{"C<>C"} = "165 142";
- X$xrom{"CMAXAB"} = "165 143";
- X$xrom{"CNRM"} = "165 144";
- X$xrom{"CSUM"} = "165 145";
- X$xrom{"DIM?"} = "165 146";
- X$xrom{"FNRM"} = "165 147";
- X$xrom{"I+"} = "165 148";
- X$xrom{"I-"} = "165 149";
- X$xrom{"J+"} = "165 150";
- X$xrom{"J-"} = "165 151";
- X$xrom{"M*M"} = "165 152";
- X$xrom{"MAT*"} = "165 153";
- X$xrom{"MAT+"} = "165 154";
- X$xrom{"MAT-"} = "165 155";
- X$xrom{"MAT/"} = "165 156";
- X$xrom{"MATDIM"} = "165 157";
- X$xrom{"MAX"} = "165 158";
- X$xrom{"MAXAB"} = "165 159";
- X$xrom{"MDET"} = "165 160";
- X$xrom{"MIN"} = "165 161";
- X$xrom{"MINV"} = "165 162";
- X$xrom{"MMOVE"} = "165 163";
- X$xrom{"MNAME?"} = "165 164";
- X$xrom{"MR"} = "165 165";
- X$xrom{"MRC+"} = "165 166";
- X$xrom{"MRC-"} = "165 167";
- X$xrom{"MRIJ"} = "165 168";
- X$xrom{"MRIJR"} = "165 169";
- X$xrom{"MRR+"} = "165 170";
- X$xrom{"MRR-"} = "165 171";
- X$xrom{"MS"} = "165 172";
- X$xrom{"MSC+"} = "165 173";
- X$xrom{"MSIJ"} = "165 174";
- X$xrom{"MSIJR"} = "165 175";
- X$xrom{"MSR+"} = "165 176";
- X$xrom{"MSWAP"} = "165 177";
- X$xrom{"MSVS"} = "165 178";
- X$xrom{"PIV"} = "165 179";
- X$xrom{"R<>R"} = "165 180";
- X$xrom{"R>R?"} = "165 181";
- X$xrom{"RMAXAB"} = "165 182";
- X$xrom{"RNRM"} = "165 183";
- X$xrom{"RSUM"} = "165 184";
- X$xrom{"SUM"} = "165 185";
- X$xrom{"SUMAB"} = "165 186";
- X$xrom{"TRNPS"} = "165 187";
- X$xrom{"YC+C"} = "165 188";
- X$xrom{"MEDIT"} = "165 189";
- X$xrom{"CMEDIT"} = "165 190";
- X$xrom{"MP"} = "165 191";
- X$xrom{"MATRX"} = "165 192";
- X$xrom{"MTR"} = "166 001";
- X$xrom{"SOLVE"} = "166 003";
- X$xrom{"INTEG"} = "166 004";
- X$xrom{"SILOOP"} = "166 005";
- X$xrom{"SIRIN"} = "166 006";
- X$xrom{"Z^N"} = "166 007";
- X$xrom{"MAGZ"} = "166 008";
- X$xrom{"e^Z"} = "166 009";
- X$xrom{"LNZ"} = "166 010";
- X$xrom{"Z^1/N"} = "166 011";
- X$xrom{"SINZ"} = "166 012";
- X$xrom{"COSZ"} = "166 013";
- X$xrom{"TANZ"} = "166 014";
- X$xrom{"a^Z"} = "166 015";
- X$xrom{"LOGZ"} = "166 016";
- X$xrom{"Z^1/W"} = "166 017";
- X$xrom{"Z^W"} = "166 018";
- X$xrom{"C+"} = "166 019";
- X$xrom{"C-"} = "166 020";
- X$xrom{"CINV"} = "166 021";
- X$xrom{"C*"} = "166 022";
- X$xrom{"C/"} = "166 023";
- X$xrom{"PLV"} = "166 024";
- X$xrom{"RIS"} = "166 025";
- X$xrom{"DIFEQ"} = "166 026";
- X$xrom{"CFIT"} = "166 027";
- X$xrom{"ASIG"} = "166 028";
- X$xrom{"DSIG"} = "166 029";
- X$xrom{"CFIT"} = "166 030";
- X$xrom{"FIT"} = "166 031";
- X$xrom{"Y?X"} = "166 032";
- X$xrom{"SZ?"} = "166 033";
- X$xrom{"VC"} = "166 034";
- X$xrom{"CROSS"} = "166 035";
- X$xrom{"VS"} = "166 036";
- X$xrom{"VR"} = "166 037";
- X$xrom{"DOT"} = "166 038";
- X$xrom{"VE"} = "166 039";
- X$xrom{"V-"} = "166 040";
- X$xrom{"V+"} = "166 041";
- X$xrom{"VXY"} = "166 042";
- X$xrom{"UV"} = "166 043";
- X$xrom{"VANG"} = "166 044";
- X$xrom{"VD"} = "166 045";
- X$xrom{"V*"} = "166 046";
- X$xrom{"TR"} = "166 047";
- X$xrom{"CT"} = "166 048";
- X$xrom{"AIP"} = "166 049";
- X$xrom{"TVM"} = "166 051";
- X$xrom{"N"} = "166 052";
- X$xrom{"PV"} = "166 053";
- X$xrom{"PMT"} = "166 054";
- X$xrom{"FV"} = "166 055";
- X$xrom{"*I"} = "166 056";
- EEE_OOO_FFF
- echo x - rom/advantage.rom
- sed -e 's/^X//' >cardr.rom <<'EEE_OOO_FFF'
- X$xrom{"MRG"} = "167 129";
- X$xrom{"RDTA"} = "167 130";
- X$xrom{"RDTAX"} = "167 131";
- X$xrom{"RSUB"} = "167 132";
- X$xrom{"VER"} = "167 133";
- X$xrom{"WALL"} = "167 134";
- X$xrom{"WDTA"} = "167 135";
- X$xrom{"WDTAX"} = "167 136";
- X$xrom{"WPRV"} = "167 137";
- X$xrom{"WSTS"} = "167 138";
- EEE_OOO_FFF
- echo x - rom/cardr.rom
- sed -e 's/^X//' >extfcn.rom <<'EEE_OOO_FFF'
- X$xrom{"ALENG"} = "166 065";
- X$xrom{"ANUM"} = "166 066";
- X$xrom{"APPCHR"} = "166 067";
- X$xrom{"APPREC"} = "166 068";
- X$xrom{"ARCLREC"} = "166 069";
- X$xrom{"AROT"} = "166 070";
- X$xrom{"ATOX"} = "166 071";
- X$xrom{"CLFL"} = "166 072";
- X$xrom{"CLKEYS"} = "166 073";
- X$xrom{"CRFLAS"} = "166 074";
- X$xrom{"CRFLD"} = "166 075";
- X$xrom{"DELCHR"} = "166 076";
- X$xrom{"DELREC"} = "166 077";
- X$xrom{"EMDIR"} = "166 078";
- X$xrom{"FLSIZE"} = "166 079";
- X$xrom{"GETAS"} = "166 080";
- X$xrom{"GETKEY"} = "166 081";
- X$xrom{"GETP"} = "166 082";
- X$xrom{"GETR"} = "166 083";
- X$xrom{"GETREC"} = "166 084";
- X$xrom{"GETRX"} = "166 085";
- X$xrom{"GETSUB"} = "166 086";
- X$xrom{"GETX"} = "166 087";
- X$xrom{"INSCHR"} = "166 088";
- X$xrom{"INSREC"} = "166 089";
- X$xrom{"PASN"} = "166 090";
- X$xrom{"PCLPS"} = "166 091";
- X$xrom{"POSA"} = "166 092";
- X$xrom{"POSFL"} = "166 093";
- X$xrom{"PSIZE"} = "166 094";
- X$xrom{"PURFL"} = "166 095";
- X$xrom{"RCLFLAG"} = "166 096";
- X$xrom{"RCLPT"} = "166 097";
- X$xrom{"RCLPTA"} = "166 098";
- X$xrom{"REGMOVE"} = "166 099";
- X$xrom{"REGSWAP"} = "166 100";
- X$xrom{"SAVEAS"} = "166 101";
- X$xrom{"SAVEP"} = "166 102";
- X$xrom{"SAVER"} = "166 103";
- X$xrom{"SAVERX"} = "166 104";
- X$xrom{"SAVEX"} = "166 105";
- X$xrom{"SEEKPT"} = "166 106";
- X$xrom{"SEEKPTA"} = "166 107";
- X$xrom{"SIZE?"} = "166 108";
- X$xrom{"STOFLAG"} = "166 109";
- X$xrom{"X<>F"} = "166 110";
- X$xrom{"XTOA"} = "166 111";
- EEE_OOO_FFF
- echo x - rom/extfcn.rom
- sed -e 's/^X//' >games.rom <<'EEE_OOO_FFF'
- X$xrom{"BAGELS"} = "162 129";
- X$xrom{"BIOR"} = "162 130";
- X$xrom{"BIOF"} = "162 131";
- X$xrom{"CRAPS"} = "162 132";
- X$xrom{"HANG"} = "162 133";
- X$xrom{"PINBALL"} = "162 134";
- X$xrom{"SWAR"} = "162 135";
- X$xrom{"SUBHUNT"} = "162 136";
- X$xrom{"BOOM"} = "162 137";
- X$xrom{"INI"} = "162 138";
- X$xrom{"P"} = "162 139";
- X$xrom{"SIZE?"} = "162 140";
- X$xrom{"RNDM"} = "162 141";
- X$xrom{"RNDMW"} = "162 142";
- EEE_OOO_FFF
- echo x - rom/games.rom
- sed -e 's/^X//' >math.rom <<'EEE_OOO_FFF'
- X$xrom{"MATRIX"} = "160 065";
- X$xrom{"SIMEQ"} = "160 066";
- X$xrom{"VCOL"} = "160 067";
- X$xrom{"VMAT"} = "160 068";
- X$xrom{"PVT"} = "160 069";
- X$xrom{"DET"} = "160 070";
- X$xrom{"INV"} = "160 071";
- X$xrom{"EDIT"} = "160 072";
- X$xrom{"SOLVE"} = "160 073";
- X$xrom{"SOL"} = "160 074";
- X$xrom{"POLY"} = "160 075";
- X$xrom{"ROOTS"} = "160 076";
- X$xrom{"INTG"} = "160 077";
- X$xrom{"DIFEQ"} = "160 078";
- X$xrom{"FOUR"} = "160 079";
- X$xrom{"C+"} = "160 080";
- X$xrom{"C-"} = "160 081";
- X$xrom{"C*"} = "160 082";
- X$xrom{"C/"} = "160 083";
- X$xrom{"MAGZ"} = "160 084";
- X$xrom{"CINV"} = "160 085";
- X$xrom{"Z^N"} = "160 086";
- X$xrom{"Z^1/N"} = "160 087";
- X$xrom{"E^Z"} = "160 088";
- X$xrom{"LNZ"} = "160 089";
- X$xrom{"A^Z"} = "160 090";
- X$xrom{"LOGZ"} = "160 091";
- X$xrom{"Z^W"} = "160 092";
- X$xrom{"Z^1/W"} = "160 093";
- X$xrom{"SINZ"} = "160 094";
- X$xrom{"COSZ"} = "160 095";
- X$xrom{"TANZ"} = "160 096";
- X$xrom{"SINH"} = "160 097";
- X$xrom{"COSH"} = "160 098";
- X$xrom{"TANH"} = "160 099";
- X$xrom{"ASINH"} = "160 100";
- X$xrom{"ACOSH"} = "160 101";
- X$xrom{"ATANH"} = "160 102";
- X$xrom{"SSS"} = "160 103";
- X$xrom{"ASA"} = "160 104";
- X$xrom{"SAA"} = "160 105";
- X$xrom{"SAS"} = "160 106";
- X$xrom{"SSA"} = "160 107";
- X$xrom{"TRANS"} = "160 108";
- X$xrom{"*FN"} = "160 109";
- EEE_OOO_FFF
- echo x - rom/math.rom
- sed -e 's/^X//' >ppc.rom <<'EEE_OOO_FFF'
- X$xrom{"+K"} = "162 131";
- X$xrom{"-B"} = "162 152";
- X$xrom{"1K"} = "162 130";
- X$xrom{"2D"} = "162 183";
- X$xrom{"A?"} = "162 138";
- X$xrom{"AB"} = "162 189";
- X$xrom{"AD"} = "162 146";
- X$xrom{"AL"} = "162 165";
- X$xrom{"AM"} = "165 053";
- X$xrom{"BA"} = "165 030";
- X$xrom{"BC"} = "165 043";
- X$xrom{"BD"} = "165 017";
- X$xrom{"BE"} = "165 034";
- X$xrom{"BI"} = "162 172";
- X$xrom{"BL"} = "162 170";
- X$xrom{"BM"} = "165 039";
- X$xrom{"BR"} = "165 040";
- X$xrom{"B+"} = "165 042";
- X$xrom{"BV"} = "165 007";
- X$xrom{"BX"} = "165 041";
- X$xrom{"C?"} = "162 144";
- X$xrom{"CA"} = "165 023";
- X$xrom{"CB"} = "162 178";
- X$xrom{"CD"} = "162 163";
- X$xrom{"CJ"} = "165 021";
- X$xrom{"CK"} = "162 134";
- X$xrom{"CM"} = "165 020";
- X$xrom{"CP"} = "165 027";
- X$xrom{"CU"} = "162 162";
- X$xrom{"CV"} = "165 008";
- X$xrom{"CX"} = "162 161";
- X$xrom{"DC"} = "162 139";
- X$xrom{"DF"} = "165 013";
- X$xrom{"DP"} = "162 181";
- X$xrom{"DR"} = "165 038";
- X$xrom{"DS"} = "162 157";
- X$xrom{"DT"} = "162 145";
- X$xrom{"E?"} = "162 190";
- X$xrom{"EP"} = "162 159";
- X$xrom{"EX"} = "162 155";
- X$xrom{"F?"} = "162 132";
- X$xrom{"FD"} = "165 011";
- X$xrom{"FI"} = "162 191";
- X$xrom{"FL"} = "162 171";
- X$xrom{"FR"} = "165 012";
- X$xrom{"GE"} = "162 188";
- X$xrom{"GN"} = "165 015";
- X$xrom{"HA"} = "165 025";
- X$xrom{"HD"} = "162 148";
- X$xrom{"HN"} = "162 169";
- X$xrom{"HP"} = "165 029";
- X$xrom{"HS"} = "165 026";
- X$xrom{"IF"} = "162 177";
- X$xrom{"IG"} = "165 009";
- X$xrom{"IP"} = "162 173";
- X$xrom{"IR"} = "165 037";
- X$xrom{"JC"} = "165 022";
- X$xrom{"L-"} = "162 151";
- X$xrom{"LB"} = "162 150";
- X$xrom{"LF"} = "162 133";
- X$xrom{"LG"} = "165 024";
- X$xrom{"LR"} = "165 002";
- X$xrom{"M1"} = "165 033";
- X$xrom{"M2"} = "165 031";
- X$xrom{"M3"} = "165 032";
- X$xrom{"M4"} = "165 035";
- X$xrom{"M5"} = "165 036";
- X$xrom{"MA"} = "165 054";
- X$xrom{"MK"} = "162 129";
- X$xrom{"ML"} = "162 140";
- X$xrom{"MP"} = "165 028";
- X$xrom{"MS"} = "162 176";
- X$xrom{"MT"} = "162 156";
- X$xrom{"NC"} = "162 166";
- X$xrom{"NH"} = "162 168";
- X$xrom{"NP"} = "165 014";
- X$xrom{"NR"} = "165 050";
- X$xrom{"NS"} = "165 049";
- X$xrom{"OM"} = "162 186";
- X$xrom{"PA"} = "162 187";
- X$xrom{"PD"} = "162 180";
- X$xrom{"PK"} = "162 137";
- X$xrom{"PM"} = "165 019";
- X$xrom{"PO"} = "165 051";
- X$xrom{"PR"} = "165 045";
- X$xrom{"PS"} = "162 174";
- X$xrom{"QR"} = "162 182";
- X$xrom{"RB"} = "165 052";
- X$xrom{"RD"} = "165 005";
- X$xrom{"RF"} = "162 141";
- X$xrom{"RK"} = "165 006";
- X$xrom{"RN"} = "165 016";
- X$xrom{"RT"} = "162 179";
- X$xrom{"RX"} = "162 185";
- X$xrom{"S1"} = "165 046";
- X$xrom{"S2"} = "165 048";
- X$xrom{"S3"} = "165 047";
- X$xrom{"S?"} = "162 143";
- X$xrom{"SB"} = "165 001";
- X$xrom{"SD"} = "165 003";
- X$xrom{"SE"} = "165 056";
- X$xrom{"~?"} = "162 142";
- X$xrom{"~C"} = "162 149";
- X$xrom{"SK"} = "165 004";
- X$xrom{"SM"} = "165 055";
- X$xrom{"SR"} = "165 000";
- X$xrom{"SU"} = "162 167";
- X$xrom{"SV"} = "165 010";
- X$xrom{"SX"} = "162 184";
- X$xrom{"T1"} = "162 175";
- X$xrom{"TB"} = "165 018";
- X$xrom{"TN"} = "162 160";
- X$xrom{"UD"} = "162 136";
- X$xrom{"UG"} = "165 044";
- X$xrom{"VA"} = "162 135";
- X$xrom{"VF"} = "165 058";
- X$xrom{"VK"} = "162 164";
- X$xrom{"VM"} = "162 154";
- X$xrom{"VS"} = "162 158";
- X$xrom{"XD"} = "162 153";
- X$xrom{"XE"} = "162 147";
- X$xrom{"XL"} = "165 057";
- EEE_OOO_FFF
- echo x - rom/ppc.rom
- sed -e 's/^X//' >printer.rom <<'EEE_OOO_FFF'
- X$xrom{"ACA"} = "167 065";
- X$xrom{"ACCHR"} = "167 066";
- X$xrom{"ACCOL"} = "167 067";
- X$xrom{"ACSPEC"} = "167 068";
- X$xrom{"ACX"} = "167 069";
- X$xrom{"BLDSPEC"} = "167 070";
- X$xrom{"LIST"} = "167 071";
- X$xrom{"PRA"} = "167 072";
- X$xrom{"PRAXIS"} = "167 073";
- X$xrom{"PRBUF"} = "167 074";
- X$xrom{"PRFLAGS"} = "167 075";
- X$xrom{"PRKEYS"} = "167 076";
- X$xrom{"PRP"} = "167 077";
- X$xrom{"PRPLOT"} = "167 078";
- X$xrom{"PRPLOTP"} = "167 079";
- X$xrom{"PRREG"} = "167 080";
- X$xrom{"PRREGX"} = "167 081";
- X$xrom{"PR~"} = "167 082";
- X$xrom{"PRSTK"} = "167 083";
- X$xrom{"PRX"} = "167 084";
- X$xrom{"REGPLOT"} = "167 085";
- X$xrom{"SKPCHR"} = "167 086";
- X$xrom{"SKPCOL"} = "167 087";
- X$xrom{"STKPLOT"} = "167 088";
- EEE_OOO_FFF
- echo x - rom/printer.rom
- sed -e 's/^X//' >time.rom <<'EEE_OOO_FFF'
- X$xrom{"ADATE"} = "166 129";
- X$xrom{"ALMCAT"} = "166 130";
- X$xrom{"ALMNOW"} = "166 131";
- X$xrom{"ATIME"} = "166 132";
- X$xrom{"ATIME24"} = "166 133";
- X$xrom{"CLK12"} = "166 134";
- X$xrom{"CLK24"} = "166 135";
- X$xrom{"CLKT"} = "166 136";
- X$xrom{"CLKTD"} = "166 137";
- X$xrom{"CLOCK"} = "166 138";
- X$xrom{"CORRECT"} = "166 139";
- X$xrom{"DATE"} = "166 140";
- X$xrom{"DATE+"} = "166 141";
- X$xrom{"DDAYS"} = "166 142";
- X$xrom{"DMY"} = "166 143";
- X$xrom{"DOW"} = "166 144";
- X$xrom{"MDY"} = "166 145";
- X$xrom{"RCLAF"} = "166 146";
- X$xrom{"RCLSW"} = "166 147";
- X$xrom{"RUNSW"} = "166 148";
- X$xrom{"SETAF"} = "166 149";
- X$xrom{"SETDATE"} = "166 150";
- X$xrom{"SETSW"} = "166 151";
- X$xrom{"STOPSW"} = "166 152";
- X$xrom{"SW"} = "166 153";
- X$xrom{"T+X"} = "166 154";
- X$xrom{"TIME"} = "166 155";
- X$xrom{"XYZALM"} = "166 156";
- EEE_OOO_FFF
- echo x - rom/time.rom
- sed -e 's/^X//' >wand.rom <<'EEE_OOO_FFF'
- X$xrom{"WNDDTA"} = "166 193";
- X$xrom{"WNDDTX"} = "166 194";
- X$xrom{"WNDLNK"} = "166 195";
- X$xrom{"WNDSUB"} = "166 196";
- X$xrom{"WNDSCN"} = "166 197";
- X$xrom{"WNDTST"} = "166 198";
- EEE_OOO_FFF
- echo x - rom/wand.rom
- test -d test || mkdir test
- sed -e 's/^X//' >README <<'EEE_OOO_FFF'
- XThese file were used to test the correct operation of the assembler.
- XThey should be used to check out local changes you may make to the
- Xperl scripts. Every operator is checked. See the comments at the
- Xfront of each file of information on how to run each test.
- EEE_OOO_FFF
- echo x - test/README
- sed -e 's/^X//' >numbers.test <<'EEE_OOO_FFF'
- X# this test sould be run once with -n and once without
- X# without -n the 000* should not be there
- X.prog number-test
- X'123456789' # 000* 017 018 019 020 021
- X # 022 023 024 025
- X'1.2' # 000 017 026 018
- X'1.2e2' # 000 017 026 018 027 018
- X'1.2E2' # 000 017 026 018 027 018
- X'-1.2e-2' # 000 028 017 026 018 027
- X # 028 018
- X+ # 064
- X'E-10' # 000* 027 028 017 016
- X+ # 064
- X'-E-1' # 000* 028 027 028 017
- X'E12' # 000 028 027 018
- X.data '1.234e-4' input value
- EEE_OOO_FFF
- echo x - test/numbers.test
- sed -e 's/^X//' >rom.test <<'EEE_OOO_FFF'
- X# note that this test needs to be invoked
- X# as "asm41c -X -r wand"
- X.xrom foo 11 13
- X.rom math
- X.prog rom-test
- XSWPT # 166 163
- XCLOCK # 166 138
- XWNDDTA # 166 193
- XC+ # 160 080
- Xfoo # 162 205
- X.exec call foo
- Xfoo
- X.clear roms # test of clear rom tables
- X.exec call foo
- Xfoo # error & null = 000
- EEE_OOO_FFF
- echo x - test/rom.test
- sed -e 's/^X//' >single.test <<'EEE_OOO_FFF'
- X.prog single-test
- XNULL # 000
- X+ # 064
- X- # 065
- X* # 066
- X/ # 067
- XX<Y? # 068
- XX>Y? # 069
- XX<=Y? # 070
- XSIG+ # 071
- XSIG- # 072
- XHMS+ # 073
- XHMS- # 074
- XMOD # 075
- X% # 076
- X%CH # 077
- XP->R # 078
- XR->P # 079
- XLN # 080
- X.title test new title
- X.page # sneak test of .page
- X.prog private single-test2
- XX^2 # 081
- XSQRT # 082
- XY^X # 083
- XCHS # 084
- XE^X # 085
- XLOG # 086
- X10^X # 087
- XE^X-1 # 088
- XSIN # 089
- XCOS # 090
- XTAN # 091
- XASIN # 092
- XACOS # 093
- XATAN # 094
- X->DEC # 095
- X1/X # 096
- XABS # 097
- XFACT # 098
- XX!=0? # 099
- XX>0? # 100
- XLN1+X # 101
- XX<0? # 102
- XX=0? # 103
- XINT # 104
- XFRC # 105
- XD->R # 106
- XR->D # 107
- X->HMS # 108
- X->HR # 109
- XRND # 110
- X->OCT # 111
- XCLSIG # 112
- XX<>Y # 113
- XPI # 114
- XCLST # 115
- XR^ # 116
- XRDN # 117
- XLASTX # 118
- XCLX # 119
- XX=Y? # 120
- XX!=Y? # 121
- XSIGN # 122
- XX<=0? # 123
- XMEAN # 124
- XSDEV # 125
- XAVIEW # 126
- XCLD # 127
- XDEG # 128
- XRAD # 129
- XGRAD # 130
- XENTER^ # 131
- XSTOP # 132
- XRTN # 133
- XBEEP # 134
- XCLA # 135
- XASHF # 136
- XPSE # 137
- XCLRG # 138
- XAOFF # 139
- XAON # 140
- XOFF # 141
- XPROMPT # 142
- XADV # 143
- XLBL 0 # 001
- XLBL 7 # 008
- XLBL 14 # 015
- XSTO 0 # 048
- XSTO 7 # 055
- XSTO 15 # 063
- XRCL 0 # 032
- XRCL 7 # 039
- XRCL 15 # 047
- XBYTE 0 # 000
- XBYTE 127 # 127
- XBYTE 377 # 121
- EEE_OOO_FFF
- echo x - test/single.test
- sed -e 's/^X//' >string.test <<'EEE_OOO_FFF'
- X# test various thing with string args
- X.prog string-test
- X"abcdefg" # 247 097 098 099 100 101
- X # 102 103
- X"123456789012345" # 255 049 050 051 052 053
- X # 054 055 056 057 048 049
- X # 050 051 052 053
- X"" # 240
- X"12345678901234567890" # trunc error
- X # 255 049 050 051 052 053
- X # 054 055 056 057 048 049
- X # 050 051 052 053
- X"\000\001\127\255\128" # 245 000 001 127 255 128
- X"\x00\x01\x7f\xff\x80" # 245 000 001 127 255 128
- X"\-\=\S\M\L\P\A" # 248 127 029 126 012 013
- X # 123 125
- XLBL "abcde" # 192 000 246 000 097 098
- X # 099 100 101
- XGTO "abcde" # 029 245 097 098 099 100
- X # 101
- XXEQ "abcde" # 030 245 097 098 099 100
- X # 101
- XW "abcde" # 031 245 097 098 099 100
- X # 101
- X.string "abcdefg" test string
- X # 097 098 099 100 101 102
- X # 103
- EEE_OOO_FFF
- echo x - test/string.test
- sed -e 's/^X//' >symbol.test <<'EEE_OOO_FFF'
- X# test out predefined and user define symbols
- X.prog symbol-test
- XRCL A # 144 102
- XRCL B # 144 103
- XRCL C # 144 104
- XRCL D # 144 105
- XRCL E # 144 106
- XRCL F # 144 107
- XRCL G # 144 108
- XRCL H # 144 109
- XRCL I # 144 110
- XRCL J # 144 111
- XRCL T # 144 112
- XRCL Z # 144 113
- XRCL Y # 144 114
- XRCL X # 144 115
- XRCL L # 144 116
- XRCL M # 144 117
- XRCL N # 144 118
- XRCL O # 144 119
- XRCL P # 144 120
- XRCL Q # 144 121
- XRCL R # 144 122
- XRCL a # 144 123
- XRCL b # 144 124
- XRCL c # 144 125
- XRCL d # 144 126
- XRCL e # 144 127
- XRCL foo # error undefined symbol & 032
- X.define foo 100
- X.define bar 127
- X.define gorf foo
- X.prog symbol-test2
- XRCL foo # 144 100
- XRCL bar # 144 127
- XRCL gorf # 144 100
- X.clear names
- X.prog symbol-test3
- XRCL e # 144 127
- XRCL gorf # error undefined symbol & 032
- X
- EEE_OOO_FFF
- echo x - test/symbol.test
- sed -e 's/^X//' >three.test <<'EEE_OOO_FFF'
- X# test out tree byte op codes
- X.prog three-byte-test
- XEND # 192 000 009
- XGTO 100 # 208 000 100
- XGTO3 0 # 208 000 000
- XXEQ 100 # 224 000 100
- XXEQ 0 # 224 000 000
- EEE_OOO_FFF
- echo x - test/three.test
- sed -e 's/^X//' >twobyte.test <<'EEE_OOO_FFF'
- X# test out two byte op codes
- X.prog two-byte-test
- XRCL 100 # 144 100
- XSTO 100 # 145 100
- XRCL2 0 # 144 000
- XSTO2 0 # 145 000
- XST+ 0 # 146 000
- XST- 0 # 147 000
- XST* 0 # 148 000
- XST/ 0 # 149 000
- XISG 0 # 150 000
- XDSE 0 # 151 000
- XVIEW 0 # 152 000
- XSIGREG 0 # 153 000
- XASTO 0 # 154 000
- XARCL 0 # 155 000
- XFIX 0 # 156 000
- XSCI 0 # 157 000
- XENG 0 # 158 000
- XTONE 0 # 159 000
- XSF 0 # 168 000
- XCF 0 # 169 000
- XFS?C 0 # 170 000
- XFC?C 0 # 171 000
- XFS? 0 # 172 000
- XFC? 0 # 173 000
- XSPARE1 0 # 175 000
- XSPARE2 0 # 176 000
- XX<> 0 # 206 000
- XLBL2 0 # 207 000
- XGTO 0 # 177 000
- XGTO 7 # 184 000
- XGTO 14 # 191 000
- XGTO IND 0 # 174 000
- XXEQ IND 0 # 174 128
- XRCL IND 0 # 144 128
- XXROM 11 13 # 162 205
- EEE_OOO_FFF
- echo x - test/twobyte.test
- sed -e 's/^X//' >test.41c <<'EEE_OOO_FFF'
- X.prog test # comment
- XLBL "A"
- XENTER^
- XLN
- X+
- XXEQ IND 000
- XSTO M
- XRTN
- X"ABCDEFG"
- X"\-\002hij"
- X'-1.234e-8'
- X
- EEE_OOO_FFF
- echo x - test/test.41c
- test -d tmac || mkdir tmac
- sed -e 's/^X//' >README <<'EEE_OOO_FFF'
- XThe following macros are defined in the tmac.*bar files:
- X
- X.Sb "Label"
- X
- XStart a line of barcode labeled with Label (for programs this label usually
- Xlooks something like "Line 1 (1 - 3)"). This macro automatically does a
- X.ne directive to assure that the line of barcode, its label and tags if any
- Xremain on the same page.
- X
- X.By Value
- X
- XEach byte of a line of barcode is specified by one of these macro calls.
- XValue should be between 0 and 256 inclusive.
- X
- X.Eb [1]
- X
- XEnd a line of bar code. if the optional argument is non-zero then each
- Xbyte of the line is taged with its value (in a tiny pointsize) just
- Xbelow the bars
- X
- XThe following macro calls are generated but are not defined.
- XSuitable definitions can be supplied by the user.
- X
- X.Tl "Title"
- X
- XEach asm41c .title directive (or -t flag) or bar41c title directive
- Xgenerates this call.
- X
- X.Pg "Program Name"
- X
- XA call of this type is generated before the barcode for each
- Xasm41c .prog or bar41c program directive.
- X
- XThe following macro, number or string register names are used in these
- Xmacro definitions:
- X
- XAd B0 B1 B2 B3 B4 B5 B6 B7 Bb Bs Bt By Eb Fi Sb b0 b1
- EEE_OOO_FFF
- echo x - tmac/README
- sed -e 's/^X//' >tmac.lwbar <<'EEE_OOO_FFF'
- X.ds b0 \(bv\(bv \"do not remove this comment
- X.ds b1 \(bv\(bv\(bv\(bv \"do not remove this comment
- X.de Sb
- X.ne 0.75i
- X.nf
- X.nr Bs \\n(.s
- X.nr Ad \\n(.j
- X.nr Fi \\n(.u
- X.ps 8
- X\\$1
- X.sp 0.5v
- X.ps 18
- X.cs R 1
- X\\*(b0\\*(b0\\c
- X.cs R
- X.rm Bt
- X..
- X.de By
- X.ps 6
- X.am Bt ..
- X\\\\h'|\\n(.ku-\\\\n(.ku-1.1p'\(br \\$1\\\\c
- X...
- X.nr B7 (\\$1/128%2)
- X.nr B6 (\\$1/64%2)
- X.nr B5 (\\$1/32%2)
- X.nr B4 (\\$1/16%2)
- X.nr B3 (\\$1/8%2)
- X.nr B2 (\\$1/4%2)
- X.nr B1 (\\$1/2%2)
- X.nr B0 (\\$1%2)
- X.ps 18
- X.cs R 1
- X.di Bb
- X\\\\*(b\\n(B7\\\\*(b\\n(B6\\\\*(b\\n(B5\\\\*(b\\n(B4\\\\c
- X\\\\*(b\\n(B3\\\\*(b\\n(B2\\\\*(b\\n(B1\\\\*(b\\n(B0\\\\c
- X.di
- X.Bb
- X.cs R
- X..
- X.de Eb
- X.ps 18
- X.cs R 1
- X\*(b1\*(b0
- X.cs R
- X.ie '\\$1'1' \\{\\
- X.ps 6
- X.\".sp 0.05v
- X.Bt
- X.sp 0.1v
- X'br \\}
- X.el .sp 0.2v
- X.ps \\n(Bs
- X.if \\n(Fi .fi
- X.ad \\n(Ad
- X..
- EEE_OOO_FFF
- echo x - tmac/tmac.lwbar
- sed -e 's/^X//' >tmac.vbar <<'EEE_OOO_FFF'
- X.ds b0 \(bv \"do not remove this comment
- X.ds b1 \(bv\(bv \"do not remove this comment
- X.de Sb
- X.ne 0.75i
- X.nf
- X.nr Bs \\n(.s
- X.nr Ad \\n(.j
- X.nr Fi \\n(.u
- X.ps 8
- X\\$1
- X.sp 0.6v
- X.ps 18
- X.cs R 3
- X\\*(b0\\*(b0\\c
- X.cs R
- X.rm Bt
- X..
- X.de By
- X.ps 6
- X.am Bt ..
- X\\\\h'|\\n(.ku-\\\\n(.ku-1.5p'\(br \\$1\\\\c
- X...
- X.nr B7 (\\$1/128%2)
- X.nr B6 (\\$1/64%2)
- X.nr B5 (\\$1/32%2)
- X.nr B4 (\\$1/16%2)
- X.nr B3 (\\$1/8%2)
- X.nr B2 (\\$1/4%2)
- X.nr B1 (\\$1/2%2)
- X.nr B0 (\\$1%2)
- X.ps 18
- X.cs R 3
- X.di Bb
- X\\\\*(b\\n(B7\\\\*(b\\n(B6\\\\*(b\\n(B5\\\\*(b\\n(B4\\\\c
- X\\\\*(b\\n(B3\\\\*(b\\n(B2\\\\*(b\\n(B1\\\\*(b\\n(B0\\\\c
- X.di
- X.Bb
- X.cs R
- X..
- X.de Eb
- X.ps 18
- X.cs R 3
- X\*(b1\*(b0
- X.cs R
- X.ie '\\$1'1' \\{\\
- X.ps 6
- X.sp 0.05v
- X.Bt
- X.sp 0.1v
- X'br \\}
- X.el .sp 0.2v
- X.ps \\n(Bs
- X.if \\n(Fi .fi
- X.ad \\n(Ad
- X..
- EEE_OOO_FFF
- echo x - tmac/tmac.vbar
- exit 0
-
- --
- Mark Biggar
- {allegra,burdvax,cbosgd,hplabs,ihnp4,akgua,sdcsvax}!sdcrdcf!markb
- markb@rdcf.sm.unisys.com
-
-
-