Posted Wed Nov 16, 2011 10:24 AM
Posted Wed Nov 16, 2011 10:53 AM
Posted Wed Nov 16, 2011 11:29 AM
Edited by jacquesg, Wed Nov 16, 2011 11:32 AM.
Posted Wed Nov 16, 2011 3:55 PM
jacquesg, on Wed Nov 16, 2011 11:29 AM, said:
* TRACK4S - SOURCE CODE FOR CHANGING * DEVICE NAME IN AN XB PROGRAM * FINDS DSK1 ANYWHERE IN XB PROGRAM * AND CHANGES IT TO DSKX, WHERE X IS THE * DRIVE FROM WHICH XB PROGRAM WAS LOADED * OCCUPIES 162 BYTES OF MEMORY * 26 FEB 1992 * HARRISON SOFTWARE (PUBLIC DOMAIN) * CODE BY BRUCE HARRISON * DEF TRACK TRACK LWPI WS USE OUR WORKSPACE MOV @>83D0,R12 GET THE CRU BASE IN R12 MOV @>83D2,R9 GET THE ROM ADDRESS FOR DEVICE LDCR @ONES,0 ENABLE THE ROM AI R9,4 ADDING FOUR PUTS US AT THE LENGTH BYTE MOVB *R9+,R4 PLACE THAT IN R4 AND INCREMENT R9 SRL R4,8 RIGHT JUSTIFY LENGTH IN R4 LI R10,TEXT POINT TO TEXT BUFFER MOVIT MOVB *R9+,*R10+ MOV ONE BYTE FROM ROM TO TEXT BUFFER DEC R4 FINISHED? JNE MOVIT NO, DO ANOTHER BYTE LDCR R4,0 DISABLE THE ROM (R4 IS ZERO AT THIS POINT) MOV @>8330,R13 PUT START OF LINE NUMBER TABLE IN R13 NEWLI INCT R13 POINT TO BYTE CONTAINING ADDRESS OF LINE C R13,@>8332 ARE WE PAST END OF LINE NUMBER TABLE JGT QUIT IF SO WE ARE FINISHED MOVB *R13+,R4 GET HIGH ORDER BYTE OF LINE ADDRESS IN R4 SWPB R4 SWAP R4 MOVB *R13+,R4 GET LOW ORDER BYTE OF LINE ADDRESS SWPB R4 SWAP SO R4 CONTAINS STARTING ADDRESS OF A LINE * * AT THIS STAGE R4 POINTS TO THE BEGINNING OF A LINE IN THE XB PROGRAM, * NEXT MOV R4,R10 SET R10 EQUAL TO R4 CHECK LI R9,DSK1 POINT AT TEXT 'DSK1' LI R3,4 SET FOR 4 CHARACTER COMPARE CMPB CB *R10,@ZERO IS THE BYTE WE'RE LOOKING AT A ZERO? JEQ NEWLI IF SO, IT'S THE END OF A PROGRAM LINE CB *R9+,*R10+ COMPARE BYTES AND INCREMENT JNE NOCMP IF NOT EQUAL, GET OUT DEC R3 ELSE DECREMENT COUNT JNE CMPB IF NOT ZERO, REPEAT LI R9,TEXT DSK1 WAS FOUND. POINT TO BOOT TRACKED DEVICE NAME MOV R4,R10 R10 POINTS TO LOCATION WHERE "DSK1" WAS FOUND * * THE LOOP AT MOV2 OVERWRITES "DSK1" IN THE XB PROGRAM LINE * WITH DEVICE NAME FOUND IN THE BOOT TRACK PROCESS * LI R5,4 FOUR BYTES TO MOVE MOV2 MOVB *R9+,*R10+ MOVE ONE, INCREMENT POINTERS DEC R5 DECREMENT COUNTER JNE MOV2 IF NOT ZERO, REPEAT MOV R10,R4 START OF NEXT GROUP OF BYTES JMP CHECK JUMP BACK NOCMP INC R4 GO START AT NEXT BYTE IN XB PGM LINE JMP NEXT AT LABEL NEXT QUIT LWPI >83E0 LOAD GPL WORKSPACE CLR @>837C CLEAR THE STATUS BYTE B @>006A RETURN TO GPL INTERPRETER TEXT BSS 6 BUFFER FOR DEVICE NAME WS BSS 32 OUR OWN WORKSPACE ONES DATA >0101 WORD TO TURN ON ROM IN CRU ZERO DATA 0 ZERO BYTE FOR COMPARISON DSK1 TEXT 'DSK1' COMPARISON TEXT END
Posted Wed Nov 16, 2011 5:11 PM
Posted Wed Nov 16, 2011 5:25 PM
11 ! BOOT TRACKING IN RXB MERGE this program frist so your program knows which drive it loaded from last. *NOTE: NO ASSEMBLY USED!!
12 CALL PEEK(-31792,R,I,C,H)
:: CRU=128*R+I :: CPU=256*C+H+5
:: CALL IO(3,8,CRU,255)
:: CALL MOVES("R$",4,CPU,D$)
:: CALL IO(3,8,CRU,0)
13 CALL MOVES("V$",20,2086,E$)
:: PRINT "DEVICE:";D$:"PATH:";E$
Edited by RXB, Wed Nov 16, 2011 5:29 PM.
Posted Thu Nov 17, 2011 8:55 AM
Posted Thu Nov 17, 2011 9:17 AM
Posted Thu Nov 17, 2011 11:02 AM
Willsy, on Thu Nov 17, 2011 9:17 AM, said:
Posted Thu Nov 17, 2011 11:20 AM
Posted Thu Nov 17, 2011 11:21 AM
Posted Thu Nov 17, 2011 2:02 PM
Edited by sometimes99er, Thu Nov 17, 2011 2:10 PM.
Posted Thu Nov 17, 2011 3:00 PM
Edited by RXB, Thu Nov 17, 2011 3:25 PM.
Posted Thu Nov 17, 2011 3:09 PM
Posted Thu Nov 17, 2011 3:28 PM
Edited by RXB, Thu Nov 17, 2011 3:33 PM.
Posted Thu Nov 17, 2011 5:20 PM
Posted Thu Nov 17, 2011 6:25 PM
OLD CS1, on Thu Nov 17, 2011 5:20 PM, said:
CALL HEX(A,A$,B$,B,C,C$) = >00649DC8034858B741B34124B342B342B343B34324B6 A$=DEC(A) :: B=HEX$(B$) :: C$=DEC(C$) = >006E4124BE444543B741B68242BE48455824B74224B6824324BE444543B743B6
Edited by RXB, Thu Nov 17, 2011 6:39 PM.
Posted Thu Nov 17, 2011 7:42 PM
0 members, 1 guests, 0 anonymous users