nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 11:48



Reply to topic  [ 45 posts ]  Go to page Previous  1, 2, 3  Next
National Semiconductor's HPC46003 (строим комп nedoPC-46) 
Author Message
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Нашёл в AN-0486 такую команду:
Code:
105 F5BE 80C9CAAB LD K, H(A)

Т.е. мои догадки скорее всего верны, и берётся байт с нулевым старшим байтом.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Apr 2013 06:25
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Реальная программа для HPC: move.html

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Apr 2013 06:39
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
b2m wrote:
Реальная программа для HPC: move.html


Угу - уже качнул. Он бы ещё бы листинг приложил - вообще было бы замечательно ;)

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 07:27
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Он бы ещё ассемблер приложил :)
Насколько я понял, ассемблер распространялся только по соглашению с N.S., где-то видел, чувак, имеющий тулзы, советовал кому-то обратиться к ним, и если они будут не против он вышлет архив с тулзами.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Apr 2013 08:28
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
b2m wrote:
Он бы ещё ассемблер приложил :)
Насколько я понял, ассемблер распространялся только по соглашению с N.S., где-то видел, чувак, имеющий тулзы, советовал кому-то обратиться к ним, и если они будут не против он вышлет архив с тулзами.


Я тоже это письмо читал - это единственная попытка создать самодельный комп на этом проце, которая видимо на этой переписке и закончилась ;)

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 09:32
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
b2m wrote:
Насколько я понял, ассемблер распространялся только по соглашению с N.S.,...

За деньги, да ещё и по соглашению? :o Забавно...
b2m wrote:
где-то видел, чувак, имеющий тулзы, советовал кому-то обратиться к ним, и если они будут не против он вышлет архив с тулзами.

Мне кажется, этот чувак мне тоже попадался, но казалось мне он денег хочет - $50.
Либо я чего не понял...

_________________
iLavr


22 Apr 2013 11:02
Profile
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Lavr wrote:
b2m wrote:
Насколько я понял, ассемблер распространялся только по соглашению с N.S.,...

За деньги, да ещё и по соглашению? :o Забавно...


Раньше это была вполне распостранённая практика как я понимаю - пока опенсорцовцы не начали нажимать на индустрию (в некоторых отраслях оно до сих пор так - только под NDA и только за большие бабосы)

P.S. Вот та переписка:
http://coding.derkeiler.com/Archive/Gen ... 00704.html
http://coding.derkeiler.com/Archive/Gen ... 00706.html
Перечитал внимательно - чуваку по работе дали задачу поправить софт для какой-то существующей HPC-железяки и он спрашивает как это делать - это было в 2005 году...

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 11:44
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
b2m wrote:
Shaos wrote:
А датащит у меня был - там опкодов нету ;)

Зато там есть кое-что про 16-битный режим работы памяти, но как адресуются байты в этом режиме - я так и не понял, написано, что для этого используется /HBE, видимо в комбинации с битом A0. А как конкретно происходит обмен - диаграмм нет.

А, нашёл на картинке - /CS младшего байта это A0, а /CS старшего байта это /HBE.


Это по-видимому значит, что к половинкам слова процессор может обращаться раздельно. С другой стороны если прицепить настоящую 16-битную память и работать с ней только словами и только по чётным адресам, то всё срастётся?...

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 13:53
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Shaos wrote:
Блуждая по www.jameco.com наткнулся на безромный 16-битный микроконтроллер от National Semiconductor середины 90-х под названием HPC46003V20 в корпусе PLCC68 за 15 бабосов - не глядя купил два :)


А вот и они:

Image

P.S. Что-то не могу понять в каком году они их выпустили - в 2012 чтоли?...

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 16:23
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
Shaos wrote:
b2m wrote:
Реальная программа для HPC: move.html


Угу - уже качнул. Он бы ещё бы листинг приложил - вообще было бы замечательно ;)


Там кстати ещё есть:

http://user.xmission.com/~lre/newt/newt.html

