* LEDIT - SMALL, RECORD ORIENTED TEXT EDITOR - NOV 20 2007 - V1B * * LEDIT WAS WRITTEN TO RUN WITH ONE OF THE STANDARD P800 MONITORS, WHICH * PROVIDED THE IO. THIS VERSION IS CHANGED IN SUCH A WAY THAT IT CAN RUN AS * A STAND ALONE PROGRAM, TO BE A TEST FOR THE P860 SIMULATOR AND ALL ITS * SUPPORTED PERIPHERALS. * * - TTY(KEYBOARD/PRINTER) EDITOR CONTROL, RECORD INPUT/PRINT * - PTR(PAPER TAPE READER) RECORD INPUT * - PTP(PAPER TAPE PUNCH) RECORD OUTPUT * - LPT(LINE PRINTER) PRINTING * - CRD(CARD READER) RECORD INPUT * * TTY,PTR AND PTP ARE CONNECTED TO THE PROGRAMMED IO CHANNEL; THE CARD READER * AND LINE PRINTER ARE CONNECTED TO A MULTIPLEX CHANNEL. * * THE SIMULATED CARD READER USES 16 BITS TO STORE CHARACTER CODES. FOR THE * REAL CARD READER THE CHARACTERS ARE CODED IN 12 BIT HOLLERITH, WHICH CODES * ARE STORED IN THE LOWEST 12 BIT OF THE 2 BYTE CHARACTERS OF THE SIMULATED * READER. THE UTILITY '2CDR.PL' CONVERTS A TEXT FILE TO CARD FILE FORMAT * (WITH A .CRD EXTENSION). THIS UTILITY EITHER CONVERTS ASCII CHARACTER CODES * TO 2 BYTE 12-BIT HOLLERITH CHARACTER CODES OR TO 2 BYTE 8-BIT ASCII CODE. * SO FOR BOTH TYPES OF CONVERSION, THE SIMULATED CARD READER HAS TO HANDLE * 16 BIT FOR EACH CHARACTER; FOR THE 2ND TYPE HOWEVER THE CONVERSION IS * EASIER. BECAUSE THE SIMULATED CARDREADER IS CONNECTED VIA A MULTIPLEX * CHANNEL, ITS NEEDS WORD TRANSFER TO MOVE THE CHARACTERS FROM THE CARDREADER * CONTROL UNIT TO MEMORY. THIS PROGRAM USES THE 2ND TYPE OF CARD CHARACTER * CODES, SO DOES NOT NEED THE HOLLERITH=>ASCII CONVERSION (THIS BECAUSE * THE MAIN GOAL OF THE CARD READER SUPPORT IN THIS PROGRAM IS TO TEST THE * MULTIPLEX WORD INPUT LOGIC). This version is assembled with the 0.5 version of the assembler, which allows register renaming as supported by the origional P800 assembler. This feature is applied to the registers A9..A14 to provide these registers a meaningfull name throughout the program. **************************************************************************** * PHILIPS P800 16 BIT COMPUTER SOFTWARE * THE SOURCE IS CREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL) **************************************************************************** * * USAGE * ===== * THE FOLLOWING COMMANDS ARE SUPPORTED BY MEANS OF THE TTY: * (WHEN # IS PRINTED ON THE TTY, A COMMAND IS EXPECTED; WHEN A . (DOT) IS * PRINTED ON THE TTY, A RECORD NUMBER IS EXPECTED). * 1) R[A|P|C] * INPUT RECORDS, STARTING AT RECORD (LINE NUMBER), WHERE 'A' MEANS * READING FROM THE TTY, 'P' READING FROM PTR AND 'C' READING FROM THE * PUNCHED CARD READER. READING STOPS WHEN THE 1ST TWO CHARACTERS OF A READ * RECORD CONTAIN THE CHARACTER COMBINATION :E (WHICH ARE THE 1ST TWO * CHARACTERS OF AN :EOS (END OF SEGMENT) OR :EOF (END OF FILE) SIGN. * TAB EXPANSION IS SUPPORTED FOR TTY AND PTR INPUT RECORDS ('\' IS THE TAB * CHARACTER). MAXIMUM (EXPANDED) INPUT RECORD LENGTH IS 130 CHARACTERS. * 2) P[A|U|P| ] * OUTPUT RECORDS, STARTING WITH RECORD NUMBER AND ENDING WITH * RECORD NUMBER , WHERE 'A' MEANS THAT THE OUTPUT IS PRINTED ON THE TTY, * 'U' THAT OUTPUT IS PUNCHED ON THE PAPER TAPE PUNCHER, 'P' THAT OUTPUT IS * PRINTED ON THE LINE PRINTER, AND ' ' (SPACE) THAT OUTPUT IS ALSO PRINTED * ON THE LINE PRINTER BUT WITHOUT LINE NUMBERS. PUNCHED OUTPUT CAN BE READ * FOR INSTANCE BY THE ASSEMBLER. * 3) / * DELETE RECORD WITH RECORD NUMBER * 4) = * REPLACE RECORD WITH RECORD NUMBER * 5) < * INSERT RECORD BEFORE RECORD NUMBER * 5) ? * PRINT SINGLE RECORD WITH RECORD NUMBER ON CONSOLE (TTY) * 7) T[A|F|X|] * SET TABS: 'A' FOR RECORDS FORMATTED FOR THE ASSEMBLER, 'F' FOR RECORDS * FORMATTED FOR THE FORTRAN COMPILER, 'X' FOR SOME TEXT FORMAT. ANY OTHER * CHARACTER REMOVES ANY TAB SETTING. * 8) ^ * PACKS THE TEXT BUFFER; WHEN RECORDS ARE DELETED, ALL RECORDS GET A * CONSECUTIVE RECORD NUMBER. * 9) $[Y|E] * THE $ CONFIRMED WITH A 'Y' DELETES ALL RECORDS FROM THE TEXT BUFFER AND * REINITIALIZES THE EDITOR TO RECEIVE NEW RECORDS. * THE $ CONFIRMED WITH A 'E' STOPS THE EDITOR. * * SOME COMMANDS CAN BE REPEATED BY TYPING A . (DOT) WHEN A NEXT COMMAND IS * EXPECTED. THE PREVIOUS COMMAND IS EXECUTED THEN, WHILE THE LINE NUMBER IS * INCREMENTED WITH 1. THESE COMMANDS ARE: /, =, <, ? (THE REPEAT COMMAND * ITSELF CAN ALSO BE REPEATED)