mirror of
https://github.com/livingcomputermuseum/Darkstar.git
synced 2026-02-28 09:37:43 +00:00
39 lines
12 KiB
Plaintext
39 lines
12 KiB
Plaintext
head 1.1;
|
|
branch 1.1.1;
|
|
access ;
|
|
symbols start:1.1.1.1 Xerox:1.1.1;
|
|
locks ; strict;
|
|
comment @# @;
|
|
|
|
|
|
1.1
|
|
date 2001.08.12.22.22.28; author freier; state Exp;
|
|
branches 1.1.1.1;
|
|
next ;
|
|
|
|
1.1.1.1
|
|
date 2001.08.12.22.22.28; author freier; state Exp;
|
|
branches ;
|
|
next ;
|
|
|
|
|
|
desc
|
|
@@
|
|
|
|
|
|
|
|
1.1
|
|
log
|
|
@Initial revision
|
|
@
|
|
text
|
|
@{
|
|
File name StringField.mc
|
|
Description: Mesa String op-codes
|
|
Author: don DXC
|
|
Created: February 26, 1980
|
|
AXD 15-Jun-83 18:37:12 New instruction set
|
|
JGS November 2, 1981 4:06 PM New instruction set
|
|
Last edited: DXC , April 8, 1980 5:44 PM
|
|
Last edited: R. RXG , April 8, 1980 7:09 PM
|
|
Last edited: RXJ , March 13, 1981 5:43 PM
|
|
Last edited: DEG , 1-Sep-84 19:51:32 add copyright notice
|
|
}
|
|
|
|
{ Copyright (C) 1980, 1981 by Xerox Corporation. All rights reserved.}
|
|
|
|
|
|
|
|
{
|
|
RS Read String
|
|
RLS Read Long String
|
|
|
|
WS Write String
|
|
WLS Write Long String
|
|
|
|
R0F Read Zero Field
|
|
RF Read Field
|
|
RCFS Read Code Field Stack (ESC opcode)
|
|
RL0F Read Long Zero Field
|
|
RLF Read Long Field
|
|
RLFS Read Long Field Stack
|
|
RLIPF Read Local Indirect Pair Field
|
|
RLILPF Read Local Indirect Long Pair Field
|
|
|
|
W0F Write Zero Field
|
|
WF Write Field
|
|
WL0F Write Long Zero Field
|
|
WLF Write Long Field
|
|
WLFS Write Long Field Stack
|
|
WS0F Write Swapped Zero Field
|
|
|
|
PS0F Put Swapped Zero Field
|
|
PSF Put Swapped Field
|
|
PSLF Put Swapped Long Field
|
|
}
|
|
|
|
{*****************************************************************************
|
|
RS
|
|
*****************************************************************************}
|
|
|
|
@@RS: T ¬ TOS{inx} + ib, c1, opcode[141'b];
|
|
Q ¬ STK{ptr}, pop, L1¬L1.Push, c2;
|
|
TT ¬ RShift1 T, pop, c3;
|
|
|
|
Map ¬ Q ¬ [rhMDS,TT + Q], push, c1;
|
|
rhTT ¬ UvMDS, c2;
|
|
RSa: Rx ¬ rhRx ¬ MD, XRefBr, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], L0¬L0.RS, BRANCH[RSMUD,$], c1, RLMFRet[L0.RS];
|
|
PC ¬ PC + 1, Xbus ¬ T LRot4, XRefBr, c2;
|
|
TOS ¬ MD, BRANCH[RSb,RSc], c3;
|
|
|
|
RSc: TOS ¬ TOS and 0FF, GOTO[IBDispOnly], c1;
|
|
RSb: TOS ¬ TOS and ~0FF, c1;
|
|
TOS ¬ TOS LRot8, IBDisp, GOTO[DISPNIonly], c2;
|
|
|
|
RSMUD: CALL[RLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
RLS
|
|
*****************************************************************************}
|
|
|
|
@@RLS: T ¬ TOS{inx} + ib, CarryBr, L3¬0, c1, opcode[142'b];
|
|
rhTT ¬ STK{ptrH}, BRANCH[RLSa,RLSb], c2;
|
|
RLSa: Rx ¬ RShift1 T, SE¬0, pop, GOTO[RLSc], c3;
|
|
RLSb: Rx ¬ RShift1 T, SE¬1, pop, GOTO[RLSc], c3;
|
|
|
|
RLSc: TT ¬ STK{ptrL}, pop, L2¬L2.xSL, c1;
|
|
TT ¬ TT + Rx, CarryBr, L1¬L1.Push2, c2;
|
|
RLSf: fXpop, push, BRANCH[RLSd, RLSe], c3;
|
|
|
|
RLSe: CALL[VAHiInc], c1;
|
|
|
|
RLSd: Map ¬ Q ¬ [rhTT,TT], L3Disp, c1, VAHiRet[L2.xSL];
|
|
TT ¬ 0FF, BRANCH[RSa, WLSc], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WS
|
|
*****************************************************************************}
|
|
|
|
@@WS: T ¬ TOS{inx} + ib, L0¬L0.WS, c1, opcode[143'b];
|
|
Q ¬ STK{ptr}, L1¬L1.Push, c2;
|
|
TT ¬ RShift1 T, c3;
|
|
|
|
Map ¬ Q ¬ [rhMDS,TT + Q], c1;
|
|
TT ¬ 0FF, c2;
|
|
Rx ¬ rhRx ¬ MD, XDirtyDisp, pop, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], BRANCH[WSMUD,$,1], c1, WMFRet[L0.WS];
|
|
PC ¬ PC + 1, c2;
|
|
WSa: TOS ¬ MD, Ybus ¬ T, YDisp, c3;
|
|
|
|
T ¬ STK and TT, pop, BRANCH[WSl, WSr, 0E], c1;
|
|
WSl: T ¬ T LRot8, c2;
|
|
TOS ¬ TOS and TT, GOTO[WSb], c3;
|
|
|
|
WSr: TOS ¬ TOS and ~TT, c2;
|
|
Noop, GOTO[WSb], c3;
|
|
|
|
WSb: MAR ¬ [rhRx,Q + 0], c1;
|
|
MDR ¬ TOS or T, IBDisp, GOTO[SLa], c2;
|
|
|
|
WSMUD: CALL[WMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLS
|
|
*****************************************************************************}
|
|
|
|
@@WLS: T ¬ TOS{inx} + ib, CarryBr, L3¬1, c1, opcode[144'b];
|
|
rhTT ¬ STK{ptrH}, BRANCH[RLSa,RLSb], c2;
|
|
|
|
WLSc: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], L0¬L0.WLS, BRANCH[WLSMUD,$,1], c1, WLMFRet[L0.WLS];
|
|
PC ¬ PC + 1, GOTO[WSa], c2;
|
|
|
|
WLSMUD: CALL[WLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
R0F
|
|
*****************************************************************************}
|
|
|
|
@@R0F: TT ¬ TOS, L1¬L1.Dec, c1, opcode[145'b];
|
|
rhTT ¬ UvMDS, c2;
|
|
R0Fa: PC ¬ PC + PC16, GOTO[RFa], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
RF
|
|
*****************************************************************************}
|
|
|
|
@@RF: TT ¬ TOS + ib{alpha}, L1¬L1.Dec2, c1, opcode[146'b];
|
|
rhTT ¬ UvMDS, c2;
|
|
PC ¬ PC + 1, c3;
|
|
|
|
RFa: Map ¬ Q ¬ [rhTT,TT], L0¬L0.RF, c1, IPRet[L0.RLIPF];
|
|
T ¬ fd.pos, pop, c2;
|
|
Rx ¬ rhRx ¬ MD, XRefBr, push, c3;
|
|
|
|
RFc: MAR ¬ [rhRx,Q + 0], BRANCH[RFMUD,$], c1, RLMFRet[L0.RF];
|
|
T ¬ T + ib{fd.size} + 1, rhT ¬ ib{fd.size}, c2;
|
|
RFd: T ¬ MD{data}, Ybus ¬ T{shift}, YDisp, L2¬L2.RF, c3;
|
|
|
|
RFe: TT ¬ LRot1 T, DISP4[CycleMask], c1;
|
|
|
|
{CycleMask Subroutine Here}
|
|
|
|
RFf: TOS ¬ TOS and TT, IBDisp, GOTO[NegNI], c2, at[L2.RF,10,MaskRet];
|
|
|
|
RFMUD: CALL[RLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
RL0F
|
|
*****************************************************************************}
|
|
|
|
@@RL0F: TT ¬ STK{ptrL}, pop, L1¬L1.PushDec, c1, opcode[147'b];
|
|
rhTT ¬ TOS{ptrH} LRot0, GOTO[R0Fa], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
RLF
|
|
*****************************************************************************}
|
|
|
|
@@RLF: TT ¬ STK{ptrL}, pop, L1¬L1.PushDec2, c1, opcode[150'b];
|
|
TT ¬ TT + ib{alpha}, CarryBr, L2¬L2.RLF, c2;
|
|
rhTT ¬ TOS{ptrH} LRot0, BRANCH[RLFa,RLFb], c3;
|
|
|
|
RLFb: CALL[VAHiInc], c1;
|
|
|
|
RLFa: PC ¬ PC + 1, c1, VAHiRet[L2.RLF];
|
|
RLFc: Noop, c2;
|
|
GOTO[RFa], c3, ILPRet[L0.RLILPF];
|
|
|
|
|
|
{*****************************************************************************
|
|
RLFS
|
|
*****************************************************************************}
|
|
|
|
@@RLFS: T ¬ TOS{desc} LRot8, L1¬L1.Push2, c1, opcode[151'b];
|
|
T ¬ 0FF and T{desc.offset}, c2;
|
|
rhTT ¬ STK{ptrH}, pop, c3;
|
|
|
|
RLFSc: TT ¬ STK{ptrL}, pop, L2¬L2.RLFS, c1;
|
|
TT ¬ TT + T, CarryBr, c2;
|
|
BRANCH[RLFSa,RLFSb], c3;
|
|
|
|
RLFSb: CALL[VAHiInc], c1;
|
|
|
|
RLFSa: Map ¬ Q ¬ [rhTT,TT], L0¬L0.RLFS, c1, VAHiRet[L2.RLFS];
|
|
T ¬ TOS LRot12 + TOS + 1, LOOPHOLE[niblTiming], pop, c2;
|
|
Rx ¬ rhRx ¬ MD, XRefBr, push, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], BRANCH[RLFSMUD,$], c1, RLMFRet[L0.RLFS];
|
|
rhT ¬ TOS{desc.size} LRot0, GOTO[RFd], c2;
|
|
|
|
RLFSMUD:
|
|
CALL[RLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
RCFS
|
|
*****************************************************************************}
|
|
|
|
@@RCFS: TT ¬ UvC, L1¬L1.PushDec, c1, at[0A,10,ESC1n];
|
|
T ¬ TOS LRot8, c2;
|
|
T ¬ 0FF and T, c3;
|
|
|
|
T ¬ TT + T, c1;
|
|
rhTT ¬ UvChigh, c2;
|
|
PC ¬ PC - PC16, GOTO[RLFSc], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
RLIPF
|
|
*****************************************************************************}
|
|
|
|
@@RLIPF: MAR ¬ Q ¬ [rhL, L+alpha.left], L0¬L0.RLIPF, push, c1, opcode[152'b];
|
|
STK ¬ TOS, PC ¬ PC + 1, L2¬L2.LIP, BRANCH[LIPa,LIPb,1], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
RLILPF
|
|
*****************************************************************************}
|
|
|
|
@@RLILPF:
|
|
MAR ¬ Q ¬ [rhL, L+alpha.left], L0¬L0.RLILPF, push, c1, opcode[153'b];
|
|
STK ¬ TOS, PC ¬ PC + 1, L2¬L2.LILP0, BRANCH[LILPa,LILPb,1], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
W0F
|
|
*****************************************************************************}
|
|
|
|
@@W0F: TT ¬ TOS, push, L1¬L1.Dec, c1, opcode[154'b];
|
|
STK ¬ TOS, pop, PC ¬ PC + PC16, c2;
|
|
rhTT ¬ UvMDS, GOTO[WFb], c3;
|
|
|
|
{*****************************************************************************
|
|
WF
|
|
*****************************************************************************}
|
|
|
|
@@WF: TT ¬ TOS + ib{alpha}, push, L1¬L1.Dec2, c1, opcode[155'b];
|
|
STK ¬ TOS, pop, c2;
|
|
rhTT ¬ UvMDS, GOTO[WLFa], c3;
|
|
|
|
WFb: Map ¬ uTTemp ¬ Q ¬ [rhTT, TT], c1;
|
|
T ¬ STK, c2;
|
|
WFd: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], L0¬L0.WF, BRANCH[WFMUD,$,1], c1, WLMFRet[L0.WF];
|
|
TOS ¬ ib{fd}, pop, c2;
|
|
WFc: Q ¬ MD{data}, c3;
|
|
|
|
Xbus ¬ ~TOS LRot12, XDisp, c1;
|
|
Xbus ¬ L2.WF0, XDisp, DISP4[MaskTbl], c2;
|
|
{MaskTbl Subroutine here, c3:}
|
|
|
|
PC ¬ PC + PC16, uTT ¬ TT, c1, at[L2.WF0,10,MaskRet];
|
|
TOS ¬ TOS LRot12 + TOS, LOOPHOLE[niblTiming], L2¬L2.WF1, c2;
|
|
rhT ¬ ~TOS LRot0, XDisp, c3;
|
|
|
|
TT¬LRot1 T, DISP4[CycleMask], c1;
|
|
|
|
{CycleMask Subroutine Here}
|
|
|
|
TT ¬ RShift1 ~TT, SE¬1, c2, at[L2.WF1,10,MaskRet];
|
|
TT ¬ uTT and TT{TT now has mem alligned mask}, c3;
|
|
|
|
T ¬ Q and ~TT c1;
|
|
TOS ¬ TOS and TT, c2;
|
|
Q ¬ uTTemp, GOTO[WSb], c3;
|
|
|
|
WFMUD: CALL[WLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
PSF
|
|
*****************************************************************************}
|
|
|
|
@@PSF: TT ¬ STK, fXpop, fZpop, push, c1, opcode[156'b];
|
|
TT ¬ TT + ib, L1¬L1.PopDec2, c2;
|
|
rhTT ¬ UvMDS, push, c3;
|
|
|
|
STK ¬ TOS, GOTO[WLFc], c1;
|
|
|
|
|
|
{*****************************************************************************
|
|
PS0F
|
|
*****************************************************************************}
|
|
|
|
@@PS0F: TT ¬ STK, push, L1¬L1.PopDec, c1, opcode[157'b];
|
|
STK ¬ T ¬ TOS, GOTO[WS0Fa], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WS0F
|
|
*****************************************************************************}
|
|
|
|
@@WS0F: TT ¬ STK, push, L1¬L1.Dec, c1, opcode[160'b];
|
|
STK ¬ T ¬ TOS, pop, c2;
|
|
WS0Fa: rhTT ¬ UvMDS, c3;
|
|
|
|
Map ¬ uTTemp ¬ Q ¬ [rhTT, TT], c1;
|
|
PC ¬ PC + PC16, GOTO[WFd], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WL0F
|
|
*****************************************************************************}
|
|
|
|
@@WL0F: TT ¬ STK, pop, L1¬L1.PushDec, c1, opcode[161'b];
|
|
PC ¬ PC + PC16, c2;
|
|
rhTT ¬ TOS{ptrH} LRot0, GOTO[WFb], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLF
|
|
*****************************************************************************}
|
|
|
|
@@WLF: TT ¬ STK{ptrL}, pop, L2¬L2.WLF, c1, opcode[162'b];
|
|
TT ¬ TT + ib{alpha}, CarryBr, L1¬L1.PushDec2, c2;
|
|
rhTT ¬ TOS{ptrH} LRot0, BRANCH[WLFa,WLFb], c3;
|
|
|
|
WLFb: CALL[VAHiInc], c1;
|
|
|
|
WLFa: Noop, c1, VAHiRet[L2.WLF];
|
|
WLFc: PC ¬ PC + 1, c2;
|
|
GOTO[WFb], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
PLSF
|
|
*****************************************************************************}
|
|
|
|
@@PSLF: rhTT ¬ Q ¬ STK, pop, c1, opcode[163'b];
|
|
TT ¬ STK, fXpop, fZpop, push, c2;
|
|
TT ¬ TT + ib, push, CarryBr, c3;
|
|
|
|
PC ¬ PC + 1, push, BRANCH[PSLFa, PSLFb], c1;
|
|
PSLFa: STK ¬ TOS, Rx ¬ Q, L1¬L1.PopDec2, GOTO[PSLFc], c2;
|
|
PSLFb: STK ¬ TOS, Rx ¬ Q + 1, L1¬L1.PopDec2, GOTO[PSLFc], c2;
|
|
PSLFc: rhTT ¬ Rx LRot0, GOTO[WFb], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLFS
|
|
*****************************************************************************}
|
|
|
|
@@WLFS: T ¬ TOS{desc} LRot8, L1¬L1.Push2, c1, opcode[164'b];
|
|
T ¬ 0FF and T{desc.offset}, c2;
|
|
rhTT ¬ STK{ptrH}, pop, c3;
|
|
|
|
TT ¬ STK{ptrL}, pop, L2¬L2.WLFS, c1;
|
|
TT ¬ TT + T, CarryBr, c2;
|
|
BRANCH[WLFSa,WLFSb], c3;
|
|
|
|
WLFSb: CALL[VAHiInc], c1;
|
|
|
|
WLFSa: Map ¬ uTTemp ¬ Q ¬ [rhTT,TT], L0¬L0.WLFS, c1, VAHiRet[L2.WLFS];
|
|
T ¬ STK, c2;
|
|
Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], BRANCH[WLFSMUD,$,1], c1, WLMFRet[L0.WLFS];
|
|
pop, GOTO[WFc], c2;
|
|
|
|
WLFSMUD:
|
|
CALL[WLMapFix], c2;
|
|
|
|
|
|
{ E N D }
|
|
|
|
@
|
|
|
|
|
|
1.1.1.1
|
|
log
|
|
@first add
|
|
@
|
|
text
|
|
@@
|