Вот например инициализация и главный цикл программы:
Code:
;
;
;       FILE NAME  MAIN.ASM
;
;-------------  MAIN LOOP & INITIALIZATION  ---------------------------------
;
;
;             SynPet Personal Electronic Technologies
;             7225 Franklin Road, Boise, ID  83709
;
;             Created:  8/22/89 - LRE
;             Firmware version 1.00 3/15/90
;             Firmware version 1.01 3/18/90 - Fix commo lockup.
;
;
;
;
;---------------------------------------------------------------------------

 .chip   16003
 .incld  GLOBDEFS

;---------------  MODULE PRIVATE DEFINES ----------------------------------





;----------   END OF MODULE PRIVATE DEFINES -------------------------------


 .sect  DATA,ram8

;---------------- MODULE PRIVATE VARIABLES --------------------------------


;--------------- END OF MODULE PRIVATE VARIABLES --------------------------

;-------------------- EXTERNAL GLOBAL VARIABLES ---------------------------

 .extrn    total_jobs_in_qs
 .extrn    jobs_in_q
 .extrn    a_to_d_tic
 .extrn    chk_rd_intrn_t0_tic
 .extrn    first_msg_received
 .extrn    lights_t0_tic
 .extrn    last_ir_change_status
 .extrn    ir_change
 .extrn    internal_msg_buffer

;----------------- END OF EXTERNAL GLOBAL VARIABLES -----------------------

 .endsect


;----------------  START OF MODULE CODE -----------------------------------


 .public    REV_NO

 .extrn     PROCESS_COMMO
 .extrn     INIT_TIMERS
 .extrn     INIT_HEAD
 .extrn     INIT_COMMO
 .extrn     INIT_MICRO_WIRE
 .extrn     INIT_MOVE 
 .extrn     INIT_LIGHTS
 .extrn     INIT_RD_EXTRN
 .extrn     INIT_CONTROL
 .extrn     MOVE_MAIN
 .extrn     TEST_MAIN
 .extrn     LIGHTS_MAIN
 .extrn     CONTROL_MAIN
 .extrn     READ_INTERNAL_MAIN
 .extrn     RDEXTRN_MAIN
 .extrn     HEAD_MAIN
 .extrn     BEACON_MAIN
 .extrn     LIGHTSHOWS_MAIN
 .extrn     A_TO_D_MAIN
 .extrn     LIGHT_SHOW
 .extrn     PROCESS_REMOTE_CONTROL
 .extrn     CHECK_RD_INTRN
 .extrn     PROCESS_LIGHT_T0_TIC
 .extrn     SND_INTERNAL_MSG

;--------------- START OF INITIALIZATION ------ ----------------------------


 .sect   RESET,rom8

MAIN:

 ;  LD     PSW.B,#010H  ; Set addressing and wait states.  64K address,
                       ; 4 waits.  Must be done immediately.
    LD     PSW.B,#014   ; Two waits.
 ;  LD     PSW.B,#018   ; One wait.
    JMP    INITIALIZE   ; Go set up everything else.

.endsect

 .sect     HIMEM,rom8
 ; .sect      LOMEM,rom8
 ; .sect      CODE,rom8


 COPYRIGHT_NOTICE:
 .DB     'COPYRIGHT (C) 1990 - SYNPET PERSONAL ELECTRONIC TECHNOLOGIES'
 .DB     'NEWTON PESONAL ROBOT HPC FIRMWARE.'
 VERSION:
 .DB     'REV NO. - '
 REV_NO:
 .DB     '01.01'

