Menu

Tree [79097d] master /
 History

HTTPS access


File Date Author Commit
 bootstrap 2024-07-19 Daniel Weaver Daniel Weaver [b2f6a6] Point to the lastest XPL compiler
 compiler 2024-10-29 Daniel Weaver Daniel Weaver [9e97d3] Bump the revision level.
 fill 2024-10-30 Daniel Weaver Daniel Weaver [7bb172] Fix a compiler warning message with the GCC com...
 muse 2024-07-15 Daniel Weaver Daniel Weaver [1993e4] Add extended memory support to the INLINE funct...
 sim 2024-10-29 Daniel Weaver Daniel Weaver [c4424c] Remove an array that was not being used.
 startup 2024-07-19 Daniel Weaver Daniel Weaver [531f18] Files moved to the fill directory
 tools 2024-10-27 Daniel Weaver Daniel Weaver [6dc12a] Add code to disassemble the output of M4EDIT.
 COPYING 2020-07-22 Daniel Weaver Daniel Weaver [96d4f3] New files
 FILES 2024-10-29 Daniel Weaver Daniel Weaver [9b8a91] Update the files used by the current release.
 FM4::.FM 2020-08-23 Daniel Weaver Daniel Weaver [de545d] Add an INT for RTP::
 README 2024-10-29 Daniel Weaver Daniel Weaver [3359a4] Change the release date. Document more changes...
 makefile 2024-10-29 Daniel Weaver Daniel Weaver [abbfb3] Clean the fill directory.
 tools.rtf 2024-10-31 Daniel Weaver Daniel Weaver [79097d] Many changes related to EXTENDED memory. Such ...
 xpl.rtf 2024-10-30 Daniel Weaver Daniel Weaver [ba6662] Document changes to the BNF. This includes cha...

Read Me

The Modcomp XPL compiler is written in XPL.  Therefor it needs another
XPL compiler for bootstrapping.  The bootstrap compiler is found here:
  https://sourceforge.net/projects/xpl-compiler/
The Modcomp compiler needs xpl0010 or later.

Feel free to contact me about the compiler or any MODCOMP related topic.
   shoefoot@gmail.com
I am also interested in buying MODCOMP hardware and software.

I need documentation on the following subjects:
  MODCOMP IV CPU Reference Manual
  MAX IV Input/Output Reference Manual

2024/10/20 version mcs0008 changes:
XCOM REV 1.0
  1) Change Counter 11 to Counter 14
  2) Change COREBYTE to use a 17-bit byte address
  3) Remove the builtin function STRING.
  4) Add the opcode NOP at #8900.
XPL Library
  1) Change Counter 11 to Counter 14
  2) New function: STRSPN - String Span
  3) New function: STRCSP - String Span Complement
MUSE XCOM REV 1.0
  1) Change Counter 11 to Counter 14
  2) Add Extended memory support to the INLINE function
  3) Add $ to the INLINE function to get the current address
  4) Add the builtin function __LINE__ to return the line number
MUSE BOOTSTRAP REV 1.0
  1) Change Counter 11 to Counter 14
MASM Version 1.0
  1) Implement SCW and GCW commands.
  2) Implement Extended memory.  XCO, XCE, DFXA
  3) Add the @ symbol to the %* expansion.
  4) Add all % special characters to the string macro e.g. (=,2,3)
  5) Add %( to supress string expansion.
  6) Add a test routine for special_format() and macro_expand().
  7) Correct the error message for missing labels:
     CEQ, COM, CTS, CTV, CTZ, EQU, SET, XCE, and XCO.
  8) Permit both Extended (@) and Indirect (*) on the same opcode.
  9) New assembler pseudo-ops: EJT, SPC
 10) Add Classic NOP.  Opcode value #8900.
 11) Fix a bug with offsets of common blocks
 12) Add --dop for Dollar Options.  Can be used by IFO and INO.
 13) Allow GTO to use a comma before the label.
 14) Scan past a colon at the beginning of an expression.
M4EDIT Rev 1.0
  1) Implement Extended common blocks.
  2) Increase the number of common blocks to 1024.
  3) Add an option to create fillable object files
