|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 33778 (0x83f2)
Types: TextFile
Names: »KV.I1«
└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS )
└─⟦this⟧ »KV.D!KV.I1«
LIST
BEGIN MODULE
USE BASE
XPROGRAM= TRUE
XDATA= TRUE
NOLIST
;-----------------------------------------------------------------------
;
; PROJECT: AMOS
;
; MODULE NAME: S2SYSS
; MODULE ID NMB: CSS/811
; MODULE VERSION: 6
; MODULE TYPE: MERGE FILE
; MODULE FILES: S2SYSS.S
; MERGE FILES: NONE
;
; SPECIFICATIONS: CSS/302/PSP/0008
; AUTHOR/DATE: JHO
;
; DELIVERABLE: YES
; SOURCE LANGUAGE: CR80 ASSEMBLER
; COMPILE COMPUTER: CR80
; TARGET COMPUTER: CR80
; OPER. SYSTEM: AMOS
;
;-----------------------------------------------------------------------
;
; CHANGE RECORD:
;
; VERSION AUTHOR/DATE DESCRIPTION OF CHANGE
; ------- ----------- ---------------------
;
; 0501 JHO/801015 READSYSTIME AND PASCALINIT2
; INCLUDED
;
; 0601 JHO/801121 FILENAME INCLUDED
;
; 0701 AEK/800105 MONITORNAME DEVICE #86 CHANGED TO
; MONITORNAME TTYLOG #86 TO SUPPORT CSS/339
;-----------------------------------------------------------------------
MESSAGE <:AMOS SYSTEM NAMES V801121:>
SYS2= TRUE
; EVENTTYPES
AX=0
BMSIG:= 1<AX
BNSIG:= AX, AX=AX+1 ; SIGNAL TYPE
BMMSG:= 1<AX
BNMSG:= AX, AX=AX+1 ; MESSAGE TYPE
BMANS:= 1<AX
BNANS:= AX, AX=AX+1 ; ANSWER TYPE
BMSYM:= 1<AX
BNSYM:= AX, AX=AX+1 ; SYSTEM MESSAGE TYPE
BMSYA:= 1<AX
BNSYA:= AX, AX=AX+1 ; SYSTEM ANSWER TYPE
BMPTM:= 1<AX
BNPTM:= AX, AX=AX+1 ; PATH MESSAGE TYPE
BMPTA:= 1<AX
BNPTA:= AX, AX=AX+1 ; PATH ANSWER TYPE
BMINTRPT:= 1<AX
BNINTRPT:= AX, AX=AX+1 ; INTERRUPT TYPE
BMDELAY:= 1<AX
BNDELAY:= AX, AX=AX+1 ; DELAY TYPE
BMPARSIG:= 1<AX
BNPARSIG:= AX, AX=AX+1 ; PARENT SIGNAL
CONTLENGTH:= 5 ; ELNGTH OF MESSAGE BUFFER
; COMMAND BITS
; TRANSPUT OPERATIONS
AX=0
BNTPUT:= AX, AX=AX+1
BNOPUT:= AX, AX=AX+1
BNBYTE:= AX, AX=AX+1
BNSPEC:= AX, AX=AX+1
BNCONV:= AX, AX=AX+1
BNSTEP:= AX, AX=AX+1
BNNOEC:= AX, AX=AX+1
BNNOCP:= AX, AX=AX+1
; CONTROL OPERATIONS
AX=2
BNRELEASE:= AX, AX=AX+1
BNRESERVE:= AX, AX=AX+1
BNPOSITION:= AX, AX=AX+1
BNERASE:= AX, AX=AX+1
BNCLEAR:= AX, AX=AX+1
BNTERMINATE:= AX, AX=AX+1
BNDISCONNECT:= AX, AX=AX+1
; RESULT BITS
AX= 0
BNNOTREADY:= AX, AX=AX+1
BNTIMER:= AX, AX=AX+1
BNREJECT:= AX, AX=AX+1
BNILLEGAL:= AX, AX=AX+1
BNUNCOMPLETE:= AX, AX=AX+1
BNERROR:= AX, AX=AX+1
BNEOF:= AX, AX=AX+1
BNPARITY:= AX, AX=AX+1
BNREADERROR:= AX, AX=AX+1
BNWRITEERROR:= AX, AX=AX+1
BNFULL:= AX, AX=AX+1
BNUNKNOWN:= AX, AX=AX+1
BNBUSY:= AX, AX=AX+1
BNNOTPOSS:= AX, AX=AX+1
;PAGE«ff»
;-----------------------------------------------------------------------
; SYSTEM CALLS
AX=0
CREATEPROCESS:= AX, AX=AX+1
; PARAMETER BLOCK FOR CREATEPROCESS:
AY=0
XPRNAMELENGTH:= 4 ; LENGTH OF PROCESS NAME
VNAME0:= AY,AY=AY+1 ; NAME. IF VNAME0=0 THEN A STANDAR
; D NAME IS GENERATED AND RETURNED
; IT IS CHECKED THAT THE NAME DOES
; NOT ALREADY EXIST NOR BEGINS WIT
; TH "P".
VNAME1:= AY,AY=AY+1 ;
VNAME2:= AY,AY=AY+1 ;
VIDENT:= AY,AY=AY+1 ; USED TO RETURN THE LOGICAL PCB
VPROG:= AY, AY=AY+1 ; ABS PROGRAM BASE
VINIT:= AY, AY=AY+1 ; PROGRAM RELATIVE START ADDRESS
VMICRO:= AY, AY=AY+1 ; PROGRAM REL ADR TO MICRO PROGR
; LOAD MODULE
VCAPAB:= AY, AY=AY+1 ; CAPABILITIES
VCPU:= AY, AY=AY+1 ; LOGICAL CPU
VPRIO:= AY, AY=AY+1 ; PRIORITY OF PROCESS TO BE CREATED
VLEVEL:= AY, AY=AY+1 ; INITIAL SYSTEM LEVEL OF PROCESS
VBASE:= AY, AY=AY+1 ; ABS BASE OF PROCESS TO BE CREATE
VSIZE:= AY,AY=AY+1 ; SIZE OF PROCESS
VBOUND:= AY,AY=AY+1 ; PRESET VALUE OF BOUND REGISTER.
VMEMORY:= AY,AY=AY+1 ; MEMORY ALLOCATION PARAMETER.
VMSGS:= AY, AY=AY+1 ; MAY NMB OF MSG BUFFERS ALLOWED
XUSERIDLENGTH:= 2 ; LENGTH OF USER ID
VUSERID:= AY, AY=AY+XUSERIDLENGTH; USER ID
VPARLGT:= AY ; LENGTH OF PARAMETER BLOCK.
REMOVEPROCESS:= AX, AX=AX+1
ADOPTPROCESS:= AX, AX=AX+1
STARTPROCESS:= AX, AX=AX+1
STOPPROCESS:= AX, AX=AX+1
GETCHILD:= AX, AX=AX+1
VANISH:= AX, AX=AX+1
CLNMESSAGE:= AX, AX=AX+1
CLNINTRPT:= AX, AX=AX+1
ERROR:= AX, AX=AX+1
TERMINATE:= ERROR
; ERROR CODE GROUPS
USERER:= 0<8 ; USER DEFINED ERRORS
MONERR:= 1<8 ; MONITOR KERNEL ERRORS (INCL HW)
IOERR:= 2<8 ; IO SYSTEM ERRORS
FMSERR:= 3<8 ; FILE MANAGEMENT SYSTEM ERROR
FMUERR:= 4<8 ; FILE MANAGEMENT SYSTEM ERROR
FMDERR:= 5<8 ; FILE MANAGEMENT SYSTEM ERROR
DRVERR:= 6<8 ; DEVICE DRIVER ERRORS
PASERR:= 7<8 ; PASCAL RUNTIME ERRORS
OVLERR:= 8<8 ; OVERLAY ERROR
LOOKUPCPU:= AX, AX=AX+1
CLOSEPATH:= AX, AX=AX+1
OPENPATH:= AX, AX=AX+1
SETCYCLE:= AX, AX=AX+1
CLEARINTERRUPT:= AX, AX=AX+1
RELEASEINTERRUPT:= AX, AX=AX+1
SETINTERRUPT:= AX, AX=AX+1
RESERVEINTERRUPT:= AX, AX=AX+1
IDENTIFYSENDER:= AX, AX=AX+1
GETATTRIBUTES:= AX, AX=AX+1
LOOKUPPROCESS:= AX, AX=AX+1
SETCPUPARAMETER:= AX, AX=AX+1
GETCPUPARAMETER:= AX, AX=AX+1
BX=0 ; CPU PARAMETERS
ZCPUNMB:= BX, BX=BX+1 ; CPU NUMBER
ZINTMSK:= BX, BX=BX+1 ; INTERRUPT MASK (PSW)
ZSCHRCNT:= BX, BX=BX+1 ; SCHEDULE RESET COUNT .PRIO
ZSLICESZ:= BX, BX=BX+1 ; SLICE SIZE .PRIO
ZACCEXECT:= BX, BX=BX+1 ; ACC EXECUTION TIME .PRIO
ZHWPRIO:= BX, BX=BX+1 ; HW PRIORITY BITS (PSW) .PRIO
ZCPUMAXPAR:= BX ;
RECOVEREVENTS:= AX, AX=AX+1
SAVEEVENT:= AX, AX=AX+1
SUSPEND:= AX, AX=AX+1
READY:= AX, AX=AX+1
AX=AX+6 ; SPARE POSITIONS
IF AX GT 63 THEN USE 16 FI
AX=64
CPUINIT:= AX, AX=AX+1
MONINIT:= AX, AX=AX+1
INITPASCAL:= AX, AX=AX+1
OLTO:= AX, AX=AX+1
AWAITEVENT:= AX, AX=AX+1
WAITEVENT:= AWAITEVENT
SENDSIGNAL:= AX, AX=AX+1
AWTANSWER:= AX, AX=AX+1
SENDMESSAGE:= AX, AX=AX+1
SENDANSWER:= AX, AX=AX+1
AWTSYANSWER:= AX, AX=AX+1
SENDSYMESSAGE:= AX, AX=AX+1
SENDSYANSWER:= AX, AX=AX+1
AWTPATHANSWER:= AX, AX=AX+1
SENDPATHANSWER:= AX, AX=AX+1
SENDPATHMESSAGE:= AX, AX=AX+1
IDENTIFYPROCESS:= AX, AX=AX+1
READRTC:= AX, AX=AX+1
SENDTIMEOUT:= AX, AX=AX+1
WRITERTC:= AX, AX=AX+1
PROCESSPCBS:= AX, AX=AX+1
READSYSTIME:= AX, AX=AX+1
PASCALINIT2:= AX, AX=AX+1
TTYLOG:= AX, AX=AX+1
CLNDEVICE:= AX, AX=AX+1
IO:= AX, AX=AX+1
CLNIO:= AX, AX=AX+1
IOINIT:= AX, AX=AX+1
GETBUF:= AX, AX=AX+1
ADRBUF:= AX, AX=AX+1
RELBUF:= AX, AX=AX+1
CLNMEM:= AX, AX=AX+1
STREAM:= AX, AX=AX+1
INSPECTEVENTS:= AX, AX=AX+1
REGION:= AX, AX=AX+1
BX=0 ; REGION PROCEDURES
RENTER:= BX, BX=BX+1
RLEAVE:= BX, BX=BX+1
RWAIT:= BX, BX=BX+1
RGET:= BX, BX=BX+1
RGETN:= BX, BX=BX+1
RPUT:= BX, BX=BX+1
RPUTN:= BX, BX=BX+1
RCREATE:= BX, BX=BX+1
; PARAMETER BLOCK FOR CREATE REGION
AY=0
VCRNAME:= AY, AY=AY+3; NAME OF REGION
VCRSTA:= AY, AY=AY+1; PSW ENCODED PAGE OF VS
VCRADDR:= AY, AY=AY+1; ABSOLUTE WORD ADDRESS OF VS
VCRSIZE:= AY, AY=AY+1; SIZE IN WDS OF VS
VCRCBL:= AY ; SIZE OF PARAMETER BLOCK
RSEARCH:= BX, BX=BX+1
RCOPYN:= BX, BX=BX+1
; ERROR CODES FOR REGION PROCEDURES
ZCRUNF:= 1 ; UNKNOWN FUNCTION
ZCRPSZ:= 2 ; PARAMETER REF VIOLATES ADDRESS
; SPACE OF PROCESS.
ZCRUNR:= 3 ; UNKNOWN REGION
ZCRILLSTA:= 4 ; REGION IS NOT ENTERED
ZCRPCB:= 5 ; INVALID PROCESS (PCB INDEX)
ZCRILLNAM:= 6 ; INVALID REGION NAME
ZCRVSZ:= 7 ; ADDRESS VIOLATION IN VS
ZCROVFL:= 8 ; TOO MANY REGIONS
OVERLAY:= AX, AX=AX+1
LOG:= AX, AX=AX+1
MULTIPLYLONG:= AX, AX=AX+1
DIVIDELONG:= AX, AX=AX+1
FINDFILE:= AX, AX=AX+1
INFILEID:= AX, AX=AX+1
LOGP:= AX, AX=AX+1
COR:= AX, AX=AX+1
FILENAME:= 254 ; RETTET FRA 106 A.H.T COBOL
;***********************************************************************
;* *
;* C R 8 0 A M O S *
;* D A T A A N D P R O G R A M H E A D E R *
;* G E N E R A T O R P A R T 1 *
;* CONFIG ID: CSS/831 *
;* AUTHOR: JHO *
;* DATE: 790827 *
;* VERSION: 1 *
;* *
;***********************************************************************
MESSAGE <:X2GEN1 V790827:>
USE PROG
IF WORDS NE 0 THEN MESSAGE <:X2GEN1 MUST BE CALLED INITIALLY IN SOURCE:>
FI
AREASWITCH= 1
XTRA= 0 ; SIZE OF NOT ASSEMBLED LOCAL DATA
; ABOVE BOUND
XTND= 0 ; SIZE OF NOT ASSEMBLED DATA BELOW
; BOUND
XFDS= 0 ; DEFAULT NMB OF FILE DESRIPTIONS
XIBS= 0 ; DEFAULT NMB OF IO CONTROL BLOCKS
XXFS= 0 ; DEFAULT NMB OF XFER LIST ELEMENT
XSTS= 0 ; DEFAULT NMB OF IO STREAMS
XIOSIZE= 0 ; DEFAULT SIZE OF IO AREA
XMSGS= 4 ; DEFAULT NMB OF MESSAGE BUFFERS
; GENERAL HEADER DECLARATION
AX=0
XHTYPE:= AX, AX=AX+1 ; HEADER TYPE
BX=0
XTABLE:= BX, BX=BX+1 ; TABLE HEADER
XCODE:= BX, BX=BX+1 ; PROGRAM HEADER
XPROCESS:= BX, BX=BX+1 ; PROCESS HEADER
XHSIZE:= AX, AX=AX+1 ; SIZE OF ITEM (IN WORDS)
XHNAME:= AX, AX=AX+3 ; NAME OF ITEM
XHGHL:= AX ; LENGTH OF GENERAL HEADER
; PROGRAM HEADER DECLARATION
AX= XHGHL ; GENERAL HEADER HEADER
XPVERS:= AX, AX=AX+1 ; PROGRAM VERSION
XPTYPE:= AX, AX=AX+1 ; TYPE
BX=0
BNREENTRANT:= BX, BX=BX+1 ; REENTRANT VS NON REENTRANT
BNRESIDENT:= BX, BX=BX+1 ; RESIDENT VS SWAPPABLE
BNPERMANENT:= BX, BX=BX+1 ; PERMANENT VS REMOVEABLE
BNMONITOR:= BX, BX=BX+1 ; MONITOR CODE VS NON MONITOR CODE
BNUTILITY:= BX, BX=BX+1 ; UTILITY PROGRAM VS NOT UTILITY
BNPASCAL:= BX, BX=BX+1 ; PASCAL PROGRAM VS NOT PASCAL P
BMREENTRANT:= 1<BNREENTRANT
BMRESIDENT:= 1<BNRESIDENT
BMPERMANENT:= 1<BNPERMANENT
BMMONITOR:= 1<BNMONITOR
BMUTILITY:= 1<BNUTILITY
BMPASCAL:= 1<BNPASCAL
XPSTART:= AX, AX=AX+1 ; RELATIVESTART ADDRESS
XPMICRO:= AX, AX=AX+1 ; REL ERF TO MICRO LOAD MODULE
XPCHKS:= AX, AX=AX+1 ; CHECKSUM
XPMEM:= AX, AX=AX+1 ; MEMORY PARAMETER
IF AX GT 32 THEN USE 16 FI
AX=32 ; SPARE POSITIONS
XPGHDL:= AX ; LENGTH OF PROGRAM HEADER
IF XPROGRAM THEN
XCODE ; PROGRAM TYPE HEADER
XPGWDS ; SIZE OF PROGRAM
XPGNAME0 ; PROGRAM NAME
XPGNAME1
XPGNAME2
XVERSION ; PROGRAM VERSION
XPGTYPE ; TYPE OF PROGRAM
XSTART ; RELATIVE START ADDRESS
XMICRO ; RELATIVE ADDRESS TO MICRO
; PROGRAM LOAD MODULE
0 ; CHECKSUM
0 ; MEMORY PARAMETER
0, REPEAT XPGHDL-LOC
FI
USE BASE
; PROCESS HEADER DECLARATION
AX= XHGHL ; GENERAL HEADER HEADER
XPROCHL:= AX ; LENGTH OF PROCESS HEADER
;-----------------------------------------------------------------------
; GENERAL PROCESS DESCRIPTION
;-----------------------------------------------------------------------
AX= -19-XUSERIDLENGTH
XBEYLGT:= -AX ; SIZE OF AREA BEYOND REGISTERS
XPCPUNAME:= AX, AX=AX+3 ; CPU NAME
XPRIO:= AX, AX=AX+1 ; PRIORITY
XPCAP:= AX, AX=AX+1 ; CAPABILITY REQUIREMENT
BX=0 ; ACCESS:
BNCLASS:= 12 ; LOW ORDER BIT OF CLASS FIELD
BNMAXCL:= 15 ; MAXIMUM CLASSIFICATION CODE
BNCREPR:= BX,BX=BX+1 ; CREATE PROCESS
BNCCRPR:= BX,BX=BX+1 ; CREATE PROCESS WHICH CREATES
; A PROCESS
BNCREPG:= BX,BX=BX+1 ; CREATE AND LOAD PROGRAM
BNCCRPG:= BX,BX=BX+1 ; CREATE PROCESS WHICH CREATES
; AND LOADS PROGRAMS
BNALDEV:= BX,BX=BX+1 ; ALLOCATE DEVICE
BNALMEM:= BX,BX=BX+1 ; ALLOCATE MEMORY
IF BX GT 12 THEN USE 16 FI ; UNDERLINE IF ERROR
XPRCLAIM:= AX, AX=AX+1 ; MEMORY CLAIM FOR PROCESS (WORDS)
XPRSIZE:= AX, AX=AX+1 ; SIZE OF EXECUTING PROCESS
XPFDSX:= AX, AX=AX+1 ; NUMBER OF FILE DESCRIPTIONS
XPIBSX:= AX, AX=AX+1 ; NUMBER OF IO CONTROL BLOCKS
XPSTSX:= AX, AX=AX+1 ; NUMBER OF STREAMS
XPXFSX:= AX, AX=AX+1 ; NUMBER OF TRANSFER LIST ELEMENTS
XPMSGX:= AX, AX=AX+1 ; NUMBER OF MSG BUFFERS
XCURDIR:= AX, AX=AX+1 ; CURRENT DIRECTORY
XFUNCS:= AX, AX=AX+1 ; INITIALIZATION FUNCTIONS CALLED
XIODATA:= AX, AX=AX+1 ;
XUSERID:= AX, AX=AX+XUSERIDLENGTH
XCBASE:= AX, AX=AX+1 ; BASE COPY
XPCB:= AX, AX=AX+1 ; LOGICAL PCB REF
XLEVEL:= AX, AX=AX+1 ; SYSTEM LEVEL
XSYSTEM:= 1 ; SYSTEM LEVEL
XUSER:= 0 ; USER LEVEL
XBOUND:= AX, AX=AX+1 ; REGISTER
XR0:= AX, AX=AX+1 ; REGISTER
IF XR0 NE 0 THEN MESSAGE <:HEADER ERROR:> FI
XR1:= AX, AX=AX+1 ; REGISTER
XR2:= AX, AX=AX+1 ; REGISTER
XR3:= AX, AX=AX+1 ; REGISTER
XR4:= AX, AX=AX+1 ; REGISTER
XR5:= AX, AX=AX+1 ; REGISTER
XR6:= AX, AX=AX+1 ; REGISTER
XR7:= AX, AX=AX+1 ; REGISTER
XBASE:= AX, AX=AX+1 ; REGISTER
XMOD:= AX, AX=AX+1 ; REGISTER
XPROG:= AX, AX=AX+1 ; REGISTER
XPRPC:= AX, AX=AX+1 ; REGISTER
XTIMER:= AX, AX=AX+1 ; REGISTER
XPSW:= AX, AX=AX+1 ; REGISTER
XOLDPRC:= AX, AX=AX+1 ; PREVIOUS PROCESS
XLOCACT:= AX, AX=AX+1 ; LOCAL ACTION
XLOCRET:= AX, AX=AX+1 ; LOCAL ACTION RETURN LINK
XCAUSE:= AX, AX=AX+1 ; LOCAL INTERRUPT CAUSE CODE
XDEVICE:= AX, AX=AX+1 ; DEVICE ADDRESS
XTIMRS:= AX, AX=AX+1 ; TIMER RESET VALUE
XMONRET:= AX, AX=AX+1 ; MONITOR RETURN LINK
XTLINK:= AX, AX=AX+1 ; TIMER LINK
XLINK0:= AX, AX=AX+1
XLINK1:= AX, AX=AX+1
XLINK2:= AX, AX=AX+1
XLINK3:= AX, AX=AX+1 ;
XLINK4:= AX, AX=AX+1 ;
XLINK5:= AX, AX=AX+1 ;
XLINK6:= AX, AX=AX+1 ;
XLINK7:= AX, AX=AX+1 ;
XWORKLGT= 5 ; SIZE OF WORK AREA
XWORK:= AX, AX=AX+XWORKLGT; WORK AREA
XPROCLGT:= AX ; LENGTH OF PROCESS DESCIPTOR ABOV
; REGISTERS
XFIRST= -(XBEYLGT+XPROCHL)
IF XDATA THEN
LOC= XFIRST
XPROCESS ; PROCESS TYPE HEADER
XPRWDS ; LENGTH OF PROCESS FILE
XPROCESSNAME0 ; NAME OF PROCESS
XPROCESSNAME1
XPROCESSNAME2
XCPUNAME0 ; NAME OF REQUIRED CPU
XCPUNAME1
XCPUNAME2
XPRIORITY ; REQUIRED PRIORITY FOR PROCESS
XCAPABILITIES ; REQUIRED CLASSIFICATION LEVEL
; AND CAPABILITIES OF PROCESS
XTOTSZ ; MEMORY CLAIM
XPRLNG ; SIZE OF EXECUTING PROCESS
XPFDS ; NUMBER OF FILE DESCRIPTOINS
XPIBS ; NUMBER OF IO CONTROL BLOCKS
XPSTS ; NUMBER OF IO STAREAMS
XPXFS ; NUMBER OF TRANSFER LIST ELEMENTS
XPMSGS ; NUMBER OF MESSAGE BUFFERS
0 ; CURRENT DIRECTORY
0 ; INITIALIZATION FUNCTIONS CALLED
XIOREF ; REF TO IO DATA
XUSERID0, XUSERID1 ; USER ID
IF XUSERIDLENGTH NE 2 THEN MESSAGE <:USERIDLENGTH ERROR:> FI
0 ; BASE COPY
0 ; XPCB
XPRLEVEL ; REQUIRED EXECUTION LEVEL OF PROC
XBNDSZ ; BOUND
0, REPEAT 7 ; REGISTERS 0-7
XABASE, XABASE, XAPROG, XAPRPC, 100, #6800
0, REPEAT (XPROCLGT-LOC)
FI
;«ff»«ff»
LIST
XPGNAME0= <:LT:>
XPGNAME1= <:U.:>
XPGNAME2= <:EA:>
XVERSION= 1
XPROCESSNAME0= <:LT:>
XPROCESSNAME1= <:U.:>
XPROCESSNAME2= <:TR:>
LOC= #0030+BASE
TEA: 0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,4
WRK: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
USE PROG
C1: MOV R5 #50 ; INCHAR
C2: LDM 3
MOVC 1 R5 ;
MOVC 55 R0
MOD8 3
CIO R0 R5
MOD8 1 ;
SIO R5 R5 ;
SBN R5 1 ;
JMP C2
MOVC 1 R5 ;
RIO R0 R5 ;
XTR R0 7 ;
JMP S5 C3
JMPI #50
C3: MOV R5 #51 ; OUTCHAR
C4: MOVC 1 R5 ;
MOD8 1 ;
SIO R5 R5 ;
SBZP R5 5 ; BREAK?
SBZ R5 1 ; IDATA RDY.?
MON 9 ; OUT OF PROGR.
SBN R5 0 ;
JMP C4
MOVC 1 R5 ;
MOV R0 R6 ;
XTR R6 8 ;
SNE R6 0 ;
JMPI #51
WIO R6 R5 ;
JMPI #51
C5: SVS R6 ; OUTSTRING
MOD8 #E0 ;
MOVC 0 R0 ;
LDS R0 ;
MVP 0.X4 R0 ;
LDS R6 ;
JOZ R0 C6 ; IF "0000" THEN
JMP S5 C3 ; ELSE
SRL R0 8 ;
JOZ R0 C6
JMP S5 C3
ADDC 1 R4 ;
JMP C5
C6: JMP 1.X4 ;
C10: MOV R4 #50 ; NEW LINE
JMP S4 C5
#0A0D
#7F7F
#0000
JMPI #50
C8: MOV R0 R3 ; HEXOUT
MOVC #0023 R0 ;
MOVC 5 R2 ;
C7: JMP S5 C3
SLC R3 4 ;
MOV R3 R0 ;
XTR R0 4 ;
SLO R0 10 ;
MODC 7 ;
ADDC 48 R0 ;
SOB R2 C7 ; LOOP UNTIL 4 HEXOUT
JMP 0.X4 ;
E1: MOVC 48 R5 ;
MOVC 10 R6 ;
XTR R0 7 ;
E2: SGEP R0 10 ; N:10
ADDC 48 R0 ; ASCII TAL
JMP E3 ;
SUB R6 R0 ; R4:=R4-R0
ADDC 1 R5 ;
JMP E2 ;
E3: SWP R0 ;
ADD R5 R0 ;
JMP S5 C3 ; PRINT MSD
SWP R0
JMP S5 C3 ; PRINT LSD
JMP 0.X4 ; RETURN
ST: STC 6 ; PRINT HEADER
JMP S4 C10 ; NL
MOVC 80 R2 ; HEADLINE
MOVC 45 R0 ;
E5: JMP S5 C3 ;
SOB R2 E5 ; 80 CHAR
JMP S4 C10 ; NL
JMP S4 C10 ; NL
MOVC 40 R2 ; PRINT DATE/TIME
MOVC 32 R0 ; PRINT 40 SPACE
E7: JMP S5 C3 ;
SOB R2 E7
JMP S4 C5,<:DATE<58> 19<0>:>
MON READRTC ; GET DATE/TIME
MOV R0 R3
MOV R2 R0
SWP R0 ; GET YEAR
JMP S4 E1 ; PRINT YEAR
MOVC 58 R0
JMP S5 C3 ; PRINT :
MOV R2 R0 ; GET MONTH
JMP S4 E1
MOVC 58 R0
JMP S5 C3 ; PRINT :
MOV R1 R0 ; GET DATA
SWP R0
JMP S4 E1
JMP S4 C5,<: TIME<58> <0>:>
MOV R1 R0 ; GET HOUR
JMP S4 E1
MOVC 58 R0
JMP S5 C3 ; PRINT :
MOV R3 R0 ; GET MIN
SWP R0
JMP S4 E1
MOVC 58 R0
JMP S5 C3 ; PRINT :
MOV R3 R0 ; GET SEC
JMP S4 E1
JMP S4 C10 ;
JMP S4 C10 ; 2XNL
JMP S4 C5,<:** E-A LTU TEST **<10><13><0>:>
JMP S4 C10 ; NL
MOVC 80 R2 ;
MOVC 45 R0 ;
E6: JMP S5 C3 ;
SOB R2 E6 ;
JMP S4 C10 ; NL
UNS 6
JMP S4 C10 ; INDATA LTU
JMP S4 C5,<:INPUTDATA FOR LTU UNDER TEST<0>:>
JMP S4 C10
JMP S4 C5,<: SERIAL NO.<58> <0>:>
H1: JMP S5 C1 ; TAST SER. NO.
SEQ R0 13 ; IF CR THEN NL
JMP H1
JMP S4 C5,<:<10> MODULADDR<58> #<0>:>
H2: JMP S5 C1 ; TAST MODUL #
SNE R0 13 ; IF CR THEN NL
JMP H3
SLL R1 4 ; HEX CALC.
ADDC -48 R0
SLO R0 10
ADDC -7 R0
XTR R0 4
ADD R0 R1
JMP H2
H3: XTR R1 6
JMP S4 C10
JMP RT
F1: MOV R4 #5A ; REG PRINT ROUTINE
F2: MOD R7
SIO R0 R1
XTR R0 8 ; REMOVE "FX"
JMP S4 C8
JMP S4 C5,<: <0>:>
ADDC #40 R1
SBN R1 8
JMP F2
XTR R1 6
SWP R7
ADDC 1 R7
SWP R7
JMP S4 C10
JMPI #5A
F3: MOV R4 #5A ; L-B PRINT ROUTINE
F4: MOD8 #10
RIO R0 R1
JMP S4 C8
JMP S4 C5,<: <0>:>
ADDC #40 R1
SBN R1 8
JMP F4
XTR R1 6
JMP S4 C10
JMPI #5A
ERR: MOV R0 #52 ; SAVE ALL REG.
MOV R1 #53
MOV R2 #54
MOV R3 #55
MOV R4 #56
MOV R5 #57
MOV R6 #58
MOV R7 #59
XTR R1 6 ; HALT LTU
MOVC 0 R0
MOD8 #60
WIO R0 R1
JMP S4 C5,<:<10><10><13>R0<58>=<0>:>
MOV #52 R0 ; PRINT ALL REG.
JMP S4 C8
JMP S4 C5,<: R1<58>=<0>:>
MOV #53 R0
JMP S4 C8
JMP S4 C5,<: R2<58>=<0>:>
MOV #54 R0
JMP S4 C8
JMP S4 C5,<: R3<58>=<0>:>
MOV #55 R0
JMP S4 C8
JMP S4 C5,<: R4<58>=<0>:>
MOV #56 R0
JMP S4 C8
JMP S4 C5,<: R5<58>=<0>:>
MOV #57 R0
JMP S4 C8
JMP S4 C5,<: R6<58>=<0>:>
MOV #58 R0
JMP S4 C8
JMP S4 C5,<: R7<58>=<0>:>
MOV #59 R0
JMP S4 C8
JMP S4 C10 ; NL
JMP S4 C10
JMP S4 C5,<: RB-RAM: <0>:>
JMP S4 C5,<: CH#0 <0>:>
JMP S4 C5,<: CH#1 <0>:>
JMP S4 C5,<: CH#2 <0>:>
JMP S4 C5,<: CH#3 <10><13><0>:>
MOVC #0 R7
JMP S4 C5,<: MODE0 <0>:>
JMP S4 F1
JMP S4 C5,<: MODE1 <0>:>
JMP S4 F1
JMP S4 C5,<: STATUS <0>:>
JMP S4 F1
JMP S4 C5,<: RP.STA <0>:>
JMP S4 F1
JMP S4 C5,<: RX.BUF <0>:>
JMP S4 F1
JMP S4 C5,<: CNT.1 <0>:>
JMP S4 F1
JMP S4 C5,<: CNT.2 <0>:>
JMP S4 F1
JMP S4 C5,<: JTABLE <0>:>
JMP S4 F1
JMP S4 C5,<: TX.BUF <0>:>
JMP S4 F1
JMP S4 C5,<: TX.REG <0>:>
JMP S4 F1
JMP S4 C5,<: RX.REG <0>:>
JMP S4 F1
JMP S4 C5,<: PRDTX <0>:>
JMP S4 F1
JMP S4 C5,<: PRDRX <0>:>
JMP S4 F1
JMP S4 C5,<: PRDON <0>:>
JMP S4 F1
JMP S4 C5,<: PRDLY <0>:>
JMP S4 F1
JMP S4 C5,<: RP.CNT <0>:>
JMP S4 F1
JMP S4 C5,<: L-BANK <0>:>
JMP S4 F3
MOVC 1 R0 ; LTU RUNNING
MOD8 #60
WIO R0 R1
JMP S4 C10
MOV #59 R7 ; STACKPOINTER RETUR
NX: JMP S4 C5,<: NEXT(Y)? <0>:>
JMP S5 C1 ; INCHAR
MODC 89
SEQ R0 0 ; IF Y THEN
JMP OT
JMP S4 C10
JMP ST ; TO START
OT: JMP S4 C10
MON 9
RT: JMP S4 C10 ; RAM-TEST
JMP S4 C5,<: TEST 1. RAMTEST <0>:>
MOVC #00 R0 ; START MED RAM 0,F,E,..
MOVC #04 R2 ; TEST 4 CHANELS
MOVC #00 R4 ; TEST + HALT DATA
MOD8 #60 ;
WIO R4 R1 ; CPU HALTED
MOVC #04 R3 ; 4 TESTPATTERN
JMP L3
L6: ADDC #01 R4 ; TESTPATTERN TO RAM#
MOVC #04 R3 ; 4 TESTPATTERN
JMP L3
L7: ADDC #55 R4 ; GET NEW TESTPAT.
L3: XTR R4 8 ; T-PAT. '00XX'
L4: XTR R0 4 ; 0 TO BIT 15-4
SWP R0 ; CORR. RAM#
MOD R0
CIO R4 R1 ; WRITE IN RAM#
MOD R0
SIO R5 R1 ; READ FROM RAM#
SWP R0
XTR R5 8
SUB R4 R5
JOZ R5 L5 ; IF ERROR THEN
JMP S6 ERR ; ERROR
L5: SOB R0 L4 ;
SOB R3 L7
MOVC #50 R3 ;
CIO R3 R1 ; RESET CHANNEL
ADDC #40 R1 ; NEXT CH#
SOB R2 L6
XTR R1 6 ; MODULADR FOR CH#0
MOVC #01 R4
MOD8 #60 ;
WIO R4 R1 ; CPU RUNNING
JMP S4 C5,<:** OK **<10><13><0>:>
JMP S4 C10 ; INTERN LOOP TEST
JMP S4 C5,<: TEST 2. INTERN LOOP TEST <0>:>
MOVC #00 R4 ;
MOD8 #60 ;
WIO R4 R1 ; CPU HALTED
MOVC #04 R2 ; ANTAL CH#
JMP L8
L9: ADDC #40 R1 ; NEXT CH#
L8: MOVC #00 R4 ; DATA:=0
MOD8 #90
WIO R4 R1 ; INT LOOP ON
RIO R5 R1 ; READ DATA:= 1
SBZ R5 0 ; TEST BIT-0 (IVB)
SBZ R5 8 ; TEST BIT-8 (LB)
JMP S6 ERR
MOVC 1 R4 ; DATA:=0
MOD8 #10
WIO R4 R1 ; WRITE DATA:=0
MOVC 40 R0
SOB R0 LOC
RIO R5 R1 ; READ DATA:= 0
SBN R5 0 ; TEST BIT-0
SBN R5 8 ; TEST BIT-8
JMP S6 ERR
MOVC 0 R4 ; DATA:=1
MOD8 #10
WIO R4 R1 ; WRITE DATA:=1
MOVC 40 R0
SOB R0 LOC
RIO R5 R1 ; READ DATA:=1
SBZ R5 0 ; TEST BIT-0
SBZ R5 8 ; TEST BIT-8
JMP S6 ERR
MOD8 #90
WIO R4 R1 ; INT LOOP OFF
SOB R2 L9
XTR R1 6 ; MODUL ADDR = CH# 0
MOVC #01 R4
MOD8 #60 ;
WIO R4 R1 ; CPU RUNNING
JMP S4 C5,<:** OK **<10><13><0>:>
JMP S4 C10 ; TEST STATIC LINES.
JMP S4 C5,<: TEST 3. STATIC LINE TEST <0>:>
MOD8 #20 ; TEST STATIC LINE SIGNALS
MOVC #03 R3 ; I-A LTU#03
MOVC #00 R0 ; RP:= 0
MOD4 #04
WIO R0 R3 ; I-A LTU CTS1:=0
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 RP-INPUT
JMP A2
A1: ADDC #40 R1 ; NEXT INPUT
A2: RIO R0 R1 ; READ E-A LTU LINE INP.
SBN R0 1
SBN R0 9
JMP S6 ERR
SOB R2 A1
XTR R1 6
MOVC #01 R0 ; RP:= 1
MOD4 #04
WIO R0 R3 ; I-A LTU CTS1:=1
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 RP-INPUT
JMP A4
A3: ADDC #40 R1 ; NEXT INPUT
A4: RIO R0 R1 ; READ E-A LTU LINE INP.
SBZ R0 1
SBZ R0 9
JMP S6 ERR
SOB R2 A3
XTR R1 6
MOVC #00 R0 ; RX:= 0
MOD4 #08
WIO R0 R3 ; I-A LTU CTS2:=0
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 RX-INPUT
JMP A6
A5: ADDC #40 R1 ; NEXT INPUT
A6: RIO R0 R1 ; READ E-A LTU LINE INP.
SBN R0 2
SBN R0 10
JMP S6 ERR
SOB R2 A5
XTR R1 6
MOVC #01 R0 ; RX:= 1
MOD4 #08
WIO R0 R3 ; I-A LTU CTS2:=1
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 RX-INPUT
JMP A8
A7: ADDC #40 R1 ; NEXT INPUT
A8: RIO R0 R1 ; READ E-A LTU LINE INP.
SBZ R0 2
SBZ R0 10
JMP S6 ERR
SOB R2 A7
XTR R1 6
MOVC #00 R0 ; TX:= 0
MOD4 #0C
WIO R0 R3 ; I-A LTU CTS3:=0
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 TX-INPUT
JMP A10
A9: ADDC #40 R1 ; NEXT INPUT
A10:RIO R0 R1 ; READ E-A LTU LINE INP.
SBN R0 3
SBN R0 11
JMP S6 ERR
SOB R2 A9
XTR R1 6
MOVC #01 R0 ; TX:= 1
MOD4 #0C
WIO R0 R3 ; I-A LTU CTS3:=1
MOVC 50 R2
SOB R2 LOC
MOVC #04 R2 ; TEST 4 TX-INPUT
JMP A12
A11:ADDC #40 R1 ; NEXT INPUT
A12:RIO R0 R1 ; READ E-A LTU LINE INP.
SBZ R0 3
SBZ R0 11
JMP S6 ERR
SOB R2 A11
XTR R1 6
JMP S4 C5,<:** OK **<10><13><0>:>
JMP NX ; NEXT TEST
XSTART= ST
NOLIST
;***********************************************************************
;* *
;* C R 8 0 A M O S *
;* D A T A A N D P R O G R A M H E A D E R *
;* G E N E R A T O R P A R T 2 *
;* CONFIG ID: CSS/833 *
;* AUTHOR: JHO *
;* DATE: 790827 *
;* VERSION: 1 *
;* *
;***********************************************************************
MESSAGE <:X2GEN2 V790827:>
USE PROG
XASSEMBLED= LOC
XPGTYPE= 0 ; DEFAULT PROGRAMTYPE
XPGWDS:= LOC ; PROGRAM AREA LENGTH
XMICRO= 0 ; DEFAULT MICRO LOAD MODULE
USE BASE
XCPUNAME0= 0 ; DEFAULT CPU NAME
XCPUNAME1= 0 ; DEFAULT CPU NAME
XCPUNAME2= 0 ; DEFAULT CPU NAME
XPRIORITY= 1 ; DEFAULT PRIORITY
XPRLEVEL= XUSER ; DEFAULT EXECUTION LEVEL
XCAPABILITIES= 0 ; DEFAULT CAPABILITIES
XPROCESSNAME0= 0 ; DEFAULT PROCESS NAME
XPROCESSNAME1= 0
XPROCESSNAME2= 0
XUSERID0= 0 ; DEFAULT USERID
XUSERID1= 0 ; DEFAULT USERID
XABASE= 0
XAPROG= 0
XAPRPC= 0+XSTART
XADJUST:= 0 ; SIZE OF ADJUST AREA
XBNDSZ:= LOC-1+XTND
XIOREF:= XBNDSZ+1+XTRA
XPRLNG:= XIOREF+XIOSIZE
IF XDATA THEN
XTOTSZ:= XPRLNG+XADJUST-XFIRST
ELSE
XTOTSZ:= 0
FI
XPRWDS:= LOC-XFIRST
XPSTS:= XSTS
XPIBS:= XIBS
XPFDS:= XFDS
XPXFS:= XXFS
XPMSGS:= XMSGS
IF XDATA THEN
XASSEMBLED= XASSEMBLED+LOC-XFIRST
ELSE
XASSEMBLED= XASSEMBLED+LOC
FI
IF XASSEMBLED NE WORDS THEN
MESSAGE <:LOCATION COUNTER CORRUPTED:> FI
;«ff»«ff»
LIST
END