image of READY prompt

Wang2200.org

Listing of file='PATCH' on disk='vmedia/701-2118F.wvd.zip'

# Sector 618, program filename = 'PATCH', protected file
0010 REM - PATCH UTILITY - 8/17/76  4.30 PM DA
0020 REM - PURPOSE; TO PATCH 2200 VP MICROCODE ON A DISK
0030 DIM A2$2,A3$3,A$(4)60,P$120,N$8,G$6,E$2,F$2,D$3,D1$2,D$(6)3,S1$2,S2$2,S3$
     2,S4$2,T$2
0040 D$()="F10R10F20R20F30R30"
0060 SELECT PRINT 005(64),LIST 005(64),CO  005(64),DISK 310
   : GOSUB '0
0070 DEFFN'0
   : RETURN  CLEAR
   : REM %MENU LIST
0075 PRINT HEX(03);AT(1,10);"PATCH UTILITY MENU"
0080 PRINT AT(3,3);"'0 - MENU LISTING";AT(4,3);"'1 - INSTRUCTIONS FOR PATCHING
     ";AT(5,3);"'2 - PATCH DISK"
0085 PRINT
   : PRINT "*****  USE ONLY UNDER GUIDANCE OF WANG FIELD SERVICE  *****"
0090 STOP "    PRESS S.F. KEY TO BEGIN"
   : GOSUB '0
0100 DEFFN'1
   : RETURN  CLEAR
   : REM %INSTRUCTIONS FOR PATCHING
0110 PRINT HEX(03);AT(1,10);"INSTRUCTIONS FOR PATCHING";AT(3,0);
   : RESTORE 1
0120 READ P$
   : PRINT TAB(3);P$
   : IF P$<>" " THEN 120
0130 STOP "PRESS S.F. KEY '2 TO BEGIN PATCHING"
0140 DATA "PATCHING TAKES PLACE IN TWO AREAS, INSTRUCTION MEMORY AND ","  PROG
     RAM MEMORY."
0150 DATA "PATCHES TO INSTRUCTION MEMORY ARE 6 HEX DIGITS, AND","PATCHES TO PR
     OGRAM MEMORY ARE 2 HEX DIGITS."
0160 DATA "BEFORE ENTERING PATCHES, TYPE AN ORIGIN COMMAND:","  OF THE FORM  '
     PCXXXX' OR 'ICXXXX'."
0170 DATA "TO EXIT FROM PATCH ROUTINE TYPE 'END'"
0180 DATA " "
0250 DEFFN'2
   : RETURN  CLEAR
   : REM %PATCH DISK
0260 PRINT "MOUNT (UNPROTECTED) DISK PLATTER TO BE PATCHED"
0263 D$="F10"
   : LINPUT "   ADDRESS OF DISK PLATTER (F10,R10, ...)  ",D$
   : MAT SEARCH D$(),=STR(D$)TO D1$ STEP 3
   : IF D1$=HEX(0000)THEN 263
   : ON (VAL(D1$,2)+2)/3 SELECT DISK 310;DISK B10;DISK 320;DISK B20;DISK 330;D
     ISK B30
0270 N$="@@"
   : LINPUT "   NAME OF FILE TO BE MODIFIED: ",N$
0280 REM OPEN THE FILE AND MODIFY THE REVISION COUNT
0290 PRINT "------- PRE-SCANNING DISK FILE ---------";
0310 LIMITS T N$,I,S1,S1,S1
   : IF S1=0 THEN 270
   : F$=HEX(FFFF)
0315 A2$,A3$,A$()=" "
   : DATA LOAD DA T(I)A2$,A3$,A$()
   : IF END  THEN 400
   : IF A2$<>HEX(0000)THEN 340
   : $TRAN(A$(),HEX(2000))R
   : GOTO 325
0320 A$()= A$()& "- R00"
0325 S1=LEN(A$())
   : IF S1<3 THEN 340
   : G$=STR(A$(),S1-2)
   : IF STR(G$,1,1)<>"R"THEN 320
   : IF NUM(STR(G$,2,2))<2THEN 320
