Autore Topic: Print Using  (Letto 2917 volte)

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #15 il: 29 Novembre 2004, 17:55:25 »
 Altro approccio;stavolta la routine consente il troncamento della parte decimale (ho dovuto inserirlo per evitare errori ?ILLEGAL QUANTITY causati dalle approssimazioni difettose,che purtroppo si vedono anche con il troncamento alla seconda cifra decimale).
Rimane il problema dei numeri molto piccoli (da 0.001) e molto grandi
(da 1000000000),per i quali il C64 usa la notazione esponenziale (ad esempio
0.0001 = 1E-04,1000000000 = 1E+09);il prossimo passo è convertire questi valori in decimale.
 :ciauz:  

zimox

  • Utente
  • **
  • Post: 171
  • Gioco Preferito: trolls & tribulations
Print Using
« Risposta #16 il: 29 Novembre 2004, 19:03:27 »
 
Citazione da: "Alberto"
Rimane il problema dei numeri molto piccoli (da 0.001) e molto grandi
(da 1000000000),per i quali il C64 usa la notazione esponenziale (ad esempio
0.0001 = 1E-04,1000000000 = 1E+09);il prossimo passo è convertire questi valori in decimale.
Ciao Alberto

guarda che io sarei a posto  anche cosi' :D
a tua scelta se trovi l' argomento ancora da approfondire  :)


 
No c64?, no party!

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #17 il: 29 Novembre 2004, 22:50:37 »
 Ciao zimox :)

Tranquillo,questo surplus lo sto facendo io per divertirmi (e poi,visto che se ne ha la possibilità,perchè non fare le cose per bene? ;) ),e poi credo che possa essere utile alla comunità vedere qualcosa di simile ogni tanto (hey,ma nessuno propone qualcosa a parte le solite 4 o 5 persone? :D ).

Bye
 :c64:  

iAN CooG

  • Utente
  • **
  • Post: 1774
    • http://iancoog.altervista.org
  • Gioco Preferito: Turbo Assembler, ActionReplay Monitor, DiskDemon
Print Using
« Risposta #18 il: 30 Novembre 2004, 01:07:51 »
 Ottimo ottimo! :mavieni:
Citazione
Tranquillo,questo surplus lo sto facendo io per divertirmi
Esattamente, non e' che mi serva fare una print using perche' da LM si fa molto prima, ma e' intressante riuscire a scrivere routine che sfruttano le "complicate" chiamate alla Rom Basic...
Citazione
hey,ma nessuno propone qualcosa a parte le solite 4 o 5 persone?
Di' pure 1-2, Alberto :stordita:
Purtroppo cio' e' sempre piu' demoralizzante.  
-=[]=--- iAN CooG/HVSC^C64Intros ---=[]=-
- http://hvsc.c64.org - http://intros.c64.org -

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2381
    • http://ready64.org
  • Gioco Preferito: Impossible Mission
Print Using
« Risposta #19 il: 30 Novembre 2004, 09:21:14 »
 
