The Motorola Users Group Library. When the M6800 family was new... sometime around 1974, we started collecting programs that may be of general interest to everybody. The programs that people submitted are the programs that are denoted below. Obviously, since they date back over 10 years ago, some of them are kinda outdated, and some are downright dumb! But there is a good deal of information that is held in these programs, and it's free. Since our architecture hasn't changed much in these past years (why change a good thing?) most of these routines can be assembled into either 6800, 6801, 6809, or 68HC11 code. Some changes may have to be done to make it compatible with our lower performance 6805 members. Please note that some of the programs were assembled with a Motorola development system in mind, which included Macro Assemblers & such. These programs will have to be tailored to your specific needs and assembler. Below is a 'mini-index' of the available programs. MOTOROLA M6800 USER GROUP LIBRARY MINI-INDEX SYSTEM ROUTINES Monitors, Operating Systems - 29, 90, 100, 114, 121, 123 Simulators - 100, 108 Debug Routines - 39, 43, 49, 53, 114 Interpreters, Compilers - 65 Cross-Computer - 19, 67 MATH ROUTINES Intger - 7, 8, 9, 23, 27, 32, 46, 72, 95, 96, 125 Floating Point - 15, 32, 50, 75, 76, 89, 101 BCD Routines - 22, 31, 32, 96, 98 Functions - 23, 27, 55, 72, 75, 76, 89, 92, 95, 113 Number Base, Code Conversion 1, 6, 22, 24, 25, 31, 35, 37, 46, 68, 70, 77, 86, 88, 97, 125 I/O DRIVERS & ROUTINES Printer Drivers - 4, 5, 10, 11, 18, 60, 93, 103, 110 Punch Drivers - 10, 11, 17, 60, 104, 105, 109 Card and Tape Reader - 10, 11, 16, 51, 59, 60, 104, 106 Keyboard - 2, 3, 10, 11, 60, 91, 116 Plotter and Graphing - 54, 64 Disk - 41, 58, 79, 81, 99, 106 Miscellaneous I/O - 66, 80, 102 UTILITY ROUTINES Sort - 61, 107 Clocks - 62, 117, 118 Cross-Computer 87, 99 D2 Kit - 73, 116, 117, 122, 123, 125 Test Programs - 12, 13, 14, 38, 115, 124 PROM/EPROM Programmer - 21, 28, 69, 83, 84 General - 33, 34, 36, 42, 45, 53, 56, 57, 63, 71, 78, 83, 87, 94, 111, 112, 119, 120, 124 GAMES & DEMO Games - 20, 30, 40, 52, 85, 122 Demo - 44, 48, 73, 86 USERS GROUP LIBRARY INDEX WITH DESCRIPTION 1 - EXBUG ROUTINE CBCDHX Convert a hexadecimal character to a binary number. 2 - EXBUG ROUTINE INCHNP Input character with no parity. 3 - EXBUG ROUTINE INCH Input one character. 4 - EXBUG ROUTINE OUTCH Output one character. 5 - EXBUG ROUTINE PDATA Print CR/LF/DATA string. 6 - BINARY TO DECMAL ASCII CONVERSION Converts a 16-bit binary number into five ASCII decimal characters. 7 - HIGH-SPEED DOUBLE PRECISION MULTIPLY Multiplies two 16-bit unsigned binary numbers resulting in a 32- bit product. 8 - REENTRANT 16-BIT DIVIDE Divides two 16-bit unsigned numbers giving a 16-bit results. 9 - REENTRANT DOUBLE PRECISION MULTIPLY A reentrant routine that multiplies two 16-bit unsigned binary numbers to produce a 32-bit product. 10 - M6800 RESIDENT I/O PACKAGE - EXBUG VERSION (MEXRIO) I/O routines for use with the Resident Editor and Resident Assembler utilizing EXBUG 1.1 OR 1.2. 11 - M6800 RESIDENT I/O PACKAGE-MIKBUG VERSION (MKRIO) I/O routines for use with the Resident Editor and Resident Assembler utilizing MIKBUG Revision 9. 12 - MPU INSTRUCTION TEST To insure the operation of the instruction set. 13 - MEMORY TEST To test memory. To verify that a particular data pattern can be written to a specific location and read back error free. 14 - PIA TEST Test program to functionally verify the EXORciser I/O Module (or PIAs). 15 - 32-BIT REENTRANT FLOATING POINT MULTIPLY Takes two 32-bit floating point numbers and multiplies them. No normalization is attempted. Exponent overflow is not detected. 16 - HIGH DENSITY TAPE LOAD Loads a properly formatted binary object paper tape into memory from a teletype. 17 - HIGH DENSITY TAPE PUNCH Punches a properly formatted binary paper tape from memory for loading with the biload program. 18 - LPOUT ACIA line printer driver. 19 - INTERDATA CROSS ASSEMBLER A cross assembler program that is written for an Interdata computer that will assemble source programs written for the M6800 Microprocessor. 20 - TIC-TAC-TOE Allows an operator to play the game of TIC-TAC-TOE at the EXORciser console device. 21 - "PUNCH" FOR DATA I/O PROM PROGRAMMER Punches a paper tape from any starting address in memory to any finish address. 22 - BCD TO BINARY CONVERSION Convert four BCD digits to their binary equivalent. 23 - SQUARE ROOT OF A 16-BIT NUMBER Program finds square root of a 16-bit number. 24 - UPC (UNIVERSAL PRODUCT CODE) LABEL CONVERSION Decodes the Universal Product Code symbol found on grocery store labels when scanned with an eptical wand. 25 - ASCH DATA TO MORSE CODE CONVERSION Take ASCH data from the keyborad of the EXORciser and convert it to Morse code. 26 - 32-BIT FLOATING POINT PACKAGE Subroutines for adding, subtracting, multiplying, and dividing floating point numbers of a specified format. 27 - RANDOM NUMBER GENERATOR Generates a (pseudo) random sequence of 16-bit binary numbers N(n) using a linear congruential sequence. 28 - "PUNCH" FOR PROLOG SERIES 90 PROM PROGRAMMER To generate a formatted tape for the PROLOG series 90 PROM programmer for programming type 2708 Erasable PROMS. 29 - M6800 REAL-TIME OPERATING SYSTEM A real-time operating system for the Motorola M6800 Microprocessor. 30 - BLACKJACK EXORciser deals Blackjack. 31 - BINARY TO BCD CONVERSION Converts a 16-bit binary number (unsigned) to packed BCD 5-digit (3 byte) 32 - DECIMAL ARITHMETIC PACKAGE This is a group of eight multiple-precision BCD arithmetic subroutines. These subroutines are integer and floating point addition, subtraction, multiplication, and division. Also included is a subroutine to move the numbers to and from the scratchpad (operations: A+C, A-C, A*B, and, C/A). 33 - DELAY SUBROUTINE To generate a delay from 1-> 65,536 milliseconds. To test a PIA bit (for either a one or zero) until either the test is met or a time-out occurs. 34 - OFFSET LOAD MEMORY FROM TAPE Load memory from paper tape reader (ASR33) at a location in memory at a constant offset location from that specified on the tape. 35 - BNASC This subroutine converts an unsigned 16-bit number from binary to ASCH of any base between 2 and 16. 36 - CHRISTMAS CARD LIST Prints address labels. Provision for index, loading, verification, and deletion of individual labels. 37 - REENTRANT ASCII TO BAUDOT CONVERTER SUBROUTINE (ASTOBAUD) Converts ASC11 characters to their BAUDOT equivalents including shift codes. 38 - TEXT STRING (TXTSTG) A test string is input via keyboard followed by EOT (CTRL/D) delimiter. The text string is then printed repeatedly. Exit is by CPU Reset. Useful as I/O checkout, general system functioning, and effective for demonstrations. 39 - DUMP/HEX/DISPLAY Dumps a block of memory in hex and display mode. Can be called as a subroutine or driven from the control console. 40 - HANGMAN This is a game in which the computer selects a word from a programmed list of words. The selection is randomized. The player then enters guesses of letters in the word. The game is completed when the word is correctly identified, or when eight incorrect guesses results in display of the entire HANGMAN. 41 - MEMORY DUMP TO DISKETTE (FDISK) Dump the contents of memory onto an EDOS2 structured diskette in the Motorola defined format (S0,S1,S9). 42 - VERIFY PAPER TAPE COPIES (TAPVRF) Compares paper tape copies punched in any format with the original paper tape. 43 - DEBUG Debug package for M6800. The package provides commands for: examine and/or change of memory locations, examine and/or change of processor registers, step-by-step program execution, input of binary formatted paper tape on teletype reader. 44 - TOWERS OF HANOI SOLUTION Solves the "Towers of Hanoi" puzzle for up to nine disks. Was written to demonstrate how to write recursive programs on the M6800. 45 - WL *03 (WIRE LISTER) Creates, edits, and prints a file of signal names and pin coordinates from a PC board. The printout could be used in an automatic wirewrapping system. 46 - NON-LINEAR CONVERSION TABLES (CVTBLS) This program converts any X value between 0 and 10,240 to a Y value between 0 and 10,240. The conversion utilizes look-up tables of 11 y values, with a linear interpolation between them. 47 - ASSEMBLER/EDITOR INTERNAL TRANSFER ROUTINE (EXBUG)-AETX.1 This program, when loaded after the co-resident Assembler/Editor software, allows internal two-way transfer between the Assembler and the Editor without the external tape transfers otherwise noted. Edit buffer and assembler symbol table are separately maintained. 48 - BIORHYTHM Produces a plot of a person's biorhythm - physical, emotional, and intellectual cycle. 49 - TRACE Trace is a subroutine which the user jumps to at various "best points" and is a new un-debugged program for the purpose of printing out the address followed by the contents of the A and B registers. This allows tracing of the flow of the new program up to the point at which it "blows". 50 - 24-BIT REENTRANT FLOATING POINT PACKAGE (1) addition; (2) subtractions; (3) multiplication; (4) division; (5) float; (6) fix to 16-bit integer; (7) negate; (8) clear; (9) copy; (10) compare*; (11) string to fit pnt*; (12) fit pnt to string*. 51 - RDR1.B RAM memory loader for Motorola format hex paper tape using 300 char/sec reader. Loads memory with a single program and halts. 52 - MISSIONARIES AND CANNIBALS (MISCAN) The object of the game is to move three missionaries and three cannibals across a river, in a boat that can only accommodate two people. 53 - DUMP Memory dump using MIKBUG for I/O. 54 - CHARACTER GENERATION ON X-Y RECORDER. The system accepts alphanumeric characters from keyboard and translates them into a series of x-y displacement voltages, forming the shape of entered character on x-y recorder. 55 - CYCLIC REDUNDANCY CHECK CHARACTER GENERATOR Calculation of the CRCC of a data buffer stored in locations Bebuffer -Ebuffer. 56 - DECODE Provides the convenience of a "backwards" assembler, that is, given a machine-resident block of object code the program will analyze it and provide a pseudo-source listing of code. 57 - PRTMSG A reentrant message printing routine. 58 - DISK FILE TRANSFER To give EXORciser users with single drive unit EXORdisks the capability to copy a file from one diskette to another without using paper tape or cassette as intermediate media. 59 - QUICK LOAD (QLOAD) Loads an EXORciser format object tape into memory without stopping the tape after each record. Will detect and indicate checksum and no change errors. 60 - M6800 RESIDENT I/O PACKAGE - MINIBUG II VERSION (M2R1O) I/O routines for use with the Resident Editor and Resident Assembler utilizing MINIbug N. 61 - MPL CORE SORT PROGRAM Sorts data arrays in ascending order. Data array can either be BINARY (1) or BINARY (2) and a data entry can be of arbitrary length. The sort is done in place. 62 - 24-HOUR CLOCK Maintains and displays 24-hour clock. 63 - TTYIO This is an input-output subroutine. It will output a defined character string or store a character string in a defined buffer (location). 64 - TELETYPE GRAPH GENERATOR Collects variables during real-time data taking and prints out a graph at the end of a run. 65 - MICRO-BASIC BASIC Interpreter for the M6800. 66 - INSTRUMENT INTERFACER Allows peripherals which do not comply with the IEEE standard for programmable instruments to be connnected to a controller which does comply. 67 - M6800 CROSS ASSEMBLER FOR WANG 2200B An M6800 Cross Assembler for Wang 2200B with 4K memory. 68 - GRAY CODE TO BINARY CONVERSION Subroutine for conversion of 16-bit Gray code into 16-bit binary. (Reentrant) 69 - PROM PROGRAMMER For EDOS-2 system, this program allows programming of a 2708 type EPROM with any origin from an object file on diskette. 70 - EIA TO ACSII Converts EIA coded paper tapes to ASC11 coded paper tape. 71 - TELEPHONE DIALER Provides properly timed pulses to a relay from a stored telephone number. 72 - ISORT Calculates the integer square root of any positive number up to 255. (Subroutine). 73 - MUSIC Allows the M6800 to play song sequences which are loaded into memory. Written for the MEK6800D2 kit. 74 - FALSE LOADER Allows the object tape with EXORciser format to be loaded and verified into a specific memory area. 75 - FUNCTION exp (x). ln (x) Calculates the exponent and natural log in hexadecimal floating point format. (Subroutine). 76 - FLOATING POINT MATH ROUTINES FIX - Changes a floating point value to Integer. FLOAT - Changes an integer value to floating point. SQRT - Calculates square root of a floating point value. 77 - BINA Reentrant subroutine to convert an 8-bit binary value into ASCII characters in any base. Also includes a reentrant 8-bit division subroutine. 78 - LPNT - MEMORY DUMP TO LINE PRINTER Allows dumping of memory to line printer. Works like EXBUG function. 79 - MECOPY An MDOS program to copy ASCII MDOS files to an EDOS-2 diskette. 80 - HP2644A INTERFACE I/O Interfaces HP2644A CRT terminal to an EXORciser so that data cartridges can be used for EXBUG functions. 81 - CRT/EDOS Four programs which modify EDOS 2.2 to work with CRT. 82 - PROM Converts PROM paper tapes from Weatherford format to a binary format for DATA I/O PROM programmers. 83 - MEMOVE Reassembles object code to new memory location without reassembly of source file, or moves a block of memory without alteration from one location to another. 84 - PNGEN Allows preparation of PROM programmer input tapes in BNPF format. 85 - NIM GAME Program plays the game of NIM against a human opponent. 86 - MORSE CODE SEND AND RECEIVE Converts Morse code to ASCII and prints on a terminal, or allows operator to type on terminal keyboard and program sends Morse code equivalent. 87 - EXORCYB Allows EXORciser to communicate with time-sharing computer via an additional ACIA and modem. 88 - CODEC - ASCII/BAUDOT Performs the conversion in codes between ASC11 and Baudot and vice versa. 89 - MATH 24-bit floating point routines for addition, subtraction, multiplication, division, square root, sine, cosine, and tangent. 90 - MONTR4 Provides extended monitor functions using MIKBUG I/O routines. 91 - KEYBRD Subroutine to interface hexadecimal keyboard to PIA and perform strobe, debounce, and decode functions. 92 - TRIG Subroutine to calculate the SIN and COS of an angle. 93 - QUMEPR Routine for QUME Sprint Micro-3 (R) printer. Outputs ASCII data to printer with provisions for both 10 and 12 pich printwheels, various line spacing, and top of form control. 94 - PPX Two reentrant subroutines to perform the PUSH X and PULL X functions. No registers are altered and works with interrupts. 95 - INTEG Subroutine Integrates a series of N evenly spaced points (N must be between 7 and 255 inclusive. 96 - SBBCD Subroutine for subtraction of BCD numbers. Routine is reentrant and works with double precision. 97 - CONV Four reentrant subroutines are provided to perform the following conversions. DOAC - Converts a 2-byte binary number to octal ASCII. OABC - Converts octal ASCII characters to 2-byte binary. DABC - Converts a 2-byte binary number to decimal ASCII. DDAC - Converts decimal ASCII characters to 2-byte binary. 98 - DCDRTN This is a collection of 8-digit BCD subroutines including moves from a working register (4 bytes), swap register, binary and 10's complements, clear register, shift nibbles, character search, addition, and zero word test. 99 - FILETX This program allow transfer of Xerox 560 disk files to/from MDOS disk files. 100 - PDPSEM This program emulates a DEC PDP-8 (Reg. T.M.) on the EXORciser. Every program written for a PDP-8 will run on the EXORciser using this program. It includes a monitor simulating the major function switches of the PDP-8. 101 - FPCMP Floating Point Comparison routine compares two ANSI standard FORTRAN single precision floating point numbers and sets condition codes to allow conditional branch operations to take place. May be adapted to various precisions. 102 - DASCH Performs the function of 8-channel digital-to-analog conversion by pulse width modulation. Useful for driving chart recorder or dc voltmeters. 103 - DIABPD Printer Driver for Diablo Hytype II. Outputs MDOS ASCII file from disk to printer. 104 - HSPTD High-speed paper tape driver for Remex or equivalent-high-speed punch/reader combination. Allow generation, checking, and loading of hexadecimal format tapes. 105 - PREMEX Punches an MDOS disk file onto a high-speed punch (Remex). 106 - CRDDRV Loads a properly formatted source assembly file from cards into a source assembly file on MDOS disk. 107 - RSORT Ripple sort subroutine to sort variably dimensioned data blocks. 108 - SIMUL M6800 resident simulator. Simulates a user program by following each instruction and printing a register dump after every instruction. 109 - FLAGX ASCII TO 5x7 matrix character converter written to interface with Remex paper tape punch. 110 - LPDRV1 Line printer driver for MDOS using a 300 Baud RS-232C interface. 111 - ALPHBT Routine to output alphanumeric upper and lowercase characters on the printer in large block style. Requires MDOS. 112 - AUTOBD This routine detects the baud rate of an EXORciser ACIA and programs the ACIA for proper 11 or 10 - bit operation. 113 - ARRAYP 120x128 bit array processor routines to initialize, read, and write to the array. 114 - MARRS This program provides a minimum set of program degbug features including a disassembler and memory editor which uses assembler op codes. (Minimum Assembler And Resident System) 115 - ACIACK Test most of the functions of the ACIA card. 116 - DISKEY A collection of five subroutines to perform LED display and keyboard input functions on the MEK6800D2 kit. (D2 Kit). 117 - KTIME A short subroutine to use the D2 kit for a clock or elapsed timer. 118 - RTCLK A routine which performs functions of a real-time clock by counting interrupts generated by a 60 Hz input. It tracks seconds, munutes, hours, days, months, and years. 119 - PTCG This program punches paper tape which alphanumeric, human-readable character, both upper and lower cases, and with both normal and reversed background (character holes on solid background or solid characters on hole background). 120 - BIGBAN This program prints very large block letters on a printer. 121 - PRMBUG This is a monitor/debug type program, retaining MIKBUG address compatibility, yet with improved I/O and commands. 122 - MSTRMD Version of the game MASTERMIND played on the D2 kit. 123 - D2MON This is a general-purpose monitor written for the D2 kit using an ASCII terminal. There are 18 commands. It is written to be programmed into two 1K EROMs. 124 - PARITY Subroutine to determine parity of an 8-bit word. 125 - HEXCAL Performs addition and subtraction in either base 10 or base 16, converts back and forth between the two bases. Uses the hexadecimal keyboard and displays of the D2 kit. 126 - APRINT Prints address labels in a user defined format. Addresses selected from an easily created file format. This is done according to a specified interest code associated with each record. Optional facility to sort file into alphabetic order by company. 127 - TTDIAL Convert ASCII string to 2-of-8 code and output to touch-tone encoder. 128 - COSLOD Loads RCA/CDP 1802 "COSMAC" OBJECT TAPES TO EXORciser memory for use with PROM Programmer II or III. (Tapes must be COSMAC development system (UT20) compatible). User may supply an offset to the tape load address; the load is verified using a read-after-write routine. 129 - INDLD Indexed Loading Routine This program loads a Motorola S-record object tape anywhere in memory starting at the user specified location. This allows the user to load object tapes that conflict with ROM areas into available RAM 130 - QMPNTR Provides a serial interface to a QUME Model SPRINT 3 at 300 baud. Interface is RS-232C. (Serial to parallel printer interface.) 131 - FILTST FORTRAN callable routine written in assembler that tests for the existance of an MDOS disk file. 132 - LANDER Moon landing game for PEK6800D2 kit. Simulates landing on moon. 133 - VREACT Determines the visual reaction time of the user and displays it on the output device. Instructions for use are included in the program. Output format is restricted to 32 columns/line. 134 - FAST Real Time (Double Chip) Correlator This program is a 32-channel real-time correlater, with sampling rates of up to 1.64Khz using a 2 MHz 6800. As all of the processing is done in software (without the need of a hardware multiplier) this program could reduce the cost of a system. 135 - DECODE09 Provide the convenience of a "backwards" assembler; that is, given a machine resident block of MC6809 object code, the program will analyze it and print a pseudo-source listing of the code that may optionally include labels derived from a user-supplied symbol table. Invalid codes are trapped. 136 - B2716 This program is a MDOS command for programming the INTEL B2716 UVerasable PROM. It uses the Motorola PROM Programmer 1 (PP1). The module has been modified as per the schematic enclosed. The program will program, verify or read a PROM. The user must use the existing "PROMPROG" to load a program from disk. Then "B2716" can be invoked to program the PROM from memory loaded by "PROMPROG". Example is at the end of the listing. 137 - BIGTST MC6802 "Total Instruction Diagnostic" attempts to verify all noninterrupt oriented instructions for the MC6802. 138 - DIVIDE Divides two 16-bit unsigned numbers giving 32-bit result. The 32-bits are for a 16-bit quotient and a 16-bit remainder. 139 - NEWPRINT This program prints the ASCII character set. It provides a continuous output to a console or printer of the ASCII character set. The first and last characters, and the number of characters per line may be selected by re-assembly. The first character of each line is incremented from the previous line. 140 - DOUBLE PRECISION TWO'S COMPLEMENT HIGH/LOW COMPARE The subroutine compares a 16-bit number (ACCA S ACCB) to a set of signed upper and lower limits pointed to by the Index Register. The Program is re-entrant, so it can be used in an interrupt driven data collecting system for data checking. The comparison passes if the following statement is true: low limit < data < high limit. 141 - LIFE Plays John H. Corman's game of Life. See attached documentation pages. (Translation, expansion, and modification of CONVERSE program written by John Kaufmann.) 142 - 12 or 24-HOUR CLOCK Displays time in hours, minutes and seconds on the display of the D2 Evaluation Kit. 143 - SEARCH Searches the MDOS file named on the command line for all matches to the string entered in response to the prompt "?" and will print out on the system console all records that begin with that string. 144 - BTDB 1. IBCD - Convert (4) packed BCD digits to 16-bit binary integer. 2. IBIN - Convert 16 - bit integer to (4) packed BCD digits. 3. FBCD - Convert (4) packed BCD fractional digits to 16-bits binary fraction. 4. FBIN - Convert 16-bit binary fraction to (4) packed BCD fractional digits. 145 - RELOCATING LOADER (RELLDR) Loads Motorola S - record format object records into memory starting a . All references from (supplied by user) are relocated. Computation is: address = + - 146 - MTEST9 Fast memory test for 6809 with ACIA. 147 - FINITE State Machine Emulates the "Moore Machine", a deterministic machine with the following properties: (1) The next state is determined uniquely by the present state and the present input (in this case the present input is a condition). (2) The output is a function of only the present state and is independent of the present input. 148 - MELMOP:D2 Paper tape loader for MEK6800D2 "D2" kit utilizing format defined in M6800 EXORciser User's Guide. 149 - AUTOD2: Automatic Memory Read for D2 Kit Allows the D2 kit to automatically step through memory while displaying the contents of each location. this can be very useful for verifying programs. 150 - VICS13 An updated version of UGL program #13. This program will run in PROM, but UGL #13 will not. See UGL program #13 for additional information. 151 - REVASM dis-assembler for 6800/6801. Generates a pseudo source listing of a memory image object program. The input can be from memory or it can be from an MDOS memory image ('.LO') file. The output list can be routed to the console ('#CN'), the line printer ('#LP'), the console punch ('#CP'), or an MDOS source file ('.SA'). An option allows SWI Opcodes to be interpreted as MDOS calls. Another option enables 6801 opcodes. The program assigns labels to both internal and external references. 152 - DISKEX Lead and error check of every sector on an MDOS diskette, reporting all errors. This command specifies that a diskette is error free (headers and CRC only). Or it will report bad sectors together with error type (standard E-format). It takes 27 seconds to run on a good diskette, several minutes on a very bad one. 153 - PROMO 6 Upgrading the MEX68PP1 Prom Programmer Module in order to handle programming the single voltage EPROM types Motorola TMS2516 or INTEL 2716. 154 - MPLUTIL A library of utility routines for MPL programs. 155 - MACEPP Extracts a particular byte from the Microword produced by MACE in a format that is suitable for the MOTOROLA PROM programmer III or II. 156 - SORT Disk file sort for MDOS ASCII files. Uses SHELLMETZNEP, algorithym for minimum number of compares. Uses resident 5 character assist keys and virtual memory overlay buffers for minimum disk reads. User has extensive controls of how to build keys. Optional features for sorting all words in limited record reformatting capability. 157 - PG2708 Programs 2708 type EPROM's using the D2 kit. The four modes if operation are: (1) Program ($0000) - programs the EPROM from RAM (2) Verify ($0003) - verifies the EPROM from RAM (3) Download ($0006) - reads the EPROM into RAM (4) ERASED ($0009) - verifies that the EPROM is erased. 158 - RINTM VERL 1.2 Output driver and formatter for 40 column printers that contain internal controllers. Specific printer used is a DATEL AIP40 which uses the LCP 40 printer mechanism. 159 - "FILES" To printout an MDOS directory in alphabetic order, sorted either by filename first or suffix first. 160 - BINARY TO UNPACKED BCD OR DECIMAL ASCII CONVERSION. Converts n-byte binary number to n-byte unpacked (1 byte/1 digit, right justified) BCD-number or to n-byte decimal ACSII-number. 2 entry points: BINBCD and BINASC. Add 3-algorithm is used. m and n are specified by defining start and end addresses of numbers in assembly time. 161 - CRCGEW COMPUTE CRC-16 Compute CRC-16 (-x16-x15-x2-1), which is used in Bi-Sync, for data buffer. The routine is reentrant. It can be used to compute the CRC-16 of an incoming message. 162 - GPM General pupose macro generator for M6800. 163 - MTAPE To prepare a magnetic tape, from a paper tape. Input from High Speed Reader, via P.I.A. (Parallel Interface Adapter). Output via T.I. Silent 700, and ACIA (EXORciser). Suitable for assembly language or machine code tapes. 164 - STEPDRV To run a stepping motor with user defined acceleration and deceletation profiles, enabling perfromance optimization. 165 - PRMBOL This program generates the bit pattern necessary for programming a 256x4 bit PROM (82S129). User can specify any present address lines and the state of unprogrammed bits. The user then specifies each output bit of the PROM with a Boolean equation, where the address lines are the variables. 166 - DATE To convert a date expression from the form YY/MM/DD to either LLL NN, NNNN or LLL NN where LLL represents a 3-letter abbreviation of the name of the month, NN represents a two-digit number for the date (leading zero suppressed), and NNNN represents the four-digit year. 167 - SURFACE COMMAND (MDOS) Performs MDOS ROM copies/read-test on disk in drive 1. Asks if drive 1 scratch,and record PSN in error if test fails.