[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 01:03:43 DUMP - LS-DOS 6.2 Page 00001
00001 ;LBDUMP/ASM - DUMP Command
00003 ;
0000 00004 *GET SVCMAC:3 ;SVC Macro equivalents
00005 ;SVCMAC/ASM - LS-DOS Version VI
00006 *LIST OFF
00398 *LIST ON
00400 ;
000D 00401 CR EQU 13
002C 00402 PAR_ERR EQU 44 ;"Parameter Error" #
3000 00403 SINIT EQU 3000H
3000 00404 EINIT EQU SINIT
00405 ;
2400 00406 ORG 2400H
00407 ;
2400 00408 DUMP @@CKBRKC ;Break key down?
2400+3E6A 00409 LD A,106
2402+EF 00410 RST 40
2403 2804 00411 JR Z,BEGINA ;Ok if not
2405 21FFFF 00412 LD HL,-1 ; else abort
2408 C9 00413 RET
00414 ;
2409 111C26 00415 BEGINA LD DE,FCB1 ;Fetch the filespec
240C 00416 @@FSPEC
240C+3E4E 00417 LD A,78
240E+EF 00418 RST 40
240F C26E25 00419 JP NZ,SPCREQ ;Jump on error
2412 1A 00420 LD A,(DE) ;Cannot be a device
2413 FE2A 00421 CP '*'
2415 CA6E25 00422 JP Z,SPCREQ ;Quit if device
2418 00423 @@FLAGS ;Get system flag table
2418+3E65 00424 LD A,101
241A+EF 00425 RST 40
241B E5 00426 PUSH HL ;Save cmdline ptr
241C FD661A 00427 LD H,(IY+26) ;P/u SVC table MSB
241F 2E2C 00428 LD L,22*2 ; & point to @EXIT entry
2421 7E 00429 LD A,(HL) ;Get @EXIT LSB
2422 2C 00430 INC L
2423 66 00431 LD H,(HL) ;Get @EXIT MSB
2424 6F 00432 LD L,A
2425 224025 00433 LD (TPARM+1),HL ;Init transfer to @EXIT
2428 E1 00434 POP HL
00435 ;
00436 ; Search for parameters
00437 ;
2429 11BD25 00438 LD DE,PRMTBL$ ;Get the parms
242C 00439 @@PARAM
242C+3E11 00440 LD A,17
242E+EF 00441 RST 40
242F C25A25 00442 JP NZ,PRMERR ;Jump on parm error
2432 2AE024 00443 LD HL,(EPARM+1) ;Ck on end > start
2435 ED4BDA24 00444 LD BC,(SPARM+1)
2439 AF 00445 XOR A
243A ED42 00446 SBC HL,BC
243C DA6A25 00447 JP C,ENLTST ;Jump on start < end
MISOSYS EDAS-4.3 04/19/99 01:03:43 DUMP - LS-DOS 6.2 Page 00002
243F 210030 00448 LD HL,SINIT ;Pt to lowest possible
2442 2B 00449 DEC HL ;Reduce for compare
2443 ED42 00450 SBC HL,BC ;Ck on start > minimum
2445 D26625 00451 JP NC,STLT30 ;Jump if start < minimum
2448 010000 00452 APARM LD BC,0 ;ASCII txt or code cim
244B 78 00453 LD A,B
244C B1 00454 OR C
244D 202B 00455 JR NZ,DUMPTXT ;Go if ASCII
244F 111626 00456 LD DE,NAMFLD ;Get up to a 6-character
2452 211C26 00457 LD HL,FCB1 ;Filename to stuff
2455 0606 00458 LD B,6 ;As file header
2457 7E 00459 $?1 LD A,(HL)
2458 FE30 00460 CP '0' ;Stop on non-alpha
245A 3813 00461 JR C,$?3
245C FE3A 00462 CP '9'+1 ;Use if 0-9
245E 3808 00463 JR C,$?2
2460 FE41 00464 CP 'A' ;Ck on A-Z
2462 380B 00465 JR C,$?3
2464 FE5B 00466 CP 'Z'+1
2466 3007 00467 JR NC,$?3 ;Exit if not A-Z
2468 12 00468 $?2 LD (DE),A ;Xfer this char
2469 23 00469 INC HL ;Bump input ptr
246A 13 00470 INC DE ; & output pointer
246B 10EA 00471 DJNZ $?1 ;Loop 6-chars max
246D 1806 00472 JR $?4
246F 3E20 00473 $?3 LD A,' ' ;Place blanks to
2471 12 00474 LD (DE),A ;Fill out to 6 chars
2472 13 00475 INC DE
2473 10FA 00476 DJNZ $?3
2475 21B725 00477 $?4 LD HL,LMFEXT ;Use /LMF extension
2478 1803 00478 JR DUMPCIM
247A 21BA25 00479 DUMPTXT LD HL,TXTEXT ;Use /TXT extension
247D 111C26 00480 DUMPCIM LD DE,FCB1 ;Default the EXT
2480 00481 @@FEXT
2480+3E4F 00482 LD A,79
2482+EF 00483 RST 40
2483 010000 00484 LPARM LD BC,0 ;P/u LRL
2486 78 00485 LD A,B ;Test for > 256
2487 B7 00486 OR A ;If hi-order = 0,
2488 2808 00487 JR Z,LP1 ;Just use lo-order
248A 3D 00488 DEC A ;Test hi-order = 1
248B C25A25 00489 JP NZ,PRMERR
248E B1 00490 OR C ;P/u lo-order
248F C25A25 00491 JP NZ,PRMERR ;Lo-order must be 0
2492 B1 00492 LP1 OR C ;Merge lo-order
2493 47 00493 LD B,A
2494 210027 00494 LD HL,BUFFER ;Pt to buffer
2497 00495 @@INIT ;Init the file
2497+3E3A 00496 LD A,58
2499+EF 00497 RST 40
249A C25C25 00498 JP NZ,IOERR ;Quit on init error
00499 ;
00500 ; Display the filespec being dumped
00501 ;
MISOSYS EDAS-4.3 04/19/99 01:03:43 DUMP - LS-DOS 6.2 Page 00003
249D ED4B2226 00502 LD BC,(FCB1+6) ;P/u DEC & drive
24A1 11F625 00503 LD DE,FCB2 ;Point to FCB area
24A4 D5 00504 PUSH DE
24A5 00505 @@FNAME ;Fetch the name
24A5+3E50 00506 LD A,80
24A7+EF 00507 RST 40
24A8 E1 00508 POP HL
24A9 C25C25 00509 JP NZ,IOERR ;Quit on error
24AC 3E20 00510 LD A,20H ;Scan until ETX char
24AE 23 00511 FNLP INC HL
24AF BE 00512 CP (HL)
24B0 38FC 00513 JR C,FNLP
24B2 360D 00514 LD (HL),CR ;Replace with CR
24B4 00515 @@LOGOT DUMP$ ;Display "Dumping...
00516 IFEQ 01H,1
24B4+21ED25 00517 LD HL,DUMP$
00518 ENDIF
24B7+3E0C 00519 LD A,12
24B9+EF 00520 RST 40
00521 ;
24BA 111C26 00522 LD DE,FCB1 ;Get dump FCB
24BD 3A4924 00523 LD A,(APARM+1) ;Ck if ASCII parm used
24C0 B7 00524 OR A
24C1 2016 00525 JR NZ,SPARM ; and go if so
24C3 3E05 00526 LD A,5 ;Name header
24C5 CD5325 00527 CALL PUTOUT
24C8 3E06 00528 LD A,6 ;Name length
24CA CD5325 00529 CALL PUTOUT
24CD 0606 00530 LD B,6 ;Init loop
24CF 211626 00531 LD HL,NAMFLD
24D2 7E 00532 $?5 LD A,(HL)
24D3 23 00533 INC HL
24D4 CD5325 00534 CALL PUTOUT ;Output the filename
24D7 10F9 00535 DJNZ $?5
00536 ;
24D9 210030 00537 SPARM LD HL,SINIT ;P/u starting addr
24DC E5 00538 $?7 PUSH HL ;Ck on write of
24DD 44 00539 LD B,H ; last byte written
24DE 4D 00540 LD C,L
24DF 21FF2F 00541 EPARM LD HL,EINIT-1 ;Where to end
24E2 23 00542 INC HL
24E3 AF 00543 XOR A
24E4 ED42 00544 SBC HL,BC
24E6 282E 00545 JR Z,$?10 ;Go if at end
24E8 06FE 00546 LD B,254 ;254-byte blocks
24EA 7C 00547 LD A,H ;A full sector left
24EB B7 00548 OR A ;To write?
24EC 2006 00549 JR NZ,$?8
24EE 7D 00550 LD A,L
24EF FEFF 00551 CP 0FFH
24F1 3001 00552 JR NC,$?8 ;If less than full,
24F3 45 00553 LD B,L ; reset len
24F4 E1 00554 $?8 POP HL
24F5 3A4924 00555 LD A,(APARM+1)
MISOSYS EDAS-4.3 04/19/99 01:03:43 DUMP - LS-DOS 6.2 Page 00004
24F8 B7 00556 OR A
24F9 2012 00557 JR NZ,$?9 ;Bypass if TXT
24FB 3C 00558 INC A ;Init start of block
24FC CD5325 00559 CALL PUTOUT
24FF 78 00560 LD A,B ;Get block length
2500 C602 00561 ADD A,2 ;Add 2 for load address
2502 CD5325 00562 CALL PUTOUT ; & put it out
2505 7D 00563 LD A,L
2506 CD5325 00564 CALL PUTOUT ;Lo-order load address
2509 7C 00565 LD A,H
250A CD5325 00566 CALL PUTOUT ;Hi-order load address
250D 7E 00567 $?9 LD A,(HL) ;Write a load block
250E 23 00568 INC HL
250F CD5325 00569 CALL PUTOUT
2512 10F9 00570 DJNZ $?9
2514 18C6 00571 JR $?7 ;Loop for more
00572 ;
2516 E1 00573 $?10 POP HL ;Stack integrity
2517 3A4924 00574 LD A,(APARM+1) ;No TRAADR if TXT
251A B7 00575 OR A ; or TRAADR if not TXT
251B 2818 00576 JR Z,TRAADR
251D 010300 00577 ETXPARM LD BC,3 ;P/u etx character
2520 79 00578 LD A,C
2521 21E925 00579 LD HL,ETXRESP
2524 CB7E 00580 BIT 7,(HL) ;Value input means
2526 201F 00581 JR NZ,PUTETX ; put the ETX given
2528 0A 00582 LD A,(BC) ;In case string
2529 CB6E 00583 BIT 5,(HL) ;String input puts the
252B 201A 00584 JR NZ,PUTETX ; entered char
252D CB76 00585 BIT 6,(HL) ;Flag input gives ETX=3
252F 2819 00586 JR Z,CLSFIL ; if ETX=on
2531 3E03 00587 LD A,3
2533 1812 00588 JR PUTETX
2535 3E02 00589 TRAADR LD A,2 ;Put traadr header
2537 CD5325 00590 CALL PUTOUT
253A 3E02 00591 LD A,2
253C CD5325 00592 CALL PUTOUT
253F 210000 00593 TPARM LD HL,$-$ ;P/u transfer address
2542 7D 00594 LD A,L
2543 CD5325 00595 CALL PUTOUT ;Tra lo-order
2546 7C 00596 LD A,H
2547 CD5325 00597 PUTETX CALL PUTOUT ;Tra hi-order or ETX
254A 00598 CLSFIL @@CLOSE ;Close 'er up
254A+3E3C 00599 LD A,60
254C+EF 00600 RST 40
254D 210000 00601 LD HL,0
2550 C8 00602 RET Z ;Back on no error
2551 1809 00603 JR IOERR ;Go on error
00604 ;
2553 4F 00605 PUTOUT LD C,A ;Xfer the char
2554 00606 @@PUT ;Test each byte transfer
2554+3E04 00607 LD A,4
2556+EF 00608 RST 40
2557 C8 00609 RET Z ;Back if no error
MISOSYS EDAS-4.3 04/19/99 01:03:43 DUMP - LS-DOS 6.2 Page 00005
2558 E1 00610 POP HL ;Pop the RET addr
2559 21 00611 DB 21H ;Skip LD A,## instruction
255A 3E2C 00612 PRMERR LD A,PAR_ERR ;"Parameter Error"
255C 6F 00613 IOERR LD L,A ;Error code to HL
255D 2600 00614 LD H,0
255F F6C0 00615 OR 0C0H ;Abbrev & return
2561 4F 00616 LD C,A
2562 00617 @@ERROR ;Show the error
2562+3E1A 00618 LD A,26
2564+EF 00619 RST 40
2565 C9 00620 RET
00621 ;
00622 ; Internal error routine
00623 ;
2566 218C25 00624 STLT30 LD HL,STLT30$
2569 DD 00625 DB 0DDH
256A 217825 00626 ENLTST LD HL,ENLTST$
256D DD 00627 DB 0DDH
256E 21A425 00628 SPCREQ LD HL,SPCREQ$
2571 00629 @@LOGOT
00630 IFEQ 00H,1
00631 LD HL,
00632 ENDIF
2571+3E0C 00633 LD A,12
2573+EF 00634 RST 40
2574 21FFFF 00635 LD HL,-1
2577 C9 00636 RET
00637 ;
2578 53 00638 ENLTST$ DB 'START or END error ',CR
54 41 52 54 20 6F 72 20
45 4E 44 20 65 72 72 6F
72 20 0D
258C 53 00639 STLT30$ DB 'Start less than X''3000''',CR
74 61 72 74 20 6C 65 73
73 20 74 68 61 6E 20 58
27 33 30 30 30 27 0D
25A4 46 00640 SPCREQ$ DB 'File spec required',CR
69 6C 65 20 73 70 65 63
20 72 65 71 75 69 72 65
64 0D
25B7 4C 00641 LMFEXT DB 'LMF'
4D 46
25BA 54 00642 TXTEXT DB 'TXT'
58 54
00643 ;
0080 00644 VAL EQU 80H
0040 00645 SW EQU 40H
0020 00646 STR EQU 20H
0010 00647 SGL EQU 10H
00648 ;
25BD 80 00649 PRMTBL$ DB 80H
25BE 95 00650 DB VAL!SGL!5,'START',0
53 54 41 52 54 00
25C5 DA24 00651 DW SPARM+1
MISOSYS EDAS-4.3 04/19/99 01:03:43 DUMP - LS-DOS 6.2 Page 00006
25C7 93 00652 DB VAL!SGL!3,'END',0
45 4E 44 00
25CC E024 00653 DW EPARM+1
25CE 93 00654 DB VAL!SGL!3,'TRA',0
54 52 41 00
25D3 4025 00655 DW TPARM+1
25D5 55 00656 DB SW!SGL!5,'ASCII',0
41 53 43 49 49 00
25DC 4924 00657 DW APARM+1
25DE 93 00658 DB VAL!SGL!3,'LRL',0
4C 52 4C 00
25E3 8424 00659 DW LPARM+1
25E5 83 00660 DB VAL!3,'ETX',0
45 54 58 00
25E9 00661 ETXRESP EQU $-1
25EA 1E25 00662 DW ETXPARM+1
25EC 00 00663 NOP
00664 ;
25ED 44 00665 DUMP$ DB 'Dumping: ' ;FCB2 must follow
75 6D 70 69 6E 67 3A 20
25F6 00666 FCB2 DS 32
2616 00667 NAMFLD DS 6
261C 00668 FCB1 DS 32
2700 00669 ORG $<-8+1<+8
2700 00670 BUFFER DS 256
27FF 00671 LAST EQU $-1
00672 ;
2400 00673 END DUMP
2400 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]