[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]
MISOSYS EDAS-4.3 04/19/99 21:25:07 DATECONV - LS-DOS 6.3 Page 00001 00001 ;DATECONV/ASM - 6.3 Date Conversion Program 00003 ; 01/14/86 - Add set 63h version # at gat+CB when done 00004 ; 000A 00005 LF EQU 10 000D 00006 CR EQU 13 4296 00007 BLNKMPW EQU 4296H 00008 ; 0000 00009 *GET SVCMAC:3 ;SVC Macro equivalents 00010 ;SVCMAC/ASM - LS-DOS Version VI 00011 *LIST OFF 00403 *LIST ON 0000 00405 *GET COPYCOM:3 ;Copyright message 00406 ; COPYCOM - File for Copyright COMment block 00407 ; 0000 00408 *GET BUILDVER/ASM:3 00409 ; 00410 ; Buildver/asm is a bit of a kludge since not all utilities can load 00411 ; equates from LDOS60 and still compile. LOWCORE and everybody else 00412 ; relies on this setting, and it eventually ends up in LDOS60/EQU 00413 ; for programs that can use that. 00414 ; FFFF 00415 @BLD631 EQU -1 ;<631>Build 631 distribution (LEVEL 1B) 00416 ; These switches activate patches made since the 1B release. 00417 ; It is important that all earlier patches be enabled when a higher 00418 ; patch is enabled. 00419 ; Patches C thru F were published in TMQ IV.iv, page 32 (NOTE: the 00420 ; patch addresses listed for SPOOL in SPOOL1/FIX are 19H high.) FFFF 00421 @BLD631C EQU -1 ;<631>Apply 1C patches (SETKI) FFFF 00422 @BLD631D EQU -1 ;<631>Apply 1D patches (DIR) FFFF 00423 @BLD631E EQU -1 ;<631>Apply 1E patches (DIR & MEMDISK/DCT) FFFF 00424 @BLD631F EQU -1 ;<631>Apply 1F patches (SPOOL) 00425 ; Patches G and H were published in TMQ V.i, pages 10 and 18/19. FFFF 00426 @BLD631G EQU -1 ;<631>Apply 1G patches (//KEYIN,DIR,DO *) FFFF 00427 @BLD631H EQU -1 ;<631>Apply 1H patches (MEMORY) 00428 ; 00429 ;End of BUILDVER/ASM 00430 IF @BLD631 00432 ELSE 00433 COM '<*(C) 1982,3,4,6 by LSI*>' 00434 ENDIF 00435 ; 2600 00436 ORG 2600H 00437 BEGIN 00438 IF @BLD631 2600 ED731926 00439 LD (STACK),SP ;<631>Save entry stack 2604 00440 @@CKBRKC ;<631>Check for break 2604+3E6A 00441 LD A,106 2606+EF 00442 RST 40 2607 C26527 00443 JP NZ,ABORT ;<631>abort 00444 ELSE 00445 @@CKBRKC ;Check for break 00446 JR Z,BEGINA ;Continue if not 00447 LD HL,-1 ; else abort 00448 RET 00449 ; 00450 BEGINA 00451 LD (STACK),SP ;Save entry stack 00452 ENDIF 260A E5 00453 PUSH HL ;Save ptr to cmdline 260B 217027 00454 LD HL,HELLO$ ;Display the signon 260E CD2227 00455 CALL $DSPLY 2611 E1 00456 POP HL 2612 CD1F26 00457 CALL PGRM ;Normal exit is via RET 00458 ; 00459 ; Set exit condition.. 00460 ; 2615 210000 00461 $EXIT LD HL,0 ;Init for no error 2618 310000 00462 QUIT$ LD SP,$-$ ;P/u original stack 2619 00463 STACK EQU $-2 261B 00464 @@CKBRKC ;Clear break before exit 261B+3E6A 00465 LD A,106 261D+EF 00466 RST 40 261E C9 00467 RET 00468 ; 261F 7E 00469 PGRM LD A,(HL) ;Ck for drive entered 2620 FE20 00470 CP ' ' ;Bypass leading spaces 2622 23 00471 INC HL 2623 28FA 00472 JR Z,PGRM 2625 FE3A 00473 CP ':' ;Colon indicator? 2627 C26B27 00474 JP NZ,ILLEG ;Quit if not 262A 7E 00475 LD A,(HL) ;P/u drive 262B D630 00476 SUB '0' ;Cvrt to binary 262D DA6B27 00477 JP C,ILLEG ;Bad drive # 2630 FE08 00478 CP 8 ;Bigger than 7? 2632 D26B27 00479 JP NC,ILLEG ;Quit if so 00480 ; 2635 322C27 00481 LD (DRIVE1),A 2638 323E27 00482 LD (DRIVE2),A ;Save for read and write 263B 23 00483 DOPRM: INC HL ;See if any params 263C 7E 00484 LD A,(HL) 263D FE0E 00485 CP CR+1 ;End? 263F 3811 00486 JR C,NOPRM ;Go if so 2641 FE20 00487 CP ' ' ;Space? 2643 28F6 00488 JR Z,DOPRM ;Bypass 2645 FE28 00489 CP '(' 2647 20F2 00490 JR NZ,DOPRM 2649 117D28 00491 LD DE,PRMTBL 264C 00492 @@PARAM 264C+3E11 00493 LD A,17 264E+EF 00494 RST 40 264F C24627 00495 JP NZ,IOERR 2652 3A2C27 00496 NOPRM: LD A,(DRIVE1) ;Get back drive 2655 4F 00497 LD C,A 2656 00498 @@CKDRV ;Be sure disk is in 2656+3E21 00499 LD A,33 2658+EF 00500 RST 40 2659 C26B27 00501 JP NZ,ILLEG 265C DA5B27 00502 JP C,WPDRV 265F 00503 @@GTDCT 265F+3E51 00504 LD A,81 2661+EF 00505 RST 40 00506 ; 2662 FD7E09 00507 LD A,(IY+9) ;Get dir cyl 2665 329526 00508 LD (DIR1),A 2668 57 00509 LD D,A ;Set to read GAT 2669 1E00 00510 LD E,0 266B CD3A27 00511 CALL RDSEC ;Read the GAT 266E 110000 00512 LD DE,$-$ ;See if force all 266F 00513 CSPARM EQU $-2 2671 7A 00514 LD A,D 2672 B3 00515 OR E 2673 201F 00516 JR NZ,DOIT ;Go if it is 2675 3ACD29 00517 LD A,(BUF1+0CDH) ;Get the type byte 2678 CB5F 00518 BIT 3,A ;Have some new already? 267A CA8226 00519 JP Z,DOOLD ;Go if not 267D 32C726 00520 LD (HAVNEW),A ;Else set new on 2680 1812 00521 JR DOIT ; and start 2682 CB7F 00522 DOOLD BIT 7,A ;Is it a system disk? 2684 200E 00523 JR NZ,DOIT ;Start if not 2686 110200 00524 LD DE,2 ;If sys disk, 2689 CD3A27 00525 CALL RDSEC ; must check version 268C 7E 00526 LD A,(HL) 268D FE63 00527 CP 63H ;Cannot be earlier 268F 2803 00528 JR Z,DOIT ;Go if 6.3 or later 2691 C35727 00529 JP NOT2SYS ; else abort 00530 ; 00531 ; Get directory records 00532 ; 2694 1600 00533 DOIT LD D,$-$ 2695 00534 DIR1 EQU $-1 2696 1E03 00535 LD E,3 ;Read directory 2698 CD3A27 00536 CALL RDSEC 269B 3A1429 00537 LD A,(BUF1+20) ;Get the ERN of DIR 269E D601 00538 SUB 1 26A0 FE21 00539 CP 33 ;Max allowed is 34 total 26A2 3802 00540 JR C,SET1 ;Go if ok 26A4 3E21 00541 LD A,33 ; else set max sectors number 26A6 32F826 00542 SET1 LD (MAXSEC),A ;Save for countdown 00543 ; 00544 ; Main driving loop 00545 ; 26A9 1E02 00546 LD E,2 ;Starting directory record 26AB CD3A27 00547 DIRLOOP CALL RDSEC 26AE E5 00548 DIRLP1 PUSH HL 26AF CB7E 00549 BIT 7,(HL) ;FXDE? 26B1 C2E626 00550 JP NZ,DONXT ;Go if so 26B4 CB66 00551 BIT 4,(HL) ;Alive? 26B6 CAE626 00552 JP Z,DONXT ;Go if not 26B9 2C 00553 INC L 26BA 2C 00554 INC L 26BB 7E 00555 LD A,(HL) ;Get the date 26BC B7 00556 OR A ;Was one set? 26BD 2827 00557 JR Z,DONXT ;Go if not 26BF E607 00558 AND 7 ;Save possible year 26C1 4F 00559 LD C,A ; in C 26C2 7D 00560 LD A,L ;Pt to date/time or pswd 26C3 C610 00561 ADD A,16 ; as the case may be 26C5 6F 00562 LD L,A 26C6 3E00 00563 LD A,$-$ ;Are there new files? 26C7 00564 HAVNEW EQU $-1 26C8 B7 00565 OR A 26C9 2810 00566 JR Z,NONEW ;Go if not 26CB D5 00567 PUSH DE 26CC E5 00568 PUSH HL ;Save direc locn 26CD 119642 00569 LD DE,BLNKMPW ;See if this file has 26D0 7E 00570 LD A,(HL) 26D1 23 00571 INC HL 26D2 66 00572 LD H,(HL) 26D3 6F 00573 LD L,A ; a blank password 26D4 B7 00574 OR A 26D5 ED52 00575 SBC HL,DE 26D7 E1 00576 POP HL 26D8 D1 00577 POP DE 26D9 200B 00578 JR NZ,DONXT ;Go if not 00579 ; 00580 ; Do this file 00581 ; 26DB 3600 00582 NONEW LD (HL),0 ;Xfer hours,mins 26DD 23 00583 INC HL 26DE 71 00584 LD (HL),C ;Xfer mins,year 26DF 2A8828 00585 LD HL,(CNT) 26E2 23 00586 INC HL 26E3 228828 00587 LD (CNT),HL ;Inc count of matches 00588 ; 26E6 00589 DONXT @@CKBRKC 26E6+3E6A 00590 LD A,106 26E8+EF 00591 RST 40 26E9 C25F27 00592 JP NZ,WASBRK ;Quit on break 26EC E1 00593 POP HL 26ED 7D 00594 LD A,L 26EE C620 00595 ADD A,20H 26F0 6F 00596 LD L,A 26F1 C2AE26 00597 JP NZ,DIRLP1 ;Go if more this sect 26F4 CD2827 00598 CALL WRSYS ;Write the dir sector 26F7 3E00 00599 LD A,$-$ 26F8 00600 MAXSEC EQU $-1 26F9 1C 00601 INC E ;Next sector 26FA BB 00602 CP E ;Are we done? 26FB D2AB26 00603 JP NC,DIRLOOP ;Cont if not 00604 ; 00605 ; Update GAT type byte 00606 ; 26FE 1E00 00607 LD E,0 2700 CD3A27 00608 CALL RDSEC 2703 3ACD29 00609 LD A,(BUF1+0CDH) ;Get the type byte 2706 F608 00610 OR 8 ;Set the bit 2708 32CD29 00611 LD (BUF1+0CDH),A ; put it back 00612 IF @BLD631 270B 3E63 00613 LD A,63H ;<631>Update version # in GAT 270D 32CB29 00614 LD (BUF1+0CBH),A ;<631> 2710 CD2827 00615 CALL WRSYS ;<631> 00616 ELSE 00617 CALL PATCH1 00618 ENDIF 00619 ; 00620 ; Show how many found 00621 ; 2713 2A8828 00622 LD HL,(CNT) ;Get count of changes 2716 11F727 00623 LD DE,CNTMSG$ 2719 D5 00624 PUSH DE 271A 00625 @@HEXDEC 271A+3E61 00626 LD A,97 271C+EF 00627 RST 40 271D E1 00628 POP HL 271E 00629 @@LOGOT 00630 IFEQ 00H,1 00631 LD HL, 00632 ENDIF 271E+3E0C 00633 LD A,12 2720+EF 00634 RST 40 2721 C9 00635 RET ;All done 00636 ; 00637 ; Support subroutines 00638 ; 2722 00639 $DSPLY @@DSPLY ;Display a line 00640 IFEQ 00H,1 00641 LD HL, 00642 ENDIF 2722+3E0A 00643 LD A,10 2724+EF 00644 RST 40 2725 C8 00645 RET Z 2726 181E 00646 JR IOERR 00647 ; 00648 ; Write the current sector 00649 ; 2728 210029 00650 WRSYS LD HL,BUF1 272B 0E00 00651 LD C,$-$ 272C 00652 DRIVE1 EQU $-1 272D 00653 @@WRSSC 272D+3E36 00654 LD A,54 272F+EF 00655 RST 40 2730 2014 00656 JR NZ,IOERR 2732 00657 @@VRSEC 2732+3E32 00658 LD A,50 2734+EF 00659 RST 40 2735 FE06 00660 CP 6 2737 200D 00661 JR NZ,IOERR 2739 C9 00662 RET 00663 ; 00664 ; 00665 ; Sector read routine 00666 ; 273A 210029 00667 RDSEC LD HL,BUF1 ;Read sector 273D 0E00 00668 LD C,$-$ 273E 00669 DRIVE2 EQU $-1 273F 00670 @@RDSEC 273F+3E31 00671 LD A,49 2741+EF 00672 RST 40 2742 C8 00673 RET Z 2743 FE06 00674 CP 6 2745 C8 00675 RET Z ;Fall thru to error? 00676 ; 00677 ; Error exits 00678 ; 2746 FE3F 00679 IOERR CP 63 ;Extended error? 2748 2818 00680 JR Z,EXTERR ;Log it and quit 274A 2600 00681 LD H,0 ;Error to HL 274C 6F 00682 LD L,A 274D E5 00683 PUSH HL ;Save error code 274E F6C0 00684 OR 0C0H ;Set short, return 2750 4F 00685 LD C,A ;Error to C for 2751 00686 @@ERROR ; display 2751+3E1A 00687 LD A,26 2753+EF 00688 RST 40 2754 E1 00689 POP HL ;Recover error code 2755 1811 00690 JR QUIT$$ 00691 ; 00692 ; Internal error handler 00693 ; 2757 213A28 00694 NOT2SYS LD HL,NOT2SYS$ ;"Can't do 6.2 sys disk 275A DD 00695 DB 0DDH 275B 216728 00696 WPDRV LD HL,WPDRV$ ;"Write protected drive 275E DD 00697 DB 0DDH 275F 212228 00698 WASBRK LD HL,ABTJOB$ 2762 00699 EXTERR @@LOGOT ;Display the error 00700 IFEQ 00H,1 00701 LD HL, 00702 ENDIF 2762+3E0C 00703 LD A,12 2764+EF 00704 RST 40 00705 IF @BLD631 00706 ABORT: 00707 ENDIF 2765 21FFFF 00708 LD HL,-1 ;Set abort code 2768 C31826 00709 QUIT$$ JP QUIT$ 00710 ; 276B 3E20 00711 ILLEG LD A,32 ;'illegal drv #' 276D C34627 00712 JP IOERR 00713 ; 00714 ; 00715 ; Messages 00716 ; 2770 44 00717 HELLO$ DB 'DATECONV' 41 54 45 43 4F 4E 56 2778 00718 *GET CLIENT:3 00719 ;CLIENT/ASM - File to establish sign-on headers 00720 ; and version numbers. 00721 ; 00722 ; EACH STRING SHOULD CONTAIN ONLY 63 CHARACTERS !! 00723 ; 00724 IF @BLD631 00725 ; 12345678901234567890123456789012345678901234567890 2778 20 00726 DB ' - 6.3.1 - Copyright 1982/83/84/86/90 by MISOSYS, ';<631> 2D 20 36 2E 33 2E 31 20 2D 20 43 6F 70 79 72 69 67 68 74 20 31 39 38 32 2F 38 33 2F 38 34 2F 38 36 2F 39 30 20 62 79 20 4D 49 53 4F 53 59 53 2C 20 27AA 49 00727 DB 'Inc., ',10 ;<631> 6E 63 2E 2C 20 20 20 20 20 20 20 0A 00728 ELSE 00729 DB ' - 6.3.0 - Copyright 1982/83/84/86 by Logical Syst' 00730 DB 'ems, Inc. ',10 00731 ENDIF 00732 ; 00733 ; DB 'All Rights Reserved. Licensed 1982/83/84 to Tandy ' 00734 ; DB 'Corporation.',10,13 00735 ; 00736 ; DB 'All Rights Reserved. Beta-TEST Level/AD, DO NOT DI' 00737 ; DB 'STRIBUTE !! ',10,13 00738 ; DB 'All Rights reserved by LSI, 8970 N. 55th St. Milwa' 00739 ; DB 'ukee, Wisc. ',10,13 27B7 41 00740 DB 'All Rights Reserved. Unauthorized duplication is p' 6C 6C 20 52 69 67 68 74 73 20 52 65 73 65 72 76 65 64 2E 20 55 6E 61 75 74 68 6F 72 69 7A 65 64 20 64 75 70 6C 69 63 61 74 69 6F 6E 20 69 73 20 70 27E9 72 00741 DB 'rohibited. ',10,13 6F 68 69 62 69 74 65 64 2E 20 20 0A 0D 00742 ; 27F7 20 00743 CNTMSG$ DB ' file(s) updated, conversion complete',CR 20 20 20 20 20 66 69 6C 65 28 73 29 20 75 70 64 61 74 65 64 2C 20 63 6F 6E 76 65 72 73 69 6F 6E 20 63 6F 6D 70 6C 65 74 65 0D 2822 44 00744 ABTJOB$ DB 'Date conversion aborted',CR 61 74 65 20 63 6F 6E 76 65 72 73 69 6F 6E 20 61 62 6F 72 74 65 64 0D 283A 43 00745 NOT2SYS$ DB 'Can''t convert dates on a non-6.3 ' 61 6E 27 74 20 63 6F 6E 76 65 72 74 20 64 61 74 65 73 20 6F 6E 20 61 20 6E 6F 6E 2D 36 2E 33 20 285B 53 00746 DB 'SYSTEM disk',CR 59 53 54 45 4D 20 64 69 73 6B 0D 2867 57 00747 WPDRV$ DB 'Write protected drive',CR 72 69 74 65 20 70 72 6F 74 65 63 74 65 64 20 64 72 69 76 65 0D 00748 ; 287D 80 00749 PRMTBL DB 80H 287E 42 00750 DB 42H 287F 43 00751 DB 'CS' 53 2881 00 00752 DB 0 2882 6F26 00753 DW CSPARM 2884 0000 00754 DW 0 2886 00 00755 MINS DB 0 2887 00 00756 HOURS DB 0 2888 0000 00757 CNT DW 0 00758 ; 2900 00759 ORG $<-8+1<+8 2900 00760 BUF1 DS 256 00761 IF @BLD631 00762 ELSE 00763 PATCH1 LD A,63H ;Update version # in GAT 00764 LD (BUF1+0CBH),A 00765 JP WRSYS 00766 ENDIF 00767 ; 2600 00768 END BEGIN 2600 is the transfer address 00000 Total errors
[Copyright 1999,2002 Frank Durda IV, All Rights Reserved. Mirroring of any material on this page in any form is expressly prohibited. The official web site for this material is: http://nemesis.lonestar.org Contact this address for use clearances: clearance at nemesis.lonestar.org Comments and queries to this address: web_software_2011 at nemesis.lonestar.org]