Citazione da: "iAN CooG/HF"
Di' pure 1-2, Alberto :stordita:
Purtroppo cio' e' sempre piu' demoralizzante.
Purtroppo la programmazione è già di per sè un fatto di nicchia, la maggior parte delle persone non si trova a suo agio con numeri esadecimali e compagnia bella... ed inoltre bisogna tenere presente il numero limitato di persone che sono interessate all'emulazione del C64 o del C64 in senso stretto.
Se ci penso e unisco le due cose, ti dico che secondo me la situazione potrebbe anche essere molto peggiore, vi confesso che sinceramente non mi aspettavo un successo così grande per la sezione programmazione!
Stiamo spezzando le reni (passatami l'espressione scherzosa, spero di non irritare nessuno) alla sezione "Cerco un Gioco" e questo è un dato mooolto confortante per me, tenendo conto che la sezione Cerco un gioco (poco interessante imho) è online da 2 anni, mentre la sezione   "Programmazione" avrà si è no 10 mesi.

Ma soprattutto: non si può costringere la gente ad interessarsi alla programmazione... anche a me piacerebbe ci fossero più artisti Bitmap, mentre invece mi risulta che non ci sia proprio nessuno.

Come se non bastasse bisogna tenere presente la freddezza delle maggior parte delle persone, allorchè si tratta di portare il proprio contributo anche solo - ad esempio - partecipando alle discussioni sul forum.

Pensate che - provo a fare un esempio parallelo - per 1 anno ho tenuto in home page l'invito a spedirmi DOX dei giochi perchè ritenevo utile che ci fosse anche in Italia una bibilioteca online del Commodore64. L' idea era quella di creare una specie di "Project64" fatte le debite proporzioni.
Bè Sapete quanti mi hanno risposto?

NESSUNO

Proprio così, in 1 anno di pubblicazione nella index (e ora nelle pagine interne) ho ricevuto ZERO manuali da pubblicare, e questo è il risultato:

http://ready64.altervista.org/italiano/manuali/

Praticamente online ci sono solo le cose che ho trascritto io.
LE uniche 2 persone che mi hanno offerto collaborazione per la sezione sono stati ANX e MarC=Ello, ovvero due persone che sono già impegnate da sempre per la comunità e hanno già il loro bel da fare. Senza contare l'onnipresente Pyrat che ha donato Rampage, gioco del quale ho provveduto subito a fare i doc. (Il .tap esiste già).
Visto gli impegni di Marcello non me la sono sentita di chiedergli di impegnarsi nella scansione. In realtà speravo che si facesse avanti qualcun'altro visto che sicuramente esistono almeno 1 centinaio di persone in possesso di giochi originali (bacino molto più vasto rispetto ai potenziali programmatori, dunque) eppure nessuno si è mai fatto avanti.

Ops, scusate il mio sfogo, mi rendo conto di essere anddato un pò out topic sfogando tutti i miei dolori di giovane webmaster (Werther docet), ma spero che il mio messaggio sia arrivato, ed è un messaggio sicuramente positivo. Almeno i non la vedo così dura per quanto riguarda la programmazione, almeno finche voi terrete duro con il vostro entusiasmo... cosa che vi invito di continuare a fare ;)

PS
Riassunto di quanto scritto: non demoralizzatevi :stordita:
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
http://ready64.org/informazioni/contatti.php

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #20 il: 30 Novembre 2004, 12:11:28 »
 
Citazione
Purtroppo la programmazione è già di per sè un fatto di nicchia, la maggior parte delle persone non si trova a suo agio con numeri esadecimali e compagnia bella...

Citazione
Ma soprattutto: non si può costringere la gente ad interessarsi alla programmazione...

Attenzione,forse il mio messaggio è stato frainteso:quando intendo "proporre qualcosa" intendo proporre QUALSIASI cosa (ovviamente,inerente al C64); non a tutti interessa la programmazione e non tutti sanno programmare (giusto e condivisibile,per carità),ma mezz'oretta di tempo per scrivere una (e dico UNA) recensione su un gioco che è piaciuto particolarmente,o su un programma di utilità,o ancora su un fenomeno di costume degli anni '80 legato al C64,credo che lo possa fare chiunque abbia avuto il C64.

