RLV12 V2.0 Command Interface


RLV12 Control Interface

The RLV12 Emulator provides a serial interface with the default settings 8-bit data, no parity, one stop bit and baudrate 115200. You can enter commands to control the interface, display the status and control partitions, units and logging. You can use keywords and parameters to enter commands. the keywords are not case sensitive but parameters like switches and options are case sensitiv. Only backspace is implemented else no command line editing or recalling is (yet) implemented. Most commands can be abbreviated.

Overview of Commands

show
cd
pwd
dir
type
fdisk
attach
detach
help
activate
initialise
logging
load
readinit
dump
bootrom
$

show

You can display the current status of the units. A unit is either not attached, attached to a file or attached to a partition

]show unit
Unit 0 (0x0EA0) is attached to file (0x2C14) /DISKRSX/rsx11mphack.dsk
  Fragments of file
   Size:00005000 Start:00098394
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Unit 1 (0x0EB0) is attached to partition 02 (0x2FDE) starting at sector 0x00005079
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Unit 2 (0x0EC0) is not attached

Unit 3 (0x0ED0) is not attached


]

With the show partition you can display the partitions that have been found when the SD-Card was inserted

]show partitions
Partition 01 (pcb:0x2FF0) starting at sector 0x0000003F MBR at 0x00000000 is not attached
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 02 (pcb:0x2FDE) starting at sector 0x00005079 MBR at 0x00000000 is not attached
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 03 (pcb:0x2FCC) starting at sector 0x0000A0B3 MBR at 0x00000000 is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 04 (pcb:0x2FBA) starting at sector 0x0000F0ED MBR at 0x0000F0B3 is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 05 (pcb:0x2FA8) starting at sector 0x00014127 MBR at 0x000140ED is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 06 (pcb:0x2F96) starting at sector 0x00019161 MBR at 0x00019127 is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 07 (pcb:0x2F84) starting at sector 0x0001E19B MBR at 0x0001E161 is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 08 (pcb:0x2F72) starting at sector 0x000231D5 MBR at 0x0002319B is idle offset 0x0108
  Drive has 0x00005000 blocks, 0x28 sectors/track, 0x02 tracks/cylinder and 0x0200 cylinders  
  Drive type/flags and name 0x01/0x00  RL02

Partition 43 (pcb:0x2F60) starting at sector 0x0002820F MBR at 0x000281D5 is volume C:
        Label .................: "FILES      "
        Bytes per Sector ......:          512
        Sectors per Cluster ...:           16
        Number of FATs ........:            2
        Partition Size ........:      826'560

]

Show Version will display emulator version the firmware version and the compilation date. In adition the type and version of the CPLD interface is shown. This information is also displayed during initialisation.

]show version


Qbridge RLV12 Emulator V2 Vers 0.9.6   May 18 2024  CPLD Interface 22 active  
CPLD Interface is: 22

]

Show status gives an overview of internal signals and the current content of the RLV12 status registers



]show status

CRDY....:1
IRQST...:0
INTQ....:1
INTI....:1
IntQCnt.:00
IntICnt.:00
InitCnt.:00
BusyCnt.:22
IACK....:0
DMG.....:0
ABORT...:0
GPIOR0..:EF
SREG....:C0
CSR.....:000200
BAR.....:000000
DAR.....:000000
MPR.....:000000
BAE.....:000000

]

With the show bootrom command you can display the status of the boot ROM emulation.

]show bootrom
Boot ROM is disabled. 

]

File Commands

Before you can use the SD-Card you need to prepare it. This is disscussed in the next chapter. In general the SD-Card is a MBR formatted FAT-16/32 volume, but you can also add partitions that represent diskimages. If multiple FAT-16/32 volumes exist only the first will be mounted when you insert the SD-Card. You can use the following commands to expolre the FAT-16/32 volume

DIR

Displays the director of the current working path. When the SD-Card is inserted the working path is set to ‘/’.

CD

Change directory allows you to set the working directory. Using ‘cd ..’ goes one level down and you can specify any valid path as in Linux.

PWD

Print working directory displays the path of the current directory

Example

>dir

Directory of /

A    C:00000000  <Volume>     FILES        
A H  C:00000004         4'096 ._.Trashes
     C:00000145  <DIR>        INCLUDE      
  H  C:00000003  <DIR>        .Trashes
  H  C:00000005  <DIR>        .Spotlight-V100
  H  C:00000461  <DIR>        .fseventsd
     C:000000F7  <DIR>        Qbridge11-v2-1
     C:00000450  <DIR>        diskimages

>dir include

Directory of /INCLUDE

A    C:00000145  <DIR>        .            
     C:00000000  <DIR>        ..           
