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 - download
Length: 35792 (0x8bd0) Types: TextFile Names: »KV.I«
└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS ) └─ ⟦this⟧ »KV.D!KV.I«
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 C5,<:<12><0>:> MOVC 251 R3 W1: SOB R0 LOC SOB R3 W1 ; WAIT 2 SEC 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 0 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 1 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 S4 C10 ; EXT LINE TEST JMP S4 C5,<: TEST 4. EXT. LINE TEST <0>:> MOVC #03 R3 ; I-A LTU #3 MOVC 0 R4 ; MOD8 #60 WIO R4 R1 ; CPU HALTED E-A LTU MOD8 #60 WIO R4 R3 ; CPU HALTED I-A LTU MOVC 4 R2 ; ANTAL CH# JMP T1 T2: ADDC #40 R1 ; NEXT CH# ADDC #40 R3 T1: MOVC 0 R4 ; DATA:=0 MOD8 #10 WIO R4 R1 ; WRITE LOCAL MOVC 250 R5 SOB R5 LOC RIO R0 R3 ; READ REMOTE MOD8 #10 WIO R0 R3 ; WRITE REMOTE MOVC 249 R5 SOB R5 LOC RIO R5 R1 ; READ LOCAL SBZ R5 0 ; DATA=0? JMP S6 ERR ; TO ERROR MOVC 1 R4 ; DATA:=1 MOD8 #10 WIO R4 R1 ; WRITE LOCAL MOVC 250 R5 SOB R5 LOC RIO R0 R3 ; READ REMOTE MOD8 #10 WIO R0 R3 ; WRITE REMOTE MOVC 249 R5 SOB R5 LOC RIO R5 R1 ; READ LOCAL SBN R5 0 ; DATA=1? JMP S6 ERR ; TO ERROR MOVC 0 R4 ; DATA:=0 MOD8 #10 WIO R4 R1 ; WRITE LOCAL MOVC 250 R5 SOB R5 LOC RIO R0 R3 ; READ REMOTE MOD8 #10 WIO R0 R3 ; WRITE REMOTE MOVC 249 R5 SOB R5 LOC RIO R5 R1 ; READ LOCAL SBZ R5 0 ; DATA=0? JMP S6 ERR ; TO ERROR MOVC 1 R4 ; DATA:=1 MOD8 #10 WIO R4 R1 ; WRITE LOCAL MOVC 250 R5 SOB R5 LOC RIO R0 R3 ; READ REMOTE MOD8 #10 WIO R0 R3 ; WRITE REMOTE MOVC 249 R5 SOB R5 LOC RIO R5 R1 ; READ LOCAL SBN R5 0 ; DATA=1? JMP S6 ERR ; TO ERROR SOB R2 T2 XTR R1 6 MOVC 1 R4 MOD8 #60 WIO R4 R1 ; CPU RUNNNING JMP S4 C5,<:** OK **<10><13><0>:> JMP ERR ; 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