Oppure ancora,qualcosa di hardware (come ha fatto Hiryu) o manualistica per gli emulatori (per esempio  l'autocostruzione del cavo per l'mtap o anche una semplice guida all'uso del VICE e del CCS64,se non si vuol muovere nessuno lo farò io...);insomma,cose fattibilissime che richiedono pochissimo tempo e,di fatto,dànno tantissima soddisfazione per un nostalgico del mitico 8-bit  :P  .

Citazione
bisogna tenere presente la freddezza delle maggior parte delle persone

Forse per alcune si tratta di freddezza,ma sono convinto che per altre si tratti di "timore" di proporre qualcosa di "stupido":e a queste persone vorrei dire che niente che possa arricchire di informazioni il sito (intendo proprio il sito,non soltanto il forum) è stupido o di poco conto.Ciascuno dà il suo (piccolo o grande) contributo,e il sito cresce automaticamente (spazio permettendo,eh Roberto  :mattsid: )...

Citazione
Praticamente online ci sono solo le cose che ho trascritto io.

Dal canto mio avevo inviato il manuale del datassette,e un altro membro aveva proposto la scansione del manuale del drive (e se avessi uno scanner sarei a cavallo...).

In definitiva,vorrei che da tutto questo emerga che CHIUNQUE è in grado di contribuire al sito:e siccome a frequentare questo forum non sono tre persone,ma (fortunatamente) un pò di più,spero che tutto questo venga recepito dalla comunità come un incoraggiamento,e non come una polemica.

...E anche chi si ferma solo a chiedere il nome di un gioco,se legge queste righe faccia un pensierino sulla possibilità di inviare un paio di recensioni (come dice Giobbe Covatta, eccheccevò??)...

Tornando a noi,in serata conto di pubblicare la routine definitiva.
Bye
 :c64:

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #21 il: 30 Novembre 2004, 23:12:56 »
 Ultima versione della routine simil print-using:

Bug conosciuti ( :angry: ): nessuno.

Note :maximo: :

- Per i numeri molto grandi le unità non vengono conteggiate (questo è un limite del sistema operativo,non risolvibile a meno di riscrivere interi pezzi dell'interprete Basic  :doh: )
Ad esempio

PRINT 10000000001 = 1E+10

- La routine è venuta abbastanza lunga (circa 400 byte,speravo di occupare una pagina di memoria o poco più e ho dovuto persino adattare due routine per evitare di usare altra RAM...)

- La velocità di esecuzione è buona per i numeri grandi,meno per i numeri infinitesimali.

E' tutto. :)

Codice: [Seleziona]
; PRINT USING MIGLIORATA USANDO ALCUNE ROUTINE DEL SISTEMA OPERATIVO
;
; USO
;
; SYS 49152,formato,[valore/variabile/espressione]


* = $c000

textchar = $0073
illegal = $b248
print = $aaa0
char = $ffd2
      
; COPIA LA ROM BASIC CAMBIANDO ALCUNI BYTE PER EVITARE LA PRINT
      
      lda $0313
      bne ready    ; controllo per la modifica del Basic
      inc $0313
      ldy #$00
      lda #$00
      sta $fb
      lda #$a0
      sta $fc
copy  lda ($fb),y
      sta ($fb),y
      iny
      bne copy
      inc $fc
      lda $fc
      cmp #$c0
      bne copy
      lda #$4c
      ldx #$e5
      ldy #$aa
      sta $aad9
      stx $aada
      sty $aadb        ; modifica parte del Basic per evitare la stampa
      lda #$60        ; nel formato predefinito
      sta $ab29        
ready jsr switch      ; attiva la RAM sotto la ROM
      
      ldx #$00
      ldy #$00
      stx $02
l1    jsr textchar
      cmp #$2e          ; "."
      beq l2
      inx
      jmp l1
l2    stx $fb
      jsr textchar
      cmp #$2c          ; ","
      beq l3
      iny
      jmp l2
l3    sty $fd
      jsr textchar
      jsr print          ; valuta l'espressione e ne deposita
                        ; il risultato sulla pila :))
      
      jsr ctrexp
      ldx #$00
scan1 lda $0101,x
      beq exit1
      cmp #$2e
      beq exit1+2
      inx
      jmp scan1
exit1 inc $02
      cpx $fb            ; compara la parte intera del numero
      bcc ok1            ; con quella da rappresentare
      beq ok1
      jsr switch
      jmp illegal
ok1   stx $fc
      lda $0100
      jsr char          ; stampa segno
      ldx $fb
      cpx $fc
      beq skip1
      jsr fill
skip1 ldx #$00
      lda $0101,x        ; stampa parte intera
      beq next
      cmp #$2e
      beq next
      jsr char
      inx
      jmp skip1+2
next  lda #$2e
      jsr char          ; stampa "."
      lda $02
      beq skip2
      ldx $fd
      ldy #$00
      sty $fc
      jsr fill          ; riempie di zeri fino alla fine
      jmp ret            
skip2 inx
      lda $0101,x
      beq check          ; finite le cifre decimali
      jsr char
      inx
      dec $fd            ; stampa la parte decimale (con il troncamento)
      bne skip2+1
check lda $fd            ; troncamento delle cifre decimali
      beq ret
      ldx $fd
      ldy #$00            
      sty $fc
      jsr fill          ; riempimento con zeri        
ret   lda #$0d
      jsr char          ; stampa l'invio dopo il numero
      jsr switch        ; riattiva la ROM
      rts

ctrexp ldx #$00
       lda $0101,x
       beq ret+8
       cmp #$45          ; "E"
       beq succ
       inx
       jmp ctrexp+2
succ   inx
       lda $0101,x
       pha
       inx
       lda $0101,x
       sec
       sbc #$30
       sta $03
       inx
       lda $0101,x
       sbc #$30
       sta $04
trdec  lda $03
       beq expo          ; 0-9
       ldx #$0a
       cmp #$01
       beq expo-1        ; 10-19
       ldx #$14
       cmp #$02  
       beq expo-1        ; 20-29
       ldx #$1e          ; 30-38
       txa                    
