Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

Fascinating is a word I use for the unexpected. -- Spock, "The Squire of Gothos", stardate 2124.5


devel / comp.os.msdos.djgpp / Re: checking int2d amis appstring with djgpp

SubjectAuthor
* checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]
`* Re: checking int2d amis appstring with djgppJ.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com]
 `* Re: checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]
  +* Re: checking int2d amis appstring with djgppEli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com]
  |`* Re: checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]
  | `* Re: checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]
  |  `- Re: checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]
  `* Re: checking int2d amis appstring with djgppJ.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com]
   `- Re: checking int2d amis appstring with djgppOzkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]

1
checking int2d amis appstring with djgpp

<CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=451&group=comp.os.msdos.djgpp#451

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!69.80.99.23.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Fri, 23 Feb 2024 21:12:08 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708722718; x=1709327518; darn=delorie.com; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=N0ePeZxwA2fY6I+kH+nlUhbwag/dUUIAO5nViiFrD6w=; b=LYkHiOCxg1AnSEUHGQw+OMW7GRczAREqxjKspScJw/BUIr/AOuAbStzVVmJi7AjI5h +wGlewv3Mt0bqAEiBEhvsXYxXjeEMNEdjqeV9Az8HhSIppTj6+8xIpW9jamzANGb1j7q rm3o95A+ItK7OsnCKQ2bIILN6FDmZ2oyszZlt9c5BTGygDTu9s2jfYrksSnm194cSWIN 0QiGCb7p5i7IdiZio8aijhp8PROsKYNbu7ozcPeZHT0xJwHx484Ix0BZkLkn+cNkHEkk xA3KQKRzOOpk/7U/GPCgi++15vtJtZJJOdqhuAkjHWkUIeiF+bmfm2TdMGdgq6aImVD9 8kAg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708722718; x=1709327518; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=N0ePeZxwA2fY6I+kH+nlUhbwag/dUUIAO5nViiFrD6w=; b=DzHsaa23nV2KkTLKSExs807ds+yb6moXlhhAigYkpVScFpnIEG51OUeggZmDha2roQ ig2nULHnbYL9Of9YW8hlnGUVnLuSccPHrv2bf4+dfnnzSrHxr/mLNeSRWXG4GRGdnO2W KmjPIVjoMz3o+emdP+l543xEd9Ds3lW6Y6f1MHZOVIkpT2Xu4odiyu2FCgDR+nL1b4Sg hMLfYUtJXX169NhxxGPxpD6juKwZdhd+rlqM2luxOw7XgNzAeGyoahpmoyuFU+w7FKis gV4qhLSs7rzr7fLFa9UHLAx+GoXSAE3rRksAjJhT3pTDtTPyNkZHXnxHmk8CO0NDWVXv WJNA==
X-Gm-Message-State: AOJu0YxA6R9dBiTU4t86ej0/Sx/xZmBqi9wmKF1m0Ky7gJslwrQzMxBS 469C4STExitwxzuq+hF7IArYWunK8yNK211zonsdfKkhn0Hf2O13Gh6+/7nMIHt9dHn3KXkw4Q2 552AuhEmWgIgIKtVGE9kjIq+TRPpdPMNMXKE=
X-Google-Smtp-Source: AGHT+IHn43kUtkVdmxw5LY5VwR1irOtEX4uGkhodEuHN7Ye+QInftLOTjXq1zB/tWxKDe4PhtWQZ1DaquczwIipDTec=
X-Received: by 2002:a5d:67c4:0:b0:33d:b7ca:6160 with SMTP id n4-20020a5d67c4000000b0033db7ca6160mr101076wrw.35.1708722717012; Fri, 23 Feb 2024 13:11:57 -0800 (PST)
MIME-Version: 1.0
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sat, 24 Feb 2024 00:11:46 +0300
Message-ID: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
Subject: checking int2d amis appstring with djgpp
To: djgpp <djgpp@delorie.com>
Content-Type: text/plain; charset="UTF-8"
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 54
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-0A8oRcZvDnYskktY4CnSjpet2H607WK60sM+sjl2EHhnnBxlKcxz0O4vxI46dX9P9/DKiob6S4fWekx!4rIgikKCV6RvqJcboSMbjmkC7t4qYw7jE7O97+EJlijEK31VgHQAIBZSTWUnDg5ezFtgld/aRiSN!+OhqET3J7LeDg7T/jvBIyyuvhOY=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Ozkan Sezer (sezeroz - Fri, 23 Feb 2024 21:11 UTC

Hi everyone:

Does the following DJGPP port of SBEMU detection look correct?
It is an adaptation from a WatcomC (32 bit flat) code in here:
https://github.com/wbcbz7/sndlib-watcom/blob/master/sndlib.cpp#L41-L71

(I'm fairly rusty in gcc inline asm and djgpp address mapping, etc,
thanks in advance.)

int sndlib_sbemu_detect(void)
{ __dpmi_raddr addr;
uint32_t r_addr;
char* appstring;
int mx;

/* check for INT2D vector == NULL */
__dpmi_get_real_mode_interrupt_vector(0x2D, &addr);
r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
if (!r_addr) return -1;

/* scan all multiplexes of INT 2D */
for (mx = 0; mx < 256; mx++)
{
__asm__ __volatile__ ("movb %0,%%ah"::"m"(mx));
__asm__ __volatile__ (
"xorb %al, %al\n"
"int $0x2d\n"
"cmpb $0xFF, %al\n" /* is this a free multiplex? */
"jz _found\n"
"xorw %dx, %dx\n" /* it is, return NULL pointer */
"xorw %di, %di\n"
"_found:\n");
__asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
__asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));

/* check for SBEMU application string */
r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
if (!r_addr) continue;
appstring = (char *)real2ptr(r_addr);
if (memcmp(appstring + 8,"SBEMU",5) == 0)
return mx;
}

return -1;
}

P.S.: real2ptr() in there actually returns
(void *) (real += __djgpp_conventional_base)
after a successful __djgpp_nearptr_enable()

--
O.S.

Re: checking int2d amis appstring with djgpp

<fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=452&group=comp.os.msdos.djgpp#452

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!69.80.99.23.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Fri, 23 Feb 2024 21:48:57 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708724928; x=1709329728; darn=delorie.com; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id:from :to:cc:subject:date:message-id:reply-to; bh=e0Ktp+9E++OoQqhXFHbWndevyPgGcMu82cA7yfsOg3c=; b=nO2+rkMOWQclposCildwoN/zWfgavfDtjKHub4+e5tzsvIAi6xO26aUtrKnmWFQlL6 KmGsIEQJN1CvjeGYEQdht4o6CJAP1NLE2z/dPMHRlwwECVuwNN8zrNEwjb5ha2Up0090 OvxP8hBAWTQRKU7oWEMqJp3L5BzBrh32am041vKnkBHERV7AHDGZsf0c6X6IqHFO4+Oy xngs5pPBJyBAFsao1cIpeLGpTy6T9blr7m2ifyYC1hKro/ZvEHcsxPievy2Pt5OIHuzw nmOXTG3pIxZuz5HWCHxpzyxckY4k2AH21HePhrBIKi98NVi7qrzvo5tCEPmrGk+Qt7Ts NGcQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708724928; x=1709329728; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=e0Ktp+9E++OoQqhXFHbWndevyPgGcMu82cA7yfsOg3c=; b=q08JklzCAr2JrrmpQEl2IYg98v6lzmQET5fAY0dGyO0H+wlIZSGv4ibZO1qH4qnqJ3 LFIrFX7WrKneuHaxO2B3zEIF7Oce36cgYjQ606adJBzBEAM6kpxch9Fe5I+WlsBxiTrT EYjvBRL/01AEHQD1co/3ZibY9CBHfgJCmhPomSCFUdZdcRqOF6KiHquCKW52C0Vwyizx Fx7Ib6y5phB2vqTCF9/bV5VeGf0Kkw1kJQ7yL1kJivUffw6cExoRpiqqk6gMpIp6EF96 5GI0HsB9OSVfSXEFwLmyKaAm6vwTcW+VOJS7mt7QnDcQxfaAzmZlqSyYpzpqdDEC1q9u 09EQ==
X-Gm-Message-State: AOJu0YyVaaF0OAXd6fS7cbou6RMwlGfiow9YyLqk+EmNUwcGomWqLRb0 0ond7NLjYZBPLR8GR4MHn7TBc9dObkvc/RgzTIVasu69WVT7IqLRUKWv5fhM
X-Google-Smtp-Source: AGHT+IHvP5h4CU2rrCnnEscOPYV2DYZIi18Sl9na2xm1USz6CrGTSFmb9/s5ya6TCA8ifEDcY8GfOQ==
X-Received: by 2002:a17:906:f80d:b0:a3f:4ec0:128e with SMTP id kh13-20020a170906f80d00b00a3f4ec0128emr613306ejb.13.1708724928044; Fri, 23 Feb 2024 13:48:48 -0800 (PST)
Message-ID: <fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com>
Date: Fri, 23 Feb 2024 22:48:47 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
Content-Language: en-US
From: djgpp@delorie.com (J.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com])
In-Reply-To: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 7bit
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 65
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-Kf7Zb867zLymAWTh6Z4DG/x0p9Xskgx3dYR4goCNJev/WLP2MMEZ6ivsCQwzCtiqMzpcTYIK3DXHz6f!PwBNQFec+SMDGcNd1IdorbJ3Iz9z5VPj/HlO/ntdrpUf7FOe7BvygtuBPRwB1DUpczYPXefnRaIC
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: J.W. Jagersma (jwjag - Fri, 23 Feb 2024 21:48 UTC

Hi!

On 2024-02-23 22:11, Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com] wrote:
> Hi everyone:
>
> Does the following DJGPP port of SBEMU detection look correct?
> It is an adaptation from a WatcomC (32 bit flat) code in here:
> https://github.com/wbcbz7/sndlib-watcom/blob/master/sndlib.cpp#L41-L71
>
> (I'm fairly rusty in gcc inline asm and djgpp address mapping, etc,
> thanks in advance.)
>
> int sndlib_sbemu_detect(void)
> {
> __dpmi_raddr addr;
> uint32_t r_addr;
> char* appstring;
> int mx;
>
> /* check for INT2D vector == NULL */
> __dpmi_get_real_mode_interrupt_vector(0x2D, &addr);
> r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
> if (!r_addr) return -1;
>
> /* scan all multiplexes of INT 2D */
> for (mx = 0; mx < 256; mx++)
> {
> __asm__ __volatile__ ("movb %0,%%ah"::"m"(mx));
> __asm__ __volatile__ (
> "xorb %al, %al\n"
> "int $0x2d\n"
> "cmpb $0xFF, %al\n" /* is this a free multiplex? */
> "jz _found\n"
> "xorw %dx, %dx\n" /* it is, return NULL pointer */
> "xorw %di, %di\n"
> "_found:\n");
> __asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
> __asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));

This doesn't look right - you can't assume gcc preserves registers
between asm blocks.

But this is a real-mode interrupt, no? So you would have to do it via
__dpmi_int() here anyway, no asm involved.

>
> /* check for SBEMU application string */
> r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
> if (!r_addr) continue;
> appstring = (char *)real2ptr(r_addr);
> if (memcmp(appstring + 8,"SBEMU",5) == 0)
> return mx;
> }
>
> return -1;
> }
>
>
> P.S.: real2ptr() in there actually returns
> (void *) (real += __djgpp_conventional_base)
> after a successful __djgpp_nearptr_enable()
>
> --
> O.S.

Re: checking int2d amis appstring with djgpp

<CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=453&group=comp.os.msdos.djgpp#453

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!Xl.tags.giganews.com!local-1.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 00:09:20 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1708733351; x=1709338151; darn=delorie.com;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=0hviL7GQaYVV0xDA1p4jvpMN1VncbVTFht6bap3E4ng=;
b=JrkW2VmGes9bcVcP8DpbOGf3cvIRcZ55VsX82b/pvwN+An/xsYBA7zH/Si2nHyRsOu
EioWfVBv1rpIG94tthgHgwiJDNxc4hX1L8xaHVHZGcEwJYi9GRHtzY3uUhJ9Q8RNF+0b
7P0d+x6TvIuOZ7sW0ukF4LH4dVEWVneea6kS1ffxYJHy6mXJWSfZTqmMwpvEdfdyb8FO
5JR2j3XvYD5+DKteuSzVnN9KXPyrX/O12R5Gs0GYjinwyUjzRvm2uYQQchxCqkvMMqct
rh1XV64XZqwVf6/AJwT1eDe9JR9J2q2r5Y97pkncM/64f8+2Gg4h351iHKwp+sj+ssim
a01A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1708733351; x=1709338151;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=0hviL7GQaYVV0xDA1p4jvpMN1VncbVTFht6bap3E4ng=;
b=hfvJlP3xWpdh/hMS3zM9Lja1lbRSmxqinOBL7B1xxiivJJJA0HqvezrcoThk/vVqwW
sHTv1EUDKjvXfCCpyHvNznsifsg6X9HBkc/dX7Bgqih01lQkGotdH2WgVirKcFRjU6Nr
49i9gMW7AJouQAYwXAWsfRaWhZk27wo4RqlU6v9puDZIk5WPvbvAhwE6EJTc2SjCKE8D
EKrn/Z01pJMlNcChp8v/iy3qxdk/5uqfpJcZZxkI11wIQbiO0vjoDC+U0YzhUvE8DPWi
QMEoQs1DnBTX6KtsbP6/JTHS65tJ/T1LN3aLhlDpMcrSr1+9SppaAMUxgq1EWOXzALTU
unkw==
X-Gm-Message-State: AOJu0Yy6jYODQbXdlBaq1K0eIWQ1v60R5CphHrbKMdFau68Y91vXD1lw
J6uOAzcE+atVimAsZ8kWlNHonP3fKLbG436D0lYzcdHVv9WMWTds1Jc2JOMgtJ5cYSm48Iwue0q
De73ypUPY4fPxdrn3RA1qrbOg8dsYFcGugl8=
X-Google-Smtp-Source: AGHT+IHuNds5YNoDjf+h6WepcviCWHVRBL4b9UEgROTHTQMDnGNxx1uxvwTk5UQVWU9lc8r8yIWMMwZbt0VzCmEkDzk=
X-Received: by 2002:a05:600c:5592:b0:412:6de0:69a9 with SMTP id
jp18-20020a05600c559200b004126de069a9mr769305wmb.39.1708733350954; Fri, 23
Feb 2024 16:09:10 -0800 (PST)
MIME-Version: 1.0
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
<fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com>
In-Reply-To: <fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com>
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sat, 24 Feb 2024 03:08:59 +0300
Message-ID: <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id 41O09C1R003514
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 67
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-OKF1t2ne3gS48V3WmzRt1wHndI9APt4KNrqozYsjlZ3DlRYrTncY7vWf7ArvKOw/S6htnxJzVNUGbaa!fLXoyEmYiAZQt0aCEikUqR89FGzxsLW4NMMaRm10KQabYAbFux7mfU/7uu3Vfaq+Xd2iWduZYo+b!oRnBfK3DR6qDThLb3cIqpm3Hr+k=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Received-Bytes: 5544
 by: Ozkan Sezer (sezeroz - Sat, 24 Feb 2024 00:08 UTC

On Sat, Feb 24, 2024 at 12:49 AM J.W. Jagersma (jwjagersma@gmail.com)
[via djgpp@delorie.com] <djgpp@delorie.com> wrote:
[...]
> > __asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
> > __asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));
>
> This doesn't look right - you can't assume gcc preserves registers
> between asm blocks.

OK, should have been like this then, yes?

__asm__ __volatile__ (
"movb %2, %%ah\n"
"xorb %%al, %%al\n"
"int $0x2D\n"
"cmpb $0xFF,%%al\n" /* is this a free multiplex? */
"jz 1f\n"
"xorw %%dx, %%dx\n" /* it is, return NULL pointer */
"xorw %%di, %%di\n"
"1:\n"
"movw %%dx, %0\n"
"movw %%di, %1\n"
: "=m"(addr.segment),
"=m"(addr.offset16)
: "m"(mx) );

> But this is a real-mode interrupt, no? So you would have to do it via
> __dpmi_int() here anyway, no asm involved.

Is the following correct ??

int sndlib_sbemu_detect(void)
{ __dpmi_raddr addr;
uint32_t r_addr;
__dpmi_regs regs;
char* appstring;
int mx;

/* check for INT2D vector == NULL */
__dpmi_get_real_mode_interrupt_vector(0x2D, &addr);
r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
if (!r_addr) return -1;

/* scan all multiplexes of INT 2D */
for (mx = 0; mx < 256; mx++)
{
memset(&regs, 0, sizeof(regs));
regs.h.ah = mx;
__dpmi_int(0x2D, &regs);
if (regs.h.al != 0xFF)
continue;

/* check for SBEMU application string */
r_addr = ((uint32_t)regs.x.dx<<4) + (uint32_t)regs.x.di;
if (!r_addr) continue;
appstring = (char *)real2ptr(r_addr);
if (memcmp(appstring + 8,"SBEMU",5) == 0)
return mx;
}

return -1;
}

--
O.S.

Re: checking int2d amis appstring with djgpp

<86y1baz6o0.fsf@gnu.org>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=454&group=comp.os.msdos.djgpp#454

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!69.80.99.27.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 07:02:36 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=nMkoXvZqrWJCANkTEFu9sKVv+sBtex8yJ4jUaSSilMw=; b=g+gwU2E05VAYnkAMp112 ZKTww3esDklLq9d2nNH9gwDjzcV3fd5pYY8jdRWe+Z23uNtorJFqG67CnL8APRNwQe3wqdIGz2g2v YZyslerO0I/EOHoEm79Gy7Wk7TQGOuoQM1OfAQABdjNk41Hrb3EhaA3Xtb1JnyheRcfFKPCCsRCfJ 7UUlncmeu9fi7TPwOINQ6sN5lVFuZCffSwRg3qm2TPk7lJx/YmHMtuhJh0mrj4inbtHK7cT6Rs5OH DrVZOlv07tyrvL6p3Pzdb+arqgdrOVlW2ZGeM/1bwnLx0Xf0WEAk18NBbvkAcpeZukCvdg7pIUUEe k1tgL/Gk5XE6uA==;
Date: Sat, 24 Feb 2024 09:02:23 +0200
Message-Id: <86y1baz6o0.fsf@gnu.org>
From: djgpp@delorie.com (Eli Zaretskii (eliz@gnu.org) [via djgpp@delorie.com])
To: djgpp@delorie.com
In-Reply-To: <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com> (djgpp@delorie.com)
Subject: Re: checking int2d amis appstring with djgpp
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com> <fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 56
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-NZA8/1btKw9HXysv+yZwmyswBWGZ5ImNFhnaYLNhi/xnGAGpcdM8BUSqLeWHnN+Te6XtqNMBA1hL/Wk!Fl04kaKGENiug2n52NFp8/D8u3GsS0u6Yf/QJssgkF7K
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Eli Zaretskii (eliz@ - Sat, 24 Feb 2024 07:02 UTC

> From: "Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com]" <djgpp@delorie.com>
> Date: Sat, 24 Feb 2024 03:08:59 +0300
>
> On Sat, Feb 24, 2024 at 12:49 AM J.W. Jagersma (jwjagersma@gmail.com)
> [via djgpp@delorie.com] <djgpp@delorie.com> wrote:
> [...]
> > > __asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
> > > __asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));
> >
> > This doesn't look right - you can't assume gcc preserves registers
> > between asm blocks.
>
> OK, should have been like this then, yes?

It is better to avoid inline assembly at all. I'm guessing Watcom did
that for speed or something, but does speed really matter here?

> Is the following correct ??
>
> int sndlib_sbemu_detect(void)
> {
> __dpmi_raddr addr;
> uint32_t r_addr;
> __dpmi_regs regs;
> char* appstring;
> int mx;
>
> /* check for INT2D vector == NULL */
> __dpmi_get_real_mode_interrupt_vector(0x2D, &addr);
> r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
> if (!r_addr) return -1;

Instead of the above bit juggling to get r_addr, you could simply test
both segment and offset to be zero. After all, how else you'd get
zero in the linear address?

> /* scan all multiplexes of INT 2D */
> for (mx = 0; mx < 256; mx++)
> {
> memset(&regs, 0, sizeof(regs));
> regs.h.ah = mx;
> __dpmi_int(0x2D, &regs);
> if (regs.h.al != 0xFF)
> continue;
>
> /* check for SBEMU application string */
> r_addr = ((uint32_t)regs.x.dx<<4) + (uint32_t)regs.x.di;
> if (!r_addr) continue;
> appstring = (char *)real2ptr(r_addr);
> if (memcmp(appstring + 8,"SBEMU",5) == 0)
> return mx;

You cannot access conventional (below 1MB) memory like that. You need
to use one of the techniques described in the node "Xfer" in the
DJGPPFAQ Info manual, to fetch the 5 bytes to protected-mode memory
first. In your case, _dosmemget seems to be the best method.

Re: checking int2d amis appstring with djgpp

<CAA2C=vCiD_Uq25grxhsz+A_T_eTdFpO3x6jxQkme+tqqUEyTFA@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=455&group=comp.os.msdos.djgpp#455

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!border-2.nntp.ord.giganews.com!nntp.giganews.com!Xl.tags.giganews.com!local-1.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 08:56:51 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1708765000; x=1709369800; darn=delorie.com;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=eRFArA7KwObR4bA/tAfUQ/O7XQlaigcTBv8uY9stUNA=;
b=gNdwJhNmF6j2gKaH2MuXN5G1EUP3HN0jjo2EO8HuC+Vs2m4Dve1NAgWxQPzU/lxvyb
sjM9q+HE6Xzpq2pjDkedWFiLRy+WSkttW/3zgNH4YfYe1HbdfvYYDHzWZSDCWjE9vLbY
NxM0IZN2b2RyRe6UNwXYod+hmofbn4HQHi0TYTWXhWH+OeYiOHvt/HhZcSjrgZxKFsys
kW8p68Y3xfxC+ZHwIi1+vdmOJiDrmTjerdiUSDMn1JkXTbeMPoRrCET26sMn40/quCBh
Ek3ajEQ2CsM4iWWDm2kqMa2BvCyCg+UJoBksJoe4SHI+R2XAnqSUmWs9f5CqhzMJWmdj
1C7Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1708765000; x=1709369800;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=eRFArA7KwObR4bA/tAfUQ/O7XQlaigcTBv8uY9stUNA=;
b=pm8XTCTLIzRmwOh79a2vcjN0sHlWxL3xwoe2HvmV4WJpi3SAW6knDyGlwDLYpggQJW
d+FCXtxTtuDzrCjXX+u5/A3yDjASeTsC7je9MwJ6aCrzfUouzp/CLur8KW6Q9Gb+44ph
znE6KoMhPyVcB4tnI/UJOS0LzympPGMqFCoSgqFtgwt9PvEpliAHQvzDJtUh2tdGUJak
+aX3UVtaHpXWoVq2zYixBHvrz+XFTGbxt6VOXSu4ZVzSO+nCNujPR38FX4gzOh/8uqv+
IFZI2ptV5UBtwut3iIkO7SX6Lk4OphSDX6QqHezR6KKfpf7+V8Octjt0YGF2iDhf5Crm
yFbw==
X-Gm-Message-State: AOJu0YxaNU8EvegKMkq5xPn+kqorvzVhjSyOiivubaTQ51YvVoFaisBP
pW90PjIX11qj5ZUrEJqgEp07IuqShx2od2Jb6JoqNJml+onF8SzNRa8F0fVoyx1OsdzmVMC+vBn
xjoYfSweEcNRsxzBNB+ryJDhbvBxm4rW4ewQ=
X-Google-Smtp-Source: AGHT+IGgAx1CjoTsP4Y56ysRJOx5mZFF2FTtnKdDt49jYttB1SrCJ2hwLpaEZHFyYbTsHDvXQSwFV47LfEbxGnpdZLQ=
X-Received: by 2002:a05:6512:b08:b0:512:b90f:fc4e with SMTP id
w8-20020a0565120b0800b00512b90ffc4emr1375577lfu.46.1708764999978; Sat, 24 Feb
2024 00:56:39 -0800 (PST)
MIME-Version: 1.0
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
<fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
<86y1baz6o0.fsf@gnu.org>
In-Reply-To: <86y1baz6o0.fsf@gnu.org>
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sat, 24 Feb 2024 11:56:28 +0300
Message-ID: <CAA2C=vCiD_Uq25grxhsz+A_T_eTdFpO3x6jxQkme+tqqUEyTFA@mail.gmail.com>
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id 41O8uh37012333
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 61
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-OkOxsRTZan5FQKiviyfJgUxEqarSO3FfoLmfVW3rwNxwYXzlnzbvoFq7cb75vq9mSwOrx75/5dNaKTb!wHhhvpjMqP+/uuoGG5H/p+GweZh2DQlFmKH+bvovjoFNptxhJlLeTWN8nWx7OS8XrNS/I4qUYh2z!UpUw2muRoZg3gNi53zXsrAxhTDM=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Ozkan Sezer (sezeroz - Sat, 24 Feb 2024 08:56 UTC

Hello Eli,

On Sat, Feb 24, 2024 at 10:03 AM Eli Zaretskii (eliz@gnu.org) [via
djgpp@delorie.com] <djgpp@delorie.com> wrote:
> It is better to avoid inline assembly at all. I'm guessing Watcom did
> that for speed or something, but does speed really matter here?

Most certainly no, speed is not a concern here. It's my ignorance in
attempting to translate watcom code

> > r_addr = ((uint32_t)addr.segment<<4) + (uint32_t)addr.offset16;
> > if (!r_addr) return -1;
>
> Instead of the above bit juggling to get r_addr, you could simply test
> both segment and offset to be zero. After all, how else you'd get
> zero in the linear address?

Indeed

> > appstring = (char *)real2ptr(r_addr);
[...]
> You cannot access conventional (below 1MB) memory like that. You need
> to use one of the techniques described in the node "Xfer" in the
> DJGPPFAQ Info manual, to fetch the 5 bytes to protected-mode memory
> first. In your case, _dosmemget seems to be the best method.

Thanks. So: is the following correct? Does it match the intention at
https://github.com/wbcbz7/sndlib-watcom/blob/master/sndlib.cpp#L41-L71

int sndlib_sbemu_detect(void)
{ __dpmi_raddr addr;
__dpmi_regs regs;
uint32_t r_addr;
char appstring[16];
int mx;

/* check for INT2D vector == NULL */
__dpmi_get_real_mode_interrupt_vector(0x2D, &addr);
if (!addr.segment || !addr.offset16) return -1;

/* scan all multiplexes of INT 2D */
for (mx = 0; mx < 256; mx++)
{
memset(&regs, 0, sizeof(regs));
regs.h.ah = mx;
__dpmi_int(0x2D, &regs);
if (regs.h.al != 0xFF)
continue;

/* check for SBEMU application string */
r_addr = ((uint32_t)regs.x.dx<<4) + (uint32_t)regs.x.di;
if (!r_addr) continue;
dosmemget(r_addr, 16, appstring);
if (memcmp(appstring + 8,"SBEMU",5) == 0)
return mx;
}

return -1;
}

Re: checking int2d amis appstring with djgpp

<CAA2C=vANE5J_7TfiTzSaEjROOyOpKbwfZirDCGC883S4e-uUkQ@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=456&group=comp.os.msdos.djgpp#456

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!border-2.nntp.ord.giganews.com!nntp.giganews.com!Xl.tags.giganews.com!local-1.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 10:12:14 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1708769529; x=1709374329; darn=delorie.com;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:from:to:cc:subject:date
:message-id:reply-to;
bh=Swj3ZUSNk0B8owJBcMp3ovq9EWQOs+/JAyrE2p7Qz14=;
b=Z+OKUDuPzTtecLvGWTOxN5l4anbL/3WjSYamDvkLDdQzzmyOlc+Tr8TCCV/bXwBdIO
azyGRt4LtCV5cwt+dgagaguEQamWcArV793wtQqwrUEkLndsLMwBCEFX+uyoSbfe5UzC
sfNr5BEfqgCOWkJ+w0C+xMs60AxjGssK0aBuHcoeeZBoH7dkTv/Xh6guDsZMm3zhXB6x
IB7hxI/GgDqFYUtBb5rR7uY8bkCJgSzhOLCJDr+NCCS/wNTSqIh3xNuhKknsUtpRm4Em
nkKmOMohe2kXUA1cGsJUkHBUmzUVEqwzOom6oyLJigTUQBhjzpIuI9gRtiILiBSVlmq6
RppA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1708769529; x=1709374329;
h=content-transfer-encoding:to:subject:message-id:date:from
:in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
:subject:date:message-id:reply-to;
bh=Swj3ZUSNk0B8owJBcMp3ovq9EWQOs+/JAyrE2p7Qz14=;
b=Uq/C/8tKfP1UADNKQfA5I5i7n6FErdXJ2hgUWPYjoYwqCEavde5oWp5fmJWnzBmYzz
vY4+7T0Elj6D70JcV/fFRM3Qz+H8487uJzbtdzAFUcFZl+MDSBqv2UQeAbN5RzKJiwR6
n7JcVYbAzb/y6p1sZ7BSxfYt0oNDULLOt4zlOVyWbuTrOQ8JrtKJxOelJGkSjLaqtr4t
O21Rki762ut4frnxBqSLWti47bKZkRmcPtIpa5BEXyOh6ID5etOiQREbDZ5Bc779Vicb
JHY5MIxU09ftWZWTscCWWvv8qC7b6nV5QrOYPxE6uE5YNnGVXSklt4bDjq3XkuodXnSI
B4qA==
X-Gm-Message-State: AOJu0Yyf6fs3sTLw/diQBr7VoFSzfLfWB/jhU7k10gVeFIBjnitgCbE1
0DjtEqkQPcii0HRM4byb+/UgmxXsDqNeFsnQVmHnldWCHR8EroMyQ/g2Ni5wnXobHOcgvzBLJT0
IjqtU319RCzobW7cQyAeIOMlR0+cSSQZa
X-Google-Smtp-Source: AGHT+IHxn6DLgzI9Boo98jk2KMZiJCwcPIzCOA4Xa7DzQ5fhDVpXptLpPx9VrcrbwM/ERJL/34gztrF47snAldbBn0A=
X-Received: by 2002:a2e:b545:0:b0:2d2:773c:e406 with SMTP id
a5-20020a2eb545000000b002d2773ce406mr865658ljn.10.1708769529339; Sat, 24 Feb
2024 02:12:09 -0800 (PST)
MIME-Version: 1.0
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
<fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
<86y1baz6o0.fsf@gnu.org> <CAA2C=vCiD_Uq25grxhsz+A_T_eTdFpO3x6jxQkme+tqqUEyTFA@mail.gmail.com>
<86cysmyy2i.fsf@gnu.org>
In-Reply-To: <86cysmyy2i.fsf@gnu.org>
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sat, 24 Feb 2024 13:11:57 +0300
Message-ID: <CAA2C=vANE5J_7TfiTzSaEjROOyOpKbwfZirDCGC883S4e-uUkQ@mail.gmail.com>
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id 41OACBNb031456
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 11
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-VlPL7Jqerp6bdq0OOTLBGS0cvQxEP1r1e0950Uk5xTmogyNqMidrbi/uLG7H5+prGAyZo1PlwL4jeAf!Jdm8p/iKpUf73BIwnT+Jbhm8J7Xd3i+MASJ5gHKUuX6640Z9eDdfBCFbMiTX28PVESpVq9y9UJwH!yakMMhC3E+aze5IhGfC8IU4o/S4=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Ozkan Sezer (sezeroz - Sat, 24 Feb 2024 10:11 UTC

On Sat, Feb 24, 2024 at 1:08 PM Eli Zaretskii (eliz@gnu.org) [via
djgpp@delorie.com] <djgpp@delorie.com> wrote:
> > Thanks. So: is the following correct? Does it match the intention at
> > https://github.com/wbcbz7/sndlib-watcom/blob/master/sndlib.cpp#L41-L71
>
> LGTM, but of course it needs to be tested ;-)

Thanks!

And yes, will be testing on real hw soon.

Re: checking int2d amis appstring with djgpp

<a38d27c4-5ff1-410d-9045-fec911c09faa@gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=457&group=comp.os.msdos.djgpp#457

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!69.80.99.23.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 11:05:47 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708772739; x=1709377539; darn=delorie.com; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=s2Yj1yidU8+Ken2lFEA4eciMqqfHDnDcjnWHK59eB0Y=; b=VUeXiVEptNGniAXiex83+HVkA7lqqBivfhF/3dcnwH5ZU2gelie17S+V6UkXDAvLdU ASU3m7boBM1zg9pxvBJM2l33+6SxsHIP78T9kxCyMrsHMI8/mkFNLIK22T7xsPzi2esD LQ4+jae80oXDMlkrFUQ5UtdwgjwSaIisUkb857drqp843r7W83dbowJCAdxfzHhdjQcq S8Ya7u8dyU07Mum0gB36u/JBTp8ne805WXU2W6OACiB/o6oXxugidJ8rie5cyG0TPIha RlBoi3lh1nMNa9xveJ/yGp11ET9SH/uT6J0r3kvtsKa889GCw5RrUl4X5ndFtfbAlBYX 2P4A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708772739; x=1709377539; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=s2Yj1yidU8+Ken2lFEA4eciMqqfHDnDcjnWHK59eB0Y=; b=ZwSP+vpm9pS+WDjF5V6KSNOkUjEWCd16hqeoHG6KJnrq06wVUWNK5Fc7trnnLmNmAV aTuXGb5B3climZIHLczKBhLsRY8Rn3KqsbJpij4J19ClFng/QX6/5TI4rrA+DgrnD3Za cJD2GOeZGD6PKXqF1iUlRLS1xELumvQRh5WsVRJtK5KkijpmvIBMN3i6WhehJIL82c44 MNRHAlo4ykuQgkaduLvoYSEMfX8UQ9uZgUmnUQOjATDNl6+tJNVFaGwyZzbrMc6H84Gx lz3pm0ENwHTQTmgGn5deuMLR+eiI/5IJjWHVaeWzL9Yo5iT+cUoEBK62F1V6EDfS5983 lCsg==
X-Gm-Message-State: AOJu0YxGOoWUJdfDh7pKtN7FsVsq/paNUIKzEJmRP0V3BCf4n7Jj2nrU wa/zacxGahCOyz2h9RzaZUOXVLkaFPcLsCAljIcHPNUXm5rSY1Y8wObGbiK1
X-Google-Smtp-Source: AGHT+IHdDVmg/tu9iy5x8ZiKuoBZVdTRh6Mjdy5jLdF8AelGMYHzFK37izjqczejmiAITXUdFqGWBw==
X-Received: by 2002:a17:906:798:b0:a42:ed2d:3d8f with SMTP id l24-20020a170906079800b00a42ed2d3d8fmr631663ejc.73.1708772738684; Sat, 24 Feb 2024 03:05:38 -0800 (PST)
Message-ID: <a38d27c4-5ff1-410d-9045-fec911c09faa@gmail.com>
Date: Sat, 24 Feb 2024 12:05:38 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: checking int2d amis appstring with djgpp
Content-Language: en-US
To: djgpp@delorie.com
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com> <fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
From: djgpp@delorie.com (J.W. Jagersma (jwjagersma@gmail.com) [via djgpp@delorie.com])
In-Reply-To: <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 60
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-ImmuTFgY6R9Jdn7LPDPh4Vuv46oFEiuKvVOfes6li3L5tNgepZkIoMcIdYw71p+au1x3V1XjiwBJiuH!jRuSAqharFjAtV+pOhyY3v5c+EWOXLWF+UKQfe/HhdrHaGJyMEOXVuXDdeQswW1ObtQJ2d3MvKqT
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: J.W. Jagersma (jwjag - Sat, 24 Feb 2024 11:05 UTC

On 2024-02-24 01:08, Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com] wrote:
> On Sat, Feb 24, 2024 at 12:49 AM J.W. Jagersma (jwjagersma@gmail.com)
> [via djgpp@delorie.com] <djgpp@delorie.com> wrote:
> [...]
>>> __asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
>>> __asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));
>>
>> This doesn't look right - you can't assume gcc preserves registers
>> between asm blocks.
>
> OK, should have been like this then, yes?
>
> __asm__ __volatile__ (
> "movb %2, %%ah\n"
> "xorb %%al, %%al\n"
> "int $0x2D\n"
> "cmpb $0xFF,%%al\n" /* is this a free multiplex? */
> "jz 1f\n"
> "xorw %%dx, %%dx\n" /* it is, return NULL pointer */
> "xorw %%di, %%di\n"
> "1:\n"
> "movw %%dx, %0\n"
> "movw %%di, %1\n"
> : "=m"(addr.segment),
> "=m"(addr.offset16)
> : "m"(mx) );

Almost. You would also need to list the registers you modified,
otherwise gcc will make the wrong assumptions about their contents. So:

/* ... */
: "=m"(addr.segment),
"=m"(addr.offset16)
: "m"(mx)
: "ax", "dx", "di");

Although if I were to call a protected-mode interrupt, I would do the
control flow in C, so the asm can be simplified to:

unsigned ax = mx << 8;
__dpmi_raddr addr;

asm
(
"int $0x2D"
: "+a" (ax), /* ax */
"=d" (addr.segment), /* dx */
"=D" (addr.offset16) /* di */
);

if ((ax & 0xff) != 0xff)
continue;

/* ... */

But this is not very relevant to your question anymore, of course :)

Last version of the code you posted looks good to me, I would expect
that to work.

Re: checking int2d amis appstring with djgpp

<CAA2C=vCJ+vZcgVRq3DBJUyKQzsJhZajhTp4KapMGCqaRHHVDFg@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=458&group=comp.os.msdos.djgpp#458

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!panix!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!feeder.usenetexpress.com!tr2.iad1.usenetexpress.com!69.80.99.22.MISMATCH!Xl.tags.giganews.com!local-2.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sat, 24 Feb 2024 11:20:22 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1708773614; x=1709378414; darn=delorie.com; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=REt3KYWWUVupFLnyCsh1FI8RWnm563H5IYml0aP8sew=; b=ZqiXKrT1SlDGij8SSVpycwjquTpKYr5XuSmr7HKR5L/IloCPvPvPk4v5DdDNwB+6vI PjahGaW++/ENLAWoVRDUDJJitAJlfYYSUMLtp6egYcvnXUqsbhBfaIQLIA5CxExhoGrv zcqVeOWJR1PCltlBCXA/IRUtoI2DgP5qBH7Bi2Xg5uX+5FGb8Q/wPfQCn/galcdfLPUU 7nv8780ExVbB7NBQtFG6i4u/R0yWd9LShk9ZvcA+1gGIcH/4m19zR8GUbJ6Z8qThWbpn TmYVg0WvTF6R51xUF1tcQiyF4K2+xNZJfHkBnJAd57TjF6Ds8biSlDKdKhvijwgZf5kP Cs8w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708773614; x=1709378414; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=REt3KYWWUVupFLnyCsh1FI8RWnm563H5IYml0aP8sew=; b=FKjADg3DgDwyZm3OkEDm0poufNfdryhmJ1zpnUfgpQZVl2b4pacPt24ChHF1A2evDm BwUZwgvbgE/CCHYTzbTej/yT9W4auzqJC4iL3SqAulntVtn9vHFIBAt0QXbRLbyMzEw6 5/a4LFlpFXTxybOcwhWhdjcFkQxs7Z4P/viPe2CExHpsuFoC2PkxHF7gxh0zXlICCEq1 Ax4pVqO6u6jK239rT920mqXasLBXTPYRq6yXpc+iLgvR9DvAMGQzPInV/Y1f/Es1tmV2 2OXaXkhJ3uEOSrf4KEntrKT70ANF4LxFsypsX+OVNPeTHdreFpDvFFaqF4mhHLTm949P dBtg==
X-Gm-Message-State: AOJu0YwTUste5zm59fS6W6Wo1GSpO6dzWZOMgPnF7gPoC4cVfMqz+Efn OhYtOPDMPob23aGvDv5W9i0akLLRhcO/cKf4aJDrEXTJrl3YHxGFYxX1JH12Cz3TRtW6bQ14Tiz Bw13n8tmyHXSbGjOmaq9v7L55YrYw/IXT
X-Google-Smtp-Source: AGHT+IG2EjZOPMV1XTHEEVVftrZHrysppwHjnYsGHqmWl9ZvcqNyJ3Qp57E2JNx26GqoKNY88X+ZnHIsRDzR6g2zaKw=
X-Received: by 2002:a2e:86cd:0:b0:2d2:43fd:391b with SMTP id n13-20020a2e86cd000000b002d243fd391bmr892819ljj.26.1708773614325; Sat, 24 Feb 2024 03:20:14 -0800 (PST)
MIME-Version: 1.0
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com> <fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com> <a38d27c4-5ff1-410d-9045-fec911c09faa@gmail.com>
In-Reply-To: <a38d27c4-5ff1-410d-9045-fec911c09faa@gmail.com>
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sat, 24 Feb 2024 14:20:02 +0300
Message-ID: <CAA2C=vCJ+vZcgVRq3DBJUyKQzsJhZajhTp4KapMGCqaRHHVDFg@mail.gmail.com>
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by delorie.com id 41OBKGZl015266
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 61
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-4ab66PtI7k2mBDVedcPV5GVqclqHL3qjma6J3HYVFWY8Xs0HwJcTwKaD6dN79kdVQnDivi/+nwObu/R!zkLW3l+u54qtO+yvfRAbJu/57jaSL4cjNe3gKD36C1R5zlpIHkvNW7OrJadFuI7Wqoej04UQfv+h!220htuumFl887WVpKZBz3b4/CIU=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Ozkan Sezer (sezeroz - Sat, 24 Feb 2024 11:20 UTC

On Sat, Feb 24, 2024 at 2:06 PM J.W. Jagersma (jwjagersma@gmail.com)
[via djgpp@delorie.com] <djgpp@delorie.com> wrote:
>
> >>> __asm__ __volatile__ ("movw %%dx,%0":"=m"(addr.segment));
> >>> __asm__ __volatile__ ("movw %%di,%0":"=m"(addr.offset16));
> >>
> >> This doesn't look right - you can't assume gcc preserves registers
> >> between asm blocks.
> >
> > OK, should have been like this then, yes?
> >
> > __asm__ __volatile__ (
> > "movb %2, %%ah\n"
> > "xorb %%al, %%al\n"
> > "int $0x2D\n"
> > "cmpb $0xFF,%%al\n" /* is this a free multiplex? */
> > "jz 1f\n"
> > "xorw %%dx, %%dx\n" /* it is, return NULL pointer */
> > "xorw %%di, %%di\n"
> > "1:\n"
> > "movw %%dx, %0\n"
> > "movw %%di, %1\n"
> > : "=m"(addr.segment),
> > "=m"(addr.offset16)
> > : "m"(mx) );
>
> Almost. You would also need to list the registers you modified,
> otherwise gcc will make the wrong assumptions about their contents. So:
>
> /* ... */
> : "=m"(addr.segment),
> "=m"(addr.offset16)
> : "m"(mx)
> : "ax", "dx", "di");
>
> Although if I were to call a protected-mode interrupt, I would do the
> control flow in C, so the asm can be simplified to:
>
> unsigned ax = mx << 8;
> __dpmi_raddr addr;
>
> asm
> (
> "int $0x2D"
> : "+a" (ax), /* ax */
> "=d" (addr.segment), /* dx */
> "=D" (addr.offset16) /* di */
> );
>
> if ((ax & 0xff) != 0xff)
> continue;
>
> /* ... */
>
> But this is not very relevant to your question anymore, of course :)
>
> Last version of the code you posted looks good to me, I would expect
> that to work.

Thanks!

Re: checking int2d amis appstring with djgpp

<CAA2C=vCX8ju7rqPLM78+sgKpyGNXKzfNO=qMePUDNH_yxfjpTQ@mail.gmail.com>

 copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=461&group=comp.os.msdos.djgpp#461

 copy link   Newsgroups: comp.os.msdos.djgpp
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!border-2.nntp.ord.giganews.com!nntp.giganews.com!Xl.tags.giganews.com!local-1.nntp.ord.giganews.com!news.giganews.com.POSTED!not-for-mail
NNTP-Posting-Date: Sun, 25 Feb 2024 12:04:08 +0000
X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
X-Recipient: djgpp@delorie.com
X-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=gmail.com; s=20230601; t=1708862634; x=1709467434; darn=delorie.com;
h=to:subject:message-id:date:from:in-reply-to:references:mime-version
:from:to:cc:subject:date:message-id:reply-to;
bh=euSOFfhD+gkMTpt9MiGdj0KtA0+IYAS9V0//bZUomv8=;
b=Xft3MRp5v4uwCV/DOzRxZKQCU1Q4fHJrUspFrJRZ37AA386JGMJF8NbV2TA/MCD5TB
S7G8mixC7deEzWNJuN2LM7V413F9/ecLd7NXzxGBHKefyy8ItvhSyeFuiUQQHujYXnGo
5XJXpOq91KpoSFO7RHVmAUeNWiQfb2jKtg8IOQNEJSREKmpoOvR5AI/nXjCYHv3Xl8KR
xloAwy9gVtKgi2u208wXbzhe+niQczvvBN7pAVm/jcPpsF9gM20sHrZRVS9WhKo2h68+
zWB83LyVn2NhHGTqyTKFlT7sGXMBeLNGUFaujHYub4OwgegO3lFEwnXuf/XCIvlMFWfM
9B1g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
d=1e100.net; s=20230601; t=1708862634; x=1709467434;
h=to:subject:message-id:date:from:in-reply-to:references:mime-version
:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
bh=euSOFfhD+gkMTpt9MiGdj0KtA0+IYAS9V0//bZUomv8=;
b=hYGvFFQdil2O2lLaWTFFAZSJFzbOkMGcJ17qjqW6BqQXI/d/nn+AWBcEtfsJXsY0+1
ERiRNCjmpwfqmcR9Q/0za/I1jP4mZqTSgjghZQ8gcKh3ThPAsrPmc3HIadZeQ2nG3UCJ
w5paAouefmXaOojWap6/bIvDywfko3BpQoF8/Gwx4HuEF3RyEYhzheznUNQIxuGTVTif
1orUAOiYc+seWe2bOGXHuqvXUV2eQzeYrc9GVRh/CqfFgpHhOHeqOkElR2KE21YcV4Pj
qFCaPk/+Pai9Tr++EMaGgx56aOZugu/6m4HtejNafq144GgntUBMQclZGSgkYXfT/8eE
vP1g==
X-Gm-Message-State: AOJu0YzglHM5Mer8UoPvGmrIID8Q4YUD3GqRXmHOJpFtCwjTWDbnR1hc
Ijy2gQSgIiCzZ10R9i0n07OmRwqYKErR21PO/TVYA0NWNT5s2ex5KcZTViAn7EK0Ru7sfBzJwhU
1EpOpSdl21qyBwmq973+EjkJ6tTzfNEXJ
X-Google-Smtp-Source: AGHT+IEim7wXABGX4waRXhKX62vqgmAHx/1COyDranZ5/A0sobxoxMh9QpllNq5ltsdAGtVjdUaaVBPx/pSwaxhjEe0=
X-Received: by 2002:a5d:5f51:0:b0:33d:9d51:9942 with SMTP id
cm17-20020a5d5f51000000b0033d9d519942mr4116599wrb.17.1708862633742; Sun, 25
Feb 2024 04:03:53 -0800 (PST)
MIME-Version: 1.0
References: <CAA2C=vB8ZicddhV9vbcu9RELueGs8o5_=OQdy0gejtPzFaYeJw@mail.gmail.com>
<fb540633-1a6d-4a7b-8dd0-74b774ad8733@gmail.com> <CAA2C=vAMR_eEmGd01jZDe3013inxvtEM-0qB-yoCzsTF0Cx2zw@mail.gmail.com>
<86y1baz6o0.fsf@gnu.org> <CAA2C=vCiD_Uq25grxhsz+A_T_eTdFpO3x6jxQkme+tqqUEyTFA@mail.gmail.com>
<86cysmyy2i.fsf@gnu.org> <CAA2C=vANE5J_7TfiTzSaEjROOyOpKbwfZirDCGC883S4e-uUkQ@mail.gmail.com>
In-Reply-To: <CAA2C=vANE5J_7TfiTzSaEjROOyOpKbwfZirDCGC883S4e-uUkQ@mail.gmail.com>
From: djgpp@delorie.com (Ozkan Sezer (sezeroz@gmail.com) [via djgpp@delorie.com])
Date: Sun, 25 Feb 2024 15:03:42 +0300
Message-ID: <CAA2C=vCX8ju7rqPLM78+sgKpyGNXKzfNO=qMePUDNH_yxfjpTQ@mail.gmail.com>
Subject: Re: checking int2d amis appstring with djgpp
To: djgpp@delorie.com
Content-Type: text/plain; charset="UTF-8"
Reply-To: djgpp@delorie.com
Errors-To: nobody@delorie.com
X-Mailing-List: djgpp@delorie.com
X-Unsubscribes-To: listserv@delorie.com
Precedence: bulk
Newsgroups: comp.os.msdos.djgpp
Organization: None provided
DJ-Gateway: from mailing list djgpp@delorie.com
Lines: 10
X-Usenet-Provider: http://www.giganews.com
X-Trace: sv3-waJW7rkzbwjxSB88zb1B2ISvF4dgb8LjHIj9aadwjzJbvyNpOh2GwS2QZHIpthxxqFxd1al7rFc8cC0!G223dgYOqynP60WcQhaiK+kpU6UpXLbv+RbyUCNtD41V8mxVE1VR1zreP/sOMy9ay8CiNVHjR84W!uPHLwxfxVgER7jL8YB9sF7NnLIU=
X-Complaints-To: abuse@giganews.com
X-DMCA-Notifications: http://www.giganews.com/info/dmca.html
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
 by: Ozkan Sezer (sezeroz - Sun, 25 Feb 2024 12:03 UTC

> > > Thanks. So: is the following correct? Does it match the intention at
> > > https://github.com/wbcbz7/sndlib-watcom/blob/master/sndlib.cpp#L41-L71
> >
> > LGTM, but of course it needs to be tested ;-)
>
> Thanks!
>
> And yes, will be testing on real hw soon.

Tested and working good. Thanks to all who helped.

1
server_pubkey.txt

rocksolid light 0.9.7
clearnet tor