REM MAGSAMRO 3.0 - MAGSAM FILE REORGANIZATION SUBROUTINE 
REM                    FOR CP/M AND CBASIC AND CB80
REM
REM CB80 VERSION - REAL RECORD NUMBERS ONLY DIFFERENCE
REM
REM PROPRIETARY SOFTWARE OF:
REM
REM    MICRO APPLICATIONS GROUP
REM    20201 SHERMAN WAY, SUITE 205
REM    CANOGA PARK, CA 91306
REM
REM (C) COPYRIGHT 1980-1982 MAG    ALL RIGHT RESERVED
REM 
%NOLIST
      MAGSAM.COPYRIGHT$="(C) COPYRIGHT 1980-1982 MICRO APPLICATIONS GROUP"
      MAGSAM.COPYRIGHT$=""
64000 MAGSAM(8)=0:MAGSAM(9)=0
64020 GOSUB 64100
      IF MAGSAM(8)<>0 THEN GOTO 64090
      GOSUB 64330
      IF MAGSAM(8)<>0 THEN GOTO 64090
      IF MAGSAM$(1)="RO" THEN GOSUB 64610:GOTO 64090
      MAGSAM(8)=41
64090 RETURN
64100 IF LEN(MAGSAM$(1))<>2 THEN GOTO 64210
      IF MAGSAM$(1)<>"RO" THEN GOTO 64210
      IF MAGSAM(1)<1OR MAGSAM(1)>20OR MAGSAM(2)<1OR MAGSAM(2)>20OR \
         MAGSAM(3)<1OR MAGSAM(3)>20OR MAGSAM(5)<1OR MAGSAM(5)>20OR \
         MAGSAM(6)<1OR MAGSAM(6)>20 THEN \
            GOTO 64210
      IF MAGSAM(7)>=0 AND MAGSAM(7)<=50 THEN GOTO 64220	
64210 MAGSAM(8)=41
64220 RETURN
64230 READ#MAGSAM(3),MAGSAM(0);MAGSAM$(12):RETURN
64330 IF END # MAGSAM(1) THEN 64360
      READ#MAGSAM(1),1;MAGSAM$(0),MAGSAM(10),MAGSAM(10),MAGSAM(10), \
         MAGSAM(11),MAGSAM(12),MAGSAM(19),MAGSAM(18)
      IF MAGSAM(4)<>MAGSAM(10) THEN GOTO 64360
      GOTO 64380
64360 MAGSAM(8)=41:GOTO 64390
64380 MAGSAM(13)=INT(249/(MAGSAM(4)+7))-1
64390 RETURN
64560 READ#MAGSAM(1),MAGSAM(17);MAGSAM$(12):RETURN
64610 MAGSAM(15)=(MAGSAM(13)-INT(MAGSAM(13)*MAGSAM(7)/100))* \
         (MAGSAM(4)+7)+1
      GOSUB 64820
      MAGSAM(16)=2:MAGSAM(17)=2:MAGSAM(19)=1:MAGSAM$(16)="I"
      MAGSAM$(12)="":MAGSAM(14)=3:MAGSAM$(13)=""
64650 IF MAGSAM(17)>MAGSAM(11)+1 THEN GOTO 64700
      IF MID$(MAGSAM$(12),MAGSAM(14)-1,1)="" THEN \
         GOSUB 64850:GOTO 64650
      IF MID$(MAGSAM$(12),MAGSAM(14)-1,1)="O" THEN \
         MAGSAM(0)=VAL(MID$(MAGSAM$(12),MAGSAM(14)+MAGSAM(4),6)): \
         GOSUB 64230:MAGSAM(14)=3:GOTO 64690
      IF MID$(MAGSAM$(12),MAGSAM(14),MAGSAM(4))=MAGSAM$(13) AND \
         MAGSAM$(16)="I" THEN \
            GOSUB 65100:GOTO 64690
      IF LEFT$(MAGSAM$(11),1)="O" THEN \
         GOSUB 65400	
      MAGSAM$(13)=MID$(MAGSAM$(12),MAGSAM(14),MAGSAM(4))
      MAGSAM$(16)=MAGSAM$(16)+MID$(MAGSAM$(12),MAGSAM(14)-1,MAGSAM(4)+7)
      MAGSAM(14)=MAGSAM(14)+MAGSAM(4)+7
      IF LEN(MAGSAM$(16))>=MAGSAM(15) THEN \
         GOSUB 64800:MAGSAM$(11)=MAGSAM$(16):MAGSAM$(16)="I": \
         MAGSAM(16)=MAGSAM(16)+1