expo   ldx #$ff
       ldy #$00
       sec
       adc $04
       sta $fe
       pla                
       cmp #$2b          ; "+"
       bne neg
       lda #$01
       sta $03
       sta $04
       jsr norm
       lda #$30
       jsr done
       lda #$00
       sta $0101,y
       rts                  
neg    dec $fe          ; "-"
       dec $fe
       lda $fe
       pha
       stx $fe                
       lda #<buff
       sta $03
       lda #>buff
       sta $04
       jsr norm          ; salva le cifre nel buffer
       lda #$00
       sta buff,y        ; aggiunge il terminatore
       lda #$30        
       sta $0101        ; "0"
       lda #$2e
       sta $0102        ; "."
       ldy #$02
       pla
       sta $fe
       lda #$30
       jsr done          ; riempie di 0
       ldx #$00
queue  lda buff,x
       beq neg-6
       sta $0101,y
       inx
       iny
       jmp queue        ; inserisce la coda
      

;*************************
; convertitore exp.-dec.
;*************************

norm   inx
       lda $0101,x
       cmp #$2e
       beq norm
       cmp #$45
       beq done-1
       sta ($03),y  
       iny
       dec $fe
       bne norm          
       rts

done   sta $0101,y
       iny
       dec $fe
       bne done
       rts

;*************************

fill  lda #$30          ; riempie di zeri
      jsr char
      dex
      cpx $fc
      bne fill+2
      rts      

switch lda $01
       eor #$01
       sta $01
       rts

buff

Roberto

  • Administrator
  • Utente
  • *****
  • Post: 2381
    • http://ready64.org
  • Gioco Preferito: Impossible Mission
Print Using
« Risposta #22 il: 01 Dicembre 2004, 10:07:43 »
 Per fortuna basta guardare la pagina "Team" del sito per vedere che ci sono molte persone che hanno contribuito, quindi la mia considerazione non vuole essere negativa al 100%. Questo avrei dovuto vspecificarlo :)
Anzi, sono molto contento di questo gruppo che si è creato.

E' anche vero che circa il 70% (!) delle persone che mi contattano per collaborare poi spariscono nel nulla costringendomi a perdite di tempo per leggere e rispondere alle mail, tanto che avevo pensato di chiudere il sito alle nuove collaborazioni, non potendo in alcun modo filtrare questi messaggi.

Per tutti coloro che mi hanno inviato materiale, te compreso, sto cercando di tornare a dedicarmi agli aggiornamenti, mi scuso per i ritardi nella pubblicazione. Cercherò di portarmi in piano al più presto.


scusate l'off topic ! chiudo qui :mechico:  
Per collaborare, segnalare un errore (o qualsiasi altra comunicazione importante) utilizzare la pagina dei contatti:
http://ready64.org/informazioni/contatti.php

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #23 il: 07 Dicembre 2004, 11:35:18 »
 
Va bene,se nessuno ha niente da aggiungere ringrazio iAN CooG della collaborazione e voi tutti dell'attenzione.
Bye
 :c64:  

MarC=ello

  • Utente
  • **
  • Post: 337
  • Gioco Preferito: CBM BASIC 2.0
Print Using
« Risposta #24 il: 07 Dicembre 2004, 15:27:33 »
 Complimenti veramente per il lavoro svolto!  :metallica:

Citazione
Di' pure 1-2, Alberto 
Purtroppo cio' e' sempre piu' demoralizzante.

Il mio invito agli utenti e ai nostri lettori è quello di postare programmi, domande, consigli, trucchi e quant'altro venga loro in mente senza timore. Nessuno sarà mai preso in giro se posterà qualcosa di sbagliato. Anzi. Penso anche che l'assembly 6502/6510 non sia conosciuto da molte persone, e colgo l'occasione per precisare che anche il BASIC va bene; io ad esempio ho postato due programmi BASIC qualche tempo fa, ed esorto altri amici che come me fanno degli esperimenti anche in BASIC a farlo. Giusto per condividere una passione in comune ed imparare, insieme, nuovi trucchi e nuove tecniche. Magari anche dai programmi più banali possono nascere delle discussioni interessanti e costruttive.

Ciao!
-=MarC=ellO=-

Alberto

  • Utente
  • **
  • Post: 589
  • Gioco Preferito: Grand Prix Circuit
Print Using
« Risposta #25 il: 08 Dicembre 2004, 10:47:08 »
 Certo,condividere i propri dubbi e/o le proprie conoscenze serve a tutti. :)