MODCOMP simulator version 1.0
  1) Add new REX calls: HOME, ASSIGN, MESSAGE, RELTIL, GET, COLLECT,
     ASCII-TO-CAN, BINAY-TO-DECIMAL, CONVERT-ASCII-TO-NUMBER,
     CAN-TO-ASCII, DOUBLE-BINARY-TO-DECIMAL.
  2) New debug commands: ASS, FILL, MC, UFT, ZREG.
  3) Add a low level simulation for the Cartridge Disc.
  4) Implement Non-virtual mode. Implement the EVMO and XVMO instructions.
  5) Implement the data switches.
  6) Implement processor identification on device zero.
  7) Implement Extended Memory
  8) Add new instructions: MBEV, MBVE, EXMA
  9) Fix bugs in: TOR, MBVV, EXR, EXI and TSBM
 10) Fix the Console simulator so that it works with SAL.
 11) Add a Paper Tape reader to the console simulator.
 12) Add a Magnetic Tape simulator
 13) Add instructions: SIA, SIE, SIR, RIA, RIE, RIR
 14) Add instructions: LCIA, LCIE, LCIR
 15) Add an option --mc to Master Clear the CPU before the object-file load
 16) Correct DVM, DVS, DVX and DVI when ra equals rb.
 17) Add the EXE command to load object modules.
 18) Add --fill option to load the Fill Macro.
 19) Add --int option to set the console interrupt character.
 20) Add --ldX=filename option to set the disc for the LD driver.
 21) Add the Classic NOP instruction.  Opcode #8900
 22) Overflow History no longer gets set for MODCOMP IV/Classic opcodes.
 23) Correct condition codes for compare bit instructions.
 24) Correct the BLT instruction to branch thru the table address.
 25) Correct the arithmetic shift instructions so that they match the real hardware.
 26) Implement the memory starage mode of the Task Information service.
 27) Add debug command TIN to display the Task Info data.
 28) Add debug command DA to display actual memory.
MCDIS Rev 1.0
  1) Implement Extended memory
  2) Add the ability to disassemble TOC save files.
  3) Correctly handle MAX III REX calls that have inline arguments.
  4) Add the -f option to disassemble fillable object files
  5) Add -q to supress certain error messages

2023/04/12 version mcs0007 changes:
XCOM REV 0.6
  1) The Compare instructions jump on Negative set rather than less then.
  2) Optimize MODCOMP III compare to zero.
  3) Generate CRMB instructions when optimal.
  4) Optimize register allocation for magnitude compare.
  5) Optimize unsigned compare for EQ and NE.
  6) Implement Compare Bit instructions for the MODCOMP III.
  7) Use Subtract Bit instructions instead of CBMB when optimal.
  8) Use TBRB instruction instead of CRMB for compares LT or GE to zero.
  9) The peephole optimizer will now backup over ETI instructions that are
     masking a power of two.
 10) Add __LINE__ builtin function.
XPL Library
  1) Add floating point conversion to PRINTF.  Add print formats
     A, E, F and G.
MUSE XCOM REV 0.4
  1) Add all the MODCOMP op-codes.
  2) Add Floating Point to Integer conversion.
  3) Fixed a bug with the last argument of the INLINE function.
  4) Fixed ILINE to allow variables as offsets with short displaced op-codes.
M4EDIT Rev 0.5
  1) The linker will now scan Libraries repeatedly until it has resolved
     all symbols contained within the Library.
  2) Fix an infinite loop when the binary input file is corrupted and
     does not have an end record.
  3) The linker return code will be non-zero if any errors occur.
  4) Add an error message for multiple start addresses.
MODCOMP simulator version 0.6
  1) Change all the Compare and Branch instructions to jump on negative
     rather than less than.  This is how the MODCOMP III actually works.

2022/11/20 version mcs0006 changes:
XCOM REV 0.5
  1) Add a variable($) to represent the current Program Pointer.
  2) Flush out INLINE calls that do not end in an integer constant.
  3) Move $OPTIONS to a common block so it can be accessed by all modules.
  4) Move DATE_OF_GENERATION and TIME_OF_GENERATION to the constant counter.
  5) Fix a bug with a byte index that follows a conditional.
  6) Add an error message if the condition codes are corrupted.
  7) Increase the number of Externals from 64 to 96.
  8) Fix External function call parameters where the relocation was being
     lost when using reentrant code.
  9) Fix another spot where the relocation was being lost when doing
     arithmetic with the ADDR function.
 10) Finalize the start-up code for reentrant modules.