0330 CONVERT STR(G$,2,2) TO S3
   : S3=S3+1
   : CONVERT S3 TO STR(G$,2,2),(##)
   : STR(A$(),S1-2)=G$
   : DATA SAVE DA T (I)A2$,A3$,A$()
   : S1,S3=0
   : S1$,S2$,S3$,S4$=HEX(0000)
0335 A2$,A3$,A$()=" "
   : DATA LOAD DA T(I,I)A2$,A3$,A$()
   : IF END  THEN 400
   : IF A2$=F$THEN 335
   : IF A2$=HEX(0000)THEN 345
   : IF A2$=HEX(0001)THEN 350
   : IF A2$=HEX(0003)THEN 360
0340 PRINT "FORMAT ERROR"
   : GOTO 335
0345 PRINT A$()
   : GOTO 335
0350 IF S1>0 THEN 355
   : S1$=A3$
   : S1=I-1
   : GOTO 335
0355 S2$=STR(A3$,,2) ADDC STR(A3$,3)
   : GOTO 335
0360 IF S3>0 THEN 365
   : S3$=A3$
   : S3=I-1
   : GOTO 335
0365 S4$=STR(A3$,,2) ADDC STR(A3$,3)
   : GOTO 335
0400 PRINT
   : PRINT "LOCATION:","DATA:";
   : E$="IC"
   : F$=HEX(0000)
   : REM INITIAL PATCH LOCATION
0410 PRINT
   : PRINT E$;HEXOF(F$),
   : G$=" "
   : LINPUT -G$
   : PRINT TAB(30);HEX(0C);
   : IF G$<>" " THEN 420
   : F$=ADDC HEX(01)
   : GOTO 410
0420 IF G$="END" THEN GOSUB '0
   : IF STR(G$,,2)<>"PC"AND STR(G$,,2)<>"IC"THEN 440
   : IF VER(STR(G$,3),"HHHH")<>4 THEN 600
   : E$=G$
   : HEXPACK F$ FROM STR(G$,3)
   : GOTO 410
0440 G=.5*VER(G$,"HHHHHH")
   : IF G+G<>LEN(G$)THEN 600
   : G1$=ALL(00)
   : IF E$="PC"THEN 470
   : IF E$="IC"THEN REM
   : ELSE STOP "THIS CAN'T HAPPEN!!!"#
0450 IF G<>3 THEN 600
   : HEXPACK G1$ FROM G$
   : GOSUB '60
   : GOTO 410
0470 IF G<>INT(G) THEN 600
   : HEXPACK G1$ FROM G$
   : GOSUB '50
   : GOTO 410
0600 PRINT "ERROR IN INPUT"
   : GOTO 410
0810 DEFFN'50
   : REM %PC WRITE
   : IF F$<S1$ OR F$>=S2$ THEN 980
   : T$=F$ SUBC S1$
   : T=S1+INT(VAL(T$,2)/240)
   : GOTO 815
0812 DATA SAVE DA T (T,T)A2$,A3$,A$()
   : IF G=0 THEN RETURN
0815 A2$,A3$,A$()=" "
   : DATA LOAD DA T (T)A2$,A3$,A$()
   : IF A2$<>HEX(0001) THEN 980
0820 T$=F$ SUBC STR(A3$,,2)
   : T1=1+VAL(T$,2)
   : IF T1>VAL(STR(A3$,3))THEN 812
   : PRINT HEXOF(STR(A$(),T1,1));
   : STR(A$(),T1,1)=G1$
   : G=G-1
   : F$=ADDC HEX(01)
   : IF G=0 THEN 812
   : G1$=STR(G1$,2)
   : GOTO 820
0910 DEFFN'60
   : REM %IC WRITE
   : IF F$<S3$ OR F$>=S4$ THEN 980
   : T$=F$ SUBC S3$
   : T=S3+INT(VAL(T$,2)/80)
0915 A2$,A3$,A$()=" "
   : DATA LOAD DA T (T)A2$,A3$,A$()
   : IF A2$<>HEX(0003) THEN 980
0920 T$=F$ SUBC STR(A3$,,2)
   : T1=VAL(T$,2)
   : IF T1+1>VAL(STR(A3$,3))THEN 915
   : PRINT HEXOF(STR(A$(),1+3*T1,3));
   : STR(A$(),1+3*T1,3)=G1$
   : DATA SAVE DA T (T)A2$,A3$,A$()
   : F$=ADDC HEX(01)
   : RETURN
0980 PRINT "ERROR IN WRITING TO DISK";
   : RETURN