+acadiel Posted February 17, 2018 Share Posted February 17, 2018 So. I have a nice set of backup floppies from an old Myarc Personality Card that I'm trying to restore. The Myarc Personality Card was a 5MB or 10MB SASI drive, and predates the HFDC (which was MFM). It has a fun little disk manager program that is an XB/Assembly hybrid. I'm attaching it here, but let's talk about the thing's backup and restore functions. BACKUP copied and filled up a diskette with a concatenated DIS/FIX 255 file, and incremented the number by one on each disk. The file has directory and file information (root was WDS1). and could restore back to the WDS1 directory. Here's the very compact XB part of the hybrid backup and restore programs, and the disassembled assembly component to them, BACKUP/OBC and RESTOR/OBC. I've also attached the actual disk with the whole program on it (loads from XB). Our goal here is to identify how exactly this thing is backing up and restoring. What is it looking for? What is the format of the restore file? How do I dump 12 diskettes backed into this format into something we can read? A few folks reading this got an email with some of what I was going through with this as well. Let's crowd source this! Trust me, this is going to be worth it. Thanks! XB Restore: 10 CALL CLEAR :: S=5 :: F=16 :: CALL SCREEN(S) :: FOR I=1 TO 8 :: CALL COLOR(I,F,1) :: NEXT I :: CALL CHAR(95,"0000FFFFFFFF") 40 DATA RESTORING DIRECTORY:,FROM DISKETTE DRIVE NUMBER:,"BACKUP NAME: " 45 GOTO 89 :: ADDR,SUM,SUMDIR,SUMFIL,DKTDRV,FLOPCNT,OPT,OPN,I,LOAD,CODE,STAT,ST=FI :: CALL LOAD :: CALL LINK :: CALL PEEK :: CALL KEY 46 SUBDIR$=DIR$&BACKNAME$&DIRNAME$&DIRNAME2$&CHOICE$&LISTDEVICE$&U$&BACK$&A$&B$&C$&D$&FI$&DATE$&TIME$&SEC$&MIN$&HR$&DAY$&MON$&YR$ :: !@P- 89 SUBDIR$="" :: DIRNAME$="WDS" :: DIRNAME2$="" :: OPT=1 :: DKTDRV=1 :: LISTDEVICE$="RS232..BA=4800" 90 ADDR=-22890 95 SUM=0 :: SUMDIR=0 :: SUMFIL=0 :: BACKNAME$="-------" :: FLOPCNT=1 150 DISPLAY AT(1,1) ERASE ALL BEEP :"RESTORE DIRECTORY":RPT$("_",28) 170 DISPLAY AT(4,1):"ENTER DIRECTORY'S PATHNAME:":DIRNAME$:DIRNAME2$ 175 DISPLAY AT(9,1):"BACKUP NAME: ";BACKNAME$ 176 DISPLAY AT(8,1):"FROM DISKETTE DRIVE #(1-3):";STR$(DKTDRV) 177 DISPLAY AT(11,1):"IS ABOVE CORRECT ?":"(Y/N/A-ABORT) :Y" 178 DISPLAY AT(14,1):"WHERE DO YOU WANT LISTING?":"1-SCREEN":"2-OTHER":"ENTER OPTION :";OPT 180 ACCEPT AT(5,4) SIZE(-25):DIRNAME$ 190 ACCEPT AT(6,1) SIZE(-15):DIRNAME2$ 200 DIRNAME$="WDS"&DIRNAME$ 210 ON WARNING NEXT 220 ACCEPT AT(8,28) VALIDATE ("123") SIZE(-1):DKTDRV 227 ACCEPT AT(9,14) SIZE(-7):BACKNAME$ 240 ACCEPT AT(12,16) SIZE(-1) VALIDATE ("YNA"):CHOICE$ 250 IF CHOICE$="A" THEN RUN "DSK..WIN..&DMMENU" 260 IF CHOICE$="N" THEN 180 270 IF CHOICE$<>"Y" THEN 230 350 ACCEPT SIZE(-1) AT(17,16) VALIDATE ("12"):OPT 360 IF OPT=1 THEN 400 365 IF OPT<>2 THEN 350 370 DISPLAY AT(18,1):"ENTER LIST DEVICE:":LISTDEVICE$ 380 ACCEPT AT(19,1) SIZE(-28):LISTDEVICE$ 385 IF OPN=1 THEN CLOSE #1 390 ON ERROR 6000 :: OPEN #1:LISTDEVICE$,OUTPUT :: OPN=1 :: ON ERROR STOP 400 DIR$=DIRNAME$&DIRNAME2$ 405 IF LEN(DIR$)>40 THEN 5200 410 FOR I=7 TO 1 STEP -1 :: IF SEG$(BACKNAME$,I,1)="-" THEN BACKNAME$=SEG$(BACKNAME$,1,I-1) ELSE 415 411 NEXT I 412 IF LEN(BACKNAME$)=0 THEN 5100 413 FOR I=LEN(BACKNAME$) TO 1 STEP -1 :: IF SEG$(BACKNAME$,I,1)=" " THEN BACKNAME$=SEG$(BACKNAME$,1,I-1) ELSE 415 414 NEXT I 415 IF LEN(BACKNAME$)=0 THEN 5100 416 IF POS(BACKNAME$," ",1)<>0 THEN 5100 417 IF POS(BACKNAME$,"..",1)<>0 THEN 5100 418 IF LOAD=1 THEN 450 420 LOAD=1 :: U$="DSK..WIN..RESTOR/OBC" 430 FOR I=1 TO LEN(U$) :: CALL LOAD(-24576+I,ASC(SEG$(U$,I,1))) :: NEXT I :: CALL LOAD(-24576,LEN(U$)) :: CALL LINK("LOADER") 450 IF DKTDRV>1 AND FLOPCNT=1 THEN 470 465 DISPLAY AT(21,1) BEEP :"INSERT DISKETTE NUMBER";FLOPCNT:"IN DRIVE #";DKTDRV;" AND PRESS PROC" 466 DISPLAY AT(23,1):"PRESS REDO TO RESTART":" BACK TO ABORT" 467 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 467 468 IF CODE=12 THEN 470 ELSE IF CODE=6 THEN 95 ELSE IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 467 470 FOR I=0 TO LEN(DIR$)-1 :: CALL LOAD(ADDR+I,ASC(SEG$(DIR$,I+1,1))) :: NEXT I :: CALL LOAD(ADDR+40,LEN(DIR$),0) 473 BACK$="DSK"&STR$(DKTDRV)&".."&BACKNAME$ 475 FOR I=0 TO (LEN(BACK$)-1) :: CALL LOAD(ADDR+42+I,ASC(SEG$(BACK$,I+1,1))) :: NEXT I :: CALL LOAD(ADDR+57,LEN(BACK$)) 480 CALL LINK("EXECU1") 490 REM NOW TEST IF SUCCESSFUL RETURN 500 CALL PEEK(ADDR+41,STAT) 510 REM STAT CAN BE 1 FOR DIR FOUND 5 FOR HARDWARE ERROR 2 FOR BAD PATHNAME 8-OPEN ERROR ON DISKETTE 520 ON STAT GOTO 523,5200,523,523,5500,523,523,5600 523 ST=3 :: FI=22 :: GOSUB 3000 525 RESTORE 40 :: READ A$,B$,C$ :: DISPLAY AT(4,1):A$:DIRNAME$:DIRNAME2$ 526 DISPLAY AT(8,1):B$;STR$(DKTDRV):C$;BACKNAME$ 530 IF OPT=2 THEN GOSUB 10000 :: PRINT #1:A$; TAB (45);DATE$; TAB (60);TIME$:DIRNAME$:DIRNAME2$:B$;DKTDRV:C$;BACKNAME$ 540 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 550 542 IF CODE=6 THEN 90 544 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" 550 CALL LINK("EXECU2") :: CALL PEEK(ADDR+40,CODE,STAT) 557 REM ERROR=13-FILE IS WRITE PROTECT WILL NOT RESTORE 558 REM RETURN CODES 0-FILE RESTORED,1-DIRECTORY FOUND,2-PATHNAME ERROR,3-END,4-NU,5-DISK ERROR,6-FLOPPY ERROR,7-INSERT NEW FILE 559 REM 8-CREATE DIR ERROR,9-BAD DIR RESTORE NAME,10-HARD DISK DSR ERROR,11-BAD FLOPPY OPEN ERROR:RELOAD IT,12-BAD FLOPPY FORMAT ERROR 560 ON (STAT+1) GOTO 570,5500,5200,800,5500,5500,5600,610,8000,9000,9500,7000,9100,9200 570 SUMFIL=SUMFIL+1 :: FI$="" :: D$="RESTORED: " 575 FOR I=0 TO 39 :: CALL PEEK(-22718+I,STAT) :: IF STAT=32 THEN 580 ELSE FI$=FI$&CHR$(STAT) 577 NEXT I 580 DISPLAY AT(11,1)$:SEG$(FI$,1,28):SEG$(FI$,29,12) 590 IF OPT=2 THEN PRINT #1:D$;FI$ 595 GOTO 540 610 FLOPCNT=FLOPCNT+1 :: DISPLAY AT(14,1) BEEP :"DISKETTE NUMBER ";STR$(FLOPCNT-1);" RESTORED" 612 DISPLAY AT(15,1) BEEP :"INSERT DISKETTE NUMBER:";FLOPCNT:"AND PRESS PROCEED" 620 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 620 622 IF CODE=12 THEN 630 624 IF CODE=6 THEN 95 626 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 620 630 ST=14 :: FI=16 :: GOSUB 3000 :: GOTO 540 800 DISPLAY AT(18,1) BEEP :"COMMAND COMPLETE":SUMFIL;" FILES RESTORED":"REINSERT UTILITY DISKETTE" 820 IF OPT=2 THEN PRINT #1 :: PRINT #1:"COMMAND COMPLETE":SUMFIL;" FILES RESTORED" :: CLOSE #1 :: OPN=0 900 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 900 910 IF CODE=6 THEN 90 920 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 900 3000 FOR I=ST TO FI :: DISPLAY AT(I,1) SIZE(28) :: NEXT I :: RETURN 5100 DISPLAY AT(22,1) SIZE(28):"INVALID BACKUP NAME" :: GOTO 5210 5200 DISPLAY AT(22,1) SIZE(28):"PATHNAME ERROR" 5210 DISPLAY AT(23,1) BEEP :"PRESS REDO TO RESTART":" BACK TO ABORT" :: GOTO 900 5500 DISPLAY AT(22,1) SIZE(28):"DISK ERROR" :: GOTO 5210 5600 DISPLAY AT(21,1) SIZE(28):"DISKETTE DEVICE ERROR" :: GOTO 9510 6000 DISPLAY AT(22,1) SIZE(28):"INVALID LISTING DEVICE" :: ON ERROR STOP :: RETURN 5210 7000 DISPLAY AT(14,1) SIZE(28) BEEP :"DISKETTE OPEN ERROR" :: CALL LOAD(ADDR+41,7) :: GOTO 612 8000 DISPLAY AT(21,1) SIZE(28):"CREATE DIRECTORY ERROR" :: ON CODE GOTO 8010,5200,8020,8030,8030 8010 FI$="DIRECTORY FULL" :: GOTO 8050 8020 FI$="DISK FULL" :: GOTO 8050 8030 FI$="DISK ERROR" :: GOTO 8050 8050 DISPLAY AT(22,1) SIZE(28):FI$ :: GOTO 900 9000 DISPLAY AT(21,1) SIZE(28):"RESTORE PATHNAME DOES NOT" :: FI$="COMPARE WITH ENTERED NAME" :: GOTO 8050 9100 DISPLAY AT(21,1) SIZE(28):"FORMAT OF DISKETTE" :: FI$="INCORRECT FOR RESTORE" :: GOTO 8050 9200 D$="NOT RESTORED: " :: FI$="" :: GOTO 575 9500 DISPLAY AT(21,1) SIZE(28):"DISK DEVICE ERROR" 9510 ON (CODE+1) GOTO 9511,9512,9513,9512,9514,9515,9516,9517 9511 FI$="DEVICE NOT FOUND" :: GOTO 8050 9512 FI$="NOT APPLICABLE" :: GOTO 8050 9513 FI$="BAD OPEN OPTIONS" :: GOTO 8050 9514 FI$="DISK FULL" :: GOTO 8050 9515 FI$="READ EOF ERROR" :: GOTO 8050 9516 FI$="DEVICE ERROR" :: GOTO 8050 9517 FI$="FILE DOES NOT EXIST" :: GOTO 8050 10000 ON ERROR 10100 :: OPEN #2:"TIME",FIXED,INTERNAL :: INPUT #2:SEC$,MIN$,HR$,DAY$,MON$,YR$ :: CLOSE #2 :: TIME$=HR$&":"&MIN$&":"&SEC$ 10010 DATE$=MON$&"/"&DAY$&"/"&YR$ :: RETURN 10100 RETURN 10010 XB Backup: 10 CALL CLEAR :: GOTO 86 :: S,F :: CALL SCREEN :: FOR TO :: CALL COLOR :: NEXT :: CALL CHAR :: DISPLAT AT :: ACCEPT AT 45 :: ADDR,SUM,SUMDIR,SUMFIL,DKTDRV,FLOPCNT,OPT,OPN,I,LOAD,STAT,CODE,ST,FI=S :: CALL LINK :: CALL LOAD :: CALL PEEK :: CALL KEY 46 SUBDIR$=BACK$&BACKNAME$&DIRNAME$&DIRNAME2$&CHOICE$&LISTDEVICE$&DIR$&U$&FI$&DATE$&TIME$&SEC$&MIN$&HR$&DAY$&MON$&YR$&A$&B$&C$&D$ :: !@P- 86 CALL CLEAR :: S=5 :: F=16 :: CALL SCREEN(S) :: FOR I=1 TO 8 :: CALL COLOR(I,F,1) :: NEXT I :: CALL CHAR(95,"0000FFFFFFFF") 88 DATA BACKING UP DIRECTORY:,TO DISKETTE DRIVE NUMBER:,"BACKUP NAME: ","BACKED UP: " 89 SUBDIR$="" :: DKTDRV=1 :: DIRNAME$="WDS" :: DIRNAME2$="" :: OPT=1 :: LISTDEVICE$="PIO" 90 ADDR=-22890 95 SUM=0 :: SUMDIR=0 :: SUMFIL=0 :: BACKNAME$="-------" :: FLOPCNT=1 150 DISPLAY AT(1,1) ERASE ALL BEEP :"BACKUP DIRECTORY":RPT$("_",28) 170 DISPLAY AT(4,1):"ENTER DIRECTORY'S PATHNAME:":DIRNAME$:DIRNAME2$ 175 ON WARNING NEXT :: DISPLAY AT(8,1):"TO DISKETTE DRIVE #(1-3):";DKTDRV 176 DISPLAY AT(9,1):"BACKUP NAME: ";BACKNAME$ 177 DISPLAY AT(11,1):"IS ABOVE CORRECT ?":"(Y/N/A-ABORT) :Y" 178 DISPLAY AT(14,1):"WHERE DO YOU WANT LISTING?":"1-SCREEN":"2-OTHER":"ENTER OPTION :";OPT 180 ACCEPT AT(5,4) SIZE(-25):DIRNAME$ 190 ACCEPT AT(6,1) SIZE(-15):DIRNAME2$ 200 DIRNAME$="WDS"&DIRNAME$ 220 ACCEPT AT(8,27) VALIDATE ("123") SIZE(-1):DKTDRV :: ACCEPT AT(9,14) SIZE(-7):BACKNAME$ :: ACCEPT AT(12,16) SIZE(-1) VALIDATE ("YNA"):CHOICE$ 250 IF CHOICE$="A" THEN RUN "DSK..WIN..&DMMENU" ELSE IF CHOICE$="N" THEN 180 ELSE IF CHOICE$="Y" THEN 350 : GOTO 220 350 ACCEPT SIZE(-1) AT(17,16) VALIDATE ("12"):OPT :: IF OPT=1 THEN 400 ELSE IF OPT<>2 THEN 350 370 DISPLAY AT(18,1):"ENTER LIST DEVICE:":LISTDEVICE$ :: ACCEPT AT(19,1) SIZE(-28):LISTDEVICE$ :: IF OPN=1 THEN CLOSE #1 390 ON ERROR 6000 :: OPEN #1:LISTDEVICE$,OUTPUT :: OPN=1 :: ON ERROR STOP 400 DIR$=DIRNAME$&DIRNAME2$ 405 IF LEN(DIR$)>40 THEN 5200 410 FOR I=7 TO 1 STEP -1 :: IF SEG$(BACKNAME$,I,1)="-" THEN BACKNAME$=SEG$(BACKNAME$,1,I-1) ELSE 415 411 NEXT I 412 IF LEN(BACKNAME$)=0 THEN 5100 413 FOR I=LEN(BACKNAME$) TO 1 STEP -1 :: IF SEG$(BACKNAME$,I,1)=" " THEN BACKNAME$=SEG$(BACKNAME$,1,I-1) ELSE 415 414 NEXT I 415 IF LEN(BACKNAME$)=0 THEN 5100 416 IF POS(BACKNAME$," ",1)<>0 THEN 5100 417 IF POS(BACKNAME$,"..",1)<>0 THEN 5100 418 IF LOAD=1 THEN 450 420 LOAD=1 :: U$="DSK..WIN..BACKUP/OBC" 430 FOR I=1 TO LEN(U$) :: CALL LOAD(-24576+I,ASC(SEG$(U$,I,1))) :: NEXT I :: CALL LOAD(-24576,LEN(U$)) :: CALL LINK("LOADER") 450 IF DKTDRV>1 AND FLOPCNT=1 THEN 470 465 DISPLAY AT(21,1) BEEP :"INSERT DISKETTE NUMBER";FLOPCNT:"IN DRIVE #";DKTDRV;" AND PRESS PROC" 466 DISPLAY AT(23,1):"PRESS REDO TO RESTART":" BACK TO ABORT" 467 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 467 468 IF CODE=12 THEN 470 ELSE IF CODE=6 THEN 95 ELSE IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 467 470 FOR I=0 TO LEN(DIR$)-1 :: CALL LOAD(ADDR+I,ASC(SEG$(DIR$,I+1,1))) :: NEXT I :: CALL LOAD(ADDR+40,LEN(DIR$),0) 473 BACK$="DSK"&STR$(DKTDRV)&".."&BACKNAME$ 475 FOR I=0 TO (LEN(BACK$)-1) :: CALL LOAD(ADDR+42+I,ASC(SEG$(BACK$,I+1,1))) :: NEXT I :: CALL LOAD(ADDR+57,LEN(BACK$)) 480 CALL LINK("EXECU1") 490 REM NOW TEST IF SUCCESSFUL RETURN 500 CALL PEEK(ADDR+41,STAT) 510 REM STAT CAN BE 1 FOR DIR FOUND 5 FOR HARDWARE ERROR 2 FOR BAD PATHNAME 8-OPEN ERROR ON DISKETTE 520 ON STAT GOTO 523,5200,523,523,5500,523,523,5600 523 ST=3 :: FI=22 :: GOSUB 3000 525 RESTORE 40 :: READ A$,B$,C$,D$ :: DISPLAY AT(4,1):A$:DIRNAME$:DIRNAME2$ 526 DISPLAY AT(8,1):B$;DKTDRV:C$;BACKNAME$ 530 IF OPT=2 THEN GOSUB 10000 :: PRINT #1:A$; TAB (45);DATE$; TAB (60);TIME$:DIRNAME$:DIRNAME2$:B$;DKTDRV:C$;BACKNAME$ 540 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 550 542 IF CODE=6 THEN 90 544 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" 550 CALL LINK("EXECU2") :: CALL PEEK(ADDR+41,STAT) 558 REM RETURN CODES 0-FILE BACKED UP,1-DIRECTORY FOUND,3-END,4-POP DIR,5-DISK ERROR,6-PUSH DIR,7-INSERT NEW FILE 559 REM FLOPPY ERRORS 8-BAD OPEN,9-BAD CLOSE,10-BAD WRITE 560 ON (STAT+1) GOTO 570,648,5500,800,652,5500,648,610,7000,5600,5600 570 SUMFIL=SUMFIL+1 :: FI$=DIR$&".." 575 FOR I=0 TO 9 :: CALL PEEK(ADDR+58+I,STAT) :: FI$=FI$&CHR$(STAT) :: NEXT I 580 DISPLAY AT(11,1)$:SEG$(FI$,1,28):SEG$(FI$,29,12) 590 IF OPT=2 THEN PRINT #1:D$;FI$ 595 GOTO 540 610 FLOPCNT=FLOPCNT+1 :: DISPLAY AT(14,1) BEEP :"DISKETTE NUMBER";FLOPCNT-1;" IS FULL" 612 DISPLAY AT(15,1):"INSERT DISKETTE NUMBER:";FLOPCNT:"AND PRESS PROCEED" 620 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 620 622 IF CODE=12 THEN 630 624 IF CODE=6 THEN 95 626 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 620 630 ST=14 :: FI=16 :: GOSUB 3000 :: GOTO 540 648 DIR$=DIR$&".." :: FOR I=0 TO 9 :: CALL PEEK(ADDR+58+I,STAT) :: IF STAT=32 THEN 540 :: DIR$=DIR$&CHR$(STAT) 649 NEXT I 650 GOTO 540 652 I=1 654 S=POS(DIR$,"..",I) :: IF S=0 THEN 656 ELSE I=S+1 :: GOTO 654 656 IF I=1 THEN DIR$="" ELSE DIR$=SEG$(DIR$,1,I-2) 658 GOTO 540 800 DISPLAY AT(18,1) BEEP :"COMMAND COMPLETE":SUMFIL;" FILES BACKED UP":"REINSERT UTILITY DISKETTE" 820 IF OPT=2 THEN PRINT #1 :: PRINT #1:"COMMAND COMPLETE":SUMFIL;" FILES BACKED UP" :: CLOSE #1 :: OPN=0 900 CALL KEY(0,CODE,STAT) :: IF STAT=0 THEN 900 910 IF CODE=6 THEN 90 920 IF CODE=15 THEN RUN "DSK..WIN..&DMMENU" ELSE 900 3000 FOR I=ST TO FI :: DISPLAY AT(I,1) SIZE(28) :: NEXT I :: RETURN 5100 DISPLAY AT(22,1) SIZE(28):"INVALID BACKUP NAME" :: GOTO 5210 5200 DISPLAY AT(22,1) SIZE(28):"PATHNAME ERROR" 5210 DISPLAY AT(23,1) BEEP :"PRESS REDO TO RESTART":" BACK TO ABORT" :: GOTO 900 5500 DISPLAY AT(22,1) SIZE(28):"DISK ERROR" :: GOTO 5210 5600 DISPLAY AT(22,1) SIZE(28):"DISKETTE ERROR" :: GOTO 5210 6000 DISPLAY AT(22,1) SIZE(28):"INVALID LISTING DEVICE" :: ON ERROR STOP :: RETURN 5210 7000 DISPLAY AT(14,1) SIZE(28) BEEP :"DISKETTE OPEN ERROR" :: CALL LOAD(ADDR+41,7) :: GOTO 612 10000 ON ERROR 10100 :: OPEN #2:"TIME",FIXED,INTERNAL :: INPUT #2:SEC$,MIN$,HR$,DAY$,MON$,YR$ :: CLOSE #2 :: TIME$=HR$&":"&MIN$&":"&SEC$ 10010 DATE$=MON$&"/"&DAY$&"/"&YR$ :: RETURN 10100 RETURN 10010 Backup Assembly as disassembled by TI Image Tool: AORG >A688 XA688 A R0,@>ABD2(R3) A8C0 ABD2 : A688 CI R2,>0046 0282 0046 : A68C JGT XA6AA 150C : A690 AI R2,>FFF9 0222 FFF9 : A692 AI R2,>FFD0 0222 FFD0 : A696 SLA R3,4 0A43 : A69A JNC XA6A6 1704 : A69C ABS @>20C8 0760 20C8 : A69E JEQ XA6A6 1301 : A6A2 BLWP *R4 0414 : A6A4 XA6A6 A R2,R3 A0C2 : A6A6 JMP XA67A 10E8 : A6A8 XA6AA DEC R5 0605 : A6AA ABS @>20C8 0760 20C8 : A6AC JEQ XA6B6 1302 : A6B0 BLWP @>A444 0420 A444 : A6B2 XA6B6 CLR R3 04C3 : A6B6 RTWP 0380 : A6B8 MOVB *R5+,R2 D0B5 : A6BA SRL R2,8 0982 : A6BC CI R2,>0009 0282 0009 : A6BE JNE XA6C8 1602 : A6C2 LI R2,>0020 0202 0020 : A6C4 XA6C8 CI R2,>0020 0282 0020 : A6C8 JLT XA6AA 11EE : A6CC CI R2,>005F 0282 005F : A6CE JH XA6DC 1B04 : A6D2 MOVB @>24D0(R2),R1 D062 24D0 : A6D4 SRL R1,8 0981 : A6D8 RT 045B : A6DA XA6DC CLR R1 04C1 : A6DC RT 045B : A6DE BL *R7 0697 : A6E0 C R1,R0 8001 : A6E2 JNE XA6E8 1601 : A6E4 BL *R10 069A : A6E6 XA6E8 MOV R2,R3 C0C2 : A6E8 BL *R7 0697 : A6EA C R1,R0 8001 : A6EC JNE XA6F2 1601 : A6EE BL *R10 069A : A6F0 XA6F2 SLA R3,8 0A83 : A6F2 SOC R2,R3 E0C2 : A6F4 RTWP 0380 : A6F6 MOV R11,R12 C30B : A6F8 BL *R7 0697 : A6FA C R1,R0 8001 : A6FC JEQ XA704 1302 : A6FE DECT R5 0645 : A700 CLR R2 04C2 : A702 XA704 B *R12 045C : A704 MOV @>287E,R3 C0E0 287E : A706 ANDI R3,>00FF 0243 00FF : A70A MOV R3,@>3D3C C803 3D3C : A70E JEQ XA71A 1303 : A712 INC @>3D24 05A0 3D24 : A714 JMP XA71E 1002 : A718 XA71A CLR @>3D24 04E0 3D24 : A71A XA71E MOV @>2880,R3 C0E0 2880 : A71E RTWP 0380 : A722 A R2,*R7 A5C2 : A724 A *R4+,*R8 A634 : A726 A @>0000,*R11 A6E0 0000 : A728 DATA >0000 DATA >0000 SOCB R0,*R12+ FF00 : A730 MOVB R9,*R0+ DC09 : A732 DATA >0E18 JOC XA768 1818 : A736 SRL R10,4 094A : A738 SRC R10,4 0B4A : A73A DATA >0D4A DATA >0F4A DATA >0FCA JMP XA664 1090 : A742 JLE XA666 1290 : A744 JHE XA668 1490 : A746 JNE XA66A 1690 : A748 COC *R2,R2 2092 : A74A COC *R10+,R9 227A : A74C CZC *R10+,R1 247A : A74E CZC *R10+,R9 267A : A750 DATA >0000 DATA >0000 SZCB @>A7BC,R15 53E0 A7BC : A756 LWPI >83E0 02E0 83E0 : A75A SZCB R4,*R13 5744 : A75E SZC R9,*R1 4449 : A760 SZCB R0,R8 5200 : A762 SZCB *R0+,R12 5330 : A764 LDCR *R2+,4 3132 : A766 XA768 LDCR *R4+,12 3334 : A768 COC @>0607(R14),R0 202E 0607 : A76A DATA >0108 SRL R10,0 090A : A770 DATA >0000 DATA >0000 DATA >0000 DATA >0002 DEC @>FFFF 0620 FFFF : A77A DATA >0000 DATA >0000 DEC R9 0609 : A782 A *R6,*R10 A696 : A784 A R0,*R11 A6C0 : A786 DATA >0000 SRL R7,8 0987 : A78A SETO R6 0706 : A78C LI R2,>834A 0202 834A : A78E XA792 INC R1 0581 : A792 INC R6 0586 : A794 C R6,R7 81C6 : A796 JEQ XA7AC 1309 : A798 MOV R1,@>A7A2 C801 A7A2 : A79A BLWP @>AABE 0420 AABE : A79E JLT XA7BE+2 110E : A7A2 MOVB R0,*R2+ DC80 : A7A4 XA7A6 CB R0,@>A837 9800 A837 : A7A6 JNE XA792 16F3 : A7AA XA7AC MOV R6,R6 C186 : A7AC JEQ XA82C 133E : A7AE CI R6,>0008 0286 0008 : A7B0 JGT XA82C 153B : A7B4 CLR @>83D0 04E0 83D0 : A7B6 INC @>8356 05A0 8356 : A7BA XA7BE A R6,@>8356 A806 8356 : A7BE MOV R6,@>8354 C806 8354 : A7C2 CLR R1 04C1 : A7C6 LI R12,>0F00 020C 0F00 : A7C8 XA7CC SBZ 0 1E00 : A7CC AI R12,>0100 022C 0100 : A7CE CLR @>83D0 04E0 83D0 : A7D2 CI R12,>2000 028C 2000 : A7D6 JEQ XA82C 1328 : A7DA MOV R12,@>83D0 C80C 83D0 : A7DC SBO 0 1D00 : A7E0 LI R2,>4000 0202 4000 : A7E2 CB *R2,@>A836 9812 A836 : A7E6 JNE XA7CC 16F0 : A7EA AI R2,>0008 0222 0008 : A7EC JMP XA7F8 1003 : A7F0 XA7F2 MOV @>83D2,R2 C0A0 83D2 : A7F2 SBO 0 1D00 : A7F6 XA7F8 MOV *R2,R2 C092 : A7F8 JEQ XA7CC 13E8 : A7FA MOV R2,@>83D2 C802 83D2 : A7FC INCT R2 05C2 : A800 MOV *R2,R9 C252 : A802 INCT R2 05C2 : A804 MOV R6,R5 C146 : A806 SWPB R5 06C5 : A808 CB R5,*R2 9485 : A80A JNE XA7F2 16F2 : A80C SWPB R5 06C5 : A80E LI R3,>834A 0203 834A : A810 XA814 INC R2 0582 : A814 CB *R3+,*R2 94B3 : A816 JNE XA7F2 16EC : A818 DEC R5 0605 : A81A JNE XA814 16FB : A81C INC R1 0581 : A81E BL *R9 0699 : A820 JMP XA7F2 10E7 : A822 SBZ 0 1E00 : A824 LWPI >A81E 02E0 A81E : A826 RTWP 0380 : A82A XA82C LWPI >A81E 02E0 A81E : A82C SOCB @>A7D8,R15 F3E0 A7D8 : A830 RTWP 0380 : A834 A @>2048(R14),@>AA34(R8) AA2E 2048 AA34 : A836 MOV R0,R0 C000 : A83C COC @>0000,R8 2220 0000 : A83E COC @>A930(R8),R0 2028 A930 : A842 COC @>A91C(R8),R0 2028 A91C : A846 COC R8,R0 2008 : A84A A *R6,@>2048(R1) A856 2048 : A84C A R6,@>2068(R3) A8C6 2068 : A850 XA854 A *R6,@>04C3(R3) A8D6 04C3 : A854 CLR @>A840 04E0 A840 : A858 ABS @>2088 0760 2088 : A85C JEQ XA866 1302 : A860 SETO @>A840 0720 A840 : A862 XA866 BL @>A98C 06A0 A98C : A866 CLR @>A840 04E0 A840 : A86A MOV R3,R3 C0C3 : A86E JEQ XA878 1303 : A870 CLR @>2088 04E0 2088 : A872 JMP XA854+2 10EF : A876 XA878 LI R1,>1005 0201 1005 : A878 CLR R0 04C0 : A87C ABS @>2088 0760 2088 : A87E JEQ XA888 1302 : A882 LI R1,>1305 0201 1305 : A884 XA888 MOV R1,@>A890 C801 A890 : A888 BLWP @>AABE 0420 AABE : A88C JMP XA89A+2 1005 : A890 MOVB R0,@>A8A9 D800 A8A9 : A892 MOVB R4,R1 D044 : A896 SRL R1,8 0981 : A898 XA89A CI R1,>0004 0281 0004 : A89A JEQ XA8C4 1312 : A89E BLWP @>AACA 0420 AACA : A8A0 JMP XA7A6 1080 : A8A4 COC @>000A,R9 2260 000A : A8A6 DATA >0002 SRA R0,0 0800 : A8AC BLWP R0 0400 : A8AE LIMI >0200 0300 0200 : A8B0 SZC R0,R0 4000 : A8B4 DATA >0008 DATA >00FF DATA >000A DATA >000B DATA >00A0 LIMI >0000 0300 0000 : A8C0 XA8C4 MOV R11,@>A756 C80B A756 : A8C4 CLR @>A72E 04E0 A72E : A8C8 BLWP @>A8DA 0420 A8DA : A8CC MOV @>A756,R11 C2E0 A756 : A8D0 LIMI >0002 0300 0002 : A8D4 RT 045B : A8D8 A *R2+,*R12 A732 : A8DA A *R14,@>0203(R3) A8DE 0203 : A8DC A *R6,*R10 A696 : A8E0 MOVB @>A13F,@>A6BF D820 A13F A6BF : A8E2 CLR @>A754 04E0 A754 : A8E8 CLR @>A72C 04E0 A72C : A8EC MOV @>A730,@>A2CC C820 A730 A2CC : A8F0 MOVB @>A6BE,R0 D020 A6BE : A8F6 SRL R0,8 0980 : A8FA MOV @>A2E0,R1 C060 A2E0 : A8FC C *R3+,@>A75E 8833 A75E : A900 JEQ XA90A 1302 : A904 XA906 B @>AA22 0460 AA22 : A906 XA90A CB *R3+,@>A764 9833 A764 : A90A JNE XA906 16FB : A90E MOVB *R3+,R8 D233 : A910 AI R0,>FFFC 0220 FFFC : A912 CB R8,@>A76B 9808 A76B : A916 JEQ XA964 1324 : A91A CLR R9 04C9 : A91C CB R8,@>A766 9808 A766 : A91E JEQ XA93C 130C : A922 INC R9 0589 : A924 CB R8,@>A767 9808 A767 : A926 JEQ XA93C 1308 : A92A INC R9 0589 : A92C CB R8,@>A768 9808 A768 : A92E JEQ XA93C 1304 : A932 INC R9 0589 : A934 CB R8,@>A769 9808 A769 : A936 JNE XA906 16E5 : A93A XA93C MOV R0,R0 C000 : A93C JNE XA946 1603 : A93E SETO @>A72C 0720 A72C : A940 JMP XA94E 1004 : A944 XA946 CB *R3+,@>A76B 9833 A76B : A946 JNE XA906 16DD : A94A DEC R0 0600 : A94C XA94E MOV R9,@>A2CC C809 A2CC : A94E CLR @>A29E 04E0 A29E : A952 MOV @>A2E0,@>A2A6 C820 A2E0 A2A6 : A956 BLWP @>A09E 0420 A09E : A95C B @>AA12 0460 AA12 : A960 XA964 LI R2,>A68C 0202 A68C : A964 XA968 MOVB @>A76A,*R2+ DCA0 A76A : A968 CI R2,>A696 0282 A696 : A96C JNE XA968 16FB : A970 LI R2,>A68C 0202 A68C : A972 MOV R0,R0 C000 : A976 JEQ XA97E 1302 : A978 B @>A986 0460 A986 : A97A XA97E SETO @>A72C 0720 A72C : A97E B @>A9A0 0460 A9A0 : A982 DEC R0 0600 : A986 MOVB *R3+,R5 D173 : A988 CB R5,@>A76A 9805 A76A : A98A JEQ XAA22 1349 : A98E CB R5,@>A76B 9805 A76B : A990 JNE XAA2A 164A : A994 CI R2,>A68C 0282 A68C : A996 JNE XA9A0 1602 : A99A B @>AA22 0460 AA22 : A99C XA9A0 MOVB @>A2CC,R2 D0A0 A2CC : A9A0 JEQ XA9E2 131E : A9A4 CLR @>A2CC 04E0 A2CC : A9A6 MOV @>A2E0,R1 C060 A2E0 : A9AA XA9AE CLR @>A29E 04E0 A29E : A9AE MOV R1,@>A2A6 C801 A2A6 : A9B2 BLWP @>A09E 0420 A09E : A9B6 MOV R1,R5 C141 : A9BA AI R5,>0004 0225 0004 : A9BC LI R7,>A68C 0207 A68C : A9C0 XA9C4 C *R7+,*R5+ 8D77 : A9C4 JNE XA9D0 1604 : A9C6 CI R7,>A696 0287 A696 : A9C8 JEQ XAA12 1322 : A9CC JMP XA9C4 10FA : A9CE XA9D0 MOV @>A2CC,R5 C160 A2CC : A9D0 INC R5 0585 : A9D4 MOV R5,@>A2CC C805 A2CC : A9D6 CI R5,>0004 0285 0004 : A9DA JNE XA9AE 16E7 : A9DE JMP XAA22 1020 : A9E0 XA9E2 MOV @>A2E0,R1 C060 A2E0 : A9E2 MOV R1,R8 C201 : A9E6 AI R8,>0020 0228 0020 : A9E8 MOV R1,R9 C241 : A9EC AI R9,>001A 0229 001A : A9EE MOV *R9,R9 C259 : A9F2 ANDI R9,>00FF 0249 00FF : A9F4 BL @>A1BC 06A0 A1BC : A9F8 JNE XAA22 1612 : A9FC MOV @>A29E,@>A754 C820 A29E A754 : A9FE MOV @>A2E2,R1 C060 A2E2 : AA04 MOV @>A2E0,@>A2E2 C820 A2E0 A2E2 : AA08 MOV R1,@>A2E0 C801 A2E0 : AA0E XAA12 MOV @>A72C,@>A72C C820 A72C A72C : AA12 JNE XAA48 1617 : AA18 MOV R0,R0 C000 : AA1A JEQ XAA22 1302 : AA1C B @>A964 0460 A964 : AA1E XAA22 MOVB @>A8B2,@>A6BF D820 A8B2 A6BF : AA22 RTWP 0380 : AA28 XAA2A CI R2,>A696 0282 A696 : AA2A JEQ XAA22 13F9 : AA2E MOVB R5,*R2+ DC85 : AA30 B @>A976 0460 A976 : AA32 MOV R1,R10 C281 : AA36 AI R10,>0104 022A 0104 : AA38 XAA3C CLR *R1+ 04F1 : AA3C C R1,R10 8281 : AA3E JNE XAA3C 16FD : AA40 AI R1,>FEFC 0221 FEFC : AA42 RT 045B : AA46 XAA48 CLR @>A724 04E0 A724 : AA48 LI R3,>A696 0203 A696 : AA4C MOVB @>A6BE,R4 D120 A6BE : AA50 SRL R4,8 0984 : AA54 A R4,R3 A0C4 : AA56 XAA58 CI R3,>A6BE 0283 A6BE : AA58 JEQ XAA64 1303 : AA5C MOVB @>A76A,*R3+ DCE0 A76A : AA5E JMP XAA58 10FA : AA62 XAA64 LI R1,>0030 0201 0030 : AA64 MOV R1,@>A772 C801 A772 : AA68 CLR @>A774 04E0 A774 : AA6C CLR @>A776 04E0 A776 : AA70 LI R0,>0600 0200 0600 : AA74 LI R1,>A778 0201 A778 : AA78 LI R2,>000A 0202 000A : AA7C MOVB @>A6CF,R3 D0E0 A6CF : AA80 AI R3,>0300 0223 0300 : AA84 MOVB R3,@>A781 D803 A781 : AA88 BLWP @>A4F0 0420 A4F0 : AA8C LI R1,>A6C0 0201 A6C0 : AA90 MOVB @>A6CF,R2 D0A0 A6CF : AA94 SRL R2,8 0982 : AA98 A R2,R1 A042 : AA9A MOVB @>A765,*R1+ DC60 A765 : AA9C MOVB @>A765,*R1+ DC60 A765 : AAA0 MOVB @>A765,*R1+ DC60 A765 : AAA4 AI R2,>0003 0222 0003 : AAA8 LI R0,>060A 0200 060A : AAAC LI R1,>A6C0 0201 A6C0 : AAB0 BLWP @>A4F0 0420 A4F0 : AAB4 MOV @>A782,@>8356 C820 A782 8356 : AAB8 BLWP @>A4FC 0420 A4FC : AABE DATA >0008 JNE XAACE 1604 : AAC4 MOVB @>A76F,@>A6BF D820 A76F A6BF : AAC6 JMP XAB22 102A : AACC XAACE LI R0,>0620 0200 0620 : AACE LI R1,>A696 0201 A696 : AAD2 LI R2,>0028 0202 0028 : AAD6 BLWP @>A4F0 0420 A4F0 : AADA LI R0,>0648 0200 0648 : AADE MOV @>A2E0,R1 C060 A2E0 : AAE2 AI R1,>0016 0221 0016 : AAE6 LI R2,>0004 0202 0004 : AAEA BLWP @>A4F0 0420 A4F0 : AAEE BL @>AB24 06A0 AB24 : AAF2 MOV R0,R3 C0C0 : AAF6 MOV R1,R4 C101 : AAF8 LI R0,>064C 0200 064C : AAFA LI R1,>A738 0201 A738 : AAFE LI R2,>0004 0202 0004 : AB02 BLWP @>A4F0 0420 A4F0 : AB06 LI R8,>A6DC 0208 A6DC : AB0A MOVB @>A13E,@>A6BF D820 A13E A6BF : AB0E MOV @>A29E,*R8+ CE20 A29E : AB14 CLR *R8+ 04F8 : AB18 INCT @>A724 05E0 A724 : AB1A INCT @>A724 05E0 A724 : AB1E XAB22 RTWP 0380 : AB22 MOV R11,@>ABBA C80B ABBA : AB24 MOV @>A000,R12 C320 A000 : AB28 SBO 0 1D00 : AB2C SBO 1 1D01 : AB2E CLR R0 04C0 : AB30 CLR R1 04C1 : AB32 CLR R2 04C2 : AB34 XAB36 LI R3,>A740 0203 A740 : AB36 LI R4,>5FF2 0204 5FF2 : AB3A LI R5,>0004 0205 0004 : AB3E MOV *R4,*R3 C4D4 : AB42 XAB44 SBO 3 1D03 : AB44 MOVB *R4,*R3+ DCD4 : AB46 SBZ 3 1E03 : AB48 MOVB *R4,*R3+ DCD4 : AB4A INCT R4 05C4 : AB4C DEC R5 0605 : AB4E JNE XAB44 16F9 : AB50 SBO 3 1D03 : AB52 MOV *R4+,*R3 C4F4 : AB54 SWPB *R3 06D3 : AB56 SBZ 3 1E03 : AB58 MOVB *R4,*R3 D4D4 : AB5A LI R3,>A740 0203 A740 : AB5C XAB60 CB *R3+,@>A730 9833 A730 : AB60 JEQ XABB2 1326 : AB64 CI R3,>A74A 0283 A74A : AB66 JNE XAB60 16FA : AB6A MOV R11,R3 C0CB : AB6C BL @>ABBC 06A0 ABBC : AB6E SLA R3,5 0A53 : AB72 MOV R3,R0 C003 : AB74 MOV R10,R3 C0CA : AB76 BL @>ABBC 06A0 ABBC : AB78 A R3,R0 A003 : AB7C MOV @>5FEE,R3 C0E0 5FEE : AB7E BL @>ABBC 06A0 ABBC : AB82 SLA R3,9 0A93 : AB86 A R3,R0 A003 : AB88 MOV R9,R3 C0C9 : AB8A BL @>ABBC 06A0 ABBC : AB8C SLA R3,11 0AB3 : AB90 MOV R3,R1 C043 : AB92 MOV R8,R3 C0C8 : AB94 BL @>ABBC 06A0 ABBC : AB96 SLA R3,5 0A53 : AB9A A R3,R1 A043 : AB9C MOV R7,R3 C0C7 : AB9E BL @>ABBC 06A0 ABBC : ABA0 SRL R3,1 0913 : ABA4 A R3,R1 A043 : ABA6 XABA8 SBZ 1 1E01 : ABA8 SBZ 0 1E00 : ABAA MOV @>ABBA,R11 C2E0 ABBA : ABAC RT 045B : ABB0 XABB2 MOV R2,R2 C082 : ABB2 JNE XABA8 16F9 : ABB4 SETO R2 0702 : ABB6 JMP XAB36 10BE : ABB8 DATA >0000 MOV R3,R4 C103 : ABBC SRL R4,8 0984 : ABBE ANDI R4,>000F 0244 000F : ABC0 LI R5,>000A 0205 000A : ABC4 MPY R4,R5 3944 : ABC8 ANDI R3,>000F 0243 000F : ABCA A R6,R3 A0C6 : ABCE RT 045B : ABD0 LIMI >0000 0300 0000 : ABD2 MOV R11,@>A756 C80B A756 : ABD6 BLWP @>ABE8 0420 ABE8 : ABDA MOV @>A756,R11 C2E0 A756 : ABDE LIMI >0002 0300 0002 : ABE2 RT 045B : ABE6 A *R2+,*R12 A732 : ABE8 A @>D220(R12),@>A6BF(R15) ABEC D220 A6BF : ABEA JEQ XAC26 131A : ABF0 CB @>A13E,@>A6BF 9820 A13E A6BF : ABF2 JEQ XAC0A 1308 : ABF8 CB @>A6BF,@>A76D 9820 A6BF A76D : ABFA JNE XAC06 1602 : AC00 BLWP @>AFC6 0420 AFC6 : AC02 XAC06 B @>ADB2 0460 ADB2 : AC06 XAC0A MOV @>A2E0,R1 C060 A2E0 : AC0A CLR @>A726 04E0 A726 : AC0E MOV @>001A(R1),@>A728 C821 001A A728 : AC12 MOV R1,@>A2A6 C801 A2A6 : AC18 MOV @>001C(R1),@>A29E C821 001C A29E : AC1C BLWP @>A09E 0420 A09E : AC22 XAC26 CLR R5 04C5 : AC26 MOVB @>A726,R5 D160 A726 : AC28 CB R5,@>A728 9805 A728 : AC2C JHE XAC06 14EA : AC30 MOVB R5,R6 D185 : AC32 AI R6,>0100 0226 0100 : AC34 MOVB R6,@>A726 D806 A726 : AC38 SRL R5,7 0975 : AC3C A @>A2E0,R5 A160 A2E0 : AC3E MOV @>0004(R5),@>A29E C825 0004 A29E : AC42 MOV @>A2E2,R10 C2A0 A2E2 : AC48 MOV R10,@>A2A6 C80A A2A6 : AC4C BLWP @>A09E 0420 A09E : AC50 LI R8,>0028 0208 0028 : AC54 MOV @>A784,@>A79C C820 A784 A79C : AC58 MOVB @>A6BE,R1 D060 A6BE : AC5E SRL R1,8 0981 : AC62 MOV R1,@>A774 C801 A774 : AC64 S R1,R8 6201 : AC68 BLWP @>AED4 0420 AED4 : AC6A MOV R10,R9 C24A : AC6E AI R9,>0003 0229 0003 : AC70 MOV R9,@>A79C C809 A79C : AC74 CLR @>A774 04E0 A774 : AC78 INC @>A774 05A0 A774 : AC7C XAC80 CB *R9+,@>A538 9839 A538 : AC80 JEQ XAC92 1306 : AC84 INC @>A774 05A0 A774 : AC86 C @>A774,@>A8BC 8820 A774 A8BC : AC8A JNE XAC80 16F7 : AC90 XAC92 S @>A774,R8 6220 A774 : AC92 BLWP @>AED4 0420 AED4 : AC96 MOV R8,R8 C208 : AC9A JEQ XACB6 130C : AC9C LI R1,>A538 0201 A538 : AC9E LI R2,>0001 0202 0001 : ACA2 XACA6 MOV R1,@>A79C C801 A79C : ACA6 MOV R2,@>A774 C802 A774 : ACAA BLWP @>AED4 0420 AED4 : ACAE DEC R8 0608 : ACB2 JNE XACA6 16F8 : ACB4 XACB6 MOV R10,R9 C24A : ACB6 AI R9,>0018 0229 0018 : ACB8 MOV R9,@>A79C C809 A79C : ACBC MOV @>A8B6,@>A774 C820 A8B6 A774 : ACC0 BLWP @>AED4 0420 AED4 : ACC6 MOVB @>0010(R10),R7 D1EA 0010 : ACCA COC @>A8AC,R7 21E0 A8AC : ACCE JNE XACE6 1609 : ACD2 LI R3,>00FF 0203 00FF : ACD4 A @>0016(R10),R3 A0EA 0016 : ACD8 SRL R3,8 0983 : ACDC MOV @>0016(R10),R5 C16A 0016 : ACDE CLR R6 04C6 : ACE2 JMP XAD1A 101A : ACE4 XACE6 COC @>A8AE,R7 21E0 A8AE : ACE6 JNE XACF8 1606 : ACEA MOV @>0016(R10),R3 C0EA 0016 : ACEC MOVB @>0014(R10),R5 D16A 0014 : ACF0 SRL R5,8 0985 : ACF4 JMP XAD14 100E : ACF6 XACF8 MOVB @>0015(R10),R3 D0EA 0015 : ACF8 SRL R3,8 0983 : ACFC INC R3 0583 : ACFE MPY @>0024(R10),R3 38EA 0024 : AD00 AI R4,>00FF 0224 00FF : AD04 JNC XAD0C 1701 : AD08 INC R3 0583 : AD0A XAD0C MOVB R4,R3 D0C4 : AD0C SWPB R3 06C3 : AD0E MOV @>0024(R10),R5 C16A 0024 : AD10 XAD14 MOVB @>0015(R10),R6 D1AA 0015 : AD14 SRL R6,8 0986 : AD18 XAD1A MOV R3,@>A788 C803 A788 : AD1A LI R8,>A738 0208 A738 : AD1E MOV R8,@>A79C C808 A79C : AD22 MOV @>A8B6,@>A774 C820 A8B6 A774 : AD26 LI R4,>0001 0204 0001 : AD2C MOVB @>0010(R10),R4 D12A 0010 : AD30 BLWP @>AED4 0420 AED4 : AD34 MOV @>A788,R8 C220 A788 : AD38 JEQ XAD96 132C : AD3C XAD3E LI R1,>A7A6 0201 A7A6 : AD3E MOV R10,R3 C0CA : AD42 AI R3,>00FE 0223 00FE : AD44 MOV R10,R4 C10A : AD48 AI R4,>0028 0224 0028 : AD4A XAD4E MOV *R4+,R2 C0B4 : AD4E XAD50 MOV R2,@>A29E C802 A29E : AD50 MOV R1,@>A2A6 C801 A2A6 : AD54 BLWP @>A09E 0420 A09E : AD58 MOV @>A13E,@>A774 C820 A13E A774 : AD5C LI R5,>A7AA 0205 A7AA : AD62 MOV R5,@>A79C C805 A79C : AD66 BLWP @>AED4 0420 AED4 : AD6A DEC @>A788 0620 A788 : AD6E JEQ XAD96 1311 : AD72 C R2,*R4 8502 : AD74 JEQ XAD7C 1302 : AD76 INC R2 0582 : AD78 JMP XAD50 10EA : AD7A XAD7C C R4,R3 80C4 : AD7C JEQ XAD84 1302 : AD7E INCT R4 05C4 : AD80 JMP XAD4E 10E5 : AD82 XAD84 MOV @>A2E2,@>A2A6 C820 A2E2 A2A6 : AD84 MOV @>0022(R10),@>A29E C82A 0022 A29E : AD8A BLWP @>A09E 0420 A09E : AD90 JMP XAD3E 10D4 : AD94 XAD96 MOVB @>A13F,@>A6BF D820 A13F A6BF : AD96 AI R10,>0004 022A 0004 : AD9C LI R9,>000A 0209 000A : ADA0 LI R8,>A6D0 0208 A6D0 : ADA4 XADA8 MOVB *R10+,*R8+ DE3A : ADA8 CI R8,>A6DA 0288 A6DA : ADAA JNE XADA8 16FC : ADAE RTWP 0380 : ADB0 MOV @>A724,R8 C220 A724 : ADB2 AI R8,>A6DC 0228 A6DC : ADB6 DECT R8 0648 : ADBA MOV *R8,R9 C258 : ADBC MOV @>A2E0,R1 C060 A2E0 : ADBE MOV R1,@>A2A6 C801 A2A6 : ADC2 DECT R8 0648 : ADC6 MOV *R8+,@>A29E C838 A29E : ADC8 BLWP @>A09E 0420 A09E : ADCC MOV @>001A(R1),R10 C2A1 001A : ADD0 ANDI R10,>00FF 024A 00FF : ADD4 C *R8,R10 8298 : ADD8 JHE XAE72 144B : ADDA MOV *R8,R10 C298 : ADDC INC *R8+ 05B8 : ADDE SLA R10,1 0A1A : ADE0 A R1,R10 A281 : ADE2 MOV @>0020(R10),@>A29E C82A 0020 A29E : ADE4 BLWP @>A09E 0420 A09E : ADEA MOV R1,R10 C281 : ADEE AI R10,>0004 022A 0004 : ADF0 LI R5,>A6D0 0205 A6D0 : ADF4 XADF8 MOVB *R10+,*R5+ DD7A : ADF8 CI R5,>A6DA 0285 A6DA : ADFA JNE XADF8 16FC : ADFE LI R9,>A696 0209 A696 : AE00 MOVB @>A6BE,R7 D1E0 A6BE : AE04 SRL R7,8 0987 : AE08 A R7,R9 A247 : AE0A AI R10,>FFF6 022A FFF6 : AE0C MOVB @>A76B,*R9+ DE60 A76B : AE10 INC R7 0587 : AE14 LI R6,>000A 0206 000A : AE16 XAE1A MOVB *R10+,*R9+ DE7A : AE1A INC R7 0587 : AE1C CB *R10,@>A538 981A A538 : AE1E JEQ XAE28 1302 : AE22 DEC R6 0606 : AE24 JNE XAE1A 16F9 : AE26 XAE28 SLA R7,8 0A87 : AE28 MOVB R7,@>A6BE D807 A6BE : AE2A MOV @>A784,@>A79C C820 A784 A79C : AE2E LI R7,>0028 0207 0028 : AE34 MOV R7,@>A774 C807 A774 : AE38 BLWP @>AED4 0420 AED4 : AE3C MOV R1,R10 C281 : AE40 AI R10,>0012 022A 0012 : AE42 MOV R10,@>A79C C80A A79C : AE46 LI R10,>000A 020A 000A : AE4A MOV R10,@>A774 C80A A774 : AE4E BLWP @>AED4 0420 AED4 : AE52 LI R0,>0011 0200 0011 : AE56 LI R7,>A732 0207 A732 : AE5A MOV R7,@>A79C C807 A79C : AE5E LI R10,>0006 020A 0006 : AE62 MOV R10,@>A774 C80A A774 : AE66 BLWP @>AED4 0420 AED4 : AE6A B @>AB0E 0460 AB0E : AE6E XAE72 MOV @>A724,R8 C220 A724 : AE72 AI R8,>FFFC 0228 FFFC : AE76 MOV R8,@>A724 C808 A724 : AE7A JEQ XAEAE 1317 : AE7E MOVB @>A8AE,@>A6BF D820 A8AE A6BF : AE80 MOVB @>A6BE,R2 D0A0 A6BE : AE86 SRL R2,8 0982 : AE8A MOV R2,R3 C0C2 : AE8C DEC R3 0603 : AE8E AI R2,>A695 0222 A695 : AE90 XAE94 DEC R3 0603 : AE94 MOVB @>A538,*R2 D4A0 A538 : AE96 DEC R2 0602 : AE9A CB @>A76B,*R2 94A0 A76B : AE9C JNE XAE94 16F9 : AEA0 MOVB @>A538,*R2 D4A0 A538 : AEA2 SLA R3,8 0A83 : AEA6 MOVB R3,@>A6BE D803 A6BE : AEA8 RTWP 0380 : AEAC XAEAE MOVB @>A2DE,@>A6BF D820 A2DE A6BF : AEAE SETO @>A72E 0720 A72E : AEB4 LI R1,>A738 0201 A738 : AEB8 MOV R1,@>A79C C801 A79C : AEBC LI R3,>2020 0203 2020 : AEC0 SETO R4 0704 : AEC4 LI R5,>0004 0205 0004 : AEC6 MOV R5,@>A774 C805 A774 : AECA BLWP @>AED4 0420 AED4 : AECE RTWP 0380 : AED2 A R10,*R14 A78A : AED4 A *R8,*R11+ AED8 : AED6 MOV R13,@>A758 C80D A758 : AED8 MOV R14,@>A75A C80E A75A : AEDC MOV R15,@>A75C C80F A75C : AEE0 XAEE4 LI R2,>00FF 0202 00FF : AEE4 S @>A772,R2 60A0 A772 : AEE8 C R2,@>A774 8802 A774 : AEEC JLE XAEF6 1202 : AEF0 MOV @>A774,R2 C0A0 A774 : AEF2 XAEF6 S R2,@>A774 6802 A774 : AEF6 LI R0,>0620 0200 0620 : AEFA A @>A772,R0 A020 A772 : AEFE MOV R9,R1 C049 : AF02 A R2,R9 A242 : AF04 A R2,@>A772 A802 A772 : AF06 BLWP @>A4F0 0420 A4F0 : AF0A C @>A772,@>A8B8 8820 A772 A8B8 : AF0E JEQ XAF22 1306 : AF14 MOV @>A72E,R1 C060 A72E : AF16 JEQ XAF6C 1328 : AF1A MOV @>A772,R1 C060 A772 : AF1C JEQ XAF88 1333 : AF20 XAF22 LI R0,>0600 0200 0600 : AF22 LI R1,>0900 0201 0900 : AF26 BLWP @>A4EC 0420 A4EC : AF2A MOV @>A782,@>8356 C820 A782 8356 : AF2E BLWP @>A4FC 0420 A4FC : AF34 DATA >0008 LI R0,>0608 0200 0608 : AF3A BLWP @>A4F4 0420 A4F4 : AF3E COC @>A8B2,R1 2060 A8B2 : AF42 JEQ XAF88 1320 : AF46 LI R0,>0600 0200 0600 : AF48 MOVB @>A8B0,R1 D060 A8B0 : AF4C BLWP @>A4EC 0420 A4EC : AF50 MOV @>A782,@>8356 C820 A782 8356 : AF54 BLWP @>A4FC 0420 A4FC : AF5A DATA >0008 JEQ XB050 1377 : AF60 CLR @>A772 04E0 A772 : AF62 MOV @>A774,R2 C0A0 A774 : AF66 JNE XAEE4 16BC : AF6A XAF6C MOV @>A72E,R2 C0A0 A72E : AF6C JEQ XAF7A 1304 : AF70 MOV @>A772,R2 C0A0 A772 : AF72 JNE XAF22 16D5 : AF76 JMP XAF88 1007 : AF78 XAF7A MOV @>A758,R13 C360 A758 : AF7A MOV @>A75A,R14 C3A0 A75A : AF7E MOV @>A75C,R15 C3E0 A75C : AF82 RTWP 0380 : AF86 XAF88 LI R0,>0600 0200 0600 : AF88 MOVB @>A76E,R1 D060 A76E : AF8C BLWP @>A4EC 0420 A4EC : AF90 MOV @>A782,@>8356 C820 A782 8356 : AF94 BLWP @>A4FC 0420 A4FC : AF9A DATA >0008 JEQ XB048 1353 : AFA0 MOV @>A72E,R5 C160 A72E : AFA2 JEQ XAFB6 1307 : AFA6 MOV @>A772,R5 C160 A772 : AFA8 JNE XAFB6 1604 : AFAC MOVB @>A2DE,@>A6BF D820 A2DE A6BF : AFAE RTWP 0380 : AFB4 XAFB6 MOVB @>A76D,@>A6BF D820 A76D A6BF : AFB6 LI R14,>AB22 020E AB22 : AFBC INC @>A776 05A0 A776 : AFC0 RTWP 0380 : AFC4 A R10,*R14 A78A : AFC6 A R10,*R15+ AFCA : AFC8 MOV @>A776,R1 C060 A776 : AFCA COC @>A8BA,R1 2060 A8BA : AFCE JNE XAFE2 1607 : AFD2 AI R1,>0006 0221 0006 : AFD4 COC @>A8BE,R1 2060 A8BE : AFD8 JNE XAFE2 1602 : AFDC AI R1,>0060 0221 0060 : AFDE XAFE2 MOV R1,@>A776 C801 A776 : AFE2 MOVB @>A6CF,R0 D020 A6CF : AFE6 SRL R0,8 0980 : AFEA AI R0,>060A 0220 060A : AFEC LI R4,>0003 0204 0003 : AFF0 XAFF4 ANDI R1,>0FFF 0241 0FFF : AFF4 ORI R1,>3000 0261 3000 : AFF8 BLWP @>A4EC 0420 A4EC : AFFC INC R0 0580 : B000 SLA R1,4 0A41 : B002 DEC R4 0604 : B004 JNE XAFF4 16F6 : B006 CLR R1 04C1 : B008 LI R0,>0600 0200 0600 : B00A BLWP @>A4EC 0420 A4EC : B00E LI R0,>0601 0200 0601 : B012 LI R1,>0200 0201 0200 : B016 BLWP @>A4EC 0420 A4EC : B01A LI R0,>0606 0200 0606 : B01E CLR R1 04C1 : B022 BLWP @>A4EC 0420 A4EC : B024 INC R0 0580 : B028 BLWP @>A4EC 0420 A4EC : B02A MOV @>A782,@>8356 C820 A782 8356 : B02E BLWP @>A4FC 0420 A4FC : B034 DATA >0008 JEQ XB040 1302 : B03A B @>AF22 0460 AF22 : B03C XB040 MOV @>A76F,@>A6BF C820 A76F A6BF : B040 JMP XB056 1007 : B046 XB048 MOV @>A770,@>A6BF C820 A770 A6BF : B048 JMP XB056 1003 : B04E XB050 MOV @>A771,@>A6BF C820 A771 A6BF : B050 XB056 LI R14,>AB22 020E AB22 : B056 RTWP 0380 : B05A END Restore Assembly: AORG >A688 XA688 A *R10,*R14 A79A : A688 A R0,@>0282(R2) A880 0282 : A68A DATA >0046 JGT XA6AA 150C : A690 AI R2,>FFF9 0222 FFF9 : A692 AI R2,>FFD0 0222 FFD0 : A696 SLA R3,4 0A43 : A69A JNC XA6A6 1704 : A69C ABS @>20C8 0760 20C8 : A69E JEQ XA6A6 1301 : A6A2 BLWP *R4 0414 : A6A4 XA6A6 A R2,R3 A0C2 : A6A6 JMP XA67A 10E8 : A6A8 XA6AA DEC R5 0605 : A6AA ABS @>20C8 0760 20C8 : A6AC JEQ XA6B6 1302 : A6B0 BLWP @>A444 0420 A444 : A6B2 XA6B6 CLR R3 04C3 : A6B6 RTWP 0380 : A6B8 MOVB *R5+,R2 D0B5 : A6BA SRL R2,8 0982 : A6BC DATA >0000 DATA >0009 JNE XA6C8 1602 : A6C2 LI R2,>0020 0202 0020 : A6C4 XA6C8 CI R2,>0020 0282 0020 : A6C8 JLT XA6AA 11EE : A6CC CI R2,>005F 0282 005F : A6CE JH XA6DC 1B04 : A6D2 MOVB @>24D0(R2),R1 D062 24D0 : A6D4 SRL R1,8 0981 : A6D8 RT 045B : A6DA XA6DC CLR R1 04C1 : A6DC RT 045B : A6DE BL *R7 0697 : A6E0 C R1,R0 8001 : A6E2 JNE XA6E8 1601 : A6E4 BL *R10 069A : A6E6 XA6E8 MOV R2,R3 C0C2 : A6E8 BL *R7 0697 : A6EA C R1,R0 8001 : A6EC JNE XA6F2 1601 : A6EE BL *R10 069A : A6F0 XA6F2 SLA R3,8 0A83 : A6F2 SOC R2,R3 E0C2 : A6F4 RTWP 0380 : A6F6 MOV R11,R12 C30B : A6F8 DATA >0004 DECT R11 064B : A6FC SOCB *R15+,*R15+ FFFF : A6FE DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DEC @>0609(R2) 0622 0609 : A70E DATA >0000 DATA >0000 COC @>4600,R0 2020 4600 : A716 LI R0,>0800 0200 0800 : A71A BLWP R0 0400 : A71E DATA >0010 SOCB *R15+,*R15+ FFFF : A722 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0000 DATA >0102 DATA >0330 SETO R2 0702 : A738 BLWP R6 0406 : A73A SRA R10,0 080A : A73C SRC R12,0 0B0C : A73E DATA >0D00 JMP XA664 1090 : A742 JLE XA666 1290 : A744 JHE XA668 1490 : A746 JNE XA66A 1690 : A748 COC *R2,R2 2092 : A74A COC *R10+,R9 227A : A74C CZC *R10+,R1 247A : A74E CZC *R10+,R9 267A : A750 A R2,@>A756 A802 A756 : A752 SZCB @>A7BC,R15 53E0 A7BC : A756 LWPI >83E0 02E0 83E0 : A75A MOV @>8356,R1 C060 8356 : A75E MOV R1,@>A76A C801 A76A : A762 BLWP @>AAA2 0420 AAA2 : A766 DATA >0000 MOVB R1,R7 D1C1 : A76C A *R14,@>A772 A81E A772 : A76E SZCB @>A7D8,R15 53E0 A7D8 : A772 LWPI >83E0 02E0 83E0 : A776 MOV @>8356,R1 C060 8356 : A77A MOV R1,@>A786 C801 A786 : A77E BLWP @>AABE 0420 AABE : A782 JLT XA79A 1109 : A786 MOVB R1,R7 D1C1 : A788 SRL R7,8 0987 : A78A SETO R6 0706 : A78C LI R2,>834A 0202 834A : A78E INC R1 0581 : A792 INC R6 0586 : A794 C R6,R7 81C6 : A796 JEQ XA7AA+2 1309 : A798 XA79A LIMI >0000 0300 0000 : A79A CLR @>A730 04E0 A730 : A79E CLR @>A732 04E0 A732 : A7A2 MOV R11,@>A728 C80B A728 : A7A6 XA7AA BLWP @>A7B8 0420 A7B8 : A7AA MOV @>A728,R11 C2E0 A728 : A7AE LIMI >0002 0300 0002 : A7B2 RT 045B : A7B6 A *R10,*R11 A6DA : A7B8 A *R12+,*R14 A7BC : A7BA MOVB @>A13F,@>A6BF D820 A13F A6BF : A7BC LI R0,>0600 0200 0600 : A7C2 LI R1,>A6FA 0201 A6FA : A7C6 MOVB @>A6CF,R3 D0E0 A6CF : A7CA AI R3,>0300 0223 0300 : A7CE MOVB R3,@>A703 D803 A703 : A7D2 LI R2,>000A 0202 000A : A7D6 BLWP @>A4F0 0420 A4F0 : A7DA LI R1,>A6C0 0201 A6C0 : A7DE MOVB @>A6CF,R3 D0E0 A6CF : A7E2 SRL R3,8 0983 : A7E6 MOV R3,R2 C083 : A7E8 A R1,R3 A0C1 : A7EA MOVB @>A737,*R3+ DCE0 A737 : A7EC MOVB @>A737,*R3+ DCE0 A737 : A7F0 MOVB @>A737,*R3+ DCE0 A737 : A7F4 LI R0,>060A 0200 060A : A7F8 AI R2,>0003 0222 0003 : A7FC BLWP @>A4F0 0420 A4F0 : A800 MOV @>A710,@>8356 C820 A710 8356 : A804 BLWP @>A4FC 0420 A4FC : A80A DATA >0008 JNE XA81A 1604 : A810 XA812 MOVB @>A73B,@>A6BF D820 A73B A6BF : A812 JMP XA87E 1032 : A818 XA81A SETO @>A730 0720 A730 : A81A LI R0,>0600 0200 0600 : A81E MOVB @>A735,R1 D060 A735 : A822 BLWP @>A4EC 0420 A4EC : A826 MOV @>A710,@>8356 C820 A710 8356 : A82A BLWP @>A4FC 0420 A4FC : A830 DATA >0008 JEQ XA812 13ED : A836 LI R0,>064B 0200 064B : A838 LI R1,>A742 0201 A742 : A83C LI R2,>0028 0202 0028 : A840 BLWP @>A4F8 0420 A4F8 : A844 MOVB @>A6BE,R2 D0A0 A6BE : A848 SRL R2,8 0982 : A84C LI R3,>A696 0203 A696 : A84E XA852 CB *R3+,*R1+ 9C73 : A852 JNE XA866 1608 : A854 DEC R2 0602 : A856 JNE XA852 16FC : A858 CI R3,>A6BE 0283 A6BE : A85A JEQ XA870 1308 : A85E CB @>A538,*R1 9460 A538 : A860 JEQ XA870 1305 : A864 XA866 MOV @>A739,@>A6BF C820 A739 A6BF : A866 B @>AC36 0460 AC36 : A86C XA870 LI R1,>00CF 0201 00CF : A870 MOV R1,@>A712 C801 A712 : A874 MOVB @>A13E,@>A6BF D820 A13E A6BF : A878 XA87E RTWP 0380 : A87E LIMI >0000 0300 0000 : A880 MOV R11,@>A728 C80B A728 : A884 BLWP @>A896 0420 A896 : A888 MOV @>A728,R11 C2E0 A728 : A88C LIMI >0002 0300 0002 : A890 RT 045B : A894 A *R10,*R11 A6DA : A896 A *R10,@>9820(R2) A89A 9820 : A898 A *R15+,*R10 A6BF : A89C A *R8+,*R12 A738 : A89E JNE XA8A6 1602 : A8A0 BLWP @>AB14 0420 AB14 : A8A2 XA8A6 CLR @>A714 04E0 A714 : A8A6 LI R0,>0004 0200 0004 : A8AA LI R1,>A742 0201 A742 : A8AE BLWP @>AB18 0420 AB18 : A8B2 C *R1,@>A716 8811 A716 : A8B6 JNE XA8D6 160D : A8BA INCT R1 05C1 : A8BC C *R1,@>A722 8811 A722 : A8BE JEQ XA8CC 1304 : A8C2 MOVB @>A73F,@>A6BF D820 A73F A6BF : A8C4 RTWP 0380 : A8CA XA8CC MOVB @>A2DE,@>A6BF D820 A2DE A6BF : A8CC B @>AC36 0460 AC36 : A8D2 XA8D6 LI R1,>A746 0201 A746 : A8D6 LI R0,>0034 0200 0034 : A8DA BLWP @>AB18 0420 AB18 : A8DE MOV @>A774,R2 C0A0 A774 : A8E2 COC @>A720,R2 20A0 A720 : A8E6 JNE XA92A 161F : A8EA LI R2,>A742 0202 A742 : A8EC CLR R4 04C4 : A8F0 XA8F2 CB *R2+,@>A538 9832 A538 : A8F2 JEQ XA900 1304 : A8F6 INC R4 0584 : A8F8 CI R4,>0028 0284 0028 : A8FA JNE XA8F2 16F9 : A8FE XA900 SWPB R4 06C4 : A900 MOV R4,@>A6BE C804 A6BE : A902 BLWP @>ACB4 0420 ACB4 : A906 MOVB @>A6BF,R1 D060 A6BF : A90A JEQ XA8A6 13CB : A90E CB R1,@>A73A 9801 A73A : A910 JNE XA91C 1603 : A914 CLR @>A6BE 04E0 A6BE : A916 JMP XA8A6 10C5 : A91A XA91C MOVB @>A73C,@>A6BF D820 A73C A6BF : A91C MOVB R1,@>A6BE D801 A6BE : A922 B @>AC36 0460 AC36 : A926 XA92A COC @>A71C,R2 20A0 A71C : A92A JNE XA934 1602 : A92E B @>AA94 0460 AA94 : A930 XA934 LI R1,>0002 0201 0002 : A934 COC @>A71E,R2 20A0 A71E : A938 JNE XA942 1602 : A93C ORI R1,>0010 0261 0010 : A93E XA942 COC @>A2DC,R2 20A0 A2DC : A942 JNE XA94C 1602 : A946 ORI R1,>0008 0261 0008 : A948 XA94C LI R4,>A704 0204 A704 : A94C MOV R1,*R4+ CD01 : A950 LI R1,>AF8C 0201 AF8C : A952 MOV R1,*R4+ CD01 : A956 CLR R1 04C1 : A958 MOVB @>A779,R1 D060 A779 : A95A MOV R1,*R4+ CD01 : A95E CLR *R4+ 04F4 : A960 BL @>AADE 06A0 AADE : A962 MOV @>A70E,@>8356 C820 A70E 8356 : A966 BLWP @>A4FC 0420 A4FC : A96C DATA >0008 JNE XA98C 160C : A972 CB R0,@>A13E 9800 A13E : A974 JEQ XA988 1307 : A978 XA97A MOVB @>A73D,@>A6BF D820 A73D A6BF : A97A MOVB R0,@>A6BE D800 A6BE : A980 B @>AC36 0460 AC36 : A984 XA988 SETO @>A714 0720 A714 : A988 XA98C LI R1,>4300 0201 4300 : A98C LI R0,>0619 0200 0619 : A990 BLWP @>A4EC 0420 A4EC : A994 MOV @>A774,R1 C060 A774 : A998 COC @>A71E,R1 2060 A71E : A99C JNE XAA5C 165D : A9A0 MOV @>A772,@>A724 C820 A772 A724 : A9A2 MOV @>A776,@>A726 C820 A776 A726 : A9A8 CLR R7 04C7 : A9AE CLR R6 04C6 : A9B0 XA9B2 C R6,@>A724 8806 A724 : A9B2 JNE XAA02 1625 : A9B6 C R7,@>A726 8807 A726 : A9B8 JNE XAA02 1622 : A9BC XA9BE LI R0,>0619 0200 0619 : A9BE MOVB @>A734,R1 D060 A734 : A9C2 BLWP @>A4EC 0420 A4EC : A9C6 MOV @>A70E,@>8356 C820 A70E 8356 : A9CA BLWP @>A4FC 0420 A4FC : A9D0 DATA >0008 JEQ XA97A 13D1 : A9D6 ANDI R7,>00FF 0247 00FF : A9D8 MOV R7,R7 C1C7 : A9DC JEQ XA9EE 1307 : A9DE LI R1,>AF8C 0201 AF8C : A9E0 LI R0,>0100 0200 0100 : A9E4 S R7,R0 6007 : A9E8 BLWP @>AB18 0420 AB18 : A9EA XA9EE MOVB @>A13F,@>A6BF D820 A13F A6BF : A9EE MOV @>A714,R1 C060 A714 : A9F4 JEQ XAA00 1303 : A9F8 MOVB @>A740,@>A6BF D820 A740 A6BF : A9FA XAA00 RTWP 0380 : AA00 XAA02 LI R0,>0001 0200 0001 : AA02 LI R1,>A6DF 0201 A6DF : AA06 CLR R2 04C2 : AA0A BLWP @>AB18 0420 AB18 : AA0C MOV R2,R2 C082 : AA10 JEQ XAA1E 1305 : AA12 MOV R2,R0 C002 : AA14 LI R1,>AF8C 0201 AF8C : AA16 BLWP @>AB18 0420 AB18 : AA1A XAA1E MOV R2,R1 C042 : AA1E SWPB R1 06C1 : AA20 LI R0,>061E 0200 061E : AA22 BLWP @>A4EC 0420 A4EC : AA26 MOV @>A714,@>A714 C820 A714 A714 : AA2A JNE XAA44 1609 : AA30 MOV @>A70E,@>8356 C820 A70E 8356 : AA32 BLWP @>A4FC 0420 A4FC : AA38 DATA >0008 JNE XAA44 1602 : AA3E XAA40 B @>A97A 0460 A97A : AA40 XAA44 MOV R7,R7 C1C7 : AA44 JNE XAA4A 1601 : AA46 INC R6 0586 : AA48 XAA4A A R2,R7 A1C2 : AA4A INC R7 0587 : AA4C CI R7,>0100 0287 0100 : AA4E JLE XAA56 1201 : AA52 INC R6 0586 : AA54 XAA56 ANDI R7,>00FF 0247 00FF : AA56 JMP XA9B2 10AB : AA5A XAA5C MOV @>A776,R6 C1A0 A776 : AA5C MOV @>A778,R8 C220 A778 : AA60 INC R8 0588 : AA64 CLR R7 04C7 : AA66 XAA68 MOV R6,R6 C186 : AA68 JEQ XA9BE 13A9 : AA6A A R8,R7 A1C8 : AA6C DEC R6 0606 : AA6E MOV R8,R0 C008 : AA70 LI R1,>AF8B 0201 AF8B : AA72 BLWP @>AB18 0420 AB18 : AA76 MOV @>A714,@>A714 C820 A714 A714 : AA7A JNE XAA68 16F3 : AA80 MOV @>A70E,@>8356 C820 A70E 8356 : AA82 BLWP @>A4FC 0420 A4FC : AA88 DATA >0008 JNE XAA68 16EC : AA8E B @>A97A 0460 A97A : AA90 LI R4,>A704 0204 A704 : AA94 MOV @>A718,*R4+ CD20 A718 : AA98 LI R2,>AF8C 0202 AF8C : AA9C MOV R2,*R4+ CD02 : AAA0 CLR *R4+ 04F4 : AAA2 MOV @>A776,*R4+ CD20 A776 : AAA4 MOV @>A776,@>A724 C820 A776 A724 : AAA8 BL @>AADE 06A0 AADE : AAAE MOV @>A724,R0 C020 A724 : AAB2 LI R1,>AF8C 0201 AF8C : AAB6 BLWP @>AB18 0420 AB18 : AABA MOV @>A724,R7 C1E0 A724 : AABE MOV @>A70E,@>8356 C820 A70E 8356 : AAC2 BLWP @>A4FC 0420 A4FC : AAC8 DATA >0008 JNE XAADA 1605 : AACE CB R0,@>A13E 9800 A13E : AAD0 JNE XAA40 16B5 : AAD4 SETO @>A714 0720 A714 : AAD6 XAADA B @>A9D8 0460 A9D8 : AADA CLR R6 04C6 : AADE LI R2,>A742 0202 A742 : AAE0 XAAE4 CB *R2+,@>A538 9832 A538 : AAE4 JEQ XAAF2 1304 : AAE8 INC R6 0586 : AAEA CI R2,>A76A 0282 A76A : AAEC JNE XAAE4 16F9 : AAF0 XAAF2 MOV R6,*R4 C506 : AAF2 LI R0,>0619 0200 0619 : AAF4 LI R1,>A704 0201 A704 : AAF8 LI R2,>000A 0202 000A : AAFC BLWP @>A4F0 0420 A4F0 : AB00 MOV R6,R2 C086 : AB04 LI R0,>0623 0200 0623 : AB06 LI R1,>A742 0201 A742 : AB0A BLWP @>A4F0 0420 A4F0 : AB0E RT 045B : AB12 A *R10+,*R13 A77A : AB14 A @>A77A(R14),@>AB1C(R12) AB2E A77A AB1C : AB16 MOV R13,@>A72A C80D A72A : AB1C MOV R14,@>A72C C80E A72C : AB20 MOV R15,@>A72E C80F A72E : AB24 MOV *R13+,R9 C27D : AB28 MOV *R13,R10 C29D : AB2A DECT R13 064D : AB2C MOV @>A730,R1 C060 A730 : AB2E JNE XAB9C 1634 : AB32 MOVB @>A6CF,R1 D060 A6CF : AB34 AI R1,>0300 0221 0300 : AB38 MOVB R1,@>A703 D801 A703 : AB3C SRL R1,8 0981 : AB40 MOV R1,R6 C181 : AB42 AI R1,>A6BD 0221 A6BD : AB44 LI R4,>0003 0204 0003 : AB48 MOV @>A732,R3 C0E0 A732 : AB4C XAB50 ANDI R3,>0FFF 0243 0FFF : AB50 ORI R3,>3000 0263 3000 : AB54 MOVB R3,*R1+ DC43 : AB58 SLA R3,4 0A43 : AB5A DEC R4 0604 : AB5C JNE XAB50 16F8 : AB5E LI R0,>0600 0200 0600 : AB60 LI R1,>A6FA 0201 A6FA : AB64 LI R2,>000A 0202 000A : AB68 BLWP @>A4F0 0420 A4F0 : AB6C LI R0,>060A 0200 060A : AB70 LI R1,>A6C0 0201 A6C0 : AB74 MOV R6,R2 C086 : AB78 BLWP @>A4F0 0420 A4F0 : AB7A MOV @>A710,@>8356 C820 A710 8356 : AB7E BLWP @>A4FC 0420 A4FC : AB84 DATA >0008 JNE XAB94 1604 : AB8A MOVB @>A73E,@>A6BF D820 A73E A6BF : AB8C JMP XAC7A 1073 : AB92 XAB94 SETO @>A730 0720 A730 : AB94 CLR @>A712 04E0 A712 : AB98 XAB9C MOV @>A712,R7 C1E0 A712 : AB9C JNE XABFC 162D : ABA0 XABA2 LI R0,>0600 0200 0600 : ABA2 LI R1,>0900 0201 0900 : ABA6 BLWP @>A4EC 0420 A4EC : ABAA MOV @>A710,@>8356 C820 A710 8356 : ABAE BLWP @>A4FC 0420 A4FC : ABB4 DATA >0008 LI R0,>0608 0200 0608 : ABBA BLWP @>A4F4 0420 A4F4 : ABBE COC @>A13E,R1 2060 A13E : ABC2 JEQ XAC30 1334 : ABC6 COC @>A71A,R1 2060 A71A : ABC8 JEQ XAC30 1331 : ABCC LI R0,>0600 0200 0600 : ABCE LI R1,>0200 0201 0200 : ABD2 BLWP @>A4EC 0420 A4EC : ABD6 MOV @>A710,@>8356 C820 A710 8356 : ABDA BLWP @>A4FC 0420 A4FC : ABE0 DATA >0008 JNE XABF4 1606 : ABE6 XABE8 MOVB @>A73B,@>A6BF D820 A73B A6BF : ABE8 MOVB R0,@>A6BE D800 A6BE : ABEE JMP XAC7A 1043 : ABF2 XABF4 LI R7,>00FF 0207 00FF : ABF4 MOV R7,@>A712 C807 A712 : ABF8 XABFC C R7,R9 8247 : ABFC JHE XAC2A 1415 : ABFE MOV R7,R2 C087 : AC00 S R7,R9 6247 : AC02 XAC04 MOV R10,R1 C04A : AC04 LI R0,>074A 0200 074A : AC06 S R7,R0 6007 : AC0A BLWP @>A4F8 0420 A4F8 : AC0C A R2,R10 A282 : AC10 S R2,R7 61C2 : AC12 MOV R7,@>A712 C807 A712 : AC14 MOV R9,R9 C249 : AC18 JNE XABA2 16C3 : AC1A MOV @>A72A,R13 C360 A72A : AC1C MOV @>A72C,R14 C3A0 A72C : AC20 MOV @>A72E,R15 C3E0 A72E : AC24 RTWP 0380 : AC28 XAC2A MOV R9,R2 C089 : AC2A CLR R9 04C9 : AC2C JMP XAC04 10EA : AC2E XAC30 MOVB @>A738,@>A6BF D820 A738 A6BF : AC30 LI R0,>0600 0200 0600 : AC36 LI R1,>0100 0201 0100 : AC3A BLWP @>A4EC 0420 A4EC : AC3E MOV @>A710,@>8356 C820 A710 8356 : AC42 BLWP @>A4FC 0420 A4FC : AC48 DATA >0008 JEQ XABE8 13CC : AC4E CB @>A738,@>A6BF 9820 A738 A6BF : AC50 JNE XAC7E 1613 : AC56 LI R3,>0006 0203 0006 : AC58 LI R2,>000A 0202 000A : AC5C MOV @>A732,R1 C060 A732 : AC60 INC R1 0581 : AC64 XAC66 COC R2,R1 2042 : AC66 JNE XAC72 1604 : AC68 A R3,R1 A043 : AC6A SLA R3,4 0A43 : AC6C SLA R2,4 0A42 : AC6E JMP XAC66 10FA : AC70 XAC72 MOV R1,@>A732 C801 A732 : AC72 CLR @>A730 04E0 A730 : AC76 XAC7A LI R14,>AC7E 020E AC7E : AC7A XAC7E RTWP 0380 : AC7E SOCB R0,*R12+ FF00 : AC80 MPY *R12,R6 399C : AC82 JGT XAC8C 1503 : AC84 BLWP *R11 041B : AC86 DEC @>399C 0620 399C : AC88 XAC8C MOV R1,*R12 C701 : AC8C MOV R7,R7 C1C7 : AC8E JEQ XAC9C 1305 : AC90 MOV R10,*R8 C60A : AC92 BLWP @>A55C 0420 A55C : AC94 COC *R0,R9 2250 : AC98 JMP XACA8 1006 : AC9A XAC9C MOV R3,@>2260 C803 2260 : AC9C MOV R4,@>0000 C804 0000 : ACA0 DATA >0000 SZCB R4,*R13 5744 : ACA6 XACA8 SZC R9,*R1 4449 : ACA8 SZCB R0,R8 5200 : ACAA SZCB *R1+,R12 5331 : ACAC LDCR *R3+,8 3233 : ACAE STCR @>2E00,0 3420 2E00 : ACB0 A R2,*R2+ AC82 : ACB4 A *R8+,*R2+ ACB8 : ACB6 LI R3,>A742 0203 A742 : ACB8 MOVB @>A13F,@>A6BF D820 A13F A6BF : ACBC CLR @>ACA4 04E0 ACA4 : ACC2 MOV @>AC80,@>A2CC C820 AC80 A2CC : ACC6 MOVB @>A6BE,R0 D020 A6BE : ACCC SRL R0,8 0980 : ACD0 MOV @>A2E0,R1 C060 A2E0 : ACD2 C *R3+,@>ACA6 8833 ACA6 : ACD6 JEQ XACE0 1302 : ACDA XACDC B @>AEA8 0460 AEA8 : ACDC XACE0 CB *R3+,@>ACAC 9833 ACAC : ACE0 JNE XACDC 16FB : ACE4 MOVB *R3+,R8 D233 : ACE6 AI R0,>FFFC 0220 FFFC : ACE8 CB R8,@>ACB2 9808 ACB2 : ACEC JEQ XAD30 131F : ACF0 CLR R9 04C9 : ACF2 CB R8,@>ACAD 9808 ACAD : ACF4 JEQ XAD12 130C : ACF8 INC R9 0589 : ACFA CB R8,@>ACAE 9808 ACAE : ACFC JEQ XAD12 1308 : AD00 INC R9 0589 : AD02 CB R8,@>ACAF 9808 ACAF : AD04 JEQ XAD12 1304 : AD08 INC R9 0589 : AD0A CB R8,@>ACB0 9808 ACB0 : AD0C JNE XACDC 16E5 : AD10 XAD12 CB *R3+,@>ACB2 9833 ACB2 : AD12 JNE XACDC 16E2 : AD16 DEC R0 0600 : AD18 MOV R9,@>A2CC C809 A2CC : AD1A CLR @>A29E 04E0 A29E : AD1E MOV @>A2E0,@>A2A6 C820 A2E0 A2A6 : AD22 BLWP @>A09E 0420 A09E : AD28 B @>AEA0 0460 AEA0 : AD2C XAD30 LI R2,>A68C 0202 A68C : AD30 XAD34 MOVB @>ACB1,*R2+ DCA0 ACB1 : AD34 CI R2,>A696 0282 A696 : AD38 JNE XAD34 16FB : AD3C LI R2,>A68C 0202 A68C : AD3E MOV R0,R0 C000 : AD42 JEQ XAD4A 1302 : AD44 B @>AE14 0460 AE14 : AD46 XAD4A MOVB @>A2CC,R0 D020 A2CC : AD4A JNE XACDC 16C6 : AD4E MOV @>A2E0,R1 C060 A2E0 : AD50 MOV @>001A(R1),R9 C261 001A : AD54 ANDI R9,>00FF 0249 00FF : AD58 MOV R1,R8 C201 : AD5C AI R8,>0020 0228 0020 : AD5E BL @>A1BC 06A0 A1BC : AD62 JNE XAD70 1604 : AD66 MOVB @>A73A,@>A6BF D820 A73A A6BF : AD68 RTWP 0380 : AD6E XAD70 MOV @>001A(R1),R8 C221 001A : AD70 ANDI R8,>00FF 0248 00FF : AD74 CI R8,>0072 0288 0072 : AD78 JL XAD86 1A04 : AD7C MOVB @>A13E,@>A6BF D820 A13E A6BF : AD7E RTWP 0380 : AD84 XAD86 CLR R0 04C0 : AD86 MOV @>A2E2,R1 C060 A2E2 : AD88 BL @>A002 06A0 A002 : AD8C MOV R0,@>ACA2 C800 ACA2 : AD90 BL @>A002 06A0 A002 : AD94 MOV @>A2E0,R1 C060 A2E0 : AD98 INC @>001A(R1) 05A1 001A : AD9C MOV R1,R7 C1C1 : ADA0 AI R7,>0104 0227 0104 : ADA2 MOV R0,R9 C240 : ADA6 XADA8 MOV *R2,R8 C212 : ADA8 MOV R9,*R2+ CC89 : ADAA MOV R8,R9 C248 : ADAC C R2,R7 81C2 : ADAE JNE XADA8 16FB : ADB0 MOV R1,@>A2A6 C801 A2A6 : ADB2 MOV @>ACA4,@>A29E C820 ACA4 A29E : ADB6 BLWP @>A232 0420 A232 : ADBC MOV @>A2E2,R1 C060 A2E2 : ADC0 BL @>AEBC 06A0 AEBC : ADC4 MOV R1,R2 C081 : ADC8 AI R2,>0004 0222 0004 : ADCA LI R5,>A68C 0205 A68C : ADCE XADD2 MOV *R5+,*R2+ CCB5 : ADD2 CI R5,>A696 0285 A696 : ADD4 JNE XADD2 16FC : ADD8 AI R2,>0004 0222 0004 : ADDA MOV @>ACA8,*R2+ CCA0 ACA8 : ADDE MOV @>ACAA,*R2+ CCA0 ACAA : ADE2 BL @>AECE 06A0 AECE : ADE6 INCT R2 05C2 : ADEA MOV @>ACA2,*R2+ CCA0 ACA2 : ADEC MOV @>ACA4,*R2+ CCA0 ACA4 : ADF0 MOV R1,@>A2A6 C801 A2A6 : ADF4 MOV R0,@>A29E C800 A29E : ADF8 BLWP @>A232 0420 A232 : ADFC BL @>AEBC 06A0 AEBC : AE00 MOV R0,@>0102(R1) C840 0102 : AE04 MOV @>ACA2,@>A29E C820 ACA2 A29E : AE08 BLWP @>A232 0420 A232 : AE0E RTWP 0380 : AE12 DEC R0 0600 : AE14 MOVB *R3+,R5 D173 : AE16 CB R5,@>ACB1 9805 ACB1 : AE18 JEQ XAEA8 1345 : AE1C CB R5,@>ACB2 9805 ACB2 : AE1E JNE XAEB0 1646 : AE22 CI R2,>A68C 0282 A68C : AE24 JNE XAE2E 1602 : AE28 B @>AEA8 0460 AEA8 : AE2A XAE2E MOVB @>A2CC,R2 D0A0 A2CC : AE2E JEQ XAE70 131E : AE32 CLR @>A2CC 04E0 A2CC : AE34 MOV @>A2E0,R1 C060 A2E0 : AE38 XAE3C CLR @>A29E 04E0 A29E : AE3C MOV R1,@>A2A6 C801 A2A6 : AE40 BLWP @>A09E 0420 A09E : AE44 MOV R1,R5 C141 : AE48 AI R5,>0004 0225 0004 : AE4A LI R7,>A68C 0207 A68C : AE4E XAE52 C *R7+,*R5+ 8D77 : AE52 JNE XAE5E 1604 : AE54 CI R7,>A696 0287 A696 : AE56 JEQ XAEA0 1322 : AE5A JMP XAE52 10FA : AE5C XAE5E MOV @>A2CC,R5 C160 A2CC : AE5E INC R5 0585 : AE62 MOV R5,@>A2CC C805 A2CC : AE64 CI R5,>0004 0285 0004 : AE68 JNE XAE3C 16E7 : AE6C JMP XAEA8 101C : AE6E XAE70 MOV @>A2E0,R1 C060 A2E0 : AE70 MOV R1,R8 C201 : AE74 AI R8,>0020 0228 0020 : AE76 MOV R1,R9 C241 : AE7A AI R9,>001A 0229 001A : AE7C MOV *R9,R9 C259 : AE80 ANDI R9,>00FF 0249 00FF : AE82 BL @>A1BC 06A0 A1BC : AE86 JNE XAEA8 160E : AE8A MOV @>A29E,@>ACA4 C820 A29E ACA4 : AE8C MOV @>A2E2,R1 C060 A2E2 : AE92 MOV @>A2E0,@>A2E2 C820 A2E0 A2E2 : AE96 MOV R1,@>A2E0 C801 A2E0 : AE9C XAEA0 MOV R0,R0 C000 : AEA0 JEQ XAEA8 1302 : AEA2 B @>AD30 0460 AD30 : AEA4 XAEA8 MOVB @>A739,@>A6BF D820 A739 A6BF : AEA8 RTWP 0380 : AEAE XAEB0 CI R2,>A696 0282 A696 : AEB0 JEQ XAEA8 13F9 : AEB4 MOVB R5,*R2+ DC85 : AEB6 B @>AD42 0460 AD42 : AEB8 MOV R1,R10 C281 : AEBC AI R10,>0104 022A 0104 : AEBE XAEC2 CLR *R1+ 04F1 : AEC2 C R1,R10 8281 : AEC4 JNE XAEC2 16FD : AEC6 AI R1,>FEFC 0221 FEFC : AEC8 RT 045B : AECC MOV R11,@>AF88 C80B AF88 : AECE CLR @>AF86 04E0 AF86 : AED2 MOV @>A000,R12 C320 A000 : AED6 SBO 0 1D00 : AEDA SBO 1 1D01 : AEDC CLR *R2+ 04F2 : AEDE CLR *R2+ 04F2 : AEE0 XAEE2 LI R3,>AC90 0203 AC90 : AEE2 LI R4,>5FF2 0204 5FF2 : AEE6 LI R5,>0004 0205 0004 : AEEA MOV *R4,*R3 C4D4 : AEEE XAEF0 SBO 3 1D03 : AEF0 MOVB *R4,*R3+ DCD4 : AEF2 SBZ 3 1E03 : AEF4 MOVB *R4,*R3+ DCD4 : AEF6 INCT R4 05C4 : AEF8 DEC R5 0605 : AEFA JNE XAEF0 16F9 : AEFC SBO 3 1D03 : AEFE MOV *R4+,*R3 C4F4 : AF00 SWPB *R3 06D3 : AF02 SBZ 3 1E03 : AF04 MOVB *R4,*R3 D4D4 : AF06 LI R3,>AC90 0203 AC90 : AF08 XAF0C CB *R3+,@>A722 9833 A722 : AF0C JEQ XAF78 1333 : AF10 CI R3,>AC9A 0283 AC9A : AF12 JNE XAF0C 16FA : AF16 AI R2,>FFFC 0222 FFFC : AF18 MOV R11,R3 C0CB : AF1C BL @>AF62 06A0 AF62 : AF1E SLA R3,5 0A53 : AF22 MOV R3,*R2 C483 : AF24 MOV R10,R3 C0CA : AF26 BL @>AF62 06A0 AF62 : AF28 A R3,*R2 A483 : AF2C MOV @>5FEE,R3 C0E0 5FEE : AF2E BL @>AF62 06A0 AF62 : AF32 SLA R3,9 0A93 : AF36 A R3,*R2+ AC83 : AF38 MOV R9,R3 C0C9 : AF3A BL @>AF62 06A0 AF62 : AF3C SLA R3,11 0AB3 : AF40 MOV R3,*R2 C483 : AF42 MOV R8,R3 C0C8 : AF44 BL @>AF62 06A0 AF62 : AF46 SLA R3,5 0A53 : AF4A A R3,*R2 A483 : AF4C MOV R7,R3 C0C7 : AF4E BL @>AF62 06A0 AF62 : AF50 SRL R3,1 0913 : AF54 A R3,*R2+ AC83 : AF56 XAF58 SBZ 0 1E00 : AF58 SBZ 1 1E01 : AF5A MOV @>AF88,R11 C2E0 AF88 : AF5C RT 045B : AF60 MOV R3,R4 C103 : AF62 SRL R4,8 0984 : AF64 ANDI R4,>000F 0244 000F : AF66 LI R5,>000A 0205 000A : AF6A MPY R4,R5 3944 : AF6E ANDI R3,>000F 0243 000F : AF70 A R6,R3 A0C6 : AF74 RT 045B : AF76 XAF78 MOV @>AF86,@>AF86 C820 AF86 AF86 : AF78 JNE XAF58 16EC : AF7E SETO @>AF86 0720 AF86 : AF80 JMP XAEE2 10AE : AF84 DATA >0000 DATA >0000 DATA >0000 END Myarc.hfe 2 Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted February 17, 2018 Share Posted February 17, 2018 (edited) I found this file in my archives. Perhaps it will help you in your endeavor. As for the format and encoding, the last time I looked into this was the year someone stole my floppy disk backup of John Birdwell's hard drive from my table at one of the Faires. If I recall correctly, the files are copied to/from the disk in 256 byte chunks (i.e., a sector) for program files and by record length for any other file. No compression. I don't recall if the folders and directories are stored on the first disk or contained as part of the copied FDR information. I no longer remember whether or not the HFDC backup/restore routines use the same format as the WD1000; considering how code was re-used between the two cards, it is possible you'll find more clues in the Myarc Disk Manager 5 source code. wds1000-sources.zip Edited February 17, 2018 by InsaneMultitasker 4 Quote Link to comment Share on other sites More sharing options...
+OLD CS1 Posted February 17, 2018 Share Posted February 17, 2018 someone stole my floppy disk backup of John Birdwell's hard drive from my table at one of the Faires. Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted February 18, 2018 Share Posted February 18, 2018 yeah i have the source too.. if that doesn't work Greg 1 Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted February 18, 2018 Share Posted February 18, 2018 yeah i have the source too.. if that doesn't work Is it the full source? The files I uploaded are incomplete. Quote Link to comment Share on other sites More sharing options...
+arcadeshopper Posted February 18, 2018 Share Posted February 18, 2018 here is one version of the tools _WDS100-DSKs.zip 1 Quote Link to comment Share on other sites More sharing options...
+acadiel Posted February 18, 2018 Author Share Posted February 18, 2018 The Personality Card was Myarc's first hard drive controller. They wrote a whole bunch of XB and Assembly routines to do disk management for it. Some of the DSR calls and what directories or certain files are different between their second controller, the Myarc HFDC. A "Create directory" call by the Myarc Disk Manager for the Personality Card does not work on a HFDC, for example. The Personality Card Disk Manager does not recognize a file created by the HDFC MDM5 - it thinks it's a directory if it's in the root. So, there are differences between the two DSRs and/or disk managers. These differences probably also extend to the backup/restore routines between the two cards. The MDM5 restore routine doesn't work on the Personality Card Disk Manager's backups. Shown below is a hex dump via TIMT of what a backup file looks like (1278 sectors on each disk, DIS/FIX 255). As Tim said, it might just be a header on the backup file, sector information dumps afterward, and then the actual file. The second and following disks immediately begins where the first cut off (there's no header - it goes straight into data). Michael Zapf has the files in question to take a look at them. In the below case: >00->2F or >00->27 - Backup header >28->5F or >30->5F - Directory Block >60->F0 or >68-F0 - File Descriptor >F1 or >F2 - Start of File That's just a rough guess. I need to let you gurus take a crack at this. Maybe the above source code will help. 1 Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted February 19, 2018 Share Posted February 19, 2018 (edited) From the screen capture above it seems that the backup file is laid out with path.filename entries containing 40 characters (the myarc winchester standard) and 8 bytes for a date/time stamp. I would guess each disk will start with the volume name entry then continue with directory/file entries as needed. Inspecting two images should tell you what to expect. Edit: I just noticed that you reviewed the subsequent images; the DF255 filename is probably used to ensure the proper sequence. The three entries seem to be: 1. The volume (ie, hard drive name) + date/time 2. The current directory + date/time 3. The current filename (with full path) + date/time + 8 byte for the Additional Info block (used by level 2 IO to define the file type, attributes, record len, total records). DF255 indicates that only 255 bytes are stored in each record/sector. (Note the last byte is e5 in this image) The restore routine will need to read and parse and concatonate the data, but in general this is a pretty simple structure. Edited February 19, 2018 by InsaneMultitasker Quote Link to comment Share on other sites More sharing options...
+acadiel Posted February 19, 2018 Author Share Posted February 19, 2018 From the screen capture above it seems that the backup file is laid out with path.filename entries containing 40 characters (the myarc winchester standard) and 8 bytes for a date/time stamp. I would guess each disk will start with the volume name entry then continue with directory/file entries as needed. Inspecting two images should tell you what to expect. Edit: I just noticed that you reviewed the subsequent images; the DF255 filename is probably used to ensure the proper sequence. The three entries seem to be: 1. The volume (ie, hard drive name) + date/time 2. The current directory + date/time 3. The current filename (with full path) + date/time + 8 byte for the Additional Info block (used by level 2 IO to define the file type, attributes, record len, total records). DF255 indicates that only 255 bytes are stored in each record/sector. (Note the last byte is e5 in this image) The restore routine will need to read and parse and concatonate the data, but in general this is a pretty simple structure. Awesome, thanks! I figured we'd be able to decipher this. Michael Zapf or Fred Kaal should be able to help with this with their respective image tools. I've reached out to both. Edit: Can you tell what the date/time the backup was made by looking at those eight byte? Quote Link to comment Share on other sites More sharing options...
+InsaneMultitasker Posted February 19, 2018 Share Posted February 19, 2018 I plugged the date/time stamp values into an existing file on one of my images. 1995/14/26 (yy/mm/dd) is what came back out. The time was 28:28:26. I decompressed the bytes by hand and got the same values for the date/time. Maybe it is computed slightly differently than the information I have here. I think the directory and file entries are laid out like this: directory: <directory path.filename 40 bytes><"DIR " text 4 bytes><creation date/time 4 bytes><8 bytes, additional info flags?> file: <directory path.filename 40 bytes><creation date 4 bytes><modified date 4 bytes><additional info flags 8 bytes> Quote Link to comment Share on other sites More sharing options...
+acadiel Posted February 19, 2018 Author Share Posted February 19, 2018 I plugged the date/time stamp values into an existing file on one of my images. 1995/14/26 (yy/mm/dd) is what came back out. The time was 28:28:26. I decompressed the bytes by hand and got the same values for the date/time. Maybe it is computed slightly differently than the information I have here. I think the directory and file entries are laid out like this: directory: <directory path.filename 40 bytes><"DIR " text 4 bytes><creation date/time 4 bytes><8 bytes, additional info flags?> file: <directory path.filename 40 bytes><creation date 4 bytes><modified date 4 bytes><additional info flags 8 bytes> I tried punching that into MDM5. It didn't like the invalid date format. I wonder if MDM5's restore would work if we figured out the date/time syntax that it likes maybe? Wonder what would happen if you make a 01/01/90 hash for me and I can maybe edit the master 4 byte date header it's looking for. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.