Codeloader

Developer(s): Patrick Fagan
Date: 198x
Type: Program
Platform(s): TS 2068

Utility for entering machine code in hexadecimal and other formats.

Appears on

Gallery

Source Code

 9400 REM "Codeloader---------by PATRICK FAGAN"
 9402 PRINT "YOU MUST SET A RAMTOP ADDRESS   AND BLOCK OF MEMORY TO USE THIS PROGRAM PROPERLY."
 9405 REM 
 9410 PRINT '"PRESS ENTER TO START PROGRAM.   IF THE PROGRAM STOPS WITH AN    ERROR, YOU CAN RESTART WITH GOTO 9512."
 9415 REM 
 9420 PRINT '"NOTE--THE PROGRAM IS FASTER IF  YOU RESERVE SMALL BLOCKS OF     MEMORY (100 OR 200 BYTES)ABOVE  THE RAMTOP YOU WISH TO SET."
 9425 REM 
 9430 PRINT '"SPECIAL NOTE-IF YOU WANT TO PEEK AND RELOCATE CODE,YOU MUST HAVE A BLOCK OF MEMORY RESERVED     ABOVE RAMTOP THAT IS AS LARGE AS THE BLOCK OF MEMORY YOU WISH TO RELOCATE."
 9435 PAUSE 4000: CLS 
 9500 PRINT AT 10,1; INVERSE 1; BRIGHT 1;"MACHINE CODE LOADING                     AND EDITING PROGRAM. "
 9502 PRINT : PRINT "ENTER YOUR STARTING CODE ADDRESS                                THIS WILL SET RAMTOP"
 9503 INPUT "START ADDRESS?  ";X
 9504 CLEAR X: LET X=(PEEK 23730+256*PEEK 23731): LET Y=X
 9506 PRINT AT 10,1;"ENTER YOUR ENDING CODE ADDRESS?"
 9507 INPUT "END ADDRESS?    ";E
 9508 PRINT AT 15,2; BRIGHT 1;"ADDRESS ";X;" TO ";E: PAUSE 150: CLS 
 9510 DIM H$(1+E-X,3): LET D=9500
 9512 CLS 
 9516 PRINT BRIGHT 1;"LOAD HEX, 0NLY CAPITOL LETTERS. "
 9518 PRINT '"#1 LOAD HEX CODE?"
 9520 PRINT '"#2 LOAD DECIMAL CODE?"
 9522 PRINT '"#3 LOAD HEXDECIMAL DATA LIST?"
 9524 PRINT '"#4 LOAD DECIMAL DATA LIST?"
 9526 PRINT '"#5 PEEK RAMTOP AND EDIT CODE?"
 9528 PRINT '"#6 EXECUTE USR CODE?"
 9530 PRINT '"#7 RETURN TO PROGRAM LISTING?"
 9532 PRINT '"#8 STACK ANOTHER CODE ROUTINE?"
 9534 PRINT '"#9 PEEK AND RELOCATE CODE?"
 9535 PRINT '"#10 DECIMAL TO BINARY CONVERSION"
 9538 INPUT "   CHOOSE OPTION NUMBER. ";W
 9540 IF W=1 THEN CLS : GO TO 9554
 9542 IF W=2 THEN CLS : GO TO 9612
 9544 IF W=3 THEN CLS : GO TO 9664
 9546 IF W=4 THEN CLS : GO TO 9686
 9548 IF W=5 THEN CLS : GO TO 9710
 9549 IF W=6 THEN CLS : GO TO 9796
 9550 IF W=7 THEN CLS : LIST D: STOP 
 9551 IF W=8 THEN CLS : PRINT AT 6,3;"YOUR PREVIOUS END CODE WAS           ADDRESS ";E: GO TO 9500
 9552 IF W=9 THEN CLS : GO TO 9702
 9553 IF W=10 THEN CLS : GO TO 9810
 9554 PRINT AT 2,1; BRIGHT 1;"       HEX LOAD PROGRAM       "
 9556 PRINT '"TO ENTER INPUT HEX NUMBERS ONE  AT A TIME AND PRESS ENTER."
 9558 PRINT '"TO LOAD ENTER 'L' AND ENTER."
 9560 PRINT '"FOR A NEW LINE AND FOR THE TOTAL BYTES SO FAR,PRESS ENTER."
 9564 PRINT '"TO EDIT ENTER LETTER 'Z' AND    BYTE NUMBER YOU WISH TO CHANGE.."
 9566 PRINT '"NOTE.TO CONTINUE AFTER EDITING, ENTER BYTE YOU WISH TO START AT AND THEN LETTER 'R'."
 9570 FOR A=1 TO E-X
 9572 INPUT "ENTER HEX CODE. ";H$(A)
 9576 IF H$(A)="   " THEN PRINT TAB 28;"#";A-1: GO TO 9572
 9578 IF H$(A)="Z  " THEN GO TO 9584
 9580 IF H$(A)="L  " THEN GO TO 9594
 9581 PRINT H$(A);" ";
 9582 NEXT A
 9584 INPUT "ENTER BYTE# TO CHANGE ";C
 9586 LET A=C
 9588 INPUT "ENTER NEW HEX BYTE IN LOCATION.";H$(A)
 9590 IF H$(A)="R  " THEN LET H$(A)=H$(A-1): PRINT TAB 31;" ";: GO TO 9572
 9591 PRINT "C";C;"=";H$(A);" ";
 9592 GO TO 9584
 9594 LET A=0
 9596 LET A=A+1
 9597 IF A>1+E-Y THEN GO TO 9792
 9598 IF CODE H$(A)=76 THEN GO TO 9792
 9599 LET K=48: LET L=48
 9600 IF CODE H$(A)>57 THEN LET K=K+7
 9602 IF CODE H$(A,2)>57 THEN LET L=L+7
 9604 POKE X,(CODE H$(A)-K)*16+CODE H$(A,2)-L
 9608 LET X=X+1
 9610 GO TO 9596
 9612 PRINT AT 2,1; BRIGHT 1;"     DECIMAL LOAD PROGRAM     "
 9614 PRINT '"TO ENTER, INPUT DECIMAL NUMBERS ONE AT A TIME AND PRESS ENTER."
 9616 PRINT '"TO LOAD,ENTER 'L' AND PRESS ENTER."
 9618 PRINT '"FOR A NEW LINE AND FOR THE TOTAL BYTES SO FAR,PRESS ENTER."
 9622 PRINT '"TO EDIT ENTER LETTER 'Z' AND    BYTE NUMBER YOU WISH TO CHANGE.."
 9624 PRINT '"NOTE.TO CONTINUE AFTER EDITING,ENTER BYTE YOU WISH TO START AT  THEN LETTER 'R'."
 9628 FOR A=1 TO E-X
 9630 INPUT "ENTER DECIMAL CODE. ";H$(A)
 9632 IF H$(A)="Z  " THEN GO TO 9642
 9636 IF H$(A)="   " THEN PRINT TAB 28;"#";A-1: GO TO 9630
 9638 IF H$(A)="L  " THEN GO TO 9652
 9639 PRINT H$(A);" ";
 9641 NEXT A
 9642 INPUT "ENTER BYTE# TO CHANGE ";C
 9644 LET A=C
 9646 INPUT "ENTER NEW DECIMAL BYTE .";H$(A)
 9648 IF H$(A)="R  " THEN LET H$(A)=H$(A-1): PRINT TAB 31;" ";: GO TO 9630
 9649 PRINT "C";C;"=";H$(A);" ";
 9650 GO TO 9642
 9652 LET A=0
 9654 LET A=A+1
 9655 IF A>1+E-Y THEN GO TO 9792
 9656 IF CODE H$(A)=76 THEN GO TO 9792
 9657 POKE X,VAL H$(A)
 9660 LET X=X+1
 9662 GO TO 9654
 9664 PRINT AT 10,0; BRIGHT 1;"HEXDECIMAL DATA LOAD PROGRAM"
 9666 PRINT '"ENTER STARTING LINE# OF DATA     LIST TO LOAD."
 9668 INPUT "DATA LINE# ?  ";D
 9670 RESTORE D
 9672 FOR A=X TO E
 9674 READ B$: LET K=48: LET L=48
 9676 IF CODE B$>57 THEN LET K=K+7
 9678 IF CODE B$(2)>57 THEN LET L=L+7
 9680 POKE A,(CODE B$-K)*16+CODE B$(2)-L
 9682 IF B$="C9" THEN GO TO 9792
 9684 NEXT A
 9686 PRINT AT 10,0; BRIGHT 1;"DECIMAL DATA LOAD PROGRAM"
 9688 PRINT '"ENTER STARTING LINE# OF DATA     LIST TO LOAD."
 9690 INPUT "DATA LINE# ?  ";D
 9692 RESTORE D
 9694 FOR A=X TO E
 9696 READ B: POKE A,B
 9698 IF B=201 THEN GO TO 9792
 9700 POKE A,B: NEXT A
 9702 PRINT AT 10,0;"TO PEEK ANY CODE ADDRESS AREA,  ENTER THE START AND END ADDRESS IN DECIMAL."
 9703 INPUT " START & END ADDRESS?           ";J;" TO ";K: CLS 
 9704 LET B=0: LET A=0: LET C$="0"
 9705 FOR P=J TO K: PRINT P;"  ";PEEK P;: IF PEEK P>31 THEN PRINT TAB 11;CHR$ PEEK P;
 9706 PRINT : LET B=B+1: LET A=A+1: LET H$(A)=STR$ PEEK P: NEXT P
 9707 INPUT "'1'RETURN TO MENU '2'LOAD CODE INTO NEW ADDRESS?";U: IF U=1 THEN GO TO 9512
 9708 IF U=2 THEN CLS : INPUT "START & END ADDRESS?             ";Y;" TO ";E: GO TO 9760
 9710 LET B=0: LET A=0: LET C$="0"
 9711 INPUT "1'VIEW & EDIT DECIMAL, 2'VIEW & EDIT HEX. ";F
 9712 PRINT TAB 5;"I'M WORKING ON IT NOW!"
 9714 IF F=1 THEN GO TO 9718
 9716 IF F=2 THEN GO TO 9726
 9718 FOR P=Y TO E
 9720 LET B=B+1: LET A=A+1
 9722 LET H$(A)=STR$ PEEK P
 9724 NEXT P: GO TO 9759
 9726 LET A=0
 9728 FOR P=Y TO E
 9730 LET G=PEEK P: LET A=A+1
 9732 LET J=INT (G/16)
 9734 LET K=INT (G-J*16)
 9736 LET H$(A,1)=STR$ J
 9738 LET H$(A,2 TO )=STR$ K
 9739 IF J<10 AND K<10 THEN GO TO 9758
 9740 FOR C=10 TO 15
 9742 IF C=10 THEN LET A$="A"
 9744 IF C=11 THEN LET A$="B"
 9746 IF C=12 THEN LET A$="C"
 9748 IF C=13 THEN LET A$="D"
 9750 IF C=14 THEN LET A$="E"
 9752 IF C=15 THEN LET A$="F"
 9754 IF J=C THEN LET H$(A,1)=A$
 9756 IF K=C THEN LET H$(A,2 TO )=A$
 9757 NEXT C
 9758 NEXT P
 9759 PRINT TAB 10;"EDIT,BYTE#"
 9760 LET A=0: LET B=0: LET I=0
 9762 FOR P=Y TO E
 9764 LET B=B+1: LET I=I+1
 9766 LET A=I: PRINT P;"  ";PEEK P;TAB 11;H$(A);"  ";I;"  ";
 9768 IF PEEK P>31 THEN PRINT CHR$ PEEK P;
 9770 PRINT 
 9772 IF B=20 THEN INPUT "#1,STOP  #2,EDIT  #3,CONT ";C$: LET B=0
 9774 IF C$="1" THEN GO TO 9512
 9776 IF C$="2" THEN GO TO 9780
 9778 NEXT P: LET B=20: GO TO 9772
 9780 INPUT "0',CONT, OR ENT BYTE# TO CHANGE,RELOAD CODE,-1'DEC,-2'HEX. ";C: LET X=Y: LET C$="0"
 9782 IF C=0 THEN GO TO 9778
 9784 IF C=-1 THEN GO TO 9652
 9786 IF C=-2 THEN GO TO 9594
 9788 LET A=C: INPUT "ENT BYTES IN SAME CODE AS EDIT LIST ";H$(A)
 9790 GO TO 9780
 9792 PRINT AT 21,8; INVERSE 1;"CODE USR ";Y;" ENTERED"
 9794 PAUSE 70: GO TO 9512
 9796 PRINT USR Y
 9798 PAUSE 200: GO TO 9512
 9800 PRINT "ENTER START AND END ADDRESS OF   CODE YOU WISH TO VIEW."
 9801 INPUT "START & END ADDRESS?            ";Y;" TO ";E
 9802 FOR P=Y TO E
 9804 PRINT P;"  ";PEEK P;
 9805 IF PEEK P>31 THEN PRINT TAB 11;CHR$ PEEK P;
 9806 PRINT 
 9807 NEXT P
 9808 INPUT "PRESS ENTER TO RETURN TO MENU.  ";Z$: IF Z$="" THEN GO TO 9512
 9810 PRINT "DECIMAL TO BINARY CONVERSION."
 9812 INPUT "ENT DEC#:ENT -0 TO EXIT: ";A: PRINT A;"= ";TAB 7;
 9813 IF A=-0 THEN GO TO 9512
 9814 FOR I=15 TO 0 STEP -1
 9816 IF A<2^I THEN GO TO 9824
 9818 PRINT "1";
 9820 LET A=A-2^I
 9822 GO TO 9826
 9824 PRINT "0";
 9826 NEXT I: PRINT : GO TO 9812
 9828 STOP 
 9900 SAVE "codeloader" LINE 9500
Scroll to Top