X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fkermit%2Fk12%2Fk12ipl.pal;fp=sw%2Fkermit%2Fk12%2Fk12ipl.pal;h=2ea17742871588629295f966f3e07a428c46df28;hb=81e70d488b71bf995c459ca3a02c025993460ffa;hp=0000000000000000000000000000000000000000;hpb=07ec0278333ed187ac242dedcff13c56cf1b0b91;p=pdp8.git diff --git a/sw/kermit/k12/k12ipl.pal b/sw/kermit/k12/k12ipl.pal new file mode 100644 index 0000000..2ea1774 --- /dev/null +++ b/sw/kermit/k12/k12ipl.pal @@ -0,0 +1,242 @@ +/ INITIAL PROGRAM LOADER + +/ LAST EDIT: 06-OCT-1991 05:00:00 CJL + +/ MAY BE ASSEMBLED WITH '/F' SWITCH SET. + +/ THIS PROGRAM IS USED TO LOAD BINARY PROGRAMS IN .IPL FORMAT DIRECTLY. AN +/ ERROR-FREE PATH IS ASSUMED BETWEEN THE PDP-8 (OR DECMATE) AND THE DATA SERVER. +/ SUCH A CONNECTION COULD BE ESTABLISHED BETWEEN THE PDP-8 AND A NEARBY PC USING +/ A SHORT RS-232 CABLE WITH NULL MODEM. THIS UTILITY IS WRITTEN FOR THE EXPRESS +/ PURPOSE OF LOADING KERMIT-12 ON PDP-8 SYSTEMS WITHOUT IT. ONCE KERMIT-12 HAS +/ BEEN LOADED, ITS USE SUPERSEDES THIS PROGRAM ENTIRELY. + +/ THERE IS NO FLOW-CONTROL PROTOCOL PER SE BETWEEN SYSTEMS, SINCE THE UTILITY +/ STORES DATA DIRECTLY INTO PDP-8 MEMORY AND THEREFORE DOESN'T REQUIRE +/ SYNCHRONIZATION DELAYS. INITIAL SYNCHRONIZATION CAN BE ACCOMPLISHED BY +/ SENDING A SINGLE CHARACTER FROM THE PDP-8 TO THE SERVER SIDE WHICH STARTS THE +/ TRANSMISSION. ALTERNATIVELY THE PDP-8 PROGRAM CAN BE STARTED FIRST, THEN THE +/ SERVER CAN SEND DATA DIRECTLY TO THE PDP-8; THIS ASSUMES THE ABILITY TO START +/ THE SERVER TRANSMISSION FROM THE SERVER'S END. + +/ THIS PROGRAM IS FOR ANY MODEL PDP-8 WITH A KL-STYLE REMOTE LINE SERIAL +/ INTERFACE OR EQUIVALENT. DEFAULT PARAMETER VALUES ARE CONSISTENT WITH THE +/ DISTRIBUTION SETTINGS FOR KERMIT-12 ITSELF AND ARE EASILY CHANGED. IT CAN BE +/ MODIFIED FOR USE ON VARIOUS DECMATE MODELS, BUT WILL BECOME SOMEWHAT LARGER IN +/ THE PROCESS DUE TO THE MUCH GREATER COMPLEXITY OF THE VARIOUS DECMATE +/ COMMUNICATIONS INTERFACES UNLESS THE COMPATIBLE PRINTER PORT IS CHOSEN (DEVICE +/ 32/33). + +/ THIS PROGRAM SHOULD ONLY BE USED IF NO OTHER METHOD IS AVAILABLE AS THE +/ ASSUMPTION OF AN ERROR-FREE CONNECTION IS UNRELIABLE. DISTRIBUTION PATHS SUCH +/ AS INTERNET FTP OR CONTACTING THE AUTHOR CAN YIELD COMPLETE COPIES OF THE +/ PROGRAM DISTRIBUTION ON APPROPRIATE MEDIA WHERE APPLICABLE. + / USAGE: + +/ THIS PROGRAM IS RESTRICTED TO A SINGLE-FIELD LOAD ONLY. SEVERAL VARIANT +/ VERSIONS MUST BE CREATED TO COMPLETELY LOAD KERMIT-12. (AS OF THIS WRITING, +/ ONLY A FIELD ZERO AND FIELD ONE VERSION NEED BE CREATED. HOWEVER, KERMIT-12 +/ MAY BECOME LARGER!). THE EXAMPLE GIVEN BELOW ILLUSTRATES USAGE FOR FIELD ONE. +/ REPEATING THE PROCESS WITH THE INTENDED CONTENTS OF ALL OTHER FIELDS WILL +/ (EVENTUALLY) YIELD AN ENTIRE COPY OF KERMIT-12: + +/ .R IPL1 (OR RUN DEV IPL1) + +/ [PRESS AN APPROPRIATE KEY (SUCH AS CR) TO START WAITING FOR THE TRANSFER] + +/ [THE DATA IS TRANSFERRED FROM THE OTHER SYSTEM AT THIS TIME AND THE PROGRAM +/ EXITS AUTOMATICALLY TO THE KEYBOARD MONITOR.] + +/ .SAVE DEV FIELD1.SV 10000-17577=0 + +/ CHANGING ALL OF THE ONES IN THE ABOVE EXAMPLE TO ZERO WILL YIELD THE +/ FIELD-ZERO LOAD FILE FIELD0.SV AS WELL. DEV IS ANY CONVENIENT OS/8 DEVICE +/ SUCH AS SYS OR DSK. (IT ISN'T CRITICAL SINCE THESE FILES CAN BE DELETED ONCE +/ KERMIT-12 IS CREATED.) ONCE ALL PORTIONS OF KERMIT-12 HAVE BEEN OBTAINED, THE +/ FOLLOWING COMMANDS WILL COMBINE THEM INTO THE STANDARD RELEASE FILE K12MIT.SV: + +/ .LOAD DEV:FIELD1.SV/I,FIELD0.SV/I$ LOAD IMAGE FILES FIELD1.SV, FIELD0.SV +/ WITH /I SWITCH SET. (FUTURE VERSIONS +/ MAY REQUIRE LENGTHENING THE COMMAND TO +/ ADD MORE FILES SUCH AS FIELD2.SV, +/ FIELD3.SV, ETC.) $ INDICATES USING +/ TO TERMINATE LINE. + +/ .SAVE DEV K12MIT=1 SAVE COMPLETED FILE ON ANY AVAILABLE +/ DEVICE DEV (PREFERABLY SYS). + +/ CREATING THE VARIANT VERSIONS. + +/ ONLY ONE PARAMETER NEED BE CHANGED TO PRODUCE THE VARIOUS VERSIONS REQUIRED. +/ SETTING DFIELD=0 CREATES A VERSION USED TO OBTAIN THE FIELD-ZERO DATA. +/ SETTING DFIELD=1 CREATES THE FIELD-ONE VERSION. LEGAL VALUES FOR DFIELD +/ EXTEND UP TO SEVEN. THE DEFAULT VALUE IS ZERO. NOTE THAT THE FIELD-ZERO +/ VERSION LOADS INTO FIELD ONE WHILE ALL OTHER VERSIONS LOAD INTO FIELD ZERO. +/ THIS IS NECESSARY TO ALLOW UNRESTRICTED FILE LOADING WITHIN THE SELECTED +/ FIELD. (OS/8 ITSELF GENERALLY BARS LOADING INTO 7600-7777 OF ANY FIELD, THUS +/ LOADING IS ACTUALLY RESTRICTED TO 0000-7577 OF THE SELECTED FIELD.) + / OTHER ASSEMBLY PARAMETERS. + +/ SETTING REC= XX SETS THE REMOTE RECEIVE DEVICE CODE TO +/ XX (DEFAULT VALUE IS 40). + +/ SETTING SEN= XY SETS THE REMOTE TRANSMIT DEVICE CODE +/ TO XY (DEFAULT VALUE IS 41). + +/ SETTING BRATE= NN SETS THE BAUD RATE (FOR SYSTEMS THAT +/ SUPPORT THIS FEATURE SUCH AS THE +/ VT-78) FROM A TABLE OF VALUES (00-17) +/ AS FOLLOWS: + +/ NN (OCTAL) BAUD RATE + +/ 00 50 +/ 01 75 +/ 02 110 +/ 03 134.5 +/ 04 150 +/ 05 300 +/ 06 600 +/ 07 1200 +/ 10 1800 +/ 11 2000 +/ 12 2400 +/ 13 3600 +/ 14 4800 +/ 15 7200 +/ 16 9600 +/ 17 19200 + +/ (THE DEFAULT VALUE IS 07 FOR 1200 +/ BAUD COMMUNICATIONS.) + / ASSEMBLY INSTRUCTIONS FOR ANY VARIANT VERSION. + +/ ASSUMING A CUSTOMIZED FILE SETUP FOR LOADING FIELD ZERO DATA IS CALLED +/ IPL0.PA, THE FOLLOWING COMMANDS WILL CREATE IPL0.SV: + +/ .PAL IPL0 /DEFINE LOADING FIELD ZERO BY DEFAULT + +/ REMOTE LINE RECEIVE DEVICE CODE DEFINED HERE. REMOVE THE / AND FILL IN THE +/ APPROPRIATE VALUE. + +/ REC= 40 /REMOTE RECEIVE DEVICE CODE + + IFNDEF REC /DEFAULT RECEIVE DEVICE CODE IS 40 + +/ REMOTE LINE TRANSMIT DEVICE CODE DEFINED HERE. REMOVE THE / AND FILL IN THE +/ APPROPRIATE VALUE. + +/ SEN= 41 /REMOTE TRANSMIT DEVICE CODE + + IFNDEF SEN /DEFAULT TRANSMIT DEVICE CODE IS 41 + +/ BAUD RATE CONTROL VALUE DEFINED HERE FOR VT-78, ETC. REMOVE THE / AND FILL IN +/ THE APPROPRIATE VALUE. + +/ BRATE= 7 /BAUD RATE CONTROL VALUE + + IFNDEF BRATE /DEFAULT IS VALUE FOR 1200 BAUD + +/ REMOTE LINE IOT DEFINITIONS. + +/ RECEIVE DEFINITIONS. + +/ RKCCIOT=REC^10+6002 /CLEAR REMOTE INPUT FLAG, AC + RKRBIOT=REC^10+6006 /READ REMOTE, CLEAR FLAG + RKSFIOT=REC^10+6001 /SKIP ON REMOTE INPUT FLAG + +/ TRANSMIT DEFINITIONS. + + RSBIOT= SEN^10+6003 /SET BAUD RATE FROM AC[8-11] + RTLSIOT=SEN^10+6006 /TRANSMIT CHARACTER, CLEAR FLAG +/ RTSFIOT=SEN^10+6001 /SKIP ON TRANSMIT FLAG + +/ OTHER DEFINITIONS. + + DATFLD= DFIELD^10 /LOADING FIELD FOR CDF INSTRUCTIONS + / THE PROGRAM CODE STARTS HERE. + + IFZERO DFIELD /FIELD ZERO VERSION LOADS HERE + + IFNZRO DFIELD /ALL OTHER VERSIONS LOAD HERE + + *200 /START AT THE BEGINNING + +START, KCC /CLEAR KEYBOARD FLAG AND AC + TAD INPUT /GET BAUD RATE CONTROL VALUE + RSBIOT /SETUP THE BAUD RATE +/ RKSFIOT /**** FOR DECMATE PRINTER PORT ONLY **** + KSF /WAIT FOR + JMP .-1 /KEYBOARD INPUT + KRB /GET THE CHARACTER + RTLSIOT /OUTPUT TO REMOTE + TLS /LET USER SEE IT ALSO + RKRBIOT /CLEAR REMOTE INPUT FLAG NOW + CDF DATFLD /SETUP LOADING FIELD + JMS INPUT /TRY TO GET A VALID DATA CHARACTER + JMP .-1 /LEADER FOUND, IGNORE IT + JMP GOTDATA /LOAD FIRST DATA CHARACTER THERE + +DATLUP, JMS INPUT /TRY TO GET A VALID DATA CHARACTER + JMP LOADEND /TRAILER FOUND, GO FINISH THERE +GOTDATA,CLL RTL;RTL;RTL /MOVE HALF-WORD UP + DCA I LOADPTR /STORE HIGH-ORDER HALF + JMS INPUT /TRY TO GET A VALID DATA CHARACTER + JMP LOADEND /TRAILER FOUND, GO FINISH THERE + TAD I LOADPTR /COMBINE LATEST WITH PREVIOUS + DCA I LOADPTR /STORE BACK COMPOSITE + ISZ LOADPTR /BUMP TO NEXT +L177, 177 /CONSTANT 0177; HERE JUST IN CASE IT SKIPS + JMP DATLUP /GO BACK FOR MORE + +/ COMES HERE WHEN LOADING IS DONE. + +LOADEND,CLA!400 /CLEAN UP; ALSO CONSTANT 7600 + CIF CDF 00 /GOING TO MONITOR FIELD + JMP I LOADEND/(7600) /EXIT TO MONITOR + +LOADPTR,0000 /LOADING POINTER + INPUT, BRATE /INPUT ROUTINE; ALSO HOLDS BAUD RATE VALUE +INPAGN, RKSFIOT /ANY REMOTE INPUT? + JMP INPAGN /NO, WAIT FOR IT + RKRBIOT /YES, READ IT IN + AND L177/(177) /REMOVE PARITY BIT + TAD L7737/(-41) /COMPARE TO LOWER LIMIT + SPA /SKIP IF GREATER THAN THAT + JMP INPAGN /ELSE IGNORE IT + TAD L7700/(-100) /COMPARE TO UPPER LIMIT + SMA /SKIP IF IN RANGE + JMP I INPUT /ELSE TAKE IMMEDIATE RETURN ON LEADER/TRAILER + AND L77/(77) /REMOVE JUNK BITS + ISZ INPUT /BUMP RETURN + JMP I INPUT /TAKE SKIP RETURN TO CALLER + +L77, 77 /CONSTANT 0077 +L7700, 7700 /CONSTANT 7700 +L7737, 7737 /CONSTANT 7737 + + $ /THAT'S ALL FOLK!