Kirjautuminen

Haku

Tehtävät

Koodit: QB: DOSin funktioiden kutsuminen Quick Basic -ohjelmasta

Kirjoittaja: thefox

Kirjoitettu: 21.02.2002 – 21.11.2011

Tagit: koodi näytille, vinkki

Ohjelma näyttää, miten keskeytyksiä voidaan kutsua QUICK BASIC -ohjelmasta. Siis toisin sanoen, ohjelma EI TOIMI, QBasicilla! Kyseisessä ohjelmassa kutsutaan funktiota 9h (tekstin tulostus), keskeytyksessä 21h (DOS-keskeytys).

***Koodi
' Esimerkki DOS-funktioiden käytöstä.
' Saa muokata ja käyttää miten huvittaa.
'  -fawkz <_____@luukku.com>

DECLARE SUB DOSPrint (t AS STRING)

TYPE RegType      ' RegType määrittelee 8086 koneiden rekisterit
   AX AS INTEGER  ' Mukana ei tosin ole 386-koneista lähtien olleita
   BX AS INTEGER  ' 32-bittisiä rekisterejä: EAX, EBX, jne.
   CX AS INTEGER
   DX AS INTEGER
   BP AS INTEGER
   SI AS INTEGER
   DI AS INTEGER
   FLAGS AS INTEGER
   DS AS INTEGER
   ES AS INTEGER
END TYPE

' Huom! DOS tulkitsee, että teksti loppuu $-merkkiin, lisäksi
' tarvitsemme vaununpalautuksen ja rivinvaihdon (carriage return ja
' line feed), eli CHR$(13) + CHR$(10). DOSissa on monia käteviä
' funktioita, mm. muistin varaaminen, jne.
' Huono puoli Quick Basicin CALL INTERRUPT:issa on, että sillä
' ei voi erikseen käsitellä esim. AX:n vähiten- tai eniten
' merkitsevää tavua kuten yleensä.. mutta sen kanssa on vain
' elettävä :)

DOSPrint "Piupau sano kiinalainen" + CHR$(13) + CHR$(10) + "$"

END

SUB DOSPrint (t AS STRING)
   DIM i AS RegType  ' funktiolle menevät rekisteriarvot (input)
   DIM o AS RegType  ' funktiolta tulevat rekisteriarvot (output)

   i.AX = &H900      ' AH = 09h (dos funktio tekstin ulostamiseen ;)
   i.DX = SADD(t)

   CALL INTERRUPT(&H21, i, o)
END SUB

Kommentit

Antti Laaksonen [22.02.2002 22:00:01]

#

Hieno vinkki!

Tuollaista olen aina tarvinnut.

thefox [25.02.2002 16:55:34]

#

Ai niin, ja pitänee mainita, että QuickBasic pitää käynnistää /L parametrilla että tuo toimii.

HtH [12.08.2002 18:43:46]

#

Ai että se onkin noin yksinkertaista. Kiitos tästä hyvästä vinkistä. Vielä kun kertoisit call absoluten käytön...

progo [24.01.2003 10:43:23]

#

Hyvä vinkki tämäkin.. olisi voinut ehkä olla muitakin esimerkkejä dosin funktioista..

thefox [16.04.2003 09:58:06]

#

Pääpointti ei ollut DOS-funktiot itsessään, vaan niiden kutsuminen QB:stä, mikä ei ole niin suoraviivaista kuin voisi luulla.

JJKulmo [04.07.2004 22:55:46]

#

Dos-komentoja voi kutsua ihan vaan SHELL-käskyllä!
Esim:
SHELL "echo Pässi"

thefox [05.07.2004 02:01:26]

#

No shit sherlock :) Tässä ei kutsutakaan mitään echoja. Älä kommentoi jos et ole asiasta yhtään perillä :)

Dude [21.08.2007 15:45:52]

#

Tuolla voi käyttää ERRORLEVELiä. Tosin jos käytät ERRORLEVELiä QBeestä se ei mee sen jäläkeen takaasi QBeehen(se käyttää asmin lopetusta CALL INTERRUPTilla).

moptim [18.09.2007 19:22:18]

#

Niin juhko. Hommaisit ny sen QuickBasic 4.5:n.

Juhko [01.11.2008 14:46:44]

#

7.1 hommattu..

Kirjoita kommentti

Muista lukea kirjoitusohjeet.
Tietoa sivustosta