This is a simple modification to xmodem 7.4 that allows the sysop to set the maximun file transmission time. (useful when an RCPM system has very large .LBR files and users who try to download the entire .LBR rather than its members) part 1 ------------------------------------------------------------------------ ; ;======================================================================= ; ; Incidental equates ; NOCOMS: EQU TRUE ;TRUE, NO .COM FILES SENT NOLBS: EQU TRUE ;TRUE, NO .??# FILES SENT NOCOMR: EQU TRUE ;TRUE, CHANGE .COM TO .OBJ ON RECEIVE ;---> maxmin: equ 50 ;maximum transmission time allowed ;set to 0 if not wanted ;---> ; MHZ: EQU 6 ;CLOCK SPEED, USE INTEGER (2,4,5,8, ETC.) ------------------------------------------------------------------------------- - - part 2 ------------------------------------------------------------------------ OPENOK4: CALL DECOUT ;PRINT DECIMAL NUMBER OF RECORDS CALL ILPRT ; IF SHOWHEX ;IF TRUE SHOWS BOTH DECIMAL AND HEX DB ' (',0 CALL DHXOUT CALL ILPRT DB 'H)' ENDIF ; DB ' records',CR,LF DB 'Send time: ',0 CALL SPEED ;GET SPEED INDICATOR LXI D,0 MOV E,A ;SET UP FOR TABLE ACCESS LXI H,BTABLE ;POINT TO BAUD FACTOR TABLE DAD D ;INDEX TO PROPER FACTOR MOV A,M ;FACTOR IN 'A' LHLD RCNT ;GET NUMBER OF RECORDS CALL DIVHLA ;DIVIDE HL BY VALUE IN A (RECORDS/MIN) PUSH H ; IF LOGCAL SHLD PGSIZE ENDIF ; MVI H,0 ;---> if maxmin mov a,l sta minute endif ;maxmin ;---> CALL DECOUT ;PRINT DECIMAL NUMBER OF MINUTES CALL ILPRT DB ' mins, ',0 LXI H,RECTBL ;POINT TO DIVISORS FOR SECONDS CALC. LXI D,0 CALL SPEED ;GET SPEED INDICATOR MOV E,A DAD D ;INDEX INTO TABLE MOV A,M ;GET MULTIPLIER POP H ;GET REMAINDER CALL MULHA ;MULTIPLY 'H' BY 'A' CALL SHFTHL CALL SHFTHL CALL SHFTHL CALL SHFTHL MVI H,0 CALL DECOUT ;PRINT THE SECONDS PORTION CALL ILPRT DB ' secs at ',0 LXI H,SPTBL ;START OF BAUD RATE SPEEDS MVI D,0 ;ZERO THE 'D' REGISTER CALL SPEED ;GET SPEED INDICATOR ADD A ;INDEX INTO THE BAUD RATE TABLE ADD A MOV E,A ;NOW HAVE THE INDEX FACTOR IN 'DE' DAD D ;ADD TO 'HL' XCHG ;PUT ADDRESS IN 'DE' REGS. MVI C,PRINT ;SHOW THE BAUD CALL BDOS CALL ILPRT DB ' baud',CR,LF,0 ; ;---> if maxmin lda minute ; get minute counter cpi maxmin ; compare to max time jz openok5 ; if equal to max jnc overtm ; if exceeded max openok5: ;---> endif ;maxmin CALL ILPRT DB 'To cancel: use CTL-X',CR,LF,0 RET ; ;---> if maxmin overtm: call erxit db '++ Send time exceeds maximum allowed ++',13,10 db '++ XMODEM ABORTED ++',13,10,'$' ;---> endif ;maxmin ------------------------------------------------------------------------------- - - part 3 ------------------------------------------------------------------------ ; ; Temporary storage area ; ;---> minute: db 0 ;---> MEMFCB: DB ' ' ;LIBRARY NAME (16 BYTES REQUIRED) CONONL: DB 0 ;CTYPE CONSOLE-ONLY FLAG CRCFLG: DB 0 ;SETS TO 'C' IF CHECKSUM REQUESTED CRCVAL: DB 0,0 ;CURRENT CRC VALUE -------------------------------------------------------------------------------