A    C:00000149           396 monitor-subtbl-v1-3.asm
A    C:0000014A         1'251 macro-library-v1-0.asm
A H  C:00000163         6'148 .DS_Store
A H  C:0000014B         4'096 ._.DS_Store
A    C:0000016A        26'522 SD-Card-IO-v2-0.asm
A    C:00000165           448 monitor-chartbl-v1-3.asm
A    C:00000166         8'436 malloc-v1-0.asm
A    C:00000176         4'274 print-v1-1.asm
A    C:0000017B        13'770 monitor-v1-6.asm
     C:00000171  <DIR>        FAT          
A    C:000001A6        12'591 tparse-v1-1.asm

>dir include/fat

Directory of /INCLUDE/FAT

A    C:00000171  <DIR>        .            
     C:00000145  <DIR>        ..           
A    C:00000178         3'668 FAT-DEFS.ASM 

>cd include/fat

>dir

Directory of /INCLUDE/FAT

A    C:00000171  <DIR>        .            
     C:00000145  <DIR>        ..           
A    C:00000178         3'668 FAT-DEFS.ASM 

>cd ../..

>pwd
/

>

TYPE

Type allows you to display the contents of a test file. Note that no check will be made if this is a valid text file.

>type include/fat/fat-defs.asm
;--------------------------------------------------------------------------
;
;       Officially the FAT type should be determined by calculating the number of clusters
;       needed to address a volume, i.e. devide the total number of sectors by the number
;       of sectors per cluster. If the number is less than 4085 then it is a FAT12 volume
.
.
.

.equ    A_Directory     = 4                                     ; File is a directory
.equ    A_Archive       = 5                                     ; The file has been archived

>

DUMP

Dump allows you to dump the contents of a block of a file (not yet implemented), partition (not yet implemented) or unit. The command dumps the content of the sector in octal and optionally decodes the content to RAD50 or displays the content in ASCII


dump rl0
dump -r rl0
dump -c rl0
dump -b<nn> rl0

There is not too much syntax check. Options can be specified multiple times. The ‘-b’ option can be appended with a block number as always the number is interpreted as a decimal number by default but you can prepend the number with 0 to specifiy an octal value or 0x to specify a hex value.

>dump -c -b1 rl0
000000: 000000 170000 007777 000000 000000 000000 000000 000000 '................'
000020: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000040: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000060: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000100: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000120: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000140: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000160: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000200: 000000 000000 000037 000002 000005 000000 000104 102000 '............D...'
000220: 075131 062000 075273 000033 000000 031215 102000 071677 'Yz.d.z.....2...s'
000240: 140761 075273 000120 000000 031215 000000 000000 000000 '...zP....2......'
000260: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000300: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000320: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000340: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000360: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000400: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000420: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000440: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000460: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000500: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000520: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000540: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000560: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000600: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000620: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000640: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000660: 000000 000000 000000 000000 000000 000000 000000 000000 '................'
000700: 177777 000000 000000 000000 000000 000000 000000 000000 '................'
000720: 000000 000001 000006 107123 052122 032526 053440 051117 '......S.RTV5 WOR'
000740: 020113 020040 046122 020062 047527 045522 020040 020040 'K   RL2 WORK    '
000760: 042504 051103 030524 040461 020040 020040 000000 000000 'DECRT11A    ....'

>

Most likely more options will be added as needed in the future.

HELP

You can also attach units to disk image files on the FAT-16/32 partition. If you don’t remember the syntax just type help.

>help
This is the preliminary help. The following commands are available

   DOS like commands
     dir
     cd 
     pwd

   show commands
     show units 
     show partition 
     show logging 

   units commands 
     detach <unit>
     attach <unit> partition<n> 
     attach <unit> <file> 

   partition commands 
     activate partition<n>
     initialize partition<n>
     initialize <file>

   logging control
     logging - display active logging options 
     no logging - disable all logging optoins 
     [no] logging <unit>
     [no] logging units 
     [no] logging registers 

     <unit>     RL0, RL1, RL2, RL3

>

LOAD

This will load the code of the boot ROM image of 512bytes to the PDP‐11 Memory address 100000(8). This boot images is take from the Plessey Peripherals Multifunction interface and just conventiently implements the boot code for various devices, like DK, DD, DL, MM, MT etc.

>load 0100000

>

The real bootROM image of this card consists actually of a ROM at 173000(8) and another at 165000(8). The code is position independant but it expects that they exist both in memory, however as the DL boot code is in the first ROM only the first ROM is loaded. Using a device name that is handled in the second ROM will fail and crash the system. Also the code is loaded into RAM and not at it’s original position. But still I felt it to be very useful in case I have a system without bootrom because at least the part that allows you to boot from DL0..3 is completely within the first part of the ROM.

If the PDP-11 you use implements ODT you can now execute the image. You pretty much only type the code for the device and the unit. The syntax would even allow to specify a non-standard CSR address.


@?
@100000g
$DL3