64690 GOTO 64650
64700 IF LEN(MAGSAM$(16))>1 THEN GOSUB 64800:MAGSAM(16)=MAGSAM(16)+1
      MAGSAM(11)=MAGSAM(16)-1
      IF LEN(MAGSAM$(11))>1 AND LEFT$(MAGSAM$(11),1)="O" THEN GOSUB 65400
      IF MAGSAM(18)<>0 THEN GOSUB 64750	
      GOSUB 64820
      RETURN					
64750 MAGSAM(0)=MAGSAM(18):MAGSAM(18)=MAGSAM(19)
64760 GOSUB 64230
      IF LEN(MAGSAM$(12))<6 THEN GOTO 64780
      IF MID$(MAGSAM$(12),2,1)="N" THEN \
         MAGSAM(0)=VAL(MID$(MAGSAM$(12),3,6)): \
         GOTO 64760
      IF MID$(MAGSAM$(12),LEN(MAGSAM$(12))-6,1)="N" THEN \
         MAGSAM(0)=VAL(RIGHT$(MAGSAM$(12),6)): \
         MAGSAM$(16)=LEFT$(MAGSAM$(12),LEN(MAGSAM$(12))-6)+ \
            RIGHT$("000000"+STR$(MAGSAM(19)+1),6): \
         GOSUB 64810:MAGSAM(19)=MAGSAM(19)+1:GOTO 64760
64780 MAGSAM$(16)=MAGSAM$(12):GOSUB 64810:MAGSAM(19)=MAGSAM(19)+1
64790 RETURN
64800 PRINT#MAGSAM(5),MAGSAM(16);MAGSAM$(16):RETURN
64810 PRINT#MAGSAM(6),MAGSAM(19);MAGSAM$(16):RETURN
64820 PRINT#MAGSAM(5),1;"H",256,0,MAGSAM(4),MAGSAM(11), \
         MAGSAM(12),MAGSAM(19),MAGSAM(18),0,0,0
      RETURN
64850 IF MAGSAM(17)<=MAGSAM(11) THEN \
         GOSUB 64560:MAGSAM(14)=3
      MAGSAM(17)=MAGSAM(17)+1:RETURN
65100 MAGSAM$(16)=MAGSAM$(11)
      IF LEFT$(MAGSAM$(16),1)="O" THEN \
         GOSUB 65200 \
      ELSE \
         GOSUB 65300
      MAGSAM$(16)=MAGSAM$(16)+MID$(MAGSAM$(12),MAGSAM(14)-1,MAGSAM(4)+7)
      MAGSAM(14)=MAGSAM(14)+MAGSAM(4)+7
      MAGSAM$(11)=MAGSAM$(16):MAGSAM$(16)="I"
      RETURN
65200 IF LEN(MAGSAM$(16))>=MAGSAM(13)*(MAGSAM(4)+7)+1 THEN \
         MAGSAM$(15)=RIGHT$(MAGSAM$(16),MAGSAM(4)+7): \
         MAGSAM$(16)=LEFT$(MAGSAM$(16),LEN(MAGSAM$(16))-(MAGSAM(4)+7)) + \
            "O"+MAGSAM$(13)+RIGHT$("000000"+STR$(MAGSAM(19)+1),6): \
         GOSUB 64810:MAGSAM(19)=MAGSAM(19)+1: \
         MAGSAM$(16)="O"+MAGSAM$(15)
      RETURN
65300 MAGSAM$(15)=RIGHT$(MAGSAM$(16),MAGSAM(4)+7)
      MAGSAM$(16)=LEFT$(MAGSAM$(16),LEN(MAGSAM$(16))-(MAGSAM(4)+7)) + \
         "O"+MAGSAM$(13)+RIGHT$("000000"+STR$(MAGSAM(19)),6)
      MAGSAM(16)=MAGSAM(16)-1:GOSUB 64800:MAGSAM(16)=MAGSAM(16)+1
      MAGSAM$(16)="O"+MAGSAM$(15)
      RETURN
65400 MAGSAM$(16)=MAGSAM$(11):GOSUB 64810
      MAGSAM(19)=MAGSAM(19)+1
      MAGSAM$(11)="I":MAGSAM$(16)="I"
      RETURN
%LIST
