LS-DOS 6.3.1 - LBDUMP Assembly Listing (HTML format version)

[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]

Valid HTML 4.01!