Listing of file='UTIL.MAC;03' on disk='vmedia/asm_utility_routines-sideA-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; UTILITY ROUTINES ; ; ; DELAY - TIME DELAY ROUTINE ; ; SIMPLE TIMING LOOP. ; ENTRY DELAY ; ; VALUES ON ENTRY: ; A = NUMBER OF LOOPS - 100 ITERATIONS PER LOOP ; ; DESTROYS: ; NOTHING ; DELAY: PUSH B ;SAVE REGISTER MOV C,A DEL1: MVI B,100 ;DO INNER LOOP 100 TIMES DEL2: DCR B JNZ DEL2 DCR C JNZ DEL1 ;OUTER LOOP POP B RET ;.............................................................. ; ; RANDOM - RANDOM NUMBER GENERATOR ; ; THE RANDOM NUMBER SEED IS PUBLIC TO ALLOW ; EXTERNAL INITIALISATION. ; ENTRY RANDOM PUBLIC RANPTR ;SEED FOR RANDOM NUMBERS ; ; VALUES ON ENTRY: ; A = RANGE OF NUMBERS ; ; RETURNS: ; A REG CONTAINS THE RESULTING NUMBER ; ; DESTROYS: ; ONLY A REG ; RANDOM: PUSH B PUSH H MOV B,A ;MAX VALUE FOR RANDOM NUMBER RAND1: LHLD RANPTR ;LAST RANDOM SEED MVI C,8 RAND2: MOV A,H ;XOR BITS 3,12,14,15 RRC XRA H RRC RRC XRA H RRC XRA L RRC RRC RRC XRI 1 ANI 1 DAD H ADD L MOV L,A DCR C JNZ RAND2 SHLD RANPTR ;SAVE SEED MOV A,H ADD L MOV H,A ;SAVE GENERATOR MOV A,B ;LIMIT RAND3: MOV L,A ;SAVE LIMIT ADD B CMP B JNC RAND3 MOV A,H CMP L ;GREATER THAN LIMIT? JNC RAND1 ;YES, GENERATE ANOTHER ONE RAND4: CMP B JC RAND5 SUB B JMP RAND4 RAND5: POP H POP B RET RANPTR: DS 2 END