Derniers sujets
Qui est en ligne ?
Il y a en tout 2 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 2 Invités Aucun
Le record du nombre d'utilisateurs en ligne est de 29 le Mer 25 Fév 2015 - 14:01
Connexion
Statistiques
Nous avons 242 membres enregistrésL'utilisateur enregistré le plus récent est AIRBUS44
Nos membres ont posté un total de 8922 messages dans 811 sujets
Bugs de la librairie C OSDK
2 participants
Forum Oric :: Forums :: Forum Public :: Programmation en C
Page 1 sur 1
Bugs de la librairie C OSDK
Hello,
je créée ce topic pour recenser divers bugs de la Lib OSDK.
J'ai voulu essayer la fonction memset pour initialiser une zone mémoire.
Dans mon programme, je l'appelle à répétition, ce qui m'a fait je pense trouver un bug potentiel de dépassement de la pile :
je n'ai pas tout testé, mais si le CPU passe bien dans la branche du programme qui ne fait pas le PLA suite au PHA, ben... CQFD.
_memset
ldy #0 ; get buffer pointer
lda (sp),y
sta op1
sta patch_memsetret_x+1 ; keep return value for later
iny
lda (sp),y
sta op1+1
sta patch_memsetret_a+1 ; keep return value for later
iny ; get character to fill buffer with
lda (sp),y
pha ; stack it -- we'll be needing it later
ldy #4 ; get the count of bytes to set
sec
lda #0
sbc (sp),y
sta tmp
tax
iny
cmp #1
lda (sp),y
adc #0
tay
beq memsetret ; I don't have a clue what just happened here!
Note de Drpsy : c'est là qu'on saute la portion de code suivante où il y a le PLA
| sec ; adjust the self-modifying part of the routine.
| lda op1
| sbc tmp
| sta memsetloop+1
| lda op1+1
| sbc #0
| sta memsetloop+2
|
| pla ; recover the byte value from the stack
|
| memsetloop ; main loop
| sta $2211,x ; set a byte
| inx
| bne memsetloop
| inc memsetloop+2
| dey
| bne memsetloop
|
->memsetret
patch_memsetret_x
ldx #1 ; return buffer
patch_memsetret_a
lda #3
rts
je créée ce topic pour recenser divers bugs de la Lib OSDK.
J'ai voulu essayer la fonction memset pour initialiser une zone mémoire.
Dans mon programme, je l'appelle à répétition, ce qui m'a fait je pense trouver un bug potentiel de dépassement de la pile :
je n'ai pas tout testé, mais si le CPU passe bien dans la branche du programme qui ne fait pas le PLA suite au PHA, ben... CQFD.
_memset
ldy #0 ; get buffer pointer
lda (sp),y
sta op1
sta patch_memsetret_x+1 ; keep return value for later
iny
lda (sp),y
sta op1+1
sta patch_memsetret_a+1 ; keep return value for later
iny ; get character to fill buffer with
lda (sp),y
pha ; stack it -- we'll be needing it later
ldy #4 ; get the count of bytes to set
sec
lda #0
sbc (sp),y
sta tmp
tax
iny
cmp #1
lda (sp),y
adc #0
tay
beq memsetret ; I don't have a clue what just happened here!
Note de Drpsy : c'est là qu'on saute la portion de code suivante où il y a le PLA
| sec ; adjust the self-modifying part of the routine.
| lda op1
| sbc tmp
| sta memsetloop+1
| lda op1+1
| sbc #0
| sta memsetloop+2
|
| pla ; recover the byte value from the stack
|
| memsetloop ; main loop
| sta $2211,x ; set a byte
| inx
| bne memsetloop
| inc memsetloop+2
| dey
| bne memsetloop
|
->memsetret
patch_memsetret_x
ldx #1 ; return buffer
patch_memsetret_a
lda #3
rts
drpsy- Messages : 208
Date d'inscription : 20/07/2014
Age : 52
Localisation : Lagny sur Marne
Sujets similaires
» fonctions supplémentaires pour OSDK
» OSDK V1.4 et Oricutron V1.2
» OSDK & gnu/Linux...
» problème de compilation c OSDK 1.14
» OSDK link error sur (SP)
» OSDK V1.4 et Oricutron V1.2
» OSDK & gnu/Linux...
» problème de compilation c OSDK 1.14
» OSDK link error sur (SP)
Forum Oric :: Forums :: Forum Public :: Programmation en C
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|
Dim 31 Mar 2024 - 14:35 par kenneth
» Bla Bla général du Jury
Jeu 21 Mar 2024 - 8:51 par Dom50
» carte mère Oric (re)tracée
Mar 5 Mar 2024 - 18:54 par kenneth
» Meurtre à Grande Vitesse
Dim 25 Fév 2024 - 5:09 par Iurius
» ORIC-1 sur LE BON COIN
Ven 23 Fév 2024 - 23:01 par Mcar
» ORIC ATMOS sur LE BON COIN
Dim 4 Fév 2024 - 12:06 par kiwilevrai
» Problème d'affichage des couleurs avec un Oric Atmos
Sam 27 Jan 2024 - 1:26 par pierbail
» Bienvenue dans le Forum des Oriciens
Mar 9 Jan 2024 - 12:33 par Dom50
» Rencontre avec Laurant Weill, co-fondateur de Loriciel, et mon garçon de 12 ans
Ven 29 Déc 2023 - 14:13 par Arcade-des-Monts
» Bonnes fêtes
Mar 26 Déc 2023 - 10:21 par Dom50
» Murders in Venice / Meutres à Venise
Sam 18 Nov 2023 - 22:44 par retroric
» Un clavier PS/2 pour tester un ORIC
Dim 27 Aoû 2023 - 9:49 par Voyageur
» Disquette 3" Sedoric
Mar 1 Aoû 2023 - 14:22 par AtomeX
» faire un 6502 avec des phototransistor
Dim 16 Juil 2023 - 17:26 par Voyageur
» Oricutron linux et DSK
Jeu 29 Juin 2023 - 18:34 par Voyageur