INITIALIZE:

      ; Clear all RAM.
    LD     B.W,#06000H ; Set up loop.
    LD     K.W,#067FFH ;
 CLR_LOOP:
    CLR    A   ; Put all zeroes into mem.
    XS     A,[B+].B ;
    JMP    CLR_LOOP ;

    JSR    INIT_COMMO ;
    JSR    INIT_TIMERS ;
    JSR    INIT_HEAD ;
 ;  JSR    INIT_MICRO_WIRE ;
    JSR    INIT_MOVE ;
 ;  JSR    INIT_LIGHTS ;
 ;  JSR    INIT_RD_EXTRN ;
    JSR    INIT_CONTROL ;

 DO_INTS:  ; Start timers & let ints in.
    LD     ENIR.B,#0 ;
    SBIT   0,TMMODE.B    ; Only Have a T0 int to begin with on timer ints.
                         ; T0 is already running & don't want the others
                         ; started yet.
    RBIT   2,TMMODE_HI.B ; Start timer T2 for sonar.
    RBIT   6,TMMODE_HI.B ; Start timer T3 for sonar.
    SBIT   5,ENIR.B ; Enable timer interrupt.
    SBIT   7,ENIR.B ; Enable head opto interrupt.
    SBIT   3,ENIR.B ; Enable right motor opto int.
    SBIT   2,ENIR.B ; Enable left motor opto int.
    SBIT   4,ENIR.B ; Enable remote control int.
   _EN_INTS_   ; & The global enable.
   _EN_NMI_
      ; Send home head command to head routine to startup.
    LD     internal_msg_buffer + 0.B,#3 ;
    LD     internal_msg_buffer + 1.B,#061H ;
    LD     internal_msg_buffer + 2.B,#084H ;
    JSR    SND_INTERNAL_MSG ;
    JMP    MAIN_LOOP ; Go back - done with initialization.

;----------------- END OF INITIALIZATION -----------------------------------


;-------------------- START OF MAIN ----------------------------------------
;
; THIS ROUTINE STARTS THINGS UP & THEN GOES INTO PRIMARY ENDLESS LOOP.

 MAIN_LOOP:
    JSR    PROCESS_COMMO ; Go check communications.

           ; Chk to see if any jobs running or pending & go process if
           ; there are.
    IFEQ   total_jobs_in_qs.B,#0 ; Anything going on?
    JMP    CHK_A2D   ; No - don't process.
        ; Else fall thru to go do jobs.
    LD     B,#0  ; For index thru jobs.
  CHK_NEXT_JOB:
    LD     A,jobs_in_q[B].B ;
    IFEQ   A,#0        ; Anything this job?
    JMP    SETUP_FOR_NEXT_JOB_CHK ; No don't do job.
         ; Else go process job.
    PUSH   B  ; Save for next.
    JSR    DO_JOB  ; Go process.
    POP    B  ; Get index back .
  SETUP_FOR_NEXT_JOB_CHK:
    INC    B   ;
    IFGT   B,#NUMBER_OF_JOBS_ROLLOVER ; Done checking all yet?
    JMP    CHK_A2D ;  Yes - go to next on main loop.
    JMP    CHK_NEXT_JOB ; No - go check for more.

  CHK_A2D:
 ;  IFGT   a_to_d_tic.B,#1  ; Time to go A to D?
 ;  JSR    A_TO_D_MAIN ; Yes - go to it.
  CHK_IR_CHANGE:
    LD     A,DIGITAL_STATUS_PORT.B ;
    AND    A,#04H ;
    LD     B,last_ir_change_status.B ;
    XOR    A,B ;
    IFGT   A,#0 ;
    LD     ir_change.B,#1 ;
  CHK_LIGHTS:
    IFEQ   lights_t0_tic.B,#0 ;
    JMP    DO_REMOTE_CONTROL ;
 ;  JSR    PROCESS_LIGHT_T0_TIC ;
 ;  JSR    LIGHT_SHOW ;
    LD     lights_t0_tic.B,#0 ;
  DO_REMOTE_CONTROL:
    NOP
    NOP
    JSR    PROCESS_REMOTE_CONTROL ;
 ;  IFEQ   first_msg_received.B,#0 ;
    JMP    MAIN_LOOP ;
    IFGT   chk_rd_intrn_t0_tic.B,#15 ;
    JSR    CHECK_RD_INTRN ;

    JMP   MAIN_LOOP ; This is the main endless loop.  Only exit on reset.


;-------------------- END OF MAIN ----------------------------------------

;-------------------- DO JOB ---------------------------------------------

