mirror of
https://github.com/livingcomputermuseum/Darkstar.git
synced 2026-03-01 09:51:32 +00:00
39 lines
7.6 KiB
Plaintext
39 lines
7.6 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.29; author freier; state Exp;
|
|
branches 1.1.1.1;
|
|
next ;
|
|
|
|
1.1.1.1
|
|
date 2001.08.12.22.22.29; author freier; state Exp;
|
|
branches ;
|
|
next ;
|
|
|
|
|
|
desc
|
|
@@
|
|
|
|
|
|
|
|
1.1
|
|
log
|
|
@Initial revision
|
|
@
|
|
text
|
|
@{
|
|
File name write.mc
|
|
Description: Mesa Write op-codes
|
|
Author: don DXC
|
|
Created: February 16, 1980
|
|
AEF 21-Jul-83 11:02:18 Fix stack problem during page fault on second word of double writes
|
|
AXD 15-Jun-83 18:39:26 New Instruction Set
|
|
JGS November 2, 1981 4:11 PM New Instruction Set
|
|
Last edited: DXC , March 28, 1980 5:09 PM
|
|
Last edited: R. RXG , April 2, 1980 10:34 PM
|
|
Last edited: RXJ , January 14, 1981 11:04 AM
|
|
Last edited: DEG , 1-Sep-84 19:56:21 add copyright notice.
|
|
}
|
|
|
|
{ Copyright (C) 1980, 1981, 1983 by Xerox Corporation. All rights reserved.}
|
|
|
|
|
|
{
|
|
Wn Write n = 0
|
|
WB Write Byte
|
|
WLB Write Long Byte
|
|
WDB Write Double Byte
|
|
WDLB Write Double Long Byte
|
|
|
|
PSB Put Swapped Byte
|
|
PSDn Put Swapped Double n = 0
|
|
PSDB Put Swapped Double Byte
|
|
PSLB Put Swapped Long Byte
|
|
PSDLB Put Swapped Double Long Byte
|
|
|
|
WLIP Write Local Indirect Pair
|
|
WLILP Write Local Indirect Long Pair
|
|
WLDILP Write Local Double Indirect Long Pair
|
|
|
|
WOB Write Overhead Byte
|
|
}
|
|
|
|
|
|
{*****************************************************************************
|
|
WB
|
|
*****************************************************************************}
|
|
|
|
@@W0: TT ¬ TOS, push, L1¬L1.PushDec, c1, opcode[111'b];
|
|
STK ¬ TOS, pop, PC ¬ PC + PC16, GOTO[Wa], c2;
|
|
|
|
@@WB: TT ¬ TOS + ib, push, L1¬L1.PushDec2, c1, opcode[112'b];
|
|
STK ¬ TOS, pop, PC ¬ PC + 1, c2;
|
|
Wa: Noop, c3;
|
|
|
|
WMpc1: Map ¬ Q ¬ [rhMDS, TT], c1;
|
|
WMpc2: T ¬ STK, pop, c2;
|
|
WMpc3: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
W: MAR ¬ [rhRx, Q + 0], L0¬L0.W, BRANCH[WMUD,$,1], c1, WMFRet[L0.W];
|
|
Wb: MDR ¬ T, IBDisp, GOTO[SLa], c2;
|
|
|
|
WMUD: CALL[WMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
PSB
|
|
*****************************************************************************}
|
|
|
|
@@PSB: TT ¬ STK{ptr}, fXpop, fZpop, push, c1, opcode[113'b];
|
|
TT ¬ TT + ib, push, L1¬L1.Dec2, c2;
|
|
STK ¬ TOS, PC ¬ PC + 1, GOTO[WMpc1], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLB
|
|
*****************************************************************************}
|
|
|
|
@@WLB: TT ¬ STK{ptrL}, pop, L1¬L1.Push, c1, opcode[114'b];
|
|
TT ¬ TT + ib, CarryBr, L2¬L2.WL, c2;
|
|
rhTT ¬ TOS{ptrH} LRot0, BRANCH[WLMpc1, WLa], c3;
|
|
|
|
WLa: CALL[VAHiInc], c1;
|
|
|
|
WLMpc1: Map ¬ Q ¬ [rhTT, TT], c1, VAHiRet[L2.WL];
|
|
WLMpc2: T ¬ STK, c2;
|
|
WLMpc3: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
WL: MAR ¬ [rhRx, Q + 0], L0¬L0.WL, BRANCH[WLMUD,$,1], c1, WLMFRet[L0.WL];
|
|
WLc: MDR ¬ T{data}, IBDisp, PC ¬ PC + 1, pop, GOTO[SLa], c2;
|
|
|
|
WLMUD: CALL[WLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
PSLB
|
|
*****************************************************************************}
|
|
|
|
@@PSLB: rhTT ¬ STK, pop, c1, opcode[115'b];
|
|
TT ¬ STK, fXpop, fZpop, push, c2;
|
|
TT ¬ TT + ib, CarryBr, push, c3;
|
|
|
|
PSLc: Map ¬ Q ¬ [rhTT, TT], push, BRANCH[PSLa, PSLb], c1;
|
|
PSLa: STK ¬ T ¬ TOS, L1¬L1.Pop, GOTO[WLMpc3], c2;
|
|
PSLb: Q ¬ rhTT + 1, pop, LOOPHOLE[byteTiming], c2;
|
|
rhTT ¬ Q LRot0, GOTO[PSLc], c3;
|
|
|
|
|
|
{*****************************************************************************
|
|
WDB
|
|
*****************************************************************************}
|
|
|
|
@@WDB: Q ¬ TOS + ib, L1¬L1.Push2, c1, opcode[116'b];
|
|
T ¬ STK{data1}, pop, c2;
|
|
WDd: c3;
|
|
|
|
WDMpc1: Map ¬ [rhMDS, Q], c1;
|
|
WDMpc2: TT ¬ STK{data0}, pop, c2;
|
|
WDMpc3: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
WDa: MAR ¬ [rhRx,Q + 0], L0¬L0.WD, BRANCH[WDMUD,$,1], c1, WMFRet[L0.WD];
|
|
WDc: MDR ¬ TT, TT ¬ Q + 1, PgCarryBr, c2;
|
|
rhTT ¬ UvMDS, push, BRANCH[WDLd, WDb], c3;
|
|
|
|
WDb: Map ¬ Q ¬ [rhTT, Q + 1], L0¬L0.WDB, c1;
|
|
WDe: Noop, c2;
|
|
Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
MAR ¬ [rhRx, Q + 0], BRANCH[WLMUD,WLc,1], c1, WLMFRet[L0.WDB];
|
|
|
|
WDMUD: CALL[WMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
PSD0 and PSDB
|
|
*****************************************************************************}
|
|
|
|
@@PSD0: Q ¬ 0, pop, L1¬L1.PushInc, c1, opcode[117'b];
|
|
T ¬ STK, fXpop, fZpop, push, c2;
|
|
PC ¬ PC - PC16, push, GOTO[PSDa], c3;
|
|
|
|
@@PSDB: Q ¬ ib, pop, c1, opcode[120'b];
|
|
T ¬ STK, fXpop, fZpop, push, c2;
|
|
L1¬L1.Push, push, c3;
|
|
|
|
PSDa: Q ¬ T + Q, push, c1;
|
|
STK ¬ T ¬ TOS, pop, GOTO[WDd], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WDLB
|
|
*****************************************************************************}
|
|
|
|
@@WDLB: TT ¬ STK{ptrL}, pop, L1¬L1.Push2, c1, opcode[121'b];
|
|
TT ¬ TT + ib, CarryBr, L2¬L2.WDL, c2;
|
|
rhTT ¬ TOS{ptrH} LRot0, BRANCH[WDLMc1, WDLa], c3;
|
|
|
|
WDLa: CALL[VAHiInc], c1;
|
|
|
|
WDLMc1: Map ¬ Q ¬ [rhTT,TT], c1, VAHiRet[L2.WDL];
|
|
WDLMc2: T ¬ STK{data1}, pop, L0¬L0.WDL, c2;
|
|
WDLMc3: Rx ¬ rhRx ¬ MD, XDirtyDisp, c3;
|
|
|
|
MAR ¬ [rhRx,Q + 0], BRANCH[WDLMUD,$,1], c1, WLMFRet[L0.WDL];
|
|
MDR ¬ STK{data0}, c2;
|
|
[] ¬ TT + 1, PgCarryBr, c3;
|
|
|
|
WDLd: MAR ¬ [rhRx,Q + 1], BRANCH[WDLb, WDLc], c1;
|
|
WDLb: MDR ¬ T{data1}, PC ¬ PC + 1, IBDisp, pop, CANCELBR[SLa,0], c2;
|
|
|
|
WDLc: [] ¬ Q + 1, CarryBr, CANCELBR[$,2], c2;
|
|
Q ¬ rhTT + 1, LOOPHOLE[byteTiming], BRANCH[WDLe, WDLf], c3;
|
|
|
|
WDLe: Map ¬ Q ¬ [rhTT, TT + 1], GOTO[WDe], c1;
|
|
|
|
WDLf: rhTT ¬ Q LRot0, GOTO[WDLc], c1;
|
|
|
|
WDLMUD: CALL[WLMapFix], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
PSDLB
|
|
*****************************************************************************}
|
|
|
|
@@PSDLB: pop, L1¬L1.None, c1, opcode[122'b];
|
|
rhTT ¬ STK, pop, c2;
|
|
TT ¬ STK, fXpop, fZpop, push, c3;
|
|
|
|
PSDLd: TT ¬ TT + ib, CarryBr, push, c1;
|
|
Q ¬ rhTT + 1, push, LOOPHOLE[byteTiming], BRANCH[PSDLa, PSDLb], c2;
|
|
PSDLa: GOTO[PSDLc], c3;
|
|
PSDLb: rhTT ¬ Q LRot0, GOTO[PSDLc], c3;
|
|
|
|
PSDLc: Map ¬ Q ¬ [rhTT, TT], push, c1;
|
|
STK ¬ T ¬ TOS, pop, L0¬L0.WDL, GOTO[WDLMc3], c2;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLIP
|
|
*****************************************************************************}
|
|
|
|
@@WLIP: MAR ¬ Q ¬ [rhL, L+alpha.left], L0¬L0.WLIP, push, c1, opcode[136'b];
|
|
STK ¬ TOS, PC ¬ PC + 1, L2¬L2.LIP, BRANCH[LIPa,LIPb,1], c2;
|
|
|
|
Map ¬ Q ¬ [rhMDS, TT], L1¬L1.Dec2, GOTO[WMpc2], c1, IPRet[L0.WLIP];
|
|
|
|
|
|
{*****************************************************************************
|
|
WLILP
|
|
*****************************************************************************}
|
|
|
|
@@WLILP: MAR ¬ Q ¬ [rhL, L+alpha.left], L0¬L0.WLILP, push, c1, opcode[137'b];
|
|
STK ¬ TOS, PC ¬ PC + 1, L2¬L2.LILP0, BRANCH[LILPa,LILPb,1], c2;
|
|
|
|
PC ¬ PC - 1, L1¬L1.Pop, c3, ILPRet[L0.WLILP];
|
|
|
|
Map ¬ Q ¬ [rhTT, TT], GOTO[WLMpc2], c1;
|
|
|
|
|
|
{*****************************************************************************
|
|
WLDILP
|
|
*****************************************************************************}
|
|
|
|
@@WLDILP:
|
|
MAR ¬ Q ¬ [rhL, L+alpha.left], L0¬L0.WLDILP, push, c1, opcode[140'b];
|
|
STK ¬ TOS, PC ¬ PC + 1, L2¬L2.LILP0, BRANCH[LILPa,LILPb,1], c2;
|
|
|
|
PC ¬ PC - 1, L1¬L1.None, GOTO[WDLMc1], c3, ILPRet[L0.WLDILP];
|
|
|
|
|
|
{*****************************************************************************
|
|
WOB Write Overhead Byte
|
|
*****************************************************************************}
|
|
|
|
@@WOB: TT ¬ TOS - ib, L1¬L1.PushDec3, c1, at[0F,10,ESC1n];
|
|
PC ¬ PC + PC16, GOTO[Wa], c2;
|
|
|
|
{ E N D }
|
|
|
|
|
|
@
|
|
|
|
|
|
1.1.1.1
|
|
log
|
|
@first add
|
|
@
|
|
text
|
|
@@
|