Jump to content

576XE

Members
  • Posts

    848
  • Joined

  • Last visited

Everything posted by 576XE

  1. What it's this magic location ZP$00? Really I've tried $80 - no chance! It's concerned CH sell and it's VBI interconnections... IMHO
  2. Hi there, Ken! Really this code is Ted Stockwell's BASIC routine from ANTIC magazine. http://www.atarimagazines.com/v5n1/joystickcursor.html It's fully working even being placed to stack area. The most amazing is that it's even working after exiting from BASIC to DOS!!! (I understand that this fact is the result of algorythm!) But standalone assembly part is still absolutely unworkable!
  3. Today I've compiled it in user area on 6-th page. I've just forget to say it. Strange behaviour. I can not realize it. Yes, cursor moves in right direction but then freezed for a minute and may move again ...
  4. Hi there, folks! Does anybody know what is this Turbo DOS? It works like DOS II+/D but i've seen 2.0 version on cart! And another question... I can remember Atari program which simulates computer. It's looks browny and I remember that dot-like symbols moves along the wires... Do you remember what's it? ez
  5. Hi there, FJC. Thank you for early reply! I have still no chance to run it. Seems to be a simple program but it is not working in DOS. I even can't imagine what is the difference in DOS/BASIC... May be I need to look at BASIC part... ez
  6. Hi, there Friends! Please help me. This code works like a charm in Basic (it was intended for it), but I can not force to work it in DOS environment. ; keyjoy.mae ; By Ted Stockwell, ; modified by Patrick Bass ;--------------------------- ; Equates SETVBV = $e45c ;set vector. SYSVBV = $e45f ;do vblank. STICK0 = $0278 ;stick shadow. CH = $02fc ;--------------------------- ; Constants start = $0110 vbmode = 6 speed = $00 ;repeat speed. cur.up = 142 ;cursor values. cur.dn = 143 cur.lt = 134 cur.rt = 135 total = end-start ;--------------------------- .or start ; To activate, point the vblank vector to our routine. install pla ; I've deleted it!!! ldy # <vbi ldx # >vbi lda #vbmode jsr SETVBV rts ;------------------------ ; Now every vertical blank sends us here first. vbi dec count ; bump down counter. bne done ; branch out if timer still in use. lda speed ; else refresh counting sta count ; delay counter. ; lda STICK0 ; get stick val eor #$0f ; invert it. beq done ; if 0, no press. ; ldx #$ff ; otherwise reset key selector. mloop inx ; point to next key selection. lsr a ; check for bit. bcc mloop ; branch if no bit available. lda keys,x ; else grab key sta CH ; store in shadow done jmp SYSVBV ;do rest of vertical blank. ;----------------------------- keys .by cur.up,cur.dn .by cur.lt,cur.rt count .by 5 end .en Needed 30 seconds to some motion actualised and then all stallls again. (Yes, I deleted pla stanza needed in BASIC...)
  7. Hello, Mr/Fish! Very impressive! Your design is always the BEST!
  8. GOD! I'm not a programmer at all ! Sorry ! You know better!!! May be it's my English? No mean! As far as it's concern licenses it's a very deep swamp! You know this... You are THE BEST! And the first reason is that you are programming not for yourself but for croud. I see it. It is not given to all of programmers. Even at all ! I've seen one russian prog. They did ALL THE BEST but saying what to do... No one could even imagine that 1 means working with Star Printers 2 means working with ... And NO PROMPTS at all ! When users bought the program they was killed by death. Who is the ONLY ONE reading mans? Users? No! By the way I've worked with OS/2 and PC/2 mc'hines. I can remember something...
  9. Hi there, Dear FJC. Glad to CU again. Do you really think that long filenames is really needed? I mean that the only need for this is to add to filename an info-metadata which can be placed in only one file on disk (I mean DIR-file). No more. Noone want to type long text to call file on execution. If you add only one global kbd shortcut to your env. everyone can read full info from meta! I can not remember this from Norton Commander may be Ctrl+L Another aspect is in the fact that 8.3 schema is too weak to complain even everyday purposes. May be it's enough to use not 16 bytes for 8.3 record but 24 or 36 bytes to make record slightly more informative Equivalently I hate as (very-informative-LISP-style-of -naming-program-variables) and ATARI-like naming of CIO EQUATES. What's the hell is ICPTL (minus 1). No info for reading at all ! Please remember your programming experience and think that your personal naming is enough for ALL and it's enough for naming files too. If you decide to use some another length then used in M$ I think it's enough to step away from their patent. If you can explain the differences in ideas of course! You CAN! Anyway I think that noone from M$ can say the data of license expiring IMHO. They want to sit on your neck FOREVER! I can understand License Fee for Authors But NEVER for Dealers! May be just a little part of it. But BG is only manager while TP is Creator! Too bad too sad... ALL THE BEST!
  10. As I can remember there was Seattle Computer Products - investigation company which worked on 16 bit processor cards and never sold computers. For testing it urgently needed software for 8086 and have some consultations with Digital Research about porting good old CP/? OS to 16 bit. At a time there was only 2 working exemplairs of the cards. and Seattle Computer Products could not give even ONE of them to well known DR. Bad luck! Also Seattle Computer Products has a very talented programmer Tim Patersson who wrote QDOS (Quick and Dirty OS. It's his naming!) because of only 2 weeks of code writing and after some improvements 86DOS. Kill Gates knew that real money lays in IBM and about rumors concerning IBM's wish to made 16 bit Personal Computer! As I can remember IBM has PC-DOS at a time but could not force it to work. There was a simple solution to contact IBM and offer them Ready to work OS Thus he made 2 things consequently: 1. He bought from Seattle Computer Products ONE Legal Plain Client license for 86DOS. (Remember this DOS was only testing environment!) 2. He bought from Seattle Computer Products a programmer for polishing soft but now for IBM PC. This programmer was obviously Tim Patersson. Tim rewrite code for PC even improved buffering and MS-DOS was born! From this time we all know what means License Fee! ez
  11. Yes. of course. Old command line DOSes used CWD but modern use CD, being it SpartaDOS 3.3 or RealDOS. BW-DOS is very good and have MENU program which is much more convenient IMHO then such in SpartaDOS 3.2x etc. BW-DOS has very complete set of DOS tools. I'm work with mostly SD3.3A on emulators. And of course I never can remember this intermediate W while I need another DOS with low MEMLO for example. I think that it may be good idea to write somewhere "Best practices" concerning SDX. SDX still enigma for me. By the way, returning to theme, I'd like to see something like Shell for Command-line DOSes. In Command-line DOSes we still lack of modern PATH tracking utility! Shell can hold 3 PATHes beside root! But it affects E: device in VBL. It's hardcoded. Shell is very useful!!! But slightly annoying with it's strange Path prompt. Best wishes! ez P.S. By the way, MrFish. Your "Serious Computerist" is very good and clear site. No doubt!
  12. Dear MrFish There was not any standards at all! BW-DOS has the same interface with Atari like any other DOS and like SDX 2xx. ez
  13. Don't be a perfect perfectionalists. FRIENDS! Do you are really think that Bill Gates ever thinked about you are really thinking? ez
  14. I'm crazy! It's cwd! It's cwd in BW-DOS or cd in modern SDX means: - Change Working Dir Are you surprized? The only word GORAZIO... Here we are alone. Here we are all Gorazios!!! ez
  15. Hi there,MrFish! I worked with BW DOS even in 90th. I think that it's the version of Sparta for 800 mchines! It's perfect too! But it uses special atari memory (not documented). I never could launch LISP with it! And I hate cwd stanzas. Themselve the BW-DOS is perfect!!!
  16. Hi Sanny!!! I love XDOS but... Docs,Docs,Docs... My history: I'm constantly trying to investigate some of Atari Programming Langs! Really, NOT for using it, BUT to find it's abilities! At the end of my attemps I've found that there are no sufficient buffers to compile CC8 program in XDOS. YES! I've added buffers and compiled them successfully. I love XDOS (used it...) but I knew nothing about it! ez ALL THE BEST !!!
  17. GOD! Oh GOD! We all hope that you'll soon be in perfect order! In everyday purposes LastPass is perfect enough. GOD BLESS YOU! Kyle22 said the truth! We can only pray for you!!!
  18. Hello friends! All of us can remember good and bad times... I think that we all are not young enough to know nothing at all! I say about the fact that if you personally know w1k then you are the BOSS but if not ... Plese remember this Internet is only the Internet!.. No more. When someone said to Stalin that his poets and writers are all distalented... he said - I have NOT others. You must work with them! I don't love him but sometimes he was strictly perfect. Anyway, you may understand that life may be too cruel to some person! And what? If this person is ill. Are we can think that he is social enough to make business? If this person is dead are we can say that he is anyway social? Who we are?
  19. Hi there, Avery! Good news! ALTIRRA is the whole world known your child! (and the VirtualDub of course...) But little child is much more beloved isn't it? Thank you very much! GOD BLESS YOU!
  20. Personally I love polish DOS 2.5 CP. Fully compartible and very tiny DOS! But it lacks of parsing parameters in command line. Does anyone can remember Command line DOS with this feature but Sparta? ez
  21. Hi there, friends! Some years ago I've tried to connect HLK-RM04 (It's very cheap and they say that it's fully implemented WiFi to RS-232 interface) to SIO2PC and unsuccessfully I never had 850 interface. Do I need it or something else to communicate with Atari normally? ez
  22. Hi there, Steve! Obviously the most completed package of C compiler is CC65. But personally I prefere native and almost perfect another C compiler. It's CC8. http://atariage.com/forums/topic/242344-cc8/?hl=%2Bcc8&do=findComment&comment=3789135 Recently I've found good description of differences between Early C and ANSI C. It may be helpful I've found that XCC8 is improved version. Here is ATR for some samples MENU CC8.atr Best wishes from Moscow. ez
  23. 576XE

    CC8

    Hi Friends! It seems that with age I become too wordy... I bring to your kind attention and to your free disposal heap oriented Memory Allocation Library for CC8 compiler. It is fully working. (Don't forget to restart Atari or Emulator after linking. Garbage in heap is very interesting thing for debugging.) And it's just one step forward... Here are the code of library itself and program for debugging. Library itself /* Heap allocation library for CC8 compiler */ /* First-fit algorythm for malloc and free */ /* by Evgeny Zolotarev (aka 576XE), 2017 */ #include "STDIO.H" #define HEAPTOP 0xbc00 #define HEAPBTM 0x5000 #define MEMOSIZ HEAPTOP-HEAPBTM #define METASIZ sizeof(struct meta) #define FRED 1 #define USED 0 struct meta $( int size; int flag; struct meta *next; $); struct meta *list = (char*) HEAPBTM; initmeta() $( list->size = MEMOSIZ-METASIZ; list->flag = FRED; list->next = NULL; $) /* Used by malloc(size) */ split(fits,size) struct meta *fits; int size; $( struct meta *new; new = (struct meta *) ((char *) fits+size+METASIZ); new->size = (fits->size)-size-METASIZ; new->flag = FRED; new->next = fits->next; fits->size = size; fits->flag = USED; fits->next = new; $) char *malloc(nBytes) int nBytes; $( struct meta *curr, *prev; char *result; if(!(list->size)) $( initmeta(); printf("+ Memory initialized.\n\n"); $) curr = list; while((((curr->size) < nBytes) || ((curr->flag) == USED)) && (curr->next != NULL)) $( prev = curr; curr = curr->next; printf("- Search fitting block ...\n"); $) if((curr->size) == nBytes) $( curr->flag = USED; result = (char*) ++curr; printf("+ Exact fitting block allocated\n"); return result; $) else if((curr->size) > (nBytes+METASIZ)) $( split(curr, nBytes); result = (char*) ++curr; printf("Block $%x-$%x Size=%d allocated\n",result,result+nBytes,nBytes); return result; $) else $( result = NULL; printf("- Sorry. No sufficient memory to allocate\n"); return result; $) $) /* Used by free() */ merge() $( struct meta *curr,*prev; curr = list; while((curr->next) != NULL) $( if((curr->flag) && (curr->next->flag)) $( curr->size += (curr->next->size)+METASIZ; curr->next = curr->next->next; $) prev = curr; curr = curr->next; $) $) free(ptr) char *ptr; $( if((ptr >= (char*) HEAPBTM) && (ptr <= (char*) HEAPTOP)) $( struct meta *curr; (struct meta *) curr = ptr; --curr; curr->flag = FRED; merge(); printf("+ Block freed, space merged\n"); $) else printf("Please provide a valid pointer allocated by malloc\n"); $) DEBUG.C #include "ALCLIB.C" /* Driver code for debugging */ int main() $( int *p,*r,*k; char *q,*w; p = (int) malloc(100 * sizeof(int)); q = (char) malloc(250 * sizeof(char)); r = (int) malloc(1000 * sizeof(int)); free(p); w = (char )malloc(700); free(r); k = (int) malloc(500*sizeof(int)); printf("\nAllocation and deallocation\nare done successfully!\n"); $) And here is the result of allocations and deallocations of memory. There is no simple way without using of monitor to find the beginning of heap, but you can use an arbitrary value after looking LINKer message: >>>Code ends at $45F6 or something like this. IMHO it is EndOfStack address (if it growth downward) and means nothing if instead upward. Yes we can rewrite code to reverse linked list of course (from top to bottom). Also, you can freely delete debugging messages. Best wishes from Moscow. ez
×
×
  • Create New...