MUSE XCOM REV 0.3
  1) Move $OPTIONS to a common block so it can be accessed by all modules.
  2) Move DATE_OF_GENERATION and TIME_OF_GENERATION to the constant counter.
  3) Add the ALLOCATE builtin function.
Bootstrap XCOM REV 0.2
  1) Move $OPTIONS to a common block so it can be accessed by all modules.
  2) Move DATE_OF_GENERATION and TIME_OF_GENERATION to the constant counter.
MASM Version 0.05
  1) Add the CTV command for special Counter Values.
  2) Add line number to error display when the lines are inside macros.
  3) Set the correct loader bits to allow an absolute start address.
M4EDIT Rev 0.4
  1) Implement the CTV opcodes.
  2) Add a --verbose option to print debug information.
  3) Fix relocation values of External References.
  4) Additional fixes to -r relocatable option.
  5) Add a -t option to trace files being processed.
  6) The -L option can be used with or without an intervening blank.
  7) The -L option will no longer effect .bo files, only library files.
  8) Fixed a bug when RES was used to clear data at the beginning of a file.
  9) The maximum number of libraries was changed from 4 to 8.
 10) Add the -p option to generate partial load files.
MODCOMP simulator version 0.5
  1) Add the ability to break when a watchpoint triggers.
  2) Call history changed from the target address to the address of the call.
  3) Do not Overflow if HSA equals new CSP when executing the PLM instruction.
  4) Fix modified registers in trace display for CRI, TETI, TORI, and TXOI.
  5) Add a notice when hitting return link.
  6) Calculate the Core Partition size for MAX III Task Info.
  7) Add Hex(#) and CAN code(@) to the --dop option.
  8) Add a hexcode array to help with Hex conversions.
  9) Add simulations for the REX Load Overlay calls for MAX III and MAX IV.
 10) Add the ability to load relocatable object modules from the command line.
 11) Add a --load=hhhh option to set the load address for relocatable object
     modules.
MCDIS Rev 0.6
  1) Major rewrite of the disassemble file code to fix a tiny problem where
     instructions would appear after the END statement.
  2) Correct a problem where the disassembler would double up on DFC
     arguments when used after a MAX III REX call.

2022/09/24 version mcs0005 changes:
XCOM REV 0.4
  1) Fix a bug with the FORTRAN calling sequence.
  2) Change conditional compile to use System Options rather than
     Program Options.
  3) Fix an accuracy bug with floating point constants.
  4) Add a Peephole optimizer for "and branch" instructions.
MASM Version 0.04
  1) Fix a bug with macro definitions using MAD where the parameters had the
     wrong numbers.
  2) Implement the LST directive.  Add the -P option to allow LST P.
  3) Added String variables.  Strings start with a colon(:) in column one.
  4) Added text symbols for the --opt option.
M4EDIT Rev 0.3
  1) Add -j option to join Read/Execute memory with Read Only memory.
  2) Fix a bug with common blocks when subsequent object files use different
     order to declare the blocks.
  3) Implement version one of the object file header.
  4) Implement Counter 9 to map the same page in both instruction and data maps.
  5) Expand the --high option to work with both I-Space and O-Space.
XPL Library
  1) Modify PRINTF to allow it to run as reentrant.
MODCOMP simulator version 0.4
  1) Correct the condition codes for Multiply and Divide.
  2) Add the option --mcX to select machine number.
  3) Correct the BLxx instructions so they do not change the Link register
     when the condition is FALSE.
  4) Use version one of the object file header.
  5) Add Virtual Memory with 8 large maps.
  6) Add 16 register blocks.
  7) Add new opcodes:  SIOM, SOOM, SZOM, SCRB, ZIMP, ZOMP, LIMP, LOMP, SOMP,
     MMRB, MRBM, LDAM, LDVM, STAM, STVM.
MCDIS Rev 0.5
  1) Implement version one of the object file header.
  2) Change --recsize to --secsize.

