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: 29184 (0x7200) Types: TextFile Names: »TOMO.P«
└─⟦9587d9d2a⟧ Bits:30005191 8" CR80 Floppy CR80FD_0188 ( CR/D/1733 TOMO.B directory TDRV_SYSGEN EPROM /SD-SYS ) └─⟦c3a348aac⟧ └─ ⟦this⟧ »TOMO.D!TOMO.P«
«ff»-------------------------------------------------------------------------------- CR80 ASSEMBLER VERSION 800114 ASSEMBLY OF FILE: TOMO.M AT 86:06:18 13:32:37 -------------------------------------------------------------------------------- 00000002 0 0000 LIST U N C L A S S I F I E D PAGE 01 ; 00000003 0 0000 ;********************************************************************* ; 00000004 0 0000 ; ; 00000005 0 0000 ; PROJECT: HAWK/AMC ; 00000006 0 0000 ; MODULE NAME: TOMO - TEST OUTPUT MODULE ; 00000007 0 0000 ; MODULE ID: AMC/323 ; 00000008 0 0000 ; MODULE VERSION: 04 ; 00000009 0 0000 ; MODULE RELEASE: 01 ; 00000010 0 0000 ; AUTHOR/DATE: SL/860526 ; 00000011 0 0000 ; SOURCE FILE: TOMO.S ; 00000012 0 0000 ; ; 00000013 0 0000 ; TOMO SUPPORTS SELECTIVE GENERATION OF ON-LINE TRACE OUTPUT. ; 00000014 0 0000 ; ; 00000015 0 0000 ; TOMO CONSISTS OF TWO PARTS: ; 00000016 0 0000 ; 1) TEST GENERATION PROCEDURE (TESTGP) ; 00000017 0 0000 ; 2) TEST OUTPUT PROGRAM (TESTOP) ; 00000018 0 0000 ; ; 00000019 0 0000 ; TESTGP GENERATES THE TEST OUTPUT DATA AND SENDS THEN ; 00000020 0 0000 ; VIA A BUFFER QUEUE TO TESTOP. ; 00000021 0 0000 ; ; 00000022 0 0000 ; TESTOP READS THE TESTDATA FROM THE QUEUE AND STORES THEM IN ; 00000023 0 0000 ; AN INTERNAL MEMORY BUFFER. LATER TESTOP RETRIEVES THE DATA, ; 00000024 0 0000 ; ENCODES THEM AND PRINTS THEM AT THE TEST OUTPUT DEVICE. ; 00000025 0 0000 ; ; - 0 0000 ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 02; 00000026 0 0000 ; CHANGE RECORD: ; 00000027 0 0000 ; -------------- ; 00000028 0 0000 ; VERSION: 01, RELEASE: 01, AUTHOR/DATE: SL/800824 ; 00000029 0 0000 ; CHANGES: INITIAL RELEASE ; 00000030 0 0000 ; 00000031 0 0000 ; VERSION: 02, RELEASE: 01, AUTHOR/DATE: SL/830531 ; 00000032 0 0000 ; CHANGES: BUFFER MEMORY PLACED AT #7E00 WITH SIZE 460 WORDS. ; 00000033 0 0000 ; ; 00000034 0 0000 ; VERSION: 03, RELEASE: 01, AUTHOR/DATE: SL/840301 ; 00000035 0 0000 ; CHANGES:- AMCGEN1 V0103 INCLUDED ; 00000036 0 0000 ; - FACILITIES INCLUDED FOR ON-LINE CHANGE OF ; 00000037 0 0000 ; MODULE TESTPRIORITY MASK ; 00000038 0 0000 ; TIME FORMAT (H.M.S OR S.MS) ; 00000039 0 0000 ; LINE LENGTH (0: 132, ELSE 80 CHARS/LINE) ; 00000040 0 0000 ; - POSSIBILITY FOR DYNAMIC CHANGE OF DEVICE ADDRESS DELETED. ; 00000041 0 0000 ; ; 00000042 0 0000 ; VERSION: 04, RELEASE: 01, AUTHOR/DATE: SL/860526 ; 00000043 0 0000 ; CHANGES:- RELEASE 01.04 OF AMCGEN1 USED ; 00000044 0 0000 ; - PATCH FACILITY INCLUDED. ; 00000045 0 0000 ; - SELECTION OF TESTPOINT TEXT INCLUDED ; 00000046 0 0000 ; ; 00000047 0 0000 ;********************************************************************* ; 00000048 0 0000 ; 00000049 0 0000 BEGIN MODULE ; BEGIN TOMO MODULE ; 00000050 0 0000 GLOBAL XWORK, QTOMOSTATE, TRFRES ; ; 00000051 0 0000 XPROGRAM= TRUE, XDATA= TRUE ; PROGRAM AND DATA INCLUDED ; 00000052 0 0000 NOLIST ; 00000086 0 0000 MESSAGE: AMCGEN1, RELEASE 01.04 00000424 0 0001 MESSAGE: X2GEN1 V790827 00000426 1 0000 MESSAGE: X2GEN1 MUST BE CALLED INITIALLY IN SOURCE 00000609 0 002C LIST ; 00000610 0 002C XPGNAME0= <:AM:> ; PROGRAM NAME ; 00000611 0 002C XPGNAME1= <:C/:> ; ; 00000612 0 002C XPGNAME2= <:23:> ; ; 00000613 0 002C XPROCESSNAME0= <:TO:> ; PROCESS NAME ; 00000614 0 002C XPROCESSNAME1= <:MO:> ; ; 00000615 0 002C XPROCESSNAME2= <: :> ; ; 00000616 0 002C XVERSION= 1 ; NOT USED, C.F.HEADER INFORMATION ; 00000617 0 002C XPRIORITY= 2 ; PRIORITY LEVEL ; 00000618 0 002C XMSGS= 0 ; MAX NO. OF MESSAGES ; - 0 002C ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 03; 00000619 0 002C ;===================================================================== ; 00000620 0 002C ; TEST GENERATION PROCEDURE. ; 00000621 0 002C ; ; 00000622 0 002C ; CHECK THE TESTPRIORITY OF THE MODULE AGAINST THE TESTPOINT PRIORITY. ; 00000623 0 002C ; CHECK THE NUMBER OF USED BUFFERS IN THE TOMO QUEUE. ; 00000624 0 002C ; INCREMENT TESTQUEUESTATE IF USED>= MAXUSED, ; 00000625 0 002C ; ELSE TRANSMIT A BUFFER WITH THE TESTQUEUESTATE AND CLEAR IT IF IT ; 00000626 0 002C ; WAS NONZERO. INSERT TESTPOINT SPECIFICATION AND TEST DATA INTO ; 00000627 0 002C ; BUFFERS AND TRANSMIT THE BUFFERS. ; 00000628 0 002C ;===================================================================== ; 00000629 0 002C ; 00000630 0 002C BEGIN USE PROG ; BEGIN TESTGENERATION PROCEDURE ; 00000631 1 0021 ENTRY TESTGP, RDUMP ; ; 00000632 1 0021 MAXUSED= 27 ; MAX 27 BUFFERS IN QUEUE; ; 00000633 1 0021 L1: MOV SAVE9 R1 ; RESTORE(R1); ; 00000634 1 0022 L0: MOV SAVE8 R0 ; RESTORE(R0); ; 00000635 1 0023 JMP 4. X7 ; RETURN; ; 00000636 1 0024 ; 00000637 1 0024 TESTGP: ; TESTGEN PROCEDURE: ; 00000638 1 0024 MOV R0 SAVE8 ; SAVE(R0); ; 00000639 1 0025 MVP 0. X7 R0 ; IF PARAM1=0 THEN ; 00000640 1 0026 XTR R0 5 ; MODULE:=PARAM1[0:5]; ; 00000641 1 0027 MOD COMMON ; ; 00000642 1 0028 MOD R0 ; PRI:=TESTPRIORY.MODULE; ; 00000643 1 0029 MOV TESTPRIORITY R0 ; ; 00000644 1 002A JOZ R0 L0 ; IF PRI=0 THEN RETURN; ; 00000645 1 002B MOV R1 SAVE9 ; SAVE(R1); ; 00000646 1 002C MVP 0. X7 R1 ; ; 00000647 1 002D SRL R1 11 ; TESTPRI:=PARAM1[11:13]; ; 00000648 1 002E XTR R1 3 ; ; 00000649 1 002F MOD R1 ; IF PRI [TESTPRI] = 0 THEN ; 00000650 1 0030 IBZ R0 0 ; ; 00000651 1 0031 JMP L1 ; RETURN; ; 00000652 1 0032 MOV SAVE8 R0 ; ; 00000653 1 0033 MOV SAVE9 R1 ; ; 00000654 1 0034 MOV R7 SAVE15 ; SAVE(LINK); ; 00000655 1 0035 MOVC SAVE15 R7 ; ; 00000656 1 0036 STC 6 ; SAVE(REGISTERS); ; 00000657 1 0037 JMP T2 ; GOTO TEST RESERVATION; ; 00000658 1 0038 T1: MOVC 0 R2 ; NEXT TRY: ; 00000659 1 0039 MON WAITEVENT ; GIVEUP TIME, ; 00000660 1 003A T2: MOD COMMON ; TEST RESERVATION: ; 00000661 1 003B MOVC TRFRES R0 ; RESERVE TESTGEN PROCEDURES; ; 00000662 1 003C RESS X0 1 ; IF ALREADY RESERVED THEN ; 00000663 1 003D JMP T1 ; GOTO NEXT TRY; ; - 1 003E ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 04; 00000664 1 003E MOD COMMON ; RE.TESTQUEUESTATE; ; 00000665 1 003F MOVC QTOMOSTATE R5 ; ; 00000666 1 0040 MOVC QTOMO R2 ; QUEUE:=QTOMO; ; 00000667 1 0041 MON GETQUEUECOUNT ; GET USED BUF COUNT; ; 00000668 1 0042 MODC MAXUSED ; IF COUNT>= MAXUSED THEN ; 00000669 1 0043 IHSP R0 0 ; ; 00000670 1 0044 INC 0. X5 ; INCR(TESTQUEUESTATE); ; 00000671 1 0045 JMP L12 ; GOTO RELEASE TESTGEN; ; 00000672 1 0046 MOVC XWORK R4 ; BUF:=XWORK; ; 00000673 1 0047 MOVC QTOMO R2 ; QUEUE:=QTOMO; ; 00000674 1 0048 JOZ X5 L3 ; IF TESTQUEUE STATE<>0 THEN ; 00000675 1 0049 ; BEGIN ; 00000676 1 0049 MOVC #FFFF X4 ; 0.XWORK:=#FFFF; ; 00000677 1 004A MOV X5 R0 ; 1.BUF:=TESTQUEUESTATE; ; 00000678 1 004B MOV R0 1. X4 ; ; 00000679 1 004C XTR X5 0 ; TESTQUEUESTATE:=0; ; 00000680 1 004D MON SENDBUFFER ; SENDBUFFER(BUF,QUEUE); ; 00000681 1 004E L3: ; END; ; 00000682 1 004E MON GETTIME ; READRTC; ; 00000683 1 004F MOVL R01 3. X4 ; (3,4).BUF:=TIME; ; 00000684 1 0050 MOV SAVE15 R6 ; ; 00000685 1 0051 MVP 3. X6 R0 ; TEXT:=PARAM3; ; 00000686 1 0052 INEP R0 0 ; IF TEXT<>0 THEN ; 00000687 1 0053 MOD XPROG ; TEXT:=TEXT+PROG; ; 00000688 1 0054 ADDC 0 R0 ; ; 00000689 1 0055 MOV R0 2. X4 ; 2.BUF:=TEXT; ; 00000690 1 0056 MVP 0. X6 R0 ; GET (PARAM1,PARAM2); ; 00000691 1 0057 MVP 1. X6 R1 ; ; 00000692 1 0058 MOVL R01 0. X44 ; (0,1).BUF:=(PARAM1,PARAM2); ; 00000693 1 0059 IBN R0 14 ; IF PARAM1[MEMDUMP] THEN ; 00000694 1 005A JMP L10 ; GOTO MEMORY DUMP; ; - 1 005B ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 05; 00000695 1 005B ;===================================================================== ; 00000696 1 005B ; SEND PARAMETER BUFFER. ; 00000697 1 005B ; FILL AND SEND BUFFERS WITH THE CONTENT OF THE SPECIFIED REGISTERS. ; 00000698 1 005B ;===================================================================== ; 00000699 1 005B ; 00000700 1 005B XTR R1 8 ; MASK:=PARAM1[0:7]; ; 00000701 1 005C MOV R1 1. X4 ; 1.BUF:=MASK; ; 00000702 1 005D MON SENDBUFFER ; SENDBUFFER(QUEUE,BUF); ; 00000703 1 005E MOVC SAVE8 R5 ; STACK:=SAVE8; ; 00000704 1 005F MOVC -1 R0 ; BIT:=-1; ; 00000705 1 0060 L4: ; TESTNEXT: ; 00000706 1 0060 ADDC 1 R0 ; INCR(BIT); ; 00000707 1 0061 SLO R0 8 ; IF BIT<8 THEN ; 00000708 1 0062 JMP L5 ; BEGIN ; 00000709 1 0063 MOD R0 ; ; 00000710 1 0064 IBNP R1 0 ; IF MASK[BIT] THEN ; 00000711 1 0065 MOV X5 X4 ; MOVE(STACK,BUF,1); ; 00000712 1 0066 ADDC 1 R4 ; INCR(BUF); ; 00000713 1 0067 ADDC 1 R5 ; INCR(STACK); ; 00000714 1 0068 IHSP R4 XWORK+5 ; IF BUF>=XWORK+5 THEN ; 00000715 1 006A MOVC XWORK R4 ; BUF:=XWORK; ; 00000716 1 006B MON SENDBUFFER ; SENDBUFFER; ; 00000717 1 006C JMP L4 ; GOTO TESTNEXT; ; 00000718 1 006D L5: ; END; ; 00000719 1 006D SEQP R4 XWORK ; IF BUF<>XWORK THEN ; 00000720 1 006F MOVC XWORK R4 ; BUF:=XWORK; ; 00000721 1 0070 MON SENDBUFFER ; SENDBUFFER; ; 00000722 1 0071 JMP L12 ; GOTO RELEASE TESTGEN; ; - 1 0072 ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 06; 00000723 1 0072 ;===================================================================== ; 00000724 1 0072 ; MEMORY DUMP. ; 00000725 1 0072 ; INSET COUNT INTO THE PARAMETER BUFFER AND SEND IT. ; 00000726 1 0072 ; FILL MEMORY CONTENT INTO BUFFERS AND SEND THEM. ; 00000727 1 0072 ;===================================================================== ; 00000728 1 0072 ; 00000729 1 0072 L10: ; MEMORY DUMP: ; 00000730 1 0072 MVP 2. X6 R3 ; COUNT:=PARAM3[0:7]; ; 00000731 1 0073 XTR R3 7 ; ; 00000732 1 0074 MOV R3 1. X4 ; 1.BUF:=COUNT; ; 00000733 1 0075 IBNP R0 15 ; IF PARAM1[RMEMDUMP] THEN ; 00000734 1 0076 MOV SAVE8 R1 ; ADDR:=RESTORE(R0); ; 00000735 1 0077 L11: ; NEXTBUF: ; 00000736 1 0077 MOVC XWORK R4 ; BUF:=XWORK; ; 00000737 1 0078 MON SENDBUFFER ; SENDBUFFER(QUEUE,BUF); ; 00000738 1 0079 SGE R3 1 ; IF COUNT>=1 THEN ; 00000739 1 007A JMP L12 ; BEGIN ; 00000740 1 007B MODC 5 ; ; 00000741 1 007C MOVM X1 X4 ; MOVE(ADDR,BUF,5); ; 00000742 1 007D ADDC-5 R3 ; COUNT:=COUNT-5; ; 00000743 1 007E JMP L11 ; GOTO NEXTBUF; ; 00000744 1 007F ; END; ; 00000745 1 007F L12: ; RELEASE TESTGEN: ; 00000746 1 007F MOD COMMON ; RELEASE TESTGEN PROTECTION; ; 00000747 1 0080 MOVC TRFRES R0 ; ; 00000748 1 0081 RELS X0 1 ; ; 00000749 1 0082 MOVC SAVE8 R7 ; RESTORE(REGISTERS); ; 00000750 1 0083 UNS 7 ; ; 00000751 1 0084 JMP 4. X7 ; RETURN; ; - 1 0085 ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 07; 00000752 1 0085 ;===================================================================== ; 00000753 1 0085 ; REGISTER DUMP NOT INFLUENZED BY PRIORITY. ; 00000754 1 0085 ; SEND TWO BUFFERS WITH THE CONTENT OF ALL REGISTERS ; 00000755 1 0085 ; AND THE PROCESS BASE. ; 00000756 1 0085 ;==================================================================== ; 00000757 1 0085 ; 00000758 1 0085 RDUMP: ; REGISTER DUMP: ; 00000759 1 0085 MOV R7 SAVE15 ; SAVE(LINK); ; 00000760 1 0086 MOVC SAVE15 R7 ; SAVE(R0-R6); ; 00000761 1 0087 STC 6 ; ; 00000762 1 0088 MOVC QTOMO R2 ; QUEUE:=QTOMO ; 00000763 1 0089 MON GETQUEUECOUNT ; GET USED BUF COUNT; ; 00000764 1 008A IHS R0 MAXUSED ; IF COUNT>=MAXUSED THEN ; 00000765 1 008C JMP L21 ; GOTO RESTORE; ; 00000766 1 008D MOVC XWORK R4 ; BUF:=XWORK; ; 00000767 1 008E CLR 0. X4 ; 0.BUF:=0; ; 00000768 1 008F MOVC SAVE8 R0 ; (1-4).WORK:=RESTORE(R0-R3); ; 00000769 1 0090 MOVC XWORK+1 R1 ; ; 00000770 1 0091 MODC 4 ; ; 00000771 1 0092 MOVM X0 X1 ; ; 00000772 1 0093 MOVC QTOMO R2 ; QUEUE:=QTOMO; ; 00000773 1 0094 MON SENDBUFFER ; SENDBUFFER(QUEUE,BUF); ; 00000774 1 0095 MOVC XWORK R1 ; (0-4).BUF:=(RESTORE(R4-R7) ; 00000775 1 0096 MODC 4 ; ,0.XBASE); ; 00000776 1 0097 MOVM X0 X1 ; ; 00000777 1 0098 MOV XBASE R0 ; ; 00000778 1 0099 MOV R0 4. X4 ; ; 00000779 1 009A MON SENDBUFFER ; SENDBUFFER(QUEUE,BUF); ; 00000780 1 009B L21: ; RESTORE: ; 00000781 1 009B MOVC SAVE8 R7 ; RESTORE(REGISTERS); ; 00000782 1 009C UNS 7 ; ; 00000783 1 009D JMP 1. X7 ; RETURN; ; 00000784 1 009E END ; ; - 0 002C ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 08; 00000785 0 002C ;===================================================================== ; 00000786 0 002C ; TEST OUTPUT MODULE. ; 00000787 0 002C ;===================================================================== ; 00000788 0 002C ; 00000789 0 002C USE BASE ; 00000790 0 002C ; 00000791 0 002C BUFSIZE= 460 ; SIZE OF INTERNAL DATA BUFFER; ; 00000792 0 002C BUFMEMORY:= #7E00 ; BUFFER MEMORY START ADDRESS; ; 00000793 0 002C TPIPOS= 39 ; LENGTH OF TP IDENTIFIER; ; 00000794 0 002C DEVICE: 1 ; OUTPUT DEVICE ADDRESS; ; 00000795 0 002D LFORMAT: 1 ; FORMAT (LINELENGTH=80:<>0 ; 00000796 0 002E ; LINELENGTH=132:0); ; 00000797 0 002E TFORMAT: 0 ; TIME FORMAT (0 - H,M,S ; 00000798 0 002F ; 1 - 10 MS UNITS); ; 00000799 0 002F TEXTMODE: 0 ; TEXT MODE (0 - TEXT IN MODULE ; 00000800 0 0030 ; <> 0 TEXT IN TPTEXT);; 00000801 0 0030 READYMASK: #81 ; READYMASK (V24,VDU: #0A00 ; 00000802 0 0031 ; V24,MP: #0A00 ; 00000803 0 0031 ; SCM,VDU: #0001 ; 00000804 0 0031 ; SCM,MP: #0081); ; 00000805 0 0031 BNINRDY: 1 ; INPUT READY (SCM:1, V24:10) ; 00000806 0 0032 BNBREAK: 5 ; BREAK BIT (SCM:5, V24:13) ; 00000807 0 0033 RECENABLE: #37 ; ENABLE RECEIVER (SCM: #37 ; 00000808 0 0034 ; V24: 3) ; 00000809 0 0034 RECDISABLE: 7 ; DISABLE RECEIVER (SCM: 7 ; 00000810 0 0035 ; V24: 1) ; 00000811 0 0035 STATUSREG= #100 ; STATUS REGISRER (N/A FOR V24) ; 00000812 0 0035 CMDREG= #300 ; COMMAND REGISTER (N/A FOR V24) ; 00000813 0 0035 DELAY: 10 ; DELAY BEFORE NEXT POLLING; ; 00000814 0 0036 POSITION: 0 ; POSITION ON LINE; ; 00000815 0 0037 OLDSTATUS: 0 ; DEVICE STATUS, NEW STATUS IS ; 00000816 0 0038 ; OR'ED INTO OLD IN OUTCHAR; ; 00000817 0 0038 U10MS: 0 ; 10 MS UNITS FROM OUTTPI ; 00000818 0 0039 INTRPT: 0 ; INTRPT SPEC; ; 00000819 0 003A IN: 0 ; BUFFER INPUT POINTER; ; 00000820 0 003B OUT: 0 ; BUFFER OUT POINTER; ; 00000821 0 003C BUFCOUNT: 0 ; NO. OF DATA BLOCKS IN BUFFER; ; 00000822 0 003D BUFSTART: 0 ; DATA BUFFER START ADDRESS; ; 00000823 0 003E BUFTOP: 0 ; TOP OF DATA BUFFER; ; 00000824 0 003F REGMASK: 0 ; SAVE LOC FOR REGISTER OUTPUT; ; 00000825 0 0040 TBRKR1: 0 ; SAVE LOC FOR R1 IN TESTBREAK; ; 00000826 0 0041 BREAKLINK: 0 ; SAVE LOC FOR TESTBREAK PROC. ; 00000827 0 0042 NEXTBUFLINK: 0 ; SAVE LOC FOR NEXTBUF PROCEDURE ; 00000828 0 0043 INCHARLINK: 0 ; SAVE LOC FOR INCHAR PROCEDURE ; - 0 0044 ; UNCLASSIFIED«ff»(TOMO) ; UNCLASSIFIED PAGE 09; 00000829 0 0044 ; 00000830 0 0044 LF= 10 ; 00000831 0 0044 CR= 13 ; 00000832 0 0044 SP= 32 ; 00000833 0 0044 EVENTMASK:= BMDELAY OR BMINTERRUPT ; 00000834 0 0044 ; 00000835 0 0044 ;START OF TESTOP PROGRAM AREA. ; 00000836 0 0044 ;----------------------------- ; 00000837 0 0044 USE PROG ; 00000838 1 009E ; 00000839 1 009E IOUTCHAR: OUTCHAR ; PROCEDURE REFERENCES: ; 00000840 1 009F IOUTHEXA: OUTHEXA ; ; 00000841 1 00A0 IOUTTEXT: OUTXT ' BASE:'; ; 00000847 1 00A8 LOSTTXT: <:DATA LOST: <0>:> ; TEXT 'DATA LOST: '; ; 00000848 1 00AE SELECTTXT: <:SELECT <0>:> ; ; 00000849 1 00B2 MODULETXT: <:ODULE NO: __<8><8><0>:>; ; 00000850 1 00BA MASKTXT: <: TEST MASK: __<8><8><0>:>; ; 00000851 1 00C3 TIMETXT: <:IME FORMAT: _<8><0>:> ;