
Received: from kestrel by gos.Ukc.AC.UK   Over Ring with SMTP  id aa00221;
          24 Oct 87 16:41 BST
Received: from mcvax by kestrel.Ukc.AC.UK   with authorised UUCP  id aa01646;
          24 Oct 87 16:36 BST
Received: by mcvax.cwi.nl; Sat, 24 Oct 87 04:39:39 +0100 (MET)
Received: from amdahl.UUCP by uunet.UU.NET (5.54/1.14) with UUCP 
	id AA12571; Fri, 23 Oct 87 17:01:53 EDT
Received: by amdahl.UUCP (4.12/UTS580_/\o-/\)
	id AA02754; Fri, 23 Oct 87 13:10:50 PDT
Received: by pyramid.UUCP (5.51/OSx4.0b-870424)
	id AA09925; Fri, 23 Oct 87 13:02:30 PDT
Received: from bullwinkle.weitek.uucp (bullwinkle.ARPA) by weitek.UUCP (4.12/4.7)
	id AA14501; for amdahl!uunet!mcvax!ukc!ejw; Fri, 23 Oct 87 13:01:45 pdt
Return-Path: <mahar@bullwinkle>
Received: by bullwinkle.weitek.uucp (3.2/SMI-3.2)
	id AA20098; for amdahl!uunet!mcvax!ukc!mg@pyramid.uucp; Fri, 23 Oct 87 13:02:05 PDT
Date: Fri, 23 Oct 87 13:02:05 PDT
From: Mike Mahar <mahar@bullwinkle.weitek.uucp>
Message-Id: <8710232002.AA20098@bullwinkle.weitek.uucp>
To: mikema@cwi.nl, ejw@ukc.ac.uk, mg@ukc.ac.uk
Subject: Re:  URISC Macro & Processor (?)


     1) If this is your original work may we refer to this in our design
        report?

	No, The original work was done by Mike Albaugh of Atari Games.
     2) If not, do you know who originated the idea and how can we
        contact them?

	He is not on the net but his address is:
		Mike Albaugh
		301 Merz Ct.
		Milpitas, CA. USA
			95035

     3) Has any other work been done on this idea, specifically;

	Mike has done additional work on the urisc idea. He is happy
	to share his notes with you.

     4) Have any performance studies been carried out?

	Some not very formal work has been done on performance.

     5) Has the idea been translated into hardware and are details of
        this available?

	He has a design that has been simulated. He has notes on 
	interruptability an bit addressability.

     6) Has any of this work been published, if so where might we obtain
        copies of the same?

	Nothing formal has been published.

    Just in case you missed it, I'm sending a new copy of the macro list.

			Mike

Newsgroups: net.arch
Path: decwrl!amdcad!cae780!weitek!fear!mahar
Subject: urisc macro package
Posted: 16 Mar 86 21:15:10 GMT
Organization: Weitek Corp. Sunnyvale Ca.
Keywords: risc, minimum instruction size
 
Several people  have  asked  me to mail them or post the macro package for a
one instruction machine call urisc. Ultimate risc. The instruction is:

Reverse subtract  and skip if borrow. The accumulator is subtracted from the
memory  location  and the next instruction is skipped is there was a borrow.
The result is stored in both the accumulator and the memory location. The PC
is memory location 0.
 
I tried  to  respond  to  these  by  mail, but about half of them came back.
Several  people  thought  this  might be of general interest and asked me to
post it. So, here it is.
 
The original  work  on this package was done by Mike Albaugh of Atari Games.
He gave me the macros over the phone so any errors are probably mine.

Mike Mahar
 
----------------------------------------------------------------------------

The ADDRESS  macro  takes  two operands. A word of memory is allocated which
contains  the  difference  between the two operands. If the first operand is
less then the second operand 1 is subtracted from result. The address of the
memory word is the instruction emitted.
 
macro clr %p1		;clear accumulator and memory
	%p1		; accessing the same location three
	%p1		; times clears it and acc
	%p1
endmacro
 
macro mov %p1,%p2	;mov data from p1 to p2
	clr %p2		; clear destination and acc
	scratch		; load scratch to accumulator
	scratch		; clear scratch and acc note: no skip here
	%p1		; load p1 into acc (acc = p1 - 0)
	scratch		; scratch,acc = 0 - p1 or -p1
	scratch		; skipped always or 0
	%p2		; p2 = p2 - (-p1) p2 was zero acc was -p1
	scratch		; skipped always or 0
endmacro
 
macro jmp %p1		;jmp to label p1
	clr scratch	; clear the scratch area
	ADDRESS %next,%p1 ; ADDRESS is a pointer to a location
			; containing the expression. If p1 is lss then
			; next subtract 1 from expression.
			; acc contains the difference between the label
			; and the current pc
%next:	pc		; pc = pc - offset (branch)
endmacro
 
macro zajmp %p1		;jmp to label p1 if acc is zero. zero = 0 
	zero		; zero,acc = zero - 0; zero,acc = zero - #
	ADDRESS %p1,%next ;acc = p1 - next	   ; skipped
	zero		; zero - (p1 - next)	; zero - zero = 0
	zero		; skipped		; zero - 0 = 0
%next:	pc		; pc = pc - offset	; pc = pc - 0
endmacro
 
macro zjmp %p1,%p2	;jmp to p2 if p1 = 0
	clr	zero	; make location zero = 0
	%p1		; load p1
	zajmp %p1	; jmp if acc zero
endmacro
 
sub %p1,%p2		;p2 = p2 - p1
	clr scratch	; clear scratch,acc
	%p1		; load p1
	%p2		; p2,acc = p2 - p1
	scratch		; skip if borrow
	scratch		; 
endmacro
 
add %p1,%p2		;p2 = p1 + p2
	clr scratch2
	%p1
	scratch2	; scratch = -p1
	sub scratch2,%p2
endmacro
 