RSX-11M-PLUS V4.6  BL87   512.KW  System:"HACK11"
>RED DL3:=SY:
>RED DL3:=LB:
>RED DL3:=SP:
>MOU DL3:"HACK11"
>@DL3:[1,2]STARTUP
>;                      PLEASE NOTE
>;
>;      If you have not yet read the system release notes, please do so
>;      now before attempting to perform a SYSGEN or to utilize the new
>;      features of this system.
>;
>;
SET -- Inquire cannot determine terminal type 
>;
>; Please ignore any random characters that may have printed on your
>; terminal just now.  They came from a SET /INQUIRE=TI: command.
>; Evidently your terminal does not recognize escape sequences.
>; This will not affect the running of this command file.
>;
>* Please enter time and date (Default:18-OCT-2020 12:56) [S]: 

BOOTROM

The bootrom command allows you to dynamically enable or disable the bootrom at IO‐page location 173000. You can also optionally write enable or disable the ROM reagion, so you can make modificaitons to the ROM via the console with the help of ODT.

In addition you can load an arbitraty file from the FAT volume as the ROM image. This will take the firt 512bytes from the file specified or less in case the file is less than 512bytes long and place them to the ROM image.

Per default the ROM image is a copy of the Plessey Multifunction card ROM image at 173000.

For the moment the bootrom is disabled during startup

]show bootrom
Boot ROM is disabled. 

]

Accessing the ROM will now result in a bus timeout. This is handy if your system already has a bootrom, e.g. if you have a PDP-11 with diagnostics ROM or with a multifunction card with it’s own ROM.

@17773000/?
@

You can activate the bootrom using the bootrom command

]show bootrom
Boot ROM is disabled. 

]bootrom

]show bootrom
Boot ROM is enabled and read-write.

]

Here you can see how you can examine and deposit data to the ROM on the console via ODT

@17773000/000005 17777
@/017777 5
@/000005 
@

You can disable writing

]bootrom ro

]show bootrom
Boot ROM is enabled and read-only.

]

Writing will not cause a bus timeout but the ROM image will not be updated.

@17773000/000005 0
@/000005 

And you can write enable the bootrom again

]bootrom rw

]show bootrom
Boot ROM is enabled and read-write.

]

And last but not least you can load a file form the FAT partition as the contents of the boot ROM

]type RLV12.INI
[RLV12]
attach rl0 diskrsx/rsx11mphack.dsk
show version
show partition

]bootrom load RLV12.INI

]

No check is done on the contents and you can see the result on the console

@17773000/051133 
17773002/053114 
17773004/031061 
17773006/005135 
17773010/072141 
17773012/060564 
17773014/064143 
17773016/071040 
17773020/030154 
17773022/062040 
17773024/071551 
17773026/071153 
17773030/074163 
@

You can reset the boot ROM to thecontent it has at power-up

]bootrom reset
Resetting Boot ROM to built in ROM.

]

In ODT you can just execute the ROM address 173000 and then type the unit you want to boot

@173000gˇ
$DL0


RSX-11M-PLUS V4.6  BL87   1024.KW  System:"HACK11"
>RED DL:=SY:
>RED DL:=LB:
>RED DL:=SP:
>MOU DL0:"HACK11"
>@DL:[1,2]STARTUP
>;                      PLEASE NOTE
>;
>;      If you have not yet read the system release notes, please do so
>;      now before attempting to perform a SYSGEN or to utilize the new
>;      features of this system.
>;
>;
SET -- Inquire cannot determine terminal type 
>;
>; Please ignore any random characters that may have printed on your
>; terminal just now.  They came from a SET /INQUIRE=TI: command.
>; Evidently your terminal does not recognize escape sequences.
>; This will not affect the running of this command file.
>;
>* Please enter time and date (HH:MM DD-MMM-YYYY) [S]: 18:02 19-may-2024
>TIME 18:02 19-may-2024
>ACS SY:/BLKS=1024.
>CON ONLINE ALL
>ELI /LOG/LIM
>CLI /INIT=DCL/CTRLC/DPR="<15><12>/$ /"
>INS LB:[1,1]RMSRESAB.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBL.TSK/RON=YES/PAR=GEN
>INS LB:[1,1]RMSLBM.TSK/RON=YES/PAR=GEN
>INS $QMGCLI
>INS $QMGCLI/TASK=...PRI
>INS $QMGCLI/TASK=...SUB
>QUE /START:QMG
>INS $QMGPRT/TASK=PRT.../SLV=NO
>QUE LP0:/CR/NM
>START/ACCOUNTING
>CON ESTAT LP0:
>QUE BAP0:/BATCH
>QUE BAP0:/AS:BATCH
>@ <EOF>
>tim /rom
Maius XIX, Anno Domini MMXXIV   XVIII:II
The moon is waxing gibbous. Today is Sunday.
>