; Print the full set of HP 3000 opcodes. ; ; Invocation: ; ; do 3000-print-opcodes [ CPU ] ; ; If the first parameter is non-null, then memory is examined without preloading ; with the numeric values to decode. ; ; Two base opcodes differ, depending on the CPU: ; ; 020104 decodes as MVBL 0 on the Series III ; is the first word of two-word clock instructions on the Series 58 ; ; 020302 is RSW on the Series III ; is the first word of two-word I/O instructions on the Series 58 ; ; One base opcode is used to introduce two-word COBOL Instruction Set ; instructions (020477). if "%1" == "" restore 3000-opcodes.bin if "%1" == "" goto III if "%1" in "III","58" goto %1 echo echo Invoked with unrecognized option "%1". exit :III if exist "3000-opcodes-III.new.lst" delete 3000-opcodes-III.new.lst set CPU III,CIS examine -m @3000-opcodes-III.new.lst 000000-177777 ; The COBOL extension instructions are in bank 3 from 000000-000137. examine -m @3000-opcodes-III.new.lst 03.000000-03.000137 ; Compare the original set to the parsed set and display any differences. ! "E:\Programming\Windows SDK\bin\windiff" -O 3000-opcodes-III.lst 3000-opcodes-III.new.lst if "%1" != "" goto end :58 ; Series 58. ; ; Print the base set of opcodes, excluding the two-word instructions that begin ; with 020104, 020302, and 020477. if exist "3000-opcodes-58.new.lst" delete 3000-opcodes-58.new.lst set CPU S58 examine -m @3000-opcodes-58.new.lst 00.000000-00.020103 examine -m @3000-opcodes-58.new.lst 00.020105-00.020301 examine -m @3000-opcodes-58.new.lst 00.020303-00.020476 examine -m @3000-opcodes-58.new.lst 00.020500-00.177777 ; Print the set of two-word opcodes. ; ; The Amigo clock instructions are in bank 1 from 000000-000057. examine -m @3000-opcodes-58.new.lst 01.000000-01.000057 ; The Amigo I/O instructions are in bank 2 from 000000-000037. examine -m @3000-opcodes-58.new.lst 02.000000-02.000037 ; The COBOL extension instructions are in bank 3 from 000000-000137. examine -m @3000-opcodes-58.new.lst 03.000000-03.000137 ; Compare the original set to the parsed set and display any differences. ! "E:\Programming\Windows SDK\bin\windiff" -O 3000-opcodes-58.lst 3000-opcodes-58.new.lst ; Exit if invoked without the no-reload option. Otherwise, return to the ; caller. :end if "%1" == "" exit