DBOOT02 * /--- FILE TYPE = E * /--- BLOCK TITLE 00 000 82/09/03 08.05 * IDENT FDCBOOT,ORIGIN IDENT FDCBOOT * ABS *ORIGIN EQU 4000H * ORG ORIGIN TITLE COMMON DISK BOOT LOADER * * * * COMMON DISK BOOT LOADER * * (C) COPYRIGHT 1982 'CONTROL 'DATA 'CORPORATION * ***** * * FLEXIBLE DISK LOAD ROUTINE FOR VIKING X, IST2, * AND IST3 TERMINALS. * * VERSION 00 * * PROGRAMMER T. E. LARSON * * 'THIS LOADER IS STORED ON THE FLEXIBLE DISK AND * LOADED INTO THE TERMINAL MEMORY AT 4000 HEX BY A * LOAD ROUTINE THAT IS RESIDENT IN THE TERMINAL ROM. * * 'THE PURPOSE OF THIS LOADER IS TO LOAD THE TERMINAL * RESIDENT FROM THE DISK AND PASS CONTROL TO IT. * * 'DATA FROM THE FLEXIBLE DISK CONTROLLER IS LOADED * INTO THE TERMINAL MEMORY BY SECTORS. 'AS EACH * SECTOR IS STORED, IT IS CHECKSUMED AND VERIFIED * USING THE SECTOR CHECKSUM FROM THE DISK CONTROLLER. * 'IF THE SECTOR CHECKSUM IS NOT CORRECT, THE * LOADER WILL TRY TO RE-READ BLOCK OF DATA FROM THE * DISK THREE TIMES BEFORE ABORTING AND WILL THEN * DISPLAY AN ERROR MESSAGE. * * ** * * FILE NUMBERS OF DISK RECORDS (OLD) * 3 IST2 RESIDENT * 4 IST2/3 INTERPRETER * 5 IST3 RESIDENT * 6 IST3 ASCII RESIDENT (THE VIKING RESIDENT) * 7 IST3 ASCII INTERPRETER * 8 VIKING X CONTROLWARE RESIDENT * ** * * FILE NUMBERS OF DISK RECORDS (NEW) * 3 IST2 RESIDENT (21/12 BIT PCN) * 4 IST2/3 INTERPRETER * 5 IST3 RESIDENT (21/12 BIT PCN) * 6 IST2/IST3 ASCII/PLATO RESIDENT * 7 IST3 ASCII INTERPRETER * 8 VIKING X CONTROLWARE RESIDENT * 9 IST3 ASCII/GRAPHICS RESIDENT * ** * /--- BLOCK LDREQU 00 000 82/03/18 07.55 TITLE LOADER EQUATES * * LOADER EQUATES * SECTSZ EQU 128 SECTOR SIZE ZSTACK EQU 5000H MICRO PROCESSOR STACK ADDRESS INTADR EQU 5300H INTERPRETER FWA MLWA EQU 7FFFH MEMORY LWA * TERMINAL TYPE EQUATES VIKX EQU 02 VIKING X SUB TYPE IST3 EQU 01 IST3 SUB TYPE IST2 EQU 00 IST2 SUB TYPE * /--- BLOCK ISTEQU 00 000 82/04/16 08.39 TITLE IST TERMINAL EQUATES * * IST TERMINAL EQUATES * CHARADR EQU 2300H LOAD ADDRESS OF CHARACTER SET * BLOCK0 EQU 08E5H FWA OF BLOCK 00 OF RESIDENT. * KA EQU 41H KEY CODE FOR THE A KEY KP EQU 50H KEY CODE FOR THE P KEY KG EQU 47H KEY CODE FOR THE G KEY TA EQU 16H TOUCH PANEL CODE FOR A TP EQU 18H TOUCH PANEL CODE FOR P TG EQU 14H TOUCH PANEL CODE FOR G * LDVAR EQU 22B4H LOADER VARIABLES CKSUMTBL EQU 22C8H ASCII CHECKSUM TABLE FWA CHECKSUM EQU 22CAH ASCII CHECKSUM LOADFLAG EQU 22CBH 3CH = FULL LOAD COMPLETE RESETFLG EQU 22CCH 3CH = SHORT RESET MODE EQU 22CDH ASCII RESIDENT OPERATING MODE LOADINFO EQU 22CEH LOAD PARAMETERS RUNINFO EQU 22CFH RUN PARAMETERS CLR EQU 22D0H LAST RESTART STORE M.LDFILE EQU 22E5H LDSOURCE EQU 0979H LOAD SOURCE STRADR EQU 097AH INITIAL RESIDENT ADDRESS FULLDF EQU 08DEH FULL LOAD COMPLETE FLAG MLWA EQU 7FFFH MEMORY LWA MESADR0 EQU 99B0H DISPLAY MESSAGE SCREEN ADDRESS MESADR1 EQU 99C0H DISPLAY MESSAGE SCREEN ADDRESS MESADR2 EQU 99D0H DISPLAY MESSAGE SCREEN ADDRESS MESADR3 EQU 96E0H DISPLAY MESSAGE SCREEN ADDRESS MESADR4 EQU 9720H DISPLAY MESSAGE SCREEN ADDRESS MESADR5 EQU 99A0H DISPLAY MESSAGE SCREEN ADDRESS MESADR6 EQU 83B0H DISPLAY MESSAGE SCREEN ADDRESS MESADR7 EQU 9760H DISPLAY MESSAGE SCREEN ADDRESS NEXT EQU 16H NEXT KEY CODE * /--- BLOCK ISTEQU 00 000 82/03/18 07.44 * MNTSW EQU 00 MAINTAINENCE SWITCHES KBDATA EQU 01 KEY BOARD DATA TPDATA EQU 02 TOUCH PANEL DATA IDLOW EQU 03 READ LOWER BITS OF ID IDUP EQU 04 READ UPPER BITS OF ID EXTDATI EQU 05 INPUT EXTERNAL DATA EXTSTAT EQU 06 INPUT EXTERNAL STATUS SYSSTAT EQU 07 TERMINAL SYSTEM STATUS CLADATA EQU 08 CLA DATA * PNLLTS EQU 00 PANEL LIGHTS TXLOW EQU 01 TRANSMIT LOWER BITS TXUP EQU 02 TRANSMIT UPPER BITS BLKERS EQU 03 SCREEN BULK ERASE INTMSK EQU 04 PROCESSOR INTERRUPT MASK ALARM EQU 05 SOUND AUDIBLE ALARM EXTDATO EQU 06 OUTPUT EXTERNAL DATA EXTCNTL EQU 07 OUTPUT EXTERNAL CONTROL * * TERMINAL SYSTEM STATUS * PCRDY EQU 01 PLATO CHARACTER READY HWFLG EQU 02 HARDWARE FLAG (POWER-ON/RESET) PCREQ EQU 04 PLATO CHARACTER REQUEST KDRDY EQU 08 KEYBOARD DATA READY TDRDY EQU 10H TOUCH PANEL DATA READY TMOUT EQU 20H I/O TIME-OUT RESET EQU 40H RESET SWITCH BERAS EQU 80H BULK ERASE IN PROGRESS * /--- BLOCK VXEQU 00 000 82/03/18 07.50 TITLE VIKING X TERMINAL EQUATES * * * * * * * * * * * * * * * * * * * * * * I/O FUNCTION EQUATES * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 8250 UART REGISTERS * * * * * * * * * * * * * * * * * * * * * UDATA EQU 00 8250 TRANSMIT/RECEIVE DATA UINTR EQU 01 8250 INTERRUPT ENABLE REGISTER UINTI EQU 02 8250 INTERRUPT ID REGISTER ULCLR EQU 03 8250 LINE CONTROL REGISTER UMCLR EQU 04 8250 MODEM CONTROL REGISTER ULSTR EQU 05 8250 LINE STATUS REGISTER UMSTR EQU 06 8250 MODEM STATUS REGISTER UBRLL EQU 00 8250 BAUD RATE DIVISOR LATCH L UBRLU EQU 01 8250 BAUD RATE DIVISOR LATCH U * /--- BLOCK VXEQU 00 000 82/01/12 13.12 TITLE CTC DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * Z80-CTC * * THE Z80-CTC HAS FOUR CHANNELS. CHANNEL 3 * IS USED FOR THE RESIDENT 17.5 MSEC CLOCK. * CHANNELS 1 AND 2 ARE NOT AVAILABLE AS THEY * ARE USED AS THE TRANSMIT CLOCK FOR THE 8 BIT * COMM PORT. CHANNEL 0 IS NOT USED. * * * * * * * * * * * * * * * * * * * * * TIMER EQU 00H BASE ADDRESS OF CTC TIMER0 EQU TIMER+00 CHANNEL 0 TIMER1 EQU TIMER+01 CHANNEL 1 TIMER2 EQU TIMER+02 CHANNEL 2 TIMER3 EQU TIMER+03 CHANNEL 3 TC EQU 205 TIME CONSTANT FOR 8.75 MSEC TRESET EQU 03 CONTROL BYTE FOR TIMER RESET TSETUP EQU 0B7H CONTROL BYTE TO, * RESET TIMER, TC FOLLOWS, * PRESCALER = 256, TIMER MODE, * ENABLE INTERRUPT. * TIME CONSTANT (TC) FOLLOWS CONTROL BYTE IF * BIT 2 OF CONTROL BYTE SET. * TIMER MODE; * INPUT CLOCK = 6 MHZ * PRESCALER (P) USED (16 OR 256) * PERIOD = CLOCK X P X TC * COUNTER MODE; * INPUT CLOCK = 1.8432 MHZ * PRESCALER NOT USED * PERIOD = CLOCK X TC * * OUTPUT TO Z80-CTC * BIT 0 0 = VECTOR, 1 = CONTROL * CONTROL * BIT 1 0 = CONTINUE, 1 = RESET * BIT 2 0 = NO TC, 1 = TC FOLLOWS * BIT 3 0 = AUTO TRIG., 1 = CLOCK TRIG * BIT 4 0 = FALL EDGE, 1 = RISING EDGE * BIT 5 0 = PRESCALER 16, 1 = 256 * BIT 6 0 = TIMER MODE, 1 = COUNTER * BIT 7 0 = DISABLE INT., 1 = ENABLE * VECTOR (LOWER 8 BITS OF INT. VECTOR) * BIT 1, 2 00 = CHANNEL 0 * 01 = CHANNEL 1 * 10 = CHANNEL 2 * 11 = CHANNEL 3 * BITS 3 - 7 ADDRESS BITS * /--- BLOCK VXEQU 00 000 81/12/08 10.15 TITLE 5037 CRT CONTROLLER * * * * * * * * * * * * * * * * * * * * * * 5037 CRT CONTROLLER * * * * * * * * * * * * * * * * * * * * * CRT EQU 10H BASE ADDRESS OF CRT CONTROLLER CRTRG0 EQU CRT+0 HORIZONTAL LINE COUNT CRTRG1 EQU CRT+1 SYNC WIDTH AND DELAY CRTRG2 EQU CRT+2 SCANS PER DATA ROW CRTRG3 EQU CRT+3 NUMBER OF LINES CRTRG4 EQU CRT+4 SCANS PER LINE CRTRG5 EQU CRT+5 NUMBER OF SCANS TO TOP LINE CRTRG6 EQU CRT+6 LAST LINE CRTRDY EQU CRT+8 READ CURSOR Y COORDINATE XRTRDX EQU CRT+9 READ CURSOR X COORDINATE CRTRST EQU CRT+10 RESET CRTCRL EQU CRT+11 SCROLL CRTLDX EQU CRT+12 LOAD CHARACTER COUNT CRTLDY EQU CRT+13 LOAD LINE COUNT CRTST EQU CRT+14 START CRT * /--- BLOCK VXEQU 00 000 82/01/13 08.50 TITLE 8250 KEYBOARD UART DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * 8250 KEYBOARD UART * * * * * * * * * * * * * * * * * * * * * UKYBD EQU 20H BASE ADDRESS OF KEYBOARD UART * KEYBOARD TRANSMIT DATA REGISTER (OUTPUT) * EQU UKYBD+UDATA LCKLTO EQU 00H TURN OFF LOCK LIGHT ON KYBD * KEYBOARD RECEIVE DATA REGISTER (INPUT) * EQU UKYBD+UDATA * KEYBOARD INTERRUPT ENABLE REGISTER (OUTPUT) * EQU UKYBD+UINTR KBERXI EQU 01H ENABLE RECEIVE DATA READY INT KBETXI EQU 02H ENABLE TRANSMIT DATA REQ INT KBELSI EQU 04H ENABLE LINE STATUS INTERRUPT KBEMSI EQU 08H ENABLE MODEM STATUS INTERRUPT * KEYBOARD INTERRUPT ID REGISTER (INPUT) * EQU UKYBD+UINTI * KEYBOARD LINE CONTROL REGISTER (OUTPUT) * EQU UKYBD+ULCLR KBWL5 EQU 00H WORD LENGTH 5 BITS KBWL6 EQU 01H WORD LENGTH 6 BITS KBWL7 EQU 02H WORD LENGTH 7 BITS KBWL8 EQU 03H WORD LENGTH 8 BITS KBSB1 EQU 00H 1 STOP BIT KBSB2 EQU 04H 2 STOP BITS KBPEN EQU 08H ENABLE PARITY KBPEV EQU 10H EVEN PARITY KBDLE EQU 80H BAUD RATE DIVITOR LATCH * MODEM CONTROL REGISTER (OUTPUT) * EQU UKYBD+UMCLR FCBIT2 EQU 01H FOREIGN CHARACTER ROM BIT 2 ALARMH EQU 02H ALARM HIGH FCBIT1 EQU 04H FOREIGN CHARACTER ROM BIT 1 FCBIT0 EQU 08H FOREIGN CHARACTER ROM BIT 0 KBLOOP EQU 10H PLACE UART IN LOOP BACK MODE * KEYBOARD LINE STATUS REGISTER (INPUT) * EQU UKYBD+ULSTR KBDR EQU 01H DATA READY KBOR EQU 02H OVERRUN ERROR KBPE EQU 04H PARITY ERROR KBFE EQU 08H FRAMING ERROR KBBK EQU 10H BREAK RECEIVED KBTXHE EQU 20H TRANSMIT HOLDING REG EMPTY KBTXSE EQU 40H TRANSMIT SHIFT REG EMPTY * MODEM STATUS REGISTER (INPUT) * EQU UKYBD+UMSTR LPSW EQU 10H LOOP BACK SWITCH ACTIVE RSTSW EQU 20H RESET SWITCH ACTIVE ROMPK EQU 40H ROM PACK INSTALLED BATLOW EQU 80H BATTERY LOW * BAUD RATE DIVISOR LATCH LOWER (OUTPUT) * EQU UKYBD+UBRLL KBBRL EQU 0CH BAUD RATE LOWER VALUE (9600) * BAUD RATE DIVISOR LATCH UPPER (OUTPUT) * EQU UKYBD+UBRLU KBBRU EQU 00H BAUD RATE UPPER VALUE (9600) * /--- BLOCK VXEQU 00 000 81/11/17 09.12 TITLE 8255 I/O PORT DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * 8255 I/O PORTS * * * * * * * * * * * * * * * * * * * * * PORT EQU 30H BASE ADDRESS OF 8255 I/O PORTS PORTA EQU PORT+00 ADDRESS OF PORT A (OUTPUT) LPSTRB EQU 01H LIGHT PEN STROBE LPHIT EQU 02H LIGHT PEN HIT INTCLK EQU 40H INTERNAL CLOCK ENABLE EVIDEO EQU 80H ENABLE VIDEO PORTB EQU PORT+01 ADDRESS OF PORT B (OUTPUT) * (INTERRUPT MASK) * 01 COMM PORT INTERRUPT * 02 21/12 BIT PCN INTERRUPT * 04 DUAL SERIAL PORT * 08 PARALLEL PORT * 10 TOUCH PANEL * 20 KEYBOARD * 40 TIMER * 80 MEMORY PARITY ERROR PORTC EQU PORT+03 ADDRESS OF PORT C (OUTPUT) ALRON EQU 00H ALARM ON ALROF EQU 01H ALARM OFF BLKCR EQU 02H BLINK CURSOR SLDCR EQU 03H SOLID CURSOR EBLINK EQU 04H ENABLE BLINK DBLINK EQU 05H DISABLE BLINK LN80 EQU 06H 80 CHARACTERS PER LINE LN132 EQU 07H 132 CHARACTERS PER LINE NORBK EQU 08H NORMAL BACKGROUND INVBK EQU 09H INVERSE BACKGROUND UDCR EQU 0AH UNDERLINE CURSOR BXCR EQU 0BH SOLID BOX CURSOR PLATO EQU 0CH ENABLE PLATO CHARACTER GEN RAMGEN EQU 0DH ENABLE RAM CHARACTER GEN RFRSDS EQU 0EH DISABLE REFRESH RFRSEN EQU 0FH ENABLE REFRESH * /--- BLOCK VXEQU 00 000 81/11/18 07.22 TITLE 8250 COMM LINE UART DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * 8250 COMM LINE UART * * * * * * * * * * * * * * * * * * * * * UCOMM EQU 40H BASE ADDRESS OF COMM LINE UART * COMM TRANSMIT DATA (OUTPUT) * EQU UCOMM+UDATA * COMM RECEIVE DATA (INPUT) * EQU UCOMM+UDATA * COMM INTERRUPT ENABLE REGISTER (OUTPUT) * EQU UCOMM+UINTR CERXI EQU 01H ENABLE RECEIVE DATA READY INT CETXI EQU 02H ENABLE TRANSMIT DATA REQ INT CELSI EQU 04H ENABLE LINE STATUS INTERRUPT CEMSI EQU 08H ENABLE MODEM STATUS INTERRUPT * COMM INTERRUPT ID REGISTER (INPUT) * EQU UCOMM+UINTI * COMM LINE CONTROL REGISTER (OUTPUT) * EQU UCOMM+ULCLR CWL7 EQU 02H WORD LENGTH 7 BITS CWL8 EQU 03H WORD LENGTH 8 BITS CSB1 EQU 00H 1 STOP BIT CSB2 EQU 04H 2 STOP BITS CPEN EQU 08H ENABLE PARITY CPEV EQU 10H EVEN PARITY CBRK EQU 40H SEND BREAK SIGNAL CDLE EQU 80H DIVISOR LATCH ENABLE * COMM MODEM CONTROL REGISTER (OUTPUT) * EQU UCOMM+UMCLR CDTR EQU 01H DTR ON CRTS EQU 02H RTS ON CSRTS EQU 04H SECONDARY RTS ON COUT2 EQU 08H NOT USED CLOOP EQU 10H PLACE UART IN LOOP BACK MODE * COMM LINE STATUS REGISTER (INPUT) * EQU UCOMM+ULSTR CDR EQU 01H DATA READY CORE EQU 02H OVERRUN ERROR CPE EQU 04H PARITY ERROR CFE EQU 08H FRAMING ERROR CBK EQU 10H BREAK RECEIVED CTXHE EQU 20H TRANSMIT HOLDING REG EMPTY CTXSE EQU 40H TRANSMIT SHIFT REG EMPTY * COMM MODEM STATUS REGISTER (INPUT) * EQU UCOMM+UMSTR CCTS EQU 10H CTS ON CDSR EQU 20H DSR ON CRI EQU 40H RING INDICATOR ON CCO EQU 80H CARRIER ON * COMM BAUD RATE DIVISOR LATCH LOWER (OUTPUT) * EQU UCOMM+UBRLL * COMM BAUD RATE DIVISOR LATCH UPPER (OUTPUT) * EQU UCOMM+UBRLU * /--- BLOCK VXEQU 00 000 82/03/31 13.07 TITLE LED LATCH DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * LED LATCH * * * * * * * * * * * * * * * * * * * * * LEDOUT EQU 50H BASE ADDRESS OF LED LATCH LTERR EQU 01H ERROR LTALRT EQU 02H ALERT LTKBLK EQU 04H KEYBOARD LOCKED LTMSG EQU 08H MESSAGE WAITING LTDSR EQU 10H DSR ON LTPRG1 EQU 20H PROGRAMMABLE IND. 1 LTPRG2 EQU 40H PROGRAMMABLE IND. 2 LTPRG3 EQU 80H PROGRAMMABLE IND. 3 TITLE BANK SELECT DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * BANK SELECT EQUATES * * * * * * * * * * * * * * * * * * * * * BANK EQU 70H ADDRESS OF BANK SELECT REG. B0 EQU 00 BANK 0 ROM, BLOCK 0 B1 EQU 02 BANK 1 RAM, BLOCK 0 B2 EQU 0CH BANK 2 RAM, BLOCK 4 B3 EQU 10H BANK 3 RAM, BLOCK 8 B4 EQU 00 BANK 4 RAM, BLOCK C B5 EQU 00 BANK 5 ROM PACK, BLOCK 8 B6L EQU 00 BANK 6 NVM, BLOCK 4 B6U EQU 40H BANK 6 NVM, BLOCK C B7L EQU 01 BANK 7 GRAPHICS, BLOCK 0 B7U EQU 30H BANK 7 GRAPHICS, BLOCK 8 B8L EQU 04 BANK 8 GRAPHICS, BLOCK 4 B8U EQU 0C0H BANK 8 GRAPHICS, BLOCK C * * LD A,B7L+B8L+B3+B4 * OUT (BANK),A SELECTS LOWER GRAPHICS * ROMPACK EQU 8000H FWA OF ROM PACK * /--- BLOCK VXEQU 00 000 82/03/18 07.36 TITLE 8250 PORT A AND B DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * 8250 SERIAL PORTS A AND B * * * * * * * * * * * * * * * * * * * * * USERA EQU 80H BASE ADDRESS OF SERIAL CHAN A USERB EQU 90H BASE ADDRESS OF SERIAL CHAN B * SERIAL CHANNEL TRANSMIT DATA REGISTER (OUTPUT) * EQU USERA+UDATA CHANNEL A * EQU USERB+UDATA CHANNEL B * SERIAL CHANNEL RECEIVE DATA REGISTER (INPUT) * EQU USERA+UDATA CHANNEL A * EQU USERB+UDATA CHANNEL B * SERIAL CHANNEL INTERRUPT ENABLE REGISTER (OUTPUT) * EQU USERA+UINTR CHANNEL A * EQU USERB+UINTR CHANNEL B * SERIAL CHANNEL INTERRUPT ID REGISTER (INPUT) * EQU USERA+UINTI CHANNEL A * EQU USERB+UINTI CHANNEL B * SERIAL CHANNEL LINE CONTROL REGISTER (OUTPUT) * EQU USERA+ULCLR CHANNEL A * EQU USERB+ULCLR CHANNEL B * SERIAL CHANNEL MODEM CONTROL REGISTER (OUTPUT) * EQU USERA+UMCLR CHANNEL A * EQU USERB+UMCLR CHANNEL B * SERIAL CHANNEL LINE STATUS REGISTER (INPUT) * EQU USERA+ULSTR CHANNEL A * EQU USERB+ULSTR CHANNEL B * SERIAL CHANNEL MODEM STATUS REGISTER (INPUT) * EQU USERA+UMSTR CHANNEL A * EQU USERB+UMSTR CHANNEL B * SERIAL CHANNEL BAUD RATE DIVISOR LATCH LOWER (OUTPUT) * EQU USERA+UBRLL CHANNEL A * EQU USERB+UBRLL CHANNEL B * SERIAL CHANNEL BAUD RATE DIVISOR LATCH UPPER (OUTPUT) * EQU USERA+UBRLU CHANNEL A * EQU USERB+UBRLU CHANNEL B * * PRINTER MODEM STATUS REGISTER * 10 PRINTERS RTS * 20 PRINTERS DTR * 40 PORT TEST ENABLED * 80 PRINTERS 3/4 FULL TITLE PARALLEL I/O CHANNEL DEFINITIONS * * * * * * * * * * * * * * * * * * * * * * PARALLEL CHANNEL * * * * * * * * * * * * * * * * * * * * * PCHAN EQU 0A0H DEVICE ADDRESSES A0-BF HEX PSTAT EQU 88H PARALLEL PORT STATUS TIMOUT EQU 01 CHANNEL TIME-OUT INTPND EQU 02 INTERRUPT PENDING * BIT 0 = CHANNEL TIME OUT, (50 MSEC) * BIT 1 = EXTERNAL INTERRUPT * BIT 2 = EXTERNAL FIXED DISK INTERRUPT * /--- BLOCK VXEQU 00 000 82/03/18 08.40 SPACE 4 * GRAPHICS PRINTER EQUATES DATAFCN EQU PCHAN+0AH 000NNNN0 PRINTER DATA ADDRESS CNTLFCN EQU PCHAN+0BH 000NNNN1 PRINTER CTRL ADDRESS MRESET0 EQU 00H RESET INTERFACE MRESET1 EQU 01H RESET PTR SECSTAT EQU 09H REQUEST SECONDARY STATUS. READID EQU 08H READ DEVICE ID. STIMER EQU 0EH START TIMER. * C.ENQ EQU 05H DOT ROW PREAMBLE C.LF EQU 0AH LINE / ROW FEED C.FF EQU 0CH FORM FEED SPACE 4 * * * * * * * * * * * * * * * * * * * * * * GRAPHICS EQUATES * * * * * * * * * * * * * * * * * * * * * BULKW EQU 0FCH GRAPHICS BULK WRITE UNBLNKG EQU 0FDH UNBLANK GRAPHICS VIDEO SEL512 EQU 0FEH SELECT 512 LINES BLNKG EQU 0FFH BLANK GRAPHICS VIDEO VTPDAT EQU 0FCH INPUT TOUCH PANEL DATA GSTAT EQU 0FDH GRAPHICS STATUS * BIT 0 = BULK WRITE BUSY * BIT 1 = TOUCH PANEL DATA READY SEL480 EQU 0FEH INPUT SELECTS 480 LINES R.SETDE EQU 008AH SET CURSOR TO (DE) R.DSTRNG EQU 0063H DISPLAY DATA STRING * /--- BLOCK DISKEQU 00 000 82/03/18 07.30 * * EQUATE TABLES * * DISK EQUATES * * DISK I/O FUNCTION CODES DCNTL EQU 0AFH DISK CONTROL, WRITE DSTAT EQU 0AFH DISK STAT, READ DDATA EQU 0AEH DISK DATA, READ AND WRITE * * DISK I/O COMMANDS DREAD EQU 00 READ SECTORS DWRITE EQU 02 WRITE SECTORS DID EQU 04 READ DISK CONTROLLER ID DLDRES EQU 06 LOAD TERMINAL RESIDENT DRESET EQU 08 DISK RESET RDFILE EQU 12 READ DISK FILE * * DISK STATUS IDLE EQU 40H CONTROLLER IDLE STATUS BUSY EQU 44H CONTROLLER BUSY STATUS SCOMD EQU 48H WAITING FOR CMD COMPLIMENT SRXFER EQU 4AH READY FOR READ TRANSFER SWXFER EQU 4CH READY FOR WRITE TRANSFER SDONE EQU 50H COMMAND PROCESSING COMPLETE. * * 'COMMAND ERRORS SCODD EQU 80H ODD-NUMBERED COMMAND RECEIVED. SCOOR EQU 81H COMMAND OUT OF RANGE. SCCOMP EQU 82H BAD COMMAND COMPLEMENT. * * 'PARAMETER ERRORS SDRIVE EQU 83H BAD DRIVE NUMBER. SSIDE EQU 84H BAD SIDE NUMBER. STRK EQU 85H BAD TRACK NUMBER. SSECT EQU 86H BAD SECTOR NUMBER. SDEN EQU 87H BAD DENSITY. SPSUM EQU 88H PARAMETER CHECKSUM FAILURE. SNSCT EQU 89H BAD NUMBER OF SECTORS. * * 'SEEK / RESTORE ERRORS SSCRC EQU 90H SEEK CRC ERROR. SSEEK EQU 91H SEEK ERROR. SSTIME EQU 92H SEEK TIMEOUT. SREST EQU 93H RESTORE TIMEOUT. * * 'READ/WRITE ERRORS SNRDY EQU 0ADH DESIRED DRIVE NOT READY. SSGL EQU 0AEH ATTEMPTED ACCESS TO SIDE 1 * * 'READ ERRORS SRTIME EQU 0B0H DISK READ TIMEOUT. SRDATA EQU 0B1H LOST DATA. SRCRC EQU 0B2H CRC ERROR. SRRNF EQU 0B3H RECORD NOT FOUND. SRTTO EQU 0B4H TERMINAL TRANSFER TIMEOUT. SREOS EQU 0B5H TRIED TO READ PAST END OF SIDE. * * 'WRITE ERRORS SWTTO EQU 0C0H TERMINAL TRANSFER TIMEOUT. SWTIME EQU 0C1H DISK WRITE TIMEOUT. SWDATA EQU 0C2H LOST DATA. SWCRC EQU 0C3H CRC ERROR. SWRNF EQU 0C4H RECORD NOT FOUND. SWFAULT EQU 0C5H DISK WRITE FAULT. SWPROT EQU 0C6H DISK IS WRITE-PROTECTED. SWCSUM EQU 0C7H CHECKSUMS DO NOT MATCH. * * /--- BLOCK VIKINGP 00 000 81/10/20 10.56 * * * * * * * * * * * * * * * * * * * * * * NVM CONFIGURATION INFORMATION * TERMINAL INSTALLATION PARAMETERS * CMOS BANK 6 * * X01F CHECKSUM * X020 MODE 1 PARAMETERS * X040 MODE 2 PARAMETERS * X060 MODE 3 PARAMETERS * X080 MODE 4 PARAMETERS * X0A0 MODE 5 PARAMETERS * X0C0 MODE 6 PARAMETERS * X0E0 MODE 3 NAME * X0E8 MODE 4 NAME * X0F0 MODE 5 NAME * X0F8 MODE 6 NAME * * MODE BYTE 1 X000 * 01 MODE ENABLE * 02 SECURITY ENABLE * 04 OPERTOR SELECT SOURCE/FILE * 08 LOAD ENABLE * MODE BYTE 2 X001 * 01 LOAD FROM DISK * 02 USE INTERNAL 1200 BAUD MODEM * 04 CURRENT LOOP ENABLE * 08 AUTO DIAL * MODE BYTE 3 X002 * 01 HOST 8 BITS * 02 HOST PARITY ENABLE * 04 HOST PARITY EVEN * 08 HOST 2 STOP BITS * MODE BYTE 4 X003 * 01 DTR SWITCHED * 02 RTS SWITCHED * 04 REPEAT DISABLED * 08 DATA ONLY OPERATION * MODE BYTE 5 X004 * 01 HOME LOWER LEFT * 02 AUTO LINE FEED ENABLE * 04 PACING ENABLE * 08 BIAS ENABLED * MODE BYTE 6 X005 * 01 NOT USED * 02 NOT USED * 04 NOT USED * 08 NOT USED **** * OPERATER PARAMETERS **** * OPERATOR BYTE 1 X006 * 01 LOCAL * 02 PRINTER SELECTED * 04 MARGIN ALERT ENABLED * 08 ALERT LOUD * OPERATOR BYTE 2 X007 * 01 SHIFT LOCK * 02 NOT USED * 04 ROLL SCREEN * 08 NATIVE MODE / LARGE CYBER * OPERATOR BYTE 3 X008 * 01 BACKGROUND LIGHT * 02 CURSOR BOX * 04 CURSOR SOLID ON * 08 NOT USED * /--- BLOCK VIKINGP 00 000 81/10/28 08.25 * OPERATOR BYTE 4 X009 * 01 FULL DUPLEX * 02 132 CHARACTERS PER LI * 04 30 LINES * 08 TRANSPARENT * AUTO DIAL NUMBER 12 BYTES X00A * DEFAULT FILE 2 BYTES X016 * TRANSMIT BAUD 1 BYTE X018 * RECEIVE BAUD 1 BYTE X019 * SECURITY CODE 1 BYTE X01A **** * TERMINAL PARAMETERS **** * TERMINAL BYTE 1 X01B * 01 64K RAM OPTION * 02 TOUCH PANEL OPTION * 04 DUAL SERIAL OPTION * 08 GRAPHIC PRINTER OPTION * TERMINAL BYTE 2 X01C * 01 FLEXIBLE DISK OPTION * 02 21/12 BIT PCN OPTION * 04 INTERNAL 1200 BAUD MODEM * 08 ISO 3243 KEYBOARD OPTION * TERMINAL BYTE 3 X01C * 01 NOT USED * 02 NOT USED * 04 NOT USED * 08 NOT USED * TERMINAL BYTE 4 X01D * 01 AUTO SELECT ENABLE * 02 50 HZ POWER SOURCE * 04 NOT USED * 08 NOT USED * TERMINAL BYTE 5 X01E * 01 NOT USED * 02 NOT USED * 04 NOT USED * 08 NOT USED * TERMINAL BYTE 6 X01F * 01 NOT USED * 02 NOT USED * 04 NOT USED * 08 NOT USED * SCREEN MOVE X DELTA X020 * SCREEN MOVE Y DELTA 0-7 X021 * LANGUAGE 0-7 * TERMINAL ID 0000-FFFF * CHANNEL A PARAMETERS * 01 2 STOP BITS * 02 PARITY EVEN * 04 PARITY DISABLED * 08 BI-DIRECTIONAL PORT * CHANNEL A BAUD RATE 0-F * CHANNEL B PARAMETERS * CHANNEL B BAUD RATE 0-F * * * * * * * * * * * * * * * * * * * * * * /--- BLOCK VIKINGP 00 000 81/10/20 08.54 * * * * * * * * * * * * * * * * * * * * * * I/O FUNCTION CODES * * * * * * * * * * * * * * * * * * * * * * 00 Z80B TIMER-0 * 01 Z80B TIMER-1 * 02 Z80B TIMER-2 * 03 Z80B TIMER-3 * 10 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 0 * 11 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 1 * 12 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 2 * 13 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 3 * 14 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 4 * 15 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 5 * 16 CRT 5037 CRT CONTROLLER LOAD CONTROL REG 6 * 18 CRT 5037 CRT CONTROLLER READ CURSOR LINE ADDR * 19 CRT 5037 CRT CONTROLLER READ CURSOR CHAT ADDR * 1A CRT 5037 CRT CONTROLLER RESET * 1B CRT 5037 CRT CONTROLLER UP SCROLL * 1C CRT 5037 CRT CONTROLLER LOAD CURSOR CHAR ADDR * 1D CRT 5037 CRT CONTROLLER LOAD CURSOR LINE ADDR * 1E CRT 5037 CRT CONTROLLER START TIMING CHAIN * 20 KEYBOARD UART 8250 DLAB=0 READ RX BUFFER * 20 KEYBOARD UART 8250 DLAB=0 TX HOLDING REG * 21 KEYBOARD UART 8250 DLAB=0 INTERRUPT ENABLE * 22 KEYBOARD UART 8250 INTERRUPT ID REG * 23 KEYBOARD UART 8250 LINE CONTROL REG * 24 KEYBOARD UART 8250 MODEM CONTROL REG * 25 KEYBOARD UART 8250 LINE STATUS REG * 26 KEYBOARD UART 8250 MODEM STATUS REG * 27 KEYBOARD UART 8250 NOT USED * 20 KEYBOARD UART 8250 DLAB=1 DIVISOR LATCH LSB * 21 KEYBOARD UART 8250 DLAB=1 DIVISOR LATCH MSB * 30 8255 I/O EXPANDER PORT A * 31 8255 I/O EXPANDER PORT B * 32 8255 I/O EXPANDER PORT C * 33 8255 I/O EXPANDER CONTROL * 40 COMM UART 8250 DLAB=0, READ RX BUFFER * 40 COMM UART 8250 DLAB=0, TX HOLDING REG * 41 COMM UART 8250 DLAB=0, INT. ENABLE * 42 COMM UART 8250 INTERRUPT ID REG * 43 COMM UART 8250 LINE CONTROL REG * 44 COMM UART 8250 MODEM CONTROL REG * 45 COMM UART 8250 LINE STATUS REG * 46 COMM UART 8250 MODEM STATUS REG * 47 COMM UART 8250 NOT USED * 40 COMM UART 8250 DLAB=1, DIVISOR LSB * 41 COMM UART 8250 DLAB=1, DIVISOR MSB * 50 LEDS * 5F LEDS * 60 LIGHT PEN REG 1 HORZ COURT REG * 61 LIGHT PEN REG 2 VERT COURT + SCAN CNT * 70 BANK SELECT REG * /--- BLOCK INIT 00 000 82/09/07 10.15 TITLE START ** * * STARTING POINT OF LOADER * ** SPACE 6 ** * START EQU * * LADR DEFW ENTRY LOAD ADDRESS LLNTH DEFW ENDLDR LOAD LENGTH ENTRY EQU * JR BEGIN DEFW NUMB * *CALL,ZDATE TITLE BEGIN ** * * 'THIS ROUTINE DISABLES THE TERMINAL INTERRUPTS, SETS * THE STACK POINTER, CLEARS THWE SCREEN, AND CLEARS * THE INTERPRETER MEMORY AREA. * BEGIN EQU * DI DISABLE PROCESSOR INTERRUPTS LD (TTYPE),BC SAVE TERMINAL TYPE. LD SP,ZSTACK SET STACK POINTER LD HL,INTADR LD DE,INTADR+1 LD BC,MLWA-INTADR LD (HL),00 LDIR CLEAR INTERPRETER LD A,03 LD (RTYCNT),A SET RETRY COUNT * LD A,(TTYPE) CP VIKX TEST FOR VIKING X TERMINAL JR NZ,BEGIN1 JUMP IF NOT VIKING X * * VIKING X INITIALIZE * LD A,B0+B2+B3+B4 SELECT RES ROM OUT (BANK),A AND THEN OUTPUT TO PORT * * SET ADDRESSES FOR TERMINAL RESIDENT. * LD IX,PARMS LD (IX+0),8 LOAD RESIDENT FIRMWARE NUMBER LD (IX+1),2 LOAD NUMBER OF ADDITIONAL PARTS LD (IX+2),4 LOAD PLATO INTERPRETER LD (IX+3),1 LOAD NUMBER OF ADDITIONAL PARTS LD DE,0A17H SET TO COL 10, LINE 23 CALL R.SETDE LD DE,VMES11 DISPLAY LOAD MESSAGE CALL VDMSG JP EXEC * /--- BLOCK INIT 00 000 82/04/21 08.19 * * IST INITIALIZE * ** * * 'THIS ROUTINE DISABLES THE TERMINAL INTERRUPTS, SETS * THE STACK POINTER, CLEARS THWE SCREEN, AND CLEARS * THE INTERPRETER MEMORY AREA. * * * INPUT FRONT PANEL SWITCHES AND DETERMINE * WHEATHER TO LOAD FROM DEFAULT SWITCH SETTING, * OR TO DISPLAY SELECT MESSAGE. * (TTYPE) DETERMINE TERMINAL TYPE, 00 FOR IST2 AND * 01 FOR IST3. IF TERMINAL IS AN IST2, DO NOT LOAD * ASCII GRAPHICS RESIDENT * * BEGIN1 EQU * LD A,00 TURN OFF INTERRUPT MASK. OUT (INTMSK),A LD A,06 OUT (BLKERS),A CLEAR SCREEN LD A,0C1H SELECT LOW OUT (PNLLTS),A RAM AREA OF MEMORY. * BGIN0 EQU * IN A,(SYSSTAT) INPUT TERMINAL STATUS RLCA AND TEST FOR BULK ERASE JR C,BGIN0 COMPLETED. * LD A,(TTYPE) CP IST3 TEST FOR IST3 JP NZ,BGIN4 IF AN IST2 * IN A,(MNTSW) LOAD SWITCH DATA BIT 0,A AND TEST FOR SELECT. JR NZ,BGIN1 GOTO SELECT * IN A,(EXTSTAT) ELSE INPUT DEFAULT BIT 0,A AND TEST FOR PLATO OR ASCII JP NZ,BGIN6 GOTO ASCII JP BGIN5 ELSE LOAD PLATO * * DISPLAY PLATO/ASCII LOAD MESSAGE * BGIN1 EQU * LD DE,MESADR7 LOAD SCREEN ADDRESS LD IX,MES7 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. LD DE,8B60H LD IX,MES11 CALL MESSAGE BGIN1A EQU * LD DE,MESADR3 LOAD SCREEN ADDRESS LD IX,MES5 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. LD DE,MESADR4 LOAD SCREEN ADDRESS LD IX,MES6 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. LD DE,8AE0H LD IX,MES12 CALL MESSAGE LD DE,8B20H LD IX,MES13 CALL MESSAGE * /--- BLOCK INIT 00 000 82/04/21 08.48 * * WAIT FOR KEYBOARD INPUT LETTERS A OR P * BGIN2 EQU * IN A,(SYSSTAT) INPUT TERMINAL STATUS BIT 3,A TEST FOR KEYBOARD DATA JR Z,BGIN3 * IN A,(KBDATA) INPUT KEY CODE AND 5FH MASK OFF SHIFT CODE CP KA TEST FOR LETTER A JP Z,BGIN7 CP KP TEST FOR LETTER P JP Z,BGIN5 CP KG TEST FOR LETTER G JP Z,BGIN6 * * WAIT FOR TOUCH PANEL INPUT * BGIN3 EQU * IN A,(SYSSTAT) INPUT TERMINAL STATUS BIT 4,A TEST FOR TOUCH PANEL DATA JR Z,BGIN2 LOOP FOR INPUT * LD A,01 OUT (ALARM),A SAY BEEB * IN A,(TPDATA) ELSE INPUT THE DATA CP TA TEST FOR ASCII JP Z,BGIN7 LOAD ASCII PARAMETERS * CP TA+1 TEST FOR ASCII JP Z,BGIN7 LOAD ASCII PARAMETERS * CP TA+10H TEST FOR ASCII JP Z,BGIN7 LOAD ASCII PARAMETERS * CP TA-10H TEST FOR ASCII JP Z,BGIN7 LOAD ASCII PARAMETERS * CP TP TEST FOR PLATO JR Z,BGIN5 LOAD PLATO PARAMETERS * CP TP+1 TEST FOR PLATO JR Z,BGIN5 LOAD PLATO PARAMETERS * CP TP+10H TEST FOR PLATO JR Z,BGIN5 LOAD PLATO PARAMETERS * CP TP-10H TEST FOR PLATO JR Z,BGIN5 LOAD PLATO PARAMETERS * CP TG TEST FOR GRAPHICS JP Z,BGIN6 LOAD GRAPHICS PARAMETERS * CP TG+1 TEST FOR GRAPHICS JP Z,BGIN6 LOAD GRAPHICS PARAMETERS * CP TG+10H TEST FOR GRAPHICS JP Z,BGIN6 LOAD GRAPHICS PARAMETERS * CP TG-10H TEST FOR GRAPHICS JP Z,BGIN6 LOAD GRAPHICS PARAMETERS JR BGIN2 * /--- BLOCK INIT 00 000 82/09/21 08.08 SPACE 4 * * SET ADDRESSES FOR IST2 PLATO RESIDENT * BGIN4 EQU * LD A,(TTYPE+1) CP 80H TEST FOR IST2 21/12 BIT PCN JP Z,BGIN7 JUMP IF ASCII LD IX,PARMS LD (IX+0),03 LOAD RESIDENT RECORD NUMBER LD (IX+1),01 LOAD NUMBER OF ADDED PARTS LD (IX+2),04 LOAD INTERPRETER RECORD NUMBER LD (IX+3),01 LOAD NUMBER OF ADDED PARTS LD HL,097AH LD (BGN.ADR),HL LOAD ADDR OF ENTRY ADDR LD HL,08E5H LD (BLK0.ADR),HL LOAD FWA OF BLOCK 0 LD HL,0979H LD (LDS.ADR),HL LOAD SOURCE FLAG ADDR LD HL,08DEH LD (FL.ADR),HL LOAD FULL LOAD FLAG ADDR LD DE,MESADR5 LOAD SCREEN ADDRESS LD IX,MES3 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. JP EXEC LOAD RESIDENT * * SET ADDRESSES FOR IST3 PLATO RESIDENT * BGIN5 EQU * LD IX,PARMS LD (IX+0),05 LOAD RESIDENT RECORD NUMBER LD (IX+1),01 LOAD NUMBER OF ADDED PARTS LD (IX+2),04 LOAD INTERPRETER RECORD NUMBER LD (IX+3),01 LOAD NUMBER OF ADDED PARTS LD HL,0140H LD (BGN.ADR),HL LOAD ADDR OF ENTRY ADDR LD HL,00B0H LD (BLK0.ADR),HL LOAD FWA OF BLOCK 0 LD HL,0144H LD (LDS.ADR),HL LOAD SOURCE FLAG ADDR LD HL,SAVEI LOAD SAVE ADDRESS LD (HL),3CH LOAD FULL LOAD FLAG INC HL LD (HL),3CH LOAD RESET FLAG INC HL LD (HL),80H LOAD PLATO MODE FLAG INC HL LD A,(LOADINFO) SAVE LOAD INFORMATION FLAG RES 2,A SET PLATO BIT LD (HL),A AND SAVE. INC HL LD (HL),A LOAD RUN INFORMATION FLAG. LD DE,MESADR5 LOAD SCREEN ADDRESS LD IX,MES3 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. LD DE,MESADR5 LOAD SCREEN ADDRESS LD IX,MES3 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. JR EXEC * /--- BLOCK INIT 00 000 82/04/21 21.12 * * SET ADDRESSES FOR IST3 ASCII GRAPHICS RESIDENT * BGIN6 EQU * LD IX,PARMS LD (IX+0),09 LOAD RESIDENT RECORD NUMBER LD (IX+1),02 LOAD NUMBER OF ADDED PARTS LD (IX+2),07 LOAD INTERPRETER RECORD NUMBER LD (IX+3),01 LOAD NUMBER OF PART LD HL,0041H LD (BGN.ADR),HL LOAD ADDR OF ENTRY ADDR LD HL,00F0H LD (BLK0.ADR),HL LOAD CHECKSUM TABLE ADDRESS LD HL,22C7H LD (LDS.ADR),HL LOAD SOURCE FLAG ADDR LD HL,SAVEI LOAD SAVE ADDRESS LD (HL),3CH LOAD FULL LOAD FLAG INC HL LD (HL),00 LOAD RESET FLAG INC HL LD (HL),00 LOAD ASCII MODE FLAG INC HL LD A,(LOADINFO) SAVE LOAD INFORMATION FLAG SET 2,A SET ASCII BIT LD (HL),A INC HL LD (HL),A LOAD RUN INFORMATION FLAG. LD DE,MESADR5 LOAD SCREEN ADDRESS LD IX,MES9 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. JR EXEC * * SET ADDRESSES FOR IST2/IST3 ASCII PLATO RESIDENT * BGIN7 EQU * LD IX,PARMS LD (IX+0),6 LOAD RESIDENT FIRMWARE NUMBER LD (IX+1),1 LOAD NUMBER OF ADDITIONAL PARTS LD (IX+2),4 LOAD PLATO INTERPRETER LD (IX+3),1 LOAD NUMBER OF ADDITIONAL PARTS LD DE,MESADR5 LOAD SCREEN ADDRESS LD IX,MES8 LOAD MESSAGE ADDRESS CALL MESSAGE AND DISPLAY. * * /--- BLOCK EXEC 00 000 82/09/21 08.14 TITLE LOADER EXEC ** * * 'THIS ROUTINE CALLS THE LOAD ROUTINES AND THE * CHECKSUM ROUTINES. 'IF THE CHECKSUM FAILS, THREE * RETRIES ARE MADE TO RELOAD EITHER THE RESIDENT * OR THE INTERPRETER AND CHECKSUM THE DATA. * 'IF THE CHECKSUM FAILS AFTER THREE RETRIES, THE * LOAD ERROR ROUTINE IS ENTERED, AND THE ERROR * MESSAGE IS DISPLAYED ON THE SCREEN. * EXEC EQU * LD IX,PARMS SET ADDRESS IF LOAD FILE NUMBER CALL LOADF LOAD TERMINAL RESIDENT. JP C,RETRY DISPLAY ERROR MESSAGE IF ERROR * *** LD HL,(TTYPE) GET TERMINAL TYPE. LD A,H OR L TEST FOR IST2 21/12 BIT JR NZ,EXEC1 IF NOT AN IST2 21/12 BIT PCN LD HL,22E5H FROM LD DE,0013H TO LD BC,8D1H LEN LDIR MOVE IST2 CHARS DOWN * EXEC1 EQU * LD A,(PARMS) CP 06 IF IST3/2 SHORT ASCII RESIDENT. JR Z,EXEC1A CP 08 IF VIKING X JR Z,EXEC1A JR EXEC2 ALL OTHER RESIDENTS. EXEC1A EQU * LD HL,(BGNADR) SET THE ENTRY POINT ADDRESS. LD (BGN.ADR),HL EXEC2 EQU * LD IX,PARMS+2 SET ADDRESS OF INTERPRETER NO. CALL LOADF LOAD INTERPRETER JP C,RETRY DISPLAY ERROR MESSAGE IF ERROR LD A,0D0H OUT (ALARM),A * /--- BLOCK EXEC 00 000 82/04/15 08.53 SPACE 4 ** * * EXIT BOOT LOADER TO ENTRY POINT OF RESIDENT * ** * * INITIALIZE TERMINAL RESIDENT LOAD VARIABLES * EXEC3 EQU * LD A,(PARMS) CP 05 TEST FOR IST3 21/12 BIT JR Z,EXEC3A CP 09 TEST FOR IST3 ASCII GRAPHICS JR NZ,EXEC4 * EXEC3A EQU * LD HL,SAVEI LOAD FLAG SAVE ADDRESS LD DE,LOADFLAG LOAD FLAG ADDRESS LD BC,05 LDIR LOAD RESIDENT FLAGS. XOR A LD (M.LDFILE),A SET FOR LOAD FILE 00. LD A,(PARMS) CP 09 TEST FOR ASCII GRAPHICS CALL Z,ACHKSM GENERATE CHECKSUM FOR ASCII JR EXEC5 * EXEC4 EQU * CP 03 TEST FOR IST2 21/12 BIT JR NZ,EXEC6 EXIT FOR VIKING X LD HL,(FL.ADR) LD (HL),01 SET FULL LOAD FLAG * EXEC5 EQU * LD HL,(LDS.ADR) LD (HL),-1 SET LOAD SOURCE FLAG * * FIND ENTRY POINT ADDRESS FOR FLEXIBLE DISK * TO RESIDENT. * LD HL,(BGN.ADR) LD E,(HL) LOAD LOWER BYTE OF ADDRESS INC HL LD D,(HL) LOAD UPPER BYTE EX DE,HL LD A,(TTYPE) GET TERMINAL TYPE LD C,A FOR ASCII RESIDENT. JP (HL) * * EXIT FOR VIKING X, IST2 ASCII/PLATO, IST3 ASCII/PLA * EXEC6 EQU * LD HL,(BGN.ADR) HL = ADDR OF BLOCK 0 TABLE LD DE,0055H ADD HL,DE LD E,(HL) INC HL LD D,(HL) DE = ENTRY POINT ADDRESS EX DE,HL HL = ENTRY POINT ADDRESS LD A,(TTYPE) GET TERMINAL TYPE LD C,A FOR ASCII RESIDENT. JP (HL) GO TO RESIDENT. * /--- BLOCK LDERR 00 000 82/04/16 10.30 TITLE RETRY ROUTINE * * RETRY LOAD ROUTINE * RETRY EQU * LD HL,RTYCNT DEC (HL) DECREMENT THE RETRY COUNT JP NZ,EXEC TRY AGAIN LD A,(TTYPE) GET TERMINAL TYPE CP VIKX TEST FOR VIKING X JR Z,VLDERR * * LOAD ERROR ROUTINE * LDERR EQU * LD DE,MESADR1 CALL MESSAGE * LD DE,MESADR2 LOAD SCREEN ADDRESS LD IX,MES4 LOAD MESSAGE ADDRESS CALL MESSAGE * LDERR0 EQU * IN A,(SYSSTAT) INPUT STATUS AND 08 TEST FOR KEY DATA READY JR Z,LDERR0 * IN A,(KBDATA) INPUT KEY DATA AND 7FH CP NEXT TEST FOR NEXT KEY LD A,(TTYPE) LD C,A GET TERMINAL TYPE JP Z,BEGIN JR LDERR0 * LOAD ERROR ROUTINE * VLDERR EQU * PUSH DE SAVE MESSAGE ADDRESS LD DE,1418H SET TO COL 25, LINE 23 CALL R.SETDE POP DE GET MESSAGE ADDRESS CALL VDMSG LD DE,1419H SET TO COL 25, LINE 30 CALL R.SETDE LD DE,VMES6 LOAD MESSAGE ADDRESS CALL VDMSG * VLDERR0 EQU * IN A,(UKYBD+ULSTR) AND KBDR TEST FOR KEYBOARD DATA JR Z,VLDERR0 IN A,(UKYBD+UDATA) GET KEY CODE XOR 66H TEST FOR NEXT KEY JR NZ,VLDERR0 LD DE,1419H CALL R.SETDE LD DE,VMES0 CALL VDMSG ERASE ERROR MESSAGE LD A,(TTYPE) LD C,A GET TERMINAL TYPE JP BEGIN * /--- BLOCK LOADF 00 000 82/03/18 10.49 TITLE LOAD FILE FROM DISK ** * * THIS ROUTINE IS CALLED TO LOAD A FILE FROM * THE FLEXIBLE DISK. * * ENTRY; * (IX+0) = LOAD FILE NUMBER * (IX+1) = NUMBER OF ADDITIONAL PARTS * ** * * STORE RETRY COUNT. * LOADF EQU * LD A,03 LD (LRTYCNT),A LOAD FOR 3 RETRIES IF ERROR * * LOAD FIRST PART OF THE INTERPRETER. * STORE SECTOR SIZE, LOAD ADDRESS, AND NUMBER OF * SECTORS, CALL LOAD ROUTINE, TEST FOR CORRECT * CHECKSUM ON RETURN, (CARRY BIT). * LOADF1 EQU * LD A,(IX+0) GET FILE NUMBER LD (RCRDN),A LOAD RECORD NUMBER FOR INTERP. CALL FDDLOAD LOAD NEXT BLOCK JR NC,LOADF2 LOAD SECOND PART * LD HL,LRTYCNT LOAD ADDR OF RETRY COUNT DEC (HL) DECREMENT COUNT JR NZ,LOADF1 RELOAD IF NOT ZERO * LD IX,MES2 LOAD ADDRESS OF ERROR MSG. SCF SET ERROR FLAG RET AND EXIT * * LOAD SECOND AND THIRD PARTS. * LOADF2 EQU * LD (LDADR),HL SAVE LOAD ADDRESS LD A,03 LD (LRTYCNT),A LOAD RETRY COUNT * LOADF3 EQU * CALL OUTCS0 LOAD 2ND PART OF INTERPRETER JR C,LOADF4 JUMP IF ERROR DEC (IX+1) DECREMENT ADDITIONAL PART COUNT JR NZ,LOADF2 LOAD THIRD PART RET ELSE EXIT LOADF4 EQU * LD HL,LRTYCNT LOAD ADDR OF RETRY COUNT DEC (HL) DECREMENT COUNT JR NZ,LOADF3 RELOAD IF NOT ZERO * SCF SET ERROR FLAG RET AND EXIT. * /--- BLOCK FDDLOAD 00 000 82/03/17 11.32 TITLE LOADER SUBROUTINE ** * * THIS ROUTINE READS THE CONTROLLER STATUS, TESTS * FOR IDLE, SENDS THE READ SECTOR COMMAND AND * PARAMETERS. 'WHEN THE STATUS INDICATES THAT THE * COMMAND HAS BEEN PROCESSED, THE DATA IS READ AND * STORED INTO THE TERMINAL MEMORY BY SECTORS. * 'AFTER EACH SECTOR IS STORED, IT IS CHECKSUMED * AND VERIFIED WITH THE SECTOR CHECKSUM FROM THE * DISK CONTROLLER. ** FDDLOAD EQU * LD D,IDLE LOAD EXPECTED STATUS CALL WAITC STATUS CONTROLLER FOR IDLE STATE RET C RETURN IF ERROR * LD A,RDFILE LOAD READ FILE COMMAND CODE OUT (DCNTL),A AND OUTPUT TO DISK CONTLR. LD D,SCOMD CALL WAITC STATUS CONTROLLER FOR IDLE STATE RET C RETURN IF ERROR * LD A,RDFILE LOAD READ FILE COMMAND COMPLIM. CPL OUT (DCNTL),A AND OUTPUT . LD D,IDLE LOAD EXPECTED STATUS CALL WAITC STAT COMTROLLER RET C RETURN IF ERROR * LD A,(RCRDN) LOAD RECORD NUMBER LD C,DDATA LOAD DEVICE FUNC, CODE LD DE,00 INITIALIZE CHECKSUM REG.S OUT (C),A OUTPUT FILE REQUEST NUMBER LD B,A RLCA LD D,A LOAD PARAMETER LD A,B RRCA CHECKSUM FOR OUTPUT LD E,A CALL DELAY OUT (C),E OUTPUT LOWER BYTE CHECKSUM CALL DELAY WAIT FOR DISK OUT (C),D OUTPUT UPPER BYTE CHECKSUM * OUTCS0 EQU * LD D,SRXFER CALL WAITC STATUS CONTROLLER FOR IDLE RET C EXIT IF ERROR. SPACE 4 * /--- BLOCK FDDLOAD 00 000 82/09/20 16.08 * * READ DATA FROM THE DISK BUFFER * LD C,DDATA LOAD DISK DATA FUNC. CODE IN L,(C) LOAD LOWER ADDRESS BYTE NOP NOP IN H,(C) LOAD UPPER ADDRESS BYTE NOP NOP IN E,(C) LOAD LOWER LENGHT BYTE NOP NOP IN D,(C) LOAD UPPER LENGHT BYTE * * IF HL = 0FFFFH, THEN THIS IS A CONTINUED LOAD AND * THE ACTUAL LOAD ADDRESS SHOULD BE GOTTEN FROM * *LDADR*. * LD A,0FFH CP H JR NZ,READB IF NOT A CONTINUED LOAD CP L JR NZ,READB @ IF NOT A CONTINUED LOAD LD HL,(LDADR) CONTINED LOAD ADDRESS JR READB0 READB EQU * LD (BGNADR),HL SAVE THE STARTING ADDRESS READB0 EQU * LD (LDADR),HL SAVE THE STARTING ADDRESS LD B,SECTSZ LOAD DISK SECTOR SIZE READB1 EQU * INI LOAD SECTOR DATA TO MEMORY. NOP JR NZ,READB1 * READB2 EQU * IN A,(C) INPUT SECTOR CHECKSUM LD (SAVE),A AND STORE. IN A,(C) LD (SAVE+1),A CALL SCHKSM DO CHECKSUM OF SECTOR DATA RET C EXIT IF ERROR. * DEC DE DECREMENT BYTE COUNT LD A,D OR E TEST FOR PART COMPLETED RET Z RETURN IF LOAD COMPLETED JR READB0 ELSE LOAD NEXT SECTOR * /--- BLOCK SUBROUT 00 000 82/09/08 15.21 TITLE SUBROUTINES * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * WAITC * THIS SUBROUTINE CALLS DELAY AND INPUTS STATUS FROM * THE DISK, COMPARES IT TO A VALUE IN REGISTER D. * ENTRY; * D = EXPECTED STATUS * EXIT; * NO-CARRY = STATUS EQUALS REGISTER D * CARRY = STATUS NOT EQUALS REGISTER D * DE = ADDRESS OF ERROR MESSAGE * CALLS; * DELAY * * * * * * * * * * * * * * * * * * * * * * * * * * * * * WAITC EQU * LD B,40H WAITC1 EQU * CALL DELAY IN A,(DSTAT) CP D TEST FOR EXPECTED STATUS RET Z * CP 0BEH TEST FOR SECURED DISK JP Z,READER * RLCA TEST FOR DISK ERROR JR C,WAITC2 JUMP IF ERROR STATUS * DJNZ WAITC1 LOOP FOR COUNT WAITC2 EQU * LD A,(TTYPE) CP VIKX TEST FOR VIKING X JR Z,WAITC3 JUMP IF VIKING X SCF RET WAITC3 EQU * LD DE,VMES2 LOAD ERROR MESSAGE SCF SET TIME-OUT ERROR RET * * DELAY OF '/'/ MSECS * DELAY EQU * EXX LD HL,1000H LOAD DELAY COUNT * DELAY1 EQU * NOP NOP DEC HL LD A,H OR L JR NZ,DELAY1 * EXX RET * /--- BLOCK CHKSUM 00 000 82/04/16 08.33 TITLE CHECKSUM ROUTINES * * CHECKSUM SECTOR DATA IN TERMINAL MEMORY * SCHKSM EQU * EXX LD B,SECTSZ LOAD DISK SECTOR SIZE LD DE,0000 CLEAR CHECKSUM REGISTERS LD HL,(LDADR) LOAD THE STARTING ADDRESS * SCHKSM0 EQU * CALL PCHKSM INCLUDE DATA TO CHECKSUM INC HL UPDATE DATA POINTER DJNZ SCHKSM0 LOOP TILL BYTE COUNT ZERO * LD A,(SAVE) LOAD SECTOR CHECSUM XOR E AND TEST. JR NZ,SCHKSM1 DISK DATA ERROR LD A,(SAVE+1) XOR D JR NZ,SCHKSM1 IF CHECKSUM IS NOT CORRECT EXX ELSE RETURN IF RET IS COORRECT. * SCHKSM1 EQU * EXX LD A,(TTYPE) CP VIKX TEST FOR VIKING X JR Z,SCHKSM2 LD IX,MES1 LOAD ADDRESS OF ERROR MESSAGE SCF RET SCHKSM2 EQU * LD DE,VMES1 LOAD CHECKSUM ERROR MESSAGE SCF SET ERROR INDICATOR RET * * PARMS TABLE CHECK SUM ROUTINE * ENTRY (HL) BYTE TO ADD TO CHECK SUM * DE CURRENT CHECK SUM * EXIT DE NEW CHECK SUM * CHANGES DE, A * PCHKSM EQU * LD A,D LOAD UPPER BYTE XOR (HL) INCLUDE PARAMETER RLCA ROTATE LEFT END AROUND LD D,A AND SAVE LD A,E LOAD LOWER BYTE XOR (HL) INCLUDE PARAMETER RRCA ROTATE RIGHT END AROUND LD E,A AND SAVE. RET * /--- BLOCK ACHKSM 00 000 82/03/19 16.11 ** * * ASCII RESIDENT CHECKSUM ROUTINE * THE LOADED RAM PROGRAM HAS A CHECKSUM ADDRESS TABLE * AS FOLLOWS. * * (22C8H,22C9H)=FWA FWA OF CHECKSUM TABLE * (22CAH)=CHECKSUM SET BY LOADER * (22CBH)=LOADFLAG 3CH=CODE IS LOADED * (22CCH)=RESETFLAG 3CH=SHORT RESET * (22CDH)=MODE ASCII CONTROLWARE MODE * (22CEH)=LOADINFO CONTROLWARE LOAD INFORMATION * (22CFH)=RUNINFO CONTROLWARE RUN INFORMATION * * (FWA+0,FWA+1)=STARTING ADDRESS OF CODE SEGMENT 1 * (FWA+2,FWA+3)=LENGTH IN BYTES OF CODE SEGMENT 1 * (FWA+4,FWA+5)=STARTING ADDRESS OF CODE SEGMENT 2 * (FWA+6,FWA+7)=LENGTH IN BYTES OF CODE SEGMENT 2 * . * . * (FWA+4N+0,FWA+4N+1)=00 00 END OF TABLE * (FWA+4N+2,FWA+4N+3)=00 00 (LENGHT =0) * ** * ** ACHKSM EQU * LD C,00 CLEAR CHECKSUM REGISTER LD HL,(BLK0.ADR) LOAD FWA OF TABLE * ACHKSM0 EQU * LD E,(HL) INC HL LD D,(HL) DE = FWA OF DATA TO CHECKSUM INC HL LD B,(HL) B = LENGTH IN BYTES INC HL LD A,(HL) INC HL LD (SAVE),HL SAVE TABLE ADDRESS EX DE,HL HL = FWA OF DATA LD E,B DE = LENGTH OF DATA LD D,A * OR E TEST IF DONE JR Z,ACHKSM3 DONE IF LENGTH = 00 * ACHKSM1 EQU * BIT 7,H ERROR IF ADDRESS TOO LARGE JR NZ,ACHKSM4 * LD A,(HL) GET DATA ADD A,C ADD TO CHECKSUM LD C,A INC HL INCREMENT ADDRESS DEC DE DECREMENT BYTE COUNT LD A,E OR D TEST FOR LAST BYTE JR NZ,ACHKSM1 LOOP TILL COUNT = 00 * LD HL,(SAVE) GET TABLE ADDRESS JR ACHKSM0 * ACHKSM3 EQU * LD A,C LD (CHECKSUM),A STORE CHECKSUM RET EXIT * ACHKSM4 EQU * LD IX,MES1 LOAD ERROR MESSAGE ADDRESS SCF SET ERROR FLAG RET EXIT. * /--- BLOCK MESSAGE 00 000 82/09/09 14.51 TITLE SECURITY MESSAGE * * READ ERROR LOOP * READER EQU * LD A,(TTYPE) CP 02 TEST FOR 721-30 TERMINAL JR Z,READER2 JUMP IF 721-30 LD DE,MESADR6 DISPLAY ERROR MESSAGE. LD IX,MES14 LOAD MESSAGE ADDRESS CALL MESSAGE HALT READER2 EQU * LD DE,NUMB+BEGIN-1 ADDRESS OF ERROR CODE. LD HL,VMES14A-1 ADDRESS OF ERROR MESSAGE READER3 EQU * INC DE INC HL LD A,(DE) CP 0FFH TEST FOR END OF DECODE JR Z,READER9 CP 24H TEST FOR SPACE JR NZ,READER4 LD (HL),20H JR READER3 READER4 EQU * CP 2BH TEST FOR COMMA JR NZ,READER5 LD (HL),2CH JR READER3 READER5 EQU * CP 2CH TEST FOR PERIOD JR NZ,READER6 LD (HL),2EH JR READER3 READER6 EQU * CP 0AH TEST FOR NUMERIC JR NC,READER7 ADD A,30H LD (HL),A JR READER3 READER7 EQU * ADD A,37H LD (HL),A JR READER3 READER9 EQU * LD DE,0019H CALL R.SETDE LD DE,VMES14 LOAD MESSAGE FWA CALL VDMSG DISPLAY MESSAGE HALT * /--- BLOCK MESSAGE 00 000 82/09/02 14.44 TITLE MESSAGE DISPLAY ROUTINES * * * * * * * * * * * * * * * * * * * * * * CALLABLE ROUTINE TO DISPLAY A FIELD MESSAGE. * * ON ENTRY, DE=FWA OF MESSAGE. * BC, DE, HL REGISTERS ARE SAVED * * * * * * * * * * * * * * * * * * * * * VDMSG EQU * PUSH BC PUSH DE PUSH HL EX DE,HL PUT ADDRESS INTO HL CALL R.DSTRNG DISPLAY FIELD POP HL POP DE POP BC RET * * DISPLAYS MESSAGE ON TERMINAL SCREEN * MESSAGE EQU * LD (SAVE),DE SAVE ADDRESS * MESSG0 EQU * LD A,(IX+0) LOAD CHARACTER CODE INC A AND TEST FOR END OF MESS. RET Z EXIT IF END * INC A TEST FOR LINE FEED JR Z,MESSG1 JUMP FOR LINE FEED * LD H,00 ELSE LOAD HL LD L,(IX+0) WITH CARACTER CODE ADD HL,HL SHIFT FOR ADD HL,HL EIGHT BYTE CHARACTERS. ADD HL,HL LD BC,CHARSET LOAD ADDRESS OF CHAR SET ADD HL,BC ADD FOR ADDRESS OF CHARACTER LD BC,08 LOAD TRANSFER COUNT LDIR DISPLAY CHARACTER LD HL,01F8H ADJUST THE SCREEN ADD HL,DE ADDRESS FOR NEXT CHARACTER EX DE,HL INC IX INCREMENT CHARACTER POINTER JR MESSG0 DISPLAY NEXT CHARACTER. * MESSG1 EQU * LD HL,0008 LD DE,(SAVE) LOAD OLD START ADDRESS ADD HL,DE CALC. NEW LINE ADDRESS EX DE,HL INC IX INCREMENT CHARACTER POINTER JR MESSAGE * /--- BLOCK VMES 00 000 82/09/02 16.07 TITLE MESSAGES * * LOAD MESSAGES * * TURN ON ASCII STRINGS CODE S * LOAD MESSAGE VMES0 EQU * TEXT '7 '7 TEXT '7 '7 DEFB 0FFH * CHECKSUM ERROR VMES1 EQU * TEXT '7'C'H'E'C'K'S'U'M 'E'R'R'O'R'7 DEFB 0FFH * DISK READ FAILED VMES2 EQU * TEXT '7'D'I'S'K 'R'E'A'D 'F'A'I'L'E'D'7 DEFB 0FFH * * PRESS NEXT TO TRY AGAIN VMES6 EQU * TEXT '7'P'R'E'S'S 'N'E'X'T 'T'O 'T'R'Y 'A'G'A'I'N'7 DEFB 0FFH * LOADING PLATO FROM DISK VMES11 EQU * TEXT '7'L'O'A'D'I'N'G 'T'E'R'M'I'N'A'L 'M'E'M'O'R'Y '7 TEXT '7'F'R'O'M 'D'I'S'K '7 DEFB 0FFH * SECURITY MESSAGE VMES14 EQU * TEXT '7'T'H'E'R'E 'I'S 'A 'P'R'O'B'L'E'M'7 TEXT '7 'W'I'T'H 'Y'O'U'R 'D'I'S'K, 'P'L'E'A'S'E'7 TEXT '7 'C'A'L'L 'T'H'E 'P'L'A'T'O 'H'O'T'7 TEXT '7 'L'I'N'E 'F'O'R 'I'M'M'E'D'I'A'T'E '7 TEXT '7'E'V'A'L'U'A'T'I'O'N. 'P'R'O'V'I'D'E'7 TEXT '7 'T'H'E 'H'O'T 'L'I'N'E 'W'I'T'H '7 TEXT '7'E'R'R'O'R 'C'O'D'E 'N'U'M'B'E'R 146 '7 VMES14A EQU * TEXT '7 '7 DEFB 0FFH * /--- BLOCK CHARSET 00 000 82/03/18 08.53 TITLE IST CHARACTER SET * * LOADER CHARACTER SET * CHARSET EQU * * 0 00 HEX 1C,22,22,22,22,22,1C,00 * 1 01 HEX 08,0C,08,08,08,08,3E,00 * 2 02 HEX 1C,22,20,10,08,04,3E,00 * 3 03 HEX 1C,22,20,18,20,22,1C,00 * 4 04 HEX 22,22,22,3E,20,20,20,00 * 5 05 HEX 3E,02,1E,20,20,22,1C,00 * 6 06 HEX 1C,22,02,1A,26,22,1C,00 * 7 07 HEX 3E,20,10,08,04,02,02,00 * 8 08 HEX 1C,22,22,1C,22,22,1C,00 * 9 09 HEX 1C,22,22,3C,20,22,1C,00 * 'A 0A HEX 1C,22,22,3E,22,22,22,00 * 'B 0B HEX 1E,22,22,1E,22,22,1E,00 * 'C 0C HEX 1C,22,02,02,02,22,1C,00 * 'D 0D HEX 1E,22,22,22,22,22,1E,00 * 'E 0E HEX 3E,02,02,1E,02,02,3E,00 * 'F 0F HEX 3E,02,02,1E,02,02,02,00 * 'G 10 HEX 1C,22,02,02,32,22,1C,00 * 'H 11 HEX 22,22,22,3E,22,22,22,00 * 'I 12 HEX 3E,08,08,08,08,08,3E,00 * 'J 13 HEX 3C,08,08,08,08,0A,04,00 * 'K 14 HEX 22,12,0A,06,0A,12,22,00 * 'L 15 HEX 02,02,02,02,02,02,3E,00 * 'M 16 HEX 22,36,2A,22,22,22,22,00 * 'N 17 HEX 22,26,2A,2A,2A,32,22,00 * 'O 18 HEX 1C,22,22,22,22,22,1C,00 * 'P 19 HEX 1E,22,22,1E,02,02,02,00 * 'Q 1A HEX 1C,22,22,22,22,32,3C,00 * 'R 1B HEX 1E,22,22,1E,12,22,22,00 * 'S 1C HEX 1C,22,02,1C,20,22,1C,00 * 'T 1D HEX 3E,08,08,08,08,08,08,00 * 'U 1E HEX 22,22,22,22,22,22,1C,00 * 'V 1F HEX 22,22,22,14,14,14,08,00 * 'W 20 HEX 22,22,22,22,2A,36,22,00 * 'X 21 HEX 22,22,14,08,14,22,22,00 * 'Y 22 HEX 22,22,14,08,08,08,08,00 * 'Z 23 HEX 3E,20,10,08,04,02,3E,00 * /--- BLOCK CHARSET 00 000 82/03/18 12.48 * SP 24 HEX 00,00,00,00,00,00,00,00 * BOX * HOR. LINE 25 HEX 00,00,00,FF,FF,00,00,00 * VERT. LINE 26 HEX 18,18,18,18,18,18,18,18 * UP L CORNER 27 HEX 00,00,00,F8,F8,18,18,18 * UP R CORNER 28 HEX 00,00,00,1F,1F,18,18,18 * LOW L CORNER HEX 18,18,18,F8,F8,00,00,00 * LOW R COR HEX 18,18,18,1F,1F,00,00,00 * COMMA 2B HEX 00,00,00,00,00,0C,0C,04 * PERIOD 2C HEX 00,00,00,00,00,0C,0C,00 * LINE FEED FE * END OF MESSAGE FF * /--- BLOCK MES 00 000 82/04/21 09.01 * TITLE MESSAGES * LOAD MESSAGES * * CHECKSUM ERROR MES1 EQU * HEX 0C,11,0E,0C,14,1C,1E,16,24 HEX 0E,1B,1B,18,1B,24,24,24,FF * DISK READ FAILED MES2 EQU * HEX 0D,12,1C,14,24 HEX 1B,0E,0A,0D,24 HEX 0F,0A,12,15,0E,0D,24,FF * LOADING PLATO FROM DISK MES3 EQU * HEX 15,18,0A,0D,12,17,10,24 HEX 19,15,0A,1D,18,24 HEX 0F,1B,18,16,24 HEX 0D,12,1C,14,24,FF * PRESS NEXT TO TRY AGAIN MES4 EQU * HEX 19,1B,0E,1C,1C,24 HEX 17,0E,21,1D,24 HEX 1D,18,24 HEX 1D,1B,22,24 HEX 0A,10,0A,12,17,24,FF * /--- BLOCK MES 00 000 82/04/21 08.25 * IF YOU ARE GOING TO USE THIS TERMINAL AS A PLATO * OR MICRO PLATO STATION PRESS OR TOUCH P TO LOAD MES5 EQU * HEX 12,0F,24,22,18,1E,24 HEX 0A,1B,0E,24,10,18,12,17,10,24 HEX 1D,18,24,1E,1C,0E,24 HEX 1D,11,12,1C,24 HEX 1D,0E,1B,16,12,17,0A,15,FE,FE HEX 0A,1C,24,0A,24 HEX 19,15,0A,1D,18,24 HEX 18,1B,24,16,12,0C,1B,18,24 HEX 19,15,0A,1D,18,24 HEX 1C,1D,0A,1D,12,18,17,2B,FE,FE HEX 19,1B,0E,1C,1C,24 HEX 18,1B,24,1D,18,1E,0C,11,24 HEX 19,24 HEX 1D,18,24 HEX 15,18,0A,0D,2C,FF * IF YOU ARE GOING TO USE THIS TERMINAL TO * COMMUNICATE TO AN ASCII PLATO SYSTEM, PRESS OR * TOUCH A TO LOAD. MES6 EQU * HEX 12,0F,24,22,18,1E,24 HEX 0A,1B,0E,24,10,18,12,17,10,24 HEX 1D,18,24,1E,1C,0E,24 HEX 1D,11,12,1C,24 HEX 1D,0E,1B,16,12,17,0A,15,FE,FE HEX 1D,18,24 HEX 0C,18,16,16,1E,17,12,0C,0A,1D,0E,24 HEX 1D,18,24,0A,17,24 HEX 0A,1C,0C,12,12,24 HEX 19,15,0A,1D,18,24 HEX 1C,22,1C,1D,0E,16,2B,FE,FE HEX 19,1B,0E,1C,1C,24 HEX 18,1B,24,1D,18,1E,0C,11,24 HEX 0A,24 HEX 1D,18,24 HEX 15,18,0A,0D,2C,FF * IF YOU ARE GOING TO USE THIS TERMINAL TO * COMMUNICATE TO AN ASCII GRAPHICS SYSTEM, PRESS * OR TOUCH G TO LOAD. MES7 EQU * HEX 12,0F,24,22,18,1E,24 HEX 0A,1B,0E,24,10,18,12,17,10,24 HEX 1D,18,24,1E,1C,0E,24 HEX 1D,11,12,1C,24 HEX 1D,0E,1B,16,12,17,0A,15,FE,FE HEX 1D,18,24 HEX 0C,18,16,16,1E,17,12,0C,0A,1D,0E,24 HEX 1D,18,24,0A,17,24 HEX 0A,1C,0C,12,12,24 HEX 10,1B,0A,19,11,12,0C,1C,24 HEX 1C,22,1C,1D,0E,16,2B,FE,FE HEX 19,1B,0E,1C,1C,24 HEX 18,1B,24,1D,18,1E,0C,11,24 HEX 10,24 HEX 1D,18,24 HEX 15,18,0A,0D,2C,FF * /--- BLOCK MES 00 000 82/09/09 14.17 * LOADING PLATO FROM DISK MES8 EQU * HEX 15,18,0A,0D,12,17,10,24 HEX 0A,1C,0C,12,12,24 HEX 19,15,0A,1D,18,24 HEX 0F,1B,18,16,24 HEX 0D,12,1C,14,24,FF * LOADING PLATO FROM DISK MES9 EQU * HEX 15,18,0A,0D,12,17,10,24 HEX 19,15,0A,1D,18,24 HEX 10,1B,0A,19,11,12,0C,1C,24 HEX 0F,1B,18,16,24 HEX 0D,12,1C,14,24,FF * BIG G MES11 EQU * HEX 27,25,28,FE,26,10,26,FE,29,25,2A,FF * BIG A MES12 EQU * HEX 27,25,28,FE,26,19,26,FE,29,25,2A,FF * BIG P MES13 EQU * HEX 27,25,28,FE,26,0A,26,FE,29,25,2A,FF * THERE IS A PROBLEM MES14 EQU * HEX FE,1D,11,0E,1B,0E,24,12,1C,24,0A,24 HEX 19,1B,18,0B,15,0E,16,24,20,12,1D HEX 11,24,22,18,1E,1B,24,0D,12,1C,14 HEX 2B,24,19,15,0E,0A,1C,0E,24,0C,0A HEX 15,15,24,1D,11,0E,FE,FE,19,15,0A,1D HEX 18,24,11,18,1D,24,15,12,17,0E,24 HEX 0F,18,1B,24,12,16,16,0E,0D,12,0A HEX 1D,0E,24,0E,1F,0A,15,1E,0A,1D,12 HEX 18,17,2C,24,19,1B,18,1F,12,0D,0E HEX FE,FE,1D,11,0E,24,11,18,1D,24,15,12 HEX 17,0E,24,1D,11,0E,24,0E,1B,1B,18 HEX 1B,24,0C,18,0D,0E,24,17,1E,16,0B HEX 0E,1B,24,01,04,06,24 NUMB EQU *-BEGIN+6 HEX 00,00,00,00,00,00,00,00,00,00,24 HEX 00,00,00,00,00,00,00,00,00,00,FF,FF,FF ENDLDR EQU *-BEGIN+6 * /--- BLOCK END 00 000 82/05/27 08.44 TITLE LOADER VARIABLES * * PARAMETER TABLE * INTIALIZED TO DRIVE 0, SIDE 0, TRACK 0, * SECTOR 00, ONE SECTOR, SINGLE DENSITY. * PARMS EQU * DRIVE EQU PARMS DRIVE NUMBER, 0 OR 1 SIDE EQU DRIVE+1 DISK SIDE, 0 OR 1 TRACK EQU SIDE+1 TRACK NUMBER, 00 TO 76 SECTOR EQU TRACK+1 STARTING SECTOR, 00 TO 26 NSECT EQU SECTOR+1 NUMBER OF SECTOR TO PROCESS DENSITY EQU NSECT+1 SINGLE OR DOUBLE DENSITY * * FLAGS AND VARIABLES * RCRDN EQU DENSITY+1 REQUESTED DISK RECORD NUMDER SAVE EQU RCRDN+1 EIGHT BYTE SCRATCH PAD CMD EQU SAVE+8 COMMAND TO BE USED NSEC EQU CMD+1 NUMBER OF SECTORS TO PROCESS LDADR EQU NSEC+1 TERMINAL MEMORY ADDRESS RTYCNT EQU LDADR+2 RETRY COUNT LRTYCNT EQU RTYCNT+1 LOAD RETRY COUNT * CHRLWA EQU LRTYCNT+1 CHARACTER SET LWA RESLWA EQU CHRLWA+2 RESIDENT LWA INTLWA EQU RESLWA+2 INTERPRETER LWA ASCLWA EQU INTLWA+2 ASCII RESIDENT LWA * BGN.ADR EQU ASCLWA+2 ADDRESS OF RES. ADDRESS BLK0.ADR EQU BGN.ADR+2 BLOCK 0 FWA M0.ADR EQU BLK0.ADR+2 CHAR SET FWA LDS.ADR EQU M0.ADR+2 LOAD SOURCE FLAG ADDRESS FL.ADR EQU LDS.ADR+2 FULL LOAD FLAG ADDRESS LDFG EQU FL.ADR+2 LOAD FLAG TTYPE EQU LDFG+2 TERMINAL TYPE, 0=IST2,1=IST3 * TTYPE+1, 0=21/12 BIT, 80H=ASCII SAVEI EQU TTYPE+2 SAVE ROM LOADER VARIBLES BGNADR EQU SAVEI+5 OPFLG EQU BGNADR+2 END