Two program examples running under P856-DOS are presented: 1) A Fortran compilation, link and execution; 2) A program assembly, link and exection. The source programs are read from the papertape reader, so first have to be converted to papertape format with the aid of the (perl) program 2ptr.pl. For the assembly program this looks as follows: F:\FTD2XX>perl 2ptr.pl PTRDOM.s Convert PTRDOM.s to PTRDOM.ptr PTRDOM.s is converted PRTDOM is a small program that reads records from the papertape reader and then prints these records on the printer. For Input/Output, the DOS services are used. The used Fortran program TSQRT is already available in papertape format from a previous example. The FPGA is assumed to be programmed; the FPGA board is linked with a PC by means of the JTAG connection. The (perl) Panel program on the PC takes care of the communication between the PC and the FPGA board with the emulated P856. F:\FTD2XX>perl P8Panel-020.pl [start the Panel program on the PC] **P8Panel, version 0.020 **P856-022 (32kW)** Reset USB1 USB1 device was already Closed Open USB1 device USB1 device is Open Init JTAG [Initialize the JTAG connection] > log exa111211.txt [Make a log of the session; with this text as result] Set LOG ON, LOG dumped in exa111211.txt > mc [Master Clear] > attach ptr TSQRT.ptr [put the Fortran source in the reader] > rtc on Set RTC On [Real Time Clock switched on] > boot md0 [Boot DOS from disk 0] After IPL is loaded, Boot starts IPL (Default) Run, TTY switched to CPU MONITOR ? DOM [Name of the monitor to start; asked for by IPL] **DOS 05 ** [DOM comes alive] DATE : 11-12-11 TIME : 17:38 BATCH PROCESSING ? N USERID: SYSTEM [login] S:RDS [Read source from papertape to temp file /s] S:PRT /S [and print the result] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM 0000 IDENT TSQRT 0001 C TEST HSF 0002 7 FORMAT(1H ,F10.2) 0003 A=3 0004 B=1.7 0005 C=-31.92 0006 ROOT = (-B+SQRT(B**2 - 4.0*A*C))/(2.0*A) 0007 WRITE (2,7) ROOT 0008 PAUSE PA 0009 A=3 0010 B=4 0011 ROOT = SQRT(A*A + B*B) 0012 WRITE (2,7) ROOT 0013 STOP ST 0014 END :EOS :EOF S:HSF /S [compile the content of /S; listing being printer as below] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM HSFC VER. 02 0000 0 IDENT TSQRT 0001 C TEST HSF 0002 1 7 FORMAT(1H ,F10.2) 0003 2 A=3 0004 3 B=1.7 0005 4 C=-31.92 0006 5 ROOT = (-B+SQRT(B**2 - 4.0*A*C))/(2.0*A) 0007 6 WRITE (2,7) ROOT 0008 7 PAUSE PA 0009 8 A=3 0010 9 B=4 0011 10 ROOT = SQRT(A*A + B*B) 0012 11 WRITE (2,7) ROOT 0013 12 STOP ST 0014 13 END :EOF PROG ELAPSED TIME: 00H-00M-32S-880MS- S:LKE M [and link; linked program put in temp file /L] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM TSQRT 0008 F:MS 01DC F:SEQW 02EE F:SEQU 0300 F:PREP 043E F:EXCL 0498 F:VARP 077C F:AWDS 080C F:LWDS 0846 F:OUTN 0884 F:FLOC 09FC F:ICIC 0BEC F:COPY 0C14 F:BAZP 0C34 F:IORC 0C6E F:IOCS 0CE6 F:STAT 0D14 F:ASCI 0DEE F:IOWS 0E06 SQRT 0E0E F:DI 0EF8 F:DD 0FFC F:DM 11B0 F:DN 132C F:T3 138A F:RI 13BA F:FX 14B2 F:FL 1540 F:RD 1552 F:RM 167A F:RP 17AE F:TLN 1882 F:TRA 18E6 *** SYMBOL TABLE *** $TSQRT 01A2 R %TSQRT 0164 R F:ASCI 0DEE R F:AW 080C R F:CL 0574 R F:CLIO 07D4 R F:CLOR 0E0C R F:COP 0C14 R F:DD 1018 R F:DI 0F2A R F:DM 11CA R F:DN 132C R F:ER 02B4 R F:ER03 02A2 R F:ER04 02A6 R F:ER10 02AA R F:ER11 02AE R F:ERLK 02B2 R F:FCT 0000 A F:FL 1540 R F:FLOC 09FC R F:FX 14B8 R F:ICI 0BEC R F:IOAS 0C52 R F:IOB 0C34 R F:IOCS 0CE6 R F:IOCV 0E0A R F:IOP 0C4A R F:IORC 0C6E R F:IORQ 0C92 R F:IOZ 0C46 R F:L1 057C R F:L2 0580 R F:LPFC 0002 A F:LW 0846 R F:MESS 0DDA R F:OUTN 0884 R F:PA 024C R F:PREP 043E R F:RACL 07EA R F:RD 1568 R F:RECV 0E08 R F:RI 13E4 R F:RLWS 0DCE R F:RM 1690 R F:RN 185E R F:RP 17B0 R F:RS 17B4 R F:RSEV 0E06 R F:RSQR 0E30 R F:SEQU 0300 R F:ST 0220 R F:STAS 0D14 R F:STAT 0D2C R F:SUB 0800 R F:SW 02EE R F:T1 14BC R F:T3 1398 R F:TLN 1882 R F:TRA 18E6 R F:TYFC 0001 A F:VAR 077C R ****** START = 0054 LENGTH = 1922 REGION = 0D47 :EOF PROG ELAPSED TIME: 00H-01M-38S-780MS- S:RUN [run the linked Fortran program from /L] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM 2.99 [result 1] F:PA F:PA 5.00 [result 2] F:ST F:ST PROG ELAPSED TIME: 00H-00M-05S-860MS- EXIT CODE = 00 S: Keyboard interrupt (Panel: STOP) [with a CtrlE the computer in the FPGA/P856 is stopped] P 1BAA IR 5F02 PSW FC40 H E TI R 1BAA FC40 783E 5459 0000 0000 0082 783E 04E4 B000 13C0 4902 7822 801E 022E CPU stopped; TTY switched to Panel 20 ReadSwitches per second; secs:911.796875 > attach ptr PTRDOM.ptr [another papertape is put in the papertape reader] File TSQRT.ptr detached from device PTR and closed File PTRDOM.ptr attached to device PTR [... the assembly program source] > run [FPGA/P856 restarted] Run, TTY switched to CPU S:RDS [read the source to temp file /S] S:LST /S [and show its content] 0000 \IDENT\PTRDOM 0001 * READ A RECORD FROM SOURCE INPUT AND PRINT 0002 * 0003 STR\LDKL\A14,STK\SUBR STACK POINTER 0004 RD\CF\A14,READ\RECORD FROM HSR 0005 \LD\A1,RSTAT\END OF FILE? 0006 \ANK\A1,1\EOF? 0007 \RF(0)\PR\NO 0008 \LKM\\YES; EXIT 0009 \DATA\3\EXIT 0010 * 0011 PR\LD\A1,RL\RECORD LENGTH 0012 \ADK\A1,2\+2 0013 \ST\A1,PL\= PRINT RECORD LENGTH 0014 \CF\A14,PRINT\PRINT RECORD 0015 \RB\RD\NEXT RECORD 0016 \DATA\0 0017 \DATA\0 0018 \DATA\0 0019 STK\DATA\0 0020 * 0021 * READ RECORD 0022 READ\LDK\A7,/82\STANDARD READ 0023 \LDKL\A8,RECB 0024 \LKM\ 0025 \DATA\1 0026 \RTN\A14 0027 * 0028 * ECB FOR READING RECORDS 0029 RECB\DATA\/E1\SOURCE INPUT FILE CODE 0030 \DATA\RBUF\BUFFER POINTER 0031 \DATA\80\MAX LENGTH 0032 RL\DATA\0\LENGTH READ 0033 RSTAT\DATA\0\STATUS 0034 \DATA\0 0035 * 0036 * PRINT RECORD 0037 PRINT\LDK\A7,/86\STANDARD WRITE 0038 \LDKL\A8,PECB 0039 \LKM 0040 \DATA\1 0041 \RTN\A14 0042 * 0043 * ECB FOR PRINTING RECORDS 0044 PECB\DATA\2\FILE CODE 0045 \DATA\PBUF\BUFFER POINTER 0046 PL\DATA\0\REQUESTED LENGTH 0047 \DATA\0\EFFECTIVE LENGTH 0048 \DATA\0\STATUS 0049 \DATA\0 0050 * 0051 * PRINT/READ BUFFER 0052 PBUF\DATA\/2020 0053 RBUF\RES\40 0054 \END\STR :EOS :EOF S:ASM /S [assemble the program; listing printed as below] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM 2-PASS ASSEMBLER - NAT LAB - VERSION 7.3 01/04/80 PAGE 1 DATE 11-12-11 IDENT PTRDOM TIME 17H-54M-53S 0000 IDENT PTRDOM ASM 7.3 0001 * READ A RECORD FROM SOURCE INPUT AND PRINT 0002 * 0003 0000 86A0 002A R STR LDKL A14,STK SUBR STACK POINTER 0004 0004 F6A1 002C R RD CF A14,READ RECORD FROM HSR 0005 0008 8140 0040 R LD A1,RSTAT END OF FILE? 0006 000C 2101 ANK A1,1 EOF? 0007 000E 5004 RF(0) PR NO 0008 0010 2804 LKM YES; EXIT 0009 0012 0003 DATA 3 EXIT 0010 * 0011 0014 8140 003E R PR LD A1,RL RECORD LENGTH 0012 0018 1102 ADK A1,2 +2 0013 001A 8141 0054 R ST A1,PL = PRINT RECORD LENGTH 0014 001E F6A1 0044 R CF A14,PRINT PRINT RECORD 0015 0022 5F20 RB RD NEXT RECORD 0016 0024 0000 DATA 0 0017 0026 0000 DATA 0 0018 0028 0000 DATA 0 0019 002A 0000 STK DATA 0 0020 * 0021 * READ RECORD 0022 002C 0782 READ LDK A7,/82 STANDARD READ 0023 002E 80A0 0038 R LDKL A8,RECB 0024 0032 2804 LKM 0025 0034 0001 DATA 1 0026 0036 F03A RTN A14 0027 * 0028 * ECB FOR READING RECORDS 0029 0038 00E1 RECB DATA /E1 SOURCE INPUT FILE CODE 0030 003A 005E R DATA RBUF BUFFER POINTER 0031 003C 0050 DATA 80 MAX LENGTH 0032 003E 0000 RL DATA 0 LENGTH READ 0033 0040 0000 RSTAT DATA 0 STATUS 0034 0042 0000 DATA 0 0035 * 0036 * PRINT RECORD 0037 0044 0786 PRINT LDK A7,/86 STANDARD WRITE 0038 0046 80A0 0050 R LDKL A8,PECB 0039 004A 2804 LKM 0040 004C 0001 DATA 1 0041 004E F03A RTN A14 0042 * 0043 * ECB FOR PRINTING RECORDS 0044 0050 0002 PECB DATA 2 FILE CODE 0045 0052 005C R DATA PBUF BUFFER POINTER 0046 0054 0000 PL DATA 0 REQUESTED LENGTH 0047 0056 0000 DATA 0 EFFECTIVE LENGTH 0048 0058 0000 DATA 0 STATUS 0049 005A 0000 DATA 0 0050 * 0051 * PRINT/READ BUFFER 0052 005C 2020 PBUF DATA /2020 0053 005E RBUF RES 40 0054 END STR PAGE 2 DATE 11-12-11 IDENT PTRDOM TIME 17H-57M-50S SYMBOL TABLE PBUF 005C R PECB 0050 R PL 0054 R PR 0014 R PRINT 0044 R RBUF 005E R RD 0004 R READ 002C R RECB 0038 R RL 003E R RSTAT 0040 R STK 002A R STR 0000 R ASS.ERR. 0000 :EOF PROG ELAPSED TIME: 00H-03M-21S-200MS- S:LKE M [link; result in temp file /L] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM PTRDOM 0008 ****** START = 0008 LENGTH = 00B6 REGION = 00CB :EOF PROG ELAPSED TIME: 00H-00M-06S-400MS- S: Keyboard interrupt (Panel: STOP) [with a CtrlE the computer in the FPGA/P856 is stopped] P 1BAA IR 5F02 PSW FC40 H E TI R 1BAA FC40 783E 5459 0000 0000 0082 783E 04E4 7B3A 13C0 4902 7822 801E 022E CPU stopped; TTY switched to Panel 20 ReadSwitches per second; secs:366.140625 > reset ptr [put the source in the reader again, now as input to PTRDOM] File PTRDOM.ptr reattached to device PTR > run [FPGA/P856 restarted] Run, TTY switched to CPU S:RUN [PTRDOM runned from /L with its printed output as below] LABEL = DOS5 DATE = 23/09/08 PACK NBR = 001 SYSTEM \IDENT\PTRDOM * READ A RECORD FROM SOURCE INPUT AND PRINT * STR\LDKL\A14,STK\SUBR STACK POINTER RD\CF\A14,READ\RECORD FROM HSR \LD\A1,RSTAT\END OF FILE? \ANK\A1,1\EOF? \RF(0)\PR\NO \LKM\\YES; EXIT \DATA\3\EXIT * PR\LD\A1,RL\RECORD LENGTH \ADK\A1,2\+2 \ST\A1,PL\= PRINT RECORD LENGTH \CF\A14,PRINT\PRINT RECORD \RB\RD\NEXT RECORD \DATA\0 \DATA\0 \DATA\0 STK\DATA\0 * * READ RECORD READ\LDK\A7,/82\STANDARD READ \LDKL\A8,RECB \LKM\ \DATA\1 \RTN\A14 * * ECB FOR READING RECORDS RECB\DATA\/E1\SOURCE INPUT FILE CODE \DATA\RBUF\BUFFER POINTER \DATA\80\MAX LENGTH RL\DATA\0\LENGTH READ RSTAT\DATA\0\STATUS \DATA\0 * * PRINT RECORD PRINT\LDK\A7,/86\STANDARD WRITE \LDKL\A8,PECB \LKM \DATA\1 \RTN\A14 * * ECB FOR PRINTING RECORDS PECB\DATA\2\FILE CODE \DATA\PBUF\BUFFER POINTER PL\DATA\0\REQUESTED LENGTH \DATA\0\EFFECTIVE LENGTH \DATA\0\STATUS \DATA\0 * * PRINT/READ BUFFER PBUF\DATA\/2020 RBUF\RES\40 \END\STR :EOS PROG ELAPSED TIME: 00H-01M-00S-740MS- EXIT CODE = 82 S:BYE [stop the DOS session] USERID: Keyboard interrupt (Panel: STOP) [with a CtrlE the computer in the FPGA/P856 is stopped] P 1BAA IR 5F02 PSW FC40 H E TI R 1BAA FC40 783E 5459 0000 0000 0082 783E 04E4 7B3A 13C0 4902 7822 801A 022E CPU stopped; TTY switched to Panel 20 ReadSwitches per second; secs:131.53125 > exit [exit the Panel program on the PC] Logfile exa111211.txt is closed