TIP: Click on subject to list as thread! ANSI
echo: power_bas
to: TIM HUTZLER
from: THOMAS GOHEL
date: 1997-01-15 00:00:00
subject: Re: reading strings

In article "reading strings" (on 13.01.97), Tim Hutzler@1:119/88 says:
Hello Tim !!
> SUB ReadString (str AS STRING)
>
> ASM LDS BX,str
> ASM MOV AX,[BX]
A little example for dynamic and fixed length strings.
From the XMAS package (Magic XMAS):
'*************************************************************************
'
'  OPEN95.BAS  ffnen von Dateien mit Long File Names mit PowerBASIC 3.2
'
'               - die Datei wird wenn nicht vorhanden erstellt und
'                 wieder geschlossen
'               - es wird ein DOS 8.3 konformer Dateiname zur weiteren
'                 Nutzung unter PowerBASIC zurckgeliefert.
'
'  entwickelt von Thomas Gohel  FidoNet :  Thomas Gohel@2:2410/330.1
'  Version: 1.00                InterNet:  author@pbsound.snafu.de
'  Stand  : 16.11.1996          Homepage:  http://www.snafu.de/~pbsound/
'
'*************************************************************************
DECLARE FUNCTION GetStrLoc (BYVAL INTEGER) AS INTEGER
CLS
PRINT
PRINT "Creating File 'Open95.Demo' ..."
OPEN Win95Open$("Open95.Demo") FOR OUTPUT AS #1
    PRINT #1, "Long File Routines for Win95 by Thomas Gohel "
CLOSE #1
FUNCTION Dos83Pfad$(BYVAL DirLFN$) public
        DIM LFNBuffer AS STRING * 128
        DirLFN$ = DirLFN$ + CHR$(0)
        ! push ds
        ! lea  di, LFNBuffer$
        ! push ds                         ; ES:DI auf Stack, erspart auer-
        ! push di                         ; das leidige Umkopieren
        ! les  di, DirLFN$                ; Handle von DirLFN$ holen
        ! push di                         ; auf Stack
        ! call GetStrLoc                  ; Adresse holen
        ! mov  ds, dx                     ; Quelle auf DS:SI umkopieren
        ! mov  si, ax                     ;
        ! pop  di                         ; ES:DI umkopiert vom Stack holen
        ! pop  es                         ;
        ! mov  ax, &h7160                 ; Make DOS 8.3 Names
        ! mov  ch, 0
        ! mov  cl, 1
        ! int  &h21
        ! pop  ds
        i% = INSTR(1, LFNBuffer$, CHR$(0))
        Dos83Pfad$ = LEFT$(LFNBuffer$, i%-1)
END FUNCTION
FUNCTION Win95Open$(BYVAL Filename$)
        Filename$ = Filename$ + CHR$(0)
        ! push ds
        ! les  di, Filename$              ; Handle von Filename$ holen
        ! push di                         ; auf Stack
        ! call GetStrLoc                  ; Adresse holen
        ! mov  ds, dx                     ; Quelle auf DS:SI umkopieren
        ! mov  si, ax                     ;
        ! mov  ax, &h716C
        ! mov  bx, &h0002
        ! mov  cx, &h0000
        ! mov  dx, &h0012
        ! mov  di, 1
        ! int  &h21
        ! pop  ds
        ! mov  bx, ax                      ; und File wieder schliessen
        ! mov  ah, &h3E
        ! int  &h21
        Win95Open$ = Dos83Pfad$(Filename$)
END FUNCTION
'************************************************************************
Regards,
                             ----------------
                                /
                              /  h o m a s
email       : author@pbsound.snafu.de
www         : http://www.snafu.de/~pbsound/ (PowerBASIC's Home in Germany)
Cooming soon: PowerBASIC.GER
--- CrossPoint v3.11 R
2:2410/330.1)
---------------
* Origin: PBSOUND, PBFILES (20MB), PBFAQ, PBRULES, PBHIVGA at:

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.