On Mon, Apr 05, 1999 at 02:07:12AM +0200, Daniel Feiglin wrote:
> Oh, tush!
> 
> And do any of you /real/programmers recall RSX 11 sysgens?
I do!! I do!! (Well, actually, not the real thing but Eastern-block ripoffs of
it).  I even was hired to do a sysgen!
> SET TTY=/COFFEEBREAK
Eh, gotcha! Shouldn't it be  'SET /COFFEEBREAK=TI:'?
I wrote a version of tetris in assembly for it! I could crack priveleged
access on it! I think I even remember some opcodes! Let's see, in octal, of
course,
010102 : MOV R1,R2       ;copy value of R1 in R2
011102 : MOV (R1),R2     ;copy word at address pointed by R1 into R2
111102 : MOVB (R1),R2    ;-"- byte -"-.................
012102 : MOV (R1)+,R2    ; copy word at address pointed by R1 into R2 and
                         ;increment R1 by its size (2)
                         ; probably inspired *p++ construct in C
013102 : MOV @(R1)+,R2   ; *(*p++) 
014102 : MOV -(R1),R2    ; note, that decrement, unlike increment, is done
                         ; before operation (like *--p, not *p--)
015212 : MOV @-(R2),(R3)
023102 : ADD @(R1)+,R2   ; add first operand to second
033102 : BIC @(R1)+,R2   ; clear bitmask specified by first operand in second
                         ; operand (i.e. AND NOT)
043102 : BIS @(R1)+,R2   ; set -"- ... -"- (i.e. or )
016212 <foo> : MOV foo(R2),(R3)
017212 <foo> : MOV @foo(R2),(R3)
This illustrates all 7 basic addressing modes. Since R7 is program counter, we
have additional modes by using it as addressing register, e.g.:
012700 foo: MOV #foo,R0; constant
013700 foo: MOV @#foo,R0 ; absolute address.
016700 foo: MOV bar,R0 ; relative address: bar = foo + address of next
                       ; instruction
016700 foo: MOV @bar,R0; indirect relative address:

Also,IIRC:
000000 : HALT
000001 : WAIT
000004 : IOT ; What do you quiche eaters think SIGIOT stands for?
000005 : RESET
Which prize do I get?

Reply via email to