DO_JOB:
    LD     A,B ; Job number into A for lookup;
    JID     ; Vector to right job.
    .PT    DO_MOVE,DO_TST,DO_LIGHTS,DO_CONTROL,DO_READ_INTERNAL
    .PT    DO_READ_EXTERNAL,DO_HEAD,DO_BEACON,DO_LIGHTSHOWS

  DO_MOVE:
    JMP    MOVE_MAIN  ;
  DO_TST:
    RET     ;
  ; JMP    TEST_MAIN ;
  DO_LIGHTS:
    RET     ;
  ; JMP    LIGHTS_MAIN ;
  DO_CONTROL:
  ; RET     ;
    JMP    CONTROL_MAIN
  DO_READ_INTERNAL:
    RET     ;
  ; JMP    READ_INTERNAL_MAIN
  DO_READ_EXTERNAL:
    RET     ;
  ; JMP    RDEXTRN_MAIN
  DO_HEAD:
  ; RET     ;
    JMP    HEAD_MAIN
  DO_BEACON:
    RET     ;
  ; JMP    BEACON_MAIN
  DO_LIGHTSHOWS:
    RET     ;
  ; JMP    LIGHTSHOWS_MAIN

;---------------------- END OF DO JOB ------------------------------------

 .endsect
 .end MAIN

_________________
:dj: https://mastodon.social/@Shaos


22 Apr 2013 19:13
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Shaos wrote:
Это по-видимому значит, что к половинкам слова процессор может обращаться раздельно. С другой стороны если прицепить настоящую 16-битную память и работать с ней только словами и только по чётным адресам, то всё срастётся?...

Это если он программу в этом режиме не побайтно читает. С другой стороны, это же ускорение обмена с памятью, может они там как-то заморочились с кешем на два байта :)

Хотя, я думаю, всё будет пучком, если всё равно и старший, и младший байт всегда на шине данных. Даже чтение байт будет работать как надо. Проблема будет только с записью байт.

Интересно, а в приведённой в даташите схеме в режиме 16-бит он может читать слова по нечётному адресу? Т.е. делает ли он два цикла чтения в таких случаях?

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


22 Apr 2013 23:20
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
b2m wrote:
Shaos wrote:
Это по-видимому значит, что к половинкам слова процессор может обращаться раздельно. С другой стороны если прицепить настоящую 16-битную память и работать с ней только словами и только по чётным адресам, то всё срастётся?...

Это если он программу в этом режиме не побайтно читает. С другой стороны, это же ускорение обмена с памятью, может они там как-то заморочились с кешем на два байта :)

Хотя, я думаю, всё будет пучком, если всё равно и старший, и младший байт всегда на шине данных. Даже чтение байт будет работать как надо. Проблема будет только с записью байт.

Интересно, а в приведённой в даташите схеме в режиме 16-бит он может читать слова по нечётному адресу? Т.е. делает ли он два цикла чтения в таких случаях?


да - точно, программа то побайтно сливается - не выйдет подключить 16-битную память :(

P.S. тогда пожалуй я начну с тестового стенда аля nedoPC-85-A - с одной ROM 8K, одной RAM 8K и одной NI-15...

_________________
:dj: https://mastodon.social/@Shaos


23 Apr 2013 05:05
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Shaos wrote:
да - точно, программа то побайтно сливается - не выйдет подключить 16-битную память :(

Не кипятись. :) Всё получится. Какая разница, будет ли на нечитаемой в данный момент части шины данных какой-то байт, или не будет (главное чтобы контроллер тоже ничего не выдавал). Просто будет дважды прочитано слово, первый раз чтобы считать младший байт, второй раз - чтобы старший.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


23 Apr 2013 05:17
Profile WWW
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22412
Location: Silicon Valley
Reply with quote
Post 
b2m wrote:
Shaos wrote:
да - точно, программа то побайтно сливается - не выйдет подключить 16-битную память :(

Не кипятись. :) Всё получится. Какая разница, будет ли на нечитаемой в данный момент части шины данных какой-то байт, или не будет (главное чтобы контроллер тоже ничего не выдавал). Просто будет дважды прочитано слово, первый раз чтобы считать младший байт, второй раз - чтобы старший.


а дёргать то при этом она будет разные CS :(

_________________
:dj: https://mastodon.social/@Shaos


23 Apr 2013 06:35
Profile WWW
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Post 
Shaos wrote:
а дёргать то при этом она будет разные CS :(

А ты их через И сделай. :)
Что-то мне начинает казаться, что и запись байтов сделать можно.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


23 Apr 2013 06:41
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 45 posts ]  Go to page Previous  1, 2, 3  Next

Who is online

Users browsing this forum: No registered users and 5 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.