wwf-wrestlemania/MPROC.EQU

377 lines
6.6 KiB
Plaintext
Raw Normal View History

2021-04-06 15:21:54 -07:00
*.Last mod - 4/8/95 19:55
.globl GETPRC,SUCIDE,PRCSLP,PRCLSP
.globl process_exist,EXISTP
.globl XFERPROC
.globl KILL,KILALL,KIL1C,KILALLN
.globl RAND,ACTIVE,FREE,PRCSTR
.globl snd_play1,snd_play,SNDSND
.globl SFREE,SPRCSTR,GETSPRC,GETPRC_INSERT
;Process data structure
*STRUCT PROC
PLINK .set 0 ;UHL LINK TO NEXT 32 BITS
PROCID .set 20h ;UHW PROCESS ID 16 BITS
PTIME .set 30h ;UHW SLEEP TIME X 16MSEC 16 BITS
PSPTR .set 40h ;UHL PROCESS STACK POINTER 32 BITS
PA11 .set 60h ;UHL REGISTERS SAVED
PA10 .set 80h ;UHL
PA9 .set 0A0h ;UHL
PA8 .set 0C0h ;UHL
PWAKE .set 0E0h ;UHL
PDATA .set 100h ;PROCESS DATA STORE
PSDATA .set 400h ;PROCESS STACK DATA
PRCSIZ .set 600h ;END OF DATA STRUCTURE
*ENDSTRUCT
SPSDATA .set 1080h ;SUPER-PROCESS STACK DATA
SPRCSIZ .set 1380h ;SUPER-PROCESS END OF STRUCT
SNPROC .SET 7 ;# of super-procs
;NPROC .SET 100 ;# processes
NPROC .SET 150 ;# processes
*GSP MACROS
*SUBTRACT REGISTER FROM MEMORY
* SUBRM REG,ADDR,FIELD SIZE
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SUBRM .macro P1,P2,P3
MOVE :P2:,A14,:P3:
SUB :P1:,A14
MOVE A14,:P2:,:P3:
.endm
*ADD REGISTER TO MEMORY
* ADDRM REG,ADDR,FIELD SIZE
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
ADDRM .macro P1,P2,P3
MOVE :P2:,A14,:P3:
ADD :P1:,A14
MOVE A14,:P2:,:P3:
.endm
*INCREMENT LOCATION
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
INCW .macro P1
MOVE :P1:,A14
INC A14
MOVE A14,:P1:
.endm
*DECREMENT WORD
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
DECW .macro P1
MOVE :P1:,A14
DEC A14
MOVE A14,:P1:
.endm
*INCREMENT MEMORY
* INCM ADDR,FIELD SIZE
*A14 DESTROYED
INCM .macro P1,P2
MOVE :P1:,A14,:P2:
INC A14
MOVE A14,:P1:,:P2:
.endm
*DECREMENT MEMORY
* DECM ADDR,FIELD SIZE
*A14 DESTROYED
DECM .macro P1,P2
MOVE :P1:,A14,:P2:
DEC A14
MOVE A14,:P1:,:P2:
.endm
*SUBTRACT MEMORY
* SUBM ADDR,REG,FIELD SIZE
*SUBTRACTS ADDRESS FROM REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SUBM .macro P1,P2,P3
MOVE :P1:,A14,:P3:
SUB A14,:P2:
.endm
*ADD MEMORY
* ADDM ADDR,REG,FIELD SIZE
*ADDS ADDRESS FROM REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
ADDM .macro P1,P2,P3
MOVE :P1:,A14,:P3:
ADD A14,:P2:
.endm
*NEGATE MEMORY
* NEGM ADDR,FIELD SIZE
*NEGATES ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
NEGM .macro P1,P2
MOVE :P1:,A14,:P2:
NEG A14
MOVE A14,:P1:,:P2:
.endm
*COMPARE MEMORY
* CMPM ADDR,REG,FIELD SIZE
*COMPARES ADDRESS TO REGISTER
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
CMPM .macro P1,P2,P3
MOVE :P1:,A14,:P3:
CMP A14,:P2:
.endm
*CLEAR MEMORY
* CLRM ADDR,FIELD SIZE
*CLEARS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
CLRM .macro P1,P2
CLR A14
MOVE A14,:P1:,:P2:
.endm
*COMPLEMENT MEMORY
* COMM ADDR,FIELD SIZE
*COMPLEMENTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
COMM .macro P1,P2
MOVE :P1:,A14,:P2:
NOT A14
MOVE A14,:P1:,:P2:
.endm
*SHIFT LEFT MEMORY
* SLLM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SLLM .macro P1,P2,P3
MOVE :P2:,A14,:P3:
SLL :P1:,A14
MOVE A14,:P2:,:P3:
.endm
*SHIFT RIGHT ARITHMETIC MEMORY
* SRAM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SRAM .macro P1,P2,P3
MOVE :P2:,A14,:P3:
SEXT A14,:P3:
SRA :P1:,A14
MOVE A14,:P2:,:P3:
.endm
*SHIFT RIGHT LOGICAL MEMORY
* SRLM SHIFT COUNT,ADDR,FIELD SIZE
*SHIFTS ADDRESS CONTENTS
*A14 DESTROYED, 'A' REGISTER TYPE INSTRUCTIONS ONLY
SRLM .macro P1,P2,P3
MOVE :P2:,A14,:P3:
ZEXT A14,:P3:
SRL :P1:,A14
MOVE A14,:P2:,:P3:
.endm
*BIT SET
* BSET BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO SET BIT IN
* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY
BSET .macro P1,R1
MOVK 1,A14
SLL :P1:,A14
OR A14,:R1:
.endm
*BIT CLR
* BCLR BIT# 0-31(KONSTANT OR REGISTER),REGISTER TO CLR BIT IN
* NOTE: A14 IS DESTROYED, 'A' FILE REGISTERS ONLY
BCLR .macro P1,R1
MOVK 1,A14
SLL :P1:,A14
ANDN A14,:R1:
.endm
*SET THE Z BIT
* SETZ
* STATUS BITS:
* N Unaffected
* C Unaffected
* Z 1
* V Unaffected
* NOTE: A14 IS CLEARED
SETZ .macro
CLR A14
.endm
*CLR THE Z BIT
* CLRZ
* STATUS BITS:
* N Unaffected
* C Unaffected
* Z 0
* V Unaffected
* NOTE: A14 IS SET TO 1
CLRZ .macro
CLR A14
NOT A14
.endm
*PROCESS SLEEP CONSTANT
*A=Sleep time 1-7fff
*RET ADDR ON STACK
SLEEP .macro A
movi :A:,a0
calla PRCSLP
.endm
SLEEPK .macro A
movk :A:,a0
calla PRCSLP
.endm
*PROCESS SLEEP REGISTER
*REG1=REGISTER THAT CONTAINS SLEEP TIME 1-FFFF LOADED INTO A0
*RET ADDR ON STACK
SLEEPR .macro REG1
MOVE :REG1:,A0
CALLA PRCSLP
.endm
*PROCESS LOOP SLEEP
*s=Sleep time, a=*Wakeup addr
SLOOP .macro s,a
.if :s: < 33
movk :s:,a0
.else
movi :s:,a0
.endif
movi :a:,a7,L
jauc PRCLSP
.endm
*PROCESS LOOP SLEEP REGISTER
*P1=REGISTER CONTAINING SLEEP TIME 1-FFFF, P2 =WAKEUP ADDR-->A7
SLOOPR .macro P1,P2
MOVE :P1:,A0
MOVI :P2:,A7,L
JAUC PRCLSP
.endm
*PROCESS CREATION MACRO
*P1=ID-->A1, P2=PC-->A7
CREATE .macro p1,p2
movi :p1:,a1
movi :p2:,a7,L
calla GETPRC
.endm
*PROCESS CREATION MACRO
*A=PC-->A7
CREATE0 .macro A
clr a1
movi :A:,a7,L
calla GETPRC
.endm
SCREATE .macro p1,p2
movi :p1:,a1
movi :p2:,a7,L
calla GETSPRC
.endm
*KILL PROCESS(ES)
*P1=ID-->A0,P2=MASK-->A1
KILLIT .macro P1,P2
MOVI :P1:,A0
MOVI :P2:,A1
CALLA KILALL
.endm
*CALL IT QUITS
DIE .macro
jauc SUCIDE
.endm
*PROCESS JUMP SUBROUTINE
*P1=ADDRESS OF SLEEPING PROCESS
*A7 IS USED FOR PC STORAGE
JSRP .macro P1
GETPC A7
ADDI 060h,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JAUC :P1:
.endm
*PROCESS JUMP SUBROUTINE ON REGISTER
*R1=REGISTER CONTAINING ADDRESS OF SLEEPING PROCESS
*A7 IS USED FOR PC STORAGE
JSRPR .macro R1
GETPC A7
ADDI 040h,A7
MOVE A7,-*A12,L ;PUSH RET ADDR
JUMP :R1:
.endm
*RETURN FROM SLEEPING SUBROUTINE
*A7 IS USED FOR PC STORAGE
*STATUS REGISTER IS NOT AFFECTED
RETP .macro
mmfm a12,a7 ;PULL RETURN ADDR, W/O ZAPPING STAT
exgpc a7
.endm
*FIND MATCHING PROCESS(ES), BRANCH IF ONE WAS FOUND
*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL
MATCHP .macro P1,P2,P3
MOVI :P1:,A0
MOVI :P2:,A1
CALLA EXISTP
JANZ :P3:
.endm
*FIND MATCHING PROCESS(ES), BRANCH IF NONE WERE FOUND
*P1=ID-->A0,P2=MASK-->A1,P3=BRANCH LABEL
NOMATCHP .macro P1,P2,P3
MOVI :P1:,A0
MOVI :P2:,A1
CALLA EXISTP
JAZ :P3:
.endm
LOCKUP .macro
trap 29
.endm