2021/12/09 version mcs0004 changes:
XCOM REV 0.3
  1) Add a 16-bit unsigned integer type for POINTER and the ADDR function.
  2) Fix Floating point to integer conversion for both MODCOMP III and IV.
  3) Remove all MODCOMP IV opcodes from INLINE statements within the
     MODCOMP III compiler.
  4) Fix logical NOT for MODCOMP III when negating integers.
  5) Add option U5 to the conditional compile.
  6) Optimize logical variables used in IF statements in the MODCOMP III
     compiler.  Use TOR instead of XBR.
  7) Optimize hidden function calls by flushing the workstack after the
     call.  For example: after a concatenate.
  8) Optimize register selection for Byte load/store.
  9) Convert option 4 from PIC to Reentrant code generation.
 10) Implement option 4 with MAX III for Reentrant code generation.
 11) Add the -V option to display built-in symbols and predefined externals.
XPL Library
  1) Swap the order of the first two arguments in BCOPY
  2) New function: WCOPY  - Copy blocks of 16-bit words
  3) New function: X:CDFI, X:CFDI - Floating point to Integer routines
  4) New function: STRCMP - String compare
  5) New function: SNCMP  - String compare with length limit
  6) New function: SCCMP  - String compare ignore case
  7) New function: SNCCMP - String compare ignore case with length limit
  8) New function: INDEX  - Return the first occurrence of a character
  9) New function: RINDEX - Return the last occurrence of a character
 10) New function: STRSTR - Find a String in a String
 11) New function: STRSEP - Tokenize a string using delimiters
 12) New function: UPPER  - Convert string to upper case
 13) New function: LOWER  - Convert string to lower case
MASM Version 0.03
  1) Correct the line counter when multiple programs are in one file.
  2) Implement NOL and LST assembler pseudo-ops.
  3) Add the Program name to the final error message.
  4) Add options to select hardware: --mc3 --mc4 --mc5
  5) Add all Modcomp IV and Classic opcodes
  6) Expand the upper limit of macro arguments from 16 to 99.
  7) Correct %0 to expand to the number of arguments
  8) Add %@ to expand to the label used on the macro invocation
  9) Add the error letter B to flag macro expansion errors
 10) Add code to generate a CPU reference card.
 11) Add the pseudo-ops BND, GTC, CENT and LOG2
 12) Add Date and Time macro expansions.  %$ %= and %#
 13) Implement <HH> within single quote strings for hex characters
 14) Implement [ for label generation within macros
Modcomp Disassembler - Rev 0.3
  1) Add all Modcomp IV and Classic opcodes
MODCOMP simulator version 0.3
  1) Add more Modcomp IV opcodes in the disassembler
  2) Change the BLI instruction to have a link of $+2
  3) Implement PSM, PLM and BLT instructions

2021/9/8 version mcs0003 changes:
XCOM REV 0.2
  1) Add $J option to put a branch to the start address at the beginning
     of the code.
  2) Allow the FORTRAN calling sequence when using the %2 option.
  3) Fix a bug with BIT(8) arrays longer than 32767 bytes.
  4) Optimize <expression> & <constant> to ones complement the constant
     in the compiler to work better with the Extract instruction.
  5) Change code to correctly generate ABMM, ADMM instructions.
XPL Library
  1) Allow PRINTF.XPL to be used with the MODCOMP III version.
  2) Reduce the amount of space used by COMPACTIFY.
MASM Version 0.02
  1) Support TABs in the listing.
  2) Relax some of the rules for multiple uses of INT and EXT.
  3) Change the address value printed on the RES directive.
  4) Fix a bug where logical compares had bogus relocation.
  5) Fix a bug with expressions with strings 'X'-'A'
MCDIS Rev 0.2
  1) Add --recsize=nnn option
  2) Extend the number of Externals to 1023.
M4EDIT Rev 0.2
  1) Add option -1 to create a one map task.
  2) Add option -b to output the binary in Kermit BOO file format.
  3) Add option -high=HHHHH to allocate extra memory at the end of the task.
  4) Fixed a problem where ABS allocation overlapped REL memory.
  5) Add option -r to generate a MAX III relocatable object file.
  6) Add option --recsize=nnn to set the output record size.
  7) Display an error message when Externals are referenced without be defined.
MODCOMP simulator version 0.2
  1) Add instruction level simulation for the Console.
  2) Add instruction level simulation for the Card Reader.
  3) Add option --cr=filename for Card Reader simulation.
  4) Add option --rwx to allocate all 64K memory and mark it Read/Write/Exec.

2020/8/25 version mcs0002 changes:
  Adds a new XPL compiler that uses an optimizer with a Common
  Sub-expression Eliminator.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.