1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-02 01:50:24 +00:00
Files
PDP-10.its/src/mini/gtmac.mac
2022-03-12 16:09:44 +01:00

264 lines
5.3 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
.NLIST
;TO USE THESE MACROS, JUST INCLUDE THIS FILE AS THE
;FIRST PART OF YOUR ASSEMBLY.
;THE FOLLOWING MACROS ALLOW YOU TO EASYLY ASSEMBLE THE
;BASIC GT40 SCOPE INSTRUCTUIONS, AND DATA ITEMS.
;REFER TO THE GT40 GRAPHIC DISPLAY MANUAL VOLUME 1 PPGS3-16,3-27,3-28
;THE FORMATS OF THE MACRO CALLS ARE AS FOLLOWS:
;
;SGM MODE[,INTENT[,K1[,K2[,K3]]]]
;
; SET GRAPHIC MODE IS THE WORK HORSE MACRO, THE PARAMETERS
; HAVE THE FOLLOWING MEANING:
; MODE IS THE GRAPHIC MODE AND IS EITHER (CHAR,SVEC,LVEC,PNT,
; RPNT,GRFX,GRFY) IT MUST BE PRESENT,ALL THE OTHER
; PARAMETERS ARE OPTIONAL.
; INTENT IS THE INTENCITY LEVEL, IT IT IS PRESENT IT MUST
; BE A NUMBER FROM 0 TO 7 INCLUSIVE.
; K1 K2 K3 ARE FROM 0 TO 3 KEYWORDS (NOTE THAT IF INTENT IS
; OMITTED, THE FIRST KEYWORD MUST STILL BE THE THIRD
; PARAMETER). THE ORDER OF THE KEYWORDS MAKES NO DIFFERENCE.
; ONE CAN BE CHOSEN FROM EACH OF THE FOLLOWING 3 SETS.
; LPI NOLPI A LIGHT PEN INTERUPT IS ENABLED, DISABLED.
; BLK NOBLK BLINKING IS ENABLED, DISABLED.
; SOLID LDASH SDASH DDASH SELECT THE TYPE OF LINES DRAWN.
;
;SJMP LAB
;
; THIS A SCOPE CODE BRANCH TO LOCATION LAB.
;
;SNOOP
;
; SCOPE NOOP INSTRUCTION.
;
;LDA [K1[,K2[,K3[,K4[,K5]]]]]
;
; THIS IS LOAD STATUS REGESTER A, THE PARAMETERS ARE
; FROM 0 TO 5 KEYWORDS IN ANY ORDER, EACH CHOOSEN
; FROM ONE OF THE 5 SETS:
; HALT THIS STOPS THE SCOPE.
; HI NOHI INTERRUPT ON SCOPE HALT IS ENABLED, DISABLED.
; LPY NOLPY THE POINT OF LIGHT PEN INTERACTION IS
; INTENSIFIED, NOT INTENSIFIED
; ITX NOITX CHARACTERS ARE (ARE NOT) ITALICISED.
; SYNC HALT SCOPE AND RESART ON 60 HZ PULSE.
;
;LDB NUM
;
; LOAD STATUS REGESTER B WITH THE 6 BIT POSITIVE
; GRAPHPLOT INCREMENT.
;
; THE FOLLOWING MACROS PRODUCE THE DATA WORDS
; IN THE FOLLOWING, THE PARAMETERS ARE
; X6,Y6 SIGNED 6BIT COORDINATES.
; X10,Y10 SIGNED 10 BIT COORDINATES.
; X10A,Y10A POSITIVE 10 BIT COORDINATES.
; HIDE THIS OPTIONAL KEYWORD SPECIFIES THAT THE ITEM IS
; NOT TO BE INTENSIFIED.
;
;SVEC X6,Y6[,HIDE] SHORT VECTOR MODE
;LVEC X10,Y10[,HIDE] LONG VECTOR MODE
;PNT X10A,Y10A[,HIDE] POINT MODE
;RPNT X6,Y6[,HIDE] RELATIVE POINT MODE
;GRFX Y10A GRAPH PLOT X
;GRFY X10A GRAPH PLOT Y
;
; TO GET CHARACTER DATA, USE THE .ASCII COMMAND.
;
SHINT=320
SLPINT=324
STO=330
SPC=172000
SSR=172002
SX=172004
SY=172006
ZCHAR=100000
ZSVEC=104000
ZLVEC=110000
ZPNT=114000
ZRPNT=130000
ZGRFX=120000
ZGRFY=124000
ZLPI=140
ZNOLPI=100
ZBLK=30
ZNOBLK=20
ZSOLID=4
ZLDASH=5
ZSDASH=6
ZDDASH=7
ZHALT=2000
ZHI=1400
ZNOHI=1000
ZLPY=200
ZNOLPY=300
ZITX=60
ZNOITX=40
ZSYNC=4
.MACRO SGM MODE,INTENT,K1,K2,K3
ZT=Z'MODE
.IF NB,<INTENT>
ZT2=INTENT
.IIF LT,INTENT,ZT2=0
.IIF GT,INTENT-7,ZT2=7
ZT=ZT+<ZT2*200>+2000
.ENDC
.IIF NB,<K1>,ZT=ZT+Z'K1
.IIF NB,<K2>,ZT=ZT+Z'K2
.IIF NB,<K3>,ZT=ZT+Z'K3
.WORD ZT
.ENDM
.MACRO SJMP LAB
.WORD 160000,LAB
.ENDM
.MACRO SNOOP
.WORD 164000
.ENDM
.MACRO LDA K1,K2,K3,K4,K5
ZT=170000
.IRP K,<K1,K2,K3,K4,K5>
.IIF NB,<K>,ZT=ZT+Z'K
.ENDM
.WORD ZT
.ENDM
.MACRO LDB INCR
.IF GT,INCR
.IF LT,INCR-100
.WORD 174100+INCR
.MEXIT
.IFF
.WORD 174177
.ENDC
.IFF
.WORD 174100
.ENDC
.ERROR INCR;INCREMENT OUT OF RANGE
.ENDM
.MACRO SVEC X,Y,H
CHK6 X,ZT2
CHK6 Y,ZT3
ZT=40000
.IIF IDN,<H>,<HIDE>,ZT=0
.WORD ZT+<ZT2*200>+ZT3
.ENDM
.MACRO LVEC X,Y,H
CHK10 X,ZT2
ZT=40000
.IIF IDN,<H>,<HIDE>,ZT=0
.WORD ZT+ZT2
CHK10 Y,ZT2
.WORD ZT2
.ENDM
.MACRO RPNT X,Y,H
SVEC X,Y,H
.ENDM
.MACRO PNT X,Y,H
CHK10A X,ZT2
ZT=40000
.IIF IDN,<H>,<HIDE>,ZT=0
.WORD ZT+ZT2
CHK10A Y,ZT2
.WORD ZT2
.ENDM
.MACRO GRFX X
CHK10 X,ZT2
.WORD ZT2
.ENDM
.MACRO GRFY Y
GRFX Y
.ENDM
.MACRO CHK6 X,Z
.IF LT,X
Z=100
ZT=-1*<X>
.IFF
Z=0
ZT=X
.ENDC
.IF GE,ZT-100
.ERROR X; NUMBER OUT OF RANGE
ZT=77
.ENDC
Z=Z+ZT
.ENDM
.MACRO CHK10 X,Z
ZT=X
Z=0
.IF LT,X
Z=20000
ZT=-1*<X>
.ENDC
.IF GE,ZT-2000
.ERROR X; NUMBER OUT OF RANGE
ZT=17777
.ENDC
Z=Z+ZT
.ENDM
.MACRO CHK10A X,Z
.IF LT,X
.ERROR X; NUMBER < ZERO
Z=0
.MEXIT
.ENDC
CHK10 X,Z
.ENDM
;THE FOLLOWING MACROS IMPLEMENT A SET OF EXTENDED SCOPE INSTRUCTIONS
;IF THEY ARE USED, THEN THE PROGRAM MUST BE LOADED WITH GTROS
;(GT/40 TRIVIAL OPERATING SYSTEM).
;SJMPR THIS IS A POSITION INDEPENDENT SCOPE JUMP, THE FINAL R
; STANDS FOR RELATIVE, AND IS AT THE END OF EACH POSSITION
; INDEPENDENT MACRO.
;SJSR THIS ALLOWS ONE SCOPE PROGRAM TO CALL ANOTHER AS A SUBROUTINE
;SJSRR POSSITION INDEPENDENT SJSR
;SRTS RETURN FROM A SCOPE SUBROUTINE
;SINT INTERUPT THE 11/05 AND START EXECUTION AT THE SPECIFIED
; ADDRESS
;SINTR POSSITION INDEPENDENT SINT
;SINTH SINT, AND HALT SCOPE PROGRAM
;SINTHR POSSITION INDEPENDENT SINTH
;
.MACRO SJMPR LAB
.WORD 173410,-2+LAB-.
.ENDM
.MACRO SJSR LAB
.WORD 173401,LAB
.ENDM
.MACRO SJSRR LAB
.WORD 173411,-2+LAB-.
.ENDM
.MACRO SRTS
.WORD 173400
.ENDM
.MACRO SINT LAB
.WORD 173402,LAB
.ENDM
.MACRO SINTR LAB
.WORD 173412,-2+LAB-.
.ENDM
.MACRO SINTH LAB
.WORD 173403,LAB
.ENDM
.MACRO SINTHR LAB
.WORD 173413,-2+LAB-.
.ENDM
;THE FOLLOWING MACROS ALLOW SIMPLIFYED COMUNICATION BETWEEN THE
;11/05 AND THE GT40, THROUGH THE USE OF GTROS.
;BELL THIS RINGS THE CONSOLE BELL (GTROS NEED NOT BE
; LOADED)
;SEXEC THIS STARTS UP THE GT40 AT THE SPECIFIED ADDRESS
;SREXEC THIS RESTARTS THE SCOPE PROGRAM AT THE POINT IT STOPED AT
; ON A SINTH OR SINTHR
;
.MACRO BELL
MOV %0,SSR
.ENDM
.MACRO SEXEC ADDR
MOV ADDR,-(%6)
JSR %7,@#334
TST (%6)+
.ENDM
.MACRO SREXEC
JSR %7,@#336
.ENDM
.LIST